Re: problems in creating file dialog in tab control
In order for one dialog to be created as part of another window the Dialog
must have the WS_CHILD style, and by default CFileDialog has the WS_POPUP
style. There are ways around that, you can override the dialog template of
the file dialog and telling CFileDialog to load that instead.
http://www.codeproject.com/dialog/xfiledialog.asp
The other thing is that you will have to use CFileDialog::Create method
instead of DoModal.
AliR.
"lfsym" <clamayi@gmail.com> wrote in message
news:1154442557.063598.252610@i42g2000cwa.googlegroups.com...
Hi,I am creating a tab control and want to pop up a file dialog when
clicking one tab page. but now, the file dialog was shown up at the
same time with tab control, not after selecting one page. Could some
guys help me? Thanks
David
GetClientRect(hwndParent,&rcClient);
InitCommonControls();
hwndTabCtrl=CreateWindow(WC_TABCONTROL,"",
WS_CHILD|WS_CLIPSIBLINGS|WS_VISIBLE,0,0,rcClient.right,rcClient.bottom,hwndP
arent,NULL,g_hinst,NULL);
if(hwndTabCtrl==NULL)
AfxMessageBox("can't create tab control window");
m_tcitem.mask=TCIF_TEXT|TCIF_IMAGE;
m_tcitem.iImage=-1;
for(int i=0;i<TAB_PAGE_COUNT;i++)
{
m_tcitem.pszText=g_achTemp[i];
if(TabCtrl_InsertItem(hwndTabCtrl,0,&m_tcitem)==-1)
{
AfxMessageBox("can't insert");
DestroyWindow(hwndTabCtrl);
}
}
TabCtrl_AdjustRect(hwndTabCtrl,FALSE,&rcClient);
hdwp=BeginDeferWindowPos(1);
DeferWindowPos(hdwp,hwndTabCtrl,NULL,rcClient.left,rcClient.top+100,(rcClien
t.right-rcClient.left)/4,(rcClient.bottom-rcClient.top)/3,0);
EndDeferWindowPos(hdwp);
//try to get the current focus of tab page
if(TabCtrl_SetCurSel(hwndTabCtrl,3)==3)
{
CFileDialog partFileDlg
(TRUE,"prt",".prt",OFN_HIDEREADONLY,szFilter,CWnd::FromHandle(hwndTabCtrl));
if(partFileDlg.DoModal()==IDOK)
{
AfxMessageBox("create part file dialog");
}
}