VC++6.0を勉強していて、
標準SDIアプリケーションを作成しようとしています。
そこでタイマーの処理や、最前面処理等を行いたいのですが、
どこに記述して良いのかがわかりません。
アプリケーション起動時に自動的に呼ばれる関数や初期化関数というのは
どの関数にあたるのでしょうか?
初歩的質問で申し訳ないのですが、
よろしくお願いします。
MFC でしたら、プログラム内に一つ、CWinApp の派生クラスがあるはずです。
そのクラスの InitInstance で初期化処理を行うとよいと思います。
早速の解答ありがとうございます。
先ほど試してみたのですが、
InitInstance内にSetTimerを追加してやると
エラーが帰ってきてしました。
ERROR:関数が不正な 3 個の実引数をともなって呼び出されました。
そのときの指定の仕方が
BOOL CTest04App::InitInstance()
{
:(中略)
SetTimer(1,10000,NULL);
return TRUE;
}
なのですが、引数指定の仕方が悪いのでしょうか?
それともタイマーの使用方法自体
間違っているのでしょうか?
引数が3つの SetTimer は、CWnd クラスのメソッドです。
これを
> SetTimer(1,10000,NULL);
のように書いて呼び出せるのは、CWnd か、その派生クラスの中からだけです。
今は CWinApp 派生クラスの中から呼び出そうとしているので、それでは無理ですね。
SDI でしたら、InitInstance の下のほうに、m_pMainWnd とか書いてあるところがあると思います。
この m_pMainWnd は CMainFrame へのポインタですので、これを使って SetTimer を呼んでやれば、CMainFrame::OnTimer が呼ばれるようになるでしょう。
m_pMainWnd->SetTimer( ...
シャノンさん
分かり易く、そして的確なお答えありがとうございます。
きちんと動作した事、確認しました。
自分なりに調べ、考えてはいるのですが・・・
まだまだつまらない質問をしてしまいそうですが、
その折はまたよろしくお願いします。
ツイート | ![]() |