Okna aplikací jsou hlavním prvkem uživatelského rozhraní v operačním systému Windows. Psaní vlastního okna může být důležitým krokem při vývoji softwaru pro tuto platformu. V této příručce se podíváme na hlavní kroky k vytvoření okna pro Windows pomocí programovacího jazyka C++. Podíváme se také na příklady kódu, abychom proces lépe porozuměli.
Než začnete psát okno, musíte pochopit základní pojmy související s programováním oken ve Windows. Každé okno má oblast klientské oblasti, což je oblast, kde se zobrazuje obsah okna. Okna mohou být různých typů, jako je hlavní okno, podřízené okno nebo dialogové okno.
Program napsaný v programovacím jazyce C++ musí mít vstupní bod, který se obvykle nazývá funkce main (). V této funkci je nutné provést všechny potřebné operace k vytvoření a zobrazení okna. Nejprve musíte zaregistrovat třídu okna a poté vytvořit instanci této třídy. Poté lze okno zobrazit pomocí funkcí ShowWindow () a UpdateWindow ().
Při vývoji softwaru pro Windows je důležité vzít v úvahu nejen vytváření okna, ale také zpracování zpráv, které se zobrazují v okně. Windows posílá aplikaci různé zprávy, jako jsou zprávy o stisknutí kláves, pohybu myši nebo zavření okna. Ke zpracování těchto zpráv se používá speciální funkce nazývaná funkce Windows-obslužného prostředí.
V této příručce se podíváme na všechny hlavní aspekty vytváření aplikace Windows window. Projdeme kroky k vytvoření okna, zpracování zpráv a přidání ovládacích prvků do okna. Poskytneme také příklady kódu, které vám pomohou lépe porozumět každému kroku procesu vývoje.
Krok 1: instalace vývojového prostředí
1. C++Kompilátor
K vytvoření okna pro Windows budete používat programovací jazyk C++. K tomu budete muset nainstalovat kompilátor C++. Jedním z nejpopulárnějších výběrů je MinGW (Minimalist GNU for Windows), který obsahuje kompilátor GCC pro Windows. MinGW si můžete stáhnout z oficiálních stránek a nainstalovat jej podle pokynů na obrazovce.
2. Vývojové prostředí
Pro zjednodušení procesu vývoje se doporučuje používat integrované vývojové prostředí (IDE). Jedním z populárních výběrů pro vývoj okenních aplikací je Microsoft Visual Studio. Visual Studio Community Edition si můžete stáhnout a nainstalovat z oficiálních stránek společnosti Microsoft.
3. Windows API Library
K vytvoření okna pro Windows budete potřebovat knihovnu Windows API, která poskytuje potřebné funkce a třídy pro práci s okny a dalšími prvky uživatelského rozhraní. Je součástí operačního systému, takže není nutné jej instalovat samostatně.
Po instalaci všech potřebných nástrojů budete připraveni začít vyvíjet Windows.
Krok 2: Vytvoření okna
1. Připravte si své vývojové prostředí instalací potřebných nástrojů, jako je vývojové prostředí (IDE) a kompilátor pro vytváření aplikací pro Windows.
2. Otevřete nový projekt ve svém vývojovém prostředí a vyberte šablonu pro vytvoření okna. Většina IDE má předinstalované šablony, které lze použít k rychlému vytvoření okna.
3. Zadejte rozměry a umístění okna. Velikost okna v pixelech můžete nastavit zadáním šířky a výšky. Polohu okna na obrazovce lze také určit zadáním souřadnic levého horního rohu okna.
4. Přidejte ovládací prvky do okna. Mohou to být tlačítka, pole pro zadávání textu, seznamy atd. pro každý ovládací prvek nastavte jedinečný identifikátor (ID) pro následné zpracování událostí.
5. Definujte funkce pro zpracování událostí okna a ovládacích prvků. Mohou to být funkce, které jsou vyvolány stisknutím tlačítka, změnou textu v poli vstupu nebo výběrem hodnoty ze seznamu.
6. Napište kód, který používá rozhraní API (Application Programming Interface) operačního systému Windows k vytvoření okna a ovládacích prvků a zpracování událostí. Může to být sada funkcí, které jsou vyvolány v určité sekvenci pro vytvoření a zobrazení okna.
7. Zkopírujte kód a spusťte aplikaci, abyste viděli vytvořené okno. Ujistěte se, že okno vypadá a chová se tak, jak jste zamýšleli, a že ovládací prvky fungují správně.
Zde je příklad kódu v C++ pomocí knihovny rozhraní Windows API k vytvoření jednoduchého okna:
#include LRESULT CALLBACK WindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)return 0;>int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow);wc.lpfnWndProc = WindowProc;wc.hInstance = hInstance;wc.lpszClassName = CLASS_NAME;RegisterClass(&wc);HWND hwnd = CreateWindowEx(0,CLASS_NAME,L"Window Title",WS_OVERLAPPEDWINDOW,CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT,NULL,NULL,hInstance,NULL);if (hwnd == NULL)ShowWindow(hwnd, nCmdShow);MSG msg = < >;while (GetMessage(&msg, NULL, 0, 0))return msg.wParam;>
Tento kód vytvoří jednoduché okno s nadpisem "window Title" a plně zpracovává události zavření okna a ukončení aplikace.
Krok 3: práce s kontrolami
Kontroly hrají důležitou roli při vytváření okna pro Windows. Umožňují uživatelům komunikovat s aplikací, zadávat data a provádět různé akce.
V tomto kroku se podíváme na základní typy kontrol a jak je používat v okně pro Windows.
1. Tlačítka
Tlačítka patří k nejběžnějším ovládacím prvkům. Umožňují uživateli spouštět určité akce nebo příkazy. K vytvoření tlačítka v okně pro Windows můžete použít následující kód:
CreateWindow("BUTTON", // Класс кнопки"Надпись кнопки", // Текст на кнопкеWS_TABSTOP | WS_VISIBLE | WS_CHILD | BS_DEFPUSHBUTTON, // Стиль кнопкиx, y, width, height, // Координаты и размеры кнопкиhwnd, // Родительское окно(HMENU)ID_BUTTON, // Идентификатор кнопки(HINSTANCE)GetWindowLongPtr(hwnd, GWLP_HINSTANCE),NULL);
K vytvoření tlačítka použijte funkci CreateWindow. V možnosti " Třída tlačítka "zadejte třídu tlačítka, v možnosti" Text na tlačítku " zadejte text, který se zobrazí na tlačítku. Pro styl tlačítka použijte vlajky, jako je bs_defpushbutton, k vytvoření výchozího tlačítka. Nastavte požadované souřadnice a velikosti tlačítka pro zobrazení v okně. Zadejte rodičovské okno pomocí možnosti hwnd . Nastavte jedinečný identifikátor tlačítka v možnosti HMENU .
2. Textová pole
Textová pole umožňují uživateli zadávat a upravovat textové informace. K vytvoření textového pole v okně pro Windows můžete použít následující kód:
CreateWindow("EDIT", // Класс текстового поляNULL, // Начальный текстWS_VISIBLE | WS_CHILD | WS_BORDER,x, y, width, height, // Координаты и размеры текстового поляhwnd, // Родительское окно(HMENU)ID_TEXT_BOX, // Идентификатор текстового поля(HINSTANCE)GetWindowLongPtr(hwnd, GWLP_HINSTANCE),NULL);
Předejte třídu textového pole v možnosti "Třída textového pole". Nastavte počáteční text, který se zobrazí v textovém poli, a přeneste jej do možnosti počáteční text. Určete požadované souřadnice a velikosti textového pole pomocí možností x, y, width, height . Nastavte rodičovské okno pomocí možnosti hwnd a jedinečného identifikátoru textového pole v možnosti HMENU .
3. Seznamy
Seznamy umožňují uživateli vybrat jednu nebo více pozic z daného seznamu. K vytvoření seznamu v okně pro Windows můžete použít následující kód:
CreateWindow("LISTBOX", // Класс спискаNULL, // Начальный список позицийWS_VISIBLE | WS_CHILD | LBS_STANDARD,x, y, width, height, // Координаты и размеры спискаhwnd, // Родительское окно(HMENU)ID_LIST_BOX, // Идентификатор списка(HINSTANCE)GetWindowLongPtr(hwnd, GWLP_HINSTANCE),NULL);
Do položky "třída seznamu"zadejte třídu seznamu. Pokud je seznam položek v seznamu již definován, předejte jej v možnosti "počáteční seznam pozic". Nastavte požadované souřadnice a velikosti seznamu pomocí možností x, y, width, height . Předejte rodičovské okno v možnosti hwnd a jedinečný identifikátor pro seznam v parametru HMENU .
V této části jsme se podívali na základní typy kontrol, které lze použít v okně pro Windows. Můžete kombinovat různé typy kontrol a vytvořit tak plnohodnotné okno, které uživatelům umožní interakci s vaší aplikací.
Krok 4: příklady okenních aplikací
V této části se podíváme na několik příkladů okenních aplikací, které můžete vytvořit pomocí Windows API.
| Kód | Описание |
|---|---|
| # include LRESULT CALLBACK WndProc (HWND hwnd, uint msg, WPARAM wParam, LPARAM lParam) < switch (msg) < case WM_DESTROY: PostQuitMessage(0); break; default: return DefWindowProc(hwnd, msg, wParam, lParam); >návrat 0; > int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) < const char CLASS_NAME[] = "Moje třída oken"; WNDCLASS wc = ; wc.lpfnWndProc = wndproc; wc.hInstance = hInstance; wc.lpszClassName = CLASS_NAME; RegisterClass (&wc); HWND hwnd = CreateWindowEx( 0, CLASS_NAME, "My Window", WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, NULL, NULL, hInstance, NULL ); if (hwnd == NULL) < return 0; >ShowWindow(hwnd, nCmdShow); MSG msg = ; while (GetMessage(&msg, NULL, 0, 0)) < TranslateMessage(&msg); DispatchMessage(&msg); >return (int)msg.wParam; > | Tento příklad vytvoří jednoduché okno pomocí funkcí z rozhraní Windows API. Okno nemá žádnou funkci, kromě možnosti jej zavřít. |
2. Окно с кнопкой:
| Код | Описание |
|---|---|
| # include LRESULT CALLBACK WndProc (HWND hwnd, uint msg, WPARAM wParam, LPARAM lParam) < switch(msg) < case WM_DESTROY: PostQuitMessage (0); break; case WM_COMMAND: if (LOWORD (wParam) == 1) < MessageBox(hwnd, "Hello, World!", "Message", MB_OK); >break; default: return DefWindowProc(hwnd, msg, wParam, lParam); > return 0; > int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) < const char CLASS_NAME[] = "Moje třída oken"; WNDCLASS wc = ; wc.lpfnWndProc = wndproc; wc.hInstance = hInstance; wc.lpszClassName = CLASS_NAME; RegisterClass(&wc); HWND hwnd = CreateWindowEx( 0, CLASS_NAME, "My Window", WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, NULL, NULL, hInstance, NULL); if (hwnd == NULL) < return 0; >Hwnd button = CreateWindow( "button", "Click Me", WS_TABSTOP | WS_VISIBLE | WS_CHILD, 10, 10, 100, 30, hwnd, (HMENU)1, hInstance, NULL); if (button = = NULL) < return 0; >Zobrazit okno (hwnd, nCmdShow); MSG msg=; while (GetMessage (&msg, NULL, 0, 0)) < TranslateMessage(&msg); DispatchMessage(&msg); >návrat (int)msg.wParam; > | Tento příklad vytvoří okno s tlačítkem. Po kliknutí na tlačítko se zobrazí zpráva " Hello, World!". |
3. Okno s textovým polem:
| Kód | Popis |
|---|---|
| #include LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) < static HWND textbox; switch (msg) < case WM_CREATE: textbox = CreateWindow( "edit", "", WS_CHILD | WS_VISIBLE | WS_BORDER | ES_AUTOHSCROLL, 10, 10, 200, 20, hwnd, NULL, NULL, NULL ); break; case WM_DESTROY: PostQuitMessage(0); break; default: return DefWindowProc(hwnd, msg, wParam, lParam); >return 0; > int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) < const char CLASS_NAME[] = "My Window Class"; WNDCLASS wc = ; wc.lpfnWndProc = WndProc; wc.hInstance = hInstance; wc.lpszClassName = CLASS_NAME; RegisterClass(&wc); HWND hwnd = CreateWindowEx( 0, CLASS_NAME, "My Window", WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, NULL, NULL, hInstance, NULL ); if (hwnd == NULL) < return 0; >ShowWindow(hwnd, nCmdShow); MSG msg = ; while (GetMessage(&msg, NULL, 0, 0)) < TranslateMessage(&msg); DispatchMessage(&msg); >return (int)msg.wParam; > | Tento příklad implementuje okno s textovým polem, do kterého může uživatel zadávat text. |
To je jen malá část toho, co lze vytvořit pomocí Windows API. S každým krokem objevíte více a více možností pro vytváření funkčních a pohodlných okenních aplikací pro Windows.
V další části budeme mluvit o různých způsobech kreslení grafiky v okně.