?? listbox.c
字號:
#include <stdio.h>#include <stdlib.h>#include <string.h>#include <minigui/common.h>#include <minigui/minigui.h>#include <minigui/gdi.h>#include <minigui/window.h>#include <minigui/control.h>#define IDC_CTRL1 100#define IDC_CTRL2 110#define IDC_CTRL3 120#define IDC_CTRL4 130#define IDC_CTRL5 140#define IDC_CTRL6 150static HWND hMainWnd = HWND_INVALID;static int ControlTestWinProc(HWND hWnd, int message, WPARAM wParam, LPARAM lParam){ static HWND hChildWnd1, hChildWnd2, hChildWnd3, hChildWnd4; // static HWND hChildWnd5, hChildWnd6; static HICON hIcon1, hIcon2; LISTBOXITEMINFO lbii; switch (message) { case MSG_CREATE: hChildWnd1 = CreateWindow ("Edit", "Add ListBox Item", WS_CHILD | WS_VISIBLE | WS_BORDER, IDC_CTRL1, 10, 5, 190, 25, hWnd, 0); hChildWnd2 = CreateWindow ("button", "添加", WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON, IDC_CTRL2, 210, 5, 60, 25, hWnd, 0); hChildWnd3 = CreateWindow ("listbox", "Listbox", WS_CHILD | WS_VISIBLE | WS_BORDER | LBS_SORT | LBS_AUTOCHECKBOX | LBS_USEICON | WS_VSCROLL, IDC_CTRL3, 10, 35, 190, 100, hWnd, 0); hChildWnd4 = CreateWindow ("button", "刪除", WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON, IDC_CTRL4, 210, 40, 60, 25, hWnd, 0); hIcon1 = LoadIconFromFile (HDC_SCREEN, "res/audio.ico", 1); hIcon2 = LoadIconFromFile (HDC_SCREEN, "res/cddrive.ico", 1); lbii.insPos = 0; lbii.hIcon = hIcon1; lbii.cmFlag = CMFLAG_CHECKED; lbii.string = "listitem1"; SendMessage (hChildWnd3, LB_ADDSTRING, 0, (LPARAM)&lbii); lbii.cmFlag = CMFLAG_BLANK; lbii.string = "listitem2"; SendMessage (hChildWnd3, LB_ADDSTRING, 0, (LPARAM)&lbii); lbii.cmFlag = CMFLAG_PARTCHECKED; lbii.string = "listitem3"; SendMessage (hChildWnd3, LB_ADDSTRING, 0, (LPARAM)&lbii); lbii.cmFlag = CMFLAG_CHECKED; lbii.string = "listitem4"; SendMessage (hChildWnd3, LB_ADDSTRING, 0, (LPARAM)&lbii); break; case MSG_COMMAND: { int id = LOWORD (wParam); int code = HIWORD (wParam); char buffer [100]; int curSel; switch (id) { case IDC_CTRL2: SendMessage (hChildWnd1, MSG_GETTEXT, 99, (LPARAM)buffer); if (buffer[0] != '\0') { lbii.insPos = 0; lbii.cmFlag = CMFLAG_BLANK; lbii.hIcon = hIcon2; lbii.string = buffer; SendMessage (hChildWnd3, LB_ADDSTRING, 0, (LPARAM)&lbii); } break; case IDC_CTRL4: curSel = SendMessage (hChildWnd3, LB_GETCURSEL, 0, 0); if (curSel >= 0) { if (MessageBox (hWnd, "您確定要刪除這一列表項嗎?", "Listbox", MB_YESNOCANCEL | MB_ICONQUESTION) == IDYES) SendMessage (hChildWnd3, LB_DELETESTRING, curSel, 0); } break; case IDC_CTRL3: if (code == LBN_CLICKCHECKMARK) { int flag; int curHilighted; return 0; curHilighted = SendMessage (hChildWnd3, LB_GETCARETINDEX, 0, 0); flag = SendMessage (hChildWnd3, LB_GETCHECKMARK, curHilighted, 0); if (flag == LB_ERR) break; flag = flag + 1; if (flag > CMFLAG_PARTCHECKED) flag = 0; SendMessage (hChildWnd3, LB_SETCHECKMARK, curHilighted, flag); } } } break; case MSG_CLOSE: DestroyWindow (hChildWnd1); DestroyWindow (hChildWnd2); DestroyWindow (hChildWnd3); DestroyWindow (hChildWnd4); DestroyMainWindow (hWnd); DestroyIcon (hIcon1); DestroyIcon (hIcon2); MainWindowCleanup (hWnd); hMainWnd = HWND_INVALID; return 0; } return DefaultMainWinProc(hWnd, message, wParam, lParam);}static void InitCreateInfo(PMAINWINCREATE pCreateInfo){ pCreateInfo->dwStyle = WS_CAPTION | WS_BORDER | WS_MINIMIZEBOX | WS_MAXIMIZEBOX | WS_VISIBLE; pCreateInfo->dwExStyle = WS_EX_NONE; pCreateInfo->spCaption = "ListBox control" ; pCreateInfo->hMenu = 0; pCreateInfo->hCursor = GetSystemCursor (IDC_ARROW); pCreateInfo->hIcon = 0; pCreateInfo->MainWindowProc = ControlTestWinProc; pCreateInfo->lx = 0; pCreateInfo->ty = 0; pCreateInfo->rx = 400; pCreateInfo->by = 300; pCreateInfo->iBkColor = GetWindowElementColor (BKC_CONTROL_DEF); pCreateInfo->dwAddData = 0; pCreateInfo->hHosting = HWND_DESKTOP;}void listbox_demo (HWND hwnd){ MAINWINCREATE CreateInfo; if (hMainWnd != HWND_INVALID) { ShowWindow (hMainWnd, SW_SHOWNORMAL); return; } InitCreateInfo (&CreateInfo); CreateInfo.hHosting = hwnd; hMainWnd = CreateMainWindow (&CreateInfo);}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -