Kと申します.よろしくお願いします.
VC6.0,SDKでプログラムを作成しています.
メインのウインドウから,新たなウインドウを作成しているのですが,そのときに新た
なプロシージャにデータのポインタを持たせたいです.
ダイアログボックスをメインウインドウから作成した場合,API関数のDialogBoxParamの
第5引数である,LPARAM dwInitParamにポインタを持たせる方法があるのを知りました.
ダイアログでなく,ウインドウを作成する際にポインタを持たせる方法をはあります
か?
よろしくお願いいたします.
CreateWindowにそのための引数,lpParamがあります。
http://windowssdk.msdn.microsoft.com/en-us/library/ms632679.aspx
WM_CREATEでlParamにCREATESTRUCTへのポインタがLPARAMにキャストされて渡されてきま
す。
そして,CREATESTRUCT::lpCreateParamsが目的の値になります。
YuOさん,ありがとうございます.
色々,試行錯誤したのですが,うまくいきません.ソースを載せますので,どこが間違
っているか,ご指摘いただけないでしょうか?
//メインのプロシージャ内のウインドウの作成
hWnd = CreateWindow( Class_Name,
・,
・中略
・
CS );
// WM_CREATE情報
上は間違えて送信してしまいました.
改めて,
YuOさん,ありがとうございます.
色々,試行錯誤したのですが,うまくいきません.ソースを載せますので,どこが間違
っているか,ご指摘いただけないでしょうか?よろしくお願いします.
メインでiのポインタを入れて,新しいウインドウのWM_CREATEでiのポインタを受け取る
プログラム
//メインのプロシージャ内のウインドウの作成
CREATESTRUCT *CS
int i=5;
CS->lpCreateParams = &i;
hWnd = CreateWindow( Class_Name,
・
・中略
・
CS ); // WM_CREATE情報
//新しいウインドウのプロシージャ内のWM_CREATE(受け取る方)
case WM_CREATE:
{
CREATESTRUCT *CS;
int *i;
CS = (CREATESTRUCT*)lParam;
i = (int*)CS->lpCreateParams;
・
・
・
・
CREATESTRUCTは,WM_CREATEから受け取るときのみに使われます。
CreateWindowには,渡したいポインタをそのまま指定します。
ありがとうございます.
//メインのプロシージャ内のウインドウの作成
int i=5;
hWnd = CreateWindow( Class_Name,
・
・中略
・
(LPVOID)&i ); // WM_CREATE情報
//新しいウインドウのプロシージャ内のWM_CREATE(受け取る方)
case WM_CREATE:
{
int *i;
i = (int*)lParam;
という風に理解し,変更しました.しかし,これもうまくいきません.
CreateWindowには渡したいポインタをそのまま渡し,WM_CREATEへの応答では
CREATESTRUCT::lpCreateParamsで取得します。
提示したMSDNとか,そこのリンクとかを読みましたか?
CreateWindow Function ()
http://windowssdk.msdn.microsoft.com/en-us/library/ms632679.aspx
> Pointer to a value to be passed to the window through the CREATESTRUCT
structure (lpCreateParams member) pointed to by the lParam param of the
WM_CREATE message.
WM_CREATE Notification ()
http://windowssdk.msdn.microsoft.com/en-us/library/ms632619.aspx
lParam
> Pointer to a CREATESTRUCT structure that contains information about the
window being created.
ありがとうございます.
できました.
英語が読めないんで,すみません.