Diff for /np2/win9x/toolwin.cpp between versions 1.24 and 1.25

version 1.24, 2007/11/11 07:11:27 version 1.25, 2007/12/28 20:36:40
Line 34  enum { Line 34  enum {
         IDC_TOOLPOWER,          IDC_TOOLPOWER,
         IDC_MAXITEMS,          IDC_MAXITEMS,
   
         IDC_BASE                                = 3000,          IDC_BASE                                = 3000
   
         IDM_SKINSEL                             = 3100,  
         IDM_SKINDEF                             = 3101,  
         IDM_SKINMRU                             = 3102,  
         IDM_TOOLCLOSE                   = IDM_SKINMRU + SKINMRU_MAX  
 };  };
   
 enum {  enum {
Line 562  static void tooldrawbutton(HWND hWnd, UI Line 557  static void tooldrawbutton(HWND hWnd, UI
   
 // ----  // ----
   
 static HMENU createskinmenu(void) {  static void setSkinMruMenu(HMENU hMenu)
   {
         HMENU           ret;          HMENU           hmenuSub;
         UINT            cnt;  const OEMCHAR   *pcszBase;
 const OEMCHAR   *base;          UINT            uCount;
         UINT            flag;          OEMCHAR         *pszMru;
         OEMCHAR         *p;  const OEMCHAR   *pcszMruList[SKINMRU_MAX];
         UINT            i;          UINT            i;
           UINT            uID[SKINMRU_MAX];
         UINT            j;          UINT            j;
         UINT            id[SKINMRU_MAX];          UINT            uFlag;
 const OEMCHAR   *file[SKINMRU_MAX];  
   
         ret = CreatePopupMenu();          for (i=0; i<SKINMRU_MAX; i++)
         AppendMenu(ret, MF_STRING, IDM_SKINSEL, str_skinsel);          {
         AppendMenu(ret, MF_SEPARATOR, 0, NULL);                  DeleteMenu(hMenu, IDM_TOOL_SKINMRU + i, MF_BYCOMMAND);
           }
         base = np2tool.skin;  
         flag = (base[0] == '\0')?MF_CHECKED:0;          if (!menu_searchmenu(hMenu, IDM_TOOL_SKINDEF, &hmenuSub, NULL))
         AppendMenu(ret, MF_STRING + flag, IDM_SKINDEF, str_skindef);          {
         for (cnt=0; cnt<SKINMRU_MAX; cnt++) {                  return;
                 p = np2tool.skinmru[cnt];          }
                 if (p[0] == '\0') {  
           pcszBase = np2tool.skin;
   
           CheckMenuItem(hMenu, IDM_TOOL_SKINDEF, MFCHECK(pcszBase[0] == '\0'));
   
           for (uCount=0; uCount<SKINMRU_MAX; uCount++)
           {
                   pszMru = np2tool.skinmru[uCount];
                   if (pszMru[0] == '\0')
                   {
                         break;                          break;
                 }                  }
                 p = file_getname(p);                  pszMru = file_getname(pszMru);
                 for (i=0; i<cnt; i++) {                  for (i=0; i<uCount; i++)
                         if (file_cmpname(p, file[id[i]]) < 0) {                  {
                           if (file_cmpname(pszMru, pcszMruList[uID[i]]) < 0)
                           {
                                 break;                                  break;
                         }                          }
                 }                  }
                 for (j=cnt; j>i; j--) {                  for (j=uCount; j>i; j--)
                         id[j] = id[j-1];                  {
                 }                          uID[j] = uID[j-1];
                 id[i] = cnt;                  }
                 file[cnt] = p;                  uID[i] = uCount;
                   pcszMruList[uCount] = pszMru;
         }          }
         for (i=0; i<cnt; i++) {  
                 j = id[i];          for (i=0; i<uCount; i++)
                 flag = (!file_cmpname(base, np2tool.skinmru[j]))?MF_CHECKED:0;          {
                   j = uID[i];
                   uFlag = MFCHECK(!file_cmpname(pcszBase, np2tool.skinmru[j]));
 #if defined(OSLANG_UTF8)  #if defined(OSLANG_UTF8)
                 TCHAR path[MAX_PATH];                  TCHAR szPath[MAX_PATH];
                 oemtotchar(path, NELEMENTS(path), file[j], -1);                  oemtotchar(szPath, NELEMENTS(szPath), pcszMruList[j], -1);
 #else  #else
                 const TCHAR *path = file[j];                  const TCHAR *szPath = pcszMruList[j];
 #endif  #endif
                 AppendMenu(ret, MF_STRING + flag, IDM_SKINMRU + j, path);                  AppendMenu(hmenuSub, MF_STRING + uFlag, IDM_TOOL_SKINMRU + j, szPath);
         }          }
         return(ret);  
 }  }
   
 static void skinchange(HWND hWnd) {  #if 0
   static HMENU createskinmenu(void)
   {
           HMENU           hMenu;
   const OEMCHAR   *pcszBase;
           UINT            uCount;
           OEMCHAR         *pszMru;
   const OEMCHAR   *pcszMruList[SKINMRU_MAX];
           UINT            i;
           UINT            uID[SKINMRU_MAX];
           UINT            j;
           UINT            uFlag;
   
           hMenu = LoadMenu(g_hInstance, MAKEINTRESOURCE(IDR_TOOLWIN));
   
           pcszBase = np2tool.skin;
   
           CheckMenuItem(hMenu, IDM_TOOL_SKINDEF, MFCHECK(pcszBase[0] == '\0'));
           for (uCount=0; uCount<SKINMRU_MAX; uCount++)
           {
                   pszMru = np2tool.skinmru[uCount];
                   if (pszMru[0] == '\0')
                   {
                           break;
                   }
                   pszMru = file_getname(pszMru);
                   for (i=0; i<uCount; i++)
                   {
                           if (!file_cmpname(pszMru, pcszMruList[uID[i]]))
                           {
                                   break;
                           }
                   }
                   for (j=uCount; j>i; j--)
                   {
                           uID[j] = uID[j-1];
                   }
                   uID[i] = uCount;
                   pcszMruList[uCount] = pszMru;
           }
           for (i=0; i<uCount; i++)
           {
                   j = uID[i];
                   uFlag = MFCHECK(!file_cmpname(pcszBase, np2tool.skinmru[j]));
   #if defined(OSLANG_UTF8)
                   TCHAR szPath[MAX_PATH];
                   oemtotchar(szPath, NELEMENTS(szPath), pcszMruList[j], -1);
   #else
                   const TCHAR *szPath = pcszMruList[j];
   #endif
                   AppendMenu(hMenu, MF_STRING + uFlag, IDM_TOOL_SKINMRU + j, szPath);
           }
           return hMenu;
   }
   #endif
   
   static void skinchange(HWND hWnd)
   {
 const OEMCHAR   *p;  const OEMCHAR   *p;
         UINT            i;          UINT            i;
         HBITMAP         hbmp;          HBITMAP         hbmp;
Line 634  const OEMCHAR *p; Line 698  const OEMCHAR *p;
                 }                  }
                 file_cpyname(np2tool.skinmru[0], p, NELEMENTS(np2tool.skinmru[0]));                  file_cpyname(np2tool.skinmru[0], p, NELEMENTS(np2tool.skinmru[0]));
         }          }
         ModifyMenu(np2class_gethmenu(hWnd), 0, MF_BYPOSITION | MF_POPUP,          setSkinMruMenu(np2class_gethmenu(hWnd));
                                                                         (UINT)createskinmenu(), str_toolskin);          setSkinMruMenu(GetSystemMenu(hWnd, FALSE));
         ModifyMenu(GetSystemMenu(hWnd, FALSE), 0, MF_BYPOSITION | MF_POPUP,  
                                                                         (UINT)createskinmenu(), str_toolskin);  
         DrawMenuBar(hWnd);          DrawMenuBar(hWnd);
         sysmng_update(SYS_UPDATEOSCFG);          sysmng_update(SYS_UPDATEOSCFG);
   
Line 660  const OEMCHAR *p; Line 722  const OEMCHAR *p;
   
 // ----  // ----
   
 static void openpopup(HWND hWnd, LPARAM lp) {  static void openpopup(HWND hWnd, LPARAM lp)
   {
         HMENU   hMenu;          HMENU   hMenu;
         HMENU   mainmenu;  
         POINT   pt;          POINT   pt;
   
         hMenu = CreatePopupMenu();          hMenu = CreatePopupMenu();
         if (!winui_en) {          if (!winui_en)
                 mainmenu = np2class_gethmenu(g_hWndMain);          {
                 menu_addmenubar(hMenu, mainmenu);                  menu_addmenu(hMenu, 0, np2class_gethmenu(g_hWndMain), FALSE);
         }          }
         AppendMenu(hMenu, MF_POPUP, (UINT)createskinmenu(), str_toolskin);          menu_addmenures(hMenu, -1, IDR_TOOLWIN, FALSE);
         AppendMenu(hMenu, MF_SEPARATOR, 0, NULL);          menu_addmenures(hMenu, -1, IDR_CLOSE, TRUE);
         AppendMenu(hMenu, MF_STRING, IDM_TOOLCLOSE, str_toolclose);          setSkinMruMenu(hMenu);
         pt.x = LOWORD(lp);          pt.x = LOWORD(lp);
         pt.y = HIWORD(lp);          pt.y = HIWORD(lp);
         ClientToScreen(hWnd, &pt);          ClientToScreen(hWnd, &pt);
Line 681  static void openpopup(HWND hWnd, LPARAM  Line 742  static void openpopup(HWND hWnd, LPARAM 
         DestroyMenu(hMenu);          DestroyMenu(hMenu);
 }  }
   
 static LRESULT CALLBACK twproc(HWND hWnd, UINT msg, WPARAM wp, LPARAM lp) {  static void toolwin_oncreate(HWND hWnd)
   {
           HMENU   hMenu;
           int             nCount;
   
         HMENU           hMenu;          np2class_wmcreate(hWnd);
           setSkinMruMenu(np2class_gethmenu(hWnd));
   
           hMenu = GetSystemMenu(hWnd, FALSE);
           nCount = menu_addmenures(hMenu, 0, IDR_TOOLWIN, FALSE);
           if (nCount)
           {
                   InsertMenu(hMenu, nCount, MF_BYPOSITION | MF_SEPARATOR, 0, NULL);
                   setSkinMruMenu(hMenu);
           }
   
           np2class_windowtype(hWnd, (np2tool.type & 1) << 1);
           toolwincreate(hWnd);
   }
   
   static LRESULT CALLBACK twproc(HWND hWnd, UINT uMsg, WPARAM wp, LPARAM lp)
   {
         BOOL            r;          BOOL            r;
         UINT            idc;          UINT            idc;
         WINLOCEX        wlex;          WINLOCEX        wlex;
   
         switch(msg) {          switch(uMsg) {
                 case WM_CREATE:                  case WM_CREATE:
                         np2class_wmcreate(hWnd);                          toolwin_oncreate(hWnd);
                         ModifyMenu(np2class_gethmenu(hWnd), 0, MF_BYPOSITION | MF_POPUP,  
                                                                         (UINT)createskinmenu(), str_toolskin);  
                         hMenu = GetSystemMenu(hWnd, FALSE);  
                         InsertMenu(hMenu, 0, MF_BYPOSITION | MF_POPUP,  
                                                                         (UINT)createskinmenu(), str_toolskin);  
                         InsertMenu(hMenu, 1, MF_BYPOSITION | MF_SEPARATOR, 0, NULL);  
   
                         np2class_windowtype(hWnd, (np2tool.type & 1) << 1);  
                         toolwincreate(hWnd);  
                         break;                          break;
   
                 case WM_SYSCOMMAND:                  case WM_SYSCOMMAND:
                         switch(wp) {                          switch(wp) {
                                 case IDM_SKINSEL:                                  case IDM_TOOL_SKINSEL:
                                 case IDM_SKINDEF:                                  case IDM_TOOL_SKINDEF:
                                 case IDM_SKINMRU + 0:                                  case IDM_TOOL_SKINMRU + 0:
                                 case IDM_SKINMRU + 1:                                  case IDM_TOOL_SKINMRU + 1:
                                 case IDM_SKINMRU + 2:                                  case IDM_TOOL_SKINMRU + 2:
                                 case IDM_SKINMRU + 3:                                  case IDM_TOOL_SKINMRU + 3:
                                         return(SendMessage(hWnd, WM_COMMAND, wp, lp));                                          return(SendMessage(hWnd, WM_COMMAND, wp, lp));
   
                                 default:                                  default:
                                         return(DefWindowProc(hWnd, msg, wp, lp));                                          return(DefWindowProc(hWnd, uMsg, wp, lp));
                         }                          }
                         break;                          break;
   
Line 766  static LRESULT CALLBACK twproc(HWND hWnd Line 837  static LRESULT CALLBACK twproc(HWND hWnd
                                         }                                          }
                                         break;                                          break;
   
                                 case IDM_SKINSEL:                                  case IDM_TOOL_SKINSEL:
                                         soundmng_disable(SNDPROC_TOOL);                                          soundmng_disable(SNDPROC_TOOL);
                                         r = dlgs_openfile(hWnd, &fpSkin, np2tool.skin,                                          r = dlgs_openfile(hWnd, &fpSkin, np2tool.skin,
                                                                                         NELEMENTS(np2tool.skin), NULL);                                                                                          NELEMENTS(np2tool.skin), NULL);
Line 776  static LRESULT CALLBACK twproc(HWND hWnd Line 847  static LRESULT CALLBACK twproc(HWND hWnd
                                         }                                          }
                                         break;                                          break;
   
                                 case IDM_SKINDEF:                                  case IDM_TOOL_SKINDEF:
                                         np2tool.skin[0] = '\0';                                          np2tool.skin[0] = '\0';
                                         skinchange(hWnd);                                          skinchange(hWnd);
                                         break;                                          break;
   
                                 case IDM_SKINMRU + 0:                                  case IDM_TOOL_SKINMRU + 0:
                                 case IDM_SKINMRU + 1:                                  case IDM_TOOL_SKINMRU + 1:
                                 case IDM_SKINMRU + 2:                                  case IDM_TOOL_SKINMRU + 2:
                                 case IDM_SKINMRU + 3:                                  case IDM_TOOL_SKINMRU + 3:
                                         file_cpyname(np2tool.skin,                                          file_cpyname(np2tool.skin,
                                                                         np2tool.skinmru[LOWORD(wp) - IDM_SKINMRU],                                                          np2tool.skinmru[LOWORD(wp) - IDM_TOOL_SKINMRU],
                                                                         NELEMENTS(np2tool.skin));                                                          NELEMENTS(np2tool.skin));
                                         skinchange(hWnd);                                          skinchange(hWnd);
                                         break;                                          break;
   
                                 case IDM_TOOLCLOSE:                                  case IDM_CLOSE:
                                         SendMessage(hWnd, WM_CLOSE, 0, 0);                                          SendMessage(hWnd, WM_CLOSE, 0, 0);
                                         break;                                          break;
   
                                 default:                                  default:
                                         if (!winui_en) {                                          if (!winui_en) {
                                                 return(SendMessage(g_hWndMain, msg, wp, lp));                                                  return(SendMessage(g_hWndMain, uMsg, wp, lp));
                                         }                                          }
                                         break;                                          break;
                         }                          }
Line 811  static LRESULT CALLBACK twproc(HWND hWnd Line 882  static LRESULT CALLBACK twproc(HWND hWnd
                                 }                                  }
                                 return(0);                                  return(0);
                         }                          }
                         return(SendMessage(g_hWndMain, msg, wp, lp));                          return(SendMessage(g_hWndMain, uMsg, wp, lp));
   
                 case WM_KEYUP:                  case WM_KEYUP:
                         if ((short)wp == VK_TAB) {                          if ((short)wp == VK_TAB) {
                                 return(0);                                  return(0);
                         }                          }
                         return(SendMessage(g_hWndMain, msg, wp, lp));                          return(SendMessage(g_hWndMain, uMsg, wp, lp));
   
                 case WM_PAINT:                  case WM_PAINT:
                         toolwinpaint(hWnd);                          toolwinpaint(hWnd);
Line 895  static LRESULT CALLBACK twproc(HWND hWnd Line 966  static LRESULT CALLBACK twproc(HWND hWnd
                         break;                          break;
   
                 default:                  default:
                         return(DefWindowProc(hWnd, msg, wp, lp));                          return(DefWindowProc(hWnd, uMsg, wp, lp));
         }          }
         return(0);          return(0);
 }  }
Line 921  void toolwin_create(HINSTANCE hInstance) Line 992  void toolwin_create(HINSTANCE hInstance)
   
         HBITMAP hbmp;          HBITMAP hbmp;
         BITMAP  bmp;          BITMAP  bmp;
           TCHAR   szCaption[128];
         HWND    hWnd;          HWND    hWnd;
   
         if (toolwin.hwnd) {          if (toolwin.hwnd) {
Line 933  void toolwin_create(HINSTANCE hInstance) Line 1005  void toolwin_create(HINSTANCE hInstance)
         }          }
         GetObject(hbmp, sizeof(BITMAP), &bmp);          GetObject(hbmp, sizeof(BITMAP), &bmp);
         toolwin.hbmp = hbmp;          toolwin.hbmp = hbmp;
         hWnd = CreateWindow(np2toolclass, np2tooltitle,  
           loadstringresource(LOWORD(IDS_CAPTION_TOOL),
                                                                                   szCaption, NELEMENTS(szCaption));
           hWnd = CreateWindow(np2toolclass, szCaption,
                                                         WS_SYSMENU | WS_MINIMIZEBOX,                                                          WS_SYSMENU | WS_MINIMIZEBOX,
                                                         np2tool.posx, np2tool.posy,                                                          np2tool.posx, np2tool.posy,
                                                         bmp.bmWidth, bmp.bmHeight,                                                          bmp.bmWidth, bmp.bmHeight,

Removed from v.1.24  
changed lines
  Added in v.1.25


RetroPC.NET-CVS <cvs@retropc.net>