1 頁 (共 1 頁)

[轉貼]API列表參考手冊

發表於 : 2003-10-15 12:40 PM
Mowd
API列表參考手冊
www.wqxnet.com 2002-9-17 Wqx.NET

**********************************
* 系統函數 *
**********************************
------------------------------
名稱 GetScreenMode
原型 int GetScreenMode (void)
描述 得到當前螢幕的顯示方式
GP1288支援3種顯示方式:單色、四灰階、十六灰階
返回值:1 單色 2 四灰階 4 十六灰階
出錯返回:-1
參見 SetScreenMode
------------------------------
名稱 SetScreenMode
原型 int SetScreenMode (int bpp)
描述 設置螢幕顯示方式
GP1288支援3種顯示方式:單色、四灰階、十六灰階
bpp=1 單色 bpp=2 四灰階 bpp=3 十六灰階
返回值:0 成功
出錯返回:-1
參見 GetScreenMode
------------------------------
名稱 ResetScreen
原型 void ResetScreen (void)
描述 初始化Microwindow的顯示引擎,並重繪螢幕
參見
------------------------------
名稱 SetDefaultMenuWindow
原型 void SetDefaultMenuWindow (HWND hwnd)
描述 設置缺省的功能表控制視窗。這是MW的特殊函數。
當有多個視窗控制項時,最好設定此函數,以使軟鍵盤上的“功能表”鍵被按下時,顯示正確的功能表內容。
功能表消息是WM系統內部產生的,AP無需處理。
如果 hwnd 設為NULL時,默認為系統缺省的最上層視窗。
要注意的是,當設置後,AP退出時,要再將其恢復為NULL。
參見 SetDefaultSearchWindow,SetDefaultSwitchWindow,SetDefaultKeyWindow
------------------------------
名稱 SetDefaultSearchWindow
原型 void SetDefaultSearchWindow (HWND hwnd)
描述 設置缺省的查詢控制視窗。這是MW的特殊函數。
參見 SetDefaultMenuWindow,SetDefaultSwitchWindow,SetDefaultKeyWindow
------------------------------
名稱 SetDefaultSwitchWindow
原型 void SetDefaultSwitchWindow (HWND hwnd)
描述 設置缺省的切換控制視窗。這是MW的特殊函數。
WM_SWITCH_OUT 消息在任務切換出時產生
WM_SWITCH_IN 消息在任務切換回來時產生
參見 SetDefaultMenuWindow,SetDefaultMenuWindow,SetDefaultKeyWindow
------------------------------
名稱 SetDefaultKeyWindow
原型 void SetDefaultKeyWindow (HWND hwnd)
描述 設置缺省的按鍵回應控制視窗。這是MW的特殊函數。
參見 SetDefaultMenuWindow,SetDefaultSearchWindow,SetDefaultSwitchWindow
------------------------------
名稱
GetDefaultMenuWindow
GetDefaultSearchWindow
GetDefaultSwitchWindow
GetDefaultKeyWindow
原型
HWND GetDefaultMenuWindow (void)
HWND GetDefaultSearchWindow (void)
HWND GetDefaultSwitchWindow (void)
HWND GetDefaultKeyWindow (void)
描述 得到當前的處理功能表(查詢、任務切換、按鍵回應)的主控視窗,返回控制碼號
參見 SetDefaultMenuWindow
------------------------------
名稱 OpenClipboard
原型 BOOL OpenClipboard (HWND hOwner)
描述 打開剪貼板。系統只有一個剪貼板。
hOwner 欲打開剪貼板的視窗控制碼
返回值:成功返回TRUE,失敗返回FALSE
參見 CloseClipboard
------------------------------
名稱 CloseClipboard
原型 BOOL CloseClipboard (VOID)
描述 關閉剪貼板。打開剪貼板後必需關閉。
返回值:成功返回TRUE,失敗返回FALSE
參見 OpenClipboard
------------------------------
名稱 ReadClipboard
原型 BOOL ReadClipboard (char *buf, int buf_size)
描述 讀出剪貼板的內容
buf 讀出的內容
buf_size 讀出長度
如果讀出長度小於剪貼板中的資料長度,則讀出buf_size-1長的字串,並以'\0'為結束
返回值:成功返回TRUE,失敗返回FALSE
參見 WriteClipboard
------------------------------
名稱 WriteClipboard
原型 BOOL WriteClipboard (char *buf)
描述 向剪貼板寫入內容
buf 欲寫入的字串,以'\0'為結束
返回值:成功返回TRUE,失敗返回FALSE
參見 ReadClipboard
------------------------------
名稱 GetClipboardSize
原型 long GetClipboardSize (void)
描述 得到當前剪貼板中的資料長度
返回值:數據長度
參見
------------------------------
名稱 IsClipboardEmpty
原型 BOOL IsClipboardEmpty (void)
描述 檢測剪貼板是否為空
返回值:空為TRUE,非空為FALSE
參見
------------------------------
名稱 EmptyClipboard
原型 BOOL EmptyClipboard (void)
描述 清空剪貼板內容
返回值:成功返回TRUE,失敗返回FALSE
參見
------------------------------
名稱 IsClipboardFormatAvailable
原型 BOOL IsClipboardFormatAvailable (UINT uFormat)
描述 檢測剪貼板內資料的類型
返回值:成功返回TRUE,失敗返回FALSE
現支援類型 : CF_TEXT,即目前只支援文本(其他類型以後再提供)
參見
------------------------------
名稱 SetClipboardData
原型 HANDLE SetClipboardData (UINT uFormat, HANDLE hMem)
描述 按照資料的類型向剪貼板寫入內容
uFormat 資料的類型
hMem 資料的位址
返回值:成功返回TRUE,失敗返回FALSE
現支援類型 : CF_TEXT
參見 GetClipboardDat
------------------------------
名稱 GetClipboardData
原型 HANDLE GetClipboardData (UINT uFormat)
描述 按照資料的類型取得剪貼板資料位址
返回值:成功返回地址,失敗返回NULL
uFormat 現只支持 CF_TEXT
參見 SetClipboardData
------------------------------
名稱 SelectClipRgn
原型 int WINAPI SelectClipRgn(HDC hdc, HRGN hrgn)
描述 設置圖形設備的客戶顯示區域,直接拷貝方式
hdc: 圖形設備的控制碼
hrgn: 區域資料指標
返回值:成功返回區域類型,失敗返回 NULLREGION(0xffffffff)
參見 ExtSelectClipRgn
------------------------------
名稱 ExtSelectClipRgn
原型 int WINAPI ExtSelectClipRgn(HDC hdc, HRGN hrgn, int fnMode)
描述 設置圖形設備的客戶顯示區域
hdc : 圖形設備的控制碼
hrgn : 區域資料指標
fnMode : 設置方式:
RGN_COPY 直接拷貝
RGN_AND 取hdc舊區域和hrgn的公共部分
RGN_OR hdc舊區域和hrgn 疊加
RGN_XOR hdc舊區域和hrgn 的不同部分
RGN_DIFF hdc舊區域和hrgn 相減
返回值:成功返回區域類型,失敗返回 NULLREGION(0xffffffff)
參見 SelectClipRgn
------------------------------
名稱 SwitchTo
原型 void SwitchTo (char *fullpath, char *args)
描述 切換到另一個任務
fullpath 另一任務的完整路徑名稱
args 參數,如有多個參數中間用空格分隔
我們推薦用SwitchTo和下面提到的QuitTo來切換MicroWindow的AP,因為MW的AP不在通常的任務
管理中管理。如果切換的不是MW的AP,還是用系統的 exec,fork。
參見 QuitTo
------------------------------
名稱 QuitTo
原型 void QuitTo (char *fullpath, char *args)
描述 退出當前的MicroWindow程式,並切換到另一任務
參見 SwitchTo
------------------------------
名稱 InputBox
原型 char *InputBox (char *buf, int buf_len, const char *text1, const char *text2, BOOL pwd_mask)
描述 用來獲得用戶輸入文本的簡單方法
buf 保存用戶輸入文本的緩衝區
buf_len 緩衝區長度
text1 字串1
text2 字串2
pwd_mask 當輸入是密碼時,顯示的是"*"來加以保護。
TRUE 密碼輸入
FALSE 非
返回值:如取消輸入返回NULL,否則返回字串長度
注意:緩衝區可以為空,也可有預設值。如果你希望這個輸入框上有預設的內容時,可以將其填到
buf上。buf的長度最大為255。
參見
------------------------------
名稱 EnableBuzzer
原型 void EnableBuzzer (BOOL on)
描述 在系統的蜂鳴器開啟時,使能當前AP的蜂鳴器
on TRUE 使能 FALSE 關閉
注意:此函數的使用不會影響到系統的蜂鳴器狀態
參見 IsBuzzerOn
------------------------------
名稱 IsBuzzerOn
原型 BOOL IsBuzzerOn (void)
描述 檢測當前的蜂鳴器是否開啟
返回值:TRUE 開啟 FALSE 關閉
參見 EnableBuzzer
------------------------------
名稱 ControlBuzzer
原型 void ControlBuzzer (int freq, int duration)
描述 控制蜂鳴器以特定的頻率和時間發音
freq 發音頻率
duration 持續時間
參見 Beep
------------------------------
名稱 Beep
原型 void Beep (void)
描述 蜂鳴器發出“?”的一聲。這相當於用4K的頻率,100的duration調用ControlBuzzer
參見 ControlBuzzer
------------------------------
名稱 ControlRedLED
原型 void ControlRedLED (BOOL on)
描述 控制GP1288的紅色LED燈
on TRUE 開啟 FALSE 關閉
同樣的,這也不會影響到系統對LED的設定
參見 ControlGreenLED
------------------------------
名稱 ControlGreenLED
原型 void ControlGreenLED (BOOL on)
描述 控制GP1288的綠色LED燈
on TRUE 開啟 FALSE 關閉
參見 ControlRedLED
------------------------------
名稱 ControlMotor
原型 void ControlMotor (BOOL on)
描述 控制GP1288的震動馬達
on TRUE 開啟 FALSE 關閉
參見
------------------------------
名稱 ControlButton
原型 void ControlButton (int speed)
描述 在本任務內,控制鍵盤連續按鍵的回應速度
speed 速度值,範圍在-10到50之間由慢變快
切換到其他任務後,回應速度恢復變為預設值
參見
------------------------------
名稱 SetLocalLanguage
原型 void SetLocalLanguage (int lang)
描述 在本任務內設置語言選項
lang 0:大陸,GB碼 1:臺灣,Big5碼 2:香港,Big5碼 3:英文 -1:禁止切換
當使用此函數設置語言後後,一般需要更新螢幕,通知控制項他們的顯示。
實際上,這只是設置顯示文字的方式,就是說,是用GB碼還是Big5碼的格式讀取和顯示漢字。
參見 GetLanguage
------------------------------
名稱 GetLanguage
原型 int GetLanguage (void)
描述 得到語言設置的返回值
返回值:lang 0:北京,GB碼 1:臺灣,Big5碼 2:香港,Big5碼 3:英文 -1:禁止切換
參見 SetLocalLanguage
------------------------------
名稱 GetRegionCode
原型 int GetRegionCode (void)
描述 得到GP1288的區域號
返回值:0:北京 1:臺灣 2:香港 3:英文 -1:出錯
參見
------------------------------
名稱 GetProductName
原型 int GetProductName (char *buf)
描述 得到產品名稱
buf 讀出的產品名稱
返回值:如果buf==NULL 返回實際需要的長度
否則,成功返回0;失敗返回-1
參見 GetSerialNumber
------------------------------
名稱 GetSerialNumber
原型 int GetSerialNumber (char *buf)
描述 得到GP1288的S/N(串號)
buf 讀出的S/N
返回值:如果buf==NULL 返回實際需要的長度
否則,成功返回0;失敗返回-1
參見 GetProductName
------------------------------
名稱 GetPanelKeys
原型 BOOL GetPanelKeys (BOOL bEnable)
描述 系統是否產生(UP,DOWN,LEFT,RIGHT,HOME,END)6個按鍵消息
在GP1288上,我們將按鍵分組,這6個按鍵(就是方向鍵和邊上兩個鍵)歸於PanelKeys組,可以
通過程式設定是否起作用,即按下後是否發送按鍵消息,能被系統接收。其虛擬鍵值為:
VK_UP 方向鍵上
VK_DOWN 方向鍵下
VK_LEFT 方向鍵左
VK_RIGHT 方向鍵右
VK_HOME HOME鍵,默認也是Holink鍵
VK_END END鍵,默認是郵件鍵
bEnable TRUE ,產生按鍵消息;FALSE 不產生按鍵消息
參見 GetSoftKeys
------------------------------
名稱 GetSoftKeys
原型 BOOL GetSoftKeys (BOOL bEnable);
描述 系統是否產生目錄、功能表、查找、計算、字典、切換、紅外、錄音的按鍵消息
在GP1288上,我們將按鍵分組,這8個按鍵歸於SoftKeys組,可以通過程式設定是否起作用,即按
下後是否發送按鍵消息,能被系統接收。其虛擬鍵值為:
VK_F1 軟鍵盤上的目錄鍵
VK_F2 軟鍵盤上的功能表鍵
VK_F3 軟鍵盤上的查找鍵
VK_F4 軟鍵盤上的計算鍵
VK_F5 軟鍵盤上的字典鍵
VK_F6 軟鍵盤上的切換鍵
VK_LBUTTON 紅外鍵
VK_RBUTTON 錄音鍵
bEnable TRUE ,產生按鍵消息;FALSE 不產生按鍵消息
參見 GetPanelKeys
------------------------------
名稱 IsGetPanelKeys
原型 BOOL IsGetPanelKeys (void)
描述 系統是否允許PanelKeys起作用
返回值:TRUE 起作用 FALSE 不起作用
參見 GetPanelKeys
------------------------------
名稱 IsGetSoftKeys
原型 BOOL IsGetSoftKeys (void)
描述 系統是否允許目錄、功能表、查找、計算、字典、切換、紅外、錄音鍵起作用
返回值:TRUE 起作用 FALSE 不起作用
參見 GetSoftKeys
------------------------------
名稱 InitXime
原型 #include
HWND InitXime (HWND owner, InputMethod ime)
描述 以設定的方式初試化輸入法
owner 欲開啟輸入法的視窗控制碼
ime 輸入法代表字
返回值:輸入法控制碼值,出錯返回NULL
輸入法代表字含義:
XIME_NONE 最小化
XIME_ASCII ASCII字元輸入
XIME_SYMBOL 符號輸入
XIME_PHONE 電話符號輸入
XIME_CJ 繁體倉頡輸入法
XIME_BOSHIAMY 繁體注音
XIME_HANDWRITE 手寫輸入
XIME_SPCODE 大寫符號
XIME_PINYIN 全拼輸入
XIME_WUBI 五筆輸入
XIME_DEFAULT 系統默認輸入法
XIME_USER 自定義輸入法
輸入法變化後會自動發出資訊
WM_XIME_MINIMIZE 輸入法最小化
WM_XIME_RESTORE 從最小化恢復
WM_XIME_CHANGED 輸入方式變化
注意:調用初試化輸入法的時間應在Winmain()中的CreatWindow或對話方塊建立後,並且
InitXime只能被調用一次,除非你已經銷毀過他。
參見 InitXimeEx
------------------------------
名稱 InitXimeEx
原型 HWND InitXimeEx (HWND owner, InputMethod ime, int sub, int visible)
描述 用附加屬性修飾的初試化輸入法
owner 欲開啟輸入法的視窗控制碼
ime 輸入法代表字
sub 0:默認符號 1:半形符號 2:全形符號
參見 InitXime
------------------------------
名稱 SelectXime
原型 void SelectXime (InputMethod ime)
描述 在使用中改變輸入法
參見 InitXime
------------------------------
名稱 SelectXimeEx
原型 void SelectXimeEx(InputMethod ime, int sub)
描述 在使用中改變輸入法,並有附加屬性修飾
參見 SelectXime,InitXime,InitXimeEx
------------------------------
名稱 SetXimeOwner
原型 HWND SetXimeOwner(HWND owner)
描述 在其他對話方塊中使用輸入法時,要調用此函數設定。
輸入法作為一個控制項,只能被一個表單所使用。如果你想在另外一個視窗控制項(比如對話方塊)中使
用,必需為它設定新的屬主。
不過千萬要記得,在銷毀新屬主前要將 owner 設回來。
owner 新屬主的控制碼
返回值:前次屬主的控制碼
參見
------------------------------
名稱 DestroyXime
原型 void DestroyXime(void)
描述 手工銷毀輸入法控制項
參見 InitXime
------------------------------
名稱 ReInitXime
原型 int ReInitXime (void)
描述 手工重新刷新輸入法控制項。
這並沒有破壞原有的控制碼,只是重新刷新。
當切換語言時需要這樣手工刷新。
參見 InitXime
------------------------------
名稱 GetSelectedIME
原型 InputMethod GetSelectedIME (void)
描述 返回當前的輸入法輸入類型
參見 InitXime
------------------------------
名稱 GetXimeSubStyle
原型 int GetXimeSubStyle (void)
描述 返回當前輸入法的附加修飾類型
參見 InitXime
------------------------------
名稱 GetXimeHandler
原型 HWND GetXimeHandler (void)
描述 返回輸入法控制項的控制碼
必需在InitXime之後才能調用。
還要注意的是,如果是自定義的輸入法,請不要調用此函數。
參見
------------------------------
名稱 PopupXimeMenu
原型 void PopupXimeMenu (int x, int y)
描述 輸入法的彈出功能表(就是那個有各種輸入法選項的功能表)的位置
x 橫坐標位置 y 縱坐標位置
參見 EnableXimeMinimize
------------------------------
名稱 EnableXimeMinimize
原型 int EnableXimeMinimize (BOOL bEnable);
描述 在輸入法彈出菜單上啟動(取消)最小化選項
缺省狀態下,輸入法控制項彈出功能表是沒有最小化選項的,
調用此函數可以使其出現
bEnable TRUE 顯示最小化選項 FALSE 隱藏最小化選項
返回值:0 成功 -1 失敗
參見 PopupXimeMenu
------------------------------
名稱 DefXimeProc
原型 LRESULT CALLBACK DefXimeProc (HWND, UINT, WPARAM, LPARAM)
描述 缺省的輸入法處理部件。
如果您寫了外掛的自定義輸入法,就應該使用DefXimeProc()作為缺省的消息處理部件,在
UserXimeProc()中替代DefWindowProc()
參見 DefWindowProc
------------------------------
**********************************
* 用戶介面函數 *
**********************************
------------------------------
名稱 WinMain
原型 int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,PSTR szCmdLine, int iCmdShow)
描述 此函數被系統呼叫,作為MicroWindow程式的初試化入口點,相當於C程式中的main()
hInstance 該程式的實例控制碼
hPrevInstance 其他實例的控制碼,但實際上其總為NULL
szCmdLine 用於運行程式的命令行,某些AP使用這個參數以在程式啟動時將檔載入到記憶體
iCmdShow 程式最初顯示的方式
實際上,我們不需要在WinMain時考慮這些參數,這些參數實際上是被MicroWindow傳遞並使用的
返回值:WinMain帶來的消息迴圈在接收到WM_QUIT時退出,同時返回退出代碼
如果在消息迴圈之前即退出,返回0
參見 CreateWindow,RegisterClass,ShowWindow,UpdateWindow
------------------------------
名稱 RegisterClass
原型 ATOM WINAPI RegisterClass(CONST WNDCLASS *lpWndClass)
描述 註冊視窗類
視窗總是在視窗類的基礎上創建的,視窗類用以標識處理視窗消息的視窗過程
在為程式創建視窗之前,必需先調用RegisterClass註冊一個視窗類
lpWndClass 一個指向類型為WNDCLASS 的指標結構
我們要在調用此函數前,先聲明一個WNDCLASS 的結構,並為其相關域覆值,例如
WNDCLASS wndclass;
WNDCLASS 在winuser.h中定義,結構如下:
typedef struct tagWNDCLASSA {
MWLIST link; //
UINT style; //類風格
WNDPROC lpfnWndProc; //基於這個類所創建視窗所使用的視窗過程的位址
int cbClsExtra; //
int cbWndExtra; //
HINSTANCE hInstance; //實例控制碼
HICON hIcon; //圖示
HCURSOR hCursor; //游標
HBRUSH hbrBackground; //背景
LPCSTR lpszMenuName; //視窗類功能表名稱
LPCSTR lpszClassName; //窗口類的名稱
CHAR szClassName[40];//
} WNDCLASS
類風格中,每一種風格為一位,可以由位“或”來進行組合:
CS_VREDRAW 視窗縱向變化後重繪
CS_HREDRAW 窗口橫向變化後重繪
CS_DBLCLKS 發送雙擊滑鼠消息
CS_OWNDC 給該類中的每個視窗分配一個唯一的設備描述表,只需要初始化設備描述
表一次,DC將一直存在,直到視窗被刪除
CS_CLASSDC 給該類中的視窗只分配一個共用的設備描述表號
CS_PARENTDC 使子視窗剪貼板區域與父視窗重合
CS_NOCLOSE 視窗功能表上不出現“關閉”選項
CS_SAVEBITS 在視窗重繪時,不發WM_PAINT消息,而是用保存的窗口點陣圖刷新
CS_BYTEALIGNCLIENT
CS_BYTEALIGNWINDOW
CS_GLOBALCLASS 該視窗類具有全局屬性
實際上,目前版本的MicroWindow只是模仿Windows的特性,這些風格中,目前只有CS_OWNDC
是真正需要設置的。 (因為表單尺寸不會變化,也沒有雙擊,剪貼板也只有一個...
參見 CreateWindow, CreateWindowEx, ShowWidow
------------------------------
名稱 CreateWindow
原型 HWND WINAPI CreateWindow(LPCSTR lpClassName, LPCSTR lpWindowName,DWORD dwStyle,
int x, int y, int nWidth, int nHeight,HWND hwndParent, HMENU hMenu, HINSTANCE hInstance, LPVOID lpParam)
描述 這個函數在記憶體區域內開闢一個視窗。
它同時定義了視窗的類、標題、風格、初始位置及大小等。
lpClassName 指向註冊的類,類必需由 RegisterClass 來註冊
lpWindowName 窗口的名稱
dwStyle 視窗的風格
x 窗口左上角的橫標
y 窗口左上角的縱標
nWidth 窗口寬度
nHeight 窗口高度
hWndParent 父視窗控制碼,如是最高級窗口,則為NULL
hMenu 功能表或子視窗控制碼
hInstance 程式的實例控制碼,是該是由WinMain傳遞過來的
lpParam 可以用這個指標訪問以後向飲用的程式中的資料
註冊類可以是新註冊的類名稱,也可以是系統中已經指定的類,比如:
BUTTON 按鈕
COMBOBOX 下拉式列示方塊
EDIT 編輯框
LISTBOX 列表框
SCROLLBAR 捲軸
STATIC 靜態文本 等
視窗可以有多種風格(Style),這也是可以按位元組合的一些選項:
WS_BORDER 窄邊框
WS_CAPTION 有標題欄
WS_CHILD 創建子窗口。此風格不能與WS_POPUS共用
WS_CHILDWINDOW 與 WS_CHILD 相同
WS_CLIPCHILDREN 在父視窗繪圖時不考慮被子視窗佔據的部分
WS_CLIPSIBLINGS 使子視窗互相關聯,當一個子視窗發出WM_PAINT消息時,其他重疊視窗不受影響
WS_DISABLED 不能接受用戶輸入的“死”視窗
WS_DLGFRAME 對話方塊型的邊框
WS_GROUP 指定第一群組控制
WS_HSCROLL 有橫向的捲軸
WS_ICONIC 初始化為最小化的窗口
WS_MAXIMIZE 初始化為最大化的視窗
WS_MAXIMIZEBOX 有最大化按鈕
WS_MINIMIZEBOX 同WS_ICONIC
WS_OVERLAPPED 重疊類型的窗口
WS_POPUP 彈出類型的窗口
WS_SYSMENU 標題欄上有菜單
WS_TILED 同WS_OVERLAPPED
WS_VISIBLE 初使化即為可見的
WS_VSCROLL 有縱向的捲軸
返回值:成功返回新窗口控制碼,失敗返回NULL。
在返回前,其會發出WM_CREATE的消息給視窗過程。
參見 CreateWindowEx, RegisterClassEx
------------------------------
名稱 CreateWindowEx
原型 CreateWindowEx(DWORD dwExStyle, LPCSTR lpClassName, LPCSTR lpWindowName,DWORD dwStyle, int x,
int y, int nWidth, int nHeight,HWND hwndParent, HMENU hMenu, HINSTANCE hInstance, LPVOID lpParam)
描述 此函數在CreateWindow的基礎上,額外多定義了視窗的擴展風格,除此外等同於CreateWindow
擴展風格定義在Winuser.h中,共有:
WS_EX_DLGMODALFRAME 窗口具有雙層邊框
WS_EX_NOPARENTNOTIFY 子窗口在創建和銷毀時,不向其父視窗發送WM_PARENTNOTIFY消息
WS_EX_TOPMOST 該視窗出現在最頂級,甚至當其不在焦點時都如此
WS_EX_ACCEPTFILES 接受拖拽檔
WS_EX_TRANSPARENT 透明視窗,直到其下層視窗被重繪時其才重繪
WS_EX_MDICHILD 產生MID窗口
WS_EX_TOOLWINDOW 產生一個工具視窗,並不出現在任務欄上
WS_EX_WINDOWEDGE 指定視窗邊框的邊緣加高
WS_EX_CLIENTEDGE 指定視窗邊框的邊緣下沉
WS_EX_CONTEXTHELP 視窗標題欄上,當用戶點擊時出現“這是什麼”的游標
WS_EX_SHOWKEYB 指定視窗邊框邊緣
WS_EX_RIGHT 右對齊窗口
WS_EX_LEFT 左對齊視窗,這是預設值
WS_EX_RTLREADING 使用由右至左的閱讀排列文字格式
WS_EX_LTRREADING 使用由左至右的閱讀排列文字格式
WS_EX_LEFTSCROLLBAR 如是 RTLREADING 方式,縱向捲軸放在左邊
WS_EX_RIGHTSCROLLBAR 默認的捲軸在右邊
WS_EX_STATICEDGE 不接受用戶輸入的靜態類型
WS_EX_APPWINDOW 當視窗可見時,強制頂級視窗出現在任務條上
WS_EX_LAYERED
WS_EX_OVERLAPPEDWINDOW WS_EX_CLIENTEDGE 與WS_EX_WINDOWEDGE 風格的合集
WS_EX_PALETTEWINDOW WS_EX_WINDOWEDGE WS_EX_TOOLWINDOW 與WS_EX_TOPMOST風格的合集
返回值:成功返回新窗口控制碼,失敗返回NULL。
在返回前,其會發出WM_CREATE的消息給視窗過程。
參見 CreateWindow
------------------------------
名稱 ShowWindow
原型 BOOL WINAPI ShowWindow(HWND hwnd, int nCmdShow)
描述 使一個指定視窗被顯示
hwnd 窗口控制碼
nCmdShow 指定視窗顯示方式
在首次調用時,該參數是由WinMain函數中傳遞過來的,在後續調用中,可以使用:
SW_HIDE 隱藏此視窗並啟動另外的視窗
SW_SHOWNORMAL 啟動並顯示此視窗
SW_NORMAL
SW_SHOWMINIMIZED 啟動並最小化顯示此視窗
SW_SHOWMAXIMIZED 啟動並最大化顯示此視窗
SW_MAXIMIZE 最大化此視窗
SW_SHOWNOACTIVATE 顯示此視窗並不影響其他啟動的視窗
SW_SHOW 在當前位置以其視窗的大小啟動並顯示
SW_MINIMIZE 最小化此窗口
SW_SHOWMINNOACTIVE 以最小化方式顯示視窗,並不影響其他啟動的視窗
SW_RESTORE 以其原始尺寸啟動並顯示
SW_SHOWDEFAULT
SW_MAX 以最大化方式顯示視窗
返回值:如此窗口當前為可見,返回非0值;如為隱藏,返回0
參見 WinMain,CreateWindow
------------------------------
名稱 UpdateWindow
原型 BOOL WINAPI UpdateWindow(HWND hwnd)
描述 此函數通過給視窗過程發送WM_PAINT消息,使視窗的客戶區被繪製
hwnd 窗口控制碼
返回值:成功返回TRUE,失敗返回FALSE
參見 ShowWindow
------------------------------
名稱 DestroyWindow
原型 BOOL WINAPI DestroyWindow(HWND hwnd)
描述 銷毀指定的視窗
此函數發出WM_DESTROY消息給視窗進程,釋放和去除該視窗的鍵盤焦點。
同時也銷毀視窗的功能表、記數器等,如果該視窗是父視窗,也自動的銷毀其關聯的子視窗,
及其由CreateDialog創建的對話方塊。
hwnd 要銷毀的窗口控制碼
返回值:成功返回TRUE,失敗返回FALSE
參見 CreateWindow,CreateWindowEx,CreateDialog
------------------------------
名稱 IsWindow
原型 BOOL WINAPI IsWindow(HWND hwnd)
描述 該函數判斷指定的控制碼是否是存在的視窗
hwnd 要進行判斷的視窗控制碼
返回值:如是已存在窗口返回TRUE,否則返回FALSE
參見
------------------------------
名稱 DefWindowProc
原型 LRESULT WINAPI DefWindowProc(HWND hwnd,UINT msg,WPARAM wParam,LPARAM lParam)
描述 該函數調用缺省的視窗進程處理一個視窗應用未處理的消息
其以同樣的參數被窗口過程所調用
一般來說我們必需在消息迴圈中調用此函數以處理系統事件,比如:
{
switch(message){
case XXX:
......
case YYY:
......
}
return DefWindowProc(hwnd, msg,wParam,lParam)
}
hwnd 指向接受消息的視窗過程
msg 消息
wParam 由MAG結構傳遞的額外參數
lParam 由MAG結構傳遞的額外參數
返回值:依賴於消息產生的過程處理結果
參見 CallWindowProc, DefDlgProc
------------------------------
名稱 CallWindowProc
原型 LRESULT WINAPI CallWindowProc(WNDPROC lpPrevWndFunc, HWND hwnd, UINT Msg, WPARAM wParam, LPARAM lParam)
描述 將消息傳遞給指定的視窗處理過程
lpPrevWndFunc 指向改變以前的視窗過程
hWnd 接受消息的視窗過程控制碼
Msg 希望處理的消息
wParam 消息的第一個參數
lParam 消息的第二個參數
返回值:依賴於消息處理的結果
SetWindowLong 函數可以通過改變視窗關聯的處理過程,來使系統使用新的視窗過程來替代舊
的。這樣的應用必需要把它在新視窗過程中未處理的消息通過CallWindowProc來傳遞給原來的
窗口過程。
CallWindowProc的程式處理實際上非常簡單:
CallWindowProc(WNDPROC lpPrevWndFunc, HWND hwnd, UINT Msg, WPARAM wParam, LPARAM lParam)
{
return (*lpPrevWndFunc)(hwnd, Msg, wParam, lParam);
}
參見 SetWindowLong
------------------------------
名稱 SetWindowLong
原型 LONG WINAPI SetWindowLong(HWND hwnd, int nIndex, LONG lNewLong)
描述 此函數通過設置指定視窗的擴展視窗記憶體的32位元長整型偏移值,來重新設定視窗屬性
hwnd 指定視窗的控制碼
nIndex 設定屬性的索引
lNewLong 指定要設定替換的值
索引在Winuser.h中定義,窗口擴展記憶體的32位元長整型數偏移位置,包括:
GWL_EXSTYLE 新設定視窗的擴展風格
GWL_EXSTYLE 新設定視窗風格
GWL_WNDPROC 用新的視窗處理過程替換原來的
GWL_HINSTANCE 新設定視窗實例控制碼
GWL_ID 窗口ID
GWL_USERDATA 新的關聯此視窗的32位元的值
用GWL_WNDPROC 索引,lNewLong要用long強制轉換的新視窗過程的位址。
這樣就可以使指定視窗用這個新的視窗過程來預先處理,但如想再用原來的視窗過程,
則要使用函數CallWindowProc
返回值:成功返回以前的32位整型數,失敗返回0
參見 CallWindowProc,GetWindowLong
------------------------------
名稱 SetLayeredWindowAttributes
原型 BOOL WINAPI SetLayeredWindowAttributes(HWND hwnd, COLORREF crKey, BYTE bAlpha, DWORD dwFlags)
描述 目前只有此函數原型,但尚未支援
參見
------------------------------
名稱 GetWindowLong
原型 LONG WINAPI GetWindowLong(HWND hwnd, int nIndex)
描述 得到指定視窗的資訊,即指定的擴展視窗記憶體中的32位元長整型數值
hwnd 指定視窗的控制碼
nIndex 窗口擴展記憶體的32位元長整型數偏移位置
返回值:成功返回指定偏移的32位長整型數值,失敗返回0
參見 SetWindowLong
------------------------------
名稱 GetWindowWord
原型 WORD WINAPI GetWindowWord(HWND hwnd, int nIndex)
描述 這個函數實際上在32位元模式下是作廢的,要應用GetWindowLong替代
參見 GetWindowLong
------------------------------
名稱 SetWindowWord
原型 WORD WINAPI SetWindowWord(HWND hwnd, int nIndex, WORD wNewWord)
描述 這個函數實際上在32位元模式下是作廢的,要應用SetWindowLong替代
參見 SetWindowLong
------------------------------
名稱 GetWindowTextLength
原型 int WINAPI GetWindowTextLength(HWND hwnd)
描述 如果當前視窗有指定標題欄,此函數得到此標題欄的文本長度
hwnd 指定的視窗控制碼
返回值:成功返回長度,如果該視窗沒有標題文本,返回0
參見 GetWindowText, SetWindowText
------------------------------
名稱 GetWindowText
原型 int WINAPI GetWindowText(HWND hwnd, LPSTR lpString, int nMaxCount)
描述 拷貝指定視窗的標題欄的文本到指定的緩衝區
hwnd 指定視窗的控制碼
lpString 指定的緩衝區
nMaxCount 拷貝字串長度
返回值:成功返回拷貝字串長度(不包含結尾的NULL),
如窗口無標題欄、標題欄為空、或窗口控制碼非法返回0
參見 GetWindowTextLength, SetWindowText
------------------------------
名稱 SetWindowText
原型 BOOL WINAPI SetWindowText(HWND hwnd, LPCSTR lpString)
描述 改變當前視窗的標題欄文字
hwnd 窗口控制碼
LPCSTR lpString 以NULL為結束的新標題欄文字串指標
返回值:成功返回TRUE,失敗返回FALSE
參見 GetWindowText
------------------------------
名稱 MoveWindow
原型 BOOL WINAPI MoveWindow(HWND hwnd, int x, int y, int nWidth, int nHeight, BOOL bRepaint)
描述 改變指定視窗的位置和大小,這都是相對於螢幕上其左上角的位置而言的
hwnd 窗口控制碼
x 新位置左上角橫標
y 新位置左上角縱標
nWidth 寬度
nHeigth 高度
bRepaint 重繪標誌,TRUE 重繪,FALSE不重繪
返回值:成功返回TRUE,失敗返回FALSE
參見 SetWindowPos,UpdateWindow
------------------------------
名稱 SetWindowPos
原型 BOOL WINAPI SetWindowPos(HWND hwnd, HWND hwndInsertAfter, int x, int y, int cx, int cy, UINT fuFlags)
描述 改變視窗、彈出視窗、或子視窗的位置、大小
hwnd 窗口控制碼
hwndInsertAfter 佈局順序控制碼,它只能是下列值之一:
SWP_SHOWWINDOW 顯示視窗
SWP_HIDEWINDOW 隱蔽窗口
HWND_TOP 顯示在多視窗前面
HWND_BOTTOM 顯示在多視窗後面
x 指定新視窗的左上角橫標
y 指定新視窗的左上角縱標
cx 指定新視窗的寬
cy 指定新視窗的高
fuFlags 指定視窗的位置、大小的旗標,它可以是下列值的組合:
SWP_NOMOVE 不改變視窗座標
SWP_NOSIZE 不改變視窗大小
SWP_NOZORDER 不改變視窗疊層次序
返回值:成功返回TRUE,失敗返回FALSE
需要注意的是,如果你用了SetWindowLong來改變當前視窗的話,那就必須要用SetWindowPos來
使它發生作用。
參見 MoveWindow
------------------------------
名稱 GetCursorPos
原型 BOOL WINAPI GetCursorPos(LPPOINT lpPoint)
描述 得到螢幕上的游標位置
lpPoint 指向一個POINT結構,使它接收螢幕的游標
POINT結構定義如下:
typedef struct tagPOINT {
LONG x;
LONG y;
} POINT;
就是游標的X,Y位置
返回值:如果得到游標,返回非零值;否則返回零
參見 SetCursor,SetCursorPos
------------------------------
名稱 GetFocus
原型 HWND WINAPI GetFocus(VOID)
描述 得到正獲得輸入焦點的視窗控制碼
返回值:該窗口控制碼
參見 SetFocus
------------------------------
名稱 SetFocus
原型 HWND WINAPI SetFocus(HWND hwnd)
描述 使指定視窗獲得輸入焦點
只有獲得輸入焦點的視窗才能接受輸入。
返回值:成功返回上次獲得焦點的窗口控制碼;如hwnd參數非法則失敗返回0
參見 GetFocus
------------------------------
名稱 SetForegroundWindow
原型 BOOL WINAPI SetForegroundWindow(HWND hwnd)
描述 啟動一個視窗並將其顯示在最上層
當我們想顯示錯誤資訊或消息並立即通知用戶時,就要調用這個函數
參見 SetActiveWindow
------------------------------
名稱 SetActiveWindow
原型 HWND WINAPI SetActiveWindow(HWND hwnd)
描述 啟動一個視窗,
參見
------------------------------
名稱 GetActiveWindow
原型 HWND WINAPI GetActiveWindow(VOID)
描述 得到正獲得輸入焦點的視窗的父視窗控制碼
返回值:該窗口控制碼
參見 SetActiveWindow
------------------------------
名稱 BringWindowToTop
原型 BOOL WINAPI BringWindowToTop(HWND hwnd)
描述 在這裏,這個函數的效果和SetForegroundWindow相同
參見 SetForegroundWindow
------------------------------
名稱 GetDesktopWindow
原型 HWND WINAPI GetDesktopWindow(VOID)
描述 得到根窗口控制碼
返回值:根窗口控制碼
參見
------------------------------
名稱 GetParent
原型 HWND WINAPI GetParent(HWND hwnd)
描述 得到指定子視窗的父視窗控制碼
hwnd 指定子視窗控制碼
返回值:如成功返回其父窗口控制碼;如果其無父視窗,返回NULL
參見
------------------------------
名稱 EnableWindow
原型 BOOL WINAPI EnableWindow(HWND hwnd, BOOL bEnable)
描述 使指定的視窗或控制項開啟/關閉輸入回應
hwnd 視窗/控制項控制碼
bEnable TRUE為開啟,FALSE為關閉
返回值:如果該視窗之前為關閉狀態,返回TRUE;否則返回TRUE
默認一個視窗在創建時都是Enable的,如果希望其是Disable的,那麼就要在CreateWindow或
CreateWindowEx函數中指定WS_DISABLED 風格;
當視窗創建後,用此函數來切換開啟/關閉。
在對話方塊中關閉的控制項不能接收用戶的輸入(變灰的那種)。
參見 CreateWindow,CreateWindowEx, IsWindowEnabled
------------------------------
名稱 IsWindowEnabled
原型 BOOL IsWindowEnabled(HWND hWnd)
描述 判斷指定視窗是否可以接受輸入
hwnd 窗口控制碼
返回值:如果視窗可以接受輸入(Enable)返回TRUE;否則返回FALSE
參見 EnableWindow
------------------------------
名稱 AdjustWindowRectEx
原型 BOOL WINAPI AdjustWindowRectEx(LPRECT lpRect, DWORD dwStyle, BOOL bMenu,DWORD dwExStyle)
描述 基於需要的客戶區尺寸,計算需要的視窗區域尺寸
根據(dwStyle)調整(lpRect)為客戶的相對區域
lpRect 指向客戶區RECT結構的指標
dwStyle 視窗屬性
bMenu 視窗功能表,現在無作用
dwExStyle 擴展視窗屬性,現在無作用
返回值:現在無作用
參見
------------------------------
名稱 GetClientRect
原型 BOOL WINAPI GetClientRect(HWND hwnd, LPRECT lpRect)
描述 獲取視窗客戶區的尺寸
hwnd 窗口的控制碼
lpRect 指向客戶區的RECT結構的指標
RECT結構定義如下:
typedef struct _RECT {
LONG left;
LONG top;
LONG right;
LONG bottom;
} RECT;
即一個矩形的上下左右
返回值:成功返回TRUE,失敗返回FALSE
參見 GetWindowRect
------------------------------
名稱 GetWindowRect
原型 BOOL WINAPI GetWindowRect(HWND hwnd, LPRECT lpRect)
描述 得到指定視窗的區域尺寸
hWnd 窗口控制碼
lpRect 指向RECT結構的指標,用來得到視窗的相關螢幕位置
參見 GetClientRect
------------------------------
名稱 ClientToScreen
原型 BOOL WINAPI ClientToScreen(HWND hwnd, LPPOINT lpPoint)
描述 將客戶區內一點的位置對應到相關螢幕位置上
hwnd 窗口控制碼
lpPoint 指向POINT結構的包含客戶區相關內容的指標
返回值:成功返回TRUE,失敗返回FALSE
參見 ScreenToClient
------------------------------
名稱 ScreenToClient
原型 BOOL WINAPI ScreenToClient(HWND hwnd, LPPOINT lpPoint)
描述 把lpPoint從視窗的區域轉到視窗客戶區
hwnd 窗口控制碼
lpPoint 點指針
返回值:成功返回TRUE,失敗返回FALSE
參見 ClientToScreen
------------------------------
名稱 MapWindowPoints
原型 int WINAPI MapWindowPoints(HWND hwndFrom, HWND hwndTo, LPPOINT lpPoints,UINT cPoints)
描述 把一組點從一個視窗轉換到另一個視窗
hwndFrom : 源窗口控制碼
hwndTo : 目的視窗控制碼
lpPoints : 點起始指針
cPoints : 點的個數
返回值:低 2位元組是轉換點數據時水平方向加的數值
高 2位元組是轉換點數據時垂直方向加的數值
參見 ScreenToClient,ClientToScreen.
------------------------------
名稱 GetMessage
原型 BOOL WINAPI GetMessage(LPMSG lpMsg,HWND hwnd,UINT wMsgFilterMin,UINT wMsgFilterMax)
描述 得到消息佇列中指定範圍的消息
lpMsg 指向欲得到消息的MSG消息結構
MSG結構定義如下:
typedef struct tagMSG {
HWND hwnd; //指定接收消息的視窗控制碼
UINT message; //指定消息的標稱序號
WPARAM wParam; //消息附帶的第一參數
LPARAM lParam; //消息附帶的第二參數
DWORD time; //指定消息張貼的時間
POINT pt; //當消息發生時,游標的位置
} MSG;
hwnd 視窗控制碼,如為NULL表示這一進程包含的全部父表單和子表單
wMsgFilterMin 消息篩檢程式低
wMsgFilterMax 消息篩檢程式高
實際上該函數只判斷在這個篩檢程式範圍之間的消息
當篩檢程式Min和Max都為0時表接收全部消息
返回值:如果得到WM_QUIT消息,返回0
如果得到其他消息,返回非0
如出錯返回-1
參見 PostMessage
-----------r------------------
名稱 SendMessage
原型 LRESULT WINAPI SendMessage(HWND hwnd, UINT Msg,WPARAM wParam,LPARAM lParam)
描述 給指定的視窗發送一個消息
這個消息是不進隊的,就是說它立即調用指定視窗的消息處理過程來處理這個消息,直到處理完
才返回。
hwnd 指定視窗的控制碼
Msg 消息
Wparam 消息參數1
lParam 消息參數2
返回值:依賴消息的不同,返回消息處理的結果
參見 PostMessage,GetMessage
------------------------------
名稱 PostMessage
原型 BOOL WINAPI PostMessage(HWND hwnd, UINT Msg, WPARAM wParam, LPARAM lParam)
描述 該函數將消息放到指定視窗的消息佇列中
這個消息佇列是先進先出的,包括鍵盤消息等,可以被GetMessage得到
hwnd 窗口控制碼
Msg 消息
wParam 消息參數1
lParam 消息參數2
返回值:成功返回TRUE,失敗返回FALSE
參見 GetMessage, PeekMessage
------------------------------
名稱 PostQuitMessage
原型 VOID WINAPI PostQuitMessage(int nExitCode)
描述 該函數貼入消息佇列中一個WM_QUIT消息並立即返回,指示系統該AP需要結束
nExitCode 退出碼,作為WM_QUIT的第二個參數
當從消息佇列中得到WM_QUIT消息時,該AP即退出WinMain中的消息迴圈,並將控制權交還系統
返給系統的退出值就是消息的第二個參數,即nExitCode
參見 GetMessage, PeekMessage, PostMessage
------------------------------
名稱 PostThreadMessage
原型 BOOL WINAPI PostThreadMessage(DWORD dwThreadId, UINT Msg, WPARAM wParam,LPARAM lParam)
描述 目前系統尚不支援線程,該函數功能目前等同於PostMessage
參見 PostMessage
------------------------------
名稱 PeekMessage
原型 BOOL WINAPI PeekMessage(LPMSG lpMsg, HWND hwnd, UINT uMsgFilterMin,UINT uMsgFilterMax, UINT wRemoveMsg)
描述 消息監聽器,我們用它來查看系統在消息佇列中是否有新的消息
lpMsg 指向消息結構
hwnd 要被監聽消息的視窗控制碼
wMsgFilterMin 消息篩檢程式低位元
wMsgFilterMax 消息篩檢程式高位
這裏的消息篩檢程式用來對消息過濾。
當wMsgFilterMin wMsgFilterMax 都為0,代表我們要監聽所有消息
wRemoveMsg 指定如何處理消息,它只能從下列值中選一:
PM_NOREMOVE 在PeedMessage處理後,消息不從消息佇列中刪除
PM_REMOVE 在PeedMessage處理後,消息從消息佇列中刪除
這個函數可以使程式檢查佇列中的下一個消息,就像“偷看”一樣,但並不實際刪除它。
這個監聽不像GetMessage那樣不將控制返回給程式,而是不論消息是否出現,立即返回。
當我們想在程式中一直做些事情,比如,畫些隨機的圖案,這不是簡單地在WM_PAINT中使用
While(TRUE)迴圈來實現的,因為這樣就無法處理其他消息了,我們就必須用到這個監聽函數:

while(TRUE)
{
if(PeekMessage($msg,NULL,0,0,PM_REMOVE))
{
if(msg.message==WM_QUIT) break;

TranslateMessage(&msg);
DispatchMessage(&msg);
}
else{
[在這裏寫我們的隨機繪圖函數了]
}
}
要注意的是,WM_QUIT消息必須檢查,因為如果GetMessage接到WM_QUIT消息將返回0,但PeekMessage
用它的返回值指示是否得到消息,所以WM_QUIT必須檢查。
參見 GetMessage
------------------------------
名稱 DispatchMessage
原型 LONG WINAPI DispatchMessage(CONST MSG *lpMsg)
描述 這個函數分發消息到視窗過程,它典型的是和GetMessage配套使用
lpMsg 指向消息結構
返回值:實際上這裏一般是忽略其返回值的
參見 GetMessage
------------------------------
名稱 GetCapture
原型 HWND WINAPI GetCapture(VOID)
描述 得到當前能接受筆觸的窗口
同一時間只能有一個視窗能接受筆觸
返回值:成功返回該視窗控制碼,如沒有視窗能接受筆觸返回NULL
參見 SetCapture ,ReleaseCapture
------------------------------
名稱 SetCapture
原型 HWND WINAPI SetCapture(HWND hwnd)
描述 將指定視窗設為可以接受筆觸
同一時間只能有一個視窗能接受筆觸
hwnd 欲設接受筆觸的窗口控制碼
返回值:成功返回上次接受筆觸的窗口控制碼;如沒有這樣的視窗返回NULL
參見 GetCapture
------------------------------
名稱 ReleaseCapture
原型 BOOL WINAPI ReleaseCapture(VOID)
描述 使當前接受筆觸的視窗不再接受筆觸
通常在SetCapture之後如有需要才調用此函數進行釋放
返回值:成功返回非0值,失敗返回0
參見 GetCapture, SetCapture,
------------------------------
名稱 SetTimer
原型 UINT WINAPI SetTimer(HWND hwnd, UINT idTimer, UINT uTimeout,TIMERPROC lpTimerFunc);
描述 用此函數為MicroWindow程式分配一個計時器
我們通過此函數設定系統間隔多長時間給你的程式正常視窗發送WM_TIMER消息。
當使用完計時器後,要調用KillTimer函數停止計時器消息。
在當前版本的MicroWindow中,計時器具有 的解析度
要注意的是,計時器消息也是在消息佇列中,並不一定在設置的計時器時間到後就會立即收到WM_TIMER
消息,程式只有在消息佇列中沒有其他消息時才能接收到。
要注意的是,不能直接用計時器來精確計時。
hwnd 接收WM_TIMER消息的視窗控制碼
idTimer 計時器ID,應該是個非0整數
如果使用多個計時器,那麼對每個計時器要使用不同的ID
當視窗過程收到WM_TIMER消息時,wParam參數等於計時器的ID,lParam參數為0
uTimerout 以毫秒為單位指定時間間隔,時間到後發送一次WM_TIMER消息
lpTimerFunc 計時器處理過程
當我們不指定此過程(該參數填為NULL)SetTimer會給視窗過程發送WM_TIMER消息;
如果我們指定一個過程處理計時器的動作,那麼SetTimer不會再顯式的發送WM_TIMER
消息,而是由此過程來處理。例如:
switch(message){
case WM_CREATE:
SetTimer(hwnd,ID_TIMER,1000,TimerProc);
return 0;
//...
}
VOID CALLBACK TimerProc(HWND hwnd,UINT message,UINT iTImerID,DWORD dwTIme)
{
//... ... do what you want
}
返回值:成功返回標識新計時器的整數;失敗返回0
參見 KillTimer
------------------------------
名稱 KillTimer
原型 BOOL WINAPI KillTimer(HWND hwnd, UINT idTimer);
描述 銷毀指定的計時器
hwnd 關聯指定計時器的視窗控制碼
idTimer 計時器ID
返回值:成功返回TRUE,失敗返回FALSE
參見 SetTimer
------------------------------
名稱 MwGetNextTimeoutValue
原型 UINT MwGetNextTimeoutValue(void)
描述 得到計時器下一個到時的值,單位為毫秒
返回值:返回此值,出錯返回0
參見 SetTimer
------------------------------
名稱 MwHandleTimers
原型 void MwHandleTimers(void)
描述 檢查並且執行已經到時的計時器
參見 SetTimer
------------------------------
名稱 GetSystemMetrics
原型 int WINAPI GetSystemMetrics(int nIndex)
描述 得到系統變數和系統設定,所有單位以圖元為准
nIndex 希望得到的系統設定索引
當前版本的MicroWindow支持如下值:
SM_CXSCREEN 螢幕寬度
SM_CYSCREEN 螢幕高度
SM_CXVSCROLL 垂直捲軸塊寬度
SM_CYHSCROLL 水平捲軸塊高度
SM_CYVSCROLL 垂直捲軸塊高度
SM_CXHSCROLL 水平捲軸塊寬度
SM_CYCAPTION 標題區域高度
SM_CXBORDER 窗口捲軸邊框寬度
SM_CYBORDER 窗口捲軸邊框高度
SM_CXDLGFRAME 對話方塊橫邊寬度
SM_CYDLGFRAME 對話方塊縱邊寬度
SM_CXICON 圖示缺省的寬度
SM_CYICON 圖示缺省的高度
SM_CYMENU 菜單區高度
SM_CXFRAME 水平邊框寬度
SM_CYFRAME 垂直邊框高度
返回值:得到相應索引對應的系統值
參見
------------------------------
名稱 CreateCaret
原型 BOOL CreateCaret(HWND hWnd, int nWidth, int nHeight)
描述 產生一個新的系統游標,並將其分配給指定的視窗
只有一個視窗得到鍵盤輸入焦點或啟動時才能給其創建游標
在失去鍵盤輸入焦點前應銷毀游標
hWnd 屬主窗口控制碼
nWidth 游標寬度
nHeight 游標高度
返回值:成功創建返回TRUE;失敗返回FALSE
參見 ShowCaret ,HideCaret,DestroyCaret
------------------------------
名稱 ShowCaret
原型 BOOL ShowCaret(HWND hWnd)
描述 使游標出現在螢幕的在游標位置上
當游標出現後即會自動閃爍
只有視窗自己擁有游標,且游標有自己的形狀,並且不被隱藏時才會出現
HideCaret是效果疊加的,舉例說,如果你在程式中調過3次HideCaret,那就必需再用ShowCaret
才能顯示游標
hWnd 游標屬主窗口控制碼
返回值:成功返回TRUE;失敗返回FALSE
參見 HideCaret,CreateCaret
------------------------------
名稱 HideCaret
原型 BOOL HideCaret(HWND hWnd)
描述 隱藏游標。游標隱藏後並沒有破壞它的形狀和游標位置
hWnd 游標屬主窗口控制碼
返回值:成功返回TRUE;失敗返回FALSE
參見 ShowCaret,CreateCaret
------------------------------
名稱 ActiveCaret
原型 BOOL ActiveCaret(HWND hWnd)
描述 指定游標要顯示在哪個視窗
hWnd 屬主窗口控制碼
返回值:成功返回TRUE;失敗返回FALSE
參見 CreateCaret
------------------------------
名稱 GetCaretBlinkTime
原型 UINT GetCaretBlinkTime(HWND hWnd)
描述 得到以毫秒為單位的游標閃爍間隔
hWnd 游標屬主窗口控制碼
返回值:成功返回閃爍間隔;失敗返回0
參見 SetCaretBlinkTime
------------------------------
名稱 SetCaretBlinkTime
原型 BOOL SetCaretBlinkTime(HWND hWnd, UINT uTime)
描述 以毫秒為單位設置游標閃爍間隔
hWnd 游標屬主窗口控制碼
uTime 毫秒值,現在只支持500毫秒(即每秒閃動一次)
返回值:成功返回TRUE;失敗返回FALSE
參見 SetCaretBlinkTime
------------------------------
名稱 DestroyCaret
原型 BOOL DestroyCaret(HWND hWnd)
描述 銷毀指定視窗的游標
只有視窗擁有游標時才能銷毀,否則該函數會立即返回FALSE
hWnd 游標屬主窗口控制碼
返回值:成功返回TRUE;失敗返回FALSE
參見 CreatCaret
------------------------------
名稱 SetCaretPos
原型 BOOL SetCaretPos(HWND hWnd, int x, int y)
描述 移動游標到指定位置
不管游標是否可見,此函數都會移動游標的位置
hWnd 游標屬主窗口控制碼
x 游標位置橫標
y 游標位置縱標
參見 GetCaretPos
------------------------------
名稱 GetCaretPos
原型 BOOL GetCaretPos(HWND hWnd, PPOINT pPt)
描述 得到游標位置
hWnd 游標屬主窗口控制碼
pPt 指向POINT結構的游標位置
返回值:成功返回TRUE;失敗返回FALSE
參見 SetCaretPos
------------------------------
**********************************
* GDI函數 *
**********************************
------------------------------
名稱 GetDC
原型 HDC WINAPI GetDC(HWND hwnd)
描述 該函數返回指向當前視窗客戶區的顯示設備描述表控制碼
我們可以用這個返回的控制碼來使用GDI(圖形設備介面:Graphics Device Interface)函數
在顯示設備上畫圖,並不改變設備的顯示區域資料
hwnd 視窗控制碼,如為NULL表當前螢幕
需要說明的是,當我們想在一個圖形輸出設備上繪圖時,必須先獲得一個設備描述表(DC)的控制碼。
將控制碼返回給程式時,系統就給與了對這個設備的許可權,然後我們才能在GDI函數中將這個控制碼作為
參數,來標識想在其上進行繪圖的設備。
使用GetDC使我們在非WM_PAINT消息期間也能得到設備描述表控制碼,但在退出視窗函數之前必須要
調用ReleaseDC來將其釋放。而BeginPaint和EndPaint函數在進行繪圖的WM_PAINT消息期間使用。
這個函數等同於 GetDCEx(hwnd, NULL, DCX_DEFAULTCLIP|DCX_EXCLUDEUPDATE);
返回值:如果成功返回指定視窗客戶區的設備描述表控制碼
失敗返回NULL
參見 GetDCEx,ReleaseDC,BeginPaint,EndPaint,GetWindowDC
------------------------------
名稱 GetDCEx
原型 HDC WINAPI GetDCEx(HWND hwnd,HRGN hrgnClip,DWORD flags)
描述 這是GetDC函數的超集合,除了GetDC的功能外,向應用程式額外提供了在客戶區域的剪切控制
hwnd 窗口控制碼
hrgnClip 指定可能和設備描述表可視區域接合的剪切區域
flags 指定設備描述表如何被創建。現版本的MicroWindow只支援:
DCX_WINDOW
DCX_DEFAULTCLIP
返回值:如果成功返回指定視窗客戶區的設備描述表控制碼
失敗返回NULL
參見 GetDC
------------------------------
名稱 GetWindowDC
原型 HDC WINAPI GetWindowDC(HWND hWnd)
描述 這個函數可以獲取整個視窗而不僅限於視窗客戶區的設備描述控制碼,同樣的,也必須要在使用完畢
後用ReleaseDC釋放。
這個設備描述表除了客戶區外,還包括視窗的標題欄、功能表、捲軸和框架。
正常情況下,在非客戶區繪圖是不推薦的。如果想嘗試使用GetWindowDC,必須捕獲WM_NCPAINT
(非客戶區繪製)消息。
返回值:如果成功返回指定視窗客戶區的設備描述表控制碼
失敗返回NULL
參見 GetDC
------------------------------
名稱 ReleaseDC
原型 int WINAPI ReleaseDC(HWND hWnd, HDC hDC)
描述 釋放設備描述表控制碼,以便其他應用可以使用。
要注意的是,所有應用GetDC或GetDCEx、GetWindowDC來獲得設備描述表控制碼後,都必須用
ReleaseDC來釋放;但是用CreateDC函數生成的DC不可以使用ReleaseDC來釋放,它必須用
DeleteDC來刪除
hwnd 窗口控制碼
hDC 要釋放的設備描述表控制碼
返回值:如果成功釋放返回1;否則返回0
參見 GetDC,CreateDC,DeleteDC
------------------------------
名稱 DeleteDC
原型 BOOL WINAPI DeleteDC(HDC hdc)
描述 刪除一個創建的設備描述表控制碼
只有調用CreateDC創建的設備描述表才能用此函數刪除。
hdc 要釋放的設備描述表控制碼
返回值:成功刪除返回TRUE;失敗返回FALSE
參見 CreateDC
------------------------------
名稱 CreateDC
原型 HDC CreateDC(LPCTSTR lpszDriver,LPCTSTR lpszDevice,LPCTSTR lpszOutput,CONST DEVMODE *lpInitData)
描述 用指定的名稱創建一個設備描述表
實際上,lpszDriver 只有在一種情況下才有意義,那就是當其為“DISAPLY”時,這時後面其他
參數必須都填為NULL,例如:
hdc=CreateDC(TEXT("DISPLAY"),NULL,NULL,NULL);
返回值:如果成功返回創建的設備描述表控制碼
失敗返回NULL
參見 GetDC,DeleteDC
------------------------------
名稱 GetDeviceCaps
原型 int WINAPI GetDeviceCaps(HDC hdc, int nIndex)
描述 設備描述表通常是指一個物理設備,可以通過此函數得到它的屬性資訊
hdc 指定的設備描述表控制碼
nIndex 指定要得到的屬性資訊索引,它可以是:
HORZRES 返回螢幕水平顯示圖元數
VERTRES 返回螢幕垂直顯示圖元數
BITSPIXEL 顯示一個圖元需要的bits數
PLANES planes 的數目
SIZEPALETTE 顏色數
返回值:指定的屬性資訊
參見
------------------------------
名稱 BeginPaint
原型 HDC WINAPI BeginPaint(HWND hWnd, LPPAINTSTRUCT lpPaint)
描述 得到視窗圖形設備和畫圖區域,準備繪製填充指定視窗
hwnd 窗口控制碼
lpPaint 指向準備接收繪圖資訊的PAINTSTRUCT 結構指標
PAINTSTRUCT 結構定義如下:
typedef struct tagPAINTSTRUCT {
HDC hdc; //準備繪圖的設備描述表控制碼
BOOL fErase; //指定背景是否擦除
RECT rcPaint; //指定一個RECT結構的繪圖區域
BOOL fRestore; //保留
BOOL fIncUpdate; //保留
BYTE rgbReserved[32]; //保留
} PAINTSTRUCT;
BeginPaint會發WM_ERASEBKGND 消息給視窗擦寫畫圖區域成背景色
應用程式應當在WM_PAINT處調用BeginPaint,畫圖結束後須調用EndPaint釋放設備描述表
返回值:成功返回圖形設備的控制碼, 失敗返回NULL
參見 EndPaint,GetDC
------------------------------
名稱 EndPaint
原型 BOOL WINAPI EndPaint(HWND hWnd, CONST PAINTSTRUCT *lpPaint)
描述 畫圖結束後釋放由BeginPaint獲得的圖形設備描述表
該函數必須配合BeginPaint函數使用
hWnd 窗口控制碼
lpPaint 畫圖區域指標,調用BeginPaint所得到的指標
參見 BeginPaint
------------------------------
名稱 SetTextColor
原型 COLORREF WINAPI SetTextColor(HDC hdc, COLORREF crColor)
描述 設置顯示字元顏色
hdc 圖形設備描述表控制碼
crColor 顏色值,如果系統無此顏色值將選用最接近的顏色
因為目前只有16級灰度,所以顏色值也只有16種。
COLORREF 為系統定義的結構,實際上就是對RGB(紅黃藍)的顏色組合,這是一個
DWORD 類型的變數(4位元組)。
系統所有的16種顏色定義如下:
BLACK 黑
BLUE 藍
GREEN 綠
CYAN 青色
RED 紅
MAGENTA 紫
BROWN 棕
LTGRAY 淺灰
GRAY 灰
LTBLUE 淺藍
LTGREEN 淺綠
LTRED 淺紅
LTMAGENTA淺紫
YELLOW 黃
WHITE 白
雖然我們不能表現彩色,但這些對應都是將彩色的顏色轉換到灰階顯示上的最接近對比。
返回值:圖形設備的舊顏色值,如失敗返回CLR_INVALID
參見 TextOut ,GetTextColor,ExtTextOut
------------------------------
名稱 GetTextColor
原型 COLORREF WINAPI GetTextColor(HDC hdc)
描述 得到指定的顯示設備的字元輸出顏色
hdc 圖形設備描述表控制碼
返回值:成功返回顏色值,如失敗返回CLR_INVALID
參見 TextOut ,SetTextColor,ExtTextOut
------------------------------
名稱 SetBkColor
原型 COLORREF WINAPI SetBkColor(HDC hdc, COLORREF crColor)
描述 設置顯示背景色,包括為TextOut和ExtTextOut設置背景色
hdc 圖形設備的控制碼
crColor 顏色值,如果系統無此顏色值將選用最接近的顏色
返回值:圖形設備的舊顏色值,如失敗返回CLR_INVALID
參見 GetBKColor
------------------------------
名稱 GetBkColor
原型 COLORREF WINAPI GetBkColor(HDC hdc)
描述 得到當前指定的圖形設備的背景色
hdc 圖形設備的控制碼
返回值:圖形設備的舊顏色值,如失敗返回CLR_INVALID
參見 SetBKColor
------------------------------
名稱 GetSysColor
原型 DWORD WINAPI GetSysColor(int nIndex)
描述 從指定的顯示元素中得到當前的顏色
實際上這些元素組成了整個的視窗過程。
nIndex 顏色的索引值,它必須是下面整數中的一個(0~40):
0 捲軸顏色
1 背景顏色
2 活動標題欄
3 活動標題欄
4 活動標題欄
5 非啟動標題欄
6 非啟動標題欄
7 非啟動標題欄
8 菜單
9 表單
10 窗口框架
11 功能表文字
12 視窗文本
13 標題欄文字
14 活動邊界
15 非啟動邊界
16 工作空間
17 高亮
18 高亮文本
.
.
40
這些值定義在 wingdi.h 中。
返回值:顏色值,如失敗返回0
參見 SetSysColor
------------------------------
名稱 SetSysColor
原型 COLORREF WINAPI SetSysColor(int nIndex, COLORREF crColor)
描述 設置系統顏色值為指定的顯示元素
nIndex 顏色的索引值
crColor 顏色值。
返回值:成功返回舊顏色值,失敗返回0
參見 GetSysColor
------------------------------
名稱 SetBkMode
原型 int WINAPI SetBkMode(HDC hdc, int iBKMode)
描述 設定指定圖形設備的背景混合模式
hdc 圖形設備描述表控制碼
iBKMode 指定背景模式,目前只支援
OPAQUE 畫圖前用圖形設備的背景色擦寫畫圖區域。這是缺省模式。
返回值:返回值:成功返回舊模式,失敗返回0
參見 GetBkMode
------------------------------
名稱 GetBkMode
原型 int GetBkMode(HDC hdc);
描述 得到指定顯示設備的背景混合模式
參見 SetBkMode
------------------------------
名稱 DrawText
原型 int WINAPI DrawText(HDC hdc, LPCSTR lpString, int nCount, LPRECT lpRect,UINT uFormat)
描述 在指定區域顯示文字
hdc 圖形設備描述表控制碼
lpString 字串指針
nCount 要顯示字元數。如其為-1,那麼lpString參數一定是一個以NULL結尾的字串,此時
DrawText會自動計算字元數目
lpRect 指向一個包含文字顯示區域的RETC結構
uFormat 指定文字的顯示方式,它可以是下面列表的組合:
DT_CALCRECT 只計算顯示區域的寬高,存入lpRect,立即返回字元高度,不顯示字元
DT_CENTER 顯示字元在顯示區域的正中
DT_RIGHT 顯示字元在顯示區域的最右邊
DT_LEFT 顯示字元在顯示區域的最左邊,這是系統缺省方式
返回值:成功返回字元高度,失敗返回0
參見 TextOut
------------------------------
名稱 TextOut
原型 BOOL WINAPI TextOut(HDC hdc, int x, int y, LPCSTR lpszString, int cbString)
描述 使用當前選定的字體、背景和字體顏色,在指定位置顯示字串
hdc 圖形設備描述表控制碼
x 左上角的起始橫標
y 左上角的起始縱標
lpszString 指向要顯示的字串,這個字串不必須是以NULL結尾的,因為cbString會指定長度
cbString 字串長度
返回值:成功返回非零值;失敗返回0
參見 SelectObject, SetBkColor, SetTextColor
------------------------------
名稱 DrawTextW
原型 int WINAPI DrawTextW(HDC hdc, LPCWSTR lpString, int nCount, LPRECT lpRect,UINT uFormat)
描述 在這裏實際與DrawText等效
參見 DrawText
------------------------------
名稱 SetTextAlign
原型 UINT WINAPI SetTextAlign(HDC hdc, UINT fMode)
描述 設定在指定設備描述表中的文字排列方式
同樣的文字可以有不同的排列方式,比如可以是橫排,從左向右,也可以從右向左;古書還多有從
右上到左下的。
hdc 設備描述表控制碼
fMode 排列方式,它可以是下面列表中不衝突的組合:
TA_BASELINE 以當前文本基線為准
TA_BOTTOM
TA_TOP
TA_CENTER
TA_RIGHT
TA_LEFT
返回值:成功返回前次的排列方式;失敗返回GDI_ERROR
參見 ExtTextOut, TextOut
------------------------------
名稱 SetROP2
?
原作者: GGV
來源: GGV