OpenEdv-开源电子网

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

EMWIN PAINT消息

[复制链接]

54

主题

372

帖子

0

精华

高级会员

Rank: 4

积分
972
金钱
972
注册时间
2016-6-15
在线时间
473 小时
发表于 2016-8-2 13:50:54 | 显示全部楼层 |阅读模式
1金钱
      我从资源表中创建Dialog对话框和一些小工具,我什么在回调函数pMsg消息中没有PAINT消息??我在switch分支中添加了消息case PAINT:可是一直不被执行,其他消息都正常是为什么?
然而我不用资源表创建就有PAINT消息。

最佳答案

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

你要定时的无效化父窗口PAINT消息才会被发送的。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

88

主题

7377

帖子

5

精华

资深版主

Rank: 8Rank: 8

积分
14980
金钱
14980
注册时间
2013-11-13
在线时间
1823 小时
发表于 2016-8-2 13:50:55 | 显示全部楼层
你要定时的无效化父窗口PAINT消息才会被发送的。
回复

使用道具 举报

3

主题

548

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
1383
金钱
1383
注册时间
2015-2-3
在线时间
197 小时
发表于 2016-8-3 12:41:03 | 显示全部楼层
本帖最后由 yyx112358 于 2016-8-3 12:42 编辑

不是PAINT消息而是WM_PAINT…………
[mw_shl_code=c,true]static void _cbDialog( WM_MESSAGE * pMsg ) {
        WM_HWIN hItem;
        int     NCode;
        int     Id;
        // USER START (Optionally insert additional variables)
        static char        is_initing = 1;//加入该标志以免ICONVIEW初始化过程中即打开了图标0
        // USER END

        switch ( pMsg->MsgId )
        {
        case WM_INIT_DIALOG:
                //
                // Initialization of 'Desktop'
                //
                hItem = pMsg->hWin;
                WINDOW_SetBkColor( hItem, 0x00C59A2A );
                //
                // Initialization of 'TEXT_Monitor'
                //
                hItem = WM_GetDialogItem( pMsg->hWin, ID_TEXT_0 );
                TEXT_SetFont( hItem, GUI_FONT_16B_ASCII );
                TEXT_SetText( hItem, "RAM:28%,46% CPU:24% TIME:23:59:59" );
                TEXT_SetTextColor( hItem, 0x00FFFFFF );
                // USER START (Optionally insert additional code for further widget initialization)
                hItem = WM_GetDialogItem( pMsg->hWin, ID_ICONVIEW_0 );
                ICONVIEW_SetSpace( hItem, GUI_COORD_X, 10 );
                ICONVIEW_SetFrame( hItem, GUI_COORD_X,15 );
                ICONVIEW_SetSpace( hItem, GUI_COORD_Y, 10 );
                ICONVIEW_SetFrame( hItem, GUI_COORD_Y, 15 );
//                ICONVIEW_AddBitmapItem( hItem, &bmDriver_alpha100x100, "FileExplorer" );
//                ICONVIEW_AddBitmapItem( hItem, &bmDriver_alpha100x100, "DSO" );
//                ICONVIEW_AddBitmapItem( hItem, &bmDriver_alpha100x100, "Control" );
//                ICONVIEW_AddBitmapItem( hItem, &bmDriver_alpha100x100, "Setting" );
                ICONVIEW_AddBitmapItem( hItem, &bmclock, "Measure" );
                ICONVIEW_AddBitmapItem( hItem, &bmimage, "DSO" );
                ICONVIEW_AddBitmapItem( hItem, &bmgame, "Calibre" );
                ICONVIEW_AddBitmapItem( hItem, &bminfo, "About" );
                ICONVIEW_SetSel( hItem, ICONVIEW_ITEM_SELNONE );
                is_initing = 0;
                // USER END
                break;
        case WM_NOTIFY_PARENT:
                Id = WM_GetId( pMsg->hWinSrc );
                NCode = pMsg->Data.v;
                switch ( Id )
                {
                case ID_ICONVIEW_0: // Notifications sent by 'ICONVIEW_FileExploer'
                        switch ( NCode )
                        {
                        case WM_NOTIFICATION_CLICKED:
                                // USER START (Optionally insert code for reacting on notification message)

                                // USER END
                                break;
                        case WM_NOTIFICATION_RELEASED:
                                // USER START (Optionally insert code for reacting on notification message)
                                //注:按下后移出范围不会发出该消息而是WM_NOTIFICATION_MOVED_OUT

                                // USER END
                                break;
                        case WM_NOTIFICATION_MOVED_OUT:
                                // USER START (Optionally insert code for reacting on notification message)

                                // USER END
                                break;
                        case WM_NOTIFICATION_SCROLL_CHANGED:
                                // USER START (Optionally insert code for reacting on notification message)
                                // USER END
                                break;
                        case WM_NOTIFICATION_SEL_CHANGED:
                                // USER START (Optionally insert code for reacting on notification message)
                                if ( is_initing != 1 )
                                {
                                        int        index = 0;
                                        hItem = WM_GetDialogItem( pMsg->hWin, ID_ICONVIEW_0 );
                                        index = ICONVIEW_GetSel( hItem );
                                        switch ( index )//该序号与创建顺序相同
                                        {
                                        case        0:
                                                APP_Running_Handle = CreateMonitor();
                                                ICONVIEW_SetSel( hItem, ICONVIEW_ITEM_SELNONE );
                                                APP_Running_Index = APP_Monitor;
                                                break;
                                        case        1:
                                                APP_Running_Handle = CreateDSO();
                                                ICONVIEW_SetSel( hItem, ICONVIEW_ITEM_SELNONE );
                                                APP_Running_Index = APP_DSO;
                                                break;
                                        case        2:
//                                                APP_Running_Handle = CreateFileExplorer();
                                                ICONVIEW_SetSel( hItem, ICONVIEW_ITEM_SELNONE );//选定为-1以在打开程序返回后可以立即重选
                                                APP_Running_Index = APP_FileExplorer;
                                                break;
                                        case 3:
                                                APP_Running_Handle =CreateCopyright();
                                                ICONVIEW_SetSel( hItem, ICONVIEW_ITEM_SELNONE );
                                                APP_Running_Index = APP_CopyRight;
                                        case        -1:
                                                break;
                                        default:
                                                APP_Running_Handle = GUI_HMEM_NULL;
                                                APP_Running_Index = APP_NONE;
                                                break;
                                        }
                                }
                                // USER END
                                break;
                                // USER START (Optionally insert additional code for further notification handling)
                                // USER END
                        }
                        break;
                        // USER START (Optionally insert additional code for further Ids)
                        // USER END
                }
                break;
                // USER START (Optionally insert additional message handling)
        case        WM_PAINT:
                GUI_DrawBitmap( &bmsentinel, 0, 0 );
                break;
        case        WM_DESKTOP_TEXT_MONITOR_UPDATE://【自定义消息】桌面监视文本更新
        {
                TEXT_Handle        hTEXT_Monitor;
                hTEXT_Monitor = WM_GetDialogItem( pMsg->hWin, ID_TEXT_0 );
                TEXT_SetText( hTEXT_Monitor, (char*)( pMsg->Data.p ) );
        }
                break;
        case        WM_DESKTOP_CLOSE( APP_FileExplorer ):
        case        WM_DESKTOP_CLOSE(APP_DSO):

                break;
                // USER END
        default:
                WM_DefaultProc( pMsg );
                break;
        }
}[/mw_shl_code]
回复

