新規作成ウインドウにデータを持たせるには – プログラミング – Home

新規作成ウインドウにデータを持たせるに...
 
通知
すべてクリア

[解決済] 新規作成ウインドウにデータを持たせるには


K
 K
(@K)
ゲスト
結合: 23年前
投稿: 98
Topic starter  

Kと申します.よろしくお願いします.

VC6.0,SDKでプログラムを作成しています.

メインのウインドウから,新たなウインドウを作成しているのですが,そのときに新た
なプロシージャにデータのポインタを持たせたいです.

ダイアログボックスをメインウインドウから作成した場合,API関数のDialogBoxParamの
第5引数である,LPARAM dwInitParamにポインタを持たせる方法があるのを知りました.

ダイアログでなく,ウインドウを作成する際にポインタを持たせる方法をはあります
か?

よろしくお願いいたします.


引用未解決
トピックタグ
YuO
 YuO
(@YuO)
ゲスト
結合: 22年前
投稿: 320
 

CreateWindowにそのための引数,lpParamがあります。
http://windowssdk.msdn.microsoft.com/en-us/library/ms632679.aspx

WM_CREATEでlParamにCREATESTRUCTへのポインタがLPARAMにキャストされて渡されてきま
す。
そして,CREATESTRUCT::lpCreateParamsが目的の値になります。


返信引用
K
 K
(@K)
ゲスト
結合: 23年前
投稿: 98
Topic starter  

YuOさん,ありがとうございます.

色々,試行錯誤したのですが,うまくいきません.ソースを載せますので,どこが間違
っているか,ご指摘いただけないでしょうか?

//メインのプロシージャ内のウインドウの作成

hWnd = CreateWindow( Class_Name,
・,
・中略

CS );
// WM_CREATE情報


返信引用
K
 K
(@K)
ゲスト
結合: 23年前
投稿: 98
Topic starter  

上は間違えて送信してしまいました.
改めて,

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;





返信引用
YuO
 YuO
(@YuO)
ゲスト
結合: 22年前
投稿: 320
 

CREATESTRUCTは,WM_CREATEから受け取るときのみに使われます。
CreateWindowには,渡したいポインタをそのまま指定します。


返信引用
K
 K
(@K)
ゲスト
結合: 23年前
投稿: 98
Topic starter  

ありがとうございます.

//メインのプロシージャ内のウインドウの作成
int i=5;

hWnd = CreateWindow( Class_Name,

・中略

(LPVOID)&i ); // WM_CREATE情報

//新しいウインドウのプロシージャ内のWM_CREATE(受け取る方)
case WM_CREATE:
{
int *i;

i = (int*)lParam;

という風に理解し,変更しました.しかし,これもうまくいきません.


返信引用
YuO
 YuO
(@YuO)
ゲスト
結合: 22年前
投稿: 320
 

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.


返信引用
K
 K
(@K)
ゲスト
結合: 23年前
投稿: 98
Topic starter  

ありがとうございます.
できました.

英語が読めないんで,すみません.


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました