炫彩界面库论坛

 找回密码
 加入我们

QQ登录

只需一步,快速开始

查看: 4841|回复: 5

[解决]求助易语言使用 XList_SetUserDrawItem自绘列表框问题。

[复制链接]

该用户从未签到

发表于 2012-4-12 01:37:39 | 显示全部楼层 |阅读模式
本帖最后由 锦衣夜行 于 2012-4-12 20:01 编辑

感谢梦飞大大。很热情的提供了很多帮助,希望大家都能购买下正版的炫彩。。给炫彩的后续开发提供动力。。
.版本 2

.子程序 子程序1
.参数 hEle, 整数型
.参数 pDrawItem, list_drawItem
.局部变量 drawItem, list_drawItem

RtlMoveMemory (drawItem, pDrawItem, 取结构尺寸 (drawItem))


.版本 2

.DLL命令 RtlMoveMemory, 整数型, , "RtlMoveMemory"
    .参数 Destination, list_drawItem, 传址
    .参数 Source, 整数型
    .参数 Length, 整数型



.版本 2

.DLL命令 取结构尺寸, 整数型, "kernel32.dll", "LocalSize"
    .参数 参数一, list_drawItem, 传址
list_drawItem 声明如下

.版本 2

.数据类型 tree_drewItem, 公开, 列表树元素,项自绘结构
    .成员 hdc, 整数型, , , HDC;设备上下文DC
    .成员 id, 整数型, , , int;项ID
    .成员 imageId, 整数型, , , int;图标ID
    .成员 state, 整数型, , , int;状态
    .成员 bExpand, 逻辑型, , , bool;是否展开结点
    .成员 pText, 字节集, , , wchar_t *;文本内容
    .成员 rcButton, rect, , , RECT;按钮坐标
    .成员 rcImage, rect, , , RECT;图片坐标
    .成员 rcText, rect, , , RECT;文本坐标

.版本 2

.DLL命令 int2list, 整数型, "kernel32", "RtlMoveMemory", , RtlMoveMemory
    .参数 lpvDest, list_drawItem, , lpvDest
    .参数 源数据, 整数型, , lpvSource
    .参数 尺寸, 整数型, , cbCopy


.版本 2

.子程序 List_DrawItem
.参数 hEle, 整数型
.参数 pFunDrawItem, 整数型
.局部变量 a, list_drawItem

int2list (a, pFunDrawItem, 56)

然后就OK了。剩下的开始画吧。。


  • TA的每日心情
    开心
    2022-1-9 18:18
  • 发表于 2012-4-12 11:21:37 | 显示全部楼层

    1. //自绘函数
    2. void CALLBACK MyList_OnDrawItem(HELE hEle,list_drawItem_ *pDrawItem)
    3. {
    4. //在这里绘制...
    5. }

    6. XList_SetUserDrawItem(hList,MyList_OnDrawItem); //设置自绘函数
    复制代码


    该用户从未签到

     楼主| 发表于 2012-4-12 12:34:08 | 显示全部楼层
    关键是易语言无法传递 list_drawItem_  类型呀、
  • TA的每日心情
    开心
    2022-1-9 18:18
  • 发表于 2012-4-12 12:36:18 | 显示全部楼层
    list_drawItem_  类型你定义一个.
    list_drawItem_ *pDrawItem, 你接收他的地址,转换;

    你看看他们的易语言例子,是怎么转换的!

    该用户从未签到

     楼主| 发表于 2012-4-12 14:55:19 | 显示全部楼层
    我找了几个,都没有发现有人使用转换的,我尝试着自己转换,但是遇到了问题。RtlMoveMemory (drawItem, pDrawItem, 取结构尺寸 (drawItem)) 得到的结果,总感觉不正常,所以我就跑到论坛里面来问下了。

    该用户从未签到

    发表于 2013-3-16 11:57:15 | 显示全部楼层
    锦衣夜行 发表于 2012-4-12 14:55
    我找了几个,都没有发现有人使用转换的,我尝试着自己转换,但是遇到了问题。RtlMoveMemory (drawItem, pDr ...

    不版本的DLL, 其中的某些结构有改动,
    其中, 通过阅读源码可知 1.51版本的结构如下:

    ///列表视图元素,项自绘结构
    struct listView_drawItem_        //绘制项
    {
            HDRAW     hDraw;   ///<图形绘制句柄
            int       groupIndex; //组索引
            int       itemIndex;  //项索引
            int       imageID; ///<图片ID
            wchar_t   *pText;  ///<文本
            int       state;   ///<状态,是否选择
           
            HIMAGE hImage_stay;    //项停留图片
            HIMAGE hImage_select;  //项选择图标

            RECT  rcIcon; ///<图标坐标
            RECT  rcIconDraw; ///<图标实际绘制区域
            RECT  rcText; ///<文字坐标
            RECT  rect;   ///<整个区域,包含边框

            int userData;  ///<用户数据
    };

    ///列表视图元素,组自绘结构
    struct listView_drawGroup_ //绘制组
    {
            HDRAW hDraw;        ///<图形绘制句柄
            BOOL  bExpand;      ///<是否展开

            wchar_t  *pText;    ///<文本
            RECT     rcText;    ///<文本坐标
            RECT     rcButton;  ///<展开按钮坐标
            RECT     rect;      ///<组区域坐标

            int userData;       ///<用户数据
    };

    很多人无法转换这个指针结构,可能就是因为版本不同,而结构也变了
    您需要登录后才可以回帖 登录 | 加入我们

    本版积分规则

    QQ|Archiver|手机版|小黑屋|炫彩界面库 ( 鄂ICP备2023014763号-1 )

    GMT+8, 2024-9-20 00:29 , Processed in 0.070381 second(s), 18 queries .

    Powered by Discuz! X3.4

    Copyright © 2001-2021, Tencent Cloud.

    快速回复 返回顶部 返回列表