diff --git a/plugins/GSdx/GSSettingsDlg.cpp b/plugins/GSdx/GSSettingsDlg.cpp index b6bccc52a8..6de373635d 100644 --- a/plugins/GSdx/GSSettingsDlg.cpp +++ b/plugins/GSdx/GSSettingsDlg.cpp @@ -427,67 +427,70 @@ void GSHacksDlg::OnInit() SendMessage(GetDlgItem(m_hWnd, IDC_SKIPDRAWHACK), UDM_SETPOS, 0, MAKELPARAM(theApp.GetConfig("UserHacks_SkipDraw", 0), 0)); - // Hacks descriptions - SetWindowText(GetDlgItem(m_hWnd, IDC_HACK_DESCRIPTION), ""); // Blank it - - sprintf(Hack[HK_MSAA].description, "Multisample Anti-Aliasing\n\nEnables hardware Anti-Aliasing. Needs lots of memory." - " The Z-24 modes might need to have LogarithmicZ to compensate for the bits lost (DX9 mode)."); - sprintf(Hack[HK_SKIPDRAW].description, "Skipdraw\n\nSkips drawing n surfaces completely. " - "Use it, for example, to try and get rid of messed up post processing effects." - " Try values between 1 and 100."); - sprintf(Hack[HK_ALPHA].description, "Alpha Hack\n\nDifferent alpha handling. Works around some shadow problems."); - sprintf(Hack[HK_OFFSET].description, "Halfpixel\n\nMight fix some misaligned fog, bloom, or blend effect."); - sprintf(Hack[HK_SPRITE].description, "Sprite Hack\n\nHelps getting rid of black inner lines in some filtered sprites." - " Half option should be the preferred one, for Mana Khemia and ArTonelico for example." - " Full should be used for Tales of Destiny."); - sprintf(Hack[HK_WILD].description, "WildArms\n\nLowers the GS precission to avoid gaps between pixels when" - " upscaling. Full option fixes the text on WildArms games, while Half option might improve portraits" - " in ArTonelico for example."); - - SetNotHover(-1); + // Hacks descriptions + SetWindowText(GetDlgItem(m_hWnd, IDC_HACK_DESCRIPTION), ""); // Blank it } void GSHacksDlg::UpdateControls() {} -void GSHacksDlg::SetNotHover(int skip) -{ - for(int i=0; i= 20 && pos.x <= 120) - { - int isHovering = -1; - - if(pos.y >= 28 && pos.y <= 52) isHovering = HK_MSAA; - else if(pos.y >= 54 && pos.y <= 82) isHovering = HK_SKIPDRAW; - else if(pos.y >= 84 && pos.y <= 106) isHovering = HK_ALPHA; - else if(pos.y >= 112 && pos.y <= 134) isHovering = HK_OFFSET; - else if(pos.y >= 140 && pos.y <= 164) isHovering = HK_SPRITE; - else if (pos.y >= 168 && pos.y <= 190) isHovering = HK_WILD; + POINT pos; + GetCursorPos(&pos); + ScreenToClient(m_hWnd, &pos); - if(isHovering > -1 && !Hack[isHovering].isHovered) - { - Hack[isHovering].isHovered = true; - SetWindowText(GetDlgItem(m_hWnd, IDC_HACK_DESCRIPTION), Hack[isHovering].description); - SetNotHover(isHovering); - } - } + HWND hoveredwnd = ChildWindowFromPointEx(m_hWnd, pos, CWP_SKIPINVISIBLE | CWP_SKIPTRANSPARENT); + if (hoveredwnd != hovered_window) + hovered_window = hoveredwnd; + else + break; - } break; + switch (GetDlgCtrlID(hoveredwnd)) + { + case IDC_SKIPDRAWHACK: + case IDC_SKIPDRAWHACKEDIT: + case IDC_STATIC_SKIPDRAW: + helpstr = "Skipdraw\n\nSkips drawing n surfaces completely. " + "Use it, for example, to try and get rid of messed up post processing effects." + " Try values between 1 and 100."; + break; + case IDC_ALPHAHACK: + helpstr = "Alpha Hack\n\nDifferent alpha handling. Works around some shadow problems."; + break; + case IDC_OFFSETHACK: + helpstr = "Halfpixel\n\nMight fix some misaligned fog, bloom, or blend effect."; + break; + case IDC_SPRITEHACK: + helpstr = "Sprite Hack\n\nHelps getting rid of black inner lines in some filtered sprites." + " Half option should be the preferred one, for Mana Khemia and ArTonelico for example." + " Full should be used for Tales of Destiny."; + break; + case IDC_WILDHACK: + helpstr = "WildArms\n\nLowers the GS precission to avoid gaps between pixels when" + " upscaling. Full option fixes the text on WildArms games, while Half option might improve portraits" + " in ArTonelico for example."; + break; + case IDC_MSAACB: + case IDC_STATIC_MSAA: + helpstr = "Multisample Anti-Aliasing\n\nEnables hardware Anti-Aliasing. Needs lots of memory." + " The Z-24 modes might need to have LogarithmicZ to compensate for the bits lost (DX9 mode)."; + break; + default: + helpstr = ""; + break; + } + + SetWindowText(GetDlgItem(m_hWnd, IDC_HACK_DESCRIPTION), helpstr); + + } break; case WM_COMMAND: { diff --git a/plugins/GSdx/GSSettingsDlg.h b/plugins/GSdx/GSSettingsDlg.h index 76eb3729e7..b287c077e0 100644 --- a/plugins/GSdx/GSSettingsDlg.h +++ b/plugins/GSdx/GSSettingsDlg.h @@ -47,25 +47,9 @@ class GSHacksDlg : public GSDialog bool isdx9; - enum - { - HK_MSAA, - HK_SKIPDRAW, - HK_ALPHA, - HK_OFFSET, - HK_SPRITE, - HK_WILD, - HK_SIZE - }; - - struct - { - bool isHovered; - char description[1024]; - } Hack[HK_SIZE]; + HWND hovered_window; void UpdateControls(); - void SetNotHover(int i); protected: void OnInit(); diff --git a/plugins/GSdx/GSdx.rc b/plugins/GSdx/GSdx.rc index c542348150..3bbfaad9d0 100644 --- a/plugins/GSdx/GSdx.rc +++ b/plugins/GSdx/GSdx.rc @@ -81,9 +81,9 @@ FONT 8, "MS Shell Dlg", 400, 0, 0x1 BEGIN DEFPUSHBUTTON "OK",IDOK,258,182,50,14 GROUPBOX "Hack",IDC_STATIC,7,7,76,165 - GROUPBOX "Description",IDC_STATIC,85,7,223,165 - LTEXT "MSAA",IDC_STATIC,14,20,20,8 - LTEXT "Skipdraw",IDC_STATIC,14,37,30,8 + GROUPBOX "Description",IDC_STATIC,85,7,223,165,0,WS_EX_TRANSPARENT + LTEXT "MSAA",IDC_STATIC_MSAA,14,20,20,8 + LTEXT "Skipdraw",IDC_STATIC_SKIPDRAW,14,37,30,8 EDITTEXT IDC_SKIPDRAWHACKEDIT,45,35,24,14,ES_RIGHT | ES_AUTOHSCROLL CONTROL "",IDC_SKIPDRAWHACK,"msctls_updown32",UDS_SETBUDDYINT | UDS_AUTOBUDDY | UDS_ARROWKEYS,68,35,10,14 CONTROL "Alpha",IDC_ALPHAHACK,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,54,34,10 diff --git a/plugins/GSdx/resource.h b/plugins/GSdx/resource.h index eea77d33f1..3cf1d4c3ef 100644 --- a/plugins/GSdx/resource.h +++ b/plugins/GSdx/resource.h @@ -90,6 +90,8 @@ #define IDC_HACKSBUTTON 2071 #define IDC_WILDHACK 2072 #define IDC_HACK_DESCRIPTION 2073 +#define IDC_STATIC_MSAA 2074 +#define IDC_STATIC_SKIPDRAW 2075 #define IDC_COLORSPACE 3000 #define IDR_CONVERT_FX 10000 #define IDR_TFX_FX 10001 @@ -108,7 +110,7 @@ #ifndef APSTUDIO_READONLY_SYMBOLS #define _APS_NEXT_RESOURCE_VALUE 10012 #define _APS_NEXT_COMMAND_VALUE 32771 -#define _APS_NEXT_CONTROL_VALUE 2074 +#define _APS_NEXT_CONTROL_VALUE 2076 #define _APS_NEXT_SYMED_VALUE 5000 #endif #endif