タイマー処理について – プログラミング – Home

通知
すべてクリア

タイマー処理について


タイム男
 タイム男
(@タイム男)
ゲスト
結合: 16年前
投稿: 1
Topic starter  

タイマーについて質問があります。
モーダルダイアログで子ダイアログでタイマーを使用しようと思っているのですが、
上手くいきません。
ちなみに親ダイアログでもタイマーを使用しているのですが、そちらは上手く動作して
います。子ダイアログのタイマーも親ダイアログでのタイマーを真似して実装していま
す。
子ダイアログではタイマーを使用できないのでしょうか?

親ダイアログでのタイマー
void CMainDlg::OnTimer(UINT nIDEvent)
{
case TIMER_MODE_MODE1:
::KillTimer(GetSafeHwnd(),TIMER_MODE_MODE1);

-----------------略----------
break;
}

}
void CMainDlg::OnBnClickedButton1()
{
::SetTimer(GetSafeHwnd(),TIMER_MODE_MODE1,50,NULL);
  -----------------略-------
}

子ダイアログでのタイマー
void CSubDlg::OnTimer(UINT nIDEvent)
{
case TIMER_MODE_MODE2:
::KillTimer(GetSafeHwnd(),TIMER_MODE_MODE2);

-----------------略----------
break;
}

}
void CSubDlg::OnBnClickedButton2()
{
::SetTimer(GetSafeHwnd(),TIMER_MODE_MODE2,50,NULL);
  -----------------略-------
}

これだとタイマー設定が出来ていません。
やはり子ダイアログのSetTimerの第一引数のウィンドウのハンドル指定がいけないので
しょうか?親のハンドルのままではダメですか?
もしダメなら子ダイアログのウィンドウのハンドルの取得はどうすればいいのですか?

宜しくお願いします。  


引用解決済
トピックタグ
通りすがり
 通りすがり
(@通りすがり)
ゲスト
結合: 24年前
投稿: 92
 

SetTimerもKillTimerもなんでメンバ関数じゃないんですか?

グローバルなAPI関数を使うとしても、GetSafeHwnd()は
親なら親の、子なら子のダイアログのm_hWndハンドルが取れていると
思うので、原因は別のところじゃないかと思いますが。

とりあえず、デバッグで追いかけてみましょう。


返信引用
海人
 海人
(@海人)
ゲスト
結合: 16年前
投稿: 14
 

通りすがりさん
有難うございます。

デバックで一つずつブレークポイントで見ていったのですが、
::SetTimerは通るんですが、肝心の
case TIMER_MODE_MODE2:
::KillTimer(GetSafeHwnd(),TIMER_MODE_MODE2);
方の処理に飛ばないんです。

なにが原因として考えられるでしょうか?


返信引用
海人
 海人
(@海人)
ゲスト
結合: 16年前
投稿: 14
 

ちなみにSetTimerもKillTimerも
CWndクラスで使用しています。

windows.hもインクルードしています。


返信引用
の
 の
(@の)
ゲスト
結合: 16年前
投稿: 7
 

>void CSubDlg::OnTimer(UINT nIDEvent)
>{
>略
>}

の部分をmainDlgから関数をコピペして

BEGIN_MESSAGE_MAP(CSubDlg, CDialog)
ON_WM_TIMER() <----------------ソースの上の方のこれ
END_MESSAGE_MAP()
の部分が抜けてしまっているとかありませんか?

VS2005で試してみたけど問題なく動きました。


返信引用
PATIO
(@patio)
Famed Member
結合: 3年前
投稿: 2660
 

のさんが書かれているようなところが
通りすがりさんが言われている別の所に原因がと言う部分だと思います。
OnTimerの関数内に来るのにcaseの部分に来ないのか、
端からOnTimerの中に入ってこないのかで話は全く違いますよ。
あと、省略している部分に原因があったりしませんか?
多分略しているのだと思いますけれど、switch文の無いcaseでやっている
わけではないですよね。


返信引用
徹也
 徹也
(@徹也)
ゲスト
結合: 16年前
投稿: 5
 

海人さんはタイム男さんですか?
同一スレでハンドルネームを変えると混乱するので
やめて頂けないでしょうか?

それと、海人さんは↓の問題はどうなったのでしょうか?
問題が解決したのであれば、できれば結果を書いて頂けないでしょうか?
http://rararahp.cool.ne.jp/cgi-bin/lng/vc/vclng.cgi?print+200808/08080043.txt
http://rararahp.cool.ne.jp/cgi-bin/lng/vc/vclng.cgi?print+200807/08070044.txt


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

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