热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

CHtmlEditView类的拖拽消息问题!

CHtmlEditView类的一个派生类作为一个输入文字的编辑框,当将其他地方(如word中)的文本拖拽到该编辑框中时,会产生什么消息或事件?请大侠们指点,多谢!
CHtmlEditView类的一个派生类作为一个输入文字的编辑框,当将其他地方(如word中)的文本拖拽到该编辑框中时,会产生什么消息或事件?
请大侠们指点,多谢!

8 个解决方案

#1


给CHtmlEditView添加自定义拖拽功能IDropTargetpdwEffectDROPEFFECT_COPY
    现在要实现的是给Web编辑器添加控件工具栏,既可以通过双击添加控件到编辑器,也可以通过拖拽的方式添加,类似于Visual Studio中的设计器。双击添加容易实现,麻烦的是拖拽。幸好网上查到相关文档,按照《Internet Explorer 编程》通过实现一个IDropTarget,有两种可能的方案:
    第一种方案,在IDropTarget的函数DragEnter、DragOver中,针对自定义拖拽做特殊处理,直接将pdwEffect设置为DROPEFFECT_COPY,然后在Drop函数中处理数据。
    第二种方案,给IDataSource添加CF_TEXT格式和自定义格式,由于编辑器允许CF_TEXT数据被Drop,这样就可以不改动DragEnter、DragOver的实现,而只需要在Drop中处理数据。由于并不是编辑器中的任何区域都可以Drop的,这样做还有一个额外的好处是,编辑器的缺省实现帮我们做好了当前是否可以Drop的判断。
    显然第二种方案较好

#2


给CHtmlEditView添加自定义拖拽功能IDropTargetpdwEffectDROPEFFECT_COPY

不太明白这句 具体怎么给CHtmlEditView添加?

#3


自己顶一下!!

#4


再顶下 各位大哥来给看看啊!

#5


ModifyStyleEx(0, WS_EX_ACCEPTFILES); //支持外部文件拖曳
然后增加WM_DROPFILES消息

#6


