Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Nicl
0 / 0 / 0
Регистрация: 07.10.2008
Сообщений: 26
#1

Работа с двумя окнами - C++ - C++

20.02.2009, 19:45. Просмотров 990. Ответов 1
Метки нет (Все метки)

Всех приветствую.
При изучении WinAPI возникла следующая проблема:

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

Вроде бы все просто, но вот как реализовать - не знаю. Два HWND создал, окна создал, а вот что дальше, как их "связать"?
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
#include <windows.h>
LONG WINAPI WndProc (HWND, UINT, WPARAM, LPARAM);
VOID CALLBACK procTimer1(HWND,UINT,UINT,DWORD);
VOID CALLBACK procTimer2(HWND,UINT,UINT,DWORD);
 
int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
    HWND hwnd;
    HWND hwnd2;
    MSG msg;
    WNDCLASS w;
    memset(&w, 0, sizeof(WNDCLASS));
    w.lpfnWndProc = WndProc;
    w.hInstance = hInstance;
    w.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);
    w.lpszClassName = "My Class";
    RegisterClass(&w);
    hwnd = CreateWindow("My Class", "My title",WS_OVERLAPPEDWINDOW,  
        0, 0,500,333, NULL, NULL, hInstance, NULL);
 
    hwnd2 = CreateWindow("My Class", "My title",WS_OVERLAPPEDWINDOW,  
        100, 100,500,333, NULL, NULL, hInstance, NULL);
    ShowWindow(hwnd, nCmdShow);
    UpdateWindow(hwnd);
 
    ShowWindow(hwnd2, nCmdShow);
    UpdateWindow(hwnd2);
 
    while (GetMessage (&msg, NULL,0,0))
    {
        TranslateMessage(&msg);
        DispatchMessage(&msg);
    }
 
    return msg.wParam;
}
 
 
LONG WINAPI WndProc (HWND hwnd, UINT Message, WPARAM wparam, LPARAM lparam)
    { 
        switch (Message)
        {
        
        case WM_SIZE:
 
            break;
        case WM_DESTROY:
            PostQuitMessage(0);
            break;
        default:    
        return DefWindowProc(hwnd, Message, wparam, lparam);
        }
        return 0;
    }
Помогите пожалуйста советом.

Заранее спасибо.
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.02.2009, 19:45
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Работа с двумя окнами - C++ (C++):

Работа с массивами. Реализовать заполнение массива двумя вариантами - C++
Не получается реализовать заполнение массива двумя вариантами, да и понимаю, что у самой в целом получается черте что, но самостоятельно...

управление окнами - C++
доброго времени суток форумчане! кто сможет помогите пожалуйста! проблема в том чтобы создать окно с горизонтальной и вертикальной полосами...

Управление окнами (windows.h) - C++
Возник вопрос по следующей задаче: Создайте 2 разных окна. При изменении размеров первого окна, размеры второго тоже меняються. При...

Создание программы с окнами - C++
Привет такой вопрос.Допустим написал прогу или можно написать не суть важно.А как сделать чтоб она была с окнами,кнопками и.т.д...Ну к...

Как работать с окнами? - C++
Здраствуйте, помогите пожалуйсто, не как немогу найти инфу о том как работать с окнами, ни книг на эту тему нечего найти немогу, скиньте...

Как работать с окнами? - C++
Гуглил, гуглил.. так ничо путёвого и не нашел.. у меня если чо Dev-C++ Вот код из примеров Dev-C++ помогите разобраться: #include...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
TurboDune
22 / 22 / 1
Регистрация: 20.02.2009
Сообщений: 59
20.02.2009, 23:50 #2
Цитата Сообщение от Nicl Посмотреть сообщение
При изменении размера одного окна второе тоже меняется
Примерно таким образом:
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
HWND g_hwnd;
HWND g_hwnd2;
 
int WINAPI WinMain (...) {}
 
LONG WINAPI WndProc (HWND hwnd, UINT Message, WPARAM wparam, LPARAM lparam)
{ 
    switch (Message)
    {
    case WM_MOVE:
    case WM_SIZE:
    {
        RECT r1 = {}, r2 = {};
        GetWindowRect(g_hwnd, &r1);
        GetWindowRect(g_hwnd2, &r2);
 
        if(hwnd == g_hwnd)
        {
            r2.right = r2.right - r2.left; // Сохраним первоначальную ширину в это поле, чтобы не заводить новую переменную
            r2.left = r1.right;
            r2.top = r1.top;
            r2.bottom = r1.bottom;
            r2.right += r2.left;
 
            MoveWindow(g_hwnd2, r2.left, r2.top, r2.right-r2.left, r2.bottom-r2.top, TRUE);
        }
        else if(hwnd == g_hwnd2)
        {
            r1.left = r1.right - r1.left; // См. выше
            r1.right = r2.left;
            r1.top = r2.top;
            r1.bottom = r2.bottom;
            r1.left = r1.right - r1.left;
 
            MoveWindow(g_hwnd, r1.left, r1.top, r1.right-r1.left, r1.bottom-r1.top, TRUE);
        }
    }
    break;
    ...
}
Цитата Сообщение от Nicl Посмотреть сообщение
При нажатии на кнопку в первом окне второе начинает каждую секунду менять заголовок.
А тут совсем непонятна задача. Если имеется ввиду изменение текста заголовка,
то необходимо создать оконный таймер функцией SetTimer, обработать сообщение типа WM_TIMER, и изменить заголовок окна функцией SetWindowText . Описание всех функций см. MSDN.
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.02.2009, 23:50
Привет! Вот еще темы с ответами:

Взаимодействие з чужими окнами - C++
Здравствуйте, у меня небольшой вопрос, мне нужно чтоб програма взаимодействовала с чужими окнами, например копировала текст окна, изменяла...

Перевод данных между окнами - C++
Есть у меня 5 окон в одном приложении. Нужно между ними обмениваться данными. Например форма 4 использует переменную инициализированную в...

Управление окнами другой программы - C++
Доброго времени суток... Я сам не профи по Си++, но в СИ разбираюсь хорошо. А вопрос у меня такой: Есть ли способ одной...

Разработка приложений с диалоговыми окнами - C++
День добрый, я новенький в С++. Хотел бы спросить о следующем: Установлено MinGW, Code::Blocks. Скажите пожалуйста как с помощью моей ИДЕ...


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

Или воспользуйтесь поиском по форуму:
Ответ Создать тему
Опции темы

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