硬汉嵌入式论坛

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

[emWin] 在窗口中同时添加 控件和旋转指针

[复制链接]

24

主题

36

回帖

24

积分

初级会员

积分
24
发表于 2015-4-16 22:20:39 | 显示全部楼层 |阅读模式
新建了一个窗口   想在其中加入一些控件和旋转指针   但是旋转指针加入不上   写好了函数直接调用 不行

回调函数那里不知道怎么弄到底   希望大家可以帮忙看看代码




#include "includes.h"
#include "MainTask.h"





WM_HWIN  hWinMain;
WM_HWIN hWinInfo;


extern GUI_CONST_STORAGE GUI_BITMAP bmzhengchang;


#define ID_WINDOW_0    (GUI_ID_USER + 0x01)


#define MSG_zhizhen     (GUI_ID_USER + 0x2)


#define countof(Obj) (sizeof(Obj) / sizeof(Obj[0]))
#define DEG2RAD      (3.1415926f / 180)
#define MAG         4


static  const GUI_POINT _aNeedle_0[] = {
  { MAG * ( 0), MAG * (  0 )},
  { MAG * (-3), MAG * (10 )},
  { MAG * (-3), MAG * (60)},
  { MAG * ( 3), MAG * (60 )},
  { MAG * ( 3), MAG * (10 )},
};




typedef struct {
  GUI_AUTODEV_INFO AutoDevInfo;
  GUI_POINT aPoints[7];         
    float Angle;
} PARAM;


void _Draw_0(void * p) {
  PARAM * pParam = (PARAM *)p;                  


  GUI_SetColor(GUI_RED);                  
            
  GUI_AA_FillPolygon(pParam->aPoints, countof(_aNeedle_0), MAG * 150,  MAG * 180);   


}

void GUIDEMO_A(void) {
    int t0=27000 ;

  PARAM Param;            
  GUI_AUTODEV AutoDev;   
  GUI_MEMDEV_Handle    hMem;
      
  GUI_AA_EnableHiRes();                           
  GUI_AA_SetFactor(MAG);                     


  GUI_MEMDEV_CreateAuto(&AutoDev);

    while (1)
    {
        
        t0-= 100;
        if(t0 < 17000)
        {
            t0 = 27000;
        }
        
        Param.Angle= t0;
        Param.Angle *= 3.1415926f / 18000;     
        GUI_RotatePolygon(Param.aPoints, _aNeedle_0, countof(_aNeedle_0), Param.Angle);
        GUI_MEMDEV_DrawAuto(&AutoDev, &amparam.AutoDevInfo, _Draw_0, &amparam);
   
  
}

}


static const GUI_WIDGET_CREATE_INFO _aDialogCreate[] = {

  { WINDOW_CreateIndirect, "Window", ID_WINDOW_0, 0, 0, 800, 480, 0, 0x64, 0 },

};



static void _cbDialog(WM_MESSAGE * pMsg) {

   
  switch (pMsg->MsgId) {
        
     case WM_PAINT:
        

      break;
     
     case WM_NOTIFY_PARENT:
                    GUIDEMO_A();
   
     break;
  default:
    WM_DefaultProc(pMsg);

  }
}




void MainTask(void)
{
    /* 初始化并创建对话框 */
    GUI_Init();
   
    WM_SetCreateFlags(WM_CF_MEMDEV);
   
  hWinMain= GUI_CreateDialogBox(_aDialogCreate, GUI_COUNTOF(_aDialogCreate), _cbDialog, WM_HBKWIN, 0, 0);

    while(1)
    {
        GUI_Delay(20);
    }
}
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115693
QQ
发表于 2015-4-17 08:54:06 | 显示全部楼层
这个旋转指针函数不能直接往上面加,你可以先实现在对话框上面显示2D图形:GUI_AA_FillPolygon(pParam->aPoints, countof(_aNeedle_0), MAG * 150,  MAG * 180);   
你先看看怎么能够把这个图形绘制到对话框上面。
回复

使用道具 举报

24

主题

36

回帖

24

积分

初级会员

积分
24
 楼主| 发表于 2015-4-17 09:50:50 | 显示全部楼层

回 eric2013 的帖子

eric2013:这个旋转指针函数不能直接往上面加,你可以先实现在对话框上面显示2D图形:GUI_AA_FillPolygon(pParam->aPoints, countof(_aNeedle_0), MAG * 150,  MAG * 180);    
你先看看怎么能够把这个图形绘制到对话框上面。 (2015-04-17 08:54) 
指针能显示    但是不能动
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115693
QQ
发表于 2015-4-17 10:45:02 | 显示全部楼层

回 guiguigui 的帖子

guiguigui:指针能显示    但是不能动 (2015-04-17 09:50) 
再进一步的研究这个函数,通过这个函数实现旋转:GUI_RotatePolygon(Param.aPoints, _aNeedle_0, countof(_aNeedle_0), Param.Angle);
回复

使用道具 举报

24

主题

36

回帖

24

积分

初级会员

积分
24
 楼主| 发表于 2015-4-18 10:44:07 | 显示全部楼层
实在实在是加不进去啊,这个功能按理说应该能实现吧?
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115693
QQ
发表于 2015-4-18 23:02:38 | 显示全部楼层

回 guiguigui 的帖子

guiguigui:实在实在是加不进去啊,这个功能按理说应该能实现吧? (2015-04-18 10:44) 
可以,没问题
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-5-12 11:31 , Processed in 0.907681 second(s), 24 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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