Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Ада и другие языки _ Функция потока

Автор: 18192123 21.11.2008 18:17

Возник один вопросик..
Есть функция потока


DWORD WINAPI thread_func(LPVOID lpParam)
{
while(RunMore)
{
WaitForSingleObject(myEvent,INFINITE);
//движение по экрану

}
SetEvent(myEvent);

return 0;
}
........
myEvent = CreateEvent(NULL, FALSE, FALSE, NULL);
int counter[THRD_COUNT] = {1};
for(int i = 0; i < THRD_COUNT; i++) {
hThread[i] = CreateThread(NULL, 0, thread_func, (PVOID)&counter[i], 0, &dwThreadIdArray[i]);
}
SetEvent(myEvent);


На месте комментария хочу осуществить перемещение Label по экрану, для начала - от одного края к другому..
Такой код

hLabel=CreateWindow(TEXT("STATIC"),NULL,WS_CHILD|WS_VISIBLE|SS_LEFT ,30,50,30,20,hWndMain,NULL,hInstance,NULL);
SendMessage(hLabel,WM_SETTEXT, 0, (LPARAM)(LPCSTR)TEXT("<--"));


даже не отрисовывает на окне формы с дескриптором hWndMain..
Объясните пожалуйста, в чём дело?

Автор: volvo 21.11.2008 19:13

Цитата
Такой код
Где этот код у тебя прописан, это раз... Должен быть после SetEvent(myEvent). А два - есть ли после него ShowWindow для основного окна приложения? Причин не работать, если все так, как в этих двух пунктах - не вижу, значит, что-то намудрила в других частях программы, проверяй...

P.S. Или ты хочешь этот код писать прямо в thread_func, и рисовать каждый раз в потоке этот СтатикТекст? Тогда как ты собралась внутри потока получить hInstance? Глобальную переменную что-ли ввела?