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