我已经看过处理这个东西的绘图的代码(DFCS_SCROLLSIZEGRIP
),但肯定有一个窗口样式,我可以申请“免费”。对?显示CDialog中的大小抓地力?
2
A
回答
3
为了代替更好的答案,我会发布代码,我绘制了大小的抓地力,并处理命中测试。您还需要在OnSize过程中使适当的区域无效以重新绘制。
BOOL CMyDialog::OnEraseBkgnd(CDC* pDC)
{
if (CDialog::OnEraseBkgnd(pDC))
{
// draw size grip
CRect r;
GetClientRect(&r);
int size = GetSystemMetrics(SM_CXVSCROLL);
r.left = r.right - size;
r.top = r.bottom - size;
pDC->DrawFrameControl(&r, DFC_SCROLL, DFCS_SCROLLSIZEGRIP);
return TRUE;
}
else
{
return FALSE;
}
}
-
LRESULT CMyDialog::OnNcHitTest(CPoint point)
{
// return HTBOTTOMRIGHT for sizegrip area
CRect r;
GetClientRect(&r);
int size = GetSystemMetrics(SM_CXVSCROLL);
r.left = r.right - size;
r.top = r.bottom - size;
ScreenToClient(&point);
if (r.PtInRect(point))
{
return HTBOTTOMRIGHT;
}
else
return CDialog::OnNcHitTest(point);
}
0
我不认为这是一个默认的风格让这个功能是免费的。您必须创建一个类名为Scrollbar
和控件样式的新子窗口SBS_SIZEGRIP
0
除了上面提到的OnEraseBkgnd和OnNcHitTest,您需要在窗口大小时使夹点区域无效,否则会在放大时留下标记:
void CMyDialog::OnSize(UINT nType, INT cx, INT cy)
{
CRect rc;
int iSize=GetSystemMetrics(SM_CXVSCROLL);
GetClientRect(rc);
InvalidateRect(CRect(rc.left-iSize, rc.bottom-iSize, rc.right, rc.bottom), FALSE);
CDialog::OnSize(nType, cx, cy);
}
相关问题
- 1. 如何显示非模态CDialog?
- 2. CDialog不显示在任务栏
- 3. 显示图片的大小
- 4. 力双显示2位小数
- 5. 当拖动NSView时失去抓地力
- 6. 阻止CDialog的最大化/最小化按钮的动作
- 7. PhantomJS中的webdriver显示大小
- 8. 在CListCtrl中显示文件的大小
- 9. 火力地堡控制台不显示
- 10. 火力地堡显示数据
- 11. 显示java.lang.NullPointerException而从火力地堡
- 12. 字数,表单大小,在html中显示的东西大小
- 13. 减小UITextView的大小以显示UIButton
- 14. 谷歌地图只显示在它的大小得到调整大小
- 15. Jquery可调整大小显示大小,同时调整大小
- 16. 显示大小和格式
- 17. 调整Xvfb显示大小
- 18. 只显示LV大小?
- 19. AnimatedSprite显示大小错误
- 20. 火力地堡用户界面不显示在火力
- 21. 如何在CDialog弹出窗口中显示系统菜单?
- 22. 显示权力(2,3,4等的权力)?
- 23. FileList在IE9中没有显示大小
- 24. 在django中显示文件大小admin
- 25. 在zeppelin中显示全列大小sql
- 26. 在Python中获取显示器大小
- 27. 大叶地图不显示
- 28. 在地图上显示恒定大小的叠加层
- 29. CSS:改变段落的字体大小显示H1的大小
- 30. Android:身份不显示时显示大小小