主题 : WM_SendMessageNoPara()这样用 对不对? 复制链接 | 浏览器收藏 | 打印
级别: 新手上路
UID: 84859
精华: 0
发帖: 5
金钱: 25 两
威望: 5 点
贡献值: 0 点
综合积分: 10 分
注册时间: 2012-12-27
最后登录: 2013-03-02
楼主  发表于: 2013-01-05 10:03

 WM_SendMessageNoPara()这样用 对不对?


  
WM_SendMessageNoPara(_hDialog[0],WM_PAINT);
   这个函数 具体用法,以及用了之后发生了什么样的事情
比如:
我有一个任务,想让我的回调函数里面的  WM_PAINT  这个消息里面的一些自己绘制的矩形框的颜色主动刷新,每个矩形框对应了一个变量,变量值是实时更新的。  现在又一个问题 就是 变量变化了 矩形框的颜色不变

static void uctsk_Fresh(void)
{

    for(;;)
        {
          OSTimeDlyHMSM(0, 0, 30, 0);    
          FreshTask();

         //
    }

}

void FreshTask (void)
    
{

   WM_SendMessageNoPara(_hDialog[0],WM_PAINT);
  
}

_hDialog[0]   就是下面这个回调函数的句柄

static void _cbDialog_A(WM_MESSAGE * pMsg) {
    int Id, j, i,NCode;
        
    //char **p=SHOW[CH_E_Chang];
    WM_HWIN hItem,ahButton;
    hDlg_A= pMsg->hWin;
    switch (pMsg->MsgId) {
    case WM_PAINT:
        /* Owner drawn background of dialog */
        GUI_SetBkColor(GUI_WHITE);
        GUI_Clear();
    
        GUI_SetColor(GUI_RED);
        GUI_SetFont(&GUI_Font13HB_ASCII);
        GUI_DispStringAt("A",6,33);
        GUI_DispStringAt("B",6,73);
        GUI_DispStringAt("C",6,113);
        GUI_DispStringAt("QA",6,140);
        GUI_DispStringAt("QB",6,155);
        GUI_DispStringAt("QC",6,170);
        GUI_DispStringAt("IA",180,140);
        GUI_DispStringAt("IB",180,155);
        GUI_DispStringAt("IC",180,170);


        if (num==24)   /*35KV*/
            {
              GUI_SetFont(&GUI_Font10_ASCII);
                                                                  GUI_SetColor(GUI_BROWN);
              GUI_DispStringAt("5",72,20);
              GUI_DispStringAt("10",120,20);
              GUI_DispStringAt("15",170,20);
              GUI_DispStringAt("20",220,20);
              GUI_DrawVLine(75, 50, 70);
              GUI_FillRect(124,50,126,70);
              GUI_DrawVLine(175, 50, 70);
              GUI_FillRect(224,50,226,70);

              
              GUI_DrawVLine(75, 90, 110);
              GUI_FillRect(124,90,126,110);
              GUI_DrawVLine(175, 90, 110);
              GUI_FillRect(224,90,226,110);
            
                }

        if (num==9)   /*10KV*/
            {
              GUI_SetFont(&GUI_Font10_ASCII);
                                                                  GUI_SetColor(GUI_BROWN);
              GUI_DispStringAt("5",72,20);
                                                                  GUI_DrawVLine(75, 50, 70);
              GUI_DrawVLine(75, 90, 110);

                             }

        
                               GUI_SetColor(GUI_BLACK);
        for (i = 0; i <num; i++)
            {
             /* phase-A   */
                                                                GUI_DrawRect(z_x0+i*10, z_y0, z_x1+i*10, z_y1);    
                                                                GUI_DrawRect(z_x0+i*10, z_y0+10, z_x1+i*10, z_y1+10);
             /* phase-B   */          
                                                                GUI_DrawRect(z_x0+i*10, z_y0+40, z_x1+i*10, z_y1+40);
                                                                GUI_DrawRect(z_x0+i*10, z_y0+50, z_x1+i*10, z_y1+50);
            /* phase-C   */
              GUI_DrawRect(z_x0+i*10, z_y0+80, z_x1+i*10, z_y1+80);
                                                                  GUI_DrawRect(z_x0+i*10, z_y0+90, z_x1+i*10, z_y1+90);
                }
                 /* QA*/
                 GUI_DrawRect(z_x0+30, z_y0+112, z_x1+130, z_y1+112);
                                                   /* QB*/
              GUI_DrawRect(z_x0+30, z_y0+127, z_x1+130, z_y1+127);
              /* QC*/
              GUI_DrawRect(z_x0+30, z_y0+142, z_x1+130, z_y1+142);
    
         for (i=0;i<num;i++)    
             {
                                                                 COMzA=(COM_zA>>(i+6))&0x00000001;
                                                                 COMfA=(COM_fA>>(i+6))&0x00000001;
             BODzA=(BOD_zA>>(i+6))&0x00000001;
             BODfA=(BOD_fA>>(i+6))&0x00000001;
                                                                 COMzB=(COM_zB>>(i+6))&0x00000001;
                                                                 COMfB=(COM_fB>>(i+6))&0x00000001;
             BODzB=(BOD_zB>>(i+6))&0x00000001;
             BODfB=(BOD_fB>>(i+6))&0x00000001;      
                                                                 COMzC=(COM_zC>>(i+6))&0x00000001;
                                                                 COMfC=(COM_fC>>(i+6))&0x00000001;
             BODzC=(BOD_zC>>(i+6))&0x00000001;
             BODfC=(BOD_fC>>(i+6))&0x00000001;

                }
               for(j=0;j<num;j++)
                   {
                         if  (COMzA [j]==0)    /*A相正向有COM   无BOD*/
                             {
                                                                                          GUI_SetColor(GUI_GREEN);
                    GUI_FillRect(z_x0+j*10+1, z_y0+1, z_x1+j*10-1, z_y1-1);  

                };
                if  (COMfA [j]==0)    /*A相负向有COM   无BOD*/
                                                                   {
                                                                                          GUI_SetColor(GUI_GREEN);
                    GUI_FillRect(z_x0+j*10+1, z_y0+1+10, z_x1+j*10-1, z_y1-1+10);  

                };        
                        
                if  (BODzA[j]==1)    /*A相正向有BOD  无COM*/
                    {

                                                                                         GUI_SetColor(GUI_RED);
                    GUI_FillRect(z_x0+j*10+1, z_y0+1, z_x1+j*10-1, z_y1-1);                
                };

                if  (BODfA[j]==1)    /*A相负向有BOD  无COM*/
                    {

                                                                                         GUI_SetColor(GUI_RED);
                    GUI_FillRect(z_x0+j*10+1, z_y0+1+10, z_x1+j*10-1, z_y1-1+10);                
                };
                
                         if  (COMzA[j]==0)   /*A相正向  有BOD  有COM*/
                    {
                        if (BODzA[j]==1)
                            {

                                                                                              GUI_SetColor(GUI_YELLOW);
                         GUI_FillRect(z_x0+j*10+1, z_y0+1, z_x1+j*10-1, z_y1-1);
                            };
                             };
                if  (COMfA[j]==0)   /*A相负向  有BOD  有COM*/
                    {
                        if (BODfA[j]==1)
                            {

                                                                                              GUI_SetColor(GUI_YELLOW);
                         GUI_FillRect(z_x0+j*10+1, z_y0+1+10, z_x1+j*10-1, z_y1-1+10);
                            };
                             };
                      }


        for(j=0;j<num;j++)
                   {
                         if  (COMzB [j]==0)    /*B相正向有COM   无BOD*/
                             {
                                                                                         GUI_SetColor(GUI_GREEN);
                    GUI_FillRect(z_x0+j*10+1, z_y0+1+40, z_x1+j*10-1, z_y1-1+40);  

                };
                if  (COMfB [j]==0)    /*B相负向有COM   无BOD*/
                                                                    {
                                                                                         GUI_SetColor(GUI_GREEN);
                    GUI_FillRect(z_x0+j*10+1, z_y0+1+50, z_x1+j*10-1, z_y1-1+50);  

                };        
                        
                if  (BODzB[j]==1)    /*B相正向有BOD  无COM*/
                    {

                                                                                         GUI_SetColor(GUI_RED);
                    GUI_FillRect(z_x0+j*10+1, z_y0+1+40, z_x1+j*10-1, z_y1-1+40);                
                };

                if  (BODfB[j]==1)    /*B相负向有BOD  无COM*/
                    {

                                                                                         GUI_SetColor(GUI_RED);
                    GUI_FillRect(z_x0+j*10+1, z_y0+1+50, z_x1+j*10-1, z_y1-1+50);                
                };
                
                         if  (COMzB[j]==0)   /*B相正向  有BOD  有COM*/
                    {
                        if (BODzB[j]==1)
                            {

                                                                                               GUI_SetColor(GUI_YELLOW);
                         GUI_FillRect(z_x0+j*10+1, z_y0+1+40, z_x1+j*10-1, z_y1-1+40);
                            };
                             };
                if  (COMfB[j]==0)   /*B相负向  有BOD  有COM*/
                    {
                        if (BODfB[j]==1)
                            {

                                                                                              GUI_SetColor(GUI_YELLOW);
                         GUI_FillRect(z_x0+j*10+1, z_y0+1+50, z_x1+j*10-1, z_y1-1+50);
                            };
                             };
                      }


        for(j=0;j<num;j++)
                   {
                         if  (COMzC [j]==0)    /*C相正向有COM   无BOD*/
                             {
                                                                                          GUI_SetColor(GUI_GREEN);
                    GUI_FillRect(z_x0+j*10+1, z_y0+1+80, z_x1+j*10-1, z_y1-1+80);  

                };
                if  (COMfC [j]==0)    /*C相负向有COM   无BOD*/
                                                                    {
                                                                                          GUI_SetColor(GUI_GREEN);
                    GUI_FillRect(z_x0+j*10+1, z_y0+1+90, z_x1+j*10-1, z_y1-1+90);  

                };        
                        
                if  (BODzC[j]==1)    /*C相正向有BOD  无COM*/
                    {

                                                                                           GUI_SetColor(GUI_RED);
                    GUI_FillRect(z_x0+j*10+1, z_y0+1+80, z_x1+j*10-1, z_y1-1+80);                
                };

                if  (BODfC[j]==1)    /*C相负向有BOD  无COM*/
                    {

                                                                                          GUI_SetColor(GUI_RED);
                    GUI_FillRect(z_x0+j*10+1, z_y0+1+90, z_x1+j*10-1, z_y1-1+90);                
                };
                
                         if  (COMzC[j]==0)   /*C相正向  有BOD  有COM*/
                    {
                        if (BODzC[j]==1)
                            {

                                                                                               GUI_SetColor(GUI_YELLOW);
                         GUI_FillRect(z_x0+j*10+1, z_y0+1+80, z_x1+j*10-1, z_y1-1+80);
                            };
                             };
                if  (COMfC[j]==0)   /*C相负向  有BOD  有COM*/
                    {
                        if (BODfC[j]==1)
                            {

                                                                                              GUI_SetColor(GUI_YELLOW);
                         GUI_FillRect(z_x0+j*10+1, z_y0+1+90, z_x1+j*10-1, z_y1-1+90);
                            };
                             };
                      }

                        
        break;
    case WM_CREATE:
        
         break;
    case WM_INIT_DIALOG:
           GUI_SetFont(&GUI_FontHZ12);
           GUI_SetColor(GUI_BLACK);
    
        /* Create the buttons  */
        ahButton = BUTTON_CreateEx(260, 170, 50, 20,
            hDlg_A, WM_CF_SHOW , 0, GUI_ID_CLOSE);
        BUTTON_SetFont(ahButton, &GUI_FontHZ12);
        BUTTON_SetText(ahButton, *(SHOW[CH_E_Chang]+1));
        
        break;
    case WM_NOTIFY_PARENT:
        NCode = pMsg->Data.v;               /* Notification code */
        switch (NCode) {
        case WM_NOTIFICATION_RELEASED:      /* React only if released */
            Id = WM_GetId(pMsg->hWinSrc);     /* Id of widget */
            if (Id == GUI_ID_CLOSE) {
                GUI_EndDialog(hDlg_A, 1);
                _hDialog[_CurrentDialogIndex] = 0;
                _CurrentDialogIndex = -1;
            }
            break;
        case WM_NOTIFICATION_VALUE_CHANGED: /* Value has changed */
            Id = WM_GetId(pMsg->hWinSrc);     /* Id of widget */
            if (Id == GUI_ID_TEXT0)
                {
            
                hItem = WM_GetDialogItem(hDlg_A, GUI_ID_TEXT0);
                TEXT_SetText(hItem, QaChar);

                   }
            break;
        }
        break;
        default:
            WM_DefaultProc(pMsg);
    }
}