Форум программистов, компьютерный форум, киберфорум
C/C++: WinAPI
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
0 / 0 / 1
Регистрация: 08.10.2012
Сообщений: 40

Появление кнопок родительского окна на дочернем

04.11.2012, 22:04. Показов 748. Ответов 0
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте,имеется overlapped окно на котором расположены кнопки.При нажатии на кнопку окна появляется дочернее.Дочернее полностью перекрывает родительское окно,но я почему-то могу нажать на родительские кнопки,хотя и не вижу их,но при случайно нажатии на месте где они расположены,они вдруг проявляются.С чем это может связано?
Вот код.
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
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
LRESULT CALLBACK WndProc_menu_options(HWND hwnd,UINT msg,WPARAM wParam,LPARAM lParam)// описание функции для меню
{
HWND hbutton4;
HWND hbutton5;
HWND hbutton6;
    switch(msg)
    {
    case WM_CREATE:
        {
        hbutton4=CreateWindow(TEXT("button"),TEXT("800x600"),WS_CHILD|WS_VISIBLE|BS_DEFPUSHBUTTON,(int)(WindowRect.right/2-50),(int)(WindowRect.bottom/2),200,40,hwnd,(HMENU)ID_RESOLUTION1,hInstance,NULL);
        hbutton5=CreateWindow(TEXT("button"),TEXT("1024x768"),WS_CHILD|WS_VISIBLE|BS_DEFPUSHBUTTON,(int)(WindowRect.right/2-50),(int)(WindowRect.bottom/2+100),200,40,hwnd,(HMENU)ID_RESOLUTION2,hInstance,NULL);
        hbutton6=CreateWindow(TEXT("button"),TEXT("1920x1080"),WS_CHILD|WS_VISIBLE|BS_DEFPUSHBUTTON,(int)(WindowRect.right/2-50),(int)(WindowRect.bottom/2+200),200,40,hwnd,(HMENU)ID_RESOLUTION3,hInstance,NULL);
        return 0;
        }
    case WM_COMMAND:
        {
            switch(LOWORD(wParam))
            {
                case ID_RESOLUTION1:
                {
                WinMin.x = 800;
                WinMin.y = 600;
                WinMax.x = 800;
                WinMax.y = 600;
                return 0;
                }
                case ID_RESOLUTION2:
                {
                WinMin.x = 1024;
                WinMin.y = 768;
                WinMax.x = 1024;
                WinMax.y = 768;
                //WinMin = { 1024, 768 };
                //WinMax = { 1024, 768 };
                return 0;
                }
                case ID_RESOLUTION3:
                {
                WinMin.x = 1920;
                WinMin.y = 1080;
                WinMax.x = 1920;
                WinMax.y = 1080;
                //WinMin = { 1920, 1080 };
                //WinMax = { 1920, 1080 };
                //SendMessage(hwnd_menu,WM_GETMINMAXINFO,NULL,NULL);// hwnd_menu
                return 0;
                }
            }
        }
    return 0;
    }
return DefWindowProc(hwnd,msg,wParam,lParam);
}
 
