void CWorkSpaceBar2::OnSize(UINT nType, int cx, int cy)
{
CBCGPDockingControlBar::OnSize(nType, cx, cy); // Tab control should cover a whole client area:
m_wndTree.SetWindowPos (NULL, nBorderSize, nBorderSize,
cx - 2 * nBorderSize, cy - 2 * nBorderSize,
SWP_NOACTIVATE | SWP_NOZORDER);
}
这是BCG中的代码,跟mfc差不多。在线等,哪位高人帮解决下?
{
CBCGPDockingControlBar::OnSize(nType, cx, cy); // Tab control should cover a whole client area:
m_wndTree.SetWindowPos (NULL, nBorderSize, nBorderSize,
cx - 2 * nBorderSize, cy - 2 * nBorderSize,
SWP_NOACTIVATE | SWP_NOZORDER);
}
这是BCG中的代码,跟mfc差不多。在线等,哪位高人帮解决下?
解决方案 »
- 新手提问:在运行VC时,当按下回车之后窗口就关闭了怎么办?
- Expression: _CrtIsValidHeapPointer(pUserData)错误
- 我在对话框上放了N多控件,我想点击某个控件后,让对话框也得到这个点击的消息,该如何处理比较简便
- 请教一个入门级的问题!
- 请教MFC Regular DLL中使用如何使用模板类?
- 用以下钩子代码获取任何鼠标击健(不论在客户区或非客户区)的存在的问题不知如何解决,请各位帮忙
- 目前主流C编译器有哪些?
- 夜深了,问一个小问题,送给大家一些fen--关于对话框条的事件触发问题。
- 为什么执行EXEC SQL CONNECT 语句总是出错呢?
- 页面刷新问题
- 请大家谈谈看法与建议:公司发工资(一半现金,一半股票,为期半年),多谢!
- 非模态对话框 的问题!
2.窗口刷新问题:采用invalidate()激发onpaint()/ondraw()消息.
if (!m_wndWorkSpace2.Create (_T("计算机列表"), this, CRect (0, 0, 200, 200),
TRUE, ID_VIEW_WORKSPACE2,
WS_CHILD | WS_VISIBLE | WS_CLIPSIBLINGS | WS_CLIPCHILDREN | CBRS_LEFT | CBRS_FLOAT_MULTI))
{
TRACE0("Failed to create Workspace bar 2\n");
return FALSE; // fail to create
}将窗口移到文档区,就是正中间。
m_wndWorkSpace2.ConvertToTabbedDocument();下面是m_wndWorkSpace2.cpp中。m_wndTree是CLISTTREE变量。
nt CWorkSpaceBar2::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CBCGPDockingControlBar::OnCreate(lpCreateStruct) == -1)
return -1;
CRect rectDummy;
rectDummy.SetRectEmpty ();
// Create tree windows.
// TODO: create your own tab windows here:
const DWORD dwViewStyle = WS_CHILD | WS_VISIBLE | TVS_HASLINES |
TVS_LINESATROOT | TVS_HASBUTTONS;
if (!m_wndTree.Create (dwViewStyle, rectDummy, this, 1))
{
TRACE0("Failed to create workspace view\n");
return -1; // fail to create
} // Setup trees content:
HTREEITEM hRoot1 = m_wndTree.InsertItem (_T("Root 2"));
m_wndTree.InsertItem (_T("Item 1"), hRoot1);
m_wndTree.InsertItem (_T("Item 2"), hRoot1); return 0;
}void CWorkSpaceBar2::OnSize(UINT nType, int cx, int cy)
{
CBCGPDockingControlBar::OnSize(nType, cx, cy); // Tab control should cover a whole client area:
m_wndTree.SetWindowPos (NULL, nBorderSize, nBorderSize,
cx - 2 * nBorderSize, cy - 2 * nBorderSize,
SWP_NOACTIVATE | SWP_NOZORDER);
}void CWorkSpaceBar2::OnPaint()
{
CPaintDC dc(this); // device context for painting
CRect rectTree;
m_wndTree.GetWindowRect (rectTree);
ScreenToClient (rectTree); rectTree.InflateRect (nBorderSize, nBorderSize);
dc.Draw3dRect (rectTree, ::GetSysColor (COLOR_3DSHADOW),
::GetSysColor (COLOR_3DSHADOW));
}问题就是在正中间的窗口只显示一半,要手动放最大。
哪位高手帮解决下。谁帮我解决另加100分。
void CWorkSpaceBar2::OnSize(UINT nType, int cx, int cy)
{
CBCGPDockingControlBar::OnSize(nType, cx, cy);
CRect rect;
GetWindowRect(&rect);
ScreenToClient(rect);
rect.DeflateRect(nBorderSize, nBorderSize);
rect.right = rect.left + rect.Width() / 2;
rect.bottom = rect.top + rect.Height() / 2;
m_wndTree.MoveWindow(rect);
}