青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

積累的VC編程小技巧之標(biāo)題欄和菜單

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

怎樣在程序開始的時(shí)候讓它最大化?

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

如何在顯示窗口時(shí),使最大化按鈕變灰?

App類里的C…App::InitInstance()中把m_pMainWnd->ShowWindow(SW_SHOW)改成m_pMainWnd->ShowWindow(SW_MAXIMIZE);

CreateWidnow時(shí)用WS_SYSMENU|WS_MINIMIZEBOX|WS_MAXIMIZEBOX 風(fēng)格.

第一種方法:

BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)
{
if( !CFrameWnd::PreCreateWindow(cs) )
return FALSE;
// TODO: Modify the Window class or styles here by modifying
// the CREATESTRUCT cs
// disable the maxmini box
cs.style &= ~WS_MAXIMIZEBOX;
return TRUE;
}

第二種方法:

CMenu *pMenu=AfxGetApp()->m_pMainWnd->GetSystemMenu(FALSE);
int x=pMenu->GetMenuItemCount( );
UINT pID=pMenu->GetMenuItemID(x-1);
pMenu->EnableMenuItem(pID, MF_DISABLED);

第三種方法:

ModifyStyle(WS_MAXIMIZEBOX, 0);
這個(gè)函數(shù)也可以是最大化按鈕失效!
并且可以在程序中動(dòng)態(tài)的改變窗口的風(fēng)格

2.創(chuàng)建動(dòng)態(tài)菜單

void CMainFrame::OnSelectState(NMTOOLBAR* pnmtb, LRESULT *plr)

{

CMenu menu;

if(!menu.CreateMenu())

return;

menu.AppendMenu(MF_STRING,0,"開始");

menu.AppendMenu(MF_STRING,0,"結(jié)束");

CRect rc;

m_wndToolBar.SendMessage(TB_GETRECT, pnmtb->iItem, (LPARAM)&rc);

m_wndToolBar.ClientToScreen(&rc);

menu.TrackMenu( TPM_LEFTALIGN | TPM_LEFTBUTTON | TPM_VERTICAL,

rc.left, rc.bottom, this, &rc);

// menu.DestroyMenu();

menu.detach();

}

3.如何禁止對(duì)話框關(guān)閉按鈕和浮動(dòng)工具條上的系統(tǒng)菜單

1、禁止對(duì)話框中的關(guān)閉按鈕有二種方法。
第一種方法,用ModiftMenu()涵數(shù)來實(shí)現(xiàn):

CMenu* pMenu = this->GetSystemMenu(FALSE);
pMenu->ModifyMenu(SC_CLOSE,MF_BYCOMMAND | MF_GRAYED );

第二種方法,用EnableMenuItem()涵數(shù)來實(shí)現(xiàn):

CMenu* pMenu = this->GetSystemMenu(FALSE);
pMenu->EnableMenuItem( SC_CLOSE, MF_BYCOMMAND|MF_GRAYED);

2、禁止浮動(dòng)工具條上的系統(tǒng)菜單。
新建一個(gè)CToolBar的派生類CxxToolBar,在新類中的左鍵雙擊(CxxToolBar::OnLButtonDblClk(...))
和左鍵單擊(CxxToolBar:: OnLButtonDown(...))涵數(shù)中分別加入下面代碼既可:
if (IsFloating()) //工具條正在浮動(dòng)狀態(tài)中
{
CWnd* pMiniFrame;
CWnd* pDockBar;

pDockBar = GetParent();
pMiniFrame = pDockBar->GetParent();

//去除其上系統(tǒng)菜單
pMiniFrame->ModifyStyle(WS_SYSMENU, NULL);

//重繪工具條
pMiniFrame->ShowWindow(SW_HIDE);
pMiniFrame->ShowWindow(SW_SHOW);
}

3、禁止窗口最大化按鈕
PreCreateWindow()涵數(shù)中去掉WS_MAXIMIZEBOX風(fēng)格顯示既可。
BOOL CxxFrameWnd::PreCreateWindow(CREATESTRUCT& cs)
{
cs.style &= ~WS_MAXIMIZEBOX;
return CFrameWnd::PreCreateWindow(cs);
}

4.如何將標(biāo)題欄上的右鍵菜單屏蔽掉?

[解決方法]
右鍵菜單是系統(tǒng)菜單,只要將其WS_SYSMENU的屬性去掉即可.
[程序?qū)崿F(xiàn)]
int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
........
long style = GetWindowLong(m_hWnd, GWL_STYLE);
style &= ~WS_SYSMENU;
SetWindowLong(m_hWnd, GWL_STYLE, style);

