Форум программистов, компьютерный форум, киберфорум
C++: WinAPI
Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ WinAPI Проблема с созданием потоков в цикле https://www.cyberforum.ru/ win-api/ thread2336210.html
Задача состоит в том, чтобы посчитать ряд. У меня есть цикл, в котором я создаю потоки, каждый из которых считает свою часть ряда. Первый проход по циклу - все верно, но на втором, ломаются числа,...
C++ WinAPI Получение сообщений от любых окон
Можно ли получать сообщения(клики мыши, клавиши) от любых окон? В цикл обработки приходят сообщения только от окна созданного в нём как известно. Хотелось бы это обойти.
C++ WinAPI Нужно вызвать мерцание прямоугольника
Господа, ну могли бы вы подсказать мне, еще зеленому программисту, как вызвать эффект мерцания у прямоугольника после его нарисовки на экране. Это все что я смог придумать #include <Windows.h> ...
C++ WinAPI RawInput vs Raspberry Pi Добрый день, при работе на локальном компьютере используется USB сканер ш/к LS2208 и USB клавиатура Через GetRawInputDeviceList удавалось получить хэндлы клавиатуры и сканера LS2208 , зная его VID и... https://www.cyberforum.ru/ win-api/ thread2336102.html
C++ WinAPI Проблемы с кодировкой или как отправить по почте строку из файла libcurl-ом https://www.cyberforum.ru/ win-api/ thread2336091.html
Народ, хелп. Пытаюсь считать символы из файла и передать их в строку, потом засунуть ее в static const char* вместе с остальными данными и отправить с помощью smtp функциями libcurl. Однако приходит...
C++ WinAPI Изменение размера окна в WinAPI
Подскажите, пожалуйста, как задать определённый размер окна в WinAPI? Например, 600 на 700.
Не выходит обработать TXT C++ WinAPI
Всем доброго времени суток. С WinAPI работаю впервые, не судите строго. Задание - заменить все пробелы в TXT файле на двойные пробелы. Но даже не дойдя до части с заменой, все идет наперекосяк. В...
C++ WinAPI Функции WIN API Здравствуйте. Подскажите пожалуйста где можно посмотреть реализацию некоторых функций в WIN API, например таких как DefWindowProc и прочие. Не просто посмотреть ее прототип, это есть в MSDN, а... https://www.cyberforum.ru/ win-api/ thread2334672.html
C++ WinAPI Смена текущей директории "по умолчанию" и загрузка/сохранение файлов https://www.cyberforum.ru/ win-api/ thread2334445.html
Приветствую вас, товарищи! Столкнулся с следующей проблемой - не получается сменить текущую директорию "по умолчанию". Следующие "пути" указаны как примеры, если нужно будет - приведу точнее код. ...
C++ WinAPI Не могу понять задание от преподавателя Добрый день, преподаватель выдал задание: Составить уравнение отображения окна размером 200*300 с координатой левого нижнего угла 100,0 в поле вывода с координатой левого нижнего угла 0,0: а)... https://www.cyberforum.ru/ win-api/ thread2334405.html
2087 / 654 / 243
Регистрация: 10.02.2018
Сообщений: 1,524
18.10.2018, 16:53 0

Создание перекрывающего дочернего окна

18.10.2018, 16:53. Показов 2207. Ответов 8
Метки (Все метки)

Лучший ответ Сообщение было отмечено кэп13 как решение

Решение

Алгоритм совместного рисования окон завязан на кучу разных параметров и стилей.
В общем случае, наверное, сокрытие одних дочерних окон перекрытием их другими не делается.
Вместо этого используются функции включения/отключения видимости у окон: ShowWindow(hWnd, SW_SHOW/SW_HIDE).
Но если очень хочется, то можно попытаться спрятать и перекрытием, посмотрите стиль WS_CLIPSIBLINGS.
Перекрывающиеся кнопки
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
#include "stdafx.h"
#include <windows.h>
#include <windowsx.h>
 
LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
 
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpszCmdLine, int nCmdShow)
{
    WNDCLASS wc;
    memset(&wc, 0, sizeof(wc));
    wc.style = CS_HREDRAW | CS_VREDRAW;
    wc.lpfnWndProc = WndProc;
    wc.hInstance = hInstance;
    wc.hbrBackground = GetStockBrush(WHITE_BRUSH);
    wc.hIcon = LoadIcon(NULL, IDI_APPLICATION);
    wc.hCursor = LoadCursor(NULL, IDC_ARROW);
    wc.lpszClassName = TEXT("MyWinClass");
    RegisterClass(&wc);
 
    HWND hWnd = CreateWindow(wc.lpszClassName, TEXT("My window title"), WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, 460, 350, NULL, NULL, hInstance, NULL);
    if (!hWnd)
        return -1;
 
    CreateWindow(TEXT("BUTTON"), TEXT("clip (1)"), WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON | WS_CLIPSIBLINGS, 100, 50, 100, 50, hWnd, NULL, hInstance, NULL);
    CreateWindow(TEXT("BUTTON"), TEXT("clip (2)"), WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON | WS_CLIPSIBLINGS, 100, 75, 100, 50, hWnd, NULL, hInstance, NULL);
    CreateWindow(TEXT("BUTTON"), TEXT("clip (3)"), WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON | WS_CLIPSIBLINGS, 150, 50, 100, 50, hWnd, NULL, hInstance, NULL);
    CreateWindow(TEXT("BUTTON"), TEXT("clip (4)"), WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON | WS_CLIPSIBLINGS, 150, 75, 100, 50, hWnd, NULL, hInstance, NULL);
 
    CreateWindow(TEXT("BUTTON"), TEXT("usual (1)"), WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON, 100, 150, 100, 50, hWnd, NULL, hInstance, NULL);
    CreateWindow(TEXT("BUTTON"), TEXT("usual (2)"), WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON, 100, 175, 100, 50, hWnd, NULL, hInstance, NULL);
    CreateWindow(TEXT("BUTTON"), TEXT("usual (3)"), WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON, 150, 150, 100, 50, hWnd, NULL, hInstance, NULL);
    CreateWindow(TEXT("BUTTON"), TEXT("usual (4)"), WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON, 150, 175, 100, 50, hWnd, NULL, hInstance, NULL);
 
    ShowWindow(hWnd, nCmdShow);
    UpdateWindow(hWnd);
 
    MSG msg;
    while (GetMessage(&msg, NULL, 0, 0))
    {
        TranslateMessage(&msg);
        DispatchMessage(&msg);
    }
 
    return (int)msg.wParam;
}
 
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
    switch (message)
    {
        case WM_LBUTTONDOWN:
            InvalidateRect(hWnd, 0, FALSE);
            return 0;
 
        case WM_DESTROY:
            PostQuitMessage(0);
            return 0;
 
        case WM_PAINT:
        {
            RECT rc;
            GetClientRect(hWnd, &rc);
            PAINTSTRUCT ps;
            HDC dc = BeginPaint(hWnd, &ps);
            WCHAR text[1024] = { 0 };
            wcscat(text, TEXT("Z-order:\n"));
            HWND temp = GetWindow(hWnd, GW_CHILD);
            for (int i=0; i<10 && temp; i++)
            {
                size_t len = wcslen(text);
                GetWindowText(temp, text + len, 1024 - len);
                wcscat(text, TEXT("\n"));
                temp = GetWindow(temp, GW_HWNDNEXT);
            }
            DrawText(dc, text, -1, &rc, 0);
            EndPaint(hWnd, &ps);
            return 0;
        }
    }
 
    return DefWindowProc(hWnd, message, wParam, lParam);
}


Вернуться к обсуждению:
Создание перекрывающего дочернего окна
1
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
18.10.2018, 16:53
Готовые ответы и решения:

Создание дочернего окна
Доброго времени суток. У меня есть главное окно с 3 кнопками. Я хочу чтобы после нажатие на кнопку...

Создание дочернего окна в консоли
Интересует вопрос... Посмотрим на картинку, так вот как создать дочернее окно в коносоли? это...

Создание меню у дочернего окна
Добрый день, подскажите, как создать меню у дочернего окна? Этот код не создаёт меню у дочернего...

Создание простого родительского и дочернего окна в нем
Подскажите в чем ошибка? Появляется только родительское окно. Дочернее окно должно быть в...

8
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.