Principy fungování uživatelského rozhraní operačních systémů rodiny Windows jsou založeny na konceptu okna. Plocha, hlavní panel, seznamy, dialogy, tlačítka, nabídky jsou všechna okna. Proto ve skutečnosti, abyste mohli zobrazit jakýkoli prvek rozhraní, musíte vytvořit okno systému Windows.
Nezbytné
- - překladač;
- - Windows Platform SDK.
Instrukce
Krok 1
V případě potřeby zaregistrujte třídu okna, která se má vytvořit. Proveďte volání funkcí API RegisterClass, RegisterClassEx nebo použijte příslušnou funkci použitého rozhraní.
Funkce RegisterClass a RegisterClassEx přijímají ukazatele na struktury typu WNDCLASS a WNDCLASSEX jako svůj jediný parametr. Při vytváření okna lze místo názvu třídy použít návratovou hodnotu typu ATOM. Pokud volání funkce selže, návratová hodnota je 0.
Vytvořte instanci struktury typu WNDCLASS nebo WNDCLASSEX. Vyplňte všechna potřebná pole. Správné hodnoty musí být umístěny zejména v:
- cbSize - velikost struktury v bajtech;
- styl - sada stylů pro třídu oken;
- lpfnWndProc - ukazatel na proceduru okna;
- hInstance je popisovač modulu, ve kterém je zaregistrována třída okna;
- lpszClassName je symbolický název třídy.
Zbytek polí lze zapsat hodnotami NULL. Proveďte volání funkce k registraci třídy okna. Zkontrolujte vrácený výsledek.
Krok 2
V případě potřeby vyberte existující třídu okna. Musíte znát název symbolické třídy (ten, který při registraci prošel ukazatelem lpszClassName) nebo odpovídající hodnotu ATOM. Třída může být lokální na úrovni aplikace, globální na úrovni aplikace (registrovaná s příznakem CS_GLOBALCLASS) nebo systémová třída. Poslední typ zahrnuje třídy oken s názvy: Button, ComboBox, Edit, ListBox, MDIClient, ScrollBar, Static. Třídy jako RichEdit20W nebo SysListView32 se zaregistrují při načtení odpovídajících knihoven.
Krok 3
Vytvořte okno Windows. Použijte funkce API CreateWindow, CreateWindowEx nebo vhodné metody obálky pro objekty třídy používaného rozhraní nebo knihovny. Prototyp funkce CreateWindowEx vypadá takto:
HWND CreateWindowEx (DWORD dwExStyle, LPCTSTR lpClassName, LPCTSTR lpWindowName, DWORD dwStyle, int x, int y, int nWidth, int nVýška, HWND hWndParent, HMENU hMenu, HINSTANCE hInstance, LPVOID lpParam);
Funkce CreateWindow se liší od CreateWindowEx pouze v nepřítomnosti parametru dwExStyle.
Volejte CreateWindow nebo CreateWindowEx. Předejte v parametru lpClassName název nebo hodnotu ATOM třídy okna, kterou jste definovali v prvním nebo druhém kroku. Parametry x, y, nWidth, nHeight mohou být souřadnice a velikosti vytvářeného okna. Popisovač nadřazeného okna (pokud existuje) je předán hWndParent.
Uložte a analyzujte hodnotu vrácenou CreateWindow nebo CreateWindowEx. Při úspěchu vrátí popisovač do nového okna; při selhání NULL.