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

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

05.06.2020, 12:51. Показов 675. Ответов 14
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
/*
Здравствуйте! Пожалуйста! Помогите написать дочерное окно. Для кнопки Create_BD и Save_BD, при нажатие кнопки - открывает дечерное окно! Помогите написать дочерное окны. Как использовать функцию WM_COMMAND! Заране огромной спасибо!
*/
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
#include <windows.h> 
 
#define    ID_Create_BD                             1
#define    ID_Save_BD                               2
#define    ID_Exit                                  3
 
LRESULT CALLBACK WndProc(HWND Otdel_kadro, UINT Message, WPARAM wParam, LPARAM lParam);
 
int WINAPI WinMain(HINSTANCE hInst, HINSTANCE hPrev, LPSTR szCmdLine, int nShowCmd)
{
 
    WNDCLASSEX Class_registration = { 0 };
    Class_registration.cbSize = sizeof(WNDCLASSEX);
    Class_registration.style = CS_HREDRAW | CS_VREDRAW;
    Class_registration.lpfnWndProc = WndProc;
    Class_registration.cbClsExtra = 0;
    Class_registration.cbWndExtra = 0;
    Class_registration.hInstance = hInst;
    Class_registration.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);
    Class_registration.lpszClassName = L"[lexpenz.com] Win32.";
    if (!RegisterClassEx(&Class_registration))
        return 1;
    HWND Otdel_kadro = CreateWindow(L"[lexpenz.com] Win32.", L"Otdel kadro Win32.", WS_OVERLAPPEDWINDOW, 500, 300, 500, 700, NULL, NULL, hInst, NULL);
    if (!Otdel_kadro)
        return 2;
    ShowWindow(Otdel_kadro, nShowCmd);
    UpdateWindow(Otdel_kadro);
    MSG msg = { 0 };
    while (GetMessage(&msg, 0, 0, 0))
    {
        TranslateMessage(&msg);
        DispatchMessage(&msg);
    }
    return msg.wParam;
    }
 
LRESULT CALLBACK WndProc(HWND Otdel_kadro, UINT Message, WPARAM wParam, LPARAM lParam)
{
    switch (Message)
    {
    case WM_CREATE:
 
        //Создание одельные вкладки
        HWND Create_BD, Save_BD, Exit;
        Create_BD = CreateWindow(L"BUTTON", L"Создание БД", WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON, 350, 450, 120, 20, Otdel_kadro, reinterpret_cast <HMENU>(ID_Create_BD), NULL, NULL);
        Save_BD = CreateWindow(L"BUTTON", L"Сохраненные БД", WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON, 350, 480, 120, 20, Otdel_kadro, reinterpret_cast <HMENU>(ID_Save_BD), NULL, NULL);
        Exit = CreateWindow(L"BUTTON", L"Выход", WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON, 420, 620, 50, 20, Otdel_kadro, reinterpret_cast <HMENU>(ID_Exit), NULL, NULL);
        break;
 
        //Событие кнопки
    case WM_COMMAND:
    {
        switch (LOWORD(wParam))
        {
        case ID_Create_BD:
        {
 
// незнаю что тут дожно быть?
        }
        break;
        case ID_Save_BD:
        {
// незнаю что тут дожно быть?
        }
        break;
        case ID_Exit:
        {
            if (MessageBox(Otdel_kadro, L"Вы уверены хатите выйти", L"Выход", MB_YESNO) == IDYES)
                DestroyWindow(Otdel_kadro);
        }
        break;
        }
    }
    case WM_DESTROY: 
        PostQuitMessage(0); 
        break;
    }
    return DefWindowProc(Otdel_kadro, Message, wParam, lParam);
}
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
05.06.2020, 12:51
Ответы с готовыми решениями:

Дочернее окно копируется в не дочернее(хотя не должно)
При нажатии кнопки появляется окно, но вместо того, что бы отрисоваться как надо, в него копируется дочернее окно главного окна. При...

