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

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

Восстановить пароль Регистрация
 
gengarww
Сообщений: n/a
04.10.2012, 00:14     Как вставить иконку в загаловке окна? #1
Доброго времени суток всем!

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++ Как сделать и включить в проект иконку приложения
Как назначить моему exeшнику иконку? C++
Как получить иконку файла? C++
C++ Можно ли изменить иконку окна во время выполненния программы?
Можно ли изменить иконку окна во время выполнения программы? C++
C++ Как менять иконку файла .exe?
Как отключить или убрать иконку выхода [x] ? C++
C++ Как изменить иконку исполняемого файла

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

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

Текущее время: 14:19. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru