15 мая 2023 года "Исходники.РУ" отмечают своё 23-летие!
Поздравляем всех причастных и неравнодушных с этим событием!
И огромное спасибо всем, кто был и остаётся с нами все эти годы!

Главная Форум Журнал Wiki DRKB Discuz!ML Помощь проекту


Animated Cursors

Stracka -- stracka@inet.dpt.com
Monday, July 22, 1996

     Environment: Win95, VC++4.0, MFC4.0
     
     when my app is busy, i'd like to change the cursor to something fun, 
     like a little animated cursor that i made up myself.  when i load the 
     cursor from an external file, things work just fine.  an 
     pseudo-example of this method follows:
     
        // we've become busy
        HCURSOR hCursor = LoadCursorFromFile("WIGGLY.ANI");
        hCursor = SetCursor(hCursor);
        :
        : do busy-stuff
        :
     
        // we aren't busy anymore
        SetCursor(hCursor);
     
     
     the only problem with this method is (obviously) that i'd have to ship 
     the WIGGLY.ANI file along with my app.  yuck.  since dev studio 
     doesn't allow you to import animated cursors into your resource 
     script, i decided to try to use something i'd never used before: a 
     user-defined resource type.  i imported "WIGGLY.ANI" and called it a 
     "Wiggly" resource, and gave it a resource id of IDR_WIGGLY.  i then 
     tried the following:
     
        // we've become busy
        HRSRC hRsrc = FindResource(NULL, MAKEINTRESOURCE(IDR_WIGGLY),
                                   "Wiggly");
        HCURSOR handle = (HCURSOR)LoadResource(NULL, hRsrc);
        HCURSOR hCursor = SetCursor(handle);
        :
        : do busy-stuff
        :
     
        // we aren't busy anymore
        SetCursor(hCursor);
     
     
     this didn't work out the way i'd hoped.  i realized that in the first 
     example, the LoadCursorFromFile() call was giving me a 
     handle-looking-thing, whereas in the second example, the 
     LoadResource() call was giving me what appears to be a nice copy of 
     the WIGGLY.ANI file.  SetCursor() seems to prefer the former over the 
     latter...  :)
     
     my question, then, is how would one go about stuffing an animated 
     cursor into an executable and then grab it on-the-fly to change the 
     current on-screen cursor?
     
     -Mark Stracka
      Distributed Processing Technology
     
     
     ps. if any of you out there haven't gotten yourselves a copy of
         Mike Blaszczak's MFC book, GO GET ONE!   it is the most
         informative, entertaining MFC book on the market, bar none.
         great job, Mike, and thanks!




Brad Wilson/Crucial Software -- crucial@pobox.com
Friday, July 26, 1996

>         HRSRC hRsrc = FindResource(NULL, MAKEINTRESOURCE(IDR_WIGGLY),
>                                    "Wiggly");
>         HCURSOR handle = (HCURSOR)LoadResource(NULL, hRsrc);
>         HCURSOR hCursor = SetCursor(handle);

The result of LoadResource() is not a handle to a cursor.  What you have a
handle to the memory of the data in the cursor file.  I strongly suspect
that the easiest solution is to take the handle, dump the contents into a
temporary file and call LoadCursorFromFile() on the temporary file.  None
of the APIs like CreateCursor() seem to indicate if they'll work with
animated cursors.

>      ps. if any of you out there haven't gotten yourselves a copy of
>          Mike Blaszczak's MFC book, GO GET ONE!

Plug plug plug.  :-)  Would you believe I bought it months ago and STILL
have not touched it yet?  I hate moving.  :-)

--
Brad Wilson, Objectivist philosopher, software engineer, web designer
crucial@pobox.com     http://pobox.com/~crucial    Objectvst@Undernet

    "I'm never going to say I'm sorry for the essence of my soul"





| Вернуться в корень Архива |