救命呀:)怎样在一个类中的按钮点击,去执行另一个类中的函数命令

ponder781017 2010-02-28 01:39:07
各位大侠,我开发了一个程序有上下两个视图类,上面的CFormView视图类名称叫topview 下面的CHtmlView视图类叫 rightview

我是想在topview 里 加个按钮,点击之后,去执行 rightview 里的Onfillcontent()函数,这个函数是用来在rightview中,将打开的网页里的表单填内容的:)

就是不知道如何实现跨类执行?或者是用消息发送SendMessage()实现吗?或者是在topview中取得rightview指针执行吗?

哪位高人指点一下呀,能说的具体点么? 最好给个例子呀:)
...全文
187 12 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
ponder781017 2010-02-28
  • 打赏
  • 举报
回复
我在发送消息的类中的头文件中TopView.h中 #define WM_MY_MESSAGE (WM_USER+100)


在发送消息的类中的TopView.cpp中要先添加:#include "MainFrm.h"

然后在按钮响应消息中这样写:


void CTopView::OnBnClickedButton1()
{
// TODO: 在此添加控件通知处理程序代码
//MessageBox("");
CMainFrame* pmf=(CMainFrame*)AfxGetApp()->m_pMainWnd; //先通过获取当前框架指针
CView * active = pmf->GetActiveView();//才能获取当前视类指针
if(active != NULL) //获取了当前视类指针才能发送消息
active->PostMessage(WM_MY_MESSAGE,0,0); //使用PostMessage发送消息
}



下面在接受消息的类中的RightView.h中,也要定义#define WM_MY_MESSAGE (WM_USER+100)


  并定义消息映射函数-OnMyMessage()
  protected:
  //{{AFX_MSG(CMessageTestView)
  afx_msg LRESULT OnMyMessage(WPARAM wParam, LPARAM lParam);
  //}}AFX_MSG
  DECLARE_MESSAGE_MAP()


  在其RightView.cpp中,
  声明响应消息:
  BEGIN_MESSAGE_MAP(CMessageTestView, CEditView)
  //{{AFX_MSG_MAP(CMessageTestView)
  ON_MESSAGE(WM_MY_MESSAGE, OnMyMessage)
  //}}AFX_MSG_MAP


  再添加消息响应的函数实现:
  LRESULT CRightView::OnMyMessage(WPARAM wParam, LPARAM lParam)
  {
  MessageBox("OnMyMessage!");
  return 0;
  }


可是我在测试编译后,打开软件,点击上面的TopView中的那个按钮 还是一点反应都没有 请问给我大侠 是这么回事?

















ponder781017 2010-02-28
  • 打赏
  • 举报
回复
请教自定义的消息是在那个类中定义呀,是在框架类中定义吗?还是就是在topview类中定义呢?
ponder781017 2010-02-28
  • 打赏
  • 举报
回复
VC++ 2005 自定义消息 我试过 老是出错,请指点一下是跟vc6.0区别很大的,请给个例子呀
xuzirui3 2010-02-28
  • 打赏
  • 举报
回复
我也想知道哦!——————————————————————————
jameshooo 2010-02-28
  • 打赏
  • 举报
回复
当然可以,自定义一个消息,向rightview窗口发送这个消息,rightview响应这个消息,在响应函数里直接调用onfillcontent
ponder781017 2010-02-28
  • 打赏
  • 举报
回复
请问用发消息的方法能不能使用 例如 SendMessage(rightview句柄,Onfillcontent()) 意思就是向rightview发个消息,告诉rightview执行Onfillcontent函数命令?
ponder781017 2010-02-28
  • 打赏
  • 举报
回复
请问用发消息的方法能不能使用 例如 SendMessage(rightview句柄,Onfillcontent()) 意思就是向rightview发个消息,告诉rightview执行Onfillcontent函数命令?

有没有这样的方法,有的话给个代码参考呀:)
cnzdgs 2010-02-28
  • 打赏
  • 举报
回复
topview中GetDocument()->UpdateAllViews(this, ……
rightview在OnUpdate中调用Onfillcontent。
lrqsf 2010-02-28
  • 打赏
  • 举报
回复
方法很多,不知道你的框架怎么做的不太好说。比较简单的写一个HTML类的静态函数就可以解决。
WizardK 2010-02-28
  • 打赏
  • 举报
回复
引用楼主 ponder781017 的回复:
各位大侠,我开发了一个程序有上下两个视图类,上面的CFormView视图类名称叫topview 下面的CHtmlView视图类叫 rightview

我是想在topview 里 加个按钮,点击之后,去执行 rightview 里的Onfillcontent()函数,这个函数是用来在rightview中,将打开的网页里的表单填内容的:)

就是不知道如何实现跨类执行?或者是用消息发送SendMessage()实现吗?或者是在topview中取得rightview指针执行吗?

哪位高人指点一下呀,能说的具体点么? 最好给个例子呀:)


你不是已经都说出来了,一种是发消息,另一种是获取你所创建的rightview实例的指针,在topview中操作。
ponder781017 2010-02-28
  • 打赏
  • 举报
回复
我顶飞,没人帮忙吗 各位大侠
ponder781017 2010-02-28
  • 打赏
  • 举报
