win32代码移植到MFC

黄皎霰 2019-12-21 18:09:00

推荐回答

没有简单的办法,更没有直接的工具软件实现转换。需要找一个对VC比较熟悉的人,新建一个MFC程序框架,然后从你的win32程序代码,巧妙地拷贝到MFC程序里面,再调试运行才能实现。
龙宇辉2019-12-21 18:21:19

提示您:回答为网友贡献,仅供参考。

其他回答

  • 你说的好轻松啊。控制台和窗口差多少你知道吗,而且mfc本来就够老了,写个hello程序就要几百行代码……没有你想像的那么简单,必须重写。
    齐晓林2019-12-21 18:54:59
  • 我们在调用一个控制台程序时一直都有DOS黑框闪烁一下,很多时候我们都不希望出现那个黑框,因为那样给人感觉特别不好,但是如果是控制台程序的话又是无法避免的。那是不是就没办法了呢,当然不是,我们可以选择在VS中制作Win32应用程序来解决,它虽然是窗口程序,但是我们可将窗口隐藏掉就不会像之前有闪烁的现象,但是默认生成的Win32应用程序又不能使用MFC类库,给我们编程造成不便,下面我就来教大家怎样在WIN32应用程序中支持MFC类库的方法,让我们接着开始吧!首先,在文件中加入如下头文件语句:#ifndefVC_EXTRALEAN#defineVC_EXTRALEAN//从Windows头中排除极少使用的资料#endif#include#include//MFC核心组件和标准组件#include//MFC扩展上面这段代码可以放在预编译头文件stdafx.h中,位置自己可定然后在_tWinMain的开始加入if!AfxWinInithInstance,NULL,lpCmdLine,0{MessageBoxNULL,_T"MFCiniterror!",_T"Error!",MB_OK;return0;}然后在菜单中依次选择"项目->属性->配置属性->常规->MFC的使用"中选择"在共享DLL中使用MFC";然后再在菜单中依次选择"项目->属性->配置属性->链接器->常规->附加库目录"中加入"kernel32.libuser32.libgdi32.lib",中间以空格隔开;如果编译时出现下面错误:fatalerrorC1189:#error:WINDOWS.Halreadyincluded.MFCappsmustnot#include那么我们在预编译头文件stdafx.h中将"#include"删掉或者注释掉即可.至此一切OK,然后你就可以用MFC类了。说明:虽然我们可以建立MFC应用程序然后隐藏窗口来解决这个问题,但是这样生成的EXE文件的大小要比前面两者都大,因为它加载了很多我们用不着的资源,从而造成了浪费。
    连传庆2019-12-21 18:38:27

相关问答

一、MT4自定义指标保存在C:\ProgramFiles\MetaTrader4\experts\indicators这个目录中,该目录中主要有二种类型的文件,一种是mq4文件,这是MT4自定义指标的源码文件,是一种高级语言文件,可以人工编写修改,机器不能直接执行,但能在MT4启动时自动编译为ex4可执行文件。另一种就是ex4文件,这是MT4自定义指标的可执行文件,由mq4文件编译得到。mq4文件必须编译为ex4文件才能被MT4执行。但ex4文件是机器码文件,人工不可修改另外还有一个文件是mqlcache.dat,它用来保存目录中的文件信息,如果MT4无法自动编译,只要删除此文件即可解决问题mq4文件编译为ex4可执行文件有两种方法:1、MT4启动时,会自动把此目录中的mq4文件编译为ex4文件。2、用MQ语言编辑器打开mq4文件,点一下“编写”按钮,即可生成ex4文件二、下载保存mq4文件、ex4文件在论坛上我们经常看到有mq4文件、ex4文件可供下载,我们只要把它们保存到C:\ProgramFiles\MetaTrader4\experts\indicators这个目录,也就是下面这个目录中,就可以了。如果下载的是ex4文件,那可以直接调用;如果是mq4文件,则需要重启动MT4,让系统自动编译生成ex4可执行文件。如果下载的是rar、zip等类型的压缩文件,还必须下载后解压到此目录才能使用。三、将源码保存为源码文件在论坛上,我们也经常能看到指标源码贴在网页上,但没有mq4、ex4等文件可以下载,只能复制源码。此时需要我们自己动手将源码保存为源码文件,那也没关系,非常地简单,多点几下鼠标就搞定。1、打开MQ语言编辑器2、在MQ语言编辑器中新建一个文件,文件名一定要输,别的随便操作都没关系。3、删除新文件里面的所有内容,成为一个空文件,4、接着我们就可以将网页上源码复制粘贴进来试着点一下“编写”,如果左下角出现“0错误,0警告”,那说明源码没问题,编译通过了,成功生成了ex4可执行文件5、还有很重要的一点,就是要把源码文件保存到正确的目录中保存后,再点一下编写。到此,源码保存完成。当然,我们也还有另的办法:可以打开一个原已存在的mq4文件,然后另存为你需要的文件名,再删除文件中的所有内容成为空文件,把网页上的源贴到文件中保存即可也可以在记事本中新建一个文件,把网页上的源码贴进记事本,然后取个文件名保存到上面提到的目录,不过文件后缀必须输入mq4,保存类型选择“所以文件”四、mt4程序调用自定义指标这非常简单。
系统的定时关机TOKEN_PRIVILEGEStkp;HANDLEhToken;if!OpenProcessTokenGetCurrentProcess,TOKEN_ADJUST_PRIVILEGES|TOKEN_QUERY,&hToken{MessageBox"OpenProcessTokenfailed!";}LookupPrivilegeValueNULL,SE_SHUTDOWN_NAME,&tkp.Privileges.Attributes=0;AdjustTokenPrivilegeshToken,FALSE,&tkp,0,PTOKEN_PRIVILEGESNULL,0;ifGetLastError!=ERROR_SUCCESS{MessageBox"AdjustTokenPrivilegesdisablefailed.";}ExitWindowsExEWX_SHUTDOWN,0;//开始关机程序只运行一个实例,并激活前一个实例具体实现:1、在程序初始化的时候InitInstance枚举所有的窗口,查找本程序的实例是否存在2、在主窗口初始化的时候在本窗口的属性列表中添加一个标记,以便程序查找.部分关键代码1、在App的InitInstance中枚举所有窗口,查找本程序实例HWNDoldHWnd=NULL;EnumWindowsEnumWndProc,LPARAM&oldHWnd;//枚举所有运行的窗口ifoldHWnd!=NULL{AfxMessageBox"本程序已经在运行了";::showWindowoldHWnd,SW_SHOWNORMAL;//激活找到的前一个程序::setForegroundWindowoldHWnd;//把它设为前景窗口returnfalse;//退出本次运行}2、添加EnumWndProc窗口过程函数://添加的标识只运行一次的属性名CStringg_szPropName="YourPropName";//自己定义一个属性名HANDLEg_hValue=HANDLE1;//自己定义一个属性值BOOLCALLBACKEnumWndProcHWNDhwnd,LPARAMlParam{HANDLEh=GetProphwnd,g_szPropName;ifh==g_hValue{*HWND*lParam=hwnd;returnfalse;}returntrue;}3、在主窗口的OnInitDialog中添加属性//设置窗口属性SetPropm_hWnd,g_szPropName,g_hValue。