Raised Window Border
Chet Murphy -- cmurphy@modelworks.com
Tuesday, April 02, 1996
Environment: VC++ 4.1, Windows 95
I want to have a CTreeCtrl with a raised border like the one used by
VC++ 4.1 project window. Here is what I've tried:
1 - Use the WS_THICKFRAME style when I create the CTreeCtrl but this
does not produce quite the same raised border (it's missing the
top-left inside dark line) and lets the user resize the ctrl which I do
not want.
2 - Implemented CMiniFrameWnd window around the CTreeCtrl with a
MFS_4THICKFRAME style, but this too does not create the correct raised
border.
3- Implemented OnNcPaint() and OnNcCalcSize() for my subclass of
CTreeCtrl. This code comes close (it's a little thin) to producing the
correct raised border but does not allow scroll bars. This code is
shown below:
void CProjectView::OnNcPaint()
{
CWindowDC dc(this);
CRect rect;
GetWindowRect(&rect);
rect.OffsetRect(-rect.left, -rect.top);
dc.Draw3dRect(rect, afxData.clrBtnHilite,
afxData.clrWindowFrame);
if (afxData.bWin4)
{
rect.InflateRect(-CX_BORDER, -CY_BORDER);
dc.Draw3dRect(rect, afxData.clrBtnFace,
afxData.clrBtnFace);
rect.InflateRect(-CX_BORDER, -CY_BORDER);
dc.Draw3dRect(rect, afxData.clrWindowFrame ,
afxData.clrBtnShadow);
}
}
void CProjectView::OnNcCalcSize(BOOL bCalcValidRects, NCCALCSIZE_PARAMS
FAR* lpncsp)
{
if (afxData.bWin4)
{
::InflateRect(lpncsp->rgrc,
-(CX_BORDER * 3), -(CY_BORDER * 3));
}
else
{
::InflateRect(lpncsp->rgrc,
-CX_BORDER, -CY_BORDER);
}
}
Any suggestions?
--Chet Murphy
ModelWorks Software
cmurphy@modelworks.com
http://www.modelworks.com/express
Joseph Koral -- jkoral@ftp.com
Thursday, April 04, 1996
[Mini-digest: 2 responses]
Chet Murphy wrote:
>> I want to have a CTreeCtrl with a raised border like the one used by=20
>> VC++ 4.1 project window. Here is what I've tried:
>>
>> 1 - Use the WS_THICKFRAME style when I create the CTreeCtrl but this=20
>> does not produce quite the same raised border (it's missing the=20
>> top-left inside dark line) and lets the user resize the ctrl which I =
do=20
>> not want.
>>=20
>> 2 - Implemented CMiniFrameWnd window around the CTreeCtrl with a=20
>> MFS_4THICKFRAME style, but this too does not create the correct =
raised=20
>> border.
>>=20
>> 3- Implemented OnNcPaint() and OnNcCalcSize() for my subclass of=20
>> CTreeCtrl. This code comes close (it's a little thin) to producing =
the=20
>> correct raised border but does not allow scroll bars. =20
>>
>> Any suggestions?
Yes, just add the WS_EX_DLGMODALFRAME | WS_EX_CLIENTEDGE extended styles =
to the tree control and you will get the effect you are looking for.
- Joseph
-----From: "LeRoy J. Baxter"
looks to me like a combination of Client Edge and Modal Frame - both
settable in the Resource Editor
| Вернуться в корень Архива
|