Click here to Skip to main content
Click here to Skip to main content

ZSplitter : adding automatic splitting for dialog controls

By , 28 May 2001
 

Introduction

The ZSplitterDlg and ZSplitter classes help you to add splitters to your dialog, property sheet or any other window. It splits your controls and makes them movable and resizeable. I think this way is better than "auto size" contol: it adds a "docking" opportunity. Moreover, one more control added that add "auto size" option. Finally, you can integrate the ZSplitterDlg with a resizable dialog (for example CResizableDialog by Paolo Messina).

Note that you shouldn't add anything to your resources and shouldn't describe the relations between controls. Just make the corresponding size and position of your controls and use the functions:

void addControls(int count, bool connectVertical, ...);
void addControl(int id);

Demo project shows using these automatically added controls in CDialog, CPropertyPage, CView and CFormView classes.

Sample Image

Using the class

The simplest way is to use the ZSplitterDlgImpl template. You should change:

  • The parent of your dialog ot view class,
  • the constructor implementation,
  • the second parameter in BEGIN_MESSAGE_MAP macros, and
  • the "on init" function of your window.
// in header
class CTestDlg1 : public ZSplitterDlgImpl<CPropertyPage>

// in source
CTestDlg1::CTestDlg1() : /*...*/ ZSplitterDlgImpl<CPropertyPage>(CTestDlg1::IDD) {}

BEGIN_MESSAGE_MAP(CTestDlg1, ZSplitterDlgImpl<CPropertyPage>)
	//	...
END_MESSAGE_MAP()

BOOL CTestDlg1::OnInitDialog() 
{
	// ... and use addControl(s) function here
	init();
	// ...
}

The ZSplitterDlgImpl template has a second parameter (ZSplitter2 by default). ZSplitter2 is the implementation of a spliter control. It has a virtual function OnPaint() - and you can change it's realisation to have different view of your control (see CMyView1 class in demo project).

The ZSplitterDlgImpl template helps you to implement splitter controls but you can use its base ZSplitterDlg class (look for CTestDlg2 class) in demo project.

I remade a little CResizableDialog with the permission of the author and you can use it with my splitters: use the ZSplitterDlgResizable class for this job. (look for CDemoDlg class) in the demo project.

resizable sample

This is a sample of your dialog in resource editor:

in vc++ editor

And user can change it in such way in runtime.

after user manipulations

You should use the addControls or addControl functions to add one control to the "splitter set" or a group of controls: they will move together. This is an example which you seen above

  addControls(2,false,IDC_LIST6,IDC_LIST7);
  addControls(2,true,IDC_LIST1,IDC_LIST8);
  addControl(IDC_LIST9);
  addControl(IDC_LIST2);
  addControl(IDC_LIST3);
  addControl(IDC_LIST4);
  addControl(IDC_LIST5);

Moreover you can manually add a ZSplitter class (the most common splitter controls) to a page. Look at the images and in the CTestDlg3 class of the demo project for details.

before moving after moving

To Do list

I'd like to make the look (color, size, effects) of the splitter more presentable. So I want to get comments from you. First of all: is this technique useful to you?

Note

Make sure to check out the my web site which is more likely to have updates and betas:
http://www.zmike.net

License

This article has no explicit license attached to it but may contain usage terms in the article text or the download files themselves. If in doubt please contact the author via the discussion board below.

A list of licenses authors might use can be found here

About the Author

Mike Melnikov
Web Developer
Russian Federation Russian Federation
Member
Mike has been programming in C/C++ for 11 years and Visual C++/MFC for 4 years. His background includes pure and applied mathematics, engineering and physics, and he is currently based in Moscow, Russia.

Sign Up to vote   Poor Excellent
Add a reason or comment to your vote: x
Votes of 3 or less require a comment

Comments and Discussions

 
You must Sign In to use this message board.
Search this forum  
    Spacing  Noise  Layout  Per page   
