|
/extern GUI_CONST_STORAGE GUI_BITMAP data_show;
//extern GUI_CONST_STORAGE GUI_BITMAP data_capture;
//extern GUI_CONST_STORAGE GUI_BITMAP graph_show;
//extern GUI_CONST_STORAGE GUI_BITMAP Calculator_show;
//extern GUI_CONST_STORAGE GUI_BITMAP Info_show;
//extern GUI_CONST_STORAGE GUI_BITMAP Time_show;
//extern GUI_CONST_STORAGE GUI_BITMAP SystemSetup_show;
static int _x;
WM_HWIN h_MenuWindow;
BUTTON_Handle Btnhandle[6]={0};
/**
* @brief The desktop window's callback function
* @param the pointer of Windows message manager
* @retval none
*/
static void _callback(WM_MESSAGE *pMsg)
{
int NCode, Id;//Get the ID of buttons and Notification code
WM_SCROLL_STATE ScrollState; //scrollbar handle
SCROLLBAR_Handle hScroll;
WM_HWIN hWin = pMsg->hWin;
switch(pMsg->MsgId)
{
case WM_CREATE:
hScroll = SCROLLBAR_CreateAttached(hWin,0);//the scrollbar is attached to desktop window vertical
SCROLLBAR_SetNumItems(hScroll,50);
SCROLLBAR_SetPageSize(hScroll,25); //Pagesize must be smaller than NumItems.
Btnhandle[0] = BUTTON_Create(5, 5, 105, 105, GUI_ID_DataShow, BUTTON_CF_SHOW );
Btnhandle[1] = BUTTON_Create(115, 5, 105, 105, GUI_ID_DataCapture, BUTTON_CF_SHOW );
Btnhandle[2] = BUTTON_Create(5, 115, 215, 105, GUI_ID_Graph, BUTTON_CF_SHOW );
Btnhandle[3] = BUTTON_Create(225, 5, 105, 215, GUI_ID_Calculator, BUTTON_CF_SHOW );
Btnhandle[4] = BUTTON_Create(445, 5, 105, 105, GUI_ID_Info, BUTTON_CF_SHOW );
Btnhandle[5] = BUTTON_Create(335,5, 105, 105, GUI_ID_Time, BUTTON_CF_SHOW );
// Btnhandle[6] = BUTTON_Create(445, 5, 105, 105, GUI_ID_SystemSetup, BUTTON_CF_SHOW );
// BUTTON_SetBitmap(Btnhandle[0],BUTTON_BI_UNPRESSED,&data_show);
// BUTTON_SetBitmap(Btnhandle[1],BUTTON_BI_UNPRESSED,&data_capture);
// BUTTON_SetBitmap(Btnhandle[2],BUTTON_BI_UNPRESSED,&graph_show);
// BUTTON_SetBitmap(Btnhandle[3],BUTTON_BI_UNPRESSED,&Calculator_show);
// BUTTON_SetBitmap(Btnhandle[4],BUTTON_BI_UNPRESSED,&Info_show);
// BUTTON_SetBitmap(Btnhandle[5],BUTTON_BI_UNPRESSED,&Time_show);
// BUTTON_SetBitmap(Btnhandle[6],BUTTON_BI_UNPRESSED,&SystemSetup_show);
break;
case WM_PAINT:
GUI_SetBkColor(GUI_BLUE); // redraw the desktop
GUI_Clear();
break;
case WM_NOTIFY_PARENT:
Id=WM_GetId(pMsg->hWinSrc);
NCode = pMsg->Data.v;
if(NCode == WM_NOTIFICATION_VALUE_CHANGED)
{
if(WM_GetId(pMsg->hWinSrc)== GUI_ID_HSCROLL)// the message get from horinzontal scrollbar
{
WM_GetScrollState(pMsg->hWinSrc, &ScrollState);
if(_x!=ScrollState.v)
{
int x=0;
for(x=0;x<7;x++)
{
WM_MoveWindow(Btnhandle[x],(_x-ScrollState.v)*10,0);
}
}
_x=ScrollState.v;
}
}
if (NCode == WM_NOTIFICATION_CLICKED)
{
switch (Id)
{
case GUI_ID_DataShow:
GPIOG->ODR^=GPIO_Pin_6;
break;
case GUI_ID_Graph:
GPIOG->ODR^=GPIO_Pin_6;
break;
case GUI_ID_Info:
GPIOG->ODR^=GPIO_Pin_6;
break;
case GUI_ID_Calculator:
GPIOG->ODR^=GPIO_Pin_6;
break;
case GUI_ID_DataCapture:
break;
case GUI_ID_Time:
break;
default:
break;
}
}
break;
default:
WM_DefaultProc(pMsg);
break;
}
}
void Main_Menu(void)
{
h_MenuWindow = WM_CreateWindow(0,0,LCD_XSIZE,LCD_YSIZE,WM_CF_SHOW,&_callback,0);//Create the desktop window
// WM_SetCallback(h_MenuWindow, &_cbMygui);//set DeskWindow Callback function.
}
非常简单的创建了一个窗口,并且在他的回调函数的 WM_cREATE 消息中初始化了窗口,就是添加了几个button 和一个 scrollbar。 但是实际测试的时候, scrollbar的消息可以i响应,屏幕可以滑动,但是按下button却没反应。求教这是怎么回事啊 |
|