VC2010 MFC多文档项目中在带滚动条的窗口中显示图像

2023-11-02

首先创建MFC多文档项目XXX,在“用户界面功能”处勾中“拆分窗口”,在”生成的类“处选择“CScrollView”作为基类。

在XXXDoc.h中:
。。。。。。。。。。。
public:
 CSize GetDocSize() const
 { return m_docSize; }
protected:
 CSize m_docSize;//设置滚动条尺寸
public:
CImage m_srcImg; //用于载入图像

在XXXDoc.cpp 中:
BOOL CXXXDoc::OnOpenDocument(LPCTSTR lpszPathName)
{
 if (!CDocument::OnOpenDocument(lpszPathName))
  return FALSE;
  // TODO:  在此添加您专用的创建代码
 //载入图像
  m_srcImg.Load(lpszPathName);
  m_docSize=CSize((int)m_srcImg.GetWidth(), (int) m_srcImg.GetHeight());

   return TRUE;
}

在CXXXView类中添加消息WM_HSCROLL和WM_VSCROLL并重写OnInitialUpdate()和OnDraw()。
void CXXXtView::OnInitialUpdate()
{
    CScrollView::OnInitialUpdate();
    // TODO: 在此添加专用代码和/或调用基类
    SetScrollSizes(MM_TEXT, GetDocument()->GetDocSize());
}
void CXXXView::OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar)
{
  // TODO: 在此添加消息处理程序代码和/或调用默认值
  CScrollView::OnHScroll(nSBCode, nPos, pScrollBar);
}

void CXXXView::OnVScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar)
{
  // TODO: 在此添加消息处理程序代码和/或调用默认值
  CScrollView::OnVScroll(nSBCode, nPos, pScrollBar);
}
void CXXXView::OnDraw(CDC*  pDC)
{
 CXXXDoc* pDoc = GetDocument();
 ASSERT_VALID(pDoc);
 if (!pDoc)
  return;
   // TODO: 在此处为本机数据添加绘制代码
 if(pDoc->m_srcImg)
 {  
  //用于图像缩放的时候
  SetScrollSizes(MM_TEXT,CSize(pDoc->m_srcImg.GetWidth(),pDoc->m_srcImg.GetHeight())); 
  pDoc->m_srcImg.Draw(pDC->m_hDC, 0, 0);
 }
}

在XXXView.cpp文件中OnInitialUpdate()函数中,通过SetScrollSizes可以修改滚动条的长度。

void CDrawOnPic2View::OnInitialUpdate()
{
CScrollView::OnInitialUpdate();
CSize sizeTotal;
// TODO: 计算此视图的合计大小
sizeTotal.cx = sizeTotal.cy = 100;
SetScrollSizes(MM_TEXT, sizeTotal);
}

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

VC2010 MFC多文档项目中在带滚动条的窗口中显示图像 的相关文章

  • 如何在禁用组框时禁用组框文本?

    我面临组框文本的问题 我通过调用 EnableWindow FALSE 禁用了组框 问题是组框标题没有变灰 谁能告诉我为什么会发生这种情况以及如何摆脱这个问题 这似乎是 comctrl32 dll 中的一个错误视觉风格 https lear
  • 调试 MFC:“mfc100.dll”找不到或打开 pdb

    我正在尝试在调试时进入 MFC 源代码 但是 Visual Studio 显然在加载适当的符号时遇到问题 C WINDOWS symbols dll mfc100 i386 pdb PDB 与图像不匹配 我检查了其他问题 通常建议启用 符号
  • 在Windows服务中使用MFC?

    我开始开发 Windows 服务 我想使用我自己的一些类 它们对某些 MFC 类 如 CString CSocket CArchive CMemFile 和 CObject 几乎没有依赖性 MSDN http msdn microsoft
  • VC++中如何判断链接是否存在?

    我有一个链接 我已通过正则表达式检查该链接是否是有效的 URL 现在 我想检查该链接是否是有效的 http 链接 即它不应该是不存在的链接 VC 6 0 MFC 有办法检查吗 一种选择是尝试使用以下方法从该 URL 获取数据URLOpenB
  • C++ Builder vs Delphi vs MFC

    我正在学习MFC 发现它不太好用 我听说过很多关于 Delphi 的事 对 Delphi 的研究让我接触到了 C Builder C Builder 是否提供了 C MFC 的严肃且良好的替代方案 C Builder 比 MFC 更好吗 C
  • GetWindowRect 坐标不与屏幕相关

    我正在使用 Visual Studio 2008 C 工作 我有一个 MFC 对话框 里面有一个控件 我正在尝试在控件中放置另一个对话框 第二个对话框上的 SetWindowPos 显然使用屏幕坐标 因此我需要获取控件或父对话框的屏幕坐标
  • 如何显示非模式对话框并立即在其中显示信息?

    我想在屏幕上显示一个无模式对话框并在其中显示一些信息 但是 如果我按照以下方式使用它 则会出现一些问题 function showdialog XXX heavy work update the dialog heavy work upda
  • MFC 控件上的文本 - Unicode 字符(例如日语)被截断

    背景 我正在开发一个 C MFC 应用程序 我们已经将其转换为显示 unicode 字符以支持外语 在大多数情况下 这是成功的并且 unicode 字符显示正确 但我遇到了一个问题 某些控件上的某些文本被截断 Example 在这里 您可以
  • 创建非托管常规 MFC DLL 并从托管 C++ .NET 应用程序调用它时出现问题

    我有几个关于 DLL 的问题 我尝试了很多 但无法获得完整的图片 大多数示例都是用 C 等编写的 使用 VS2005 中的向导 我创建了一个非托管 MFC 常规 DLL 由于剩余代码 必须是 MFC 然后我尝试将其导入 VS2005 管理的
  • 与 UltraHD 兼容的 CHtmlView

    CHtmlView与 UltraHD 分辨率不兼容 实现 UltraHD 感知并不仅仅在于使用正确的 HTML CSS 打印预览机制失败并裁剪页面 许多个月前 微软承认这是一个问题 但没有解决它 我的应用程序大量使用CHtmlView用于显
  • 在Linux上运行MFC程序

    我有一个相当大的基于 MFC 的程序 我的任务是让它在 Linux 上运行 我已经解释过 这需要将程序重新编写为带有 STL 的直接 C 更多工作 或者重新编写为 Qt C 更少工作 现在我被告知 我需要编写包装器以使每个 MFC 类在 L
  • 如何将命名管道字符串从非托管代码空间发送到托管代码空间?

    我似乎遇到了命名管道 101 问题 我有一个非常简单的设置来连接从 C 非托管应用程序传输到 C 托管应用程序的单工命名管道 管道已连接 但我无法通过管道发送 消息 除非我关闭似乎刷新缓冲区并传递消息的句柄 就好像消息被屏蔽了一样 我尝试颠
  • 如何在VC++/MFC中替换字符串中两个子字符串之间的字符串?

    假设我有一个 CString 对象 strMain AAAABBCCCCCCDDBBCCCCCCCCDDDAA 我还有两个较小的字符串 例如 strSmall1 BB strSmall2 DD 现在 我想替换 strMain 中 strSm
  • _CrtDumpMemoryLeaks( ) == 1 在第一行代码上?

    我正在开发一个 MFC Visual C 项目 据我了解MSDN http msdn microsoft com en us library d41t22sb 28v VS 100 29 aspx CrtDumpMemoryLeaks 应该
  • 获取正在运行的程序的属性

    我想开发一个程序 其 ID 是一张牌 因为它在另一个正在运行的程序 例如扑克或红心游戏或其他程序 中播放 我首先尝试获取有关已运行的游戏程序的所需信息 但我从一开始就遇到了问题 我正在运行 MSVC 2013 并开发 MFC 应用程序 现在
  • .NET(或 MFC)的高速图形控件?

    我需要编写一个数字示波器类型的应用程序 有很多很棒的静态绘图控件 但我需要一些可以绘制每秒处理 4000 个样本的 16 条轨迹的东西 有人知道 NET 的高速图形控件吗 我什至会选择 MFC 因为它可以封装到 NET 控件中 谢谢您的帮助
  • 如何通过MFC将应用程序设置保存到注册表中?

    我有一个由 MFC 项目向导创建的 MFC 应用程序 我想在注册表中保存 读取应用程序设置 所以问了这个question https stackoverflow com questions 1880275 good c registry w
  • 为什么我的单选按钮不起作用?

    我正在 Visual C 2005 中开发 MFC 对话框应用程序 我的单选按钮是 m Small m Medium 和 m Large 它们都没有在我的 m Summary 编辑框中显示应有的内容 可能出什么问题了 这是我的代码 Pizz
  • 更改 GLUT 调用以与 MFC/C++ 一起使用

    我有一个使用 GLUT 进行 OpenGL 渲染的程序 现在我需要它位于 MFC 项目内部 以便它可以与另一个程序组件一起使用 我已经按照这个教程进行操作 http www codeguru com cpp g m opengl openf
  • CComboBox DDX_CBString 行为令人困惑

    我在对话框中使用 ComboBox 控件为用户提供一些有用的值 例如 10 20 100 400 800 但让用户根据需要插入准确的值 经过很长时间我发现 如果我输入值40在 Combobox 中 Combobox 始终在 UpdataDa

