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. How to get the HWND of mfc DialogBox for .Net

How to get the HWND of mfc DialogBox for .Net

Scheduled Pinned Locked Moved C / C++ / MFC
csharpc++helptutorialquestion
37 Posts 3 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.
  • L LaHaHa

    I would like to how to get the HWND of mfc DialogBox for .Net? Please help!

    P Offline
    P Offline
    prasad_som
    wrote on last edited by
    #2

    Can you explain it in detail ?

    Prasad Notifier using ATL | Operator new[],delete[][^]

    L 1 Reply Last reply
    0
    • P prasad_som

      Can you explain it in detail ?

      Prasad Notifier using ATL | Operator new[],delete[][^]

      L Offline
      L Offline
      LaHaHa
      wrote on last edited by
      #3

      I would like to use SetCooperativeLevel function in my mfc dialogbox program. It needs the HWND parameter. How can I get this HWND? Please help!

      P 1 Reply Last reply
      0
      • L LaHaHa

        I would like to use SetCooperativeLevel function in my mfc dialogbox program. It needs the HWND parameter. How can I get this HWND? Please help!

        P Offline
        P Offline
        prasad_som
        wrote on last edited by
        #4

        Doesn't m_hWnd member of CDialog(CWnd to be precise) serve your purpose ?

        Prasad Notifier using ATL | Operator new[],delete[][^]

        L 1 Reply Last reply
        0
        • P prasad_som

          Doesn't m_hWnd member of CDialog(CWnd to be precise) serve your purpose ?

          Prasad Notifier using ATL | Operator new[],delete[][^]

          L Offline
          L Offline
          LaHaHa
          wrote on last edited by
          #5

          Before I use it in Visual Studio 6.0 seems to be alright. But in VS .Net, it seems to be not. Please help!

          P 1 Reply Last reply
          0
          • L LaHaHa

            Before I use it in Visual Studio 6.0 seems to be alright. But in VS .Net, it seems to be not. Please help!

            P Offline
            P Offline
            prasad_som
            wrote on last edited by
            #6

            Again, you are not giving complete information. - Give code, which is failing for you. - What error its giving ? It doesn't help you, if not able to make us understand your problem.

            Prasad Notifier using ATL | Operator new[],delete[][^]

            L 1 Reply Last reply
            0
            • P prasad_som

              Again, you are not giving complete information. - Give code, which is failing for you. - What error its giving ? It doesn't help you, if not able to make us understand your problem.

              Prasad Notifier using ATL | Operator new[],delete[][^]

              L Offline
              L Offline
              LaHaHa
              wrote on last edited by
              #7

              Coding: if( FAILED( hr = g_pJoystick->SetCooperativeLevel(m_hWnd, DISCL_NONEXCLUSIVE |DISCL_BACKGROUND ) ) ) return hr; error C2065: 'm_hWnd' : undeclared identifier Please help!

              P 1 Reply Last reply
              0
              • L LaHaHa

                Coding: if( FAILED( hr = g_pJoystick->SetCooperativeLevel(m_hWnd, DISCL_NONEXCLUSIVE |DISCL_BACKGROUND ) ) ) return hr; error C2065: 'm_hWnd' : undeclared identifier Please help!

                P Offline
                P Offline
                prasad_som
                wrote on last edited by
                #8

                Can you show you dialog class declaration ? Because, if its Cdialog derived class, then this error should not come.

                Prasad Notifier using ATL | Operator new[],delete[][^]

                L 1 Reply Last reply
                0
                • P prasad_som

                  Can you show you dialog class declaration ? Because, if its Cdialog derived class, then this error should not come.

                  Prasad Notifier using ATL | Operator new[],delete[][^]

                  L Offline
                  L Offline
                  LaHaHa
                  wrote on last edited by
                  #9

                  It is CDialog derived class! I use m_hwnd before in VS 6.0. Please help!

                  P 1 Reply Last reply
                  0
                  • L LaHaHa

                    It is CDialog derived class! I use m_hwnd before in VS 6.0. Please help!

                    P Offline
                    P Offline
                    prasad_som
                    wrote on last edited by
                    #10

                    Oh dear. I'm really not able to understand, why you are getting this problem. Now, pass first parameter this instead of m_hWnd. To avoid compile error.

                    Prasad Notifier using ATL | Operator new[],delete[][^]

                    L 1 Reply Last reply
                    0
                    • P prasad_som

                      Oh dear. I'm really not able to understand, why you are getting this problem. Now, pass first parameter this instead of m_hWnd. To avoid compile error.

                      Prasad Notifier using ATL | Operator new[],delete[][^]

                      L Offline
                      L Offline
                      LaHaHa
                      wrote on last edited by
                      #11

                      I change the m_hWnd with this. if( FAILED( hr = g_pJoystick->SetCooperativeLevel(this, DISCL_NONEXCLUSIVE | DISCL_BACKGROUND ) ) ) return error C2673: 'InitDirectInput' : global functions do not have 'this' pointers I got this error! Please help!

                      P 1 Reply Last reply
                      0
                      • L LaHaHa

                        I change the m_hWnd with this. if( FAILED( hr = g_pJoystick->SetCooperativeLevel(this, DISCL_NONEXCLUSIVE | DISCL_BACKGROUND ) ) ) return error C2673: 'InitDirectInput' : global functions do not have 'this' pointers I got this error! Please help!

                        P Offline
                        P Offline
                        prasad_som
                        wrote on last edited by
                        #12

                        Dear,dear.

                        LaHaHa wrote:

                        error C2673: 'InitDirectInput' : global functions do not have 'this' pointers

                        I was insisting on complete information from start of thread. Again , this error indicates that, code you have pasted is of a global function. And obviously you could not use this pointer there. I was assuming this code is used in one of your dialog function. For using it through global function, you need to have instance of dialog class. Which you can pass as first parameter of said function. Otherwise, post code of function body of InitDirectInput.

                        Prasad Notifier using ATL | Operator new[],delete[][^]

                        L 1 Reply Last reply
                        0
                        • P prasad_som

                          Dear,dear.

                          LaHaHa wrote:

                          error C2673: 'InitDirectInput' : global functions do not have 'this' pointers

                          I was insisting on complete information from start of thread. Again , this error indicates that, code you have pasted is of a global function. And obviously you could not use this pointer there. I was assuming this code is used in one of your dialog function. For using it through global function, you need to have instance of dialog class. Which you can pass as first parameter of said function. Otherwise, post code of function body of InitDirectInput.

                          Prasad Notifier using ATL | Operator new[],delete[][^]

                          L Offline
                          L Offline
                          LaHaHa
                          wrote on last edited by
                          #13

                          In fact that the function code is only like this: HRESULT InitDirectInput() { HRESULT hr; if( FAILED( hr = DirectInput8Create( GetModuleHandle(NULL), DIRECTINPUT_VERSION, IID_IDirectInput8, (VOID**)&g_pDI, NULL ) ) ) return hr; if( FAILED( hr = g_pDI->EnumDevices( DI8DEVCLASS_GAMECTRL, EnumJoysticksCallback, NULL, DIEDFL_ATTACHEDONLY ) ) ) return hr; if( NULL == g_pJoystick ) { MessageBox( NULL, TEXT("Joystick not found. The sample will now exit."), TEXT("DirectInput Sample"), MB_ICONERROR | MB_OK ); return 0; return S_OK; } if( FAILED( hr = g_pJoystick->SetDataFormat( &c_dfDIJoystick2 ) ) ) return hr; if( FAILED( hr = g_pJoystick->SetCooperativeLevel(this, DISCL_NONEXCLUSIVE | DISCL_BACKGROUND ) ) ) return hr; So how to solve this problem! Please help!

                          P 1 Reply Last reply
                          0
                          • L LaHaHa

                            In fact that the function code is only like this: HRESULT InitDirectInput() { HRESULT hr; if( FAILED( hr = DirectInput8Create( GetModuleHandle(NULL), DIRECTINPUT_VERSION, IID_IDirectInput8, (VOID**)&g_pDI, NULL ) ) ) return hr; if( FAILED( hr = g_pDI->EnumDevices( DI8DEVCLASS_GAMECTRL, EnumJoysticksCallback, NULL, DIEDFL_ATTACHEDONLY ) ) ) return hr; if( NULL == g_pJoystick ) { MessageBox( NULL, TEXT("Joystick not found. The sample will now exit."), TEXT("DirectInput Sample"), MB_ICONERROR | MB_OK ); return 0; return S_OK; } if( FAILED( hr = g_pJoystick->SetDataFormat( &c_dfDIJoystick2 ) ) ) return hr; if( FAILED( hr = g_pJoystick->SetCooperativeLevel(this, DISCL_NONEXCLUSIVE | DISCL_BACKGROUND ) ) ) return hr; So how to solve this problem! Please help!

                            P Offline
                            P Offline
                            prasad_som
                            wrote on last edited by
                            #14

                            Come on ! Where is dialog class instance ? If dialog is already invoked then use AfxGetMainWnd, to get its handle.

                            LaHaHa wrote:

                            if( FAILED( hr = g_pJoystick->SetCooperativeLevel(this, DISCL_NONEXCLUSIVE | DISCL_BACKGROUND ) ) ) return hr;

                            g_pJoystick->SetCooperativeLevel(AfxGetMainWnd(), DISCL_NONEXCLUSIVE | DISCL_BACKGROUND ) ) )

                            Prasad Notifier using ATL | Operator new[],delete[][^]

                            L 1 Reply Last reply
                            0
                            • P prasad_som

                              Come on ! Where is dialog class instance ? If dialog is already invoked then use AfxGetMainWnd, to get its handle.

                              LaHaHa wrote:

                              if( FAILED( hr = g_pJoystick->SetCooperativeLevel(this, DISCL_NONEXCLUSIVE | DISCL_BACKGROUND ) ) ) return hr;

                              g_pJoystick->SetCooperativeLevel(AfxGetMainWnd(), DISCL_NONEXCLUSIVE | DISCL_BACKGROUND ) ) )

                              Prasad Notifier using ATL | Operator new[],delete[][^]

                              L Offline
                              L Offline
                              LaHaHa
                              wrote on last edited by
                              #15

                              I got this one now! error C2664: 'IDirectInputDevice8A::SetCooperativeLevel' : cannot convert parameter 1 from 'CWnd *' to 'HWND' Please help!

                              P M 2 Replies Last reply
                              0
                              • L LaHaHa

                                I got this one now! error C2664: 'IDirectInputDevice8A::SetCooperativeLevel' : cannot convert parameter 1 from 'CWnd *' to 'HWND' Please help!

                                P Offline
                                P Offline
                                prasad_som
                                wrote on last edited by
                                #16

                                You can get its handle by type-casting it. like

                                SetCooperativeLevel((HWND)(AfxGetMainWnd()),..);

                                Prasad Notifier using ATL | Operator new[],delete[][^]

                                L M 2 Replies Last reply
                                0
                                • P prasad_som

                                  You can get its handle by type-casting it. like

                                  SetCooperativeLevel((HWND)(AfxGetMainWnd()),..);

                                  Prasad Notifier using ATL | Operator new[],delete[][^]

                                  L Offline
                                  L Offline
                                  LaHaHa
                                  wrote on last edited by
                                  #17

                                  I will try this, I will tell you the result later! Many thanks!

                                  1 Reply Last reply
                                  0
                                  • L LaHaHa

                                    I got this one now! error C2664: 'IDirectInputDevice8A::SetCooperativeLevel' : cannot convert parameter 1 from 'CWnd *' to 'HWND' Please help!

                                    M Offline
                                    M Offline
                                    Mark Salsbery
                                    wrote on last edited by
                                    #18

                                    You need to force it to use the overloaded (HWND) casting operator... For the main window's HWND: g_pJoystick->SetCooperativeLevel(*AfxGetMainWnd(), DISCL_NONEXCLUSIVE | DISCL_BACKGROUND ) ) ) For the window's HWND (if this is called within a CWnd-derived class): g_pJoystick->SetCooperativeLevel(*this, DISCL_NONEXCLUSIVE | DISCL_BACKGROUND ) ) ) Note the asterisks dereferencing the CWnd pointers. You can also use this: g_pJoystick->SetCooperativeLevel(AfxGetMainWnd()->GetSafeHwnd(), DISCL_NONEXCLUSIVE | DISCL_BACKGROUND ) ) ) or g_pJoystick->SetCooperativeLevel(GetSafeHwnd(), DISCL_NONEXCLUSIVE | DISCL_BACKGROUND ) ) )

                                    L 1 Reply Last reply
                                    0
                                    • P prasad_som

                                      You can get its handle by type-casting it. like

                                      SetCooperativeLevel((HWND)(AfxGetMainWnd()),..);

                                      Prasad Notifier using ATL | Operator new[],delete[][^]

                                      M Offline
                                      M Offline
                                      Mark Salsbery
                                      wrote on last edited by
                                      #19

                                      Try

                                      SetCooperativeLevel((HWND)*AfxGetMainWnd(),..);

                                      ;)

                                      1 Reply Last reply
                                      0
                                      • M Mark Salsbery

                                        You need to force it to use the overloaded (HWND) casting operator... For the main window's HWND: g_pJoystick->SetCooperativeLevel(*AfxGetMainWnd(), DISCL_NONEXCLUSIVE | DISCL_BACKGROUND ) ) ) For the window's HWND (if this is called within a CWnd-derived class): g_pJoystick->SetCooperativeLevel(*this, DISCL_NONEXCLUSIVE | DISCL_BACKGROUND ) ) ) Note the asterisks dereferencing the CWnd pointers. You can also use this: g_pJoystick->SetCooperativeLevel(AfxGetMainWnd()->GetSafeHwnd(), DISCL_NONEXCLUSIVE | DISCL_BACKGROUND ) ) ) or g_pJoystick->SetCooperativeLevel(GetSafeHwnd(), DISCL_NONEXCLUSIVE | DISCL_BACKGROUND ) ) )

                                        L Offline
                                        L Offline
                                        LaHaHa
                                        wrote on last edited by
                                        #20

                                        I have tried all, the result are *this and GetSafeHwnd() will get error *AfxGetMainWnd() AfxGetMainWnd()->GetSafeHwnd() both without error, but it will get a E_HANDLE after running the SetCooperativeLevel(...). Please help!

                                        M 1 Reply Last reply
                                        0
                                        • L LaHaHa

                                          I have tried all, the result are *this and GetSafeHwnd() will get error *AfxGetMainWnd() AfxGetMainWnd()->GetSafeHwnd() both without error, but it will get a E_HANDLE after running the SetCooperativeLevel(...). Please help!

                                          M Offline
                                          M Offline
                                          Mark Salsbery
                                          wrote on last edited by
                                          #21

                                          I looked back through all your posts and I didn't see where you are making the call from. Can you post the entire function that includes the call to SetCooperativeLevel()?

                                          LaHaHa wrote:

                                          I have tried all, the result are *this and GetSafeHwnd() will get error

                                          Are you getting compiler error or runtime error?

                                          L 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