微软ATL样例指导

2 篇文章 0 订阅
2 篇文章 0 订阅

1.按照微软的例子,发现com的dll无法再ie中显示

Adding a Control (ATL Tutorial, Part 2) | Microsoft Docsy

可以自己做一个dlg程序,再dlg中insert activex,选择web browser

然后打开rc文件,可以看到

IDD_TESTPOLYCTL_DIALOG DIALOGEX 0, 0, 320, 200
STYLE DS_SETFONT | DS_FIXEDSYS | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU | WS_THICKFRAME
EXSTYLE WS_EX_APPWINDOW
FONT 9, "MS Shell Dlg", 0, 0, 0x1
BEGIN
    DEFPUSHBUTTON   "确定",IDOK,209,179,50,14
    PUSHBUTTON      "取消",IDCANCEL,263,179,50,14
    CONTROL         "",IDC_EXPLORER1,"{8856F961-340A-11D0-A96B-00C04FD705A2}",WS_TABSTOP,0,0,60,25
END

ICD_EXPLORER1的空间,把红色部分的clsid换成自己的com的id就可以了。

编译后运行

2.按照第三步,右键添加Property,之后要求手动在idl中替换如下:

From Solution Explorer, open Polygon.idl and replace the following lines at the end of the IPolyCtl : IDispatch interface:

short get_Sides();
void set_Sides(short value);

with

[propget, id(1), helpstring("property Sides")] HRESULT Sides([out, retval] short *pVal);
[propput, id(1), helpstring("property Sides")] HRESULT Sides([in] short newVal);

实际上short get_sides等可能根本就不存在,不过,可以手动添加如上第二段的内容。

这些就让人困惑,那个右键添加property的作用是什么?

3.在第5步骤中你需要添加鼠标事件,可是这里空空如也,

Adding an Event (ATL Tutorial, Part 5) | Microsoft Docs

不过也没有关系,你可以手动添加你自己的事件。

 在如下位置添加黑体的一行代码即可

BEGIN_MSG_MAP(CPolyCtl)
    CHAIN_MSG_MAP(CComControl<CPolyCtl>)
    MESSAGE_HANDLER(WM_LBUTTONDOWN, OnLButtonDown)
    DEFAULT_REFLECTION_HANDLER()
END_MSG_MAP()

其他参考:

Beginner's Tutorial: COM/ATL Simple Project - CodeProject

ATL Rotary Control - CodeProject

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值