Форум программистов, компьютерный форум, киберфорум
C/C++: WinAPI
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.86/7: Рейтинг темы: голосов - 7, средняя оценка - 4.86
 Аватар для uhx
60 / 60 / 19
Регистрация: 11.07.2013
Сообщений: 305

После создания диалога остальные окна неактивны

15.01.2017, 18:44. Показов 1444. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет

После того как создается диалог, все остальные окна отказываются работать и "отвечать" на какие-либо нажатия клавиш. Тот же MessageBox после нажатия на кнопку ( смотрим WndProc ) не закрывается.

Исходник:

Кликните здесь для просмотра всего текста
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
int CALLBACK WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow )
{
    MSG msg;
    HWND hMainDialog = CreateDialog( hInstance, MAKEINTRESOURCE( IDD_DIALOG1 ), NULL, (DLGPROC) WndProc );
 
    ShowWindow( hMainDialog, SW_SHOW );
 
    AllocConsole();
    printf( "ThdID: %d\n", GetCurrentThreadId() );
 
    MessageBoxA( NULL, "AAA", "BBB", 0 );
 
    while( GetMessage( &msg, NULL, NULL, NULL ) )
    {
        TranslateMessage( &msg );
        DispatchMessage( &msg );
    }
 
    return 0;
}
 
LRESULT CALLBACK WndProc( HWND hWnd, UINT Message, WPARAM wParam, LPARAM lParam )
{
    switch( Message )
    {
        case WM_COMMAND:
            if( wParam == IDOK )
            {
                MessageBoxA( NULL, "Button pressed!", "caption", MB_OK | MB_ICONINFORMATION );
            }
            break;
        case WM_DESTROY:
            PostQuitMessage( 0 );
            break;
        default:
            return DefWindowProc( hWnd, Message, wParam, lParam );
            break;
    }
 
    return 0;
}

Файл ресурсов:

Кликните здесь для просмотра всего текста
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
// Microsoft Visual C++ generated resource script.
//
#include "resource.h"
 
#define APSTUDIO_READONLY_SYMBOLS
/////////////////////////////////////////////////////////////////////////////
//
// Generated from the TEXTINCLUDE 2 resource.
//
#include "afxres.h"
 
/////////////////////////////////////////////////////////////////////////////
#undef APSTUDIO_READONLY_SYMBOLS
 
/////////////////////////////////////////////////////////////////////////////
// Russian (Russia) resources
 
#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_RUS)
LANGUAGE LANG_RUSSIAN, SUBLANG_DEFAULT
 
#ifdef APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// TEXTINCLUDE
//
 
1 TEXTINCLUDE 
BEGIN
    "resource.h\0"
END
 
2 TEXTINCLUDE 
BEGIN
    "#include ""afxres.h""\r\n"
    "\0"
END
 
3 TEXTINCLUDE 
BEGIN
    "\r\n"
    "\0"
END
 
#endif    // APSTUDIO_INVOKED
 
 
/////////////////////////////////////////////////////////////////////////////
//
// Dialog
//
 
IDD_DIALOG1 DIALOGEX 0, 0, 283, 165
STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "DIALOG"
FONT 8, "MS Shell Dlg", 400, 0, 0x1
BEGIN
    DEFPUSHBUTTON   "OK",IDOK,59,128,50,14
    PUSHBUTTON      "Cancel",IDCANCEL,148,128,50,14
    LTEXT           "static",IDC_STATIC,43,23,126,61
END
 
 
/////////////////////////////////////////////////////////////////////////////
//
// DESIGNINFO
//
 
#ifdef APSTUDIO_INVOKED
GUIDELINES DESIGNINFO
BEGIN
    IDD_DIALOG1, DIALOG
    BEGIN
        LEFTMARGIN, 7
        RIGHTMARGIN, 276
        TOPMARGIN, 7
        BOTTOMMARGIN, 158
    END
