Diff for /np2/win9x/toolwin.cpp between versions 1.6 and 1.12

version 1.6, 2003/10/30 09:08:50 version 1.12, 2003/11/02 17:03:24
Line 2 Line 2
 #include        "strres.h"  #include        "strres.h"
 #include        "resource.h"  #include        "resource.h"
 #include        "np2.h"  #include        "np2.h"
   #include        "winloc.h"
 #include        "dosio.h"  #include        "dosio.h"
 #include        "soundmng.h"  #include        "soundmng.h"
 #include        "sysmng.h"  #include        "sysmng.h"
 #include        "menu.h"  #include        "menu.h"
 #include        "toolwin.h"  #include        "toolwin.h"
 #include        "ini.h"  #include        "ini.h"
   #include        "np2class.h"
 #include        "dialog.h"  #include        "dialog.h"
 #include        "dialogs.h"  #include        "dialogs.h"
 #include        "pccore.h"  #include        "pccore.h"
 #include        "diskdrv.h"  #include        "diskdrv.h"
   
   
   extern WINLOCEX np2_winlocexallwin(HWND base);
   
   
 enum {  enum {
         IDC_TOOLHDDACC                  = 0,          IDC_TOOLHDDACC                  = 0,
         IDC_TOOLFDD1ACC,          IDC_TOOLFDD1ACC,
Line 24  enum { Line 29  enum {
         IDC_TOOLFDD2LIST,          IDC_TOOLFDD2LIST,
         IDC_TOOLFDD2BROWSE,          IDC_TOOLFDD2BROWSE,
         IDC_TOOLFDD2EJECT,          IDC_TOOLFDD2EJECT,
           IDC_TOOLRESET,
           IDC_TOOLPOWER,
         IDC_MAXITEMS,          IDC_MAXITEMS,
   
         IDC_BASE                                = 3000,          IDC_BASE                                = 3000,
   
         IDC_SKINDEF                             = 3100,          IDC_SKINSEL                             = 3100,
         IDC_SKINSEL                             = 3101,          IDC_SKINDEF                             = 3101,
         IDC_TOOLCLOSE                   = 3102          IDC_SKINMRU                             = 3102,
           IDC_TOOLCLOSE                   = IDC_SKINMRU + SKINMRU_MAX
   };
   
   enum {
           TCTL_STATIC                             = 0,
           TCTL_BUTTON                             = 1,
           TCTL_DDLIST                             = 2
 };  };
   
 typedef struct {  typedef struct {
Line 42  typedef struct { Line 56  typedef struct {
 } TOOLSKIN;  } TOOLSKIN;
   
 typedef struct {  typedef struct {
 const char      *cname;          UINT    tctl;
 const char      *text;  const char      *text;
         DWORD   style;  
         short   posx;          short   posx;
         short   posy;          short   posy;
         short   width;          short   width;
         short   height;          short   height;
         BOOL    tabstop;          short   extend;
           short   padding;
 } SUBITEM;  } SUBITEM;
   
 typedef struct {  typedef struct {
         HWND                    hwnd;          HWND                    hwnd;
           WINLOCEX                wlex;
         HBITMAP                 hbmp;          HBITMAP                 hbmp;
         BYTE                    fddaccess[2];          BYTE                    fddaccess[2];
         BYTE                    hddaccess;          BYTE                    hddaccess;
Line 73  typedef struct { Line 88  typedef struct {
         SUBCLASSPROC    subproc[IDC_MAXITEMS];          SUBCLASSPROC    subproc[IDC_MAXITEMS];
 } TOOLWIN;  } TOOLWIN;
   
   enum {
           GTWL_FOCUS              = NP2GWL_SIZE + 0,
           GTWL_SIZE               = NP2GWL_SIZE + 4
   };
   
                 NP2TOOL         np2tool;                  NP2TOOL         np2tool;
 static  TOOLSKIN        toolskin;  static  TOOLSKIN        toolskin;
Line 101  static const DISKACC diskacc[3] = { Line 120  static const DISKACC diskacc[3] = {
 static HBITMAP skinload(const char *path) {  static HBITMAP skinload(const char *path) {
   
         char    fname[MAX_PATH];          char    fname[MAX_PATH];
           UINT    i;
         HBITMAP ret;          HBITMAP ret;
   
         ZeroMemory(&toolskin, sizeof(toolskin));          ZeroMemory(&toolskin, sizeof(toolskin));
Line 108  static HBITMAP skinload(const char *path Line 128  static HBITMAP skinload(const char *path
         milstr_ncpy(toolskin.font, str_deffont, sizeof(toolskin.font));          milstr_ncpy(toolskin.font, str_deffont, sizeof(toolskin.font));
         toolskin.color1 = 0x600000;          toolskin.color1 = 0x600000;
         toolskin.color2 = 0xff0000;          toolskin.color2 = 0xff0000;
         CopyMemory(subitem, defsubitem, sizeof(defsubitem));  
   
         if (path) {          if (path) {
                 ini_read(path, skintitle, skinini, sizeof(skinini)/sizeof(INITBL));                  ini_read(path, skintitle, skinini1, sizeof(skinini1)/sizeof(INITBL));
           }
           if (toolskin.main[0]) {
                   ZeroMemory(subitem, sizeof(defsubitem));
                   for (i=0; i<IDC_MAXITEMS; i++) {
                           subitem[i].tctl = defsubitem[i].tctl;
                           subitem[i].text = defsubitem[i].text;
                   }
         }          }
         if ((path) && (toolskin.main[0])) {          else {
                   CopyMemory(subitem, defsubitem, sizeof(defsubitem));
           }
           if (path) {
                   ini_read(path, skintitle, skinini2, sizeof(skinini2)/sizeof(INITBL));
           }
           if (toolskin.main[0]) {
                 milstr_ncpy(fname, path, sizeof(fname));                  milstr_ncpy(fname, path, sizeof(fname));
                 file_cutname(fname);                  file_cutname(fname);
                 file_catname(fname, toolskin.main, sizeof(fname));                  file_catname(fname, toolskin.main, sizeof(fname));
Line 233  static void sellist(UINT drv) { Line 264  static void sellist(UINT drv) {
         }          }
 }  }
   
 static void remakefddlist(UINT drv) {  static void remakefddlist(HWND hwnd, TOOLFDD *fdd) {
   
         TOOLFDD *fdd;  
         char    *p;          char    *p;
         UINT    cnt;          UINT    cnt;
         char    *q;          char    *q;
Line 244  static void remakefddlist(UINT drv) { Line 274  static void remakefddlist(UINT drv) {
         UINT    j;          UINT    j;
         UINT    sel;          UINT    sel;
   
         if (drv >= FDDLIST_DRV) {  
                 return;  
         }  
         fdd = np2tool.fdd + drv;  
         p = fdd->name[0];          p = fdd->name[0];
         for (cnt=0; cnt<FDDLIST_MAX; cnt++) {          for (cnt=0; cnt<FDDLIST_MAX; cnt++) {
                 if (p[0] == '\0') {                  if (p[0] == '\0') {
Line 276  static void remakefddlist(UINT drv) { Line 302  static void remakefddlist(UINT drv) {
                         }                          }
                 }                  }
         }          }
         setlist(toolwin.sub[fddlist[drv]], fdd, sel);          setlist(hwnd, fdd, sel);
 }  }
   
 static void accdraw(HWND hWnd, BYTE count) {  static void accdraw(HWND hWnd, BYTE count) {
Line 302  static LRESULT CALLBACK twsub(HWND hWnd, Line 328  static LRESULT CALLBACK twsub(HWND hWnd,
         int             files;          int             files;
         char    fname[MAX_PATH];          char    fname[MAX_PATH];
   
         for (idc=0; idc<IDC_MAXITEMS; idc++) {          idc = GetWindowLong(hWnd, GWL_ID) - IDC_BASE;
                 if (toolwin.sub[idc] == hWnd) {  
                         break;  
                 }  
         }  
         if (idc >= IDC_MAXITEMS) {          if (idc >= IDC_MAXITEMS) {
                 return(0);                  return(0);
         }          }
         if (msg == WM_KEYDOWN) {          if (msg == WM_KEYDOWN) {
                 if ((TCHAR)wp == VK_TAB) {                  if ((short)wp == VK_TAB) {
                         dir = (GetKeyState(VK_SHIFT) >= 0)?1:-1;                          dir = (GetKeyState(VK_SHIFT) >= 0)?1:-1;
                         newidc = idc;                          newidc = idc;
                         do {                          do {
Line 319  static LRESULT CALLBACK twsub(HWND hWnd, Line 341  static LRESULT CALLBACK twsub(HWND hWnd,
                                 if (newidc >= IDC_MAXITEMS) {                                  if (newidc >= IDC_MAXITEMS) {
                                         newidc = (dir >= 0)?0:(IDC_MAXITEMS - 1);                                          newidc = (dir >= 0)?0:(IDC_MAXITEMS - 1);
                                 }                                  }
                                 if (subitem[newidc].tabstop) {                                  if ((toolwin.sub[newidc] != NULL) &&
                                           (subitem[newidc].tctl != TCTL_STATIC)) {
                                         SetFocus(toolwin.sub[newidc]);                                          SetFocus(toolwin.sub[newidc]);
                                         break;                                          break;
                                 }                                  }
                         } while(idc != newidc);                          } while(idc != newidc);
                 }                  }
                 else if ((TCHAR)wp == VK_RETURN) {                  else if ((short)wp == VK_RETURN) {
                         if (subitem[idc].cname == str_button) {                          if (subitem[idc].tctl == TCTL_BUTTON) {
                                 return(CallWindowProc(toolwin.subproc[idc],                                  return(CallWindowProc(toolwin.subproc[idc],
                                                                                 hWnd, WM_KEYDOWN, VK_SPACE, 0));                                                                                  hWnd, WM_KEYDOWN, VK_SPACE, 0));
                         }                          }
Line 362  static LRESULT CALLBACK twsub(HWND hWnd, Line 385  static LRESULT CALLBACK twsub(HWND hWnd,
                         return(FALSE);                          return(FALSE);
                 }                  }
         }          }
           else if (msg == WM_SETFOCUS) {
                   SetWindowLong(GetParent(hWnd), GTWL_FOCUS, idc);
           }
         return(CallWindowProc(toolwin.subproc[idc], hWnd, msg, wp, lp));          return(CallWindowProc(toolwin.subproc[idc], hWnd, msg, wp, lp));
 }  }
   
Line 371  static void toolwincreate(HWND hWnd) { Line 397  static void toolwincreate(HWND hWnd) {
 const SUBITEM   *p;  const SUBITEM   *p;
         UINT            i;          UINT            i;
         HWND            sub;          HWND            sub;
   const char              *cls;
           DWORD           style;
   
         toolwin.hfont = CreateFont(toolskin.fontsize, 0, 0, 0, 0, 0, 0, 0,          toolwin.hfont = CreateFont(toolskin.fontsize, 0, 0, 0, 0, 0, 0, 0,
                                         SHIFTJIS_CHARSET, OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS,                                          SHIFTJIS_CHARSET, OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS,
Line 385  const SUBITEM *p; Line 413  const SUBITEM *p;
   
         p = subitem;          p = subitem;
         for (i=0; i<IDC_MAXITEMS; i++) {          for (i=0; i<IDC_MAXITEMS; i++) {
                 sub = CreateWindow(p->cname, p->text,                  sub = NULL;
                                 WS_CHILD | p->style, p->posx, p->posy, p->width, p->height,                  cls = NULL;
                                 hWnd, (HMENU)(i + IDC_BASE), hInst, NULL);                  switch(p->tctl) {
                           case TCTL_STATIC:
                                   cls = str_static;
                                   style = 0;
                                   break;
   
                           case TCTL_BUTTON:
                                   if (p->extend == 0) {
                                           cls = str_button;
                                           style = BS_PUSHBUTTON;
                                   }
                                   else if (p->extend == 1) {
                                           cls = str_button;
                                           style = BS_OWNERDRAW;
                                   }
                                   break;
   
                           case TCTL_DDLIST:
                                   cls = str_combobox;
                                   style = CBS_DROPDOWNLIST | WS_VSCROLL;
                                   break;
                   }
                   if ((cls) && (p->width > 0) && (p->height > 0)) {
                           sub = CreateWindow(cls, p->text, WS_CHILD | WS_VISIBLE | style,
                                                           p->posx, p->posy, p->width, p->height,
                                                           hWnd, (HMENU)(i + IDC_BASE), hInst, NULL);
                   }
                 toolwin.sub[i] = sub;                  toolwin.sub[i] = sub;
                 toolwin.subproc[i] = (SUBCLASSPROC)GetWindowLong(sub, GWL_WNDPROC);                  toolwin.subproc[i] = NULL;
                 SetWindowLong(sub, GWL_WNDPROC, (LONG)twsub);                  if (sub) {
                 SendMessage(sub, WM_SETFONT, (WPARAM)toolwin.hfont,                          toolwin.subproc[i] = (SUBCLASSPROC)GetWindowLong(sub, GWL_WNDPROC);
                           SetWindowLong(sub, GWL_WNDPROC, (LONG)twsub);
                           SendMessage(sub, WM_SETFONT, (WPARAM)toolwin.hfont,
                                                                                                                 MAKELPARAM(TRUE, 0));                                                                                                                  MAKELPARAM(TRUE, 0));
                   }
                 p++;                  p++;
         }          }
         for (i=0; i<FDDLIST_DRV; i++) {          for (i=0; i<FDDLIST_DRV; i++) {
                 DragAcceptFiles(toolwin.sub[fddlist[i]], TRUE);                  sub = toolwin.sub[fddlist[i]];
                 remakefddlist((BYTE)i);                  if (sub) {
                           DragAcceptFiles(sub, TRUE);
                           remakefddlist(sub, np2tool.fdd + i);
                   }
         }          }
           for (i=0; i<IDC_MAXITEMS; i++) {
                   if ((toolwin.sub[i]) && (subitem[i].tctl != TCTL_STATIC)) {
                           break;
                   }
           }
           SetWindowLong(hWnd, GTWL_FOCUS, i);
 }  }
   
 static void toolwindestroy(void) {  static void toolwindestroy(void) {
   
         UINT    i;          UINT    i;
           HWND    sub;
   
         if (toolwin.hbmp) {          if (toolwin.hbmp) {
                 for (i=0; i<IDC_MAXITEMS; i++) {                  for (i=0; i<IDC_MAXITEMS; i++) {
                         DestroyWindow(toolwin.sub[i]);                          sub = toolwin.sub[i];
                           if (sub) {
                                   DestroyWindow(sub);
                           }
                 }                  }
                 DeleteObject(toolwin.access[0]);                  DeleteObject(toolwin.access[0]);
                 DeleteObject(toolwin.access[1]);                  DeleteObject(toolwin.access[1]);
Line 436  static void toolwinpaint(HWND hWnd) { Line 506  static void toolwinpaint(HWND hWnd) {
         EndPaint(hWnd, &ps);          EndPaint(hWnd, &ps);
 }  }
   
 static void changeskin(HWND hWnd) {  static void tooldrawbutton(HWND hWnd, UINT idc, LPDRAWITEMSTRUCT lpdis) {
   
         HBITMAP hbmp;          POINT   pt;
         BITMAP  bmp;          HWND    sub;
           RECT    rect;
           HDC             hdc;
           HDC             hmdc;
           RECT    btn;
   
         toolwin_movingstart();          idc -= IDC_BASE;
         toolwindestroy();          if (idc >= IDC_MAXITEMS) {
         hbmp = skinload(np2tool.skin);  
         if (hbmp == NULL) {  
                 SendMessage(hWnd, WM_CLOSE, 0, 0);  
                 return;                  return;
         }          }
         GetObject(hbmp, sizeof(BITMAP), &bmp);          pt.x = 0;
         toolwin.hbmp = hbmp;          pt.y = 0;
         MoveWindow(hWnd, np2tool.posx, np2tool.posy,          ClientToScreen(hWnd, &pt);
                                                                                         bmp.bmWidth, bmp.bmHeight, TRUE);          sub = toolwin.sub[idc];
         toolwincreate(hWnd);          GetWindowRect(sub, &rect);
         toolwin_movingend();          btn.left = 0;
           btn.top = 0;
           btn.right = rect.right - rect.left;
           btn.bottom = rect.bottom - rect.top;
           hdc = lpdis->hDC;
           if (toolwin.hbmp) {
                   hmdc = CreateCompatibleDC(hdc);
                   SelectObject(hmdc, toolwin.hbmp);
                   BitBlt(hdc, 0, 0, btn.right, btn.bottom,
                                           hmdc, rect.left - pt.x, rect.top - pt.y, SRCCOPY);
                   DeleteDC(hmdc);
           }
           if (lpdis->itemState & ODS_FOCUS) {
                   DrawFocusRect(hdc, &btn);
           }
 }  }
   
   
 // ---- moving  // ----
   
 enum {  
         SNAPDOTPULL             = 12,  
         SNAPDOTREL              = 16  
 };  
   
 static void movingstart(void) {  
   
         toolwin.winflg = 0;  static HMENU createskinmenu(void) {
         toolwin.wingx = 0;  
         toolwin.wingy = 0;  
 }  
   
 static void movingproc(RECT *rect) {  
   
         RECT    workrc;  
         RECT    mainrc;  
         int             winlx;  
         int             winly;  
         BOOL    changes;  
         BOOL    connectx;  
         BOOL    connecty;  
         int             d;  
   
         SystemParametersInfo(SPI_GETWORKAREA, 0, &workrc, 0);  
         GetWindowRect(hWndMain, &mainrc);  
         winlx = rect->right - rect->left;  
         winly = rect->bottom - rect->top;  
   
         if ((winlx > (workrc.right - workrc.left)) ||          HMENU   ret;
                 (winly > (workrc.bottom - workrc.top))) {          UINT    cnt;
                 return;  const char      *base;
         }          UINT    flag;
           char    *p;
           UINT    i;
           UINT    j;
           UINT    id[SKINMRU_MAX];
   const char      *file[SKINMRU_MAX];
   
         if (toolwin.winflg & 0x03) {          ret = CreatePopupMenu();
                 toolwin.wingx += rect->left - toolwin.wintx;          AppendMenu(ret, MF_STRING, IDC_SKINSEL, str_skinsel);
                 rect->left = toolwin.wintx;          AppendMenu(ret, MF_SEPARATOR, 0, NULL);
                 if ((toolwin.wingx >= SNAPDOTREL) || (toolwin.wingx <= -SNAPDOTREL)) {  
                         toolwin.winflg &= ~0x03;          base = np2tool.skin;
                         rect->left += toolwin.wingx;          flag = (base[0] == '\0')?MF_CHECKED:0;
                         toolwin.wingx = 0;          AppendMenu(ret, MF_STRING + flag, IDC_SKINDEF, str_skindef);
                 }          for (cnt=0; cnt<SKINMRU_MAX; cnt++) {
                 rect->right = rect->left + winlx;                  p = np2tool.skinmru[cnt];
         }                  if (p[0] == '\0') {
         if (toolwin.winflg & 0x0c) {                          break;
                 toolwin.wingy += rect->top - toolwin.winty;  
                 rect->top = toolwin.winty;  
                 if ((toolwin.wingy >= SNAPDOTREL) || (toolwin.wingy <= -SNAPDOTREL)) {  
                         toolwin.winflg &= ~0x0c;  
                         rect->top += toolwin.wingy;  
                         toolwin.wingy = 0;  
                 }  
                 rect->bottom = rect->top + winly;  
         }  
   
         connectx = ((rect->right >= mainrc.left) && (rect->left <= mainrc.right));  
         connecty = ((rect->bottom >= mainrc.top) && (rect->top <= mainrc.bottom));  
         if ((!connectx) || (!connecty)) {  
                 if (toolwin.winflg & 0x01) {  
                         toolwin.winflg &= ~0x01;  
                         rect->left += toolwin.wingx;  
                         rect->right = rect->left + winlx;  
                         toolwin.wingx = 0;  
                 }  
                 if (toolwin.winflg & 0x04) {  
                         toolwin.winflg &= ~0x04;  
                         rect->top += toolwin.wingy;  
                         rect->bottom = rect->top + winly;  
                         toolwin.wingy = 0;  
                 }                  }
         }                  p = file_getname(p);
                   for (i=0; i<cnt; i++) {
         do {                          if (file_cmpname(p, file[id[i]]) < 0) {
                 changes = FALSE;                                  break;
                 if ((!(toolwin.winflg & 0x01)) &&  
                         (rect->bottom >= mainrc.top) && (rect->top <= mainrc.bottom)) {  
                         do {  
                                 d = rect->left - mainrc.right;  
                                 if ((d < SNAPDOTPULL) && (d > -SNAPDOTPULL)) {  
                                         break;  
                                 }  
                                 d = rect->right - mainrc.left;  
                                 if ((d < SNAPDOTPULL) && (d > -SNAPDOTPULL)) {  
                                         break;  
                                 }  
                                 if ((rect->bottom == mainrc.top) ||  
                                         (rect->top == mainrc.bottom)) {  
                                         d = rect->left - mainrc.left;  
                                         if ((d < SNAPDOTPULL) && (d > -SNAPDOTPULL)) {  
                                                 break;  
                                         }  
                                         d = rect->right - mainrc.right;  
                                         if ((d < SNAPDOTPULL) && (d > -SNAPDOTPULL)) {  
                                                 break;  
                                         }  
                                 }  
                         } while(0);  
                         if ((d < SNAPDOTPULL) && (d > -SNAPDOTPULL)) {  
                                 toolwin.winflg |= 0x01;  
                                 rect->left -= d;  
                                 rect->right = rect->left + winlx;  
                                 toolwin.wingx = d;  
                                 toolwin.wintx = rect->left;  
                                 changes = TRUE;  
                         }                          }
                 }                  }
                 if (!(toolwin.winflg & 0x03)) {                  for (j=cnt; j>i; j--) {
                         do {                          id[j] = id[j-1];
                                 d = rect->left - workrc.left;  
                                 if ((d < SNAPDOTPULL) && (d > -SNAPDOTPULL)) {  
                                         break;  
                                 }  
                                 d = rect->right - workrc.right;  
                                 if ((d < SNAPDOTPULL) && (d > -SNAPDOTPULL)) {  
                                         break;  
                                 }  
                         } while(0);  
                         if ((d < SNAPDOTPULL) && (d > -SNAPDOTPULL)) {  
                                 toolwin.winflg |= 0x02;  
                                 rect->left -= d;  
                                 rect->right = rect->left + winlx;  
                                 toolwin.wingx = d;  
                                 toolwin.wintx = rect->left;  
                                 changes = TRUE;  
                         }  
                 }                  }
                   id[i] = cnt;
                   file[cnt] = p;
           }
           for (i=0; i<cnt; i++) {
                   j = id[i];
                   flag = (!file_cmpname(base, np2tool.skinmru[j]))?MF_CHECKED:0;
                   AppendMenu(ret, MF_STRING + flag, IDC_SKINMRU + j, file[j]);
           }
           return(ret);
   }
   
                 if ((!(toolwin.winflg & 0x04)) &&  static void skinchange(HWND hWnd) {
                         (rect->right >= mainrc.left) && (rect->left <= mainrc.right)) {  
                         do {  const char              *p;
                                 d = rect->top - mainrc.bottom;          UINT            i;
                                 if ((d < SNAPDOTPULL) && (d > -SNAPDOTPULL)) {          HBITMAP         hbmp;
                                         break;          BITMAP          bmp;
                                 }          WINLOCEX        wlex;
                                 d = rect->bottom - mainrc.top;  
                                 if ((d < SNAPDOTPULL) && (d > -SNAPDOTPULL)) {          p = np2tool.skin;
                                         break;          if (p[0]) {
                                 }                  for (i=0; i<(SKINMRU_MAX - 1); i++) {
                                 if ((rect->right == mainrc.left) ||                          if (!file_cmpname(p, np2tool.skinmru[i])) {
                                         (rect->left == mainrc.right)) {                                  break;
                                         d = rect->top - mainrc.top;  
                                         if ((d < SNAPDOTPULL) && (d > -SNAPDOTPULL)) {  
                                                 break;  
                                         }  
                                         d = rect->bottom - mainrc.bottom;  
                                         if ((d < SNAPDOTPULL) && (d > -SNAPDOTPULL)) {  
                                                 break;  
                                         }  
                                 }  
                         } while(0);  
                         if ((d < SNAPDOTPULL) && (d > -SNAPDOTPULL)) {  
                                 toolwin.winflg |= 0x04;  
                                 rect->top -= d;  
                                 rect->bottom = rect->top + winly;  
                                 toolwin.wingy = d;  
                                 toolwin.winty = rect->top;  
                                 changes = TRUE;  
                         }                          }
                 }                  }
                 if (!(toolwin.winflg & 0x0c)) {                  while(i > 0) {
                         do {                          CopyMemory(np2tool.skinmru[i], np2tool.skinmru[i-1],
                                 d = rect->top - workrc.top;                                                                                                  sizeof(np2tool.skinmru[0]));
                                 if ((d < SNAPDOTPULL) && (d > -SNAPDOTPULL)) {                          i--;
                                         break;  
                                 }  
                                 d = rect->bottom - workrc.bottom;  
                                 if ((d < SNAPDOTPULL) && (d > -SNAPDOTPULL)) {  
                                         break;  
                                 }  
                         } while(0);  
                         if ((d < SNAPDOTPULL) && (d > -SNAPDOTPULL)) {  
                                 toolwin.winflg |= 0x08;  
                                 rect->top -= d;  
                                 rect->bottom = rect->top + winly;  
                                 toolwin.wingy = d;  
                                 toolwin.winty = rect->top;  
                                 changes = TRUE;  
                         }  
                 }                  }
         } while(changes);                  file_cpyname(np2tool.skinmru[0], p, sizeof(np2tool.skinmru[0]));
           }
           ModifyMenu(GetSystemMenu(hWnd, FALSE), 0, MF_BYPOSITION | MF_POPUP,
                                                                           (UINT)createskinmenu(), str_toolskin);
           DrawMenuBar(hWnd);
           sysmng_update(SYS_UPDATEOSCFG);
   
           wlex = np2_winlocexallwin(hWndMain);
           toolwindestroy();
           hbmp = skinload(np2tool.skin);
           if (hbmp == NULL) {
                   SendMessage(hWnd, WM_CLOSE, 0, 0);
                   return;
           }
           GetObject(hbmp, sizeof(BITMAP), &bmp);
           toolwin.hbmp = hbmp;
           winloc_setclientsize(hWnd, bmp.bmWidth, bmp.bmHeight);
           toolwincreate(hWnd);
           winlocex_move(wlex);
           winlocex_destroy(wlex);
 }  }
   
   
 // ----  // ----
   
 static void open_popup(HWND hWnd, LPARAM lp) {  static void openpopup(HWND hWnd, LPARAM lp) {
   
         HMENU           hMenu;          HMENU   hMenu;
         POINT           pt;          POINT   pt;
   
         hMenu = CreatePopupMenu();          hMenu = CreatePopupMenu();
         AppendMenu(hMenu, MF_STRING, IDC_SKINDEF, str_skindef);          AppendMenu(hMenu, MF_POPUP, (UINT)createskinmenu(), str_toolskin);
         AppendMenu(hMenu, MF_STRING, IDC_SKINSEL, str_skinsel);  
         AppendMenu(hMenu, MF_SEPARATOR, 0, NULL);          AppendMenu(hMenu, MF_SEPARATOR, 0, NULL);
         AppendMenu(hMenu, MF_STRING, IDC_TOOLCLOSE, str_toolclose);          AppendMenu(hMenu, MF_STRING, IDC_TOOLCLOSE, str_toolclose);
         pt.x = LOWORD(lp);          pt.x = LOWORD(lp);
Line 662  static void open_popup(HWND hWnd, LPARAM Line 651  static void open_popup(HWND hWnd, LPARAM
   
 static LRESULT CALLBACK twproc(HWND hWnd, UINT msg, WPARAM wp, LPARAM lp) {  static LRESULT CALLBACK twproc(HWND hWnd, UINT msg, WPARAM wp, LPARAM lp) {
   
         BOOL    r;          HMENU           hMenu;
           BOOL            r;
           UINT            idc;
           WINLOCEX        wlex;
   
         switch(msg) {          switch(msg) {
                 case WM_CREATE:                  case WM_CREATE:
                         SetWindowLong(hWnd, GWL_STYLE,                          hMenu = GetSystemMenu(hWnd, FALSE);
                                                         GetWindowLong(hWnd, GWL_STYLE) & (~WS_CAPTION));                          InsertMenu(hMenu, 0, MF_BYPOSITION | MF_POPUP,
                         SetWindowPos(hWnd, 0, 0, 0, 0, 0,                                                                          (UINT)createskinmenu(), str_toolskin);
                                         SWP_DRAWFRAME | SWP_NOMOVE | SWP_NOSIZE | SWP_NOZORDER);                          InsertMenu(hMenu, 1, MF_BYPOSITION | MF_SEPARATOR, 0, NULL);
   
                           np2class_windowtype(hWnd, np2tool.type);
                         toolwincreate(hWnd);                          toolwincreate(hWnd);
                         break;                          break;
   
                 case WM_SYSCOMMAND:                  case WM_SYSCOMMAND:
                         switch(wp) {                          switch(wp) {
                                 case IDC_SKINDEF:  
                                         np2tool.skin[0] = '\0';  
                                         changeskin(hWnd);  
                                         sysmng_update(SYS_UPDATEOSCFG);  
                                         break;  
   
                                 case IDC_SKINSEL:                                  case IDC_SKINSEL:
                                         soundmng_stop();                                  case IDC_SKINDEF:
                                         r = dlgs_selectfile(hWnd, &skinui, np2tool.skin,                                  case IDC_SKINMRU + 0:
                                                                                         sizeof(np2tool.skin), NULL);                                  case IDC_SKINMRU + 1:
                                         soundmng_play();                                  case IDC_SKINMRU + 2:
                                         if (r) {                                  case IDC_SKINMRU + 3:
                                                 changeskin(hWnd);                                          return(SendMessage(hWnd, WM_COMMAND, wp, lp));
                                                 sysmng_update(SYS_UPDATEOSCFG);  
                                         }  
                                         break;  
   
                                 default:                                  default:
                                         return(DefWindowProc(hWnd, msg, wp, lp));                                          return(DefWindowProc(hWnd, msg, wp, lp));
Line 706  static LRESULT CALLBACK twproc(HWND hWnd Line 691  static LRESULT CALLBACK twproc(HWND hWnd
                                         break;                                          break;
   
                                 case IDC_BASE + IDC_TOOLFDD1BROWSE:                                  case IDC_BASE + IDC_TOOLFDD1BROWSE:
                                         soundmng_stop();                                          soundmng_disable(SNDPROC_TOOL);
                                         dialog_changefdd(hWnd, 0);                                          dialog_changefdd(hWnd, 0);
                                         soundmng_play();                                          soundmng_enable(SNDPROC_TOOL);
                                         break;                                          break;
   
                                 case IDC_BASE + IDC_TOOLFDD1EJECT:                                  case IDC_BASE + IDC_TOOLFDD1EJECT:
Line 723  static LRESULT CALLBACK twproc(HWND hWnd Line 708  static LRESULT CALLBACK twproc(HWND hWnd
                                         break;                                          break;
   
                                 case IDC_BASE + IDC_TOOLFDD2BROWSE:                                  case IDC_BASE + IDC_TOOLFDD2BROWSE:
                                         soundmng_stop();                                          soundmng_disable(SNDPROC_TOOL);
                                         dialog_changefdd(hWnd, 1);                                          dialog_changefdd(hWnd, 1);
                                         soundmng_play();                                          soundmng_enable(SNDPROC_TOOL);
                                         break;                                          break;
   
                                 case IDC_BASE + IDC_TOOLFDD2EJECT:                                  case IDC_BASE + IDC_TOOLFDD2EJECT:
Line 733  static LRESULT CALLBACK twproc(HWND hWnd Line 718  static LRESULT CALLBACK twproc(HWND hWnd
                                         toolwin_setfdd(1, NULL);                                          toolwin_setfdd(1, NULL);
                                         break;                                          break;
   
                                 case IDC_SKINDEF:                                  case IDC_BASE + IDC_TOOLRESET:
                                           SendMessage(hWndMain, WM_COMMAND, IDM_RESET, 0);
                                           SetForegroundWindow(hWndMain);
                                           break;
   
                                   case IDC_BASE + IDC_TOOLPOWER:
                                           SendMessage(hWndMain, WM_CLOSE, 0, 0L);
                                           break;
   
                                 case IDC_SKINSEL:                                  case IDC_SKINSEL:
                                         SendMessage(hWnd, WM_SYSCOMMAND, wp, lp);                                          soundmng_disable(SNDPROC_TOOL);
                                           r = dlgs_selectfile(hWnd, &skinui, np2tool.skin,
                                                                                           sizeof(np2tool.skin), NULL);
                                           soundmng_enable(SNDPROC_TOOL);
                                           if (r) {
                                                   skinchange(hWnd);
                                           }
                                           break;
   
                                   case IDC_SKINDEF:
                                           np2tool.skin[0] = '\0';
                                           skinchange(hWnd);
                                           break;
   
                                   case IDC_SKINMRU + 0:
                                   case IDC_SKINMRU + 1:
                                   case IDC_SKINMRU + 2:
                                   case IDC_SKINMRU + 3:
                                           file_cpyname(np2tool.skin,
                                                                           np2tool.skinmru[LOWORD(wp) - IDC_SKINMRU],
                                                                           sizeof(np2tool.skin));
                                           skinchange(hWnd);
                                         break;                                          break;
   
                                 case IDC_TOOLCLOSE:                                  case IDC_TOOLCLOSE:
Line 744  static LRESULT CALLBACK twproc(HWND hWnd Line 758  static LRESULT CALLBACK twproc(HWND hWnd
                         }                          }
                         break;                          break;
   
                   case WM_KEYDOWN:                                                // TAB¤ò²¡¤·¤¿»þ¤ËÉüµ¢
                           if ((short)wp == VK_TAB) {
                                   idc = GetWindowLong(hWnd, GTWL_FOCUS);
                                   if (idc < IDC_MAXITEMS) {
                                           SetFocus(toolwin.sub[idc]);
                                   }
                                   return(0);
                           }
                           break;
   
                 case WM_PAINT:                  case WM_PAINT:
                         toolwinpaint(hWnd);                          toolwinpaint(hWnd);
                         break;                          break;
   
                   case WM_DRAWITEM:
                           tooldrawbutton(hWnd, wp, (LPDRAWITEMSTRUCT)lp);
                           break;
   
                 case WM_ENTERMENULOOP:                  case WM_ENTERMENULOOP:
                         soundmng_stop();                          soundmng_disable(SNDPROC_TOOL);
                         break;                          break;
   
                 case WM_EXITMENULOOP:                  case WM_EXITMENULOOP:
                         soundmng_play();                          soundmng_enable(SNDPROC_TOOL);
                         break;                          break;
   
                 case WM_ENTERSIZEMOVE:                  case WM_ENTERSIZEMOVE:
                         soundmng_stop();                          soundmng_disable(SNDPROC_TOOL);
                         movingstart();                          winlocex_destroy(toolwin.wlex);
                           toolwin.wlex = np2_winlocexallwin(hWnd);
                         break;                          break;
   
                 case WM_EXITSIZEMOVE:                  case WM_MOVING:
                         soundmng_play();                          winlocex_moving(toolwin.wlex, (RECT *)lp);
                         break;                          break;
   
                 case WM_MOVING:                  case WM_EXITSIZEMOVE:
                         movingproc((RECT *)lp);                          winlocex_destroy(toolwin.wlex);
                           toolwin.wlex = NULL;
                           soundmng_enable(SNDPROC_TOOL);
                         break;                          break;
   
                 case WM_MOVE:                  case WM_MOVE:
Line 781  static LRESULT CALLBACK twproc(HWND hWnd Line 812  static LRESULT CALLBACK twproc(HWND hWnd
                         break;                          break;
   
                 case WM_CLOSE:                  case WM_CLOSE:
                         xmenu_settoolwin(0);                          sysmenu_settoolwin(0);
                         sysmng_update(SYS_UPDATEOSCFG);                          sysmng_update(SYS_UPDATEOSCFG);
                         DestroyWindow(hWnd);                          DestroyWindow(hWnd);
                         break;                          break;
   
                 case WM_DESTROY:                  case WM_DESTROY:
                           np2class_destroymenu(hWnd);
                         toolwindestroy();                          toolwindestroy();
                         toolwin.hwnd = NULL;                          toolwin.hwnd = NULL;
                         break;                          break;
   
                 case WM_LBUTTONDOWN:                  case WM_LBUTTONDOWN:
                         SendMessage(hWnd, WM_NCLBUTTONDOWN, HTCAPTION, 0L);                          if (np2tool.type & 1) {
                                   return(SendMessage(hWnd, WM_NCLBUTTONDOWN, HTCAPTION, 0L));
                           }
                         break;                          break;
   
                 case WM_RBUTTONDOWN:                  case WM_RBUTTONDOWN:
                         open_popup(hWnd, lp);                          openpopup(hWnd, lp);
                           break;
   
                   case WM_LBUTTONDBLCLK:
                           np2tool.type ^= 1;
                           wlex = np2_winlocexallwin(hWndMain);
                           np2class_windowtype(hWnd, np2tool.type);
                           winlocex_move(wlex);
                           winlocex_destroy(wlex);
                           sysmng_update(SYS_UPDATEOSCFG);
                         break;                          break;
   
                 default:                  default:
Line 809  BOOL toolwin_initapp(HINSTANCE hInstance Line 852  BOOL toolwin_initapp(HINSTANCE hInstance
   
         WNDCLASS wc;          WNDCLASS wc;
   
         wc.style = CS_HREDRAW | CS_VREDRAW | CS_DBLCLKS;          wc.style = CS_BYTEALIGNCLIENT | CS_HREDRAW | CS_VREDRAW | CS_DBLCLKS;
         wc.lpfnWndProc = twproc;          wc.lpfnWndProc = twproc;
         wc.cbClsExtra = 0;          wc.cbClsExtra = 0;
         wc.cbWndExtra = 0;          wc.cbWndExtra = GTWL_SIZE;
         wc.hInstance = hInstance;          wc.hInstance = hInstance;
         wc.hIcon = LoadIcon(hInstance, MAKEINTRESOURCE(IDI_ICON2));          wc.hIcon = LoadIcon(hInstance, MAKEINTRESOURCE(IDI_ICON2));
         wc.hCursor = LoadCursor(NULL, IDC_ARROW);          wc.hCursor = LoadCursor(NULL, IDC_ARROW);
Line 822  BOOL toolwin_initapp(HINSTANCE hInstance Line 865  BOOL toolwin_initapp(HINSTANCE hInstance
         return(RegisterClass(&wc));          return(RegisterClass(&wc));
 }  }
   
 void toolwin_open(void) {  void toolwin_create(void) {
   
         HBITMAP hbmp;          HBITMAP hbmp;
         BITMAP  bmp;          BITMAP  bmp;
         HWND    hWnd;          HWND    hWnd;
         HMENU   hMenu;  
   
         if (toolwin.hwnd) {          if (toolwin.hwnd) {
                 return;                  return;
Line 839  void toolwin_open(void) { Line 881  void toolwin_open(void) {
         }          }
         GetObject(hbmp, sizeof(BITMAP), &bmp);          GetObject(hbmp, sizeof(BITMAP), &bmp);
         toolwin.hbmp = hbmp;          toolwin.hbmp = hbmp;
         hWnd = CreateWindow(np2toolclass, np2tooltitle, WS_SYSMENU,          hWnd = CreateWindow(np2toolclass, np2tooltitle,
                                                           WS_SYSMENU | WS_MINIMIZEBOX,
                                                         np2tool.posx, np2tool.posy,                                                          np2tool.posx, np2tool.posy,
                                                         bmp.bmWidth, bmp.bmHeight,                                                          bmp.bmWidth, bmp.bmHeight,
                                                         NULL, NULL, hInst, NULL);                                                          NULL, NULL, hInst, NULL);
           winloc_setclientsize(hWnd, bmp.bmWidth, bmp.bmHeight);
         toolwin.hwnd = hWnd;          toolwin.hwnd = hWnd;
         if (hWnd == NULL) {          if (hWnd == NULL) {
                 goto twope_err2;                  goto twope_err2;
         }          }
         UpdateWindow(hWnd);          UpdateWindow(hWnd);
         ShowWindow(hWnd, SW_SHOW);          ShowWindow(hWnd, SW_SHOWNOACTIVATE);
   
         hMenu = GetSystemMenu(hWnd, FALSE);  
         InsertMenu(hMenu, 0, MF_BYPOSITION | MF_STRING, IDC_SKINDEF, str_skindef);  
         InsertMenu(hMenu, 1, MF_BYPOSITION | MF_STRING, IDC_SKINSEL, str_skinsel);  
         InsertMenu(hMenu, 2, MF_BYPOSITION | MF_SEPARATOR, 0, NULL);  
         SetForegroundWindow(hWndMain);  
         return;          return;
   
 twope_err2:  twope_err2:
         DeleteObject(hbmp);          DeleteObject(hbmp);
   
 twope_err1:  twope_err1:
         xmenu_settoolwin(0);          sysmenu_settoolwin(0);
         sysmng_update(SYS_UPDATEOSCFG);          sysmng_update(SYS_UPDATEOSCFG);
         return;          return;
 }  }
   
 void toolwin_close(void) {  void toolwin_destroy(void) {
   
         if (toolwin.hwnd) {          if (toolwin.hwnd) {
                 DestroyWindow(toolwin.hwnd);                  DestroyWindow(toolwin.hwnd);
         }          }
 }  }
   
 #if 1  HWND toolwin_gethwnd(void) {
 void toolwin_movingstart(void) {  
   
         RECT    mainrc;          return(toolwin.hwnd);
         RECT    toolrc;  
         UINT    connect;  
   
         if (toolwin.hwnd == NULL) {  
                 return;  
         }  
         GetWindowRect(hWndMain, &mainrc);  
         GetWindowRect(toolwin.hwnd, &toolrc);  
         connect = 0;  
         if ((toolrc.bottom >= mainrc.top) && (toolrc.top <= mainrc.bottom)) {  
                 if (toolrc.right == mainrc.left) {  
                         connect += 0x01;  
                 }  
                 else if (toolrc.left == mainrc.right) {  
                         connect += 0x02;  
                 }  
                 else if (toolrc.left == mainrc.left) {  
                         connect += 0x03;  
                 }  
                 else if (toolrc.right == mainrc.right) {  
                         connect += 0x04;  
                 }  
         }  
         if ((toolrc.right >= mainrc.left) && (toolrc.left <= mainrc.right)) {  
                 if (toolrc.bottom == mainrc.top) {  
                         connect += 1 << 4;  
                 }  
                 else if (toolrc.top == mainrc.bottom) {  
                         connect += 2 << 4;  
                 }  
                 else if (toolrc.top == mainrc.top) {  
                         connect += 3 << 4;  
                 }  
                 else if (toolrc.bottom == mainrc.bottom) {  
                         connect += 4 << 4;  
                 }  
         }  
         toolwin.parentcn = connect;  
         toolwin.parentx = mainrc.left;  
         toolwin.parenty = mainrc.top;  
 }  }
   
 void toolwin_movingend(void) {  
   
         UINT    connect;  
         RECT    mainrc;  
         RECT    toolrc;  
         int             cx;  
         int             cy;  
   
         connect = toolwin.parentcn;  
         toolwin.parentcn = 0;  
         if ((toolwin.hwnd == NULL) || (!connect)) {  
                 return;  
         }  
         GetWindowRect(hWndMain, &mainrc);  
         GetWindowRect(toolwin.hwnd, &toolrc);  
         cx = toolrc.right - toolrc.left;  
         cy = toolrc.bottom - toolrc.top;  
         toolrc.left += mainrc.left - toolwin.parentx;  
         toolrc.top += mainrc.top - toolwin.parenty;  
         switch(connect & 0x0f) {  
                 case 1:  
                         toolrc.left = mainrc.left - cx;  
                         break;  
   
                 case 2:  
                         toolrc.left = mainrc.right;  
                         break;  
   
                 case 3:  
                         toolrc.left = mainrc.left;  
                         break;  
   
                 case 4:  
                         toolrc.left = mainrc.right - cx;  
                         break;  
         }  
         switch((connect >> 4) & 0x0f) {  
                 case 1:  
                         toolrc.top = mainrc.top - cy;  
                         break;  
   
                 case 2:  
                         toolrc.top = mainrc.bottom;  
                         break;  
   
                 case 3:  
                         toolrc.top = mainrc.top;  
                         break;  
   
                 case 4:  
                         toolrc.top = mainrc.bottom - cy;  
                         break;  
         }  
         MoveWindow(toolwin.hwnd, toolrc.left, toolrc.top, cx, cy, TRUE);  
 }  
 #else  
 void toolwin_movingstart(void) {  
   
         RECT    mainrc;  
         RECT    toolrc;  
   
         if (toolwin.hwnd == NULL) {  
                 return;  
         }  
         GetWindowRect(hWndMain, &mainrc);  
         GetWindowRect(toolwin.hwnd, &toolrc);  
         if (((toolrc.right >= mainrc.left) && (toolrc.left <= mainrc.right) &&  
                 ((toolrc.bottom == mainrc.top) || (toolrc.top == mainrc.bottom))) ||  
                 ((toolrc.bottom >= mainrc.top) && (toolrc.top <= mainrc.bottom) &&  
                 ((toolrc.right == mainrc.left) || (toolrc.left == mainrc.right)))) {  
                 toolwin.parentcn = 1;  
                 toolwin.parentx = mainrc.left;  
                 toolwin.parenty = mainrc.top;  
         }  
 }  
   
 void toolwin_movingend(void) {  
   
         RECT    mainrc;  
         RECT    toolrc;  
         int             dx;  
         int             dy;  
   
         if ((toolwin.hwnd) && (toolwin.parentcn)) {  
                 GetWindowRect(hWndMain, &mainrc);  
                 GetWindowRect(toolwin.hwnd, &toolrc);  
                 dx = mainrc.left - toolwin.parentx;  
                 dy = mainrc.top - toolwin.parenty;  
                 MoveWindow(toolwin.hwnd, toolrc.left + dx, toolrc.top + dy,  
                                                                 toolrc.right - toolrc.left,  
                                                                 toolrc.bottom - toolrc.top, TRUE);  
         }  
         toolwin.parentcn = 0;  
 }  
 #endif  
   
 void toolwin_setfdd(BYTE drv, const char *name) {  void toolwin_setfdd(BYTE drv, const char *name) {
   
         TOOLFDD *fdd;          TOOLFDD *fdd;
         char    *q;          char    *q;
         char    *p;          char    *p;
         UINT    i;          UINT    i;
           HWND    sub;
   
         if (drv >= FDDLIST_DRV) {          if (drv >= FDDLIST_DRV) {
                 return;                  return;
Line 1033  void toolwin_setfdd(BYTE drv, const char Line 935  void toolwin_setfdd(BYTE drv, const char
                 fdd->insert = 1;                  fdd->insert = 1;
                 q = fdd->name[0];                  q = fdd->name[0];
                 for (i=0; i<(FDDLIST_MAX - 1); i++) {                  for (i=0; i<(FDDLIST_MAX - 1); i++) {
                         if (!milstr_cmp(q, name)) {                          if (!file_cmpname(q, name)) {
                                 break;                                  break;
                         }                          }
                         q += sizeof(fdd->name[0]);                          q += sizeof(fdd->name[0]);
Line 1045  void toolwin_setfdd(BYTE drv, const char Line 947  void toolwin_setfdd(BYTE drv, const char
                         p -= sizeof(fdd->name[0]);                          p -= sizeof(fdd->name[0]);
                         q -= sizeof(fdd->name[0]);                          q -= sizeof(fdd->name[0]);
                 }                  }
                 milstr_ncpy(fdd->name[0], name, sizeof(fdd->name[0]));                  file_cpyname(fdd->name[0], name, sizeof(fdd->name[0]));
         }          }
         sysmng_update(SYS_UPDATEOSCFG);          sysmng_update(SYS_UPDATEOSCFG);
         if (toolwin.hwnd != NULL) {          if (toolwin.hwnd != NULL) {
                 remakefddlist(drv);                  sub = toolwin.sub[fddlist[drv]];
                 SetForegroundWindow(hWndMain);                  if (sub) {
                           remakefddlist(sub, fdd);
                           SetForegroundWindow(hWndMain);
                   }
         }          }
 }  }
   
 static void setdiskacc(UINT num, BYTE count) {  static void setdiskacc(UINT num, BYTE count) {
   
 const DISKACC   *acc;  const DISKACC   *acc;
         BYTE            counter;          HWND            sub;
   
         if (toolwin.hwnd == NULL) {          if (toolwin.hwnd == NULL) {
                 return;                  return;
         }          }
         if (num < (sizeof(diskacc)/sizeof(DISKACC))) {          if (num < (sizeof(diskacc)/sizeof(DISKACC))) {
                 acc = diskacc + num;                  acc = diskacc + num;
                 counter = *(acc->counter);                  sub = NULL;
                   if (*(acc->counter) == 0) {
                           sub = toolwin.sub[acc->idc];
                   }
                 *(acc->counter) = count;                  *(acc->counter) = count;
                 if (counter) {                  if (sub) {
                         InvalidateRect(toolwin.sub[acc->idc], NULL, TRUE);                          InvalidateRect(sub, NULL, TRUE);
                 }                  }
         }          }
 }  }
Line 1089  void toolwin_draw(BYTE frame) { Line 997  void toolwin_draw(BYTE frame) {
 const DISKACC   *acc;  const DISKACC   *acc;
 const DISKACC   *accterm;  const DISKACC   *accterm;
         BYTE            counter;          BYTE            counter;
           HWND            sub;
   
         if (toolwin.hwnd == NULL) {          if (toolwin.hwnd == NULL) {
                 return;                  return;
Line 1103  const DISKACC *accterm; Line 1012  const DISKACC *accterm;
                 if (counter) {                  if (counter) {
                         if (counter <= frame) {                          if (counter <= frame) {
                                 *(acc->counter) = 0;                                  *(acc->counter) = 0;
                                 InvalidateRect(toolwin.sub[acc->idc], NULL, TRUE);                                  sub = toolwin.sub[acc->idc];
                                   if (sub) {
                                           InvalidateRect(sub, NULL, TRUE);
                                   }
                         }                          }
                         else {                          else {
                                 *(acc->counter) -= frame;                                  *(acc->counter) -= frame;
Line 1116  const DISKACC *accterm; Line 1028  const DISKACC *accterm;
   
 // ----  // ----
   
 static const char np2toolini[] = "np2tool.ini";  
 static const char ini_title[] = "NP2 tool";  static const char ini_title[] = "NP2 tool";
   
 static const INITBL iniitem[] = {  static const INITBL iniitem[] = {
         {"WindposX", INITYPE_SINT32,    &np2tool.posx,                  0},          {"WindposX", INITYPE_SINT32,    &np2tool.posx,                  0},
         {"WindposY", INITYPE_SINT32,    &np2tool.posy,                  0},          {"WindposY", INITYPE_SINT32,    &np2tool.posy,                  0},
           {"WindType", INITYPE_BOOL,              &np2tool.type,                  0},
         {"SkinFile", INITYPE_STR,               np2tool.skin,                   MAX_PATH},          {"SkinFile", INITYPE_STR,               np2tool.skin,                   MAX_PATH},
           {"SkinMRU0", INITYPE_STR,               np2tool.skinmru[0],             MAX_PATH},
           {"SkinMRU1", INITYPE_STR,               np2tool.skinmru[1],             MAX_PATH},
           {"SkinMRU2", INITYPE_STR,               np2tool.skinmru[2],             MAX_PATH},
           {"SkinMRU3", INITYPE_STR,               np2tool.skinmru[3],             MAX_PATH},
         {"FD1NAME0", INITYPE_STR,               np2tool.fdd[0].name[0], MAX_PATH},          {"FD1NAME0", INITYPE_STR,               np2tool.fdd[0].name[0], MAX_PATH},
         {"FD1NAME1", INITYPE_STR,               np2tool.fdd[0].name[1], MAX_PATH},          {"FD1NAME1", INITYPE_STR,               np2tool.fdd[0].name[1], MAX_PATH},
         {"FD1NAME2", INITYPE_STR,               np2tool.fdd[0].name[2], MAX_PATH},          {"FD1NAME2", INITYPE_STR,               np2tool.fdd[0].name[2], MAX_PATH},
Line 1140  static const INITBL iniitem[] = { Line 1056  static const INITBL iniitem[] = {
         {"FD2NAME6", INITYPE_STR,               np2tool.fdd[1].name[6], MAX_PATH},          {"FD2NAME6", INITYPE_STR,               np2tool.fdd[1].name[6], MAX_PATH},
         {"FD2NAME7", INITYPE_STR,               np2tool.fdd[1].name[7], MAX_PATH}};          {"FD2NAME7", INITYPE_STR,               np2tool.fdd[1].name[7], MAX_PATH}};
   
 static void getinifile(char *path, int leng) {  
   
         milstr_ncpy(path, modulefile, leng);  
         file_cutname(path);  
         file_catname(path, np2toolini, leng);  
 }  
   
 void toolwin_readini(void) {  void toolwin_readini(void) {
   
         char    path[MAX_PATH];          char    path[MAX_PATH];
Line 1154  void toolwin_readini(void) { Line 1063  void toolwin_readini(void) {
         ZeroMemory(&np2tool, sizeof(np2tool));          ZeroMemory(&np2tool, sizeof(np2tool));
         np2tool.posx = CW_USEDEFAULT;          np2tool.posx = CW_USEDEFAULT;
         np2tool.posy = CW_USEDEFAULT;          np2tool.posy = CW_USEDEFAULT;
         getinifile(path, sizeof(path));          np2tool.type = 1;
           initgetfile(path, sizeof(path));
         ini_read(path, ini_title, iniitem, sizeof(iniitem)/sizeof(INITBL));          ini_read(path, ini_title, iniitem, sizeof(iniitem)/sizeof(INITBL));
 }  }
   
Line 1162  void toolwin_writeini(void) { Line 1072  void toolwin_writeini(void) {
   
         char    path[MAX_PATH];          char    path[MAX_PATH];
   
         getinifile(path, sizeof(path));          initgetfile(path, sizeof(path));
         ini_write(path, ini_title, iniitem, sizeof(iniitem)/sizeof(INITBL));          ini_write(path, ini_title, iniitem, sizeof(iniitem)/sizeof(INITBL));
 }  }
   

Removed from v.1.6  
changed lines
  Added in v.1.12


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