WIN32API 图标拖拽功能的基本配置方法

基本的方法就是通过微软官网提供的事列来完成整个操作过程,

微软链接:https://docs.microsoft.com/en-us/windows/desktop/controls/using-image-lists;

https://docs.microsoft.com/en-us/windows/desktop/controls/using-treeview

1.通过WIN32 API的公开控件库 中的 Image_list来实现功能

在实现功能的第一步是加入公共控件库的头文件以及dll.

他的基本格式如下

#include <commctrl.h> 
#pragma comment(lib,"comctl32.lib")

在创建Image_list之前需要调用InitCommonControls();函数来对公共控件进行初始化。

当然还可以使用另外一个函数,也是微软推荐的函数

INITCOMMONCONTROLSEX InitCtrls; 
InitCtrls.dwSize = sizeof(INITCOMMONCONTROLSEX);
InitCtrls.dwICC = ICC_PAGESCROLLER_CLASS; //这里填上你要用的扩展控件类
InitCommonControlsEx(&InitCtrls);

 

//这样我们就可以成功创建扩展控件了。

 

//另外对于需要调用扩展控件.dll的(MSDN里面有说明)

//我们需要加载DLL到实例句柄

 HINSTANCE hInstRich = ::LoadLibrary(_T("Riched32.dll"));

hWndEditU = CreateWindowEx(NULL,L"RichEdit",L"显示",WS_CHILD|WS_VISIBLE|WS_BORDER|

ES_LEFT|ES_MULTILINE ,10,10,400,320,hWnd,NULL,hInstRich,NULL);

//这样创建之后我们就可以调用出 扩展控件来进行编写了!

 

//需要注意的是在我们使用完之后需要释放DLL的

::FreeLibrary(hInstRich);

整个过程分为三个大部分

(1).左键按下

(2)鼠标移动

(3)左键抬起

三个过程都有相应的微软api与之对应。

这里主要描述一下对于image_list控件的理解。

image_list控件相当于是一个内存块,用于存储图片的列表。每个图片都有自己的编号,编号从0开始。在image_list的控件之上,微软的api又为它提供了图片的拖拽的功能。

图像列表和树视图项目地址(需要自己配置里面的图片内容):https://github.com/wolfgold/icon_move

原文地址:https://www.cnblogs.com/bookdrip/p/9924744.html