硬汉嵌入式论坛

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

[μCGUI] WM_SendMessage问题

[复制链接]

15

主题

30

回帖

75

积分

初级会员

努力做,耐心等

积分
75
发表于 2013-6-5 09:49:47 | 显示全部楼层 |阅读模式
创建了一个对话框 然后不断向对话框发重绘消息。代码如下
WM_MESSAGE MyMessage;
WM_HWIN hwin;
hwin=GUI_CreateDialogBox(_SetScreen1, GUI_COUNTOF(_SetScreen1), &_cbSetScreen1, 0, 0, 0);

while(1)
{
WM_Exec();

MyMessage.MsgId=WM_PAINT;
WM_SendMessage(Pmbh_hwin, &MyMessage);
}
但是在回调函数中没有一直接到WM_PAINT消息啊
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106934
QQ
发表于 2013-6-5 10:30:54 | 显示全部楼层
你用的是那个版本的UCGUI,要是低版本的3.98,  3.90的话,两个发送消息的函数的确不怎么好用,
不行的话你就用WM_Paint来更新重绘,执行WM_Paint就会执行重绘,这个要和WM_Exec()区分开,
WM_Exec()是在有需要重绘的时候才会执行窗口的重绘,这个是对所以窗口有些。
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106934
QQ
发表于 2013-6-5 10:50:34 | 显示全部楼层
uint32_t   ulStartTime,  ulEendTime;

    ulStartTime = GUI_GetTime();
    while(1)
    {                        
            /* 此函数主要用于更新桌面窗口 */
            ulEendTime = GUI_GetTime();   
            if(( ulEendTime- ulStartTime)>100)
            {
                g_Time = Time_GetCalendarTime();
               //在手册里面看下这个函数怎么使用
                WM_Paint(MULTIPAGE_GetWindow(hMultiPage, 1));
                ulStartTime = GUI_GetTime();
            }   
   
           WM_Exec();   
    }
回复

使用道具 举报

15

主题

30

回帖

75

积分

初级会员

努力做,耐心等

积分
75
 楼主| 发表于 2013-6-5 11:05:22 | 显示全部楼层

回 eric2013 的帖子

eric2013:    uint32_t   ulStartTime,  ulEendTime;

    ulStartTime = GUI_GetTime();
    while(1)
    {           & .. (2013-06-05 10:50) 
手册上就给句柄就好了,我现在是想在一个对话框中画图,而且需要实时改变图片的位置,本来在建立对话框之后直接用GUI_DrawBitmap(&bmpicture0, x, y);发现不行这个函数只有在WM_Paint消息下使用才能显示图片,所以想每次都给对话框发重绘消息 。好像用了WM_PAINT也不行啊。
        WM_HWIN Pmbh_hwin;
//         WM_MESSAGE MyMessage;
        TEXT_Handle TextHand;
//         uint16_t x=0,y=0;
   
        Pmbh_hwin=GUI_CreateDialogBox(_SetScreen1, GUI_COUNTOF(_SetScreen1), &_cbSetScreen1, 0, 0, 0);
//         pMUhwin = WM_GetClientWindow(Pmbh_hwin);
//         TextHand = TEXT_CreateEx(322,216,53, 12,Pmbh_hwin,WM_CF_SHOW,TEXT_CF_HCENTER,GUI_ID_TEXT0,"SDFJG");
//         TEXT_SetBkColor(TextHand,0xffffff);
        while(1)
        {
            srand(Get_Time_type.SEC);
            WM_Exec();
            x=rand()%700;//
            y=rand()%400;//
            
            WM_Paint(Pmbh_hwin);
//             MyMessage.MsgId=WM_PAINT;
//             WM_SendMessage(Pmbh_hwin, &MyMessage);
//             WM_InvalidateWindow(Pmbh_hwin);
//             WM_MoveTo(TextHand,x,y);
//             GUI_DrawBitmap(&bmpicture0, x, y);
            if(!PMBH_Flag)
            {
                TEXT_Delete(TextHand);
                GUI_EndDialog(Pmbh_hwin, 0);
                break;
            }
            GUI_Delay(200);
        }
}
回调函数
static void _cbSetScreen1(WM_MESSAGE * pMsg)
{
//     int NCode, Id;
//     WM_HWIN hWin = pMsg->hWin;
    switch (pMsg->MsgId)
    {
        case WM_PAINT:
                        GUI_DrawBitmap(&bmpicture0, x, y);
            break;
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106934
QQ
发表于 2013-6-5 11:19:40 | 显示全部楼层
Pmbh_hwin=GUI_CreateDialogBox(_SetScreen1, GUI_COUNTOF(_SetScreen1), &_cbSetScreen1, 0, 0, 0);
         pMUhwin = WM_GetClientWindow(Pmbh_hwin);

WM_Paint( Pmbh_hwin);和WM_Paint(pMUhwin ) 分别尝试一下
回复

使用道具 举报

15

主题

30

回帖

75

积分

初级会员

努力做,耐心等

积分
75
 楼主| 发表于 2013-6-5 12:03:46 | 显示全部楼层

回 eric2013 的帖子

eric2013:       &#160mbh_hwin=GUI_CreateDialogBox(_SetScreen1, GUI_COUNTOF(_SetScreen1), &_cbSetScreen1, 0, 0, 0);
         pMUhwin = WM_GetClientWindow(Pmbh_hwin);

WM_Paint( Pmbh_hwin); .. (2013-06-05 11:19) 
pMUhwin = WM_GetClientWindow(Pmbh_hwin);和WM_Paint(pMUhwin )用这样的组合可以了,但是屏幕刷新的很快。 Pmbh_hwin pMUhwin = WM_GetClientWindow(Pmbh_hwin);有啥区别呢
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106934
QQ
发表于 2013-6-6 09:39:02 | 显示全部楼层

回 chenweigang 的帖子

chenweigang:pMUhwin = WM_GetClientWindow(Pmbh_hwin);和WM_Paint(pMUhwin )用这样的组合可以了,但是屏幕刷新的很快。 Pmbh_hwin pMUhwin = WM_GetClientWindow(Pmbh_hwin);有啥区别呢 (2013-06-05 12:03) 
区别就是得到的句柄不对
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-10 21:08 , Processed in 0.230332 second(s), 25 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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