硬汉嵌入式论坛

 找回密码
 立即注册
12
返回列表 发新帖
楼主: chenbingjy
收起左侧

[emWin] emwin如何修改编辑控件的颜色

  [复制链接]

6

主题

61

回帖

194

积分

初级会员

积分
194
 楼主| 发表于 2018-9-7 12:33:46 | 显示全部楼层
guoxiang 发表于 2018-9-7 11:47
看了?看标题而已吧~控件的FRAMEWIN: Frame window widget 就包含这个关闭按钮~

谢谢!关闭按钮显示出来了,可是点击关闭按钮窗口关不掉。
还需要另外的代码吗?
回复

使用道具 举报

6

主题

61

回帖

194

积分

初级会员

积分
194
 楼主| 发表于 2018-9-7 12:34:28 | 显示全部楼层
guoxiang 发表于 2018-9-7 11:47
看了?看标题而已吧~控件的FRAMEWIN: Frame window widget 就包含这个关闭按钮~

谢谢!关闭按钮显示出来了,可是点击关闭按钮窗口关不掉。
还需要另外的代码吗?
回复

使用道具 举报

29

主题

231

回帖

318

积分

高级会员

积分
318
发表于 2018-9-7 13:06:15 | 显示全部楼层
看100遍资料一定能自己找到!!!!!!!!!别老伸手问低级的问题!!!
回复

使用道具 举报

6

主题

61

回帖

194

积分

初级会员

积分
194
 楼主| 发表于 2018-9-7 13:49:42 | 显示全部楼层
我这样搞,        case WM_NOTIFICATION_LOST_FOCUS:
                                        if(Id1==0x176)
                                        {
                                                //FRAMEWIN_Delete(hDlg);
                                                FRAMEWIN_Minimize(hDlg);
                                        }
                                        break;
发现窗口客户区没了,可是上面那个标题栏还在。
不是我不愿意看,是太多了。看上100遍,那得看到猴年马月。
大神,还是指点一下,提示一下也行啊
回复

使用道具 举报

6

主题

61

回帖

194

积分

初级会员

积分
194
 楼主| 发表于 2018-9-7 14:02:16 | 显示全部楼层
界面-查询.jpg
现在点击查询按钮,弹出小窗体,点击关闭按钮,小窗体消失。
我都搞好了。就是不知道下面那一部分怎么完成。
就是下面那一排像Excel表格的那一堆东西怎么显示?谢谢!
回复

使用道具 举报

6

主题

61

回帖

194

积分

初级会员

积分
194
 楼主| 发表于 2018-9-7 16:03:35 | 显示全部楼层
//回调函数
static void _cbCallback2(WM_MESSAGE * pMsg)
{        
        
//        int i;
        
        
        hDlg = pMsg->hWin;
        switch (pMsg->MsgId)
        {
                case WM_INIT_DIALOG: //初始化属性
                        
                        SubTextInit();
                        
                break;
                case WM_PAINT:
                        
               
                break;
                case WM_NOTIFY_PARENT:
                        Id2 = WM_GetId(pMsg->hWinSrc); //控件ID
                        NCode2 = pMsg->Data.v; // 功能码
                        switch (NCode2)
                        {
                                case WM_NOTIFICATION_RELEASED: //只有当释放时有效
                                       
                                       
                                break;
                                case WM_NOTIFICATION_CLICKED:
                                       
                                break;
                                
                                case WM_NOTIFICATION_SEL_CHANGED:
                                       
                                                                                
                                       
                                break;
                                case WM_NOTIFICATION_LOST_FOCUS:
                                        if((Id2==0x000)||(Id2==0x111))
                                        {
                                                FRAMEWIN_Delete(hWin2);
                                                
                                                //FRAMEWIN_Minimize(hDlg);
                                        }
                                        break;
                        }
                break;
                default:
                        WM_DefaultProc(pMsg);
        }
}
以上是我关闭框架窗口的回调函数,可是我发现会进入死循环,出不了回调函数。
大神看看,哪里有问题?谢谢!
回复

使用道具 举报

6

主题

61

回帖

194

积分

初级会员

积分
194
 楼主| 发表于 2018-9-7 17:28:49 | 显示全部楼层
界面-查询.jpg
我显示的界面跟上面这个图很像。点击查询按钮,弹出一个框架窗口。
右上角有一个关闭按钮,显示成一个叉号。

