全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:1752
推到 Plurk!
推到 Facebook!

如何使一個視窗永遠是Active(OnFocused)

尚未結案
liaoken
一般會員


發表:2
回覆:2
積分:0
註冊:2004-02-06

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-03-02 01:04:08 IP:218.168.xxx.xxx 未訂閱
請問各位先進: 我想讓一個視窗永遠是顯示在最上層(TOP),而且不會失去焦點(就是永遠都是active window) 目前我用了SetWindowPos函數可以讓視窗在最上層顯示,但是當我按到其他視窗時,焦點會轉到他視窗上面,而不是在最TOP的那個視窗, 請問該如何做才能讓焦點不會離開呢??? 謝謝先了~~~^-^
kwu
中階會員


發表:10
回覆:57
積分:58
註冊:2003-10-31

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-03-02 09:23:32 IP:61.63.xxx.xxx 未訂閱
引言: 請問各位先進: 我想讓一個視窗永遠是顯示在最上層(TOP),而且不會失去焦點(就是永遠都是active window) 目前我用了SetWindowPos函數可以讓視窗在最上層顯示,但是當我按到其他視窗時,焦點會轉到他視窗上面,而不是在最TOP的那個視窗, 請問該如何做才能讓焦點不會離開呢??? 謝謝先了~~~^-^
liaoken你好: 試試看用 ShowModal()
void __fastcall TForm1::Button1Click(TObject *Sender)
{
  Form2->ShowModal();
}
RaynorPao
版主


發表:139
回覆:3622
積分:7025
註冊:2002-08-12

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-03-02 13:10:13 IP:61.221.xxx.xxx 未訂閱
引言: 請問各位先進: 我想讓一個視窗永遠是顯示在最上層(TOP),而且不會失去焦點(就是永遠都是active window) 目前我用了SetWindowPos函數可以讓視窗在最上層顯示,但是當我按到其他視窗時,焦點會轉到他視窗上面,而不是在最TOP的那個視窗, 請問該如何做才能讓焦點不會離開呢??? 謝謝先了~~~^-^
liaoken 你好: 請參考以下的連結文章 src="http://delphi.ktop.com.tw/loadfile.php?TOPICID=10003806&CC=223734"> -- Enjoy Researching & Developing --
------
-- 若您已經得到滿意的答覆,請適時結案!! --
-- 欲知前世因,今生受者是;欲知來世果,今生做者是 --
-- 一切有為法,如夢幻泡影,如露亦如電,應作如是觀 --
liaoken
一般會員


發表:2
回覆:2
積分:0
註冊:2004-02-06

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-03-02 22:16:39 IP:218.168.xxx.xxx 未訂閱
先感謝兩位大大的回應~ 我試過了用Timer的方法,確實可以讓我的視窗定時被Active 但是還是可以去點選其他的視窗~ 我是想讓程式一執行後,出現的那個Form永遠是Active~ 而且你無法點選其他視窗 有辦法不用Timer也可以做到嗎???
m8815010
版主


發表:99
回覆:372
積分:289
註冊:2003-11-13

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-03-03 12:24:09 IP:61.63.xxx.xxx 未訂閱
引言: 先感謝兩位大大的回應~ 我試過了用Timer的方法,確實可以讓我的視窗定時被Active 但是還是可以去點選其他的視窗~ 我是想讓程式一執行後,出現的那個Form永遠是Active~ 而且你無法點選其他視窗 有辦法不用Timer也可以做到嗎???
liaoken你好: 我覺得不用>>物件及其 class="code"> void __fastcall TForm1::ApplicationEvents1Deactivate(TObject *Sender) { Sleep(100); SetForegroundWindow(Application->Handle); <---這行在Win 2k中很有問題,見下面說明 SetActiveWindow(Application->Handle); } 上面那行SetForegroundWindow有一個問題,如Win API說明: 也就是說如果一隻Ap自已用這個API function讓自已在最上層,則會在tool bar持續閃爍,且沒辦法getfocus,如下圖: 於是我用Sleep(100);這行解決掉了,在Win XP試run成功,但後來在Win 2k中卻怎麼也不能成功,這點值得注意! ========================================================================================== After all,以上都是昨天的想法!今天覺得不太好,因為都是把 >! 這樣的做法第一個會感覺 >----&>今天試了一下做這樣的一個>遺憾的是目前我還不會做< >,所以也順便問了一個問題< >! >!
conundrum
尊榮會員


發表:893
回覆:1272
積分:643
註冊:2004-01-06

發送簡訊給我
#6 引用回覆 回覆 發表時間:2004-03-03 17:09:44 IP:61.221.xxx.xxx 未訂閱
永遠是顯示在最上層(TOP) 小心使用 1 在2000 xp如相同api會互搶訊息置前 2 在98如遇到相同aPI會有失效之問題 請關查FlashGet或諾頓防火牆方式 最好不要使用 工作管理員的強制 TOP方式
系統時間:2024-05-05 19:14:26
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!