硬汉嵌入式论坛

 找回密码
 立即注册
查看: 4579|回复: 9
收起左侧

[μCGUI] GUI_Clear();清除不完全。

[复制链接]

19

主题

39

回帖

19

积分

初级会员

学习

积分
19
发表于 2016-3-24 15:52:13 | 显示全部楼层 |阅读模式
当我调用一个对话框后,执行
GUI_EndDialog(hWin, 0);
GUI_Clear();
后,只能清除掉一部分对话框内容,在屏幕下部有四分之一的对话框内容仍然残留着,是什么原因呢?

谢谢大家。
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107369
QQ
发表于 2016-3-24 16:08:33 | 显示全部楼层
建议使用窗口回调函数中的WM_PAINT消息去刷。
回复

使用道具 举报

19

主题

39

回帖

19

积分

初级会员

学习

积分
19
 楼主| 发表于 2016-3-24 16:34:22 | 显示全部楼层
case GUI_ID_CANCEL:
                    if(NCode==WM_NOTIFICATION_RELEASED)
                        GUI_EndDialog(hWin, 0);
                    GUI_Clear();
               break;

        我是通过button按键实现退出对话框的,WM_PAINT怎么用呢
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107369
QQ
发表于 2016-3-25 10:28:12 | 显示全部楼层

回 低温冷却 的帖子

低温冷却:              case GUI_ID_CANCEL:
                    if(NCode==WM_NOTIFICATION_RELEASE .. (2016-03-24 16:34) 
你退出这个对话框后,是不是就是桌面窗口了。
回复

使用道具 举报

19

主题

39

回帖

19

积分

初级会员

学习

积分
19
 楼主| 发表于 2016-3-29 15:02:01 | 显示全部楼层
是的,我是裸机跑的
回复

使用道具 举报

19

主题

39

回帖

19

积分

初级会员

学习

积分
19
 楼主| 发表于 2016-3-29 15:39:44 | 显示全部楼层
F71B405F20118CE7112087C7D69AE3CE.png E73AAB53E33F065C572DAE883D995E4F.png B14A82C185AF22711E7CD4E88B712DAB.png


第一个图就是主界面,直接显示,点击左上角的第一个button后可以调用对话框,就是第二幅图,点击对话框的button后可以返回主界面,但是屏幕下部三分之一面积还是有残留,如图3,是什么原因呢?
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107369
QQ
发表于 2016-3-30 02:29:39 | 显示全部楼层
桌面窗口的回调函数没有做重绘,桌面窗口的回调函数也是需要做重绘的,简单点,你可以调用这个函数
WM_SetDesktopColor(),在调用GUI_Init后就调用这个函数,这个函数的参数是桌面窗口的颜色。

调用后,桌面窗口会自动重绘。
回复

使用道具 举报

19

主题

39

回帖

19

积分

初级会员

学习

积分
19
 楼主| 发表于 2016-3-30 11:30:48 | 显示全部楼层
您好,我试验了一下,没有思路。
这里是我main.c函数,
extern void GUI_MainMenu(void);



int main(void)
{
//         
     bsp_Init();        /* 硬件初始化 */
//     

//     
     GUI_Init();
     GUI_Clear();
  WM_SetDesktopColor(GUI_WHITE);


     GUI_CURSOR_Show();



     GUI_MainMenu();
   
   
    while(1)
    {        

    }
}


下面是MainMenu函数
void GUI_MainMenu(void)
{

    WM_MESSAGE * pMsg = NULL;   
   
  WM_SetDesktopColor(GUI_WHITE);
    WM_SetCreateFlags(WM_CF_MEMDEV);  /* Use memory devices on all windows to avoid flicker */
    WM_EnableMemdev(WM_HBKWIN);
    WM_SetCallback(WM_HBKWIN, &_cbffCallback);
   
   
    GUI_SetBkColor(GUI_WHITE);
    GUI_SetFont(&GUI_Font16B_1);
    GUI_Clear();
    InitffDialog(pMsg);        
   
}
在main中调用了函数MainMenu(),完成界面的绘制。我这里清理不完全,是二级窗口的原因还是mainmenu窗口的原因?
回复

使用道具 举报

19

主题

39

回帖

19

积分

初级会员

学习

积分
19
 楼主| 发表于 2016-4-1 08:50:35 | 显示全部楼层
help[s:152]
回复

使用道具 举报

336

主题

2042

回帖

3055

积分

版主

Rank: 7Rank: 7Rank: 7

积分
3055
发表于 2016-4-3 20:11:58 | 显示全部楼层
应该删除GUI_Clear()即可。
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-28 13:28 , Processed in 0.401463 second(s), 28 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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