随机推荐

  • [系统安全] 四十八.恶意软件分析 (4)Cape沙箱批量提取动态API特征

    终于忙完初稿 开心地写一篇博客 您可能之前看到过我写的类似文章 为什么还要重复撰写呢 只是想更好地帮助初学者了解病毒逆向分析和系统安全 更加成体系且不破坏之前的系列 因此 我重新开设了这个专栏 准备系统整理和深入学习系统安全 逆向分析和恶意
  • JavaScript-内置对象和包装类型

    作为JS面试题中经常被问到的考点 怎么能不好好了解 理解呢 或许标题中的名词我们不是很了解 但是我相信我们一定都实践过 而且不止一次 只不过当时我们或许停留在使用的层次 没有深入了解原理 在此之前的我也是这样的 不过学习知识 果真是 N 1
  • 恋爱与婚姻的区别

    恋爱是走在婚姻的路上 婚姻是恋爱的最好归宿 不是每一对恋人都能走进婚姻的殿堂 也不是每一对夫妻都能白头偕老 恋爱和婚姻不同 恋爱是没上保险的爱情 而婚姻是上了保险的爱情 在一般情况下 一对恋人容易和平相处 而一对夫妻却常常因为一点小事 争论
  • Anaconda命令-网站大全

    Anaconda命令 网站大全 命令行初始化 conda init 在安装好Anaconda之后配置命令行自动激活base环境 支持PowerShell和Cmd 配置pip Anaconda软件源 清华源 pip 网站 pypi 镜像站使用
  • 数据结构(使用尾插法实现单链表)

    1 线性表的链式存储就是单链表 单链表通过一组任意的存储单元来存储线性表的数据元素 逻辑相邻 存储离散 单链表对于每一个链表结点 不但存储自身数据 还开辟了存储一个指向后继结点的指针 2 单链表相比顺序表 优点 解决了顺序表需要大量连续存储
  • 规则引擎Drools使用 第十三篇 Drools 编写规则文件的规范

    我们在进行drl类型的规则文件编写时尽量遵循如下规范 所有的规则文件 drl 应统一放在一个规定的文件夹中 如 rules文件夹 书写的每个规则应尽量加上注释 注释要清晰明了 言简意赅 同一类型的对象尽量放在一个规则文件中 如所有Stude
  • 梅科尔工作室-李朝阳-鸿蒙笔记3

    list组件 列表组件 相当于大盒子里面套小盒子 示例 父子组件 即主 次两个文件之间内容的调用 if else循环 改变组件的渲染状态 判断是否需要改变状态 示例 for循环 开发框架提供循环渲染 ForEach组件 来迭代数组 并为每一
  • Sqlite3之C++开发常用API总结

    文章目录 Sqlite3之C 开发常用API总结 使用流程 sqlite3 open Sqlite3 prepare sqlite3 bind sqlite3 step sqlite3 column sqlite3 exec sqlite3
  • 论文阅读——基于观测数据的时间序列因果推断综述

    国防科大2022年3月的综述 1 Granger 多元Granger VAR 条件集 P X Y gt 条件VAR模型 比较y与y 来判定因果关系 加入条件集 消除其它变量影响 条件Granger 用矩阵表示参数 简化计算 并提出基于检验的
  • 整车控制器(VCU)

    纯电动汽车整车控制架构图 图片 电动新视界 纯电动汽车整车控制策略图 图片 电动新视界 纯电动
  • 【2019.05】JS逆向——破解百度翻译参数(sign)爬虫 超级详细

    有时间了打算把有道 百度 Google翻译都搞一遍 填坑百度翻译 这篇与有道那篇操作基本一致 有可能写的没有那篇清楚 大家也可以观摩一下上一篇 2019 05 JS逆向 破解有道翻译爬虫参数 sign 一 分析请求参数 打开地址 https
  • transformer中layer normalization详解

    2015年batch normalization提出 2016年的layer normalization 这是在论文中截的图 箭头指向的青色线代表加了layer normalization的模型 收敛速度最快 layer normaliza
  • Matalb在一张图中拟合多条曲线

    function Multiple fitted curves SOC 3A U 3A SOC 2A U 2A SOC 1A U 1A SOC 05A U 05A 将需要绘制图像的数据加入参数中 Fit SOC U xData1 yData
  • netty 学习系列 ChannelOption

    Netty之ChannelOption 一 详情 在用netty作为底层网络通信的时候关于ChannelOption的参数让我一直模糊不清楚 于是去看一下linux网络编程 发现ChannelOption的各种属性在套接字选项中都有对应 下
  • 【计算机网络】网络层:外部网关协议BGP

    BGP是不同自治系统的路由器之间交换路由信息的协议 采用路径向量路由选择协议 只能力求选择出一条能够到达目的网络且比较好的路由 不是计算出一条最佳路由 首先互联网规模太大 使得AS之间路由选择非常困难 其次自治系统AS之间路由选择需要考虑安
  • 内置对象--Math对象

    Math对象 数学对象 是一个内置对象 它拥有一些数学常数属性和数学函数方法 他不是构造函数 不需要用到new 可以直接使用 Math 的所有属性与方法都是静态的 Math的常用方法 Math abs 1 gt 1 返回一个数的绝对值 Ma
  • 【LVGL】ANIM(动画)时间线学习

    时间线 timeline 有时候需要同时播放较多动画 此时如果逐个播放的话 需要逐个为动画设计延时 不方便安排 此时 可以使用 LVGL 提供的时间线 timeline 统一安排各个动画 时间线的创建非常简单 首先 创建一系列动画 但先不调
  • uniapp使用scroll-view左右联动完整功能

  • stm32控制舵机旋转到不同角度

    最近学习了stm32 就想用它来控制舵机 然后写下这篇文章分享给大家 如果有理解不到位的地方欢迎大家指正 我使用的是stm32f103ve型号的开发板 即使和你的型号不同 也有参考价值 想要控制舵机的转动 首先你得知道舵的工作原理 舵机的主
  • VC2010 MFC多文档项目中在带滚动条的窗口中显示图像

    首先创建MFC多文档项目XXX 在 用户界面功能 处勾中 拆分窗口 在 生成的类 处选择 CScrollView 作为基类 在XXXDoc h中 public CSize GetDocSize const return m docSize