完善WTL的分割窗口之SubclassWindow

深入剖析WTL——如何封装Windows界面程序 首先还是让我们来看看WTL是怎样封装应用程序线程的。 和ATL类似,WTL使用一个_Module全局变量来保存全局数据,并通过它来引用应用程序级的代码。在WTL中,该变量是CAppModule或CServerAppModule的实例。后者通常作为COM服务器的应用程序。 每个应用程序都有一个或多个界面线程组成。首先剖析一下WTL是怎样管理只有一个界面线程的(除了Mutli-SDI应用程序)。 阅读详情

     WTL的CSplitterWindow并没有提供SubclassWindow的功能,这样在对话框应用程序中不便于使用,我们为其增加一个SubclassWindow,这样在对话框窗口设计中就可以使用Static控件来代替分割窗口进行设计。

  m_wndSplit.SubclassWindow(GetDlgItem(IDC_SPLIT));
  ......

以下是CSplitterWindow的SubclassWindow代码:

 BOOL SubclassWindow(HWND hWnd)
 {
  ATLASSERT(m_hWnd == NULL);
  ATLASSERT(::IsWindow(hWnd));
#if (_MSC_VER >= 1300)
  BOOL bRet = ATL::CWindowImpl< T, TBase, TWinTraits>::SubclassWindow(hWnd);
#else // !(_MSC_VER >= 1300)
  typedef ATL::CWindowImpl< T, TBase, TWinTraits>   _base;
  BOOL bRet = _base::SubclassWindow(hWnd);
#endif // !(_MSC_VER >= 1300)
  if (bRet)
  {
   const int cchBuff = 8;
   TCHAR szBuffer[cchBuff] = { 0 };
   if(::GetClassName(m_hWnd, szBuffer, cchBuff))
   {
    if(lstrcmpi(szBuffer, _T("static")) == 0)
    {
     ModifyStyle(0, SS_NOTIFY);   // we need this
    }
   }
   GetSystemSettings(false);
   SetSplitterRect();
  }
  return bRet;
 }

SDI MDI和拆分窗口 SDI MDI和拆分窗口 SDI MDI和拆分窗口.pdf 立即下载

相关推荐

SplitterWindow滚动条&视图分割与同步更新&设备与逻辑坐标转换

演示窗口视图分割,及分割视图间数据的同步更新,设备与逻辑坐标转换(坐标映射)的c++源码

WTL 学习笔记 -- CSplitterWindow

导读:   WTL 学习笔记-- CSplitterWindow      SplitterWindow在Win32下已经用得很普遍了,但是并没有这样一个基本控件,用SDK开发应用程序,如果有需要,就得自己写这样一个控件。MFC里提供了这样一个控件,但只能在SDI/MDI里使用,而不能在对话框里使用。      实现这样一个控件倒不难,记得N年前,曾经在PB6里写过这样一个东东。自己实现毕

yingfox的专栏 1033

功能强大的CSplitterCtrl示例程序

功能强大的CSplitterCtrl示例程序,自己根据教程创作。集合了MFC SDI SplitterCtrl 分割窗体 多视图切换等多种功能。是SDI多视图切换及分割不错的首选示例程序

深入剖析WTLWTL框架窗口分析

深入剖析WTLWTL框架窗口分析WTL的基础是ATL。WTL的框架窗口是ATL窗口类的继承。因此,先介绍一下ATL对Windows窗口的封装。 由第一部分介绍的Windows应用程序可以知道创建窗口窗口工作的逻辑是: 1 注册一个窗口类 2 创建该类窗口 3 显示和激活该窗口 4 窗口的消息处理逻辑在窗口函数中。该函数在注册窗口类时指定。 从上面的逻辑可以看出,要封装窗口主要需解决怎样封装

Ei的日志 2561

深入剖析WTLWTL框架窗口分析(4)

superclass是一种生成新的窗口类的方法。它的中心思想是依靠现有的窗口类,克隆出另一个窗口类。被克隆的类可以是Windows预定义的窗口类,这些预定义的窗口类有按钮或下拉框控制等等。也可以是一般的类。克隆的窗口类使用被克隆的类(基类)的窗口消息处理函数。 克隆类可以有自己的窗口消息处理函数,也可以使用基类的窗口处理函数。 需要注意的是,superclass是在注册窗口类时就改变了窗口的行为。

★果冻★的专栏 1916

VisualFC博客关于WTL开发的系列文章索引

VisualFC博客关于WTL开发的系列文章索引2009年05月18日 WTL开发插件VisualFC0.8RC2完成,支持Window72009年04月22日 VCExpress下配置WTL开发环境(更新)2009年03月23日 VisualFC 更新至0.8RC1 增加对VCExpress支持2009年01月20日 WTL AppWizard

visualfc的专栏 3669

使用WTL进行Windows桌面应用开发-第二部

