[PATCH 06/18] comctl32: TaskDialog - Implement main and content text controls

Nikolay Sivov bunglehead at gmail.com
Sat Feb 25 11:39:23 CST 2017


On 25.02.2017 19:01, Fabian Maurer wrote:
> +            PostMessageW(GetDlgItem(hwndDlg, ID_TEXTMAIN), WM_SETFONT, (WPARAM)font_main, TRUE);
> +            PostMessageW(GetDlgItem(hwndDlg, ID_TEXTCONTENT), WM_SETFONT, (WPARAM)font_default, TRUE);

Why Post*? Dialog handling in user32 has an ability to do this for you.

> +        case WM_CTLCOLORSTATIC:
> +               if((HWND)lParam == GetDlgItem(hwndDlg, ID_TEXTMAIN))
> +               {
> +                   HDC hdc = (HDC) wParam;
> +
> +                   SetTextColor(hdc, RGB(50,50,220));
> +                   SetBkColor(hdc, GetSysColor(COLOR_3DFACE));
> +
> +                   return (INT_PTR)GetSysColorBrush(COLOR_3DFACE);
> +               }
> +               break;

Where does this come from?

> +    font_default = CreateFontW (16, 0, 0, 0, FW_DONTCARE, FALSE, FALSE, FALSE,
> +                                DEFAULT_CHARSET, 0, 0, CLEARTYPE_QUALITY,  FF_DONTCARE, font_name);
> +    font_main = CreateFontW (19, 0, 0, 0, FW_DONTCARE, FALSE, FALSE, FALSE,
> +                                DEFAULT_CHARSET, 0, 0, CLEARTYPE_QUALITY,  FF_DONTCARE, font_name);
> +

Why Tahoma is hardcoded? If you're using dialog code this should be
handled automatically using template data.

> +    if(!IS_INTRESOURCE(pTaskConfig->pszMainInstruction) && !STR_EMPTY(pTaskConfig->pszMainInstruction))
> +    {
> +        RECT rect;
> +
> +        SelectObject(dc_dummy, font_main);
> +        rect = text_get_rect(dc_dummy, pTaskConfig->pszMainInstruction, dialog_width);
> +
> +        controls_add(controls, ID_TEXTMAIN, class_static, pTaskConfig->pszMainInstruction,
> +                     WS_CHILD | WS_VISIBLE, 5, dialog_height + 5, rect.right, rect.bottom);
> +
> +        dialog_height += rect.bottom + 10;
> +        SelectObject(dc_dummy, font_default);
> +    }
> +
> +    if(!IS_INTRESOURCE(pTaskConfig->pszContent) && !STR_EMPTY(pTaskConfig->pszContent))
> +    {
> +        RECT rect = text_get_rect(dc_dummy, pTaskConfig->pszContent, dialog_width);
> +
> +        controls_add(controls, ID_TEXTCONTENT, class_static, pTaskConfig->pszContent,
> +                     WS_CHILD | WS_VISIBLE, 5, dialog_height + 5, rect.right, rect.bottom);
> +
> +        dialog_height += rect.bottom + 10;
> +    }
> +
> +    controls_add(controls, IDOK, class_button, text_ok,
> +                 WS_CHILD | WS_VISIBLE | BS_DEFPUSHBUTTON, dialog_width - 40 - 10, dialog_height + 5, 40, 10);
> +    dialog_height += 10 + 10;

There's a lot of magic offsets here that should be grouped together and
probably have some defined names too.



More information about the wine-devel mailing list