📄 listview.c
字号:
WS_CHILD | WS_VISIBLE | WS_VSCROLL | WS_HSCROLL | WS_BORDER, WS_EX_NONE, IDC_LISTVIEW, 20, 20, 350, 200, hWnd, 0); SetNotificationCallback (hChildWnd1, lv_notify_process); s1.nCols = 0; s1.pszHeadText = "File name"; s1.width = 100; s1.pfnCompare = NULL; s1.colFlags = 0; SendMessage (hChildWnd1, LVM_ADDCOLUMN, 0, (LPARAM) & s1); s1.nCols = 1; s1.pszHeadText = "File size"; s1.width = 100; s1.pfnCompare = compare_size; s1.colFlags = LVCF_RIGHTALIGN | LVHF_CENTERALIGN; SendMessage (hChildWnd1, LVM_ADDCOLUMN, 0, (LPARAM) & s1); s1.nCols = 2; s1.pszHeadText = "Category"; s1.width = 80; s1.pfnCompare = NULL; s1.colFlags = 0; SendMessage (hChildWnd1, LVM_ADDCOLUMN, 0, (LPARAM) & s1); s1.nCols = 3; s1.pszHeadText = "Last modified time"; s1.width = 180; s1.pfnCompare = compare_time; s1.colFlags = LVCF_CENTERALIGN; SendMessage (hChildWnd1, LVM_ADDCOLUMN, 0, (LPARAM) & s1); dir = opendir ("./"); while ( (dir_ent = readdir ( dir )) != NULL ) { if (stat (dir_ent->d_name, &my_stat) < 0 ){ continue; } if ( !( S_ISDIR(my_stat.st_mode) || S_ISREG(my_stat.st_mode) ) ) continue; item.itemData = (DWORD) strdup(dir_ent->d_name); item.nItem = i; item.nItemHeight = 28; SendMessage (hChildWnd1, LVM_ADDITEM, 0, (LPARAM) &item); subdata.nItem = i; subdata.subItem = 0; subdata.pszText = dir_ent->d_name; if (S_ISDIR(my_stat.st_mode)) { subdata.flags |= LVFLAG_BITMAP; subdata.image = (DWORD)&folder; subdata.nTextColor = PIXEL_blue; } else { subdata.nTextColor = PIXEL_black; } SendMessage (hChildWnd1, LVM_FILLSUBITEM, 0, (LPARAM) & subdata); subdata.flags = 0; subdata.image = 0; { int fsize = 0; char buffer[50]; if (S_ISREG(my_stat.st_mode)) fsize = my_stat.st_size; sprintf (buffer, "%d", fsize); subdata.pszText = buffer; subdata.nTextColor = PIXEL_black; subdata.subItem = 1; SendMessage (hChildWnd1, LVM_FILLSUBITEM, 0, (LPARAM) & subdata); } subdata.subItem = 2; if (S_ISDIR(my_stat.st_mode)) { subdata.pszText = "directory"; } else if (S_ISREG(my_stat.st_mode)) { subdata.pszText = "regular file"; } subdata.nTextColor = PIXEL_black; SendMessage (hChildWnd1, LVM_FILLSUBITEM, 0, (LPARAM) & subdata); subdata.subItem = 3; subdata.pszText = ctime(&my_stat.st_mtime); subdata.pszText[strlen(subdata.pszText)-1] = 0; subdata.nTextColor = PIXEL_black; SendMessage (hChildWnd1, LVM_FILLSUBITEM, 0, (LPARAM) & subdata); i++; } closedir (dir); } break; case MSG_COMMAND: { int id = LOWORD (wParam); //int code = HIWORD (wParam); int nSel; char buffer[101]; GetWindowText (GetDlgItem(hWnd, IDC_EDIT), buffer, 100); nSel = atoi(buffer); //printf ("id = %d, wParam = %d\n", id, wParam); switch (id) { case IDC_CTRL1: { HLVITEM hlvi; hlvi = SendMessage (hChildWnd1, LVM_GETSELECTEDITEM, 0, 0); SendMessage (hChildWnd1, LVM_DELITEM, 0, (LPARAM)hlvi ); break; } case IDC_CTRL2: SendMessage (hChildWnd1, LVM_DELALLITEM, 0, 0); break; case IDC_CTRL3: SendMessage (hChildWnd1, LVM_SELECTITEM, nSel, 0); break; case IDC_CTRL4: SendMessage (hChildWnd1, LVM_SELECTITEM, nSel, 0); SendMessage (hChildWnd1, LVM_SHOWITEM, nSel, 0); break; case IDC_CTRL6: SendMessage (hChildWnd1, LVM_DELCOLUMN, nSel, 0); break; case IDC_CTRL7: { LVCOLUMN pcol; pcol.width = 100; pcol.nCols = 2; pcol.pszHeadText = buffer; pcol.nTextMax = strlen (buffer); SendMessage (hChildWnd1, LVM_SETCOLUMN, 0, (LPARAM)&pcol); break; } case IDC_CTRL8: SendMessage (hChildWnd1, LVM_SORTITEMS, 0, (LPARAM)compare_size); break; case IDC_CTRL9: { LVFINDINFO find_info; HLVITEM hlvi; char buffer1[100]; char *text[1]; strcpy (buffer1, "listview.c"); text[0] = buffer1; find_info.iStart = 0; find_info.flags = LVFF_TEXT; find_info.nCols = 0; find_info.pszInfo = text; hlvi = SendMessage (hChildWnd1, LVM_FINDITEM, 0, (LPARAM)&find_info); SendMessage (hChildWnd1, LVM_CHOOSEITEM, 0, hlvi); break; } case IDM_FILE ... IDM_FILE+4: MessageBox (hMainWnd, "In Construction ...", "Sorry", MB_OK); break; } //end switch break; } case MSG_ERASEBKGND: { HDC hdc = (HDC)wParam; const RECT* clip = (const RECT*) lParam; BOOL fGetDC = FALSE; RECT rcTemp; if (hdc == 0) { hdc = GetClientDC (hWnd); fGetDC = TRUE; } if (clip) { rcTemp = *clip; ScreenToClient (hWnd, &rcTemp.left, &rcTemp.top); ScreenToClient (hWnd, &rcTemp.right, &rcTemp.bottom); IncludeClipRect (hdc, &rcTemp); } FillBoxWithBitmap (hdc, 0, 0, 0, 0, &bmp_bkgnd); if (fGetDC) ReleaseDC (hdc); return 0; } case MSG_DESTROY: UnloadBitmap (&folder); DestroyMenu (hRightMenu); DestroyAllControls (hWnd); hMainWnd = HWND_INVALID; return 0; case MSG_CLOSE: DestroyMainWindow (hWnd); MainWindowCleanup (hWnd); return 0; } //end switch return DefaultMainWinProc (hWnd, message, wParam, lParam);}static voidInitCreateInfo (PMAINWINCREATE pCreateInfo){ pCreateInfo->dwStyle = WS_CAPTION | WS_BORDER | WS_MINIMIZEBOX | WS_MAXIMIZEBOX | WS_VISIBLE; pCreateInfo->dwExStyle = WS_EX_NONE; pCreateInfo->spCaption = "ListView control"; pCreateInfo->hMenu = 0; pCreateInfo->hCursor = GetSystemCursor (1); pCreateInfo->hIcon = 0; pCreateInfo->MainWindowProc = ControlTestWinProc; pCreateInfo->lx = 0; pCreateInfo->ty = 0; pCreateInfo->rx = 500; pCreateInfo->by = 350; pCreateInfo->iBkColor = GetWindowElementColor (BKC_CONTROL_DEF); pCreateInfo->dwAddData = 0; pCreateInfo->hHosting = HWND_DESKTOP;}voidlistview_demo (HWND hwnd){ MAINWINCREATE CreateInfo; InitCreateInfo (&CreateInfo); CreateInfo.hHosting = hwnd; hMainWnd = CreateMainWindow (&CreateInfo); if (hMainWnd != HWND_INVALID) { ShowWindow (hMainWnd, SW_SHOWNORMAL); return; }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -