Инструменты пользователя

Инструменты сайта


shablon_winapi_gui

Различия

Здесь показаны различия между двумя версиями данной страницы.

Ссылка на это сравнение

shablon_winapi_gui [2011/03/22 15:27] (текущий)
Строка 1: Строка 1:
 +====== Шаблон WinAPI GUI ======
 +<​file>​
 +/* Простейщее WinAPI приложение. Шаблон.
  
 +*/
 +
 +#include <​windows.h>​
 +
 +#​include<​tchar.h>​
 +
 +
 +
 +LRESULT CALLBACK WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam); // прототип функции WndProc
 +
 +
 +
 +int WINAPI _tWinMain(HINSTANCE hInstance, // дескриптор текущего экземпляра окна
 +
 +                     ​HINSTANCE hPrevInstance,​ // дескриптор предыдущего экземпляра окна
 +
 +                     ​LPTSTR ​   lpCmdLine, // указатель на командную строку
 +
 +                     ​int ​      ​nCmdShow // показывает состояние окна
 +
 +
 +
 +{
 +
 + MSG uMsg;
 +
 + HWND hMainWnd;
 +
 + TCHAR szWindowClass[] = L"​MyClass";​ // имя класса
 +
 + WNDCLASSEX wcex; // объявление переменной типа структура оконного класса
 +
 +
 +
 + wcex.cbSize = sizeof(WNDCLASSEX);​ // размер структуры в байтах
 +
 + wcex.style = CS_HREDRAW | CS_VREDRAW | CS_DBLCLKS;​ //​ стиль окна
 +
 + wcex.lpfnWndProc = WndProc; //​адрес оконной процедуры (WNDPROC)WndProc;​
 +
 + wcex.cbClsExtra = 0; // доп. поля, кот могут потребоваться дальше
 +
 + wcex.cbWndExtra = 0; // доп. поля, кот могут потребоваться дальше
 +
 + wcex.hInstance = hInstance;//​ описатель приложения,​ первый параметр функции _tWinMain
 +
 + wcex.hIcon = LoadIcon(hInstance,​ MAKEINTRESOURCE(IDI_APPLICATION));​ // определение иконки
 +
 + wcex.hCursor = LoadCursor(NULL,​ IDC_ARROW); // определение курсора LoadCursor(NULL,​ IDC_CROSS);
 +
 + wcex.hbrBackground = (HBRUSH)(COLOR_WINDOW+1);​ // установка фона GetSysColorBrush(COLOR_DESKTOP);​
 +
 + wcex.lpszMenuName = NULL; // определение меню
 +
 + wcex.lpszClassName = szWindowClass;​ // имя класса
 +
 + wcex.hIconSm = NULL; //​определение маленькой иконки
 +
 +
 +
 + // Регистрируем класс окна ​
 +
 + if (!RegisterClassEx(&​wcex)) { 
 +
 + MessageBox(NULL,​ L"​Cannot register class",​ L"​Error",​ MB_OK); ​
 +
 + return 0; 
 +
 + }
 +
 +
 +
 + // Создаем основное окно приложения ​
 +
 + hMainWnd = CreateWindow(szWindowClass/​*имя зарегистрированного или готового класса*/,​
 +
 + L"A Hellol Application"/​*имя окна*/,
 +
 + WS_OVERLAPPEDWINDOW/​*| WS_VSCROLL*/ ​ /​*стили окна*/,
 +
 + CW_USEDEFAULT/​*расположение окна Х*/,
 +
 + 0/​*расположение окна У*/,
 +
 + CW_USEDEFAULT/​*ширина окна*/,
 +
 + 0/​*высота окна*/,
 +
 + (HWND)NULL/​*родитель. если нет, то NULL*/,
 +
 + (HMENU)NULL/​*дескриптор меню. если меню нет, то NULL*/,
 +
 + (HINSTANCE)hInstance/​*описатель приложения*/,​
 +
 + NULL/​*исп. в многооконных приложениях. если однооконное,​ то NULL*/
 +
 + );//​возвращает описатель окна и передает его в hMainWnd
 +
 +
 +
 + // Показываем наше окно ​
 +
 + ShowWindow(hMainWnd/​*описатель окна, кот нужно показать*/,​ SW_NORMAL/​*как именно открыто окно, режимы*/​); ​
 +
 + UpdateWindow(hMainWnd);​ // Отображение окна
 +
 +
 +
 + // Выполняем цикл обработки сообщений до закрытия приложения ​
 +
 + while (GetMessage(&​uMsg/​*адрес структуры,​ принемающей сообщения*/,​
 +
 + NULL/​*из каких окон принемать сообщения. если от всех, то NULL*/,
 +
 + 0/​*ограничение сообщений. если нет, то 0*/,
 +
 + 0/​*ограничение сообщений. если нет, то 0*/
 +
 + )/​*функция,​ выбирающая сообщения из очереди cообщений программы*/​)
 +
 +
 +
 + TranslateMessage(&​uMsg);​ /​*преобразование нажатия симбольных клавиш (облегчение работы определения нажатой клавиши)*/​
 +
 + DispatchMessage(&​uMsg);​ //​отсылает сообщения в оконную процедуру WndProc
 +
 + }
 +
 +
 +
 + return 0;
 +
 +}
 +
 +
 +
 +LRESULT CALLBACK WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
 +
 +{
 +
 + //int wmId, wmEvent;
 +
 + PAINTSTRUCT ps;
 +
 + HDC hdc;
 +
 +
 +
 + switch (uMsg)
 +
 + {
 +
 + case WM_COMMAND:
 +
 +//​ wmId ​   = LOWORD(wParam);​
 +
 +// wmEvent = HIWORD(wParam);​
 +
 + case WM_PAINT:
 +
 + hdc = BeginPaint(hWnd,​ &ps);
 +
 + // TODO: Add any drawing code here...
 +
 + EndPaint(hWnd,​ &ps);
 +
 + break;
 +
 + case WM_DESTROY:
 +
 + PostQuitMessage(0);​
 +
 + break;
 +
 + default:
 +
 + return DefWindowProc(hWnd,​ uMsg, wParam, lParam);
 +
 + }
 +
 + return 0;
 +
 +}
 +
 +
 +</​file>​
загрузка...
shablon_winapi_gui.txt · Последние изменения: 2011/03/22 15:27 (внешнее изменение)