Дочернее окно
Задание: дочернее окно должно убегать от курсора мыши в пределах рабочей области родительского окна. Вот код: #include...

Дочернее окно
Есть код, в нём создал главное окно, и дочернее. Но как сделать так, что бы по щелчку на дочернее окно, для него появлялось ещё одно...

14
0 / 0 / 0
Регистрация: 05.06.2020
Сообщений: 62
06.06.2020, 11:18  [ТС]
Здрайствуйте! Поскажите пожайлуста как создать дочерное окно! Как сделать при нажатии кнопки открывалось дочернее окно? Как можно загестрировать класс у дочерний окны. Когда я пытаюсь писать то самые классы выписывает ошибки в: Class_registration.hInstance, lpfnWndProc, Class_registration.lpszClassNa me. Нужно использовать функцию WndProc() для повторное в дочерной окне. Воше нужно использовать перабатывание сообщение у дочерние окны. Или достаточно одно перабатывание которое находится у родительское окно? В C++:WinAPI можно писать свои функции или процедуры, если можно какие я должен использовать параметры для функции или процедуры????????? Некоторый части не могу понять! Потому что я новичок в это программирование на C++: WinAPI. Час пришлю код с дочерное окном пожайлуйста посмотрите:

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
// Пербатание собщение у дочерний оно:
LONG CALLBACK CallWindowProcA(WNDPROC hwnd, HWND Create_BD, UINT message, WPARAM wParam, LPARAM lParam)
{
    switch (message)
    {
    case WM_DESTROY:
        PostQuitMessage(0);
    break;
 
    }
    return DefWindowProc(Create_BD, message, wParam, lParam);
}
//Дочерное окно:
int WINAPI CREATEBD (HINSTANCE hInstance, HINSTANCE hPrev, HWND ChildsWindows, LPSTR szCmdLine, int nShowCmd)
{
    WNDCLASSEX Class_registration = { 0 };
    Class_registration.cbSize = sizeof(WNDCLASSEX);
    Class_registration.style = CS_HREDRAW | CS_VREDRAW | WS_CHILD;
    Class_registration.lpfnWndProc = (HBRUSH)CallWindowProcA;
    Class_registration.cbClsExtra = 0;
    Class_registration.cbWndExtra = 0;
    Class_registration.hInstance = hInstance;
    Class_registration.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);
    Class_registration.lpszClassName = L"MyClacc";
 
    if (!RegisterClassEx(&Class_registration))
        return 1;
    HWND Create_BD = CreateWindow(L"MyClass", L"Create BD", WS_OVERLAPPEDWINDOW | WS_CHILD, 500, 300, 500, 700, ChildsWindows, NULL, hInstance, NULL);
    if (!Create_BD)
        //return 2
        DestroyWindow(Create_BD);
    MSG message = { 0 };
    while (GetMessage(&message, 0, 0, 0))
    {
        TranslateMessage(&message);
        DispatchMessage(&message);
    }
    return message.wParam;
 
}
 
// Родильское окно 
 
LRESULT CALLBACK WndProc(HWND hwnd, UINT Message, WPARAM wParam, LPARAM lParam);
 
int WINAPI WinMain(HINSTANCE hInst, HINSTANCE hPrev, LPSTR szCmdLine, int nShowCmd)
{
 
    WNDCLASSEX Class_registration = { 0 };
    Class_registration.cbSize = sizeof(WNDCLASSEX);
    Class_registration.style = CS_HREDRAW | CS_VREDRAW;
    Class_registration.lpfnWndProc = WndProc;
    Class_registration.cbClsExtra = 0;
    Class_registration.cbWndExtra = 0;
    Class_registration.hInstance = hInst;
    Class_registration.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);
    Class_registration.lpszClassName = L"[lexpenz.com] Win32.";
    if (!RegisterClassEx(&Class_registration))
        return 1;
    HWND hwnd = CreateWindow(L"[lexpenz.com] Win32.", L"Otdel kadro Win32.", WS_OVERLAPPEDWINDOW, 500, 300, 500, 700, NULL, NULL, hInst, NULL);
    if (!hwnd)
        return 2;
    ShowWindow(hwnd, nShowCmd);
    UpdateWindow(hwnd);
    MSG msg = { 0 };
    while (GetMessage(&msg, 0, 0, 0))
    {
        TranslateMessage(&msg);
        DispatchMessage(&msg);
    }
    return msg.wParam;
    }
 
