掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
コールバック関数内でダイアログボックスのハンドルを得るには? (ID:64125)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
実験のためのプログラムを作成しております。 概要は以下のとおりです ADボードとタイマーボードを使用しております。 それを用いて、例えばタイマを0.1秒おきに更新し、そのたびにADボードを用いて外部からデータを取り込みます。 その際に、タイマボードによるコールバック関数内でダイアログボックス上にリアルタイムで取得したデータを表示させたいと考えております。 つまり、プログラムとしては以下の感じになります。 ただし、あくまで概要を伝えるためAD変換等の関数は実際用いているのとは異なっております。 --------------------------------------------------------------------- void CALLBACK lpEventProc_calb(INT nChannel, DWORD dwEvent, DWORD dwUser){ data = getAD; (ADボードでデータを取得) _snprintf(txt_rh, 10000, "%.4f", data); SetDlgItemText(hWnd, IDC_DATA, txt); } BOOL CALLBACK DlgWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) { CountStart; (タイマをスタートします) } --------------------------------------------------------------------- しかし、これをこのまま実行すると error C2065: 'hWnd' : 定義されていない識別子です と出てしまいます。 そこで、関数を調べてGetParent(hWnd)でコールバック関数内で親ダイアログボックスのハンドルを取得できると書いてあったので、 snprintf(txt_rh, 10000, "%.4f", data); SetDlgItemText(GetParent(hWnd), IDC_DATA, txt); としてみたのですが、 error C2065: 'hWnd' : 定義されていない識別子です と出てしまいます。 自分なりに原因を考えてみたのですが、 void CALLBACK lpEventProc_calb(INT nChannel, DWORD dwEvent, DWORD dwUser) というWindowsのコールバック関数ではなく、タイマボード固有のコールバック関数を用いていることに原因があるのではないかと考えています。 というのも、Windowsのコールバック関数であれば BOOL CALLBACK PageProc1(HWND hWnd , UINT msg , WPARAM wp , LPARAM lp) となっており、親ウィンドウのハンドルを引数の中にしているからです。 ここまではなんとか自分で考えたのですが、じゃあボード固有のコールバック関数を用いているときに、どのようにして親ウィンドウのハンドルを指定すればいいか?というところは解決できませんでした。 どなたかよい方法をご存知の方がいらっしゃったら、ご教授いただけると幸いです。 よろしくお願いします。
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.