Понимаю, что этот вопрос уже много раз поднимался на этом форуме. Приложение сделано в виде диалогового окна. Вызываю функцию:
::SetWindowLong(dlg.m_hWnd, GWL_HWNDPARENT, (LONG)::GetDesktopWindow());
INT_PTR nResponse = dlg.DoModal();
Но все равно приложение отображается в панели задач. Может функцию SetWindowLong надо вызывать в другом месте? В чем может быть проблема? Заранее благодарен.
Здравствуйте, Leha86, Вы писали:
L>Понимаю, что этот вопрос уже много раз поднимался на этом форуме. Приложение сделано в виде диалогового окна. Вызываю функцию:
L>L>::SetWindowLong(dlg.m_hWnd, GWL_HWNDPARENT, (LONG)::GetDesktopWindow());
L>INT_PTR nResponse = dlg.DoModal();
L>
L>Но все равно приложение отображается в панели задач. Может функцию SetWindowLong надо вызывать в другом месте? В чем может быть проблема? Заранее благодарен.
До вызова DoModal окна еще НЕТ!!!!
::SetWindowLong(dlg.m_hWnd, GWL_HWNDPARENT, (LONG)::GetDesktopWindow());
//тут не грех сделать так
ASSERT(IsWindow(dlg.GetSafeHwnd()));//вай-вай-вай :???:
INT_PTR nResponse = dlg.DoModal();
Имхо лучше в обработчике WM_INITDIALOG
Удалено избыточное цитирование. — SchweinDeBurg
Здравствуйте, Carc, Вы писали:
C>Имхо лучше в обработчике WM_INITDIALOG
Поместил этот код в функцию OnInitDialog:
BOOL SNMainWindow::OnInitDialog()
{
CDialog::OnInitDialog();
SetIcon(m_hIcon, TRUE);
SetIcon(m_hIcon, FALSE);
::SetWindowLong(m_hWnd, GWL_HWNDPARENT, (LONG)::GetDesktopWindow());
ASSERT(IsWindow(GetSafeHwnd()));
return TRUE;}
Но все равно приложение отображается в панели задач.
Удалено избыточное цитирование. — SchweinDeBurg
Здравствуйте, Leha86, Вы писали:
L>Но все равно приложение отображается в панели задач.
не проще ли создать невидимое окно и передать его как родитель в конструкторе диалога?
CWnd wndHiden;
wndHidden.Create(...);
CDlgMy dlg(&wndHidden);