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

Добавить скролл в дочернее окно

04.12.2021, 20:29. Показов 2441. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Не совсем пойму как добавить скролл в дочернее окно
Вот код (DEVC++):
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
#include <windows.h>
#define ID_BTN_1     1000    // Èäåíòèôèêàòîð êíîïêè
#define ID_STA_1     1010    // Èäåíòèôèêàòîð ñòàòè÷åñêîãî ýëåìåíòà
#define ID_EDT_1     1020    // Èäåíòèôèêàòîð òåêñòîâîãî ïîëÿ
#define ID_CHE_1     1030    // Èäåíòèôèêàòîð ôëàæêà
#define ID_RAD_1     1040    // Èäåíòèôèêàòîð ðàäèîêíîïêè
#define ID_RAD_2     1050    // Èäåíòèôèêàòîð ðàäèîêíîïêè
#define ID_RAD_3     1060    // Èäåíòèôèêàòîð ðàäèîêíîïêè
#define ID_COM_1     1070    // Èäåíòèôèêàòîð êîìáèíèðîâàííîãî áîêñà (ñïèñîê)
#define ID_EDT_2     1080    // ????????????? ?????????? ????
#define ID_EDT_3     1090    // ????????????? ?????????? ????
#define ID_EDT_4     1100    // ????????????? ?????????? ????
#define ID_BTN_2     1110    // ????????????? ??????
HINSTANCE hInst;             // Äåñêðèïòîð ïðèëîæåíèÿ
char szClassName[] = "AppClass"; 
MSG msg;                        // Ñòðóêòóðà äëÿ õðàíåíèÿ îáðàáàòûâàåìûõ ñîîáùåíèé
HWND  hWnd[5];                  // Äåñêðèïòîðû îñíîâíîãî è äî÷åðíèõ îêîí
short left, top, width, height; // Ðàáî÷àÿ îáëàñòü îñíîâíîãî îêíà
// ===== Ôóíêöèÿ ñîçäàíèÿ îêíà, âîçâðàùàåò äåñêðèïòîð ñîçäàííîãî îêíà ===================================
HWND Wnd(HINSTANCE hI, WNDPROC Pr, HWND hwnd, LPCSTR s, LPCSTR menu, int l, int t, int w, int h, int u)
{
    WNDCLASS wc = {CS_HREDRAW | CS_VREDRAW, Pr, 0, 0, hI, NULL, NULL, (HBRUSH)COLOR_WINDOW, menu, s};
    if(!RegisterClass(&wc)){MessageBox(NULL, "Îøèáêà ðåãèñòðàöèè êëàññà îêíà", s, MB_OK);};
    if(u){return CreateWindow(s,s,WS_OVERLAPPEDWINDOW|WS_VISIBLE,l,t,w,h,hwnd,(HMENU)NULL,hI,NULL);}
    else{return CreateWindowEx(WS_EX_CLIENTEDGE,s,s,WS_POPUP|WS_VISIBLE,l,t,w,h,hwnd,NULL,hI,NULL);};
};
// ===== Îêîííàÿ ïðîöåäóðà, îáåñïå÷èâàþùàÿ îáðàáîòêó ñîîáùåíèé îñíîâíîãî îêíà ===========================
LRESULT CALLBACK WndProc_0(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
    switch (message)
    {
        case WM_MOVE: // Ñîîáùåíèå î òîì, ÷òî îñíîâíîå îêíî ïåðåìåùåíî
            // Ïðè ïîëó÷åíèè ýòîãî ñîîáùåíèÿ âòîðîé ïàðàìåòð âñåãäà ñîäåðæèò
            // (left,top) - êîîðäèíàòû ëåâîãî âåðõíåãî óãëà ðàáî÷åé îáëàñòè îñíîâíîãî îêíà
            left = LOWORD(lParam); // èçâëåêàåòñÿ ëåâàÿ  ïîëîâèíà äâîéíîãî ñëîâà (ïåðâûå 16 ïîçèöèé)
            top  = HIWORD(lParam); // èçâëåêàåòñÿ ïðàâàÿ ïîëîâèíà äâîéíîãî ñëîâà (âòîðûå 16 ïîçèöèé)
            MoveWindow(hWnd[1], left, top, width, height/2, TRUE);
            MoveWindow(hWnd[2], left, top + height/2, width, height/2, TRUE);
        return 0;
        case WM_SIZE: // Ñîîáùåíèå î òîì, ÷òî èçìåíèëèñü ðàçìåðû îñíîâíîãî îêíà
            // Ïðè ïîëó÷åíèè ýòîãî ñîîáùåíèÿ âòîðîé ïàðàìåòð âñåãäà ñîäåðæèò
            // width, height - øèðèíó è âûñîòó ðàáî÷åé îáëàñòè îñíîâíîãî îêíà
            width  = LOWORD(lParam);// èçâëåêàåòñÿ ëåâàÿ  ïîëîâèíà äâîéíîãî ñëîâà (ïåðâûå 16 ïîçèöèé)
            height = HIWORD(lParam);// èçâëåêàåòñÿ ïðàâàÿ ïîëîâèíà äâîéíîãî ñëîâà (âòîðûå 16 ïîçèöèé)
            MoveWindow(hWnd[1], left, top, width, height/2, TRUE);
            MoveWindow(hWnd[2], left, top + height/2, width, height/2, TRUE);
        return 0;
        
        case WM_DESTROY: PostQuitMessage(0); return 0;
    };
    return DefWindowProc(hwnd, message, wParam, lParam);
};
// ======================================================================================================
LRESULT CALLBACK WndProc_1(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
        static HWND hBtn_1, hSta_1, hEdt_1, hChe_1, hRad_1, hRad_2, hRad_3, hCmb_1; // ??????????? ????????? ????
    static HWND hEdt_2, hEdt_3, hEdt_4, hBtn_2;
    static char ch[256];
    static double a = 0, b = 0, c = 0;
    switch (message)
    {
        
               case WM_CREATE:
            
            hBtn_1 = CreateWindowA("BUTTON", "Êíîïêà", WS_CHILD | WS_VISIBLE, 10, 10, 100, 25, hwnd, (HMENU)ID_BTN_1, hInst, NULL);
            hSta_1 = CreateWindowA("STATIC", "Ñòàòè÷åñêèé ýëåìåíò", WS_CHILD | WS_VISIBLE | SS_SUNKEN | SS_NOTIFY | SS_CENTERIMAGE | SS_CENTER, 10, 40, 300, 25, hwnd, (HMENU)ID_STA_1, hInst, NULL);
            hEdt_1 = CreateWindowA("EDIT",   "Òåêñòîâîå ïîëå", WS_CHILD | WS_VISIBLE | WS_BORDER | ES_AUTOVSCROLL | ES_CENTER | ES_MULTILINE, 10, 70, 300, 50, hwnd, (HMENU)ID_EDT_1, hInst, NULL);
            hChe_1 = CreateWindowA("BUTTON", "Ôëàæîê", WS_CHILD | WS_VISIBLE | BS_AUTOCHECKBOX, 10, 125, 100, 25, hwnd, (HMENU)ID_CHE_1, hInst, NULL);
            hRad_1 = CreateWindowA("BUTTON", "Ðàäèîêíîïêà", WS_CHILD | WS_VISIBLE | BS_AUTORADIOBUTTON, 10, 150, 110, 25, hwnd, (HMENU)ID_RAD_1, hInst, NULL);
            hRad_2 = CreateWindowA("BUTTON", "Ðàäèîêíîïêà", WS_CHILD | WS_VISIBLE | BS_AUTORADIOBUTTON, 10, 180, 110, 25, hwnd, (HMENU)ID_RAD_2, hInst, NULL);
            hRad_3 = CreateWindowA("BUTTON", "Ðàäèîêíîïêà", WS_CHILD | WS_VISIBLE | BS_AUTORADIOBUTTON, 10, 210, 110, 25, hwnd, (HMENU)ID_RAD_3, hInst, NULL);
            hCmb_1 = CreateWindowA("COMBOBOX", "ÊîìáîÁîêñ(Ñïèñîê)", WS_CHILD | WS_VISIBLE | WS_VSCROLL | CBS_DROPDOWN | CBS_AUTOHSCROLL, 10, 240, 200, 100, hwnd, (HMENU)ID_COM_1, hInst, NULL);
            hEdt_2 = CreateWindowA("EDIT", "", WS_CHILD | WS_VISIBLE, 410, 70, 300, 25, hwnd, (HMENU)ID_EDT_2, hInst, NULL);
            hEdt_3 = CreateWindowA("EDIT", "", WS_CHILD | WS_VISIBLE, 410, 100, 300, 25, hwnd, (HMENU)ID_EDT_3, hInst, NULL);
            hEdt_4 = CreateWindowA("EDIT", "", WS_CHILD | WS_VISIBLE, 410, 130, 300, 25, hwnd, (HMENU)ID_EDT_4, hInst, NULL);
            hBtn_2 = CreateWindowA("BUTTON", "+", WS_CHILD | WS_VISIBLE, 410, 160, 300, 25, hwnd, (HMENU)ID_BTN_2, hInst, NULL);
            /**/
            return 0;
    };
    return DefWindowProc(hwnd, message, wParam, lParam);
};
// ======================================================================================================
LRESULT CALLBACK WndProc_2(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
    return DefWindowProc(hwnd, message, wParam, lParam);
};
// ====== Ãëàâíàÿ ôóíêöèÿ (ñîçäà¸ì îñíîâíîå îêíî ïðîãðàììû è çàïóñêàåì öèêë îáðàáîòêè ñîîáùåíèé) ========
int WINAPI WinMain(HINSTANCE hInst, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
    // Ñîçäà¸ì ðîäèòåëüñêîå è äî÷åðíèå îêíà -------------------------------------------------------------
    hWnd[0] = Wnd(hInst, WndProc_0, NULL,    "Çàãîëîâîê îñíîâíîãî îêíà",   NULL, 10, 10, 1195, 500, 1);
    hWnd[1] = Wnd(hInst, WndProc_1, hWnd[0], "Çàãîëîâîê äî÷åðíåãî îêíà 1", NULL, 25, 35, 1195, 500, 1);
    hWnd[2] = Wnd(hInst, WndProc_2, hWnd[0], "Çàãîëîâîê äî÷åðíåãî îêíà 2", NULL, 40, 60, 1195, 500, 1);
    // Ïîìåùàåì äî÷åðíèå îêíà â ðàáî÷óþ îáëàñòü ðîäèòåëüñêîãî îêíà --------------------------------------
    MoveWindow(hWnd[1], left, top, width, height/2, TRUE);
    MoveWindow(hWnd[2], left, top + height/2, width, height/2, TRUE);
    // Öèêë îáðàáîòêè ñîîáùåíèé -------------------------------------------------------------------------
    while(GetMessageW(&msg,NULL,0,0)){TranslateMessage(&msg);DispatchMessageW(&msg);};
};
// ======================================================================================================
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
04.12.2021, 20:29
Ответы с готовыми решениями:

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

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

Дочернее окно
Здравствуйте, не могу понять, почему выскочила такая ошибка? static pair&lt;bool, HWND&gt; ChildWindow(const wstring&amp;&amp; winClass,...

1
0 / 0 / 0
Регистрация: 07.05.2019
Сообщений: 54
06.12.2021, 12:56  [ТС]
Никто не знает разве как сделать?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
06.12.2021, 12:56
Помогаю со студенческими работами здесь

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

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

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

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

Не создается дочернее окно
Почему не создается дочернее окно? HINSTANCE hInstance; HWND hDataWin; // Дескриптор...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
Хочу заставить корпорации вкладываться в здоровье сотрудников: делаю мат модель здравосохранения
anaschu 22.03.2026
e7EYtONaj8Y Z4Tv2zpXVVo https:/ / github. com/ shumilovas/ med2. git
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
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru