C ++ анимированный курсор - PullRequest
1 голос
/ 07 сентября 2010

Я использую этот код для вызова анимированного курсора в C ++ Builder:

void __fastcall TcfListatArtikujtLst::FormActivate(TObject *Sender)
{
   ActiveControl = cxGrid1;
   Application->ProcessMessages();

   const int cnCursorID1 = 1;
   Screen->Cursors[cnCursorID1] = LoadCursorFromFile("cursors\\hourglas.ani");
   Cursor = cnCursorID1;

   try
   {
       dmDM1->prcArtikujt->Close();
       dmDM1->prcArtikujt->Parameters->Refresh();
       dmDM1->prcArtikujt->Prepared;

       dmDM1->CDSArtikujt->Data = dmDM1->DSPArtikujt->Data;
       dmDM1->CDSArtikujt->Open();
   }
   __finally
   {
       Screen->Cursor = crDefault;
   }
}

Проблема в том, что анимация вступает в силу в блоке try-finally и не перезапускает курсор по умолчанию.

Cheers, Ниджази Ситаку

Ответы [ 2 ]

0 голосов
/ 12 сентября 2010

вот это решение:

void __fastcall TcfListatArtikujtLst::FormActivate(TObject *Sender) 
{ 
   ActiveControl = cxGrid1; 
   Application->ProcessMessages(); 

   const int cnCursorID1 = 1; 
   Screen->Cursors[cnCursorID1] = LoadCursorFromFile("cursors\\hourglas.ani"); 
   Application->ProcessMessages;
   Screen->Cursor = cnCursorID1; 

   try 
   { 
       dmDM1->prcArtikujt->Close(); 
       dmDM1->prcArtikujt->Parameters->Refresh(); 
       dmDM1->prcArtikujt->Prepared; 

       dmDM1->CDSArtikujt->Data = dmDM1->DSPArtikujt->Data; 
       dmDM1->CDSArtikujt->Open(); 
   } 
   __finally 
   { 
       Screen->Cursor = crDefault; 
   } 
}
0 голосов
/ 09 сентября 2010

Я сильно подозреваю, что курсор загружен, но не изменяется до тех пор, пока цикл сообщений Windows не продолжится.

Попробуйте ProcessMessages ПОСЛЕ загрузки курсора из файла.

Курсор не исчезает, потому чтоВы не сказали форме вернуться к обычному курсору.Вы сказали экрану вернуться к обычному курсору.

Попробуйте:

__finally
{
   Cursor = crDefault;
}
...