①
怎樣在程式開始的時候讓他最大化?
②
vc++
做出來的exe檔案在窗體的右上方是沒有最大化和最小化按鈕的,怎樣實現這一功能?
③
怎麼在顯示視窗時,使最大化按鈕變灰?
①
在
②
在
createwidnow時用ws_sysmenu|ws_minimizebox|ws_maximizebox 風格.
③
第一種方法:
bool cmainframe::precreatewindow(createstruct& cs)
第二種方法:
第三種方法:
modifystyle(ws_maximizebox, 0);
這個函式也能是最大化按鈕失效!
並且能在程式中動態的改動視窗的風格
void cmainframe::onselectstate(nm******** pnmtb, lresult *plr)
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)
[解決方法]
右鍵選單是系統選單,只要將其ws_sysmenu的屬性去掉即可.
[程式實現]
int cmainframe::oncreate(lpcreatestruct lpcreatestruct)
nonclientmetrics nm
呼叫重設systemparametersinfo(spi_getnonclientmetrics,sizeof(nm),&nm,0)
systemparametersinfo(spi_setnonclientmetrics,sizeof(nm),&nm,0)
最大化、最小化將傳送
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事件。
[問題提出]
在應用程式的不同執行時期,要反映當前狀態往往會修改應用程式標題.
[解決方法]
在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 改動標題"));
執行看看.
[問題提出]
本文將介紹一些使用cmenu的方法,如查詢指定選單,在指定選項前新增選單項.....
[解決方法]
使用cwnd::getmenu( )訪問主選單,getmenu( )返回指向cmenu物件的指標,他有一些成員函式,允許我們修改乙個選單。
1) 怎麼實現找到乙個選單項:
步驟如下:
cstring s;
s.format("%d",i);//選單項的位數.
afxmessagebox(s);
assert(psubmenu);
}2) 動態編輯選單:
步驟如下(能用上例的psubmenu,要加的選單你自己定義.):
1) 新增乙個稱為wzd2,命令id為idc_name_new1的選單命令到該選單中,能用:
2) 在new1前插入new2,能用:
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);
int cchildframe::oncreate(lpcreatestruct lpcreatestruct)
隱藏標題欄
modifystyle(ws_caption,0)
隱藏選單欄
setmenu(null)
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--) //取得選單的項數。}
使用語句
cwnd* m_pcwnd = afxgetmainwnd( ),然後,再以如下形式呼叫setwindowtext()函式:
setwindowtext( *m_pcwnd,(lpctstr)m_windowtext);// m_windowtext能是個cstring類的變數。
oncontextmenu事件
cwnd *pwnd=afxgetmainwnd();
if(b_m) //隱藏選單
else
VC 程式設計之標題欄和選單
1.視窗最大最小化按紐的控制 怎樣在程式開始的時候讓它最大化?vc 做出來的exe檔案在窗體的右上方是沒有最大化和最小化按鈕的,怎樣實現這一功能?如何在顯示視窗時,使最大化按鈕變灰?在createwidnow時用ws sysmenu ws minimizebox ws maximizebox 風格....
VC程式設計之標題欄和選單
vc程式設計之標題欄和選單 1.視窗最大最小化按紐的控制 怎樣在程式開始的時候讓它最大化?vc 做出來的exe檔案在窗體的右上方是沒有最大化和最小化按鈕的,怎樣實現這一功能?如何在顯示視窗時,使最大化按鈕變灰?在createwidnow時用ws sysmenu ws minimizebox ws m...
VC經驗技巧 標題欄 按鈕 選單等。
vc經驗技巧 1.視窗最大最小化按紐的控制 怎樣在程式開始的時候讓他最大化?vc 做出來的exe文件在窗體的右上方是沒有最大化和最小化按鈕的,怎樣實現這一功能?如何在顯示視窗時,使最大化按鈕變灰?在createwidnow時用ws sy enu ws minimizebox ws maximizeb...