DHtmlEdit控件的右键菜单问题?

宝_爸 2002-10-24 10:08:23
DHTMLEdit有缺省的右键菜单吗?就像htmlview那样的。

还有我测试msdn的例子程序,by vb.
Private Sub CreateContextMenu()
Dim MenuText(3)
Dim MenuState(3) As OLE_TRISTATE
MenuText(0) = "Choice 1 (Unchecked)"
MenuText(1) = "Choice 2 (Checked)"
MenuText(2) = "" ' Line
MenuText(3) = "Choice 3 (Gray)"
MenuState(0) = Unchecked
MenuState(1) = Checked
MenuState(3) = Gray
DE1.SetContextMenu MenuText, MenuState
End Sub

是没有问题的。
但是我不知道怎么将这段代码利用到vc里,做了好几回尝试,都不行,我的代码就不放上来贻笑大方了。。。。
...全文
96 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
宝_爸 2002-10-25
  • 打赏
  • 举报
回复
好了已经搞定,谢谢 jiangsheng(蒋晟.Net)
蒋晟 2002-10-24
  • 打赏
  • 举报
回复
用SafeArray和Variant……
宝_爸 2002-10-24
  • 打赏
  • 举报
回复
谢谢jiangsheng(蒋晟.Net) ,现在菜单已经出来了,不过还有问题,菜单上的字符显示不正确。

下面是我的源代码,请帮忙看一看好吗。我觉得问题是出在BSTR上面。
VARIANT arr;
arr.vt = VT_ARRAY | VT_BSTR;
{
SAFEARRAYBOUND sab[1];
sab[0].lLbound = 1; sab[0].cElements = 2;
arr.parray = SafeArrayCreate(VT_BSTR, 1, sab);
}
HRESULT res;

// Fill safearray with some values...
for(int i=1; i<=2; i++)
{
CString str = "test";
long ix[1];
ix[0] = i;
res = SafeArrayPutElement(arr.parray, ix, (void *)(LPTSTR)(LPCTSTR)&str);
ASSERT(res == S_OK);
}

VARIANT arr1;
arr1.vt = VT_ARRAY | VT_I4 ;
{
SAFEARRAYBOUND sab[1];
sab[0].lLbound = 1; sab[0].cElements = 2;
arr1.parray = SafeArrayCreate(VT_I4, 1, sab);
}

// Fill safearray with some values...
for(i=1; i<=2; i++)
{
OLE_TRISTATE state;
state = triChecked;
long ix[1];
ix[0] = i;
res =SafeArrayPutElement(arr1.parray, ix, (void *)&state);
ASSERT(res == S_OK);
}

m_HtmlEdit.SetContextMenu(&arr, &arr1);
SafeArrayDestroy(arr.parray);
SafeArrayDestroy(arr1.parray);
蒋晟 2002-10-24
  • 打赏
  • 举报
回复
告诉你了是用SafeArray了,把数组打包到VARIANT结构里面
宝_爸 2002-10-24
  • 打赏
  • 举报
回复
我定义了_variant_t的数组
_variant_t str[1];
_variant_t state[1];
str[0] = _variant_t("asdfasd");
state[0] = _variant_t(0);

de1.SetContextMenu((LPVARIANT)str, (LPVARIANT)state);
这样子传进去不行,编译可以通过,但是到了htmledit控件内部执行command的函数中,触发异常。具体什么异常,我也看不懂。
宝_爸 2002-10-24
  • 打赏
  • 举报
回复
我定义了_variant_t的数组
_variant_t str[1];
_variant_t state[1];
str[0] = _variant_t("asdfasd");
state[0] = _variant_t(0);

de1.SetContextMenu((LPVARIANT)str, (LPVARIANT)state);
这样子传进去不行,编译可以通过,但是到了htmledit控件内部执行command的函数中,触发异常。具体什么异常,我也看不懂。
宝_爸 2002-10-24
  • 打赏
  • 举报
回复
我定义了_variant_t的数组
_variant_t str[1];
_variant_t state[1];
str[0] = _variant_t("asdfasd");
state[0] = _variant_t(0);

de1.SetContextMenu((LPVARIANT)str, (LPVARIANT)state);
这样子传进去不行,编译可以通过,但是到了htmledit控件内部执行command的函数中,触发异常。具体什么异常,我也看不懂。

3,055

社区成员

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

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