[ttssh2-commit] [10365] 画像ファイル名をUnicodeで扱うようにした

アーカイブの一覧に戻る
scmno****@osdn***** scmno****@osdn*****
2022年 11月 14日 (月) 23:12:17 JST


Revision: 10365
          https://osdn.net/projects/ttssh2/scm/svn/commits/10365
Author:   zmatsuo
Date:     2022-11-14 23:12:17 +0900 (Mon, 14 Nov 2022)
Log Message:
-----------
画像ファイル名をUnicodeで扱うようにした

- 使用しなくなったANSIファイル名版画像読み込み削除
  - GetBitmapHandle()
- ファイル名長には制限あり(MAX_PATH)

Modified Paths:
--------------
    trunk/teraterm/teraterm/vtdisp.c

-------------- next part --------------
Modified: trunk/teraterm/teraterm/vtdisp.c
===================================================================
--- trunk/teraterm/teraterm/vtdisp.c	2022-11-14 14:12:05 UTC (rev 10364)
+++ trunk/teraterm/teraterm/vtdisp.c	2022-11-14 14:12:17 UTC (rev 10365)
@@ -124,16 +124,16 @@
 
 typedef struct _BGSrc
 {
-  HDC        hdc;
-  BG_TYPE    type;
-  BG_PATTERN pattern;
-  BOOL       antiAlias;
-  COLORREF   color;
-  BYTE       alpha;
-  int        width;
-  int        height;
-  char       file[MAX_PATH];
-}BGSrc;
+	HDC        hdc;
+	BG_TYPE    type;
+	BG_PATTERN pattern;
+	BOOL       antiAlias;
+	COLORREF   color;
+	BYTE       alpha;
+	int        width;
+	int        height;
+	wchar_t    fileW[MAX_PATH];
+} BGSrc;
 
 static BGSrc BGDest;
 static BGSrc BGSrc1;
@@ -438,7 +438,7 @@
 static void BGPreloadPicture(BGSrc *src)
 {
 	HBITMAP hbm = NULL;
-	wchar_t *load_file = ToWcharA(src->file);
+	const wchar_t *load_file = src->fileW;
 	const wchar_t *spi_path = ts.EtermLookfeel.BGSPIPathW;
 
 	// Susie plugin \x82œǂݍ\x9E\x82\xDD
@@ -485,8 +485,6 @@
 	}else{
 		src->type = BG_COLOR;
 	}
-
-	free(load_file);
 }
 
 static void BGGetWallpaperInfo(WallpaperInfo *wi)
@@ -601,15 +599,6 @@
 	return hBitmap;
 }
 
-static HBITMAP GetBitmapHandle(const char *File)
-{
-	HBITMAP hBmp;
-	wchar_t *FileW = ToWcharA(File);
-	hBmp = GetBitmapHandleW(FileW);
-	free(FileW);
-	return hBmp;
-}
-
 // \x90\xFC\x8C`\x95⊮\x96@\x82ɂ\xE6\x82\xE8\x94\xE4\x8Ar\x93I\x91N\x96\xBE\x82Ƀr\x83b\x83g\x83}\x83b\x83v\x82\xF0\x8Ag\x91\xE5\x81E\x8Fk\x8F\xAC\x82\xB7\x82\xE9\x81B
 // Windows 9x/NT\x91Ή\x9E
 // cf.http://katahiromz.web.fc2.com/win32/bilinear.html
@@ -835,6 +824,7 @@
 
 static void BGStretchPicture(HDC hdcDest,BGSrc *src,int x,int y,int width,int height,BOOL bAntiAlias)
 {
+	const wchar_t *filename = src->fileW;
 	if(!hdcDest || !src)
 		return;
 
@@ -845,10 +835,10 @@
 			HBITMAP hbm;
 
 			if (IsLoadImageOnlyEnabled()) {
-				hbm = LoadImage(0,src->file,IMAGE_BITMAP,width,height,LR_LOADFROMFILE);
+				hbm = LoadImageW(0,filename,IMAGE_BITMAP,width,height,LR_LOADFROMFILE);
 			} else {
 				HBITMAP newhbm;
-				hbm = GetBitmapHandle(src->file);
+				hbm = GetBitmapHandleW(filename);
 				newhbm = CreateStretched32BppBitmapBilinear(hbm, width, height);
 				DeleteObject(hbm);
 				hbm = newhbm;
@@ -1215,7 +1205,7 @@
 	vtdisp_work_t *w = &vtdisp_work;
 
 	// \x94w\x8Ci\x89摜\x83`\x83F\x83b\x83N
-	if (BGDest.file[0] == 0) {
+	if (BGDest.fileW == NULL || BGDest.fileW[0] == 0) {
 		// \x94w\x8Ci\x89摜\x82͎g\x97p\x82\xB5\x82Ȃ\xA2
 		BGDest.type = BG_NONE;
 	}
@@ -3823,7 +3813,7 @@
  */
 void ThemeSetBG(const BGTheme *bg_theme)
 {
-	WideCharToACP_t(bg_theme->BGDest.file, BGDest.file, _countof(BGDest.file));
+	wcscpy_s(BGDest.fileW, _countof(bg_theme->BGDest.file), bg_theme->BGDest.file);
 	BGDest.type = bg_theme->BGDest.type;
 	BGDest.color = bg_theme->BGDest.color;
 	BGDest.pattern = bg_theme->BGDest.pattern;
@@ -3847,7 +3837,7 @@
 
 void ThemeGetBG(BGTheme *bg_theme)
 {
-	ACPToWideChar_t(BGDest.file, bg_theme->BGDest.file, _countof(bg_theme->BGDest.file));
+	wcscpy_s(bg_theme->BGDest.file, _countof(bg_theme->BGDest.file), BGDest.fileW);
 	bg_theme->BGDest.type = BG_PICTURE;
 	bg_theme->BGDest.color = BGDest.color;
 	bg_theme->BGDest.pattern = BGDest.pattern;


ttssh2-commit メーリングリストの案内
アーカイブの一覧に戻る