テキストボックスを表すクラスがあり、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
しません。