我点击它,试图关闭框架窗口,发现有时候会死机。
//回调函数
static void _cbCallback1(WM_MESSAGE * pMsg)
{

// int i;


hItem1 = pMsg->hWin;
switch (pMsg->MsgId)
{
case WM_INIT_DIALOG: //初始化属性



break;
case WM_PAINT:


break;
case WM_NOTIFY_PARENT:
Id1 = WM_GetId(pMsg->hWinSrc); //控件ID
NCode1 = pMsg->Data.v; // 功能码
switch (NCode1)
{
case WM_NOTIFICATION_RELEASED: //只有当释放时有效


break;
case WM_NOTIFICATION_CLICKED:

break;

case WM_NOTIFICATION_SEL_CHANGED:



break;
case WM_NOTIFICATION_LOST_FOCUS:
if(Id1==0x176)
{
FRAMEWIN_Delete(hWin1);


}
break;
}
break;
default:
WM_DefaultProc(pMsg);
}
}
回调函数如上。
我调试时,发现点击关闭按钮,会进到​
Id1 = WM_GetId(pMsg->hWinSrc); //控件ID
NCode1 = pMsg->Data.v; // 功能码
下面的代码处。​
再然后,进到下面的代码,
case WM_NOTIFICATION_LOST_FOCUS:
if(Id1==0x176)
{
FRAMEWIN_Delete(hWin1);


}
但是有时候会死机。就是程序在回调函数里死循环。
还有,我不太清楚如何正确使框架窗口关闭,以上
程序是我摸索出来的,不一定正确。
哪位大神教教我该如何处理?或者给一个例程也行啊。谢谢!​



回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106912
QQ
发表于 2018-9-8 02:11:09 | 显示全部楼层
chenbingjy 发表于 2018-9-7 17:28
我显示的界面跟上面这个图很像。点击查询按钮,弹出一个框架窗口。右上角有一个关闭按钮,显示成一个叉号 ...

现在还有那个楼的问题未解决,我回复下。
回复

使用道具 举报

6

主题

61

回帖

194

积分

初级会员

积分
194
 楼主| 发表于 2018-9-8 08:21:17 | 显示全部楼层
本帖最后由 chenbingjy 于 2018-9-8 08:25 编辑

34、45、46、47楼。
回复

使用道具 举报

6

主题

61

回帖

194

积分

初级会员

积分
194
 楼主| 发表于 2018-9-9 11:13:58 | 显示全部楼层
EDIT_SetText(hEdit25,"2017-11-07");
我在一个编辑控件上写2017-11-07,可是只显示2017-11-.
请问高手,怎么回事?如何解决?谢谢!
回复

使用道具 举报

6

主题

61

回帖

194

积分

初级会员

积分
194
 楼主| 发表于 2018-9-9 13:42:37 | 显示全部楼层
chenbingjy 发表于 2018-9-9 11:13
EDIT_SetText(hEdit25,"2017-11-07");
我在一个编辑控件上写2017-11-07,可是只显示2017-11-.
请问高手, ...

搞好了,用多行文本框就没问题了
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106912
QQ
发表于 2018-9-10 00:56:03 | 显示全部楼层
chenbingjy 发表于 2018-9-6 17:46
我现在用STM32F767驱动7寸屏。
屏幕上显示了一个下拉列表框,点击列表框中的元素,发现反应很迟钝,按好多 ...

这个的话,你移植的程序模板问题居多。
回复

使用道具 举报

6

主题

61

回帖

194

积分

初级会员

积分
194
 楼主| 发表于 2018-9-10 15:15:17 | 显示全部楼层
我用STM32F767驱动7寸触摸屏。
主程序太大了,我想整理一下,就把按钮初始化部分单写到一个C文件里。
又写了个头文件,把按钮初始化程序进行声明。
然后再在主程序里包含头文件,可是程序下进去,按钮上的字体显示不出来了。
请问高手,如何解决?谢谢!
回复

使用道具 举报

6

主题

61

回帖

194

积分

初级会员

积分
194
 楼主| 发表于 2018-9-10 16:27:48 | 显示全部楼层
chenbingjy 发表于 2018-9-10 15:15
我用STM32F767驱动7寸触摸屏。
主程序太大了,我想整理一下,就把按钮初始化部分单写到一个C文件里。
又 ...

搞好了,我把那个C文件转存成UTF-8格式就好了。
回复

使用道具 举报

6

主题

61

回帖

194

积分

