• Познакомьтесь с пентестом веб-приложений на практике в нашем новом бесплатном курсе

    «Анализ защищенности веб-приложений»

    🔥 Записаться бесплатно!

  • CTF с учебными материалами Codeby Games

    Обучение кибербезопасности в игровой форме. Более 200 заданий по Active Directory, OSINT, PWN, Веб, Стеганографии, Реверс-инжинирингу, Форензике и Криптографии. Школа CTF с бесплатными курсами по всем категориям.

Проблема с дочерним окном.

  • Автор темы juicy_emad
  • Дата начала
Статус
Закрыто для дальнейших ответов.
J

juicy_emad

> USE: WIN32 API & Microsoft Visual Studio 6.5 C++.
У меня есть проект, где я создал главное окно с использованием функции CreateWindowEx. А также я создал диалог, поместил его в ресурсы, и создал его как окно с пом. функции DialogBoxParam. Диалог я создавал в отдельном потоке, и решил сделать окно диалога дочерним...
Поставил стиль CHILD в редакторе диалога, указал хендл родительского окна в функции DialogBoxParam; А в результате у меня ничего не получилось. Я решил поставить стиль POPUP диалогу, но я сталкнулся с проблемами (Ручная обработка событий типа: WM_KILLFOCUS, WM_NCACTIVATE, WM_NCLBUTTONDOWN - в обработчике главного окна, просто для того, чтобы это якобы дочернее окно сворачивалось вместе с главным.)... Мне просто нужно, чтобы можно было легко переключать фокус ввода кликая сначало по одному окну, потом по другому; Мне нужно чтобы они вместе сворачивались и разворачивались. Как мне это сделать?
Я потратил на это кучу времени. Очень прошу помочь мне (Очень прошу с исходниками проекта :) ). Заранее спасибо всем за помощь.
 
M

Maxx

функция DialogBoxParam создает модальный диалог
можно создать немодальный диалог - функция CreateDialog
а цикл обработки сообщений сделать примерно таким

Код:
MSG msg;
while (GetMessage(&msg, 0, 0, 0))
{
if (!IsWindow(hDialogWnd) || !IsDialogMessage(hDialogWnd, &msg))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
}

hDialogWnd - дескриптор диалогового окна

теперь главное окно и диалог сворачиваются и разворачиваются вместе
и переключаться между ними можно мышой без дополнительного кода
 
O

orcommander

Кстати, у меня на эту же тему вопрос: в дочернее окно не могу вклеить меню.
Если в CreateWindow не устанавливаю WS_CHILD для дочернего - меню есть, пишу - нету.

Нэндл меню передаю, хэндл родительского окна передаю.

Смысл проблемы - нужно дочернее окно, которое в "рамках" родительского (сворачивается в нем) и менюха в родительском (вопроса нет) и в дочернем (это проблема).
 
M

Maxx

в MSDN товарищи написали:
A menu can be assigned to any window that is *** NOT *** a child window.

можно сделать приложение на основе MDI только с одним (или сколько надо) окном
и отслеживать его состояние, положение, размер
и будет у него меню и сворачиваться будет
пример создания такого приложения (только без меню) поставляется с MSDAC SDK,
называется RowsetViewer
 
O

orcommander

Thx, дело в том что на данный момент msdn'a небыло. Были справочники только по api.
 
Статус
Закрыто для дальнейших ответов.
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!