VC6.0(VC++6.0)把窗体封装到dll中(图文教程)2021最新

第一步、新建一个普通的win32dll

菜单项“文件”——>“新建”——>“工程”——>“Win32 Dynamic-Link Library”。创建一个工程项目,为这个工程取个名字为“UseDlg”。在这里我选择“A simple DLL project”,此时在VC++界面上会有一个树形文件结构。

第二步、为此dll添加一个Dialog资源

菜单项“Insert”——>“Resource”——>“Dialog”——>“New”。将此Dialog上的Cancel按钮去掉,右键“Properties”修改ID为IDD_DLG_SHOW。再添加一个ID为IDD_ABOUTBOX的对话框,其Caption为About,将资源文件命名为UseDlg.rc保存。并将resource.h和UseDlg.rc加入到工程里面(“Project”——>“Add to Project”——>“Files”——>“选择resource.h和UseDlg.rc”——>确定)。

 第三步、编辑.cpp文件导出函数;

此时在VC++界面上文件结构如下。

在UseDlg.app中引入resource.h,完整代码如下代码:

#include "stdafx.h"
#include "resource.h"

HINSTANCE hinst = NULL;
HWND hwndDLG = NULL;

BOOL CALLBACK DlgProc(HWND hDlg, UINT message,WPARAM wParam, LPARAM lParam);
BOOL CALLBACK AboutProc(HWND hDlg, UINT message,WPARAM wParam, LPARAM lParam);

extern "C" __declspec(dllexport) void ShowDlg();

BOOL APIENTRY DllMain( HANDLE hModule,DWORD ul_reason_for_call,LPVOID lpReserved)
{
	switch(ul_reason_for_call)
	{
    case DLL_PROCESS_ATTACH:
		hinst = (HINSTANCE)hModule;
    case DLL_PROCESS_DETACH:
		break;
	}
	return TRUE;
}

extern "C" __declspec(dllexport) void ShowDlg()
{
	hwndDLG = CreateDialog(hinst,MAKEINTRESOURCE(IDD_DLG_SHOW),NULL,(DLGPROC)DlgProc);
	ShowWindow(hwndDLG, SW_SHOW);
}

BOOL CALLBACK DlgProc(HWND hDlg, UINT message,WPARAM wParam, LPARAM lParam)
{
	switch(message)
	{
    case WM_INITDIALOG:
		return TRUE;
    case WM_COMMAND:
		if(LOWORD(wParam)==IDOK)
			DialogBox(hinst,MAKEINTRESOURCE(IDD_ABOUTBOX),hDlg,(DLGPROC)AboutProc);
		return TRUE;
    case WM_CLOSE:
		DestroyWindow(hDlg);
		hwndDLG = NULL;
		return TRUE;
	}
	return FALSE;
}

BOOL CALLBACK AboutProc(HWND hDlg, UINT message,WPARAM wParam, LPARAM lParam)
{
	switch(message)
	{
    case WM_CLOSE:
		EndDialog(hDlg,NULL);
		hwndDLG = NULL;
		return TRUE;
	}
	return FALSE;
}

 此时,我们“build”工程,也就是组建一下。如果成功的话,就能在工程目录下的Debug目录下找到一个“UseDlg.dll”的文件。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值