String von XXXApp nach XXXDlg via SendMessage = MÜLL



  • Hallo,

    die Handscannereingabe klappt jetzt so wies sein soll, stehe aber nun vor folgendem Problem:

    In der XXXApp Klasse ist die

    ProcessMessageFilter
    

    Funktion und soll den String m_strXXX via

    SendMessage
    

    ans MainDialogWindow senden.

    Nun ist ja bekannt daß Pointer nicht zwingend via SendMessage gesendet werden sollten (können), da beim Empfang nur Müll drinsteht. WM_COPYDATA ist ja eher für verschiedene Prozsse bzw. Applikationen da und trifft bei mir ja nicht zu.

    Wie vermeide ich den Müllinhalt auf Empfängerseite? Geht da nur WM_COPYDATA zuverlässig?

    Danke.


  • Mod

    Per SendMessage kannst Du innerhalb des selben Prozesses versenden was Du willst. Da wird aber auch nichts zu "Müll"!



  • Ok dann mit Code:

    BOOL CXXXApp::ProcessMessageFilter(int code, LPMSG lpMsg)
    {
    	// TODO: Fügen Sie hier Ihren spezialisierten Code ein, und/oder rufen Sie die Basisklasse auf.
    	CString strTemp = "";
    
    	if(lpMsg->message == WM_KEYDOWN)
    	{
    		if(lpMsg->wParam == VK_RETURN && m_bHandscannerAktiv)
    		{	
    			memset(&m_chScanValue, 0, sizeof(m_strScanBuffer));
    			m_hwndMainDialog = m_pMainWnd->GetSafeHwnd();
    			SendMessage (m_hwndMainDialog, WMU_SCANNER, NULL, (LPARAM) &m_chScanValue);		
    			m_bHandscannerAktiv = FALSE;
             }
    

    So, mach ich nun im Debug Mode einen Haltepunkt hier, sehe ich in

    m_chScanValue
    

    "schlechtes Ptr" in

    m_strScanBuffer
    

    den korrekten gescannten Wert, und in der Aufruffunktion

    LRESULT XXXDlg::ScannerEingabe(WPARAM wParam, LPARAM lParam)
    {
    
    return true;
    }
    

    bei lParam einen longwert und als &lParam steht Müll drin.


Anmelden zum Antworten