初级会员

积分
194
 楼主| 发表于 2018-9-11 09:42:47 | 显示全部楼层
本帖最后由 chenbingjy 于 2018-9-11 09:53 编辑

我建立了一个主窗体,点击主窗体的查询按钮,弹出一个子窗体。
这个子窗体里有编辑框控件,用手点击编辑框,我想在编辑框里显示光标,
同时弹出一个小键盘,通过点击小键盘上的数字按钮,在编辑框里输入
数字,同时光标后移。现在问题是光标偶尔出现以下,大部分不出现。
请问高手,如何解决?谢谢!我的部分程序:
EDIT_EnableBlink(hEdit15,1000,1);
                                                EDIT_SetCursorAtChar(hEdit15,0);                //显示光标

回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106912
QQ
发表于 2018-9-11 12:54:03 | 显示全部楼层
chenbingjy 发表于 2018-9-11 09:42
我建立了一个主窗体,点击主窗体的查询按钮,弹出一个子窗体。
这个子窗体里有编辑框控件,用手点击编辑框 ...

把你的工程的GUI功能先注释掉,仅创建一个简单的界面测试EDIT闪烁是否正常。
回复

使用道具 举报

6

主题

61

回帖

194

积分

初级会员

积分
194
 楼主| 发表于 2018-9-12 09:39:55 | 显示全部楼层
eric2013 发表于 2018-9-11 12:54
把你的工程的GUI功能先注释掉,仅创建一个简单的界面测试EDIT闪烁是否正常。

EDIT_Handle hEdit;

void MainTask(void) {

  GUI_Init();
        hEdit=EDIT_CreateEx(50,110,220,25,WM_HBKWIN,WM_CF_SHOW,0,GUI_ID_EDIT0,40);
        EDIT_SetText(hEdit,"Press when done...");
        EDIT_SetFont(hEdit,&GUI_Font8x16);
        EDIT_SetTextColor(hEdit,0,GUI_RED);
        EDIT_EnableBlink(hEdit,300,1);
  while(1)
  {
          GUI_Delay(100);
  }
}
这段代码在模拟器上光标可以闪烁,鼠标点击EDIT控件,光标就出来了。
可是在板子上,TFT上光标不闪,而且颜色也不是红色,而是黑色。
请指教,谢谢!
回复

使用道具 举报

6

主题

61

回帖

194

积分

初级会员

积分
194
 楼主| 发表于 2018-9-12 10:56:24 | 显示全部楼层
eric2013 发表于 2018-9-10 00:56
这个的话,你移植的程序模板问题居多。

我也怀疑是这个问题。我想修改一下,请问关于触摸的部分修改哪儿,可以是触摸变得准确而流畅呢
回复

使用道具 举报

6

主题

61

回帖

194

积分

初级会员

积分
194
 楼主| 发表于 2018-9-12 13:44:09 | 显示全部楼层
在程序运行过程中能否移动DROPDOWN的位置呢?谢谢!
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106912
QQ
发表于 2018-9-13 03:46:28 | 显示全部楼层
chenbingjy 发表于 2018-9-12 10:56
我也怀疑是这个问题。我想修改一下,请问关于触摸的部分修改哪儿,可以是触摸变得准确而流畅呢

这个不是触摸的问题,是读像素有问题。
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106912
QQ
发表于 2018-9-13 03:46:48 | 显示全部楼层
chenbingjy 发表于 2018-9-12 13:44
在程序运行过程中能否移动DROPDOWN的位置呢?谢谢!

没问题。
回复

使用道具 举报

6

主题

61

回帖

194

积分

初级会员

积分
194
 楼主| 发表于 2018-9-13 08:37:14 | 显示全部楼层
eric2013 发表于 2018-9-13 03:46
这个不是触摸的问题,是读像素有问题。

那应该怎么办呢?读像素是什么问题,不太明白
回复

使用道具 举报

6

主题

61

回帖

194

积分

初级会员

积分
194
 楼主| 发表于 2018-9-13 08:37:37 | 显示全部楼层

请问怎么移动呢?谢谢!
回复

使用道具 举报

6

主题

61

回帖

194

积分

初级会员

积分
194
 楼主| 发表于 2018-9-13 10:19:43 | 显示全部楼层
