1. 程式人生 > >3)修改窗口左上角的小圖標

3)修改窗口左上角的小圖標

callback 註意 return source jad obj itme spa tran

1)結果展示:

      技術分享圖片

2)之前我給的那個 wndclass.hIconSm 為NULL 現在 我改為是:

      

1 wndclass.hIconSm=::LoadIcon(hIstance,MAKEINTRESOURCE(IDI_ICON2));;//窗口左上的圖標

並且,按照 弄光標或者圖標的順序 又畫了一個 小的圖標:

3)註意有關步驟:

    

    技術分享圖片

4)整體代碼展示:

    

 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=::LoadIcon(hIstance,MAKEINTRESOURCE(IDI_ICON2));;//窗口左上的圖標 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 }

5)文件框圖展示:

    技術分享圖片

3)修改窗口左上角的小圖標