在开发项目的过程中,我建立了一个SDI程序, 在资源里建了一个对话框,我想把这个对话框显示在VIEW的界面上,请问应该怎么做呢?
   我现在的做法是,将对话框用CLASSWIZARD建立一个基于CPropertyPage的类CPage,而后在VIEW类的头文件中包括该类的头文件,建立一个变量CPage myPage;
在View中的OnCreate中,调用: myPage.Create(IDD_PAGE,this);
在OnDraw中,调用myPage.MoveWindow(0,0,100,200);myPage.ShowWindow(SW_SHOWNORMAL);myPage.UpdateWindow();可是出不来啊,着急,请帮忙看哪个地方还有没想到的吗?
谢谢!

解决方案 »

  1.   

    这样是不行的,还需要建一个property sheet的类,简单的说就是
    1、插入一个类,假定名字是CSheet,类型选择为CPropertySheet,
    2、在这个类的实现(cpp文件)的第二个构造函数(印象里它的第一个参数是LPCSTR的)里,加入这样的代码,AddPage(&m_P),注:m_p是你前面建的那个property page所对应的变量,这里假定是m_p;
    3、在你的view视图里,引用一下刚才的那个头文件,即“Sheet.h”,接着在需要的功能部分,创建这个CPropertySheet的实例,编译运行程序就可以显示了。
      

  2.   

    注:建立以CPropertySheet为基类的类是没有界面的。
      

  3.   

    楼上的两位朋友说的方法我明天试一下,然后给大家答案。我也刚在考虑是不是CPropertyPage类必须和CPropertySheet类合在一起用。
      

  4.   

    既然是对话框,就从CDialog来继承啊。
      

  5.   

    这个问题已经搞定了,其实楼上的朋友说的也是对的,但我这样做也是对的,因为CPropertyPage也是从CWnd继承过来的,我把myPage.UpdateWindow();这一句改为myPage.Invalidate()就搞定了,但原因我仍不太清楚,因为UpdateWindow好像也发送WM_PAINT消息吧。
      

  6.   

    myPage.Invalidate()会调用OnPaint(),所以会显示
      

  7.   

    对的,最后忘了说那一条了,是需要再使用Invalidate()方法一下
      

  8.   

    看我的贴子。
    http://topic.csdn.net/u/20080924/17/883dd18c-c09a-4b3d-b25c-30c67286b13e.html?seed=417053144