現在市面上很多掌上電腦,如恆基偉業的掌上通、聯想的天璣等內嵌的都是微軟的wince
作業系統,如果你買的是內嵌wince2.0作業系統的pda,那也就算了,但如果買的是內嵌wince3.0作業系統的pda,你就發現在這種作業系統下面所顯示的對話方塊都是全屏!這種做法,不僅僅讓我看的難受,而且在很多實際應用中都帶來了不少的麻煩!!那麼,對我們開發人員來說,如何在c程式設計中禁止對話方塊全屏顯示呢?
其實這在技術上實現並不難,只是書店裡關於wince程式設計的書太少,就更別說wince3.0的程式設計說明了。要資料你就得從網上找!噢,一不小心就多說了幾句廢話……。好,我們言歸正傳吧!
要禁止wince3.0作業系統下的對話方塊全屏顯示,總的來說,有兩種方法(使用的程式設計工具是微軟發行的vc+toolkits或evc)。
第一種方法比較簡單直接,就是使用微軟偷偷在對話方塊類裡加的乙個變數m_bfullscreen,說到這個變數就忍不住要罵微軟兩句,好好的對話方塊,你硬要它全屏顯示幹啥!規定了全屏,又偏要藏乙個控制全屏的變數,真是無聊!好了,氣出完了,我們繼續!這個變數是bool型的變數,當其為true時,對話方塊就會全屏顯示,預設當然就是true了,所以我們要在對話方塊初始化之前,把這個變數設為false。見下例(這裡假設你的對話方塊類名為c***dlg):
bool c***dlg::oninitdialog()
m_bfullscreen=false;
cdialog::oninitdialog();
return true;
看,就是這麼簡單,編譯一下,你的對話方塊就不再是全屏咯!
第二種方法就是在對話方塊的oninitdialog()函式中去掉cdialog::oninitdialog()一行,換成以下語句:
shinitdlginfo shidi;
hwnd hdlg = m_hwnd;
shidi.dwmask = shidim_flags;
shidi.dwflags = shidif_sipdown;
shidi.hdlg = hdlg;
shinitdialog(&shidi);
這樣做,就相當於自己建立乙個新型別的對話方塊,該結構的引數可參考evc的msdn說明。
以上就簡單介紹了如何禁止wince3.0作業系統下的對話方塊全屏顯示,但在第一種方法中,若在程式執行過程中,彈出了虛擬鍵盤後,對話方塊將又再全屏顯示。因此,我們必須對對話方塊的wm_settingchange訊息進行處理。
首先,我們需在c***dlg.h中加入函式宣告:
afx_msg onsettingchange();
跟著,我們要在c***dlg.cpp中加入函式:
int c***dlg::onsettingchange()
return 1;
該函式什麼都不幹,只要返回1就行了。
最後,就是在訊息表中新增on_wm_settingchange()了。
wince應用程式 執行全屏顯示 隱藏狀態列
實現方式很簡單,你需要完成如下操作。1,設定頁面的屬性用來隱藏標題欄。this.windowstate system.windows.forms.formwindowstate.maximized this.formborderstyle system.windows.forms.formborde...
wince全屏或者隱藏工作列
在網上找了一下資料,發現有位前輩寫的很不錯,自己稍微整理了一下,在wince5.0,wince6.0測試過可以使用。全屏使用示例 cscreenlg.showfullscreen 你的窗體 隱藏工作列 cscreenlg.showhhtaskbar 顯示工作列 cscreenlg.hidehhtas...
wince禁止程式標題欄上的退出按鈕示例
最近寫的乙個測試程式在某些情況需要禁止使用者誤操作到退出按鈕,結合網上找到的資料,實現了禁止和使能標題欄上的退出按鈕 如下 禁止x按鈕,並變成灰色 複製 如下 禁止標題欄上的退出按鈕 cmenu 程式設計客棧menu getsystemmenu false if menu 恢復x按鈕,使用者可點ww...