我已经看过处理这个东西的绘图的代码(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. 力双显示2位小数
- 4. 当拖动NSView时失去抓地力
- 5. 在CListCtrl中显示文件的大小
- 6. 字数,表单大小,在html中显示的东西大小
- 7. 减小UITextView的大小以显示UIButton
- 8. 显示java.lang.NullPointerException而从火力地堡
- 9. 火力地堡控制台不显示
- 10. 火力地堡显示数据
- 11. 谷歌地图只显示在它的大小得到调整大小
- 12. 阻止CDialog的最大化/最小化按钮的动作
- 13. Jquery可调整大小显示大小,同时调整大小
- 14. AnimatedSprite显示大小错误
- 15. 只显示LV大小?
- 16. 调整Xvfb显示大小
- 17. 显示大小和格式
- 18. 火力地堡用户界面不显示在火力
- 19. 在Python中获取显示器大小
- 20. 在zeppelin中显示全列大小sql
- 21. 在django中显示文件大小admin
- 22. 在地图上显示恒定大小的叠加层
- 23. 显示权力(2,3,4等的权力)?
- 24. Android:身份不显示时显示大小小
- 25. 如何在CDialog弹出窗口中显示系统菜单?
- 26. 问题与火力地堡的Android按键大小
- 27. 使用jQuery调整大小来显示项目的大小
- 28. Redis:显示密钥的数据库大小/大小
- 29. 根据显示区域的大小来计算字体大小
- 30. 显示大陆地图和放大显示国家