Пробег: Button_GetIdealSize macro.
OK, Дэвид, пожалуйста, в следующий раз поставки больше информации, упомянуть все, что вы не понимаете, потому что из ваших вопросов в комментариях, я могу сделать вывод, что вы не незнакомы только с Win API, но вы также очень новый для программирования C/C++ в целом.
HWND buttonHandle = CreateWindowEx(BS_PUSHBUTTON, "BUTTON", "OK",
WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON,
50, 220, 100, 24,
hwnd,
(HMENU)ID_BUTTON,
GetModuleHandle(NULL),
0);
SIZE size;
if (!Button_GetIdealSize(buttonHandle, &size)) {
// Call of `Button_GetIdealSize` failed, do proper error handling here.
// For that you have various options:
// 1. Exit current scope and return error code;
// 2. Throw an exception;
// 3. Terminate execution of your application and print an error message.
// Of course these options can be mixed.
// If you don't understand what I'm talking about here, then either skip this
// check or start reading books on software development with C/C++.
}
// At this point `size` variable was filled with proper dimensions.
// Now we can use it to actually resize our button...
if (!MoveWindow(buttonHandle, 50, 220, (int)size.cx, (int)size.cy, TRUE)) {
// Call of `MoveWindow` failed, do proper error handling here, again.
}
// We are done!
ПРИМЕЧАНИЕ: Название Вашего вопроса некорректна. C++ не имеет ничего общего с кнопками и Win API, в частности, что является чистым C. Гораздо лучше заголовок будет: Win API: Как правильно изменить размер кнопки, чтобы она соответствовала ее содержимому?
[AdjustWindowRect] (http://msdn.microsoft.com/en-us/library/windows/desktop/ms632665 (v = vs.85) .aspx), [SetWindowPos] (http: // msdn. microsoft.com/en-us/library/windows/desktop/ms633545(v=vs.85).aspx), [MoveWindow] (http://msdn.microsoft.com/en-us/library/windows/desktop/ ms633534 (v = vs.85) .aspx) – chris