--- np2/win9x/toolwin.cpp 2006/12/24 00:52:30 1.21 +++ np2/win9x/toolwin.cpp 2007/12/28 20:36:40 1.25 @@ -34,12 +34,7 @@ enum { IDC_TOOLPOWER, IDC_MAXITEMS, - IDC_BASE = 3000, - - IDM_SKINSEL = 3100, - IDM_SKINDEF = 3101, - IDM_SKINMRU = 3102, - IDM_TOOLCLOSE = IDM_SKINMRU + SKINMRU_MAX + IDC_BASE = 3000 }; enum { @@ -89,10 +84,8 @@ typedef struct { SUBCLASSPROC subproc[IDC_MAXITEMS]; } TOOLWIN; -enum { - GTWL_FOCUS = NP2GWL_SIZE + 0, - GTWL_SIZE = NP2GWL_SIZE + 4 -}; +#define GTWLP_FOCUS (NP2GWLP_SIZE + (0 * sizeof(LONG_PTR))) +#define GTWLP_SIZE (NP2GWLP_SIZE + (1 * sizeof(LONG_PTR))) NP2TOOL np2tool; static TOOLSKIN toolskin; @@ -155,13 +148,13 @@ static HBITMAP skinload(const OEMCHAR *p #else const TCHAR *tchr = fname; #endif - ret = (HBITMAP)LoadImage(hInst, tchr, IMAGE_BITMAP, + ret = (HBITMAP)LoadImage(g_hInstance, tchr, IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE); if (ret != NULL) { return(ret); } } - return(LoadBitmap(hInst, _T("NP2TOOL"))); + return(LoadBitmap(g_hInstance, _T("NP2TOOL"))); } @@ -398,7 +391,7 @@ static LRESULT CALLBACK twsub(HWND hWnd, } } else if (msg == WM_SETFOCUS) { - SetWindowLong(GetParent(hWnd), GTWL_FOCUS, idc); + SetWindowLongPtr(GetParent(hWnd), GTWLP_FOCUS, idc); } return(CallWindowProc(toolwin.subproc[idc], hWnd, msg, wp, lp)); } @@ -459,13 +452,14 @@ static void toolwincreate(HWND hWnd) { #endif sub = CreateWindow(cls, ptext, WS_CHILD | WS_VISIBLE | style, p->posx, p->posy, p->width, p->height, - hWnd, (HMENU)(i + IDC_BASE), hInst, NULL); + hWnd, (HMENU)(i + IDC_BASE), g_hInstance, NULL); } toolwin.sub[i] = sub; toolwin.subproc[i] = NULL; if (sub) { - toolwin.subproc[i] = GetWindowProc(sub); - SetWindowProc(sub, twsub); + toolwin.subproc[i] = (SUBCLASSPROC)GetWindowLongPtr(sub, + GWLP_WNDPROC); + SetWindowLongPtr(sub, GWLP_WNDPROC, (LONG_PTR)twsub); SendMessage(sub, WM_SETFONT, (WPARAM)toolwin.hfont, MAKELPARAM(TRUE, 0)); } @@ -483,7 +477,7 @@ static void toolwincreate(HWND hWnd) { break; } } - SetWindowLong(hWnd, GTWL_FOCUS, i); + SetWindowLongPtr(hWnd, GTWLP_FOCUS, i); } static void toolwindestroy(void) { @@ -563,58 +557,127 @@ static void tooldrawbutton(HWND hWnd, UI // ---- -static HMENU createskinmenu(void) { - - HMENU ret; - UINT cnt; -const OEMCHAR *base; - UINT flag; - OEMCHAR *p; +static void setSkinMruMenu(HMENU hMenu) +{ + HMENU hmenuSub; +const OEMCHAR *pcszBase; + UINT uCount; + OEMCHAR *pszMru; +const OEMCHAR *pcszMruList[SKINMRU_MAX]; UINT i; + UINT uID[SKINMRU_MAX]; UINT j; - UINT id[SKINMRU_MAX]; -const OEMCHAR *file[SKINMRU_MAX]; + UINT uFlag; - ret = CreatePopupMenu(); - AppendMenu(ret, MF_STRING, IDM_SKINSEL, str_skinsel); - AppendMenu(ret, MF_SEPARATOR, 0, NULL); - - base = np2tool.skin; - flag = (base[0] == '\0')?MF_CHECKED:0; - AppendMenu(ret, MF_STRING + flag, IDM_SKINDEF, str_skindef); - for (cnt=0; cnti; j--) { - id[j] = id[j-1]; - } - id[i] = cnt; - file[cnt] = p; + for (j=uCount; j>i; j--) + { + uID[j] = uID[j-1]; + } + uID[i] = uCount; + pcszMruList[uCount] = pszMru; } - for (i=0; ii; j--) + { + uID[j] = uID[j-1]; + } + uID[i] = uCount; + pcszMruList[uCount] = pszMru; + } + for (i=0; i