2010-11-01 109 views
0

我正在使用mfc CDialog。我需要顯示關閉和最小化/最大化按鈕,但不應關閉或最大化對話框。我已經重寫OnClose方法並保持對話框打開,即使點擊關閉按鈕。但我無法阻止對話框的最大化和最小化,因爲似乎沒有OnMaximize方法。有其他方法嗎?阻止CDialog的最大化/最小化按鈕的動作

+0

9個問​​題,0接受? – egrunin 2010-11-01 12:58:36

回答

2

您需要處理WM_SYSCOMMAND消息,請注意wParam == SC_MAXIMIZE

如果你抓住了SC_MINIMIZE,你可以做你想做的事情,而不是將它傳遞給Windows。

msdn

找到這個片段here.

const int WM_SYSCOMMAND= 0x0112; 
const int SC_MAXIMIZE= 0xF030; 
protected override void WndProc(ref Message m) 
{ 
    if(m.Msg==WM_SYSCOMMAND) 
    { 
     if((int)m.WParam==SC_MAXIMIZE) 
     { 
      MessageBox.Show("Maximized!!"); 
      return; // swallow the message 
     } 
    } 
    base.WndProc (ref m); 
} 
+0

感謝egrunin ...它像一個魅力......你是一個救世主...感謝:) – 2010-11-01 13:18:40

+0

現在「接受」我的答案,我們都會很高興:) – egrunin 2010-11-01 13:52:48

0

您無法在您的對話框中顯示最小化/最大化圖標。您可以通過轉到Dialog屬性(右鍵單擊Dialog Contorol - > Properties),選擇Styles pain並取消選擇'Minimize Box','Maximize Box'來實現這一點。

+0

是的謝謝,我知道,但我需要的箱子可見...但行動不應該對他們工作。 – Ashish 2010-11-01 13:15:12

相關問題