前提:
1.已经做好的那个对话框不是新建立工程时默认提供的对话框(也就是说需要自己新建一个对话框来实现你要的功能,我这个方法如果导入默认提供的对话框的话会出错,具体原因我也正在探索)
2.对话框、空间的ID要自己取(我不知道在MFC里子对话框的控件ID会不会和主对话框冲突,我没试过,但是要开发软件的话,这种约定俗成的东西也不用我多说了吧)
3.确定即将导入的对话框的ID和工程里resource.h里定义的宏、还有待导入对话框头文件里的对话框数据(就是enum
{
IDD
=...
}这个东西)要保持一致,不然可能d不出指定对话框。
步骤:
1.导入对话框的头文件和源文件,以及该对话框所涉及到的所有文件(比如bmp图片等);
2.如果有涉及其他文件,可能需要重新修改这些文件的ID(感觉相当麻烦),如果没有则可略过此步;
3.在导入对话框的源文件里,将其include的应用类头文件更改为当前工程的应用类头文件(如果略过此步进行编译的话,VS平台也会在此提示找不到头文件)
4.可以用记事本打开resource.h文件,在此定义对话框的相应对话框和控件的ID,注意其值不能重复,最好是在导入对话框的工程里找到对应的值拷贝过来,然后再适当修改。
如果只是把另外一个程序的窗口嵌入进来可以创建一个CDialog,在OnInitDialog中
HWND hWnd = ::FindWindow(_T("TXGuiFoundation"), _T("QQ"))
::SetParent(hWnd, GetSafeHwnd())
::SetWindowLong(hWnd, GWL_STYLE, GetWindowLong(hWnd, GWL_STYLE) &~WS_POPUP | WS_CHILD)
//移动到合适的位置
CRect rc
GetClientRect(rc)
::MoveWindow(hWnd, rc.left, rc.top, rc.Width(), rc.Height()-20, TRUE)
::BringWindowToTop(hWnd)
::ShowWindow(hWnd, SW_SHOW)
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)