当前位置:首页 » 操作系统 » mfc项目源码

mfc项目源码

发布时间: 2022-09-25 19:28:32

① mfc工程怎么查看包含了哪些mfc源码文件

仅供参考:
1、项目源文件:可以在工程属性界面看到,或者到工程目录里查看
2、系统文件:工程文件列表里有一项依赖项,里边都是用到的相关文件

② 【急求】mfc 实现串口编程的源代码

1.建立项目:打开VC++6.0,建立一个基于对话框的MFC应用程序SCommTest(与我源代码一致,等会你会方便一点);
2.在项目中插入MSComm控件 选择Project菜单下Add To Project子菜单中的 Components and Controls…选项,在弹出的对话框中双击Registered ActiveX Controls项(稍等一会,这个过程较慢),则所有注册过的ActiveX控件出现在列表框中。 选择Microsoft Communications Control, version 6.0,,单击Insert按钮将它插入到我们的Project中来,接受缺省的选项。(如果你在控件列表中看不到Microsoft Communications Control, version 6.0,那可能是你在安装VC6时没有把ActiveX一项选上,重新安装VC6,选上ActiveX就可以了),
这时在ClassView视窗中就可以看到CMSComm类了,(注意:此类在ClassWizard中看不到,重构clw文件也一样),并且在控件工具栏Controls中出现了电话图标(如图1所示),现在要做的是用鼠标将此图标拖到对话框中,程序运行后,这个图标是看不到的。
3.利用ClassWizard定义CMSComm类控制对象 打开ClassWizard->Member Viariables选项卡,选择CSCommTestDlg类,为IDC_MSCOMM1添加控制变量:m_ctrlComm,这时你可以看一看,在对话框头文件中自动加入了//{{AFX_INCLUDES() #i nclude "mscomm.h" //}}AFX_INCLUDES (这时运行程序,如果有错,那就再从头开始)。
4.在对话框中添加控件 向主对话框中添加两个编辑框,一个用于接收显示数据ID为IDC_EDIT_RXDATA,另一个用于输入发送数据,ID为IDC_EDIT_TXDATA,再添加一个按钮,功能是按一次就把发送编辑框中的内容发送一次,将其ID设为IDC_BUTTON_MANUALSEND。别忘记了将接收编辑框的Properties->Styles中把Miltiline和Vertical Scroll属性选上,发送编辑框若你想输入多行文字,也可选上Miltiline。
再打开ClassWizard->Member Viariables选项卡,选择CSCommTestDlg类, 为IDC_EDIT_RXDATA添加CString变量m_strRXData, 为IDC_EDIT_TXDATA添加CString变量m_strTXData。说明: m_strRXData和m_strTXData分别用来放入接收和发送的字符数据。
5.添加串口事件消息处理函数OnComm() 打开ClassWizard->Message Maps,选择类CSCommTestDlg,选择IDC_MSCOMM1,双击消息OnComm,将弹出的对话框中将函数名改为OnComm,(好记而已)OK。
这个函数是用来处理串口消息事件的,如每当串口接收到数据,就会产生一个串口接收数据缓冲区中有字符的消息事件,我们刚才添加的函数就会执行,我们在OnComm()函数加入相应的处理代码就能实现自已想要的功能了。请你在函数中加入如下代码:
void CSCommTestDlg::OnComm()
{
// TODO: Add your control notification handler code here
VARIANT variant_inp;
COleSafeArray safearray_inp;
LONG len,k;
BYTE rxdata[2048]; //设置BYTE数组 An 8-bit integerthat is not signed.
CString strtemp;
if(m_ctrlComm.GetCommEvent()==2) //事件值为2表示接收缓冲区内有字符
{ ////////以下你可以根据自己的通信协议加入处理代码
variant_inp=m_ctrlComm.GetInput(); //读缓冲区
safearray_inp=variant_inp; //VARIANT型变量转换为ColeSafeArray型变量
len=safearray_inp.GetOneDimSize(); //得到有效数据长度
for(k=0;k<len;k++)
safearray_inp.GetElement(&k,rxdata+k);//转换为BYTE型数组
for(k=0;k<len;k++) //将数组转换为Cstring型变量
{
BYTE bt=*(char*)(rxdata+k); //字符型
strtemp.Format("%c",bt); //将字符送入临时变量strtemp存放
m_strRXData+=strtemp; //加入接收编辑框对应字符串
}
}
UpdateData(FALSE); //更新编辑框内容
}

