第7章資源在Windows編程中的應(yīng)用_第1頁
第7章資源在Windows編程中的應(yīng)用_第2頁
第7章資源在Windows編程中的應(yīng)用_第3頁
第7章資源在Windows編程中的應(yīng)用_第4頁
第7章資源在Windows編程中的應(yīng)用_第5頁
已閱讀5頁,還剩63頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

第7章資源在Windows編程中

的應(yīng)用

,加速鍵

位圖

光標(biāo)

資源<對話框

菜單

字符串

I工具條

1

7.1菜單和加速鍵資源及其應(yīng)用

菜單由以下組成部分:

(1)窗口主菜單條

(2)下拉式菜單框

(3)菜單項熱鍵標(biāo)識

(4)菜單項加速鍵標(biāo)識

(5)菜單項分隔線

2

7.L1菜單的創(chuàng)建過程

⑴定義菜單

菜單在資源描述文件中的定義形式為:

選項說明

字符串成IDISCARDABLE當(dāng)不再需要菜單時可丟棄

1-655352IFIXED將菜單保存在內(nèi)存中的固定位置

間的整數(shù)]LOADONCALL需要時加載菜單

MOVEABLE菜單在內(nèi)存中可移動

4^^^LTRELOAD立即加載菜單

menuIDMENU[,載入特桂冠項]{菜單項列表}

POPUP語句

MENUITEM語句

POPUP語句定義彈出式菜單,其形式為:

POPUP"菜單項名”[,選項];

選項說明

MENUBARBREAK菜單項縱向分隔標(biāo)志

CHECKED顯示選中標(biāo)志

INACTIVE禁止一個菜單項

GRAYED禁止并變灰顯示

在菜單項名中加入符號"&”,以定義熱鍵

定義彈出式菜單項“編輯”的形式如下:

POPUP,,編輯(&E)”;

4

MENUITEM用于定義菜單項,其形式為:

MENUITEM”菜單項名”菜單項標(biāo)識(ID)[,

選項]

ID為菜單項標(biāo)識,在WM_COMMAND消息

中字參數(shù)wParam中包含選中菜單項的標(biāo)識。

每個菜單項的標(biāo)識必須唯一,標(biāo)識值常在

頭文件中定義。

如:創(chuàng)建菜單中的水平分隔符:

MENUITEMSEPARATOR

5

該菜單在資源描述文件中的定義如下:

#include<windows.h>

#include''Menu.h''

〃菜單定義

MymenuMENUMOVEABLE

{POPUP〃文件(&F)〃

{MENUITEM〃新建(&N)〃,IDM_NEW

MENUITEM〃打開(&0)〃,IDM_OPEN

MENUITEM〃關(guān)閉(&C)〃,IDM_CLOSE

MENUITEM〃保存(&S)〃,IDM_SAVE

MENUITEM〃另存為(&A)〃,IDM_SAVEAS

MENUITEMSEPARATOR

MENUITEM“退出(&X)”,IDM_EXIT

}

}

6

menu,h文件中定義了菜單項標(biāo)識所對應(yīng)的

數(shù)值:

ttdefineIDM_NEW10

ttdefineIDM_0PEN11

ttdefineIDM_CL0SE12

ttdefineIDM_SAVE13

ttdefineIDM_SAVEAS14

ttdefineIDM_EXIT15

7

(2)加載菜單資源

