Revision: 10396 https://osdn.net/projects/ttssh2/scm/svn/commits/10396 Author: zmatsuo Date: 2022-12-05 00:29:25 +0900 (Mon, 05 Dec 2022) Log Message: ----------- 背景テーマの表示と設定UIを調整 - 色設定で数値ではなくカラーサンプルを表示するようにした - alpha値をスライダーで設定できるようにした - コントロールを適宜無効/有効を切り替えるようにした - 背景画像が不透明の時でも指定色でalpha blendできるようにした Modified Paths: -------------- trunk/teraterm/teraterm/themedlg.cpp trunk/teraterm/teraterm/themedlg.rc trunk/teraterm/teraterm/themedlg_res.h trunk/teraterm/teraterm/vtdisp.c -------------- next part -------------- Modified: trunk/teraterm/teraterm/themedlg.cpp =================================================================== --- trunk/teraterm/teraterm/themedlg.cpp 2022-12-03 06:40:31 UTC (rev 10395) +++ trunk/teraterm/teraterm/themedlg.cpp 2022-12-04 15:29:25 UTC (rev 10396) @@ -63,6 +63,80 @@ #include "themedlg_res.h" #include "themedlg.h" +typedef struct ColorSampleDataSt ColorSampleData_t; + +////////////////////////////////////////////////////////////////////////////// +typedef struct ColorSampleDataSt { + int dummy; + WNDPROC OrigProc; + HWND hWnd; + COLORREF color; +} ColorSampleData_t; + +static void DispColorSample(HWND hWnd, COLORREF color) +{ + RECT rect; + HDC hDC = GetDC(hWnd); + HBRUSH hBrush = CreateSolidBrush(color); + GetClientRect(hWnd, &rect); + FillRect(hDC, &rect, hBrush); + DeleteObject(hBrush); + ReleaseDC(hWnd, hDC); +} + +static LRESULT CALLBACK ColorSampleProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam) +{ + ColorSampleData_t *self = (ColorSampleData_t *)GetWindowLongPtr(hWnd, GWLP_USERDATA); + LRESULT result; + + result = CallWindowProcW(self->OrigProc, hWnd, msg, wParam, lParam); + + switch (msg) { + case WM_PAINT: { + DispColorSample(hWnd, self->color); + result = TRUE; + break; + } + case WM_NCDESTROY: + free(self); + SetWindowLongPtr(hWnd, GWLP_USERDATA, 0); + break; + default: + break; + } + return result; +} + +/** + * \x83_\x83C\x83A\x83\x8D\x83O\x8F\xE3\x82̃t\x83\x8C\x81[\x83\x80\x82\xF0\x83J\x83\x89\x81[\x83T\x83\x93\x83v\x83\x8B\x82ɂ\xB7\x82\xE9 + * ColorSampleSetColor()\x82ŐF\x82\xF0\x90ݒ肷\x82\xE9 + * \x83_\x83C\x83A\x83\x8D\x83O\x82\xAA\x95\xB6\x82\xE9\x82Ƃ\xAB\x82Ɏ\xA9\x93\xAE\x93I\x82ɔj\x8A\xFC\x82\xB3\x82\xEA\x82\xE9 + * + */ +ColorSampleData_t *ColorSampleInit(HWND hDlg, int ID, COLORREF color) +{ + ColorSampleData_t *self = (ColorSampleData_t *)calloc(sizeof(ColorSampleData_t), 1); + HWND hWnd = GetDlgItem(hDlg, ID); + self->color = color; + self->hWnd = hWnd; + SetWindowLongPtr(hWnd, GWLP_USERDATA, (LONG_PTR)self); + self->OrigProc = (WNDPROC)GetWindowLongPtrW(hWnd, GWLP_WNDPROC); + SetWindowLongPtrW(hWnd, GWLP_WNDPROC, (LONG_PTR)ColorSampleProc); + return self; +} + +/** + * \x90F\x82\xF0\x90ݒ肷\x82\xE9 + */ +void ColorSampleSetColor(ColorSampleData_t *cs, COLORREF color) +{ + ColorSampleData_t *self = cs; + self->color = color; + InvalidateRect(self->hWnd, NULL, FALSE); +} + +////////////////////////////////////////////////////////////////////////////// + typedef struct { // \x8B\xA4\x92\xCA HINSTANCE hInst; @@ -75,6 +149,8 @@ } FileTab; // bg theme tab struct { + ColorSampleData_t *cs_bg; + ColorSampleData_t *cs_splane; BGTheme bg_theme; } BGTab; // color theme tab @@ -131,12 +207,13 @@ return GetWindowTextColor(GetDlgItem(hDlg, ID)); } -static void ResetControls(HWND hWnd, const BGTheme *bg_theme) +static void ResetControls(HWND hWnd, ThemeDlgData* dlg_data) { + const BGTheme *bg_theme = &dlg_data->BGTab.bg_theme; + // bg image SendDlgItemMessageA(hWnd, IDC_BGIMG_CHECK, BM_SETCHECK, bg_theme->BGDest.enable, 0); SetDlgItemTextW(hWnd, IDC_BGIMG_EDIT, bg_theme->BGDest.file); - SetDlgItemTextColor(hWnd, IDC_BGIMG_COLOR_EDIT, bg_theme->BGDest.color); { LRESULT count = SendDlgItemMessageA(hWnd, IDC_BGIMG_COMBO, CB_GETCOUNT, 0, 0); int sel = 0; @@ -150,7 +227,8 @@ } SendDlgItemMessageA(hWnd, IDC_BGIMG_COMBO, CB_SETCURSEL, sel, 0); } - SetDlgItemInt(hWnd, IDC_BGIMG_ALPHA_EDIT, bg_theme->BGDest.alpha, FALSE); + SendDlgItemMessageA(hWnd, IDC_BGIMG_ALPHA_SLIDER, TBM_SETPOS, TRUE, bg_theme->BGDest.alpha); + ColorSampleSetColor(dlg_data->BGTab.cs_bg, bg_theme->BGDest.color); // wall paper SendDlgItemMessageA(hWnd, IDC_WALLPAPER_CHECK, BM_SETCHECK, bg_theme->BGSrc1.enable, 0); @@ -157,10 +235,54 @@ // simple color plane SendDlgItemMessageA(hWnd, IDC_SIMPLE_COLOR_PLANE_CHECK, BM_SETCHECK, bg_theme->BGSrc2.enable, 0); - SetDlgItemInt(hWnd, IDC_SIMPLE_COLOR_PLANE_ALPHA, bg_theme->BGSrc2.alpha, FALSE); - SetDlgItemTextColor(hWnd, IDC_SIMPLE_COLOR_PLANE_COLOR, bg_theme->BGSrc2.color); + SendDlgItemMessageA(hWnd, IDC_SIMPLE_COLOR_PLANE_ALPHA_SLIDER, TBM_SETPOS, TRUE, bg_theme->BGSrc2.alpha); + ColorSampleSetColor(dlg_data->BGTab.cs_splane, bg_theme->BGSrc2.color); } +static void ControlEnable(HWND hWnd) +{ + static const int scp_controls[] = { + IDC_SIMPLE_COLOR_PLANE_COLOR_TITLE, + IDC_SIMPLE_COLOR_PLANE_SAMPLE, + IDC_SIMPLE_COLOR_PLANE_BUTTON, + IDC_SIMPLE_COLOR_PLANE_ALPHA_TITLE, + IDC_SIMPLE_COLOR_PLANE_ALPHA_SLIDER, + }; + static const int bg_controls[] = { + IDC_BGIMG_FILE_TITLE, + IDC_BGIMG_EDIT, + IDC_BGIMG_BUTTON, + IDC_BGIMG_PATTERN_TITLE, + IDC_BGIMG_COMBO, + IDC_BGIMG_COLOR_TITLE, + IDC_BGIMG_COLOR_SAMPLE, + IDC_BGIMG_COLOR_BUTTON, + IDC_BGIMG_ALPHA_TITLE, + IDC_BGIMG_ALPHA_SLIDER + }; + int i; + BOOL enable; + + BOOL scp_enable = (BOOL)SendDlgItemMessageA(hWnd, IDC_SIMPLE_COLOR_PLANE_CHECK, BM_GETCHECK, 0, 0); + BOOL bg_enable = (BOOL)SendDlgItemMessageA(hWnd, IDC_BGIMG_CHECK, BM_GETCHECK, 0, 0); + BOOL wp_enable = (BOOL)SendDlgItemMessageA(hWnd, IDC_WALLPAPER_CHECK, BM_GETCHECK, 0, 0); + + // Simple color plane + enable = scp_enable; + for (i = 0; i < _countof(scp_controls); i++) { + EnableWindow(GetDlgItem(hWnd, scp_controls[i]), enable); + } + enable = scp_enable && (bg_enable || wp_enable) ? TRUE : FALSE; + EnableWindow(GetDlgItem(hWnd, IDC_SIMPLE_COLOR_PLANE_ALPHA_TITLE), enable); + EnableWindow(GetDlgItem(hWnd, IDC_SIMPLE_COLOR_PLANE_ALPHA_SLIDER), enable); + + // BG image + enable = bg_enable; + for (i = 0; i < _countof(bg_controls); i++) { + EnableWindow(GetDlgItem(hWnd, bg_controls[i]), enable); + } +} + static void ReadFromDialog(HWND hWnd, BGTheme* bg_theme) { LRESULT checked; @@ -170,10 +292,9 @@ checked = SendDlgItemMessageA(hWnd, IDC_BGIMG_CHECK, BM_GETCHECK, 0, 0); bg_theme->BGDest.enable = checked & BST_CHECKED; GetDlgItemTextW(hWnd, IDC_BGIMG_EDIT, bg_theme->BGDest.file, _countof(bg_theme->BGDest.file)); - bg_theme->BGDest.color = GetDlgItemTextColor(hWnd, IDC_BGIMG_COLOR_EDIT); index = SendDlgItemMessageA(hWnd, IDC_BGIMG_COMBO, CB_GETCURSEL, 0, 0); bg_theme->BGDest.pattern = (BG_PATTERN)SendDlgItemMessageA(hWnd, IDC_BGIMG_COMBO, CB_GETITEMDATA, index, 0); - bg_theme->BGDest.alpha = GetDlgItemInt(hWnd, IDC_BGIMG_ALPHA_EDIT, NULL, FALSE); + bg_theme->BGDest.alpha = (BYTE)SendDlgItemMessageA(hWnd, IDC_BGIMG_ALPHA_SLIDER, TBM_GETPOS, 0, 0); // wall paper checked = SendDlgItemMessageA(hWnd, IDC_WALLPAPER_CHECK, BM_GETCHECK, 0, 0); @@ -182,10 +303,25 @@ // simple color plane checked = SendDlgItemMessageA(hWnd, IDC_SIMPLE_COLOR_PLANE_CHECK, BM_GETCHECK, 0, 0); bg_theme->BGSrc2.enable = checked & BST_CHECKED; - bg_theme->BGSrc2.alpha = GetDlgItemInt(hWnd, IDC_SIMPLE_COLOR_PLANE_ALPHA, NULL, FALSE); - bg_theme->BGSrc2.color = GetDlgItemTextColor(hWnd, IDC_SIMPLE_COLOR_PLANE_COLOR); + bg_theme->BGSrc2.alpha = (BYTE)SendDlgItemMessageA(hWnd, IDC_SIMPLE_COLOR_PLANE_ALPHA_SLIDER, TBM_GETPOS, 0, 0); } +static BOOL ChooseColor(HWND hWnd, COLORREF *color_ptr) +{ + static COLORREF CustColors[16]; + CHOOSECOLORA cc = {}; + cc.lStructSize = sizeof(cc); + cc.hwndOwner = hWnd; + cc.rgbResult = *color_ptr; + cc.lpCustColors = CustColors; + cc.Flags = CC_FULLOPEN | CC_RGBINIT; + if (ChooseColorA(&cc)) { + *color_ptr = cc.rgbResult; + return TRUE; + } + return FALSE; +} + static INT_PTR CALLBACK BGThemeProc(HWND hWnd, UINT msg, WPARAM wp, LPARAM lp) { ThemeDlgData* dlg_data = (ThemeDlgData*)GetWindowLongPtr(hWnd, DWLP_USER); @@ -200,14 +336,8 @@ SetDlgTextsW(hWnd, TextInfos, _countof(TextInfos), dlg_data->pts->UILanguageFileW); - SetDlgItemTextW(hWnd, IDC_BG_THEME_HELP, - L"Mix order:\n" - L" simple color plane\n" - L" ^\n" - L" Background Image\n" - L" ^\n" - L" wallpaper\n" - ); + SendDlgItemMessageA(hWnd, IDC_SIMPLE_COLOR_PLANE_ALPHA_SLIDER, TBM_SETRANGE, TRUE, MAKELONG(0, 255)); + SendDlgItemMessageA(hWnd, IDC_BGIMG_ALPHA_SLIDER, TBM_SETRANGE, TRUE, MAKELONG(0, 255)); for (int i = 0;; i++) { LRESULT index; @@ -219,7 +349,12 @@ SendDlgItemMessageW(hWnd, IDC_BGIMG_COMBO, CB_SETITEMDATA, index, st->id); } - ResetControls(hWnd, &dlg_data->BGTab.bg_theme); + dlg_data->BGTab.cs_bg = + ColorSampleInit(hWnd, IDC_BGIMG_COLOR_SAMPLE, dlg_data->BGTab.bg_theme.BGDest.color); + dlg_data->BGTab.cs_splane = + ColorSampleInit(hWnd, IDC_SIMPLE_COLOR_PLANE_SAMPLE, dlg_data->BGTab.bg_theme.BGSrc2.color); + ResetControls(hWnd, dlg_data); + return TRUE; break; } @@ -251,6 +386,24 @@ } break; } + case IDC_BGIMG_COLOR_BUTTON | (BN_CLICKED << 16): + if (ChooseColor(hWnd, &dlg_data->BGTab.bg_theme.BGDest.color)) { + ColorSampleSetColor(dlg_data->BGTab.cs_bg, + dlg_data->BGTab.bg_theme.BGDest.color); + } + break; + case IDC_SIMPLE_COLOR_PLANE_BUTTON | (BN_CLICKED << 16): + if (ChooseColor(hWnd, &dlg_data->BGTab.bg_theme.BGSrc2.color)) { + ColorSampleSetColor(dlg_data->BGTab.cs_splane, + dlg_data->BGTab.bg_theme.BGSrc2.color); + } + break; + case IDC_SIMPLE_COLOR_PLANE_CHECK | (BN_CLICKED << 16): + case IDC_BGIMG_CHECK | (BN_CLICKED << 16): + case IDC_WALLPAPER_CHECK | (BN_CLICKED << 16): { + ControlEnable(hWnd); + break; + } default: break; } @@ -270,7 +423,7 @@ break; } case PSN_SETACTIVE: { - ResetControls(hWnd, &dlg_data->BGTab.bg_theme); + ResetControls(hWnd, dlg_data); break; } default: Modified: trunk/teraterm/teraterm/themedlg.rc =================================================================== --- trunk/teraterm/teraterm/themedlg.rc 2022-12-03 06:40:31 UTC (rev 10395) +++ trunk/teraterm/teraterm/themedlg.rc 2022-12-04 15:29:25 UTC (rev 10396) @@ -60,27 +60,28 @@ // Dialog // -IDD_TABSHEET_BG_THEME_EDITOR DIALOGEX 0, 0, 326, 248 +IDD_TABSHEET_BG_THEME_EDITOR DIALOGEX 0, 0, 326, 252 STYLE DS_SETFONT | WS_CHILD | WS_BORDER FONT 8, "Tahoma", 0, 0, 0x0 BEGIN - CONTROL "Mixing simple color plane",IDC_SIMPLE_COLOR_PLANE_CHECK, - "Button",BS_AUTOCHECKBOX | WS_TABSTOP,15,5,148,10 - LTEXT "Color (RRGGBB)",IDC_SIMPLE_COLOR_PLANE_COLOR_TITLE,28,20,143,8 - EDITTEXT IDC_SIMPLE_COLOR_PLANE_COLOR,28,35,34,14,ES_AUTOHSCROLL - LTEXT "Alpha (0=no effect ... 255=overwrite)",IDC_SIMPLE_COLOR_PLANE_ALPHA_TITLE,28,53,132,8 - EDITTEXT IDC_SIMPLE_COLOR_PLANE_ALPHA,28,65,22,14,ES_AUTOHSCROLL | ES_NUMBER - CONTROL "Background &Image",IDC_BGIMG_CHECK,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,15,85,73,10 - EDITTEXT IDC_BGIMG_EDIT,28,106,255,14,ES_AUTOHSCROLL - PUSHBUTTON "...",IDC_BGIMG_BUTTON,287,106,14,14 - COMBOBOX IDC_BGIMG_COMBO,28,125,107,45,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP - LTEXT "Alpha (0=no effect ... 255=overwrite)",IDC_BGIMG_ALPHA_TITLE,28,143,143,8 - EDITTEXT IDC_BGIMG_ALPHA_EDIT,28,156,22,14,ES_AUTOHSCROLL | ES_NUMBER - LTEXT "Color (RRGGBB)",IDC_BGIMG_COLOR_TITLE,28,172,143,8 - EDITTEXT IDC_BGIMG_COLOR_EDIT,28,185,34,14,ES_AUTOHSCROLL - CONTROL "Mixing desktop wallpaper image",IDC_WALLPAPER_CHECK, - "Button",BS_AUTOCHECKBOX | WS_TABSTOP,15,205,158,10 - LTEXT "static text",IDC_BG_THEME_HELP,186,5,132,93 + CONTROL "Simple color plane",IDC_SIMPLE_COLOR_PLANE_CHECK,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,5,148,10 + LTEXT "Color",IDC_SIMPLE_COLOR_PLANE_COLOR_TITLE,18,19,143,8 + CONTROL "",IDC_SIMPLE_COLOR_PLANE_SAMPLE,"Static",SS_BLACKFRAME,18,30,34,14 + PUSHBUTTON "...",IDC_SIMPLE_COLOR_PLANE_BUTTON,56,30,13,13 + LTEXT "Alpha (Opaque right):",IDC_SIMPLE_COLOR_PLANE_ALPHA_TITLE,18,47,132,8 + CONTROL "",IDC_SIMPLE_COLOR_PLANE_ALPHA_SLIDER,"msctls_trackbar32",TBS_NOTICKS | WS_TABSTOP,18,58,100,15 + CONTROL "Background &Image",IDC_BGIMG_CHECK,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,75,73,10 + LTEXT "Image file",IDC_BGIMG_FILE_TITLE,18,88,34,8 + EDITTEXT IDC_BGIMG_EDIT,18,99,255,14,ES_AUTOHSCROLL + PUSHBUTTON "...",IDC_BGIMG_BUTTON,276,99,13,13 + LTEXT "Pattern",IDC_BGIMG_PATTERN_TITLE,18,116,24,8 + COMBOBOX IDC_BGIMG_COMBO,18,127,107,45,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP + LTEXT "Color",IDC_BGIMG_COLOR_TITLE,18,142,143,8 + CONTROL "",IDC_BGIMG_COLOR_SAMPLE,"Static",SS_BLACKFRAME,18,153,34,14 + PUSHBUTTON "...",IDC_BGIMG_COLOR_BUTTON,56,153,13,13 + LTEXT "Alpha (Opaque right):",IDC_BGIMG_ALPHA_TITLE,18,170,143,8 + CONTROL "",IDC_BGIMG_ALPHA_SLIDER,"msctls_trackbar32",TBS_NOTICKS | WS_TABSTOP,18,181,100,15 + CONTROL "Desktop wallpaper image",IDC_WALLPAPER_CHECK,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,198,158,10 END IDD_TABSHEET_COLOR_THEME_EDITOR DIALOGEX 0, 0, 326, 267 @@ -128,12 +129,11 @@ BEGIN IDD_TABSHEET_BG_THEME_EDITOR, DIALOG BEGIN - LEFTMARGIN, 6 - RIGHTMARGIN, 318 - VERTGUIDE, 15 - VERTGUIDE, 28 - TOPMARGIN, 5 - BOTTOMMARGIN, 244 + LEFTMARGIN, 7 + RIGHTMARGIN, 319 + VERTGUIDE, 18 + TOPMARGIN, 7 + BOTTOMMARGIN, 245 END IDD_TABSHEET_COLOR_THEME_EDITOR, DIALOG Modified: trunk/teraterm/teraterm/themedlg_res.h =================================================================== --- trunk/teraterm/teraterm/themedlg_res.h 2022-12-03 06:40:31 UTC (rev 10395) +++ trunk/teraterm/teraterm/themedlg_res.h 2022-12-04 15:29:25 UTC (rev 10396) @@ -22,22 +22,26 @@ #define IDC_OTHER_TEXT_BACK_ALPHA_TITLE 2619 #define IDC_TEXT_BACK_ALPHA_TITLE 2620 #define IDC_REVERSE_TEXT_BACK_ALPHA_TITLE 2621 -#define IDC_BG_THEME_HELP 2900 +#define IDC_BGIMG_COLOR_SAMPLE 2623 +#define IDC_SIMPLE_COLOR_PLANE_SAMPLE 2624 +#define IDC_SIMPLE_COLOR_PLANE_ALPHA_SLIDER 2625 +#define IDC_BGIMG_ALPHA_SLIDER 2626 +#define IDC_BGIMG_FILE_TITLE 2627 +#define IDC_BGIMG_PATTERN_TITLE 2628 #define IDC_BGIMG_BASE_TITLE 3000 #define IDC_BGIMG_EDIT 3001 #define IDC_BGIMG_CHECK 3002 #define IDC_BGIMG_BUTTON 3003 #define IDC_BGIMG_COLOR_TITLE 3004 -#define IDC_BGIMG_COLOR_EDIT 3005 #define IDC_BGIMG_COMBO 3006 +#define IDC_BGIMG_COLOR_BUTTON 3007 +#define IDC_BGIMG_COLOR_BUTTON2 3008 +#define IDC_SIMPLE_COLOR_PLANE_BUTTON 3008 #define IDC_WALLPAPER_CHECK 3100 -#define IDC_BGIMG_ALPHA_TITLE 3101 -#define IDC_BGIMG_ALPHA_EDIT 3102 +#define IDC_BGIMG_ALPHA_TITLE 3101 #define IDC_SIMPLE_COLOR_PLANE_CHECK 3200 #define IDC_SIMPLE_COLOR_PLANE_COLOR_TITLE 3201 -#define IDC_SIMPLE_COLOR_PLANE_COLOR 3202 #define IDC_SIMPLE_COLOR_PLANE_ALPHA_TITLE 3203 -#define IDC_SIMPLE_COLOR_PLANE_ALPHA 3204 #define IDC_COLOR_LIST 4000 #define IDC_COLOR_DEFAULT_BUTTON 4001 @@ -48,7 +52,7 @@ #define _APS_NO_MFC 1 #define _APS_NEXT_RESOURCE_VALUE 118 #define _APS_NEXT_COMMAND_VALUE 52031 -#define _APS_NEXT_CONTROL_VALUE 2622 +#define _APS_NEXT_CONTROL_VALUE 2629 #define _APS_NEXT_SYMED_VALUE 101 #endif #endif Modified: trunk/teraterm/teraterm/vtdisp.c =================================================================== --- trunk/teraterm/teraterm/vtdisp.c 2022-12-03 06:40:31 UTC (rev 10395) +++ trunk/teraterm/teraterm/vtdisp.c 2022-12-04 15:29:25 UTC (rev 10396) @@ -1181,11 +1181,11 @@ if (alpha_valid) { // 32bit\x83r\x83b\x83g\x83}\x83b\x83v(alpha\x92l\x82\xAA\x91\xB6\x8D݂\xB5\x82Ă\xA2\x82\xE9)\x8Fꍇ\x82\xCDalpha\x92l\x82\xF0\x8EQ\x8FƂ\xB7\x82\xE9 bf.AlphaFormat = AC_SRC_ALPHA; - if (!BGSrc1.enable) { - // \x95ǎ\x86\x82\xAA\x82Ȃ\xA2\x8Fꍇ\x82͂\xA0\x82炩\x82\xB6\x82ߓh\x82\xE8\x82Ԃ\xB5\x82Ă\xA8\x82\xAD - FillBitmapDC(hdc_bg, BGDest.color); - } } + if (!BGSrc1.enable) { + // \x95ǎ\x86\x82\xAA\x82Ȃ\xA2\x8Fꍇ\x82͂\xA0\x82炩\x82\xB6\x82ߓh\x82\xE8\x82Ԃ\xB5\x82Ă\xA8\x82\xAD + FillBitmapDC(hdc_bg, BGDest.color); + } BGAlphaBlend(hdc_bg, 0, 0, width, height, hdc_work, 0, 0, width, height, bf); } DebugSaveFile(L"bg_2.bmp", hdc_bg, width, height);