最初に呼び出される関数は?

解決


  2004-08-13 00:23:36  No: 54209

VC++6.0を勉強していて、
標準SDIアプリケーションを作成しようとしています。
そこでタイマーの処理や、最前面処理等を行いたいのですが、
どこに記述して良いのかがわかりません。
アプリケーション起動時に自動的に呼ばれる関数や初期化関数というのは
どの関数にあたるのでしょうか?
初歩的質問で申し訳ないのですが、
よろしくお願いします。


シャノン  2004-08-13 00:26:39  No: 54210

MFC でしたら、プログラム内に一つ、CWinApp の派生クラスがあるはずです。
そのクラスの InitInstance で初期化処理を行うとよいと思います。


  2004-08-13 01:51:03  No: 54211

早速の解答ありがとうございます。
先ほど試してみたのですが、
InitInstance内にSetTimerを追加してやると
エラーが帰ってきてしました。
ERROR:関数が不正な 3 個の実引数をともなって呼び出されました。
そのときの指定の仕方が

BOOL CTest04App::InitInstance()
{
      :(中略)
  SetTimer(1,10000,NULL);
  return TRUE;
}

なのですが、引数指定の仕方が悪いのでしょうか?
それともタイマーの使用方法自体
間違っているのでしょうか?


シャノン  2004-08-13 03:51:04  No: 54212

引数が3つの SetTimer は、CWnd クラスのメソッドです。
これを
> SetTimer(1,10000,NULL);
のように書いて呼び出せるのは、CWnd か、その派生クラスの中からだけです。
今は CWinApp 派生クラスの中から呼び出そうとしているので、それでは無理ですね。

SDI でしたら、InitInstance の下のほうに、m_pMainWnd とか書いてあるところがあると思います。
この m_pMainWnd は CMainFrame へのポインタですので、これを使って SetTimer を呼んでやれば、CMainFrame::OnTimer が呼ばれるようになるでしょう。

m_pMainWnd->SetTimer( ...


  2004-08-13 13:06:18  No: 54213

シャノンさん
分かり易く、そして的確なお答えありがとうございます。
きちんと動作した事、確認しました。
自分なりに調べ、考えてはいるのですが・・・
まだまだつまらない質問をしてしまいそうですが、
その折はまたよろしくお願いします。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加