而MFC应用程序属于可视化程序,不仅可处理逻辑运算,还可 *** 作界面(键盘、鼠标等的 *** 作),并将结果对应显示到可视界面上,让用户更直观的接受数据。
随便建立一个MFC的工程,就会在stdafxh中发现如下文件包含
1
2
3
4
5
6
7
8
9
10
11
#define _AFX_ALL_WARNINGS
#include <afxwinh> // MFC 核心组件和标准组件
#include <afxexth> // MFC 扩展
#include <afxdisph> // MFC 自动化类
//#include <afxsockh> // MFC 套接字扩展
#pragma warning(disable : 4996 4244 4800 4018 4345)
#ifndef _AFX_NO_OLE_SUPPORT
#include <afxdtctlh> // MFC 对 Internet Explorer 4 公共控件的支持
#endif
#ifndef _AFX_NO_AFXCMN_SUPPORT
还不行,就多建几个不同种类的MFC工程,多查看下具体包含了那些库和头文件。
先新建一个MFC工程, 选择“基于对话框”比较容易上手。
然后直接编译运行,就可以看见界面了。
到资源编辑器,找到编辑对话框的界面。 工具箱里面拖一个按钮到界面上,双击,出现代码界面,就可以往里面写代码。 入门基本就是这样。
深入的话 这不是一两句话可以说清的。 MFC 是微软的库,和整个windows系统密切耦合。 需要了解许多系统架构方面的内容 各种系统调用 才能融会贯通。
解决方法:
打开控制台后,用FindWindowA 找到新打开的控制台窗口, 并调用 RemoveMenu 将系统菜单中的 关闭菜单去掉
这样,用户就不能通过 该按钮或通过系统菜单关闭控制台了
在需要关闭控制台时,调用 FreeConsole
//下面的函数供参考BOOL WINAPI DisableCloseMenu()
{
char oldTitle[100];
char newTitle[100];
GetConsoleTitleA(oldTitle ,100);
sprintf_s( newTitle,"%d-%d",GetTickCount(),GetCurrentProcessId());
SetConsoleTitleA(newTitle);
Sleep(100);
HWND hWnd =FindWindowA(NULL, newTitle);
SetConsoleTitleA(oldTitle);
if( hWnd )
{
HMENU h_Menu = GetSystemMenu( hWnd, FALSE);
if( h_Menu )
{
return RemoveMenu( h_Menu, 0xF060, 0);
//return ::EnableMenuItem( h_Menu, 0xF060, FALSE );
}
}
return FALSE;
}
非MFC工程使用MFC库时,可参考以下步骤
1、工程设置中,将MFC的使用由原来的“使用标准windows库”改为“在共享DLL中使用MFC”(VC71)
如果是英文版,相关选项是:
Microsoft Foundation Classes: Use MFC in a shared dll, no using MFC(VC6)
2、头文件包含
不同的MFC类需包含的头文件是不一样的。
常用的类,如Cstring, Cedit 等,包含afxwinh就可以了
使用CFile类,则包含afxh
如果不清楚包含什么头文件的话,可以同msdn进行查询,msdn中,对于MFC类的介绍中,都会给出相应的header file requirement
3、#include 语句一定要写在首行
另外还要注意的是,如果#include语句是在一个头文件里,那么对应头文件的包含也要写在首行。示例如下:
=============
testh文件的内容如下:
#include <afxwinh> //保证该语句在首行
testcpp的文件内容如下:
#include “testh” //同样也要保证该语句在首行
=============
如果要用CFile
就#include <afxh>
我认为glut已经封装了windows上的界面接口,所以一般通过glut就能实现MFC要做的事,在这段代码通过glutMainLoop启动了消息循环。为什么还要把它放到MFC的应用中啊,没什么必要的。
启动另外一个MFC程序,可以使用的有三个函数,具体看你控制台程序支持哪个了:
WinExec //一般控制台用这个的多
ShellExecute
CreateProcess
至于按键,不熟悉你的代码模式,不好给出建议。
简单来说,有两种方式,一种是源码debug,即分析源码来找出bug位置,一般使用printf()打印出程序执行每一步的信息,一种是可执行文件debug,需要使用调试器来进行。1源码debug。类似于下面的源码,主要通过程序执行时输出的信息,来定位bug出现的位置,然后再修改源码。例如:#includevoidf(){;}intmain(){#ifdef_DEBUGprintf("startmainfunction!\n");#endifvoidf();#ifdef_DEBUGprintf("leavemainfunction!\n");#endifreturn0;}2可执行文件调试,windows平台常用的就是vs/vc自带的调试,另外一个就是微软自家开发的调试器windbg。Linux平台以gdb为常用。下面以dev-C++为例:1)在逗工具地-》编译选项-》"编译时加入以下命令"下面的编辑框里加上:-g32)在下面的"在连接器命令行加入以下命令"下的编辑框上加上:-g33)转到程序页,把gcc行修改为:gccexe-D__DEBUG__,4)把g++行修改为:g++exe-D__DEBUG__,5)点击确定,重新编译,就能调试了。
以上就是关于c语言中控制台程序或MFC应用程序是怎么回事啊本人菜鸟 弱弱的问一下全部的内容,包括:c语言中控制台程序或MFC应用程序是怎么回事啊本人菜鸟 弱弱的问一下、怎样在C++ 控制台程序上使用MFC中的类、C++MFC和win32控制台,见详情等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)