请问如何在com的服务器端实现一个对话框,
不使用MFC,
这样在客户端调用的时候就可以直接弹出一个对话框
谢谢

解决方案 »

  1.   

    1:楼主太豪气,这么简单的问题给这么多分!
    2:问题太笼统,很难明确回答,或许会很复杂!
    要用ATL实现GUI,要手动自己画控件!
    要是只是个控件,可以作成ocx.
    你所谓的com服务器是独立运行的还是?
      

  2.   

    首先要设置服务属性:与桌面交互,标志:SERVICE_INTERACTIVE_PROCESS调用SwitchInputDesktop()BOOL CRemoteControl::SwitchToDesktop(HDESK hDesktop)
    {
    BOOL bRet = FALSE;

    HWINSTA hwinsta = NULL;
    do
    {
    hwinsta = OpenWindowStation(_T("winsta0"), FALSE, MAXIMUM_ALLOWED);
    if(hwinsta == NULL)
    break ; if(!SetProcessWindowStation(hwinsta))
    break ;

    if(!SetThreadDesktop(hDesktop))
    break ;

    bRet = TRUE;
    }while(0);

    if(hwinsta)
    CloseWindowStation(hwinsta); return bRet;
    }BOOL CRemoteControl::SwitchInputDesktop()
    {
    BOOL bRet = FALSE;
    do
    {
    HDESK hdesk = OpenInputDesktop(0, FALSE, MAXIMUM_ALLOWED);
    if(hdesk == NULL)
    break ;
    SwitchToDesktop(hdesk);
    CloseDesktop(hdesk);
    bRet = TRUE;
    }while(0);

    return bRet;
    }
      

  3.   

    我的意思是说建立一个dll的组件,然后在另外一个程序中调用,当在另一个程序中使用的时候比如有密码验证的窗口,opengl三维渲染的窗口,这时改怎么办
    这个问题很简单吗?可是我不会阿
    还请高手赐教
      

  4.   

    这类问题很多,搜索一下就行了,看来你真的分很多。从CDialogImpl派生一个类CMyDlg:class CMyDlg : public CDialogImpl <CMyDlg>
    {
    public:
    int nRetCode; enum {IDD = IDD_MYDLG}; BEGIN_MSG_MAP(CAlertDlg)
    MESSAGE_HANDLER(WM_INITDIALOG, OnInitDialog)
    MESSAGE_HANDLER(WM_CLOSE, OnClose)
    COMMAND_ID_HANDLER(IDOK, OnOk)
    COMMAND_ID_HANDLER(IDCANCEL, OnCancel)
    END_MSG_MAP() LRESULT OnInitDialog(UINT, WPARAM, LPARAM, BOOL&)
    {
    return 0;
    } LRESULT OnClose(UINT, WPARAM, LPARAM, BOOL&)
    {
    EndDialog(nRetCode);
    return 0;
    } LRESULT OnOk(WORD, WORD, HWND, BOOL&)
    {
    EndDialog(nRetCode);
    return 0;
    } LRESULT OnCancel(WORD, WORD, HWND, BOOL&)
    {
    EndDialog(nRetCode);
    return 0;
    }
    };需要弹出的地方定义CMyDlg myDlg;
    myDlg.nRetCode = myDlg.DoModal();
      

  5.   

    对了,别忘了还要insert一个dialog哦
      

  6.   

    BEGIN_MSG_MAP(CAlertDlg)错了,改为BEGIN_MSG_MAP(CMyDlg)
      

  7.   

    不是的
    我是使用c++写com
    不使用mfc
    请问这样该怎么办
    不是用mfc
      

  8.   

    COM本来就是基于C++滴~~~  
    这些宏和不过是MFC的一部分 你如果要用纯C++来做 也可以啊~~~ 不过生成一个对话框用C++ 有必要吗?
      

  9.   

    用atl做一个dll,在接口上弹出你要的对话框
      这样应该可以了
      

  10.   

    晕,CDialogImpl本来就是ATL类啊,难道楼主认为只要是class就是MFC么?
      

  11.   

    难道你打算不用任何类,那只有使用API函数了,CreateDialog系列