m_hHookOldCbtFilter

kerian

Erfahrenes Mitglied
Ich habe mir eine Registerkartensteuerung-Steuerung prg.
Sie funktioniert soweit. Wollte jetzt die dritte Karte bearbeiten, und
muss feststellen das ich ein Fehler bekomme. Da ich noch nicht so
bewandert in MFC bin krieg ich das nicht raus, wo ran es liegt!

Will ich eine Member-Variable eines Steuerelementes anlegen
bleibt er beim ASSERT in der Funktion stehn HILFE :(
Code:
void AFXAPI AfxHookWindowCreate(CWnd* pWnd)
{
	_AFX_THREAD_STATE* pThreadState = _afxThreadState.GetData();
	if (pThreadState->m_pWndInit == pWnd)
		return;

	if (pThreadState->m_hHookOldCbtFilter == NULL)
	{
		pThreadState->m_hHookOldCbtFilter = ::SetWindowsHookEx(WH_CBT,
			_AfxCbtFilterHook, NULL, ::GetCurrentThreadId());
		if (pThreadState->m_hHookOldCbtFilter == NULL)
			AfxThrowMemoryException();
	}
	ASSERT(pThreadState->m_hHookOldCbtFilter != NULL);
	ASSERT(pWnd != NULL);
==>	ASSERT(pWnd->m_hWnd == NULL);   // only do once

	ASSERT(pThreadState->m_pWndInit == NULL);   // hook not already in progress
	pThreadState->m_pWndInit = pWnd;
}

Ich habe schon einiges probiert aber noch kein Erfolg gehabt:(
 
Code:
ASSERT(pWnd->m_hWnd == NULL);   // only do once
Hm, das einzige Hilfreiche, was mir einfällt, ist, dass pWnd existiert, noch nicht created sein kann, da Hwnd==0. Aber da bist du sicher schon selbst draufgekommen, oder?
 
Jo das habe ich auch schon rausbekommen!
Ich kann die Steuerelemente im Dielag plazieren, dann funktioniert noch alles.
Wenn ich jetzt eine Membervariable anlege und starte, bleibt er genau da stehn !

Das ganze macht er nur bei einer Registerkarete die anderen funktionieren!
Code:
void CGR2Tab3::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CGR2Tab3)
	DDX_Control(pDX, IDC_LIST2, m_listealarm);
	//}}AFX_DATA_MAP
}

Damit kommt er nicht klar! wenn ich das
Code:
DDX_Control(pDX, IDC_LIST2, m_listealarm);
raus nehme geht . funktioniert wieder. Aber woran ligt das?
 
Zuletzt bearbeitet:
Hallo zusammen,

ich habe den Fehler, muss CGR2Tab4 cPg4; heißen.
Danke nochmals für eure Zeit.




Code:
--------------------------------------------------------------------------------
class CGR2Reg : public CDialog
{
// Konstruktion
public:
CGR2Reg(CWnd* pParent = NULL); // Standardkonstruktor

// Dialogfelddaten
//{{AFX_DATA(CGR2Reg)
enum { IDD = IDD_GR2_TAB };
CTabCtrl m_tap_gr2;
//}}AFX_DATA
CGR2Tab1 cPg1;
CGR2Tab2 cPg2;
CGR2Tab3 cPg3;
CGR2Tab3 cPg4;
BOOL DAO35Installed();
 

Neue Beiträge

Zurück