Форум программистов, компьютерный форум, киберфорум
C/C++: WinAPI
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/18: Рейтинг темы: голосов - 18, средняя оценка - 4.50
12 / 11 / 2
Регистрация: 03.04.2016
Сообщений: 502

ShowWindow под MFC и под Winapi

17.11.2019, 19:47. Показов 3761. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Столкнулся с такой заморочкой.
Под MFC - BOOL ShowWindow( int nCmdShow );
Под Winapi - BOOL ShowWindow(HWND hWnd, int nCmdShow);
У меня Winapi функция(CreateDialog) возвращает HWND. Но как мне теперь это HWND использовать под MFC, если там принимается только один аргумент?
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
17.11.2019, 19:47
Ответы с готовыми решениями:

Есть ли аналог winapi функции showWindow в Linux?
Есть ли аналог winapi функции showWindow в Linux? Заранее спасибо.

Воткнуть 3 харда в комп (2 из которых SSD) 1 под систему 1 под игры и 1 под файлопомойку
И так задумываюсь о сборке пк для "Покатать" посетила такая мысль а что если воткнуть 3 харда в комп (2 из которых SSD) 1 под систему 1...

Двойная буферизация под Win на VC++ (MFC)
Двойная буферизация под Win на VC++(MFC) - кто-нибудь знает - это вообще возможно?? Или по-другому: можно-ли создать в MFC SDI копию...

10
фрилансер
 Аватар для Алексей1153
6473 / 5693 / 1131
Регистрация: 11.10.2019
Сообщений: 15,171
17.11.2019, 20:07
zombivadim, используй апишные функции. MFC - это тот же WinAPI, только с обёртками, "из MFC" можно спокойно вызывать WinAPI
0
12 / 11 / 2
Регистрация: 03.04.2016
Сообщений: 502
17.11.2019, 20:09  [ТС]
Цитата Сообщение от Алексей1153 Посмотреть сообщение
"из MFC" можно спокойно вызывать WinAPI
Подскажите как мне в данном случае вызвать ShowWindow?
0
фрилансер
 Аватар для Алексей1153
6473 / 5693 / 1131
Регистрация: 11.10.2019
Сообщений: 15,171
17.11.2019, 20:11
zombivadim, а, ты вон, про что. Так создавай диалог при помощи CDialog
0
12 / 11 / 2
Регистрация: 03.04.2016
Сообщений: 502
17.11.2019, 20:12  [ТС]
Цитата Сообщение от Алексей1153 Посмотреть сообщение
Так создавай диалог при помощи CDialog
не могу мне надо воспользоваться именно CreateDialog.
0
фрилансер
 Аватар для Алексей1153
6473 / 5693 / 1131
Регистрация: 11.10.2019
Сообщений: 15,171
17.11.2019, 20:14
Цитата Сообщение от zombivadim Посмотреть сообщение
ShowWindow(HWND hWnd, int nCmdShow)
ну а что мешает вызвать данную функцию, указав хендл диалога?
0
12 / 11 / 2
Регистрация: 03.04.2016
Сообщений: 502
17.11.2019, 20:15  [ТС]
Цитата Сообщение от Алексей1153 Посмотреть сообщение
"из MFC" можно спокойно вызывать WinAPI
Так можно вызвать ShowWindow, без обертки MFC или нет.

Добавлено через 38 секунд
Цитата Сообщение от Алексей1153 Посмотреть сообщение
ну а что мешает вызвать данную функцию, указав хендл диалога?
А как?
0
фрилансер
 Аватар для Алексей1153
6473 / 5693 / 1131
Регистрация: 11.10.2019
Сообщений: 15,171
17.11.2019, 20:20
zombivadim, да как нравится, так и вызывай. Хендл же есть? Не пойму, в чём проблема то

Добавлено через 2 минуты
C++
1
2
HWND dlgH=...;
ShowWindow(dlgH, SW_SHOW);
Добавлено через 2 минуты
можно ещё попробовать такой трюк

C++
1
2
3
4
5
6
7
8
9
10
HWND h=...;
CDialog dlg;
dlg.Attach(h);
 
//вызываем функции dlg
 
