設定時間にダイアログを最前列に表示させたい

[戻る]
どしろうと 2002/09/04(水) 12:02:13
設定時間になったらダイアログを最前列に表示させたいのですが・・
誰か助けて下さい。お願いします。

WINDOWS XP
VC6.0 SP5
MFC使用

PAI 2002/09/04(水) 12:15:59
どこまでできてんの?

1、ダイアログは表示できる?
2、表示非表示は制御できる?
3、『設定時間』を判別できる?
4、TopMost表示はできる?

全部できるなら組み合わせるだけ。

どしろうと 2002/09/04(水) 13:23:32
PAIさん 宜しくお願い致します。

1、表示されてます
2、表示非表示は出来ます。(が、表示させっぱなしです)
3、出来ます。
4、SetWindowPos(&wndTopMost, 0, 0, 0, 0, SWP_NOSIZE | SWP_NOMOVE);
    こいつのことでしょうか?
    これは、常に最前列ですよね?

別のダイアログの後ろになってる(非表示でなく)のが一番前に出てくる
(常に最前列でなく)ようにしたいんです。

ダイアログに時間(時計)が表示されてて、昼になると『昼飯だよ』って
教えてくれるようなイメージです。
何か説明が下手なんですがわかるでしょうか?

PAI 2002/09/04(水) 13:40:47
ん?じゃあ、その指定時間になったら、

SetWindowPos(&wndTop,0,0,0,0,SWP_NOMOVE|SWP_NOSIZE|SWP_SHOWWINDOW);

をするとか、

SetWindowPos(&wndTopMost,0,0,0,0,SWP_NOMOVE|SWP_NOSIZE|SWP_SHOWWINDOW);

するとかで、できません?

どしろうと 2002/09/04(水) 14:13:11
PAIさんありがとうございます。

SetWindowPos(&wndTopMost,0,0,0,0,SWP_NOMOVE|SWP_NOSIZE|SWP_SHOWWINDOW);
は最前列に出てきますが、常に最前列っていうのを使いたくありません(じゃま)。
ちなみに出ては来ますがアクティブにはなりませんよね?

SetWindowPos(&wndTop,0,0,0,0,SWP_NOMOVE|SWP_NOSIZE|SWP_SHOWWINDOW);
はかくれたままです。

エクセルに隠れた状態でテストですが、
CWnd* pA = GetActiveWindow();  -->  pA==NULL
SetWindowPos(&wndTop,0,0,0,0,SWP_NOMOVE|SWP_NOSIZE|SWP_SHOWWINDOW);
CWnd* pB = GetActiveWindow();  -->  pB!=NULL
になるので何らかの動きはあるみたいです(Z順の先頭?)。

sara 2002/09/04(水) 14:39:43
アクティブにしたいということでしょうか?
XPではないですが、下記が参考になると思います。
http://techtips.belution.com/ja/vc/0012/

どしろうと 2002/09/04(水) 15:23:16
saraさん ありがとうございます。
そうなんです。私の知りたかったのはこれなんです。
説明が下手なものでPAIさんにもsaraさんにもご迷惑かけました。
それで早速試してみましたが SPI_SETFOREGROUNDLOCKTIMEOUT
は現在サポートされていない?(ビルドでエラー)
MSDNで SystemParametersInfo をみてもない。
使っちゃ駄目ってことですかね?

sara 2002/09/04(水) 16:27:30
winuser.h ファイルによると
WINVER >= 0x0500  であれば、SPI_SETFOREGROUNDLOCKTIMEOUT が使えます。

どしろうと 2002/09/04(水) 16:45:32
saraさん ありがとうございます。
XP(HomeEdition)は駄目みたいです。

sara 2002/09/04(水) 16:53:51
XPなら大丈夫だと思うのですが。。。
stdafx.h の中で、ヘッダファイルをインクルードする前に
#define WINVER 0x0500
を記述してみてください。

どしろうと 2002/09/04(水) 17:49:45
[[解決]]
saraさん ありがとうございました。

うまくいきました。感謝感謝です。

PAIさん ありがとうございました。

また質問すると思いますので宜しくお願いします。

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