Win32設計圖標、光標樣式和窗口標題(簡單易懂)

1、準備知識:

1、圖標:(文件格式爲 .ico)
圖標有兩種,分別是大圖標(wc.hIcon)和小圖標(wc.hIconSm)。web

大圖標:任務欄中程序圖標
在這裏插入圖片描述
小圖標:窗口上的圖標
在這裏插入圖片描述app

圖標文件格式.ioc的轉換:
1.可經過格式轉換軟件,好比格式工廠。
2.在線網站轉換,在線版PDF轉換器svg

2、光標:(靜態光標文件格式.cur)、(動態光標文件格式 .ani)
就是在運行窗口上的光標。
在這裏插入圖片描述函數

光標文件.cur和.ani的得到:
1.使用Axialis CursorWorkshop軟件能夠本身製做,也可轉換,而後保存便可。
2…可經過其餘格式轉換軟件。網站


2、窗口建立前設計

步驟:
1.添加資源。(如下有詳細操做)
2.加載圖標和光標。(使用LoadCursor函數或LoadImage函數)spa

1.添加資源步驟:

右擊資源文件----添加----資源----添加圖標點擊Icon、添加光標點擊Cursor----而後點導入.net

在這裏插入圖片描述


有幾點說明一下:
1.在添加第一個資源後,會自動生成一個resource.h個頭文件,此時須要添加頭文件 「#includeresource.h」
2.在添加第一個資源後,也會在資源文件裏生成一個.rc的文件,點擊後會有以下圖,也可在這添加資源文件,IDC_CURSOR1,IDC_CURSOR2這些是文件名。
在這裏插入圖片描述
在這裏插入圖片描述設計


2.加載圖標光標:

經過使用LoadCursor函數或LoadImage函數加載code

// 加載大圖標
wc.hIcon = LoadIcon(hInstance, (LPCTSTR)IDI_ICON1);
或wc.hIcon = (HICON)LoadImage(hInstance, (LPCTSTR)IDI_ICON1, IMAGE_ICON, 0, 0, LR_CREATEDIBSECTION);

// 加載小圖標
wc.hIconSm = LoadIcon(hInstance, IDI_APPLICATION);
或wc.hIconSm  = (HICON)LoadImage(hInstance, (LPCTSTR)IDI_ICON1, IMAGE_ICON, 0, 0, LR_CREATEDIBSECTION);

// 加載光標
wc.hCursor = LoadCursor(hInstance, (LPCTSTR)IDC_CURSOR1);
或wc.hCursor = (HICON)LoadImage(hInstance, (LPCTSTR)IDC_CURSOR1, IMAGE_CURSOR, 0, 0, LR_CREATEDIBSECTION);

補充:代碼(LPCTSTR)IDI_ICON1可用MAKEINTRESOURCE(IDI_ICON1)代替。必定記得加上"#includeresource.h"頭文件。xml


窗口標題設計:
窗口標題的設計很簡單,只須要在窗口建立CreateWindowEx函數中設計就行。

hwnd = CreateWindowEx(WS_EX_CLIENTEDGE, TEXT("Windows"),
                      TEXT("奇怪的大冒險"),  // 設計窗口標題
                      WS_VISIBLE | WS_OVERLAPPEDWINDOW,CW_USEDEFAULT, CW_USEDEFAULT,
                       640, 480,   // 設計窗口大小
                       NULL, NULL, hInstance, NULL);

3、窗口建立後設置

API函數:
1. 從新指定窗口所屬窗口類的WNDCLASSEX結構體成員的值SetClassLong
2. 設置光標:SetCursor

1.SetClassLong函數:圖標、光標、標題等都能改

函數的功能:它會替換存儲空間中指定偏移量處的32位長整型值,或替換指定窗口所屬類的WNDCLASSEX結構(應該是替換這個結構體中的,並無把結構體給換了)。

DWORD SetClassLong(HWND hWnd,      // 窗口句柄及間接給出的窗口所屬的類
                    int nlndex,     // 須要背修改替換的值
                    LONG dwNewLong) // 新的值  --注意結構類型的轉化

 // 實例:修改光標
 SetClassLong(hwnd, GCL_HCURSOR , (LONG)LoadCursor(NULL, IDC_CROSS));
nlndex的值 說明
GCL_CBCLSEXTRA 設置與類相關的尺寸的字節大小。設定該值不改變己分配的額外字節數。
GCL_CBWNDEXTRA 設置與類中的每個窗口相關的尺寸的字節大小。設定該值不改變已分配額外字節數。查看如何進入該內存,參看SetWindowLOng。
GCL_HBRBACKGROUND 替換與類有關的背景刷子的句柄。
GCL_HCURSOR 替換與類有關的光標的句柄。
GCL_HICON 替換與類有關的圖標的句柄。
GCL_HMODULE 替換註冊類的模塊的句柄。
GCL_STYLE 替換窗口類的風格位。
GCL_MENUNAME 替換菜單名字符串的地址。該字符串標識與類有關的菜單資源。
GCL_WNDPROC 替換與窗口類有關的窗口過程的地址。

2.SetCursor函數:設置光標

// 函數原型:
HCURSOR SetCursor(HCURSOR hCursor);// 光標句柄

// 實例:
SetCursor(LoadCursor(NULL, IDC_CROSS));

做者說:
我還有好多未完成的夢,沒有理由停下前進的腳步!

本文同步分享在 博客「戰 勝」(CSDN)。
若有侵權,請聯繫 support@oschina.cn 刪除。
本文參與「OSC源創計劃」,歡迎正在閱讀的你也加入,一塊兒分享。

相關文章
相關標籤/搜索