初步瞭解C語言Windows程式設計
上次我們說了什麼是windows程式設計?瞭解到WindowsAPI程式設計、Windows程式設計、WindowsSDK程式設計是一個概念。
今天我們運用C語言來實現你的第一個真正的Windows程式。
windows.h標頭檔案介紹:
編寫Windows程式,首先要包含windows.h標頭檔案。windows.h還包含了其他一些Windows標頭檔案,例如:
windef.h:基本型別定義
winbase.h:核心函式
wingdi.h:使用者介面函式
winuser.h:圖形裝置介面函式
這些標頭檔案定義了Windows的所有資料型別、函式原型、資料結構和符號常量,也就是說,所有的WindowsAPI都在這些標頭檔案中宣告。在C語言中,程式都是“黑屏”的,稱為控制檯程式(ConsoleApplication)。這套教程要講的是帶介面的Windows程式(WindowsApplication),也稱為GUI程式(GUIApplication)。控制檯程式以main()為入口函式,Windows程式以WinMain()為入口函式,動態連結庫(DLL)以DllMain()為入口函式,不同的入口函式決定了不同型別的程式。
WinMain()函式的原型為:
intWINAPIWinMain(
HINSTANCEhInstance,//當前視窗控制程式碼
HINSTANCEhPrevInstance,//前一個視窗控制程式碼,Win32下為NULL(Win16留下的廢物,目前已棄用)
LPSTRlpCmdLine,//命令列引數
intnCmdShow//視窗顯示方式
);
先不要急於理解這些引數的含義,我先給大家寫一個簡單的不帶黑屏的、真正的Windows程式:
#include<windows.h>
intWINAPIWinMain(
HINSTANCEhInstance,
HINSTANCEhPrevInstance,
LPSTRlpCmdLine,
intnCmdShow
){
//呼叫API函式MessageBox
intnSelect=MessageBox(NULL,TEXT("你好,這是源世界介紹windows程式設計的例子"),TEXT("源世界出品,禁止轉載!"),MB_OKCANCEL);
if(nSelect==IDOK){
MessageBox(NULL,TEXT("你點選了“確定”按鈕"),TEXT("提示"),MB_OK);
}else{
MessageBox(NULL,TEXT("你點選了“取消”按鈕"),TEXT("提示"),MB_OK);
}
return0;
}
執行結果:
點選“確定”或“取消”按鈕,又會彈出一個新的提示框。大家可以親自執行一下,會有真實的體驗。
原來沒有main()函式,沒有#include<stdio.h>的C語言程式也是可以執行的!
MessageBox()函式是眾多API中的一個,用於彈出一個指定風格的對話方塊,其原型為:
intWINAPIMessageBox(HWNDhWnd,LPCTSTRlpText,LPCTSTRlpCaption,UINTuType);
WINAPI為宏定義
#defineWINAPI__stdcall,表示函式呼叫方式,暫時可以不理會,不影響程式碼編寫, 只需要知道MessageBox()返回值為int,表示按下的按鈕。
引數說明:
hWnd:該訊息框的父視窗控制程式碼,如果此引數為NULL,則該訊息框沒有擁有父視窗。大家不用急於理解這個引數,後續會詳細講解。
lpText:訊息框的內容。LPCTSTR是自定義資料型別,等價於constchar*。
lpCaption:訊息框的標題。
uType:對話方塊的按鈕樣式和圖示。
.這些按鈕都是宏定義:
#defineMB_OK0x00000000L
#defineMB_OKCANCEL0x00000001L
#defineMB_ABORTRETRYIGNORE0x00000002L
#defineMB_YESNOCANCEL0x00000003L
#defineMB_YESNO0x00000004L
#defineMB_RETRYCANCEL0x00000005L
你也可以嘗試用數字來表示按鈕,例如:
MessageBox(NULL,TEXT("你好,歡迎源世界您!"),TEXT("源世界出品!"),1);
也會生成與上面相同的對話方塊。
除了按鈕,uType還支援圖示(圖示對使用者有提醒作用):
這些圖示也都是宏定義:
#defineMB_ICONHAND0x00000010L
#defineMB_ICONQUESTION0x00000020L
#defineMB_ICONEXCLAMATION0x00000030L
#defineMB_ICONASTERISK0x00000040L
如果希望同時定義按鈕和圖示的樣式,可以使用或運算|,例如:
MessageBox(
NULL,
TEXT("這是源世界整理的例子!"),
TEXT("源世界整理"),
MB_OKCANCEL|MB_ICONINFORMATION
);
把上面的MessageBox換成這個就ok了。執行結果:
與上面的對話方塊相比,多出了一個圖示,同時還能聽到提示音。是不是多了一個提示符號在文字的前面啊。
再看來一下MessageBox()的返回值。
MessageBox()返回被按下的按鈕,以數字表示,這些數字都被定義成了宏,如下所示:
對應的宏定義為:
#defineIDOK1
#defineIDCANCEL2
#defineIDABORT3
#defineIDRETRY4
#defineIDIGNORE5
#defineIDYES6
#defineIDNO7
總結:
對於剛剛學完C語言的,學windows程式設計的,這些都是滿滿的乾貨,一定要記住喔。從你學windows程式設計開始,你就已經告別了難看的windowsdo介面,只要一步一步走,寫一個漂亮的window程式不在話下。這些都是以後學習必須掌握的,先收藏吧!
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69993485/viewspace-2752401/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- C語言_初步瞭解一下指標C語言指標
- C語言程式設計C語言程式設計
- C語言程式設計原理C語言程式設計
- c語言程式設計題C語言程式設計
- 函數語言程式設計瞭解一下(下)函數程式設計
- 瞭解 JavaScript 函數語言程式設計 - 柯里化JavaScript函數程式設計
- 函數語言程式設計瞭解一下(上)函數程式設計
- 函數語言程式設計瞭解一下(JavaScript描述)函數程式設計JavaScript
- 瞭解 JavaScript 函數語言程式設計 - 宣告式函式JavaScript函數程式設計函式
- 瞭解 JavaScript 函數語言程式設計-型別簽名JavaScript函數程式設計型別
- C語言MySQL程式設計示例C語言MySql程式設計
- C 語言程式設計(unix) (轉)程式設計
- 結對程式設計(c語言)程式設計C語言
- 奇怪的C語言——C51程式設計C語言注意事項C語言程式設計
- C 語言程式設計利器之 CLion程式設計
- C#函數語言程式設計C#函數程式設計
- C語言程式設計基本規範C語言程式設計
- MySQL的C語言程式設計(一)MySqlC語言程式設計
- 瞭解 JavaScript 函數語言程式設計 - 程式碼組合的優勢JavaScript函數程式設計
- Linux環境組合語言程式設計初步——AT&T語法(轉)Linux組合語言程式設計
- 瞭解 JavaScript 函數語言程式設計 -- 什麼是純函式JavaScript函數程式設計函式
- 偽隨機數C語言程式設計隨機C語言程式設計
- C語言程式設計-漢字點陣C語言程式設計
- C語言+圖形程式設計——自制象棋C語言程式設計
- C++的函數語言程式設計C++函數程式設計
- C 語言程式設計習慣總結程式設計
- C語言程式設計B作業04C語言程式設計
- Linux下C語言程式設計(轉)LinuxC語言程式設計
- 傻瓜程式設計入門(C語言版)程式設計C語言
- C語言程式設計題T1C語言程式設計
- C語言指標應用程式設計C語言指標程式設計
- 初步瞭解Windows7下部署SonarWindows
- C 語言高效程式設計與程式碼優化程式設計優化
- Linux環境組合語言程式設計初步——使用gdb除錯程式(轉)Linux組合語言程式設計除錯
- TypeScript初步瞭解TypeScript
- Docker初步瞭解Docker
- 《C程式設計語言》 練習3-5C程式程式設計
- C語言如何實現泛型程式設計?C語言泛型程式設計