OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 4868|回复: 3

WM_PAINT事件无法重绘

[复制链接]

16

主题

72

帖子

0

精华

初级会员

Rank: 2

积分
171
金钱
171
注册时间
2013-12-4
在线时间
43 小时
发表于 2017-5-23 18:41:08 | 显示全部楼层 |阅读模式
10金钱
我想在对话框的一个地方绘制一个渐变的矩形,初始化的时候渐变的矩形被绘制出来了,再次进WM_PAINT事件时,我想改变渐变矩形的大小,可是没有反应。部分代码如下:
case WM_PAINT:
            GUI_DrawGradientV(311,240-SpeedCurVal,320,240,GUI_WHITE,GUI_RED);
            SpeedCurVal++;
            if(SpeedCurVal == 200) SpeedCurVal = 0;
break;

在debug的时候 代码确实执行了,可是没有任何改变。
        调用WM_Paint()函数,触发重绘事件,矩形的大小会改变,可是没运行一会就死机了。
        望大神解答啊!!!!!!!!!!

最佳答案

查看完整内容[请看2#楼]

#include "GUI.h" #include "DIALOG.h" #include /********************************************************************************************************** * 宏定义 **********************************************************************************************************/ #define ID_WINDOW_0 (GUI_ID_USER ...
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

21

主题

71

帖子

0

精华

初级会员

Rank: 2

积分
165
金钱
165
注册时间
2013-12-1
在线时间
87 小时
发表于 2017-5-23 18:41:09 | 显示全部楼层
本帖最后由 ssis909 于 2017-5-25 17:37 编辑



#include "GUI.h"
#include "DIALOG.h"
#include <stdio.h>
/**********************************************************************************************************
*                                       宏定义
**********************************************************************************************************/
#define         ID_WINDOW_0                                         (GUI_ID_USER + 0x00)
#define                ID_TIMER_0                                                (GUI_ID_USER + 0x30)
/**********************************************************************************************************
*        函 数 名:
*        功能说明: 回调函数
*        形    参: pMsg   消息指针变量
*        返 回 值: 无
**********************************************************************************************************/
static void _cbCallback(WM_MESSAGE * pMsg)
{
        static int SpeedCurVal = 0;
        
    switch (pMsg->MsgId)
    {
                case WM_PAINT:
                        GUI_SetBkColor(GUI_BLACK);
                        GUI_Clear();
                        GUI_DrawGradientV(20,240 - SpeedCurVal,320,240,GUI_WHITE,GUI_RED);
                break;
               
        case WM_INIT_DIALOG:
                        WM_CreateTimer(pMsg->hWin,ID_TIMER_0,40,0);
        break;
               
                case WM_TIMER:
                        SpeedCurVal++;
            if(SpeedCurVal == 200)
                        {
                                SpeedCurVal = 0;
                        }
                        WM_RestartTimer(pMsg->Data.v, 40);
                        WM_InvalidateWindow(pMsg->hWin);
                break;
               
        default:
            WM_DefaultProc(pMsg);
    }
}




static const GUI_WIDGET_CREATE_INFO _aDialogCreateModality[] = {
        { WINDOW_CreateIndirect,    "",   ID_WINDOW_0,   0,   0, 480,272, 0, 0x0, 0 },


};


void MainTask(void)
{
        WM_SetCreateFlags(WM_CF_MEMDEV);
        GUI_Init();
        
        GUI_CreateDialogBox(        _aDialogCreateModality,
                                                        GUI_COUNTOF(_aDialogCreateModality),
                                                        &_cbCallback,
                                                        WM_HBKWIN,
                                                        0,
                                                        0);
                                                        
        while (1)
        {
                GUI_Delay(1000);
        }
}

result_看图王.jpg

回复

使用道具 举报

16

主题

72

帖子

0

精华

初级会员

Rank: 2

积分
171
金钱
171
注册时间
2013-12-4
在线时间
43 小时
 楼主| 发表于 2017-5-27 12:56:50 | 显示全部楼层
ssis909 发表于 2017-5-23 18:41
#include "GUI.h"
#include "DIALOG.h"
#include

我主要的问题其实是要设置我要绘制渐变矩形的那个区域无效就行了,        WM_InvalidateArea(&Rect);    //使显示器的部分区域无效         谢谢你的回答
回复

使用道具 举报

5

主题

21

帖子

0

精华

初级会员

Rank: 2

积分
185
金钱
185
注册时间
2018-10-27
在线时间
57 小时
发表于 2019-8-5 17:15:28 | 显示全部楼层
请问楼主当时这个问题怎么解决的,目前我也遇到了,使能部分区域无效也不行,目前还没找到解决办法!
回复

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-25 22:53

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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