使用道具 举报

54

主题

372

帖子

0

精华

高级会员

Rank: 4

积分
972
金钱
972
注册时间
2016-6-15
在线时间
473 小时
 楼主| 发表于 2016-8-9 09:57:30 | 显示全部楼层
zuozhongkai 发表于 2016-8-3 10:17
你要定时的无效化父窗口PAINT消息才会被发送的。

好的,谢谢
回复

使用道具 举报

42

主题

297

帖子

0

精华

高级会员

Rank: 4

积分
994
金钱
994
注册时间
2016-7-22
在线时间
318 小时
发表于 2017-2-21 14:19:40 | 显示全部楼层
zuozhongkai 发表于 2016-8-2 13:50
你要定时的无效化父窗口PAINT消息才会被发送的。

左大神,请问ICONVIEW_SetSel(IconviewWin,3);设置之后图标的选定状态看不到这是为何呢
原子的iconview控件示例程序当中 直接在创建Iconview控件之后添加,没有效果。。。
回复

使用道具 举报

42

主题

297

帖子

0

精华

高级会员

Rank: 4

积分
994
金钱
994
注册时间
2016-7-22
在线时间
318 小时
发表于 2017-2-21 14:42:47 | 显示全部楼层
hi我歌月徘徊 发表于 2017-2-21 14:19
左大神,请问ICONVIEW_SetSel(IconviewWin,3);设置之后图标的选定状态看不到这是为何呢
原子的iconview ...

搞定了 原来是把输入焦点给忘了
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2024-11-23 02:47

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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