📄 win_index.c
字号:
/*win_index.c*/#include "sysSrcInfo.h"#define HICONVIEW 101#define HWND_INDEX 10static HWND hIconView_menu;//menustatic HWND hwnd_skin;static HWND hwnd_static;static BITMAP icon_main_bitmap[6];static BITMAP icon_child_bitmap[6];int flagIndex=0; ///* 位图数组 */static const char *icon_main_files[6] ={"Pictures/locate.PNG","Pictures/imformation.PNG","Pictures/navigate.PNG","Pictures/tools.PNG","Pictures/system.PNG","Pictures/help.PNG"};static const char *bmp_name[] ={"./Pictures/b_windowsbackground_1.PNG", "./Pictures/OK.PNG", "./Pictures/menu.PNG", "./Pictures/hung.PNG","./Pictures/b_cancel_0.PNG" }; static const char *icon_labels_Index[] = {"1 定 位",//" ? ?,"2 通 信",//" ? ?,"3 导 航",//" ? ?,"4 工 具",//" ? ?,"5 系 统",//" ? ?,"6 帮 助",//" ? ?,"7 回主界面"//" ? ?,};/* 定义皮肤元素数组 */static skin_item_t skin_main_items [] ={{SIID_OK, SI_TYPE_CHKBUTTON | SI_TEST_SHAPE_RECT | SI_STATUS_VISIBLE, BUTTONLEFT_X, BUTTON_Y, {}, 1 ,"" },{SIID_MENU, SI_TYPE_CHKBUTTON | SI_TEST_SHAPE_RECT | SI_STATUS_VISIBLE, BUTTONCENTER_X, BUTTON_Y, {}, 2, "" },{SIID_RETURN, SI_TYPE_CHKBUTTON | SI_TEST_SHAPE_RECT | SI_STATUS_VISIBLE, BUTTONRIGHT_X, BUTTON_Y, {}, 3, "" },{SIID_CANCEL, SI_TYPE_CHKBUTTON | SI_TEST_SHAPE_RECT | SI_STATUS_VISIBLE, BUTTONRIGHT_X, BUTTON_Y, {}, 4, "" }};/* 定义皮肤 */static skin_head_t main_skin_Index ={ "main", //const BITMAP* bmps; SKIN_STYLE_TOOLTIP, NULL, NULL, 0, 4, skin_main_items, FALSE /** The number of the items in this skin. */ /* 定义皮肤元素数组 */};static void CloseTheWindow_Index (){ int i; ShowWindow ( hIconView_menu, SW_HIDE); ShowWindow ( hIconView_Index,SW_HIDE); ShowWindow(hwnd_index ,SW_HIDE); //DestroyAllControls( hwnd_index); //destroy_skin_window (hwnd_index); for(i=0;i<6;i++) { UnloadBitmap( &(icon_main_bitmap[i]) ); }}static void GoNextWindow_Index(int sel){ switch(sel){ case 0 : win_locate( hWndMain ); //go to child window break; case 1 : win_information ( hWndMain); //go to child window break; case 2 : win_navigate ( hWndMain ); //go to child window break; case 3 : win_tools ( hWndMain ); //go to child window break; case 4 : win_system( hWndMain ); //go to child window break; case 5 : win_help( hWndMain ); //go to child window break; } CloseTheWindow_Index ();}static void ClickCancel_Index(){ SendMessage( hIconView_menu, WS_DISABLED,0,0); EnableWindow( hIconView_menu,FALSE); SendMessage( hIconView_menu, WS_DISABLED,0,0); ShowWindow( hIconView_menu,SW_HIDE); EnableWindow( hIconView_Index,TRUE); //SendMessage( hIconView_child,WS_VISIBLE,1,2 ); SetFocusChild( hIconView_Index ); SendMessage(hIconView_Index,IVM_SELECTITEM,0,0); SendMessage(hIconView_Index,IVM_SETCURSEL,0,0); //SendMessage (hIconView_child,IVM_SETCURSEL,10,10); //SendMessage (hIconView_Index, MSG_CLOSE, 0, 0); skin_enable_item (&main_skin_Index,SIID_CANCEL,FALSE); skin_show_item (&main_skin_Index,SIID_CANCEL,FALSE); skin_enable_item (&main_skin_Index, SIID_RETURN,TRUE); skin_show_item (&main_skin_Index, SIID_RETURN,TRUE); flagIndex = 0;}static int main_event_cb_Index (HWND hwnd, skin_item_t* item, int event, void* data)//{ int sel; int sel_menu; if (event == SIE_BUTTON_CLICKED) { switch (item->id) { //按的那个图片 case SIID_OK: sel = SendMessage (hIconView_Index,IVM_GETCURSEL,0,0); sel_menu=SendMessage (hIconView_menu,IVM_GETCURSEL,0,0); if(flagIndex==1){ if (sel_menu == 6) { ClickCancel_Index();} else { GoNextWindow_Index(sel_menu); } } else { GoNextWindow_Index(sel); } break; case SIID_MENU: flagIndex = 1; SendMessage( hIconView_Index, WS_DISABLED,0,0); EnableWindow( hIconView_Index,FALSE); SendMessage( hIconView_Index, WS_DISABLED,0,0); ShowWindow(hIconView_menu,SW_SHOW); EnableWindow( hIconView_menu,TRUE); //SendMessage( hIconView_child,WS_VISIBLE,1,2 ); SetFocusChild( hIconView_menu ); SendMessage(hIconView_menu,IVM_SELECTITEM,0,0); SendMessage(hIconView_menu,IVM_SETCURSEL,0,0); skin_enable_item (&main_skin_Index,SIID_CANCEL,TRUE); skin_show_item (&main_skin_Index,SIID_CANCEL,TRUE); skin_enable_item (&main_skin_Index, SIID_RETURN,FALSE); skin_show_item (&main_skin_Index, SIID_RETURN,FALSE); break; case SIID_RETURN://挂起 //CreateAlarmWindow (hWndMain ,"CRC ERR",80,0,70,15); SendMessage (hWndMain, MSG_CLOSE, 0, 0); break; case SIID_CANCEL: ClickCancel_Index(); break; } } return 1;}static void myDrawItemChild (HWND hWnd, GHANDLE hsvi, HDC hdc, RECT *rcDraw){ const PBITMAP pbmp = (PBITMAP)iconview_get_item_bitmap (hsvi); const char *label = (const char*)iconview_get_item_label (hsvi); SetBkMode (hdc, BM_TRANSPARENT); SetTextColor (hdc, PIXEL_black); if (iconview_is_item_hilight(hWnd, hsvi)) { SetBrushColor (hdc, PIXEL_green); } else { SetBrushColor (hdc, PIXEL_lightwhite); } FillBox (hdc, rcDraw->left, rcDraw->top, RECTWP(rcDraw), RECTHP(rcDraw));//select state //FillBox (hdc, rcDraw->left-5, rcDraw->top, RECTWP(rcDraw), RECTHP(rcDraw));//select state SetBkColor (hdc, PIXEL_lightwhite); if (label) { RECT rcTxt = *rcDraw;// rcTxt.top = rcTxt.bottom - GetWindowFont (hWnd)->size * 2; rcTxt.top = rcTxt.bottom - (GetWindowFont (hWnd)->size) ; rcTxt.left = rcTxt.left - (GetWindowFont (hWnd)->size) ; DrawText (hdc, label, -1, &rcTxt, DT_SINGLELINE | DT_CENTER | DT_VCENTER); } FillBoxWithBitmap (hdc, rcDraw->left, rcDraw->top, 0, 0, pbmp);//fill pic}static int msg_event_cb_index (HWND hwnd, int message, WPARAM wparam, LPARAM lparam, int* result){ PLOGFONT my_font; IVITEMINFO ivii; IVITEMINFO ivii_menu; HDC hdc; int j,i,k; switch (message) { case MSG_CREATE: //must 不然反回主界面不知是“取消”“返回” skin_enable_item (&main_skin_Index,SIID_CANCEL,FALSE); skin_show_item (&main_skin_Index,SIID_CANCEL,FALSE); skin_enable_item (&main_skin_Index, SIID_RETURN,TRUE); skin_show_item (&main_skin_Index, SIID_RETURN,TRUE); for (j=0; j<TABLESIZE(icon_main_bitmap);j++) { LoadBitmap (HDC_SCREEN,&icon_main_bitmap[j],icon_main_files[j]); } hIconView_Index = CreateWindow (CTRL_ICONVIEW,"myiconview", WS_CHILD |WS_VSCROLL |WS_HSCROLL| WS_VISIBLE ,HICONVIEW,0,0,160,167,hwnd,1); my_font = CreateLogFont (NULL, "fmhei", "utf-8", FONT_WEIGHT_REGULAR, FONT_SLANT_ROMAN, FONT_SETWIDTH_NORMAL, FONT_SPACING_CHARCELL, FONT_UNDERLINE_NONE, FONT_STRUCKOUT_NONE, 20, 0); SetWindowFont (hIconView_Index , my_font); //SetWindowBkColor (hIconView_Index,PIXEL_lightgray); SetWindowBkColor (hIconView_Index,PIXEL_lightwhite); SendMessage (hIconView_Index, IVM_SETITEMSIZE, 60, 50); RECT rcMargin; rcMargin.left=20; rcMargin.top =3; rcMargin.right=20; //rcMargin.bottom =0; ///SendMessage (hIconView_Index, IVM_SETCONTRANGE, 200, 100);//WS_HSCROLL SendMessage (hIconView_Index, IVM_SETMARGINS, 0, (LPARAM)&rcMargin); SendMessage (hIconView_Index, IVM_SETITEMDRAW, 0, (LPARAM)myDrawItemChild); for (i = 0; i < TABLESIZE(icon_main_bitmap); i++) { memset (&ivii, 0, sizeof(IVITEMINFO)); ivii.bmp = &icon_main_bitmap[i]; ivii.nItem = i; ivii.label = NULL;//icon_labels_Index[i]; ivii.addData = i; SendMessage (hIconView_Index, IVM_ADDITEM, 0, (LPARAM)&ivii); } SetFocusChild( hIconView_Index ); //menu hIconView_menu = CreateMenuWindow(hwnd , 90, 7, 1001); for (i = 0; i < TABLESIZE(icon_labels_Index); i++) { memset (&ivii_menu, 0, sizeof(IVITEMINFO)); ivii_menu.bmp = NULL; ivii_menu.nItem = i; ivii_menu.label = icon_labels_Index[i] ; ivii_menu.addData = i; SendMessage (hIconView_menu, IVM_ADDITEM, 0, (LPARAM)&ivii_menu); } SendMessage(hIconView_Index,IVM_SELECTITEM,0,0); SendMessage(hIconView_Index,IVM_SETCURSEL,0,0); UpdateWindow(hwnd_index ,TRUE); InvalidateRect (hwnd, NULL,TRUE); //printf("dddddddddddddd %d\n",add(1,2)); break; case MSG_PAINT : break; } return 1;}void win_index (HWND hwnd){ MSG msg; HWND hWndMain; if (!InitMiniGUIExt()) { //must have the function // return 2; } LoadSkinBmps( &main_skin_Index, TRUE ,bmp_name ,(sizeof (bmp_name))/sizeof(char *) ); if (main_skin_Index.bmps == NULL) { printf ("Could not load skin bitmaps!\n"); //return 3; } //定义的皮肤,皮肤事件回调函数,皮肤窗口消息回调函数 if ( !skin_init (&main_skin_Index, main_event_cb_Index, msg_event_cb_index) ){ /* 初始化皮肤 */ printf ("skin init fail!\n"); } else{ hwnd_index = create_skin_control (&main_skin_Index, hwnd,HWND_INDEX, DEF_X_, DEF_Y_, DEF_WIDTH, DEF_HEIGHT); currShowWindowHwnd = hwnd_index; currWindow =hwnd_index; SetFocusChild(hIconView_Index); } }#ifndef _LITE_VERSION#include <minigui/dti.c>#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -