禁止 WM_DROPFILES
发布日期:2021-06-30 22:06:17 浏览次数:3 分类:技术文章

本文共 1739 字,大约阅读时间需要 5 分钟。

今天要迁入OLE拖拽文件的处理, 但是DuiLib默认生成的窗口是支持文件拖拽的.

就是默认生成的窗体, 都可以拖动文件进来, 鼠标光标都有拖拽的+号图标, 都会进入WM_DROPFILES消息的处理.

我得先做掉WM_DROPFILES的来源, 这样, 我再用OLE拖拽时, 我才能分清楚, 是否OLE拖拽处理生效了~

Demo 工程 : 用于演示如何禁止 WM_DROPFILES 

编译环境 : vs2010 vc++ + DuiLib

工程下载点: 

工程预览:

/**LRESULT WindowImplBase::OnCreate(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled){LONG styleValue = 0;styleValue = GetStyle();::SetWindowLong(*this, GWL_STYLE, styleValue);styleValue = GetExStyle();::SetWindowLong(*this, GWL_EXSTYLE, styleValue);*//// CMainDlg::GetExStyle 是虚函数, 在WindowImplBase::OnCreate中被调用, 用来设置扩展窗口风格LONG CMainDlg::GetExStyle(){    long dwStyle = __super::GetExStyle();    /// 禁止接受文件拖拽    dwStyle &= ~WS_EX_ACCEPTFILES;    /// 禁止产生任务栏图标    dwStyle |= WS_EX_TOOLWINDOW;    dwStyle &= ~(WS_EX_APPWINDOW);    return dwStyle;}LRESULT CMainDlg::WndMessageProc(UINT uMsg, WPARAM wParam, LPARAM lParam){    BOOL    bNeedDefaultProcess = FALSE;    do     {        switch (uMsg)        {        /// 如果窗口的扩展风格 WS_EX_ACCEPTFILES 被禁止, 是接受不到 WM_DROPFILES 消息的        /// 同时, 拖动文件到CMainDlg时, 图标是禁止样式的图标        case WM_DROPFILES:            OutputDebugStringW(L"");            break;        case WM_CREATE:            bNeedDefaultProcess = TRUE;            break;        case WM_SWITCH_VIEW:            switch_view((e_view_index)wParam);            break;        case WM_CLOSE:            EntryUiDestory(TRUE);            ThreadProcEnd();            bNeedDefaultProcess = TRUE;            break;        default:            bNeedDefaultProcess = TRUE;            break;        }        if (bNeedDefaultProcess)            return __super::WndMessageProc(uMsg, wParam, lParam);        else            return S_OK;    } while (0);    return S_OK;}

也可以用 DragAcceptFiles 一句搞定 WM_DROPFILES 的允许或禁止.

转载地址:https://lostspeed.blog.csdn.net/article/details/47339841 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:svn : 如果自己忘了自己服务器上的svn库url和口令
下一篇:NASM import win32api

发表评论

最新留言

留言是一种美德,欢迎回访!
[***.207.175.100]2024年05月02日 08时27分21秒