[MFC] _ windows應(yīng)用程序(win32)簡(jiǎn)單了解和使用

在前面,我們都是通過(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;
}
圖片.png

2019.12.20
14:42

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末侣颂,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子枪孩,更是在濱河造成了極大的恐慌憔晒,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,372評(píng)論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件蔑舞,死亡現(xiàn)場(chǎng)離奇詭異拒担,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)攻询,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,368評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門从撼,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人蜕窿,你說(shuō)我怎么就攤上這事谋逻〈裟伲” “怎么了桐经?”我有些...
    開封第一講書人閱讀 162,415評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)浙滤。 經(jīng)常有香客問(wèn)我阴挣,道長(zhǎng),這世上最難降的妖魔是什么纺腊? 我笑而不...
    開封第一講書人閱讀 58,157評(píng)論 1 292
  • 正文 為了忘掉前任畔咧,我火速辦了婚禮茎芭,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘誓沸。我一直安慰自己梅桩,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,171評(píng)論 6 388
  • 文/花漫 我一把揭開白布拜隧。 她就那樣靜靜地躺著宿百,像睡著了一般。 火紅的嫁衣襯著肌膚如雪洪添。 梳的紋絲不亂的頭發(fā)上垦页,一...
    開封第一講書人閱讀 51,125評(píng)論 1 297
  • 那天,我揣著相機(jī)與錄音干奢,去河邊找鬼痊焊。 笑死,一個(gè)胖子當(dāng)著我的面吹牛忿峻,可吹牛的內(nèi)容都是我干的薄啥。 我是一名探鬼主播,決...
    沈念sama閱讀 40,028評(píng)論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼逛尚,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼罪佳!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起黑低,我...
    開封第一講書人閱讀 38,887評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤赘艳,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后克握,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體蕾管,經(jīng)...
    沈念sama閱讀 45,310評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,533評(píng)論 2 332
  • 正文 我和宋清朗相戀三年菩暗,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了掰曾。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,690評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡停团,死狀恐怖旷坦,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情佑稠,我是刑警寧澤秒梅,帶...
    沈念sama閱讀 35,411評(píng)論 5 343
  • 正文 年R本政府宣布,位于F島的核電站舌胶,受9級(jí)特大地震影響捆蜀,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,004評(píng)論 3 325
  • 文/蒙蒙 一辆它、第九天 我趴在偏房一處隱蔽的房頂上張望誊薄。 院中可真熱鬧,春花似錦锰茉、人聲如沸呢蔫。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)咐刨。三九已至,卻和暖如春扬霜,著一層夾襖步出監(jiān)牢的瞬間定鸟,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,812評(píng)論 1 268
  • 我被黑心中介騙來(lái)泰國(guó)打工著瓶, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留联予,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,693評(píng)論 2 368
  • 正文 我出身青樓材原,卻偏偏與公主長(zhǎng)得像沸久,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子余蟹,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,577評(píng)論 2 353

推薦閱讀更多精彩內(nèi)容