◎ ◎ ◎ ◎ ◎ ◎ ◎ ◎ ◎ 接着昨天的问题,那用ATL如何实现,我该用哪个容器 ◎ ◎ ◎ ◎ ◎ ◎ ◎ ◎ ◎

popyyb 2003-09-12 11:06:59
昨天的问题:
http://expert.csdn.net/Expert/topic/2246/2246053.xml?temp=.259289

如果改用ATL容器实现Toolbar外观,我该怎么做,大家帮忙啊,谢谢

最近挺着急的。。。。。。
...全文
31 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
csdnhbc20 2003-09-15
  • 打赏
  • 举报
回复
消息的处理又两个方法( 无限天空上面也说了):
1:建立连接点(概念不解释了你自己去看资料把),等于就是activex控件的事件机制一样,这个很多资料上都说了的,你看msdn里面应该就有
2:发送自定义消息,我说一下怎么做。
a:在客户端定义你需要的消息
#define myMsg1 wm_user+100
#define myMsg2 wm_user+100
b:在组件方也同样定义你需要的消息
#define myMsg1 wm_user+100
#define myMsg2 wm_user+100
c:在组件方你的事件产生地方发送消息::sendMEssage(m_hMyWnd,wparam,lParam);
注意:m_hMyWnd是你从客户方向传递进去的接收消息的窗口句柄(可以是你的客户程序的任何窗口句柄,一般你把主窗口聚丙传递进去就行了,你把这个HWND,强制转化为long类型就能传递了)
d:在客户方向定义消息响应函数,接受你在组件方发送出来的消息,就ok了。





popyyb 2003-09-13
  • 打赏
  • 举报
回复
那Create怎么写呢,另外还是不大明白消息的处理,大侠,请详细一点吧,谢谢

popyyb@citiz.net
popyyb 2003-09-13
  • 打赏
  • 举报
回复
up
天限天空 2003-09-13
  • 打赏
  • 举报
回复
HRESULT ITookbarEx::Create(HWND hWndParent, LPRECT prcRect,DWORD dwStyle, DWORD dwExStyle)
{
ATLASSERT(::IsWindow(hWndParent) && !IsWindow());
if (!::IsWindow(hWndParent))
{
return E_INVALIDARG;
}
if (IsWindow())
{
return E_FAIL;
}

RECT rcRect = *prcRect;

Create(hWndParent, rcRect, NULL, WS_VISIBLE|WS_CHILD);
cTookbar.Create(m_hWnd, dwStyle, dwExStyle);


return S_OK;
}

天限天空 2003-09-12
  • 打赏
  • 举报
回复


就在接口中 调用你的 Toolbar 就可以了,

CTookbar cTookbar;

HRESULT ITookbarEx::Move(LPRECT rc)
{
cTookbar.MoveWindow(rc);
return S_OK;
}

其他的函数一样

===========
处理事件要麻烦一点,你可以用连接点来处理,这样比较麻烦
也可 通过发消息的方式来处理

IToolBar::RegMsg(HWnd hWnd, UNIT uMsgID)
{
m_hWnd = hWnd;
}

有事件时候

SendMessage(m_hWnd,xxMsgID, xx,yy );

客户端:
自己建接受消息函数



3,245

社区成员

发帖
与我相关
我的任务
社区描述
ATL,Active Template Library活动(动态)模板库,是一种微软程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序。
社区管理员
  • ATL/ActiveX/COM社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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