CBCGPDialogBar 调用create的dialogbar按钮无法响应(灰色)?按钮有消息代码。

dshu 2011-08-15 11:39:31
我知道 按钮消息关联响应等不写在dialogbar类下而写在mainframe下可以,可为什么呢。最重要的是我用的dialogbar窗口是调用DLL的,mainframe也根本写不进去呀。

求高手! 求给力!
...全文
113 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
dshu 2011-08-16
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 allenhiman 的回复:]
无视我的回复 我看错了
[/Quote]
不敢 只是没方法!
dshu 2011-08-15
  • 打赏
  • 举报
回复
upup!
dshu 2011-08-15
  • 打赏
  • 举报
回复
	if (!m_wndDlgBar.Create (_T("DialogBar"), this, TRUE, 
MAKEINTRESOURCE (IDD_DIALOGBAR),
WS_CHILD | WS_VISIBLE | WS_CLIPSIBLINGS | WS_CLIPCHILDREN | CBRS_LEFT | CBRS_FLOAT_MULTI,
AFX_IDW_DIALOGBAR + 6))
{
TRACE0("Failed to create dialogbar\n");
return -1; // fail to create
}
allenhiman 2011-08-15
  • 打赏
  • 举报
回复
无视我的回复 我看错了
dshu 2011-08-15
  • 打赏
  • 举报
回复
http://topic.csdn.net/t/20030925/08/2297464.html

“为button添加 ON_UPDATE_COMMAND_UI(IDC_BUTTON1,OnUpdateButton1)处理就可以了。
具体细节我好象是程序利用空闲时间象dlgbar发送Update消息(记不清了),如果控件没有处理,就用缺省方式处理,即控件是无效的(button就是此类控件),所以只要给控件一个处理或更新函数就可以回避调用缺省方式了。 ”

allenhiman 2011-08-15
  • 打赏
  • 举报
回复
不管你的dialogbar来自与哪 上面的按钮都有ID值的吧 消息映射 只要有这个ID值就可以了
allenhiman 2011-08-15
  • 打赏
  • 举报
回复
你是在自问自答么?
dshu 2011-08-15
  • 打赏
  • 举报
回复
Dialog bars are extensions to a main window and any dialog-bar control-notification messages, such as BN_CLICKED or EN_CHANGE, will be sent to the parent of the dialog bar — the main window.

For more information about dialog bars, see classCDialogBar in the Class Library Reference.

关键就是中间红色的部分,意思就是说,对于Dialog Bar上面的控件的消息响应需要交给他的父窗口来处理

所以,直接在Dialog bar上面添加控件,比如说button,然后双击button,添加消息处理函数,在运行程序后,button是灰色的,是不可以点击的,而如果想要处理这个消息,需要在mainframe里面处理消息响应。大体的思路就是这样了,实例代码如下:

首先在DialogBar上添加了一个button ID是IDC_button1

然后在mainframe的.h文件里面添加

afx_msg void OnButton1();

在cpp文件里面添加

ON_BN_CLICKED(IDC_BUTTON1, OnButton1)

以及实现代码

void CMainFrame::OnButton1()
{}

15,979

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