EVC SDK下模拟 创建MFC消息处理结构,消息分发问题,高手请进!

slyzhang 2007-03-17 01:13:15
背景:
不使用 MFC 环境, 使用EVC WCE application.
创建 CWinComponent 为所有控件的基类
有一函数指针变量: CALLBACK m_pfnOldWindowProc(...)

创建CWinForm: public CWinComponent 为所有窗口的基类
创建其他的 CBtn:Public CWinComponent 为一般的按钮控件

思路:
模拟MFC的消息分发机制,创建全局的:
LRESULT CALLBACK WinGlobalWinProc (HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
在创建WinForm 窗体(CreateWindowEx)后,设置窗口管理,并替换原来系统默认的窗口处理函数为当前全局的窗体处理函数,使系统所有消息均受全局消息循环处理:
//添加到全局窗口列表中
g_WinMgr.Append(GetHandle(), this);
if (m_pfnOldWindowProc == NULL)//如果本组建原来的消息处理函数为空,则置新的窗体处理函数为全局的消息处理函数
{
m_pfnOldWindowProc = (WNDPROC)GetWindowLong(GetHandle(), GWL_WNDPROC);
if (equal((long)m_pfnOldWindowProc, (long)WinGlobalWinProc) == false){
m_pfnOldWindowProc = (WNDPROC)
SetWindowLong(GetHandle(), GWL_WNDPROC, (long) WinGlobalWinProc);
}
}

【问题】
在EVC4.0+SP4 环境下,
equal((long)m_pfnOldWindowProc, (long)WinGlobalWinProc)始终返回为false, 通过调试跟踪,查看内存,赋值给一个DWORD nx 比较, 最终pfnOldWindowProc 表现为全局的WinGlobalWinProc地址, 而
n1 = (long)WinGlobalWinProc则始终都是 后低20 位数据,
例如 pfnOldWindowProc = 0x18013fc8 而传入 equal(long,long)的第二个参数 (long)WinGlobalWinProc) 始终为: 0x00013fc8

在DEBUG下和RELEASE下的调试结果是不同的, DEBUG下还可以运行正常,但是在RELEASE下就不可能运行正常

【难点解释】
1、GlobalProc 的CALLBACK定义是否和每一个对象的oldProc定义有歧异,不能正常比较?
2、在调试窗口看到的 GlobalProc和 OldProc具有相同的地址,为什么比较却不同?是否比较方式不对?能那么比较么?
3、在调试过程中发现 GlobalProc 和 OldProc 的定义有差异,一个为:GlobalProc(HWND__ * hWnd ,.....) 而另外一个为 GlobalProc(struct HWND__ *hWnd).. 这个什么原因引起的?
4、模拟MFC的消息处理过程,最核心的就是这理的消息分发机制,那么是否有其他的好的机制建议呢?
...全文
415 2 打赏 收藏 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
noob_slash_slash 2007-04-18
  • 打赏
  • 举报
回复
我记得MFC是通过继承CCmdTarget进行消息分发的。
ReverseEngineering 2007-04-14
  • 打赏
  • 举报
回复
太难了,再次进来接分
不平衡电网下基于延时相消法(DSC)的T型三电平LCL逆变器(Simulink仿真实现)内容概要:本文详细介绍了在不平衡电网条件下,采用延时相消法(DSC)控制T型三电平LCL逆变器的设计与Simulink仿真实现。文章系统阐述了T型三电平逆变器的拓扑结构与工作原理,分析了其在高功率、低谐波应用中的优势。针对电网不平衡导致的负序分量问题,引入延时相消法进行正负序分离与控制,有效抑制了并网电流中的谐波分量,提升了电能质量和系统稳定性。文中给出了完整的控制策略设计,包括坐标变换、延时相消算法实现、双闭环控制系统(电流环与电压环)设计,并通过Simulink仿真验证了所提方法的有效性。; 适合人群:具备电力电子、自动控制理论基础,从事新能源发电、微电网或电能质量相关研究的研究生及工程技术人员。; 使用场景及目标:①掌握T型三电平逆变器的工作原理与建模方法;②学习延时相消法(DSC)在不平衡电网条件下的正负序分离技术;③实现并网逆变器在复杂电网环境下的高性能控制仿真。; 阅读建议:本文以Simulink仿真实现为核心,建议读者结合文中的控制框图与算法描述,动手搭建仿真模型,通过调整电网不平衡度、负载等参数,观察并网电流波形与谐波含量的变化,以深入理解DSC控制策略的动态响应特性与鲁棒性。

15,976

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