Форум программистов, компьютерный форум, киберфорум
C++: WinAPI
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.81/16: Рейтинг темы: голосов - 16, средняя оценка - 4.81
3 / 3 / 2
Регистрация: 02.07.2010
Сообщений: 92
1

Сменить фон окна при выборе пункта меню"сменить фон" с использованием winapi

11.04.2012, 16:55. Показов 3264. Ответов 2
Метки нет (Все метки)

Сразу к делу:
Разработать программу с графическим интерфейсом пользователя на основного окна с меню. При выборе пункта меню "О программе" необходимо показывать диалоговое окно с произвольным (не пустым) содержанием.Добавить пункт меню "Сменить фон" при выборе которого необходимо сменить фон основного окна
Первая часть задания готова.Но вто где нужно сменить фон я заступорился.В обработчике события выбора в меню пункта "сменить фон" написал wc.hbrBackground = (HBRUSH)(COLOR_3DHILIGHT),толку ноль.Объясните пожалуйста почему
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
#include <Windows.h>
#include "resource.h" 
 
HWND hMain = NULL;
 
//Стандартная функция обработки сообщений окном
LRESULT CALLBACK WndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
        UINT nCmd = HIWORD(wParam);
        UINT wmId = LOWORD(wParam);
        HWND hChild = (HWND)lParam;
        HDC hdc;//хэндл контекста устройства (device context) (экрана)
        PAINTSTRUCT ps;//аналогия из жизни - содержимое мольберта (этюдника) художника
 WNDCLASS wc;
        switch (msg)
        {   
        case WM_COMMAND:
            switch(wmId)
            {
            case ID_40001:
                MessageBox(NULL,L"Лабораторную выполнили студенты группы 03-322 \n Амбарцумян Ю.А\n Медынский С.А\n Максименко А.А",L"О программе",MB_OK);
                break;
            case ID_CHANGE:
                wc.hbrBackground = (HBRUSH)(COLOR_3DHILIGHT);   
                break;
            }
        break;
        case WM_CLOSE:
            // Создаем окно сообщений. Если пользователь щелкает мышью
            // по кнопке Да (Yes), основное окна разрушается.
            if (MessageBox(hWnd, L"Вы действительно хотите выйти?", L"Выход",MB_YESNO) == IDYES)DestroyWindow(hWnd);
            else return 0;
            break;
        case WM_DESTROY:
                PostQuitMessage(0); //Закрываем приложение
                break;
        
 
        default: 
                return DefWindowProc(hWnd, msg, wParam, lParam); //возвращаем дефолтные значения                
        }
        return 0l;
}
 
//Главная функция приложения
INT WINAPI WinMain(HINSTANCE hInst, HINSTANCE, LPSTR, int)
{  
        MSG msg;
        WNDCLASS wc;
 
        memset(&wc, 0, sizeof(wc));
        wc.lpszClassName = L"MyWndClass"; //Название класса окна
        wc.hInstance = hInst ;
        wc.hbrBackground = (HBRUSH)(COLOR_WINDOW); //Цвет окна
        wc.lpfnWndProc = WndProc;        
        wc.lpszMenuName=MAKEINTRESOURCE(IDR_MENU1);
        
        RegisterClass(&wc); //Регистрируем класс окна
 
        //Создать окно
        hMain = CreateWindow(wc.lpszClassName, L"Лабораторная работа №2", WS_OVERLAPPEDWINDOW, 100, 100, 800, 600, 0, 0, hInst, 0);  
        ShowWindow(hMain, SW_SHOW); //Показать окно
        //UpdateWindow(hMain); //Обновить окно
 
        //Стандартный цикл обработки сообщение приложением
        while (GetMessage(&msg, NULL, 0, 0))
        {
                TranslateMessage(&msg);
                DispatchMessage(&msg);
        }
        return (INT)msg.wParam;
}
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
11.04.2012, 16:55
Ответы с готовыми решениями:

Вызов модального диалогового окна из Меню (AboutBox при выборе пункта "О программе")
Есть меню и пункт в нём - &quot;О программе&quot;. Есть ресурс диалогового окна Как реализовать, чтобы при...

При выборе пункта "Темы" в меню выкидывает в авторизацию
Установлен локальный Denwer. На нем установлен Wordpress. Создавал тему. В какой-то момент при...

При выборе пункта меню "New" не появляется дочернее окно hChild
Здравствуйте! Вот код для приложения которое создает главное окно с менюшкой, и при выборе...

Что писать в запрос при выборе пункта меню "Любое"
Добрый вечер! Такой вопрос: имеется список меню, из которого пользователь выбирает значения:...

2
1 / 1 / 1
Регистрация: 30.12.2011
Сообщений: 9
12.04.2012, 18:12 2
Лучший ответ Сообщение было отмечено dex как решение

Решение

У меня была похожая проблема. Я решил через SetClassLong.
C++
1
2
3
4
5
6
7
8
9
10
case ID_COLOR:
             if(ChooseColor(&ccs))
             {
                 stdColor=ccs.rgbResult;
                 if(hbrush) DeleteObject(hbrush);
                 hbrush = CreateSolidBrush(stdColor);
                 SetClassLong(hEdit,GCL_HBRBACKGROUND,(LONG)hbrush);
                 InvalidateRect(hEdit,NULL,TRUE);
             }SetFocus(hEdit);
             break;
1
Brainsbreaker
896 / 372 / 52
Регистрация: 01.02.2011
Сообщений: 1,592
12.04.2012, 18:36 3
Что-то вроде
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
{
    RECT rect;
    HBRUSH hBrush;
    HDC hDC;
 
    hDC = GetWindowDC (hWnd);
    GetClientRect (hWnd, &rect);
    rect.left += 4;
    rect.right += 4;
    rect.top += 30;
    rect.bottom += 30;
    hBrush = CreateSolidBrush (RGB(0,127,0));
    FillRect (hDC, &rect, hBrush);
}
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
12.04.2012, 18:36

Сменить фон
Здравствуйте! Все никак не могу найти, где можно поменять этот фон? Который над строчкой...

Сменить фон
как можно сменить фон картинки?

Сменить фон
Добрый вечер подскажите пожалуйста как реализовать никогда не сталкивался Есть вон в блоке он...

Не могу сменить фон
Братцы, в общем не могу разобраться. В принципе более менее соображаю в управлении и разработками...


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

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

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