CHtmlEditView类的拖拽消息问题!

jenf 2010-06-19 10:38:28
CHtmlEditView类的一个派生类作为一个输入文字的编辑框,当将其他地方(如word中)的文本拖拽到该编辑框中时,会产生什么消息或事件?
请大侠们指点,多谢!
...全文
122 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
jenf 2010-06-22
  • 打赏
  • 举报
回复
还有谁有好的方法么?请分享下啊:)
jenf 2010-06-21
  • 打赏
  • 举报
回复
自己再顶下!!
jenf 2010-06-21
  • 打赏
  • 举报
回复
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<BYTE>& 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消息呢?
另外,该消息只对拖拽文件有效么?如果只是拖拽文本呢?
再次感谢!
jenf 2010-06-19
  • 打赏
  • 举报
回复
给CHtmlEditView添加自定义拖拽功能IDropTargetpdwEffectDROPEFFECT_COPY

不太明白这句 具体怎么给CHtmlEditView添加?
oyljerry 2010-06-19
  • 打赏
  • 举报
回复
给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的判断。
显然第二种方案较好
Eleven 2010-06-19
  • 打赏
  • 举报
回复
ModifyStyleEx(0, WS_EX_ACCEPTFILES); //支持外部文件拖曳
然后增加WM_DROPFILES消息
jenf 2010-06-19
  • 打赏
  • 举报
回复
再顶下 各位大哥来给看看啊!
jenf 2010-06-19
  • 打赏
  • 举报
回复
自己顶一下!!

16,548

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • AIGC Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

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