回复
我顶,没人帮忙吗 各位大侠
软件功能编辑 几何画板是适用于数学、平面几何、物理的矢量分析、作图,函数作图的动态几何工具。 《几何画板》软件是由美国Key Curriculum Press公司制作并出版的优秀教育软件,1996年该公司授权在中国发行该软件的中文版。正如其名“21世纪动态几何”,它能够动态地展现出几何对象的位置关系、运行变化规律,是数学与物理教师制作课件的“利剑”! 窗口 由题标栏、菜单栏、工具栏、状态栏、绘图窗口和记录窗口等组成。 工具栏 工具栏依次是选择工具(实现选择,及对象的平移、旋转、缩放功能)、画点工具、画线工具、画圆工具、文本工具和对象信息工具。在选择工具和画线工具按钮上按住鼠标左键停留片刻,会弹出更多的类型工具;选择对象的方法可以选择点按、按Shift点按或拖动等方式选中对象。 关系 几何画板中对象之间的关系如同生活中父母与子女关系。如果改变“父母”的位置或大小,为了保持与父母的几何关系,作为“子女”对象也随之变化。例如,我们先作出两个点,再作线段,那么作出的线段就是那两个点的“子女”。又如,先作一个几何对象,再基于这个对象用某种几何关系(平行、垂直等)或变换(旋转、平移等)作出另一个对象,那么后面作出的几何图形就是前面的“子女”。 信息工具 选择“信息工具”,然后在某个对象上单击或双击,即可显示有关信息或弹出该对象信息对话框。 基本操作编辑 点 例1 画三角形 先画三个点(可按住Shift键连续画点);然后利用“构造”菜单中的“线段”命令画出三角形。 注:用按住Shift键的方法,最大的好处是三个顶点都被选中。 例2 画多边形 先画多个点(可按住Shift键连续画点);然后利用“构造”菜单中的“线段”命令(或直接按CtrL+L)画出多边形。 注:选取顶点的顺序是十分重要的,不同的顺序会得出不同的多边形。 用几何画板画出圆的轨迹 用几何画板画出圆的轨迹 线 “画线工具”有三种线段、直线和射线,选中后在绘图窗口中进行画图即。 例3 制作验证三角形的三边的垂直平分线相交于一点的课件(初步进行作图练习) 圆 画圆有3种方法 用画圆工具作圆;通过两点作圆;用圆心与半径画圆(这种方法作的圆定长不变,除非改变定长时,否则半径不变) 圆弧 画圆弧也有3种方法 按一定顺序选定三点然后作弧(按逆时针方向从起点到终点画弧);选取圆及圆上2点作弧(从第一点逆时针方向到第二点之间的一段弧);选取圆上三点作弧(与法2相似,只是无需选中圆,作完弧后,可以隐藏原来的圆,可见新作的弧) 扇形和弓形 与三角形内部相似(先选中三个顶点),扇形和弓形含有“面”,而不仅仅只有“边界”。扇形和弓形的画法类似: 用上述方法作圆弧,选择该弧,用“作图”菜单中的“扇形内部”(或“弓形内部”)命令作出扇形或弓形(阴影部分)。 度量及计算 [度量] 选中三角形内部后,在“度量”菜单中“面积”和“周长”命令,度量三角形面积与周长。利用“显示”菜单中“参数选择”命令,可以进行“对象参数”设置。 [计算] “度量”菜单的“计算”命令可以对对象的值进行运算,求得所需要的结果,我们以“相交弦定理”验证为例进行说明。 ①画一个圆及两条相交的弦;②度量出四条线段的长度(距离);③分别选择同一直线上的两条线段的距离值,利用“度量”菜单中的计算命令,依次计算出两者之积④拖动动点,观察规律:相交弦定理。 制表 [制表] 在“度量”菜单中“制表”命令。选择上例中“四条线段的长度”,利用“制表”命令,制出表格。变化图形,增加表格项的方法有3种:选中表格菜单中“加项”命令;选中表格利用CtrL+E快捷键;双击表格。 变换 “变换”包括平移、旋转、缩放、反射等命令。各标记命令允许指定决定变换的几何对象、几何关系,或度量值。也可以通过组合平移、旋转、缩放、反射等变换定义自己的变换。 标记中心和标记镜面命令确定了几何变换的类型。旋转和缩放需要一个中心点,所以在实施这两种变换前要先确定一个中心点。同样,反射需要一个镜面,在反射前要先确定一个镜面。 标签 所谓标签,也就是给作出的点、线、圆、圆弧等几何图形起个名字。用几何画板作出的几何对象,一般都由系统自动配置好标签。利用“标签”工具双击标签文本可以进行重命名操作。 提高操作编辑 快速绘制 ①利用快捷键 如绘制多边形时,可先利用画点工具,画若干个点(顶点)。画点时按住Shift键,使之均处于选中状态,然后利用作线段快捷键命令CtrL+L,来快速完成多边形的绘制。 ②直接使用键盘命令创建图形对象 其实《几何画板》中提供了通过键盘命令(几个标点符号键)直接输入几何图形的方法。 句号( 。 ) —— 绘制点 逗号( , ) —— 绘制圆 斜杠( / ) —— 绘制线(包括线段、射线和直线,它们各类型之间可通过重复点击来切换) 分号( ;) —— 绘制圆弧 撇号( ’)

3,056

社区成员

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

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