VC經驗技巧 標題欄 按鈕 選單等。

2021-04-19 07:12:17 字數 4813 閱讀 9370

vc經驗技巧

1.視窗最大最小化按紐的控制

怎樣在程式開始的時候讓他最大化?

vc++

做出來的exe文件在窗體的右上方是沒有最大化和最小化按鈕的,怎樣實現這一功能?

如何在顯示視窗時,使最大化按鈕變灰?

在createwidnow時用ws_sy**enu|ws_minimizebox|ws_maximizebox 風格.

第一種方法:

bool cmainframe::precreatewindow(createstruct& cs)

第二種方法:

第三種方法:

modifystyle(ws_maximizebox, 0);

這個函式

也能夠是最大化按鈕失效!

並且能夠在程式中動態的改變視窗的風格

2.建立動態選單

void cmainframe::onselectstate(nm******** pnmtb, lresult *plr)

3.如何禁止對話方塊關閉按鈕和浮動工具條上的系統選單1

、禁止對話方塊中的關閉按鈕有二種方法。

第一種方法,用modiftmenu()涵數來實現:

cmenu* pmenu = this->getsystemmenu(false);

pmenu->modifymenu(sc_close,mf_bycommand | mf_grayed );

第二種方法,用enablemenuitem()涵數來實現

:cmenu* pmenu = this->getsystemmenu(false);

pmenu->enablemenuitem( sc_close, mf_bycommand|mf_grayed);

2、禁止浮動工具條上的系統選單。

新建乙個c*******的派生類cxx*******,在新類中的左鍵雙擊

(cxx*******::onlbuttondblclk(...))

和左鍵單擊(cxx*******:: onlbuttondown(...))涵數中分別加入下面**既可

:if (isfloating()) //工具條正在浮動狀態中

3、禁止視窗最大化按鈕

在precreatewindow()涵數中去掉ws_maximizebox風格顯示既可。

bool cxxframewnd::precreatewindow(createstruct& cs)

4.如何將標題欄上的右鍵選單遮蔽掉?

[

解決方法

]右鍵選單是系統選單,只要將其ws_sy**enu的屬性

去掉即可

.[程式實現

]int cmainframe::oncreate(lpcreatestruct lpcreatestruct)

5.修改標題欄高度

nonclientmetrics nm

呼叫systemparametersinfo(spi_getnonclientmetrics,sizeof(nm),&nm,0)

重設systemparametersinfo(spi_setnonclientmetrics,sizeof(nm),&nm,0)

6.視窗最大化、最小化及關閉的訊息是什麼?如何截獲?

最大化、最小化將傳送wm_syscommand訊息。要處理該訊息,能夠這麼做:

1、在form的頭文件中新增:

void __fastcall restrictminimizemaximize(tmessage &msg);

begin_message_map

message_handler(wm_syscommand, tmessage, restrictminimizemaximize)

end_message_map(tform)

2、在form的單元文件中新增:

void __fastcall tform1::restrictminimizemaximize(tmessage& msg)

else if (msg.wparam == sc_maximize)

tform::dispatch(&msg);

// or "else tform::dispatch(&msg)" to trap

} 關閉視窗的訊息為wm_close,c++

builder提供了onclose事件。

7.如何改變視窗標題?

[

問題提出

]在應用程式的不同執行時期,要反映當前狀態往往會修改應用程式標題

.[解決方法

]在mfc類庫中提供了cwnd::setwindowtext函式

,通過該函式

能夠改變任何窗體(包括控制項)的標題

.改變主窗體的標題

:cwnd *m_pmainwnd;

m_pmainwnd=afxgetmainwnd();

m_pmainwnd->setwindowtext(_t("改變標題

"));

當改變多視mdi的子視窗的標題時,用

:getparentframe()->setwindowtext(_t("mdi child改變標題

"));

當改變按鈕的標題時(假設按鈕的

id=idc_button1):

getdlgitem(idc_button1)->setwindowtext(_t("button 改變標題

"));

執行看看.

8.如何用vc++

動態修改應用程式選單[

問題提出

]本文將介紹一些使用cmenu的方法,如查詢指定選單,在指定選項前新增選單項

.....

[解決方法

]使用cwnd::getmenu( )訪問主選單,getmenu( )返回指向cmenu物件的指標

,他有一些成員函式

,允許我們修改乙個選單。

1) 如何實現找到乙個選單項

:步驟如下

:cstring s;

s.format("%d",i);//選單項的位數

.afxmessagebox(s);

assert(psubmenu);

}2) 動態編輯選單

:步驟如下(能夠用上例的psubmenu,要加的選單您自己定義

.):1) 新增乙個稱為wzd2,命令id為idc_name_new1的選單命令到該選單中,能夠用

:psubmenu->insertmenu(idc_name_new1,mf_bycommand,idc_name_new2, "new&2");

3) 把new1改變成new3,能夠用

:psubmenu->modifymenu(idc_name_new1,mf_bycommand,idc_name_new3, "new&3");

4) 刪除該選單中第二項,能夠用

:psubmenu->removemenu(1,mf_byposition);

9.遮蔽掉子框架的右上角的關閉按鈕

int cchildframe::oncreate(lpcreatestruct lpcreatestruct)

10.隱藏標題欄和選單欄

隱藏標題欄

modifystyle(ws_caption,0)

隱藏選單欄

setmenu(null)

11.動態增加或刪除選單1

、 增加選單新增

cmenu *mainmenu;

mainmenu=afxgetmainwnd()->getmenu(); //

得到主選單

新增分隔符

新增新的選單項

drawmenubar(); //

重畫選單 2

、 刪除選單 刪除

cmenu *mainmenu;

mainmenu=afxgetmainwnd()->getmenu(); //

得到主選單

cstring str ;

for(int i=(mainmenu->getsubmenu (0))->getmenuitemcount()-1;i>=0;i--) //

取得選單的項數。

}

12.另一種改變視窗標題的方法

使用語句cwnd* m_pcwnd = afxgetmainwnd( ),然後,再以如下形式呼叫setwindowtext()函式:

setwindowtext( *m_pcwnd,(lpctstr)m_windowtext);// m_windowtext

能夠是個cstring類的變數。

13.上下文選單事件觸發事件

oncontextmenu事件

14.顯示和隱藏程式選單

cwnd *pwnd=afxgetmainwnd();

if(b_m) //

隱藏選單

else

(源文:http://hi.baidu.com/love_%cd%ae/blog/item/9e5a2e464e3e370d6b63e5dc.html )

VC程式設計小技巧之標題欄和選單

怎樣在程式開始的時候讓他最大化?vc 做出來的exe檔案在窗體的右上方是沒有最大化和最小化按鈕的,怎樣實現這一功能?怎麼在顯示視窗時,使最大化按鈕變灰?在 在 createwidnow時用ws sysmenu ws minimizebox ws maximizebox 風格.第一種方法 bool c...

VC 程式設計之標題欄和選單

1.視窗最大最小化按紐的控制 怎樣在程式開始的時候讓它最大化?vc 做出來的exe檔案在窗體的右上方是沒有最大化和最小化按鈕的,怎樣實現這一功能?如何在顯示視窗時,使最大化按鈕變灰?在createwidnow時用ws sysmenu ws minimizebox ws maximizebox 風格....

VC程式設計之標題欄和選單

vc程式設計之標題欄和選單 1.視窗最大最小化按紐的控制 怎樣在程式開始的時候讓它最大化?vc 做出來的exe檔案在窗體的右上方是沒有最大化和最小化按鈕的,怎樣實現這一功能?如何在顯示視窗時,使最大化按鈕變灰?在createwidnow時用ws sysmenu ws minimizebox ws m...