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

Как получить размеры клиентской области окна-родителя в функции дочернего окна?

06.06.2016, 07:53. Показов 3310. Ответов 6
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
задание такое: имеется дочернее окно,которое "убегает" от курсора мыши в пределах родительского окна. я создала главное окно,и дочернее, которое убегает от курсора, но по всему экрану. Помогите,как исправить прогу?
фрагмент кода:
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
LRESULT CALLBACK WndProcChild(HWND hWndChild, UINT msg, WPARAM wParam, LPARAM lParam)
    { 
        RECT rect;  
        switch (msg)
        {
            // Необходимо обновить содержимое клиентской области окна. 
        case WM_PAINT:
        {
                        
                         HDC hDC;
                     PAINTSTRUCT ps;
        }; break;
        case WM_MOUSEMOVE:
            HDC hDC;
            PAINTSTRUCT ps;
            hDC = BeginPaint(hWndChild, &ps);
            int x, y;
            x = LOWORD(lParam);
            y = HIWORD(lParam);
            
            if (UserDoneDoubleClick == false)
                MoveWindow(hWndChild, rand() % GetSystemMetrics(SM_CXSCREEN) - 100, rand() % GetSystemMetrics(SM_CYSCREEN) - 100, 100, 100, TRUE);
            break;
        case WM_DESTROY:
        {
                           // Если данная функция является оконной функцией 
                           // главного окна, то следует в очередь сообщений 
                           // приложения послать сообщение WM_QUIT 
                           PostQuitMessage(0);
        }; break;
        // Необработанные сообщения передаем в стандартную 
        // функцию обработки сообщений по умолчанию. 
        default: return DefWindowProc(hWndChild, msg, wParam, lParam);
        }
 
        return 0;
    }
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
06.06.2016, 07:53
Ответы с готовыми решениями:

Как помимо сообщения WM_SIZE получить размеры клиентской области окна?
Как помимо сообщения WM_SIZE получить размеры клиенсткой области окна?

Получить снимок клиентской области окна и цвет пикселя
Всем привет, не шибко знаю С++, но есть две задачи 1. Нужно получить снимок клиентской области...

Как получить размеры клиентской области приложения?
Как получить размеры клиентской области приложения? уточняю: клиентская область - размер области...

Как определить размер клиентской области окна Access?
Хочу при запуске растягивать форму по вертикали. По горизонтали не менять, т.е. это не...

6
47 / 21 / 11
Регистрация: 01.11.2013
Сообщений: 255
06.06.2016, 08:28 2
thumbelina, можно глянуть как создавалось дочернее окно?
0
0 / 0 / 0
Регистрация: 06.06.2016
Сообщений: 8
06.06.2016, 08:30  [ТС] 3
C++
1
2
3
4
5
]hWndChild =
            CreateWindow("ChildWindows", "CHILDWINDOW",
            WS_CHILDWINDOW | WS_CAPTION | WS_MINIMIZEBOX |
            WS_MAXIMIZEBOX, 150, 150, 100, 100, hWndMain, NULL,
            hInst, NULL);
0
47 / 21 / 11
Регистрация: 01.11.2013
Сообщений: 255
06.06.2016, 08:39 4
Так у вас есть размеры дочернего и родительского окна. Сделайте при движении окна проверку не выходит ли окно за границу.
0
0 / 0 / 0
Регистрация: 06.06.2016
Сообщений: 8
06.06.2016, 08:56  [ТС] 5
а если выходит, то как его перенаправить? и не мог ли бы вы написать здесь,как будет выглядеть тогда функция MoveWindow?
0
47 / 21 / 11
Регистрация: 01.11.2013
Сообщений: 255
06.06.2016, 09:06 6
Когда у вас выполняется функция MoveWindow система посылает сообщение WM_MOVE где вы можете проверить не выходит ли по x или по y окно. LOWORD(lParam) будет x, а HIWORD(lParam) - y. Если окно выходит за границу по какой-то координате, то запретить движение по той координате, а само окно выровнять по границе.
0
0 / 0 / 0
Регистрация: 06.06.2016
Сообщений: 8
06.06.2016, 15:00  [ТС] 7
я сделала через функцию GetParent( нашла размер клиентской области окна-родителя)
0
06.06.2016, 15:00
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
06.06.2016, 15:00
Помогаю со студенческими работами здесь

Как изменять размеры дочернего окна при изменении размеров родительского?
Есть главное окно и внутри него прорисовано дочернее(благодаря стилю WS_BORDER), которое разделяет...

Цвет клиентской области окна
Доброго времени суток. Вообще я хочу правильно раскрасить окно при нажатии мышки. Код из главной...

Win32 wm_ncpaint. Глюки в клиентской области окна
Делаю интерфейс нужно сделать как photoshop на VS win32 без NET библиотек. так вот не клинская...

Как получить дескриптор дочернего окна?
Суть программы такова, есть диалоговое окно, реализовать такую функциональность, зажимаем левую...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru