VC2003 中将现有窗口过程插入 ATL ActiveX
来源:互联网 发布:java jdbc 连接数据库 编辑:程序博客网 时间:2024/05/18 11:11
近期接到一个任务,将自己写的一个图片编辑器做成 ActiveX,翻了翻代码看到图片编辑器的源程序是基于 SDK 和 GDI+ 的,于是就用 ATL 创建了一个基本样式的 ActiveX 控件,然后在它的 MSG_MAP 中连接相应窗口消息,直接把图片编辑器的主窗口消息过程填了上去:
BEGIN_MSG_MAP(CPicEditCtl)
if (uMsg == WM_CREATE ||
uMsg == WM_COMMAND ||
uMsg == WM_NOTIFY ||
uMsg == WM_DESTROY)
{
bHandled = TRUE;
lResult = UWMWndProc(hWnd, uMsg, wParam, lParam);
if (bHandled)
return TRUE;
}
CHAIN_MSG_MAP(CComControl<CPicEditCtl>)
DEFAULT_REFLECTION_HANDLER()
END_MSG_MAP()
if (uMsg == WM_CREATE ||
uMsg == WM_COMMAND ||
uMsg == WM_NOTIFY ||
uMsg == WM_DESTROY)
{
bHandled = TRUE;
lResult = UWMWndProc(hWnd, uMsg, wParam, lParam);
if (bHandled)
return TRUE;
}
CHAIN_MSG_MAP(CComControl<CPicEditCtl>)
DEFAULT_REFLECTION_HANDLER()
END_MSG_MAP()
由于用到 ImageList_LoadImage(HINSTANCE, ID) 函数,所以在处理 WM_CREATE 的时候,在函数中增加了一行,获取实例句柄:
g_hInst = (HINSTANCE)GetWindowLongPtr(hWnd, GWL_HINSTANCE);
运行后测试还能用,但似乎有些资源释放方面的问题……再说吧
- VC2003 中将现有窗口过程插入 ATL ActiveX
- 简单介绍 VC2003 使用 ATL 开发 ActiveX 控件
- 用ATL 创建(Activex) 窗口
- 在ATL无窗口ACTIVEX控件中响应timer消息
- ATL窗口
- ATL窗口
- ATL 中的ActiveX 容器
- ATL ActiveX开发入门
- ATL开发一个ActiveX
- ActiveX COM ATL OLE
- ATL开发一个ActiveX
- 编写 ATL ActiveX 控件
- ActiveX控件(ATL篇)
- 【译】用于多媒体应用的无窗口ATL ActiveX控件容器
- 用于多媒体应用的无窗口ATL ActiveX控件容器1
- 把程序嵌入网页之ATL编写ActiveX[标准窗口+接受参数]
- 把程序嵌入网页之ATL编写ActiveX[标准窗口+接受参数]
- Android中将布局文件/View添加至窗口过程分析
- ASP.NET2.0 遍历文件夹下所有图片
- 处理目录的代码
- struts2.0关键点总结
- eclipse快捷键
- jdk1.5+tomcat-5.5.20+myeclipse6.0+eclipse3.3+axis环境配置
- VC2003 中将现有窗口过程插入 ATL ActiveX
- 九阳真经(1-5重)
- "Intel Microprocessors" by B.Barry Completed~
- C#实现进度条(js版本和C#版本)
- 九阴真经(6-9重)
- 07年IT市场并购战十大战役(长春JAVA培训班 吉林长春JAVA软件就业培训)
- 九阴白骨爪
- java实现多个文件压缩
- 工作流技术发展历史