Вопрос № 28207: Добрый День ЭКСперты!!!
Вот такая вот незадача...помогите.
Как мне сделать так чтобы дочернее окно запрещало доступ к основному окну те к родительскому???
Например такая функция как MessageBox при вызове запрещает доступ к основному окну...
Вопрос № 28.207
Добрый День ЭКСперты!!!
Вот такая вот незадача...помогите.
Как мне сделать так чтобы дочернее окно запрещало доступ к основному окну те к родительскому???
Например такая функция как MessageBox при вызове запрещает доступ к основному окну пока не получит ответ от пользователя.
Как мне осуществить ето??? уже всё испробовал.
За ранее спасибо. Надеюсь все поняли.
Отправлен: 24.10.2005, 07:47
Вопрос задал: PRiSon (статус: 1-ый класс)
Всего ответов: 5 Мини-форум вопроса >>> (сообщений: 1)
Отвечает: Jadd
Здравствуйте, PRiSon!
Вероятно имеется ввиду модальные диалоги. Есть функция CreateDialog, которая позволяет делать такие вещи. Но, по моему глубогому убеждению, писать их на чистом WINAPI - дело гиблое и ненужное. Есть MFC у мелкософта, есть VCL у борланда. Например, на WinAPI чатсь кода, вызывающая диалог, выглядит примерно так:
if (DialogBox(hinst, MAKEINTRESOURCE(DLG_DELETEITEM), hwnd, (DLGPROC)DeleteItemProc)==IDOK) .....дальше как тебе угодно. Учти, что в диалоге тоже придется описывать перехват сообщений. Посчитай накладные расходы и сделай выбор в пользу каркасных библиотек (т.е. MFC и/или VCL).
--------- Если в сердце дверь закрыта, нужно в печень постучаться
Ответ отправил: Jadd (статус: Практикант)
Отправлен: 24.10.2005, 09:13
Отвечает: VampSergey
Здравствуйте, PRiSon!
В случае MessageBox'a надо указать HANDLE материнского окна:
MessageBox(hWnd, "text", "caption", MB_OK);
Ответ отправил: VampSergey (статус: 1-ый класс)
Отправлен: 24.10.2005, 14:34
Отвечает: Лысков Игорь Витальевич
Здравствуйте, PRiSon!
Создавай второе не OVERLAPPED окно, а POPUP окно, например с такими стилями:
DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION
--------- Удачи!
Отвечает: Bob Johnson
Здравствуйте, PRiSon!
Есть такая функция EnableWindow (HWND, bEnable). вот вызывай ее с хэндлом родительского окна и она "запретит" к нему доступ. MessageBox же устроен примерно таким образом:
{
EnableWindow (hParent, false);
CreateWindow (hParent, ...);
Message_Loop;
EnableWindow (hParent, true);
}
Message Loop в середине нужен для того, чтобы функция не вернула управление назад до того, как окно будет закрыто.
Ответ отправил: Bob Johnson (статус: Академик)
Отправлен: 24.10.2005, 21:18
Отвечает: estiGi
Здравствуйте, PRiSon!
Такая функция, как MessageBox - это на самом деле модальный диалог. Она не то чтобы запрещает доступ к родителю, она не дает закрыть программу, пока диалог не закрыт, навное так правильнее...
В классе CDialog есть функция DoModal - запуск модального диалога, или если на АПИ - DialogBox
Ответ отправил: estiGi (статус: 2-ой класс)
Отправлен: 26.10.2005, 00:07