On 19.02.2015 15:23, Joachim Priesner wrote:
WCHAR *windowTitleBuffer = NULL;
UINT len = LoadStringW(config->hInstance, LOWORD(config->pszWindowTitle), (LPWSTR)&ptr, 0);
if (len)
{
windowTitleBuffer = Alloc((len + 1) * sizeof(WCHAR));
if (!windowTitleBuffer)
{
EndDialog(hwnd, E_OUTOFMEMORY);
return;
}
memcpy(windowTitleBuffer, ptr, len * sizeof(WCHAR));
windowTitleBuffer[len] = 0;
SetWindowTextW(hwnd, windowTitleBuffer);
}
That's essentially the same code you're using to set IDC_CONTENT text. Could you add a helper that does all of that? Also it will probably take fewer lines to use LoadStringW() to fill your buffer and set terminating null.
- /* Destroy unused common buttons. */
- TRACE("dwCommonButtons=%x\n", config->dwCommonButtons);
- if (!(config->dwCommonButtons & TDCBF_YES_BUTTON))
DestroyWindow(GetDlgItem(hwnd, IDYES));
Did you check that it's actually destroyed and not just hidden?
WCHAR buttonText[1024];
int w, h;
if (GetWindowTextW(hItem, buttonText, 1024))
Where does this limit come from?
- /* Query parent window/desktop size and center window. */
- monitor = MonitorFromWindow(config->hwndParent ? config->hwndParent : GetActiveWindow(),
MONITOR_DEFAULTTOPRIMARY);
- monitorInfo.cbSize = sizeof(monitorInfo);
- GetMonitorInfoW(monitor, &monitorInfo);
- windowLeft = (monitorInfo.rcWork.left + monitorInfo.rcWork.right
- (windowClientWidth + windowBorderWidth)) / 2;
- windowTop = (monitorInfo.rcWork.top + monitorInfo.rcWork.bottom
- (windowClientHeight + windowBorderHeight)) / 2;
- SetWindowPos(hwnd, 0, windowLeft, windowTop,
windowClientWidth + windowBorderWidth, windowClientHeight + windowBorderHeight,
SWP_NOZORDER | SWP_NOACTIVATE | SWP_NOREDRAW);
This looks overcomplicated, isn't it enough to use desktop window if no parent was specified?
- DeleteObject(mainInstructionFont);
- Free(contentBuffer);
- Free(mainInstructionBuffer);
It's better to free right when you don't need it anymore, and please use simpler/shorter names.