程式在啟動時隱藏視窗

來源:互聯網
上載者:User

程式在啟動時隱藏視窗

--作者:賴玉平(aulyp@163.com)

 

 

       想讓對話方塊程式啟動時是隱藏的,也就是在後台啟動,(最開始我是為了讓3G應用程式在後台初始化)然後需要時又可以顯示。剛開始我也想到在OnInitDialog()中加上ShowWindow(SW_HIDE),其實這樣是不行的,我試過在OnInitDialog的最後加了一個while(1)拖住進程,結果什麼都沒有顯示,也就是說,OnInitDialog完了之後,才去進行顯示資料處理。

找了網上的方法,都沒有滿足我的要求,下面我給出一個自已辛苦總結出來的方式,完全滿足要求。方便廣大同行。

1、在OnInitDialog()中用MoveWindow 隱藏視窗

MoveWindow(0,0,0,0);  //隱藏視窗

2、OnInitDialog最後,啟用定時器,

SetTimer(12,1,NULL); //使用定時器12,

3、在定時器處理函數OnTimer()實現如下

case 12:<br /> {<br /> KillTimer(12);<br /> ShowWindow(SW_HIDE); //這裡是消除工作列上的開啟痕迹的。<br /> break;<br /> } 

4、當想讓程式恢複顯示,一般是響應快速鍵,或是雙擊等操作,比如我現在寫的3G應用程式,它初始化成功,會在工作列顯示一個訊號強度表徵圖,雙擊該表徵圖,就是開啟電話介面,實現代碼如下:

ShowWindow(SW_SHOW);<br /> SetForegroundWindow();<br /> MoveWindow(150,100,505,327,TRUE);//設定視窗顯示位置 

 

大功造成!

 

下面是我在網上到到的一個比較可行的方法,但是屏還會閃一個框

============================================================

定義一個bool
m_show;//決定是否隱藏

m_show=false;//預設隱藏

可以在對話方塊中重載虛函數DefWindowProc()。 
LRESULT CTest2Dlg::DefWindowProc(UINT message, WPARAM wParam, LPARAM lParam)<br />{<br />if(message== WM_PAINT )<br />{<br />if(m_show==false)<br /> ShowWindow(SW_HIDE);<br />else<br /> ShowWindow(SW_SHOW);<br />}<br />return CDialog::DefWindowProc(message, wParam, lParam);<br />} 

程式中想還原顯示的時候可以

m_show=true;
this->ShowWindow(SW_SHOW);

 

 

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.