Neler yeni

Windows Win32 api ilk pencere

[XFB] Konu Bilgileri

Konu Hakkında Merhaba, tarihinde C & C++ kategorisinde kokensoft tarafından oluşturulan Windows Win32 api ilk pencere başlıklı konuyu okuyorsunuz. Bu konu şimdiye dek 10 kez görüntülenmiş, 0 yorum ve 0 tepki puanı almıştır...
Kategori Adı C & C++
Konu Başlığı Windows Win32 api ilk pencere
Konbuyu başlatan kokensoft
Başlangıç tarihi
Cevaplar
Görüntüleme
İlk mesaj tepki puanı
Son Mesaj Yazan kokensoft

kokensoft

Yönetici
Yönetici
Katılım
1 Eyl 2024
Mesajlar
22
Tepkime puanı
2
Puanları
3
Aşağıdaki kod için lazım olacak bazı bilgiler (dahası için )

Win32'de bir olarak bilinen bir değerle tanımlanır . Ve bir pencere tutamağının türü bir olarak görünse de ). Her durumda, HWND teriminin pencere tutamağı için bir kısaltma olarak kullanıldığını duyacaksınız .
  • CreateWindowEx işlevi, bir pencere oluşturur. Parametreler:
  • 0: Pencere tarzları (şu anda kullanılmıyor).
  • CLASS_NAME: Kullanılacak pencere sınıfının adı.
  • L"Learn to Program Windows": Pencere başlığı.
  • WS_OVERLAPPEDWINDOW: Pencere tarzı (kapsamlı pencere).
  • CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT: Pencerenin başlangıç konumu ve boyutu (varsayılan değerler).
  • NULL: Üst pencere (varsa).
  • NULL: Menü (varsa).
  • hInstance: Uygulama örneği tanımlayıcısı.
  • NULL: Ek uygulama verileri.
HWND CreateWindowEx(
DWORD dwExStyle,
LPCTSTR lpClassName,
LPCTSTR lpWindowName,
DWORD dwStyle,
int x,
int y,
int nWidth,
int nHeight,
HWND hWndParent,
HMENU hMenu,
HINSTANCE hInstance,
LPVOID lpParam );

hInstance , bir örneğin tutamağı veya bir modülün tutamağıdır . İşletim sistemi, yürütülebilir dosyayı veya EXE'yi belleğe yüklendiğinde tanımlamak için bu değeri kullanır. Bazı Windows işlevleri, örneğin simgeleri veya bit eşlemlerini yüklemek için örnek tutamağına ihtiyaç duyar.

-
ShowWindow()
Pencerenin nasıl gösterileceğini kontrol eder. Bu parametre, uygulamayı başlatan program bir yapısı sağlıyorsa, bir uygulama ShowWindow'u ilk çağırdığında yoksayılır. Aksi takdirde, ShowWindow ilk çağrıldığında, değer nCmdShow parametresinde elde edilen değer olmalıdır . Sonraki çağrılarda, bu parametre aşağıdaki değerlerden biri olabilir.
-


ValueMeaning
SW_HIDE
0
Pencereyi gizler ve başka bir pencereyi etkinleştirir
SW_SHOWNORMAL
SW_NORMAL

1
Bir pencereyi etkinleştirir ve görüntüler. Pencere küçültülür, büyütülür veya düzenlenirse, sistem onu orijinal boyutuna ve konumuna geri yükler. Bir uygulama pencereyi ilk kez görüntülerken bu bayrağı belirtmelidir.
SW_SHOWMINIMIZED
2
Pencereyi etkinleştirir ve simge durumuna küçültülmüş bir pencere olarak görüntüler.
SW_SHOWMAXIMIZED
SW_MAXIMIZE

3
Pencereyi etkinleştirir ve onu büyütülmüş bir pencere olarak görüntüler.
SW_SHOWNOACTIVATE
4
Bir pencereyi en son boyutu ve konumunda görüntüler. Bu değer SW_SHOWNORMAL değerine benzerdir , ancak pencere etkinleştirilmemiştir.
SW_SHOW
5
Pencereyi etkinleştirir ve geçerli boyutu ve konumunda görüntüler.
SW_MINIMIZE
6
Belirtilen pencereyi en aza indirir ve Z sırasındaki bir sonraki en üst düzey pencereyi etkinleştirir.
SW_SHOWMINNOACTIVE
7
Pencereyi küçültülmüş bir pencere olarak görüntüler. Bu değer SW_SHOWMINIMIZED değerine benzerdir , ancak pencere etkinleştirilmemiştir.
SW_SHOWNA
8
Pencereyi geçerli boyutu ve konumunda görüntüler. Bu değer SW_SHOW değerine benzerdir , ancak pencere etkinleştirilmemiştir.
SW_RESTORE
9
Pencereyi etkinleştirir ve görüntüler. Pencere küçültülürse, büyütülürse veya düzenlenirse, sistem onu orijinal boyutuna ve konumuna geri yükler. Bir uygulama küçültülmüş bir pencereyi geri yüklerken bu bayrağı belirtmelidir.
SW_SHOWDEFAULT
10
Uygulamayı başlatan program tarafından fonksiyonuna geçirilen yapısında belirtilen SW_ değerine göre gösteri durumunu ayarlar .
SW_FORCEMINIMIZE
11
Pencereye sahip olan iş parçacığı yanıt vermese bile pencereyi küçültür. Bu bayrak yalnızca farklı bir iş parçacığından gelen pencereleri küçültürken kullanılmalıdır.



