tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
4
ZUGRIFFE
623
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Wu-mc Wu-mc ist offline Mitglied Silber
    Registriert seit
    Nov 2005
    Beiträge
    75
    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 :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    
    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
     

  2. #2
    langer1801 langer1801 ist offline Mitglied Platin
    Registriert seit
    Jun 2005
    Ort
    Bad Arolsen (Hessen)
    Beiträge
    556
    Ich würde PreTranslateMessage nehmen und die Meldung abfangen.

    Mfg

    langer
     

  3. #3
    Wu-mc Wu-mc ist offline Mitglied Silber
    Registriert seit
    Nov 2005
    Beiträge
    75
    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 :
    1
    2
    3
    4
    5
    6
    7
    8
    
    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()
     

  4. #4
    Wu-mc Wu-mc ist offline Mitglied Silber
    Registriert seit
    Nov 2005
    Beiträge
    75
    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ß!
     

  5. #5
    Squeegee Squeegee ist offline Mitglied Silber
    Registriert seit
    Oct 2005
    Beiträge
    53
    Hi,
    nen Handle bekommst du so:

    HWND MyHandle = this->GetSafeHwnd();

    Gruß Squeegee
     

Ähnliche Themen

  1. Blätterfunktion umbauen?
    Von louS im Forum PHP
    Antworten: 15
    Letzter Beitrag: 21.10.09, 14:41
  2. Navigation umbauen für IE`s
    Von Peter Klein im Forum CSS
    Antworten: 3
    Letzter Beitrag: 19.07.08, 22:59
  3. string umbauen
    Von Thomasio im Forum C/C++
    Antworten: 4
    Letzter Beitrag: 12.03.07, 17:12
  4. Navigationsmenü umbauen
    Von Romsl im Forum Javascript & Ajax
    Antworten: 10
    Letzter Beitrag: 05.04.06, 12:39
  5. Crossoverkabel umbauen
    Von Dickerchen im Forum Netzwerke
    Antworten: 3
    Letzter Beitrag: 06.04.04, 21:27