这几天玩破解程序的时候无意间发现一个有意思的小程序,它的主框架只有几个按钮事件,其他窗口都是从dll中的窗口嵌入到主程序中来的
其实这么做的好处就是将数据传递给dll处理,而不影响主程序的运行速度,所以不会产生假死现象
以下是我模拟的过程
首先新建一个mfc 静态的dll,在dll中插入一个dlg窗口并new一个类,名字为CDlg1
要将dll窗口嵌入到主程序窗口中的首要因素,就是要将主窗口程序的CWnd*句柄传递给dll窗口
.h文件中 声明这么2个函数
CWnd * InitData( CWnd * pWnd /*父窗口指针,由调用者传入,一般是主对话框*/ );
void ExitDlg();
在.cpp中声明一个全局的窗口类指针
CDlg1 * pDlg;
函数的实现过程
// CDlg1 消息处理程序
CWnd * CDlg1::InitData( CWnd * pWnd /*父窗口指针,由调用者传入,一般是主对话框*/ )
{
AFX_MANAGE_STATE(AfxGetStaticModuleState());
if (pDlg == NULL)
{
pDlg = new CDlg1;
if( pDlg->Create( CDlg1::IDD,CWnd::FromHandle( pWnd->GetSafeHwnd() ) ) )
{
pDlg->SetParent( pW