END
#endif    // APSTUDIO_INVOKED
 
#endif    // Russian (Russia) resources
/////////////////////////////////////////////////////////////////////////////
 
 
 
#ifndef APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// Generated from the TEXTINCLUDE 3 resource.
//
 
 
/////////////////////////////////////////////////////////////////////////////
#endif    // not APSTUDIO_INVOKED


Добавлено через 6 минут
При чем для этого специально нашел уроки типа "вызывать новое окно по нажатию на кнопку", и нигде о такой проблеме не упоминается... Если же создаю еще один диалог, а не месседж бокс, то эффект такой, будто я просто не обрабатываю сообщения. Хотя я вроде через бряк на процедуре окна чекал - сообщения доходят, но окно (второе) все равно не реагирует.

Добавлено через 13 минут
Ы, походу не в том разделе создал. Перекиньте там в Visual, что ли...
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
15.01.2017, 18:44
Ответы с готовыми решениями:

После создания диалога MessageBox-ы перестают закрываются
Создаю основное окно, не показываю его (без ShowWindow), инициализирую WinSock2, затем в WM_CREATE создаю диалог-немодальный (и в...

VC++ 6.0 (MFC) Dialog, : public CDialog - Как иниц-ть событие создания окна диалога?
Visual C++ 6.0 SP5 MFC - простой диало созданный встроенным мастером в общем мне нужно как диалог со всеми кнопками вырисовался...

DIR 320 - окна с настройками неактивны
Здравствуйте! Подскажите, что за фигня, в роутере DIR 320 практически все окна с настройками неактивны. Нужно было заблочить несколько мак...

3
 Аватар для prokl9tiy
21 / 21 / 9
Регистрация: 09.10.2016
Сообщений: 113
15.01.2017, 18:57
при создании диалога, вместо HWND родителя передавать 0
C++
1
DialogBox(hInst, L"Dlg", NULL, Dlg);
0
 Аватар для uhx
60 / 60 / 19
Регистрация: 11.07.2013
Сообщений: 305
15.01.2017, 19:16  [ТС]
prokl9tiy, у меня и так передается NULL. Я ведь скинул код, там все видно.
0
1130 / 789 / 232
Регистрация: 12.04.2010
Сообщений: 2,012
15.01.2017, 19:21
Лучший ответ Сообщение было отмечено uhx как решение

Решение

Цитата Сообщение от uhx Посмотреть сообщение
эффект такой, будто я просто не обрабатываю сообщения
uhx, см. документацию по DialogProc callback function
Although the dialog box procedure is similar to a window procedure, it must not call the DefWindowProc
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
15.01.2017, 19:21
Помогаю со студенческими работами здесь

Как сделать при событии один пункт активным, а все остальные неактивны при условии что это общая функция
Вот к примеру: http://jsbin.com/uhiqap/1/edit на галерею когда клацаешь - чтоб была одна фотка большая, только активная при...

Вызов функции после создания окна приложения
Здравствуйте, есть программа в которой создаються виджеты (QPlaintTextEdit), после их создания, вызывается функция (умовно void download())...

Зависимость размера окна диалога от окна фрейма
Скажите, как на конкретном примере указать окну диалога, что оно должно быть в два раза меньше, чем главное окно программы? ...

Функция вызываемая после создания диалогового окна (MFC)
Добрый день Есть дилоговое приложение. Когда выполняются "долгие и тяжелые" операции, то форма "залипает". Вместо...

Предотвращение создания окна после установки драйвера устройства
Вопрос такой: при автоматической установке драйверов некоторых устройств (это может быть и мышка, и флешка) на экране появляется окошко...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
Установка Emscripten SDK (emsdk) и CMake на Windows для сборки C и C++ приложений в WebAssembly (Wasm)
8Observer8 30.01.2026
Чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. Система контроля версиями Git. . .
Подключение Box2D v3 к SDL3 для Android: физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
Влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru