一、添加标题
方法1:在doc类中找到OnNewDocument这个函数,然后添加你想设置的标题,如下:
- BOOL CGraphic13Doc::OnNewDocument()
- {
- if (!CDocument::OnNewDocument())
- return FALSE;
- // TODO: add reinitialization code here
- // (SDI documents will reuse this document)
- SetTitle("我的标题"); //设置文档标题
- return TRUE;
- }
方法2:在CMainFrame中进行更改,如下所示:
- BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)
- {
- if( !CFrameWnd::PreCreateWindow(cs) )
- return FALSE;
- // TODO: 在此处通过修改
- //CREATESTRUCT cs 来修改窗口类或样式
- cs.style &=~FWS_ADDTOTITLE;
- cs.lpszName = "我的标题";
- //设定窗口的尺寸
- cs.cx = 600;
- cs.cy = 450;
- return TRUE;
- }
二、屏蔽工具栏
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()函数中添加如下代码:
- //设置标题栏的图标
- HICON m_hIcon = AfxGetApp()->LoadIcon(IDI_ICON_APP);
- SetIcon(m_hIcon,TRUE);
- SetIcon(m_hIcon,FALSE);
其中IDI_ICON_APP是首先需要载入的资源ID。
其他内容待完善