UINT Msg,  // идентификатор сообщения 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

UINT Msg,  // идентификатор сообщения

Поиск

UINT Msg,  // идентификатор сообщения

WPARAM wParam, LPARAM lParam)

 

Она помещает сообщение в очередь сообщений, связанную с тем потоком, который создал указанное окно hWnd и возвращается, не дожидаясь пока сообщение будет обработано.

 

Как вы видите, здесь не используются методы класса MFC, связанного с искомым окном, а просто отправляется сообщение по идентификатору окна-получателя.

Для связи с основным потоком создадим пользовательское сообщение WM_THREADFINISHED (см. пункт "Сообщения в MFC"):

1. Вручную добавляем константу в "optimizer.h":

#define WM_THREADFINISHED WM_USER+5

2. Пишем в файл "ChildFrm.cpp" обработчик для нового сообщения:

LONG CChildFrame::OnThreadFinished(UINT wParam, LONG lParam)

{

. . .

}

 

3. Связываем (см. пункт "Сообщения в MFC") этот обработчик с нашим сообщением в карте класса CChildFrame с помощью макроса ON_MESSAGE:

ON_MESSAGE(WM_THREADFINISHED,OnThreadFinished)

 

Аналогично поступаем с командой WM_THREADERROR.

 

Так как в стандартном формате функции потока имеется только один параметр (LPVOID pParam), мы будем его использовать для передачи в рабочий поток адреса специальной структуры, содержащей указатели на объекты задачи, решателя, и имеющей также поле для записи указателя на объект результатов вычислений, созданный при решении задачи. Кроме того, заведем в этой структуре поле для дескриптора окна MDI-child, которому по окончании вычислений будут отправляться сообщения:

 

struct ThreadParams //Входные параметры решателя

{

Problem* pProblem; //Problem to solve



Поделиться:


Последнее изменение этой страницы: 2024-06-27; просмотров: 45; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 216.73.217.21 (0.006 с.)