初级会员

- 积分
- 197
- 金钱
- 197
- 注册时间
- 2013-11-24
- 在线时间
- 8 小时
|

楼主 |
发表于 2013-12-2 19:00:31
|
显示全部楼层
u8 RadioValue;
u8 Checkbox;
static const GUI_WIDGET_CREATE_INFO _aDialogCreate[] = {
{ FRAMEWIN_CreateIndirect, "Setting", 0, 0, 0, 240,320,FRAMEWIN_CF_MOVEABLE,0},
{ RADIO_CreateIndirect, 0, GUI_ID_RADIO0, 123,203,89, 48, 0,2},
{ CHECKBOX_CreateIndirect, "Voice Control",GUI_ID_CHECK0, 123,124,114,15, 0,0},
{ CHECKBOX_CreateIndirect, "DHT11", GUI_ID_CHECK1, 123,77, 114,15, 0,0},
{ CHECKBOX_CreateIndirect, "HC-SR04", GUI_ID_CHECK2, 123,30, 114,15, 0,0},
{ BUTTON_CreateIndirect, "Direction", GUI_ID_BUTTON0, 18, 242,75, 27, 0,0},
{ BUTTON_CreateIndirect, "Speed", GUI_ID_BUTTON1, 18, 189,75, 27, 0,0},
{ BUTTON_CreateIndirect, "State", GUI_ID_BUTTON2, 18, 136,75, 27, 0,0},
{ BUTTON_CreateIndirect, "OV7670", GUI_ID_BUTTON3, 18, 83, 75, 27, 0,0},
{ BUTTON_CreateIndirect, "Update", GUI_ID_BUTTON4, 18, 30, 75, 27, 0,0}
};
static void _cbCallback(WM_MESSAGE *pMsg)
{
int NCode,Id;
WM_HWIN hRadio,hCheckboxVoice,hCheckboxDHT11,hCheckboxHCSR04,hButtonDirection,
hButtonSpeed,hButtonState,hButtonOV7670,hButtonUpdate;
WM_HWIN hWin=pMsg->hWin;
switch (pMsg->MsgId)
{
case WM_INIT_DIALOG:
hRadio=WM_GetDialogItem(hWin,GUI_ID_RADIO0);
hCheckboxVoice=WM_GetDialogItem(hWin,GUI_ID_CHECK0);
hCheckboxDHT11=WM_GetDialogItem(hWin,GUI_ID_CHECK1);
hCheckboxHCSR04=WM_GetDialogItem(hWin,GUI_ID_CHECK2);
hButtonDirection=WM_GetDialogItem(hWin,GUI_ID_BUTTON0);
hButtonSpeed=WM_GetDialogItem(hWin,GUI_ID_BUTTON1);
hButtonState=WM_GetDialogItem(hWin,GUI_ID_BUTTON2);
hButtonOV7670=WM_GetDialogItem(hWin,GUI_ID_BUTTON3);
hButtonUpdate=WM_GetDialogItem(hWin,GUI_ID_BUTTON4);
RADIO_SetGroupId(hRadio,0); //这句话我也不知道什么意思,用builder弄出来的
RADIO_SetText(hRadio,"Remote",0);
RADIO_SetText(hRadio,"nRF24l01",1);
CHECKBOX_SetText(hCheckboxVoice,"Voice Control");
CHECKBOX_SetText(hCheckboxDHT11,"DHT11");
CHECKBOX_SetText(hCheckboxHCSR04,"HC-SR04");
break;
case WM_NOTIFY_PARENT:
Id = WM_GetId(pMsg->hWinSrc);
NCode = pMsg->Data.v;
switch (NCode)
{
case WM_NOTIFICATION_RELEASED:
switch(Id)
{
case GUI_ID_BUTTON0:
GUI_EndDialog(hWin, 1);
break;
case GUI_ID_BUTTON1:
GUI_EndDialog(hWin, 1);
break;
case GUI_ID_BUTTON2:
GUI_EndDialog(hWin, 1);
break;
case GUI_ID_BUTTON3:
GUI_EndDialog(hWin, 1);
break;
case GUI_ID_BUTTON4:
GUI_EndDialog(hWin, 1);
break;
case GUI_ID_CHECK0: //这里本来应该是跟CHECK1,CHECK2一样放在 WM_NOTIFICATION_VALUE_CHANGED:下的,
// 结果放在那个下面没反应,就放在了这个下面,测试结果:选了CHECK0后LED1就一直亮着
//以后再怎么点都没用,就一直亮着
if(CHECKBOX_IsChecked(hCheckboxVoice))
{
Checkbox|=1<<0;
LED1=1;
}
else
{
Checkbox&=~(1<<0);
LED1=0;
}
break;
}
break;
case WM_NOTIFICATION_VALUE_CHANGED:
switch(Id)
{
case GUI_ID_CHECK1:
if(CHECKBOX_IsChecked(hCheckboxDHT11))
Checkbox|=1<<1;
else
Checkbox&=~(1<<1);
break;
case GUI_ID_CHECK2:
if(CHECKBOX_IsChecked(hCheckboxHCSR04))
Checkbox|=1<<2;
else
Checkbox&=~(1<<2);
break;
case GUI_ID_RADIO0:
RadioValue=RADIO_GetValue(hRadio);
break;
}
}
break;
default:
WM_DefaultProc(pMsg);
}
}
int main(void)
{
Stm32_Clock_Init(9); //系统时钟设置
uart_init(72,9600); //串口初始化为9600
delay_init(72); //延时初始化
LED_Init(); //初始化与LED连接的硬件接口
LCD_Init();
GUI_Init();
TP_Init();
TIM3_Int_Init(100,7199);
GUI_CURSOR_Show();
GUI_SetBkColor(GUI_BLUE);
GUI_SetColor(GUI_WHITE);
GUI_Clear();
GUI_CreateDialogBox(_aDialogCreate,GUI_COUNTOF(_aDialogCreate),&_cbCallback,0,0,0);
while(1)
{
}
} |
|