(在窗口類中加載菜單

WNDCLASSwndclass;

???

wndclass.lpszMenuName=lpszMenuName;

在創(chuàng)建窗口時加載菜單

<HWNDhwnd;HMENUhmenu;

hmenu=LoadMenu(hlnstance,nMy_menun);

hwnd=CreateWindow(hmenu,…);

動態(tài)加載菜單

hmenu2=LoadMenu(hlnstance,nMenu2n);

SetMenu(hwnd,hmenu2);

8

7.1.2操作菜單項

據(jù)dwEnable的取值,可為

1.禁止或激活菜單項

菜單項的ID值,也為該菜

BOOLEnableMenuItem單項在菜單中位置

(HMENUhmenu,

U1NTwIDEnableltem,//被禁止或激活的菜單項標(biāo)識

UINTdwEnable

標(biāo)識說明

MFBYCOMMAND以ID值標(biāo)識菜單項

MFENABLED激活菜單項

MF^BYPOSITION表明以位置標(biāo)識菜單項

MFZGRAYED禁止菜單項并使其變灰顯示

MFDISABLED禁止菜單項

2.設(shè)置或取消選中標(biāo)志

DWORDCheckMenuItem

(

HMENUhmenu,

UINTwIDCheckltem,//菜單項標(biāo)識

UINTdwCheck//操作標(biāo)識

標(biāo)識說明一

MFCHECKED添加選中標(biāo)志

MFUNCHECKED刪除選中標(biāo)志

10

3.增加菜單項

(1)在菜單的尾部增加菜單項

BOOLAppendMenu

(HMENUhmenu,

UINTdwFlags,//新加入的菜單項類型標(biāo)識

UINTdwIDNewItem,//新加入菜單項的ID

LPCTSTRIpNewItem//新加入的菜單項內(nèi)容

例如在“文件”菜單的末尾增加一項“關(guān)于”:

AppendMenu(hmenu,MF_ENABLED,IDM_ABOUT,“關(guān)于(&A)“);

ii

⑵在菜單中插入菜單項

調(diào)用函數(shù)InsertMenu在菜單中插入新的菜單

BOOLInsertMenu

(HMENUhmenu,//菜單句柄

UINTwPosition,//指定新菜單項插入的位置

UINTdwFlag,〃新加入的菜單項的信息

UINTdwIDNweltem,//新加入的菜單項的標(biāo)識

LPCTSTRIpNewItem//新插入的菜單項的內(nèi)容

)

例如,在“文件”菜單的“退出”項之前加入“打

印”菜單項;

InsertMenu(hmenu,IDMEXIT,

MF_BYCOMMAND|MF_ENABLED,

IDM_PRINT,〃打印(&P)〃);

12

4.刪除菜單項

調(diào)用函數(shù)DeleteMenu刪除菜單項:

BOOLDeleteMenu

(

HMENUhmenu,

UINTwPosition,〃要刪除的菜單項的位置

UINTdwFlag〃對wPosition的解釋

例如,刪除“文件”菜單中的“另存為”菜單項:

DeleteMenu(hmenu,IDM_SAVEAS,MF_BYCOMMAND)

13

5.修改菜單項

調(diào)用函數(shù)ModifyMenu修改菜單中的某個項;

BOOLModifyMenu

(HMENUhmenu,

UINTwPosition,//指定需修改的菜單項位置

UINTdwFlag,

UINTdwIDNweltem,//修改后菜單項的標(biāo)識

LPCTSTRIpNewItem//修改后的菜單項名

)

例如:修改“文件”菜單中“打開”項為“加載”

項:

ModifyMenu(hmenu,IDM_OPEN,MF_BYCOMMAND,

IDM_LOAD,〃加載(&L)〃).

7.1.3動態(tài)地創(chuàng)建菜單

動態(tài)地創(chuàng)建菜單可以使系統(tǒng)資源更加節(jié)省,

在應(yīng)用程序中動態(tài)創(chuàng)建菜單分兩個步驟:

1.調(diào)用函數(shù)CreateMemi創(chuàng)建空的彈出式菜單

HMENUCreateMenu(void)

2.調(diào)用函數(shù)AppendMenu或InsertMenu在該

菜單中加入菜單項。

15

7.1.4加速鍵資源

加速鍵資源是常伴隨菜單使用的一種非常有用

的資源

(1)在資源描述文件中定義加速鍵資源

力口速鍵名ACCELERATORS

加速鍵標(biāo)識(ID),

[類型]

[NOINVERT]〃使用加速鍵時,菜單項不高亮顯示

[ALT][SHIFT][CONTROL]//組合鍵的組合方式

16

常用的加速鍵有兩種形式:

DAchar9\id

例如:“文件”菜單中“保存”項的加速鍵可定義

為:

“人3”,IDMSAVE

②nCode,idVIRTKEY

使用虛擬鍵作為加速鍵。

例如將F1鍵定義為“幫助”菜單項的加速鍵,其

ID標(biāo)識為IDM_HELP,其形式如下:

VKF1JDMHELP,VIRTKEY

17

2.加載加速鍵資源

調(diào)用函數(shù)LoadAccelerators加載加速鍵資源:

???

HACCELhAccel;

???

hAccel=LoadAccelerators

(

hlnstance,//當(dāng)前程序?qū)嵗浔?/p>

IpAccelName//IpAccelName為加速鍵表名

18

3.翻譯加速鍵

翻譯操作經(jīng)常在應(yīng)用程序的消息循環(huán)中進(jìn)行:

while(GetMessage(&Msg9NULL,0,0))

{if(!TranslateAccelerator(hwnd,hAccel,&Mag))

{TranslateMessage(&Msg);

DispatchMessage(&Msg);

函數(shù)TranslateAccelerator是翻譯操作的

核心。其作用是對照加速鍵表,將相關(guān)的

按鍵消息WM_KEYDOWN和WM_KEYUP翻譯成

WM_COMMAND豉WM_SYSCOMMAND消息。其特

點是將翻譯后的消息直接發(fā)往窗口,不在

消息隊列中等待。19

7.1.5創(chuàng)建菜單資源實例

【例7?1】創(chuàng)建一個窗口菜單的構(gòu)架,單擊“創(chuàng)

建統(tǒng)計計算菜單項”動態(tài)地創(chuàng)建“統(tǒng)計計算”

菜單,之后,“創(chuàng)建統(tǒng)計計算菜單項”變成

不可操作,而原先不可操作的“刪除統(tǒng)計計

enu_Exampl

:項”變成可操作,執(zhí)行“刪

*JLW5I

五件里)編福舊幫助國?

新建S)Ctrl+H除統(tǒng)計計算菜單項”菜單

打開?)Ctrl+0命令刪除“統(tǒng)計計算”菜

關(guān)閉?

inuExample

保存⑤)Ctrl+S

文件IJ)翁耨?)統(tǒng)計計篁ICI

另存為?

求和

創(chuàng)建統(tǒng)討計算菜單項也)Ctrl+P萬差

綜前杼播菜隼項迎園表處」一

m?平均值

退出陰均方根20

ttinclude"windows.h〃

ttinclude〃7_1.h〃

HMENUhmenu,haddmenu;//定義菜單句柄

LRESULTCALLBACKWndProc(HWND,UINT,WPARAM,LPARAM);

intWINAPIWinMain(……)

i........

ShowWindow(hwnd,nCmdShow);

UpdateWindow(hwnd);

hAccel=LoadAccelerators(hlnstance,IpszMenuName);

while(GetMessage(&Msg,NULL,0,0))

{〃在消息循環(huán)中截獲加速鍵消息

if(!TranslateAccelerator(hwnd,hAccel,&Msg))

{TranslateMessage(&Msg);

DispatchMessage(&Msg);

returnMsg.wParam;}

21

LRESULTCALLBACKWndProc(……)

{switch(message)

{caseWM.COMMAND:

switch(LOWORD(wParam))

caseIDM.ADDMENU://在主菜單中添加彈出式菜單

hmenu=GetMenu(hwnd);//獲取主菜單句柄

haddmenu=CreateMenu();//動態(tài)創(chuàng)建菜單

//在創(chuàng)建的菜單中增加菜單項

AppendMenu(haddmenu,MF_ENABLED,IDM_qiuhe「求和”);

AppendMenujhaddmenu,MF_ENABLED,IDM_fangchaJ方嚏”);

AppendMenu(haddmenu,MF_ENABLEDJDM_pinjunzhiJ平均值");

AppendMenu(haddmenu,MF_ENABLED,IDM_junfanggen「均方根”);

//圈創(chuàng)建的彈出式菜單插入主菜單中

lnsertMenu(hmenu,2,MF_P0PUP|MF_BYP0SITI0N,

(UINT)haddmenuJ統(tǒng)計計算(&C)”);

〃相應(yīng)改變菜單中有關(guān)繪圖統(tǒng)并計算菜單項的屬性

EnableMenultemfhmenuJDM.ADDMENU^F.GRAYED);

EnableMenultem(hmenu,IDM_DELMENU,MF_ENABLED);

DrawMenuBar(hwnd);//重新顯示窗口菜單

22

break;

caselDM_DELMENU:

DeleteMenufhmenu^^F.BYPOSITION);〃刪除統(tǒng)計計算菜單項

〃相應(yīng)改變“文件”菜單中有關(guān)統(tǒng)計計算菜單項的屬性

EnableMenultem(hmenu,IDM_ADDMENU,MF_ENABLED);

EnableMenultemfhmenuJDM.DELMENU^F.GRATED);

DrawMenuBar(hwnd);萬重新顯示窗口菜單

break;

caseIDM.EXIT:

SendMessage(hwnd,WM_DESTROY,0,0);

break;

}