LRESULT CALLBACK WndProc(HWND hwnd, UINT Message, WPARAM wParam, LPARAM lParam)
{
    switch (Message)
    {
    case WM_CREATE:
 
        //Создание одельные вкладки
        HWND Create_BD, Save_BD, Exit;
        Create_BD = CreateWindow(L"BUTTON", L"Создание БД", WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON, 350, 450, 120, 20, hwnd, reinterpret_cast <HMENU>(ID_Create_BD), NULL, NULL);
        Save_BD = CreateWindow(L"BUTTON", L"Сохраненные БД", WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON, 350, 480, 120, 20, hwnd, reinterpret_cast <HMENU>(ID_Save_BD), NULL, NULL);
        Exit = CreateWindow(L"BUTTON", L"Выход", WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON, 420, 620, 50, 20, hwnd, reinterpret_cast <HMENU>(ID_Exit), NULL, NULL);
        break;
 
        //Событие кнопки
    case WM_COMMAND:
    {
        switch (LOWORD(wParam))
        {
        case ID_Create_BD:
        {
 
                // Как ставить дочерное окно суда??
        }
        break;
        case ID_Save_BD:
        {
                        //?????????????
        }
        break;
        case ID_Exit:
        {
            if (MessageBox(hwnd, L"Вы уверены хатите выйти", L"Выход", MB_YESNO) == IDYES)
                DestroyWindow(hwnd);
        }
        break;
        }
    }
    case WM_DESTROY: 
        PostQuitMessage(0); 
        break;
    }
    return DefWindowProc(hwnd, Message, wParam, lParam);
}
Добавлено через 2 минуты
Что не правелно я делаю?
0
0 / 0 / 0
Регистрация: 06.06.2020
Сообщений: 2
06.06.2020, 11:37
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
#include <windows.h>
LRESULT CALLBACK WndProc(HWND hwnd, UINT Message, WPARAM wParam, LPARAM lParam) {
    switch(Message) {
        case WM_RBUTTONDOWN:
        {
            MessageBox(hwnd, " Win32 API ", "Window",
                MB_OK|MB_ICONINFORMATION);
        }; break;
        case WM_DESTROY: {
            PostQuitMessage(0);
            break;
        }
        default:
            return DefWindowProc(hwnd, Message, wParam, lParam);
    }
    return 0;
}
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) {
    WNDCLASSEX wc; /* A properties struct of our window */
    HWND hwnd; /* A 'HANDLE', hence the H, or a pointer to our window */
    MSG msg; /* A temporary location for all messages */
    memset(&wc,0,sizeof(wc));
    wc.cbSize        = sizeof(WNDCLASSEX);
    wc.lpfnWndProc   = WndProc; /* This is where we will send messages to */
    wc.hInstance     = hInstance;
    wc.hCursor       = LoadCursor(NULL, IDC_ARROW);
    wc.hbrBackground = (HBRUSH)(COLOR_WINDOW+2);
    wc.lpszClassName = "WindowClass";
    wc.hIcon         = LoadIcon(NULL, IDI_APPLICATION); /* Load a standard icon */
    wc.hIconSm       = LoadIcon(NULL, IDI_APPLICATION); /* use the name "A" to use the project icon */
    if(!RegisterClassEx(&wc)) {
        MessageBox(NULL, "Window Registration Failed!","Error!",MB_ICONEXCLAMATION|MB_OK);
        return 0;
    }
hwnd = CreateWindowEx(WS_EX_CLIENTEDGE,"WindowClass","Ìàñëîâà Àëèíà ÈÑÈÏ 19-3",WS_VISIBLE|WS_OVERLAPPEDWINDOW,
        CW_USEDEFAULT, /* x */
        CW_USEDEFAULT, /* y */
        640, /* width */
        480, /* height */
        NULL,NULL,hInstance,NULL);
if(hwnd == NULL) {
        MessageBox(NULL, "Window Creation Failed!","Error!",MB_ICONEXCLAMATION|MB_OK);
        return 0;
}
 
    
    while(GetMessage(&msg, NULL, 0, 0) > 0) { /* If no error is received... */
        TranslateMessage(&msg); /* Translate key codes to chars if present */
        DispatchMessage(&msg); /* Send it to WndProc */
    }
    return msg.wParam;
}
0
0 / 0 / 0
Регистрация: 05.06.2020
Сообщений: 62
06.06.2020, 16:33  [ТС]
Извениете вы мне не поскажите как записать контрол

