Справочник советов и примеров по C++Builder

Экран и рабочий стол


  • Изменение картинки на рабочем столе

    // Для изменения картинки на рабочем столе



    // используйте следующий код:
    SystemParametersInfo(SPI_SETDESKWALLPAPER, 0, "pic.bmp",

    SPIF_UPDATEINIFILE | SPIF_SENDCHANGE);

    // где pic.bmp - имя вашего файла с картинкой

  • Изменение картинки на рабочем столе(вариант 2)

    //Первый вариант в C++Builder 5 вызывает ругань

    // BoundsChecker'a, хотя и работает.

    // Нижеприведенный вариант никакой ругани не вызывает, но

    // почему-то работает не на всех машинах. Для изменения картинки

    // на рабочем столе используйте следующий код:

    SystemParametersInfo(SPI_SETDESKWALLPAPER, 0, "pic.bmp",

    SPIF_UPDATEINIFILE);

    // где pic.bmp - имя вашего файла с картинкой

  • Изменение параметров экрана

    // Для изменения параметров экрана используйте следующий

    // код:

    DEVMODE DM;

    DM.dmSize = sizeof(DEVMODE);

    DM.dmBitsPerPel = 16; // глубина цвета, бит на пиксель

    DM.dmPelsWidth = 1024; // разрешение по горизонтали

    DM.dmPelsHeight = 768; // разрешение по вертикали

    DM.dmFields = DM_BITSPERPEL +

    DM_PELSWIDTH +

    DM_PELSHEIGHT +

    DM_DISPLAYFREQUENCY;

    DM.dmDisplayFrequency = 75; // частота обновления экрана

    ChangeDisplaySettings(&DM, 0);

    // ЗАМЕЧАНИЕ: при изменении параметров смотрите чтобы

    монитор поддерживал это режим

  • Как узнать частоту обновления экрана

    // Для получения частоты обновления экрана напишите следующий код:

    HDC hDCScreen = GetDC(NULL);

    int Refresh = GetDeviceCaps(hDCScreen, VREFRESH);

    ReleaseDC(NULL, hDCScreen);

    // в Refresh содержится частота обновления экрана по горизонтали

  • Как узнать разрешение экрана (VCL вариант)

    // Разрешение экрана можно узнать, прочитав значения

    // свойств Screen->Width и Screen->Height:

    int HorzRes = Screen->Width;

    int VertRes = Screen->Height;

  • Как узнать разрешение экрана (WinAPI вариант)

    // Для получения разрешения экрана напишите следующий код:

    HDC hDCScreen = GetDC(NULL);

    int Horres = GetDeviceCaps(hDCScreen, HORZRES);

    int Vertres = GetDeviceCaps(hDCScreen, VERTRES);


    ReleaseDC(NULL, hDCScreen);

    // в Horres содержится разрешение экрана по горизонтали,

    // в Vertres содержится разрешение экрана по вертикали.



  • Как узнать разрешение экрана

    // Для получения разрешения экрана напишите следующий код:

    int screenW=GetSystemMetrics(SM_CXSCREEN);//Получить ширину экрана

    int screenH=GetSystemMetrics(SM_CYSCREEN);//Получить высоту экрана

    // в screenW содержится разрешение экрана по горизонтали,

    // в screenH содержится разрешение экрана по вертикали.



  • Отображение свойств дисплея

    // Следующий код отобразит на экране диалоговое

    // окно свойств дисплея:

    ShellExecute(NULL, "", "Desk.cpl", "", "", SW_SHOWNORMAL);



  • Как поместить вид рабочего стола в буфер

    Напишите следующий код:

    #include <Clipbrd.hpp>

    void __fastcall TForm1::Button1Click(TObject *Sender)

    {

    unsigned DataHandle;

    HPALETTE APalette;

    Word Format;

    Graphics::TBitmap *Bitmap=new Graphics::TBitmap;

    HDC DC=GetDC(0);

    try{

    Bitmap->Height=Screen->Height;

    Bitmap->Width=Screen->Width;

    BitBlt(Bitmap->Canvas->Handle , 0, 0, Screen->Width,

    Screen->Height,DC, 0, 0, SRCCOPY);

    //Изображение экрана теперь в Bitmap, запишем его в бyфеp обмена

    Bitmap->SaveToClipboardFormat(Format,DataHandle,APalette);

    Clipboard()->SetAsHandle(Format,DataHandle);

    }

    __finally

    {

    delete Bitmap;

    ReleaseDC(0,DC);

    }

    }



  • Как рисовать на Десктопе

    Напишите следующий код:

    HDC hdc = CreateDC ( TEXT("DISPLAY"), NULL, NULL, NULL );

    Rectangle( hdc, 100,100, 200, 200);

    DeleteDC ( hdc );

  • Как закрасить рабочий стол по пикселю

    Напишите следующий код:

    void __fastcall TForm1::Button1Click(TObject *Sender)

    { TCanvas *dt = new TCanvas ;

    randomize();

    dt->Handle = GetDC(0);

    while (dt)

    {

    dt->Pixels[random(1024)][random(768)]= 0 ;

    }

    }


    Содержание раздела