PeekMessage verarbeitet Nachrichten



  • Hi!
    Ich habe ein komisches Problem: Ich habe eine Nachrichtenschleife (ist zwar in MFC, aber ich glaube, das hat mit dem Problem eigentlich nichts zu tun), und in dieser wird PeekMessage aufgerufen. Nun habe ich die komische Situation, dass während die Funktion in PeekMessage steht, weitere Fensternachrichten von mir verarbeitet werden.
    So sieht der Call-Stack aus:

    EditListCtrlDlg!CMyEditListCtrl::StopEdit
    EditListCtrlDlg!::::CMySlider::WindowProc+0x2e
    MFC42D!AfxCallWndProc+0xed
    MFC42D!AfxWndProc+0xad
    **MFC42D!AfxWndProcBase+0x4a
    USER32!UserCallWinProc+0x18
    **USER32!CallWindowProcAorW+0x94
    USER32!CallWindowProcW+0x19
    COMCTL32!CallOriginalWndProc+0x18
    COMCTL32!CallNextSubclassProc+0x58
    COMCTL32!DefSubclassProc+0x58
    COMCTL32!TTSubclassProc+0x57
    COMCTL32!CallNextSubclassProc+0x58
    COMCTL32!MasterSubclassProc+0x97
    USER32!UserCallWinProc+0x18
    USER32!DispatchClientMessage+0x4b
    USER32!__fnDWORD+0x22
    ntdll!KiUserCallbackDispatcher+0x13
    USER32!_PeekMessage+0x72
    **USER32!PeekMessageA+0xe9
    MFC42D!CWnd::RunModalLoop+0x298
    **EditListCtrlDlg!CMyEditListCtrl::OnBeginLabelEdit+0x35a
    EditListCtrlDlg!CEditListCtrl::OnDelayedLabelEdit+0x35
    MFC42D!CWnd::OnWndMsg+0x69a
    MFC42D!CWnd::WindowProc+0x2e
    EditListCtrlDlg!CMyEditListCtrl::WindowProc+0x52
    MFC42D!AfxCallWndProc+0xed
    MFC42D!AfxWndProc+0xad
    MFC42D!AfxWndProcBase+0x4a
    USER32!UserCallWinProc+0x18
    USER32!DispatchMessageWorker+0x2e4
    USER32!DispatchMessageA+0xb
    MFC42D!CWinThread::PumpMessage+0x100
    MFC42D!CWnd::RunModalLoop+0x202
    MFC42D!CDialog::DoModal+0x191
    EditListCtrlDlg!CEditListCtrlDlgApp::InitInstance+0x63
    MFC42D!AfxWinMain+0x83
    EditListCtrlDlg!WinMain+0x18
    EditListCtrlDlg!WinMainCRTStartup+0x1b3
    KERNEL32!BaseProcessStart+0x3d

    Wie kann das sein? Ich dachte, PeekMessage schaut lediglich mal kurz nach, ob es eine Nachricht gibt, und sonst nichts 😮


Anmelden zum Antworten