请问如何在com的服务器端实现一个对话框, 请问如何在com的服务器端实现一个对话框,不使用MFC,这样在客户端调用的时候就可以直接弹出一个对话框谢谢 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 1:楼主太豪气,这么简单的问题给这么多分!2:问题太笼统,很难明确回答,或许会很复杂!要用ATL实现GUI,要手动自己画控件!要是只是个控件,可以作成ocx.你所谓的com服务器是独立运行的还是? 首先要设置服务属性:与桌面交互,标志: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;} 我的意思是说建立一个dll的组件,然后在另外一个程序中调用,当在另一个程序中使用的时候比如有密码验证的窗口,opengl三维渲染的窗口,这时改怎么办这个问题很简单吗?可是我不会阿还请高手赐教 这类问题很多,搜索一下就行了,看来你真的分很多。从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(); 对了,别忘了还要insert一个dialog哦 BEGIN_MSG_MAP(CAlertDlg)错了,改为BEGIN_MSG_MAP(CMyDlg) 不是的我是使用c++写com不使用mfc请问这样该怎么办不是用mfc COM本来就是基于C++滴~~~ 这些宏和不过是MFC的一部分 你如果要用纯C++来做 也可以啊~~~ 不过生成一个对话框用C++ 有必要吗? 用atl做一个dll,在接口上弹出你要的对话框 这样应该可以了 晕,CDialogImpl本来就是ATL类啊,难道楼主认为只要是class就是MFC么? 难道你打算不用任何类,那只有使用API函数了,CreateDialog系列 QQ2011界面模拟源码下载 撒分咯 100求助:Teechart控件如何在极坐标下作图 vc++连接odbc数据源的问题 如何在mfc中 用CHtmlView使所有链接 都在原窗口打开 画粗线时,怎么使线的两头是直的? 高分求救,这样的程序如何返回~~~~???? 谁能给我一个准确的解释? 我应该问什么呢? 没解决的问题 SetupDiEnumDeviceInfo(hDevInfo, 0, &DeviceInfoData),64位系统返回0 关与ListView的一个问题 以下evc4.0环境下的5个link错误,请高手指教
2:问题太笼统,很难明确回答,或许会很复杂!
要用ATL实现GUI,要手动自己画控件!
要是只是个控件,可以作成ocx.
你所谓的com服务器是独立运行的还是?
{
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;
}
这个问题很简单吗?可是我不会阿
还请高手赐教
{
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();
我是使用c++写com
不使用mfc
请问这样该怎么办
不是用mfc
这些宏和不过是MFC的一部分 你如果要用纯C++来做 也可以啊~~~ 不过生成一个对话框用C++ 有必要吗?
这样应该可以了