版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1第5章
資源在Windows編程中的應(yīng)用加速鍵對(duì)話(huà)框位圖資源光標(biāo)菜單工具條字符串
25.1菜單和加速鍵資源及其應(yīng)用
菜單由以下組成部分:(1)
窗口主菜單條(2)
下拉式菜單框(3)
菜單項(xiàng)熱鍵標(biāo)識(shí)(4)
菜單項(xiàng)加速鍵標(biāo)識(shí)(5)
菜單項(xiàng)分隔線(xiàn)5.1.1幾個(gè)常用的菜單操作函數(shù)定義菜單的時(shí)候,我們可以通過(guò)可視化界面進(jìn)行操作,關(guān)鍵是創(chuàng)建好菜單及菜單項(xiàng)后,該如何進(jìn)行操作。46.1.2操作菜單項(xiàng)
1.禁止或激活菜單項(xiàng)
BOOLEnableMenuItem(UlNTwIDEnableItem,//被禁止或激活的菜單項(xiàng)標(biāo)識(shí)
UINTdwEnable)據(jù)dwEnable的取值,可為菜單項(xiàng)的ID值,也為該菜單項(xiàng)在菜單中位置
標(biāo)識(shí) 說(shuō)明MF_BYCOMMAND以ID值標(biāo)識(shí)菜單項(xiàng)MF_ENABLED 激活菜單項(xiàng)MF_BYPOSITION 表明以位置標(biāo)識(shí)菜單項(xiàng)MF_GRAYED 禁止菜單項(xiàng)并使其變灰顯示MF_DISABLED 禁止菜單項(xiàng)設(shè)置或取消選中標(biāo)志
在菜單旁顯示一個(gè)選中標(biāo)志如打上“√”標(biāo)記,以表明用戶(hù)選擇了該項(xiàng)??烧{(diào)用函數(shù)CheckMenuItem設(shè)置或取消選中標(biāo)志,該函數(shù)的原型為:hmennu->CheckMenuItem(UINTwIDCheckItem, //設(shè)置項(xiàng)的菜單IDUINTdwCheck //dwCheck為操作標(biāo)識(shí))標(biāo)識(shí) 說(shuō)明MF_CHECKED 添加選中標(biāo)志MF_UNCHECKED 刪除選中標(biāo)志MF_BYCOMMAND以ID值標(biāo)識(shí)菜單項(xiàng)MF_BYPOSITION 表明以位置標(biāo)識(shí)菜單項(xiàng)63.增加菜單項(xiàng)(1)在菜單的尾部增加菜單項(xiàng),用AppendMenu函數(shù):AppendMenu
(HMENUhmenu //動(dòng)態(tài)需要增加菜單項(xiàng)的菜單句柄
UINTdwFlags,//新加入的菜單項(xiàng)類(lèi)型標(biāo)識(shí)或其他狀態(tài)信息
UINTdwIDNewItem, //新加入菜單項(xiàng)的ID標(biāo)識(shí)
LPCTSTRlpNewItem//新加入的菜單項(xiàng)內(nèi)容,取決于dwFlags
)例如在彈出式菜單“文件”的末尾增加一項(xiàng)“關(guān)于”的形式如下:AppendMenu(hmenu,MF_ENABLED,IDM_ABOUT,“關(guān)于(&A)”)關(guān)于dwIDNewItem:一般情況下是插入項(xiàng)的ID值;如果加入的是一個(gè)彈出式菜單,則為彈出式菜單的句柄;lpNewItem取決于dwFlags參數(shù)。如果dwFlags為MF_BITMAP,則該參數(shù)包含一個(gè)位圖句柄。7(2)用InsertMenu在菜單中插入新的菜單項(xiàng)BOOLInsertMenu(HMENUhmenu, //菜單句柄UINTwPosition, //指定新菜單項(xiàng)插入的位置UINTdwFlag,//新加入的菜單項(xiàng)的信息及對(duì)wPosition的解釋PTRdwIDNweItem, //新加入的菜單項(xiàng)的ID標(biāo)識(shí)LPCTSTRlpNewItem //新插入的菜單項(xiàng)的內(nèi)容)如果dwFlag為MF_BYCOMMAND,則該參數(shù)為插入位置的下一個(gè)菜單項(xiàng)的ID值;如果dwFlag為MF_BYPOSITION,則該參數(shù)為插入的位置號(hào),菜單的第一個(gè)菜單項(xiàng)的位置號(hào)為0。如果加入的是一個(gè)彈出式菜單,則該參數(shù)為彈出式菜單的句柄;lpNewItem取決于dwFlag參數(shù),如果dwFlag為MF_BITMAP,則該參數(shù)包含一個(gè)位圖句柄。
如在彈出式菜單“文件”的“退出”(ID為IDM_EXIT)項(xiàng)之前加入新的菜單項(xiàng)“打印”(ID為IDM_PRINT)的語(yǔ)句如下;InsertMenu(hmenu,IDM_EXIT,MF_BYCOMMAND|MF_ENABLED,IDM_PRINT,L"打印(&P)");94.刪除菜單項(xiàng)函數(shù)DeleteMenu,該函數(shù)的原型為:BOOLDeleteMenu(HMENUhmenu, UINTwPosition, //指定要?jiǎng)h除的菜單項(xiàng)的位置UINTdwFlag //對(duì)wPosition的解釋)
對(duì)于wPosition,由參數(shù)dwFlag解釋其意義,如果dwFlag為MF_BYCOMMAND,則該參數(shù)為菜單項(xiàng)的ID值;如果dwFlag為MF_BYPOSITION,則該參數(shù)為菜單項(xiàng)的位置號(hào)。
例如,刪除彈出式“文件”菜單中的“另存為”項(xiàng)的形式如下:
DeleteMenu(hmenu,IDM_SAVEAS,MF_BYCOMMAND)
值得注意的是,如果菜單項(xiàng)含有彈出式菜單,則刪除該菜單項(xiàng)時(shí)該彈出式菜單也同時(shí)被刪除。105.修改菜單項(xiàng)函數(shù)ModifyMenuBOOLModifyMenu(HMENUhmenu,UINTwPosition, //指定需修改的菜單項(xiàng)位置UINTdwFlag,PTRdwIDNweItem, //一般為修改后菜單項(xiàng)的標(biāo)識(shí)LPCTSTRlpNewItem //一般為修改后的菜單項(xiàng)名)
對(duì)于wPosition,如果dwFlag為MF_BYCOMMAND,則該參數(shù)為菜單項(xiàng)的ID值;如果dwFlag為MF_BYPOSITION,則該參數(shù)為菜單項(xiàng)的位置號(hào)。
例如修改彈出式菜單“文件”中“打開(kāi)”項(xiàng)為“加載”項(xiàng)的語(yǔ)句如下:
ModifyMenu(hmenu,IDM_OPEN,MF_BYCOMMAND,IDM_LOAD,L"加載(&L)");應(yīng)用文件除使用資源描述文件中定義的菜單外,還可以動(dòng)態(tài)地創(chuàng)建菜單。116.動(dòng)態(tài)地創(chuàng)建菜單
動(dòng)態(tài)地創(chuàng)建菜單可以使系統(tǒng)資源更加節(jié)省,在應(yīng)用程序中動(dòng)態(tài)創(chuàng)建菜單分兩個(gè)步驟:(1)調(diào)用函數(shù)CreateMenu創(chuàng)建空的彈出式菜單:HMENUCreateMenu(void)(2)調(diào)用函數(shù)AppendMenu、InsertMenu或InsertMenultem在該菜單中加入菜單項(xiàng)。
例如,在應(yīng)用程序的窗口菜單中動(dòng)態(tài)創(chuàng)建彈出式菜單“編輯”的過(guò)程如下:…HMENUhmenu,hPopupmenu; //主窗口菜單句柄和新創(chuàng)建的菜單句柄…//將彈出式菜單“編輯”加入到菜單中AppendMenu(hmenu,MF_POPUP,(UINT)hmenuPopup,"編輯(&E)");…
12POPUP語(yǔ)句定義彈出式菜單,其形式為:POPUP"菜單項(xiàng)名"[,選項(xiàng)];
在菜單項(xiàng)名中加入符號(hào)“&”,以定義熱鍵定義彈出式菜單項(xiàng)“編輯”的形式如下:POPUP“編輯(&E)”;
選項(xiàng) 說(shuō)明MENUBARBREAK 菜單項(xiàng)縱向分隔標(biāo)志CHECKED 顯示選中標(biāo)志INACTIVE 禁止一個(gè)菜單項(xiàng)GRAYED 禁止并變灰顯示13MENUITEM用于定義菜單項(xiàng),其形式為:MENUITEM"菜單項(xiàng)名"菜單項(xiàng)標(biāo)識(shí)(ID)[,選項(xiàng)]ID為菜單項(xiàng)標(biāo)識(shí),在WM_COMMAND消息中字參數(shù)wParam中包含選中菜單項(xiàng)的標(biāo)識(shí)。每個(gè)菜單項(xiàng)的標(biāo)識(shí)必須唯一,標(biāo)識(shí)值常在頭文件中定義。如:創(chuàng)建菜單中的水平分隔符:
MENUITEMSEPARATOR14該菜單在資源描述文件中的定義如下:#include<windows.h>#include"Menu.h"∥菜單定義My_menu
MENU
MOVEABLE
{POPUP"文件(&F)"
{
MENUITEM "新建(&N)", IDM_NEW MENUITEM "打開(kāi)(&O)", IDM_OPEN MENUITEM "關(guān)閉(&C)", IDM_CLOSE MENUITEM "保存(&S)", IDM_SAVE MENUITEM "另存為(&A)", IDM_SAVEAS MENUITEM SEPARATOR MENUITEM “退出(&X)”, IDM_EXIT
}}15menu.h文件中定義了菜單項(xiàng)標(biāo)識(shí)所對(duì)應(yīng)的數(shù)值:……#defineIDM_NEW 10#defineIDM_OPEN 11#defineIDM_CLOSE 12#defineIDM_SAVE 13#defineIDM_SAVEAS 14#defineIDM_EXIT 15…165.1.2創(chuàng)建菜單資源實(shí)例
【例5-1】創(chuàng)建一個(gè)窗口菜單的構(gòu)架,單擊“創(chuàng)建統(tǒng)計(jì)計(jì)算菜單項(xiàng)”動(dòng)態(tài)地創(chuàng)建“統(tǒng)計(jì)計(jì)算”菜單,之后,“創(chuàng)建統(tǒng)計(jì)計(jì)算菜單項(xiàng)”變成不可操作,而原先不可操作的“刪除統(tǒng)計(jì)計(jì)算菜單項(xiàng)”變成可操作,執(zhí)行“刪除統(tǒng)計(jì)計(jì)算菜單項(xiàng)”菜單命令刪除“統(tǒng)計(jì)計(jì)算”菜單。17該程序的實(shí)現(xiàn)要注意如下幾個(gè)步驟:(1)在增加菜單時(shí),調(diào)用函數(shù)GetMenu獲取窗口主菜單的句柄。該函數(shù)的原型如下: HMENUGetMenu();(2)應(yīng)用程序按照前述的過(guò)程建立新菜單、加入菜單項(xiàng)并插入到窗口的主菜單的指定位置。在創(chuàng)建新的彈出式菜單后,應(yīng)用程序還通過(guò)調(diào)用函數(shù)EnableMenuItem禁止“創(chuàng)建統(tǒng)計(jì)計(jì)算菜單項(xiàng)”并將其暗淡顯示。調(diào)用函數(shù)DrawMenuBar重新顯示改變后的窗口主菜單。該函數(shù)的原型如下:voidDrawMenuBar()
創(chuàng)建“統(tǒng)計(jì)計(jì)算”菜單項(xiàng)后,可通過(guò)選擇“文件”下拉菜單中的“刪除統(tǒng)計(jì)計(jì)算菜單項(xiàng)”刪除所創(chuàng)建的“統(tǒng)計(jì)計(jì)算”菜單項(xiàng)。此時(shí),應(yīng)用程序調(diào)用函數(shù)DeleteMenu刪除該菜單項(xiàng),并調(diào)用函數(shù)EnableMenuItem恢復(fù)“創(chuàng)建統(tǒng)計(jì)計(jì)算菜單項(xiàng)”的屬性。18(1)首先,創(chuàng)建一個(gè)基于對(duì)話(huà)框的MFC項(xiàng)目,工程文件名為“5-1”(2)然后,打開(kāi)資源視圖,右鍵創(chuàng)建一個(gè)新的MENU資源,并將其命名為IDR_MENU1(3)在對(duì)話(huà)框類(lèi)的頭文件中添加:CMenu*hmenu;HMENUhaddmenu;//定義菜單句柄IDM_ADDMENU//增加菜單項(xiàng)的IDIDM_DELMENU//刪除菜單項(xiàng)的IDIDM_EXIT//退出菜單項(xiàng)的IDIDM_qiuhe
//求和菜單項(xiàng)的IDIDM_fangcha//方差菜單項(xiàng)的IDIDM_pinjunzhi//平均值菜單項(xiàng)的IDIDM_junfanggen//均方根菜單項(xiàng)的ID(3)為各個(gè)菜單項(xiàng)添加單擊事件的響應(yīng)函數(shù),打開(kāi)類(lèi)視圖,右鍵點(diǎn)擊對(duì)話(huà)框類(lèi),打開(kāi)類(lèi)視圖,在“命令”欄中找到菜單項(xiàng)的對(duì)應(yīng)ID(IDM_ADDMENU,IDM_DELMENU,IDM_EXIT),在右側(cè)的“消息”框中選擇“COMMAND”,最后點(diǎn)擊“添加處理程序”voidCMy51Dlg::OnAddmenu(){hmenu=GetMenu(); //獲取主菜單句柄haddmenu=CreateMenu(); //動(dòng)態(tài)創(chuàng)建菜單//在創(chuàng)建的菜單中增加菜單項(xiàng)AppendMenu(haddmenu,MF_ENABLED,IDM_qiuhe,L"求和");AppendMenu(haddmenu,MF_ENABLED,IDM_fangcha,L"方差");AppendMenu(haddmenu,MF_ENABLED,IDM_pinjunzhi,L"平均值");AppendMenu(haddmenu,MF_ENABLED,IDM_junfanggen,L"均方根");//將創(chuàng)建的動(dòng)態(tài)彈出式菜單插入主菜單中hmenu->InsertMenu(2,MF_POPUP|MF_BYPOSITION,(UINT_PTR)haddmenu,L"統(tǒng)計(jì)計(jì)算(&C)");//相應(yīng)改變菜單中有關(guān)繪圖統(tǒng)計(jì)計(jì)算菜單項(xiàng)的屬性hmenu->EnableMenuItem(IDM_ADDMENU,MF_GRAYED); //一旦插入動(dòng)態(tài)菜單后,就不能再插入,所以要變灰,不允許操作。hmenu->EnableMenuItem(IDM_DELMENU,MF_ENABLED);DrawMenuBar(); //重新顯示窗口菜單}21voidCMy51Dlg::OnDelmenu(){hmenu=GetMenu();hmenu->DeleteMenu(2,MF_BYPOSITION);//刪除統(tǒng)計(jì)計(jì)算菜單項(xiàng)//相應(yīng)改變“文件”菜單中有關(guān)統(tǒng)計(jì)計(jì)算菜單項(xiàng)的屬性hmenu->EnableMenuItem(IDM_ADDMENU,MF_ENABLED);hmenu->EnableMenuItem(IDM_DELMENU,MF_GRAYED);DrawMenuBar(); //重新顯示窗口菜單}voidCMy51Dlg::OnExit(){//TODO:在此添加命令處理程序代碼 OnOK();}此時(shí)運(yùn)行一下程序,看看什么效果?22
運(yùn)行程序,發(fā)現(xiàn)界面上并沒(méi)有菜單,還要在主對(duì)話(huà)框中將創(chuàng)建的菜單選擇進(jìn)來(lái),如圖,打開(kāi)主對(duì)話(huà)框的屬性界面,將“菜單”屬性設(shè)置為IDR_MENU1。235.2位圖資源及其應(yīng)用
245.2.1位圖概念
位圖是一種數(shù)字化的圖形表示形式,位圖中的每個(gè)像素點(diǎn)由位圖文件中的一位或多位數(shù)據(jù)表示。整個(gè)位圖的信息被細(xì)化為每個(gè)像素點(diǎn)的屬性值。位圖數(shù)據(jù)量一般較大,為了提高顯示刷新速度,位圖操作須在內(nèi)存中進(jìn)行。
用于位圖操作的系統(tǒng)設(shè)備環(huán)境為內(nèi)存設(shè)備環(huán)境。應(yīng)用程序首先要通過(guò)調(diào)用函數(shù)CreateCompatibleDC向系統(tǒng)申請(qǐng)獲取內(nèi)存設(shè)備環(huán)境,此內(nèi)存設(shè)備環(huán)境與輸出設(shè)備的設(shè)備環(huán)境hdc互相兼容。其形式為:
hdcmem=CreateCompatibleDC(hdc);25
與設(shè)備環(huán)境相似,內(nèi)存設(shè)備環(huán)境也有設(shè)備描述表。應(yīng)用程序獲取內(nèi)存設(shè)備環(huán)境后,調(diào)用函數(shù)SelectObject將位圖文件內(nèi)容選入內(nèi)存設(shè)備環(huán)境之后,即可直接在內(nèi)存設(shè)備環(huán)境中操作位圖,如繪制圖形及編輯等等。需要說(shuō)明的是,當(dāng)直接在內(nèi)存設(shè)備環(huán)境中進(jìn)行繪圖前,需要對(duì)內(nèi)存設(shè)備環(huán)境進(jìn)行初始化,否則不能直接繪圖。對(duì)內(nèi)存設(shè)備環(huán)境初始化一般使用后面所講的BitBlt函數(shù)將客戶(hù)區(qū)復(fù)制到內(nèi)存即可,或使用CreateCompatibleBitmap創(chuàng)建空位圖,將其選入內(nèi)存設(shè)備環(huán)境。等到繪圖結(jié)束后,再使用Bitblt函數(shù)將內(nèi)存設(shè)備環(huán)境復(fù)制到屏幕。這一系列操作就是雙緩沖技術(shù)。操作位圖結(jié)束后,應(yīng)用程序須調(diào)用DeleteDC釋放內(nèi)存設(shè)備環(huán)境,其形式為:
DeleteDC(hdcmem); //hdcmem:內(nèi)存設(shè)備環(huán)境句柄265.2.2位圖的操作過(guò)程
位圖操作過(guò)程:定義位圖句柄:HBITMAPhBm;
加載或創(chuàng)建
hBm=LoadBitmap(hInstance,lpszName)hBm=CreateCompatibleBitmap(hdc,nWidth,nHeight)
選入內(nèi)存設(shè)備環(huán)境
Hdcmem->SelectObject(hBm);;輸出
BOOLBitBlt( HDChdcDest, //目的設(shè)備環(huán)境句柄
intXDest,intYDest,intnWidth,intnHeitght,//位圖基點(diǎn)及高寬
HDChdcSrc,intnXSrc,intnYsrc,//源設(shè)備環(huán)境句柄及位圖基點(diǎn)
DWORDdwRop //標(biāo)識(shí)位圖顯示方式)常用SRCCOPY將源位圖拷貝到目標(biāo)位圖27在輸出位圖之前,需調(diào)用函數(shù)GetObject獲取位圖的尺寸:GetObject(hBitmap, //位圖句柄
sizeof(BITMAP), //BITMAP結(jié)構(gòu)的大小
(LPVOID)&bm //BITMAP結(jié)構(gòu)的地址)調(diào)用函數(shù)GetObject后,將位圖的信息寫(xiě)入BITMAP結(jié)構(gòu)中函數(shù)GetObject函數(shù)的原型為:intGetObject(HANDLEhObject, //對(duì)象句柄intnCount, //拷貝到緩沖區(qū)的字節(jié)數(shù)LPVOIDlpObject //接收信息的緩沖區(qū)地址)28typedefstructtagBITMAP { LONGbmType; //位圖類(lèi)型 LONGbmWidth; //位圖寬度 LONGbmHeight; //位圖高度 LONGbmWidthBytes; //每一光柵行的字節(jié)數(shù) WORDbmPlanes; //位圖中位面的數(shù)目 WORDbmBitsPixel; //位圖中每個(gè)像素的位數(shù) LPVOIDbmBits; //位圖位值的地址}BITMAP; 如果要在輸出時(shí)使圖形的尺寸改變就可以使用輸出函數(shù)StretchBlt輸出位圖,StretchBlt函數(shù)的原型如下:BOOLStretchBlt(HDChdcDest, //目標(biāo)DC的句柄intnXOriginDest,intnYOriginDest,//目標(biāo)設(shè)備的基點(diǎn)坐標(biāo)intnWidthDest,intnHeightDest, //目標(biāo)設(shè)備的尺寸HDChdcSrc, //源DC的句柄intnXOriginSrc,intnYOriginSrc, //源設(shè)備的基點(diǎn)坐標(biāo)
intnWidthSrc,intnHeightSrc, //源設(shè)備的尺寸DWORDdwRop //標(biāo)識(shí)位圖顯示方式);
29StretchBlt比BitBlt多了一個(gè)源設(shè)備的尺寸。源設(shè)備的尺寸是BitBlt中的目標(biāo)設(shè)備的尺寸,而目標(biāo)設(shè)備的尺寸是實(shí)際輸出設(shè)備上想顯示的尺寸。305.2.3位圖操作實(shí)例
【例5-2】在窗口中央加載一幅坦克圖片的位圖,位圖尺寸為窗口面積的四分之一,當(dāng)單擊鼠標(biāo)左鍵或鍵盤(pán)上的向上箭頭時(shí),位圖向上移動(dòng),當(dāng)移動(dòng)到窗口的上邊界時(shí),窗口顯示“不能再向上移動(dòng)了”字樣,當(dāng)單擊鼠標(biāo)右鍵或鍵盤(pán)上的向下箭頭時(shí),位圖向下移動(dòng),當(dāng)?shù)竭_(dá)窗口的下邊界時(shí),顯示“不能再向下移動(dòng)了”字樣。
在創(chuàng)建基于對(duì)話(huà)框的應(yīng)用程序后,導(dǎo)入一張文件名為pic5_2.bmp(可以是任意文件名,文件名不一定要取名pic5_2,但一定是位圖,后綴為.bmp)。具體如下:1:在“資源視圖”中找到本例的資源文件My52.rc,再單擊鼠標(biāo)右鍵,在彈出的菜單中選擇“添加資源”。31然后在“添加資源”對(duì)話(huà)框中選擇bitmap,并單擊“導(dǎo)入”按鈕,在彈出的對(duì)話(huà)框中選擇所要導(dǎo)入的位圖,本例為pic5_2.bmp。這個(gè)時(shí)候,你如果打開(kāi)資源文件,并用文本閱讀器閱讀,發(fā)現(xiàn)系統(tǒng)增加來(lái)如下代碼://////////////////////////////////////////////////////////BitmapIDB_BITMAP1BITMAP"pic5_2.bmp"
/////////////////////////////////////////////////322:添加變量:在.cpp文件中添加如下變量HBITMAPhBm; //定義位圖句柄BITMAPbm; //定義位圖結(jié)構(gòu)變量intiY=20; //位圖左上角初始y坐標(biāo)intiWindowWidth,iWindowHeight; //窗口的寬度和高度LPCWSTRcUpWarn=L"不能再向上移動(dòng)了"; //向上警告字符串LPCWSTRcDownWarn=L"不能再向下移動(dòng)了";//向下警告字符串在對(duì)話(huà)框中顯示圖形,還要?jiǎng)?chuàng)建DC,在5_2Dlg.h中添加如下內(nèi)容:CDC*hDC;33先介紹LoadImage函數(shù),本例要用到。原型如下:HANDLELoadImage(HINSTANCEhinst,//若加載程序外部資源傳NULL,否則一般傳AfxGetInstanceHandle()LPCTSTRlpszName,//圖片名稱(chēng)或全路徑UINTuType,//圖片類(lèi)型:IMAGE_BITMAP或IMAGE_ICON或IMAGE_CURSORintcxDesired,intcyDesired,UINTfuLoad//
一般為L(zhǎng)R_DEFAULTCOLOR|LR_CREATEDIBSECTION);3:因?yàn)橐蟠翱诿娣e為位圖的4倍,所以定義全局變量iWindowWidth,iWindowHeight來(lái)表示窗口的寬度和高度,在OnInitDialog函數(shù)中加入代碼:hBm=(HBITMAP)LoadImage(AfxGetInstanceHandle(),L"pic5_2.bmp",IMAGE_BITMAP,0,0,LR_LOADFROMFILE); //加載位圖GetObject(hBm,sizeof(BITMAP),(LPVOID)&bm); //獲得位圖信息iWindowWidth=2*bm.bmWidth; //得到窗口的寬度iWindowHeight=2*bm.bmHeight; //得到窗口的高度SetWindowPos(NULL,0,0,iWindowWidth,iWindowHeight,SWP_NOZORDER|SWP_NOMOVE);調(diào)用SetWindowPos函數(shù),將函數(shù)中的窗口長(zhǎng)度和窗口寬度信息設(shè)置為iWindowHeight,iWindowWidth即可創(chuàng)建出長(zhǎng)度和寬度都為位圖長(zhǎng)度和寬度2倍的窗口來(lái)。34位圖句柄指向pic5_2.bmpMFC的全局函數(shù),其作用是返回標(biāo)識(shí)當(dāng)前應(yīng)用程序?qū)嵗木浔搮?shù)說(shuō)明是從文件導(dǎo)入位圖兩個(gè)參數(shù)(cxDesired和cyDesired不為0并且fuLoad不指定LR_DEFAULTSIZE,Image會(huì)根據(jù)實(shí)際大小縮放),在本例中取0,代表按實(shí)際尺寸加載,不做任何縮放。按指定大小加載。35
本例中還用到SetWindowPos函數(shù),該函數(shù)的功能是將一個(gè)窗口在三維空間中移動(dòng),利用它可改變窗口的位置,甚至可以在Z軸上改變(Z軸決定了一個(gè)窗口和其它窗口的前后關(guān)系),還可以改變窗口的尺寸,函數(shù)原型如下:BOOLSetWindowPos(HWNDhWndlnsertAfter,
intX,intY,
intcX,intcY,
UNITFlags):其中:Flags:指定窗口尺寸和定位的標(biāo)志。下面列出部分可能的取值:?SWP_NOZORDER:維持當(dāng)前Z序(忽略hWndlnsertAfter參數(shù))。?SWP_NOMOVE:維持當(dāng)前位置(忽略X和Y參數(shù))。?SWP_HIDEWINDOW:隱藏窗口。?SWP_NOSIZE:維持當(dāng)前尺寸(忽略cx和Cy參數(shù))。?SWP_SHOWWINDOW:顯示窗口。對(duì)于對(duì)話(huà)框程序,通常只用設(shè)置為:SWP_NOZORDER|SWP_NOMOVE,即保持左上角坐標(biāo)不變,且保持Z軸順序不變。此句柄用于控制對(duì)話(huà)框在Z軸上的顯示順序,參數(shù)見(jiàn)教材。相對(duì)以客戶(hù)坐標(biāo)指定窗口新位置的左邊界、上邊界調(diào)整后新窗口的寬度和高度364:定義全局變量iY記錄位圖左上角在窗口中的縱坐標(biāo)。當(dāng)我們單擊鼠標(biāo)左鍵時(shí),系統(tǒng)發(fā)送WM_LBUTTONDOWN消息,在此消息處理程序中加入代碼:voidCMy52Dlg::OnLButtonDown(UINTnFlags,CPointpoint){ iY=iY-10; //位圖高度-10 Invalidate(); //刷新用戶(hù)區(qū) CDialogEx::OnLButtonDown(nFlags,point);}5:添加單擊鼠標(biāo)右鍵的消息響應(yīng)代碼類(lèi)似如下:voidCMy52Dlg::OnRButtonDown(UINTnFlags,CPointpoint){ iY=iY+10; //位圖高度+10 Invalidate(); //刷新用戶(hù)區(qū) CDialogEx::OnRButtonDown(nFlags,point);}376:在處理鍵盤(pán)消息WM_KEYDOWN時(shí),加入如下代碼:voidCMy52Dlg::OnKeyDown(UINTnChar,UINTnRepCnt,UINTnFlags){switch(nChar){caseVK_UP: //按上箭頭時(shí),位置-10 iY=iY-10; break;
caseVK_DOWN: //按下箭頭時(shí),位置+10 iY=iY+10; break;
}Invalidate(); //刷新用戶(hù)區(qū)CDialogEx::OnKeyDown(nChar,nRepCnt,nFlags);}
當(dāng)nChar=VK_UP時(shí),將iY減10;當(dāng)nChar==VK_DOWN時(shí),將iY加10;同時(shí)還要調(diào)用Invalidate()發(fā)送消息重繪用戶(hù)區(qū)。387:在OnPaint函數(shù)中,加入下列代碼:voidCMy52Dlg::OnPaint(){CDChdcmem; //定義內(nèi)存句柄CPaintDCdc(this); //用于繪制的設(shè)備上下文hDC=GetDC(); //得到設(shè)備環(huán)境指針hdcmem.CreateCompatibleDC(hDC); //得到內(nèi)存指針if(iY>0&&iY<iWindowHeight/2)//當(dāng)位圖完整的在窗口中時(shí){hdcmem.SelectObject(hBm); //選入內(nèi)存句柄
hDC->BitBlt(60,iY,bm.bmWidth,bm.bmHeight,&hdcmem,0,0,SRCCOPY);
}elseif(iY<=0) //當(dāng)位圖的上邊界超出了窗口時(shí)
hDC->TextOut(0,0,cUpWarn,(int)wcslen(cUpWarn));//輸出警告
else //當(dāng)位圖的下邊界超出了窗口時(shí)hDC->TextOut(0,0,cDownWarn,(int)wcslen(cDownWarn));
ReleaseDC(hDC); //輸出環(huán)境句柄hdcmem.DeleteDC();}398:此外還有處理字符消息的虛函數(shù)如下:BOOLCMy52Dlg::PreTranslateMessage(MSG*pMsg){//TODO:在此添加專(zhuān)用代碼和/或調(diào)用基類(lèi)SendMessage(pMsg->message,pMsg->wParam,pMsg->lParam);returnCDialogEx::PreTranslateMessage(pMsg);}405.3對(duì)話(huà)框資源及其應(yīng)用
對(duì)話(huà)框是一個(gè)彈出式窗口,它一般用于用戶(hù)輸入或與用戶(hù)進(jìn)行交互活動(dòng)的場(chǎng)合對(duì)話(huà)框模式非模式允許用戶(hù)在該對(duì)話(huà)框與應(yīng)用程序其他窗口之間的切換,非模式對(duì)話(huà)框從WinMain函數(shù)的消息循環(huán)中接收輸入不允許用戶(hù)在關(guān)閉對(duì)話(huà)框之前切換到應(yīng)用程序的其他窗口415.3.1模式對(duì)話(huà)框的編程方法
【例5-3】模態(tài)對(duì)話(huà)框例子。本例子中有一個(gè)“文件”菜單和“幫助”菜單,其中“文件菜單”下有“打開(kāi)”、“保存”和“退出”菜單項(xiàng),“幫助”菜單下有一個(gè)“關(guān)于”菜單項(xiàng),其中,“關(guān)于”菜單項(xiàng)打開(kāi)的對(duì)話(huà)框是一個(gè)模態(tài)對(duì)話(huà)框,當(dāng)中有一個(gè)“確定”按鈕?!按蜷_(kāi)”和“保存”對(duì)話(huà)框的響應(yīng)均是簡(jiǎn)單的顯示一個(gè)消息對(duì)話(huà)框,說(shuō)明文件已經(jīng)打開(kāi)或文件已經(jīng)保存等消息。42dwType常用標(biāo)識(shí)及其說(shuō)明MB_CANCELTRYCONTINUE
含有Cancel、TryAgain和Continue按鈕的消息框MB_ICONEXCLAMATION,MB_ICONWARNING
含有驚嘆號(hào)圖標(biāo)的消息框MB_ICONQUESTION 含有問(wèn)號(hào)圖標(biāo)的消息框MB_ICONSTOP,MB_ICONERROR,MB_ICONHAND
含有停止圖標(biāo)的消息框MB_OK 含有一個(gè)OK按鈕的消息框MB_OKCANCEL 含有OK和CANCEL按鈕的消息框MB_RETRYCANCEL含有RETRY和CANCEL按鈕的消息框MB_YESNO 含有YES和NO按鈕的消息框MB_YESNOCANCEL含YES、NO和CANCEL按鈕的消息框43(1)創(chuàng)建基于MFC的對(duì)話(huà)框應(yīng)用程序5_3(2)由于應(yīng)用程序中用到菜單,我們需要?jiǎng)?chuàng)建菜單資源(本例介紹的菜單是在對(duì)話(huà)框中加載菜單資源,后續(xù)章節(jié)內(nèi)容將介紹在文檔中加載菜單資源)。打開(kāi)“資源視圖”,創(chuàng)建菜單資源,此時(shí)系統(tǒng)缺省的創(chuàng)建了一個(gè)菜單資源,并缺省的命名ID為IDR_MENU1,如下圖所示。然后對(duì)其進(jìn)行菜單項(xiàng)創(chuàng)建。為“打開(kāi)”、“保存”、“退出”和“關(guān)于”菜單項(xiàng)設(shè)置ID分別為:IDM_OPENIDM_SAVEIDM_EXITIDM_ABOUT44(3)由于“幫助”菜單中的菜單下跟“關(guān)于”需要打開(kāi)一個(gè)“關(guān)于”的對(duì)話(huà)框,我們創(chuàng)建一個(gè)名字為ABOUT的對(duì)話(huà)框資源。
打開(kāi)資源視圖,右鍵點(diǎn)擊空白區(qū)域,選擇“添加資源”,選中“Dialog”并點(diǎn)擊新建,創(chuàng)建一個(gè)新的對(duì)話(huà)框。對(duì)話(huà)框的ID名稱(chēng)設(shè)置為ABOUT。在資源視圖中找到這個(gè)對(duì)話(huà)框的ID,然后單擊鼠標(biāo)右鍵,在彈出的下拉菜單中找到“屬性”項(xiàng),然后修改其ID值為ABOUT)。45(4)編輯ABOUT對(duì)話(huà)框界面如下:對(duì)于上圖,點(diǎn)擊“視圖—工具箱”,可以進(jìn)行控件的手動(dòng)拖放。選擇工具箱中的“靜態(tài)文本(statictext)”,在靜態(tài)文本控件上單擊鼠標(biāo)右鍵,在彈出的菜單中選擇“屬性”菜單項(xiàng),在“描述文字”項(xiàng)中輸入“Windows模態(tài)對(duì)話(huà)框”,那么在對(duì)話(huà)框上就出現(xiàn)了“Windows模態(tài)對(duì)話(huà)框”的內(nèi)容。同樣方法在工具箱中選取按鈕(BUTTON)控件,“描述文字”為“確定”,其中“確定”按鈕的ID設(shè)置為“IDOK”。46(5)對(duì)新建的ABOUT對(duì)話(huà)框創(chuàng)建對(duì)應(yīng)的對(duì)話(huà)框類(lèi),右鍵點(diǎn)擊對(duì)話(huà)框,點(diǎn)擊“添加類(lèi)”,如圖所示。將類(lèi)名定義為MYABOUT,點(diǎn)擊確定,即生成該類(lèi)對(duì)應(yīng)的頭文件和cpp文件,如下圖:47這個(gè)時(shí)候,會(huì)看到增加了一個(gè)頭文件MYABOUT.h,這就是添加MYABOUT類(lèi)后生成的類(lèi)定義文件。Tip:可能有部分同學(xué)此時(shí)如果打開(kāi)MYABOUT類(lèi)的頭文件MYABOUT.h,會(huì)出現(xiàn)一些紅色波浪號(hào)的錯(cuò)誤提示,這個(gè)不是代碼的錯(cuò)誤,是設(shè)置的問(wèn)題??梢园慈缦路椒ń鉀Q:“工具”-“選項(xiàng)”-“文本編輯器”-“C/C++”-“高級(jí)”-“禁用自動(dòng)更新”-“True”按上面方法修改設(shè)計(jì)即可。48(6)接下來(lái)為該對(duì)話(huà)框的“確定”按鈕設(shè)置響應(yīng)程序。右鍵單擊“確定”按鈕,在彈出的菜單中選擇“添加事件處理程序”,如左圖選擇消息類(lèi)型為“BN_CLICKED”,點(diǎn)擊確定,即自動(dòng)生成單擊按鈕的事件處理函數(shù),如右圖在函數(shù)中添加如下代碼,表示點(diǎn)擊確定按鈕后關(guān)閉窗口voidMYABOUT::OnBnClickedOk(){ EndDialog(0); CDialogEx::OnOK();}49接著我們需要把菜單資源跟父對(duì)話(huà)框資源鏈接起來(lái),使得程序一運(yùn)行,能看到菜單并進(jìn)行操作。具體如下:找到父對(duì)話(huà)框,編輯其屬性項(xiàng)中的菜單選項(xiàng)為我們創(chuàng)建的菜單資源IDR_MENU1即可。50
然后為上述四個(gè)菜單項(xiàng)響應(yīng)單擊事件處理程序,即完成本例所要求的功能。具體操作如下。打開(kāi)類(lèi)視圖,右鍵點(diǎn)擊CMy53Dlg對(duì)話(huà)框類(lèi),打開(kāi)類(lèi)向?qū)?,在“命令”欄中找到菜單?xiàng)的對(duì)應(yīng)ID(IDM_OPEN、IDM_SAVE、IDM_EXIT和IDM_ABOUT),在右側(cè)的“消息”框中選擇“COMMAND”,最后點(diǎn)擊“添加處理程序”,所生成如下消息處理函數(shù)如下: afx_msgvoidOnOpen(); afx_msgvoidOnSave(); afx_msgvoidOnExit(); afx_msgvoidOnAbout();voidCMy53Dlg::OnPaint(){ CPaintDCdc(this); } //用于繪制的設(shè)備上下文voidCMy53Dlg::OnOpen(){MessageBox(L"文件已經(jīng)打開(kāi)!",L"文件打開(kāi)",MB_OK);}voidCMy53Dlg::OnSave(){MessageBox(L"文件保存成功!",L"文件保存",MB_OK);}voidCMy53Dlg::OnExit(){SendMessage(WM_DESTROY,0,0);}voidCMy53Dlg::OnAbout(){MYABOUTdiag; //定義一個(gè)MYABOUT類(lèi)的對(duì)象diagdiag.DoModal(); //執(zhí)行ABOUT對(duì)話(huà)框上的“確定”按鈕,關(guān)閉對(duì)話(huà)框}
由于這里引用了類(lèi)MYABOUT,因此,在CMy53Dlg.cpp里頭需要添加如下頭文件:#include"MYABOUT.h"使用模式對(duì)話(huà)框時(shí)需要注意一些問(wèn)題,不要在一些反復(fù)出現(xiàn)的事件處理過(guò)程中生成有模式對(duì)話(huà)框,比如說(shuō)在定時(shí)器中產(chǎn)生有模式對(duì)話(huà)框,因?yàn)樵谏弦粋€(gè)對(duì)話(huà)框還未退出時(shí),定時(shí)器消息又會(huì)引起下一個(gè)對(duì)話(huà)框的彈出。52535.3.2非模態(tài)對(duì)話(huà)框的編程方法
54非模態(tài)對(duì)話(huà)框應(yīng)用實(shí)例
【例5-4】本例中,選擇“模態(tài)對(duì)話(huà)框”菜單項(xiàng),應(yīng)用程序?qū)?chuàng)建并顯示“顯示模態(tài)對(duì)話(huà)框”,在對(duì)話(huà)框中可以在編輯框中輸入文字,點(diǎn)擊“確定”,就可以在主窗口中顯示輸入的信息。如果點(diǎn)擊“取消”按鈕,則清除編輯框中輸入的內(nèi)容,在模態(tài)對(duì)話(huà)框操作過(guò)程中,不能進(jìn)行模態(tài)對(duì)話(huà)框以外區(qū)域的操作。若選擇“顯示非模態(tài)對(duì)話(huà)框”,可在對(duì)話(huà)框以外的區(qū)域進(jìn)行操作。55(1)創(chuàng)建基于對(duì)話(huà)框的mfc工程,工程名為“5-4”。(2)然后在資源視圖中創(chuàng)建一個(gè)菜單資源,其ID采用缺省值IDR_MENU1,菜單資源編輯結(jié)果如下:然后添加一個(gè)對(duì)話(huà)框資源,將其命名為IDD_DIALOG1,并進(jìn)行如下編輯,從工具箱中選取StaticText控件和EditControl控件拉到對(duì)話(huà)框中,并設(shè)置其屬性對(duì)應(yīng)地為該對(duì)話(huà)框創(chuàng)建對(duì)話(huà)框類(lèi),類(lèi)命名為Dialog1。56系統(tǒng)為該對(duì)話(huà)框資源生成了如下代碼,讀者可以分析該代碼結(jié)構(gòu):IDD_DIALOG1DIALOGEX0,0,311,177STYLEDS_SETFONT|DS_MODALFRAME|DS_FIXEDSYS|WS_POPUP|WS_CAPTION|WS_SYSMENUCAPTION"Dialog"FONT8,"MSShellDlg",400,0,0x1BEGINDEFPUSHBUTTON"確定",IDOK,86,111,50,14PUSHBUTTON"取消",IDCANCEL,162,111,50,14CTEXT"Windows對(duì)話(huà)框",IDC_STATIC,77,27,141,19LTEXT"請(qǐng)輸入要顯示的內(nèi)容:",IDC_STATIC,83,53,130,16EDITTEXTIDC_EDIT1,84,73,132,21,ES_AUTOHSCROLLEND
57(3)為菜單項(xiàng)和對(duì)話(huà)框中的編輯框添加如下ID:IDC_EDIT1 //對(duì)話(huà)框中的編輯框IDM_OPEN //打開(kāi)菜單項(xiàng)IDM_SAVE //保存菜單項(xiàng)IDM_EXIT //退出菜單項(xiàng)IDM_MODAL //模態(tài)對(duì)話(huà)框菜單項(xiàng)IDM_MODALLESS //非模態(tài)對(duì)話(huà)框菜單項(xiàng)本例resource.h頭文件中系統(tǒng)自動(dòng)添加了如下代碼(不同系統(tǒng)宏定義的整型數(shù)可能不同):#defineIDR_MENU1 129#defineIDD_DIALOG1 131#defineIDC_EDIT1 1000#defineIDM_OPEN 32776#defineIDM_SAVE 32777#defineIDM_EXIT 32778#defineIDM_MODAL 32779#defineIDM_MODALLESS 32780用戶(hù)所定義的任何一個(gè)ID,系統(tǒng)都通過(guò)宏定義給映射了一個(gè)正型數(shù),當(dāng)然這些正型數(shù)是不能重復(fù)的,也就是說(shuō)不允許有任何兩個(gè)ID擁有相同的映射值(4)在5_4Dlg.h對(duì)話(huà)框類(lèi)的頭文件中添加如下代碼: CDC*hDC;(5)為菜單項(xiàng)創(chuàng)建消息響應(yīng)函數(shù),這個(gè)創(chuàng)建過(guò)程要通過(guò)選擇對(duì)話(huà)框類(lèi),然后單擊鼠標(biāo)右鍵,在彈出的菜單中選擇“類(lèi)向?qū)А?,然后在“?lèi)向?qū)А睂?duì)話(huà)框中選擇“命令”選項(xiàng)卡,在“對(duì)象”框中選擇我們所增加的菜單項(xiàng)的ID,進(jìn)行消息響應(yīng)函數(shù)的添加
此時(shí)在對(duì)話(huà)框類(lèi)CMy54Dlg的頭文件5_4Dlg.h的定義中系統(tǒng)增加了如下代碼:public:afx_msgvoidOnOpen();afx_msgvoidOnSave();afx_msgvoidOnExit();afx_msgvoidOnModal();afx_msgvoidOnModalless();然后我們需要為這幾個(gè)函數(shù)編寫(xiě)函數(shù)體的代碼。59
要注意的是,我們現(xiàn)在創(chuàng)建的是菜單資源中菜單項(xiàng)的消息響應(yīng),這個(gè)菜單要安放在主對(duì)話(huà)框上,因此,要把這個(gè)菜單資源綁定到主對(duì)話(huà)框中,其處理方法就是找到主對(duì)話(huà)框,單擊鼠標(biāo)右鍵,在彈出的快捷菜單中找到“屬性”項(xiàng),然后設(shè)置菜單為我們所創(chuàng)建的菜單資源,本例為IDR_MENU1。這個(gè)時(shí)候我們需要定義一個(gè)指向子對(duì)話(huà)框的指針,因?yàn)橹鲗?duì)話(huà)框的菜單項(xiàng)的相關(guān)操作要調(diào)出子對(duì)話(huà)框Dialog1,于是在5_4Dlg.cpp中定義一個(gè)指向子對(duì)話(huà)框的指針如下:
Dialog1*diag;//子對(duì)話(huà)框指針由于這里引用來(lái)類(lèi)Dialog1,因此需要對(duì)話(huà)框定義一個(gè)類(lèi)Dialog1#include"Dialog1.h"60所添加的上述五個(gè)函數(shù)分別如下:voidCMy54Dlg::OnOpen(){MessageBox(L"文件已經(jīng)打開(kāi)!",L"文件打開(kāi)",MB_OK);}voidCMy54Dlg::OnSave(){MessageBox(L"文件保存成功!",L"文件保存",MB_OK);}voidCMy54Dlg::OnExit(){SendMessage(WM_DESTROY,0,0);}這里用到了SendMessage函數(shù),在MFC中,該函數(shù)原型如下:SendMessage(UINTMsg,WPARAMwParam,LPARAMIParam);參數(shù)Msg是指定被發(fā)送的消息,前綴是“WM_”,下面是幾個(gè)常用的消息:WM_DESTROY:銷(xiāo)毀窗口WM_MOVE:移動(dòng)窗口WM_SIZE:改變窗口的大小WM_ACTIVATE:窗口被激活或失去激活狀態(tài)WM_SETFOCUS:窗口獲得焦點(diǎn)WM_KILLFOCUS:窗口失去焦點(diǎn)WM_ENABLE:窗口改變成Enable狀態(tài)WM_SETTEXT:應(yīng)用程序發(fā)送此消息來(lái)設(shè)置窗口的文本W(wǎng)M_CLOSE:關(guān)閉窗口或應(yīng)用程序WM_QUIT:結(jié)束程序運(yùn)行
參數(shù)wParam和IParam不用的時(shí)候可以賦0。61voidCMy54Dlg::OnModal(){ //TODO:在此添加命令處理程序代碼diag=newDialog1(this,false);//this參數(shù)表示將父窗口指針傳遞給子窗口,false表示該窗口為模態(tài)diag->DoModal();}
voidCMy54Dlg::OnModalless() //創(chuàng)建非模態(tài)對(duì)話(huà)框{ //TODO:在此添加命令處理程序代碼 diag=newDialog1(this,true); diag->Create(IDD_DIALOG1,this); //創(chuàng)建非模太對(duì)話(huà)框IDD_DIALOG1 diag->ShowWindow(SW_SHOWNORMAL);}62(6)內(nèi)容刷新由于在子對(duì)話(huà)框中有一個(gè)編輯框輸入的內(nèi)容需要顯示出來(lái),這里就需要進(jìn)行刷新操作,刷新函數(shù)代碼如下:voidCMy54Dlg::OnPaint(){CPaintDCdc(this); //用于繪制的設(shè)備上下文hDC=GetDC(); //獲取DCif(diag!=NULL) hDC->TextOut(0,0,diag->str,(i
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 醫(yī)院招聘放射專(zhuān)業(yè)試題及答案
- 怒江傈僳族自治州貢山獨(dú)龍族怒族自治縣輔警公共基礎(chǔ)知識(shí)題庫(kù)(附答案)
- 宿遷市宿豫區(qū)輔警招聘警務(wù)輔助人員考試題庫(kù)真題試卷公安基礎(chǔ)知識(shí)及答案
- 數(shù)控編程四級(jí)試題及答案
- 規(guī)培護(hù)士院感防控培訓(xùn)考試題及答案
- 醫(yī)院檢驗(yàn)科試題含答案
- 事業(yè)單位公共基礎(chǔ)知識(shí)簡(jiǎn)答題及答案
- 基金專(zhuān)場(chǎng)考試題庫(kù)及答案
- 美團(tuán)考試題庫(kù)及答案
- 防火安全測(cè)試題及答案
- 財(cái)政評(píng)審應(yīng)急預(yù)案
- 超市食品安全培訓(xùn)記錄課件
- 胰島細(xì)胞瘤課件
- 生鮮采購(gòu)員知識(shí)培訓(xùn)內(nèi)容課件
- 【語(yǔ)文】湖北省武漢市光谷第二小學(xué)小學(xué)一年級(jí)上冊(cè)期末試題
- 工程延期意向申請(qǐng)書(shū)
- 員工錄用通知書(shū)(offer)模板
- 折彎?rùn)C(jī)操作工作業(yè)指導(dǎo)書(shū)
- 2025空乘專(zhuān)業(yè)單招面試常見(jiàn)問(wèn)題及答案
- 第13課 美麗中國(guó)我的家(教學(xué)課件)小學(xué)二年級(jí)上冊(cè) 統(tǒng)編版《道德與法治》新教材
- 2025年江西中級(jí)檔案職稱(chēng)考試檔案工作實(shí)務(wù)+檔案事業(yè)概論綜合練習(xí)題及答案
評(píng)論
0/150
提交評(píng)論