MFC新手使用小结

首先,很多人黑MFC,我觉得这是不对的,他们老是说MFC复杂,过时。复杂暂且不说,过时我不认同,只要能做出合格的效果,最终用户才不会去管你用的MFC还是QT,MFC没有过时,它可以做出我想要的效果,而且不费劲。

     小结一下最近使用MFC的经验,方便以后再使用。

     新建一个win32项目,注意不是新建MFC应用程序,因为后者太大了,前者轻量级。

     新建完项目后,开始添加资源文件(.rc文件),UI布局就是存放在这个.rc文件中的。

     

         添加完资源后,可以开始添加其他UI控件,在工具箱中进行选择:

         

           添加完控件后,开始做响应。

       要注意,每添加完一个控件,会自动在.rc文件中为其生成一个ID,这个ID在后面会常用到。

       其实代码的套路是比较固定的,并没有很多人说的复杂。

       我在这里写的是一个客户端向服务器发送信息和图片的demo。

       首先是TheClient类继承自CWinApp类

class TheClient : public CWinApp
{
public:
	TheClient() {};
	~TheClient() {};
	//初始化
	virtual BOOL InitInstance()
	{
		//调用父类的构造函数
		CWinApp::InitInstance();
		//实例化客户端窗口对象
		CLIENT_FORM dlg;
		//下面是注册相关,固定套路
		m_pMainWnd = &dlg;
		INT_PTR nResponse = dlg.DoModal();
		
		return false;
	}
};
下面是CLIENT_FORM类的代码,UI逻辑主要是放在这个类中的:

class CLIENT_FORM : public CDialog
{
public:
	CLIENT_FORM(CWnd* pParent = NULL) : CDialog(CLIENT_FORM::IDD, pParent) 
	{
		client = yonghu();
		picFilePath = CString();
		sendPicSignal = false;
	};
	//Dialog data, name of dialog here
	enum{ IDD = IDD_DIALOG1 };
	~CLIENT_FORM()
	{
		client.~yonghu();
	}
private:
	yonghu client;
	CString picFilePath;
	bool sendPicSignal;
protected:
	virtual void DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); };
	//Called right after constructor. Initialize things here
	virtual BOOL OnInitDialog()
	{
		//SOCKET
		if (client.ConnectToServer() == -1)
		{
			MessageBox(L"连接服务器失败", L"错误"); 
			//exit(-1);
			return false;
		}
		else
		{
			CDialog::OnInitDialog();
			//pointer init
			pInputMessage = (CEdit*)GetDlgItem(IDC_EDIT1);
			pInputUserName = (CEdit*)GetDlgItem(IDC_EDIT_CLIENTNAME);
			pSendInfoButton = (CButton*)GetDlgItem(IDOK);
			pSendPicButton = (CButton*)GetDlgItem(IDSENDPIC_BUTTON);
			//
			pInputUserName->SetLimitText(8);//8bit
			pInputMessage->SetLimitText(200);//80bit
			return true;
		}
		
	}

public:
	DECLARE_MESSAGE_MAP()
	afx_msg void OnBnClickedOk();
	afx_msg void OnBnClickedSendPic();
};

注意,响应事件要在这里注册一下:

BEGIN_MESSAGE_MAP(CLIENT_FORM, CDialog)
	//下面这里是按键响应注册,参数1是button的ID,参数2是回调函数名
	//发送消息
	ON_BN_CLICKED(IDOK, &CLIENT_FORM::OnBnClickedOk)
	//发送图片
	ON_BN_CLICKED(IDSENDPIC_BUTTON, &CLIENT_FORM::OnBnClickedSendPic)
END_MESSAGE_MAP()

两个类的定义和实现目前都是放在一个.h中的,上面这段代码在两个类之外,也是在同一个.h中。组织结构可以修改。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值