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

積累的VC編程小技巧之標題欄和菜單

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

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

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

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

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

CreateWidnow時用WS_SYSMENU|WS_MINIMIZEBOX|WS_MAXIMIZEBOX 風格.

第一種方法:

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);
這個函數也可以是最大化按鈕失效!
并且可以在程序中動態的改變窗口的風格

2.創建動態菜單

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

{

CMenu menu;

if(!menu.CreateMenu())

return;

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

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

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.如何禁止對話框關閉按鈕和浮動工具條上的系統菜單

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、禁止浮動工具條上的系統菜單。
新建一個CToolBar的派生類CxxToolBar,在新類中的左鍵雙擊(CxxToolBar::OnLButtonDblClk(...))
和左鍵單擊(CxxToolBar:: OnLButtonDown(...))涵數中分別加入下面代碼既可:
if (IsFloating()) //工具條正在浮動狀態中
{
CWnd* pMiniFrame;
CWnd* pDockBar;

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

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

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

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

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

[解決方法]
右鍵菜單是系統菜單,只要將其WS_SYSMENU的屬性去掉即可.
[程序實現]
int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
........
long style = GetWindowLong(m_hWnd, GWL_STYLE);
style &= ~WS_SYSMENU;
SetWindowLong(m_hWnd, GWL_STYLE, style);

return 0;
}

5.修改標題欄高度

NONCLIENTMETRICS nm
調用SystemParametersInfoSPI_GETNONCLIENTMETRICS,sizeof(nm),&nm,0

重設SystemParametersInfoSPI_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)
{
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
}
關閉窗口的消息WM_CLOSEC 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) 如何實現找到一個菜單項:
步驟如下:
{
//動態修改菜單:
// 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);//菜單項的位數.
AfxMessageBox(s);
ASSERT(pSubMenu);
}

2) 動態編輯菜單:
步驟如下(可以用上例的pSubMenu,要加的菜單你自己定義.):
1) 添加一個稱為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) 刪除該菜單中第二項,可以用:
pSubMenu->RemoveMenu(1,MF_BYPOSITION);

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

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.隱藏標題欄和菜單欄

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

11.動態增加或刪除菜單

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")); //添加新的菜單項
DrawMenuBar(); //重畫菜單

2、 刪除菜單

刪除

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

CString str ;
for(int i=(mainmenu->GetSubMenu (0))->GetMenuItemCount()-1;i>=0;i--) //取得菜單的項數。
{
(mainmenu->GetSubMenu (0))->GetMenuString(i,str,MF_BYPOSITION);
//將指定菜單項的標簽拷貝到指定的緩沖區。MF_BYPOSITION的解釋見上。
if(str=="Always on &Top") //假如是剛才我們增加的菜單項,則刪除。
{
(mainmenu->GetSubMenu (0))->DeleteMenu(i,MF_BYPOSITION);
break;
}
}

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

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

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

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

OnContextMenu事件

14.顯示和隱藏程序菜單

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

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


只有注冊用戶登錄后才能發表評論。
網站導航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


導航

<2025年11月>
2627282930311
2345678
9101112131415
16171819202122
23242526272829
30123456

統計

常用鏈接

留言簿(19)

隨筆檔案

文章檔案

收藏夾

搜索

最新評論

閱讀排行榜

