mfc如何修饰mainframe类

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

1:如何修改单文档应用程序的窗口标题,查阅MSDC文章:

Changing the styles of a window created by MFC.

要在CMainFrame的PrecreatWindow()中加入如下代码:

cs.style&=~FWS_ADDTOTITLE;

cs.lpszName="This is a test!";

可以先不要上一句试一试!

另一种方法是 :

cs.style=WS_OVERLAPPEDWINDOW;

再进行修改,也可以不修改,那么是去掉默认文档标题,而只显示原程序标题!

另一类方法是在窗口创建后再修改,因为在OnCreate中,开始的这些代码:

if (CFrameWnd::OnCreate(lpCreateStruct) == -1)

return -1;

if (!m_wndToolBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_TOP | CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC) ||

!m_wndToolBar.LoadToolBar (IDR_MAINFRAME))

{

TRACE0("Failed to create toolbarn");

return -1; // fail to create

}

if (!m_wndStatusBar.Create(this) ||

! m_wndStatusBar.SetIndicators(indicators,

sizeof (indicators)/sizeof(UINT)))

{

TRACE0("Failed to create status barn");

return -1; // fail to create

}

// TODO: Delete these three lines if you don't want the toolbar to

// be dockable

m_wndToolBar.EnableDocking (CBRS_ALIGN_ANY);

EnableDocking (CBRS_ALIGN_ANY);

DockControlBar(&m_wndToolBar);

完成了窗口创建,工具栏,状态栏的创建等工作,可以在后面利用一个系统全局函数SetWindowLong()函数进行修改:

加入代码为:SetWindowLong(m_hWnd,GWL_STYLE,WS_OVERLAPPEDWINDOW);

与此相对,还有一个GetWindowLong()函数可供使用!如下面代码去掉了窗口上的最大化按钮: SetWindowLong(m_hWnd,GWL_STYLE,GetWindowLong(m_hWnd,GWL_STYLE) & ~MAXIMIZEBOX); 当然SetWindowLon()还可以做别的修改.与SetWindowLong()相类似的另一个系统全局函数为SetClassLong();

2:如何完成一个动画图标

其实就是准备好几个图标,在定时器消息响应中更改图标即可完成.

第一步是准备好几个(如三个)图标.

第二步是在CMainFrame类中做三个图标类的相关对象的成员变量,或者是一个大小为3的HICON 数组.

第三步是在CMainFrame类的OnCreate()函数中LoadIcon()进行对三个图标的加载.其中用到的实例句柄的获取有三种方法:

一:用全局函数AfxGetInstanceHandle()获取,

二:先在CMainFrame类中用extern声明一下全局对象theApp,然后使用theApp.hInstance; 三:使用全局函数AfxGetApp()获取全局对象theApp对象的指针,然后用

AfxGetApp()->hInstance;

第二个参数是一个字符指针,可我们只有图标的资源ID,所以要进行必要的转换:用MAKEINTRESOURCE宏!

第四步是设置定时器,也在OnCreate()函数中定义:SetTimer(1,1000,NULL);

第五步是在CMainFrame中添加WM_TIMER消息响应,在其中加入代码:

static int index=0;

SetClassLong(m_hWnd,GCL_HICON,(LONG)m_hIcons[index]);

index=++index%3;

3:在工具栏上新加一个按钮,要让它与前一个按钮之间有一个分隔符,只需要将它轻轻向一旁拖动一点点再放开即可,而要删除工具栏上的一个按钮,你只是选中它再按DEL键是完不成的,它只是将按钮上的图案删除,所以删除一个按钮要将它拖动到工具栏之外,再松手!

4:如何创建一个工具栏

在MSDN的关于CToolBar的讲解页有详细说明!

一:插入工具栏资源,

二:在CMainFrame中加入一个CToolBar类对象的成员变量,

三:在CMainFrame的OnCreate()中加入:

if (!m_MyToolBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_TOP

| CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC) ||

! m_MyToolBar.LoadToolBar(IDR_MYTOOLBAR))

{

TRACE0("Failed to create toolbarn");

return -1; // fail to create

}

m_MyToolBar.EnableDocking (CBRS_ALIGN_ANY);

DockControlBar(&m_MyToolBar);

各个函数调用及参数传递查看MSDN!

5:如何让一个工具栏隐藏或显示:

相关文档
最新文档