Блокирование действия кнопки максимизировать / минимизировать CDialog - PullRequest
0 голосов
/ 01 ноября 2010

Я использую mfc CDialog.Мне нужно показать кнопку закрытия и свернуть / развернуть, но они не должны закрывать или разворачивать диалог.Я переопределил метод OnClose и сохранил диалоговое окно открытым даже при нажатии кнопки закрытия.Но я не могу заблокировать максимизацию и минимизацию диалога, так как, похоже, нет метода OnMaximize.Есть ли альтернативный способ?

Ответы [ 2 ]

2 голосов
/ 01 ноября 2010

Вам нужно обработать сообщение WM_SYSCOMMAND, следя за wParam == SC_MAXIMIZE.

Если вы ловите SC_MINIMIZE, вы можете делать то, что вы хотите, и не передавать его в Windows.

* 1008 MSDN *

Нашел этот фрагмент здесь.

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 голосов
/ 01 ноября 2010

Вы не можете отображать значки минимизации / максимизации в вашем диалоговом окне. Вы можете сделать это, перейдя в Свойства диалогового окна (щелкните правой кнопкой мыши на Dialog Contorol -> Свойства), выберите «Стили» и снимите флажок «Свернуть окно», «Свернуть поле».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...