Callback umbauen in MFC

Wu-mc

Mitglied
Hallo Forum,

ich hoffe der Titel ist richtig und zwar hab ich eine MFC Dialoganwendung unter Windows CE und sollte damit eine Hardware ansteuern. Nun habe ich hier ein Demoquellcode für die Ansteuerung:

Code:
BOOL CALLBACK TweakDialogProc(HWND   hwndDlg, // handle to the dialog box
							  UINT   uMsg,    // message
							  WPARAM wParam,  // first message parameter
							  LPARAM lParam)  // second message parameter
{
	switch(uMsg)
	{
    case WM_INITDIALOG:
		InitCardReader(hwndDlg);
		SetDlgItemText(hwndDlg, IDC_STATIC_READERINFO, GetReaderInfo());
		return TRUE;  
	case WM_DEVICE_NOTIFY:
		if(wParam == DNS_SCARD) // may occure any time after InitCardReader()
			ShowSC(hwndDlg, (SlotInfo*)lParam);	
		else if(wParam == DNS_MCARD) // occures only on request
		{
			fReading = FALSE;
			SetDlgItemText(hwndDlg, IDC_BUTTON_READ_MAG_CARD, L"Read Card");
			ShowMC(hwndDlg, (MagCard*)lParam);
		}
		break;
    case WM_COMMAND:
		switch (LOWORD(wParam))
		{
		case IDC_BUTTON_READ_MAG_CARD:
			if(fReading)
			{
				fReading = FALSE;
				SetDlgItemText(hwndDlg, IDC_BUTTON_READ_MAG_CARD, L"Read Card");
				SetDlgItemText(hwndDlg, IDC_STATIC_MAGINFO, L"MagCard reading canceled");
				CancelMagCard();
			}
			else
			{
				fReading = TRUE;
				SetDlgItemText(hwndDlg, IDC_BUTTON_READ_MAG_CARD, L"Cancel");
				SetDlgItemText(hwndDlg, IDC_STATIC_MAGINFO, L"Waiting for MagCard...");
				ReadMagCard();
			}
			break;
        case IDCANCEL:
			EndDialog(hwndDlg, 0);
			StopCardReader();
			break;
		}
		return TRUE;
	}
	return FALSE;
}

Wie bekomm ich das jetzt in meiner MFC Anwendung hin?
Also WM_INITDIALOG geht ja noch, ist halt OnInitDialog(), nur weiß ich nicht genau wie ich ein Handle auf mein Fenster bekomme, also für die Funktion InitCardReader(hwndDlg).
Das WM_COMMAND und IDCANCEL sind ja einfach die OnButton() oder OnCancel() Funktionen, aber wie bekomme ich dieses WM_DEVICE_NOTIFY hin?

Vielen Dank im Voraus.
Grüße

Niko Will
 
kannst du mir das etwas genauer erklären? MSDN gibt für die Funktion nicht arg viel her.

Kann das vielleicht irgendwie hiermit zusammen hängen?

Code:
BEGIN_MESSAGE_MAP(CMobiCashDlg, CDialog)
	//{{AFX_MSG_MAP(CMobiCashDlg)
	ON_BN_CLICKED(IDC_ANMELDEN1, OnAnmelden1)
	ON_BN_CLICKED(IDC_ANMELDEN2, OnAnmelden2)
	ON_BN_CLICKED(IDC_ANMELDEN3, OnAnmelden3)
	ON_BN_CLICKED(IDC_OK, OnWeiter)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()
 
Okay, war vielleicht etwas zu voreillig, hab jetzt hier im Forum einiges gefunden zu PreTranslateMessage. Kann mir nun noch jemand sagen wie ich ein Handle aufs eigene Fenster bekomme, damit ich den an die Funktion weiter geben kann?

Dir schon mal vielen Dank für den Denkanstoß!
 
Zurück