---
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

* Cancel 按鈕和顯示一個警告的圖像
MB_OKCANCEL | MB_ICONWARNING

### 顯示文字
透過 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 %}