QuestionThe compiler through not ah mistake too muchmember37240589826 Aug '12 - 1:11 
Hi,You this example is very good ,but The compiler through not Laugh | :laugh: ah mistake too much
Questionthe demo can't compile under VS2008memberpj220_200620 May '12 - 19:23 
1>------ 已启动生成: 项目: splitter, 配置: Debug Win32 ------
1>正在编译...
1>StdAfx.cpp
1> WINVER not defined. Defaulting to 0x0600 (Windows Vista)
1>正在编译...
1>DemoDlg.cpp
1>e:\zsplitter_demo\splitter\zsplitterdlg.h(162) : error C2039: “_GetBaseMessageMap”: 不是“ZSplitterDlgImpl”的成员
1>e:\zsplitter_demo\splitter\zsplitterdlg.h(162) : error C2039: “messageMap”: 不是“ZSplitterDlgImpl”的成员
1>e:\zsplitter_demo\splitter\zsplitterdlg.h(165) : error C2039: “_messageEntries”: 不是“ZSplitterDlgImpl”的成员
1>e:\zsplitter_demo\splitter\zsplitterdlg.h(165) : error C2653: “TheBaseClass”: 不是类或命名空间名称
1>e:\zsplitter_demo\splitter\zsplitterdlg.h(165) : error C2065: “GetThisMessageMap”: 未声明的标识符
1>e:\zsplitter_demo\splitter\zsplitterdlg.h(165) : error C2065: “_messageEntries”: 未声明的标识符
1>e:\zsplitter_demo\splitter\zsplitterdlg.h(165) : error C2059: 语法错误 : “return”
1>e:\zsplitter_demo\splitter\zsplitterdlg.h(165) : error C2059: 语法错误 : “}”
1>e:\zsplitter_demo\splitter\zsplitterdlg.h(165) : error C2143: 语法错误 : 缺少“;”(在“}”的前面)
1>e:\zsplitter_demo\splitter\zsplitterdlg.h(165) : error C2059: 语法错误 : “}”
1>e:\zsplitter_demo\splitter\zsplitterdlg.h(165) : warning C4193: #pragma warning(pop) : 没有匹配的“#pragma warning(push)”
1>e:\zsplitter_demo\splitter\resizabledialog.h(146) : error C2065: “NOANCHOR”: 未声明的标识符
1>e:\zsplitter_demo\splitter\resizabledialog.h(148) : error C2065: “NOANCHOR”: 未声明的标识符
1>e:\zsplitter_demo\splitter\demodlg.cpp(55) : error C2065: “BOTTOM_RIGHT”: 未声明的标识符
1>e:\zsplitter_demo\splitter\demodlg.cpp(56) : error C2065: “BOTTOM_RIGHT”: 未声明的标识符
1>e:\zsplitter_demo\splitter\demodlg.cpp(58) : error C2065: “TOP_RIGHT”: 未声明的标识符
1>e:\zsplitter_demo\splitter\demodlg.cpp(60) : error C2065: “TOP_LEFT”: 未声明的标识符
1>e:\zsplitter_demo\splitter\demodlg.cpp(61) : error C2065: “TOP_LEFT”: 未声明的标识符
1>e:\zsplitter_demo\splitter\demodlg.cpp(61) : error C2065: “BOTTOM_RIGHT”: 未声明的标识符
1>e:\zsplitter_demo\splitter\demodlg.cpp(63) : error C2065: “BOTTOM_LEFT”: 未声明的标识符
1>e:\zsplitter_demo\splitter\demodlg.cpp(64) : error C2065: “BOTTOM_LEFT”: 未声明的标识符
1>e:\zsplitter_demo\splitter\demodlg.cpp(65) : error C2065: “BOTTOM_LEFT”: 未声明的标识符
1>e:\zsplitter_demo\splitter\demodlg.cpp(65) : error C2065: “BOTTOM_RIGHT”: 未声明的标识符
1>MyDocument.cpp
1>MyFrame.cpp
1>MyView1.cpp
1>e:\zsplitter_demo\splitter\zsplitterdlg.h(162) : error C2039: “_GetBaseMessageMap”: 不是“ZSplitterDlgImpl”的成员
1>e:\zsplitter_demo\splitter\zsplitterdlg.h(162) : error C2039: “messageMap”: 不是“ZSplitterDlgImpl”的成员
1>e:\zsplitter_demo\splitter\zsplitterdlg.h(165) : error C2039: “_messageEntries”: 不是“ZSplitterDlgImpl”的成员
1>e:\zsplitter_demo\splitter\zsplitterdlg.h(165) : error C2653: “TheBaseClass”: 不是类或命名空间名称
1>e:\zsplitter_demo\splitter\zsplitterdlg.h(165) : error C2065: “GetThisMessageMap”: 未声明的标识符
1>e:\zsplitter_demo\splitter\zsplitterdlg.h(165) : error C2065: “_messageEntries”: 未声明的标识符
1>e:\zsplitter_demo\splitter\zsplitterdlg.h(165) : error C2059: 语法错误 : “return”
1>e:\zsplitter_demo\splitter\zsplitterdlg.h(165) : error C2059: 语法错误 : “}”
1>e:\zsplitter_demo\splitter\zsplitterdlg.h(165) : error C2143: 语法错误 : 缺少“;”(在“}”的前面)
1>e:\zsplitter_demo\splitter\zsplitterdlg.h(165) : error C2059: 语法错误 : “}”
1>e:\zsplitter_demo\splitter\zsplitterdlg.h(165) : warning C4193: #pragma warning(pop) : 没有匹配的“#pragma warning(push)”
1>e:\zsplitter_demo\splitter\myview1.h(19) : error C2059: 语法错误 : “public”
1>e:\zsplitter_demo\splitter\myview1.h(20) : error C2143: 语法错误 : 缺少“;”(在“{”的前面)
1>e:\zsplitter_demo\splitter\myview1.h(20) : error C2447: “{”: 缺少函数标题(是否是老式的形式表?)
1>e:\zsplitter_demo\splitter\myview1.h(30) : error C2065: “MyZSplitter”: 未声明的标识符
1>e:\zsplitter_demo\splitter\myview1.h(31) : error C2955: “ZSplitterDlgImpl”: 使用类 模板 需要 模板 参数列表
1> e:\zsplitter_demo\splitter\zsplitterdlg.h(138) : 参见“ZSplitterDlgImpl”的声明
1>e:\zsplitter_demo\splitter\myview1.cpp(22) : fatal error C1903: 无法从以前的错误中恢复;正在停止编译
1>MyView2.cpp
1>e:\zsplitter_demo\splitter\zsplitterdlg.h(162) : error C2039: “_GetBaseMessageMap”: 不是“ZSplitterDlgImpl”的成员
1>e:\zsplitter_demo\splitter\zsplitterdlg.h(162) : error C2039: “messageMap”: 不是“ZSplitterDlgImpl”的成员
1>e:\zsplitter_demo\splitter\zsplitterdlg.h(165) : error C2039: “_messageEntries”: 不是“ZSplitterDlgImpl”的成员
1>e:\zsplitter_demo\splitter\zsplitterdlg.h(165) : error C2653: “TheBaseClass”: 不是类或命名空间名称
1>e:\zsplitter_demo\splitter\zsplitterdlg.h(165) : error C2065: “GetThisMessageMap”: 未声明的标识符
1>e:\zsplitter_demo\splitter\zsplitterdlg.h(165) : error C2065: “_messageEntries”: 未声明的标识符
1>e:\zsplitter_demo\splitter\zsplitterdlg.h(165) : error C2059: 语法错误 : “return”
1>e:\zsplitter_demo\splitter\zsplitterdlg.h(165) : error C2059: 语法错误 : “}”
1>e:\zsplitter_demo\splitter\zsplitterdlg.h(165) : error C2143: 语法错误 : 缺少“;”(在“}”的前面)
1>e:\zsplitter_demo\splitter\zsplitterdlg.h(165) : error C2059: 语法错误 : “}”
1>e:\zsplitter_demo\splitter\zsplitterdlg.h(165) : warning C4193: #pragma warning(pop) : 没有匹配的“#pragma warning(push)”
1>e:\zsplitter_demo\splitter\myview2.h(19) : error C2059: 语法错误 : “public”
1>e:\zsplitter_demo\splitter\myview2.h(20) : error C2143: 语法错误 : 缺少“;”(在“{”的前面)
1>e:\zsplitter_demo\splitter\myview2.h(20) : error C2447: “{”: 缺少函数标题(是否是老式的形式表?)
1>e:\zsplitter_demo\splitter\myview2.cpp(22) : error C2653: “CMyView2”: 不是类或命名空间名称
1>e:\zsplitter_demo\splitter\myview2.cpp(22) : error C2061: 语法错误 : 标识符“CMyView2”
1>e:\zsplitter_demo\splitter\myview2.cpp(22) : error C2653: “CMyView2”: 不是类或命名空间名称
1>e:\zsplitter_demo\splitter\myview2.cpp(22) : error C2653: “CMyView2”: 不是类或命名空间名称
1>e:\zsplitter_demo\splitter\myview2.cpp(22) : error C2496: “classCMyView2”: “selectany”只能应用到有外部链接的数据项
1>e:\zsplitter_demo\splitter\myview2.cpp(22) : error C2027: 使用了未定义类型“CMyView2”
1> e:\zsplitter_demo\splitter\myview2.cpp(22) : 参见“CMyView2”的声明
1>e:\zsplitter_demo\splitter\myview2.cpp(22) : error C2027: 使用了未定义类型“CMyView2”
1> e:\zsplitter_demo\splitter\myview2.cpp(22) : 参见“CMyView2”的声明
1>e:\zsplitter_demo\splitter\myview2.cpp(22) : error C2027: 使用了未定义类型“CMyView2”
1> e:\zsplitter_demo\splitter\myview2.cpp(22) : 参见“CMyView2”的声明
1>e:\zsplitter_demo\splitter\myview2.cpp(22) : error C2027: 使用了未定义类型“CMyView2”
1> e:\zsplitter_demo\splitter\myview2.cpp(22) : 参见“CMyView2”的声明
1>e:\zsplitter_demo\splitter\myview2.cpp(22) : error C2027: 使用了未定义类型“CMyView2”
1> e:\zsplitter_demo\splitter\myview2.cpp(22) : 参见“CMyView2”的声明
1>e:\zsplitter_demo\splitter\myview2.cpp(22) : error C2027: 使用了未定义类型“CMyView2”
1> e:\zsplitter_demo\splitter\myview2.cpp(22) : 参见“CMyView2”的声明
1>e:\zsplitter_demo\splitter\myview2.cpp(22) : error C2270: “GetRuntimeClass”: 非成员函数上不允许修饰符
1>e:\zsplitter_demo\splitter\myview2.cpp(22) : error C2027: 使用了未定义类型“CMyView2”
1> e:\zsplitter_demo\splitter\myview2.cpp(22) : 参见“CMyView2”的声明
1>e:\zsplitter_demo\splitter\myview2.cpp(23) : error C2027: 使用了未定义类型“CMyView2”
1> e:\zsplitter_demo\splitter\myview2.cpp(22) : 参见“CMyView2”的声明
1>e:\zsplitter_demo\splitter\myview2.cpp(23) : error C2059: 语法错误 : “)”
1>e:\zsplitter_demo\splitter\myview2.cpp(24) : error C2027: 使用了未定义类型“CMyView2”
1> e:\zsplitter_demo\splitter\myview2.cpp(22) : 参见“CMyView2”的声明
1>e:\zsplitter_demo\splitter\myview2.cpp(25) : error C2470: “IDD”: 看起来像函数定义,但没有参数列表;跳过明显的函数体
1>e:\zsplitter_demo\splitter\myview2.cpp(31) : error C2027: 使用了未定义类型“CMyView2”
1> e:\zsplitter_demo\splitter\myview2.cpp(22) : 参见“CMyView2”的声明
1>e:\zsplitter_demo\splitter\myview2.cpp(31) : error C2059: 语法错误 : “)”
1>e:\zsplitter_demo\splitter\myview2.cpp(32) : error C2143: 语法错误 : 缺少“;”(在“{”的前面)
1>e:\zsplitter_demo\splitter\myview2.cpp(32) : error C2447: “{”: 缺少函数标题(是否是老式的形式表?)
1>e:\zsplitter_demo\splitter\myview2.cpp(35) : error C2027: 使用了未定义类型“CMyView2”
1> e:\zsplitter_demo\splitter\myview2.cpp(22) : 参见“CMyView2”的声明
1>e:\zsplitter_demo\splitter\myview2.cpp(37) : error C2248: “CWnd::DoDataExchange”: 无法访问 protected 成员(在“CWnd”类中声明)
1> c:\program files\microsoft visual studio 9.0\vc\atlmfc\include\afxwin.h(2857) : 参见“CWnd::DoDataExchange”的声明
1> c:\program files\microsoft visual studio 9.0\vc\atlmfc\include\afxwin.h(2089) : 参见“CWnd”的声明
1>e:\zsplitter_demo\splitter\myview2.cpp(37) : error C2352: “CWnd::DoDataExchange”: 非静态成员函数的非法调用
1> c:\program files\microsoft visual studio 9.0\vc\atlmfc\include\afxwin.h(2857) : 参见“CWnd::DoDataExchange”的声明
1>e:\zsplitter_demo\splitter\myview2.cpp(44) : error C2027: 使用了未定义类型“CMyView2”
1> e:\zsplitter_demo\splitter\myview2.cpp(22) : 参见“CMyView2”的声明
1>e:\zsplitter_demo\splitter\myview2.cpp(44) : error C2270: “GetMessageMap”: 非成员函数上不允许修饰符
1>e:\zsplitter_demo\splitter\myview2.cpp(44) : error C3861: “GetThisMessageMap”: 找不到标识符
1>e:\zsplitter_demo\splitter\myview2.cpp(44) : error C2027: 使用了未定义类型“CMyView2”
1> e:\zsplitter_demo\splitter\myview2.cpp(22) : 参见“CMyView2”的声明
1>e:\zsplitter_demo\splitter\myview2.cpp(46) : error C2065: “OnButton1”: 未声明的标识符
1>e:\zsplitter_demo\splitter\myview2.cpp(48) : error C2248: “ZSplitterDlgImpl::GetThisMessageMap”: 无法访问 protected 成员(在“ZSplitterDlgImpl”类中声明)
1> with
1> [
1> T=CFormView
1> ]
1> e:\zsplitter_demo\splitter\zsplitterdlg.h(156) : 参见“ZSplitterDlgImpl::GetThisMessageMap”的声明
1> with
1> [
1> T=CFormView
1> ]
1>e:\zsplitter_demo\splitter\myview2.cpp(53) : error C2027: 使用了未定义类型“CMyView2”
1> e:\zsplitter_demo\splitter\myview2.cpp(22) : 参见“CMyView2”的声明
1>e:\zsplitter_demo\splitter\myview2.cpp(55) : error C3861: “GetDocument”: 找不到标识符
1>e:\zsplitter_demo\splitter\myview2.cpp(56) : error C2664: “AfxAssertValidObject”: 不能将参数 1 从“CMyView2 *”转换为“const CObject *”
1> 与指向的类型无关;转换要求 reinterpret_cast、C 样式转换或函数样式转换
1>e:\zsplitter_demo\splitter\myview2.cpp(61) : error C2027: 使用了未定义类型“CMyView2”
1> e:\zsplitter_demo\splitter\myview2.cpp(22) : 参见“CMyView2”的声明
1>e:\zsplitter_demo\splitter\myview2.cpp(62) : error C2270: “AssertValid”: 非成员函数上不允许修饰符
1>e:\zsplitter_demo\splitter\myview2.cpp(63) : error C2352: “CFormView::AssertValid”: 非静态成员函数的非法调用
1> c:\program files\microsoft visual studio 9.0\vc\atlmfc\include\afxext.h(774) : 参见“CFormView::AssertValid”的声明
1>e:\zsplitter_demo\splitter\myview2.cpp(66) : error C2027: 使用了未定义类型“CMyView2”
1> e:\zsplitter_demo\splitter\myview2.cpp(22) : 参见“CMyView2”的声明
1>e:\zsplitter_demo\splitter\myview2.cpp(67) : error C2270: “Dump”: 非成员函数上不允许修饰符
1>e:\zsplitter_demo\splitter\myview2.cpp(68) : error C2352: “CFormView::Dump”: 非静态成员函数的非法调用
1> c:\program files\microsoft visual studio 9.0\vc\atlmfc\include\afxext.h(775) : 参见“CFormView::Dump”的声明
1>e:\zsplitter_demo\splitter\myview2.cpp(75) : error C2027: 使用了未定义类型“CMyView2”
1> e:\zsplitter_demo\splitter\myview2.cpp(22) : 参见“CMyView2”的声明
1>e:\zsplitter_demo\splitter\myview2.cpp(89) : error C2027: 使用了未定义类型“CMyView2”
1> e:\zsplitter_demo\splitter\myview2.cpp(22) : 参见“CMyView2”的声明
1>e:\zsplitter_demo\splitter\myview2.cpp(91) : error C2352: “CFormView::OnInitialUpdate”: 非静态成员函数的非法调用
1> c:\program files\microsoft visual studio 9.0\vc\atlmfc\include\afxext.h(777) : 参见“CFormView::OnInitialUpdate”的声明
1>e:\zsplitter_demo\splitter\myview2.cpp(93) : error C3861: “addControl”: 找不到标识符
1>e:\zsplitter_demo\splitter\myview2.cpp(94) : error C3861: “addControl”: 找不到标识符
1>e:\zsplitter_demo\splitter\myview2.cpp(95) : error C3861: “addControl”: 找不到标识符
1>e:\zsplitter_demo\splitter\myview2.cpp(97) : error C3861: “init”: 找不到标识符
1>ResizableDialog.cpp
1>e:\zsplitter_demo\splitter\resizabledialog.cpp(69) : error C2440: “static_cast”: 无法从“UINT (__thiscall CResizableDialog::* )(CPoint)”转换为“LRESULT (__thiscall CWnd::* )(CPoint)”
1> 从基类型到派生类型的强制转换需要 dynamic_cast 或 static_cast
1>e:\zsplitter_demo\splitter\resizabledialog.cpp(216) : warning C4554: “&”: 检查运算符优先级可能存在的错误;使用圆括号阐明优先级
1>splitter.cpp
1>e:\zsplitter_demo\splitter\zsplitterdlg.h(162) : error C2039: “_GetBaseMessageMap”: 不是“ZSplitterDlgImpl”的成员
1>e:\zsplitter_demo\splitter\zsplitterdlg.h(162) : error C2039: “messageMap”: 不是“ZSplitterDlgImpl”的成员
1>e:\zsplitter_demo\splitter\zsplitterdlg.h(165) : error C2039: “_messageEntries”: 不是“ZSplitterDlgImpl”的成员
1>e:\zsplitter_demo\splitter\zsplitterdlg.h(165) : error C2653: “TheBaseClass”: 不是类或命名空间名称
1>e:\zsplitter_demo\splitter\zsplitterdlg.h(165) : error C2065: “GetThisMessageMap”: 未声明的标识符
1>e:\zsplitter_demo\splitter\zsplitterdlg.h(165) : error C2065: “_messageEntries”: 未声明的标识符
1>e:\zsplitter_demo\splitter\zsplitterdlg.h(165) : error C2059: 语法错误 : “return”
1>e:\zsplitter_demo\splitter\zsplitterdlg.h(165) : error C2059: 语法错误 : “}”
1>e:\zsplitter_demo\splitter\zsplitterdlg.h(165) : error C2143: 语法错误 : 缺少“;”(在“}”的前面)
1>e:\zsplitter_demo\splitter\zsplitterdlg.h(165) : error C2059: 语法错误 : “}”
1>e:\zsplitter_demo\splitter\zsplitterdlg.h(165) : warning C4193: #pragma warning(pop) : 没有匹配的“#pragma warning(push)”
1>e:\zsplitter_demo\splitter\myview1.h(19) : error C2059: 语法错误 : “public”
1>e:\zsplitter_demo\splitter\myview1.h(20) : error C2143: 语法错误 : 缺少“;”(在“{”的前面)
1>e:\zsplitter_demo\splitter\myview1.h(20) : error C2447: “{”: 缺少函数标题(是否是老式的形式表?)
1>e:\zsplitter_demo\splitter\myview1.h(30) : error C2065: “MyZSplitter”: 未声明的标识符
1>e:\zsplitter_demo\splitter\myview1.h(31) : error C2955: “ZSplitterDlgImpl”: 使用类 模板 需要 模板 参数列表
1> e:\zsplitter_demo\splitter\zsplitterdlg.h(138) : 参见“ZSplitterDlgImpl”的声明
1>splitterDlg.cpp
1>e:\zsplitter_demo\splitter\zsplitterdlg.h(162) : error C2039: “_GetBaseMessageMap”: 不是“ZSplitterDlgImpl”的成员
1>e:\zsplitter_demo\splitter\zsplitterdlg.h(162) : error C2039: “messageMap”: 不是“ZSplitterDlgImpl”的成员
1>e:\zsplitter_demo\splitter\zsplitterdlg.h(165) : error C2039: “_messageEntries”: 不是“ZSplitterDlgImpl”的成员
1>e:\zsplitter_demo\splitter\zsplitterdlg.h(165) : error C2653: “TheBaseClass”: 不是类或命名空间名称
1>e:\zsplitter_demo\splitter\zsplitterdlg.h(165) : error C2065: “GetThisMessageMap”: 未声明的标识符
1>e:\zsplitter_demo\splitter\zsplitterdlg.h(165) : error C2065: “_messageEntries”: 未声明的标识符
1>e:\zsplitter_demo\splitter\zsplitterdlg.h(165) : error C2059: 语法错误 : “return”
1>e:\zsplitter_demo\splitter\zsplitterdlg.h(165) : error C2059: 语法错误 : “}”
1>e:\zsplitter_demo\splitter\zsplitterdlg.h(165) : error C2143: 语法错误 : 缺少“;”(在“}”的前面)
1>e:\zsplitter_demo\splitter\zsplitterdlg.h(165) : error C2059: 语法错误 : “}”
1>e:\zsplitter_demo\splitter\zsplitterdlg.h(165) : warning C4193: #pragma warning(pop) : 没有匹配的“#pragma warning(push)”
1>e:\zsplitter_demo\splitter\splitterdlg.h(17) : error C2059: 语法错误 : “public”
1>e:\zsplitter_demo\splitter\splitterdlg.h(18) : error C2143: 语法错误 : 缺少“;”(在“{”的前面)
1>e:\zsplitter_demo\splitter\splitterdlg.h(18) : error C2447: “{”: 缺少函数标题(是否是老式的形式表?)
1>e:\zsplitter_demo\splitter\splitterdlg.cpp(62) : error C2653: “CSplitterDlg”: 不是类或命名空间名称
1>e:\zsplitter_demo\splitter\splitterdlg.cpp(62) : error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int
1>e:\zsplitter_demo\splitter\splitterdlg.cpp(62) : error C2653: “CSplitterDlg”: 不是类或命名空间名称
1>e:\zsplitter_demo\splitter\splitterdlg.cpp(62) : error C2065: “IDD”: 未声明的标识符
1>e:\zsplitter_demo\splitter\splitterdlg.cpp(63) : error C2550: “CSplitterDlg”: 构造函数初始值设定项列表只能在构造函数定义中使用
1>e:\zsplitter_demo\splitter\splitterdlg.cpp(68) : error C2065: “m_hIcon”: 未声明的标识符
1>e:\zsplitter_demo\splitter\splitterdlg.cpp(69) : warning C4508: “CSplitterDlg”: 函数应返回一个值;假定“void”返回类型
1>e:\zsplitter_demo\splitter\splitterdlg.cpp(71) : error C2653: “CSplitterDlg”: 不是类或命名空间名称
1>e:\zsplitter_demo\splitter\splitterdlg.cpp(73) : error C2248: “CWnd::DoDataExchange”: 无法访问 protected 成员(在“CWnd”类中声明)
1> c:\program files\microsoft visual studio 9.0\vc\atlmfc\include\afxwin.h(2857) : 参见“CWnd::DoDataExchange”的声明
1> c:\program files\microsoft visual studio 9.0\vc\atlmfc\include\afxwin.h(2089) : 参见“CWnd”的声明
1>e:\zsplitter_demo\splitter\splitterdlg.cpp(73) : error C2352: “CWnd::DoDataExchange”: 非静态成员函数的非法调用
1> c:\program files\microsoft visual studio 9.0\vc\atlmfc\include\afxwin.h(2857) : 参见“CWnd::DoDataExchange”的声明
1>e:\zsplitter_demo\splitter\splitterdlg.cpp(79) : error C2653: “CSplitterDlg”: 不是类或命名空间名称
1>e:\zsplitter_demo\splitter\splitterdlg.cpp(79) : error C2270: “GetMessageMap”: 非成员函数上不允许修饰符
1>e:\zsplitter_demo\splitter\splitterdlg.cpp(79) : error C3861: “GetThisMessageMap”: 找不到标识符
1>e:\zsplitter_demo\splitter\splitterdlg.cpp(79) : error C2653: “CSplitterDlg”: 不是类或命名空间名称
1>e:\zsplitter_demo\splitter\splitterdlg.cpp(79) : error C2146: 语法错误 : 缺少“;”(在标识符“ThisClass”的前面)
1>e:\zsplitter_demo\splitter\splitterdlg.cpp(79) : error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int
1>e:\zsplitter_demo\splitter\splitterdlg.cpp(79) : error C2065: “ThisClass”: 未声明的标识符
1>e:\zsplitter_demo\splitter\splitterdlg.cpp(81) : error C2653: “ThisClass”: 不是类或命名空间名称
1>e:\zsplitter_demo\splitter\splitterdlg.cpp(81) : error C2065: “OnSysCommand”: 未声明的标识符
1>e:\zsplitter_demo\splitter\splitterdlg.cpp(82) : error C2653: “ThisClass”: 不是类或命名空间名称
1>e:\zsplitter_demo\splitter\splitterdlg.cpp(82) : error C2065: “OnPaint”: 未声明的标识符
1>e:\zsplitter_demo\splitter\splitterdlg.cpp(83) : error C2653: “ThisClass”: 不是类或命名空间名称
1>e:\zsplitter_demo\splitter\splitterdlg.cpp(83) : error C2065: “OnQueryDragIcon”: 未声明的标识符
1>e:\zsplitter_demo\splitter\splitterdlg.cpp(85) : error C2248: “ZSplitterDlgImpl::GetThisMessageMap”: 无法访问 protected 成员(在“ZSplitterDlgImpl”类中声明)
1> with
1> [
1> T=CDialog
1> ]
1> e:\zsplitter_demo\splitter\zsplitterdlg.h(156) : 参见“ZSplitterDlgImpl::GetThisMessageMap”的声明
1> with
1> [
1> T=CDialog
1> ]
1>e:\zsplitter_demo\splitter\splitterdlg.cpp(90) : error C2653: “CSplitterDlg”: 不是类或命名空间名称
1>e:\zsplitter_demo\splitter\splitterdlg.cpp(92) : error C2352: “CDialog::OnInitDialog”: 非静态成员函数的非法调用
1> c:\program files\microsoft visual studio 9.0\vc\atlmfc\include\afxwin.h(3113) : 参见“CDialog::OnInitDialog”的声明
1>e:\zsplitter_demo\splitter\splitterdlg.cpp(100) : error C2660: “GetSystemMenu”: 函数不接受 1 个参数
1>e:\zsplitter_demo\splitter\splitterdlg.cpp(114) : error C2065: “m_hIcon”: 未声明的标识符
1>e:\zsplitter_demo\splitter\splitterdlg.cpp(114) : error C3861: “SetIcon”: 找不到标识符
1>e:\zsplitter_demo\splitter\splitterdlg.cpp(115) : error C2065: “m_hIcon”: 未声明的标识符
1>e:\zsplitter_demo\splitter\splitterdlg.cpp(115) : error C3861: “SetIcon”: 找不到标识符
1>e:\zsplitter_demo\splitter\splitterdlg.cpp(117) : error C3861: “addControl”: 找不到标识符
1>e:\zsplitter_demo\splitter\splitterdlg.cpp(118) : error C3861: “init”: 找不到标识符
1>e:\zsplitter_demo\splitter\splitterdlg.cpp(125) : error C2653: “CSplitterDlg”: 不是类或命名空间名称
1>e:\zsplitter_demo\splitter\splitterdlg.cpp(134) : error C2248: “CWnd::OnSysCommand”: 无法访问 protected 成员(在“CWnd”类中声明)
1> c:\program files\microsoft visual studio 9.0\vc\atlmfc\include\afxwin.h(2740) : 参见“CWnd::OnSysCommand”的声明
1> c:\program files\microsoft visual studio 9.0\vc\atlmfc\include\afxwin.h(2089) : 参见“CWnd”的声明
1>e:\zsplitter_demo\splitter\splitterdlg.cpp(134) : error C2352: “CWnd::OnSysCommand”: 非静态成员函数的非法调用
1> c:\program files\microsoft visual studio 9.0\vc\atlmfc\include\afxwin.h(2740) : 参见“CWnd::OnSysCommand”的声明
1>e:\zsplitter_demo\splitter\splitterdlg.cpp(142) : error C2653: “CSplitterDlg”: 不是类或命名空间名称
1>e:\zsplitter_demo\splitter\splitterdlg.cpp(144) : error C2660: “IsIconic”: 函数不接受 0 个参数
1>e:\zsplitter_demo\splitter\splitterdlg.cpp(146) : error C2673: “OnPaint”: 全局函数没有“this”指针
1>e:\zsplitter_demo\splitter\splitterdlg.cpp(148) : error C2660: “SendMessageA”: 函数不接受 3 个参数
1>e:\zsplitter_demo\splitter\splitterdlg.cpp(154) : error C2660: “GetClientRect”: 函数不接受 1 个参数
1>e:\zsplitter_demo\splitter\splitterdlg.cpp(159) : error C2065: “m_hIcon”: 未声明的标识符
1>e:\zsplitter_demo\splitter\splitterdlg.cpp(163) : error C2248: “CDialog::OnPaint”: 无法访问 protected 成员(在“CDialog”类中声明)
1> c:\program files\microsoft visual studio 9.0\vc\atlmfc\include\afxwin.h(3164) : 参见“CDialog::OnPaint”的声明
1> c:\program files\microsoft visual studio 9.0\vc\atlmfc\include\afxwin.h(3068) : 参见“CDialog”的声明
1>e:\zsplitter_demo\splitter\splitterdlg.cpp(163) : error C2352: “CDialog::OnPaint”: 非静态成员函数的非法调用
1> c:\program files\microsoft visual studio 9.0\vc\atlmfc\include\afxwin.h(3164) : 参见“CDialog::OnPaint”的声明
1>e:\zsplitter_demo\splitter\splitterdlg.cpp(169) : error C2653: “CSplitterDlg”: 不是类或命名空间名称
1>e:\zsplitter_demo\splitter\splitterdlg.cpp(171) : error C2065: “m_hIcon”: 未声明的标识符
1>TestDlg1.cpp
1>e:\zsplitter_demo\splitter\zsplitterdlg.h(162) : error C2039: “_GetBaseMessageMap”: 不是“ZSplitterDlgImpl”的成员
1>e:\zsplitter_demo\splitter\zsplitterdlg.h(162) : error C2039: “messageMap”: 不是“ZSplitterDlgImpl”的成员
1>e:\zsplitter_demo\splitter\zsplitterdlg.h(165) : error C2039: “_messageEntries”: 不是“ZSplitterDlgImpl”的成员
1>e:\zsplitter_demo\splitter\zsplitterdlg.h(165) : error C2653: “TheBaseClass”: 不是类或命名空间名称
1>e:\zsplitter_demo\splitter\zsplitterdlg.h(165) : error C2065: “GetThisMessageMap”: 未声明的标识符
1>e:\zsplitter_demo\splitter\zsplitterdlg.h(165) : error C2065: “_messageEntries”: 未声明的标识符
1>e:\zsplitter_demo\splitter\zsplitterdlg.h(165) : error C2059: 语法错误 : “return”
1>e:\zsplitter_demo\splitter\zsplitterdlg.h(165) : error C2059: 语法错误 : “}”
1>e:\zsplitter_demo\splitter\zsplitterdlg.h(165) : error C2143: 语法错误 : 缺少“;”(在“}”的前面)
1>e:\zsplitter_demo\splitter\zsplitterdlg.h(165) : error C2059: 语法错误 : “}”
1>e:\zsplitter_demo\splitter\zsplitterdlg.h(165) : warning C4193: #pragma warning(pop) : 没有匹配的“#pragma warning(push)”
1>e:\zsplitter_demo\splitter\testdlg1.h(15) : error C2059: 语法错误 : “public”
1>e:\zsplitter_demo\splitter\testdlg1.h(16) : error C2143: 语法错误 : 缺少“;”(在“{”的前面)
1>e:\zsplitter_demo\splitter\testdlg1.h(16) : error C2447: “{”: 缺少函数标题(是否是老式的形式表?)
1>e:\zsplitter_demo\splitter\testdlg1.cpp(19) : error C2653: “CTestDlg1”: 不是类或命名空间名称
1>e:\zsplitter_demo\splitter\testdlg1.cpp(19) : error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int
1>e:\zsplitter_demo\splitter\testdlg1.cpp(19) : error C2653: “CTestDlg1”: 不是类或命名空间名称
1>e:\zsplitter_demo\splitter\testdlg1.cpp(19) : error C2065: “IDD”: 未声明的标识符
1>e:\zsplitter_demo\splitter\testdlg1.cpp(20) : error C2550: “CTestDlg1”: 构造函数初始值设定项列表只能在构造函数定义中使用
1>e:\zsplitter_demo\splitter\testdlg1.cpp(25) : warning C4508: “CTestDlg1”: 函数应返回一个值;假定“void”返回类型
1>e:\zsplitter_demo\splitter\testdlg1.cpp(28) : error C2653: “CTestDlg1”: 不是类或命名空间名称
1>e:\zsplitter_demo\splitter\testdlg1.cpp(30) : error C2248: “CWnd::DoDataExchange”: 无法访问 protected 成员(在“CWnd”类中声明)
1> c:\program files\microsoft visual studio 9.0\vc\atlmfc\include\afxwin.h(2857) : 参见“CWnd::DoDataExchange”的声明
1> c:\program files\microsoft visual studio 9.0\vc\atlmfc\include\afxwin.h(2089) : 参见“CWnd”的声明
1>e:\zsplitter_demo\splitter\testdlg1.cpp(30) : error C2352: “CWnd::DoDataExchange”: 非静态成员函数的非法调用
1> c:\program files\microsoft visual studio 9.0\vc\atlmfc\include\afxwin.h(2857) : 参见“CWnd::DoDataExchange”的声明
1>e:\zsplitter_demo\splitter\testdlg1.cpp(37) : error C2653: “CTestDlg1”: 不是类或命名空间名称
1>e:\zsplitter_demo\splitter\testdlg1.cpp(37) : error C2270: “GetMessageMap”: 非成员函数上不允许修饰符
1>e:\zsplitter_demo\splitter\testdlg1.cpp(37) : error C3861: “GetThisMessageMap”: 找不到标识符
1>e:\zsplitter_demo\splitter\testdlg1.cpp(37) : error C2653: “CTestDlg1”: 不是类或命名空间名称
1>e:\zsplitter_demo\splitter\testdlg1.cpp(37) : error C2146: 语法错误 : 缺少“;”(在标识符“ThisClass”的前面)
1>e:\zsplitter_demo\splitter\testdlg1.cpp(37) : error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int
1>e:\zsplitter_demo\splitter\testdlg1.cpp(37) : error C2065: “ThisClass”: 未声明的标识符
1>e:\zsplitter_demo\splitter\testdlg1.cpp(39) : error C2065: “OnButton1”: 未声明的标识符
1>e:\zsplitter_demo\splitter\testdlg1.cpp(41) : error C2248: “ZSplitterDlgImpl::GetThisMessageMap”: 无法访问 protected 成员(在“ZSplitterDlgImpl”类中声明)
1> with
1> [
1> T=CPropertyPage
1> ]
1> e:\zsplitter_demo\splitter\zsplitterdlg.h(156) : 参见“ZSplitterDlgImpl::GetThisMessageMap”的声明
1> with
1> [
1> T=CPropertyPage
1> ]
1>e:\zsplitter_demo\splitter\testdlg1.cpp(47) : error C2653: “CTestDlg1”: 不是类或命名空间名称
1>e:\zsplitter_demo\splitter\testdlg1.cpp(49) : error C2352: “CDialog::OnInitDialog”: 非静态成员函数的非法调用
1> c:\program files\microsoft visual studio 9.0\vc\atlmfc\include\afxwin.h(3113) : 参见“CDialog::OnInitDialog”的声明
1>e:\zsplitter_demo\splitter\testdlg1.cpp(51) : error C3861: “addControls”: 找不到标识符
1>e:\zsplitter_demo\splitter\testdlg1.cpp(52) : error C3861: “addControls”: 找不到标识符
1>e:\zsplitter_demo\splitter\testdlg1.cpp(54) : error C3861: “addControl”: 找不到标识符
1>e:\zsplitter_demo\splitter\testdlg1.cpp(55) : error C3861: “addControl”: 找不到标识符
1>e:\zsplitter_demo\splitter\testdlg1.cpp(56) : error C3861: “addControl”: 找不到标识符
1>e:\zsplitter_demo\splitter\testdlg1.cpp(57) : error C3861: “addControl”: 找不到标识符
1>e:\zsplitter_demo\splitter\testdlg1.cpp(58) : error C3861: “addControl”: 找不到标识符
1>e:\zsplitter_demo\splitter\testdlg1.cpp(59) : error C3861: “addControl”: 找不到标识符
1>e:\zsplitter_demo\splitter\testdlg1.cpp(61) : error C3861: “init”: 找不到标识符
1>e:\zsplitter_demo\splitter\testdlg1.cpp(67) : error C2653: “CTestDlg1”: 不是类或命名空间名称
1>TestDlg2.cpp
1>e:\zsplitter_demo\splitter\zsplitterdlg.h(162) : error C2039: “_GetBaseMessageMap”: 不是“ZSplitterDlgImpl”的成员
1>e:\zsplitter_demo\splitter\zsplitterdlg.h(162) : error C2039: “messageMap”: 不是“ZSplitterDlgImpl”的成员
1>e:\zsplitter_demo\splitter\zsplitterdlg.h(165) : error C2039: “_messageEntries”: 不是“ZSplitterDlgImpl”的成员
1>e:\zsplitter_demo\splitter\zsplitterdlg.h(165) : error C2653: “TheBaseClass”: 不是类或命名空间名称
1>e:\zsplitter_demo\splitter\zsplitterdlg.h(165) : error C2065: “GetThisMessageMap”: 未声明的标识符
1>e:\zsplitter_demo\splitter\zsplitterdlg.h(165) : error C2065: “_messageEntries”: 未声明的标识符
1>e:\zsplitter_demo\splitter\zsplitterdlg.h(165) : error C2059: 语法错误 : “return”
1>e:\zsplitter_demo\splitter\zsplitterdlg.h(165) : error C2059: 语法错误 : “}”
1>e:\zsplitter_demo\splitter\zsplitterdlg.h(165) : error C2143: 语法错误 : 缺少“;”(在“}”的前面)
1>e:\zsplitter_demo\splitter\zsplitterdlg.h(165) : error C2059: 语法错误 : “}”
1>e:\zsplitter_demo\splitter\zsplitterdlg.h(165) : warning C4193: #pragma warning(pop) : 没有匹配的“#pragma warning(push)”
1>e:\zsplitter_demo\splitter\testdlg2.h(15) : error C2059: 语法错误 : “public”
1>e:\zsplitter_demo\splitter\testdlg2.h(16) : error C2143: 语法错误 : 缺少“;”(在“{”的前面)
1>e:\zsplitter_demo\splitter\testdlg2.h(16) : error C2447: “{”: 缺少函数标题(是否是老式的形式表?)
1>e:\zsplitter_demo\splitter\testdlg2.cpp(18) : error C2653: “CTestDlg2”: 不是类或命名空间名称
1>e:\zsplitter_demo\splitter\testdlg2.cpp(18) : error C2061: 语法错误 : 标识符“CTestDlg2”
1>e:\zsplitter_demo\splitter\testdlg2.cpp(18) : error C2653: “CTestDlg2”: 不是类或命名空间名称
1>e:\zsplitter_demo\splitter\testdlg2.cpp(18) : error C2653: “CTestDlg2”: 不是类或命名空间名称
1>e:\zsplitter_demo\splitter\testdlg2.cpp(18) : error C2496: “classCTestDlg2”: “selectany”只能应用到有外部链接的数据项
1>e:\zsplitter_demo\splitter\testdlg2.cpp(18) : error C2027: 使用了未定义类型“CTestDlg2”
1> e:\zsplitter_demo\splitter\testdlg2.cpp(18) : 参见“CTestDlg2”的声明
1>e:\zsplitter_demo\splitter\testdlg2.cpp(18) : error C2027: 使用了未定义类型“CTestDlg2”
1> e:\zsplitter_demo\splitter\testdlg2.cpp(18) : 参见“CTestDlg2”的声明
1>e:\zsplitter_demo\splitter\testdlg2.cpp(18) : error C2027: 使用了未定义类型“CTestDlg2”
1> e:\zsplitter_demo\splitter\testdlg2.cpp(18) : 参见“CTestDlg2”的声明
1>e:\zsplitter_demo\splitter\testdlg2.cpp(18) : error C2027: 使用了未定义类型“CTestDlg2”
1> e:\zsplitter_demo\splitter\testdlg2.cpp(18) : 参见“CTestDlg2”的声明
1>e:\zsplitter_demo\splitter\testdlg2.cpp(18) : error C2027: 使用了未定义类型“CTestDlg2”
1> e:\zsplitter_demo\splitter\testdlg2.cpp(18) : 参见“CTestDlg2”的声明
1>e:\zsplitter_demo\splitter\testdlg2.cpp(18) : error C2027: 使用了未定义类型“CTestDlg2”
1> e:\zsplitter_demo\splitter\testdlg2.cpp(18) : 参见“CTestDlg2”的声明
1>e:\zsplitter_demo\splitter\testdlg2.cpp(18) : error C2270: “GetRuntimeClass”: 非成员函数上不允许修饰符
1>e:\zsplitter_demo\splitter\testdlg2.cpp(18) : error C2027: 使用了未定义类型“CTestDlg2”
1> e:\zsplitter_demo\splitter\testdlg2.cpp(18) : 参见“CTestDlg2”的声明
1>e:\zsplitter_demo\splitter\testdlg2.cpp(20) : error C2027: 使用了未定义类型“CTestDlg2”
1> e:\zsplitter_demo\splitter\testdlg2.cpp(18) : 参见“CTestDlg2”的声明
1>e:\zsplitter_demo\splitter\testdlg2.cpp(20) : error C2059: 语法错误 : “)”
1>e:\zsplitter_demo\splitter\testdlg2.cpp(20) : error C2027: 使用了未定义类型“CTestDlg2”
1> e:\zsplitter_demo\splitter\testdlg2.cpp(18) : 参见“CTestDlg2”的声明
1>e:\zsplitter_demo\splitter\testdlg2.cpp(20) : error C2355: “this”: 只能在非静态成员函数的内部引用
1>e:\zsplitter_demo\splitter\testdlg2.cpp(21) : error C2448: “m_mng”: 函数样式初始值设定项类似函数定义
1>e:\zsplitter_demo\splitter\testdlg2.cpp(27) : error C2027: 使用了未定义类型“CTestDlg2”
1> e:\zsplitter_demo\splitter\testdlg2.cpp(18) : 参见“CTestDlg2”的声明
1>e:\zsplitter_demo\splitter\testdlg2.cpp(27) : error C2059: 语法错误 : “)”
1>e:\zsplitter_demo\splitter\testdlg2.cpp(28) : error C2143: 语法错误 : 缺少“;”(在“{”的前面)
1>e:\zsplitter_demo\splitter\testdlg2.cpp(28) : error C2447: “{”: 缺少函数标题(是否是老式的形式表?)
1>e:\zsplitter_demo\splitter\testdlg2.cpp(31) : error C2027: 使用了未定义类型“CTestDlg2”
1> e:\zsplitter_demo\splitter\testdlg2.cpp(18) : 参见“CTestDlg2”的声明
1>e:\zsplitter_demo\splitter\testdlg2.cpp(33) : error C2248: “CWnd::DoDataExchange”: 无法访问 protected 成员(在“CWnd”类中声明)
1> c:\program files\microsoft visual studio 9.0\vc\atlmfc\include\afxwin.h(2857) : 参见“CWnd::DoDataExchange”的声明
1> c:\program files\microsoft visual studio 9.0\vc\atlmfc\include\afxwin.h(2089) : 参见“CWnd”的声明
1>e:\zsplitter_demo\splitter\testdlg2.cpp(33) : error C2352: “CWnd::DoDataExchange”: 非静态成员函数的非法调用
1> c:\program files\microsoft visual studio 9.0\vc\atlmfc\include\afxwin.h(2857) : 参见“CWnd::DoDataExchange”的声明
1>e:\zsplitter_demo\splitter\testdlg2.cpp(40) : error C2027: 使用了未定义类型“CTestDlg2”
1> e:\zsplitter_demo\splitter\testdlg2.cpp(18) : 参见“CTestDlg2”的声明
1>e:\zsplitter_demo\splitter\testdlg2.cpp(40) : error C2270: “GetMessageMap”: 非成员函数上不允许修饰符
1>e:\zsplitter_demo\splitter\testdlg2.cpp(40) : error C3861: “GetThisMessageMap”: 找不到标识符
1>e:\zsplitter_demo\splitter\testdlg2.cpp(40) : error C2027: 使用了未定义类型“CTestDlg2”
1> e:\zsplitter_demo\splitter\testdlg2.cpp(18) : 参见“CTestDlg2”的声明
1>e:\zsplitter_demo\splitter\testdlg2.cpp(42) : error C2027: 使用了未定义类型“CTestDlg2”
1> e:\zsplitter_demo\splitter\testdlg2.cpp(18) : 参见“CTestDlg2”的声明
1>e:\zsplitter_demo\splitter\testdlg2.cpp(42) : error C2065: “OnDestroy”: 未声明的标识符
1>e:\zsplitter_demo\splitter\testdlg2.cpp(43) : error C2065: “OnButton1”: 未声明的标识符
1>e:\zsplitter_demo\splitter\testdlg2.cpp(44) : error C2027: 使用了未定义类型“CTestDlg2”
1> e:\zsplitter_demo\splitter\testdlg2.cpp(18) : 参见“CTestDlg2”的声明
1>e:\zsplitter_demo\splitter\testdlg2.cpp(44) : error C2065: “OnSize”: 未声明的标识符
1>e:\zsplitter_demo\splitter\testdlg2.cpp(46) : error C2248: “CPropertyPage::GetThisMessageMap”: 无法访问 protected 成员(在“CPropertyPage”类中声明)
1> c:\program files\microsoft visual studio 9.0\vc\atlmfc\include\afxdlgs.h(707) : 参见“CPropertyPage::GetThisMessageMap”的声明
1> c:\program files\microsoft visual studio 9.0\vc\atlmfc\include\afxdlgs.h(622) : 参见“CPropertyPage”的声明
1>e:\zsplitter_demo\splitter\testdlg2.cpp(51) : error C2027: 使用了未定义类型“CTestDlg2”
1> e:\zsplitter_demo\splitter\testdlg2.cpp(18) : 参见“CTestDlg2”的声明
1>e:\zsplitter_demo\splitter\testdlg2.cpp(53) : error C2248: “CWnd::OnDestroy”: 无法访问 protected 成员(在“CWnd”类中声明)
1> c:\program files\microsoft visual studio 9.0\vc\atlmfc\include\afxwin.h(2681) : 参见“CWnd::OnDestroy”的声明
1> c:\program files\microsoft visual studio 9.0\vc\atlmfc\include\afxwin.h(2089) : 参见“CWnd”的声明
1>e:\zsplitter_demo\splitter\testdlg2.cpp(53) : error C2352: “CWnd::OnDestroy”: 非静态成员函数的非法调用
1> c:\program files\microsoft visual studio 9.0\vc\atlmfc\include\afxwin.h(2681) : 参见“CWnd::OnDestroy”的声明
1>e:\zsplitter_demo\splitter\testdlg2.cpp(55) : error C2065: “m_mng”: 未声明的标识符
1>e:\zsplitter_demo\splitter\testdlg2.cpp(55) : error C2228: “.onDestroy”的左边必须有类/结构/联合
1> 类型是“'unknown-type'”
1>e:\zsplitter_demo\splitter\testdlg2.cpp(58) : error C2027: 使用了未定义类型“CTestDlg2”
1> e:\zsplitter_demo\splitter\testdlg2.cpp(18) : 参见“CTestDlg2”的声明
1>e:\zsplitter_demo\splitter\testdlg2.cpp(60) : error C2352: “CDialog::OnInitDialog”: 非静态成员函数的非法调用
1> c:\program files\microsoft visual studio 9.0\vc\atlmfc\include\afxwin.h(3113) : 参见“CDialog::OnInitDialog”的声明
1>e:\zsplitter_demo\splitter\testdlg2.cpp(62) : error C2065: “m_mng”: 未声明的标识符
1>e:\zsplitter_demo\splitter\testdlg2.cpp(62) : error C2228: “.addControl”的左边必须有类/结构/联合
1> 类型是“'unknown-type'”
1>e:\zsplitter_demo\splitter\testdlg2.cpp(63) : error C2065: “m_mng”: 未声明的标识符
1>e:\zsplitter_demo\splitter\testdlg2.cpp(63) : error C2228: “.addControl”的左边必须有类/结构/联合
1> 类型是“'unknown-type'”
1>e:\zsplitter_demo\splitter\testdlg2.cpp(64) : error C2065: “m_mng”: 未声明的标识符
1>e:\zsplitter_demo\splitter\testdlg2.cpp(64) : error C2228: “.addControl”的左边必须有类/结构/联合
1> 类型是“'unknown-type'”
1>e:\zsplitter_demo\splitter\testdlg2.cpp(65) : error C2065: “m_mng”: 未声明的标识符
1>e:\zsplitter_demo\splitter\testdlg2.cpp(65) : error C2228: “.addControl”的左边必须有类/结构/联合
1> 类型是“'unknown-type'”
1>e:\zsplitter_demo\splitter\testdlg2.cpp(67) : error C2065: “m_mng”: 未声明的标识符
1>e:\zsplitter_demo\splitter\testdlg2.cpp(67) : error C2228: “.init”的左边必须有类/结构/联合
1> 类型是“'unknown-type'”
1>e:\zsplitter_demo\splitter\testdlg2.cpp(73) : error C2027: 使用了未定义类型“CTestDlg2”
1> e:\zsplitter_demo\splitter\testdlg2.cpp(18) : 参见“CTestDlg2”的声明
1>e:\zsplitter_demo\splitter\testdlg2.cpp(79) : error C2027: 使用了未定义类型“CTestDlg2”
1> e:\zsplitter_demo\splitter\testdlg2.cpp(18) : 参见“CTestDlg2”的声明
1>e:\zsplitter_demo\splitter\testdlg2.cpp(81) : error C2248: “CWnd::OnSize”: 无法访问 protected 成员(在“CWnd”类中声明)
1> c:\program files\microsoft visual studio 9.0\vc\atlmfc\include\afxwin.h(2703) : 参见“CWnd::OnSize”的声明
1> c:\program files\microsoft visual studio 9.0\vc\atlmfc\include\afxwin.h(2089) : 参见“CWnd”的声明
1>e:\zsplitter_demo\splitter\testdlg2.cpp(81) : error C2352: “CWnd::OnSize”: 非静态成员函数的非法调用
1> c:\program files\microsoft visual studio 9.0\vc\atlmfc\include\afxwin.h(2703) : 参见“CWnd::OnSize”的声明
1>e:\zsplitter_demo\splitter\testdlg2.cpp(82) : error C2065: “m_mng”: 未声明的标识符
1>e:\zsplitter_demo\splitter\testdlg2.cpp(82) : error C2228: “.onSize”的左边必须有类/结构/联合
1> 类型是“'unknown-type'”
1>TestDlg3.cpp
1>e:\zsplitter_demo\splitter\zsplitterdlg.h(162) : error C2039: “_GetBaseMessageMap”: 不是“ZSplitterDlgImpl”的成员
1>e:\zsplitter_demo\splitter\zsplitterdlg.h(162) : error C2039: “messageMap”: 不是“ZSplitterDlgImpl”的成员
1>e:\zsplitter_demo\splitter\zsplitterdlg.h(165) : error C2039: “_messageEntries”: 不是“ZSplitterDlgImpl”的成员
1>e:\zsplitter_demo\splitter\zsplitterdlg.h(165) : error C2653: “TheBaseClass”: 不是类或命名空间名称
1>e:\zsplitter_demo\splitter\zsplitterdlg.h(165) : error C2065: “GetThisMessageMap”: 未声明的标识符
1>e:\zsplitter_demo\splitter\zsplitterdlg.h(165) : error C2065: “_messageEntries”: 未声明的标识符
1>e:\zsplitter_demo\splitter\zsplitterdlg.h(165) : error C2059: 语法错误 : “return”
1>e:\zsplitter_demo\splitter\zsplitterdlg.h(165) : error C2059: 语法错误 : “}”
1>e:\zsplitter_demo\splitter\zsplitterdlg.h(165) : error C2143: 语法错误 : 缺少“;”(在“}”的前面)
1>e:\zsplitter_demo\splitter\zsplitterdlg.h(165) : error C2059: 语法错误 : “}”
1>e:\zsplitter_demo\splitter\zsplitterdlg.h(165) : warning C4193: #pragma warning(pop) : 没有匹配的“#pragma warning(push)”
1>e:\zsplitter_demo\splitter\testdlg3.h(15) : error C2059: 语法错误 : “public”
1>e:\zsplitter_demo\splitter\testdlg3.h(16) : error C2143: 语法错误 : 缺少“;”(在“{”的前面)
1>e:\zsplitter_demo\splitter\testdlg3.h(16) : error C2447: “{”: 缺少函数标题(是否是老式的形式表?)
1>e:\zsplitter_demo\splitter\testdlg3.cpp(18) : error C2653: “CTestDlg3”: 不是类或命名空间名称
1>e:\zsplitter_demo\splitter\testdlg3.cpp(18) : error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int
1>e:\zsplitter_demo\splitter\testdlg3.cpp(18) : error C2653: “CTestDlg3”: 不是类或命名空间名称
1>e:\zsplitter_demo\splitter\testdlg3.cpp(18) : error C2065: “IDD”: 未声明的标识符
1>e:\zsplitter_demo\splitter\testdlg3.cpp(19) : error C2550: “CTestDlg3”: 构造函数初始值设定项列表只能在构造函数定义中使用
1>e:\zsplitter_demo\splitter\testdlg3.cpp(23) : warning C4508: “CTestDlg3”: 函数应返回一个值;假定“void”返回类型
1>e:\zsplitter_demo\splitter\testdlg3.cpp(26) : error C2653: “CTestDlg3”: 不是类或命名空间名称
1>e:\zsplitter_demo\splitter\testdlg3.cpp(28) : error C2248: “CWnd::DoDataExchange”: 无法访问 protected 成员(在“CWnd”类中声明)
1> c:\program files\microsoft visual studio 9.0\vc\atlmfc\include\afxwin.h(2857) : 参见“CWnd::DoDataExchange”的声明
1> c:\program files\microsoft visual studio 9.0\vc\atlmfc\include\afxwin.h(2089) : 参见“CWnd”的声明
1>e:\zsplitter_demo\splitter\testdlg3.cpp(28) : error C2352: “CWnd::DoDataExchange”: 非静态成员函数的非法调用
1> c:\program files\microsoft visual studio 9.0\vc\atlmfc\include\afxwin.h(2857) : 参见“CWnd::DoDataExchange”的声明
1>e:\zsplitter_demo\splitter\testdlg3.cpp(31) : error C2065: “m_spliter”: 未声明的标识符
1>e:\zsplitter_demo\splitter\testdlg3.cpp(36) : error C2653: “CTestDlg3”: 不是类或命名空间名称
1>e:\zsplitter_demo\splitter\testdlg3.cpp(36) : error C2270: “GetMessageMap”: 非成员函数上不允许修饰符
1>e:\zsplitter_demo\splitter\testdlg3.cpp(36) : error C3861: “GetThisMessageMap”: 找不到标识符
1>e:\zsplitter_demo\splitter\testdlg3.cpp(36) : error C2653: “CTestDlg3”: 不是类或命名空间名称
1>e:\zsplitter_demo\splitter\testdlg3.cpp(36) : error C2146: 语法错误 : 缺少“;”(在标识符“ThisClass”的前面)
1>e:\zsplitter_demo\splitter\testdlg3.cpp(36) : error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int
1>e:\zsplitter_demo\splitter\testdlg3.cpp(36) : error C2065: “ThisClass”: 未声明的标识符
1>e:\zsplitter_demo\splitter\testdlg3.cpp(39) : error C2248: “CPropertyPage::GetThisMessageMap”: 无法访问 protected 成员(在“CPropertyPage”类中声明)
1> c:\program files\microsoft visual studio 9.0\vc\atlmfc\include\afxdlgs.h(707) : 参见“CPropertyPage::GetThisMessageMap”的声明
1> c:\program files\microsoft visual studio 9.0\vc\atlmfc\include\afxdlgs.h(622) : 参见“CPropertyPage”的声明
1>e:\zsplitter_demo\splitter\testdlg3.cpp(44) : error C2653: “CTestDlg3”: 不是类或命名空间名称
1>e:\zsplitter_demo\splitter\testdlg3.cpp(46) : error C2352: “CDialog::OnInitDialog”: 非静态成员函数的非法调用
1> c:\program files\microsoft visual studio 9.0\vc\atlmfc\include\afxwin.h(3113) : 参见“CDialog::OnInitDialog”的声明
1>e:\zsplitter_demo\splitter\testdlg3.cpp(48) : error C2065: “m_spliter”: 未声明的标识符
1>e:\zsplitter_demo\splitter\testdlg3.cpp(48) : error C2228: “.addWindow”的左边必须有类/结构/联合
1> 类型是“'unknown-type'”
1>e:\zsplitter_demo\splitter\testdlg3.cpp(49) : error C2065: “m_spliter”: 未声明的标识符
1>e:\zsplitter_demo\splitter\testdlg3.cpp(49) : error C2228: “.addWindow”的左边必须有类/结构/联合
1> 类型是“'unknown-type'”
1>e:\zsplitter_demo\splitter\testdlg3.cpp(50) : error C2065: “m_spliter”: 未声明的标识符
1>e:\zsplitter_demo\splitter\testdlg3.cpp(50) : error C2228: “.addWindow”的左边必须有类/结构/联合
1> 类型是“'unknown-type'”
1>e:\zsplitter_demo\splitter\testdlg3.cpp(51) : error C2065: “m_spliter”: 未声明的标识符
1>e:\zsplitter_demo\splitter\testdlg3.cpp(51) : error C2228: “.addWindow”的左边必须有类/结构/联合
1> 类型是“'unknown-type'”
1>e:\zsplitter_demo\splitter\testdlg3.cpp(52) : error C2065: “m_spliter”: 未声明的标识符
1>e:\zsplitter_demo\splitter\testdlg3.cpp(52) : error C2228: “.setStyle”的左边必须有类/结构/联合
1> 类型是“'unknown-type'”
1>TestSheet.cpp
1>ZSplitter.cpp
1>e:\zsplitter_demo\splitter\zsplitter.cpp(84) : warning C4018: “<”: 有符号/无符号不匹配
1>e:\zsplitter_demo\splitter\zsplitter.cpp(89) : warning C4018: “<”: 有符号/无符号不匹配
1>ZSplitterDlg.cpp
1>e:\zsplitter_demo\splitter\zsplitterdlg.h(162) : error C2039: “_GetBaseMessageMap”: 不是“ZSplitterDlgImpl”的成员
1>e:\zsplitter_demo\splitter\zsplitterdlg.h(162) : error C2039: “messageMap”: 不是“ZSplitterDlgImpl”的成员
1>e:\zsplitter_demo\splitter\zsplitterdlg.h(165) : error C2039: “_messageEntries”: 不是“ZSplitterDlgImpl”的成员
1>e:\zsplitter_demo\splitter\zsplitterdlg.h(165) : error C2653: “TheBaseClass”: 不是类或命名空间名称
1>e:\zsplitter_demo\splitter\zsplitterdlg.h(165) : error C2065: “GetThisMessageMap”: 未声明的标识符
1>e:\zsplitter_demo\splitter\zsplitterdlg.h(165) : error C2065: “_messageEntries”: 未声明的标识符
1>e:\zsplitter_demo\splitter\zsplitterdlg.h(165) : error C2059: 语法错误 : “return”
1>e:\zsplitter_demo\splitter\zsplitterdlg.h(165) : error C2059: 语法错误 : “}”
1>e:\zsplitter_demo\splitter\zsplitterdlg.h(165) : error C2143: 语法错误 : 缺少“;”(在“}”的前面)
1>e:\zsplitter_demo\splitter\zsplitterdlg.h(165) : error C2059: 语法错误 : “}”
1>e:\zsplitter_demo\splitter\zsplitterdlg.h(165) : warning C4193: #pragma warning(pop) : 没有匹配的“#pragma warning(push)”
1>c:\program files\microsoft visual studio 9.0\vc\include\assert.h(25) : error C2143: 语法错误 : 缺少“;”(在“{”的前面)
1>c:\program files\microsoft visual studio 9.0\vc\include\assert.h(25) : error C2447: “{”: 缺少函数标题(是否是老式的形式表?)
1>e:\zsplitter_demo\splitter\zsplitterdlg.cpp(58) : warning C4018: “<”: 有符号/无符号不匹配
1>e:\zsplitter_demo\splitter\zsplitterdlg.cpp(81) : warning C4018: “<”: 有符号/无符号不匹配
1>e:\zsplitter_demo\splitter\zsplitterdlg.cpp(115) : warning C4018: “<”: 有符号/无符号不匹配
1>e:\zsplitter_demo\splitter\zsplitterdlg.cpp(161) : warning C4018: “<”: 有符号/无符号不匹配
1>e:\zsplitter_demo\splitter\zsplitterdlg.cpp(164) : error C3867: “ZSplitterDlg::getYX”: 函数调用缺少参数列表;请使用“&ZSplitterDlg::getYX”创建指向成员的指针
1>e:\zsplitter_demo\splitter\zsplitterdlg.cpp(165) : error C3867: “ZSplitterDlg::getXY”: 函数调用缺少参数列表;请使用“&ZSplitterDlg::getXY”创建指向成员的指针
1>e:\zsplitter_demo\splitter\zsplitterdlg.cpp(181) : error C3861: “_wassert”: 找不到标识符
1>e:\zsplitter_demo\splitter\zsplitterdlg.cpp(182) : error C3861: “_wassert”: 找不到标识符
1>e:\zsplitter_demo\splitter\zsplitterdlg.cpp(247) : warning C4018: “<”: 有符号/无符号不匹配
1>e:\zsplitter_demo\splitter\zsplitterdlg.cpp(276) : warning C4018: “<”: 有符号/无符号不匹配
1>e:\zsplitter_demo\splitter\zsplitterdlg.cpp(278) : error C3861: “_wassert”: 找不到标识符
1>e:\zsplitter_demo\splitter\zsplitterdlg.cpp(282) : warning C4018: “<”: 有符号/无符号不匹配
1>e:\zsplitter_demo\splitter\zsplitterdlg.cpp(291) : warning C4018: “<”: 有符号/无符号不匹配
1>e:\zsplitter_demo\splitter\zsplitterdlg.cpp(344) : warning C4018: “<”: 有符号/无符号不匹配
1>e:\zsplitter_demo\splitter\zsplitterdlg.cpp(376) : warning C4018: “<”: 有符号/无符号不匹配
1>ZSplitterDlgEx.cpp
1>e:\zsplitter_demo\splitter\zsplitterdlg.h(162) : error C2039: “_GetBaseMessageMap”: 不是“ZSplitterDlgImpl”的成员
1>e:\zsplitter_demo\splitter\zsplitterdlg.h(162) : error C2039: “messageMap”: 不是“ZSplitterDlgImpl”的成员
1>e:\zsplitter_demo\splitter\zsplitterdlg.h(165) : error C2039: “_messageEntries”: 不是“ZSplitterDlgImpl”的成员
1>e:\zsplitter_demo\splitter\zsplitterdlg.h(165) : error C2653: “TheBaseClass”: 不是类或命名空间名称
1>e:\zsplitter_demo\splitter\zsplitterdlg.h(165) : error C2065: “GetThisMessageMap”: 未声明的标识符
1>e:\zsplitter_demo\splitter\zsplitterdlg.h(165) : error C2065: “_messageEntries”: 未声明的标识符
1>e:\zsplitter_demo\splitter\zsplitterdlg.h(165) : error C2059: 语法错误 : “return”
1>e:\zsplitter_demo\splitter\zsplitterdlg.h(165) : error C2059: 语法错误 : “}”
1>e:\zsplitter_demo\splitter\zsplitterdlg.h(165) : error C2143: 语法错误 : 缺少“;”(在“}”的前面)
1>e:\zsplitter_demo\splitter\zsplitterdlg.h(165) : error C2059: 语法错误 : “}”
1>e:\zsplitter_demo\splitter\zsplitterdlg.h(165) : warning C4193: #pragma warning(pop) : 没有匹配的“#pragma warning(push)”
1>e:\zsplitter_demo\splitter\resizabledialog.h(146) : error C2065: “NOANCHOR”: 未声明的标识符
1>e:\zsplitter_demo\splitter\resizabledialog.h(148) : error C2065: “NOANCHOR”: 未声明的标识符
1>正在生成代码...
1>生成日志保存在“file://E:\zsplitter_demo\splitter\Debug\BuildLog.htm”
1>splitter - 355 个错误,26 个警告
========== 生成: 成功 0 个,失败 1 个,最新 0 个,跳过 0 个 ==========
GeneralMy vote of 5memberzhangyongf27 Dec '10 - 16:31 
nice
GeneralMyView1.obj : error LNK2001: unresolved external symbol "protected: static struct AFX_MSGMAP const CView::messageMap"memberGertzog26 Nov '07 - 14:54 
Hi there!
 
