Problem mit Schaltflächen im nichtmodalen Dlg



  • MFK schrieb:

    Wie sieht der Callstack im Debugger beim unerwünschten Aufruf aus?

    Er findet nichts, vorausgesetzt ich mache es so richtig (Debugmodus):

    * Breakpoint beim 1. Befehl in der Funktion "OnBnClicked..."
    * Ansicht Aufrufdiagramm "CClass::OnBnClicked..."

    Ergebnis:
    Es wurden keine Aufrufe gefunden.
    Es wurden keine Aufrufer gefunden.



  • MFC-Coder schrieb:

    Er findet nichts, vorausgesetzt ich mache es so richtig

    Machst du nicht. Deutsche Lokalisierungen von Visual Studio sind furchtbar. IMHO.

    Such mal unter Debug -> Fenster -> Aufrufliste oder so ähnlich.



  • MFK schrieb:

    MFC-Coder schrieb:

    Er findet nichts, vorausgesetzt ich mache es so richtig

    Machst du nicht. Deutsche Lokalisierungen von Visual Studio sind furchtbar. IMHO.

    Such mal unter Debug -> Fenster -> Aufrufliste oder so ähnlich.

    Ok danke, jetzt siehts anders aus.

    Aber irgendwie hilft mir das auch nicht weiter.
    Wenn ich den BP in der OnBnClicked Funktion setze, habe ich ja keine Möglichkeit den ausgedimmten Button mehrfach zu drücken.

    Ich stehe da zugegebenermaßen auf dem Schlauch. Wo müßte ich den BP setzen damit das Gewünschte finde?



  • MFC-Coder schrieb:

    Wenn ich den BP in der OnBnClicked Funktion setze, habe ich ja keine Möglichkeit den ausgedimmten Button mehrfach zu drücken.

    Wieso nicht?

    Du kannst übrigens bei einem Breakpoint auch einstellen, dass der Debugger erst beim 2. Mal anhält.



  • MFK schrieb:

    Du kannst übrigens bei einem Breakpoint auch einstellen, dass der Debugger erst beim 2. Mal anhält.

    Wieder was gelernt... 🙂

    Aber ich sehe da keinen Unterschied. Das Ergebnis ist dasselbe wie wenn ich nur 1x drücke.


  • Mod

    Ich verstehe es nicht, was Du für ein Problem hast?
    Wenn Du einen Breakpoint setzt aufdie Stelle an der die WM_USER Nachricht ankommt, dann lässt Du das Programm weiter laufen (Go F5).
    Wenn dann nochmal die Nachricht reinkommt, ist was faul, aber dann kommt ja wieder der Breakpaoint. Also Breakpoint abpassen.
    Dann den Callstack ansehen. In dem wird irgendwo SendMessage aufgerufen. Schau eine Position weite drunter und Du hast den Verursacher (den Sender der Nachricht)...



  • Martin Richter schrieb:

    Ich verstehe es nicht, was Du für ein Problem hast?
    Wenn Du einen Breakpoint setzt aufdie Stelle an der die WM_USER Nachricht ankommt, dann lässt Du das Programm weiter laufen (Go F5).
    Wenn dann nochmal die Nachricht reinkommt, ist was faul, aber dann kommt ja wieder der Breakpaoint. Also Breakpoint abpassen.
    Dann den Callstack ansehen. In dem wird irgendwo SendMessage aufgerufen. Schau eine Position weite drunter und Du hast den Verursacher (den Sender der Nachricht)...

    Ich schrieb doch daß ich den nichtmodalen in ein modalen Dialog umgewandelt habe und damit das WMU System entfällt, bzw. auch nicht mehr da ist.
    Der Effekt ist derselbe, nur daß es eben keine Messages diesbezüglich mehr gibt und ich diese auch nicht mehr verfolgen kann.



  • MFC-Coder schrieb:

    Der Effekt ist derselbe, nur daß es eben keine Messages diesbezüglich mehr gibt und ich diese auch nicht mehr verfolgen kann.

    Besteht das Problem jetzt noch oder nicht?

    Fall ja, gibt es also immer noch Code, der mehrfach ausgeführt wird, obwohl er das nicht sollte?

    Dann mach da einen Breakpoint rein, der beim 2. Mal anhält, und zeig uns den Callstack.

    Falls nein, bist du überhaupt daran interessiert, herauszufinden, woran es lag?

    P.S.: 5000! 😃



  • MFK schrieb:

    Besteht das Problem jetzt noch oder nicht?

    Fall ja, gibt es also immer noch Code, der mehrfach ausgeführt wird, obwohl er das nicht sollte?

    Dann mach da einen Breakpoint rein, der beim 2. Mal anhält, und zeig uns den Callstack.

    Morgen,

    hier die obersten Zeilen. Egal ob ich 1, 2 oder 4 den Button drücke sehe ich immer dasselbe.

    > Appl.exe!CClass::OnBnClickedButton() Zeile 156 C++
    Appl.exe!_AfxDispatchCmdMsg(CCmdTarget * pTarget=0x0012eac0, unsigned int nID=1027, int nCode=0, void (void)* pfn=0x004ef4d3, void * pExtra=0x00000000, unsigned int nSig=57, AFX_CMDHANDLERINFO * pHandlerInfo=0x00000000) Zeile 82 C++
    Appl.exe!CCmdTarget::OnCmdMsg(unsigned int nID=1027, int nCode=0, void * pExtra=0x00000000, AFX_CMDHANDLERINFO * pHandlerInfo=0x00000000) Zeile 381 + 0x27 Bytes C++
    Appl.exe!CDialog::OnCmdMsg(unsigned int nID=1027, int nCode=0, void * pExtra=0x00000000, AFX_CMDHANDLERINFO * pHandlerInfo=0x00000000) Zeile 85 + 0x18 Bytes C++
    Appl.exe!CWnd::OnCommand(unsigned int wParam=1027, long lParam=526076) Zeile 2364 C++
    Appl.exe!CWnd::OnWndMsg(unsigned int message=273, unsigned int wParam=1027, long lParam=526076, long * pResult=0x0012e278) Zeile 1769 + 0x1e Bytes C++
    Appl.exe!CWnd::WindowProc(unsigned int message=273, unsigned int wParam=1027, long lParam=526076) Zeile 1755 + 0x20 Bytes C++
    Appl.exe!AfxCallWndProc(CWnd * pWnd=0x0012eac0, HWND__ * hWnd=0x00080704, unsigned int nMsg=273, unsigned int wParam=1027, long lParam=526076) Zeile 240 + 0x1c Bytes C++
    Appl.exe!AfxWndProc(HWND__ * hWnd=0x00080704, unsigned int nMsg=273, unsigned int wParam=1027, long lParam=526076) Zeile 403 C++


  • Mod

    Weiter runter rollen. Das ist doch nur die Behandlung der Nachricht.
    Igrnedwo muss doch SendMessage sehen. (Hatte ich das nicht genau beschrieben?)



  • Martin Richter schrieb:

    Weiter runter rollen. Das ist doch nur die Behandlung der Nachricht.
    Igrnedwo muss doch SendMessage sehen. (Hatte ich das nicht genau beschrieben?)

    Hier das gesamte (BP bei 3x und mehr); ich sehe da kein SendMessage. 😞

    > Appl.exe!CReferenzieren::OnBnClicked() Zeile 155 C++
    Appl.exe!_AfxDispatchCmdMsg(CCmdTarget * pTarget=0x0012eac0, unsigned int nID=1027, int nCode=0, void (void)
    pfn=0x004ef4c9, void * pExtra=0x00000000, unsigned int nSig=57, AFX_CMDHANDLERINFO * pHandlerInfo=0x00000000) Zeile 82 C++
    Appl.exe!CCmdTarget::OnCmdMsg(unsigned int nID=1027, int nCode=0, void * pExtra=0x00000000, AFX_CMDHANDLERINFO * pHandlerInfo=0x00000000) Zeile 381 + 0x27 Bytes C++
    Appl.exe!CDialog::OnCmdMsg(unsigned int nID=1027, int nCode=0, void * pExtra=0x00000000, AFX_CMDHANDLERINFO * pHandlerInfo=0x00000000) Zeile 85 + 0x18 Bytes C++
    Appl.exe!CWnd::OnCommand(unsigned int wParam=1027, long lParam=395384) Zeile 2364 C++
    Appl.exe!CWnd::OnWndMsg(unsigned int message=273, unsigned int wParam=1027, long lParam=395384, long * pResult=0x0012e278) Zeile 1769 + 0x1e Bytes C++
    Appl.exe!CWnd::WindowProc(unsigned int message=273, unsigned int wParam=1027, long lParam=395384) Zeile 1755 + 0x20 Bytes C++
    Appl.exe!AfxCallWndProc(CWnd * pWnd=0x0012eac0, HWND__ * hWnd=0x0006087e, unsigned int nMsg=273, unsigned int wParam=1027, long lParam=395384) Zeile 240 + 0x1c Bytes C++
    Appl.exe!AfxWndProc(HWND__ * hWnd=0x0006087e, unsigned int nMsg=273, unsigned int wParam=1027, long lParam=395384) Zeile 403 C++
    user32.dll!7e368734()
    [Unten angegebene Rahmen sind möglicherweise nicht korrekt und/oder fehlen, keine Symbole geladen für user32.dll]
    user32.dll!7e368816()
    user32.dll!7e378ea0()
    user32.dll!7e378eec()
    ntdll.dll!7c91e473()
    user32.dll!7e3694be()
    user32.dll!7e37c174()
    user32.dll!7e37a998()
    user32.dll!7e38b036()
    Appl.exe!CWnd::DefWindowProcA(unsigned int nMsg=514, unsigned int wParam=0, long lParam=524406) Zeile 1043 + 0x20 Bytes C++
    Appl.exe!CWnd::WindowProc(unsigned int message=514, unsigned int wParam=0, long lParam=524406) Zeile 1756 + 0x1c Bytes C++
    Appl.exe!AfxCallWndProc(CWnd * pWnd=0x0012eb40, HWND__ * hWnd=0x00060878, unsigned int nMsg=514, unsigned int wParam=0, long lParam=524406) Zeile 240 + 0x1c Bytes C++
    Appl.exe!AfxWndProc(HWND__ * hWnd=0x00060878, unsigned int nMsg=514, unsigned int wParam=0, long lParam=524406) Zeile 403 C++
    user32.dll!7e368734()
    user32.dll!7e368816()
    user32.dll!7e3689cd()
    user32.dll!7e381b7c()
    user32.dll!7e38c6d3()
    Appl.exe!CWnd::IsDialogMessageA(tagMSG * lpMsg=0x001780b0) Zeile 198 C++
    Appl.exe!CWnd::PreTranslateInput(tagMSG * lpMsg=0x001780b0) Zeile 4332 C++
    Appl.exe!CDialog::PreTranslateMessage(tagMSG * pMsg=0x001780b0) Zeile 80 C++
    Appl.exe!CWnd::WalkPreTranslateTree(HWND__ * hWndStop=0x00070862, tagMSG * pMsg=0x001780b0) Zeile 2946 + 0x14 Bytes C++
    Appl.exe!AfxInternalPreTranslateMessage(tagMSG * pMsg=0x001780b0) Zeile 233 + 0x12 Bytes C++
    Appl.exe!CWinThread::PreTranslateMessage(tagMSG * pMsg=0x001780b0) Zeile 777 + 0x9 Bytes C++
    Appl.exe!AfxPreTranslateMessage(tagMSG * pMsg=0x001780b0) Zeile 252 + 0x11 Bytes C++
    Appl.exe!AfxInternalPumpMessage() Zeile 178 + 0x18 Bytes C++
    Appl.exe!CWinThread::PumpMessage() Zeile 900 C++
    Appl.exe!AfxPumpMessage() Zeile 190 + 0xd Bytes C++
    Appl.exe!CWnd::RunModalLoop(unsigned long dwFlags=4) Zeile 4386 + 0x5 Bytes C++
    Appl.exe!CDialog::DoModal() Zeile 584 + 0xc Bytes C++
    Appl.exe!CApplDlg::OnMenuitemOptionenReferenzieren() Zeile 1517 C++
    Appl.exe!_AfxDispatchCmdMsg(CCmdTarget * pTarget=0x0012f328, unsigned int nID=32780, int nCode=0, void (void)* pfn=0x004ed11f, void * pExtra=0x00000000, unsigned int nSig=57, AFX_CMDHANDLERINFO * pHandlerInfo=0x00000000) Zeile 82 C++
    Appl.exe!CCmdTarget::OnCmdMsg(unsigned int nID=32780, int nCode=0, void * pExtra=0x00000000, AFX_CMDHANDLERINFO * pHandlerInfo=0x00000000) Zeile 381 + 0x27 Bytes C++
    Appl.exe!CDialog::OnCmdMsg(unsigned int nID=32780, int nCode=0, void * pExtra=0x00000000, AFX_CMDHANDLERINFO * pHandlerInfo=0x00000000) Zeile 85 + 0x18 Bytes C++
    Appl.exe!CWnd::OnCommand(unsigned int wParam=32780, long lParam=0) Zeile 2364 C++
    Appl.exe!CWnd::OnWndMsg(unsigned int message=273, unsigned int wParam=32780, long lParam=0, long * pResult=0x0012efc4) Zeile 1769 + 0x1e Bytes C++
    Appl.exe!CWnd::WindowProc(unsigned int message=273, unsigned int wParam=32780, long lParam=0) Zeile 1755 + 0x20 Bytes C++
    Appl.exe!AfxCallWndProc(CWnd * pWnd=0x0012f328, HWND__ * hWnd=0x00070862, unsigned int nMsg=273, unsigned int wParam=32780, long lParam=0) Zeile 240 + 0x1c Bytes C++
    Appl.exe!AfxWndProc(HWND__ * hWnd=0x00070862, unsigned int nMsg=273, unsigned int wParam=32780, long lParam=0) Zeile 403 C++
    user32.dll!7e368734()
    user32.dll!7e368816()
    user32.dll!7e3689cd()
    user32.dll!7e3696c7()
    Appl.exe!AfxInternalPumpMessage() Zeile 183 C++
    Appl.exe!CWinThread::PumpMessage() Zeile 900 C++
    Appl.exe!AfxPumpMessage() Zeile 190 + 0xd Bytes C++
    Appl.exe!CWnd::RunModalLoop(unsigned long dwFlags=4) Zeile 4386 + 0x5 Bytes C++
    Appl.exe!CDialog::DoModal() Zeile 584 + 0xc Bytes C++
    Appl.exe!CApplApp::InitInstance() Zeile 63 + 0xb Bytes C++
    Appl.exe!AfxWinMain(HINSTANCE__ * hInstance=0x00400000, HINSTANCE__ * hPrevInstance=0x00000000, char * lpCmdLine=0x00151f4e, int nCmdShow=1) Zeile 37 + 0xd Bytes C++
    Appl.exe!WinMain(HINSTANCE__ * hInstance=0x00400000, HINSTANCE__ * hPrevInstance=0x00000000, char * lpCmdLine=0x00151f4e, int nCmdShow=1) Zeile 30 C++
    Appl.exe!__tmainCRTStartup() Zeile 263 + 0x2c Bytes C
    Appl.exe!WinMainCRTStartup() Zeile 182 C
    kernel32.dll!7c817077()
    Appl.exe!CAtlAllocator::Init(const char * pszFileName=0x006f0064, unsigned long dwMaxSize=7536759) Zeile 114 + 0x1b Bytes C++
    ftd2xx.dll!00390035()*


Anmelden zum Antworten