Windows ailesi işletim sistemlerinin kullanıcı arayüzünün çalışma prensipleri, pencere kavramına dayanmaktadır. Masaüstü, görev çubuğu, listeler, diyaloglar, düğmeler, menülerin tümü pencerelerdir. Bu nedenle, aslında herhangi bir arayüz öğesini görüntülemek için bir windows penceresi oluşturmanız gerekir.
Gerekli
- - derleyici;
- - Windows Platformu SDK'sı.
Talimatlar
Aşama 1
Gerekirse, oluşturulacak pencerenin sınıfını kaydedin. RegisterClass, RegisterClassEx API işlevlerine bir çağrı yapın veya kullanılan çerçevenin uygun işlevselliğini kullanın.
RegisterClass ve RegisterClassEx işlevleri, sırasıyla WNDCLASS ve WNDCLASSEX türündeki yapılara yönelik işaretçileri tek parametreleri olarak kabul eder. Bir pencere oluştururken sınıf adı yerine ATOM türünün dönüş değeri kullanılabilir. İşlev çağrısı başarısız olursa, dönüş değeri 0'dır.
WNDCLASS veya WNDCLASSEX türünde bir yapı örneği oluşturun. Gerekli tüm alanları doldurun. Özellikle, doğru değerler şuralara yerleştirilmelidir:
- cbSize - bayt cinsinden yapı boyutu;
- stil - pencere sınıfı için bir dizi stil;
- lpfnWndProc - bir pencere prosedürüne işaretçi;
- hInstance, pencere sınıfının kayıtlı olduğu modülün tanıtıcısıdır;
- lpszClassName, sınıfın sembolik adıdır.
Kalan alanlar NULL değerlerle yazılabilir. Pencere sınıfını kaydetmek için bir işlev çağrısı yapın. Döndürülen sonucu kontrol edin.
Adım 2
Gerekirse mevcut bir pencere sınıfını seçin. Sembolik sınıf adını (kaydederken lpszClassName işaretçisinden geçen) veya karşılık gelen ATOM değerini bilmelisiniz. Sınıf, uygulama düzeyinde yerel, uygulama düzeyinde genel (CS_GLOBALCLASS bayrağıyla kayıtlı) veya sistem sınıfı olabilir. Son tür, şu adlara sahip pencere sınıflarını içerir: Button, ComboBox, Edit, ListBox, MDIClient, ScrollBar, Static. RichEdit20W veya SysListView32 gibi sınıflar, karşılık gelen kitaplıklar yüklendiğinde kaydedilir.
Aşama 3
Bir Windows penceresi oluşturun. Kullanmakta olduğunuz çerçevenin veya kitaplığın sınıf nesneleri için CreateWindow, CreateWindowEx API işlevlerini veya uygun sarmalayıcı yöntemlerini kullanın. CreateWindowEx işlevinin prototipi şöyle görünür:
HWND CreateWindowEx (DWORD dwExStyle, LPCTSTR lpSınıfAdı, LPCTSTR lpPencereAdı, DWORD dwStyle, int x, int y, int nGenişlik, int nYükseklik, HWND hWndEbeveyn, HMENU hMenü, HINSTANCE hÖrnek, LPVOID lpParam);
CreateWindow işlevi, yalnızca dwExStyle parametresinin yokluğunda CreateWindowEx'ten farklıdır.
CreateWindow veya CreateWindowEx'i arayın. Birinci veya ikinci adımda tanımladığınız pencere sınıfının adını veya ATOM değerini lpClassName parametresine iletin. x, y, nWidth, nHeight parametreleri, oluşturulan pencerenin koordinatları ve boyutları olabilir. Üst pencere tanıtıcısı (varsa) hWndParent'ten geçirilir.
CreateWindow veya CreateWindowEx tarafından döndürülen değeri kaydedin ve ayrıştırın. Başarı durumunda, yeni pencereye bir tanıtıcı döndürürler; başarısızlık durumunda, NULL.