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

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

Войти
Регистрация
Восстановить пароль
 
gengarww
Сообщений: n/a
#1

Как вставить иконку в загаловке окна? - C++

04.10.2012, 00:14. Просмотров 401. Ответов 0
Метки нет (Все метки)

Доброго времени суток всем!

1. Создал проект
2. Создал заголовочный файл test.h
Содержимое:
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
#include "resource.h"
 
#define IDI_ICON1   101
 
HINSTANCE hInst;
HWND hWnd, hWnd_Ch; 
 
class CWin
    {
      public:
 
         //Функция обработки событий дочернего окна 
         static LRESULT CALLBACK ChildProc(HWND hwnd, UINT Message, WPARAM wparam,LPARAM lparam)
             {
                 if (Message == WM_DESTROY )
                     {
                         return 0;
                     }
                 
                 return DefWindowProc(hwnd,Message,wparam,lparam);
             }
 
         //Функция обработки событий окна
         static LRESULT CALLBACK WndProc(HWND hwnd, unsigned int msg, WPARAM wParam,LPARAM lParam)
             {
                 hWnd_Ch = hwnd;
 
                 if(msg==WM_DESTROY)
                     {
                         PostQuitMessage(0);
                         return 0L;
                     }
                 return (DefWindowProc(hwnd, msg, wParam, lParam));
             }
 
         void mwin(HINSTANCE hInst, int nCmdShow, DWORD WinStyleEx,
                   LPCTSTR WinName, DWORD WinStyle, int x, int y, int nWidth, int nHeight, HWND hWndParent, 
                   HMENU hMenu, LPVOID lpParam, LPCTSTR szClassName, int wColor, LPCTSTR lpCursorName, WNDPROC wPr)
                   {
 
                       WNDCLASSEX WindowClass;    //Создать объект класса окна
 
                       WindowClass.cbSize = sizeof(WNDCLASSEX);                         //Установить размер структуры
                       WindowClass.style = CS_HREDRAW | CS_VREDRAW;                     //Перерисовать окно при изменении размера  
                       WindowClass.lpfnWndProc = wPr;                               //Определить функцию - обработчик сообщений
                       WindowClass.cbClsExtra = NULL;                                   //Никаких дополнительных байт после структуры 
                       WindowClass.cbWndExtra = NULL;                                   //класса окна в экземпляре окна
                       WindowClass.hInstance = hInst;                               //Дескриптор экземпляра приложения
                       WindowClass.hIcon = LoadIcon(hInst,MAKEINTRESOURCE(IDI_ICON1)); //Пиктограмма приложения
                       WindowClass.hCursor = LoadCursor(0, lpCursorName);                  //Курсор окна
                       WindowClass.hbrBackground = static_cast<HBRUSH>(GetStockObject(wColor)); //Кисть, определяющая цвет окна
                       WindowClass.lpszMenuName = NULL;                                 //Указатель на имя ресурса меню 
                       WindowClass.lpszClassName = szClassName;                           //Установить имя класса
                       WindowClass.hIconSm = NULL;                                      //Малая пиктограмма, связанная с окном
 
                       RegisterClassEx(&WindowClass);
 
                       hWnd = CreateWindowEx(
                           WinStyleEx,                         //Улучшенный стиль окна 
                           szClassName,                          //Имя класса окна
                           WinName,                            //Заголовок окна
                           WinStyle,                           //Стиль окна - перекрываемое  
                           x,                                  //Позиция на экране по умолчанию
                           y,                                  //левого верхнего угла как х, y… 
                           nWidth,                             //Размер окна по умолчанию – ширина…
                           nHeight,                            //… и высота
                           hWndParent,                         //Нет родительского окна
                           hMenu,                              //Нет меню
                           hInst,                          //Дескриптор экземпляра программы
                           lpParam                             //Никаких данных для создания окна 
                           );
 
                       ShowWindow(hWnd, nCmdShow);           //Отобразить окно
                       UpdateWindow(hWnd);                   //Вызывает перерисовку клиентской области окна
                   }
 
          int mmwin(void)
          {
                       MSG msg;        //Структура сообщения Windows
 
                       while (GetMessage(&msg, 0, 0, 0) == TRUE)   //Получить сообщение
                           {
                               TranslateMessage(&msg);                   //Трансляция сообщения
                               DispatchMessage(&msg);                    //Диспетчеризация сообщения
                           }
                       
                       return static_cast<int>(msg.wParam);
          }
     };