return 0;
}

5.修改標(biāo)題欄高度

NONCLIENTMETRICS nm
調(diào)用SystemParametersInfoSPI_GETNONCLIENTMETRICS,sizeof(nm),&nm,0

重設(shè)SystemParametersInfoSPI_SETNONCLIENTMETRICS,sizeof(nm),&nm,0

6.窗口最大化、最小化及關(guān)閉的消息是什么?如何截獲?

最大化、最小化將發(fā)送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)
{
if (Msg.WParam == SC_MINIMIZE)
{
//catches minimize...
}
else if (Msg.WParam == SC_MAXIMIZE)
{
//catches maximize...
}
TForm::Dispatch(&Msg);
// or "else TForm::Dispatch(&Msg)" to trap
}
關(guān)閉窗口的消息WM_CLOSEC Builder提供了OnClose事件。

7.如何改變窗口標(biāo)題?

[問題提出]
在應(yīng)用程序的不同運(yùn)行時(shí)期,要反映當(dāng)前狀態(tài)往往會(huì)修改應(yīng)用程序標(biāo)題.

[解決方法]
MFC類庫中提供了CWnd::SetWindowText函數(shù),通過該函數(shù)可以改變?nèi)魏未绑w(包括控件)的標(biāo)題.
改變主窗體的標(biāo)題:
CWnd *m_pMainWnd;
m_pMainWnd=AfxGetMainWnd();
m_pMainWnd->SetWindowText(_T("改變標(biāo)題"));
當(dāng)改變多視MDI的子窗口的標(biāo)題時(shí),:
GetParentFrame()->SetWindowText(_T("MDI Child改變標(biāo)題"));
當(dāng)改變按鈕的標(biāo)題時(shí)(假設(shè)按鈕的ID=IDC_BUTTON1):
GetDlgItem(IDC_BUTTON1)->SetWindowText(_T("Button 改變標(biāo)題"));
運(yùn)行看看.

8.如何用VC 動(dòng)態(tài)修改應(yīng)用程序菜單

[問題提出]
本文將介紹一些使用CMenu的方法,如查找指定菜單,在指定選項(xiàng)前添加菜單項(xiàng).....

[解決方法]
使用CWnd::GetMenu( )訪問主菜單,GetMenu( )返回指向CMenu對(duì)象的指針,它有一些成員函數(shù),答應(yīng)我們修改一個(gè)菜單。
1) 如何實(shí)現(xiàn)找到一個(gè)菜單項(xiàng):
步驟如下:
{
//動(dòng)態(tài)修改菜單:
// Get the Main Menu
CMenu* pMainMenu = AfxGetMainWnd()->GetMenu();
CMenu* pSubMenu = NULL;
int i;
for (i=0; i<(int)pMainMenu->GetMenuItemCount(); i )
{
pSubMenu = pMainMenu->GetSubMenu(i);
if (pSubMenu && pSubMenu->GetMenuItemID(0) == ID_FILE_NEW)
break;
}
CString s;
s.Format("%d",i);//菜單項(xiàng)的位數(shù).
AfxMessageBox(s);
ASSERT(pSubMenu);
}

2) 動(dòng)態(tài)編輯菜單:
步驟如下(可以用上例的pSubMenu,要加的菜單你自己定義.):
1) 添加一個(gè)稱為Wzd2,命令IDIDC_NAME_NEW1的菜單命令到該菜單中,可以用:
pSubMenu->AppendMenu(0,IDC_NAME_NEW1,"New&1");

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) 刪除該菜單中第二項(xiàng),可以用:
pSubMenu->RemoveMenu(1,MF_BYPOSITION);

9.屏蔽掉子框架的右上角的關(guān)閉按鈕

int CChildFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CMDIChildWnd::OnCreate(lpCreateStruct) == -1)
return -1;
。。。
CMenu* pSysMenu = GetSystemMenu(FALSE);
pSysMenu->EnableMenuItem(SC_CLOSE,MF_BYCOMMAND |MF_DISABLED|MF_GRAYED);
return 0;
}

10.隱藏標(biāo)題欄和菜單欄

隱藏標(biāo)題欄 ModifyStyle(WS_CAPTION,0)
隱藏菜單欄 SetMenu(NULL)

11.動(dòng)態(tài)增加或刪除菜單

1、 增加菜單
添加

