在VS2008里的一个项目,我写了一个类,对应的是一个弹窗,但我需要将弹窗显示在右下角,我在另一个文件中写了调用语句,
int width = GetSystemMetrics ( SM_CXSCREEN ); 
int height= GetSystemMetrics ( SM_CYSCREEN );  CRect r1 = CRect(width-400,height-400,width,height); cNetTan.DoModal(NULL, r1) ;   
可是当我显示出对话框之后,对话框上的edit控件却显示不出来了,如果我直接domodel()显示窗口的话,窗口显示在屏幕中央,而且可以显示出edit控件,我想问下这到底是怎么回事啊?这个是用WTL做的,不是用MFC做的~
求指教~~~~~已经困扰了几天了

解决方案 »

  1.   

    你这个cNetTan 是个什么类的对象? 貌似不是CDialog吧
      

  2.   

    是自己定义的一个类CNETTAN 继承自CBkDialogImp这个的
      

  3.   

    弹窗是出来了,而且这样调用,位置是正确的,但是弹窗上的edit控件都显示不出来了
      

  4.   

    查了一下msdn,没有CBkDialogImp 这个类,有个CDialogImpl。INT_PTR DoModal(
       HWND hWndParent = ::GetActiveWindow( ), 
       LPARAM dwInitParam = NULL 
    );
     
    第一个参数默认不是0,你直接给了个NULL。第二个参数也不是用来确定矩形位置的,至于你后来又用这个CRect对象干了什么,我就不知道了。但这个WM_INITDIALOG消息是所有的控件都初始化完毕后才发送的。所以你用的可能不对。话说楼主的头像太可爱了,我保存了
      

  5.   

    “但这个WM_INITDIALOG消息是所有的控件都初始化完毕后才发送的。”这是什么意思啊?我用那个矩形确定弹窗的位置,并且位置正确了,但是edit控件都显示不出来了。如果我不在domodel里写参数就显示在中间,而且edit控件显示正常,内容也显示出来了,我用movewindow和setwindowpos这两个函数都不起作用啊,或者我用的地方不对了?
      

  6.   

    墩子!!!!God!!!!!!!银才!
      

  7.   


    纠正一下,不是初始化完,是创建完。
    如果俩参数全写0没有问题的话,那就是CRect的问题了。“我用movewindow和setwindowpos这两个函数都不起作用啊,或者我用的地方不对了?”——函数本身又没有问题,所以这个肯定是用的地方不对了
      

  8.   

    问题终于纠出来了,xml的问题,我郁闷那,我把控件放在footer里,可以显示出来,放在body里就显示不出阿里.....这根源到底是啥,我也不清楚啊,,,,