MFC SDI 屏蔽主菜单和工具栏以及添加背景标题等操作


一、添加标题

方法1:在doc类中找到OnNewDocument这个函数,然后添加你想设置的标题,如下:

[cpp]  view plain copy
  1. BOOL CGraphic13Doc::OnNewDocument()  
  2. {  
  3.     if (!CDocument::OnNewDocument())  
  4.     return FALSE;  
  5.   
  6.     // TODO: add reinitialization code here  
  7.     // (SDI documents will reuse this document)  
  8.         SetTitle("我的标题");           //设置文档标题  
  9.     return TRUE;  
  10. }  

方法2:在CMainFrame中进行更改,如下所示:

[cpp]  view plain copy
  1. BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)  
  2. {  
  3.     if( !CFrameWnd::PreCreateWindow(cs) )  
  4.     return FALSE;  
  5.     // TODO: 在此处通过修改  
  6.     //CREATESTRUCT cs 来修改窗口类或样式  
  7.     cs.style &=~FWS_ADDTOTITLE;  
  8.     cs.lpszName = "我的标题";  
  9.     //设定窗口的尺寸  
  10.     cs.cx = 600;  
  11.     cs.cy = 450;  
  12.     return TRUE;  
  13.   
  14. }  

二、屏蔽工具栏

int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)

注释掉所有工具条相关的内容即可

 

三、屏蔽菜单栏 

手动删除所有菜单项,添加一个删除所有菜单项的函数。具体为:

先在MainFrm.h中添加函数声明(在类 CMainFrame 的声明之外)

//手动屏蔽掉主菜单项

static void DelAllMenu(HMENU hMenu);

然后再在对应的源文件MainFrm.cpp中添加这个函数的定义:

/*
*  删除所有的菜单栏
*
* 删除窗口的所有菜单栏
*  
*/
static void DelAllMenu(HMENU hMenu)
{
//  首先删除多余的菜单项
int Menucount = GetMenuItemCount(hMenu);
for (int i = Menucount-1;i>-1;i--)
{
::DeleteMenu(hMenu,i, MF_BYPOSITION);
}  
}

最后就是调用这个函数,在函数 int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)

中添加下面的代码:

CMenu *pMenu = GetMenu();  
if (NULL!=pMenu)  
{  
DelAllMenu(pMenu->GetSafeHmenu());  
}  

运行后,单文档程序将不会再显示菜单栏。

 

三、MFC SDI主窗口大小位置设定

 

XXX.cpp中的函数 InitInstance()添加下面的代码:

//add by shufac 改变窗口的大小和位置

CRect rect;
HWND hWnd=GetDesktopWindow();//取得桌面窗口的句柄
GetWindowRect(hWnd,&rect);//设置矩形对象参数
//设置框架窗口的显示位置和大小
m_pMainWnd->MoveWindow(rect.left+200,rect.top+100,rect.Width()*2/3,rect.Height()*3/4,TRUE);
//this->MoveWindow(rect.left/*+100*/,rect.top/*+100*/,rect.Width()/2,rect.Height()/2,TRUE);
// this->MoveWindow(rect.left,rect.top,rect.Width()/2,rect.Height()/2,TRUE);
// this->MoveWindow(0,0,600,600,TRUE);//设置窗口的位置和大小 

四、为给定的区域添加背景 

以俄罗斯方块游戏的游戏区添加绿色的背景为例,代码如下,详情见注释。 

//获取主窗口的大小
CRect rect;
GetWindowRect(&rect); 
//游戏区域绘制 背景及其他
CPen pen_gamearea; 
CPen*myoldpen_gamearea;
//创建蓝色的画笔
pen_gamearea.CreatePen(PS_SOLID,3,RGB(0,0,255)); 
myoldpen_gamearea=pDC->SelectObject(&pen_gamearea);
pDC->MoveTo(0,rect.Height()-20);//到左下顶点 左侧边线和左边框重合 不绘制边线
pDC->LineTo(rect.Width()*2/3,rect.Height()-20); //底部边线
pDC->LineTo(rect.Width()*2/3,51); //右部边线
//方块游戏区域  
CRect rect_gamearea(0,50,rect.Width()*2/3,rect.Height()-20);
CBrush mybrush_gamearea; 
//创建画刷 绿色
mybrush_gamearea.CreateSolidBrush(RGB(0,222,0));
//绘制背景
pDC->FillRect(rect_gamearea,&mybrush_gamearea);
pDC->SelectObject(myoldpen_gamearea); 
 
//底部的空白部分添加背景bottom
//底部区域  
int i=rect.Height()-20;
//CRect的四个参数分别为 l t r b
CRect rect_bottomarea(0,rect.Height()-20,rect.Width(),rect.Height());
CBrush mybrush_bottomarea; 
//创建画刷 
mybrush_bottomarea.CreateSolidBrush(RGB(200,222,0));
//绘制背景
pDC->FillRect(rect_bottomarea,&mybrush_bottomarea);


五、设置标题栏图标:

在CMainFrame中的OnCreate()函数中添加如下代码:

[cpp]  view plain copy
  1. //设置标题栏的图标  
  2. HICON m_hIcon = AfxGetApp()->LoadIcon(IDI_ICON_APP);  
  3. SetIcon(m_hIcon,TRUE);  
  4. SetIcon(m_hIcon,FALSE);  

其中IDI_ICON_APP是首先需要载入的资源ID。

其他内容待完善 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

法哥2012

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值