I have linking the example project with Visual Studio 2003 and have got 10 linker error messages:
 
MyView1.obj : error LNK2001: unresolved external symbol "protected: static struct AFX_MSGMAP const CView::messageMap" (?messageMap@CView@@1UAFX_MSGMAP@@B)
splitter.obj : error LNK2001: unresolved external symbol "protected: static struct AFX_MSGMAP const CView::messageMap" (?messageMap@CView@@1UAFX_MSGMAP@@B)
MyView1.obj : error LNK2001: unresolved external symbol "protected: static struct AFX_MSGMAP const CPropertyPage::messageMap" (?messageMap@CPropertyPage@@1UAFX_MSGMAP@@B)
MyView2.obj : error LNK2001: unresolved external symbol "protected: static struct AFX_MSGMAP const CPropertyPage::messageMap" (?messageMap@CPropertyPage@@1UAFX_MSGMAP@@B)
TestDlg1.obj : error LNK2001: unresolved external symbol "protected: static struct AFX_MSGMAP const CPropertyPage::messageMap" (?messageMap@CPropertyPage@@1UAFX_MSGMAP@@B)
MyView2.obj : error LNK2001: unresolved external symbol "protected: static struct AFX_MSGMAP const CFormView::messageMap" (?messageMap@CFormView@@1UAFX_MSGMAP@@B)
splitter.obj : error LNK2001: unresolved external symbol "protected: static struct AFX_MSGMAP const CFormView::messageMap" (?messageMap@CFormView@@1UAFX_MSGMAP@@B)
splitterDlg.obj : error LNK2001: unresolved external symbol "protected: static struct AFX_MSGMAP const CDialog::messageMap" (?messageMap@CDialog@@1UAFX_MSGMAP@@B)
TestDlg2.obj : error LNK2001: unresolved external symbol "protected: static struct AFX_MSGMAP const CDialog::messageMap" (?messageMap@CDialog@@1UAFX_MSGMAP@@B)
 
