1.新建
文件->新建->项目,然后进行如图下的设置,名称自定,工程路径随意。
2.项目设置
新建好项目之后,需要进行设置,第一个页面之间点击【下一步】,进入下图界面进行设置。
3.建好和设置好项目之后,就建立了一个什么都没有的空项目。头文件源文件和资源文件统统的没有。所以,需要新建一个源文件,用于写代码。
项目->添加新项。就可以选择要添加的内容,如下图所示,我们现在只是需要添加一个cpp的文件。
4.写代码
1 #include <windows.h> 2 #include <stdio.h> 3 4 LRESULT CALLBACK WinSunProc( 5 HWND hwnd, 6 UINT uMsg, 7 WPARAM wParam, 8 LPARAM lParam 9 ); 10 11 int WINAPI WinMain( 12 HINSTANCE hInstance, 13 HINSTANCE hPrevInstance, 14 LPSTR lpCmdLine, 15 int nCmdShow) 16 { 17 //设计一个窗口类 18 WNDCLASS wndcls; 19 wndcls.cbClsExtra = 0; 20 wndcls.cbWndExtra = 0; 21 wndcls.hbrBackground = (HBRUSH)GetStockObject(BLACK_BRUSH); 22 wndcls.hCursor = LoadCursor(NULL , IDC_CROSS); 23 wndcls.hIcon = LoadIcon(NULL , IDI_ERROR); 24 wndcls.hInstance = hInstance; 25 wndcls.lpfnWndProc = WinSunProc; 26 wndcls.lpszClassName = "sunxin2006"; 27 wndcls.lpszMenuName = NULL; 28 wndcls.style = CS_HREDRAW | CS_VREDRAW; 29 RegisterClass(&wndcls); 30 31 //创建窗口,定义一个变量来保存成功创建窗口后返回的句柄 32 HWND hwnd; 33 hwnd = CreateWindow("sunxin2006", "http://www.sunxin.rog", 34 WS_OVERLAPPEDWINDOW,0, 0, 600, 400, NULL, NULL, hInstance, NULL); 35 36 //显示及刷新窗口 37 ShowWindow(hwnd, SW_SHOWNORMAL); 38 UpdateWindow(hwnd); 39 40 //定义消息结构体,开始消息循环 41 MSG msg; 42 while(GetMessage(&msg, NULL, 0, 0)) 43 { 44 TranslateMessage(&msg); 45 DispatchMessage(&msg); 46 } 47 return msg.wParam; 48 } 49 50 //编写窗口过程函数 51 LRESULT CALLBACK WinSunProc( 52 HWND hwnd, 53 UINT uMsg, 54 WPARAM wParam, 55 LPARAM lParam ) 56 { 57 switch(uMsg) 58 { 59 case WM_CHAR: 60 char szChar[20]; 61 sprintf(szChar, "char code is %d", wParam); 62 MessageBox(hwnd,szChar,"char",0); 63 break; 64 case WM_LBUTTONDOWN: 65 MessageBox(hwnd, "mouse clicked", "message", 0); 66 HDC hdc; 67 hdc = GetDC(hwnd); 68 TextOut(hdc, 0, 50, "程序员之家",strlen("程序员之家")); 69 break; 70 case WM_PAINT: 71 HDC hDC; 72 PAINTSTRUCT ps; 73 hDC = BeginPaint(hwnd, &ps); 74 TextOut(hDC, 0, 0, "http://www.sunxin.org", 75 strlen("http://www.sunxin.org")); 76 EndPaint(hwnd,&ps); 77 break; 78 case WM_CLOSE: 79 if(IDYES == MessageBox(hwnd,"是否真的结束?","message",MB_YESNO)) 80 { 81 DestroyWindow(hwnd); 82 } 83 break; 84 case WM_DESTROY: 85 PostQuitMessage(0); 86 break; 87 default: 88 return DefWindowProc(hwnd,uMsg,wParam,lParam); 89 } 90 return 0; 91 }
5.调试运行。
当我们满心欢喜的按下f5的时候,你以为会很成功么?错了,你会遇见下面这些可爱的东东。
然后不要惊慌不要着急,细心看一下,提示的错误大概都是一个错误,也就是字符串的问题。在vc6中,上述代码是没有问题的,原因是vc6的代码没有按可编译为UNICODE版本的方式写。而VS2005之后版本默认是UNICODE编码的。所以所有使用到字串的地方都会出错。方法:修改VS2005之后版本的设置:选择你的项目->属性->常规->设置为不使用UNICODE,发现设置为多字节字符集也可以。发现用VS2005打开VC6的源代码,转换后是使用的多字节字符集。在VS2008,vs2010中,项目->属性->常规->字符集:改为“使用多字节字符集”即可。(关于此处解释,来源于网友http://blog.sina.com.cn/s/blog_7dc276cd01012q5x.html,谢谢分享。)
6.运行成功
测试一下单击
测试一下键盘字母我按下的是a,
在测试一下退出
比较好使。到此,第一个小栗子照搬结束。