給時間一點時間,讓過去過去,讓開始開始。。。
---- 網易雲熱評
一、圖示資源
1、注意圖示的大小,一個圖示檔案中,可以有多個不同大小的圖示。
2 載入
HICON LoadIcon( HINSTANCE hInstance, // handle to application instance LPCTSTR lpIconName // name string or resource identifier); 成功返回HICON控制代碼
3、從註冊視窗設定
wc.hIcon = LoadIcon(g_hInstance,(LPCWSTR)IDI_ICON1);//預設左上角的圖示wc.hIconSm = LoadIcon(g_hInstance, (LPCWSTR)IDI_ICON2);
4、 透過訊息機制設定,在建立視窗的時候
HICON hicon = LoadIcon(g_hInstance, (LPCWSTR)IDI_ICON1); SendMessage(hWnd, WM_SETICON, ICON_SMALL, (LPARAM)hicon);
5、繪製圖標
case WM_PAINT: 繪製圖標(hWnd); break;void 繪製圖標(HWND hWnd){ //建立筆 PAINTSTRUCT p = {}; HDC hdc = BeginPaint(hWnd, &p); HICON hico = LoadIcon(g_hInstance,(LPCWSTR)IDI_ICON3); DrawIcon(hdc, 200, 200, hico); EndPaint(hWnd, &p);}
二、游標資源
1、新增資源
游標的大小預設是32X32畫素,每個游標有熱點,是當前滑鼠的熱點
2、在視窗註冊時使用資源
wc.hCursor = LoadCursor(g_hInstance,(LPCWSTR)IDC_CURSOR1);
3、設定游標訊息
case WM_SETCURSOR: { if (LOWORD(lParam)==HTCLIENT)//當滑鼠在客戶區 { HCURSOR hCur = LoadCursor(g_hInstance, (LPCWSTR)IDC_CURSOR1); SetCursor(hCur); return 0;//不讓系統預設處理所以直接跳過 }else if (LOWORD(lParam)==HTCAPTION) { HCURSOR hCur = LoadCursor(g_hInstance, (LPCWSTR)IDC_CURSOR2); SetCursor(hCur); return 0;//不讓系統預設處理所以直接跳過 } } break;
三、不同客戶區,顯示不同內容
case WM_SETCURSOR: { if (LOWORD(lParam)==HTCLIENT)//當滑鼠在客戶區 { HCURSOR hCur = LoadCursor(g_hInstance, (LPCWSTR)IDC_CURSOR1); HCURSOR hCur2 = LoadCursor(g_hInstance, (LPCWSTR)IDC_CURSOR2); RECT rcCli = {0}; //獲取客戶區大小 GetClientRect(hWnd, &rcCli); POINT pt = { 0 }; //獲取螢幕座標 GetCursorPos(&pt); //螢幕區轉為客戶區 ScreenToClient(hWnd, &pt); if (pt.x<rcCli.right/2) { SetCursor(hCur); } else { SetCursor(hCur2); return 0; } //不讓系統預設處理所以直接跳過 } } break;
最新評論