class CMsgEdit : public CHtmlEditView,
public CMessageFilter
{
public:
CMsgEdit(void);
virtual ~CMsgEdit(void);

BEGIN_MSG_MAP(CMsgEdit)
MESSAGE_HANDLER(WM_CREATE, OnCreate)
MESSAGE_HANDLER(WM_DESTROY, OnDestroy)
MESSAGE_HANDLER(WM_MOUSEACTIVATE, OnMouseActivate)

CHAIN_MSG_MAP(CHtmlEditView)
COMMAND_ID_HANDLER(MC_IDM_HTMLMENU_UNDO, OnUndo)
COMMAND_ID_HANDLER(MC_IDM_HTMLMENU_REDO, OnRedo)
COMMAND_ID_HANDLER(MC_IDM_HTMLMENU_CUT, OnCut)
COMMAND_ID_HANDLER(MC_IDM_HTMLMENU_COPY, OnCopy)
COMMAND_ID_HANDLER(MC_IDM_HTMLMENU_COPY_ALL, OnCopyAll)
COMMAND_ID_HANDLER(MC_IDM_HTMLMENU_PASTE, OnPaste)
COMMAND_ID_HANDLER(MC_IDM_HTMLMENU_DELETE, OnDelete)
COMMAND_ID_HANDLER(MC_IDM_HTMLMENU_SELECTALL, OnSelectAll)
COMMAND_ID_HANDLER(MC_IDM_HTMLMENU_FONT, OnFont)
END_MSG_MAP()

protected:
CString m_chatDefaultHtml;
CString m_scrollBarColor;
static UINT CF_HTML;

LOGFONT m_defaultFontInfo;
COLORREF m_defaultFontColor;
BOOL m_bFocus;

void buildDefaultHtml();

public:
LRESULT OnCreate(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
LRESULT OnDestroy(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
LRESULT OnMouseActivate(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
BOOL OnBeforeNavigate2(IDispatch* pDisp, const String& szURL, DWORD dwFlags, const String& szTargetFrameName, CSimpleArray& pPostedData, const String& szHeaders);
virtual BOOL OnShowContextMenu(DWORD dwID, POINT FAR* ppt, IUnknown FAR* pcmdTarget, IDispatch FAR* pdispReserved);
LRESULT OnUndo(WORD /*wNotifyCode*/, WORD /*wID*/, HWND /*hWndCtl*/, BOOL& /*bHandled*/);
LRESULT OnRedo(WORD /*wNotifyCode*/, WORD /*wID*/, HWND /*hWndCtl*/, BOOL& /*bHandled*/);
LRESULT OnCut(WORD /*wNotifyCode*/, WORD /*wID*/, HWND /*hWndCtl*/, BOOL& /*bHandled*/);
LRESULT OnCopy(WORD /*wNotifyCode*/, WORD /*wID*/, HWND /*hWndCtl*/, BOOL& /*bHandled*/);
LRESULT OnCopyAll(WORD /*wNotifyCode*/, WORD /*wID*/, HWND /*hWndCtl*/, BOOL& /*bHandled*/);
LRESULT OnPaste(WORD /*wNotifyCode*/, WORD /*wID*/, HWND /*hWndCtl*/, BOOL& /*bHandled*/);
LRESULT OnDelete(WORD /*wNotifyCode*/, WORD /*wID*/, HWND /*hWndCtl*/, BOOL& /*bHandled*/);
LRESULT OnSelectAll(WORD /*wNotifyCode*/, WORD /*wID*/, HWND /*hWndCtl*/, BOOL& /*bHandled*/);
LRESULT OnFont(WORD /*wNotifyCode*/, WORD /*wID*/, HWND /*hWndCtl*/, BOOL& /*bHandled*/);

void setScrollBarColor(LPCTSTR scrollBarColor);
void emptyChatInput();
void customPaste();

protected:
DECLARE_DHTMLEDITING_CMDMAP(CMsgEdit)

public:
BOOL PreTranslateMessage(LPMSG pMsg);
};

以上是我类的定义头文件,想再请教下5楼,我应该如何添加该WM_DROPFILES消息呢?
另外,该消息只对拖拽文件有效么?如果只是拖拽文本呢?
再次感谢!

#7


自己再顶下!!

#8


还有谁有好的方法么?请分享下啊:)

推荐阅读
  • 这是原文链接:sendingformdata许多情况下,我们使用表单发送数据到服务器。服务器处理数据并返回响应给用户。这看起来很简单,但是 ... [详细]
  • 本文主要解析了Open judge C16H问题中涉及到的Magical Balls的快速幂和逆元算法,并给出了问题的解析和解决方法。详细介绍了问题的背景和规则,并给出了相应的算法解析和实现步骤。通过本文的解析,读者可以更好地理解和解决Open judge C16H问题中的Magical Balls部分。 ... [详细]
  • 解决VS写C#项目导入MySQL数据源报错“You have a usable connection already”问题的正确方法
    本文介绍了在VS写C#项目导入MySQL数据源时出现报错“You have a usable connection already”的问题,并给出了正确的解决方法。详细描述了问题的出现情况和报错信息,并提供了解决该问题的步骤和注意事项。 ... [详细]
  • Webmin远程命令执行漏洞复现及防护方法
    本文介绍了Webmin远程命令执行漏洞CVE-2019-15107的漏洞详情和复现方法,同时提供了防护方法。漏洞存在于Webmin的找回密码页面中,攻击者无需权限即可注入命令并执行任意系统命令。文章还提供了相关参考链接和搭建靶场的步骤。此外,还指出了参考链接中的数据包不准确的问题,并解释了漏洞触发的条件。最后,给出了防护方法以避免受到该漏洞的攻击。 ... [详细]
  • 也就是|小窗_卷积的特征提取与参数计算
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了卷积的特征提取与参数计算相关的知识,希望对你有一定的参考价值。Dense和Conv2D根本区别在于,Den ... [详细]
  • 本文介绍了南邮ctf-web的writeup,包括签到题和md5 collision。在CTF比赛和渗透测试中,可以通过查看源代码、代码注释、页面隐藏元素、超链接和HTTP响应头部来寻找flag或提示信息。利用PHP弱类型,可以发现md5('QNKCDZO')='0e830400451993494058024219903391'和md5('240610708')='0e462097431906509019562988736854'。 ... [详细]
  • 利用Visual Basic开发SAP接口程序初探的方法与原理
    本文介绍了利用Visual Basic开发SAP接口程序的方法与原理,以及SAP R/3系统的特点和二次开发平台ABAP的使用。通过程序接口自动读取SAP R/3的数据表或视图,在外部进行处理和利用水晶报表等工具生成符合中国人习惯的报表样式。具体介绍了RFC调用的原理和模型,并强调本文主要不讨论SAP R/3函数的开发,而是针对使用SAP的公司的非ABAP开发人员提供了初步的接口程序开发指导。 ... [详细]
  • Ihavethefollowingonhtml我在html上有以下内容<html><head><scriptsrc..3003_Tes ... [详细]
  • 本文讨论了如何在codeigniter中识别来自angularjs的请求,并提供了两种方法的代码示例。作者尝试了$this->input->is_ajax_request()和自定义函数is_ajax(),但都没有成功。最后,作者展示了一个ajax请求的示例代码。 ... [详细]
  • REVERT权限切换的操作步骤和注意事项
    本文介绍了在SQL Server中进行REVERT权限切换的操作步骤和注意事项。首先登录到SQL Server,其中包括一个具有很小权限的普通用户和一个系统管理员角色中的成员。然后通过添加Windows登录到SQL Server,并将其添加到AdventureWorks数据库中的用户列表中。最后通过REVERT命令切换权限。在操作过程中需要注意的是,确保登录名和数据库名的正确性,并遵循安全措施,以防止权限泄露和数据损坏。 ... [详细]
  • 用Vue实现的Demo商品管理效果图及实现代码
    本文介绍了一个使用Vue实现的Demo商品管理的效果图及实现代码。 ... [详细]
  • 在Docker中,将主机目录挂载到容器中作为volume使用时,常常会遇到文件权限问题。这是因为容器内外的UID不同所导致的。本文介绍了解决这个问题的方法,包括使用gosu和suexec工具以及在Dockerfile中配置volume的权限。通过这些方法,可以避免在使用Docker时出现无写权限的情况。 ... [详细]
  • Linux重启网络命令实例及关机和重启示例教程
    本文介绍了Linux系统中重启网络命令的实例,以及使用不同方式关机和重启系统的示例教程。包括使用图形界面和控制台访问系统的方法,以及使用shutdown命令进行系统关机和重启的句法和用法。 ... [详细]
  • 本文介绍了Sencha Touch的学习使用心得,主要包括搭建项目框架的过程。作者强调了使用MVC模式的重要性,并提供了一个干净的引用示例。文章还介绍了Index.html页面的作用,以及如何通过链接样式表来改变全局风格。 ... [详细]
  • 2016 linux发行版排行_灵越7590 安装 linux (manjarognome)
    RT之前做了一次灵越7590黑苹果炒作业的文章,希望能够分享给更多不想折腾的人。kawauso:教你如何给灵越7590黑苹果抄作业​zhuanlan.z ... [详细]
author-avatar
林小志525家
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有