2012年8月24日
摘要: 完整流程:1、 构建新类,在对话框中使用这个类。2、 画表格3、 填充4、 标号第一步:构建新类 新建一个对话框项目。设ID为IDC_CLASSTEST,假设我们新建的类为CTableCtrl;那么在ClassTestDlg.h中定义一个成员变量:TableCtrl m_table;然后在ClassTestDlg.cpp中找到void CClassTestDlg::DoDataExchange(CDataExchange* pDX){ CDialog::DoDataExchange(pDX); DDX_Control(pDX, IDC_TABLE, m_table); // 这句是添加上去的。 阅读全文
posted @ 2012-08-24 16:26 fengluo 阅读(456) 评论(0) 推荐(0) 编辑
  2012年8月9日
摘要: 几个需要注意的地方:代码规范, 命名规范, 注意非法情况使用断言, 新分配内存注意释放。1、成员变量需要在前面加上m_xxx;2、类中,成员变量、枚举、虚函数、消息响应函数等需要在之间加上空行。DECLARE_MESSAGE_MAP()可以放在最后,也就可以放在消息响应函数之前。3、成员变量最好在构造函数内就初始化,防止未初始化引用。4、分配内存空间后需要判断是否分配成功。可以使用ASSERT,也可以通过MessageBox来进行提示。5、Create、Set等函数调用后需要判断返回值,防止创建不成功导致错误。可以使用VERIFY(在Release下仍能执行)。同样可以使用消息提示。6、当表达 阅读全文
posted @ 2012-08-09 15:16 fengluo 阅读(154) 评论(0) 推荐(0) 编辑
摘要: 例如需要重载OnClose():在Class View中选择你要重载的函数所在的类,右键,选择属性(properties),如下图:弹出如下窗口:点击进去后可选择相应的消息函数用于重载。 阅读全文
posted @ 2012-08-09 11:59 fengluo 阅读(4950) 评论(0) 推荐(0) 编辑
摘要: 例子为非模态对话框,ID为ID_MODELESS,为其创建一个类:CModelessDlg在父对话框(ID_FIRSTUI)的相应按钮写上事件(以IDCANCEL为例):void CFirstUIDlg::OnBnClickedCancel(){ if (pDlg == NULL) { // 指针为空则创建非模态对话框并显示 pDlg = new CModelessDlg; pDlg->Create(IDD_MODELESS, this); pDlg->ShowWindow(SW_SHOW); } else... 阅读全文
posted @ 2012-08-09 11:27 fengluo 阅读(8342) 评论(0) 推荐(0) 编辑
摘要: 原文见:http://hi.baidu.com/wither/blog/item/8712094f55586a3caec3ab4d.html一般来说,对于一个默认情况下的对话框程序,用户在运行的时候,如果不小心按下了 Enter或是Esc键,程序就会立刻退出。因为:当用户按下Enter时, Windows就会自 动寻找输入焦点(focus)落在哪一个按钮上(当前获得焦点的按钮即为当前选中的按钮,用Tab键可以来回切换,按钮四周将被点线包围)。此时,即使对话框中没有OK按钮, OnOK()函数也会被调用,对于普通的对话框程序来说,OnOK()函数的调用就意味着程序 退出。所以,要使Enter键无 阅读全文
posted @ 2012-08-09 11:17 fengluo 阅读(875) 评论(0) 推荐(0) 编辑
  2012年8月6日
摘要: 编程规范要点(自己经常会犯错误的地方)1、注释应该放于代码的上方或右方,不可放于下方。2、代码较长,有多重嵌套时,应在段落结束处加注释。3、bool变量与零值比较:if(flag);整型变量与零值比较:if(i==0); Win32 API IsBadReadPtr IsBadWritePtr IsBadStringPtr IsBadCodePtr因为精度问题,浮点型变量不能直接使用==、!=与他值比较;指针变量使用NULL作为零值;不可混淆。4、使用malloc和new申请内存后,立即检查指针是否为NULL( if(*p != NULL) )。使用free或delete释放内存后,立即将指针 阅读全文
posted @ 2012-08-06 18:03 fengluo 阅读(993) 评论(0) 推荐(0) 编辑
摘要: 关于文件操作,有许多需要学习的地方,现从零碎之处说起:1、怎样遍历目录下的子目录和文件?使用: CFileFind finder; CString path; path.Format("%s/*.*",lpszDirPath); BOOL bWorking = finder.FindFile(path); while(bWorking){ bWorking = finder.FindNextFile();}// 成功则返回句柄,失败则返回false;可用于判断是否是空目录。2、如何获得子目录或文件的文件名和路径?在上述代码内添加:string szaDirName = fi 阅读全文
posted @ 2012-08-06 18:02 fengluo 阅读(178) 评论(0) 推荐(0) 编辑
摘要: 第一步:创建了对话框工程之后,要添加背景,需要先将BMP图片资源导入项目中(不管是主对话框还是自对话框)。具体步骤如下:1、右键单击向导里的Resource Files->Add->Resource...2、出现如下窗口,单击Bitmap,再点击Import...3、弹出路径选择对话框,找到你想要作为背景的图片,打开即可(图略)。4、导入成功后如下图:5、修改ID在Resource View 中新出现了一个Bitmap文件夹,将ID改成你需要的名字如:IDB_PIC_TWO(自己命名)到此导入完成。第二步:添加代码在Source Files中找到UITestDlg.cpp(你的项目 阅读全文
posted @ 2012-08-06 18:02 fengluo 阅读(301) 评论(0) 推荐(0) 编辑
  2012年7月31日
摘要: 由于对Buffer了解比较少,特将一些相关的知识点记下,以便查阅。一、如何定义一个Buffer,如何初始化?char pBuf[50] = {0};// 定义+初始化二、如何给Buffer赋值?使用memcpy():#define H "huang"memcpy(pBuf, H, strlen(H));若想添加'\0',只需跳过该索引即可,因已初始化为0。三、如何重置某个索引的值?使用memset():memset(pBuf, 设值, 设多少个);四、数组初始化如:char p[] = {};在VS2008下运行,会自动初始化为0.内置数据类型没有显示的初始 阅读全文
posted @ 2012-07-31 18:08 fengluo 阅读(144) 评论(0) 推荐(0) 编辑
  2012年7月19日
摘要: 方法:1、首先要在服务器上建立个人根目录,在本机上新建文件夹。 2、右键菜单-TortoiseSVN-(Repo-browser)-输入根目录路径,进入根目录3、若要在根目录下新建文件,则选中根目录后右键-Create folder-输入文件名和日志,即可创建成功。 4、在本机新建文件夹右键-SVN Update,即可更新。或者本机新建文件夹后,直接更新根目录,然后在新建文件夹内新创键文件夹,再上传就可。 阅读全文
posted @ 2012-07-19 17:29 fengluo 阅读(217) 评论(0) 推荐(0) 编辑