📄 listbox_liz.c
字号:
break; } return DefaultDialogProc (hDlg, message, wParam, lParam);}static void InitDialogBox (HWND hWnd){ DlgInitProgress.controls = CtrlInitProgress; DialogBoxIndirectParam (&DlgInitProgress, hWnd, InitDialogBoxProc, 0L);}/******************************************************************************* * desc: disp item with blue or lightgray *------------------------------------------------------------------------------ * param: HDC hdc * i_index the index i_focus the focus *------------------------------------------------------------------------------ * return: *******************************************************************************/int disp_item( HDC hdc, const int i_index){#if 1 if(i_index == i_focus ) { FillBoxWithBitmap (hdc, rc_list[i_index].left, rc_list[i_index].top, 200, 20 , &bmp2); } else { FillBoxWithBitmap (hdc, rc_list[i_index].left, rc_list[i_index].top, 200, 20 , &bmp1); }#endif // 画长方形框 //FillBox( hdc, rc_list[i_index].left, rc_list[i_index].top, 200, 20 ); Rectangle( hdc, rc_list[i_index].left, rc_list[i_index].top, rc_list[i_index].right, rc_list[i_index].bottom ); // 显示值 SelectFont( hdc, disp_font ); SetBkMode( hdc, BM_TRANSPARENT ); //SetBkColor( hdc, PIXEL_lightgray ); SetTextColor( hdc, PIXEL_red ); DrawText( hdc, psz_list[i_index], -1, &rc_list[i_index], DT_NOCLIP|DT_SINGLELINE|DT_CENTER|DT_VCENTER ); return 1;}/******************************************************************************* * desc: init list *------------------------------------------------------------------------------ * param: * *------------------------------------------------------------------------------ * return: *******************************************************************************/int disp_list( HWND hWnd, HDC hdc){ int i, top_y=10; // 创建列表字体风格 disp_font = CreateLogFont (NULL, "Arial", "ISO8859-1", FONT_WEIGHT_BOOK, FONT_SLANT_ROMAN, FONT_SETWIDTH_NORMAL, FONT_SPACING_CHARCELL, FONT_UNDERLINE_NONE, FONT_STRUCKOUT_NONE, 15, 0); disp_font1 = CreateLogFont (NULL, "Arial", "ISO8859-1", FONT_WEIGHT_BOOK, FONT_SLANT_ROMAN, FONT_SETWIDTH_NORMAL, FONT_SPACING_CHARCELL, FONT_UNDERLINE_NONE, FONT_STRUCKOUT_NONE, 30, 0); rc_text.left = 85; //显示框 当摁空格时 显示选择的项 rc_text.top = 300; rc_text.right = 285; rc_text.bottom = 330; i_focus = 0; // 把初始焦点设置在第yi个选项 pg_focus= 0; //初始页第一页 for( i=0; i<M_MAX; i++, top_y+=M_LINE_HEIGHT ) { // 设置rect数组 如果到第四个了 重置初始值 if(i%4 == 0) top_y = 10; rc_list[i].left = 85; rc_list[i].top = top_y; rc_list[i].right = 285; rc_list[i].bottom = top_y + 20; // disp_item( hdc, i); bmp2.bmType = BMP_TYPE_ALPHACHANNEL; bmp2.bmAlpha = 255;#if 0 bmp1.bmType = BMP_TYPE_ALPHACHANNEL | BMP_TYPE_COLORKEY; bmp1.bmColorKey = GetPixelInBitmap (&bmp1, 0, 0); bmp1.bmAlpha = 220;#endif } return 1;}int disp_page(HDC hdc, int pg_focus) //print page{ int i, n=pg_focus*g_page_line; for( i=0; (i<g_page_line)&&(psz_list[n]!="NE"); i++,n++){ disp_item(hdc, n); }}static int ListBoxWinProc( HWND hWnd, int message, WPARAM wParam, LPARAM lParam ){ HDC hdc,hdc1; int i_prev; HWND hwnd,timeedit; hdc = GetPrivateClientDC( hWnd ); switch( message ) {#if 1 case MSG_CREATE: LoadBitmap (HDC_SCREEN, &bmp1, "hills.jpg"); LoadBitmap (HDC_SCREEN, &bmp2, "sunset.jpg"); disp_list(hWnd, hdc); break;#endif case MSG_KEYDOWN: switch(wParam){ case SCANCODE_CURSORBLOCKUP: printf( "enter key up\n" ); if( (i_focus%g_page_line) > 0 ) { i_prev = i_focus; i_focus--; //disp_item( hdc, i_prev); //disp_item( hdc, i_focus); } else if(( i_focus%g_page_line == 0 ) && ( pg_focus > 0 )){ pg_focus--; i_focus=pg_focus*g_page_line+3; } InvalidateRect(hWnd, NULL, TRUE); break; case SCANCODE_CURSORBLOCKDOWN: printf( "enter key down\n" ); if( (( i_focus%g_page_line)< g_page_line-1 )&&( psz_list[i_focus+1]!="NE" )) { i_prev = i_focus; i_focus++; //disp_item( hdc, i_prev); //disp_item( hdc, i_focus); } else if(( i_focus%g_page_line == g_page_line-1 ) && ( psz_list[i_focus+1]!="NE" ) && ( pg_focus < pg_max )){ pg_focus++; i_focus=pg_focus*g_page_line; } InvalidateRect(hWnd, NULL, TRUE); break; case SCANCODE_ENTER:#if 0 SelectFont( hdc, disp_font1 ); SetBkMode( hdc, BM_OPAQUE ); SetTextColor( hdc, PIXEL_blue ); DrawText( hdc, " ", -1, &rc_text, DT_NOCLIP|DT_SINGLELINE|DT_CENTER|DT_VCENTER ); DrawText( hdc, psz_list[i_focus], -1, &rc_text, DT_NOCLIP|DT_SINGLELINE|DT_CENTER|DT_VCENTER );#endif // MessageBox (hWnd, psz_list[i_focus], "阅读", MB_OK | MB_ICONINFORMATION); switch(i_focus){ case 0: hwndcominfo = CreateWindow (MY_CTRL_INFO, "oo", WS_VISIBLE, IDC_STATIC, 60, 120, 280, 130, hWnd, 0); printf("%d\n", hwndcominfo ); break; case 2: InitDialogBox(hWnd); break; case 3: printf("enter 3\n"); show_resolution(hWnd); break; case 4: GDIDemo_TransparentBitmaps (hWnd, hdc); break; case 7: printf("enter 7\n"); UnloadBitmap (&bmp1); UnloadBitmap (&bmp1); DestroyMainWindow( hWnd ); PostQuitMessage( hWnd ); break; } break; case SCANCODE_CURSORBLOCKRIGHT: if( pg_focus < pg_max ){ pg_focus++; i_focus=pg_focus*g_page_line; InvalidateRect(hWnd, NULL, TRUE); } break; case SCANCODE_CURSORBLOCKLEFT: if( pg_focus > 0 ){ pg_focus--; i_focus=pg_focus*g_page_line; InvalidateRect(hWnd, NULL, TRUE); } break; case SCANCODE_PAGEDOWN: if( i_focus%g_page_line != g_page_line-1 ){ if( pg_focus < pg_max ) i_focus = pg_focus*g_page_line+3; else if( pg_focus == pg_max ) i_focus = M_MAX-2; } else if( i_focus%g_page_line == g_page_line-1 ){ if( pg_focus < pg_max-1 ){ pg_focus++; i_focus = pg_focus*g_page_line+3; } else if( pg_focus == pg_max-1 ){ pg_focus++; i_focus = M_MAX-2; } } InvalidateRect(hWnd, NULL, TRUE); break; case SCANCODE_PAGEUP: if( i_focus%g_page_line != 0 ) i_focus = pg_focus*g_page_line; else if( pg_focus > 0 ){ pg_focus--; i_focus = pg_focus*g_page_line; } InvalidateRect(hWnd, NULL, TRUE); break; case SCANCODE_ESCAPE : printf("esc is print!\n"); DestroyWindow(GetDlgItem(hWnd,IDC_STATIC2 )); //printf("post is enter\n"); PostMessage(hwndcominfo, MSG_CLOSE, 0, 0); //DestroyWindow(hwndcominfo); //UnregisterWindowClass (MY_CTRL_INFO); InvalidateRect (hWnd, NULL, TRUE); break; } break; case MSG_CHAR: switch (wParam) { case 'q': case 'Q': printf("Q is print!\n"); DestroyWindow(GetDlgItem(hWnd,IDC_STATIC2 )); //销毁静态框窗口 break; } break; case MSG_PAINT: hdc = BeginPaint( hWnd ); disp_page(hdc, pg_focus); EndPaint( hWnd, hdc ); break; case MSG_DESTROY: DestroyAllControls( hWnd ); DestroyLogFont( disp_font ); break; case MSG_CLOSE: UnloadBitmap (&bmp1); UnloadBitmap (&bmp1); DestroyMainWindow( hWnd ); PostQuitMessage( hWnd ); break; default: break; } return DefaultMainWinProc( hWnd, message, wParam, lParam );}int MiniGUIMain( int argc, const char* argv[] ){ MSG Msg; HWND hMainWnd; MAINWINCREATE CreateInfo;#ifdef _MGRM_PROCESSES JoinLayer(NAME_DEF_LAYER , "timeeditor" , 0 , 0);#endif RegisterComInfo(); CreateInfo.dwStyle = WS_CAPTION | WS_BORDER | WS_VISIBLE; CreateInfo.dwExStyle = WS_EX_USEPRIVATECDC; CreateInfo.spCaption = "list choose"; CreateInfo.hMenu = 0; CreateInfo.hCursor = GetSystemCursor(0); CreateInfo.hIcon = 0; CreateInfo.MainWindowProc = ListBoxWinProc; CreateInfo.lx = 0; CreateInfo.ty = 0; CreateInfo.rx = 400; CreateInfo.by = 400; CreateInfo.iBkColor = PIXEL_green; CreateInfo.dwAddData = 0; CreateInfo.hHosting = HWND_DESKTOP; hMainWnd = CreateMainWindow( &CreateInfo ); if( hMainWnd == HWND_INVALID ) return 3; ShowWindow( hMainWnd, SW_SHOWNORMAL ); while( GetMessage(&Msg, hMainWnd) ) { TranslateMessage( &Msg ); DispatchMessage( &Msg ); } MainWindowThreadCleanup( hMainWnd ); /* MiniGUIExtCleanUp ();*/#ifdef _LITE_VERSION TermVectorialFonts();#endif return 0;}#ifndef _LITE_VERSION#include <minigui/dti.c>#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -