--- title: 透過"windows.h" 建立 C++視窗軟體 tags: CPP description: --- # 透過"windows.h" 建立 C++視窗軟體 ```cpp= #define WIN32_LEAN_AND_MEAN //加入這巨集定義的目的是為了把 windows.h 瘦身,排除掉一些 //不常用的宣告,如此一來,可以加速編譯的過程,節省一些程 //式發展的時間。 #include <windows.h> //所有的 Windows 視窗程式都必須加入 windows.h 這個系統標 //頭檔,因為其中宣告了使用 Winsows API 所需的常數、資料 //型態、函式原型等等。 #include <windowsx.h> //windowsx.h 這個系統標頭檔定義了一些好用的巨集,可以簡 //化程式的撰寫,所以我們把它加進來。 // 所有的 Windows 視窗程式的執行進入點是 WinMain 這個函式 int WINAPI WinMain (HINSTANCE hinstance, HINSTANCE hprevinstance,LPSTR lpcmdline, int ncmdshow) { // call message box API MessageBox(NULL, "What's up, world!","My first Windows Program", MB_OK); // exit program return 0; } ``` * HINSTANCE hinstance 資料型態 HINSTANCE 是一個 32-bit 的 unsigned int 。 參數 hinstance 從作業系統接收一個代碼(handle), 此代碼在作業系統代表這個目前正執行的程式。 * HINSTANCE hprevinstance hprevinstance 是此程式前一個開啟且正執行的代 碼。Win32 系統已經不用這一個參數,而且把它永遠設 成 NULL (0) 。 * LPSTR lpcmdline 接收指令列參數 * int ncmdshow ncmdshow 是此程式開啟時的視窗顯示方式。 * SW_HIDE 隱藏視窗 * SW_MAXIMIZE 視窗放大至整個螢幕 * SW_MINIMIZE 視窗縮至最小 * SW_SHOW 顯示並啟動視窗 * SW_SHOWNORMAL 顯示正常大小的視窗並啟動 ## 對話視窗 ```cpp= int MessageBox ( HWND hWnd, // handle to owner window LPCTSTR lpText, // text in message box LPCTSTR lpCaption, // message box title UINT uType // message box style ); ``` * hWnd 父視窗 由於我們沒有建立視窗,這個 message box 並無父視窗,所以 參數 hWnd 設定成 NULL。 * lpText 內容文字 * lpCaption 標題 * uType 視窗類型 message box 的顯示樣式和操作模式 * 確定 MB_OK ![](https://i.imgur.com/HLOuQKy.png) * Cancel 按鈕和顯示一個警告的圖像 MB_OKCANCEL | MB_ICONWARNING ![](https://i.imgur.com/oG6X0Qw.png) ### 顯示文字 透過 sprintf() 發送str 指向一個字符串的格式化輸出。 :::info int sprintf(char *str, const char *format, ...) ::: * str -- 這是C字符串存儲char元素的數組的指針。 * format -- 這是包含文本的字符串被寫入到緩衝。 ```cpp= int showValue (HWND hwin, char *name, int ivalue) { char szValue[20]; sprintf(szValue, “%s = %d”, name, ivalue); MessageBox(hwin, szValue, “Debug”, MB_OK); } ``` {%hackmd theme-dark %}