注册 登录
编程论坛 C语言论坛

一个ui小工具代码,待开发

udefine 发布于 2022-03-10 19:03, 1948 次点击
https://
去年弄的,用来写小工具界面,现在项目里的main中的测试就是用来提示消息的msgbox实例
搁置了好久,一直没时间,原先用gdi+弄的,绘制效率太低,这两天弄成了gdi,有兴趣的试试,多提提意见,能提交代码就更好了
原来弄得文本输入和下拉框都是gdi+的需要时间弄过来,滚动条也出现了bug,需要后面再弄过来,但是滚动是可用的
可以用tinycc编译https://,修改下Makefile中的路径make就行了
没有make的我下面上传个直接放到项目路径下make就行了

现在用如下的方式描述界面:
程序代码:

        //-----------------------------------------------------顶部条
        zvw_box(ctx);{
            zvw_set(ctx, "background-color", 0xFF0075DA);
            zvw_set(ctx, "hu", PIXEL_ZVWUNT);
            zvw_set(ctx, "w", 1000);
            zvw_set(ctx, "h", 32);

            zvw_box(ctx);{
                zvw_set(ctx, "position", FILL_ZVWPOS);
                zvw_set(ctx, "background-color", 1000);
                zvw_set(ctx, "h", 0x00D2DEFA);
               
                btit = zvw_label(ctx);{
                    zvw_set(ctx, "w", 900);
                    zvw_set(ctx, "h", 1000);
                    zvw_set(ctx, "margin-left", 20);
                    zvw_set(ctx, "label-alignh", START_ZVWTXTALIGN);
                    zvw_set(ctx, "label-color", 0xffFFFFFF);
                    
                }zvw_end(ctx);
   
            }zvw_end(ctx);
            
        }zvw_end(ctx);

只有本站会员才能查看附件,请 登录

只有本站会员才能查看附件,请 登录

只有本站会员才能查看附件,请 登录





7 回复
#2
udefine2022-03-11 13:08
仓库转移到了gitee上,https://
github访问太困难了,push老是网络超时
#3
udefine2022-03-11 13:40
添加了switch和sbar(scrollbar)组件,switch相当于一个最简单的例子了,实现几个on*方法就行了
input组件下午再改改,字符串测量有问题
只有本站会员才能查看附件,请 登录





[此贴子已经被作者于2022-3-11 13:41编辑过]

#4
udefine2022-03-11 17:43
已添加了input,输入没问题,但是backspace和全选等有问题
下面的代码就是从长度为len的str字符串中删除index位置的wchar_t字符,没发现毛病啊,什么情况?
程序代码:

int zvw_input_delwchar(wchar_t* str, int len, int index)
{
    if(!len)return 0;
    if(index<0)return 0;
   
    int i=index;
    while(i <= len){
        if(i == len-1){
            *(str+i) ='\0';
        }else{
            *(str+i) = *(str+i+1);
        }
        i++;
    }
    return 1;
}

只有本站会员才能查看附件,请 登录


[此贴子已经被作者于2022-3-11 17:52编辑过]

#5
udefine2022-03-11 18:16
文字输入已ok,排除非字符事件就行了
#6
udefine2022-03-13 11:34
select 组件也能运行了
程序代码:

            zvw_select(ctx);{
                    zvw_set(ctx, "position", ALIGN_LEFT_ZVWPOS);
                    zvw_set(ctx, "margin-left", 10);
                    
                    int slen = 8;
                    wchar_t** sts = calloc(slen, 10*sizeof(wchar_t));
                    *(sts) = L"清夜无尘";
                    *(sts+1) = L"月色如银";
                    *(sts+2) = L"酒斟时";
                    *(sts+3) = L"须满十分";
                    *(sts+4) = L"梦一道士";
                    *(sts+5) = L"羽衣蹁跹";
                    *(sts+6) = L"过临皋之下";
                    *(sts+7) = L"揖予而言";
                    zvw_set(ctx, "select-texts", (size_t)sts);
                    
                    size_t* vs = calloc(slen, sizeof(size_t));
                    *(vs) = 11;
                    *(vs+1) = 22;
                    *(vs+2) = 33;
                    *(vs+3) = 44;
                    *(vs+4) = 55;
                    *(vs+5) = 66;
                    *(vs+6) = 77;
                    *(vs+7) = 88;
                    zvw_set(ctx, "select-values", (size_t)vs);
                    
                    zvw_set(ctx, "select-slen", slen);
                    
            }zvw_end(ctx);

只有本站会员才能查看附件,请 登录

只有本站会员才能查看附件,请 登录


[此贴子已经被作者于2022-3-13 11:36编辑过]

#7
udefine2022-03-13 12:08
在xp虚拟机中测试正常,虽然gdi api用着让人难受,但还是兼容最好的
只有本站会员才能查看附件,请 登录
#8
udefine2022-03-13 17:08
给select组件添加了滚动条,添加最大化最小化按钮,准备测试resize后的滚动条bug,但发现换到gdi渲染后竟然没bug了,不明所以,看以后还会不会出现了。
只有本站会员才能查看附件,请 登录

只有本站会员才能查看附件,请 登录


[此贴子已经被作者于2022-3-13 17:24编辑过]

1