📄 resmanager.c
字号:
*ptr++ = '/'; *ptr = 0; while ((dir_ent = readdir (dir)) != NULL) { memset (&itemInfo, 0x00, sizeof (TVITEMINFO)); itemInfo.hIconFold = hIconFold; itemInfo.hIconUnfold = hIconUnfold; if (strcmp (dir_ent->d_name, ".") == 0 || strcmp (dir_ent->d_name, "..") == 0) continue; strcpy (ptr, dir_ent->d_name); if (stat (pathname, &my_stat) < 0) { continue; } if (!(S_ISDIR (my_stat.st_mode) || S_ISREG (my_stat.st_mode))) continue; itemInfo.text = (char *) strdup (dir_ent->d_name); if (S_ISDIR (my_stat.st_mode)) { itemInfo.dwFlags = TVIF_FOLD; } itemtree = SendMessage (hWnd, TVM_ADDITEM, (WPARAM) curItem, (LPARAM) & itemInfo); if (S_ISDIR (my_stat.st_mode)) { itemInfo.text = "."; SendMessage (hWnd, TVM_ADDITEM, (WPARAM) itemtree, (LPARAM) & itemInfo); } } closedir (dir); break; }}/* end tree view */static void ModifyListView (char *mypath){ int k = 0; struct stat my_stat; char pathname[PATH_MAX+1]; char *ptr = NULL; SendMessage(hChildWndList,LVM_DELALLITEM,0,0); mydir = opendir (mypath); strcpy(pathname,mypath); ptr = pathname +strlen(pathname); *ptr++='/'; *ptr = 0; while ((mydir_ent = readdir (mydir)) != NULL) {// if (strcmp(mydir_ent->d_name, ".") == 0 || strcmp(mydir_ent->d_name, "..") == 0)// continue; strcpy(ptr,mydir_ent->d_name); if (stat (pathname, &my_stat) < 0 ){ continue; } if ( !( S_ISDIR(my_stat.st_mode) || S_ISREG(my_stat.st_mode) ) ) continue; myitem.nItem = k; myitem.itemData = (DWORD) strdup (mydir_ent->d_name); SendMessage (hChildWndList, LVM_ADDITEM, 0, (LPARAM) & myitem); mysubdata1.nItem = k++; mysubdata1.subItem = 0; mysubdata1.pszText = mydir_ent->d_name; if (S_ISDIR(my_stat.st_mode)){ mysubdata1.flags |= LVFLAG_BITMAP; // mysubdata1.image = (DWORD) & foldercc; mysubdata1.nTextColor = PIXEL_blue; } else { mysubdata1.nTextColor = PIXEL_black; } SendMessage (hChildWndList, LVM_FILLSUBITEM, 0, (LPARAM) & mysubdata1); { int fsize = 0; char buffer [30]; mysubdata1.subItem = 1; if (S_ISREG(my_stat.st_mode) ) fsize = my_stat.st_size; sprintf(buffer, "%d",fsize); mysubdata1.pszText = buffer; mysubdata1.nTextColor = PIXEL_black; SendMessage (hChildWndList, LVM_FILLSUBITEM,0,(LPARAM) & mysubdata1); } mysubdata1.subItem = 2; if (S_ISDIR(my_stat.st_mode)) { mysubdata1.pszText = "directory"; } else if (S_ISREG(my_stat.st_mode)) { mysubdata1.pszText = "regular file"; } mysubdata1.nTextColor = PIXEL_black; SendMessage (hChildWndList, LVM_FILLSUBITEM, 0, (LPARAM) & mysubdata1); mysubdata1.subItem = 3; mysubdata1.pszText = ctime(&my_stat.st_mtime); mysubdata1.pszText[strlen(mysubdata1.pszText)-1] = 0; mysubdata1.nTextColor = PIXEL_black; SendMessage (hChildWndList, LVM_FILLSUBITEM, 0, (LPARAM) & mysubdata1); } closedir (mydir);}static intCtrlTestWinProc (HWND hWnd, int message, WPARAM wParam, LPARAM lParam){ switch (message) { case MSG_CREATE: { static TVITEMINFO dirInfo; DIR *dir; struct dirent *dir_ent; struct stat my_stat; TVITEMINFO tvItemInfo; GHANDLE itemtree; char pathname[PATH_MAX + 1]; char *ptr = NULL; LVCOLUMN s1; hIconFold = LoadIconFromFile (HDC_SCREEN, "res/fold.ico", 0); hIconUnfold = LoadIconFromFile (HDC_SCREEN, "res/unfold.ico", 0); dirInfo.text = "/"; dirInfo.hIconFold = hIconFold; dirInfo.hIconUnfold = hIconUnfold; hChildWnd1 = CreateWindow (CTRL_TREEVIEW, "", WS_VISIBLE | WS_VSCROLL | WS_HSCROLL | WS_BORDER | TVS_WITHICON | TVS_SORT, IDC_TREEVIEW, 10, 20, 200, 350, hWnd, (DWORD) & dirInfo); hChildWndList = CreateWindow (CTRL_LISTVIEW, "List View", WS_CHILD | WS_VISIBLE | WS_VSCROLL | WS_HSCROLL, IDC_LISTVIEW, 210, 20, 400, 350, hWnd, 0); /* tree view */ SetNotificationCallback (hChildWnd1, tv_notify_process); dir = opendir ("/"); strcpy (pathname, "/"); ptr = pathname + strlen (pathname); *ptr++ = '/'; *ptr = 0; while ((dir_ent = readdir (dir)) != NULL) { memset (&tvItemInfo, 0x00, sizeof (TVITEMINFO)); tvItemInfo.hIconFold = hIconFold; tvItemInfo.hIconUnfold = hIconUnfold; if (strcmp (dir_ent->d_name, ".") == 0 || strcmp (dir_ent->d_name, "..") == 0) continue; strcpy (ptr, dir_ent->d_name); if (stat (pathname, &my_stat) < 0) { continue; } if (!(S_ISDIR (my_stat.st_mode) || S_ISREG (my_stat.st_mode))) continue; tvItemInfo.text = (char *) strdup (dir_ent->d_name); if (S_ISDIR (my_stat.st_mode)) { tvItemInfo.dwFlags = TVIF_FOLD; } itemtree = SendMessage (hChildWnd1, TVM_ADDITEM, 0, (LPARAM) & tvItemInfo); if (S_ISDIR (my_stat.st_mode)) { tvItemInfo.text = "."; SendMessage (hChildWnd1, TVM_ADDITEM, (WPARAM) itemtree,(LPARAM) & tvItemInfo); } } closedir (dir); /* end tree view */ // listview LoadBitmapFromFile (HDC_SCREEN, &foldercc, "./res/folder.bmp"); SetNotificationCallback (hChildWndList, lv_notify_process); SendMessage (hChildWndList, LVM_SETHEADHEIGHT, 22, 0); SendMessage (hChildWndList, LVM_SETITEMHEIGHT, 0,35); s1.nCols = 1; s1.pszHeadText = "File name"; s1.width = 100; s1.pfnCompare = NULL; s1.colFlags = 0; SendMessage (hChildWndList, LVM_ADDCOLUMN, 0, (LPARAM) & s1); s1.nCols = 2; s1.pszHeadText = "File size"; s1.width = 100; s1.pfnCompare = (PFNLVCOMPARE)compare_size; s1.colFlags = LVCF_RIGHTALIGN | LVHF_CENTERALIGN; SendMessage (hChildWndList, LVM_ADDCOLUMN, 0, (LPARAM) & s1); s1.nCols = 3; s1.pszHeadText = "Category"; s1.width = 80; s1.pfnCompare = NULL; s1.colFlags = 0; SendMessage (hChildWndList, LVM_ADDCOLUMN, 0, (LPARAM) & s1); s1.nCols = 4; s1.pszHeadText = "Last modified time"; s1.width = 180; s1.pfnCompare = (PFNLVCOMPARE)compare_time; s1.colFlags = LVCF_CENTERALIGN; SendMessage (hChildWndList, LVM_ADDCOLUMN, 0, (LPARAM) & s1); ModifyListView ("/"); } break; case MSG_COMMAND: switch (wParam) { case IDM_NEW: case IDM_OPEN: case IDM_SAVE: case IDM_SAVEAS: break; case IDM_CLOSE: case IDM_EXIT: SendMessage (hWnd, MSG_CLOSE, 0, 0L); break; case IDM_ABOUT_THIS: MessageBox (hWnd, "MiniGUI Controls\n" "Copyright (C) 2003 Feynman Software.\n", "About MiniGUI Controls", MB_OK | MB_ICONINFORMATION | MB_BASEDONPARENT); break; case IDM_ABOUT:#ifdef _MISC_ABOUTDLG#ifdef _LITE_VERSION OpenAboutDialog (hWnd);#else OpenAboutDialog ();#endif#endif break; } break; case MSG_CLOSE: DestroyMainWindow (hWnd); PostQuitMessage (hWnd); return 0; } return DefaultMainWinProc (hWnd, message, wParam, lParam);}static voidInitCreateInfo (PMAINWINCREATE pCreateInfo){ pCreateInfo->dwStyle = WS_BORDER | WS_CAPTION | WS_VISIBLE; pCreateInfo->dwExStyle = 0; pCreateInfo->spCaption = "MiniGUI Resource Manager"; pCreateInfo->hMenu = 0; pCreateInfo->hCursor = GetSystemCursor (IDC_ARROW); pCreateInfo->hIcon = 0; pCreateInfo->MainWindowProc = CtrlTestWinProc; pCreateInfo->lx = 10; pCreateInfo->ty = 10; pCreateInfo->rx = pCreateInfo->lx + 620; pCreateInfo->by = pCreateInfo->ty + 460; pCreateInfo->iBkColor = PIXEL_lightwhite; pCreateInfo->dwAddData = 0; pCreateInfo->hHosting = HWND_DESKTOP;}intMiniGUIMain (int args, const char *arg[]){ MSG Msg; MAINWINCREATE CreateInfo; HWND hMainWnd;#if defined(_LITE_VERSION) && !(_STAND_ALONE) int i; const char* layer = NULL; for (i = 1; i < args; i++) { if (strcmp (arg[i], "-layer") == 0) { layer = arg[i + 1]; break; } } GetLayerInfo (layer, NULL, NULL, NULL); if (JoinLayer (layer, arg[0], 0 , 0) == INV_LAYER_HANDLE) { printf ("JoinLayer: invalid layer handle.\n"); exit (1); }#ifdef _IME_GB2312 GBIMEWindow (HWND_DESKTOP);#endif#endif if (!InitMiniGUIExt ()) { return 2; } InitCreateInfo (&CreateInfo); hMainWnd = CreateMainWindow (&CreateInfo); if (hMainWnd == HWND_INVALID) return 3; while (GetMessage (&Msg, hMainWnd)) { TranslateMessage (&Msg); DispatchMessage (&Msg); } MainWindowThreadCleanup (hMainWnd); MiniGUIExtCleanUp (); return 0;}#ifndef _LITE_VERSION#include <minigui/dti.c>#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -