我的應用程序使用堆疊對話框在多個位置的選項之間進行選擇。例如,下面的對話框使用兩個堆疊的對話框:MFC子對話框意外更改大小
- 要選擇「拍攝方法」,用戶可以從右下角的下拉列表中進行選擇。這改變了它上面的一個子對話框。
- 「高級選項」框(位於子對話框中)在簡化的界面和更完整的界面之間進行選擇。
在每種情況下,堆疊的對話框是使用圖像對象作爲父對話框的佔位符來實現。選擇頁面時,將調用SetWindowPos來移動/調整子對話框(pNewPage)的大小以適應佔位符。
// Show the newly selected page
pNewPage->ShowWindow (SW_SHOW) ;
pNewPage->SetFocus() ;
// Position the newly selected page
CRect rcDlgArea ;
GetDlgItem (IDC_DLG_AREA)->GetWindowRect (&rcDlgArea) ;
ScreenToClient (&rcDlgArea) ;
pNewPage->SetWindowPos (this,
rcDlgArea.left, rcDlgArea.top, rcDlgArea.Width(), rcDlgArea.Height(),
SWP_NOACTIVATE) ;
這工作得很好,直到如今,我卻在德國的用戶之一是有一個問題,我無法解釋。當他打開工具,層疊的頁面出現這樣看:
注意,子窗口被拉伸,這樣在孩子對話文本顯示比父文本大。
除了可視化佈局問題之外,子對話框還似乎「覆蓋」右下角(位於父對話框中)的選擇下拉列表。儘管下拉列表仍然可見,但在單擊下拉列表時,不會收到CBN_SELCHANGE消息。
我無法解釋爲什麼子對話框正在重新調整比例。正如你上面看到的,我試圖非常明確地調整對話框的大小,但這似乎不起作用。
任何人都可以想到爲什麼子對話框可能會在某些系統上重新調整比例而不是在其他系統上?任何幫助將不勝感激。
謝謝
邁克爾
這對我來說似乎很奇怪 - 兩種不同的尺寸。我認爲DLU在整個系統中是一致的。用戶似乎認爲該系統是存貨,但似乎不太可能。我假設這是孩子對話字體大小錯誤,但我會檢查用戶哪一個匹配系統的其餘部分。 –