Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Pencere sınıfı bir pencere yordamı tarafından desteklenir. Uygulamanız, RegisterClassA veya RegisterClassWkullanarak bir pencere sınıfı kaydedebilir. Yeni uygulamalar genellikle RegisterClassWkullanmalıdır.
Uygulama, RegisterClassAkullanarak pencere sınıfını kaydederse işlev, oluşturulan sınıfın pencerelerinin metin veya karakter parametrelerine sahip iletilerin Windows (ANSI) kod sayfası karakter kümesi kullanmasını beklediğini işletim sistemine bildirir. RegisterClassW kullanarak kayıt, uygulamanın işletim sisteminin iletilerin metin parametrelerini Unicode olarakgeçirmesini istemesine olanak tanır. IsWindowUnicode işlevi, bir uygulamanın her pencerenin doğasını sorgulamasını sağlar.
Aşağıdaki örnekte, bir Windows kod sayfası pencere sınıfı ve Unicode pencere sınıfının nasıl kaydedilileceği ve her iki durum için pencere yordamlarının nasıl yazileceği gösterilmektedir. Bu örneğin amaçları doğrultusunda, tüm işlevler ve yapılar belirli "A" (ANSI) veya "W" (geniş, Unicode) veri türleriyle gösterilir. Genel Veri Türlerini Kullanma bölümünde açıklanan teknikleri kullanarak, bu örneği alternatif olarak genel veri türlerini kullanmak üzere yazabilir, böylece "UNICODE" tanımlanıp tanımlanmadığına bağlı olarak Windows kod sayfalarını veya Unicode'ı kullanacak şekilde derlenebilir.
// Register a Windows code page window class.
WNDCLASSA AnsiWndCls;
AnsiWndCls.style = CS_DBLCLKS | CS_PARENTDC;
AnsiWndCls.lpfnWndProc = (WNDPROC)AnsiWndProc;
AnsiWndCls.cbClsExtra = 0;
AnsiWndCls.cbWndExtra = 0;
AnsiWndCls.hInstance = hInstance;
AnsiWndCls.hIcon = NULL;
AnsiWndCls.hCursor = LoadCursor(NULL, (LPTSTR)IDC_IBEAM);
AnsiWndCls.hbrBackground = NULL;
AnsiWndCls.lpszMenuName = NULL;
AnsiWndCls.lpszClassName = "TestAnsi";
RegisterClassA(&AnsiWndCls);
// Register a Unicode window class.
WNDCLASSW UnicodeWndCls;
UnicodeWndCls.style = CS_DBLCLKS | CS_PARENTDC;
UnicodeWndCls.lpfnWndProc = (WNDPROC)UniWndProc;
UnicodeWndCls.cbClsExtra = 0;
UnicodeWndCls.cbWndExtra = 0;
UnicodeWndCls.hInstance = hInstance;
UnicodeWndCls.hIcon = NULL;
UnicodeWndCls.hCursor = LoadCursor(NULL,(LPTSTR)IDC_IBEAM);
UnicodeWndCls.hbrBackground = NULL;
UnicodeWndCls.lpszMenuName = NULL;
UnicodeWndCls.lpszClassName = L"TestUnicode";
RegisterClassW(&UnicodeWndCls);
Aşağıdaki örnek, Windows kod sayfası pencere yordamında WM_CHAR iletisini işleme ile Unicode pencere yordamı arasındaki farkı gösterir.
// "ANSI" Window Procedure
LRESULT CALLBACK AnsiWndProc(HWND hWnd, UINT message,
WPARAM wParam, LPARAM lParam)
{
// Dispatch the messages that can be received.
switch (message)
{
case WM_CHAR:
// wParam - the value of the key
// lParam - (not used in this example)
if (lstrcmpA("Q", (LPCSTR) wParam))
{
// ...
}
else
{
// ...
}
break;
// Process other messages.
default:
return DefWindowProc(hWnd, message, wParam, lParam);
}
return 0;
}
// Unicode Window Procedure
LRESULT CALLBACK UniWndProc(HWND hWnd, UINT message,
WPARAM wParam, LPARAM lParam)
{
// Dispatch the messages that can be received.
switch (message)
{
case WM_CHAR:
// wParam - the value of the key
// lParam - (not used in this example)
if (lstrcmpW(L"Q", (LPCWSTR) wParam))
{
// ...
}
else
{
// ...
}
break;
// Process other messages.
default:
return DefWindowProc(hWnd, message, wParam, lParam);
}
return 0;
}
AnsiWndProc tarafından alınan iletilerdeki tüm metinler Windows kod sayfası karakterlerinden oluşur. UniWndProc tarafından alınan iletilerdeki tüm metinler Unicode karakterlerinden oluşur.
İlgili konular
-
Unicode ve Karakter Kümelerini Kullanarak