模式对话框不是设置风格的问题,如果你想要显示一个无模式对话框的话,
应该
CPerson* pDlg = new CPerson;
pDlg->Create(IDD_yourdialog,this);
在你要显示的时候调用
pDlg->ShowWindow(SW_SHOW);
就行了,不需要设置风格

解决方案 »

  1.   

    sorry ,我是像弹出一个有模式对话框。请问可以吗?
      

  2.   

    SetWindowLong的第一个参数应该传入窗口的HWND,不是你的CDialog对象
    比如,你可以传入Dlg.hWnd(不要写成&Dlg.hWnd,不是传入地址,使数据)
      

  3.   

    CPerson*  pDlg  =  new  CPerson;
      pDlg->  Create(IDD_yourdialog,this);
    你这样做后,就会弹出一个非模态的对话框!
      

  4.   

    CPerson  Dlg;
    Dlg.ModifyStyle  (WS_CHILD,WS_POPUP|WS_BORDER|WS_CAPTION);
    SetWindowLong((HWND)&  Dlg,GWL_EXSTYLE,   WS_POPUP|WS_BORDER|WS_CAPTION);
    Dlg.DoModal();
    在Dlg.DoModal()之前,Dlg.ModifyStyle没有办法调用,因为这时候窗口还没有创建
    所以你只好在CPerson::OnInitDialog里面修改style和style_ex了,或者CPerson  Dlg(style,style_ex) 也可以,自己定义构造函数
      

  5.   

    请问  strip(阿飞) :我现在又遇到一个问题:无法除去对话框的 WS_CHILD 风格,取而代之 以 WS_POPUP。在 OninitDialog 里面执行上述语句后,弹出的对话框无法接收鼠标的输入消息切换到其他程序然后切换回来,则整个对话框无法响应输入了。