MFC 在一个老版本的工程中(基类是 CWinApp,CFrameWnd)怎样添加一个悬浮窗口 急急急叽急急急 在线等!

MFC 在一个老版本的工程中(基类是 CWinApp,CFrameWnd)怎样添加一个悬浮窗口 急急急叽急急急 在线等!,第1张

最近也遇到这个问题,在MFC SDI(单文档界面)中添加继承CDockablePane类的悬浮窗口后,因为CMainFrame继承于CFrameWnd,没有DockPane方法,所以将基类替换成CFrameWndEx。但此时整个软件无法成功启动,并提示“创建空文档失败”。

原因是:在MainFrm中调用了CToolBar,使用了DockControlBar来停靠工具栏。

完整解决方法是:将基类CFrameWnd替换成基类CFrameWndEx后,还需要将类CToolBar改为类CMFCToolBar,停靠接口DockControlBar改为DockPane来停靠即可。另外使用类CStatusBar定义的状态栏也会显示失败,改为类CMFCStatusBar即可。

如果对“替换基类”的方法感兴趣,可以查看网页链接

主窗口退出,窗口一起关闭    悬浮窗口只要是主窗口的子窗口,这个自然会实现;

悬浮窗口可移动    不做特殊处理的窗口都是可以移动的

双击显示主窗口    在子窗口的OnLButtonDBlck中,调用父类窗口的ShowWindow函数;

主窗口隐藏,显示悬浮窗扣    在主窗口最小化时,Hide自己,显示浮动窗口

1.在资源视图新建一个DialogBar资源,假设ID为IDD_DIALOGBAR

2.然后在MainFrm头文件中添加

CDialogBar m_wndColorDlgBar//对话栏类

3.在MainFrm的OnCreate函数里 添加代码(跟在已创建的工具栏代码后面):

//创建新的对话栏,参数1.对话栏的父窗口,2.对话栏资源,3.对齐标志,4.为对话栏指定一个ID

if(!m_wndColorDlgBar.Create(this,IDD_DIALOGBAR,CBRS_TOP,AFX_IDW_CONTROLBAR_LAST-1))

{

TRACE0("Failed to create dialog bar\n")

return -1

}

4.在OnCreate函数的return语句之前添加:

m_wndColorDlgBar.EnableDocking(CBRS_ALIGN_ANY)

DockControlBar(&m_wndColorDlgBar)

这样一个可浮动的工具栏就创建好了


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11544094.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-16
下一篇 2023-05-16

发表评论

登录后才能评论

评论列表(0条)

保存