• R/O
  • SSH
  • HTTPS

ttssh2: Commit


Commit MetaInfo

Revisão8943 (tree)
Hora2020-10-03 00:45:27
Autorzmatsuo

Mensagem de Log

ファイルを開くダイアログ用のファイル名フィルタ作成を共通関数に置き換え

- GetOpenFileName(), GetSaveFileName() 用
- GetCommonDialogFilterW()

- sendfiledlg.cpp から dglib_cpp.cpp へ移動

- ANSI版 GetCommonDialogFilterA() 追加
- ttfile.c optw = 0 を追加

- Run-Time Check Failure #3 - The variable 'optw' is being used without being initialized.

Mudança Sumário

Diff

--- trunk/teraterm/common/dlglib.h (revision 8942)
+++ trunk/teraterm/common/dlglib.h (revision 8943)
@@ -101,6 +101,8 @@
101101 wchar_t *AllocControlTextW(HWND hWnd);
102102 char *AllocControlTextA(HWND hWnd);
103103 void ExpandCBWidth(HWND dlg, int ID);
104+wchar_t *GetCommonDialogFilterW(const char *user_filter_mask, const char *UILanguageFile);
105+char *GetCommonDialogFilterA(const char *user_filter_mask, const char *UILanguageFile);
104106
105107 #ifdef __cplusplus
106108 }
--- trunk/teraterm/common/dlglib_cpp.cpp (revision 8942)
+++ trunk/teraterm/common/dlglib_cpp.cpp (revision 8943)
@@ -34,10 +34,12 @@
3434 #endif
3535 #include <stdlib.h>
3636 #include <crtdbg.h>
37+#include <wchar.h>
3738
3839 #include "dlglib.h"
3940 #include "ttlib.h"
4041 #include "layer_for_unicode.h"
42+#include "codeconv.h"
4143
4244 /**
4345 * EndDialog() 互換関数
@@ -212,3 +214,110 @@
212214 SelectObject(TmpDC, hFont);
213215 ReleaseDC(hCtrlWnd, TmpDC);
214216 }
217+
218+/**
219+ * GetOpenFileName(), GetSaveFileName() 用フィルタ文字列取得
220+ *
221+ * @param[in] user_filter_mask ユーザーフィルタ文字列
222+ * "*.txt", "*.txt;*.log" など
223+ * NULLのとき使用しない
224+ * @param[in] UILanguageFile
225+ * @param[out] len 生成した文字列長(wchar_t単位)
226+ * NULLのときは返さない
227+ * @retval "User define(*.txt)\0*.txt\0All(*.*)\0*.*\0" など
228+ * 終端は "\0\0" となる
229+ */
230+wchar_t *GetCommonDialogFilterW(const char *user_filter_mask, const char *UILanguageFile, size_t *len)
231+{
232+ // "ユーザ定義(*.txt)\0*.txt"
233+ wchar_t *user_filter_str = NULL;
234+ size_t user_filter_len = 0;
235+ if (user_filter_mask != NULL && user_filter_mask[0] != 0) {
236+ wchar_t user_filter_name[MAX_UIMSG];
237+ GetI18nStrW("Tera Term", "FILEDLG_USER_FILTER_NAME", user_filter_name, sizeof(user_filter_name), L"User define",
238+ UILanguageFile);
239+ size_t user_filter_name_len = wcslen(user_filter_name);
240+ wchar_t *user_filter_maskW = ToWcharA(user_filter_mask);
241+ size_t user_filter_mask_len = wcslen(user_filter_maskW);
242+ user_filter_len = user_filter_name_len + 1 + user_filter_mask_len + 1 + 1 + user_filter_mask_len + 1;
243+ user_filter_str = (wchar_t *)malloc(user_filter_len * sizeof(wchar_t));
244+ wchar_t *p = user_filter_str;
245+ wmemcpy(p, user_filter_name, user_filter_name_len);
246+ p += user_filter_name_len;
247+ *p++ = '(';
248+ wmemcpy(p, user_filter_maskW, user_filter_mask_len);
249+ p += user_filter_mask_len;
250+ *p++ = ')';
251+ *p++ = '\0';
252+ wmemcpy(p, user_filter_maskW, user_filter_mask_len);
253+ p += user_filter_mask_len;
254+ *p++ = '\0';
255+ free(user_filter_maskW);
256+ }
257+
258+ // "すべてのファイル(*.*)\0*.*"
259+ wchar_t all_filter_str[MAX_UIMSG];
260+ GetI18nStrW("Tera Term", "FILEDLG_ALL_FILTER", all_filter_str, _countof(all_filter_str), L"All(*.*)\\0*.*", UILanguageFile);
261+ size_t all_filter_len;
262+ {
263+ size_t all_filter_title_len = wcsnlen(all_filter_str, _countof(all_filter_str));
264+ if (all_filter_title_len == 0 || all_filter_title_len == _countof(all_filter_str)) {
265+ all_filter_str[0] = 0;
266+ all_filter_len = 0;
267+ } else {
268+ size_t all_filter_mask_max = _countof(all_filter_str) - all_filter_title_len - 1;
269+ size_t all_filter_mask_len = wcsnlen(all_filter_str + all_filter_title_len + 1, all_filter_mask_max);
270+ if (all_filter_mask_len == 0 || all_filter_mask_len == _countof(all_filter_str)) {
271+ all_filter_str[0] = 0;
272+ all_filter_len = 0;
273+ } else {
274+ all_filter_len = all_filter_title_len + 1 + all_filter_mask_len + 1;
275+ }
276+ }
277+ }
278+
279+ // フィルタ文字列を作る
280+ size_t filter_len = user_filter_len + all_filter_len;
281+ wchar_t* filter_str;
282+ if (filter_len != 0) {
283+ filter_len++;
284+ filter_str = (wchar_t*)malloc(filter_len * sizeof(wchar_t));
285+ wchar_t *p = filter_str;
286+ if (user_filter_len != 0) {
287+ wmemcpy(p, user_filter_str, user_filter_len);
288+ p += user_filter_len;
289+ }
290+ wmemcpy(p, all_filter_str, all_filter_len);
291+ p += all_filter_len;
292+ *p = '\0';
293+ } else {
294+ filter_len = 2;
295+ filter_str = (wchar_t*)malloc(filter_len * sizeof(wchar_t));
296+ filter_str[0] = 0;
297+ filter_str[1] = 0;
298+ }
299+
300+ if (user_filter_len != 0) {
301+ free(user_filter_str);
302+ }
303+
304+ if (len != NULL) {
305+ *len = filter_len;
306+ }
307+
308+ return filter_str;
309+}
310+
311+wchar_t *GetCommonDialogFilterW(const char *user_filter_mask, const char *UILanguageFile)
312+{
313+ return GetCommonDialogFilterW(user_filter_mask, UILanguageFile, NULL);
314+}
315+
316+char *GetCommonDialogFilterA(const char *user_filter_mask, const char *UILanguageFile)
317+{
318+ size_t filterW_len;
319+ wchar_t *filterW_ptr = GetCommonDialogFilterW(user_filter_mask, UILanguageFile, &filterW_len);
320+ char *filterA_ptr = _WideCharToMultiByte(filterW_ptr, filterW_len, CP_ACP, NULL);
321+ free(filterW_ptr);
322+ return filterA_ptr;
323+}
--- trunk/teraterm/teraterm/filesys_log.cpp (revision 8942)
+++ trunk/teraterm/teraterm/filesys_log.cpp (revision 8943)
@@ -585,8 +585,7 @@
585585 wchar_t fname[MAX_PATH];
586586 GetDlgItemTextW(Dialog, IDC_FOPT_FILENAME_EDIT, fname, _countof(fname));
587587
588- wchar_t FNFilter[128*3];
589- get_lang_msgW("FILEDLG_ALL_FILTER", FNFilter, sizeof(FNFilter), L"All(*.*)\\0*.*\\0\\0", UILanguageFile);
588+ wchar_t *FNFilter = GetCommonDialogFilterW(NULL, UILanguageFile);
590589
591590 wchar_t caption[MAX_PATH];
592591 wchar_t uimsg[MAX_UIMSG];
@@ -608,6 +607,7 @@
608607 ofn.nMaxFile = _countof(fname);
609608 ofn.lpstrTitle = caption;
610609 BOOL Ok = GetSaveFileNameW(&ofn);
610+ free(FNFilter);
611611 if (Ok) {
612612 SetDlgItemTextW(Dialog, IDC_FOPT_FILENAME_EDIT, fname);
613613 }
--- trunk/teraterm/teraterm/sendfiledlg.cpp (revision 8942)
+++ trunk/teraterm/teraterm/sendfiledlg.cpp (revision 8943)
@@ -48,98 +48,6 @@
4848
4949 #define TitSendFileW L"Send file" // TODO ttftype.h内にANSI版がある
5050
51-/**
52- * GetOpenFileName(), GetSaveFileName() 用フィルタ文字列取得
53- *
54- * @param[in] user_filter_mask ユーザーフィルタ文字列
55- * "*.txt", "*.txt;*.log" など
56- * NULLのとき使用しない
57- * @param[in] UILanguageFile
58- * @param[out] len 生成した文字列長(wchar_t単位)
59- * NULLのときは返さない
60- * @retval "User define(*.txt)\0*.txt\0All(*.*)\0*.*\0" など
61- * 終端は "\0\0" となる
62- */
63-static wchar_t *GetCommonDialogFilterW(const char *user_filter_mask, const char *UILanguageFile, size_t *len)
64-{
65- // "ユーザ定義(*.txt)\0*.txt"
66- wchar_t *user_filter_str = NULL;
67- size_t user_filter_len = 0;
68- if (user_filter_mask != NULL && user_filter_mask[0] != 0) {
69- wchar_t user_filter_name[MAX_UIMSG];
70- get_lang_msgW("FILEDLG_USER_FILTER_NAME", user_filter_name, sizeof(user_filter_name), L"User define",
71- UILanguageFile);
72- size_t user_filter_name_len = wcslen(user_filter_name);
73- wchar_t *user_filter_maskW = ToWcharA(user_filter_mask);
74- size_t user_filter_mask_len = wcslen(user_filter_maskW);
75- user_filter_len = user_filter_name_len + 1 + user_filter_mask_len + 1 + 1 + user_filter_mask_len + 1;
76- user_filter_str = (wchar_t *)malloc(user_filter_len * sizeof(wchar_t));
77- wchar_t *p = user_filter_str;
78- wmemcpy(p, user_filter_name, user_filter_name_len);
79- p += user_filter_name_len;
80- *p++ = '(';
81- wmemcpy(p, user_filter_maskW, user_filter_mask_len);
82- p += user_filter_mask_len;
83- *p++ = ')';
84- *p++ = '\0';
85- wmemcpy(p, user_filter_maskW, user_filter_mask_len);
86- p += user_filter_mask_len;
87- *p++ = '\0';
88- free(user_filter_maskW);
89- }
90-
91- // "すべてのファイル(*.*)\0*.*"
92- wchar_t all_filter_str[MAX_UIMSG];
93- get_lang_msgW("FILEDLG_ALL_FILTER", all_filter_str, _countof(all_filter_str), L"All(*.*)\\0*.*", UILanguageFile);
94- size_t all_filter_len;
95- {
96- size_t all_filter_title_len = wcsnlen(all_filter_str, _countof(all_filter_str));
97- if (all_filter_title_len == 0 || all_filter_title_len == _countof(all_filter_str)) {
98- all_filter_str[0] = 0;
99- all_filter_len = 0;
100- } else {
101- size_t all_filter_mask_max = _countof(all_filter_str) - all_filter_title_len - 1;
102- size_t all_filter_mask_len = wcsnlen(all_filter_str + all_filter_title_len + 1, all_filter_mask_max);
103- if (all_filter_mask_len == 0 || all_filter_mask_len == _countof(all_filter_str)) {
104- all_filter_str[0] = 0;
105- all_filter_len = 0;
106- } else {
107- all_filter_len = all_filter_title_len + 1 + all_filter_mask_len + 1;
108- }
109- }
110- }
111-
112- // フィルタ文字列を作る
113- size_t filter_len = user_filter_len + all_filter_len;
114- wchar_t* filter_str;
115- if (filter_len != 0) {
116- filter_len++;
117- filter_str = (wchar_t*)malloc(filter_len * sizeof(wchar_t));
118- wchar_t *p = filter_str;
119- if (user_filter_len != 0) {
120- wmemcpy(p, user_filter_str, user_filter_len);
121- p += user_filter_len;
122- }
123- wmemcpy(p, all_filter_str, all_filter_len);
124- p += all_filter_len;
125- *p = '\0';
126- } else {
127- filter_len = 2;
128- filter_str = (wchar_t*)malloc(filter_len * sizeof(wchar_t));
129- filter_str[0] = 0;
130- filter_str[1] = 0;
131- }
132-
133- if (user_filter_len != 0) {
134- free(user_filter_str);
135- }
136-
137- if (len != NULL) {
138- *len = filter_len;
139- }
140- return filter_str;
141-}
142-
14351 static INT_PTR CALLBACK SendFileDlgProc(HWND hDlgWnd, UINT msg, WPARAM wp, LPARAM lp)
14452 {
14553 static const DlgTextInfo TextInfos[] = {
@@ -241,9 +149,7 @@
241149 free(uimsg);
242150 uimsg = NULL;
243151
244- size_t filter_len;
245- wchar_t *filterW = GetCommonDialogFilterW(data->filesend_filter, data->UILanguageFile, &filter_len);
246-
152+ wchar_t *filterW = GetCommonDialogFilterW(data->filesend_filter, data->UILanguageFile);
247153 wchar_t filename[MAX_PATH];
248154 filename[0] = 0;
249155 OPENFILENAMEW ofn = {};
--- trunk/teraterm/ttpfile/ftlib.h (revision 8942)
+++ trunk/teraterm/ttpfile/ftlib.h (revision 8943)
@@ -39,4 +39,3 @@
3939 void FTLog1Byte(PFileVar fv, BYTE b);
4040 void FTSetTimeOut(PFileVar fv, int T);
4141 BOOL FTCreateFile(PFileVar fv);
42-void GetFileSendFilter(PCHAR dest, PCHAR src, int size);
--- trunk/teraterm/ttpfile/ttfile.c (revision 8942)
+++ trunk/teraterm/ttpfile/ttfile.c (revision 8943)
@@ -193,9 +193,9 @@
193193 BOOL WINAPI GetTransFname(PFileVar fv, PCHAR CurDir, WORD FuncId, LPLONG Option)
194194 {
195195 char uimsg[MAX_UIMSG];
196- char FNFilter[sizeof(FileSendFilter)*3], *pf;
196+ char *FNFilter;
197197 OPENFILENAME ofn;
198- WORD optw;
198+ WORD optw = 0;
199199 char TempDir[MAXPATHLEN];
200200 BOOL Ok;
201201 char FileName[MAX_PATH];
@@ -203,40 +203,23 @@
203203 /* save current dir */
204204 _getcwd(TempDir,sizeof(TempDir));
205205
206- memset(FNFilter, 0, sizeof(FNFilter)); /* Set up for double null at end */
207206 memset(&ofn, 0, sizeof(OPENFILENAME));
208207
209208 strncpy_s(fv->DlgCaption, sizeof(fv->DlgCaption),"Tera Term: ", _TRUNCATE);
210- pf = FNFilter;
211209 switch (FuncId) {
212210 case GTF_SEND:
213211 get_lang_msg("FILEDLG_TRANS_TITLE_SENDFILE", uimsg, sizeof(uimsg), TitSendFile, UILanguageFile);
214212 strncat_s(fv->DlgCaption, sizeof(fv->DlgCaption), uimsg, _TRUNCATE);
215- if (strlen(FileSendFilter) > 0) {
216- get_lang_msg("FILEDLG_USER_FILTER_NAME", uimsg, sizeof(uimsg), "User define", UILanguageFile);
217- _snprintf_s(FNFilter, sizeof(FNFilter), _TRUNCATE, "%s(%s)", uimsg, FileSendFilter);
218- pf = pf + strlen(FNFilter) + 1;
219- strncpy_s(pf, sizeof(FNFilter)-(pf - FNFilter) ,FileSendFilter, _TRUNCATE);
220- pf = pf + strlen(pf) + 1;
221- }
222213 break;
223214 case GTF_BP:
224215 get_lang_msg("FILEDLG_TRANS_TITLE_BPSEND", uimsg, sizeof(uimsg), TitBPSend, UILanguageFile);
225216 strncat_s(fv->DlgCaption, sizeof(fv->DlgCaption), uimsg, _TRUNCATE);
226- if (strlen(FileSendFilter) > 0) {
227- get_lang_msg("FILEDLG_USER_FILTER_NAME", uimsg, sizeof(uimsg), "User define", UILanguageFile);
228- _snprintf_s(FNFilter, sizeof(FNFilter), _TRUNCATE, "%s(%s)", uimsg, FileSendFilter);
229- pf = pf + strlen(FNFilter) + 1;
230- strncpy_s(pf, sizeof(FNFilter)-(pf - FNFilter) ,FileSendFilter, _TRUNCATE);
231- pf = pf + strlen(pf) + 1;
232- }
233217 break;
234- default: return FALSE;
218+ default:
219+ return FALSE;
235220 }
236221
237- get_lang_msg("FILEDLG_ALL_FILTER", uimsg, sizeof(uimsg), "All(*.*)\\0*.*\\0\\0", UILanguageFile);
238- // \0\0 で終わる必要があるので 2 バイト
239- memcpy(pf, uimsg, sizeof(FNFilter) - (pf - FNFilter + 2));
222+ FNFilter = GetCommonDialogFilterA(FileSendFilter, UILanguageFile);
240223
241224 ExtractFileName(fv->FullName, FileName ,sizeof(FileName));
242225 strncpy_s(fv->FullName, sizeof(fv->FullName), FileName, _TRUNCATE);
@@ -270,6 +253,7 @@
270253 ofn.hInstance = hInst;
271254
272255 Ok = GetOpenFileName(&ofn);
256+ free(FNFilter);
273257
274258 if (Ok) {
275259 *Option = (long)optw;
@@ -362,14 +346,12 @@
362346 {
363347 int i, len;
364348 char uimsg[MAX_UIMSG];
365- char FNFilter[sizeof(FileSendFilter)*2+128], *pf;
349+ char *FNFilter;
366350 OPENFILENAME ofn;
367351 char TempDir[MAXPATHLEN];
368352 BOOL Ok;
369353 char defaultFName[MAX_PATH];
370354
371- memset(FNFilter, 0, sizeof(FNFilter)); /* Set up for double null at end */
372-
373355 /* save current dir */
374356 _getcwd(TempDir,sizeof(TempDir));
375357
@@ -376,7 +358,6 @@
376358 fv->NumFname = 0;
377359
378360 strncpy_s(fv->DlgCaption, sizeof(fv->DlgCaption),"Tera Term: ", _TRUNCATE);
379- pf = FNFilter;
380361 switch (FuncId) {
381362 case GMF_KERMIT:
382363 get_lang_msg("FILEDLG_TRANS_TITLE_KMTSEND", uimsg, sizeof(uimsg), TitKmtSend, UILanguageFile);
@@ -397,13 +378,6 @@
397378 default:
398379 return FALSE;
399380 }
400- if (strlen(FileSendFilter) > 0) {
401- get_lang_msg("FILEDLG_USER_FILTER_NAME", uimsg, sizeof(uimsg), "User define", UILanguageFile);
402- _snprintf_s(FNFilter, sizeof(FNFilter), _TRUNCATE, "%s(%s)", uimsg, FileSendFilter);
403- pf = pf + strlen(FNFilter) + 1;
404- strncpy_s(pf, sizeof(FNFilter)-(pf - FNFilter) ,FileSendFilter, _TRUNCATE);
405- pf = pf + strlen(pf) + 1;
406- }
407381
408382 /* moemory should be zero-initialized */
409383 fv->FnStrMemHandle = GlobalAlloc(GHND, FnStrMemSize);
@@ -421,9 +395,7 @@
421395 }
422396 }
423397
424- get_lang_msg("FILEDLG_ALL_FILTER", uimsg, sizeof(uimsg), "All(*.*)\\0*.*\\0\\0", UILanguageFile);
425- // \0\0 で終わる必要があるので 2 バイト
426- memcpy(pf, uimsg, sizeof(FNFilter) - (pf - FNFilter + 2));
398+ FNFilter = GetCommonDialogFilterA(FileSendFilter, UILanguageFile);
427399
428400 memset(&ofn, 0, sizeof(OPENFILENAME));
429401 ofn.lStructSize = get_OPENFILENAME_SIZE();
@@ -464,6 +436,8 @@
464436 }
465437
466438 Ok = GetOpenFileName(&ofn);
439+ free(FNFilter);
440+
467441 if (Ok) {
468442 /* count number of file names */
469443 len = strlen(fv->FnStrMem);
@@ -798,23 +772,19 @@
798772 BOOL WINAPI GetXFname(HWND HWin, BOOL Receive, LPLONG Option, PFileVar fv, PCHAR CurDir)
799773 {
800774 char uimsg[MAX_UIMSG];
801- char FNFilter[sizeof(FileSendFilter)*2+128], *pf;
775+ char *FNFilter;
802776 OPENFILENAME ofn;
803777 LONG opt;
804778 char TempDir[MAXPATHLEN];
805779 BOOL Ok;
806780
807- memset(FNFilter, 0, sizeof(FNFilter)); /* Set up for double null at end */
808-
809781 /* save current dir */
810782 _getcwd(TempDir,sizeof(TempDir));
811783
812784 fv->FullName[0] = 0;
813- memset(FNFilter, 0, sizeof(FNFilter)); /* Set up for double null at end */
814785 memset(&ofn, 0, sizeof(OPENFILENAME));
815786
816787 strncpy_s(fv->DlgCaption, sizeof(fv->DlgCaption),"Tera Term: ", _TRUNCATE);
817- pf = FNFilter;
818788 if (Receive) {
819789 get_lang_msg("FILEDLG_TRANS_TITLE_XRCV", uimsg, sizeof(uimsg), TitXRcv, UILanguageFile);
820790 strncat_s(fv->DlgCaption, sizeof(fv->DlgCaption), uimsg, _TRUNCATE);
@@ -822,15 +792,12 @@
822792 else {
823793 get_lang_msg("FILEDLG_TRANS_TITLE_XSEND", uimsg, sizeof(uimsg), TitXSend, UILanguageFile);
824794 strncat_s(fv->DlgCaption, sizeof(fv->DlgCaption), uimsg, _TRUNCATE);
795+ }
796+
797+ // フィルタがワイルドカードではなく、そのファイルが存在する場合
798+ // あらかじめデフォルトのファイル名を入れておく (2008.5.18 maya)
799+ if (!Receive) {
825800 if (strlen(FileSendFilter) > 0) {
826- get_lang_msg("FILEDLG_USER_FILTER_NAME", uimsg, sizeof(uimsg), "User define", UILanguageFile);
827- _snprintf_s(FNFilter, sizeof(FNFilter), _TRUNCATE, "%s(%s)", uimsg, FileSendFilter);
828- pf = pf + strlen(FNFilter) + 1;
829- strncpy_s(pf, sizeof(FNFilter)-(pf - FNFilter) ,FileSendFilter, _TRUNCATE);
830- pf = pf + strlen(pf) + 1;
831-
832- // フィルタがワイルドカードではなく、そのファイルが存在する場合
833- // あらかじめデフォルトのファイル名を入れておく (2008.5.18 maya)
834801 if (!isInvalidFileNameChar(FileSendFilter)) {
835802 char file[MAX_PATH];
836803 strncpy_s(file, sizeof(file), CurDir, _TRUNCATE);
@@ -843,9 +810,7 @@
843810 }
844811 }
845812
846- get_lang_msg("FILEDLG_ALL_FILTER", uimsg, sizeof(uimsg), "All(*.*)\\0*.*\\0\\0", UILanguageFile);
847- // \0\0 で終わる必要があるので 2 バイト
848- memcpy(pf, uimsg, sizeof(FNFilter) - (pf - FNFilter + 2));
813+ FNFilter = GetCommonDialogFilterA(Receive == TRUE ? NULL : FileSendFilter, UILanguageFile);
849814
850815 ofn.lStructSize = get_OPENFILENAME_SIZE();
851816 ofn.hwndOwner = HWin;
@@ -878,6 +843,7 @@
878843 else {
879844 Ok = GetSaveFileName(&ofn);
880845 }
846+ free(FNFilter);
881847
882848 if (Ok) {
883849 fv->DirLen = ofn.nFileOffset;
--- trunk/teraterm/ttpmacro/ttl_gui.cpp (revision 8942)
+++ trunk/teraterm/ttpmacro/ttl_gui.cpp (revision 8943)
@@ -48,6 +48,7 @@
4848 #include "codeconv.h"
4949 #include "layer_for_unicode.h"
5050 #include "ttlib.h"
51+#include "dlglib.h"
5152
5253 // add 'clipb2var' (2006.9.17 maya)
5354 WORD TTLClipb2Var()
@@ -157,7 +158,8 @@
157158
158159 SetInputStr("");
159160 if (CheckVar("inputstr", &ValType, &VarId) && (ValType==TypString)) {
160- wchar_t uimsg[MAX_UIMSG];
161+ wchar_t *FNFilter = GetCommonDialogFilterW(NULL, UILanguageFile);
162+
161163 OPENFILENAMEW ofn = {};
162164 wchar_t filename[MAX_PATH];
163165 filename[0] = 0;
@@ -166,8 +168,7 @@
166168 ofn.lpstrTitle = Str1T;
167169 ofn.lpstrFile = filename;
168170 ofn.nMaxFile = _countof(filename);
169- get_lang_msgW("FILEDLG_ALL_FILTER", uimsg, _countof(uimsg), L"All(*.*)\\0*.*\\0\\0", UILanguageFile);
170- ofn.lpstrFilter = uimsg;
171+ ofn.lpstrFilter = FNFilter;
171172 ofn.lpstrInitialDir = NULL;
172173 if (strlen(InitDir) > 0) {
173174 ofn.lpstrInitialDir = InitDirT;
@@ -182,7 +183,7 @@
182183 ofn.Flags = OFN_PATHMUSTEXIST | OFN_OVERWRITEPROMPT;
183184 ret = _GetOpenFileNameW(&ofn);
184185 }
185-
186+ free(FNFilter);
186187 char *filenameU8 = ToU8W(filename);
187188 SetStrVal(VarId, filenameU8);
188189 free(filenameU8);
Show on old repository browser