Название: хранитель экрана Отправлено: Eyxeniy от Май 19, 2011, 19:37 Привет, вот надо код переделать, кто может помочь ?
Прога: при запуске крутятся 2 квадрата в разные стороны. /* ssaver.cpp - simpliest screensaver. Especially for "MyComputer" readers :-) ------------------------------------- Programmed by Ivan Gavrilyuk on Aug, 2002 mailto: ivg@hotbox.ru best chat: http://chat.chat.ru, channel "Programmers" :-) */ #include <windows.h> #include <scrnsave.h> #include <math.h> double pi = 3.1415926; double pi2 = 2*pi; double hpi = pi/2; //screensaver message cycle. Works like WinMain in clean Win32API application LRESULT WINAPI ScreenSaverProc (HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) { static PAINTSTRUCT ps = {NULL}; static HDC hDC = NULL; static HPEN hPen1; static UINT uTimer = 0; static int x_max, y_max; static double step = 0.01, angle = 0; static int center_x, center_y; switch(message) { case WM_CREATE: x_max = GetSystemMetrics(SM_CXSCREEN); y_max = GetSystemMetrics(SM_CYSCREEN); center_x = x_max / 2; center_y = y_max / 2; uTimer = SetTimer(hWnd, 1, 10, NULL); hPen1 = (HPEN)GetStockObject(WHITE_PEN); break; case WM_DESTROY: if(uTimer) KillTimer(hWnd, uTimer); PostQuitMessage(0); break; case WM_TIMER: angle += step; if(angle > pi2) angle = 0; RECT lpr; lpr.left = center_x - 102; lpr.top = center_y - 102; lpr.right = center_x + 102; lpr.bottom = center_y + 102;; InvalidateRect(hWnd, &lpr, true); break; case WM_PAINT: x_max = GetSystemMetrics(SM_CXSCREEN); y_max = GetSystemMetrics(SM_CYSCREEN); center_x = x_max / 2; center_y = y_max / 2; hDC = BeginPaint(hWnd, &ps); if(fChildPreview) { SetBkColor(hDC, RGB(0, 0, 0)); SetTextColor(hDC, RGB(255, 255, 0)); char szPreview[] = "Мои квадратики :-)"; TextOut(hDC, 15, 45, szPreview, strlen(szPreview)); } else { SetBkColor(hDC, RGB(1, 0, 0)); SetTextColor(hDC, RGB(120, 120, 120)); SelectObject(hDC, hPen1); MoveToEx(hDC, center_x + (int)(cos(angle)*(double)100), center_y + (int)(sin(angle)*(double)(-100)), NULL); LineTo(hDC, center_x + (int)(cos(hpi + angle)*(double)100), center_y + (int)(sin(hpi + angle)*(double)(-100))); LineTo(hDC, center_x + (int)(cos(pi + angle)*(double)100), center_y + (int)(sin(pi + angle)*(double)(-100))); LineTo(hDC, center_x + (int)(cos(hpi + pi + angle)*(double)100), center_y + (int)(sin(hpi + pi + angle)*(double)(-100))); LineTo(hDC, center_x + (int)(cos(angle)*(double)100), center_y + (int)(sin(angle)*(double)(-100))); MoveToEx(hDC, center_x + (int)(cos(-angle)*(double)50), center_y + (int)(sin(-angle)*(double)(-50)), NULL); LineTo(hDC, center_x + (int)(cos(hpi - angle)*(double)50), center_y + (int)(sin(hpi - angle)*(double)(-50))); LineTo(hDC, center_x + (int)(cos(pi - angle)*(double)50), center_y + (int)(sin(pi - angle)*(double)(-50))); LineTo(hDC, center_x + (int)(cos(hpi + pi - angle)*(double)50), center_y + (int)(sin(hpi + pi - angle)*(double)(-50))); LineTo(hDC, center_x + (int)(cos(-angle)*(double)50), center_y + (int)(sin(-angle)*(double)(-50))); static char szAuthor[] = "Programmed by Evgeniy"; TextOut(hDC, 0, y_max - 20, szAuthor, strlen(szAuthor)); } EndPaint(hWnd, &ps); break; default: return DefScreenSaverProc(hWnd, message, wParam, lParam); } return 0; } BOOL WINAPI ScreenSaverConfigureDialog (HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam) { return true; } BOOL WINAPI RegisterDialogClasses (HANDLE hInst) { return true; } //That's all, folks! Название: Re: хранитель экрана Отправлено: Пантер от Май 20, 2011, 09:01 Во что переделать?
Название: Re: хранитель экрана Отправлено: ecspertiza от Май 20, 2011, 11:36 В прогу по синхронизации данных между, между БД MySQL и SQLite c помощью SOAP протокола ;D
Название: Re: хранитель экрана Отправлено: Пантер от Май 20, 2011, 11:59 ecspertiza, жжешь. ;D
Название: Re: хранитель экрана Отправлено: Eyxeniy от Май 20, 2011, 15:27 Переделать на qt(с++), чтобы запускался под линуксом.
Название: Re: хранитель экрана Отправлено: ecspertiza от Май 20, 2011, 15:33 Встречный вопрос, сколько платите ? Либо рассказывайте что сами пробовали сделать, и что получилось. Бесплатно просто никому не охото работать :) Курите примеры из папки QT \examples\graphicsview\ они я думаю должны во многом помочь.
Название: Re: хранитель экрана Отправлено: Eyxeniy от Май 20, 2011, 15:45 Я вас прекрасно понимаю ......
Пробовал, только ошибки выкидывает и все ((( Название: Re: хранитель экрана Отправлено: Пантер от Май 20, 2011, 15:46 Что пробовал? Скомпилить под Линухом? Дык тут винапи непереносимое. Тут не переделывать нужно, а делать с нуля.
Название: Re: хранитель экрана Отправлено: ecspertiza от Май 20, 2011, 15:51 Кстати а как автор поста под линухом работает? ну я имею ввиду опыт есть? Скачай для начала себе Qt под линукс, собери его, потом покури немного примеры, попробуй чего нибудь навоять, кидай сюда что выйдет, а мы поможем)))) Но поверь перекладывать винапи под Qt с нуля, ну уж совсем не хочется(без вознаграждения) :)
Название: Re: хранитель экрана Отправлено: Eyxeniy от Май 20, 2011, 23:02 Граждане, за идею надо, за идею )))
Идея не победима )))) В линуксе, хоть как-нибудь можно увидеть код скринсевера ? У линукса же операционка открыта. И ещё, можно сделать прогу под виндой, а затем воспользоваться программой(?) и перекомпилировать её на линукс ? О, как )) Название: Re: хранитель экрана Отправлено: ecspertiza от Май 21, 2011, 13:44 для того что бы запустить программу написанную под винду на линуксе можно воспользоваться wine. А можно написать программу кроссплатформену на Qt например и собрать под каждую платформу :)
|