break*

caseWM.DESTROY:

PostQuilMessage(O);

break;

default:returnDefWindowProc(hwnd,message,wParamJParam);

)

return0;

}23

本例程的頭文件如下:

ttdefineIDM_ADDMENU15

ttdefineIDM_DELMENU16

ttdefineIDM_EXIT17

ttdefineIDM_HELP22

#defineIDMqiuhe23

#defineIDM_fangcha24

#defineIDMpinjunzhi25

#defineIDM_junfanggen26

24

本例程用到的資源文件源代碼如下:

#include"c:\prog_book\7_1\7_1.h"

#include"windows.h"

MENUMENUDISCARDABLE

BEGIN

POPUP"文件(&F)”

BEGIN

MENUITEM”創(chuàng)建統(tǒng)計計算菜單項(&P)\tCtrl+P”,IDM_ADDMENU

MENUITEM”冊ij除統(tǒng)計計算菜單項(&D)\tCtrl+D\IDM_DELMENU,GRAYED

MENUITEMSEPARATOR

MENUITEM”退出(&X)“,IDM_EXIT

END

MENUITEM”幫助(&H)“,IDM.HELP

END

MENUACCELERATORSMOVEABLEPURE

BEGIN

IIAPH,IDM_ADDMENU,ASCII

HADH,IDM_DELMENU,ASCII

