大佬教程收集整理的这篇文章主要介绍了c – 将数据传递到Windows控制台控制处理程序,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
SetConsoleCtrlHandler((PHANDLER_RoutINE)WindowsSy@L_295_6@manager::ConsoleControlHandler,truE);
我的静态成员回调函数定义为:
bool WINAPI WindowsSy@L_295_6@manager::ConsoleControlHandler(DWORD controlTypE){ if(controlType == CTRL_CLOSE_EVENT){ messageBox(NULL,L"Close Event Captured",null); } return true; }
一切正常 – 当我点击控制台中的关闭按钮时,会弹出此messageBox.唯一的问题是,我需要在这种类型的关闭(以及其他清理)中调用将日志缓冲区刷新到日志文件的代码,并且Logger实例是我的WindowsSy@L_295_6@manager中的成员.
我已经成功地通过使用SetWindowLongPtr和GetWindowLongPtr处理了将自定义数据传递给窗口句柄的类似问题,但我找不到有关如何使用控制台控件处理程序执行此类操作的任何信息.有什么想法吗?
编辑:我根据MSalters的建议实现了这项功能.控制台控制处理程序的最终代码在这里:
bool WINAPI WindowsSy@L_295_6@manager::ConsoleControlHandler(DWORD controlTypE){ BerserkENGIne* ENGIne = (BerserkENGIne*)GetWindowLongPtr(GetConsoleWindow(),GWLP_USERDATA); if(controlType == CTRL_CLOSE_EVENT){ ENGIne->~BerserkENGIne(); PostQuitmessage(0); } return true; }
我在WindowsSy@L_295_6@manager构造函数中设置此自定义数据指针的位置:
SetWindowLongPtr(GetConsoleWindow(),GWL_USERDATA,(LONG_PTR)this->ENGInE);
以上是大佬教程为你收集整理的c – 将数据传递到Windows控制台控制处理程序全部内容,希望文章能够帮你解决c – 将数据传递到Windows控制台控制处理程序所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。