TIF 发表于 2024-1-9 14:20:57

STemwin Listview不能显示汉字问题


图中效果,窗口标题可以正常显示,但是设置列表字体为汉字却无法显示,请问可能什么原因造成的,代码如下





//
    // Initialization of 'Window'
    //
    hItem = pMsg->hWin;
    WINDOW_SetBkColor(hItem, GUI_MAKE_COLOR(0x00FFFFFF));
       
                /* 初始化Framewin控件 */
    FRAMEWIN_SetTitleHeight(hItem, 25);
    FRAMEWIN_SetText(hItem, "系统参数");
                FRAMEWIN_SetTextAlign(hItem,GUI_TA_HCENTER | GUI_TA_VCENTER);
    FRAMEWIN_SetFont(hItem, &GUI_FontHZ24x24);
                FRAMEWIN_SetBarColor(hItem,1,GUI_WHITE);
       
    /* 初始化通道Listview控件 */
    hItem = WM_GetDialogItem(pMsg->hWin, ID_LISTVIEW_0);
//                FRAMEWIN_SetDefaultFont(&GUI_FontHZ24x24);
    LISTVIEW_SetHeaderHeight(hItem, 30);
    LISTVIEW_AddColumn(hItem, 70, "channal", GUI_TA_HCENTER | GUI_TA_VCENTER);
    LISTVIEW_AddColumn(hItem, 55, "1", GUI_TA_HCENTER | GUI_TA_VCENTER);
    LISTVIEW_AddColumn(hItem, 55, "2", GUI_TA_HCENTER | GUI_TA_VCENTER);
    LISTVIEW_AddColumn(hItem, 55, "3", GUI_TA_HCENTER | GUI_TA_VCENTER);
                LISTVIEW_AddColumn(hItem, 55, "4", GUI_TA_HCENTER | GUI_TA_VCENTER);
    LISTVIEW_AddColumn(hItem, 55, "5", GUI_TA_HCENTER | GUI_TA_VCENTER);
                LISTVIEW_AddColumn(hItem, 55, "6", GUI_TA_HCENTER | GUI_TA_VCENTER);
    LISTVIEW_AddColumn(hItem, 55, "7", GUI_TA_HCENTER | GUI_TA_VCENTER);
                LISTVIEW_SetRowHeight(hItem, 30);
                LISTVIEW_AddRow(hItem, NULL);
                LISTVIEW_AddRow(hItem, NULL);
                LISTVIEW_AddRow(hItem, NULL);
                LISTVIEW_AddRow(hItem, NULL);
                LISTVIEW_AddRow(hItem, NULL);
               
                LISTVIEW_SetGridVis(hItem, 1);
//    LISTVIEW_SetFont(hItem, &GUI_FontHZ24x24);    //GUI_FONT_16_ASCII
//    LISTVIEW_SetAutoScrollH(hItem, 1);
//    LISTVIEW_SetAutoScrollV(hItem, 1);
               
                for (i = 0; i < 5; i++)
                {
                        LISTVIEW_SetItemText(hItem, 0, i, (const char *) _Table);
    }
//    for (i = 0; i < GUI_COUNTOF(_Table); i++) {
//      LISTVIEW_AddRow(hItem, _Table);/* 添加数据 */
//    }
               
                for (i = 0; i < 5; i++)
                {
                        LISTVIEW_SetItemText(hItem, 0, i, (const char *) _Table);
    }
               

                /* 初始化系统Listview控件 */
   
                hItem = LISTVIEW_GetHeader(WM_GetDialogItem(pMsg->hWin, GUI_ID_LISTVIEW1));
    HEADER_SetFont(hItem, &GUI_FontHZ24x24);
               
                hItem = WM_GetDialogItem(pMsg->hWin, ID_LISTVIEW_1);
    LISTVIEW_SetHeaderHeight(hItem, 30);
    LISTVIEW_AddColumn(hItem, 50, "频段", GUI_TA_HCENTER | GUI_TA_VCENTER);
    LISTVIEW_AddColumn(hItem, 80, "声光报警", GUI_TA_HCENTER | GUI_TA_VCENTER);
    LISTVIEW_AddColumn(hItem, 80, "采集仪编号", GUI_TA_HCENTER | GUI_TA_VCENTER);
    LISTVIEW_AddColumn(hItem, 80, "蓝牙名称", GUI_TA_HCENTER | GUI_TA_VCENTER);
                LISTVIEW_AddColumn(hItem, 80, "软件版本", GUI_TA_HCENTER | GUI_TA_VCENTER);
                LISTVIEW_SetRowHeight(hItem, 30);
                LISTVIEW_AddRow(hItem, NULL);
               
                LISTVIEW_SetItemText(hItem, 0, 0, "433");
               
//                LISTVIEW_SetFont(hItem, &GUI_FontHZ24x24);
               
                LISTVIEW_SetGridVis(hItem, 1);

eric2013 发表于 2024-1-9 15:19:02

获取listview header句柄,然后使用header的api单独设置字体。

TIF 发表于 2024-1-9 15:21:23

eric2013 发表于 2024-1-9 15:19
获取listview header句柄,然后使用header的api单独设置字体。

        /* 初始化系统Listview控件 */
   
                hItem = LISTVIEW_GetHeader(WM_GetDialogItem(pMsg->hWin, GUI_ID_LISTVIEW1));
    HEADER_SetFont(hItem, &GUI_FontHZ24x24);
               
                hItem = WM_GetDialogItem(pMsg->hWin, ID_LISTVIEW_1);
    LISTVIEW_SetHeaderHeight(hItem, 30);
    LISTVIEW_AddColumn(hItem, 50, "频段", GUI_TA_HCENTER | GUI_TA_VCENTER);
    LISTVIEW_AddColumn(hItem, 80, "声光报警", GUI_TA_HCENTER | GUI_TA_VCENTER);
    LISTVIEW_AddColumn(hItem, 80, "采集仪编号", GUI_TA_HCENTER | GUI_TA_VCENTER);
    LISTVIEW_AddColumn(hItem, 80, "蓝牙名称", GUI_TA_HCENTER | GUI_TA_VCENTER);
                LISTVIEW_AddColumn(hItem, 80, "软件版本", GUI_TA_HCENTER | GUI_TA_VCENTER);
                LISTVIEW_SetRowHeight(hItem, 30);
                LISTVIEW_AddRow(hItem, NULL);


试过了,不行,下载了你们的历程看了一下

TIF 发表于 2024-1-9 15:26:06

eric2013 发表于 2024-1-9 15:19
获取listview header句柄,然后使用header的api单独设置字体。

可以了,可以了,是我的控件ID写错了,除了header,其他不可以设置汉字显示么?

eric2013 发表于 2024-1-9 15:35:01

TIF 发表于 2024-1-9 15:26
可以了,可以了,是我的控件ID写错了,除了header,其他不可以设置汉字显示么?
可以的,listview本身的字体是调用listview的字体API

TIF 发表于 2024-1-9 17:17:35

eric2013 发表于 2024-1-9 15:35
可以的,listview本身的字体是调用listview的字体API

为什么其他位置还是显示不了汉字,是设置字体的函数不对么

eric2013 发表于 2024-1-10 08:44:39

TIF 发表于 2024-1-9 17:17
为什么其他位置还是显示不了汉字,是设置字体的函数不对么
应该是设置不对,这个是我的

https://img.anfulai.cn/dz/attachment/forum/pw/Fid_12/12_58_feed38cf972ef12.png
页: [1]
查看完整版本: STemwin Listview不能显示汉字问题