END25

7.2位圖資源及其應(yīng)用

26

7.2.1位圖概念

位圖是一種數(shù)字化的圖形表示形

式,位圖中的每個像素點由位圖文件

中的一位或多位數(shù)據(jù)表示。整個位圖

的信息被細(xì)化為每個像素點的屬性值。

位圖數(shù)據(jù)量一般較大,為了提高

顯示刷新速度,位圖操作須在內(nèi)存中

進(jìn)行。

27

722位圖的操作過程

位圖操作過程:

?定義位圖句柄:HBITMAPhBm;

?加載或創(chuàng)建

hBm=LoadBitmap(hlnstance,IpszName)

hBm=CreateCompatibleBitmap(hdc,nWidth,nHeight)

?選入內(nèi)存設(shè)備環(huán)境

SelectObject(hdcmem,hBm);

?輸出

BOOLBitBIt

(HDChdcDest,〃目的設(shè)備環(huán)境句柄

intXDest,intYDest,intnWidth,intnHeitght,〃位圖系點及高寬

HDChdcSrc,intnXSrcJntnYsrc,〃源設(shè)卷環(huán)境句柄及位圖基點

DWORDdwRop//標(biāo)識位圖顯示方式

)28

在輸出位圖之前,經(jīng)常需調(diào)用函數(shù)GetObject

