| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2207 人关注过本帖
标题:求助:关于VS2010中VC++ AppWiza的疑惑
只看楼主 加入收藏
ygp_sfec
Rank: 3Rank: 3
等 级:论坛游侠
威 望:2
帖 子:87
专家分:115
注 册:2009-9-8
结帖率:100%
收藏
 问题点数:0 回复次数:0 
求助:关于VS2010中VC++ AppWiza的疑惑
最近在学习VisualC++技术内幕第四版,在学习到第19章切分窗口和多视图时遇到一个问题,纠缠了好几天,未能找到答案,请高手予以解答。
问题是这样发生的,该书的Ex9b例程是创建一个应用程序,改程序拥有一个文档类和两个视图类,用于显示一首诗,两个视图类共用一个文档类(其中储存了诗的字符串数组),两个文档类分别显示该诗字符串形式和十六进制编码,采用静态切分窗口显示,即在程序运行之初同时显示在主框架的客户区内,两个视图类没有问题。按照书中的创建方法,应用程序由AppWizard创建,创建方法为在AppWizard的第5步应该选中拆分窗口复选框。此时创建的是由视图菜单“视图-拆分窗口”菜单控制的动态拆分窗口,然后将CMainFrame的OnCreateClient函数用下面的代码替换原代码:
BOOL CMainFrame::OnCreateClient(LPCREATESTRUCT /*lpcs*/,
    CCreateContext* pContext)
{
    /*return m_wndSplitter.Create(this,
        2, 2,               // TODO: 调整行数和列数
        CSize(10, 10),      // TODO: 调整最小窗格大小
        pContext);*/   
    CRect rcClient;
    GetClientRect(&rcClient);
    VERIFY(m_wndSplitter.CreateStatic(this,2,1));
    VERIFY(m_wndSplitter.CreateView(0,0,RUNTIME_CLASS(CStringView),CSize(100,rcClient.bottom/2),pContext));
    VERIFY(m_wndSplitter.CreateView(1,0,RUNTIME_CLASS(CHexView),CSize(100,rcClient.bottom/2),pContext));

    return TRUE;

}
即成为静态切分窗口。但是我在创建程序时不小心,忘了在AppWizard第5步选中“拆分窗口”复选框,因此在应用程序框架创建后手工在MainFrm.h头文件中添加了“protected:
    CSplitterWnd m_wndSplitter;”成员和“public:
    virtual BOOL OnCreateClient(LPCREATESTRUCT lpcs, CCreateContext* pContext);”成员函数的声明。并在MainFrm.cpp实现文件中按照上述代码添加了OnCreateClient成员函数的代码,然后对程序进行调试,奇怪的是,该程序出现运行时错误,对错误进行跟踪发现,错误是由视图类的基类CScrollView::OnPrepareDC引起的,引发错误的原因是在该函数中未设置映射模式,而我明明在两个视图类的OnInitialUpdate中度设置过映射模式。而且在出错提示对话框中若一直选择“继续”,程序还可以正常运行。最奇怪的时在VS“生成-配置管理器”将生成模式设置为Release后,不再出现错误,程序能够正常运行。
   经过长时间的分析,找不出原因后,我还是按照书中的步骤,老老实实地在AppWizard中选择“拆分窗口”复选框,并按照书中的方法修改代码,再次对程序进行调试,发现此时不管是生成Debug版本还是Release版本,程序都可以正常运行,不再出现报错,不知道这是为什么,请高手能够指点迷津,不胜感谢。
搜索更多相关主题的帖子: AppWiza 
2010-10-04 22:01
快速回复:求助:关于VS2010中VC++ AppWiza的疑惑
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.011383 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved