1

テキストボックスを表すクラスがあり、CreateWindow関数を呼び出すクラスのコンストラクターに、このオブジェクトへのポインターを追加のウィンドウメモリに格納したいので、WndProc関数でポインターを取得し、クラスのメンバー。
私はこのコードでそれをやろうとしましたが、うまくいきません。誰かがこれを行う方法の例を書くことができますか?

  • 構造体cbWndExtraのメンバーにどのような価値を与えるべきですか。WNDCLASSEX
  • 呼び出し方SetWindowLong
  • 呼び出し方GetWindowLong

私が書いたコード:

  wcex.cbWndExtra   = 4;

そして私はこれをテキストボックスクラスのコンストラクターで書きました:

  hWnd = CreateWindow(...);
  SetWindowLong(hWnd,0,(LONG)this);

そしてこれはWndProc関数 で

  unique_ptr<TextBox> pTextBox;
  pTextBox.reset((TextBox*)GetWindowLong(hWnd,0));

===編集===

WndProc関数 のコードを次のコードに変更すると、次のようになります。

 TextBox *pTextBox;
 pTextBox = (TextBox*)GetWindowLong(hWnd,0);

それも機能しますが、それでは機能unique_ptrしません。

4

1 に答える 1