我描述一下我的问题,有一个主窗体,是WINDOW,点击主窗体的查询按钮,弹出子窗体,
子窗体上有个编辑框控件,我想往编辑框空间里输入数字,因此又做了个小键盘。
在编辑框里点击一下,弹出小键盘。子窗体和小键盘都是FRAME。
现在问题是,弹出小键盘后,点击上面的关闭按钮小键盘并不关闭,而是隐藏到子窗体的后面。
然后点击子窗体上的关闭按钮,就把子窗体关掉。子窗体关了,就显现出隐藏在后面的小键盘。
再次点击关闭按钮,小键盘才关闭。
现在我想,当弹出小键盘时点击关闭按钮就可以关掉小键盘,而不是让小键盘隐藏到子窗体后面。
请问应该怎么做呢?谢谢!
现在我的做法是关闭小键盘 GUI_EndDialog(hWin3,2);       
关闭子窗体GUI_EndDialog(hWin1,0);       
回复

使用道具 举报

12

主题

104

回帖

140

积分

初级会员

积分
140
发表于 2018-9-13 11:28:43 | 显示全部楼层
这位老哥太坑了吧,把硬汉拖住了。。这些问题明明可以自己研究。。你还不花时间研究,,别人的时间都被你利用来回答问题。。。
回复

使用道具 举报

6

主题

61

回帖

194

积分

初级会员

积分
194
 楼主| 发表于 2018-9-13 12:45:07 | 显示全部楼层
cz123123 发表于 2018-9-13 11:28
这位老哥太坑了吧,把硬汉拖住了。。这些问题明明可以自己研究。。你还不花时间研究,,别人的时间都被你利 ...

你凭什么说我不花时间研究了
回复

使用道具 举报

12

主题

104

回帖

140

积分

初级会员

积分
140
发表于 2018-9-13 15:04:32 | 显示全部楼层
chenbingjy 发表于 2018-9-13 12:45
你凭什么说我不花时间研究了

你应该把文档多看几次。查查问题。而不是一直问到底。没完没了啊。。不是凭论你不花时间研究,而是你就是走马观花的看。。
回复

使用道具 举报

29

主题

231

回帖

318

积分

高级会员

积分
318
发表于 2018-9-13 17:54:31 | 显示全部楼层
如果我带的人,问了我三个基础的问题,那我就让他不要做这个项目了。该干嘛去干嘛~
回复

使用道具 举报

6

主题

61

回帖

194

积分

初级会员

积分
194
 楼主| 发表于 2018-9-13 17:58:13 | 显示全部楼层
guoxiang 发表于 2018-9-13 17:54
如果我带的人,问了我三个基础的问题,那我就让他不要做这个项目了。该干嘛去干嘛~

我问的也不见得都是基础的问题吧
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106912
QQ
发表于 2018-9-14 01:33:40 | 显示全部楼层
chenbingjy 发表于 2018-9-13 08:37
请问怎么移动呢?谢谢!

函数WM_MoveWindow或者WM_MoveTo
回复

使用道具 举报

6

主题

61

回帖

194

积分

初级会员

积分
194
 楼主| 发表于 2018-9-14 08:22:08 | 显示全部楼层
本帖最后由 chenbingjy 于 2018-9-14 16:27 编辑
eric2013 发表于 2018-9-14 01:33
函数WM_MoveWindow或者WM_MoveTo
好了。
谢谢!!!!!!!!!!!!!!!!!你真是个大好人!!!!!!!!!
回复

使用道具 举报

6

主题

61

回帖

194

积分

初级会员

积分
194
 楼主| 发表于 2018-9-14 15:23:28 | 显示全部楼层
现在有个问题,触摸不准。比如有两个按钮,A按钮和B按钮。
正常情况下,按下A按钮,弹出A窗体;按下B按钮,弹出B窗体。
现在我按下A按钮,弹出B窗体。
我调试了一下,发现按下A按钮,会检测到B按钮的ID号。
请问大神,可能是哪里的问题呢?谢谢!
回复

使用道具 举报

6

主题

61

回帖

194

积分

初级会员

积分
194
 楼主| 发表于 2018-9-14 16:34:09 | 显示全部楼层
感觉屏幕的上方触摸不准,下方的触摸正常。
回复

使用道具 举报

6

主题

61

回帖

194

积分

初级会员

积分
194
 楼主| 发表于 2018-9-18 18:02:53 | 显示全部楼层
GRAPH控件可以在运行过程中改变高度吗?
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106912
QQ
发表于 2018-9-19 02:58:26 | 显示全部楼层
chenbingjy 发表于 2018-9-18 18:02
GRAPH控件可以在运行过程中改变高度吗?

可以设置。有个resize的API
回复

使用道具 举报

6

主题

61

回帖

194

积分

初级会员

积分
194
 楼主| 发表于 2018-9-19 08:50:09 | 显示全部楼层
eric2013 发表于 2018-9-19 02:58
可以设置。有个resize的API

WM_ResizeWindow(hGraph1,-200,-200);
好了,谢谢!还是这个论坛好
回复

使用道具 举报

6

主题

61

回帖

194

积分

初级会员

积分
194
 楼主| 发表于 2018-9-19 15:05:10 | 显示全部楼层
现在遇到一个问题,我想删掉GRAPH控件里的曲线,同时删掉X轴的刻度。
可是我这么做不行:
GRAPH_DATA_YT_Delete(_ahData[0]);
                        GRAPH_DATA_YT_Delete(_ahData[1]);
                        GRAPH_DATA_YT_Delete(_ahData[2]);
                        GRAPH_SCALE_Delete(_hScaleH);

用这个函数也不行:
GRAPH_DATA_YT_Clear()
void MajorWindowGraphScale(void)
{
        int i;
       
        //得到相应的句柄
        hItem=WM_GetDialogItem(hWin,GUI_ID_GRAPH0);
        //创建三个数据对象
        for(i=0;i<GUI_COUNTOF(_aColor);i++)
        {
                _aValue[i]=rand()%180;
                //创建成功,返回数据句柄
                //显示的曲线颜色,可以显示的最大数据个数,数据指针,要添加的数据个数
                _ahData[i]=GRAPH_DATA_YT_Create(_aColor[i],800,0,0);
                //为绘图控件添加数据对象
                GRAPH_AttachData(hItem,_ahData[i]);
                /* 关键是下面这两个函数 ,实现波形从左往右显示  */
                GRAPH_DATA_YT_SetAlign(_ahData[i], GRAPH_ALIGN_LEFT);
                //GRAPH_DATA_YT_MirrorX (_ahData[i], 1);
        }
        //设置绘图属性
        //设置垂直栅格的高度
        GRAPH_SetGridDistY(hItem,25);
        //栅格是否可见
        GRAPH_SetGridVis(hItem,1);
        //固定X轴的栅格
        GRAPH_SetGridFixedX(hItem,1);
        //GRAPH_SetUserDraw(hItem,_UserDraw);
        //创建和增加垂直范围尺度标签
        //离左边的尺度位置
        _hScaleV=GRAPH_SCALE_Create(0,GUI_TA_LEFT,GRAPH_SCALE_CF_VERTICAL,35);
        //设置标签字体颜色
        GRAPH_SCALE_SetTextColor(_hScaleV,GUI_RED);
        //将标签添加到垂直方向
        GRAPH_AttachScale(hItem,_hScaleV);
        //创建和增加水平范围尺度标签
        _hScaleH=GRAPH_SCALE_Create(392,GUI_TA_HCENTER,GRAPH_SCALE_CF_HORIZONTAL,50);
        //设置字体颜色
        GRAPH_SCALE_SetTextColor(_hScaleH,GUI_DARKGREEN);
        //添加到水平方向
        GRAPH_AttachScale(hItem,_hScaleH);
       
       
}

这是我的初始化代码。
大神看看,哪里有问题?谢谢!
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106912
QQ
发表于 2018-9-20 01:42:08 | 显示全部楼层
QQ截图20180920014149.png
回复

使用道具 举报

6

主题

61

回帖

194

积分

初级会员

积分
194
 楼主| 发表于 2018-9-20 09:03:56 | 显示全部楼层

谢谢!我的意思,删除曲线而不删除网格和刻度。
删除曲线以后,重新生成新的曲线。
而用WM_DeleteWindow(hGraph);则把控件直接删除了,不是我要的效果。
这段话我也看到了,感觉不行。
是不是没有更好的办法了?
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106912
QQ
发表于 2018-9-21 00:33:09 | 显示全部楼层
chenbingjy 发表于 2018-9-20 09:03
谢谢!我的意思,删除曲线而不删除网格和刻度。
删除曲线以后,重新生成新的曲线。
而用WM_DeleteWindo ...

显示一个不在显示区数值范围的曲线,看看是否可行。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-5-9 16:29 , Processed in 0.482168 second(s), 26 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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