Как сделать полноэкранный и раскрасить вывод программы? - PullRequest
0 голосов
/ 16 августа 2010

Это программа типа Заставки.

Как сделать полноэкранный режим и раскрасить вывод программы?и программа автоматического выхода при перемещении мыши?

#include<windows.h>
#include<stdio.h>
#include<time.h>
#include<math.h>


struct tm *local(){
    time_t t;
    t = time(NULL);

    return localtime(&t);
}

const char *ClsName = "BitmapLoading";
const char *WndName = "Easy bitmaploading!";
MSG        Msg;
HWND       hWnd;
WNDCLASSEX WndClsEx;
HINSTANCE hInstance;


int main(void)
{
    GetSystemMenu(GetForegroundWindow(),1);
    ShowWindow(GetForegroundWindow(),1);
    int D=100;
    int m,n;

    MoveWindow(GetForegroundWindow(),0,0,0,0,1);

    RegisterClassEx(&WndClsEx);
    // Create the window object
    hWnd = CreateWindow(ClsName,
              WndName,
              WS_OVERLAPPEDWINDOW,
              CW_USEDEFAULT,
              CW_USEDEFAULT,
              CW_USEDEFAULT,
              CW_USEDEFAULT,
              GetForegroundWindow(),
              CreatePopupMenu(),
              hInstance,
              NULL);
    HDC hdc=GetDC(hWnd);

    for(m=0;m<=(local()->tm_hour*5)+local()->tm_min;m++)rand();//Random based on time

    char *Label="  ScreenMove.            -           2020  ";

    int a[35],b[35],c[35],d[35],e=0;

        for(n=1;n<=21;n++){
            a[n]=(10+n)*n;
            b[n]=(10+n)*n;
            c[n]=1,d[n]=1;
        }

        do{
            for(n=1;n<=21;n++){
                if(a[n]+(6+n+n)<=740 && a[n]>=0 && c[n]==1)a[n]++;
                else{ a[n]--;c[n]=0; }

                if(a[n]<=0)c[n]=1;

                if(b[n]+(6+n+n)<=1000 && b[n]>=0 && d[n]==1)b[n]++;
                else{ b[n]--;d[n]=0; }

                if(b[n]<=0)d[n]=1;

                e++;
                if(e==4)e=0;
                RoundRect(hdc,b[n]+(2+n+n)+e,a[n]+(2+n+n)+e,b[n],a[n],b[n],a[n]);

                TextOut(hdc,360,10,Label,43);//TEXT
            }
            for(m=0;m<=D*4;m++)Rectangle(hdc,1300,0,1350,50);

            for(n=100;n>=0;n--)LineTo(hdc,rand()%1100,rand()%740);
            SetTextColor(hdc,rand());
        }while(1);

return 0;
}

Ответы [ 2 ]

1 голос
/ 16 августа 2010

Программы Windows GUI обычно управляются событиями.Раздел do ... while(1) в вашей программе создает бесконечный цикл, который приводит к потере циклов ЦП, а также затрудняет обнаружение таких событий, как движение мыши.Потратьте некоторое время и прочитайте учебник по разработке приложений Win32. Вот один результат от Google.Как только вы научитесь настраивать оконную процедуру для обработки сообщений, вы можете использовать сообщение WM_MOUSEMOVE, чтобы обнаружить движение мыши и выйти из приложения.

Чтобы сделать окно полноэкранным:

  1. использовать стиль WS_POPUP вместо WS_OVERLAPPEDWINDOW;это приведет к удалению строки заголовка
  2. в соответствующих координатах экрана: вместо CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT используйте 0, 0, GetSystemMetrics(SM_CXSCREEN), GetSystemMetrics(SM_CYSCREEN).

Что касается добавления цвета в вывод, вам необходимо сделатьодна из нескольких вещей в зависимости от того, что вы хотите покрасить.Линии нарисованы пером, твердые тела, такие как прямоугольники, заполнены кистью, а цвет текста устанавливается отдельно SetTextColor.См. на этой странице для примера использования ручек и кистей.

0 голосов
/ 16 августа 2010

Если вы хотите создать заставку, вы обычно хотите использовать API заставки .Это автоматически обрабатывает почти все, кроме рисования (например, когда активировать, деактивировать, когда есть ввод с экрана, клавиатуры и т. Д.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...