硬汉嵌入式论坛

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

[μCGUI] 控件移动后要注意背景重绘的问题

[复制链接]

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106934
QQ
发表于 2013-6-24 13:32:52 | 显示全部楼层 |阅读模式
问题如下:
我单独创建了一个按钮
hButton_mainmenu[0]=BUTTON_Create(10,10,100,50,GUI_ID_BUTTON0, WM_CF_SHOW);
然后
WM_MoveWindow (hButton_mainmenu[0], 10, 5);
GUI_Exec();//重绘
发现按钮是移动了,但是原来的按钮还是存在的,只是被覆盖了大半部分,请教下是什么原因啊?谢谢如何让原来的按钮消失,只显示现在的按钮?
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106934
QQ
 楼主| 发表于 2013-6-24 13:34:40 | 显示全部楼层
#include <stddef.h>
#include "GUI.h"
#include "DIALOG.h"

#include "WM.h"
#include "BUTTON.h"
#include "CHECKBOX.h"
#include "DROPDOWN.h"
#include "EDIT.h"
#include "FRAMEWIN.h"
#include "LISTBOX.h"
#include "MULTIEDIT.h"
#include "RADIO.h"
#include "SLIDER.h"
#include "TEXT.h"
#include &quotROGBAR.h"
#include "SCROLLBAR.h"
#include "LISTVIEW.h"


/*
*********************************************************************************************************
*    函 数 名: _cbBkWindow
*    功能说明: 桌面窗口的回调函数
*    形    参:
*             WM_MESSAGE * pMsg
*    返 回 值: 无
*********************************************************************************************************
*/
static void _cbBkWindow(WM_MESSAGE * pMsg) {
    int NCode, Id;
    WM_HWIN hWin = pMsg->hWin;
    switch (pMsg->MsgId) {

        case WM_INIT_DIALOG:
                                                         
            break;
        case WM_PAINT:            
             GUI_SetBkColor(GUI_GREEN);
             GUI_Clear();        
        break;
            
        case WM_NOTIFY_PARENT:
        Id = WM_GetId(pMsg->hWinSrc);
        NCode = pMsg->Data.v;        
        switch (Id)
        {
            case GUI_ID_OK:
                if(NCode==WM_NOTIFICATION_RELEASED)
                    GUI_EndDialog(hWin, 0);
                break;
            case GUI_ID_CANCEL:
                if(NCode==WM_NOTIFICATION_RELEASED)
                    GUI_EndDialog(hWin, 0);
                break;
            
            case GUI_ID_BUTTON0:
                switch(NCode)
                {
                    case WM_NOTIFICATION_CLICKED:                    
                    break;
                }
            break;                    
        }
        break;
        default:
        WM_DefaultProc(pMsg);
    }
}

/*
*********************************************************************************************************
*    函 数 名: MainTask
*    功能说明: GUI主函数
*    形    参:无
*    返 回 值: 无
*********************************************************************************************************
*/

void MainTask(void)
{
    WM_HWIN  hButton_mainmenu[1];
   
    GUI_Init();
    /* 下面两种方法,选择一个就可以 */
//    WM_SetDesktopColor(GUI_GREEN);           /* 自动更新桌面窗口*/
    WM_SetCallback(WM_HBKWIN, _cbBkWindow);  /* 设置桌面窗口的句柄 */

    hButton_mainmenu[0]=BUTTON_Create(10,10,100,50,GUI_ID_BUTTON0, WM_CF_SHOW);
    WM_MoveWindow (hButton_mainmenu[0], 100,100);
    while(1)
    {
        GUI_Delay(100);
    }  
}

移动前和移动后的效果
1.png

2.png

回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-10 15:34 , Processed in 0.177150 second(s), 28 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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