C:
#include <windows.h>
//gerekli kütüphaneleri ekliyoruz
LRESULT CALLBACK WindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam);
//bu kısım aşağıdaki fonksiyona yönlendirme yapar

//pencere için ana fonksiyonumuz
int WINAPI wWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, PWSTR pCmdLine, int nCmdShow)
{
//burası pencere sınıfının adını tanımlar bu ad pencerenin oluşturulmasında kullanılır
const wchar_t CLASS_NAME[] = L"Sample Window Class";

//WNDCLASS yapısının sıfırlarla başlatılmasını sağlar bu yapı pencere sınıfı hakkında bilgi içerir.
WNDCLASS wc = { };

//Pencere sürecini (WindowProc) belirler. Bu süreç, pencereye gelen mesajları işler.
wc.lpfnWndProc = WindowProc;

//Uygulama örneğini (hInstance) olarak ayarlar

wc.hInstance = hInstance;


//Pencerenin adını (CLASS_NAME) ayarlar
wc.lpszClassName = CLASS_NAME;

//tanımladığımız pencereyi kaydeder
RegisterClass(&wc);


HWND hwnd = CreateWindowEx(
0, // Optional window styles.
CLASS_NAME, // Window class
L"Learn to Program Windows", // Window text
WS_OVERLAPPEDWINDOW, // Window style

// Size and position
CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT,

NULL, // Parent window
NULL, // Menu
hInstance, // Instance handle
NULL // Additional application data
);

//pencere oluşturulamazsa hwnd NULL olur ve bu durumda uygulama 0 döndürerek sonlanır
if (hwnd == NULL)
{
return 0;
}

ShowWindow(hwnd, nCmdShow);

//Mesaj yapısının sıfırlarla başlatılmasını sağlar bu yapı mesaj döngüsünde kullanılan mesajları tutar
MSG msg = { };
//Mesaj döngüsü başlatır GetMessage fonksiyonu pencere mesajlarını alır ve msg yapısına yerleştirir döngü uygulama kapanana kadar devam eder
while (GetMessage(&msg, NULL, 0, 0) > 0)
{
//Klavye mesajlarını (tuş basımını) uygun karakter mesajlarına dönüştürür
TranslateMessage(&msg);
//Mesajı uygun pencereye iletir.
DispatchMessage(&msg);
}

return 0;
}

/*
bu kısım pencereye gelen mesajları işler
uMsg: Gelen mesajın türü
wParam ve lParam: Mesajla birlikte gönderilen ek veriler
*/
LRESULT CALLBACK WindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
//gelen mesaj türüne göre işlem yapar
switch (uMsg)
{
//Pencere kapatıldığında WM_DESTROY mesajı gönderilir ve PostQuitMessage(0) fonksiyonunu çağırarak uygulamanın kapatılmasını sağlar
case WM_DESTROY:
PostQuitMessage(0);
return 0;
//Pencere yeniden çizilmelidir (paint) bu mesaj alındığında pencerenin içeriğini çizer
case WM_PAINT:
{
//PAINTSTRUCT'ı tanımlar pencere içeriğinin nasıl çizileceğini belirler
PAINTSTRUCT ps;
//BeginPaint işlevi pencere üzerinde çizim yapmak için bir cihaz bağlamı (HDC) alır.
// HDC (Handle to Device Context)
HDC hdc = BeginPaint(hwnd, &ps);

//Pencereyi pencerenin arka plan rengini belirleyen COLOR_WINDOW+1 renk fırçasıyla doldurur
FillRect(hdc, &ps.rcPaint, (HBRUSH) (COLOR_WINDOW+1));

//Çizim işlemini bitirir ve kaynakları serbest bırakır
EndPaint(hwnd, &ps);
}
return 0;

}
//DefWindowProc fonksiyonu işlenmeyen mesajları varsayılan pencere ile işler.
return DefWindowProc(hwnd, uMsg, wParam, lParam);
}
 
Üst