//когда будет момент вызова деструктора,
//в деструкторе произойдёт его DestroyWindow(h)
//Если нужно это избежать отсоединяем хендл
dlg.Detach();
0
12 / 11 / 2
Регистрация: 03.04.2016
Сообщений: 502
17.11.2019, 21:35  [ТС]
Алексей1153, Я упростил описание вопроса, и потому вы не поняли.
Я создаю диалог функцией CreateDialogIndirect, для того чтобы считать из памяти структуру LPDLGTEMPLATE,
Мы про это разговаривали в прошлом моем посте. Как ни странно все прекрасно заработало, диалоги показываются,
но непонятки втыкают палки в колеса. Мне необходимо во первых включить, отображене этих диалогов, потому что по умолчанию у них нет флага, WS_VISIBLE. Можно конечно пропарсить структуру, что я на данный момент и делаю.
А так же необходимо потом вызвать DestroyWindow, для них. Получается что хендла нет у диалога, есть HWND. Возможно я что то делаю не правильно, пока не понял.
Цитата Сообщение от Алексей1153 Посмотреть сообщение
HWND dlgH=...;
ShowWindow(dlgH, SW_SHOW);
Функция не принимает двух параметров, что собственно и должно быть.
Цитата Сообщение от Алексей1153 Посмотреть сообщение
HWND h=...;
CDialog dlg;
dlg.Attach(h);
Падает в исключение
AppMsg - Warning: calling DestroyWindow in CWnd::~CWnd; OnDestroy or PostNcDestroy in derived class will not be called.
Вот и .

Добавлено через 4 минуты
Причем падает просто на этой строчке (dlg.Attach(hWnd);, дальше я ничего не писал еще.
0
фрилансер
 Аватар для Алексей1153
6473 / 5693 / 1131
Регистрация: 11.10.2019
Сообщений: 15,171
17.11.2019, 21:42
Лучший ответ Сообщение было отмечено zombivadim как решение

Решение

Цитата Сообщение от zombivadim Посмотреть сообщение
Получается что хендла нет у диалога, есть HWND
это и есть хендл диалога. То есть, винапи не знает, что это диалог или, скажем, кнопка. Это знает оконная процедура, привязанная к хендлу

попробуй явно указать глобальную область видимости
::ShowWindow(dlgH, SW_SHOW);

Добавлено через 2 минуты
Цитата Сообщение от zombivadim Посмотреть сообщение
Падает в исключение
то есть, прямо на аттаче падает? Возможно. Я и не обещал, что это будет работать. С CDC и HDC такое прокатывает, однако.

Или всё же забыл вызвать dlg.Detach(); ?
1
12 / 11 / 2
Регистрация: 03.04.2016
Сообщений: 502
17.11.2019, 21:53  [ТС]
Цитата Сообщение от Алексей1153 Посмотреть сообщение
Или всё же забыл вызвать dlg.Detach();
Забыл простите. Заработало.

Добавлено через 1 минуту
::ShowWindow(hWnd, SW_HIDE);
Да глобальная область видимости, как же я забыл то. Спасибо вам большое!!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
17.11.2019, 21:53
Помогаю со студенческими работами здесь

WinApi в DevCpp под Windows 8.1
Создаю стандартный проэкт Windows Aplication в DevCpp, ничего не меняю. Скомпилировать и выполнить. Линкует, говорит "Проэкт не...

Поддерживает ли библиотека MFC программирование под OpenGL?
У меня возник такой вопрос: Поддерживает ли библиотека MFC программирование под OpenGL?

Рисование эллипса под углом, WinApi
Всем привет, в WinApi для рисования эллипса используется функция Ellipse(), но она рисует только горизонтальное или вертикальное...

LPT порт в winapi под winXP
Здравствуйте ПРОГРАММИСТЫ ! Подскажите пожайлуста (а то я целых два дня потратил так и не разобрался) где доступно можно понять как в...

Не модальное окно (без MFC) под Visual Studio
Есть диалоговое окно, которое создавалось через методы Visual Studio(2005) -> New Dialog в окне списков диалоговых окон. В меню Properties...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут Суть: - Группа наркоманов из 10 человек. - Только один инфицирован ВИЧ. - Колются одной иглой. - Колются раз в день. - Колются последовательно через. . .
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru