MFC学习碎片



(1)MFC程序中弹出框:

	 MessageBox(str,_T("程序运行结果"),MB_OK);

         AfxMessageBox("Hello");

(2)MFC获取Edit Control的值:

         CEdit *edit1, *edit2;     //注意获取两个控件的值时,要分别加上*
         edit1 = (CEdit*)GetDlgItem(IDC_EDIT_USERNAME);
         edit2 = (CEdit*)GetDlgItem(IDC_EDIT_PWD);

         //获取Edit Control的值:

         edit1->GetWindowText(m_csName);
         edit2->GetWindowText(m_csPwd);
         m_csName.ReleaseBuffer();
         m_csPwd.ReleaseBuffer();

         //设置Edit Control的值:

         edit1->SetWindowText("Hello!");

(3)Socket传递结构体

//定义消息的宏,主要定义结构体类型
#define MSG_TYPE_LOGIN  1
#define MSG_TYPE_LOGIN_RST 2

struct StrMsg
{
    int m_nMsgType;             //用来标识结构体类型
    union                                //不同结构体定义在一个联合中
    {
        struct Strlogin m_strLogin;
        struct StrloginRst m_strLoginRst;
    }
};

struct StrLogin
{
    char m_szUID[20];
    char m_szPWD[20];
};

struct StrLoginRst
{
    int m_nLoginRst;
};

//发送结构体
CString csName = "HELLO";
CString csPwd = "123456";

StrMag msgToSend;
msgToSend.m_nMagType = MAG_TYPE_LOGIN;      //设置消息类型
memset(msgToSend.m_strLogin.m_szUID, '\0', 20);    //初始化字符数组
strcpy(msgToSend.m_strLogin.m_szUID, csName);     //给字符数组赋值
memset(msgToSend.m_strLogin.m_szPWD, '\0', 20);
strcpy(msgToSend.m_strLogin.m_szPWD, csPwd);

pSocket->Send(&msgToSend, sizeof(StrMsg));    //套接字发送结构体

//接收结构体
StrMsg* pMsg = (StrMsg*)pBuf;     //这里用到强制类型转换
switch(pMsg->m_nMsgType)
{
     case MSG_TYPE_LOGIN:
    {
        StrLogin login = pMsg->m_strLogin;              //发送过来的结构体在这里就可以使用了

         /*********在这里可以添加对接受到结构体StrLogin的处理程序************/
        StrMsg msgResult;                                        //收到消息之后可以回复消息给对方
        msgResult.m_nMsgType = MSG_TYPE_LOGINRST;
        msgResult.m_strLoginRst.m_nLoginRst = 0;

        pChatSocket->Send(&msgResult, sizeof(StrMsg));               //回复消息
    }
    break;
case MSG_TYPE_REG:
    break;
}
时间: 2024-10-05 23:56:17

MFC学习碎片的相关文章

MFC学习计划启动

对于C++的基础课程已经学习了不少时间,但一直未有机会.时间去深入.很早之前我就知道了MFC.QT等C++开发框架,由于QT可跨平台的优点,我在那时就意识到要将精力投入到QT的学习中,可后面接触了QT,才意识到QT学习的难度,虽然QT各方面都非常卓越,但由于是新鲜事物,在国内,对于QT的资料实在稀少,相对来说学习难度会大很多,这也是我不得不暂时放弃他的原因.所以,现在的MFC学习计划也由此而来! 不管怎么说吧,现在我是一心想着学习MFC,希望能早日入得编程大门!

mfc学习---文档视图架构

MFC的AppWizard可以生成三种类型的应用程序:基于对话框的应用.单文档应用(SDI)和多文档应用(MDI). 一般情况下,采用文档/视结构的应用程序至少应由以下对象组成:       1.应用程序是一个CwinApp派生对象,它充当全部应用程序的容器.应用程序沿消息映射网络分配消息给它的所有子程序.       2.框架窗口是一CfrmeWnd派生对象.       3.文档是一个CDocument派生对象,它存储应用程序的数据,并把这些信息提供给应用程序的其余部分.       4.视

MFC学习之窗口基础

