利用分裂窗顯示一系列圖形,圖形數量時多時少。由于生成時分裂窗的數量必須固定,所以需要的視窗比較少的時候,就需要將一些分裂窗的寬度或高度設為0,以使其隱藏。但是其邊框還是在,特別是相連分裂窗隱藏得比較多的時候,它們的邊框連在一起,很難看。請問如何隱藏掉?
uj5u.com熱心網友回復:
試試修改視窗風格 CWnd::ModifyStylepWnd->ModifyStyle(WS_BORDER, 0, SWP_FRAMECHANGED|SWP_DRAWFRAME);
uj5u.com熱心網友回復:
隱藏視窗 應該可以uj5u.com熱心網友回復:
我記得好像是需要派生CSplitWnd類,重新設定它的成員變數好像是可以的。uj5u.com熱心網友回復:

是這種嗎
設定Border就可以了
uj5u.com熱心網友回復:
視窗數改變 ,重新 CSplitWnduj5u.com熱心網友回復:
例子:
void CMainFrame::ChangeSplit(int rows,int cols)
{// before delete all,save doc
CCreateContext Context;// I hate 'new'
ZeroMemory(&Context,sizeof(Context));
Context.m_pCurrentFrame=this;
// set doc
CDocument *pDoc=m_pMainView->GetDocument();
Context.m_pCurrentDoc=pDoc;
Context.m_pNewDocTemplate=pDoc->GetDocTemplate();
// save changes for CEditView
if(pDoc->IsModified()) AfxMessageBox("Put your saving code here!");
//
CRect rect;
GetClientRect(&rect);
CSize size=rect.Size();
size.cy -=46;//status and toolbar
// m_pMainView will not be deleted ,only to show or to hide
if ((rows == 0) &&(cols == 0))
{
if(::IsWindow(m_wndSplitter.m_hWnd)) m_wndSplitter.DestroyWindow();
m_pMainView->SetDlgCtrlID(AFX_IDW_PANE_FIRST);
RecalcLayout();
m_pMainView->ShowWindow(SW_SHOW);
return;
}
size.cx /= cols;
size.cy /= rows;
// hide mainview
m_pMainView->SetDlgCtrlID(AFX_IDW_PANE_FIRST+1);
m_pMainView->ShowWindow(SW_HIDE);
//delete all views in splitter
if(::IsWindow(m_wndSplitter.m_hWnd)) m_wndSplitter.DestroyWindow();
//
char *pColInfo=0;// tmp for 'delete []'
char *pRowInfo=0;
// following function can rewrite to 'void Re_Initialize(void)' ,if you derives CSplitterWnd.
// it contains all necessary steps to re_initialize a SplitterWnd.
CSplitterWnd *pSplit=&m_wndSplitter;
__asm
{
mov ebx,pSplit;
mov [ebx].m_nRows,0
mov [ebx].m_nCols,0
// mem leak
mov eax,dword ptr [ebx].m_pRowInfo
mov pRowInfo,eax// get
mov eax,dword ptr [ebx].m_pColInfo
mov pColInfo,eax
// what we have to do
mov dword ptr [ebx].m_pRowInfo,0
mov dword ptr [ebx].m_pColInfo,0
}
// easy way to do delete, not in asm.
if(pRowInfo) delete []pRowInfo;// it was 'new'ed out !
if(pColInfo) delete []pColInfo;
// now re-create the rows, cols,
if(!m_wndSplitter.CreateStatic(this, rows, cols)) AfxMessageBox("CreateStatic failed!");
// views
for(int jj=0; jj< rows; jj++)
{
for(int kk=0; kk< cols; kk++)
{
m_wndSplitter.CreateView(jj, kk, RUNTIME_CLASS(CYaChangeSplitView), size, &Context);
}
}
RecalcLayout();
InitialUpdateFrame(NULL,TRUE);
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/31950.html
標籤:界面
上一篇:vc6 ntdll.dll報錯
下一篇:gist特征提取
