MFC单文档应用程序 50
我想建立一个对话框,里面加入树形控件,然后我想做出像工具栏那样可以停靠在主框架上,工具栏通过enabledocking来完成,那我的对话框应该怎么实现停靠呢?答的好加10...
我想建立一个对话框,里面加入树形控件,然后我想做出像工具栏那样可以停靠在主框架上,工具栏通过enabledocking来完成, 那我的对话框应该怎么实现停靠呢?
答的好加100. 展开
答的好加100. 展开
3个回答
展开全部
对于基于对话框的应用程序,MFC AppWizard还没有对工具条的支持,但可以通过使用CToolBar类来构造生成工具条,我们下面介绍如何为对话框程序添加工具条。
用MFC AppWizard(EXE)生成一个基于对话框的应用程序,接受其默认设置,取名为demodialog。
给应用程序添加一个Toolbar的名称为IDR_TOOLBAR1的工具条资源,名称分别如下:
ID_NEW ‖生成新的程序等
ID_FILE_OPEN ‖打开文件
ID_FILE_SAVE ‖保存文件
ID_EXIT ‖退出程序
然后在对话框的头文件中添加如下的成员变量:
CToolBar m_wndToolBar;
在resoure编辑框中编辑这些toolbar资源,设置好大小和彼此的距离,添加工具条前,需要初始化工具条,添加如下所示的代码到demodialog.cpp的OnInitDialog()函数中。
如果要使工具条是平面浮动的,可以添加如下的代码到对话框初始化函数中。
……
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_TOOLBAR1))
{
TRACE0(〃创建工具条失败\n〃);
return -1;‖不能创建,返回报-1
}RepositionBar
s(AFX_IDW_CONTROLBAR_FIRST,AFX_IDW_CONTROLBAR_LAST,0);‖定位工具条
……
如果要使工具条是立体静态的,添加如下的代码到对话框初始化函数中。
……
if(!m_wndToolBar.Create(this)||!m_wndToolBar.LoadToolBar(IDR_TOOLBAR1))
{
TRACE(〃创建工具条失败\n〃);
return -1;‖不能创建,返回
}RepositionBars(AFX_IDW_CONTROLBAR_FIRST,AFX_IDW_CONTROLBAR_LAST,0);‖定位工具条
……
编译生成的程序,就实现了对话框的工具条,如果需要添加另外的对话框的工具条代码实现,用ClassWizard为工具条添加消息映射即可。
用MFC AppWizard(EXE)生成一个基于对话框的应用程序,接受其默认设置,取名为demodialog。
给应用程序添加一个Toolbar的名称为IDR_TOOLBAR1的工具条资源,名称分别如下:
ID_NEW ‖生成新的程序等
ID_FILE_OPEN ‖打开文件
ID_FILE_SAVE ‖保存文件
ID_EXIT ‖退出程序
然后在对话框的头文件中添加如下的成员变量:
CToolBar m_wndToolBar;
在resoure编辑框中编辑这些toolbar资源,设置好大小和彼此的距离,添加工具条前,需要初始化工具条,添加如下所示的代码到demodialog.cpp的OnInitDialog()函数中。
如果要使工具条是平面浮动的,可以添加如下的代码到对话框初始化函数中。
……
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_TOOLBAR1))
{
TRACE0(〃创建工具条失败\n〃);
return -1;‖不能创建,返回报-1
}RepositionBar
s(AFX_IDW_CONTROLBAR_FIRST,AFX_IDW_CONTROLBAR_LAST,0);‖定位工具条
……
如果要使工具条是立体静态的,添加如下的代码到对话框初始化函数中。
……
if(!m_wndToolBar.Create(this)||!m_wndToolBar.LoadToolBar(IDR_TOOLBAR1))
{
TRACE(〃创建工具条失败\n〃);
return -1;‖不能创建,返回
}RepositionBars(AFX_IDW_CONTROLBAR_FIRST,AFX_IDW_CONTROLBAR_LAST,0);‖定位工具条
……
编译生成的程序,就实现了对话框的工具条,如果需要添加另外的对话框的工具条代码实现,用ClassWizard为工具条添加消息映射即可。
展开全部
存第一次点击的坐标pt,并用一个BOOL型全局变量bDraw用于判断是否正在线,将其值为true;
然后添加WM_MOUSEMOVE消息响应函数,如果bDraw为true,在里面先将整个客户区用背景色(如默认的白色)填充,然后在pt与当前鼠标的位置之间画一条直线。
添加WM_LBUTTONUP消息响应,在里面将bDraw置为false;
当然如果按照上面我说的方法,只能花一条直线,化第二条时会把之前的一条覆盖掉。另外还有可能出现闪烁。用双缓冲绘图可以很好的解决这两个问题,你自己好好想想吧
然后添加WM_MOUSEMOVE消息响应函数,如果bDraw为true,在里面先将整个客户区用背景色(如默认的白色)填充,然后在pt与当前鼠标的位置之间画一条直线。
添加WM_LBUTTONUP消息响应,在里面将bDraw置为false;
当然如果按照上面我说的方法,只能花一条直线,化第二条时会把之前的一条覆盖掉。另外还有可能出现闪烁。用双缓冲绘图可以很好的解决这两个问题,你自己好好想想吧
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
我以前也想过这个问题, 因为一点击按钮或菜单 就弹出对话框 , 但这个对话框的位置确不能固定在一个地方 好像是随机的啊! 不知道怎么停靠在主框架上
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询