投稿日 | : 2005/06/06(Mon) 14:39 |
投稿者 | : ダンボ |
URL | : |
タイトル | : 【再質問】コントロールオブジェクトの保存・リストア |
というわけでSetPropを利用してコントロールオブジェクトの保存・リストアを
試みているのですが、オブジェクト変数の扱いに苦慮しています。
SetProp/GetPropで保存・リストアできるのはLong値なので、オブジェクトそのものは
駄目ですね。実装はおそらくインスタンスへのポインタだと思うから似てはいるけれど。
下記はテストのために何通りかコーディングしてみました。
Public Function WheelOpen(usrCNT As Control) As Long
Dim p_hWnd As Long 'original Handle
Dim rc As Long
Dim XX As Control
p_hWnd = SetWindowLong(usrCNT.hwnd, GWL_WNDPROC, AddressOf SubClassProc)
rc = SetWindowLong(usrCNT.hwnd, GWL_USERDATA, p_hWnd) '元hWndを保存
(a) rc = SetProp(usrCNT.hwnd, "CNT", usrCNT) 'コントロールそのものを保存したいのだが
(b) XX = GetProp(usrCNT.hwnd, "CNT") '実行時エラー:オブジェクト変数またはWithブロック変数が設定
されていません
(c) Set XX = GetProp(usrCNT.hwnd, "CNT") 'コンパイルエラー:型が一致しません
(d) rc = GetProp(usrCNT.hwnd, "CNT") 'エラーにはならないが戻り値は0
End Function