Далог за основное окно
От: Crimson  
Дата: 08.12.02 16:50
Оценка:
Имеем основное окно MFC программы.
Открываем немодальный диалог из ресурсов.
Пытаемся перевести его за основное окно (не выходит ).
Игра со стилями диалога и использование SetWindowPos ни чего не дает.
Честно говоря мой босс в америке тоже ни чего не смог предложить (хотя крутой программер).
Неужели надо запускать диалог в отдельном процессе?
Re: Далог за основное окно
От: Аноним  
Дата: 08.12.02 17:18
Оценка:
Здравствуйте, Crimson, Вы писали:

C>Имеем основное окно MFC программы.

C>Открываем немодальный диалог из ресурсов.
C>Пытаемся перевести его за основное окно (не выходит ).
C>Игра со стилями диалога и использование SetWindowPos ни чего не дает.
C>Честно говоря мой босс в америке тоже ни чего не смог предложить (хотя крутой программер).
C>Неужели надо запускать диалог в отдельном процессе?
Мне не поверил — теперь у All'a спрашиваешь ? ( Сам знаешь, кто 8-)
Re: Далог за основное окно
От: Slamin США  
Дата: 08.12.02 19:10
Оценка:
Здравствуйте, Crimson, Вы писали:

C>Имеем основное окно MFC программы.

C>Открываем немодальный диалог из ресурсов.
C>Пытаемся перевести его за основное окно (не выходит ).
C>Игра со стилями диалога и использование SetWindowPos ни чего не дает.
C>Честно говоря мой босс в америке тоже ни чего не смог предложить (хотя крутой программер).
C>Неужели надо запускать диалог в отдельном процессе?

Смотри Dialog Box Owner Window.
Если поставить owner'ом десктоп
CDialog::Create(IDD, GetDesktopWindow());
, то будет прятаться за основное окно, но там есть свои недостатки
There are 10 types of people in the world, those who don't understand binaries, those who do, and those who understand not only binaries.
Re: Далог за основное окно
От: cpp Россия http://www.elecard.com
Дата: 09.12.02 05:26
Оценка:
Здравствуйте, Crimson, Вы писали:

C>Имеем основное окно MFC программы.

C>Открываем немодальный диалог из ресурсов.
C>Пытаемся перевести его за основное окно (не выходит ).
C>Игра со стилями диалога и использование SetWindowPos ни чего не дает.
C>Честно говоря мой босс в америке тоже ни чего не смог предложить (хотя крутой программер).
C>Неужели надо запускать диалог в отдельном процессе?

Честно говоря не знаю, была такая же проблема сделали следующим образом:

BOOL CDemoAppApp::InitInstance()
{
// Standard initialization
// If you are not using these features and wish to reduce the size
// of your final executable, you should remove from the following
// the specific initialization routines you do not need.

#ifdef _AFXDLL
Enable3dControls(); // Call this when using MFC in a shared DLL
#else
Enable3dControlsStatic(); // Call this when linking to MFC statically
#endif

CDemoAppDlg dlg;
m_pMainWnd = &dlg;

// Create window for videowindow
DLGTEMPLATE *pDlgTemplate=reinterpret_cast<DLGTEMPLATE*>(
LockResource(
LoadResource(AfxGetInstanceHandle(),
FindResource(AfxGetInstanceHandle(),(LPSTR)IDD_VIDEOWINDOW,RT_DIALOG))));

if(!pDlgTemplate)return E_FAIL;
CMyDlg *pMyDlg = new CMyDlg;
MyDlg->CreateIndirect(pDlgTemplate);

dlg.m_MyDlg = pMyDlg;

int nResponse = dlg.DoModal();

pMyDlg->DestroyWindow();
delete pMyDlg;

// Since the dialog has been closed, return FALSE so that we exit the
// application, rather than start the application's message pump.
return FALSE;
}

а дальше — ShowWindow(SW_SHOW) || ShowWindow(SW_HIDE).
А вообще-то хотелось бы еще варианты увидеть.
Сергей.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.