wince 回调函数

声明此为网上的一个例子(不知作者),移植到WINCE下的。此实例实现:应用程序(TestDll) 定义一个回调函数OnReceiveData()把该函数指针赋给dll(DllAutoSend),然后调用Dll,让Dll发送一个信息,Dll发送完成后,回调OnReceiveData(),把信息用消息框弹出来。

 

 

一、新建 dll 工程:  DllAutoSend

1.       新建 DllAutoSend.h 头文件

2.       /***DllAutoSend.h*****/

 

// 下列ifdef 块是创建使从DLL 导出更简单的

// 宏的标准方法。此DLL 中的所有文件都是用命令行上定义的DLLAUTOSEND_EXPORTS

// 符号编译的。在使用此DLL 

// 任何其他项目上不应定义此符号。这样,源文件中包含此文件的任何其他项目都会将

// DLLAUTOSEND_API 函数视为是从DLL 导入的,而此DLL 则将用此宏定义的

// 符号视为是被导出的。

#ifdef DLLAUTOSEND_EXPORTS

#define DLLAUTOSEND_API __declspec(dllexport)

#else

#define DLLAUTOSEND_API __declspec(dllimport)

#endif

 

typedef BOOL (WINAPI *EXECUTECALLBACK)(char *pcBuf);   //回调函数声明

// 此类是从DllAutoSend.dll 导出的           

class DLLAUTOSEND_API CDllAutoSend {

public:

    CDllAutoSend(void);    

    // TODO: 在此添加您的方法。

public:

    void SetCallBack(EXECUTECALLBACK cmd);         //设置回调函数指针

    void SendDLLMessage(void);                     //发送一个信息,Dll要做的事情

    static EXECUTECALLBACK AutoSendMessage;        //定义一个回调函数指针

};

 

extern DLLAUTOSEND_API int nDllAutoSend;

 

DLLAUTOSEND_API int fnDllAutoSend(void);

 

 

 

 

 

3. /****DllAutoSend.cpp*****/的实现

// DllAutoSend.cpp : 定义DLL 应用程序的入口点。

 

3.1 //包含头文件

 #include "DllAutoSend.h" 

3.2  //把定义的回调函数指针初始为null

EXECUTECALLBACK CDllAutoSend::AutoSendMessage = NULL;

 

3.3 //实现头文件中声明的函数

CDllAutoSend::CDllAutoSend()

{

    return;

}

void CDllAutoSend::SetCallBack(EXECUTECALLBACK cmd)   //设置回调函数

{

    CDllAutoSend::AutoSendMessage =cmd;               //把回调函数的指针保存

}

void CDllAutoSend::SendDLLMessage(void)

{

    if(AutoSendMessage)                               //如果设置了回调函数

       AutoSendMessage("DLL Auto Send Message OK");  //则调用回调函数

}

 

 

二、新建应用程序TestDll

 

1.    把刚才Dll工程编译生成的lib加入工程中;

2.    在// TestDllDlg.h : 头文件

包含Dll的头文件 #include "DllAutoSend.h" 

 

3.    声明一个dll实例

   public:

    CDllAutoSend m_DLL;

 

4.    在// TestDllDlg.cpp : 实现文件

中实现回调函数

BOOL WINAPI OnReceiveData(char *pcRecv)   //回调函数的实现

{

    CString strMsg =CString(pcRecv,50);

    AfxMessageBox(strMsg);

    return TRUE;

}

5.    添加两个按钮消息,实现如下:

  

void CTestDllDlg::OnBnClickedButton1()

{

    // TODO: 在此添加控件通知处理程序代码

    m_DLL.SetCallBack(OnReceiveData);      //设置回调函数

}

 

void CTestDllDlg::OnBnClickedButton2()

{

    // TODO: 在此添加控件通知处理程序代码

   m_DLL.SendDLLMessage();          //调用Dll的函数(Dll发送一个信息)

}

内容概要:该研究通过在黑龙江省某示范村进行24小时实地测试,比较了燃煤炉具与自动/手动进料生物质炉具的污染物排放特征。结果显示,生物质炉具相比燃煤炉具显著降低了PM2.5、CO和SO2的排放(自动进料分别降低41.2%、54.3%、40.0%;手动进料降低35.3%、22.1%、20.0%),但NOx排放未降低甚至有所增加。研究还发现,经济性和便利性是影响生物质炉具推广的重要因素。该研究不仅提供了实际排放数据支持,还通过Python代码详细复现了排放特征比较、减排效果计算和结果可视化,进一步探讨了燃料性质、动态排放特征、碳平衡计算以及政策建议。 适合人群:从事环境科学研究的学者、政府环保部门工作人员、能源政策制定者、关注农村能源转型的社会人士。 使用场景及目标:①评估生物质炉具在农村地区的推广潜力;②为政策制定者提供科学依据,优化补贴政策;③帮助研究人员深入了解生物质炉具的排放特征和技术改进方向;④为企业研发更高效的生物质炉具提供参考。 其他说明:该研究通过大量数据分析和模拟,揭示了生物质炉具在实际应用中的优点和挑战,特别是NOx排放增加的问题。研究还提出了多项具体的技术改进方向和政策建议,如优化进料方式、提高热效率、建设本地颗粒厂等,为生物质炉具的广泛推广提供了可行路径。此外,研究还开发了一个智能政策建议生成系统,可以根据不同地区的特征定制化生成政策建议,为农村能源转型提供了有力支持。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值