2013-07-14 2 views
-1

Спасибо за ваш ответ maxiumum окна, я смотрел на SendMessage, но получил немного застрял, сейчас я использую этот код:Как установить минимальный и размер

HWND hwnd = GetForegroundWindow(); 
MINMAXINFO info; 
POINT minSize = {500, 500}, maxSize = {600, 600}; 
SendMessage(hwnd, WM_GETMINMAXINFO, NULL, &info); //WM_GETMINMAXINFO(NULL, &info); 
info.ptMinTrackSize = minSize; 
info.ptMaxTrackSize = maxSize; 

Теперь у меня есть эти предупреждения:

init.c:49:3: warning: passing argument 3 of 'SendMessageA' makes integer from po 
inter without a cast [enabled by default] 
c:\mingw\bin\../lib/gcc/mingw32/4.6.2/../../../../include/winuser.h:4001:27: not 
e: expected 'WPARAM' but argument is of type 'void *' 
init.c:49:3: warning: passing argument 4 of 'SendMessageA' makes integer from po 
inter without a cast [enabled by default] 
c:\mingw\bin\../lib/gcc/mingw32/4.6.2/../../../../include/winuser.h:4001:27: not 
e: expected 'LPARAM' but argument is of type 'struct MINMAXINFO *' 

И окно все еще свободно доступно.

+0

Пожалуйста, не создавать дублирующие вопросы по первым ищет simliar вопрос, используя как функцию поиска StackOverflow и Google. Я набрал ваш вопрос в Google, и это был ПЕРВЫЙ результат поиска: http://stackoverflow.com/questions/5794630/setting-a-windows-minimum-and-maximum-size-using-winapi – moonbeamer2234

+0

Этот ответ не входит в почти достаточно деталей. – Jimmay

+0

@ Jimmay Я не уверен, правильно ли я понял ваше намерение: вы пытаетесь повлиять на min/max из-за пределов приложения? – junix

ответ

3

WM_GETMINMAXINFO не является функцией, это всего лишь идентификатор сообщения, которое вы можете отправить в окно. Вы можете отправлять эти сообщения с помощью SendMessage, или вам придется обрабатывать его в своем WindowProc, в зависимости от того, чего вы хотите достичь.

EDIT:

Вы должны обработать это сообщение в вашем message handling procedure вы прикреплены к окну. (см. WindowProc в MSDN). Как поясняет документация WM_GETMINMAXINFO, сообщение отправляется в окно ОС, каждый раз собирается изменить размер, чтобы запросить пределы размера вашего окна.

Что вы можете сделать, чтобы добавить следующий код в оконную процедуру:

LRESULT result = -1; 

/* ... some code ... */ 

switch (uMsg) 
{ 
    /* Some other Messages handled here... */ 

    case WM_GETMINMAXINFO: 
    { 
     HINMAXINFO *minmax = (MINMAXINFO *)lParam; 
     minmax->ptMinTrackSize.x = 500; 
     minmax->ptMinTrackSize.y = 500; 
     minmax->ptMaxTrackSize.x = 600; 
     minmax->ptMaxTrackSize.y = 600; 
     result = 0; 
     break; 
    } 

} 

return result; 
+0

Спасибо, за вашу помощь. Я обновил свой исходный вопрос. – Jimmay

+0

Я все еще очень смущен относительно того, как это сделать. Пожалуйста, вы можете отправить полный пример. – Jimmay

+0

@ Jimmay Я попытался улучшить свой ответ, учитывая, что вы ответили на мой комментарий выше, что вы пытаетесь установить min/max для своего собственного приложения. – junix

Смежные вопросы