ダイアログでアイドル関数を使うには?

[戻る]
[E-Mail] 2001/06/25(月) 08:02:13
フォームベースではアイドル関数を使うことはできるのですが、
ダイアログベースになるとできません。

Bun 2001/06/25(月) 13:24:27
ChogeApp::OnIdle()では?

はずしていたら m(__)m です。

ku 2001/06/25(月) 20:03:50
SDIやMDIではメッセージループにCWinThread::Run()を使いその中でOnIdle()を呼んでいます
一方、ダイアログの場合はCWnd::RunModalLoop()を使いOnIdle()は呼んでいません
しかしCWnd::RunModalLoop()を見るとダイアログプロシージャにWM_KICKIDLE
をSendMessageしています

ダイアログのWindowProcを実装しこんな感じで
WM_KICKIDLEを処理すれば良いと思います

LRESULT xxxDlg::WindowProc(UINT message, WPARAM wParam, LPARAM lParam) 
{
    if (message == WM_KICKIDLE) {
        return AfxGetApp()->OnIdle(lParam);
    }
    return CDialog::WindowProc(message, wParam, lParam);
}

2001/06/26(火) 14:40:23
Bunさん、kuさん、ありがとうございます。

アプリケーションクラスを見るとDoModalでダイアログを呼び出しているので
Idel()を呼び出していないのでは?と思い悩んでいたのですが
WM_KICKIDLEで試してみます。

Bun 2001/06/26(火) 15:18:38
ku様、秋様

> 一方、ダイアログの場合はCWnd::RunModalLoop()を使いOnIdle()は呼んでいません
> しかしCWnd::RunModalLoop()を見るとダイアログプロシージャにWM_KICKIDLE
> をSendMessageしています

ほんとですね。OnIdle()には来ませんでした。

RunModalLoop()の中も深いけど、ku様の読みも深〜い。関心しました。(^^;

2001/06/26(火) 15:42:31
すいません、力不足でした。

ビルドすると WM_KICKIDLE が定義されていない識別子ですとでます。
VC初心者です。m(_ _)m

2001/06/26(火) 15:43:06
すいません、力不足でした。

ビルドすると WM_KICKIDLE が定義されていない識別子ですとでます。
VC初心者です。m(_ _)m

Bun 2001/06/26(火) 16:07:44
#include "AFXPRIV.H"

かな?

2001/06/26(火) 16:12:24
[[解決]]
できました!!
本当にありがとうございました。

自称中級者だと実は思ってたのですが、全然だめですね。
これからもVCがんばっていきます。
ありがとうございました。

ku 2001/06/26(火) 16:15:24
先に書かれてしまいました

Bunさんへ
コモンダイアログのカスタマイズのページは役に立ちました
時間があるときに自分のローカルで駄目な方法と比べてみます
実は、あそこのうまい検索の仕方とか知らない(^^;

基本的に知識だけで間違いのない答えが出せそうな時以外は
答える前に一通りコードを書いてます
ちなみにWM_KICKIDLEに気が付く前は、CDialog::DoModal以降を自分で実装する
CDialog::DoModal2というのを作って確認してました
lIdleCountという変数を見つけてWM_KICKIDLEに至りました
種をあかせば所詮こんなもんです(笑)

Bun 2001/06/26(火) 16:42:23
ku様へ

> コモンダイアログのカスタマイズのページは役に立ちました
実は、このページはよそでCFileDialogクラスを調査中に、教わっただけなんす。(^^;

> 基本的に知識だけで間違いのない答えが出せそうな時以外は
> 答える前に一通りコードを書いてます
> ちなみにWM_KICKIDLEに気が付く前は、CDialog::DoModal以降を自分で実装する
> CDialog::DoModal2というのを作って確認してました
> lIdleCountという変数を見つけてWM_KICKIDLEに至りました
> 種をあかせば所詮こんなもんです(笑)

知識の豊富なku様でも、苦労されることがあるのですね。ほっとしました。
(もちろん、私はWM_KICKIDLEなんて初耳でしたけど(笑))

私はまだまだ初心者です。今後ともよろしくお願いします。m(__)m

2001/06/26(火) 19:43:12
今回はじめて利用させてもらったのですが、
kuさんとBunさんは常連の方なのでしょうか?

これからも、よろしくお願いします。
本当にありがとうございました。

古いスレッドには追加発言できません。