2011-07-08 156 views
0

的Win32 API:更改對話框

所以我們可以說我有2菜單項的對話框中,「菜單項」和「菜單項B」

當我點擊「菜單項」我希望當前對話框的主屏幕更改爲對話框A的屏幕

當我單擊「菜單項目B」時,我希望當前對話框的主屏幕更改爲對話框B的屏幕。

我該怎麼做?我是新來的win32 api,提前感謝!

+0

您是否有對話框資源定義對話框A和對話框B的控件?或者您是否手動創建對話框屏幕的所有控件? – MerickOWA

回答

1

通常的做法是將兩個子容器對話框作爲外框窗口的子項;我們稱它們爲dialogA和dialogB。這些包含兩個對話框的控件。當你想從一個切換到另一個時,使用ShowWindow()來顯示一個對話框並隱藏另一個對話框。在Win32中,隱藏HWND也隱藏了所有的子控件,所以你可以通過將它們分組在子窗口中來輕鬆地隱藏和顯示控件組。

這是一般技術的概述。至於子對話框,您可以使用CreateWindow()手動創建它們,也可以使用CreateDialog()讓窗口爲您創建從對話框模板創建子控件的工作。

這種技術本質上是屬性表和嚮導所做的。 (屬性表添加一個選項卡控件而不是菜單來控制顯示哪個,而嚮導具有next/prev按鈕。)

+0

因此,基本上如果你提供一個父級,子級窗口/對話框顯示在它的父級內,並且該位置是相對於父級的? – Joel

+1

正確;當您使用CreateWindow或SetWindowPos定位子窗口(具有WS_CHILD樣式的窗口)時,座標被解釋爲相對於父窗口。 – BrendanMcK