1、
將工作列提到視窗頂端
wince
的整個視窗分為工作區
workarea
和動作欄
taskbar
,一般預設為動作欄在底端總是顯示在最前面,而工作區
workarea
就是除去動作欄所剩餘的空間,他們的視窗定義都在目錄
public/ shell/oak/myshell/ceshell/explorer/taskbar
裡面,可以找到
taskbar.cpp
和taskbar.hxx檔案在
taskbar.hxx
檔案中有
#define taskbar_height26
#define taskbar_height_autohide 5 其中
taskbar_height
為動作欄高度,
taskbar_height_autohide
為自動隱藏高度
在taskbar.cpp
檔案中(第
550行)
修改void
ctaskbar::slidewindow(hwnd hwnd, const rect &rcnew, bool fshow)
中的**:
movewindow(hwnd, rcnew.left ,rcnew.top, rcnew.right - rcnew.left,
rcnew.bottom - rcnew.top, false);
注釋掉,後面新增
movewindow(hwnd, rcnew.left, 0, rcnew.right - rcnew.left,
rcnew.bottom - rcnew.top, false);
第二個引數和第三個引數分別定義視窗的左端和頂端開始位置,
rcnew.left
預設是0
,也沒有修改的必要,
rcnew.top= rcnew.bottom- taskbar_height
,而rcnew.bottom
就是整個視窗的高度,所以我們只要修改
rcnew.top為0
就可以將整個工作列提到視窗的頂端。
修改完編譯過後可以看到這樣的模擬器
2、工作區整體下調
taskbar_height
個高度在修改完
takbar
的時候,工作區在頂端是與之重合的,而底端又是有一條高度為
taskbar_height
的空隙,所以
接下來要修改的是將工作區的位置整體下調
taskbar_height
個高度可以在
taskbar.cpp
中找到函式
void
ctaskbar::setworkarea(void)
下面是該函式的部分**:
setrect(&rcworkareanew, 0, 0,
getsystemmetrics(sm_cxscreen),getsystemmetrics(sm_cyscreen));
(這裡是設定工作區域為全屏大小,類似於
movewindow
,第二個和第三個引數分別定義工作區的左端和頂端開始位置,我們將第三個引數修改為
taskbar_height
,將工作區從原來的位置下拉乙個工作列的高度,這樣在開啟應用程式的時候就不會將被工作列覆蓋
)繼續看下面的**:
if (m_btaskbarontop)//
工作列總在最前
else
} // currently, only the bottom will change
,如果底端位置變了則執行重新設定工作區的大小
if (rcworkarea.bottom != rcworkareanew.bottom)
從上面的**我們可以看出工作區的設定是預設為工作列在下面,然後當工作列隱藏和自動隱藏不同的情況下只要調整底端高度就可以適應環境,我們現在的情況是工作列到了頂端,相應的要調節工作區的頂端來適應環境,修改如下:
if(m_btaskbarontop)
else }
// currently, only the top will change
if (rcworkarea.top != rcworkareanew.top)
修改後如圖:
3、隱藏工作列
在/wince600/public/shell/oak/hpc/explorer/main
目錄,開啟
explorer.cpp
檔案,在
winmain
函式裡面遮蔽下面**即可:
/*// fork off a thread for the taskbar
htaskbarsyncevent = createevent(null, false, false, null);
if (!htaskbarsyncevent)
hthread = createthread(null, null, createtaskbar, &htaskbarsyncevent, 0, null);
waitforsingleobject(htaskbarsyncevent, infinite);
// getexitcodethread(); // test for failure?
closehandle(hthread);
closehandle(htaskbarsyncevent);
*/這裡完成乙個工作列的建立工作
最後換個桌布,如下圖:
這裡有個問題就是在修改動作欄的時候,修改的是
ctaskbar::slidewindow()
函式,從函式功能上來看,該函式是完成乙個視窗逐漸隱藏的乙個功能
(類似於
qq放在螢幕頂端會自動最小化在頂端
),這和函式的名稱滑動視窗是相匹配的,然而在全文件僅有的5個
movewindow()
函式中只有這個函式下的
movewindow()
函式修改後才起作用,費解
~~~~~ 希望達人們賜教~
wince6 0下調整工作列和工作區
1 將工作列提到視窗頂端 wince的整個視窗分為工作區workarea和動作欄taskbar,一般預設為動作欄在底端總是顯示在最前面,而工作區workarea就是除去動作欄所剩餘的空間,他們的視窗定義都在目錄public shell oak myshell ceshell explorer tas...
如何安裝WinCE6 0
說實話,這個也寫一篇blog,實在不應該。今天重新安裝了wince6.0的開發環境,感覺還是挺累的。所以還是寫一篇吧,這個寫起來比較簡單,也算是這個月最後一篇blog了。下面開始 1.首先安裝visual studio 2005。7.當然,以後如果出了新的補丁,也要繼續打下去了。現在要公升級.net...
wince6 0 開發流程
windows ce概述從6.0版本開始,windows ce的名字改為windows embedded ce,當然這也是為了結合windows embedded品牌作出的改變。ce經過了十年的風風雨雨之後,終於在ce 6.0這個版本上再次浴火重生了。ce 6.0經歷了ce歷史上第二次 核心重寫,使...