Новичок
Профиль
Группа: Участник
Сообщений: 32
Регистрация: 31.10.2006
Репутация: нет Всего: нет
|
Привет всем!!! Я создал окно и объект(линия) на Borland C+ 5.02. Помогите сделать так чтобы, при движении она вращалась и когда достигнет границы окна отталкивалась и двигалась в другом направлении(можно по задданной траектории). Вот то что у меня пока получилось | Код | #include <windows.h> #include <windowsx.h> #include "def.h"
#define ELL_TIMER 30000
static HINSTANCE hInst; //дескриптор приложения
//Функция главного окна LRESULT CALLBACK _export WndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam); static char szClassName[] = "Garfika";
static char szWinTitle[] = "Движение объекта";
//Функция для регистрации класса окна static BOOL RegCls(HINSTANCE h){ WNDCLASS wndcls; wndcls.style = CS_HREDRAW | CS_VREDRAW; wndcls.lpfnWndProc = WndProc; wndcls.cbWndExtra = 0; wndcls.cbClsExtra = 0; wndcls.hInstance = h; wndcls.hIcon = ::LoadIcon(h, MAKEINTRESOURCE(EXE_ICON)); wndcls.hCursor = ::LoadCursor(NULL, IDC_ARROW); wndcls.hbrBackground = (HBRUSH)(COLOR_WINDOW+2); wndcls.lpszMenuName = NULL; wndcls.lpszClassName = szClassName; return ::RegisterClass(&wndcls); }
#pragma argsused int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE prevInst, LPSTR cmdline, int show){ HWND hWnd; MSG msg; // //Сохраняем идентификатор приложения hInst = hInstance; //регистрируем класс окна if (!RegCls(hInst)) return 0; //создаем окно hWnd = ::CreateWindow(szClassName, szWinTitle, WS_OVERLAPPED | WS_SYSMENU, CW_USEDEFAULT, CW_USEDEFAULT, 400, 400, NULL, NULL, hInst, NULL); //показываем обновляем окно ::ShowWindow(hWnd,show); ::UpdateWindow(hWnd); //Запускаем цикл обработки сообщений while (::GetMessage(&msg, NULL, 0, 0)) { ::TranslateMessage(&msg); ::DispatchMessage(&msg); } return msg.wParam; }
static POINT p;
#pragma argsused static BOOL WndCreate(HWND hWnd, LPCREATESTRUCT /*lpCreateStruct*/){ ::SetTimer(hWnd, ELL_TIMER, 90, NULL); p.x = 0; p.y = 100; return TRUE; }
#pragma argsused static void WndPaint(HWND hWnd){ PAINTSTRUCT ps; HDC hdc = ::BeginPaint(hWnd, &ps); // //char szText[64]; //::wsprintf(szText, "[%d]:[%d]", p.x, p.y); //::TextOut(hdc, p.x, p.y, szText, ::lstrlen(szText)); ::Rectangle(hdc, p.x+0, p.y+0, p.x+130, p.y+5); ::EndPaint(hWnd, &ps); }
#pragma argsused static void WndTimer(HWND hWnd, UINT id){ //::MessageBeep(-1); p.x += 10; p.y += 10; if ( p.x>=200 ) { p.x = 0; p.y = 0; } ::InvalidateRect(hWnd, NULL, TRUE); }
#pragma argsused static void WndDestroy(HWND hWnd){ ::KillTimer(hWnd, ELL_TIMER); ::PostQuitMessage(0); }
static LRESULT CALLBACK _export WndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam){ switch (msg){ HANDLE_MSG(hWnd, WM_CREATE, WndCreate); HANDLE_MSG(hWnd, WM_PAINT, WndPaint); HANDLE_MSG(hWnd, WM_TIMER, WndTimer); HANDLE_MSG(hWnd, WM_DESTROY, WndDestroy); } return DefWindowProc(hWnd, msg, wParam, lParam); }
|
Выручайте мне через 4 дня сдавать эту задачу. Заранее спасибо Это сообщение отредактировал(а) Alexeis - 7.5.2007, 13:26
Присоединённый файл ( Кол-во скачиваний: 3 )
object.rar 24,47 Kb
|