/*
Done by TheTutor -- 9/24/01
// Перевод © 2004 Евгений Казеко
// www.gamecoder.kazeko.com
// evgeniy@kazeko.com
Установка значка в приложение - Эта обучалка наиболее пригодится, если вы
используете VC++6.0, потому что это компилятор, который использую я.
Ниже я опишу шаги для создания и подключения значка
1) Я выбираю на панели инструментов "Project"
2) Затем я выбираю "Add to Project", затем "New..."
3) После этого я выбираю "Resource Script" - я набираю имя "IconRes" для
имени ресурса
4) Я нажимаю правой кнопкой на описание ресурса (в виде маленькой папки с
именем IconRes.rc)
5) Затем я выбираю "Insert...", "Icon" как тип ресурса и нажимаю кнопку "New"
6) После этого я использую инструменты рисования для создания значка
Теперь мы готовы поместить его в нашу программу
*/
#include <windows.h>
#include "resource.h"
#define class_name "GT_Icon"
// WinProc
LRESULT CALLBACK WinProc(HWND hwnd, UINT message, WPARAM wparam, LPARAM lparam);
// WinMain
int WINAPI WinMain(HINSTANCE hinstance, HINSTANCE hprev, PSTR cmdline, int ishow)
{
HWND hwnd;
MSG msg;
WNDCLASSEX wndclassex = {0};
// Заполняем поля WNDCLASSEX, которые нам нужны
wndclassex.cbSize = sizeof(WNDCLASSEX);
wndclassex.style = CS_HREDRAW | CS_VREDRAW;
wndclassex.lpfnWndProc = WinProc;
wndclassex.hInstance = hinstance;
wndclassex.hbrBackground = (HBRUSH)GetStockObject(BLACK_BRUSH); // Задаем черный фон окна
wndclassex.lpszClassName = class_name;
// "hIcon" является членом WNDCLASSEX, который нам нужно заполнить, чтобы
// наше приложение имело значок
// По параметрам:
// hinstance -- ссылка на экземпляр окна, мы передаем его функцией WinMain()
// MAKEINTRESOURCE(IDI_ICON1) -- Второй параметр это ссылка на загружаемое изображение.
// Если вы заметили, то когда мы создаем значок, также создается
// заголовочный файл "resource.h". Я добавил этот файл в проект.
// Если вы посмотрите на него, вы заметите, что в нем есть
// определение #define для IDI_ICON1.
// MAKEINTRESOURCE это макрос, который преобразует целочисленные
// величины в тип ресурсов, совместимый с функциями обработки
// ресурсов Win32. Он преобразует это целое число в соответствующее
// "ссылочное имя" ресурса
// IMAGE_ICON -- определяет тип загружаемого изображения
// 0 -- ширина загружаемого изображения в пискелях
// 0 -- высота изображения в пискелях
// LR_DEFAULTSIZE -- использование системных значений для значков (а также курсоров) при загрузке
// значка, если ширина и высота (два параметра до этого) установлены равными нулю.
wndclassex.hIcon = (HICON)LoadImage(hinstance,
MAKEINTRESOURCE(IDI_ICON1),
IMAGE_ICON,0,0,LR_DEFAULTSIZE);
RegisterClassEx(&wndclassex);
hwnd = CreateWindowEx(WS_EX_CLIENTEDGE, // У окна будет жирная рамка
class_name,
"Adding an Icon",
WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT, // координата х верхнего угла по умолчанию
CW_USEDEFAULT, // координата y верхнего угла по умолчанию
CW_USEDEFAULT, // ширина окна по умолчанию
CW_USEDEFAULT, // высота окна по умолчанию
NULL,
NULL,
hinstance,
NULL);
// Выводим и обновляем окно
ShowWindow(hwnd, ishow);
UpdateWindow(hwnd);
while(1)
{
if(PeekMessage(&msg,NULL,0,0,PM_REMOVE))
{
if(msg.message == WM_QUIT)
break;
TranslateMessage(&msg);
DispatchMessage(&msg);
}
else
{
// Выполняем действия
} // конец if(PeekMessage(&msg,NULL,0,0,PM_REMOVE))...else
} // конец while(1)
UnregisterClass(class_name,hinstance); // Освобождаем WNDCLASSEX
return msg.wParam;
}
// В WinProc не будем делать слишком многого
LRESULT CALLBACK WinProc(HWND hwnd, UINT message, WPARAM wparam, LPARAM lparam)
{
PAINTSTRUCT ps;
switch(message)
{
case WM_PAINT:
BeginPaint(hwnd, &ps);
EndPaint(hwnd, &ps);
return 0;
case WM_CLOSE:
case WM_DESTROY:
PostQuitMessage(0);
return 0;
} // конец switch(message)
return DefWindowProc(hwnd, message, wparam, lparam);
}
/* Есть другая функция для загрузки значка:
LoadIcon()
Однако, она устаревает. MSDN говорит, что следует использовать LoadImage(), что
мы и делаем.
*/
/*
| TheTutor
| thetutor@gametutorials.com
| © 2000-2002 GameTutorials
*/
// Перевод © 2004 Евгений Казеко
// www.gamecoder.kazeko.com
// evgeniy@kazeko.com
|