vc中MFC的学习:
基础知识:
头文件:在每个头文件总有下面的预处理命令
#if _MSC_VER>1000
#pragma once
#endif//_MSC_VER>1000
作用:保证工程生成的是,类的头文件仅仅被编译一次
在类的实现文件总有。(cpp文件)
#include "stdafx.h"
。。。
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;//预定义宏命令被替换成当前文件名的一个字符串
#endif
对于每一个工程都有一个rc文件,这个文件是应用程序的资源文件
对话框:
在对话框中,对话框跟对话框的控件都是CWnd的派生类 对话框类是以CDialog作为基本类。
在类中,我们可以看到Dlg中基类是CDialog,以APP结尾的类是以CWinApp作为基类
CDialog类有四个基本的函数 OnInitDialog()、DoModel()、OnOk()、OnCancel()
在使用向导后注意查看消息映射,头文件以及相应的源文件,其中头文件包括对构造函数和虚函数,以及消息映射DECLARE_MESSAGE_MAP对函数的声明 其中通常会用到一个函数DoDataExchangge()用来完成数据跟对话框控件之间的交换 添加说明
不管创建哪种对话框,都应该在源文件中,引言其对应的头文件
在一个对话框工程中,除了头文件,源文件一般包括view文件,doc文件,以及另外一cpp文件
其中,view文件主要包括所以的处理函数 其他稍加了解就好了。
现在所做项目所用资源整理:
框架界面:发送网卡跟接收网卡的设置 cp所处的阶段的设置 以及利用标签空间对主从界面的设置
第一发送网卡跟接收网卡的设置
应用combox来设置发送跟接收的网卡
网卡设备列表 定义一个结构体
typedef struct tagAdapterInfo
{
char szDeviceName[128]; // 名字
char szIPAddrStr[16]; // IP
char szHWAddrStr[18]; // MAC
DWORD dwIndex; // 编号
}INFO_ADAPTER, *PINFO_ADAPTER;
IANFO_DAPTER AdapterList[5];// 网卡列表,比如5个
// ADAPTER_INFO - per-adapter information. All IP addresses are stored as
// strings
typedef struct _IP_ADAPTER_INFO {
struct _IP_ADAPTER_INFO* Next;
DWORD ComboIndex;
char AdapterName[MAX_ADAPTER_NAME_LENGTH + 4];
char Description[MAX_ADAPTER_DESCRIPTION_LENGTH + 4];
UINT AddressLength;
BYTE Address[MAX_ADAPTER_ADDRESS_LENGTH];
DWORD Index;
UINT Type;
UINT DhcpEnabled;
PIP_ADDR_STRING CurrentIpAddress;
IP_ADDR_STRING IpAddressList;
IP_ADDR_STRING GatewayList;
IP_ADDR_STRING DhcpServer;
BOOL HaveWins;
IP_ADDR_STRING PrimaryWinsServer;
IP_ADDR_STRING SecondaryWinsServer;
time_t LeaseObtained;
time_t LeaseExpires;
} IP_ADAPTER_INFO, *PIP_ADAPTER_INFO;
具体实现:选择selchang 表示选中时候改变复合框中值
读取索引号 index=m_ComboSendNic.GetCurSel();
对于一个网卡MAC的结构为:包括六个部分,中间用“-”隔开,其中都是以大写出现
设置一个数组,用循环语句实现,其中不符合标准的将不执行
主程序中启动接收定时器,定时器的设定用
SetTimer(RECV_TIMER, 1000, NULL); //d第二个是时间,第三个为NULL表示 调用默认的Ontimer函数
UINT SetTimer(
HWND hWnd, // handle of window for timer messages
UINT nIDEvent, // timer identifier
UINT uElapse, // time-out value
TIMERPROC lpTimerFunc // address of timer procedure
);