到目前为止还不能在接收编辑框中看到数据,因为我们还没有打开串口,但运行程序不应该有任何错误,不然,你肯定哪儿没看仔细,因为我是打开VC6对照着做一步写一行的,运行试试。没错吧?那么做下一步:
6.打开串口和设置串口参数 你可以在你需要的时候打开串口,例如在程序中做一个开始按钮,在该按钮的处理函数中打开串口。现在我们在主对话框的CSCommTestDlg::OnInitDialog()打开串口,加入如下代码:
// TODO: Add extra initialization here
if(m_ctrlComm.GetPortOpen())
m_ctrlComm.SetPortOpen(FALSE);
m_ctrlComm.SetCommPort(1); //选择com1
if( !m_ctrlComm.GetPortOpen())
m_ctrlComm.SetPortOpen(TRUE);//打开串口
else
AfxMessageBox("cannot open serial port");
m_ctrlComm.SetSettings("9600,n,8,1"); //波特率9600,无校验,8个数据位,1个停止位
m_ctrlComm.SetInputMode(1); //1:表示以二进制方式检取数据
m_ctrlComm.SetRThreshold(1);
//参数1表示每当串口接收缓冲区中有多于或等于1个字符时将引发一个接收数据的OnComm事件
m_ctrlComm.SetInputLen(0); //设置当前接收区数据长度为0
m_ctrlComm.GetInput();//先预读缓冲区以清除残留数据

现在你可以试试程序了,将串口线接好后,打开串口调试助手,并将串口设在com2,选上自动发送,也可以等会手动发送。再执行你编写的程序,接收框里应该有数据显示了。
7.发送数据 先为发送按钮添加一个单击消息即BN_CLICKED处理函数,打开ClassWizard->Message Maps,选择类CSCommTestDlg,选择IDC_BUTTON_MANUALSEND,双击BN_CLICKED添加OnButtonManualsend()函数,并在函数中添加如下代码:
void CSCommTestDlg::OnButtonManualsend()
{
// TODO: Add your control notification handler code here
UpdateData(TRUE); //读取编辑框内容
m_ctrlComm.SetOutput(COleVariant(m_strTXData));//发送数据
}
运行程序,在发送编辑框中随意输入点什么,单击发送按钮,我们通过把RS232的2.3两口短接,在一台电脑上显示串口的收发数据!
最后说明一下,由于用到VC控件,在没有安装VC的计算机上运行时要从VC中把mscomm32.ocx、msvcrt.dll、mfc42.dll拷到Windows目录下的System子目录中(win2000为System32)并再进行注册设置

③ 如何阅读mfc源码

首先你要知道你的程序是做什么的。
然后先看下程序界面,大体知道实现的流程。
然后看源码一般从初始化函数开始看起,结合之前或多或少了解的流程,看下去就能理解。

④ 如何看懂mfc项目源代码

这个问题 问的比较广泛了,,需要您对MFC 有个大概了解,对C++语言非常清楚,对VS自动生成的 各个文件要大概清楚其作用,建议先学习C++基础语法,然后再学习W32应用程序开发机制,消息映射机制,然后再看看MFC,
《深入浅出MFC》

希望能帮到您!望采纳。。

⑤ vc 如何打开MFC项目源代码

双击xxx.rc文件打开资源编辑器,在资源视图中点击右键添加资源,选择菜单(menu),在菜单行上面添加"文件","帮助"等,然后打开对话框资源,在属性窗口中找到"menu"这项,选择刚刚建立的菜单资源即可,
f5运行就看到了

⑥ MFC数据库编程源代码

