在系統選單中新增顯示和隱藏標題欄的方法!

2021-05-22 05:45:04 字數 1752 閱讀 1528

然而切換ws_caption僅僅是工作的一半。關鍵技巧在於視窗樣式修改之後怎樣重新繪製視窗的非客戶區。呼叫cwnd::invalidate()不行,要用swp_drawframe引數呼叫setwindospos才可以:

setwindowpos (null, 0, 0, 0, 0, swp_nomove | swp_nosize | swp_nozorder | swp_drawframe);

這樣就使得整個視窗包括標題欄被重繪。其它傳遞給setwindowpos的swp標誌儲存了視窗的位置、大小、z次序,z次序是從前向後的視窗。

函式原型及用法如下

cwnd::modifystyle

1.作用:

呼叫這個函式修改視窗的風格

2.函式原型:

bool modifystyle(dword dwremove,dword dwadd,uint nflags=0);

3.引數含義:

dwremove 指定修改時要刪除的視窗風格。

dwadd 指定修改時將要增加的視窗風格。

nflags 該引數將被傳給setwindowpos,預設為0

4.返回值:

如果該函式成功呼叫返回乙個非0值,否則返回0;

5.備註

如果nflags不為0, modifystyle 將呼叫windows api 函式setwindowpos 並且結合nflags和以下四個預先布置好的標誌重畫該視窗。

swp_nosize 保持當前大小。

swp_nomove 保持當前位置.。

swp_nozorder 保持當前的z次序。

swp_noactivate 不啟用該視窗。

6.用法:

1、修改控制項的原有屬性用 modifystyle(1,ws_disabled);(實際測試時只要是》=0的整形數就行)

2、改回來的話要用modifystyle(ws_disabled,1);(實際測試時只要是》=0的整形數就行)

cwnd::getsystemmenu

cmenu* getsystemmenu( bool brevert ) const;

返回值:

如果brevert為false,則返回系統選單的乙份拷貝;如果為true,則返回值沒有定義。返回的指標可能是臨時的,不能被儲存以供將來使用。

引數:brevert 指定要採取的動作。如果brevert為false,則getsystemmenu返回當前使用的控制選單的乙個拷貝的控制代碼。這個拷貝最初與控制選單一樣,但是可以被修改。如果brevert為true,getsystemmenu將控制選單復位到原來的狀態。以前控制選單可能發生的變化都被銷毀。這時返回值沒有定義。

系統選單id的值是有範圍的通常是 0xf**0的形式,最後一位一般是0

比如:sc_close-----0xf060     sc_size------0xf000等等

所以如果要讓(nid & 0xfff0) == idm_mysysitem成立,你的選單項id必須是0x***0的形式

比如0x0010,否則就會出錯。至於為什麼你的nid == idm_mysystem能執行,肯定是因為 你的idm_mysystem定義成了101,102之類的常量整數了吧

建議:

如果要在系統選單裡新增自定義的選單項,那麼最好將選單項id定義為0x***0的形式

就目前系統選單id為0xf000---0xf180加上分隔條0xf00f 一共20個

為了區別你可以將最高位置零定義成0x0000,0x0010,0x0020-------

在系統選單中新增選單項

1 新建乙個基於對話方塊的應用程式 2 在對話方塊類中定義乙個選單指標m pmenu,用於指向系統選單.3 主要程式 在對話方塊初始化時 oninitdialog函式中 獲取系統選單指標,向系統選單中新增選單項.m pmenu getsystemmenu false 獲取正在使用的系統選單指標 響應...

顯示和隱藏系統檔案

1 右鍵要隱藏的資料夾,點 屬性 選中隱藏 再開啟 我的電腦 工具 資料夾選項 檢視 勾選隱藏所有檔案和資料夾 確定即可。若要使用該隱藏資料夾,可開啟 我的電腦 工具 資料夾選項 檢視 勾選 顯示所有檔案和資料夾 就可。但由於只要選擇 顯示所有檔案 單選就能將它們全部顯示出來,因此,必須對 顯示所有...

窗體中新增控制項與窗體顯示和隱藏

對於乙個應用程式而言,控制項是使用者介面的積木,他們具備互動式的特徵 新增控制項的方法 拖 拉 拽 新增控制項的另一種方法 即通過窗體的controls類的 add方法,格式如下 窗體的標誌.controls.add 控制項識別符號 例子 建立乙個 mybut 乙個物件 button mybut n...