Добавлено через 4 часа 26 минут
ВЫ посказали но не то что мне нужно?
0
0 / 0 / 0
Регистрация: 05.06.2020
Сообщений: 62
07.06.2020, 14:34  [ТС]
Здрайствуйте! Не хотел вас обидеть! Извините! Я у всех спрашиваю дочерное окно! Не основное окно. Я спрашиваю как создать и загестрировать для дочерное окно! А вы мне расказывате как делать ратительное окно!

Добавлено через 3 минуты
Я новичок не правильно описал ситуацию, поэтом мы друга не поняли! Если вас я обидел, извините!
0
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
07.06.2020, 15:17
Цитата Сообщение от Nikita01011991 Посмотреть сообщение
Здрайствуйте! Не хотел вас обидеть! Извините! Я у всех спрашиваю дочерное окно! Не основное окно. Я спрашиваю как создать и загестрировать для дочерное окно! А вы мне расказывате как делать ратительное окно!
Точно также, как родительское. В CreateWindow к стилю добавляешь WS_CHILD и передаёшь HWND родителя
0
0 / 0 / 0
Регистрация: 05.06.2020
Сообщений: 62
07.06.2020, 16:14  [ТС]
Почемута у меня не полкчается загестрировать для дочерный окно! Или как зделать чтобы при нажати кнопку открылась внутри программа новое клинска область. Я незнаю как это окно называется правильно. Например: главный интерфейс. На итерфесы есть кнопки. При нажати кнопки. Она окрывает новы интерфес. При это действует вутри программы. Я новичок много вечи я незнаю. И как веч вам описать правельно! Может вам прислать код мой? Как вы высокой специалист вы посмотрите!

Добавлено через 38 минут
Я имею веду не кнопка!. А понцелное второе окное. Эта нввается дочерное если я не ошибаюсь! Или которое вутри програме окрвается новый интерфейс! ПРосто незнаю как назвать! Это окно??
0
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
07.06.2020, 16:21
Цитата Сообщение от Nikita01011991 Посмотреть сообщение
Я имею веду не кнопка!. А понцелное второе окное. Эта нввается дочерное если я не ошибаюсь! Или которое вутри програме окрвается новый интерфейс! ПРосто незнаю как назвать! Это окно??
Тебе, наверное, диалоговое окно нужно
Using Dialog Boxes
0
0 / 0 / 0
Регистрация: 05.06.2020
Сообщений: 62
07.06.2020, 16:49  [ТС]
Час попытаюсь вам объяснить. Например возмем главное окно или родильское окно. Внутри это окна находится кнопки! при нажатие кнопки она окрывается другой окно. Окрывает другое интейфесам или другим раскладками кнопки и вкладки. Подчеркиваю слова: При нажатие кнопки окрывается новый интерфейсам или новое клинская область. Но диалоговое окно чисто спрашивает что пользователь хочеть зделать нажать да или нет, отмена, т.д. камады. Это имено окрывается внутри программы новый интерфес? Или что не так говорю

