Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C++ Builder > Aнимированный курсор мыши из *.ani файла


Автор: cyberstream 18.11.2010, 17:44
Здравствуйте, уважаемые!
Button1Click меняет системный курсор (windows wide), Button2Click возвращает к исходному.
Загружаемый курсор отображается статичным. Как его грузить, чтоб анимировался? 
С++ Builder 6 вообще оное может? 
Код

#define OEMRESOURCE
#include <vcl.h>
#pragma hdrstop

#include "Unit1.h"
//===========================================================================*/
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//===========================================================================*/
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{  }//=======================================================================*/

AnsiString GetEnvVar(AnsiString envVar);

void __fastcall TForm1::Button1Click(TObject *Sender)
{
//HANDLE hl = LoadImage(0, (GetEnvVar("windir")+"\\Cursors\\appstart.ani").c_str(), IMAGE_CURSOR, 0, 0, LR_DEFAULTSIZE | LR_LOADFROMFILE); //так тоже пробовал
HANDLE hl = LoadCursorFromFile((GetEnvVar("windir")+"\\Cursors\\appstart.ani").c_str());
if (SetSystemCursor(CopyCursor(hl), OCR_NORMAL)==0)
    MessageBox(NULL, SysErrorMessage(GetLastError()).c_str(), IntToHex((int)GetLastError(),8).c_str(), MB_OK);
}//===========================================================================*/

void __fastcall TForm1::Button2Click(TObject *Sender)
{    SystemParametersInfo    //SPI_SETCURSORS Reloads the system cursors. Set the uiParam parameter to zero and the pvParam parameter to NULL
    (     SPI_SETCURSORS    // UINT uiAction,
         ,0                 // UINT uiParam,
         ,NULL              // PVOID pvParam,
         ,0                 // UINT fWinIni
    );
}//===========================================================================*/

AnsiString GetEnvVar(AnsiString envVar)
{ int Len = GetEnvironmentVariable(envVar.c_str(), NULL, 0);
  AnsiString Result;
  if (Len > 0)
  {
    Result.SetLength(Len - 1);
    GetEnvironmentVariable(envVar.c_str(), Result.c_str(), Len);
  }
  return Result;
}//===========================================================================*/

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)