Добро пожаловать! Это — архивная версия форумов на «Хакер.Ru». Она работает в режиме read-only.
 

WinApi.Window

Пользователи, просматривающие топик: none

Зашли как: Guest
Все форумы >> [Компилируемые языки] >> WinApi.Window
Имя
Сообщение << Старые топики   Новые топики >>
WinApi.Window - 2011-11-16 00:27:41.353333   
iMulk

Сообщений: 16
Оценки: 0
Присоединился: 2011-11-12 23:36:31.456666
Всем привет!-)
Подскажите как на WinApi сделать так, чтобы окно нельзя было двигать мышкой,в гугле был-)?
Заранее благодарен!
Post #: 1
RE: WinApi.Window - 2011-11-16 02:38:23.970000   
ALE}{_Y

Сообщений: 35
Оценки: 0
Присоединился: 2010-02-14 03:23:27.436666
Измените функцию WndProc следующим образом:
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) { int wmId, wmEvent; PAINTSTRUCT ps; HDC hdc; TCHAR szHello[MAX_LOADSTRING]; LoadString(hInst, IDS_HELLO, szHello, MAX_LOADSTRING); switch (message) { case WM_COMMAND: wmId = LOWORD(wParam); wmEvent = HIWORD(wParam); // Parse the menu selections: switch (wmId) { case IDM_ABOUT: DialogBox(hInst, (LPCTSTR)IDD_ABOUTBOX, hWnd, (DLGPROC)About); break; case IDM_EXIT: DestroyWindow(hWnd); break; default: return DefWindowProc(hWnd, message, wParam, lParam); } break; // строчки, которые проверяют, пробует ли перемещать пользователь окно // и предотвращают его перетаскивание case WM_NCLBUTTONDOWN: if (SendMessage(hWnd, WM_NCHITTEST, 0, lParam) == HTCAPTION) return 0; else DefWindowProc(hWnd, message, wParam, lParam); break; // дальше обработка последующих событий case WM_PAINT: hdc = BeginPaint(hWnd, &ps); // TODO: Add any drawing code here... RECT rt; GetClientRect(hWnd, &rt); DrawText(hdc, szHello, strlen(szHello), &rt, DT_CENTER); EndPaint(hWnd, &ps); break; case WM_DESTROY: PostQuitMessage(0); break; default: return DefWindowProc(hWnd, message, wParam, lParam); } return 0; }
Post #: 2
RE: WinApi.Window - 2011-11-16 11:47:30.813333   
_SaZ_

Сообщений: 4329
Оценки: 398
Присоединился: 2008-01-30 02:18:05.553333
Это наполовину работающий изврат. Положение окна можно менять с клавиатуры (Alt+Space -> Переместить).

Вот так намного проще и корректней:
case WM_MOVING: case WM_SIZING: { RECT rc; LPRECT rcNew = (LPRECT)lParam; GetWindowRect( hWnd, &rc ); *rcNew = rc; } return TRUE;
Post #: 3
Страниц:  [1]
Все форумы >> [Компилируемые языки] >> WinApi.Window







Связаться:
Вопросы по сайту / xakep@glc.ru

Предупреждение: использование полученных знаний в противозаконных целях преследуется по закону.