Russian Qt Forum
Ноябрь 23, 2024, 04:45 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: хранитель экрана  (Прочитано 5926 раз)
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!
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #1 : Май 20, 2011, 09:01 »

Во что переделать?
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
ecspertiza
Супер
******
Offline Offline

Сообщений: 1053


С уважением, мастер конфетного цеха!


Просмотр профиля
« Ответ #2 : Май 20, 2011, 11:36 »

В прогу по синхронизации данных между, между БД MySQL и SQLite c помощью SOAP протокола  Смеющийся
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #3 : Май 20, 2011, 11:59 »

ecspertiza, жжешь.  Смеющийся
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
Eyxeniy
Гость
« Ответ #4 : Май 20, 2011, 15:27 »

Переделать на qt(с++), чтобы запускался под линуксом.
Записан
ecspertiza
Супер
******
Offline Offline

Сообщений: 1053


С уважением, мастер конфетного цеха!


Просмотр профиля
« Ответ #5 : Май 20, 2011, 15:33 »

Встречный вопрос, сколько платите ? Либо рассказывайте что сами пробовали сделать, и что получилось. Бесплатно просто никому не охото работать  Улыбающийся Курите примеры из папки QT \examples\graphicsview\ они я думаю должны во многом помочь.
Записан
Eyxeniy
Гость
« Ответ #6 : Май 20, 2011, 15:45 »

Я вас прекрасно понимаю ......
Пробовал, только ошибки выкидывает и все (((
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #7 : Май 20, 2011, 15:46 »

Что пробовал? Скомпилить под Линухом? Дык тут винапи непереносимое. Тут не переделывать нужно, а делать с нуля.
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
ecspertiza
Супер
******
Offline Offline

Сообщений: 1053


С уважением, мастер конфетного цеха!


Просмотр профиля
« Ответ #8 : Май 20, 2011, 15:51 »

Кстати а как автор поста под линухом работает? ну я имею ввиду опыт есть? Скачай для начала себе Qt под линукс, собери его, потом покури немного примеры, попробуй чего нибудь навоять, кидай сюда что выйдет, а мы поможем)))) Но поверь перекладывать винапи под Qt с нуля, ну уж совсем не хочется(без вознаграждения) Улыбающийся
Записан
Eyxeniy
Гость
« Ответ #9 : Май 20, 2011, 23:02 »

Граждане, за идею надо, за идею )))
Идея не победима ))))

В линуксе, хоть как-нибудь можно увидеть код скринсевера ?
У линукса же операционка открыта.

И ещё, можно сделать прогу под виндой, а затем воспользоваться программой(?) и перекомпилировать её на линукс ? О, как ))
« Последнее редактирование: Май 20, 2011, 23:28 от Eyxeniy » Записан
ecspertiza
Супер
******
Offline Offline

Сообщений: 1053


С уважением, мастер конфетного цеха!


Просмотр профиля
« Ответ #10 : Май 21, 2011, 13:44 »

для того что бы запустить программу написанную под винду на линуксе можно воспользоваться wine. А можно написать программу кроссплатформену на Qt например и собрать под каждую платформу Улыбающийся
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.136 секунд. Запросов: 23.