10.sql Server7.0/2000数据库
/*
#import "c:\Program Files\Common Files\System\ADO\msado15.dll" \
no_namespace rename("EOF", "EndOfFile")
*/
CoInitialize(NULL); // 初始化OLE/COM库环境 ,为访问ADO接口做准备
_RecordsetPtr m_pRecordset("ADODB.Recordset");
_ConnectionPtr m_pConnection("ADODB.Connection");
_bstr_t bstrSQL("select * from stu_info"); //查询语句
char * query_cmd = "DELETE FROM stu_info WHERE sname = ’本拉登’";
try
{
// 创建Connection对象
m_pConnection.CreateInstance("ADODB.Connection");
// 设置连接字符串,必须是BSTR型或者_bstr_t类型
_bstr_t strConnect= "Provider=SQLOLEDB;Server=(local);Database=db2; uid=; pwd=;";
//若数据库在网络上则Server为形如(192.168.1.5,3340)
//用户sa和密码123只是针对我的库
m_pConnection->Open(strConnect,"","",adModeUnknown);
if(m_pConnection==NULL)
cerr<<"Lind data ERROR!\n";
// 创建记录集对象
m_pRecordset.CreateInstance(_uuidof(Recordset));
// 取得表中的记录
m_pRecordset->Open(bstrSQL,m_pConnection.GetInterfacePtr(),
adOpenDynamic,adLockOptimistic,adCmdText);
_variant_t vsnum,vsname,vsage,vssex,vsmajor; //对应库中的snum,sname,sage,ssex,smajor
cout << "学号 姓名 年龄 姓别 专业";
cout << "\n----------------------------------------------------------------\n";
while (!m_pRecordset->EndOfFile)
{
vsnum = m_pRecordset->GetCollect(_variant_t((long)0));//这儿给字段编号和字段名都可以
vsname = m_pRecordset->GetCollect("sname");
vsage = m_pRecordset->GetCollect("sage");
vssex = m_pRecordset->GetCollect("ssex");
vsmajor = m_pRecordset->GetCollect("smajor");
if (vsnum.vt != VT_NULL && vsname.vt != VT_NULL && vsage.vt != VT_NULL
&& vssex.vt != VT_NULL && vsmajor.vt != VT_NULL)
{
cout.setf(ios::left);
cout << setw(14) << (char*)(_bstr_t)vsnum;
cout << setw(14) << (char*)(_bstr_t)vsname;
cout << setw(8) << vsage.lVal;
cout << setw(8) << (char*)(_bstr_t)vssex;
cout <<setw(20) << (char*)(_bstr_t)vsmajor;
cout.unsetf(ios::left);
cout << endl;
}
m_pRecordset->MoveNext(); ///移到下一条记录
}
cout << "\n----------------------------------------------------------------\n";
cout << "\n请输入你要添加的学生信息\n";
cout << "学号:";
cin >> student.snum;
cout << "\n姓名:";
cin >> student.sname;
cout << "\n年龄:";
cin >> student.sage;
cout << "\n姓别:";
cin >> student.ssex;
cout << "\n专业:";
cin >> student.smajor;
m_pRecordset->MoveFirst(); //移动到第一条记录
m_pRecordset->AddNew(); ///添加新记录
m_pRecordset->PutCollect("snum",_variant_t(student.snum));
m_pRecordset->PutCollect("sname",_variant_t(student.sname));
m_pRecordset->PutCollect("sage",_variant_t(student.sage));
m_pRecordset->PutCollect("ssex",_variant_t(student.ssex));
m_pRecordset->PutCollect("smajor",_variant_t(student.smajor));
m_pRecordset->Update();
m_pConnection->Execute(query_cmd,NULL,1); //用Execute执行sql语句来删除
m_pRecordset->Close(); // 关闭记录集
}
// 捕捉异常
catch(_com_error e)
{
// 显示错误信息
cerr << "\nERROR:" << (char*)e.Description();//抛出异常
}
if(m_pConnection->State)
m_pConnection->Close();
::CoUninitialize();