LRESULT CALLBACK WndProc_menu(HWND hwnd,UINT msg,WPARAM wParam,LPARAM lParam)// описание функции для меню
{
HWND hbutton1;
HWND hbutton2;
HWND hbutton3;
    switch(msg)
    {
        case WM_CREATE:
        {
        hbutton1=CreateWindow(TEXT("button"),TEXT("NEW GAME"),WS_CHILD|WS_VISIBLE|BS_DEFPUSHBUTTON,(int)(WindowRect.right/2-50),(int)(WindowRect.bottom/2+100),100,20,hwnd,(HMENU)ID_BUTTON1,hInstance,NULL);
        hbutton2=CreateWindow(TEXT("button"),TEXT("OPTIONS"),WS_CHILD|WS_VISIBLE|BS_DEFPUSHBUTTON,(int)(WindowRect.right/2-50),(int)(WindowRect.bottom/2+200),100,20,hwnd,(HMENU)ID_BUTTON2,hInstance,NULL);
        hbutton3=CreateWindow(TEXT("button"),TEXT("EXIT"),WS_CHILD|WS_VISIBLE|BS_DEFPUSHBUTTON,(int)(WindowRect.right/2-50),(int)(WindowRect.bottom/2+300),100,20,hwnd,(HMENU)ID_BUTTON3,hInstance,NULL);
        return 0;
        }
        case WM_ACTIVATEAPP:            // Проверка сообщения активности окна
        {
            switch(wParam)
            {
            case 0:
                {
                if(IsWindow(hwnd_game))
                    {
                    //SendMessage(hwnd_game,WM_KEYDOWN,VK_ESCAPE,NULL);
                    KillTimer(hwnd_game,TIMER_1);
                    ShowCursor( true );   
                    }
                //MessageBox( NULL, TEXT("Dont active."), TEXT("ERROR"), MB_OK | MB_ICONEXCLAMATION);
                return 0;
                }
            case 1:
                {
                if(IsWindow(hwnd_game))
                    {
                    active= true;
                    SetTimer(hwnd_game,TIMER_1,1,NULL);// когда нажали на окно приложения - запускай таймер
                    }
                //MessageBox( NULL, TEXT("Active."), TEXT("ERROR"), MB_OK | MB_ICONEXCLAMATION);
                return 0;
                }
            default:
                {
                if(IsWindow(hwnd_game))
                    {
                    //SendMessage(hwnd_game,WM_KEYDOWN,VK_ESCAPE,NULL);
                    KillTimer(hwnd_game,TIMER_1);
                    ShowCursor( true );   
                    }
                //MessageBox( NULL, TEXT("Dont active."), TEXT("ERROR"), MB_OK | MB_ICONEXCLAMATION);
                return 0;
                }
            }
        return 0;
        }
    case WM_KEYDOWN:            // Была ли нажата кнопка?
    {
      keys[wParam] = true;          // Если так, мы присваиваем этой ячейке true
        /*
        if(wParam==VK_TAB)//если нажат ескейп,то отключай управление мыши
        { 
        ReSizeGLScene( 1024, 768 );  // Младшее слово=Width, старшее слово=Height
        GetWindowRect(hWnd,&WindowRect);//при изминении размеров окна изменяй структуру RECT WindowRect
        return 0;  
        }*/
      return 0;            // Возвращаемся
 
    }
    case WM_KEYUP:              // Была ли отпущена клавиша?
    {
      keys[wParam] = false;          //  Если так, мы присваиваем этой ячейке false
      return 0;            // Возвращаемся
    }
        case WM_COMMAND:
        {
            switch(LOWORD(wParam))
            {
                case ID_BUTTON1:
                {
                active= true;
                CreateGLWindow( TEXT("OpenGL окно"),WindowRect, 32, fullscreen );
                SetFocus(hwnd);
                return 0;
                }
                case ID_BUTTON2:
                {
                if(!RegClass(hInstance,WndProc_menu_options,szClassNameOptions,COLOR_WINDOW+1))
                {
                return 0;
                }
                hwnd_menu_options=CreateWindow(szClassNameOptions,TEXT("OPTIONS"),WS_CHILD|WS_VISIBLE,CW_USEDEFAULT,CW_USEDEFAULT,WindowRect.right,WindowRect.bottom,hwnd_menu,NULL,hInstance,NULL);
                return 0;
                }
                case ID_BUTTON3:
                {
                SendMessage(hwnd_menu,WM_DESTROY,NULL,NULL);// hwnd_menu_options
                return 0;
                }
            }
        }
        case WM_DESTROY:
        {
        PostQuitMessage(0);
        return 0;
        }
        case WM_GETMINMAXINFO: //Получили сообщение от Винды
        {
            MINMAXINFO *pInfo = (MINMAXINFO *)lParam;
            pInfo->ptMinTrackSize = WinMin; // Установили минимальный размер
            pInfo->ptMaxTrackSize = WinMax; // Установили максимальный размер
            return 0;
        }
        case WM_SIZE:              // Изменены размеры OpenGL окна
        {
          GetWindowRect(hwnd_menu,&WindowRect);//при изминении размеров окна изменяй структуру RECT WindowRect
          return 0;            // Возвращаемся
        }
    }
return DefWindowProc(hwnd,msg,wParam,lParam);
}
Добавлено через 11 часов 42 минуты
Прошу,помогите...
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
04.11.2012, 22:04
Ответы с готовыми решениями:

Сохранение информации в дочернем окне из родительского
Пишу программу по экологии, задача в том что бы в программе можно было открывать одновремменно несколько таблиц редактировать их и после...

Получение Resource родительского UserControl в дочернем
Здравствуйте У меня есть UserControl со стилем кнопки и обработчиком ее нажатия <ItemsControl Margin="2"...

Подсветка родительского элемента при фокусе на дочернем
Привет,помогите реализовать такую штуку,хотя на css,это не сделать(если сделать поправть,и ответьте на вопрос,пожалуйста),надо перенести в...

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
04.11.2012, 22:04
Помогаю со студенческими работами здесь

Как избавится от родительского консольного окна при создание WinAPI окна
добрый день. использую DEV-C++, но так понимаю разницы нет, какая у нас IDE. создаём просто файл или пустой проект методом...

Как получить координаты окна в относительно его родительского окна?
А то походу GetWindowRect(Window, &WindowRectangle); относительно экрана получает. А надо относительно клиентской области родительского...

Перегрузка родительского окна из окна-потомка
Проблема состоит в следующем - Есть окно (назовем его родительским), из которого при нажатии на ссылку методом window.open открывается...

Как добраться до дочернего окна в дочернем окне
Подскажите пожалуйста как добраться до дочернего окна, если оно находится глубоко? HWND Handle =...

Случайное появление кнопок
Добрый день Подскажите код для реализации рандома Вот что у меня сейчас,хотелось чтобы они случайно появлялись private: System::Void...


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

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Новые блоги и статьи
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20%
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
Использование значений реквизитов справочника в документе, с определенными условиями и правами
Maks 07.04.2026
1. Контроль срока действия договора Алгоритм из решения ниже реализован на примере нетипового документа "ЗаявкаНаРаботу", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если. . .
Доступность команды формы по условию
Maks 07.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: сделать доступной кнопку (команда формы "ЗавершитьСписание") при. . .
Уведомление о неверно выбранном значении справочника
Maks 06.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "НарядПутевка", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если в документе выбран неверный склад. . .
Установка Qt Creator для C и C++: ставим среду, CMake и MinGW без фреймворка Qt
8Observer8 05.04.2026
Среду разработки Qt Creator можно установить без фреймворка Qt. Есть отдельный репозиторий для этой среды: https:/ / github. com/ qt-creator/ qt-creator, где можно скачать установщик, на вкладке Releases:. . .
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru