2016-07-21 6 views
1

Visual C++でウィンドウを作成する際のMSDNチュートリアルに従っています。このコードを使用してウィンドウクラスを登録しています。どのパラメータが必須か、どのパラメータが必須でないかを確認するには? (Visual C++)

// Register the window class. 
const wchar_t CLASS_NAME[] = L"Sample Window Class"; 

WNDCLASS wc = { }; 

wc.lpfnWndProc = WindowProc; 
wc.hInstance  = hInstance; 
wc.lpszClassName = CLASS_NAME; 

RegisterClass(&wc); 

私はMSDNにWNDCLASS構造を調べる:WNDCLASS Structureそれは、この実装を提供します:

typedef struct tagWNDCLASS { 
    UINT  style; 
    WNDPROC lpfnWndProc; 
    int  cbClsExtra; 
    int  cbWndExtra; 
    HINSTANCE hInstance; 
    HICON  hIcon; 
    HCURSOR hCursor; 
    HBRUSH hbrBackground; 
    LPCTSTR lpszMenuName; 
    LPCTSTR lpszClassName; 
} WNDCLASS, *PWNDCLASS; 

どのようにあなたが唯一のこれらの3つのパラメータを必要とする文書で伝えることができますか?

  1. のlpfnWndProc
  2. hInstanceは
  3. lpszClassName
+3

それは 'struct'だとそれはすべてのメンバーがで満たされる*必要があります。そのうちのいくつかは、あなたが投稿したリンクに記載されて '0'またはコースの' NULL'、することができます。 – dxiv

+1

おそらくそれを読むことによって?例:* hCursor *クラスカーソルへのハンドル。このメンバは、カーソルリソースのハンドルでなければなりません。 **このメンバーがNULLの場合、マウスがアプリケーションのウィンドウに移動するたびに、アプリケーションはカーソルの形状を明示的に設定する必要があります。** – Ari0nhh

答えて

1

すべてのパラメータが必要とされますが、それらのほとんどはデフォルト値に設定することができます。

WNDCLASS wc; 
wc.style = CS_BYTEALIGNWINDOW | CS_HREDRAW | CS_VREDRAW; 
wc.lpfnWndProc = DefWindowProc; 
wc.cbClsExtra = 0; 
wc.cbWndExtra = 0; 
wc.hInstance = GetModuleHandle(NULL); 
wc.hIcon = NULL; 
wc.hCursor = LoadCursor(NULL, IDC_ARROW); 
wc.hbrBackground = NULL; 
wc.lpszMenuName = 0; 
wc.lpszClassName = "MYCLASS"; 
+1

OPの見落としは、 'WNDCLASS wc = {};' 0 'となる。 'あなたはこれらの3つのパラメータのみ必要です 'と'これらの3つのパラメータに対してデフォルトの0/NULL値を上書きするだけです**'の間には大きな違いがあります。 – dxiv

+1

@dxiv私はwc = {}を認識しませんでした。すべてのメンバーを0に設定しますが、どのように動作するかがわかります。 – Morronic

関連する問題