1)首先是昨天的代码进行展示:
1 #include<Windows.h> 2 #include"resource.h" 3 //这个叫 窗口消息处理函数 4 LRESULT CALLBACK WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam) 5 { 6 7 return ::DefWindowProc( hWnd, uMsg, wParam, lParam); 8 } 9 10 11 int CALLBACK WinMain(HINSTANCE hIstance, 12 HINSTANCE hPreInstance, 13 LPSTR pCmdLine, 14 int nCmdShow) 15 { 16 17 HBRUSH hBrush=::CreateSolidBrush(RGB(0,0,255)); 18 19 20 //1.设计---->就是给WNDCLASSEX结构体初始化(结构体有12个) 21 WNDCLASSEX wndclass; 22 wndclass.cbClsExtra=0; 23 wndclass.cbWndExtra=0;//这两个是确定是否要分配额外的空间 24 wndclass.cbSize=sizeof(WNDCLASSEX); 25 wndclass.hbrBackground=hBrush; 26 wndclass.hCursor=NULL;//光标 27 wndclass.hIcon=NULL;//窗口图标 28 wndclass.hIconSm=NULL;//窗口左上的图标 29 wndclass.hInstance=hIstance; 30 wndclass.lpfnWndProc=WndProc; 31 wndclass.lpszClassName="wangchao"; 32 wndclass.lpszMenuName=NULL; 33 wndclass.style=CS_HREDRAW|CS_VREDRAW; 34 35 //2.注册(将上面的那个窗口给注册上) 36 if(::RegisterClassEx(&wndclass)==FALSE) 37 { 38 ::MessageBox(NULL,"dhsakfljadsf","提示",MB_OK); 39 40 return 0; 41 } 42 //3.创建 43 44 HWND hWnd=::CreateWindow("wangchao","xiao_hua",WS_OVERLAPPEDWINDOW,100,0,500,500,NULL,NULL,hIstance,NULL); 45 46 if(hWnd==NULL) 47 { 48 ::MessageBox(NULL,"创建失败","提示",MB_OK); 49 return 0; 50 } 51 //4.显式 52 //这个SW_SHOW就是一个宏,它就是ShowWindow-->SW,SW_SHOW显式,SW_HIDE隐藏 53 //第一个变量是显式哪一个窗口,就是上面的我们创建的那个hWnd 54 ::ShowWindow(hWnd,SW_SHOW); 55 //5.消息循环 56 //定义一个消息句柄 57 MSG msg; 58 //函数的第一个变量是 取到的什么消息,第二个是这个消息是来自哪一个窗口(如果给0,说的是所有窗口的消息) 59 //最后那个是消息的范围,0,0是所有的范围,要是写10 20 就是取第10个到第20个消息 60 while(::GetMessage(&msg,0,0,0)) 61 { 62 //第一步先翻译 63 ::TranslateMessage(&msg); 64 //第二部分发 65 ::DispatchMessageA(&msg); 66 67 } 68 69 70 ::DeleteObject(hBrush); 71 }
2)然后 我们进行添加光标 ,就是修改下面的代码:
首先是修改光标,光标需要加载(什么加载不加载的,其实就是贴图,那么这个光标的图片来自哪里,步骤:
(1)点开
(2)然后,右面(或者左面)就出现:
(3)然后出现:
(4)然后点击 “Cursor”----->新建
(5)在左侧(或者右侧)就出现resource.h头文件,
(6)然后,我修改我的WinMaincpp.cpp 光标那里的代码:
直接放到这里不行,因为LoadCursor那个函数的第二个形参是 字符串,所以 看你的帮助文档:
---->点着这个LoadCursor函数-->按下F1---->找到了下面的内容:
哎,总之是,需要你将那个游标的ID(整型)转定义一下 用MAKEINTRESOURCE
4)修改你的图标:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~你的resource.h文件内容也发生了变化:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~然后修改你的WinMaincpp.cpp的代码~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1 wndclass.hIcon=::LoadIcon(hIstance,MAKEINTRESOURCE(IDI_ICON1));//窗口图标
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~结果展示:~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
5)总的代码展示:
同时加了消息的一个处理过程:
1 #include<Windows.h> 2 #include"resource.h" 3 //这个叫 窗口消息处理函数 4 LRESULT CALLBACK WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam) 5 { 6 switch(uMsg) 7 { 8 case WM_CLOSE://点那个×,窗口关闭 9 ::PostQuitMessage(0);//消息推出 10 break; 11 } 12 return ::DefWindowProc( hWnd, uMsg, wParam, lParam); 13 } 14 15 16 int CALLBACK WinMain(HINSTANCE hIstance, 17 HINSTANCE hPreInstance, 18 LPSTR pCmdLine, 19 int nCmdShow) 20 { 21 22 HBRUSH hBrush=::CreateSolidBrush(RGB(0,0,255)); 23 24 25 //1.设计---->就是给WNDCLASSEX结构体初始化(结构体有12个) 26 WNDCLASSEX wndclass; 27 wndclass.cbClsExtra=0; 28 wndclass.cbWndExtra=0;//这两个是确定是否要分配额外的空间 29 wndclass.cbSize=sizeof(WNDCLASSEX); 30 wndclass.hbrBackground=hBrush; 31 wndclass.hCursor=::LoadCursor(hIstance,MAKEINTRESOURCE (IDC_CURSOR1));//光标 32 //因为上面的那个LoadCUrsor是需要字符串,但是那个IDC_CURSOR1是一个整型数字,所以 需要用那个宏给转定义一下 33 wndclass.hIcon=::LoadIcon(hIstance,MAKEINTRESOURCE(IDI_ICON1));//窗口图标 34 wndclass.hIconSm=NULL;//窗口左上的图标 35 wndclass.hInstance=hIstance; 36 wndclass.lpfnWndProc=WndProc; 37 wndclass.lpszClassName="wangchao"; 38 wndclass.lpszMenuName=NULL; 39 wndclass.style=CS_HREDRAW|CS_VREDRAW; 40 41 //2.注册(将上面的那个窗口给注册上) 42 if(::RegisterClassEx(&wndclass)==FALSE) 43 { 44 ::MessageBox(NULL,"dhsakfljadsf","提示",MB_OK); 45 46 return 0; 47 } 48 //3.创建 49 50 HWND hWnd=::CreateWindow("wangchao","xiao_hua",WS_OVERLAPPEDWINDOW,100,0,500,500,NULL,NULL,hIstance,NULL); 51 52 if(hWnd==NULL) 53 { 54 ::MessageBox(NULL,"创建失败","提示",MB_OK); 55 return 0; 56 } 57 //4.显式 58 //这个SW_SHOW就是一个宏,它就是ShowWindow-->SW,SW_SHOW显式,SW_HIDE隐藏 59 //第一个变量是显式哪一个窗口,就是上面的我们创建的那个hWnd 60 ::ShowWindow(hWnd,SW_SHOW); 61 //5.消息循环 62 //定义一个消息句柄 63 MSG msg; 64 //函数的第一个变量是 取到的什么消息,第二个是这个消息是来自哪一个窗口(如果给0,说的是所有窗口的消息) 65 //最后那个是消息的范围,0,0是所有的范围,要是写10 20 就是取第10个到第20个消息 66 while(::GetMessage(&msg,0,0,0)) 67 { 68 //第一步先翻译 69 ::TranslateMessage(&msg); 70 //第二部分发 71 ::DispatchMessageA(&msg); 72 73 } 74 75 76 ::DeleteObject(hBrush); 77 }