If anybody who is good at link error can give me some advice, I'd appreciate it greatly.
 
Everything is -- skill Wink | ;-)

Generalcompiling problems in 2003 .NETmemberpicazo7 Aug '05 - 14:39 
Hi Mike,
 
First of all, great tool.
However, I can't seem to be able to build it in VS 2003.NET. When I try, I get the following error
 
ZSplitterDlg.h(158): error C2039: '_GetBaseMessageMap' : is not a member of 'ZSplitterDlgImpl'
 
It appears several times.
 
Also, I am relatively new at VS, so I wanted to ask if it was possible (and if you could show me how, perhaps you have a demo) to make an SDI app which uses your class to split into 3 windows (views) with 2 vertical splitters (similar to the 2nd tab in this demo). I would also like to know if it is possible to have a button in the toolbar for each window which toggles hide/show for the window. This feature would actually be nicer if it was in the view menu instead of the buttons, like:
 
              View Menu
           ---------------
           View1 | (check)
           view2 |
           view3 | (check)
           ---------------
           other view opts
 
to indicate that views 1 and 3 are visible. If clicked, then they get unchecked and are hidden.
 
Thank you very much,

 
-----------------
Genaro
 
\\\|
_ _
@ @
_\\
--|
_/
GeneralRe: compiling problems in 2003 .NETmembergnovice10 Oct '05 - 18:47 
Hello Genaro
 
