MFC如何添加其它项目的对话框

MFC如何添加其它项目的对话框,第1张

这里有个笨办法,不过基本上可以实现导入其他项目对话框(写得很繁琐,不过只要做过一遍基本上就可以记住所有步骤了,因为其原理比较简单)。

前提:

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)


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11786633.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-18
下一篇 2023-05-18

发表评论

登录后才能评论

评论列表(0条)

保存