首先需要在MFC项目中添加一个对话框,添加两个按钮(开始和停止),一个下拉框(用于设置电压值),一个静态文本框(用于输出日志)。

在对话框类的头文件中添加以下代码:

#include "afxwin.h"

// 定义DLL函数指针类型 typedef void (*PFUN_Start)(int nVoltage); typedef void (*PFUN_Stop)(); typedef void (PFUN_Log)(const char strLog);

class CDlgDemoDlg : public CDialogEx { // ...

private: HINSTANCE m_hDll; // DLL句柄 PFUN_Start m_pFunStart; // DLL函数指针 PFUN_Stop m_pFunStop; PFUN_Log m_pFunLog; };

在对话框类的实现文件中添加以下代码:

void CDlgDemoDlg::OnBnClickedBtnStart() { // 加载DLL m_hDll = LoadLibrary(_T("DLL7000.dll")); if (m_hDll == NULL) { MessageBox(_T("加载DLL失败!")); return; }

// 获取DLL函数指针
m_pFunStart = (PFUN_Start)GetProcAddress(m_hDll, "Start");
m_pFunStop = (PFUN_Stop)GetProcAddress(m_hDll, "Stop");
m_pFunLog = (PFUN_Log)GetProcAddress(m_hDll, "Log");

if (m_pFunStart == NULL || m_pFunStop == NULL || m_pFunLog == NULL)
{
    MessageBox(_T("获取DLL函数指针失败!"));
    return;
}

// 获取下拉框中的电压值
CString strVoltage;
m_cmbVoltage.GetLBText(m_cmbVoltage.GetCurSel(), strVoltage);
int nVoltage = _ttoi(strVoltage);

// 调用DLL函数
m_pFunStart(nVoltage);

// 输出日志
m_pFunLog("开始输出电压:" + strVoltage + "\r\n");

}

void CDlgDemoDlg::OnBnClickedBtnStop() { // 调用DLL函数 m_pFunStop();

// 输出日志
m_pFunLog("停止输出电压\r\n");

}

在对话框的资源文件中,需要添加一个下拉框和一个静态文本框的控件,并设置相应的属性。另外,需要添加一个菜单项,在点击菜单项时触发加载DLL的操作。

void CDlgDemoDlg::OnLoadDll() { OnBnClickedBtnStop(); // 停止输出

if (m_hDll != NULL)
{
    FreeLibrary(m_hDll);
    m_hDll = NULL;
}

OnBnClickedBtnStart(); // 重新开始输出

}

最后,需要在OnInitDialog()函数中添加以下代码,将菜单项和相应的消息映射起来:

// 添加菜单项 CMenu *pMenu = GetMenu(); pMenu->AppendMenu(MF_STRING, ID_LOAD_DLL, _T("加载DLL"));

// 映射消息 ON_COMMAND(ID_LOAD_DLL, &CDlgDemoDlg::OnLoadDll

写一段利用MFC的代码通过加载DLL7000dll实现:点击开始按钮三相源升源到下拉框设置的220V数值点击停止按钮源停止输出该过程输出的日志会在静态文本框输出展示

原文地址: https://www.cveoy.top/t/topic/epxI 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录