1. 在第一部基础上增加更深入的内容,比如WTL提供的标准Win32窗口和自定义窗口的使用方式.2. 涉及到一些项目开发难题的窗口自定义的解决方案。3. 涉及到Gdiplus绘图的项目开发难题的一些解决方案。4. 推荐使用的第三方跨平台库, 虽然WTL是基于Windows的,但是不妨碍我们使用第三方的库进行开发,减少跨平台开发的学习成本。5. WTL是对Win32窗口的薄封装,库是原微软员工开发,是MFC的替代选择。掌握了WTL表示你已经基本掌握了Win32的窗口编程.6. 使用WTL库完全使用C++开发,不需要其他编程语言,减少学习成本和复杂度,整个WTL是开源可控的。7. WTL库只能使用VS2005以上版本开发, 因为它依赖ATL库. 不同的VS版本对应的atl版本不一致,建议使用VS2010以上版本开发.

WTL分割窗口

WTL提供了3个类用来分隔窗口:CSplitterImpl、CSplitterWindowImpl、CSplitterWindowT。 CSplitterImpl类实现了最主要的分割窗口所需要的函数。 CSplitterWindowImpl继承了CSplitterImpl类,它实现了一个什么都不做的OnEraseBackground函数,还实现了一个OnSize函数,该函数可以...

202

WTL CSplitterWindow 修改

WTL分割窗口CSplitterWindow非常好用。具体参见我的 http://data.blueanywhere.cn/wtl/ 第7章节 但美中不足的是有两点: 没有设置移动范围双击分隔条每次都是默认居中分隔,其实这个很多时候不是本意,双击应该是最恰当的而不是最居中的。 幸好WTL全部有代码,小修小补一下即可满足以上要求。打开相关的文件:c:\YourWTL\include\

拖拖拉拉的册子 1174

WTL 切分窗口简单实现.rar

WTL 切分窗口简单实现, 利用 CSplitterWindow // 创建切分窗口容器 CRect lSplitWndRect; GetClientRect(lSplitWndRect); HWND hWnd = mMainSplitWnd.Create(*this, lSplitWndRect, //CWindow::rcDefault, NULL, CControlWinTraits::GetWndStyle(0), CControlWinTraits::GetWndExStyle(0), IDD_DIALOG_SPLIR_CONTAINER); ATLASSERT(hWnd); mMainSplitWnd.SetSplitterExtendedStyle(SPLIT_PROPORTIONAL); //创建左侧切分窗口 hWnd = mWndLeft.Create(mMainSplitWnd, NULL, NULL, CControlWinTraits::GetWndStyle(0), CControlWinTraits::GetWndExStyle(0), IDD_DIALOG_SPLIT_LEFT); ATLASSERT(hWnd); hWnd = mWndRight.Create(mMainSplitWnd, NULL, NULL, CControlWinTraits::GetWndStyle(0), CControlWinTraits::GetWndExStyle(0), IDD_DIALOG_SPLIT_RIGHT); ATLASSERT(hWnd);

SubClassWindow详解

许多Windows程序员都是跳过SDK直接进行RAD开发工具[或VC,我想VC应不属于RAD]的学习,有些人可能对子类化机制比较陌生。 我们先看看什么是Windows的子类化。 Windows给我们或是说给它自己定义了许多丰富的通用控件,如:Edit、ComboBox 、ListBox……等,这些控件功能丰富,能为我们开发工作带来极大方面,试想:我们单单是自己实现一个EDIT控件是多么的艰难!但

sunliangyuan的专栏 1万+

有关SubClassWindow的用法

   还是用不对,到底那里出错了啊!

Socrates的专栏 875

如何子类化(SubclassWindow)窗体

窗口子类化的作用 窗口子类化技术最大的特点就是能够截取Windows的消息。一旦用户自定义的窗口函数截取了传向原窗口函数的消息,就可以对被截取的消息进行如下处理:将其传给原来的窗口函数。这是对大多数消息应该采取的措施,因为子类通常只对原来的窗口特性作少量的改动截取该消息,阻止其向原窗口函数发送。修改该消息,修改完毕以后再向原窗口函数发送。Windows SDK提供了一些设计好的

jia_xiaoxin的专栏 2901

WTL学习之WTL窗口的实现

作者:朱金灿 来源:http://blog.csdn.net/clever101 继续是WTL的学习。使用WTL创建一个窗口很简单: class CMyWindow : public CFrameWindowImpl&lt;CMyWindow&gt; { public: // First WTL window为窗口类名,IDC_WTLWIN为菜单资源ID,类似于MFC的//IDR_MAIN...

tempsitegoogle 387
上一篇: 完善WTL的分隔窗口控制(补充)
下一篇: VisualFC0.8版本意见征集
visualfc
博客等级 码龄19年 134粉丝 64原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值