我要实现的是一个灰度图像的直方图
程序的结构式文档/视类的
因为直方图本身的数据size_t *p;//p=new size_t[256]
是放在菜单打开后弹出的一个模态对话框里的曾经我实现过在对话框本身的static控件里面画图  但是因为控件太小 直方图的标示看不清楚 比如50,100,..的标识等
我现在想通过一种方法把对话框的数据指针传给视图类
这样在view里面就可以绘图
问题是怎么传?我也想到过用框架类来传 比如在view类里面
CMainFrame *p=(CMainFrame *)GetParent();//视图到框架
CBmpSee * bp=(CBmpSee *)p->GetDlgItem(IDD_BMP_SEE);//框架到菜单 定位到bmpsee对话框
IDD_BMP_SEE 是显示位图的那个对话框的ID
不是触发对话框显示的那个菜单项上的ID 但是菜单ID 我也试验过没用的
结果bp都是NULL 无法进行bp->greyTable;读取灰度直方图指针操作我的求助问题就是
怎么在视类里面得到菜单下某对话框的指针或数据

解决方案 »

  1.   

    你的这个对话框是不是一个弹出的DoModal()对话框呀?这样的话你的视图肯定对不到他的数据,因为对话框是一个临时局部对象,关闭后就删除了。
    你可以将你的对话框里的代码移到你的View里,在View里是可以直接绘图的,在View里可以随时得到CDC进行绘图。
    CBmpSee * bp=(CBmpSee *)p->GetDlgItem(IDD_BMP_SEE);这里bp肯定是NULL,因为你的对话框肯定是NULLl,因为当前你的这个对话框对象并不存在,再一个这个函数是用来得到对话框上的子控件的。
      

  2.   

    回下xsc2001:
    我的对话框是通过Domodal打开的
    是在菜单栏的某一项建立了在view类写的消息相应函数 在函数中就是该对话框类对象的DoModal函数
    但是我没有关闭对话框 换句话讲我的目的是点击对话框上的直方图按钮的时候就可以看到视类里面的直方图
    在对话框类的直方图按钮的响应函数里面有这样的代码
    CMainFrame * P=(CMainFrame *)GetParent();//得到对话框的父类 kuangj
    CMyView * bp=(CMyView *)P->GetActiveView();
    bp->Invalidate(TRUE);在视图类里面的代码就是上面的帖子写的那样 我调试的时候发现bp始终为NULL
    而输入(CMyView *)P->GetActiveView() 值查看的时候出现 
    (CBmpSee *)p->GetDlgItem(IDD_BMP_SEE) CXX0033: Error: error in OMF type information   错误
    不知道是怎么回事了
      

  3.   

    在你view定义个变量,再在dlg上关联个大小变变量?在你domodal把大小传过来?在在view上画出来
      

  4.   

    CBmpSee * bp=(CBmpSee *)p->GetDlgItem(IDD_BMP_SEE);
    这种方法是行不通的既然LZ使用文档视结构,那么就按套路出牌,将直方图的数据放到文档中吧,在进行对话框操作前,将文档指针传给对话框,对话框将计算得到的数据直接更新到文档数据中
    视仅仅是显示界面,数据全权有文档提供。软件结构设计远远比代码本身重要