随笔分类 -  C++

摘要:Linux下获取本机IP地址的代码,返回值即为互联网标准点分格式的字符串。#define ETH_NAME "eth0"//获得本机IP地址char* GetLocalAddress(){ int sock; struct sockaddr_in sin; ... 阅读全文
posted @ 2014-08-13 11:43 紫清婷 阅读(2086) 评论(0) 推荐(0)
摘要:近期写了有关Socket的程序,需要从windows移植到linux。现把有用的东东收集整理记录下来。1.头文件windows下winsock.h或winsock2.h;linux下netinet/in.h(大部分都在这儿),unistd.h(close函数在这儿),sys/socket.h(在... 阅读全文
posted @ 2014-08-13 11:34 紫清婷 阅读(12379) 评论(0) 推荐(0)
摘要:头文件: #include GetModuleFileNameA()char moduleFileName[MAX_PATH]; GetModuleFileNameA(0, moduleFileName, MAX_PATH);取得的路径为:c:\Documents and Settings\... 阅读全文
posted @ 2014-07-23 16:18 紫清婷 阅读(1940) 评论(0) 推荐(0)
摘要:1. 安装VMware虚拟机软件2. 在VMware中安装linux系统,这里安装的是Ubuntu。(用VMware安装Ubuntu12.04详细过程图解)3. ubuntu有自带文本编辑器,我们可以创建一个文档。然后输入代码,讲名字改为*.c。还可以使用另外一个文本编辑器vi。如果你的ubuntu... 阅读全文
posted @ 2014-07-15 10:23 紫清婷 阅读(549) 评论(0) 推荐(0)
摘要:解决方法:1. 按F5调试程序 2. 在出错时,选择“重试” 3. 按ALT+7调出“调用栈”窗口 4. 双击从上往下的最近一个自己定义的函数,系统会自动把该函数所在的文件显示出来,此时程序就暂停在光标处。一般来说错误就出在这附近。可以通过查看变量的值来确认。找到问题:原来是重写的DeleteContents()里出了问题:for(POSITION pos=GetFirstViewPosition();pos!=NULL;) { CView* pView = GetNextView(pos); if (pView->IsKindOf(RUNTIME_CLASS(CMessageVie.. 阅读全文
posted @ 2013-11-20 00:43 紫清婷 阅读(1905) 评论(0) 推荐(0)
摘要:分割窗口概述 分割窗口,顾名思义,就是将一个窗口分割成多个窗格,在每个窗格中都包含有视图,或者是同一类型的视图,或者是不同类型的视图。MFC分割窗口的方式有两种,动态分割和静态分割。动态分割窗口通常用于创建同一个文档对应的多个视图,而且这些视图一般都是同一类型的视图,能够在用户编辑文档的不同部分时提供方便。大家看下Word里的动态分割窗口就很明白了,以Word2007文档为例,在菜单中点击“视图”->“拆分”,就可以看到一条随鼠标移动的分隔条,当我们在文档中某个位置按下鼠标左键时,分割条就固定了下来,生成了上下两个分割窗格,通过滚动每个窗格中的垂直滚动条可以看到,两个窗格中的内容相同,这 阅读全文
posted @ 2013-11-12 13:48 紫清婷 阅读(2194) 评论(0) 推荐(1)
摘要:1. MFC中 创建文件夹的方法如下:CString strFolderPath = "./Output"; //判断路径是否存在 if(!PathIsDirectory(strFolderPath)) { CString strMsg; strMsg.Format(_T("指定路径\"%s\"不存在,是否创建?"),strFolderPath); if(AfxMessageBox(strMsg,MB_YESNO) == IDYES) ... 阅读全文
posted @ 2013-11-12 00:31 紫清婷 阅读(5907) 评论(0) 推荐(0)
摘要:基于VS2010 MFC的项目是之前建好的,后来需要添加数据库。方法分享于此。1. 打开自己的项目,项目->添加类。2. 选MFC ODBC使用者,点右下角的添加。3. 点数据源。//动态集:当修改数据库数据后将被同步到数据库//快照:即静态的,非同步的4. 点新建。//文件数据源把信息保存到一个文件中,这个文件可以复制到你的程序中.//而机器数据源是把信息保存到注册表中,没有文件可复制,你换个机器就没这个数据源了.5. 根据自己数据库的类型来选择,然后下一步。(我的文件是.accdb的,所以这里访问access数据库。)6. 点浏览,选择自己的数据库文件,然后下一步->完成。(建 阅读全文
posted @ 2013-10-30 21:08 紫清婷 阅读(1377) 评论(0) 推荐(0)
摘要:1. 在工具箱中找到Date Time Picker控件,然后拖放到对话框上。2. 在其属性中按自己的需求做一些设置。 Format 属性:LongDate (长日期):****年**月**日 Short Date(短日期):2013/10/26(或 2013-10-26) Show None 属性:用于将日期值设为空。 Use Spin Control 属性:提供一个调整时间的按钮,一个上(增加),一个下(减少)。 Allow Edit 属性:可以编辑整行。 ……3. 利用类向导给控件添加变量:CString m_date。 用 UpdateDate(True)... 阅读全文
posted @ 2013-10-26 19:50 紫清婷 阅读(4565) 评论(0) 推荐(1)
摘要:久了没用,居然忘记了该怎样给菜单项添加响应函数了~~~~~~~~T_T 特记于此: 1. 在资源视图的Menu里找到自己要添加的菜单,然后输入菜单项。 2. 右击菜单项选属性,设置Popup为False,修改ID。 3. 在CXXXView类里利用类向导找到刚刚改的ID,双击即可添加消息响应函数。 此时就会发现多了例如这样的代码: .h文件里: 消息响应函数的声明:afx_msg void OnCountM(); .cpp文件里: 新的消息映射:ON_COMMA... 阅读全文
posted @ 2013-10-26 12:49 紫清婷 阅读(4629) 评论(0) 推荐(0)
摘要:一、Debug和Release编译方式的本质区别 Debug通常称为调试版本,它包含调试信息,并且不作任何优化,便于程序员调试程序。Release称为发布版本,它往往是进行了各种优化,使得程序在代码大小和运行速度上都是最优的,以便用户很好地使用。 Debug和Release的真正秘密,在于一组编译选项。下面列出了分别针对二者的选项(当然除此之外还有其他一些,如/Fd/Fo,但区别并不重要,通常他们也不会引起Release版错误,在此不讨论)。 Debug版本: /MDd/MLd或/MTd使用Debugruntimelibrary(调试版本的运行时刻函数库) /Od关闭优化开关 ... 阅读全文
posted @ 2013-10-25 23:27 紫清婷 阅读(3123) 评论(0) 推荐(1)
摘要:经过苦苦调试,今晚终于解决了一个大问题。我想要实现的是:在一个FormView的派生类里获取到文档类的指针。但是出现问题:试了很多办法,始终无法获取到。终于,此问题在我不懈地调试加尝试下解决了。现把我解决方法共享之,希望帮到遇到同样问题的人,因为这个问题实在是太让我恼火了!!!首先头文件:#include "MainFrm.h"#include "XXXDoc.h"#include "XXXView.h"然后在需要获得文档类指针的地方使用如下方法:static CMainFrame* pMain = (CMainFrame *)Afx 阅读全文
posted @ 2013-10-25 01:04 紫清婷 阅读(886) 评论(0) 推荐(0)
摘要:在单文档视图(SDI)结构中,视图一般用来显示数据。但是,有时也希望在视图中显示按钮或其他的控件,以满足用户的需要。下面是手动添加按钮并使按钮具有响应事件的功能的方法。第一步:添加一个按钮首先在**View.h中定义一个按钮标识#define ID_BUTTON 100其次给C**View类添加一个成员变量CButton m_myButton; //这条语句写在**View.h的类的定义中,要声明为PUBLIC类型然后创建按钮实例 m_myButton.Create(_T("示例按钮"), //按钮的caption属性,按钮的显示WS_CHILD|WS_VISIBLE|BS 阅读全文
posted @ 2013-10-22 01:19 紫清婷 阅读(1516) 评论(0) 推荐(0)
摘要:VS2010 MFC中制作Visual Studio风格的停靠侧栏窗口(CDockablePane里嵌套FormView表单视图)1. 在资源窗口里新建一个FormView的Dialog,修改ID为IDD_FORMVIEW。在此Dialog上点击右键添加类,建立一个基类为CFormView的类,这里取名为CMfcFormView。则生成了MfcFormView.h和MfcFormView.cpp文件。2. 建立一个CDockablePane的派生类,予以容纳FormView,建立派生出的CDockablePane类为CSolutionWnd 即利用类向导,添加类名为CSolutionWnd,. 阅读全文
posted @ 2013-10-22 01:14 紫清婷 阅读(3934) 评论(1) 推荐(1)
摘要:在上一篇中记录了用fprintf函数写内容到文件中的方法,但是发现了问题:产生的文件字符串有乱码现象。解决办法:用_ftprintf函数另外,据说: unicode的话要用fwprintf unicode 和ANSI两个版本都可用的有宏_ftprintf但是如下代码中出来的是“???”:CString str = "紫清婷";_ftprintf(fp, _T("%s\n"), str);试了半天,发现字母和数字都正确写入文件,但是汉字写到文件就要变成"?"。最后改为:_ftprintf(fp, _T("%hs\n" 阅读全文
posted @ 2013-10-20 22:44 紫清婷 阅读(2417) 评论(0) 推荐(0)
摘要:#include #define F_PATH "d:\myfile\file.txt" int main(void) { FILE *fp = NULL; //需要注意 fp = fopen(F_PATH, "a"); if(NULL == fp) { return -1; //返回错误代码 } CString a = "a"; CString b = "... 阅读全文
posted @ 2013-10-20 22:32 紫清婷 阅读(26859) 评论(0) 推荐(0)
摘要:VC MFC SDI/MDI框架各部分指针获取方式整理总结一下,希望能帮助到别人。获得CWinApp获得CMainFrame获得CChildFrame获得CDocument获得CView在CWinApp中AfxGetMainWnd()m_pMainWndAfxGetMainWnd()->MDIGetActive()AfxGetMainWnd()->GetActiveFrame()SDI:AfxGetMainWnd()->GetActiveView()->GetDocument()MDI:AfxGetMainWnd()->MDIGetActive()->Get 阅读全文
posted @ 2013-10-14 00:00 紫清婷 阅读(1166) 评论(0) 推荐(0)
摘要:一、将字符串2011-08-1800:00:00转换为字符串2011-8-18,通过以下的函数CString DataDeleteZero(CString DATA){ CStringstrmonth,strday,stryear; intyear=0,month=0,day=0; year=atoi(DATA.Mid(0,4)); month=atoi(DATA.Mid(5,2)); day=atoi(DATA.Mid(8,2)); if(month<10)month=atoi(DATA.Mid(6,2)); if(day<10)day=atoi(DATA.Mid(9,2)); 阅读全文
posted @ 2013-10-13 23:58 紫清婷 阅读(4372) 评论(0) 推荐(0)
摘要:int 转化为SCtring: int n =123; CString str; str.Format("%d",n);报错的话则改为:str.Format(_T("%d"),n); 或者str.Format(TEXT("%d"),n); 即可CString 转化为 int:CStringstr("123");intn=_ttoi(str); 阅读全文
posted @ 2013-10-10 23:57 紫清婷 阅读(16763) 评论(0) 推荐(0)
摘要:1、CSting->std::string如果不是unicode可以直接转换:CString cs("Hello");std::string s((LPCTSTR)cs);如果是unicode的话:CString cs ("Hello");CT2CA pszConvertedAnsiString (cs);std::string strStd (pszConvertedAnsiString); 2、 std::string->CString:std::string s("Hello");CString cs(s.c_str 阅读全文
posted @ 2013-06-13 00:43 紫清婷 阅读(562) 评论(0) 推荐(0)