3. Создал исходный файл test.cpp
Содержимое:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <windows.h>
#include "test.h"
 
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
    CWin cw1;
 
    cw1.mwin(hInst, nCmdShow, WS_EX_WINDOWEDGE,
             L"ParentWindow", WS_TILEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, 
             NULL, NULL, NULL, L"ParentWindow", LTGRAY_BRUSH, IDC_ARROW, cw1.WndProc);
 
    cw1.mwin(hInst, nCmdShow, NULL,
             L"ChildrenWindow", WS_CHILD | WS_BORDER | WS_VISIBLE, 10, 10, 200, 200, 
             hWnd_Ch, NULL, NULL, L"ChildrenWindow", WHITE_BRUSH, IDC_HAND, cw1.ChildProc);
 
    cw1.mwin(hInst, nCmdShow, WS_EX_DLGMODALFRAME,
             L"ChildrenWindow1", WS_CHILD | WS_BORDER | WS_VISIBLE, 200, 200, 100, 100, 
             hWnd_Ch, NULL, NULL, L"ChildrenWindow1", BLACK_BRUSH, IDC_HAND, cw1.ChildProc);
 
    cw1.mmwin();
}
4. Добавил в ресурсы иконку.

Скомпилировал, проект запустился... рисует основное окно и два дочерних.

Вопрос - Подскажите, пожалуйста, как мне вывести иконку в заголовке окна? (Если создаю проект без заголовочного файла *.h, то там иконку могу вывести, а тут не получается )
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.10.2012, 00:14     Как вставить иконку в загаловке окна?
Посмотрите здесь:

Как вставить картинки в окна? - C++
int WINAPI WinMain(HINSTANCE hInst, // дескриптор экземпляра приложения HINSTANCE hPreviousInst, // LPSTR lpCommandLine, // запуск...

Можно ли изменить иконку окна во время выполнения программы? - C++
Можно ли изменить иконку окна во время выполненния программы?

Можно ли изменить иконку окна во время выполнения программы? - C++
Можно ли изменить иконку окна во время выполненния программы?

Как получить иконку файла? - C++
Мне нужны не те иконки, которые выгрызает из exe-шников и т.п. ExtractIcon(), а те иконки, которые Windows ассоциирует с различными типами...

Как привязать к консольному приложению иконку? - C++
Как назначить иконку консольному приложению? Чтоб как нормальная программа выглядела.

Как назначить моему exeшнику иконку? - C++
Есть у меня в проекте VC++ 6 один файл с текстом программы с расширением cpp, больше ничего научите пожалуйста как назначить моему...

Как изменить иконку исполняемого файла - C++
Добрый день. Написал игру маленькую, консольную. Решил послать её другу. Но у экзешника не красивая иконка. Долго ползал на форуме...

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

Как сделать и включить в проект иконку приложения - C++
Здравствуйте! В win 7 многие приложения имеют иконки, которые не теряют качество при масштабировании (векторные скорее всего). Как...

Как отключить или убрать иконку выхода [x] ? - C++
Как отключить или убрать иконку выхода ? В интернете нарыл много информации и на просторах киберфорума тоже, но она мне никак не...

Просто, как вставить строку? - C++
Пользователь вводит имя. А программа выдает результат: Hello, &lt;имя пользователя&gt;.

Как вставить в кнопку картинку - C++
Здравствуйте! Подскажите, как реализовать это не через визуальный редактор.


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

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