Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Win Api
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 24.03.2009, 10:04   #1
Sc0rp
 
Регистрация: 24.03.2009
Сообщений: 3
По умолчанию Проблема с созданием окна(CreateWindow) в отдельном потоке

Здравствуйте. Возникла следующая проблема с фунцией CreateWindow:
из основного приложении создается новая форма в одтельном потоке.
Код:
  TProcessForm.Process_Show(self,'test',Image1.Picture.Bitmap);
  for I := 0 to 10 do
  begin
    sleep(100);
  end;
TProcessForm.Process_Show(self,'tes t',Image1.Picture.Bitmap) создает эту форму.
код создания формы:
Код:
wc.cbSize:=sizeof(wc);
wc.style:=cs_hredraw or cs_vredraw;
wc.lpfnWndProc:=@WindowProc;
wc.cbClsExtra:=0;
wc.cbWndExtra:=0;
wc.hInstance:=HInstance;
wc.hIcon:=LoadIcon(0,idi_application);
wc.hCursor:=LoadCursor(0,idc_arrow);
wc.hbrBackground:=COLOR_BTNFACE+1;
wc.lpszMenuName:=nil;
wc.lpszClassName:='WinMin : Main';
RegisterClassEx(wc);

........
MainWnd:=CreateWindow(  'WinMin : Main',
                        'Win Min',
                        wS_POPUP or WS_DLGFRAME,
                        xPos,
                        yPos ,
                        nWidth,
                        nHeight,
                        //0,
                        HWNDparent,
                        0,
                        Hinstance,
                        nil
                        );
........
InvalidateRect(MainWnd,nil,false);
ShowWindow(MainWnd,CmdShow);
UpdateWindow(MainWnd);
Проблема в следующем: если HWNDparent<>0(тоесть создавать дочернюю форму)то при выполнении ShowWindow(MainWnd,CmdShow) управление передается из потока в основное приложение на выполнение цикла и только после завершения цикла поток продолжает работу, выполняет ShowWindow(MainWnd,CmdShow),UpdateW indow(MainWnd) и отображает созданное окно.Если создавать главное окно(HWNDparent=0) все работает нормально, окно создается параллельно работе основного приложения. В чем может быть причина? Мне нужно именно дочернее окно.
Sc0rp вне форума Ответить с цитированием
Старый 24.03.2009, 10:31   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Убери ShowWindow(MainWnd,CmdShow);
и попробуй в параметры CreateWindow дописать такое:
wS_POPUP or WS_DLGFRAME or WS_VISIBLE

Или
wS_POPUP or WS_DLGFRAME or CmdShow
Кстати не вижу чтоб оно инициализировалось.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 24.03.2009, 15:34   #3
Sc0rp
 
Регистрация: 24.03.2009
Сообщений: 3
По умолчанию

попробовал. с WS_VISIBLE результат тот же. с CmdShow окно просто не отобразилось.
Цитата:
Кстати не вижу чтоб оно инициализировалось.
по подробнее пожалуйста, не понял о чем речь.
Sc0rp вне форума Ответить с цитированием
Старый 24.03.2009, 17:01   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
по подробнее пожалуйста, не понял о чем речь.
Ну я не вижу в твоем коде примерно такого:
Код:
CmdShow:=WS_SHOWNORMAL
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 26.03.2009, 22:49   #5
Sc0rp
 
Регистрация: 24.03.2009
Сообщений: 3
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Ну я не вижу в твоем коде примерно такого:
Код:
CmdShow:=WS_SHOWNORMAL
просто здесь не указал, а так в коде есть.
Sc0rp вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблема с созданием CButton st1q Общие вопросы C/C++ 5 14.09.2008 13:57
Проблема с созданием компонентов dr.Chas Общие вопросы Delphi 4 25.04.2008 20:12
Проблема с созданием файла справки belochka Общие вопросы Delphi 5 05.11.2007 18:24
Запрос к БД в отдельном потоке (Thread) tyrell lab БД в Delphi 1 14.06.2007 08:42