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. ::CreateDC() returns NULL with errorcode ERROR_INVALID_PRINTER_NAME(1801)

::CreateDC() returns NULL with errorcode ERROR_INVALID_PRINTER_NAME(1801)

Scheduled Pinned Locked Moved C / C++ / MFC
helpquestion
12 Posts 2 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.
  • E Eugen Podsypalnikov

    You could try to use the DC returned by PrintDlgEx(..)... :)

    virtual void BeHappy() = 0;

    H Offline
    H Offline
    hanq_38910130
    wrote on last edited by
    #3

    Thanks for your reply :) But I think you misunderstood it. It has nothing to do with "Print" or "Printer". It's about "video display driver" :-D

    E 1 Reply Last reply
    0
    • H hanq_38910130

      Thanks for your reply :) But I think you misunderstood it. It has nothing to do with "Print" or "Printer". It's about "video display driver" :-D

      E Offline
      E Offline
      Eugen Podsypalnikov
      wrote on last edited by
      #4

      Yes, I have probably misunderstood it... :) ...does your call look like ::CreateDC("DISPLAY", NULL, ...); under W2K ? :)

      virtual void BeHappy() = 0;

      H 1 Reply Last reply
      0
      • E Eugen Podsypalnikov

        Yes, I have probably misunderstood it... :) ...does your call look like ::CreateDC("DISPLAY", NULL, ...); under W2K ? :)

        virtual void BeHappy() = 0;

        H Offline
        H Offline
        hanq_38910130
        wrote on last edited by
        #5

        ;) The follow is my code fragment: HDC CreateDCFromDriver() { HDC hDC; char lpszDriver[0x20]; if ( FALSE == GetDriverDeviceName(lpszDriver) ) return NULL; hDC = ::CreateDCA(lpszDriver, 0, 0, 0); if ( hDC == NULL ) { MM_TRACE(_T("CreateDCFromDriver: ErrorCode - %08X"), GetLastError()); } return hDC; } I think my code is just OK, cause everything works fine in "xp, vista, win7" OS. It only occur in "win2k", when in "win2k" OS the code will go into "MM_TRACE(_T("CreateDCFromDriver: ErrorCode - %08X"), GetLastError()); ". Meanwhile in other OS, it go into "return hDC;" correctly.

        E 1 Reply Last reply
        0
        • H hanq_38910130

          ;) The follow is my code fragment: HDC CreateDCFromDriver() { HDC hDC; char lpszDriver[0x20]; if ( FALSE == GetDriverDeviceName(lpszDriver) ) return NULL; hDC = ::CreateDCA(lpszDriver, 0, 0, 0); if ( hDC == NULL ) { MM_TRACE(_T("CreateDCFromDriver: ErrorCode - %08X"), GetLastError()); } return hDC; } I think my code is just OK, cause everything works fine in "xp, vista, win7" OS. It only occur in "win2k", when in "win2k" OS the code will go into "MM_TRACE(_T("CreateDCFromDriver: ErrorCode - %08X"), GetLastError()); ". Meanwhile in other OS, it go into "return hDC;" correctly.

          E Offline
          E Offline
          Eugen Podsypalnikov
          wrote on last edited by
          #6

          You could try to trace the lpszDriver too... :)

          virtual void BeHappy() = 0;

          H 1 Reply Last reply
          0
          • E Eugen Podsypalnikov

            You could try to trace the lpszDriver too... :)

            virtual void BeHappy() = 0;

            H Offline
            H Offline
            hanq_38910130
            wrote on last edited by
            #7

            :) Yes, I've tried that, and it's like "\\.\DISPLAY3" which is OK. I still believe that this problem is caused by the implementation of function "CreateDC" under "win2k" OS. ;P I just want to know if there's a workaround out there about this issue. :((

            E 1 Reply Last reply
            0
            • H hanq_38910130

              :) Yes, I've tried that, and it's like "\\.\DISPLAY3" which is OK. I still believe that this problem is caused by the implementation of function "CreateDC" under "win2k" OS. ;P I just want to know if there's a workaround out there about this issue. :((

              E Offline
              E Offline
              Eugen Podsypalnikov
              wrote on last edited by
              #8

              Would it be enough under win2k ? :) :

              MSDN:

              If there are multiple monitors on the system, calling CreateDC(TEXT("DISPLAY"),NULL,NULL,NULL) will create a DC covering all the monitors.

              virtual void BeHappy() = 0;

              H 2 Replies Last reply
              0
              • E Eugen Podsypalnikov

                Would it be enough under win2k ? :) :

                MSDN:

                If there are multiple monitors on the system, calling CreateDC(TEXT("DISPLAY"),NULL,NULL,NULL) will create a DC covering all the monitors.

                virtual void BeHappy() = 0;

                H Offline
                H Offline
                hanq_38910130
                wrote on last edited by
                #9

                I do believe that it's relevant to multiple monitors, but I just can't ask our users to set up another monitor or another video card, or something like that. I can only make some improvement in our program which I still don't know how to do it. ;P

                E 1 Reply Last reply
                0
                • E Eugen Podsypalnikov

                  Would it be enough under win2k ? :) :

                  MSDN:

                  If there are multiple monitors on the system, calling CreateDC(TEXT("DISPLAY"),NULL,NULL,NULL) will create a DC covering all the monitors.

                  virtual void BeHappy() = 0;

                  H Offline
                  H Offline
                  hanq_38910130
                  wrote on last edited by
                  #10

                  Anyway, I really appreciate your help. ;P

                  1 Reply Last reply
                  0
                  • H hanq_38910130

                    I do believe that it's relevant to multiple monitors, but I just can't ask our users to set up another monitor or another video card, or something like that. I can only make some improvement in our program which I still don't know how to do it. ;P

                    E Offline
                    E Offline
                    Eugen Podsypalnikov
                    wrote on last edited by
                    #11

                    Probably the function can not understand the driver name under Win2k and try to find a printer with the name pointer NULL... :)

                    virtual void BeHappy() = 0;

                    modified on Tuesday, March 30, 2010 4:58 AM

                    H 1 Reply Last reply
                    0
                    • E Eugen Podsypalnikov

                      Probably the function can not understand the driver name under Win2k and try to find a printer with the name pointer NULL... :)

                      virtual void BeHappy() = 0;

                      modified on Tuesday, March 30, 2010 4:58 AM

                      H Offline
                      H Offline
                      hanq_38910130
                      wrote on last edited by
                      #12

                      Yes, I agree with your point. I found something on the internet which says it may be: * concerning issues about "video card", like "dualhead cards that use a single chipset" * or some "security risk" after win2k OS But for me, neither seems to be correct :(

                      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