在前面,我們都是通過(guò)控制臺(tái)程序來(lái)學(xué)習(xí)c++語(yǔ)言的,那么我們知道,windows之所以強(qiáng)大,是應(yīng)為它是一個(gè)圖形化的支持多任務(wù)處理的一個(gè)系統(tǒng),所以windows應(yīng)用程序更控制臺(tái)程序最大的區(qū)別就是它是多任務(wù)的,可以同時(shí)運(yùn)行多個(gè),進(jìn)行多任務(wù)的處理,而控制臺(tái)程序是單任務(wù)的,只能按程序設(shè)計(jì)流程單步進(jìn)行.
MFC(Microsoft Foundation Class)微軟 基礎(chǔ) 類庫(kù)
API(Application Programming Interface) 應(yīng)用程序,編程 接口.
是由操作系統(tǒng)提供,面向操作系統(tǒng)開發(fā)的接口.只限于本操作系統(tǒng)使用.c/c++庫(kù)函數(shù),不分任何操作系統(tǒng).只要是使用c/c++編譯器即可.DOS: 同一時(shí)間只能運(yùn)行一個(gè)執(zhí)行程序.
Windows: 是一種基于圖形化界面的多任務(wù)操作系統(tǒng),它使用圖形界面操作代替了早期的以命令為基礎(chǔ)的文本輸入型操作系統(tǒng).
WinMain是windows程序的主函數(shù)泵三,該函數(shù)的功能是被系統(tǒng)調(diào)用耕捞,作為一個(gè)32位應(yīng)用程序的入口點(diǎn)。WinMain函數(shù)應(yīng)初始化應(yīng)用程序烫幕,顯示主窗口俺抽,進(jìn)入一個(gè)消息接收一發(fā)送循環(huán),這個(gè)循環(huán)是應(yīng)用程序執(zhí)行的其余部分的頂級(jí)控制結(jié)構(gòu)较曼。
windows程序一般主要都是基于windows系統(tǒng) 的API函數(shù)來(lái)開發(fā)的,只限于本操作系統(tǒng)使用.每個(gè)windows api都來(lái)自一個(gè)windows系統(tǒng)(內(nèi)核,是系統(tǒng)自帶的)的DLL動(dòng)態(tài)庫(kù)(可以在本地對(duì)應(yīng)的位置找到的).
控制臺(tái)程序一般都是調(diào)用的c/c++類庫(kù)的函數(shù)(各個(gè)操作系統(tǒng)都通用).
- MessageBox function 函數(shù)
Displays(顯示) a modal(模式的) dialog(對(duì)話) box that contains a system icon, a set of buttons, and a brief application-specific message, such as status or error information. The message box returns an integer value that indicates which button the user clicked.
顯示一個(gè)模式對(duì)話框磷斧,該對(duì)話框包含系統(tǒng)圖標(biāo),一組按鈕以及指定的應(yīng)用程序的簡(jiǎn)短消息捷犹,例如狀態(tài)或錯(cuò)誤信息弛饭。 該消息框返回一個(gè)整數(shù)值,該整數(shù)值指示用戶單擊了哪個(gè)按鈕萍歉。
dialog box: 對(duì)話框,一定是有對(duì)話的,點(diǎn)擊了什么,顯示什么,消息的接收和處理.
參數(shù):
int WINAPI MessageBox(
_In_opt_ HWND hWnd,
_In_opt_ LPCTSTR lpText,
_In_opt_ LPCTSTR lpCaption,
_In_ UINT uType
);
hWnd [in, optional] //optional (可選的,自選的)
Type: HWND(類型:HWND)
//A handle(句柄) to the owner(所有者) window of the message box to be created. If this parameter(參數(shù)) is NULL, the message box has no owner window.
//一個(gè)關(guān)于消息框創(chuàng)建彈出時(shí)父類窗口的句柄(指向消息框創(chuàng)建時(shí)彈出的位置).
lpText [in, optional] // 一個(gè)字符串
Type: LPCTSTR
//The message to be displayed(顯示). If the string consists(組成) of more than one line, you can separate(分離,隔開) the lines using a carriage(運(yùn)輸運(yùn)送) return and/or linefeed(換行) character between(之間) each line.
//carriage return 回車.
//這條消息將會(huì)顯示,如果這個(gè)字符串包括多行組成,你可以在每行之間使用回車或換行符換行.
lpCaption(標(biāo)題,字幕) [in, optional]
Type: LPCTSTR
// The dialog box title. If this parameter is NULL, the default(默認(rèn)) title is Error.
// 對(duì)話框的標(biāo)題,如果參數(shù)為空,則默認(rèn)標(biāo)題為Error
uType [in]
Type: UINT
//The contents(內(nèi)容) and behavior(行為) of the dialog box. This parameter(參數(shù)) can be a combination(組合) of flags(標(biāo)志) from the following(以下) groups(組) of flags.
// 類型,指定消息框的類型(有很多).可以是一個(gè)組合來(lái)自以下標(biāo)志組的標(biāo)志類型.
//To indicate(標(biāo)明,指示) the buttons displayed in the message box, specify(指定,指明) one of the following values.
//要指示這個(gè)消息框的按鈕,可以指定下面的值之一.
- examples
int DisplayResourceNAMessageBox()
{
int msgboxID = MessageBox(
NULL,
(LPCWSTR)L"Resource not available\nDo you want to try again?",
(LPCWSTR)L"Account Details",
MB_ICONWARNING | MB_CANCELTRYCONTINUE | MB_DEFBUTTON2
);
switch (msgboxID)
{
case IDCANCEL:
// TODO: add code
break;
case IDTRYAGAIN:
// TODO: add code
break;
case IDCONTINUE:
// TODO: add code
break;
}
return msgboxID;
}
我們?cè)趧?chuàng)建的win32空項(xiàng)目中新建一個(gè)源cpp文件,引入windows.h頭文件,聲明主函數(shù),調(diào)用MessageBox函數(shù)顯示一個(gè)對(duì)話框,即算是創(chuàng)建了一個(gè)簡(jiǎn)單的windows應(yīng)用程序了.
# include<Windows.h>
int WINAPI WinMain(HINSTANCE hinstance,HINSTANCE hprev,LPSTR lpCmd,int nCmdShow) {
// 這里涉及到字符集的問(wèn)題,在vs2005之后就引入了unicode字符集,
// 在使用unicode的時(shí)候,需要注意字符類型的轉(zhuǎn)換.使用多字節(jié)就不需要轉(zhuǎn)換,還是可以正常使用
// MessageBox(NULL,(LPWSTR)L"this is a message",(LPWSTR)L"message box caption",0);
// 當(dāng)Hwnd parameter 為NULL時(shí),相當(dāng)于將自己作為父窗口.
MessageBox(NULL,"this is a message box", "message box caption", 0);
return 0;
}
2019.12.20
14:42