I wanted an answer to the same problem (compile problem):
Found a related solution on:
http://www.codeguru.com/Cpp/Cpp/cpp_mfc/templates/comments.php/c4099/?thread=2597[^]
 
Note that the documented solution has a small error in it: word "template" needs to be replaced with "theTemplArgs"
 
See updated text below
 
#ifdef _AFXDLL
#define BEGIN_T_MESSAGE_MAP(theTemplArgs, theClass, baseClass) \
theTemplArgs \
const AFX_MSGMAP* PASCAL theClass::GetThisMessageMap() \
{ return &theClass::messageMap; } \
theTemplArgs \
const AFX_MSGMAP* theClass::GetMessageMap() const \
{ return &theClass::messageMap; } \
theTemplArgs \
AFX_COMDAT const AFX_MSGMAP theClass::messageMap = \
{ &baseClass::GetThisMessageMap, &theClass::_messageEntries[0] }; \
theTemplArgs \
AFX_COMDAT const AFX_MSGMAP_ENTRY theClass::_messageEntries[] = \
{ \
 
#else
#define BEGIN_T_MESSAGE_MAP(theTemplArgs, theClass, baseClass) \
theTemplArgs \
const AFX_MSGMAP* theClass::GetMessageMap() const \
{ return &theClass::messageMap; } \
theTemplArgs \
AFX_COMDAT const AFX_MSGMAP theClass::messageMap = \
{ &baseClass::messageMap, &theClass::_messageEntries[0] }; \
theTemplArgs \
AFX_COMDAT const AFX_MSGMAP_ENTRY theClass::_messageEntries[] = \
{ \
 
#endif
 
Regards,
 
GN
GeneralRe: compiling problems in 2003 .NETmemberpicazo11 Oct '05 - 4:23 
Thank you very much. I had already found the solution too... maybe I should have posted it.
 
Regards,
 
-----------------
Genaro
QuestionCan not compile under VC7memberSatervalley13 Aug '02 - 17:12 
Hi,your code can not compile under VC7,because the macros DECLARE_MESSAGE_MAP & BEGIN_MESSAGE_MAP are not the same as they in VC6.Laugh | :laugh:
AnswerRe: Can not compile under VC7memberchend30 Oct '02 - 22:19 
Hi
Do u have a source code for VC7 ?
 
Thanks,
Chen
GeneralFit a dialog in a View of a WindowmemberAnonymous17 Apr '02 - 9:16 

 
I have a fixed size dialog.
 
I have list of tree items on the left view and when I click one of the nodes I want to display the dialog in the right view
 
with the condition that if the size of the dialog is bigger than the view then I'll have to provide the scroll bars to navigate.
 
I don't want to change the size of the dialogs at all.
 
My dialogs are all modal dialogs. I'm using splitter window to create two separate view.
 
Left side is the tree view and right side is the form view.
 
I want all my controls in the dialog in tact.
 
My view on the right side is a form view.
 
Can you provide some help regarding this.
 
Thanks
 

GeneralRe: Fit a dialog in a View of a WindowmemberCapsuleDweller9 May '02 - 1:44 
I'd like to[Confused | :confused: ] do something similar, a browse tree on the left with dialogs on the right.
 
I'm guessing you meen modeless rather than modal. Modal would mean only one dialog activated from the browse tree at any one time.
 
The root of the problem is how to have a dialog contstrained 'within' another dialog rather than just be allowed to float around the global user space.
 
Can anyone help!!Unsure | :~
GeneralZSplit in dynamic dialogmemberEmanuele17 Apr '02 - 8:18 
Hi Mike,
I have downloaded ZSplit source from www.codeproject.com and I have tried
to use it in my project.
I have to use it in a dynamic dialog, that I have implemented by
 
IMPLEMENT_DYNAMIC(MyDlg, ZSplitterDlgResizable);
 
when I try to compile that code, I got this error:
error C2039: 'classZSplitterDlgResizable' : is not a member of 'ZSplitterDlgResizable'
what can I do?
thanks a lot!
GeneralRe: ZSplit in dynamic dialogmemberMike Melnikov24 Jul '02 - 1:50 
Hi
 
add
IMPLEMENT_DYNAMIC(CResizableDialog,CDialog);
and change
IMPLEMENT_DYNAMIC(MyDlg, ZSplitterDlgResizable);
to
IMPLEMENT_DYNAMIC(MyDlg, CResizableDialog);
 
Mike
Generalpragma warningmemberJean-Louis Guenego6 Aug '01 - 0:37 
May be this can help some people testing the ZSplitter demo
(that was not obvious for me Blush | :O )
 
To avoid warning in your project, you just have to do like in the demo project
add to your stdafx.h:
#pragma warning (disable : 4786)
#pragma warning (disable : 4355)

 
Thanks for all your work Mike.
 
Jean-Louis

GeneralSplittermemberPascal Cayrol18 May '01 - 3:00 
hi
I'd like to split a window and in a pane, I want to put some control like buttons or editbox ?
 
How can I do ?
 
Thanks !
 
Pascal
 
Pascal Cayrol
GeneralRe: SplittermemberPascal Cayrol18 May '01 - 4:14 
I'd like split a Client Area in two View.
 
In the first one, I'd like to put List Control and in the other, I'd like to put button and editbox.
Cry | :((
 
How can I put button in a CView ? Is it possible ?
 
Confused | :confused:
 
Thanks a lot !
 
Pascal Cayrol
GeneralRe: SplittermemberMike Melnikov30 May '01 - 1:27 
Hi
check new version of my article
http://codeproject.com/splitter/zsplitter.asp
 
Mike
GeneralNow it works with resizable dialog.memberMike Melnikov6 Mar '01 - 23:17 
Hi
 
Yes I made 2 improvements
1.
CResizableDialog now supported you can use ZSplitterDlgResizable
I've added 1 function and make 1 function virtual in CResizableDialog.cpp CResizableDialog.h
 
2.new template
class ZSplitterDlgImpl : public T, protected ZSplitterDlg
added
Now you can remove void OnDestroy() and void OnSize(UINT nType, int cx, int cy) functions that described in article
 
please download latest version from these links
  • download demo project - 54 Kb
  • download source - 22 Kb
  •  
    or visit Home page of zsplitters  
    Mike
    Questionwork with resizable dialog?memberphilip andrew1 Mar '01 - 13:04 

    Hi,
     
    This is fantastic, I would really like to see it work with the resizable dialog class at
    http://www.codeproject.com/dialog/resizabledialog.asp
    as this would solve a great problem for me.
     
    Cheers,
    Philip
    Wink | ;)
    AnswerRe: work with resizable dialog?memberMike Melnikov2 Mar '01 - 5:48 
    Hi, Philip
     
    Thank you.
     
    I think I'll do it.
     
    Although I think I have to add one virtual function to CResizableDialog.
     
    I think I'll give my answer in several days.
     
    Mike.
    AnswerRe: work with resizable dialog?memberMike Melnikov6 Mar '01 - 23:25 
    Hi Philip
     
    Yes you can use them together.
     
    Thank you for your persistence (I don't want to work a lot on ZSplitters).
     
    please check my full answer
     
    Mike
    GeneralRe: work with resizable dialog?memberphilip andrew13 Mar '01 - 10:46 
    Thanks Mike Smile | :) It works good for me. There are some errors when resizing, such as when dragging smaller then larger the box doesn't stay in the same place at all times but otherwise it is great mate !

    GeneralExample As Member tab crashesmemberAnonymous26 Feb '01 - 1:49 
    Select the Example As Member tab on Win2000 Pro and "The memory could not be written" and bang!
    GeneralRe: Example As Member tab crashesmemberMike Melnikov26 Feb '01 - 5:33 
    I've tested it on one Win2000 machine - it work's.
     
    If it is not too difficult: can you run debug version of that example on your computer?
     
    Mike.
    GeneralI got the same problem.memberAnonymous26 Feb '01 - 13:13 
    I got the same problem on Win2000 Pro.
    GeneralRe: I got the same problem.memberAnonymous26 Feb '01 - 22:51 
    The bad guy is m_rightID, which is for the second tab uninitialized. Bad bad programming Wink | ;) .
    If you insert the following it runs fine:
     
    1.)
    ZSplitterDlg::ZSplitterDlg(CWnd* dialog) : m_fullRect(0,0,0,0),_empty(0xFF)
    {...
    m_bottomID = NULL;
    m_rightID = NULL;
    ...}
     
    2.)
    void ZSplitterDlg::init()
    {...
    if( NULL != m_bottomID )
    m_bottomID->addWindow(sizableId,sp_StyleVert);
     
    if( NULL != m_rightID )
    m_rightID->addWindow(sizableId,sp_StyleHoriz);
     
    m_splitterWnds.push_back(m_sizableWnd);
    }
     
    In general if find the code quite usefull, but very raw.
    It needs more errorchecking and some behaviour is not usefull for a real application.
     
    M. Wild
    GeneralRe: I got the same problem.memberMike Melnikov27 Feb '01 - 0:20 
    Thank you for you message.
     
    As I can understand that you spent several minutes with my code. I hope it was not so awful as you said Smile | :)
     
    please check my whole answer here:
    http://www.codeproject.com/useritems/zsplitter.asp?app=10&forumid=1983&fr=1&main=/useritems/zsplitter.asp&select=20923#xx20923xx
     
    Mike.
    GeneralCrashes fixedmemberMike Melnikov27 Feb '01 - 0:01 
    Thanks to all.
     
    There are 2 problems (not in operation system but in small/large fonts):
     
    1. algorithm requires pixel precision
    But when I aligned right two controls in first example (in VC++ editor) they really have equal right border - but only with large font on my computer!!!
    But width of bottom control doesn't equal the sum of widths of top controls in case of small fonts.
     
    2. The second problem and the reason of the crash - I've put a check - not to make "too small" splitters. Frown | :(
    "too small" for me - was 100 pixels - it was good for large fonts.
    But with small fonts controls in second example have less height.
    please find line in ZSplitterDlg.cpp
    if(m_growingRects[g].Width()>100)
    and change 100 to 50.
    I'll make function to set tolerance for this parameter
     
    Thanks to M. Wild for finding line with crash - after his report I've understand the problem immediately.
     
    Mike.
    Generalto Mike MelnikovmemberAnonymous27 Feb '01 - 17:16 

    THANK YOU VERY MUCH!
     
    Smile | :)
    Generalcan not compile under VC7memberchend30 Oct '02 - 22:05 
    Hi
     
    I am trying to use this useful code but I can not compile the code under VC7.
    The problem is:
     
    e:\ZSplitterDlg.h(162): error C2496: 'ZSplitterDlgImpl::messageMap' : 'selectany' can only be applied to data items with external linkage
    with
    [
    T=CPropertyPage,
    SPLITTER=ZSplitter2
    ]
    Can u help me in this?
    Thanks,
    Chen
    Chen@athena-scs.com
    GeneralRe: can not compile under VC7membersdingle20 May '09 - 14:31 
    I updated my definition for BEGIN_T_MESSAGE_MAP to the following to compile with VS2008
     
    #define BEGIN_T_MESSAGE_MAP(theTemplArgs, theClass, baseClass) \
    PTM_WARNING_DISABLE \
    theTemplArgs \
    const AFX_MSGMAP* theClass::GetMessageMap() const \
    { return GetThisMessageMap(); } \
    theTemplArgs \
    const AFX_MSGMAP* PASCAL theClass::GetThisMessageMap() \
    { \
    typedef theClass ThisClass; \
    typedef baseClass TheBaseClass; \
    static const AFX_MSGMAP_ENTRY _messageEntries[] = \
    {

    General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Rant Rant    Admin Admin   

    Permalink | Advertise | Privacy | Mobile
    Web03 | 2.6.130516.1 | Last Updated 29 May 2001
    Article Copyright 2001 by Mike Melnikov
    Everything else Copyright © CodeProject, 1999-2013
    Terms of Use
    Layout: fixed | fluid