API之子視窗建立

2021-09-30 03:38:42 字數 1470 閱讀 3932

步驟:1、新建視窗類,在視窗類中指名對應的自定義的視窗過程。視窗類類名要唯一,它     

是各視窗類相互區別的標識。注意,類名或為靜態變數,或為全域性變數,因為程

序隨時都用他們。

2、建立窗體時,指定其風格之一為

ws_child

,指定其父視窗控制代碼,得到父窗體實

例句柄,並賦給子窗體。

3、在主窗體的create訊息中,建立0尺寸的子窗體,主窗體的size訊息中,利用

movewindow函式,重設窗體大小,重置窗體位置。

例項為ctrl002,ctrl003

子視窗向父視窗傳送訊息

createwindow呼叫使用下面這些引數:

class name(類別名稱)

window text(視窗文字)

window style(視窗樣式)

x position(x位置)

y position(y位置)

width(寬度)

height(高度)

parent window(父視窗)

child window id(子視窗id)

instance handle(執行實體控制代碼

)extra parameters(附加引數)

text ("button")

button[i].sztext

ws_child|ws_visible|button[i].istyle

cxchar

cychar * (1 + 2 * i)

20 * xchar

7 * cychar / 4

hwnd

(hmenu)i

((lpcreatestruct) lparam) -> hinstance

null

說明:從wm_command區別出單擊了哪個按鈕。通過子視窗的id號來區分。每個子視窗在建立時,就已經分配了乙個唯一的id號。id號包含在

wm_command

訊息中wparam

的低位元組位。用loword()巨集來獲取id。

「用滑鼠單擊按鈕時,子視窗控制就向其父視窗傳送乙個wm_command訊息。...捕獲wm_command訊息....」

「loword(wparam)   子視窗id

hiword(wparam)    通知碼

lparam              子視窗控制代碼」

說明:1、

窗體類別必需是static類,否則程式不能生成靜態窗體

2、利用

getwindowlong

得到窗體例項控制代碼

3、hwnd是數值型別,可以定義成陣列

4、建立子窗體時,將大小設為0,以便重置

4、利用movewidow(...)函式重置靜態子窗體位置

執行結果如下圖

API建立建立子視窗

define idc static 106 api建立建立子窗,通過 createwindow 函式實現,id號要在 case wm create bsettimer false hwndchild1 createwindow static ws visible ws child,loword lp...

使用c 建立windows視窗(基於api)

看到這個標題,你也許會驚訝 c 也能這樣建立?是的,沒錯,大多數使用api來建立視窗的是c c 當然也有其他的語言,但是幾乎沒有看到使用c 來建立的 不包括.net框架的 因為.net有著非常高效的開發方式,所以大部分人選擇了規避。傳統的win32視窗程式入口點是 winmain 函式,但是我們在使...

用Win32 API建立不規則視窗

win32 api 支援建立不規則視窗,現在很多軟體使用這個技術,如 quicktime,windows media player 7等。a b使用api建立不規則視窗主要有兩種方式,即向量形狀疊加 布林運算 和點陣圖區域兩種。無論哪種方式,都可以實現上面兩圖的效果。在編寫這樣的視窗 前,我們必須清...