![]() |
|
Модераторы: feodorv, GremlinProg, xvr, Fixin |
![]()
|
|
| WildChild |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 114 Регистрация: 24.8.2005 Где: Российская Федера ция Репутация: нет Всего: нет |
Создал стандартное приложение Hello Word!
Нужно, чтобы была возможность рисовать линии с помощью мыша... Может кто подскажет как или даст ссылку. Вроде с этого начинать case WN_PAINT: ... А что дальше не знаю... Спасибо! --------------------
Don't give up without even trying |
|||
|
||||
| Mad |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Эксперт Сообщений: 656 Регистрация: 18.10.2004 Где: Одесса Репутация: 2 Всего: 19 |
WildChild
Посмотри в MSDN, там готовый пример есть, называеться Scrable (или что-то похожее) |
|||
|
||||
| Kandidat |
|
|||
|
Unregistered |
Вот самый простой способ нарисовать несколько линий которые сохраняются в контекст памяти:
//оконная процедура... LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) { int wmId, wmEvent; PAINTSTRUCT ps; static BOOL CREATE; HDC hdc; POINT ptPrevious; static HDC hdcMem; static HBITMAP hBitmap; static int cx,cy,mx,my,cxClient,cyClient; switch (message) { case WM_CREATE: CREATE = TRUE; break; case WM_SIZE: cxClient = LOWORD(lParam); cyClient = HIWORD(lParam); if(CREATE) { hdc = GetDC(hWnd); hdcMem = CreateCompatibleDC(hdc); hBitmap = CreateCompatibleBitmap(hdc,cxClient,cyClient); SelectObject(hdcMem,hBitmap); BitBlt(hdcMem,0,0,cxClient,cyClient,hdc,0,0,SRCCOPY); ReleaseDC(hWnd,hdc); CREATE = FALSE; } break; case WM_LBUTTONDOWN: cx = LOWORD(lParam); cy = HIWORD(lParam); break; case WM_MOUSEMOVE: if (wParam & MK_LBUTTON) { InvalidateRect(hWnd,NULL,TRUE); mx = LOWORD(lParam); my = HIWORD(lParam); } break; case WM_LBUTTONUP: hdc = GetDC(hWnd); BitBlt(hdcMem,0,0,cxClient,cyClient,hdc,0,0,SRCCOPY); ReleaseDC(hWnd,hdc); break; case WM_PAINT: hdc = BeginPaint(hWnd, &ps); BitBlt(hdc,0,0,cxClient,cyClient,hdcMem,0,0,SRCCOPY); MoveToEx(hdc,cx,cy,NULL); LineTo(hdc,mx,my); EndPaint(hWnd, &ps); break; case WM_DESTROY: PostQuitMessage(0); DeleteDC(hdcMem); DeleteObject(hBitmap); break; default: return DefWindowProc(hWnd, message, wParam, lParam); } return 0; } |
|||
|
||||
![]()
|
| Правила форума "C/C++: Системное программирование и WinAPI" | |
|
|
На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы . Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Системное программирование и WinAPI | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |