当窗口设置标题栏时,鼠标等控件可以相应,edit无法响应。

主要和WindowImplBase::OnNcHitTest 虚函数有关。

LRESULT WindowImplBase::OnNcHitTest(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
{
POINT pt; pt.x = GET_X_LPARAM(lParam); pt.y = GET_Y_LPARAM(lParam);
::ScreenToClient(*this, &pt);

RECT rcClient;
::GetClientRect(*this, &rcClient);

if( !::IsZoomed(*this) )
{
RECT rcSizeBox = m_PaintManager.GetSizeBox();
if( pt.y < rcClient.top + rcSizeBox.top )
{
if( pt.x < rcClient.left + rcSizeBox.left ) return HTTOPLEFT;
if( pt.x > rcClient.right - rcSizeBox.right ) return HTTOPRIGHT;
return HTTOP;
}
else if( pt.y > rcClient.bottom - rcSizeBox.bottom )
{
if( pt.x < rcClient.left + rcSizeBox.left ) return HTBOTTOMLEFT;
if( pt.x > rcClient.right - rcSizeBox.right ) return HTBOTTOMRIGHT;
return HTBOTTOM;
}

if( pt.x < rcClient.left + rcSizeBox.left ) return HTLEFT;
if( pt.x > rcClient.right - rcSizeBox.right ) return HTRIGHT;
}

RECT rcCaption = m_PaintManager.GetCaptionRect();
if( pt.x >= rcClient.left + rcCaption.left && pt.x < rcClient.right - rcCaption.right \
&& pt.y >= rcCaption.top && pt.y < rcCaption.bottom ) {
CControlUI* pControl = static_cast<CControlUI*>(m_PaintManager.FindControl(pt));
if( pControl && _tcsicmp(pControl->GetClass(), _T("ButtonUI")) != 0 &&
_tcsicmp(pControl->GetClass(), _T("OptionUI")) != 0 &&
_tcsicmp(pControl->GetClass(), _T("TextUI")) != 0 &&
_tcsicmp(pControl->GetClass(), _T("SliderUI")) != 0)
return HTCAPTION;
}

return HTCLIENT;
}

在返回caption区域时,只排除了ButtonUI、OptionUI、TextUI、SliderUI四种控件。

所以解决办法是:在派生自WindowImplBase的对话框中重写OnNcHitTest,将EditUI加进去即可。

最新文章

  1. IDEA中maven搭建Spring+SpringMVC+mybatis项目
  2. asp.net mvc 实现博客的时间分类管理
  3. NuGet学习笔记(3) 搭建属于自己的NuGet服务器
  4. Topcoder SRM 626 DIV2 FixedDiceGameDiv2
  5. 怎样让HTML5调用手机摄像头拍照——实践就是一切
  6. ES6笔记③
  7. 详细的css命名规则,专业点吧
  8. PHP 端口号 是否 被占用 以及 解决方法
  9. redis单机主从搭建
  10. 【Java学习笔记之十三】初探Java面向对象的过程及代码实现
  11. hadoop fs:du统计hdfs文件(目录下文件)大小的用法
  12. Linux-Shell编程之求命令行中所有整数之和
  13. DocX开源WORD操作组件的学习系列二
  14. jdbc访问pipelinedb
  15. HDU 2612 (2次BFS,有点小细节)
  16. OSLab多线程
  17. Linux修改SSH登录端口
  18. html5-section元素
  19. jdk1.8中获取项目绝对路径和项目路径
  20. 如何隐藏掉SQL Server中自带系统数据库,数据表,存储过程等显示文件,只显示用户的数据库,数据表等文件

热门文章

  1. Material Design Lite,简洁惊艳的前端工具箱 之 容器组件。
  2. C# ComBox 垂直滚动条
  3. SQL语句 还原未知逻辑名称数据库
  4. setAlpha与View Layer关系
  5. python学习笔记之类class(第六天)
  6. mysql 修改密码
  7. js 判断移动设备、pc端、android、iPhone、是否为微信、微博、qq空间
  8. [mysql]throw exception
  9. Git使用指南(2)——工作区,暂存区,版本库
  10. SharePoint常用目录介绍