Windows API 九九乘法表 [未完 待续]
了解程度 :目前为止还只是找到了可以添加逻辑代码的地方,用的还很不到位,有些语句比如wprintf函数、TextOut函数的一些用法还不是太了解,于是只能实现九九乘法表的结果输出到显示屏上,在网上也找了很多说明,但是没能解决我的问题 。 先把代码分享一下吧,不管怎么样,我的第一个用Windows API做出来的东西已经上市了 ,哈哈 ……这个问题在以后的学习中在解决吧 ……Windows API代码如下 :
[cpp]
/*
HELLOWIN.C -- Displays(显示) * 九九乘法表 * in client(客户端) area
在客户端区域上 显示九九乘法表
*/
# include<windows.h>
//#pragma comment(lib, "WINMM.LIB")
LRESULT CALLBACK WndProc (HWND ,UINT,WPARAM,LPARAM) ; //UINT 表示unsigned int. 这句是窗口过程的声明
int WINAPI WinMain (HINSTANCE hInstance ,HINSTANCE hPrevInstance ,PSTR szCmdLine , int iCmdShow) //PSTR 是指向非宽字符串的指针
{
static TCHAR szAppname [] = TEXT ("HELLOWIN");
HWND hwnd ;
MSG msg;//消息结构
WNDCLASS wndclass ;//窗口类结构
wndclass.style = CS_HREDRAW | CS_VREDRAW ;
wndclass.lpfnWndProc = WndProc ;//这是WndProc的引用吗?
wndclass.cbClsExtra = 0;
wndclass.cbWndExtra = 0;
wndclass.hInstance = hInstance ; //实例句柄
wndclass.hIcon = LoadIcon (NULL,IDI_APPLICATION) ; //设定目标
wndclass.hCursor = LoadCursor (NULL, IDC_ARROW); //预定义的鼠标指针
wndclass.hbrBackground = (HBRUSH) GetStockObject (WHITE_BRUSH) ; //白色画刷 指定系统色
wndclass.lpszMenuName = NULL ; //菜单窗口类名称
wndclass.lpszClassName = szAppname ; //
if (!RegisterClass (&wndclass))
{
MessageBox (NULL, TEXT ("这是啥"),szAppname ,MB_ICONERROR) ;
return 0;
}
hwnd = CreateWindow (szAppname , //hwnd 是句柄 ,szappname是窗口类名称
TEXT ("九九乘法表"), //窗口标题
WS_OVERLAPPEDWINDOW, //窗口风格(窗口格式)
CW_USEDEFAULT, //初始x坐标
CW_USEDEFAULT, //初始y坐标
CW_USEDEFAULT, //初始x方向尺寸
CW_USEDEFAULT, //初始y方向尺寸
NULL, //父窗口句柄
NULL, //窗口菜单句柄
hInstance , //程序实例句柄
NULL); //创建参数
ShowWindow (hwnd ,iCmdShow) ;
UpdateWindow (hwnd ) ;
while (GetMessage (&msg , NULL,0,0)) //消息循环
{
TranslateMessage (&msg);
DispatchMessage (&msg) ;
}
return msg.wParam ;
}
LRESULT CALLBACK WndProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
HDC hdc ;
PAINTSTRUCT ps ; //绘制结构
RECT rect ;//矩形结构
static int cxChar, cxCaps, cyChar ;
int iLength;
TCHAR szBuffer [50] ;
TEXTMETRIC tm ;
int i ,j,a[10][10];
for (j=1;j<10;j++)
{
for (i=1;i<=j;i++)
{
a[i][j]=i*j;
}
}
switch (message)
{
case WM_CREATE:
hdc = GetDC (hwnd) ;
GetTextMetrics (hdc, &tm) ;
cxChar = tm.tmAveCharWidth ;
cyChar = tm.tmHeight + tm.tmExternalLeading ;
cxCaps=(tm.tmPitchAndFamily&1?3:2)*cxChar/2;
ReleaseDC (hwnd, hdc) ;
return 0;
case WM_PAINT:
hdc = BeginPaint (hwnd, &ps) ;
for (j=1;j<10;j++)
{
for (i=1;i<=j;i++)
{
iLength = wsprintf (szBuffer, TEXT ("%i"),a[i][j]);
TextOut(hdc,cxCaps*4*i,cyChar*j*3,szBuffer,iLength);
}
}
EndPaint (hwnd, &ps) ;
return 0 ;
case WM_DESTRO
补充:软件开发 , C++ ,
- 更多C/C++疑问解答:
- 关于c++的cout输出的问题。
- 在学校里学过C和C++,不过学的很一般,现在自学C#,会不会很难?
- 全国计算机二级C语言笔试题
- 已知某树有2个2度结点,3个3度结点,4个4度结点,问有几个叶子结点?
- c++数据结构内部排序问题,整数排序
- 2012九月计算机二级C语言全国题库,,急求急求
- 如果assert只有一个字符串作为参数,是什么意思呢?
- C语言中,哪些运算符具有左结合性,哪些具有右结合性,帮忙总结下,谢谢了!
- 为什么用结构体编写的程序输入是,0输不出来啊~~~
- 将IEEE—754的十六进制转化为十进制浮点类型,用C或C++都行,多谢各位大侠啊,非常感谢!
- 为什么这个程序求不出公式?
- 这个链表倒置的算法请大家分析下
- c语言函数库调用
- C语言unsigned int纠错
- C语言快排求解啊