Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • World
  • Users
  • Groups
Skins
  • Light
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse
Code Project
  1. Home
  2. General Programming
  3. C / C++ / MFC
  4. GIF showing problem

GIF showing problem

Scheduled Pinned Locked Moved C / C++ / MFC
visual-studiographicsdebugginghelp
13 Posts 4 Posters 0 Views 1 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • S Offline
    S Offline
    subhabasu
    wrote on last edited by
    #1

    Hi all, I am trying to show single-frame/animated GIF images in a window created by 'CreateWindowEx'. I have used Image *, Graphics * (method DrawImage(Image *, INT, INT, INT, INT)) of GdiPlus dll. I used memry DC to avoid flickering. This was working fine. Now the problem is that - When I add 2 commands /DYNAMICBASE and /NXCOMPAT in linker command line (VS 2005 project settings), the application simply crashes when trying to show any kind of GIF image. Although it is showing BMP, DIB, WMF, JPG, JPEG and TIFF images perfectly. To see where the actual problem is i ran it in debug mode and find GdiPlus::Graphics::DrawImage fail to process. The Application Verifier 4.0 points that it is due to some bad address pointer. The astonishinig matter is that, in debug mode if I ignore the crash and click on 'Continue', the 'DrawImagw' returns StatusResult "Ok" and 'BitBilt' draws the image perfectly in my application window. Thanks in advance, for helping me out of this situation. Subha

    X 1 Reply Last reply
    0
    • S subhabasu

      Hi all, I am trying to show single-frame/animated GIF images in a window created by 'CreateWindowEx'. I have used Image *, Graphics * (method DrawImage(Image *, INT, INT, INT, INT)) of GdiPlus dll. I used memry DC to avoid flickering. This was working fine. Now the problem is that - When I add 2 commands /DYNAMICBASE and /NXCOMPAT in linker command line (VS 2005 project settings), the application simply crashes when trying to show any kind of GIF image. Although it is showing BMP, DIB, WMF, JPG, JPEG and TIFF images perfectly. To see where the actual problem is i ran it in debug mode and find GdiPlus::Graphics::DrawImage fail to process. The Application Verifier 4.0 points that it is due to some bad address pointer. The astonishinig matter is that, in debug mode if I ignore the crash and click on 'Continue', the 'DrawImagw' returns StatusResult "Ok" and 'BitBilt' draws the image perfectly in my application window. Thanks in advance, for helping me out of this situation. Subha

      X Offline
      X Offline
      Xing Chen
      wrote on last edited by
      #2

      why not use try-catch block to fix this problem?

      S 2 Replies Last reply
      0
      • X Xing Chen

        why not use try-catch block to fix this problem?

        S Offline
        S Offline
        subhabasu
        wrote on last edited by
        #3

        Thanks for the suggesstion Xing. Since I am writting code in pur C++ and using Win32 APIs, I didn't found what is the exception class I should use to catch it. If you can suggest me, that'll be better for me.

        H T 2 Replies Last reply
        0
        • S subhabasu

          Thanks for the suggesstion Xing. Since I am writting code in pur C++ and using Win32 APIs, I didn't found what is the exception class I should use to catch it. If you can suggest me, that'll be better for me.

          H Offline
          H Offline
          Hamid Taebi
          wrote on last edited by
          #4

          See Exceptions[^].

          Of one Essence is the human race thus has Creation put the base One Limb impacted is sufficient For all Others to feel the Mace (Saadi )

          1 Reply Last reply
          0
          • X Xing Chen

            why not use try-catch block to fix this problem?

            S Offline
            S Offline
            subhabasu
            wrote on last edited by
            #5

            Thanks Xing and Hamid, I even tried with try{ // My code snippet } catch(...) { ::Messagebox(0,0,0,0); } It does not enter in catch part. I am feeling sick of this:confused:

            H X 2 Replies Last reply
            0
            • S subhabasu

              Thanks Xing and Hamid, I even tried with try{ // My code snippet } catch(...) { ::Messagebox(0,0,0,0); } It does not enter in catch part. I am feeling sick of this:confused:

              H Offline
              H Offline
              Hamid Taebi
              wrote on last edited by
              #6

              What was the error and did you use of your program on the vista?

              Of one Essence is the human race thus has Creation put the base One Limb impacted is sufficient For all Others to feel the Mace (Saadi )

              S 1 Reply Last reply
              0
              • H Hamid Taebi

                What was the error and did you use of your program on the vista?

                Of one Essence is the human race thus has Creation put the base One Limb impacted is sufficient For all Others to feel the Mace (Saadi )

                S Offline
                S Offline
                subhabasu
                wrote on last edited by
                #7

                Hi Hamid, Now, I find where the problem occurrs. It is nothing to do with the project setting /DYNAMICBASE or /NXCOMPAT in Linker command line. The application only crashes if I run it with Application Verifier 4.0. Otherwise it is able to show (DrawImage) any kind of GIF image. I am giving a part of the xml file generated by the Application Verifier 4.0. I hope it will help you to understand the error properly, which I could not resolve till now. <avrf:logEntry Time="2009-04-15 : 12:18:56" LayerName="Heaps" StopCode="0x13" Severity="Error"> avrf:messageFirst chance access violation for current stack trace.</avrf:message> avrf:parameter15960002 - Invalid address causing the exception.</avrf:parameter1> avrf:parameter24ed9b280 - Code address executing the invalid access.</avrf:parameter2> avrf:parameter3129838 - Exception record.</avrf:parameter3> avrf:parameter4129854 - Context record.</avrf:parameter4>

                H 1 Reply Last reply
                0
                • S subhabasu

                  Hi Hamid, Now, I find where the problem occurrs. It is nothing to do with the project setting /DYNAMICBASE or /NXCOMPAT in Linker command line. The application only crashes if I run it with Application Verifier 4.0. Otherwise it is able to show (DrawImage) any kind of GIF image. I am giving a part of the xml file generated by the Application Verifier 4.0. I hope it will help you to understand the error properly, which I could not resolve till now. <avrf:logEntry Time="2009-04-15 : 12:18:56" LayerName="Heaps" StopCode="0x13" Severity="Error"> avrf:messageFirst chance access violation for current stack trace.</avrf:message> avrf:parameter15960002 - Invalid address causing the exception.</avrf:parameter1> avrf:parameter24ed9b280 - Code address executing the invalid access.</avrf:parameter2> avrf:parameter3129838 - Exception record.</avrf:parameter3> avrf:parameter4129854 - Context record.</avrf:parameter4>

                  H Offline
                  H Offline
                  Hamid Taebi
                  wrote on last edited by
                  #8

                  Did you use of this code on your code? __try { } __except( EXCEPTION_EXECUTE_HANDLER) { }

                  Of one Essence is the human race thus has Creation put the base One Limb impacted is sufficient For all Others to feel the Mace (Saadi )

                  S 1 Reply Last reply
                  0
                  • S subhabasu

                    Thanks Xing and Hamid, I even tried with try{ // My code snippet } catch(...) { ::Messagebox(0,0,0,0); } It does not enter in catch part. I am feeling sick of this:confused:

                    X Offline
                    X Offline
                    Xing Chen
                    wrote on last edited by
                    #9

                    Microsoft Specific try-except Statement[^]

                    S 1 Reply Last reply
                    0
                    • H Hamid Taebi

                      Did you use of this code on your code? __try { } __except( EXCEPTION_EXECUTE_HANDLER) { }

                      Of one Essence is the human race thus has Creation put the base One Limb impacted is sufficient For all Others to feel the Mace (Saadi )

                      S Offline
                      S Offline
                      subhabasu
                      wrote on last edited by
                      #10

                      Hi Hamid and Xing, Many many thanks for your suggestion. I tried what both of you have said. But that was giving "error C2712: Cannot use __try in functions that require object unwinding" in my VS 2005. Anyway I solved that error by setting "Enable C++ Exceptions" to "No". Now I can track the exception, though generating too many warnings at compile time (for disabling C++ exceptions). So, the application doesn't crashes anymore. Anyway, I need to show the GIF images. So, how can I do that after getting that exception - EXCEPTION_EXECUTE_HANDLER. What should I do :(

                      1 Reply Last reply
                      0
                      • S subhabasu

                        Thanks for the suggesstion Xing. Since I am writting code in pur C++ and using Win32 APIs, I didn't found what is the exception class I should use to catch it. If you can suggest me, that'll be better for me.

                        T Offline
                        T Offline
                        ThatsAlok
                        wrote on last edited by
                        #11

                        subhabasu wrote:

                        , I didn't found what is the exception class

                        Though i know, this is not a good approach, but here you can use this block to catch all the exception :-

                        try
                        {

                        // your drawing code here
                        }
                        catch(...)
                        {
                        }

                        "Opinions are neither right nor wrong. I cannot change your opinion. I can, however, change what influences your opinion." - David Crow
                        Never mind - my own stupidity is the source of every "problem" - Mixture

                        cheers, Alok Gupta VC Forum Q&A :- I/IV Support CRY- Child Relief and You

                        1 Reply Last reply
                        0
                        • X Xing Chen

                          Microsoft Specific try-except Statement[^]

                          S Offline
                          S Offline
                          subhabasu
                          wrote on last edited by
                          #12

                          Hi Xing, Thanks for your enthuasism, what you and Hamid have shown to my problem. I used that __try-__exception() block. Inside that I call 'GetExceptionCode' API, which returns me the error code 0x80000003. It means EXCEPTION_BREAKPOINT (#define EXCEPTION_BREAKPOINT STATUS_BREAKPOINT in winbase.h). And in winnt.h STATUS_BREAKPOINT is defined as 0x80000003. So, right now I am here, back again in the square. I don't understand what is the problem with Application Verifier 4.0. Without tracking by it, the application works fine.

                          X 1 Reply Last reply
                          0
                          • S subhabasu

                            Hi Xing, Thanks for your enthuasism, what you and Hamid have shown to my problem. I used that __try-__exception() block. Inside that I call 'GetExceptionCode' API, which returns me the error code 0x80000003. It means EXCEPTION_BREAKPOINT (#define EXCEPTION_BREAKPOINT STATUS_BREAKPOINT in winbase.h). And in winnt.h STATUS_BREAKPOINT is defined as 0x80000003. So, right now I am here, back again in the square. I don't understand what is the problem with Application Verifier 4.0. Without tracking by it, the application works fine.

                            X Offline
                            X Offline
                            Xing Chen
                            wrote on last edited by
                            #13

                            I guess Application Verifier use more strict strategy, just like you can compile project with /W4 option.

                            1 Reply Last reply
                            0
                            Reply
                            • Reply as topic
                            Log in to reply
                            • Oldest to Newest
                            • Newest to Oldest
                            • Most Votes


                            • Login

                            • Don't have an account? Register

                            • Login or register to search.
                            • First post
                              Last post
                            0
                            • Categories
                            • Recent
                            • Tags
                            • Popular
                            • World
                            • Users
                            • Groups