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. loading dll second time giving error "A required resource was unavailable"

loading dll second time giving error "A required resource was unavailable"

Scheduled Pinned Locked Moved C / C++ / MFC
helpc++announcementlearning
27 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.
  • J Jochen Arndt

    The error is very probably in your DLL showing a dialog. Common sources are forgetting to release DCs and GDI objects.

    A Offline
    A Offline
    appollosputnik
    wrote on last edited by
    #5

    how can i release them manually. Please help me

    J 1 Reply Last reply
    0
    • A appollosputnik

      how can i release them manually. Please help me

      J Offline
      J Offline
      Jochen Arndt
      wrote on last edited by
      #6

      Do you have the source code? If not, you must contact the supplier of the DLL. If yes, you must check the code. If the code uses GetDC() somewhere, ensure that ReleaseDC() is called when the CDC is no longer used.

      A 1 Reply Last reply
      0
      • J Jochen Arndt

        Do you have the source code? If not, you must contact the supplier of the DLL. If yes, you must check the code. If the code uses GetDC() somewhere, ensure that ReleaseDC() is called when the CDC is no longer used.

        A Offline
        A Offline
        appollosputnik
        wrote on last edited by
        #7

        I am releasing it in the ::OnDestroy() fucntion of the view

        J 1 Reply Last reply
        0
        • A appollosputnik

          I am releasing it in the ::OnDestroy() fucntion of the view

          J Offline
          J Offline
          Jochen Arndt
          wrote on last edited by
          #8

          That's one place where you release a DC (in your app or the DLL?). If not in the DLL, you should concentrate on the DLL code. There may be multiple places in your code using DCs and GDI objects. If you miss any release call or forget to de-select GDI objcets out of context, the error may occcur. I can't really help you without seeing the code. I can only guess. Check this example code:

          CDC *pDC = GetDC();
          CPen NewPen(PS_SOLID, 0, m_Color);
          CPen *pOldPen = pDC->SelectObject(&NewPen);
          CFont *pOldFont = pDC->SelectObject(m_pMyFont);
          // do something with the DC
          ...
          // Don't forget to select the old objects
          pDC->SelectObject(pOldFont);
          pDC->SelectObject(pOldPen);
          // Don't forget to release the DC
          ReleaseDC(pDC);

          A 1 Reply Last reply
          0
          • J Jochen Arndt

            That's one place where you release a DC (in your app or the DLL?). If not in the DLL, you should concentrate on the DLL code. There may be multiple places in your code using DCs and GDI objects. If you miss any release call or forget to de-select GDI objcets out of context, the error may occcur. I can't really help you without seeing the code. I can only guess. Check this example code:

            CDC *pDC = GetDC();
            CPen NewPen(PS_SOLID, 0, m_Color);
            CPen *pOldPen = pDC->SelectObject(&NewPen);
            CFont *pOldFont = pDC->SelectObject(m_pMyFont);
            // do something with the DC
            ...
            // Don't forget to select the old objects
            pDC->SelectObject(pOldFont);
            pDC->SelectObject(pOldPen);
            // Don't forget to release the DC
            ReleaseDC(pDC);

            A Offline
            A Offline
            appollosputnik
            wrote on last edited by
            #9

            I am not able to delete the view it's crashing delete m_pNewView; It's crashing. how can I delete the view.????

            J 2 Replies Last reply
            0
            • A appollosputnik

              I am not able to delete the view it's crashing delete m_pNewView; It's crashing. how can I delete the view.????

              J Offline
              J Offline
              Jochen Arndt
              wrote on last edited by
              #10

              I'm sorry, but without knowing your code, I can't really help. Also, is there a relation to the original question, or is it a new one? If it is a new one, you should open a new question. Views are usually handled by the document class and the frame work. To close a view manually, the parent frame of the view must be closed.

              A 2 Replies Last reply
              0
              • J Jochen Arndt

                I'm sorry, but without knowing your code, I can't really help. Also, is there a relation to the original question, or is it a new one? If it is a new one, you should open a new question. Views are usually handled by the document class and the frame work. To close a view manually, the parent frame of the view must be closed.

                A Offline
                A Offline
                appollosputnik
                wrote on last edited by
                #11

                this is my view class of the dll [code] // MyView.cpp : implementation file // #include "stdafx.h" #include "DlgsViewDlg.h" #include "MyView.h" ////////////////////////////////////////////////////////////////////////// #include // Header File For Windows #include // Header File For Windows Math Library #include // Header File For Standard Input/Output #include // Header File For Variable Argument Routines #include // Header File For The OpenGL32 Library #include // Header File For The GLu32 Library #include // Header File For The Glaux Library //#include ///////////////////////////////////////////////////////////////////////// #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif #pragma comment (lib, "OpenGL32.lib") #pragma comment (lib, "glu32.lib") #define NOFPOINTSINARC 5 #define NSWEEP 60 #define DIB_HEADER_MARKER ((WORD) ('M' << 8) | 'B') #define WIDTHBYTES(bits) (((bits) + 31) / 32 * 4) ///////////////////////////////////////////////////////////////////////////// // CMyView typedef enum state { NOMOVE = 0, PAN , ZOOM, ROTATE } statemovement; struct vec3{ float x, y, z; }; GLfloat trans[3]; /* current translation */ GLfloat trans_axes[3]; GLfloat rot[3]; statemovement STATE; GLfloat PI = 4 * atan(1.0); //////////////////////// GLuint base; // Base Display List For The Font Set GLfloat cnt1; // 1st Counter Used To Move Text & For Coloring GLfloat cnt2; // 2nd Counter Used To Move Text & For Coloring bool keys[256]; // Array Used For The Keyboard Routine bool active=TRUE; // Window Active Flag Set To TRUE By Default bool fullscreen=TRUE; // Fullscreen Flag Set To Fullscreen Mode By Default //////////////////////// double CMyView::left = -10.0f; double CMyView::right = 10.0f; double CMyView::top = -10.0f; double CMyView::bottom = 10.0f; double CMyView::znear = -100.0f; double CMyView::zfar = 100.0f; static float zoomFactor = 1.0f; static bool colorChange=false; static double iRed=1.0f; static double iGreen=0.0f; static double iBlue=0.0f; IMPLEMENT_DYNCREATE(CMyView, CView) CMyView::CMyView() :object(0) ,startPoints(NULL) ,endPoints(NULL) ,arcs(NULL) ,pan(false) ,zoom(false) ,rotate(false) ,x(NULL) ,y(NULL) ,allX(NULL) ,allY(NULL) ,allZ(NULL) ,cx(0.0) ,cy(0.0) ,cz(0.0) ,isModel(false) { trans[0] = 0.0f; trans[1] =

                1 Reply Last reply
                0
                • J Jochen Arndt

                  I'm sorry, but without knowing your code, I can't really help. Also, is there a relation to the original question, or is it a new one? If it is a new one, you should open a new question. Views are usually handled by the document class and the frame work. To close a view manually, the parent frame of the view must be closed.

                  A Offline
                  A Offline
                  appollosputnik
                  wrote on last edited by
                  #12

                  this is my dialog class of the dll.......In the view class you can see I have done ReleaseDC everywhere. Check if could help resolve this error. Thanks a lot for your help. [code] // DlgsViewDlg.cpp : implementation file // #include "stdafx.h" #include "DlgsView.h" #include "DlgsViewDlg.h" #include "MyView.h" #ifdef _DEBUG #define new DEBUG_NEW #endif static UINT BASED_CODE indicators[] = { ID_INDICATOR_NISH, ID_INDICATOR_TIME }; // CAboutDlg dialog used for App About class CAboutDlg : public CDialog { public: CAboutDlg(); // Dialog Data enum { IDD = IDD_ABOUTBOX }; protected: virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support // Implementation protected: DECLARE_MESSAGE_MAP() }; CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD) { } void CAboutDlg::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); } BEGIN_MESSAGE_MAP(CAboutDlg, CDialog) END_MESSAGE_MAP() // CDlgsViewDlg dialog CString CDlgsViewDlg::fileName = L""; CDlgsViewDlg::CDlgsViewDlg(CString filename, CWnd* pParent /*=NULL*/) : CDialog(CDlgsViewDlg::IDD, pParent) { m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME); fileName = filename; } CDlgsViewDlg::~CDlgsViewDlg() { delete m_pNewView; } void CDlgsViewDlg::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); } BEGIN_MESSAGE_MAP(CDlgsViewDlg, CDialog) ON_WM_SYSCOMMAND() ON_WM_PAINT() ON_WM_QUERYDRAGICON() ON_COMMAND(ID_FILE_NEW,OnFileNew) //}}AFX_MSG_MAP ON_COMMAND(ID_UTILITY_EXIT, &CDlgsViewDlg::OnUtilityExit) ON_COMMAND(ID_EXIT, &CDlgsViewDlg::OnExit) ON_COMMAND(ID_UTILITY_LOADPROFILE, &CDlgsViewDlg::OnUtilityLoadprofile) ON_COMMAND(ID_UTILITY_GENERATESURFACE, &CDlgsViewDlg::OnUtilityGeneratesurface) ON_COMMAND(ID_UTILITY_DRAW1, &CDlgsViewDlg::OnUtilityDraw1) ON_COMMAND(ID_UTILITY_DRAW3, &CDlgsViewDlg::OnUtilityDraw3) ON_COMMAND(ID_UTILITY_SAVEASIMAGE, &CDlgsViewDlg::OnUtilitySaveasimage) ON_COMMAND(ID_VIEW_WIREFRAME, &CDlgsViewDlg::OnViewWireframe) ON_COMMAND(ID_VIEW_SHADE, &CDlgsViewDlg::OnViewShade) ON_COMMAND(ID_VIEW_NORMAL, &CDlgsViewDlg::OnViewNormal) ON_COMMAND(ID_VIEW_PAN, &CDlgsViewDlg::OnViewPan) ON_COMMAND(ID_VIEW_ZOOM, &CDlgsViewDlg::OnViewZoom) ON_COMMAND(ID_VIEW_ROTATE, &CDlgsViewDlg::OnViewRotate) ON_COMMAND(ID_VIEW_TOPVIEW, &CDlgsViewDlg::OnViewTopview) ON_COMMAND(ID_VIEW_FRONTVIEW, &CDlgsViewDlg::OnViewFrontview) ON_COMMAND(ID_VIEW_SIDEVIEW, &CDlgsViewDlg::OnViewSideview) ON_COMMAND(ID

                  1 Reply Last reply
                  0
                  • A appollosputnik

                    I am not able to delete the view it's crashing delete m_pNewView; It's crashing. how can I delete the view.????

                    J Offline
                    J Offline
                    Jochen Arndt
                    wrote on last edited by
                    #13

                    I'll reply again to this message. You have added too much unformatted code to your other posts (therefore somebody has donevoted them).

                    1. You should use the 'code' button on top of the CP message input window to format the selection as C++ code.
                    2. You should limit the amount of code. Nobody here will step through too many lines.

                    Regarding the CView deletion: Why do you use a CView derived class within a CDialog? Using a CWnd derived class as user control should solve your problem. CView classes are used with the document view model and expect to have a frame window as parent.

                    A 1 Reply Last reply
                    0
                    • J Jochen Arndt

                      I'll reply again to this message. You have added too much unformatted code to your other posts (therefore somebody has donevoted them).

                      1. You should use the 'code' button on top of the CP message input window to format the selection as C++ code.
                      2. You should limit the amount of code. Nobody here will step through too many lines.

                      Regarding the CView deletion: Why do you use a CView derived class within a CDialog? Using a CWnd derived class as user control should solve your problem. CView classes are used with the document view model and expect to have a frame window as parent.

                      A Offline
                      A Offline
                      appollosputnik
                      wrote on last edited by
                      #14

                      your answer is not a solution. try to solve the problem.

                      L J 2 Replies Last reply
                      0
                      • A appollosputnik

                        your answer is not a solution. try to solve the problem.

                        L Offline
                        L Offline
                        Lost User
                        wrote on last edited by
                        #15

                        sujandasmahapatra wrote:

                        your answer is not a solution

                        Being rude is not a solution either.

                        Why is common sense not common? Never argue with an idiot. They will drag you down to their level where they are an expert. Sometimes it takes a lot of work to be lazy Individuality is fine, as long as we do it together - F. Burns

                        1 Reply Last reply
                        0
                        • A appollosputnik

                          your answer is not a solution. try to solve the problem.

                          J Offline
                          J Offline
                          Jochen Arndt
                          wrote on last edited by
                          #16

                          sujandasmahapatra wrote:

                          your answer is not a solution

                          The solution is to not use a CView derived class as a client window of a dialog.

                          sujandasmahapatra wrote:

                          try to solve the problem

                          No. You must solve the problem. It's not my job. The only thing I can do, is to help you.

                          L A C 3 Replies Last reply
                          0
                          • J Jochen Arndt

                            sujandasmahapatra wrote:

                            your answer is not a solution

                            The solution is to not use a CView derived class as a client window of a dialog.

                            sujandasmahapatra wrote:

                            try to solve the problem

                            No. You must solve the problem. It's not my job. The only thing I can do, is to help you.

                            L Offline
                            L Offline
                            Lost User
                            wrote on last edited by
                            #17

                            5 for your patience.

                            Why is common sense not common? Never argue with an idiot. They will drag you down to their level where they are an expert. Sometimes it takes a lot of work to be lazy Individuality is fine, as long as we do it together - F. Burns

                            1 Reply Last reply
                            0
                            • J Jochen Arndt

                              sujandasmahapatra wrote:

                              your answer is not a solution

                              The solution is to not use a CView derived class as a client window of a dialog.

                              sujandasmahapatra wrote:

                              try to solve the problem

                              No. You must solve the problem. It's not my job. The only thing I can do, is to help you.

                              A Offline
                              A Offline
                              appollosputnik
                              wrote on last edited by
                              #18

                              i wanted a view on the dialog. so i derived from cview and created the view in the dialog. 1st time everything is coming fine. but without closing the client application if i try to launch again the dialog then it's giving error. Please give me some suggestion how can i get rid of it. Thanks

                              J 1 Reply Last reply
                              0
                              • A appollosputnik

                                i wanted a view on the dialog. so i derived from cview and created the view in the dialog. 1st time everything is coming fine. but without closing the client application if i try to launch again the dialog then it's giving error. Please give me some suggestion how can i get rid of it. Thanks

                                J Offline
                                J Offline
                                Jochen Arndt
                                wrote on last edited by
                                #19

                                The problem is that the view is not properly closed. But even if you would close it properly, there will be other problems. A CView is not designed to be a child view of a dialog. It must be a child of a CFrameWnd derived class. Change your CView class to be based on a CWnd.

                                1 Reply Last reply
                                0
                                • J Jochen Arndt

                                  sujandasmahapatra wrote:

                                  your answer is not a solution

                                  The solution is to not use a CView derived class as a client window of a dialog.

                                  sujandasmahapatra wrote:

                                  try to solve the problem

                                  No. You must solve the problem. It's not my job. The only thing I can do, is to help you.

                                  C Offline
                                  C Offline
                                  Chris Meech
                                  wrote on last edited by
                                  #20

                                  And demonstrating a great deal of restraint as well. Good for you. :)

                                  Chris Meech I am Canadian. [heard in a local bar] In theory there is no difference between theory and practice. In practice there is. [Yogi Berra] posting about Crystal Reports here is like discussing gay marriage on a catholic church’s website.[Nishant Sivakumar]

                                  A 1 Reply Last reply
                                  0
                                  • C Chris Meech

                                    And demonstrating a great deal of restraint as well. Good for you. :)

                                    Chris Meech I am Canadian. [heard in a local bar] In theory there is no difference between theory and practice. In practice there is. [Yogi Berra] posting about Crystal Reports here is like discussing gay marriage on a catholic church’s website.[Nishant Sivakumar]

                                    A Offline
                                    A Offline
                                    appollosputnik
                                    wrote on last edited by
                                    #21

                                    wherever i used GetDc() i have done ReleaseDC...Still the error is coming, "A required resource was unavailable". Please help me to resolve this. why 2nd time my application is not launching.? please tell whatelse I need to do ? Thanks

                                    L 1 Reply Last reply
                                    0
                                    • J Jochen Arndt

                                      The error is very probably in your DLL showing a dialog. Common sources are forgetting to release DCs and GDI objects.

                                      A Offline
                                      A Offline
                                      appollosputnik
                                      wrote on last edited by
                                      #22

                                      Can u give me your mail id so that I can send you the project. Can u help me ?

                                      J 1 Reply Last reply
                                      0
                                      • A appollosputnik

                                        wherever i used GetDc() i have done ReleaseDC...Still the error is coming, "A required resource was unavailable". Please help me to resolve this. why 2nd time my application is not launching.? please tell whatelse I need to do ? Thanks

                                        L Offline
                                        L Offline
                                        Lost User
                                        wrote on last edited by
                                        #23

                                        sujandasmahapatra wrote:

                                        please tell whatelse I need to do ?

                                        You probably need to do some serious debugging, firstly to find out why and where this message is produced.

                                        Unrequited desire is character building. OriginalGriff I'm sitting here giving you a standing ovation - Len Goodman

                                        A 1 Reply Last reply
                                        0
                                        • A appollosputnik

                                          Can u give me your mail id so that I can send you the project. Can u help me ?

                                          J Offline
                                          J Offline
                                          Jochen Arndt
                                          wrote on last edited by
                                          #24

                                          Sorry, but I don't want to write your code. I - and most others here - just enjoy helping. The design of your application is definitely broken. That is your problem. Tampering with the existing code is the wrong way. Reconsider the design. Read about dialogs hosting user controls.

                                          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