很菜的问题——如何在单文档视图区响应消息来显示字符

reyo7 2006-04-05 06:15:51
比如单击鼠标左键,视图区就显示一个指定的字符
——别问偶是谁了,一看就知道是菜鸟。谢谢!
...全文
439 22 打赏 收藏 转发到动态 举报
写回复
用AI写文章
22 条回复
切换为时间正序
请发表友善的回复…
发表回复
菜牛 2006-06-11
  • 打赏
  • 举报
回复
还没见解决吗?
菜牛 2006-04-13
  • 打赏
  • 举报
回复
别忘了#include <afxtempl.h>,放在...View.h的类声明前面。
reyo7 2006-04-13
  • 打赏
  • 举报
回复
不过还是很感谢Mackz和大家!
reyo7 2006-04-13
  • 打赏
  • 举报
回复
我的妈,132个错误,得慢慢调了!
菜牛 2006-04-10
  • 打赏
  • 举报
回复
生成一个SDI程序。
在C...View的头文件...view.h中,添加一个自定义结构:
typedef struct _MY_DATA
{
CPoint ptString;
CString strContent;
}MY_DATA;

添加C...View类的成员变量(别忘了#include <afxtempl.h>)
CArray<MY_DATA, MY_DATA*> m_arContent;

在C...View::OnDraw(CDC *pDC)中:
POSITION pos = m_arContent.GetHeadPosition();
while (pos)
{
MY_DATA *pContent = (MY_DATA*)m_arContent.GetNext(pos);
if (!(pContent->strContent.IsEmpty()))
pDC->TextOut(pContent->ptString.x, pContent->ptString.y, pContent->strContent);
}

在C...View::OnLButtonDown(UINT nFlags, CPoint point)中:
MY_DATA *pData = new MY_DATA;
pData->ptString = point;
pData->strContent.Format(_T("(%d, %d)"), point.x, point.y);
m_arContent.Add(pData);
Invalidate();

在C...View::~C...View()中:
POSITION pos = m_arContent.GetHeadPosition();
while (pos)
{
MY_DATA *pContent = (MY_DATA*)m_arContent.GetNext(pos);
delete pContent;
}
m_arContent.RemoveAll();


代码没有调试,可能有语法错误,自己调试一下。
reyo7 2006-04-09
  • 打赏
  • 举报
回复
另外还有个问题,就是我希望前面在视图显示的字符还留在窗体上,并不会因为重新点击鼠标而消失只显示新的字符
reyo7 2006-04-09
  • 打赏
  • 举报
回复
谢谢Mackz我已改过来了
菜牛 2006-04-08
  • 打赏
  • 举报
回复
我不知道你是不是拷贝了我的代码,不过C/C+++是区分大小写的。
reyo7 2006-04-07
  • 打赏
  • 举报
回复
'm_ptcontent'还要在哪里声明啊?
reyo7 2006-04-07
  • 打赏
  • 举报
回复
Mackz兄照你说的添加代码编译生成2个错误:f:\projects\hook\hook\hookview.cpp(60) : error C2065: 'm_ptcontent' : undeclared identifier
f:\projects\hook\hook\hookview.cpp(60) : error C2228: left of '.y' must have class/struct/union
type is ''unknown-type''
reyo7 2006-04-06
  • 打赏
  • 举报
回复
用消息处理函数调用OnDraw么?就是不知道这个消息处理函数怎么写呀!
菜牛 2006-04-06
  • 打赏
  • 举报
回复
最简单的:
生成一个SDI程序。
添加C...View类的成员变量
CString m_strContent;
CPoint m_ptContent;

在C...View::OnDraw(CDC *pDC)中:
if (!m_strContent.IsEmpty())
pDC->TextOut(m_ptContent.x, m_ptcontent.y, m_strContent);

在C...View::OnLButtonDown(UINT nFlags, CPoint point)中:
m_ptContent = point;
m_strContent = _T("Left Button Clicked Here!");
Invalidate();

在C...View::OnRButtonDown(UINT nFlags, CPoint point)中:
m_ptContent = point;
m_strContent = _T("Right Button Clicked Here!");
Invalidate();

在C...View::OnLButtonDblClk(UINT nFlags, CPoint point)中:
m_ptContent = point;
m_strContent = _T("Left Button Double Clicked Here!");
Invalidate();

wltg2001 2006-04-06
  • 打赏
  • 举报
回复
你问得不太清楚,根据鼠标点击的消息而产生的字符,但是鼠标消息并不是很多,如果你想左击显示一种字符,右击显示另一种字符,你就多写几个消息处理函数不就得了。
lily_123567 2006-04-06
  • 打赏
  • 举报
回复
用SetCapture()捕获所有鼠标消息,然后处理,程序结束的时候ReleaseCapture()
aa3000 2006-04-06
  • 打赏
  • 举报
回复
hook 鼠标事件,然后在事件响应中保存要显示的字符并且调用 InvalidateRect,OnDraw 判断是否需要显示字符。
wltg2001 2006-04-06
  • 打赏
  • 举报
回复
消息总是以WM_开头的,具体的你去参MSDN吧!
wlwlxj 2006-04-05
  • 打赏
  • 举报
回复
把点击次数和字符存储,在OnDraw里面显示
reyo7 2006-04-05
  • 打赏
  • 举报
回复
这个我知道,我的意思是如何鼠标点击一下就显示一个字符,也就是显示字符是根据鼠标点击的消息而产生的
lily_123567 2006-04-05
  • 打赏
  • 举报
回复
首先你要明白在那单击鼠标左键,视图里可以处理视图的WM_LBUTTONDOWN消息,如果是窗体框架可以处理WM_NCLBUTTONDOWN消息。
具体显示字符的方法:
CDC *pDC = GetDC();
pDC->TextOut(x坐标,y坐标,要显示的字符串);
最后别忘了
ReleaseDC(pDC);
reyo7 2006-04-05
  • 打赏
  • 举报
回复
随便,并不要求单击指定的按钮,哪怕在桌面上单击也行!
加载更多回复(2)
内容概要:本文档围绕基于MATLAB/Simulink平台的直流无刷电机速度控制系统展开,重点介绍利用Simulink搭建电机控制模型,实现直流无刷电机的速度开环控制仿真。文档详细阐述了系统建模、关键模块设计与参数配置过程,帮助读者深入理解电机控制的基本原理与仿真流程。同时,文档还列举了涵盖电力电子、新能源系统、路径规划、智能优化算法等多个领域的丰富仿真案例,充分展示了MATLAB/Simulink在多学科交叉科研仿真中的强大功能与广泛应用前景。; 适合人群:具备一定自动控制理论基础和MATLAB/Simulink使用经验的高校学生、科研人员及工程技术人员,特别适用于从事电机控制、电力电子、新能源系统、智能优化等方向的研究者。; 使用场景及目标:①学习直流无刷电机的工作原理及其速度开环控制方法;②掌握使用Simulink进行电机控制系统建模与仿真的核心技能;③为后续开展更高级的闭环控制、矢量控制或结合智能优化算法的电机控制研究奠定坚实的技术基础并提供实用的参考实例。; 阅读建议:建议读者结合文档提供的仿真模型与代码资源,亲自动手实践Simulink建模全过程,逐步理解各功能模块的作用与参数整定方法,并充分利用网盘中的配套资料进行复现与深入学习,从而有效提升科研仿真与工程实践能力。
内容概要:本文系统阐述了基于二维离散时间卡尔曼滤波器在二维平面内对运动目标进行轨迹跟踪的技术方案,重点分析了过程噪声与测量噪声在不同强度下对滤波性能的影响。通过建立目标状态空间模型,设计完整的预测与更新算法流程,实现了对受噪声干扰的观测数据进行有效估计与轨迹平滑,充分展现了卡尔曼滤波在动态系统状态估计中的鲁棒性与实用性,并提供了完整的Matlab代码实现,便于理论验证与参数调试。; 适合人群:具备信号处理、控制理论或状态估计基础知识的研究生、科研人员,以及从事雷达系统、导航定位、机器人感知、自动驾驶等领域的工程技术人员。; 使用场景及目标:① 掌握卡尔曼滤波的核心原理及其在目标跟踪中的建模与实现方法;② 分析不同噪声协方差参数对滤波收敛性、估计精度和平滑效果的影响;③ 为深入研究非线性滤波算法(如EKF、UKF)或多传感器融合技术奠定理论与实践基础。; 阅读建议:建议读者结合所提供的Matlab代码进行仿真实验,通过调整过程噪声和观测噪声的强度,观察滤波轨迹与真实轨迹的偏差变化,深入理解协方差矩阵的演化机制,并尝试将该方法拓展至三维空间或多目标跟踪场景,以增强实际应用能力。

15,976

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