Re[3]: жёсткое закрепление окна на экране
От: Motrichuk Alexander Alexandrovich Украина  
Дата: 18.03.03 07:31
Оценка:
Здравствуйте, Saddam, Вы писали:

S>Здравствуйте, kiamor, Вы писали:


K>>Здравствуйте, Аноним.


K>>Самое оптимальное, обрабатывать WM_HITTEST.

S>Самое оптимальное убрать Sysmenu и Caption окна . Тогда его таскать не за что будет

Этого достаточно:

LRESULT _result;

//оконная процедура___________________________________________________________________________________________________________________________
case WM_SYSCOMMAND:
return wParam == SC_MOVE ? SetSystemMenuItemState(hWnd, (UINT)wParam, MFS_DISABLED), 0 : DefWindowProc(hWnd, message, wParam, lParam);

case WM_NCHITTEST:
_result = DefWindowProc(hWnd, message, wParam, lParam);
return _result == HTCAPTION ? HTCLIENT : _result;
//_____________________________________________________________________________________________________________________________________________

BOOL SetSystemMenuItemState(HWND hWnd, UINT uItem, UINT fState)
{

HMENU hSysMenu = GetSystemMenu(hWnd, FALSE);

MENUITEMINFO Item;
ZeroMemory(&Item, sizeof(Item));
Item.cbSize = sizeof(Item);
Item.fMask = MIIM_STATE;
Item.fState = fState;

return SetMenuItemInfo(hSysMenu, uItem, FALSE, &Item);

//здесь можно и по удалять не нужные пункты системного меню
}
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.