獲取位圖的尺寸:

GetObject

(hBitmap,//為位圖句柄

sizeof(BITMAP),//BITMAP結(jié)構(gòu)的大小

(LPVOID)&bm//BITMAP結(jié)構(gòu)的地址

應(yīng)用程序調(diào)用函數(shù)GetObject后,將指定位圖的

信息寫入BITMAP結(jié)構(gòu)中(結(jié)構(gòu)見教材)

29

7.2.3位圖操作實例

【例7?2】本例調(diào)用一幅坦克的圖片,并在用戶窗口區(qū)

上顯示

LRESULTCALLBACKWndProc(……)

{PAINTSTRUCTps;

switch(message)

{caseWM.CREATE:

hdc=GetDC(hwnd);//獲取設(shè)備環(huán)境句柄

hdcmem=CreateCompatibleDC(hdc);//內(nèi)存設(shè)備環(huán)境句柄

ReleaseDC(hwnd,hdc);//釋放設(shè)備環(huán)境句柄

caseWM.PAINT:

hdc=BeginPaint(hwnd,&ps);

SelectObject(hdcmem,hBm);//將位圖選入內(nèi)存設(shè)備環(huán)境

30

//將內(nèi)存設(shè)備環(huán)境中的位圖拷貝到設(shè)備環(huán)境中

BitBlt(hdc,180,80,bm.bmWidth,bm.bmHeightjhdcmem,0j0,SRCCOPY);

EndPaint(hwnd,&ps);〃釋放設(shè)備環(huán)境句柄

break;

caseWM_DESTROY:

DeleteObject(hBm);//釋放位圖

PostQuitMessage(O);

break;

default:

returnDefWindowProc(hwnd,message,wParam,IParam);

)

return0;

)

本例的資源文件如下:

pic7BITMAPpic7_2.bmp〃定義位圖資源31

7.3對話框資源及其應(yīng)用

對話框是一個彈出式窗口,它一般用于

用戶輸入或與用戶進(jìn)行交互活動的場合

不允許用戶在關(guān)閉對話框

二之前切換到應(yīng)用程序的其

對他窗口

框允許用戶在該對話框與應(yīng)用程

序其他窗口之間的切換,非模

式對話框從WinMain函數(shù)的消

息循環(huán)中接收輸入

7.3.1模式對話框的編程方法

1.定義對話框資源

一般的形式為:

對話框名DIALOG[載入特性選項]

33

2.調(diào)用函數(shù)DialogBox顯示對話框

調(diào)用DialogBox函數(shù)在窗口中顯示對話框:

intDialogBox

(HINSTANCEhlnstance,

LPCTSTRIpszDialogName,//對話框資源的名稱

HWNDhwndParent,//擁有該對話框的窗口句柄

DLGPROCIpDialogFunc//對話框處理函數(shù)的地址

34

3.構(gòu)造對話框消息處理函數(shù)

對話框消息處理函數(shù)的一般形式為:

BOOLCALLBACKDlgProc(HWNDhDIg,.

{switch(message)

{caseWMJNITDIALOG:

return1;

caseWM.COMMAND

switch(LOWORD(wParam))

{case...

■■■

break;

■■■

)

break;

)

return0;

)35

在對話框消息處理函數(shù)中主要常處理以下兩

類消息:

(a)WMJNITDIALOG消息

對話框在響應(yīng)消息WM_INITDIALOG消息

時完成其初始化操作,在功能上與主窗口

函數(shù)的WIVLCOMMAND消息相彳以。

(b)WIVLCOMMAND消息

對話框在響應(yīng)消息WNLCOMMAND時,

通過查看消息字參數(shù)(wParam)中的低位

字節(jié),與控件標(biāo)識(ID)相比較,以確定

產(chǎn)生交互請求的控件并據(jù)此轉(zhuǎn)入相應(yīng)的處

理過程進(jìn)行處理。

36

4.關(guān)閉對話框

調(diào)用函數(shù)EndDialog可以關(guān)閉對話框:

BOOLEndDialog(HWNDhdlg,INT_PTRnResult)

Windows消息框是模態(tài)對話框的一種特殊形式,應(yīng)

用程序可通過調(diào)用函數(shù)MessageBox生成一些簡單但

又常用的消息框:

intMessageBox

(HWNDhwnd,//擁有消息框的窗口

LPCTSTRIpszText,//消息框中顯示的字符串

LPCTSTRIpszCaption,//作為標(biāo)題的字符串

DWORDdwType//指定消息框的內(nèi)容

)

37

dwType常用標(biāo)識及其說明

MB_CANCELTRYCONTINUE

含有Cancel、TryAgain和Continue按鈕的消息框

MBJCONEXCLAMATION,MBJCONWARNING

含有驚嘆號圖標(biāo)的消息框

MBJCONQUESTION含有問號圖標(biāo)的消息框

MBJCONSTOP,MBJCONERROR,MBJCONHAND

含有停止圖標(biāo)的消息框

MB_OK含有一個OK按鈕的消息框

MB_OKCANCEL含有0K和CANCEL按鈕的消息框

MB_RETRYCANCEL含有RETRY和CANCEL按鈕的消息本區(qū)

MB_YESNO含有YES和NO按鈕的消息框

MB_YESNOCANCEL含YES、NO和CANCEL按鈕的消息框

7.3.2模態(tài)對話框應(yīng)用實例

LRESULTCALLBACKWndProc(…,…,…,…)

{switch(message)

{caseWM.COMMAND:

switch(LOWORD(wParam))

{caseIDM_OPEN:

MessageBox(hwnd」文件已經(jīng)打開!文件打開

break;

caseIDM.SAVE:

MessageBox(hwndJ文件保存成功!7文件保存”,MB_OK);

break;

caseIDM.EXIT:

SendMessage(hwnd,WM_DESTROY,0,0);break;

caseIDM_ABOUT://創(chuàng)建對話框

DialogBox(hlnst「About”,hwnd,(DLdPROC)DlgProc);break;

}

break;

caseWM_DESTROY:PostQuitMessage(O);break;

default:returnDefWindowProc(hwnd,message,wParamJParam);

return0;}40

BOOLCALLBACKDlgProc(HWNDhdlg,

{switch(message)

{caseWMJNITDIALOG://初始化對話框

return1;

caseWM_COMMAND://處理對話框消息

switch(LOWORD(wParam))

{caseIDOK://關(guān)閉對話框

EndDialog(hdlg,0);return1;

)

break;

caseWM_CLOSE:

EndDialog(hdlg,0);return1;

)

return0;

)41

本例的資源程序代碼如下:

#include<windows.h>

#include”7_3.h”

MenuMENUDISCARDABLE

(

POPUP”文件(&F)”

{MENUITEM”打開(&0)\tCtrl+O11,IDM_OPEN

MENUITEMSEPARATOR

MENUITEM”保存(&S)\tCtrl+S11,IDM_SAVE

MENUITEMSEPARATOR

MENUITEM”退出(&X)“,IDM.EXIT

)

POPUP”幫助(&H)”

(

MENUITEM11關(guān)于(&A),,二IDM.ABOUT

)

)42

MenuACCELERATORS

(

,,AOn,IDM_OPEN

“AS”,IDMSAVE

)

AboutDIALOG10,10,100,50

STYLEWS.POPUP|WS_CAPTION|WS_SYSMENU

CAPTION'俁于,,

FONT18J楷體,,//對話框中的文本字體類型及大小

(

CTEXT“Windows模態(tài)對話框>1,13,10,80,10

DEFPUSHBUTTON”確定”,IDOK,35,30,30,12

)

43

7.3.3非模態(tài)對話框的編程方法

非模態(tài)對話框在對話框的定義、對話框的創(chuàng)建及消息

處理上與模態(tài)對話框略有差別,方法如下:

1.定義對話框樣式

非模態(tài)對話框的定義一般形式如下:

STYLEWS_POPUP|WS_CAPTION|WS_VISIBLE

樣式中應(yīng)包含WS_VISIBLE,否則無法在屏幕上顯示

2.創(chuàng)建對話框函數(shù)

非模態(tài)對話框的創(chuàng)建由函數(shù)CreateDialog完成:

HWNDCreateDialog

(HINSTANCEhlnstance,//當(dāng)前應(yīng)用程序?qū)嵗浔?/p>

LPCTSTRIpszDialogName,//對話框名

HWNDhwndParent,//擁有該對話框的窗口句柄

DLGPROCIpDialogFunc)//對話框處理函數(shù)地址

3.消息循環(huán)部分的處理

由于非模態(tài)對話框并不禁止應(yīng)用程序向其他窗口發(fā)

送消息,因此,在WinMain函數(shù)的消息循環(huán)中必須

包含截獲發(fā)往非模態(tài)對話框的消息,并將其發(fā)往相

應(yīng)的對話框處理函數(shù)進(jìn)行處理。其消息循環(huán)過程的

一般形式為:

while(GetMessage(&Msg5NULL,0,0))

{if(!IsDialogMessage(hdlg,&Msg))

TranslateMessage(&Msg);

DispatchMessage(&Msg);

45

7.3.4非模態(tài)對話框應(yīng)用實例

【例74]在“關(guān)于”窗口不關(guān)閉的前提下,

仍可以對“文件”下拉菜單進(jìn)行操作,如選

“文件”菜單中的“創(chuàng)建”選項,即可彈出

“7*,,__I1________________________

[干IfITHKHQLI

;二「X

Windows對話框示例

確定

LRESULTCALLBACKWndProc(..)

{switch(message)

{caseWM.COMMAND:

switch(LOWORD(wParam))

{caseIDM.NEW:

MessageBoKhwrid,11文件倉ij建成功!”「文件創(chuàng)建”,MB_OK);

break;

caseIDM_OPEN:

MessageBox(hwnd」文件打開成功!文件打開'MB—OK);

break;

caseIDM.SAVE:

MessageBox(hwndJ文件保存成功!”「文件保存”,MB_OK);

break;

caseIDM.EXIT:

SendMessage(hwnd,WM_DESTROY5050);break;

caseIDM.ABOUT:

hdlg=CreateDialog(hlnst/<About",hwndj(DLGPROC)DlgProc);

break;

}47

BOOLCALLBACKDlgProc(HWNDhdlg,.......,...)

{switch(message)

{caseWMJNITDIALOG://初始化消息框

return1;

caseWM_COMMAND://處理消息框消息

switch(LOWORD(wParam))

{caseIDOK:

DestroyWindow(hdlg);//關(guān)閉消息框

return1;

)

break;

caseWM_CLOSE:

DestroyWindow(hdlg);return1;

)

return0;本例題的資源文件與

)上例類似,請見教材

7.4圖標(biāo)資源的應(yīng)用

圖標(biāo)是代表應(yīng)用程序的特殊

的最小位圖。在圖標(biāo)上雙擊鼠標(biāo)

就可以執(zhí)行該應(yīng)用程序,圖標(biāo)資

源可以由VC自帶的圖標(biāo)資源編輯

器來創(chuàng)建

49

7.4.1圖標(biāo)資源的操作

圖標(biāo)資源的操作包括創(chuàng)建、定義和加載等過程

1.圖標(biāo)資源的創(chuàng)建

用戶可通過圖形編輯器自定義圖標(biāo)形式,并保存在

擴(kuò)展名為.ico的文件中。Windows系統(tǒng)也提供了

標(biāo)準(zhǔn)圖標(biāo)。

標(biāo)識形狀

IDI_APPLICATION缺省圖標(biāo)

IDI_ASTERISK信息圖標(biāo)

IDI_EXCLAMATION驚嘆號圖標(biāo)

IDI_HAND停止圖標(biāo)

IDI_QUESTION問號圖標(biāo)

50

2.在資源文件中定義圖標(biāo)資源

若采用自定義圖標(biāo),要在資源文件中定義該圖標(biāo):

圖標(biāo)名ICON圖標(biāo)文件名(.ico)

3.在應(yīng)用程序中加載圖標(biāo)

調(diào)用函數(shù)Loadicon進(jìn)行圖標(biāo)資源的加載的,此過程

經(jīng)常是在定義窗口類時進(jìn)行,其形式為:

WNDCLASSwndclass;

wndclass.hlcon=Loadlcon(hThislnst,IpszIconName);

51

742圖標(biāo)資源應(yīng)用舉例

【例7?5】程序所使用的圖標(biāo)文件名為tree.ico,

在為本例程序指定了這個圖標(biāo)后,在資源管

理器中就可以看到在可執(zhí)行文件的文件名

15Debug

文件(E)稿輯(£)查看(匕收藏(公工具任)幫助(力

地址(3LjDebug鏈接

8_6,obj

孜行文伴8_6.pch

Debug上的圖標(biāo)

選定項目可以查看其說明

另請參閱8_6,pdbvc60.idbvc60.pdb

我的文檔

網(wǎng)上鄰居

我的電腦

52

8個對象|^36MfiTJ我的電腦

本例程序中使用的圖標(biāo)資源文件如下:

TREEICONd:\prog_book\7_5\tree.ico

在初始化窗口類時加載圖標(biāo)資源

BOOLlnitWindowsClass(HINSTANCEhlnstance)

{WNDCLASSWndClass;

WndCgss.hlcon=Loadlcon(NULLJTREE");

//加載圖標(biāo)資源

returnRegisterClassf&WndClass);

)

53

SuccesswithMoneyandJoy

附落人生心語

?成功是一種觀念

?致富是一種義務(wù)

?快樂是一種權(quán)利

?每個人都有能力、有義

務(wù)、有權(quán)利辦到成功

致富快樂

附贈人生心語

成成功不是打敗別人

功成功不是超越別人

成功不是名、利、權(quán)的獲得

致?lián)碛薪】档纳眢w

豐足的物質(zhì)生活

富平衡的心理狀態(tài)

又才能擁有成功

快SuccesswithMoneyandJoy

戰(zhàn)勝自己

樂貢獻(xiàn)自己

扮演好自己的歷史角色

才能超越自己

融入成功里

附贈人生心語

知人者智,自知者明,勝人者力,自

勝者強(qiáng)。

——老子

附贈人生心語

?成功必須靠百分之九十八的辛勤血

汗,加上百分之二的天才靈感。

?世界上注定只有百分之二十的人會成

功。

附贈人生心語

成猶太諺語中有一句名言,

功會傷人的東西有三個:苦惱、爭吵、空的錢包。

其中最傷人的是——空的錢包。

致金錢本身并沒有善惡,

但沒有錢,

富卻的確是一件不幸的事情。

又所以,我們必須學(xué)習(xí)

快SuccesswithMoneyandJoy

重視財富,

樂管理財富,

更重要的是栗學(xué)會

正確地

使用自己的財富。

附贈人生心語

重財---重視自己的財富

孔子說:“不義而富且貴于我如浮云?!敝灰?/p>

是正正當(dāng)當(dāng)?shù)腻X,都應(yīng)該被珍惜、被重視。

附贈人生心語

理財-----管理自己的財富

在貧苦和缺錢里掙扎的人,都有一個共同的特

點,就是不會理財,甚至不懂什么是理財。

附磨人生心語

增貝才----增加自己的財富

勞務(wù)收入

收入卜

財務(wù)收入

附霜人生心語

守貝才-----保護(hù)自己的財富

守財三原則:

?不賭錢

?不借錢

?不投資做生意

附贈人生心語

功春有百花秋有月,夏有涼風(fēng)冬有雪

致若無閑事掛

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論