c语言中控制台程序或MFC应用程序是怎么回事啊本人菜鸟 弱弱的问一下

c语言中控制台程序或MFC应用程序是怎么回事啊本人菜鸟 弱弱的问一下,第1张

控制台程序,主要是显示一些逻辑运算(非界面)结果;

而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控制台,见详情等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/9274294.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-26
下一篇 2023-04-26

发表评论

登录后才能评论

评论列表(0条)

保存