C语言+win32api写窗体应用程序
昨晚看了一下win32api编程的知识,我在网上搜索了许多教程,一个美化版的windows编程,代码错漏百出,缺字,翻译难懂生硬,术语不专业,一个windows.c编程,模糊,而且用的是VC++6.0,由于我的电脑装不上vc++6.0,只能用vs2008,许多操作和函数都不太一样了。在网上找到一篇博客园的win32api编程的文章,照抄下来,结果编译下来几十个错误……晕死了。
后来还是参照以下四个步骤,自己查MSDN用C语言写出来了,晕死,英文不好,话说,金山词霸对MSDN的整句翻译很专业啊。
步骤:
1、注册窗口类;
2、创建窗体;
3、消息循环;
4、编写窗口消息处理函数。
代码:
#include<windows.h> #include<tchar.h> LRESULTCALLBACKWindowProc(HWNDhwnd,UINTmsg,WPARAMwParam,LPARAMlParam); intWINAPI_tWinMain(HINSTANCEhInstance,HINSTANCEhPrevInstance,LPWSTRszCmdLine,intnCmdShow) { WNDCLASSwc; wc.style=CS_HREDRAW|CS_VREDRAW; wc.lpfnWndProc=WindowProc; wc.cbClsExtra=0; wc.cbWndExtra=0; wc.hInstance=hInstance; wc.hIcon=NULL; wc.hCursor=LoadCursor(NULL,IDC_ARROW); wc.hbrBackground=(HBRUSH)COLOR_WINDOW;//(HBRUSH)GetStockObject(); wc.lpszMenuName=NULL; wc.lpszClassName=_T("MyWindowClass"); if(!RegisterClass(&wc)) { MessageBox(NULL,_T("无法注册窗口类"),_T("错误"),MB_OK); return0; } HWNDnewWindow=CreateWindow( _T("MyWindowClass"), _T("我的第一个winapi程序"), WS_OVERLAPPEDWINDOW, 0, 0, CW_USEDEFAULT, CW_USEDEFAULT, NULL, NULL, hInstance, NULL ); if(NULL==newWindow) { MessageBox(NULL,_T("无法创建窗体"),_T("错误"),MB_OK); return0; } ShowWindow(newWindow,nCmdShow); UpdateWindow(newWindow); MSGmsg; while(GetMessage(&msg,NULL,0,0)) { TranslateMessage(&msg); DispatchMessage(&msg); } } LRESULTCALLBACKWindowProc(HWNDhwnd,UINTuMsg,WPARAMwParam,LPARAMlParam) { switch(uMsg) { caseWM_DESTROY: { PostQuitMessage(0); break; } default: returnDefWindowProc(hwnd,uMsg,wParam,lParam); } return0; }
就是一个只有标题栏、关闭按钮、最小化按钮、最大化/还原按钮、显示区域的窗体。
用纯C写的,郁闷死了,好长啊,win32api超级多宏的,又爱又恨,烦死了