WinMain函数 1.句柄(HANDLE):{ 1. 定义:资源的标识 2. 句柄的作用: 操作系统通过句柄来找到对应的资源,从而对这些资源进行管理和操作. 3句柄的分类:(按资源){ 1.图标句柄(HICON) , 2.光标句柄(HCURSOR) , 3. 窗口句柄(HWND) , 4.应用程序实列句柄(HINSTANCE). } } 2.Windows应用程序,操作系统,计算机硬件之间的相互关系 Windows程序的入口函数: 窗口应用程序入口: Int WINAPI WinMain( H

MFC学习中遇到的小问题和解决方案

1 清除combox里面的内容((CComboBox*)GetDlgItem(IDC_COMBO_CF))->ResetContent();//消除现有所有内容2 如何获取鼠标指针的位置GetWindowRect 详情见657面 超市管理系统 3 如何获取combox下拉列表的索引:int selgetcursel;getlbtext; 4 选中某行某列值并修改SetItemText 5 单击选中listcontrol控件某行右键 添加一个菜单 并触发事件 (见该网页第15条记录) http:/

MFC学习单选框Radio使用

创建单选框Radio ,ID号IDC_RADIO_NAME 1.获取单选框内容 int RadioState = ((CButton *)GetDlgItem(IDC_RADIO_NAME))->GetCheck();//返回1表示选上,0表示没选上 2.默认值设置 在初始化中添加 ((CButton *)GetDlgItem(IDC_RADIO_NAME))->SetCheck(TRUE);//选上 ((CButton *)GetDlgItem(IDC_RADIO_NAME))->Se

再谈MFC学习——模态对话框的数据传递

学习c++的目的就是为了使用封装好的类,而最最经典的封装类当然是微软的MFC窗口程序类.学习MFC编程之前要学习c++的主要知识,掌握c++的基本编程思想.下面就看下我学习的MFC模态对话框的数据传递. 首先,什么叫做模态对话框呢?模态对话框指的是当弹出这样的对话框的时候,程序不能相应除了此对话框外其他的窗口的响应,直到关闭了这个对话框,程序才能响应其他的对话框的响应.非模态对话框即使弹出也能响应程序其他的窗口而不需要等到此窗口的关闭.那么MFC中怎么才能弹出模态对话框呢?其实很简单,首先创建这

MFC学习笔记1---准备工作

什么是MFC MFC,全称Microsoft Foundation Classes,微软基础类库,顾名思义,是微软的攻城狮们将一些常用的基础的Windows API 函数用C++的形式封装成类,简化程序猿的工作,将C++面向对象这一特点很好的表现出来. 用MFC可以用鼠标来编辑界面,管理各种控件,以及简化一些操作如字符串操作.文件操作.时间日期操作.网络操作.Windows系统操作.数据库操作…… 既然MFC是类库,那么她必然会用到类的特性:模板类.类的封装继承.虚继承.多态性等等. 然而就我的

MFC学习随笔(1)

最近在学习用MFC编写一个简单的界面.其实MFC并不是十分复杂的,经过一段时间的熟悉就可以实现许多基础功能.但是在编写的过程中,经常会遇到林林总总的bug,让人摸不到头脑.今天记录一个过去没有注意过的bug. 在主对话框的一个函数中,我需要对一个List Control控件进行操作.理所当然的,我想要直接传递句柄,于是这样声明以及调用函数: void void DisplaySubMax(int sub_id,CListCtrl m_cur_max); DisplaySubMax(0,m_sub

MFC学习之程序执行过程梳理

*首先利用全局变量对象theApp启动应用程序.这是由于这个全局对象,基类CWinApp中this的指针才干指向这个对象.假设没有这个全局对象,程序在编译时不会出错,但在执行时就会出错. *调用全局应用程序对象的构造函数,从而就会先调用其基类CWinApp的构造函数.后者完毕应用程序的一些初始化工作,并将应用程序对象的指针保存起来. *进入WinMain函数.在AfxWinMain函数中能够获取子类(对Test程序来说就是CTestApp类)的指针,利用此指针调用虚函数:InitInstance