設定時間にダイアログを最前列に表示させたい – プログラミング – Home

設定時間にダイアログを最前列に表示させ...
 
通知
すべてクリア

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


どしろうと
 どしろうと
(@どしろうと)
ゲスト
結合: 24年前
投稿: 9
Topic starter  

設定時間になったらダイアログを最前列に表示させたいのですが・・
誰か助けて下さい。お願いします。

WINDOWS XP
VC6.0 SP5
MFC使用


引用未解決
トピックタグ
PAI
 PAI
(@PAI)
ゲスト
結合: 23年前
投稿: 359
 

どこまでできてんの?

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

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


返信引用
どしろうと
 どしろうと
(@どしろうと)
ゲスト
結合: 24年前
投稿: 9
Topic starter  

PAIさん 宜しくお願い致します。

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

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

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


返信引用
PAI
 PAI
(@PAI)
ゲスト
結合: 23年前
投稿: 359
 

ん?じゃあ、その指定時間になったら、

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

をするとか、

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

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


返信引用
どしろうと
 どしろうと
(@どしろうと)
ゲスト
結合: 24年前
投稿: 9
Topic starter  

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
 sara
(@sara)
ゲスト
結合: 23年前
投稿: 99
 

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


返信引用
どしろうと
 どしろうと
(@どしろうと)
ゲスト
結合: 24年前
投稿: 9
Topic starter  

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


返信引用
sara
 sara
(@sara)
ゲスト
結合: 23年前
投稿: 99
 

winuser.h ファイルによると
WINVER >= 0x0500 であれば、SPI_SETFOREGROUNDLOCKTIMEOUT が使えます。


返信引用
どしろうと
 どしろうと
(@どしろうと)
ゲスト
結合: 24年前
投稿: 9
Topic starter  

saraさん ありがとうございます。
XP(HomeEdition)は駄目みたいです。


返信引用
sara
 sara
(@sara)
ゲスト
結合: 23年前
投稿: 99
 

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


返信引用
どしろうと
 どしろうと
(@どしろうと)
ゲスト
結合: 24年前
投稿: 9
Topic starter  

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

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

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

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


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

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