How to get the HWND of mfc DialogBox for .Net
-
Can you explain it in detail ?
Prasad Notifier using ATL | Operator new[],delete[][^]
-
Can you explain it in detail ?
Prasad Notifier using ATL | Operator new[],delete[][^]
-
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!
Doesn't
m_hWnd
member ofCDialog
(CWnd
to be precise) serve your purpose ?Prasad Notifier using ATL | Operator new[],delete[][^]
-
Doesn't
m_hWnd
member ofCDialog
(CWnd
to be precise) serve your purpose ?Prasad Notifier using ATL | Operator new[],delete[][^]
-
Before I use it in Visual Studio 6.0 seems to be alright. But in VS .Net, it seems to be not. Please help!
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[][^]
-
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[][^]
-
Coding: if( FAILED( hr = g_pJoystick->SetCooperativeLevel(m_hWnd, DISCL_NONEXCLUSIVE |DISCL_BACKGROUND ) ) ) return hr; error C2065: 'm_hWnd' : undeclared identifier Please help!
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[][^]
-
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[][^]
-
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[][^]
-
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[][^]
-
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!
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[][^]
-
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[][^]
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!
-
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!
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[][^]
-
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[][^]
-
I got this one now! error C2664: 'IDirectInputDevice8A::SetCooperativeLevel' : cannot convert parameter 1 from 'CWnd *' to 'HWND' Please help!
You can get its handle by type-casting it. like
SetCooperativeLevel((HWND)(AfxGetMainWnd()),..);
Prasad Notifier using ATL | Operator new[],delete[][^]
-
You can get its handle by type-casting it. like
SetCooperativeLevel((HWND)(AfxGetMainWnd()),..);
Prasad Notifier using ATL | Operator new[],delete[][^]
-
I got this one now! error C2664: 'IDirectInputDevice8A::SetCooperativeLevel' : cannot convert parameter 1 from 'CWnd *' to 'HWND' Please help!
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 ) ) )
-
You can get its handle by type-casting it. like
SetCooperativeLevel((HWND)(AfxGetMainWnd()),..);
Prasad Notifier using ATL | Operator new[],delete[][^]
Try
SetCooperativeLevel((HWND)*AfxGetMainWnd(),..);
;)
-
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 ) ) )