PostMessage из потока - PullRequest
       67

PostMessage из потока

0 голосов
/ 23 апреля 2020

Мое приложение VCL регистрирует два сообщения в WinMain

    unsigned int WM_CAMERA_STOPPED_RECORDING;
    unsigned int WM_CAMERA_STARTED_RECORDING;

    int WINAPI _tWinMain(HINSTANCE, HINSTANCE, LPTSTR lpCmdLine, int)
    {...
         WM_CAMERA_STOPPED_RECORDING = RegisterWindowMessage(L"CameraStoppedRecording");
         WM_CAMERA_STARTED_RECORDING = RegisterWindowMessage(L"CameraStartedRecording");

Тема публикует сообщение, когда это необходимо:

        int ret = PostMessage(HWND_BROADCAST, WM_CAMERA_STARTED_RECORDING, 0, 0);        

Моя mainForm имеет перегруженную WindPRo c:

void __fastcall TMainForm::WndProc(TMessage &Message)
{
    if(Message.Msg == WM_CAMERA_STOPPED_RECORDING && WM_CAMERA_STOPPED_RECORDING > 0)
    {
        UIFrame->FocusZoneFrame->onCameraFinishedRecording();
    }

    else if(Message.Msg == WM_CAMERA_STARTED_RECORDING && WM_CAMERA_STARTED_RECORDING > 0)
    {
        UIFrame->FocusZoneFrame->onCameraStartedRecording();
    }

    TForm::WndProc(Message);
}

Вопрос в том, есть ли разница в использовании функции PostMessage в потоке против основного потока?

Я спрашиваю, потому что я получаю некоторое нестабильное поведение в приложении, где основной поток пользовательского интерфейса где-то блокируется, и задаюсь вопросом, может ли это быть связано с тем, как PostMessage используется выше.

...