|
撰/ahliu
認識框架的控制函數很多時候我們都想終途改變視窗程式的外觀,例如背景顏色或圖示等,你可以使用 SetClassLong 函數 (只適用於透過 WNDCLASS 所建立的視窗): SetClassLong(HWND hwnd,int iIndex,LONG dwNewLong)
例如你想按鍵盤時改背景顏色為藍色,可在 WndProc 中加入: switch (iMsg)
{
...
...
case WM_KEYDOWN:
SetClassLong(hwnd,GCL_HBRBACKGROUND,
(LONG) CreateSolidBrush(RGB(0,0,255)));
InvalidateRect(hwnd,NULL,TRUE);
return 0;
}

當中,把 GCL_HBRBACKGROUND 套入 SetClassLong 的 iIndex 代表更改背景顏色,(LONG) 把 CreateSolidBrush 所建立的 Brush 物件強制轉換為 32 bit 整數。 CreateSolidBrush 把 COLORREF 數值轉換為 Brush 結構,可用作區域填充 (Floodfill),在這個例子我們利用 CreateSolidBrush 所建立的 Brush 結構來填滿整個背景。 RGB(紅,綠,藍) 是一個巨集,把紅綠藍三種顏色的深度填入巨集,傳回 COLORREF 型數值,再傳入 CreateSolidBrush 中。其中 COLORREF 是一個 32 bit 數值,以十六進數表示方法如下: 0x00bbggrr (b = blue, g = green, r = red)
例如 0x00ff0000 等於純藍色,0x00ffffff 等於白色。 又例如你想更改程式的圖示,你可以利用以下指令: SetClassLong(hwnd,GCL_HICON,(LONG) LoadIcon(hInstance, MAKEINTRESOURCE(IDI_ICON1)));
[img=/article/related_doc/200406210255103136/Chap5-ChangeIcon.jpg[/img]
當中,把 GCL_HICON 套入 iIndex 代表更改現有圖示,hInstance 代表提供圖示的應用程式,即本程式,而獲取本程式的 Instance 可在捕獲 WM_CREATE 時利用以下指令: hInstance = ((LPCREATESTRUCT)lParam)->hInstance;
MAKEINTRESOURCE 是一個巨集將匯入程式的資源 ID 數值轉變為視窗程式內部的資源識別碼,其中 IDI_ICON1 在 resource script 中已定義好。 簡易應用實例1. 我們再看看如何更改視窗框架的樣式: SetWindowLong(hwnd,GWL_STYLE,(long)WS_POPUP|WS_VISIBLE|WS_THICKFRAME|WS_CAPTION);
請留意,視窗的外觀更改必需以 UpdateWindow、ShowWindow 或 InvalidateRect 函數來更新。 2. 大家使用 Notepad 或 IE 時,也會發現它們的 Caption 會隨 URL 或檔案名而改變,我們可使用 SetWindowText 來更改 title bar 上面的文字: SetWindowText(hwnd,"Your New Caption");
注意:SetWindowText 函數的第二個參數是字串的地址。 
3. 若你想開發電腦遊戲或者是螢幕保護程式,你的視窗程式必需霸佔整個螢幕,並要把框架和 Title bar 移除,你可以在建立視窗框架時 (i.e. 呼叫 CreateWindow 時),設定樣式一欄為: CreateWindow(AppClassName,"Caption",WS_POPUP|WS_VISIBLE,0,0,
GetSystemMetrics(SM_CXSCREEN),GetSystemMetrics(SM_CYSCREEN),
NULL,NULL,hInstance,NULL);
把樣式設定為 WS_POPUP|WS_VISIBLE 就能消除框架和 Title bar,我們利用 GetSystemMetrics 取得電腦的螢幕大小,將不同數值插入 GetSystemMetrics 可傳回不同的系統設定值,這些數值約有四十個,在此不作詳細討論。 本章的 Source Code (更改底色)可按此下載。
本章的 Source Code (更改Caption)可按此下載。
本章的 Source Code (更改框架外觀)可按此下載。
本章的 Source Code (更改圖示)可按此下載。
本章的 Source Code (全螢幕)可按此下載。
GetSystemMetrics 函數的詳細說明(英文版) 可按此下載。
相關文件:
- Change Background Sn
- Change Icon snapshot
- Change Caption snaps
- Change background so
- Change Caption sourc
- Change frame source
- Change icon source
- Full screen source
- GetSystemMetrics det
發表日期:2004-06-21
|
|
|