タブコントロールによるGetDlgItemIntでのテキスト取得について、 – プログラミング – Home

タブコントロールによるGetDlgIt...
 
通知
すべてクリア

[解決済] タブコントロールによるGetDlgItemIntでのテキスト取得について、


まさ
 まさ
(@まさ)
ゲスト
結合: 24年前
投稿: 64
Topic starter  

はじめまして。ちょっと行き詰った事項が出来たので質問させてください。

いま、ダイアログベースでタブコントロールを使ったプログラムをしていますが、タブ
ウィンドウ内のTextBoxの値を、メインウィンドウからGetDlgItemIntを使って取得しよ
うと思っていますが取得できません。

やりたいのは、タブウィンドウ内のTextBoxに入力した値をメインウィンドウ上のボタン
押下(WM_COMMAND)で、GetDlgItemIntを使って変数に代入したいのですが、変数の値は
0のままで、値を取ってきてくれません。

/*-----------------------------------------------------

(タブウィンドウ)
bool CALLBACK TabProc(HWND hDlg, UINT msg, WPARAM wp, LPARAM lp)
{
int n = 1111;

  ・
wsprintf(str, _T(%d), n);
Edit_SetText(GetDlgItem(hDlg, IDC_EDIT1), n);
  ・
  ・
  ・
}

(メインウィンドウ)
LRESULT CALLBACK DlgProc(HWND hDlg, UINT msg, WPARAM wp, LPARAM lp)
{

  ・

case WM_COMMAND:
switch(LOWORD(wp)){
case IDC_BUTTON1:
int num = (int)GetDlgItemInt(hDlg, IDC_EDIT1, &num,
false);
  ・
  ・
  ・
}

------------------------------------------------------*/

たぶん僕の無知からくる記述ミスや知識不足だと思いますが、ここがおかしいとか指
摘してくださると助かります。
よろしくお願いします。

環境:WinXP(Pro)SP2、VC++2005(SDK)


引用未解決
トピックタグ
まさ
 まさ
(@まさ)
ゲスト
結合: 24年前
投稿: 64
Topic starter  

すみません。上記の、

wsprintf(str, _T(%d), n);
Edit_SetText(GetDlgItem(hDlg, IDC_EDIT1), n);

は誤りです。ソースからの抜粋は下記のとおりです。

wsprintf(str, _T(%d), n);
Edit_SetText(GetDlgItem(hDlg, IDC_EDIT1), str);

よろしくお願いします。


返信引用
wclrp ( 'o')
 wclrp ( 'o')
(@wclrp ( 'o'))
ゲスト
結合: 18年前
投稿: 287
 

# Edit_SetTextとか正しいかは俺はしらん

親ウィンドウは1つだけである。
TextBoxがタブウィンドウの子ウィンドウなら
GetDlgItem等ではタブウィンドウとIDC_EDIT1を指定しなければ無理。


返信引用
まさ
 まさ
(@まさ)
ゲスト
結合: 24年前
投稿: 64
Topic starter  

自己解決しました。

悩んだ挙句、タブウィンドウ内のWM_COMMANDメッセージで、wParamでEN_UPDATEを送る事
で、親ウィンドウに通知する事が出来ました。

/*---------------------------------------------------------------

case WM_COMMAND:
if(LOWORD(wp) == IDC_EDIT1){
switch(HIWORD(wp)){
case EN_UPDATE:
int num = (int)GetDlgItemInt(hDlg, IDC_EDIT1, &num, false);
break;
}
}

----------------------------------------------------------------*/

どうもお騒がせしました。


返信引用
subaru
 subaru
(@subaru)
ゲスト
結合: 19年前
投稿: 381
 

wclrp ( 'o')さんも書いてますがGetDlgItemIntの一番目の引数を
ダイアログに貼り付けた子ウインドウのハンドルに変えるだけでOKですよ。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

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