評論排行榜

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            狠狠久久婷婷| 亚洲国产精品视频一区| 亚洲黄一区二区三区| 欧美国产欧美亚州国产日韩mv天天看完整 | 欧美久久久久久久| 亚洲欧美日韩在线不卡| 久久精品国产亚洲精品| 99riav国产精品| 销魂美女一区二区三区视频在线| 在线看日韩欧美| 在线视频欧美日韩| 怡红院精品视频| 国产精品99久久久久久宅男| 在线播放精品| 亚洲免费在线观看视频| 亚洲精品孕妇| 久久理论片午夜琪琪电影网| 亚洲一二三区视频在线观看| 久久青青草原一区二区| 午夜精品一区二区三区在线视| 久久久久亚洲综合| 欧美一区二区三区男人的天堂 | 欧美伊人久久| 欧美人与禽猛交乱配视频| 久热精品视频在线观看| 欧美三级在线播放| 欧美国产日本韩| 国产综合色一区二区三区| 在线综合亚洲欧美在线视频| 亚洲日韩第九十九页| 久久久久久久一区二区三区| 久久成人精品电影| 欧美日韩在线一区| 最新成人av网站| 在线观看福利一区| 欧美制服丝袜| 久久国产精品色婷婷| 国产精品福利在线| 99精品视频免费观看| 99在线精品视频在线观看| 免费观看在线综合色| 欧美高清在线观看| 伊人久久综合97精品| 久久久久国产免费免费| 欧美精品一区三区| 狠狠色丁香久久婷婷综合丁香 | 亚洲高清不卡av| 欧美在线视频观看免费网站| 香蕉国产精品偷在线观看不卡| 国产精品成人av性教育| 中文精品视频一区二区在线观看| 一区二区精品在线观看| 欧美日韩成人综合| 一本色道久久综合精品竹菊| 一区二区欧美国产| 欧美日韩在线高清| 夜夜嗨av一区二区三区四季av| 一区二区电影免费观看| 欧美少妇一区二区| 亚洲男人的天堂在线观看| 欧美专区在线观看| 一区二区在线不卡| 免费一级欧美在线大片| 亚洲精品久久久久久久久久久| 一本色道88久久加勒比精品 | 免费不卡中文字幕视频| 精品99一区二区三区| 久久成人人人人精品欧| 欧美aⅴ99久久黑人专区| 最新高清无码专区| 欧美日韩另类视频| 午夜一区二区三区在线观看| 两个人的视频www国产精品| 91久久久久久国产精品| 欧美日韩三区四区| 欧美一区观看| 精品69视频一区二区三区| 久久成人国产精品| 91久久久久久久久久久久久| 亚洲影视在线播放| 精品成人一区二区三区四区| 欧美18av| 亚洲欧美日韩在线高清直播| 欧美国产精品中文字幕| 亚洲欧美久久久久一区二区三区| 国产一区二区三区视频在线观看| 欧美成人69av| 亚洲一区二区在线免费观看| 欧美国产成人在线| 午夜精品久久久久久久久久久久久 | 亚洲欧美日韩国产另类专区| 国内不卡一区二区三区| 欧美久久一级| 久久成人资源| a4yy欧美一区二区三区| 麻豆精品视频| 亚洲欧美日本伦理| 亚洲人成网站777色婷婷| 国产精品视频自拍| 欧美成人综合| 久久av一区| 亚洲色图综合久久| 亚洲高清二区| 久久国产精品久久久| 99亚洲一区二区| 伊人蜜桃色噜噜激情综合| 久久亚洲免费| 在线亚洲成人| 亚洲国产精品国自产拍av秋霞| 国产精品狠色婷| 欧美成人精品h版在线观看| 羞羞答答国产精品www一本| 日韩亚洲在线观看| 欧美福利视频| 久久综合色天天久久综合图片| 亚洲字幕一区二区| 99re热这里只有精品视频| 韩国成人福利片在线播放| 国产精品久久久久天堂| 欧美精品成人| 免费观看30秒视频久久| 香蕉成人久久| 亚洲五月六月| 日韩亚洲欧美高清| 亚洲国产成人tv| 免费成人性网站| 久久人人精品| 久久久噜噜噜久久狠狠50岁| 欧美在线www| 欧美一区二区观看视频| 亚洲男人的天堂在线aⅴ视频| 免费欧美在线视频| 久久激情五月丁香伊人| 亚洲欧美日韩第一区| 亚洲一级高清| 亚洲在线一区二区| 亚洲一区在线免费| 亚洲一区二区三区在线| 中文国产亚洲喷潮| 亚洲一区二区不卡免费| 亚洲愉拍自拍另类高清精品| 亚洲一区二区免费| 亚洲永久网站| 欧美与黑人午夜性猛交久久久| 亚洲欧美精品一区| 欧美亚洲综合网| 欧美一区二区三区四区高清| 欧美一区二区免费视频| 久久精品国产亚洲5555| 狼狼综合久久久久综合网| 蜜臀99久久精品久久久久久软件| 欧美不卡视频| 欧美午夜精品理论片a级按摩 | 欧美黄色免费网站| 亚洲大黄网站| 最新国产の精品合集bt伙计| 一本色道久久综合精品竹菊| 亚洲欧美一区二区在线观看| 欧美在线观看视频一区二区三区| 久久久一区二区| 欧美精品日韩www.p站| 国产精品高清一区二区三区| 国产欧美在线看| 亚洲国产精品第一区二区三区| 亚洲美女少妇无套啪啪呻吟| 亚洲欧美国产三级| 猫咪成人在线观看| 91久久视频| 先锋影音久久| 欧美夫妇交换俱乐部在线观看| 欧美午夜精品一区| 激情综合电影网| av成人免费观看| 久久成人18免费观看| 欧美激情五月| 亚洲一区二区日本| 久久五月天婷婷| 欧美日韩视频专区在线播放| 国产主播一区二区| 99精品欧美一区二区蜜桃免费| 欧美在线观看一二区| 欧美激情精品久久久久久久变态| 999亚洲国产精| 久久久噜噜噜久久久| 欧美色道久久88综合亚洲精品| 免费看亚洲片| 国产精品久久久久久久午夜| 伊甸园精品99久久久久久| 在线亚洲成人| 另类春色校园亚洲| 亚洲亚洲精品三区日韩精品在线视频| 久久精品国产99国产精品澳门| 欧美日韩一区二区三区四区五区| 狠狠色噜噜狠狠色综合久| 亚洲午夜av电影| 欧美风情在线| 欧美中文在线观看| 国产精品区一区| 日韩一二在线观看| 女同一区二区|