20.数据库存入二进制字段数据
/*
#import "c:\Program Files\Common Files\System\ADO\msado15.dll" \
no_namespace rename("EOF", "EndOfFile")
*/
CoInitialize(NULL);
_RecordsetPtr pRs=NULL;
_StreamPtr pStream=NULL;
pRs.CreateInstance(_uuidof(Recordset));
pStream.CreateInstance(__unidof(Stream));
_bstr_t ConnectString(("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=%%1;Persist Security Info=False"); //C:\\mydb.mdb
pRs->Open(_bstr_t("Blob"),ConnectString,adOpenKeyset,adLockOptimistic,adCmdTable);
_variant vtSource;
vtSource.vt=VT_ERROR;
_bstr_t bstrUser(L"");
_bstr_t bstrPass(L"");
pStream->Type=adTypeBinary;
pStream->Open(vtSource,adModeUnknown,adOpenStreamUnspecified,bstrUser,bstrPass);
pStream->LoadFromFile(_bstr_t(%%3)); //"C:\\mypic.bmp"
pRs->AddNew();
pRs->Fields->GetItem(_variant_t(%%2))->put_Value(_variant_t(pStream->Read(adReadAll))); //"Image"
pRs->();
pStream->Close();
pRs->Close();
CoUninitialize();

21.数据库取出二进制字段数据
/*
#import "c:\Program Files\Common Files\System\ADO\msado15.dll" \
no_namespace rename("EOF", "EndOfFile")
*/
CoInitialize(NULL);
_RecordsetPtr pRs=NULL;
_StreamPtr pStream=NULL;
pRs.CreateInstance(_uuidof(Recordset));
pStream.CreateInstance(__unidof(Stream));
_bstr_t ConnectString(("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=%%1;Persist Security Info=False");//C:\\mydb.mdb
pRs->Open(_bstr_t("Blob"),ConnectString,adOpenKeyset,adLockOptimistic,adCmdTable);
pStream->Write(_variant_t(pRs->Fields->GetItem(_variant_t(%%2))->GetValue())); //"Image"
pStream->SaveToFile(_bstr_t(%%3),adSaveCreateOverWrite); //"C:\\mypic.bmp"
pStream->Close();
pRs->Close();
CoUninitialize();

⑦ vs2013 ultimate版本怎么看MFC源码

mfc.bsc是可以查看MFC源代码的文件,其位置在MFC源代码文件夹下,Visual Studio版本不一样的话,位置也不一样。
vc6.0位置:C:/Program Files/Microsoft Visual Studio/VC98/MFC/SRC/
vc2008sp1位置:D:/Program Files/Microsoft Visual Studio 9.0/VC/atlmfc/src/mfc
类似的位置搜索下就可以找得到,MSDN上有三种方法添加.bsc文件到工程,如下原文:
To open the .bsc file

* On the File menu, click Open and open the .bsc file.

The .bsc file will be available to all projects in the solution until you either reload the solution or delete the .bsc file from Solution Explorer or the Object Browser.

To attach the .bsc file to your project

1.In Solution Explorer, right-click the project node and click Add Existing Item on the shortcut menu.
2.Browse to the .bsc file and add it to your project.

The .bsc file will only be available in the project to which it is added. You can save the project so that the .bsc file will be available the next time that you open the project. You can delete the .bsc file from Solution Explorer

To add the .bsc file to the Object Browser

*In the Object Browser, click the Customize button and browse to the desired .bsc file.

When you add .bsc files to the Object Browser with the Customize button, the files are available to all projects in any solution that you open. This setting will persist across Visual Studio sessions.

The .bsc file that is referenced in each method will then appear in the Object Browser.
这里介绍第三种方法,单击“视图”→“对象浏览器”,在弹出的“对象浏览器”面板上“浏览”→“编辑自定义组件集”→“浏览”→“文件类型”→“源浏览器文件(*.bsc)”,然后在MFC源代码文件夹下选择mfc.bsc→“添加”→“确定.

⑧ MFC获取url源码

申请着作权,一般最多提交3000行代码。如果你的文件较多,代码量大,那么复制主要部分就足够了,如果代码不多,全部复制也容易。3000行代码复制,打开相应的头文件和源文件,全选、复制、粘贴到word,一共就是2、3分钟的事情吧,没那么麻烦。MFC代码提交,需要注意的是APP类必须在最前面,因为这个是程序入口类;其它文件一般按照先头文件、再对应cpp文件的格式顺序粘贴即可。

热点内容
内置存储卡可以拆吗 发布:2025-05-18 04:16:35 浏览:333
编译原理课时设置 发布:2025-05-18 04:13:28 浏览:377
linux中进入ip地址服务器 发布:2025-05-18 04:11:21 浏览:610
java用什么软件写 发布:2025-05-18 03:56:19 浏览:31
linux配置vim编译c 发布:2025-05-18 03:55:07 浏览:107
砸百鬼脚本 发布:2025-05-18 03:53:34 浏览:942
安卓手机如何拍视频和苹果一样 发布:2025-05-18 03:40:47 浏览:739
为什么安卓手机连不上苹果7热点 发布:2025-05-18 03:40:13 浏览:802
网卡访问 发布:2025-05-18 03:35:04 浏览:510
接收和发送服务器地址 发布:2025-05-18 03:33:48 浏览:371