Добавлено через 1 минуту
Час пришлу пример
0
0 / 0 / 0
Регистрация: 05.06.2020
Сообщений: 62
07.06.2020, 16:56  [ТС]
Вот я объяснил на косперский
Миниатюры
Помогите написать дочернее окно  
0
0 / 0 / 0
Регистрация: 05.06.2020
Сообщений: 62
07.06.2020, 16:58  [ТС]
Я незна как ещё вам обяснить! Но это не диалоговое окно. Если я ошибаюсь поправите меня!?
0
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
07.06.2020, 17:01
Цитата Сообщение от Nikita01011991 Посмотреть сообщение
Вот я объяснил на косперский
Ну, диалоговое окно и нужно

Добавлено через 3 минуты
Цитата Сообщение от Nikita01011991 Посмотреть сообщение
Я незна как ещё вам обяснить! Но это не диалоговое окно. Если я ошибаюсь поправите меня!?
Не то чтоб ошибаешься, просто сам не понимаешь, чего хочешь.
0
0 / 0 / 0
Регистрация: 05.06.2020
Сообщений: 62
07.06.2020, 17:01  [ТС]
Разве, значить я ошибался! Спасибо что помог разобраться! Теперь вы мне не раскажите как мне такое диалоговое написать!
0
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
07.06.2020, 17:02
Цитата Сообщение от Nikita01011991 Посмотреть сообщение
Разве, значить я ошибался! Спасибо что помог разобраться! Теперь вы мне не раскажите как мне такое диалоговое написать!
Я ж тебе кинул ссылку. Там вроде всё расписано.
0
0 / 0 / 0
Регистрация: 05.06.2020
Сообщений: 62
07.06.2020, 17:08  [ТС]
Я точно что я хочу! Просто незнал как люче все это написать и объяснить ситуацию! Я чет програмировние на C++:WinAPI, я новечок! Поэто прощу помощь чтобы все это разобраться!

Добавлено через 3 минуты
Спосибо ещё раз!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
07.06.2020, 17:08
Помогаю со студенческими работами здесь

Дочернее окно
Доброго времени суток. Продолжаю писать свою программу, возникла проблема. Я пытался сделать, чтобы дочернее окно открывалось так: скрин....

Дочернее окно
Не могу создать дочернее окно. Выдает ошибку. Заранее спасибо за любую помощь: LRESULT CALLBACK ChildProc(HWND hWnd, UINT uMsg, WPARAM...

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

Показать дочернее окно
господа у меня дочернее окно находится в состаянии SW_HIDE затем в программе делаются определённые действия и дочернее окно должно...

Прозрачное дочернее окно
Доброго времени суток! Пытаюсь реализовать такую задумку: в главном окне рисую фон (изображение) и поверх него создаю прозрачное дочернее...


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Новые блоги и статьи
1С: Программный отбор элементов справочника по группе
Maks 22.03.2026
Установка программного отбора элементов справочника "Номенклатура" из модуля формы документа. В качестве фильтра для отбора справочника служит группа номенклатуры. Отбор по наименованию группы. . .
Как я обхитрил таблицу Word
Alexander-7 21.03.2026
Когда мигает курсор у внешнего края таблицы, и нам надо перейти на новую строку, а при нажатии Enter создается новый ряд таблицы с ячейками, то мы вместо нервных нажатий Энтеров мы пишем любые буквы. . .
Krabik - рыболовный бот для WoW 3.3.5a
AmbA 21.03.2026
без регистрации и смс. Это не торговля, приложение не содержит рекламы. Выполняет свою непосредственную задачу - автоматизацию рыбалки в WoW - и ничего более. Однако если админы будут против -. . .
1С: Программный отбор элементов справочника по значению перечисления
Maks 21.03.2026
Установка программного отбора элементов справочника "Сотрудники" из модуля формы документа. В качестве фильтра для отбора служит предопределенное значение перечислений. Процедура. . .
Переходник USB-CAN-GPIO
Eddy_Em 20.03.2026
Достаточно давно на работе возникла необходимость в переходнике CAN-USB с гальваноразвязкой, оный и был разработан. Однако, все меня терзала совесть, что аж 48-ногий МК используется так тупо: просто. . .
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru