导航:首页 > 编程语言 > mfc时尚编程百例

mfc时尚编程百例

发布时间:2023-02-10 07:25:49

❶ 什么是MFC编程

MFC(Microsoft Foundation class)微软基本类(库),它是一个面向对象的应用程序架构。程序员利用它可以很方便搭建应用程序框架。

MFC结合了面向对象的编程技术和WINDOWS消息驱动的编程技术,并封装了WIN32API,其设计好处是:消除了WIN32API的复杂性,封装了WIN32API,统一了程序的概念,而且可扩展。

MFC实际上是微软提供的,用于在C++环境下编写应用程序的一个框架和引擎。VC++是Windows下开发人员使用的专业C++SDK,MFC就是挂在它之上的一个辅助软件开发包。

(1)mfc时尚编程百例扩展阅读

MFC编程优势

面对底层程序,它能很轻松的与Windows API或驱动程序结合,就是在自己的代码中直接使用API函数,而API和驱动程序的资料都是以C语言为基础的,这使得VC程序员能够更轻松的使用Windows API。

这样造成了一个很有意思的现象,即入门时VC程序员要付出更多的努力来学习,但是一旦掌握后,开发其他领域的程序或使用第三方软件时,如工业控制类的程序,由于底层的程序都是用C语言编写,反倒是VC程序员能够更快的掌握该领域的编程技术。而很多其他的编程语言甚至找不到相关的资料。

这就说明VC(MFC)实际上是一种入门困难,但是扩展学习却很轻松的语言框架。

❷ Visual C++ 6.0 时尚编程百例 这本书谁有

抱歉,我们图书馆有,我没电子版的,不过我有书后习题和程序,就是那个光盘,我做了镜像保存了起来。

❸ MFC界面编程-多窗口

你说的还是文档与视图,比如CEditView,CFormView等,还有视图的分割,这些东西都是继承CView而来的

❹ 求一本新手学习vc++6.0的可视化编程的书

VC对于对话框可视化的编程封装在MFC类库中,有一本《C++程序设计教程》中国电力出版社的,最后一章有最简单的MFC编程,之后想多了解,建议你看人民邮电出版社,同志工作室的几本书:《Visual C++ 6.0 开发技巧与实例教程》、《Visual C++ 6.0 数据库开发实例》,界面美化有一本《Visual C++ MFC时尚编程百例》

❺ MFC界面编程是什么

MFC,微软基础类(Microsoft Foundation Classe),因为Windows编程API函数庞杂,微软为简化界面方面的设计,设计了这个类库,利用C++的继承性,充分发挥代码重用的空间。
MFC编程的话一半使用VC++,编程确实简化了界面问题,但是由于对于WindowsAPI进行了封装,故而很多人无从下手,没有明显的主函数入口,没有主线。故而,建议你先熟悉Windows编程(不是要你会),同时对C++机制加深了解在使用MFC,同时,作为框架编程,它隐藏了很多技术细节,如果要有作为,真正要了解的应该是这些类的设计思维。

❻ 如何用MFC实现网络编程

一.客户端
1.创建一个DialogBased项目:CSockClient。
2.设计对话框
去掉Ok和Cancle两个按钮,增加ID_Connect(连接)、ID_Send(发送)、ID_Exit(关闭)按钮,增加ListBox控件IDC_LISTMSG和Edit控件IDC_EDITMSG,并按下表在ClassWizard中为CCSockClientDlg类添加变量。
ControlIDTypeMember
IDC_EDITMSGCEditm_MSG
IDC_LISTMSGClistBoxm_MSGS
3.CAsyncSocket类用DoCallBack函数处理MFC消息,当一个网络事件发生时,DoCallBack函数按网络事件类型:FD_READ、FD_WRITE、FD_ACCEPT、FD_CONNECT分别调用OnReceive、OnSend、OnAccept、OnConnect函数。
由于MFC把这些事件处理函数定义为虚函数,所以要生成一个新的C++类,以重载这些函数,做法如下:以Public方式继承CAsyncSocket类,生成新类MySock;为MySock类添加虚函数OnReceive、OnConnect、OnSend。
4.在MySock.ccp中添加以下代码
#include"CSockClient.h"
#include"CSockClientDlg.h"
5.在MySock.h中添加以下代码
public:
BOOLm_bConnected;//是否连接
UINTm_nLength;//消息长度
charm_szBuffer[4096];//消息缓冲区
6.在MySock.ccp中重载各函数
MySock::MySock()
{
m_nLength=0;
memset(m_szBuffer,0,sizeof(m_szBuffer));
m_bConnected=FALSE;
}
MySock::~MySock()
{
//关闭套接字
if(m_hSocket!=INVALID_SOCKET)
Close();
}
voidMySock::OnReceive(intnErrorCode)
{
m_nLength=Receive(m_szBuffer,sizeof(m_szBuffer),0);
//下面两行代码用来获取对话框指针
CCSockClientApp*pApp=(CCSockClientApp*)AfxGetApp();
CCSockClientDlg*pDlg=(CCSockClientDlg*)pApp->m_pMainWnd;
pDlg->m_MSGS.InsertString(0,m_szBuffer);
memset(m_szBuffer,0,sizeof(m_szBuffer));
CAsyncSocket::OnReceive(nErrorCode);
}
voidMySock::OnSend(intnErrorCode)
{
Send(m_szBuffer,m_nLength,0);
m_nLength=0;
memset(m_szBuffer,0,sizeof(m_szBuffer));
//继续提请一个“读”的网络事件,接收Server消息
AsyncSelect(FD_READ);
CAsyncSocket::OnSend(nErrorCode);
}
voidMySock::OnConnect(intnErrorCode)
{
if(nErrorCode==0)
{
m_bConnected=TRUE;
CCSockClientApp*pApp=(CCSockClientApp*)AfxGetApp();
CCSockClientDlg*pDlg=(CCSockClientDlg*)pApp->m_pMainWnd;
memcpy(m_szBuffer,"Connectedto",13);
strncat(m_szBuffer,pDlg->m_szServerAdr,
sizeof(pDlg->m_szServerAdr));
pDlg->m_MSGS.InsertString(0,m_szBuffer);
AsyncSelect(FD_READ);////提请一个“读”的网络事件,准备接收
}
CAsyncSocket::OnConnect(nErrorCode);
}
7.新建对话框IDD_Addr,用来输入IP地址和Port;生成新类CAddrDlg。增加两个Edit控件:IDC_Addr、IDC_Port按下表在ClassWizard中为CAddrDlg类添加变量。
ControlIDTypeMember
IDC_AddrCStringm_Addr
IDC_PortIntm_Port
8.在CSockClientDlg.ccp中添加代码:
#include"AddrDlg.h"
protected:
intTryCount;
MySockm_clientSocket;
UINTm_szPort;
public:
charm_szServerAdr[256];
9.双击IDD_CSOCKCLIENT_DIALOG对话框中的“连接”按钮,添加以下代码:
voidCCSockClientDlg::OnConnect()
{
m_clientSocket.ShutDown(2);
m_clientSocket.m_hSocket=INVALID_SOCKET;
m_clientSocket.m_bConnected=FALSE;
CAddrDlgm_Dlg;
//默认端口1088
m_Dlg.m_Port=1088;
if(m_Dlg.DoModal()==IDOK&&!m_Dlg.m_Addr.IsEmpty())
{
memcpy(m_szServerAdr,m_Dlg.m_Addr,sizeof(m_szServerAdr));
m_szPort=m_Dlg.m_Port;
//建立计时器,每1秒尝试连接一次,直到连上或TryCount>10
SetTimer(1,1000,NULL);
TryCount=0;
}
}
10.添加Windows消息WM_TIMER响应函数OnTimer
voidCCSockClientDlg::OnTimer(UINTnIDEvent)
{
if(m_clientSocket.m_hSocket==INVALID_SOCKET)
{
BOOLbFlag=m_clientSocket.Create(0,SOCK_STREAM,FD_CONNECT);
if(!bFlag)
{
AfxMessageBox("SocketError!");
m_clientSocket.Close();
PostQuitMessage(0);
return;
}
}
m_clientSocket.Connect(m_szServerAdr,m_szPort);
TryCount++;
if(TryCount>=10||m_clientSocket.m_bConnected)
{
KillTimer(1);
if(TryCount>=10)
AfxMessageBox("ConnectFailed!");
return;
}
CDialog::OnTimer(nIDEvent);
}
11.双击IDD_CSOCKCLIENT_DIALOG对话框中的“发送”按钮,添加以下代码:
voidCCSockClientDlg::OnSend()
{
if(m_clientSocket.m_bConnected)
{
m_clientSocket.m_nLength=m_MSG.GetWindowText
(m_clientSocket.m_szBuffer,sizeof(m_clientSocket.m_szBuffer));
m_clientSocket.AsyncSelect(FD_WRITE);
m_MSG.SetWindowText("");
}
}
12.双击IDD_CSOCKCLIENT_DIALOG对话框中的“关闭”按钮,添加以下代码:
voidCCSockClientDlg::OnExit()
{
//关闭Socket
m_clientSocket.ShutDown(2);
//关闭对话框
EndDialog(0);
}
12.运行此项目,连接时输入主机名或IP均可,CAsyncSocket类会自动处理。
二.服务端
Server端的编程与Client端的类似,下面主要介绍他的Listen及Accept函数。
1.建立一个CNewSocket类,重载CAsyncSocket类的OnReceive、OnSend函数,如何进行信息的显示和发送可以参考Client程序。本例中采用将收到信息原封不动发回的方法来实现Echo功能,代码如下:
CNewSocket::OnReceive(intnErrorCOde)
{
m_nLength=Receive(m_szBuffer,sizeof(m_szBuffer),0);
//直接转发消息
AsyncSelect(FD_WRITE);
}
CNewSocket::OnSend(intnErrorCode)
{
Send(m_szBuffer,m_nLength,0);
}
2.建立一个CMyServerSocket类,重载CAsyncSocket类的OnAccept函数代码如下
在MyServerSocket.h中声明变量
public::
CNewSocket*m_pSocket;
voidCMyServerSocket::OnAccept(intnErrorCode)
{
//侦听到连接请求,调用Accept函数
CNewSocket*pSocket=newCNewSocket();
if(Accept(*pSocket))
{
pSocket->AsyncSelect(FD_READ);
m_pSocket=pSocket;
}
else
deletepSocket;
}
3.为对话框添加一个“侦听”按钮,添加如下代码:
在CsockServerDlg.ccp中声明变量
public:
CMyServerSocketm_srvrSocket;
voidCCSockServerDlg::OnListen()
{
if(m_srvrSocket.m_hSocket==INVALID_SOCKET)
{
BOOLbFlag=m_srvrSocket.Create
(UserPort,SOCK_STREAM,FD_ACCEPT);
if(!bFlag)
{
AfxMessageBox(“SocketError!”);
M_srvrSocket.Close();
PostQuitMessage(0);
Return;
}
}
//“侦听”成功,等待连接请求
if(!m_srvrSocket。Listen(1))
{
intnErrorCode=m_srvrSocket.GetLastError();
if(nError!=WSAEWOULDBLOCK)
{
AfxMessageBox(“SocketError!”);
M_srvrSocket.Close();

❼ c语言实例的书籍

Cambridge - Numerical Recipes in C》这本书的中文版叫做《c语言数值算法程序大全(第二版)》里面基本上囊括了所有的数值算法

C++primer

C++编程思想第二版上下两卷

以上两本只是入门一下

《C++ 语言命令详解(第二版)》这本书绝对必备里面包含了所有的c语言函数

《MFC类库参考手册 (PDF,全四册)》这本作为单纯C++向MFC的过度也应该必备

我一般都使用MFC里面的类但是不少都推荐STL,所以推荐你看一下STL方面的书(但是如果你和我一样不是学这个专业的,只是专业方面需要编一些小应用软件推荐你只学MFC)

stl推荐你看一下《STL入门教程》这是一本.chm的书,里面的内容可以实时更新,囊括了所有的stl信息。

以上的书都可以从web 迅雷里下载到。

我的邮箱[email protected]

至于实例的书我觉得都没什么用,因为都太大路化了,不能解决实际问题,建议你就在网络知道里搜C++,然后看别的网友在答疑时提的问题和解决方法,效果非常好,然后试着完成一些简单小任务,赚点分,提高很快,我个人就是从给人编解一元方程地程序开始,一直到现在可以编一些稍微复杂一点的算法。

❽ 怎么学好VC++

2.计算机专业是一个很枯燥的专业,但即来之、则安之,只要你努力学,也会发现其中的乐趣的。

3.记住:万丈高楼平地起!基础很重要,尤其是专业基础课,只有打好基础才能学得更深。

4.C语言是基础,很重要,如果你不学好C语言,那么什么高级语言你都学不好。

6.请先学习专业课《数据结构》、《计算机组成原理》,不要刚开始就拿着一本VC在看,你连面向对象都搞不清楚,看VC没有任何用处。

7.对编程有一定的认识后,就可以学习C++了。(是C++而不是VC,这两个也是两码事。C++是一门语言,而VC教程则是讲解如何使用MFC类库,学习VC应建立在充分了解C++的基础之上。看VC的书,是学不了C++语言的。)

8.学习编程的秘诀是:编程,编程,再编程;

❾ 如何用MFC作界面

如果你是初学者 的话。。建议使用VC++ 6.0

然后找本VC++ 6.0方面的书。。 你就学会制作大多数界面了。。

比如 Visual C++ 6.0 时尚编程百例

之后在看高深的东西

❿ 求《Visual C++6.0 MFC 时尚编程百例》一书的CD光盘源代码

阅读全文

与mfc时尚编程百例相关的资料

热点内容
ug如何启动服务器 浏览:444
csgo防抖动命令 浏览:960
如何弄到手机app页面的源码 浏览:441
androidwindows7破解版 浏览:363
解压视频动画怎么拍 浏览:748
连涨启动源码 浏览:163
小奔运动app网络异常怎么回事 浏览:449
php开启压缩 浏览:305
服务器主机如何设置启动 浏览:284
linux配置网络命令 浏览:776
一张照片怎么制作视频app 浏览:910
pythonweb和php 浏览:978
电脑服务器地址ip地址 浏览:823
对矩阵压缩是为了 浏览:912
setfacl命令 浏览:175
linux子系统中断 浏览:343
linux查看进程ps 浏览:227
知识库系统php 浏览:625
小波变换压缩图像python 浏览:153
阿里巴巴程序员怎么月入百万 浏览:175