1 /*=============================================================================
\r
5 ===============================================================================
\r
6 / Copyright (C) 1997-2007 Sota. All rights reserved.
\r
8 / Redistribution and use in source and binary forms, with or without
\r
9 / modification, are permitted provided that the following conditions
\r
12 / 1. Redistributions of source code must retain the above copyright
\r
13 / notice, this list of conditions and the following disclaimer.
\r
14 / 2. Redistributions in binary form must reproduce the above copyright
\r
15 / notice, this list of conditions and the following disclaimer in the
\r
16 / documentation and/or other materials provided with the distribution.
\r
18 / THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
\r
19 / IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
\r
20 / OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
\r
21 / IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
\r
22 / INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
\r
23 / BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
\r
24 / USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
\r
25 / ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
\r
26 / (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
\r
27 / THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
\r
28 /============================================================================*/
\r
32 #include <winsock2.h>
\r
33 #include <windows.h>
\r
37 #include <mbstring.h>
\r
39 #include <windowsx.h>
\r
40 #include <commctrl.h>
\r
43 //#include <winsock.h>
\r
46 #include "resource.h"
\r
49 /*===== プロトタイプ =====*/
\r
51 static void AddOpenMenu(HMENU hMenu, UINT Flg);
\r
52 static LRESULT CALLBACK HistEditBoxWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam);
\r
54 /* 2007/09/21 sunasunamix ここから *********************/
\r
55 static LRESULT CALLBACK CountermeasureTbarMainProc(HWND hWnd,UINT uMessage,WPARAM wParam,LPARAM lParam);
\r
56 static LRESULT CALLBACK CountermeasureTbarLocalProc(HWND hWnd,UINT uMessage,WPARAM wParam,LPARAM lParam);
\r
57 static LRESULT CALLBACK CountermeasureTbarRemoteProc(HWND hWnd,UINT uMessage,WPARAM wParam,LPARAM lParam);
\r
58 /********************************************* ここまで */
\r
61 /*===== 外部参照 =====*/
\r
63 extern int SepaWidth;
\r
64 extern int RemoteWidth;
\r
66 extern int CancelFlg;
\r
70 extern char AsciiExt[ASCII_EXT_LEN+1];
\r
71 extern int TransMode;
\r
72 extern int ListType;
\r
73 extern int LocalWidth;
\r
74 extern char ViewerName[VIEWERS][FMAX_PATH+1];
\r
75 extern int TransMode;
\r
76 extern int SortSave;
\r
78 extern int LocalKanjiCode;
\r
80 /*===== ローカルなワーク =====*/
\r
82 static HWND hWndTbarMain = NULL;
\r
83 static HWND hWndTbarLocal = NULL;
\r
84 static HWND hWndTbarRemote = NULL;
\r
85 static HWND hWndDirLocal = NULL;
\r
86 static HWND hWndDirRemote = NULL;
\r
87 static HWND hWndDirLocalEdit = NULL;
\r
88 static HWND hWndDirRemoteEdit = NULL;
\r
90 static WNDPROC HistEditBoxProcPtr;
\r
92 static HFONT DlgFont = NULL;
\r
94 static int TmpTransMode;
\r
95 static int TmpHostKanjiCode;
\r
96 static int TmpHostKanaCnv;
\r
98 // TODO: ローカルの漢字コードをShift_JIS以外にも対応
\r
99 static int TmpLocalKanjiCode;
\r
101 static int TmpLocalFileSort;
\r
102 static int TmpLocalDirSort;
\r
103 static int TmpRemoteFileSort;
\r
104 static int TmpRemoteDirSort;
\r
106 static int SyncMove = NO;
\r
109 //static int HideUI = NO;
\r
110 static int HideUI = 0;
\r
113 /* 2007/09/21 sunasunamix ここから *********************/
\r
114 static WNDPROC pOldTbarMainProc = NULL;
\r
115 static WNDPROC pOldTbarLocalProc = NULL;
\r
116 static WNDPROC pOldTbarRemoteProc = NULL;
\r
117 /********************************************* ここまで */
\r
120 /* 以前、コンボボックスにカレントフォルダを憶えさせていた流れで */
\r
121 /* このファイルでカレントフォルダを憶えさせる */
\r
122 static char LocalCurDir[FMAX_PATH+1];
\r
123 static char RemoteCurDir[FMAX_PATH+1];
\r
127 static TBBUTTON TbarDataMain[] = {
\r
128 { 0, 0, TBSTATE_ENABLED, BTNS_SEP, 0, 0 },
\r
129 { 0, MENU_CONNECT, TBSTATE_ENABLED, TBSTYLE_BUTTON, 0, 0 },
\r
130 { 16, MENU_QUICK, TBSTATE_ENABLED, TBSTYLE_BUTTON, 0, 0 },
\r
131 { 1, MENU_DISCONNECT, TBSTATE_ENABLED, TBSTYLE_BUTTON, 0, 0 },
\r
132 { 0, 0, TBSTATE_ENABLED, BTNS_SEP, 0, 0 },
\r
133 { 2, MENU_DOWNLOAD, TBSTATE_ENABLED, TBSTYLE_BUTTON, 0, 0 },
\r
134 { 3, MENU_UPLOAD, TBSTATE_ENABLED, TBSTYLE_BUTTON, 0, 0 },
\r
135 { 0, 0, TBSTATE_ENABLED, BTNS_SEP, 0, 0 },
\r
136 { 24, MENU_MIRROR_UPLOAD, TBSTATE_ENABLED, TBSTYLE_BUTTON, 0, 0 },
\r
137 { 0, 0, TBSTATE_ENABLED, BTNS_SEP, 0, 0 },
\r
138 { 4, MENU_DELETE, TBSTATE_ENABLED, TBSTYLE_BUTTON, 0, 0 },
\r
139 { 5, MENU_RENAME, TBSTATE_ENABLED, TBSTYLE_BUTTON, 0, 0 },
\r
140 { 6, MENU_MKDIR, TBSTATE_ENABLED, TBSTYLE_BUTTON, 0, 0 },
\r
141 { 0, 0, TBSTATE_ENABLED, BTNS_SEP, 0, 0 },
\r
142 { 7, MENU_TEXT, TBSTATE_ENABLED, TBSTYLE_CHECKGROUP, 0, 0 },
\r
143 { 8, MENU_BINARY, TBSTATE_ENABLED, TBSTYLE_CHECKGROUP, 0, 0 },
\r
144 { 17, MENU_AUTO, TBSTATE_ENABLED, TBSTYLE_CHECKGROUP, 0, 0 },
\r
145 { 0, 0, TBSTATE_ENABLED, BTNS_SEP, 0, 0 },
\r
146 { 27, MENU_L_KNJ_SJIS, TBSTATE_ENABLED, TBSTYLE_CHECKGROUP, 0, 0 },
\r
147 { 20, MENU_L_KNJ_EUC, TBSTATE_ENABLED, TBSTYLE_CHECKGROUP, 0, 0 },
\r
148 { 21, MENU_L_KNJ_JIS, TBSTATE_ENABLED, TBSTYLE_CHECKGROUP, 0, 0 },
\r
149 { 28, MENU_L_KNJ_UTF8N, TBSTATE_ENABLED, TBSTYLE_CHECKGROUP, 0, 0 },
\r
150 { 29, MENU_L_KNJ_UTF8BOM, TBSTATE_ENABLED, TBSTYLE_CHECKGROUP, 0, 0 },
\r
151 { 0, 0, TBSTATE_ENABLED, BTNS_SEP, 0, 0 },
\r
152 { 27, MENU_KNJ_SJIS, TBSTATE_ENABLED, TBSTYLE_CHECKGROUP, 0, 0 },
\r
153 { 20, MENU_KNJ_EUC, TBSTATE_ENABLED, TBSTYLE_CHECKGROUP, 0, 0 },
\r
154 { 21, MENU_KNJ_JIS, TBSTATE_ENABLED, TBSTYLE_CHECKGROUP, 0, 0 },
\r
155 { 28, MENU_KNJ_UTF8N, TBSTATE_ENABLED, TBSTYLE_CHECKGROUP, 0, 0 },
\r
156 { 29, MENU_KNJ_UTF8BOM, TBSTATE_ENABLED, TBSTYLE_CHECKGROUP, 0, 0 },
\r
157 { 22, MENU_KNJ_NONE, TBSTATE_ENABLED, TBSTYLE_CHECKGROUP, 0, 0 },
\r
158 { 0, 0, TBSTATE_ENABLED, BTNS_SEP, 0, 0 },
\r
159 { 23, MENU_KANACNV, TBSTATE_ENABLED, TBSTYLE_CHECK, 0, 0 },
\r
160 { 0, 0, TBSTATE_ENABLED, BTNS_SEP, 0, 0 },
\r
161 { 15, MENU_REFRESH, TBSTATE_ENABLED, TBSTYLE_BUTTON, 0, 0 },
\r
162 { 0, 0, TBSTATE_ENABLED, BTNS_SEP, 0, 0 },
\r
163 { 18, MENU_LIST, TBSTATE_ENABLED, TBSTYLE_CHECKGROUP, 0, 0 },
\r
164 { 19, MENU_REPORT, TBSTATE_ENABLED, TBSTYLE_CHECKGROUP, 0, 0 },
\r
165 { 0, 0, TBSTATE_ENABLED, BTNS_SEP, 0, 0 },
\r
166 { 25, MENU_SYNC, TBSTATE_ENABLED, TBSTYLE_CHECK, 0, 0 },
\r
167 { 0, 0, TBSTATE_ENABLED, BTNS_SEP, 0, 0 },
\r
168 { 26, MENU_ABORT, TBSTATE_ENABLED, TBSTYLE_BUTTON, 0, 0 }
\r
172 static TBBUTTON TbarDataLocal[] = {
\r
173 { 0, 0, TBSTATE_ENABLED, BTNS_SEP, 0, 0 },
\r
174 { 0, MENU_LOCAL_UPDIR, TBSTATE_ENABLED, TBSTYLE_BUTTON, 0, 0 },
\r
175 { 1, MENU_LOCAL_CHDIR, TBSTATE_ENABLED, TBSTYLE_BUTTON, 0, 0 },
\r
176 { 0, 0, TBSTATE_ENABLED, BTNS_SEP, 0, 0 }
\r
180 static TBBUTTON TbarDataRemote[] = {
\r
181 { 0, 0, TBSTATE_ENABLED, BTNS_SEP, 0, 0 },
\r
182 { 0, MENU_REMOTE_UPDIR, TBSTATE_ENABLED, TBSTYLE_BUTTON, 0, 0 },
\r
183 { 1, MENU_REMOTE_CHDIR, TBSTATE_ENABLED, TBSTYLE_BUTTON, 0, 0 },
\r
184 { 0, 0, TBSTATE_ENABLED, BTNS_SEP, 0, 0 }
\r
188 static const int HideMenus[] = {
\r
189 MENU_CONNECT, MENU_QUICK, MENU_DISCONNECT,
\r
190 MENU_SET_CONNECT, MENU_IMPORT_WS, MENU_EXIT,
\r
191 MENU_DOWNLOAD, MENU_UPLOAD, MENU_DOWNLOAD_AS, MENU_MIRROR_UPLOAD,
\r
192 MENU_UPLOAD_AS, MENU_DOWNLOAD_NAME, MENU_MIRROR_UPLOAD,
\r
193 MENU_FILESIZE, MENU_DELETE, MENU_RENAME,
\r
194 MENU_CHMOD, MENU_MKDIR, MENU_SOMECMD,
\r
196 MENU_BMARK_ADD, MENU_BMARK_ADD_LOCAL, MENU_BMARK_ADD_BOTH,
\r
198 MENU_FILTER, MENU_FIND, MENU_FINDNEXT, MENU_SELECT,
\r
199 MENU_SELECT_ALL, MENU_LIST, MENU_REPORT,
\r
200 MENU_SORT, MENU_DOTFILE,
\r
201 MENU_DIRINFO, MENU_TASKINFO, MENU_REFRESH,
\r
204 MENU_HELP, MENU_HELP_TROUBLE, MENU_ABOUT,
\r
206 MENU_TEXT, MENU_BINARY, MENU_AUTO,
\r
207 MENU_KNJ_SJIS, MENU_KNJ_EUC, MENU_KNJ_JIS, MENU_KNJ_UTF8N, MENU_KNJ_UTF8BOM, MENU_KNJ_NONE,
\r
208 MENU_L_KNJ_SJIS, MENU_L_KNJ_EUC, MENU_L_KNJ_JIS, MENU_L_KNJ_UTF8N, MENU_L_KNJ_UTF8BOM,
\r
210 MENU_LOCAL_UPDIR, MENU_LOCAL_CHDIR,
\r
211 MENU_REMOTE_UPDIR, MENU_REMOTE_CHDIR,
\r
212 MENU_HIST_1, MENU_HIST_2, MENU_HIST_3, MENU_HIST_4,
\r
213 MENU_HIST_5, MENU_HIST_6, MENU_HIST_7, MENU_HIST_8,
\r
214 MENU_HIST_9, MENU_HIST_10, MENU_HIST_11, MENU_HIST_12,
\r
215 MENU_HIST_13, MENU_HIST_14, MENU_HIST_15, MENU_HIST_16,
\r
216 MENU_HIST_17, MENU_HIST_18, MENU_HIST_19, MENU_HIST_20
\r
221 /*----- ツールバーを作成する --------------------------------------------------
\r
224 * HWND hWnd : 親ウインドウのウインドウハンドル
\r
225 * HINSTANCE hInst : インスタンスハンドル
\r
229 * FFFTP_SUCCESS/FFFTP_FAIL
\r
230 *----------------------------------------------------------------------------*/
\r
232 int MakeToolBarWindow(HWND hWnd, HINSTANCE hInst)
\r
236 char Tmp[FMAX_PATH+1];
\r
244 /*===== メインのツールバー =====*/
\r
247 // hWndTbarMain = CreateToolbarEx(
\r
249 // WS_CHILD | WS_VISIBLE | TBSTYLE_TOOLTIPS | CCS_TOP | TBSTYLE_FLAT,
\r
253 // main_toolbar_bmp,
\r
255 // sizeof(TbarDataMain)/sizeof(TBBUTTON),
\r
258 // sizeof(TBBUTTON));
\r
259 hOriginal = LoadImage(hInst, MAKEINTRESOURCE(main_toolbar_bmp), IMAGE_BITMAP, 0, 0, LR_DEFAULTSIZE | LR_LOADMAP3DCOLORS);
\r
260 if(hOriginal != NULL)
\r
262 hResized = ResizeBitmap(hOriginal, 64, 64, 16, 64);
\r
263 DeleteObject(hOriginal);
\r
265 hWndTbarMain = CreateToolbarEx(
\r
267 WS_CHILD | WS_VISIBLE | TBSTYLE_TOOLTIPS | CCS_TOP | TBSTYLE_FLAT,
\r
271 (UINT_PTR)hResized,
\r
273 sizeof(TbarDataMain)/sizeof(TBBUTTON),
\r
274 CalcPixelX(16),CalcPixelY(16),
\r
275 CalcPixelX(16),CalcPixelY(16),
\r
277 if(hResized != NULL)
\r
278 DeleteObject(hOriginal);
\r
281 if(hWndTbarMain != NULL)
\r
283 /* 2007/09/21 sunasunamix ここから *********************/
\r
285 // pOldTbarMainProc = (WNDPROC)SetWindowLong(hWndTbarMain, GWL_WNDPROC, (DWORD)CountermeasureTbarMainProc);
\r
286 pOldTbarMainProc = (WNDPROC)SetWindowLongPtr(hWndTbarMain, GWLP_WNDPROC, (LONG_PTR)CountermeasureTbarMainProc);
\r
287 /********************************************* ここまで */
\r
289 GetClientRect(hWnd, &Rect1);
\r
291 // MoveWindow(hWndTbarMain, 0, 0, Rect1.right, TOOLWIN_HEIGHT, FALSE);
\r
292 MoveWindow(hWndTbarMain, 0, 0, Rect1.right, AskToolWinHeight(), FALSE);
\r
295 /*===== ローカルのツールバー =====*/
\r
298 // hWndTbarLocal = CreateToolbarEx(
\r
300 // WS_CHILD | WS_VISIBLE | TBSTYLE_TOOLTIPS | CCS_NORESIZE | TBSTYLE_FLAT,
\r
304 // remote_toolbar_bmp,
\r
306 // sizeof(TbarDataLocal)/sizeof(TBBUTTON),
\r
309 // sizeof(TBBUTTON));
\r
310 hOriginal = LoadImage(hInst, MAKEINTRESOURCE(remote_toolbar_bmp), IMAGE_BITMAP, 0, 0, LR_DEFAULTSIZE | LR_LOADMAP3DCOLORS);
\r
311 if(hOriginal != NULL)
\r
313 hResized = ResizeBitmap(hOriginal, 64, 64, 16, 64);
\r
314 DeleteObject(hOriginal);
\r
316 hWndTbarLocal = CreateToolbarEx(
\r
318 WS_CHILD | WS_VISIBLE | TBSTYLE_TOOLTIPS | CCS_NORESIZE | TBSTYLE_FLAT,
\r
322 (UINT_PTR)hResized,
\r
324 sizeof(TbarDataLocal)/sizeof(TBBUTTON),
\r
325 CalcPixelX(16),CalcPixelY(16),
\r
326 CalcPixelX(16),CalcPixelY(16),
\r
328 if(hResized != NULL)
\r
329 DeleteObject(hOriginal);
\r
332 if(hWndTbarLocal != NULL)
\r
334 /* 2007/09/21 sunasunamix ここから *********************/
\r
336 // pOldTbarLocalProc = (WNDPROC)SetWindowLong(hWndTbarLocal, GWL_WNDPROC, (DWORD)CountermeasureTbarLocalProc);
\r
337 pOldTbarLocalProc = (WNDPROC)SetWindowLongPtr(hWndTbarLocal, GWLP_WNDPROC, (LONG_PTR)CountermeasureTbarLocalProc);
\r
338 /********************************************* ここまで */
\r
341 // MoveWindow(hWndTbarLocal, 0, TOOLWIN_HEIGHT, LocalWidth, TOOLWIN_HEIGHT, FALSE);
\r
342 MoveWindow(hWndTbarLocal, 0, AskToolWinHeight(), LocalWidth, AskToolWinHeight(), FALSE);
\r
344 /*===== ローカルのディレクトリ名ウインドウ =====*/
\r
346 SendMessage(hWndTbarLocal, TB_GETITEMRECT, 3, (LPARAM)&Rect1);
\r
349 //#ifndef FFFTP_ENGLISH
\r
350 // DlgFont = CreateFont(Rect1.bottom-Rect1.top-8, 0, 0, 0, 0, FALSE,FALSE,FALSE,SHIFTJIS_CHARSET,OUT_DEFAULT_PRECIS,CLIP_DEFAULT_PRECIS,DEFAULT_QUALITY,DEFAULT_PITCH,MSGJPN254);
\r
352 // DlgFont = CreateFont(Rect1.bottom-Rect1.top-8, 0, 0, 0, 0, FALSE,FALSE,FALSE,ANSI_CHARSET,OUT_DEFAULT_PRECIS,CLIP_DEFAULT_PRECIS,DEFAULT_QUALITY,DEFAULT_PITCH,MSGJPN254);
\r
354 DlgFont = CreateFont(Rect1.bottom-Rect1.top-CalcPixelY(8), 0, 0, 0, 0, FALSE,FALSE,FALSE,DEFAULT_CHARSET,OUT_DEFAULT_PRECIS,CLIP_DEFAULT_PRECIS,DEFAULT_QUALITY,DEFAULT_PITCH,MSGJPN254);
\r
357 // hWndDirLocal = CreateWindowEx(WS_EX_CLIENTEDGE,
\r
359 // WS_CHILD | WS_VISIBLE | WS_BORDER | WS_VSCROLL | CBS_DROPDOWN | CBS_SORT | CBS_AUTOHSCROLL,
\r
360 // Rect1.right, Rect1.top, LocalWidth - Rect1.right, 200,
\r
361 // hWndTbarLocal, (HMENU)COMBO_LOCAL, hInst, NULL);
\r
362 hWndDirLocal = CreateWindowEx(WS_EX_CLIENTEDGE,
\r
364 WS_CHILD | WS_VISIBLE | WS_BORDER | WS_VSCROLL | CBS_DROPDOWN | CBS_SORT | CBS_AUTOHSCROLL,
\r
365 Rect1.right, Rect1.top, LocalWidth - Rect1.right, CalcPixelY(200),
\r
366 hWndTbarLocal, (HMENU)COMBO_LOCAL, hInst, NULL);
\r
368 if(hWndDirLocal != NULL)
\r
370 /* エディットコントロールを探す */
\r
371 hWndDirLocalEdit = GetWindow(hWndDirLocal, GW_CHILD);
\r
372 if(hWndDirLocalEdit != NULL)
\r
374 // HistEditBoxProcPtr = (WNDPROC)SetWindowLong(hWndDirLocalEdit, GWL_WNDPROC, (LONG)HistEditBoxWndProc);
\r
375 HistEditBoxProcPtr = (WNDPROC)SetWindowLongPtr(hWndDirLocalEdit, GWLP_WNDPROC, (LONG_PTR)HistEditBoxWndProc);
\r
377 SendMessage(hWndDirLocal, WM_SETFONT, (WPARAM)DlgFont, MAKELPARAM(TRUE, 0));
\r
378 SendMessage(hWndDirLocal, CB_LIMITTEXT, FMAX_PATH, 0);
\r
380 /* ドライブ名をセットしておく */
\r
381 GetLogicalDriveStrings(FMAX_PATH, Tmp);
\r
382 NoDrives = LoadHideDriveListRegistry();
\r
386 Tmp2 = toupper(*Pos) - 'A';
\r
387 if((NoDrives & (0x00000001 << Tmp2)) == 0)
\r
388 SetLocalDirHist(Pos);
\r
389 Pos = strchr(Pos, NUL) + 1;
\r
391 SendMessage(hWndDirLocal, CB_SETCURSEL, 0, 0);
\r
395 /*===== ホストのツールバー =====*/
\r
398 // hWndTbarRemote = CreateToolbarEx(
\r
400 // WS_CHILD | WS_VISIBLE | TBSTYLE_TOOLTIPS | CCS_NORESIZE | TBSTYLE_FLAT,
\r
404 // remote_toolbar_bmp,
\r
406 // sizeof(TbarDataRemote)/sizeof(TBBUTTON),
\r
409 // sizeof(TBBUTTON));
\r
410 hOriginal = LoadImage(hInst, MAKEINTRESOURCE(remote_toolbar_bmp), IMAGE_BITMAP, 0, 0, LR_DEFAULTSIZE | LR_LOADMAP3DCOLORS);
\r
411 if(hOriginal != NULL)
\r
413 hResized = ResizeBitmap(hOriginal, 64, 64, 16, 64);
\r
414 DeleteObject(hOriginal);
\r
416 hWndTbarRemote = CreateToolbarEx(
\r
418 WS_CHILD | WS_VISIBLE | TBSTYLE_TOOLTIPS | CCS_NORESIZE | TBSTYLE_FLAT,
\r
422 (UINT_PTR)hResized,
\r
424 sizeof(TbarDataRemote)/sizeof(TBBUTTON),
\r
425 CalcPixelX(16),CalcPixelY(16),
\r
426 CalcPixelX(16),CalcPixelY(16),
\r
428 if(hResized != NULL)
\r
429 DeleteObject(hOriginal);
\r
432 if(hWndTbarRemote != NULL)
\r
434 /* 2007/09/21 sunasunamix ここから *********************/
\r
436 // pOldTbarRemoteProc = (WNDPROC)SetWindowLong(hWndTbarRemote, GWL_WNDPROC, (DWORD)CountermeasureTbarRemoteProc);
\r
437 pOldTbarRemoteProc = (WNDPROC)SetWindowLongPtr(hWndTbarRemote, GWLP_WNDPROC, (LONG_PTR)CountermeasureTbarRemoteProc);
\r
438 /********************************************* ここまで */
\r
441 // MoveWindow(hWndTbarRemote, LocalWidth + SepaWidth, TOOLWIN_HEIGHT, RemoteWidth, TOOLWIN_HEIGHT, FALSE);
\r
442 MoveWindow(hWndTbarRemote, LocalWidth + SepaWidth, AskToolWinHeight(), RemoteWidth, AskToolWinHeight(), FALSE);
\r
444 /*===== ホストのディレクトリ名ウインドウ =====*/
\r
446 SendMessage(hWndTbarRemote, TB_GETITEMRECT, 3, (LPARAM)&Rect1);
\r
448 // hWndDirRemote = CreateWindowEx(WS_EX_CLIENTEDGE,
\r
450 // WS_CHILD | WS_VISIBLE | WS_BORDER | WS_VSCROLL | CBS_DROPDOWN | CBS_AUTOHSCROLL,
\r
451 // Rect1.right, Rect1.top, RemoteWidth - Rect1.right, 200,
\r
452 // hWndTbarRemote, (HMENU)COMBO_REMOTE, hInst, NULL);
\r
453 hWndDirRemote = CreateWindowEx(WS_EX_CLIENTEDGE,
\r
455 WS_CHILD | WS_VISIBLE | WS_BORDER | WS_VSCROLL | CBS_DROPDOWN | CBS_AUTOHSCROLL,
\r
456 Rect1.right, Rect1.top, RemoteWidth - Rect1.right, CalcPixelY(200),
\r
457 hWndTbarRemote, (HMENU)COMBO_REMOTE, hInst, NULL);
\r
459 if(hWndDirRemote != NULL)
\r
461 /* エディットコントロールを探す */
\r
462 hWndDirRemoteEdit = GetWindow(hWndDirRemote, GW_CHILD);
\r
463 if(hWndDirRemoteEdit != NULL)
\r
465 // HistEditBoxProcPtr = (WNDPROC)SetWindowLong(hWndDirRemoteEdit, GWL_WNDPROC, (LONG)HistEditBoxWndProc);
\r
466 HistEditBoxProcPtr = (WNDPROC)SetWindowLongPtr(hWndDirRemoteEdit, GWLP_WNDPROC, (LONG_PTR)HistEditBoxWndProc);
\r
468 SendMessage(hWndDirRemote, WM_SETFONT, (WPARAM)DlgFont, MAKELPARAM(TRUE, 0));
\r
469 SendMessage(hWndDirRemote, CB_LIMITTEXT, FMAX_PATH, 0);
\r
470 SendMessage(hWndDirRemote, CB_SETCURSEL, 0, 0);
\r
474 Sts = FFFTP_SUCCESS;
\r
475 if((hWndTbarMain == NULL) ||
\r
476 (hWndTbarLocal == NULL) ||
\r
477 (hWndTbarRemote == NULL) ||
\r
478 (hWndDirLocal == NULL) ||
\r
479 (hWndDirRemote == NULL))
\r
490 static LRESULT CALLBACK HistEditBoxWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
\r
492 char Tmp[FMAX_PATH+1];
\r
497 if(wParam == 0x0D) /* リターンキーが押された */
\r
499 if(hWnd == hWndDirLocalEdit)
\r
501 SendMessage(hWndDirLocalEdit, WM_GETTEXT, FMAX_PATH+1, (LPARAM)Tmp);
\r
503 GetLocalDirForWnd();
\r
509 SendMessage(hWndDirRemoteEdit, WM_GETTEXT, FMAX_PATH+1, (LPARAM)Tmp);
\r
510 if(CheckClosedAndReconnect() == FFFTP_SUCCESS)
\r
512 if(DoCWD(Tmp, YES, NO, YES) < FTP_RETRY)
\r
513 GetRemoteDirForWnd(CACHE_NORMAL, &CancelFlg);
\r
517 else if(wParam == 0x09) /* TABキーが押された */
\r
519 if(hWnd == hWndDirLocalEdit)
\r
521 SetFocus(GetLocalHwnd());
\r
525 SetFocus(GetRemoteHwnd());
\r
529 return(CallWindowProc(HistEditBoxProcPtr, hWnd, message, wParam, lParam));
\r
533 return(CallWindowProc(HistEditBoxProcPtr, hWnd, message, wParam, lParam));
\r
541 /*----- ツールバーを削除 ------------------------------------------------------
\r
548 *----------------------------------------------------------------------------*/
\r
550 void DeleteToolBarWindow(void)
\r
552 // if(DlgFont != NULL)
\r
553 // DeleteObject(DlgFont);
\r
555 if(hWndTbarMain != NULL)
\r
556 DestroyWindow(hWndTbarMain);
\r
557 if(hWndTbarLocal != NULL)
\r
558 DestroyWindow(hWndTbarLocal);
\r
559 if(hWndTbarRemote != NULL)
\r
560 DestroyWindow(hWndTbarRemote);
\r
561 if(hWndDirLocal != NULL)
\r
562 DestroyWindow(hWndDirLocal);
\r
563 if(hWndDirRemote != NULL)
\r
564 DestroyWindow(hWndDirRemote);
\r
569 /*----- メインのツールバーのウインドウハンドルを返す --------------------------
\r
576 *----------------------------------------------------------------------------*/
\r
578 HWND GetMainTbarWnd(void)
\r
580 return(hWndTbarMain);
\r
584 /*----- ローカル側のヒストリウインドウのウインドウハンドルを返す --------------
\r
591 *----------------------------------------------------------------------------*/
\r
593 HWND GetLocalHistHwnd(void)
\r
595 return(hWndDirLocal);
\r
599 /*----- ホスト側のヒストリウインドウのウインドウハンドルを返す ----------------
\r
606 *----------------------------------------------------------------------------*/
\r
608 HWND GetRemoteHistHwnd(void)
\r
610 return(hWndDirRemote);
\r
614 /*----- ローカル側のヒストリエディットのウインドウハンドルを返す --------------
\r
621 *----------------------------------------------------------------------------*/
\r
623 HWND GetLocalHistEditHwnd(void)
\r
625 return(hWndDirLocalEdit);
\r
629 /*----- ホスト側のヒストリエディットのウインドウハンドルを返す ----------------
\r
636 *----------------------------------------------------------------------------*/
\r
638 HWND GetRemoteHistEditHwnd(void)
\r
640 return(hWndDirRemoteEdit);
\r
644 /*----- ローカル側のツールバーのウインドウハンドルを返す ----------------------
\r
651 *----------------------------------------------------------------------------*/
\r
653 HWND GetLocalTbarWnd(void)
\r
655 return(hWndTbarLocal);
\r
659 /*----- ホスト側のツールバーのウインドウハンドルを返す ------------------------
\r
666 *----------------------------------------------------------------------------*/
\r
668 HWND GetRemoteTbarWnd(void)
\r
670 return(hWndTbarRemote);
\r
674 /*----- HideUI の状態を返す ---------------------------------------------------
\r
681 *----------------------------------------------------------------------------*/
\r
683 int GetHideUI(void)
\r
687 return (HideUI > 0 ? YES : NO);
\r
691 /*----- ツールボタン/メニューのハイド処理 ------------------------------------
\r
698 *----------------------------------------------------------------------------*/
\r
700 void MakeButtonsFocus(void)
\r
708 // if(HideUI == NO)
\r
711 hWndMain = GetMainHwnd();
\r
712 hWndFocus = GetFocus();
\r
714 if(hWndFocus == GetRemoteHwnd())
\r
717 Count = GetSelectedCount(Win);
\r
719 if(AskConnecting() == YES)
\r
721 EnableMenuItem(GetMenu(hWndMain), MENU_BMARK_ADD, MF_ENABLED);
\r
722 EnableMenuItem(GetMenu(hWndMain), MENU_BMARK_ADD_LOCAL, MF_ENABLED);
\r
723 EnableMenuItem(GetMenu(hWndMain), MENU_BMARK_ADD_BOTH, MF_ENABLED);
\r
724 EnableMenuItem(GetMenu(hWndMain), MENU_BMARK_EDIT, MF_ENABLED);
\r
725 EnableMenuItem(GetMenu(hWndMain), MENU_DIRINFO, MF_ENABLED);
\r
726 EnableMenuItem(GetMenu(hWndMain), MENU_MIRROR_UPLOAD, MF_ENABLED);
\r
727 EnableMenuItem(GetMenu(hWndMain), MENU_MIRROR_DOWNLOAD, MF_ENABLED);
\r
728 EnableMenuItem(GetMenu(hWndMain), MENU_DOWNLOAD_NAME, MF_ENABLED);
\r
729 SendMessage(hWndTbarMain, TB_ENABLEBUTTON, MENU_MIRROR_UPLOAD, MAKELONG(TRUE, 0));
\r
733 EnableMenuItem(GetMenu(hWndMain), MENU_BMARK_ADD, MF_GRAYED);
\r
734 EnableMenuItem(GetMenu(hWndMain), MENU_BMARK_ADD_LOCAL, MF_GRAYED);
\r
735 EnableMenuItem(GetMenu(hWndMain), MENU_BMARK_ADD_BOTH, MF_GRAYED);
\r
736 EnableMenuItem(GetMenu(hWndMain), MENU_BMARK_EDIT, MF_GRAYED);
\r
737 EnableMenuItem(GetMenu(hWndMain), MENU_DIRINFO, MF_GRAYED);
\r
738 EnableMenuItem(GetMenu(hWndMain), MENU_MIRROR_UPLOAD, MF_GRAYED);
\r
739 EnableMenuItem(GetMenu(hWndMain), MENU_MIRROR_DOWNLOAD, MF_GRAYED);
\r
740 EnableMenuItem(GetMenu(hWndMain), MENU_DOWNLOAD_NAME, MF_GRAYED);
\r
741 SendMessage(hWndTbarMain, TB_ENABLEBUTTON, MENU_MIRROR_UPLOAD, MAKELONG(FALSE, 0));
\r
744 if(hWndFocus == GetLocalHwnd())
\r
746 if((AskConnecting() == YES) && (Count > 0))
\r
748 SendMessage(hWndTbarMain, TB_ENABLEBUTTON, MENU_UPLOAD, MAKELONG(TRUE, 0));
\r
749 EnableMenuItem(GetMenu(hWndMain), MENU_UPLOAD, MF_ENABLED);
\r
750 EnableMenuItem(GetMenu(hWndMain), MENU_UPLOAD_AS, MF_ENABLED);
\r
754 SendMessage(hWndTbarMain, TB_ENABLEBUTTON, MENU_UPLOAD, MAKELONG(FALSE, 0));
\r
755 EnableMenuItem(GetMenu(hWndMain), MENU_UPLOAD, MF_GRAYED);
\r
756 EnableMenuItem(GetMenu(hWndMain), MENU_UPLOAD_AS, MF_GRAYED);
\r
758 SendMessage(hWndTbarMain, TB_ENABLEBUTTON, MENU_DOWNLOAD, MAKELONG(FALSE, 0));
\r
759 EnableMenuItem(GetMenu(hWndMain), MENU_SOMECMD, MF_GRAYED);
\r
760 EnableMenuItem(GetMenu(hWndMain), MENU_DOWNLOAD, MF_GRAYED);
\r
761 EnableMenuItem(GetMenu(hWndMain), MENU_DOWNLOAD_AS, MF_GRAYED);
\r
762 EnableMenuItem(GetMenu(hWndMain), MENU_DOWNLOAD_AS_FILE, MF_GRAYED);
\r
765 if(hWndFocus == GetRemoteHwnd())
\r
767 if(AskConnecting() == YES)
\r
769 EnableMenuItem(GetMenu(hWndMain), MENU_SOMECMD, MF_ENABLED);
\r
773 EnableMenuItem(GetMenu(hWndMain), MENU_SOMECMD, MF_GRAYED);
\r
776 if((AskConnecting() == YES) && (Count > 0))
\r
778 SendMessage(hWndTbarMain, TB_ENABLEBUTTON, MENU_DOWNLOAD, MAKELONG(TRUE, 0));
\r
779 EnableMenuItem(GetMenu(hWndMain), MENU_DOWNLOAD, MF_ENABLED);
\r
780 EnableMenuItem(GetMenu(hWndMain), MENU_DOWNLOAD_AS, MF_ENABLED);
\r
781 EnableMenuItem(GetMenu(hWndMain), MENU_DOWNLOAD_AS_FILE, MF_ENABLED);
\r
785 SendMessage(hWndTbarMain, TB_ENABLEBUTTON, MENU_DOWNLOAD, MAKELONG(FALSE, 0));
\r
786 EnableMenuItem(GetMenu(hWndMain), MENU_DOWNLOAD, MF_GRAYED);
\r
787 EnableMenuItem(GetMenu(hWndMain), MENU_DOWNLOAD_AS, MF_GRAYED);
\r
788 EnableMenuItem(GetMenu(hWndMain), MENU_DOWNLOAD_AS_FILE, MF_GRAYED);
\r
790 SendMessage(hWndTbarMain, TB_ENABLEBUTTON, MENU_UPLOAD, MAKELONG(FALSE, 0));
\r
791 EnableMenuItem(GetMenu(hWndMain), MENU_UPLOAD, MF_GRAYED);
\r
792 EnableMenuItem(GetMenu(hWndMain), MENU_UPLOAD_AS, MF_GRAYED);
\r
795 if((hWndFocus == GetLocalHwnd()) || (hWndFocus == GetRemoteHwnd()))
\r
799 SendMessage(hWndTbarMain, TB_ENABLEBUTTON, MENU_DELETE, MAKELONG(TRUE, 0));
\r
800 EnableMenuItem(GetMenu(hWndMain), MENU_DELETE, MF_ENABLED);
\r
801 SendMessage(hWndTbarMain, TB_ENABLEBUTTON, MENU_RENAME, MAKELONG(TRUE, 0));
\r
802 EnableMenuItem(GetMenu(hWndMain), MENU_RENAME, MF_ENABLED);
\r
804 EnableMenuItem(GetMenu(hWndMain), MENU_CHMOD, MF_ENABLED);
\r
809 SendMessage(hWndTbarMain, TB_ENABLEBUTTON, MENU_DELETE, MAKELONG(FALSE, 0));
\r
810 EnableMenuItem(GetMenu(hWndMain), MENU_DELETE, MF_GRAYED);
\r
811 SendMessage(hWndTbarMain, TB_ENABLEBUTTON, MENU_RENAME, MAKELONG(FALSE, 0));
\r
812 EnableMenuItem(GetMenu(hWndMain), MENU_RENAME, MF_GRAYED);
\r
814 EnableMenuItem(GetMenu(hWndMain), MENU_CHMOD, MF_GRAYED);
\r
817 if((hWndFocus == GetLocalHwnd()) || (AskConnecting() == YES))
\r
819 SendMessage(hWndTbarMain, TB_ENABLEBUTTON, MENU_MKDIR, MAKELONG(TRUE, 0));
\r
820 EnableMenuItem(GetMenu(hWndMain), MENU_MKDIR, MF_ENABLED);
\r
821 EnableMenuItem(GetMenu(hWndMain), MENU_FILESIZE, MF_ENABLED);
\r
825 SendMessage(hWndTbarMain, TB_ENABLEBUTTON, MENU_MKDIR, MAKELONG(FALSE, 0));
\r
826 EnableMenuItem(GetMenu(hWndMain), MENU_MKDIR, MF_GRAYED);
\r
827 EnableMenuItem(GetMenu(hWndMain), MENU_FILESIZE, MF_GRAYED);
\r
832 SendMessage(hWndTbarMain, TB_ENABLEBUTTON, MENU_UPLOAD, MAKELONG(FALSE, 0));
\r
833 EnableMenuItem(GetMenu(hWndMain), MENU_UPLOAD, MF_GRAYED);
\r
834 EnableMenuItem(GetMenu(hWndMain), MENU_UPLOAD_AS, MF_GRAYED);
\r
835 SendMessage(hWndTbarMain, TB_ENABLEBUTTON, MENU_DOWNLOAD, MAKELONG(FALSE, 0));
\r
836 EnableMenuItem(GetMenu(hWndMain), MENU_DOWNLOAD, MF_GRAYED);
\r
837 EnableMenuItem(GetMenu(hWndMain), MENU_DOWNLOAD_AS, MF_GRAYED);
\r
838 EnableMenuItem(GetMenu(hWndMain), MENU_DOWNLOAD_AS_FILE, MF_GRAYED);
\r
839 SendMessage(hWndTbarMain, TB_ENABLEBUTTON, MENU_DELETE, MAKELONG(FALSE, 0));
\r
840 EnableMenuItem(GetMenu(hWndMain), MENU_DELETE, MF_GRAYED);
\r
841 SendMessage(hWndTbarMain, TB_ENABLEBUTTON, MENU_RENAME, MAKELONG(FALSE, 0));
\r
842 EnableMenuItem(GetMenu(hWndMain), MENU_RENAME, MF_GRAYED);
\r
843 SendMessage(hWndTbarMain, TB_ENABLEBUTTON, MENU_MKDIR, MAKELONG(FALSE, 0));
\r
844 EnableMenuItem(GetMenu(hWndMain), MENU_MKDIR, MF_GRAYED);
\r
845 EnableMenuItem(GetMenu(hWndMain), MENU_CHMOD, MF_GRAYED);
\r
846 EnableMenuItem(GetMenu(hWndMain), MENU_FILESIZE, MF_GRAYED);
\r
847 EnableMenuItem(GetMenu(hWndMain), MENU_SOMECMD, MF_GRAYED);
\r
854 /*----- ユーザの操作を禁止する ------------------------------------------------
\r
861 *----------------------------------------------------------------------------*/
\r
863 void DisableUserOpe(void)
\r
871 for(i = 0; i < sizeof(HideMenus) / sizeof(int); i++)
\r
873 EnableMenuItem(GetMenu(GetMainHwnd()), HideMenus[i], MF_GRAYED);
\r
874 SendMessage(hWndTbarMain, TB_ENABLEBUTTON, HideMenus[i], MAKELONG(FALSE, 0));
\r
875 SendMessage(hWndTbarLocal, TB_ENABLEBUTTON, HideMenus[i], MAKELONG(FALSE, 0));
\r
876 SendMessage(hWndTbarRemote, TB_ENABLEBUTTON, HideMenus[i], MAKELONG(FALSE, 0));
\r
879 EnableWindow(hWndDirLocal, FALSE);
\r
880 EnableWindow(hWndDirRemote, FALSE);
\r
882 // 特定の操作を行うと異常終了するバグ修正
\r
883 EnableWindow(GetLocalHwnd(), FALSE);
\r
884 EnableWindow(GetRemoteHwnd(), FALSE);
\r
890 /*----- ユーザの操作を許可する ------------------------------------------------
\r
897 *----------------------------------------------------------------------------*/
\r
899 void EnableUserOpe(void)
\r
904 // if(HideUI == YES)
\r
909 for(i = 0; i < sizeof(HideMenus) / sizeof(int); i++)
\r
911 EnableMenuItem(GetMenu(GetMainHwnd()), HideMenus[i], MF_ENABLED);
\r
912 SendMessage(hWndTbarMain, TB_ENABLEBUTTON, HideMenus[i], MAKELONG(TRUE, 0));
\r
913 SendMessage(hWndTbarLocal, TB_ENABLEBUTTON, HideMenus[i], MAKELONG(TRUE, 0));
\r
914 SendMessage(hWndTbarRemote, TB_ENABLEBUTTON, HideMenus[i], MAKELONG(TRUE, 0));
\r
916 EnableWindow(hWndDirLocal, TRUE);
\r
917 EnableWindow(hWndDirRemote, TRUE);
\r
919 // 特定の操作を行うと異常終了するバグ修正
\r
920 EnableWindow(GetLocalHwnd(), TRUE);
\r
921 EnableWindow(GetRemoteHwnd(), TRUE);
\r
923 // 選択不可な漢字コードのボタンが表示されるバグを修正
\r
924 HideHostKanjiButton();
\r
925 HideLocalKanjiButton();
\r
930 MakeButtonsFocus();
\r
936 /*----- ユーザの操作が禁止されているかどうかを返す ----------------------------
\r
944 *----------------------------------------------------------------------------*/
\r
946 int AskUserOpeDisabled(void)
\r
950 return (HideUI > 0 ? YES : NO);
\r
954 /*===================================================
\r
956 *===================================================*/
\r
958 /*----- 転送モードを設定する --------------------------------------------------
\r
961 * int Mode : 転送モード (TYPE_xx)
\r
965 *----------------------------------------------------------------------------*/
\r
967 void SetTransferTypeImm(int Mode)
\r
969 TmpTransMode = Mode;
\r
970 HideHostKanjiButton();
\r
971 HideLocalKanjiButton();
\r
976 /*----- メニューにより転送モードを設定する ------------------------------------
\r
979 * int Type : 転送モード (MENU_xxxx)
\r
983 *----------------------------------------------------------------------------*/
\r
985 void SetTransferType(int Type)
\r
990 TmpTransMode = TYPE_A;
\r
994 TmpTransMode = TYPE_I;
\r
998 TmpTransMode = TYPE_X;
\r
1001 HideHostKanjiButton();
\r
1002 HideLocalKanjiButton();
\r
1007 /*----- 転送モードにしたがってボタンを表示する --------------------------------
\r
1014 *----------------------------------------------------------------------------*/
\r
1016 void DispTransferType(void)
\r
1018 switch(TmpTransMode)
\r
1021 SendMessage(hWndTbarMain, TB_CHECKBUTTON, MENU_TEXT, MAKELONG(TRUE, 0));
\r
1025 SendMessage(hWndTbarMain, TB_CHECKBUTTON, MENU_BINARY, MAKELONG(TRUE, 0));
\r
1029 SendMessage(hWndTbarMain, TB_CHECKBUTTON, MENU_AUTO, MAKELONG(TRUE, 0));
\r
1036 /*----- 設定上の転送モードを返す ----------------------------------------------
\r
1042 * int 転送モード (TYPE_xx)
\r
1043 *----------------------------------------------------------------------------*/
\r
1045 int AskTransferType(void)
\r
1047 return(TmpTransMode);
\r
1051 /*----- 実際の転送モードを返す ------------------------------------------------
\r
1054 * char Fname : ファイル名
\r
1055 * int Type : 設定上の転送モード (TYPE_xx)
\r
1058 * int 転送モード (TYPE_xx)
\r
1059 *----------------------------------------------------------------------------*/
\r
1061 int AskTransferTypeAssoc(char *Fname, int Type)
\r
1071 if(StrMultiLen(AsciiExt) > 0)
\r
1073 Name = GetFileName(Fname);
\r
1075 while(*Pos != NUL)
\r
1077 if(CheckFname(Name, Pos) == FFFTP_SUCCESS)
\r
1082 Pos += strlen(Pos) + 1;
\r
1090 /*----- 転送モードを保存する --------------------------------------------------
\r
1099 * 現在の転送モードがレジストリに保存される
\r
1100 *----------------------------------------------------------------------------*/
\r
1102 void SaveTransferType(void)
\r
1104 TransMode = TmpTransMode;
\r
1109 /*===================================================
\r
1111 *===================================================*/
\r
1113 /*----- ホストの漢字モードをセットする ----------------------------------------
\r
1116 * int Mode : 漢字モード (KANJI_xxxx)
\r
1120 *----------------------------------------------------------------------------*/
\r
1122 void SetHostKanjiCodeImm(int Mode)
\r
1124 TmpHostKanjiCode = Mode;
\r
1125 DispHostKanjiCode();
\r
1126 HideHostKanjiButton();
\r
1131 /*----- メニューによりホストの漢字モードを設定する -----------------------------
\r
1134 * int Type : 漢字モード (MENU_xxxx)
\r
1138 *----------------------------------------------------------------------------*/
\r
1140 void SetHostKanjiCode(int Type)
\r
1145 case MENU_KNJ_SJIS :
\r
1146 TmpHostKanjiCode = KANJI_SJIS;
\r
1149 case MENU_KNJ_EUC :
\r
1150 TmpHostKanjiCode = KANJI_EUC;
\r
1153 case MENU_KNJ_JIS :
\r
1154 TmpHostKanjiCode = KANJI_JIS;
\r
1157 case MENU_KNJ_UTF8N :
\r
1158 TmpHostKanjiCode = KANJI_UTF8N;
\r
1161 case MENU_KNJ_UTF8BOM :
\r
1162 TmpHostKanjiCode = KANJI_UTF8BOM;
\r
1166 TmpHostKanjiCode = KANJI_NOCNV;
\r
1169 DispHostKanjiCode();
\r
1170 HideHostKanjiButton();
\r
1175 /*----- ホストの漢字モードにしたがってボタンを表示する ------------------------
\r
1182 *----------------------------------------------------------------------------*/
\r
1184 void DispHostKanjiCode(void)
\r
1186 switch(TmpHostKanjiCode)
\r
1190 SendMessage(hWndTbarMain, TB_CHECKBUTTON, MENU_KNJ_SJIS, MAKELONG(TRUE, 0));
\r
1194 SendMessage(hWndTbarMain, TB_CHECKBUTTON, MENU_KNJ_EUC, MAKELONG(TRUE, 0));
\r
1198 SendMessage(hWndTbarMain, TB_CHECKBUTTON, MENU_KNJ_JIS, MAKELONG(TRUE, 0));
\r
1201 case KANJI_UTF8N :
\r
1202 SendMessage(hWndTbarMain, TB_CHECKBUTTON, MENU_KNJ_UTF8N, MAKELONG(TRUE, 0));
\r
1205 case KANJI_UTF8BOM :
\r
1206 SendMessage(hWndTbarMain, TB_CHECKBUTTON, MENU_KNJ_UTF8BOM, MAKELONG(TRUE, 0));
\r
1210 SendMessage(hWndTbarMain, TB_CHECKBUTTON, MENU_KNJ_NONE, MAKELONG(TRUE, 0));
\r
1217 /*----- ホストの漢字モードを返す ----------------------------------------------
\r
1223 * int 漢字モード (KANJI_xxxx)
\r
1224 *----------------------------------------------------------------------------*/
\r
1226 int AskHostKanjiCode(void)
\r
1228 return(TmpHostKanjiCode);
\r
1232 /*----- 漢字モードボタンのハイド処理を行う ------------------------------------
\r
1239 *----------------------------------------------------------------------------*/
\r
1241 void HideHostKanjiButton(void)
\r
1243 switch(TmpTransMode)
\r
1247 SendMessage(hWndTbarMain, TB_ENABLEBUTTON, MENU_KNJ_SJIS, MAKELONG(FALSE, 0));
\r
1248 SendMessage(hWndTbarMain, TB_ENABLEBUTTON, MENU_KNJ_EUC, MAKELONG(FALSE, 0));
\r
1249 SendMessage(hWndTbarMain, TB_ENABLEBUTTON, MENU_KNJ_JIS, MAKELONG(FALSE, 0));
\r
1250 SendMessage(hWndTbarMain, TB_ENABLEBUTTON, MENU_KNJ_UTF8N, MAKELONG(FALSE, 0));
\r
1251 SendMessage(hWndTbarMain, TB_ENABLEBUTTON, MENU_KNJ_UTF8BOM, MAKELONG(FALSE, 0));
\r
1252 SendMessage(hWndTbarMain, TB_ENABLEBUTTON, MENU_KNJ_NONE, MAKELONG(FALSE, 0));
\r
1253 SendMessage(hWndTbarMain, TB_ENABLEBUTTON, MENU_KANACNV, MAKELONG(FALSE, 0));
\r
1257 SendMessage(hWndTbarMain, TB_ENABLEBUTTON, MENU_KNJ_SJIS, MAKELONG(TRUE, 0));
\r
1258 SendMessage(hWndTbarMain, TB_ENABLEBUTTON, MENU_KNJ_EUC, MAKELONG(TRUE, 0));
\r
1259 SendMessage(hWndTbarMain, TB_ENABLEBUTTON, MENU_KNJ_JIS, MAKELONG(TRUE, 0));
\r
1260 SendMessage(hWndTbarMain, TB_ENABLEBUTTON, MENU_KNJ_UTF8N, MAKELONG(TRUE, 0));
\r
1261 SendMessage(hWndTbarMain, TB_ENABLEBUTTON, MENU_KNJ_UTF8BOM, MAKELONG(TRUE, 0));
\r
1262 SendMessage(hWndTbarMain, TB_ENABLEBUTTON, MENU_KNJ_NONE, MAKELONG(TRUE, 0));
\r
1263 // if(TmpHostKanjiCode != KANJI_NOCNV)
\r
1264 // SendMessage(hWndTbarMain, TB_ENABLEBUTTON, MENU_KANACNV, MAKELONG(TRUE, 0));
\r
1266 // SendMessage(hWndTbarMain, TB_ENABLEBUTTON, MENU_KANACNV, MAKELONG(FALSE, 0));
\r
1268 // 現在カナ変換はShift_JIS、JIS、EUC間でのみ機能する
\r
1269 SendMessage(hWndTbarMain, TB_ENABLEBUTTON, MENU_KANACNV, MAKELONG(FALSE, 0));
\r
1270 switch(TmpHostKanjiCode)
\r
1275 switch(TmpLocalKanjiCode)
\r
1280 SendMessage(hWndTbarMain, TB_ENABLEBUTTON, MENU_KANACNV, MAKELONG(TRUE, 0));
\r
1292 // ホスト側が無変換の時はローカルも無変換
\r
1294 void SetLocalKanjiCodeImm(int Mode)
\r
1296 TmpLocalKanjiCode = Mode;
\r
1297 DispLocalKanjiCode();
\r
1298 HideLocalKanjiButton();
\r
1302 void SetLocalKanjiCode(int Type)
\r
1307 case MENU_L_KNJ_SJIS :
\r
1308 TmpLocalKanjiCode = KANJI_SJIS;
\r
1311 case MENU_L_KNJ_EUC :
\r
1312 TmpLocalKanjiCode = KANJI_EUC;
\r
1315 case MENU_L_KNJ_JIS :
\r
1316 TmpLocalKanjiCode = KANJI_JIS;
\r
1319 case MENU_L_KNJ_UTF8N :
\r
1320 TmpLocalKanjiCode = KANJI_UTF8N;
\r
1323 case MENU_L_KNJ_UTF8BOM :
\r
1324 TmpLocalKanjiCode = KANJI_UTF8BOM;
\r
1327 DispLocalKanjiCode();
\r
1328 HideLocalKanjiButton();
\r
1332 void DispLocalKanjiCode(void)
\r
1334 switch(TmpLocalKanjiCode)
\r
1338 SendMessage(hWndTbarMain, TB_CHECKBUTTON, MENU_L_KNJ_SJIS, MAKELONG(TRUE, 0));
\r
1342 SendMessage(hWndTbarMain, TB_CHECKBUTTON, MENU_L_KNJ_EUC, MAKELONG(TRUE, 0));
\r
1346 SendMessage(hWndTbarMain, TB_CHECKBUTTON, MENU_L_KNJ_JIS, MAKELONG(TRUE, 0));
\r
1349 case KANJI_UTF8N :
\r
1350 SendMessage(hWndTbarMain, TB_CHECKBUTTON, MENU_L_KNJ_UTF8N, MAKELONG(TRUE, 0));
\r
1353 case KANJI_UTF8BOM :
\r
1354 SendMessage(hWndTbarMain, TB_CHECKBUTTON, MENU_L_KNJ_UTF8BOM, MAKELONG(TRUE, 0));
\r
1360 int AskLocalKanjiCode(void)
\r
1362 return(TmpLocalKanjiCode);
\r
1365 void HideLocalKanjiButton(void)
\r
1367 switch(TmpTransMode)
\r
1371 SendMessage(hWndTbarMain, TB_ENABLEBUTTON, MENU_L_KNJ_SJIS, MAKELONG(FALSE, 0));
\r
1372 SendMessage(hWndTbarMain, TB_ENABLEBUTTON, MENU_L_KNJ_EUC, MAKELONG(FALSE, 0));
\r
1373 SendMessage(hWndTbarMain, TB_ENABLEBUTTON, MENU_L_KNJ_JIS, MAKELONG(FALSE, 0));
\r
1374 SendMessage(hWndTbarMain, TB_ENABLEBUTTON, MENU_L_KNJ_UTF8N, MAKELONG(FALSE, 0));
\r
1375 SendMessage(hWndTbarMain, TB_ENABLEBUTTON, MENU_L_KNJ_UTF8BOM, MAKELONG(FALSE, 0));
\r
1379 SendMessage(hWndTbarMain, TB_ENABLEBUTTON, MENU_L_KNJ_SJIS, MAKELONG(TRUE, 0));
\r
1380 SendMessage(hWndTbarMain, TB_ENABLEBUTTON, MENU_L_KNJ_EUC, MAKELONG(TRUE, 0));
\r
1381 SendMessage(hWndTbarMain, TB_ENABLEBUTTON, MENU_L_KNJ_JIS, MAKELONG(TRUE, 0));
\r
1382 SendMessage(hWndTbarMain, TB_ENABLEBUTTON, MENU_L_KNJ_UTF8N, MAKELONG(TRUE, 0));
\r
1383 SendMessage(hWndTbarMain, TB_ENABLEBUTTON, MENU_L_KNJ_UTF8BOM, MAKELONG(TRUE, 0));
\r
1384 // 現在カナ変換はShift_JIS、JIS、EUC間でのみ機能する
\r
1385 SendMessage(hWndTbarMain, TB_ENABLEBUTTON, MENU_KANACNV, MAKELONG(FALSE, 0));
\r
1386 switch(TmpHostKanjiCode)
\r
1391 switch(TmpLocalKanjiCode)
\r
1396 SendMessage(hWndTbarMain, TB_ENABLEBUTTON, MENU_KANACNV, MAKELONG(TRUE, 0));
\r
1406 void SaveLocalKanjiCode(void)
\r
1408 LocalKanjiCode = TmpLocalKanjiCode;
\r
1413 /*===================================================
\r
1415 *===================================================*/
\r
1417 /*----- ホストの半角変換モードを設定する --------------------------------------
\r
1420 * int Mode : 半角変換モード(YES/NO)
\r
1424 *----------------------------------------------------------------------------*/
\r
1426 void SetHostKanaCnvImm(int Mode)
\r
1428 TmpHostKanaCnv = Mode;
\r
1429 DispHostKanaCnv();
\r
1434 /*----- ホストの半角変換モードを反転する --------------------------------------
\r
1441 *----------------------------------------------------------------------------*/
\r
1443 void SetHostKanaCnv(void)
\r
1445 TmpHostKanaCnv ^= 1;
\r
1446 DispHostKanaCnv();
\r
1451 /*----- ホストの半角変換モードにしたがってボタンを表示する --------------------
\r
1458 *----------------------------------------------------------------------------*/
\r
1460 void DispHostKanaCnv(void)
\r
1462 if(TmpHostKanaCnv != 0)
\r
1463 SendMessage(hWndTbarMain, TB_CHECKBUTTON, MENU_KANACNV, MAKELONG(TRUE, 0));
\r
1465 SendMessage(hWndTbarMain, TB_CHECKBUTTON, MENU_KANACNV, MAKELONG(FALSE, 0));
\r
1470 /*----- ホストの半角変換モードを返す ------------------------------------------
\r
1477 *----------------------------------------------------------------------------*/
\r
1479 int AskHostKanaCnv(void)
\r
1481 return(TmpHostKanaCnv);
\r
1485 /*===================================================
\r
1487 *===================================================*/
\r
1489 /*----- ソート方法をセットする ------------------------------------------------
\r
1492 * int LFsort : ローカル側のファイルのソート方法 (SORT_xxx)
\r
1493 * int LDsort : ローカル側のディレクトリのソート方法 (SORT_xxx)
\r
1494 * int RFsort : ホスト側のファイルのソート方法 (SORT_xxx)
\r
1495 * int RDsort : ホスト側のディレクトリのソート方法 (SORT_xxx)
\r
1499 *----------------------------------------------------------------------------*/
\r
1501 void SetSortTypeImm(int LFsort, int LDsort, int RFsort, int RDsort)
\r
1503 TmpLocalFileSort = LFsort;
\r
1504 TmpLocalDirSort = LDsort;
\r
1505 TmpRemoteFileSort = RFsort;
\r
1506 TmpRemoteDirSort = RDsort;
\r
1511 /*----- リストビューのタブクリックによるソート方法のセット --------------------
\r
1514 * int Win : ウインドウ番号
\r
1518 * int ソート方法 (SORT_xxx)
\r
1519 *----------------------------------------------------------------------------*/
\r
1521 void SetSortTypeByColumn(int Win, int Tab)
\r
1523 if(Win == WIN_LOCAL)
\r
1525 if((TmpLocalFileSort & SORT_MASK_ORD) == Tab)
\r
1526 TmpLocalFileSort ^= SORT_GET_ORD;
\r
1528 TmpLocalFileSort = Tab;
\r
1530 if((Tab == SORT_NAME) || (Tab == SORT_DATE))
\r
1531 TmpLocalDirSort = TmpLocalFileSort;
\r
1533 TmpLocalDirSort = SORT_NAME;
\r
1539 if((TmpRemoteFileSort & SORT_MASK_ORD) == Tab)
\r
1540 TmpRemoteFileSort ^= SORT_GET_ORD;
\r
1542 TmpRemoteFileSort = Tab;
\r
1544 if((Tab == SORT_NAME) || (Tab == SORT_DATE))
\r
1545 TmpRemoteDirSort = TmpRemoteFileSort;
\r
1547 TmpRemoteDirSort = SORT_NAME;
\r
1554 /*----- ソート方法を返す ------------------------------------------------------
\r
1557 * int Name : どの部分か (ITEM_xxx)
\r
1560 * int ソート方法 (SORT_xxx)
\r
1561 *----------------------------------------------------------------------------*/
\r
1563 int AskSortType(int Name)
\r
1570 Ret = TmpLocalFileSort;
\r
1574 Ret = TmpLocalDirSort;
\r
1578 Ret = TmpRemoteFileSort;
\r
1582 Ret = TmpRemoteDirSort;
\r
1589 /*----- ホストごとにソートを保存するかどうかをセットする-----------------------
\r
1592 * int Sw : スイッチ (YES/NO)
\r
1596 *----------------------------------------------------------------------------*/
\r
1598 void SetSaveSortToHost(int Sw)
\r
1605 /*----- ホストごとにソートを保存するかどうかを返す ----------------------------
\r
1611 * int スイッチ (YES/NO)
\r
1612 *----------------------------------------------------------------------------*/
\r
1614 int AskSaveSortToHost(void)
\r
1621 /*===================================================
\r
1623 *===================================================*/
\r
1625 /*----- リストモードにしたがってボタンを表示する ------------------------------
\r
1632 *----------------------------------------------------------------------------*/
\r
1634 void DispListType(void)
\r
1638 hWndMain = GetMainHwnd();
\r
1642 SendMessage(hWndTbarMain, TB_CHECKBUTTON, MENU_LIST, MAKELONG(TRUE, 0));
\r
1643 CheckMenuItem(GetMenu(hWndMain), MENU_LIST, MF_CHECKED);
\r
1644 CheckMenuItem(GetMenu(hWndMain), MENU_REPORT, MF_UNCHECKED);
\r
1648 SendMessage(hWndTbarMain, TB_CHECKBUTTON, MENU_REPORT, MAKELONG(TRUE, 0));
\r
1649 CheckMenuItem(GetMenu(hWndMain), MENU_REPORT, MF_CHECKED);
\r
1650 CheckMenuItem(GetMenu(hWndMain), MENU_LIST, MF_UNCHECKED);
\r
1657 /*===================================================
\r
1659 *===================================================*/
\r
1661 /*----- 転送モードを設定する --------------------------------------------------
\r
1664 * int Mode : 転送モード (TYPE_xx)
\r
1668 *----------------------------------------------------------------------------*/
\r
1670 void SetSyncMoveMode(int Mode)
\r
1673 DispSyncMoveMode();
\r
1678 /*----- フォルダ同時移動モードを切り替える ------------------------------------
\r
1685 *----------------------------------------------------------------------------*/
\r
1687 void ToggleSyncMoveMode(void)
\r
1690 DispSyncMoveMode();
\r
1695 /*----- フォルダ同時移動を行うかどうかをによってメニュー/ボタンを表示 --------
\r
1702 *----------------------------------------------------------------------------*/
\r
1704 void DispSyncMoveMode(void)
\r
1708 SendMessage(hWndTbarMain, TB_CHECKBUTTON, MENU_SYNC, MAKELONG(TRUE, 0));
\r
1709 CheckMenuItem(GetMenu(GetMainHwnd()), MENU_SYNC, MF_CHECKED);
\r
1713 SendMessage(hWndTbarMain, TB_CHECKBUTTON, MENU_SYNC, MAKELONG(FALSE, 0));
\r
1714 CheckMenuItem(GetMenu(GetMainHwnd()), MENU_SYNC, MF_UNCHECKED);
\r
1720 /*----- フォルダ同時移動モードを返す ------------------------------------------
\r
1727 *----------------------------------------------------------------------------*/
\r
1729 int AskSyncMoveMode(void)
\r
1735 /*===================================================
\r
1737 *===================================================*/
\r
1739 /*----- ホスト側のヒストリ一覧ウインドウに登録 --------------------------------
\r
1746 *----------------------------------------------------------------------------*/
\r
1748 void SetRemoteDirHist(char *Path)
\r
1752 if((i = SendMessage(hWndDirRemote, CB_FINDSTRINGEXACT, 0, (LPARAM)Path)) != CB_ERR)
\r
1753 SendMessage(hWndDirRemote, CB_DELETESTRING, i, 0);
\r
1755 SendMessage(hWndDirRemote, CB_ADDSTRING, 0, (LPARAM)Path);
\r
1756 i = SendMessage(hWndDirRemote, CB_GETCOUNT, 0, 0);
\r
1757 SendMessage(hWndDirRemote, CB_SETCURSEL, i-1, 0);
\r
1759 strcpy(RemoteCurDir, Path);
\r
1764 /*----- ローカル側のヒストリ一覧ウインドウに登録 -------------------------------
\r
1771 *----------------------------------------------------------------------------*/
\r
1773 void SetLocalDirHist(char *Path)
\r
1777 if((i = SendMessage(hWndDirLocal, CB_FINDSTRINGEXACT, 0, (LPARAM)Path)) == CB_ERR)
\r
1778 SendMessage(hWndDirLocal, CB_ADDSTRING, 0, (LPARAM)Path);
\r
1779 i = SendMessage(hWndDirLocal, CB_FINDSTRINGEXACT, 0, (LPARAM)Path);
\r
1780 SendMessage(hWndDirLocal, CB_SETCURSEL, i, 0);
\r
1782 strcpy(LocalCurDir, Path);
\r
1787 /*----- ローカルのカレントディレクトリを返す ----------------------------------
\r
1790 * char *Buf : カレントディレクトリ名を返すバッファ
\r
1791 * int Max : バッファのサイズ
\r
1795 *----------------------------------------------------------------------------*/
\r
1797 void AskLocalCurDir(char *Buf, int Max)
\r
1799 memset(Buf, 0, Max);
\r
1800 strncpy(Buf, LocalCurDir, Max-1);
\r
1805 /*----- ホストのカレントディレクトリを返す ------------------------------------
\r
1808 * char *Buf : カレントディレクトリ名を返すバッファ
\r
1809 * int Max : バッファのサイズ
\r
1813 *----------------------------------------------------------------------------*/
\r
1815 void AskRemoteCurDir(char *Buf, int Max)
\r
1817 memset(Buf, 0, Max);
\r
1818 strncpy(Buf, RemoteCurDir, Max-1);
\r
1823 /*----- カレントディレクトリを設定する ----------------------------------------
\r
1830 *----------------------------------------------------------------------------*/
\r
1832 void SetCurrentDirAsDirHist(void)
\r
1834 SetCurrentDirectory(LocalCurDir);
\r
1839 /*===================================================
\r
1841 *===================================================*/
\r
1843 /*----- ドットファイルを表示するかどうかをメニューに表示する ------------------
\r
1850 *----------------------------------------------------------------------------*/
\r
1852 void DispDotFileMode(void)
\r
1854 CheckMenuItem(GetMenu(GetMainHwnd()), MENU_DOTFILE, MF_UNCHECKED);
\r
1855 if(DotFile == YES)
\r
1856 CheckMenuItem(GetMenu(GetMainHwnd()), MENU_DOTFILE, MF_CHECKED);
\r
1861 /*----- ローカル側の右ボタンメニューを表示 ------------------------------------------------
\r
1864 * int Pos : メニューの位置
\r
1870 *----------------------------------------------------------------------------*/
\r
1872 void LocalRbuttonMenu(int Pos)
\r
1883 // if(HideUI == NO)
\r
1887 if(AskConnecting() == NO)
\r
1890 Count = GetSelectedCount(WIN_LOCAL);
\r
1899 hMenu = CreatePopupMenu();
\r
1900 AddOpenMenu(hMenu, Flg3);
\r
1901 AppendMenu(hMenu, MF_STRING | Flg1 | Flg2, MENU_UPLOAD, MSGJPN255);
\r
1902 AppendMenu(hMenu, MF_STRING | Flg1 | Flg2, MENU_UPLOAD_AS, MSGJPN256);
\r
1903 AppendMenu(hMenu, MF_STRING | Flg1, MENU_UPLOAD_ALL, MSGJPN257);
\r
1904 AppendMenu(hMenu, MF_STRING | Flg2, MENU_DELETE, MSGJPN258);
\r
1905 AppendMenu(hMenu, MF_STRING | Flg2, MENU_RENAME, MSGJPN259);
\r
1906 AppendMenu(hMenu, MF_STRING , MENU_MKDIR, MSGJPN260);
\r
1907 AppendMenu(hMenu, MF_SEPARATOR, 0, NULL);
\r
1908 AppendMenu(hMenu, MF_STRING , MENU_FILESIZE, MSGJPN261);
\r
1909 AppendMenu(hMenu, MF_SEPARATOR, 0, NULL);
\r
1910 AppendMenu(hMenu, MF_STRING, REFRESH_LOCAL, MSGJPN262);
\r
1913 GetCursorPos(&point);
\r
1916 GetWindowRect(GetLocalHwnd(), &Rect);
\r
1917 point.x = Rect.left + 20;
\r
1918 point.y = Rect.top + 20;
\r
1920 TrackPopupMenu(hMenu, TPM_LEFTBUTTON | TPM_RIGHTBUTTON, point.x, point.y, 0, GetMainHwnd(), NULL);
\r
1922 DestroyMenu(hMenu);
\r
1928 /*----- ホスト側の右ボタンメニューを表示 --------------------------------------
\r
1931 * int Pos : メニューの位置
\r
1937 *----------------------------------------------------------------------------*/
\r
1939 void RemoteRbuttonMenu(int Pos)
\r
1950 // if(HideUI == NO)
\r
1954 if(AskConnecting() == NO)
\r
1957 Count = GetSelectedCount(WIN_REMOTE);
\r
1966 hMenu = CreatePopupMenu();
\r
1967 AddOpenMenu(hMenu, Flg1 | Flg3);
\r
1968 AppendMenu(hMenu, MF_STRING | Flg1 | Flg2, MENU_DOWNLOAD, MSGJPN263);
\r
1969 AppendMenu(hMenu, MF_STRING | Flg1 | Flg2, MENU_DOWNLOAD_AS, MSGJPN264);
\r
1970 AppendMenu(hMenu, MF_STRING | Flg1 | Flg2, MENU_DOWNLOAD_AS_FILE, MSGJPN265);
\r
1971 AppendMenu(hMenu, MF_STRING | Flg1, MENU_DOWNLOAD_ALL, MSGJPN266);
\r
1972 AppendMenu(hMenu, MF_STRING | Flg1 | Flg2, MENU_DELETE, MSGJPN267);
\r
1973 AppendMenu(hMenu, MF_STRING | Flg1 | Flg2, MENU_RENAME, MSGJPN268);
\r
1974 #if defined(HAVE_TANDEM)
\r
1975 /* HP NonStop Server では CHMOD の仕様が異なるため使用不可 */
\r
1976 if (AskRealHostType() != HTYPE_TANDEM)
\r
1978 AppendMenu(hMenu, MF_STRING | Flg1 | Flg2, MENU_CHMOD, MSGJPN269);
\r
1979 AppendMenu(hMenu, MF_STRING | Flg1, MENU_MKDIR, MSGJPN270);
\r
1980 AppendMenu(hMenu, MF_STRING | Flg1 | Flg2, MENU_URL_COPY, MSGJPN271);
\r
1981 #if defined(HAVE_TANDEM)
\r
1982 /* OSS モードのときに表示されるように AskRealHostType() を使用する */
\r
1983 if (AskRealHostType() == HTYPE_TANDEM)
\r
1984 AppendMenu(hMenu, MF_STRING | Flg1, MENU_SWITCH_OSS, MSGJPN2001);
\r
1987 AppendMenu(hMenu, MF_STRING | Flg1 | Flg2, MENU_REMOTE_MOVE_UPDIR, MSGJPN355);
\r
1988 AppendMenu(hMenu, MF_SEPARATOR, 0, NULL);
\r
1989 AppendMenu(hMenu, MF_STRING | Flg1, MENU_FILESIZE, MSGJPN272);
\r
1990 AppendMenu(hMenu, MF_SEPARATOR, 0, NULL);
\r
1991 AppendMenu(hMenu, MF_STRING | Flg1, REFRESH_REMOTE, MSGJPN273);
\r
1994 GetCursorPos(&point);
\r
1997 GetWindowRect(GetRemoteHwnd(), &Rect);
\r
1998 point.x = Rect.left + 20;
\r
1999 point.y = Rect.top + 20;
\r
2001 if(TrackPopupMenu(hMenu, TPM_LEFTBUTTON | TPM_RIGHTBUTTON, point.x, point.y, 0, GetMainHwnd(), NULL) == 0)
\r
2002 Count = GetLastError();
\r
2004 DestroyMenu(hMenu);
\r
2010 /*----- 右ボタンメニューに「開く」を追加 -------------------------------------
\r
2013 * HMENU hMenu : メニューハンドル
\r
2018 *----------------------------------------------------------------------------*/
\r
2020 static void AddOpenMenu(HMENU hMenu, UINT Flg)
\r
2022 static const UINT MenuID[VIEWERS] = { MENU_OPEN1, MENU_OPEN2, MENU_OPEN3 };
\r
2023 char Tmp[FMAX_PATH+1];
\r
2027 // AppendMenu(hMenu, MF_STRING | Flg, MENU_DCLICK, MSGJPN274);
\r
2028 AppendMenu(hMenu, MF_STRING | Flg, MENU_OPEN, MSGJPN274);
\r
2029 for(i = 0; i < VIEWERS; i++)
\r
2031 if(strlen(ViewerName[i]) != 0)
\r
2033 sprintf(Tmp, MSGJPN275, GetToolName(ViewerName[i]), i+1);
\r
2034 AppendMenu(hMenu, MF_STRING | Flg, MenuID[i], Tmp);
\r
2037 AppendMenu(hMenu, MF_SEPARATOR, 0, NULL);
\r
2041 /* 2007/09/21 sunasunamix ここから *********************/
\r
2043 /*----- CreateToolbarEx のマウスクリック関連を無視する(TbarMain用) -----------
\r
2044 * (サブクラス化を行うためのウインドウプロシージャ)
\r
2045 *----------------------------------------------------------------------------*/
\r
2046 static LRESULT CALLBACK CountermeasureTbarMainProc(HWND hWnd,UINT uMessage,WPARAM wParam,LPARAM lParam)
\r
2048 switch (uMessage) {
\r
2051 // SetWindowLong(hWnd,GWL_WNDPROC,(DWORD)pOldTbarMainProc);
\r
2052 SetWindowLongPtr(hWnd,GWLP_WNDPROC,(LONG_PTR)pOldTbarMainProc);
\r
2054 case WM_RBUTTONDBLCLK :
\r
2055 case WM_RBUTTONDOWN :
\r
2056 case WM_RBUTTONUP :
\r
2059 return CallWindowProc(pOldTbarMainProc, hWnd, uMessage, wParam, lParam);
\r
2062 /*----- CreateToolbarEx のマウスクリック関連を無視する(TbarLocal用) ----------
\r
2063 * (サブクラス化を行うためのウインドウプロシージャ)
\r
2064 *----------------------------------------------------------------------------*/
\r
2065 static LRESULT CALLBACK CountermeasureTbarLocalProc(HWND hWnd,UINT uMessage,WPARAM wParam,LPARAM lParam)
\r
2067 switch (uMessage) {
\r
2070 // SetWindowLong(hWnd,GWL_WNDPROC,(DWORD)pOldTbarLocalProc);
\r
2071 SetWindowLongPtr(hWnd,GWLP_WNDPROC,(LONG_PTR)pOldTbarLocalProc);
\r
2073 case WM_RBUTTONDBLCLK :
\r
2074 case WM_RBUTTONDOWN :
\r
2075 case WM_RBUTTONUP :
\r
2078 return CallWindowProc(pOldTbarLocalProc, hWnd, uMessage, wParam, lParam);
\r
2081 /*----- CreateToolbarEx のマウスクリック関連を無視する(TbarRemote用) ---------
\r
2082 * (サブクラス化を行うためのウインドウプロシージャ)
\r
2083 *----------------------------------------------------------------------------*/
\r
2084 static LRESULT CALLBACK CountermeasureTbarRemoteProc(HWND hWnd,UINT uMessage,WPARAM wParam,LPARAM lParam)
\r
2086 switch (uMessage) {
\r
2089 // SetWindowLong(hWnd,GWL_WNDPROC,(DWORD)pOldTbarRemoteProc);
\r
2090 SetWindowLongPtr(hWnd,GWLP_WNDPROC,(LONG_PTR)pOldTbarRemoteProc);
\r
2092 case WM_RBUTTONDBLCLK :
\r
2093 case WM_RBUTTONDOWN :
\r
2094 case WM_RBUTTONUP :
\r
2097 return CallWindowProc(pOldTbarRemoteProc, hWnd, uMessage, wParam, lParam);
\r
2099 /********************************************* ここまで */
\r