⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 resmanager.c

📁 该系统用于实现linux下的电子地图的开发。应用MiniGUI进行编程
💻 C
📖 第 1 页 / 共 2 页
字号:
      *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 + -