CMenu *mainmenu;
mainmenu=AfxGetMainWnd()->GetMenu(); //得到主菜單
(mainmenu->GetSubMenu (0))->AppendMenu (MF_SEPARATOR);//添加分隔符
(mainmenu->GetSubMenu (0))->AppendMenu(MF_STRING,ID_APP_ABOUT,
_T("Always on &Top")); //添加新的菜單項(xiàng)
DrawMenuBar(); //重畫菜單

2、 刪除菜單

刪除

CMenu *mainmenu;
mainmenu=AfxGetMainWnd()->GetMenu(); //得到主菜單

CString str ;
for(int i=(mainmenu->GetSubMenu (0))->GetMenuItemCount()-1;i>=0;i--) //取得菜單的項(xiàng)數(shù)。
{
(mainmenu->GetSubMenu (0))->GetMenuString(i,str,MF_BYPOSITION);
//將指定菜單項(xiàng)的標(biāo)簽拷貝到指定的緩沖區(qū)。MF_BYPOSITION的解釋見上。
if(str=="Always on &Top") //假如是剛才我們?cè)黾拥牟藛雾?xiàng),則刪除。
{
(mainmenu->GetSubMenu (0))->DeleteMenu(i,MF_BYPOSITION);
break;
}
}

12.另一種改變窗口標(biāo)題的方法

  使用語句 CWnd* m_pCWnd = AfxGetMainWnd( ),然后,再以如下形式調(diào)用SetWindowText()函數(shù):

SetWindowText( *m_pCWnd,(LPCTSTR)m_WindowText);// m_WindowText可以是一個(gè)CString類的變量。

13.上下文菜單事件觸發(fā)事件

OnContextMenu事件

14.顯示和隱藏程序菜單

CWnd *pWnd=AfxGetMainWnd();
if(b_m) //隱藏菜單
{
pWnd->SetMenu(NULL);
pWnd->DrawMenuBar();
b_m=false;
}
else
{
CMenu menu;
menu.LoadMenu(IDR_MAINFRAME); ////顯示菜單 也可改變菜單項(xiàng)
pWnd->SetMenu(&menu);
pWnd->DrawMenuBar();
b_m=true;
menu.Detach();
}

posted on 2008-04-02 18:54 wrh 閱讀(1403) 評(píng)論(0)  編輯 收藏 引用


只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。
網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


導(dǎo)航

<2008年4月>
303112345
6789101112
13141516171819
20212223242526
27282930123
45678910

統(tǒng)計(jì)

常用鏈接

留言簿(19)

隨筆檔案

文章檔案

收藏夾

搜索

最新評(píng)論

閱讀排行榜

評(píng)論排行榜

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            亚洲激情另类| 一本色道久久88亚洲综合88| 99精品黄色片免费大全| 激情综合久久| 亚洲黄色性网站| 亚洲日本va在线观看| 亚洲精品小视频在线观看| 洋洋av久久久久久久一区| 亚洲男人的天堂在线| 亚洲欧洲av一区二区| 久久精品国产亚洲一区二区| 久久视频在线免费观看| 欧美福利影院| 亚洲一区中文字幕在线观看| 久久久福利视频| 欧美高清在线视频观看不卡| 国产精品久久久久天堂| 国产日韩成人精品| 亚洲日本va在线观看| 午夜精品三级视频福利| 老司机午夜精品视频| 日韩午夜黄色| 久久精品夜色噜噜亚洲a∨ | 欧美一区综合| 欧美成人一品| 亚洲欧美欧美一区二区三区| 久久女同精品一区二区| 国产精品夫妻自拍| 亚洲国产精品va在线看黑人动漫| 亚洲午夜精品久久久久久app| 日韩一级裸体免费视频| 中国av一区| 欧美一级专区| 亚洲美女中文字幕| 久久亚洲精品一区二区| 国产精品美女久久久浪潮软件| 亚洲人成网站影音先锋播放| 欧美一区二区高清| 日韩午夜高潮| 欧美黄色影院| 在线成人激情黄色| 久久久久免费视频| 亚洲尤物在线| 欧美午夜一区二区福利视频| 91久久精品美女高潮| 久久久爽爽爽美女图片| 亚洲资源av| 国产精品日韩欧美一区| 国产精品99久久久久久久vr| 亚洲国产视频直播| 久久狠狠久久综合桃花| 国产精品女人毛片| 亚洲欧美日韩第一区| 亚洲欧洲在线看| 欧美不卡视频| 亚洲日本中文字幕| 欧美高清视频一区二区| 久久久久国色av免费观看性色| 国产亚洲毛片在线| 久久精品视频在线| 久久精彩免费视频| 国内精品久久久久久久影视蜜臀 | 美女久久一区| 亚洲第一福利在线观看| 久久成人精品一区二区三区| 亚洲制服少妇| 国产日韩高清一区二区三区在线| 亚洲欧美一区二区三区久久| 一本色道久久综合亚洲精品高清| 欧美成年视频| 一区二区高清在线| 亚洲无限乱码一二三四麻| 国产精品一区在线播放| 久久久久久香蕉网| 欧美激情一区二区三级高清视频| 亚洲国产成人在线| 欧美三级午夜理伦三级中文幕| 99视频日韩| 日韩视频二区| 国产欧美一区二区三区沐欲 | 欧美xx69| 在线综合视频| 午夜精品久久久久久久99热浪潮| 国产欧美精品日韩精品| 国产农村妇女精品| 国内精品久久久久伊人av| 开元免费观看欧美电视剧网站| 欧美77777| 在线亚洲伦理| 亚洲一区亚洲二区| 亚洲黄色av一区| 中文在线资源观看网站视频免费不卡 | 亚洲人成亚洲人成在线观看图片| 欧美午夜剧场| 久久伊人免费视频| 欧美日韩岛国| 六十路精品视频| 欧美日韩一区二区在线观看视频| 久久精品2019中文字幕| 欧美精品在线免费观看| 欧美亚洲综合网| 欧美二区不卡| 久久久久国色av免费观看性色| 欧美成人午夜激情在线| 久久精品国产清高在天天线| 欧美极品一区二区三区| 久久国产精品亚洲77777| 欧美另类极品videosbest最新版本 | 国产乱人伦精品一区二区| 免费h精品视频在线播放| 国产精品久久久久久户外露出| 麻豆国产va免费精品高清在线| 欧美日韩视频一区二区| 免费看精品久久片| 国产精品综合| 夜夜躁日日躁狠狠久久88av| 亚洲福利视频免费观看| 亚洲网站在线| 99精品视频一区| 老司机久久99久久精品播放免费| 亚洲欧美综合一区| 欧美巨乳在线观看| 免费国产一区二区| 国产日韩在线一区| 亚洲天天影视| 中文日韩欧美| 欧美日韩综合视频网址| 女人香蕉久久**毛片精品| 国产精品一区亚洲| 午夜精品一区二区三区四区| 亚洲午夜一级| 欧美日韩国产一区二区| 亚洲国产精品一区二区久| 好看的日韩av电影| 久久精品国产清高在天天线| 久久精品国产清自在天天线| 国产欧美一区在线| 欧美一区国产二区| 久久精品一区二区三区不卡| 国产精品区一区二区三区| 一区二区精品在线观看| 亚洲无线观看| 国产精品私人影院| 亚洲自拍另类| 久久人人爽国产| 99精品国产福利在线观看免费| 国产精品分类| 亚洲在线视频| 久久精品人人| 极品少妇一区二区| 久久久免费av| 亚洲第一精品夜夜躁人人爽| 亚洲国产精品电影| 欧美高清视频在线播放| 亚洲毛片在线观看.| 国产欧美日韩在线视频| 欧美一区二区三区视频在线| 久久亚洲国产成人| 亚洲伦理在线| 国产精品久久久久9999吃药| 亚洲欧美三级伦理| 亚洲成色777777女色窝| 国产精品99久久久久久宅男 | 国产精品主播| 久久深夜福利免费观看| 91久久精品国产91久久| 欧美一区二区精品在线| 一区二区视频欧美| 欧美日韩欧美一区二区| 久久99在线观看| 亚洲日本无吗高清不卡| 久久精品国产77777蜜臀| 亚洲国产另类精品专区| 国产精品久久久久久久久久ktv| 久久不射电影网| 亚洲美女在线视频| 免费在线欧美黄色| 亚洲伊人一本大道中文字幕| 伊人色综合久久天天五月婷| 欧美精品麻豆| 久久精品国产99| 夜夜精品视频| 欧美成人免费小视频| 久久av二区| 亚洲少妇最新在线视频| 影音先锋日韩有码| 国产精品一香蕉国产线看观看 | 女同一区二区| 欧美一区二区三区在线免费观看| 亚洲激情欧美激情| 国产欧美一区二区精品性| 欧美国产精品一区| 99pao成人国产永久免费视频| 久久这里有精品15一区二区三区| 亚洲午夜精品福利| 亚洲日本成人| 最新69国产成人精品视频免费| 国产亚洲一区二区精品| 国产精品扒开腿做爽爽爽软件| 女女同性精品视频|