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);
}
}