![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C&C++/MFC
文章平均质量分 78
imxiangzi
这个作者很懒,什么都没留下…
展开
-
C语言全局变量那些事儿
作为一名程序员,如果说沉迷一门编程语言算作一种乐趣的话,那么与此同时反过来去黑一门编程语言就是这种乐趣的升华。今天我们就来黑一把C语言,好好展示一下这门经典语言令人抓狂的一面。我们知道,全局变量是C语言语法和语义中一个很重要的知识点,首先它的存在意义需要从三个不同角度去理解:对于程序员来说,它是一个记录内容的变量(variable);对于编译/链接器来说,它是一个需要解析的符号(symbol)转载 2015-05-04 20:09:53 · 475 阅读 · 0 评论 -
VC/MFC如何设置对话框背景颜色
方法一:调用CWinApp类的成员函数SetDialogBkColor来实现。 (这个函数已经废弃)1void SetDialogBkColor(COLORREF clrCtlBk = RGB(192, 192, 192), COLORREF clrCtlText = RGB(0, 0, 0));其中函数转载 2014-10-30 16:24:47 · 859 阅读 · 0 评论 -
向List Control中添加ACCESS数据内容
转: 给List Control 添加变量tt 加入引入ADO使用智能指针 #import "c:\program files\common files\system\ado\msado15.dll"no_namespace \rename ("EOF", "adoEOF")rename ("BOF", "adoBOF") 添加几个全局变转载 2014-10-11 16:34:42 · 2564 阅读 · 0 评论 -
ListControl中判定双击哪一行哪一列
NM_DBLCLK消息void CDBResultDlg::OnNMDblclkListDb(NMHDR *pNMHDR, LRESULT *pResult){ int nRet = 0; LVHITTESTINFO HitTestInfo; LPNMITEMACTIVATE lpnmactive = (LPNMITEMACTIVATE)pNMHDR; char转载 2014-10-12 10:00:14 · 4260 阅读 · 0 评论 -
[MFC]对CString::GetBufferSetLength方法的探究,需要ReleaseBuffer,GetLength才正确!
在使用CString的GetBufferSetLength方法时,遇到了一个问题,代码如下:CString path;::GetCurrentDirectory(MAX_PATH, path.GetBufferSetLength(MAX_PATH));path.Append(TEXT("\\SubDir"));wprintf(TEXT("%s"), path);这段代码的输出始转载 2014-11-15 11:14:15 · 1441 阅读 · 0 评论 -
C语言注释风格(函数、功能、输入、输出、返回)
C语言编程规范-注释 规则:1:一般情况下,源程序有效注释量必须在20%以上。说明:注释的原则是有助于对程序的阅读理解,在该加的地方都加了,注释不宜太多也不能太少,注释语言必须准确、易懂、简洁。2:说明性文件(如头文件.h文件、.inc文件、.def文件、编译说明文件.cfg等)头部应进行注释,注释必须列出:版权说明、版本号、生成日期、作者、内容、功能、与其它文件的关系、修改转载 2014-11-12 16:28:31 · 1524 阅读 · 0 评论 -
Visual Studio+VAssistX自动添加注释
1. 增加函数头注释右击函数名,然后依次点击“Refacto”–>“Document Method”,这个时候函数头注释就会蹦出来,不过这个注释的格式是默认的,想修改注释格式,可以通过以下方法。点击 “VAssistX”–>“Visual VAssistX Options”然后选择Suggestions,再点击“Edit VA Snippets”。在打开的窗口中选择Refactor转载 2014-11-12 16:56:36 · 1014 阅读 · 0 评论 -
ON_MESSAGE使用方法
ON_MESSAGE响应的是自定义消息,有关自定义消息的处理请看如下步骤: 1.定义消息: 在CCDlg类的头文件中加入如下代码: #define WM_CUSTOMIZE WM_USER+1 头文件中加入Customize的声明: afx_msg LRESULT Customize(WPARAM wParam, LPARAM lParam);2.cpp文件中加入消息的转载 2014-10-24 11:25:20 · 19311 阅读 · 0 评论 -
mfc 小技巧之 获取对话框句柄 对话框指针
1、CWnd *pWnd = AfxGetMainWnd();获取主对话框指针;获取住对话狂句柄HWND hHwnd = pWnd->m_hWnd; 父窗口法:GetParent(); 在类的成员函数中如果使用与MFC类库相同名的SDK API 则需在函数名前添加::::作用将作用域改为全局。2、转载 2014-10-26 10:08:13 · 7308 阅读 · 0 评论 -
Tab Control控件简单使用
本文讲述在普通对话框上添加标签的简单示例第一步拖一个Tab Control到对话框上并添加变量m_tabCtrl; 第二步添加两个对话框资源IDD_DIALOG1,IDD_DIALOG2并将style为Child, Border为None,再分别为其添加对应的基于CDialog m_page1,m_page2第三步在OnInitDialog()添加如下代码转载 2014-08-27 15:50:52 · 1453 阅读 · 0 评论 -
MFC主线程安全关闭子线程的方法:使用PostThreadMessage在Win32线程间传递消息
PostThreadMessage的原型是这样的BOOL PostThreadMessage( DWORD idThread, UINT Msg, WPARAM wParam, LPARAM lParam);PostThreadMessage可以用于线程之间的异步通讯,因为它不用等待调用者返回,这也许是线程通讯中最简单的一种方法了。但是转载 2014-08-29 17:28:07 · 4573 阅读 · 1 评论 -
MFC获得当前应用程序目录的GetCurrentDirectory()和GetModuleFileName()函数
在开发过程中经常需要获得程序当前的运行目录,这时就可以使用GetCurrentDirectory()和GetModuleFileName()函数,GetCurrentDirectory只是返回当前进程的当前目录,而并不是进程的镜像文件(.exe)所在的目录,GetCurrentDirectory()适用于XP等系统,,在WinCE上不能使用,GetModuleFileName()适用于WinCE2转载 2014-09-22 15:41:48 · 2705 阅读 · 0 评论 -
获取文件的绝对路径
想要访问执行程序(.exe)路径下的文件,有以下几个步骤: 1.先通过函数GetModuleFileName获取执行程序的绝对路径。 TCHAR szPath[ MAX_PATH ] = {0}; GetModuleFileName( NULL, szPath, MAX_PATH ); 其中GetModuleFileName函数为windows的转载 2014-09-22 15:40:57 · 4765 阅读 · 0 评论 -
TCHAR和CHAR类型的互转
Win32中CStdString 是需要TCHAR类型的值才可以赋值的,而很多文件读取时FILE的fopen函数之类的需要的是CHAR,我们需要把它们互转,这里我在网上找到了一个比较方便的方法没有定义UNICODE,所以它里面的字符串就是简单用" "就行了,创建工程的时候包含了UNICODE定义,就必须对TCHAR和char进行转换。首先是把TCHAR转为char[cp转载 2014-09-22 22:17:04 · 1519 阅读 · 0 评论 -
MFC集合类之CList
之前我们先以CStringList为例演示下列成员方法:AddTail, AddHead, GetHeadPosition, GetTailPosition, GetPrev(), GetNext()我们看到如何向一个CList类中增加数据:可以从两端增加,以及如何遍历整个CList…… [cpp] view plaincopy转载 2014-10-03 23:58:35 · 1794 阅读 · 0 评论 -
GDI+ Graphics类
1 GDI+的核心:Graphics类(1)The Graphics class provides methods for drawing lines, curves, figures, images, and text. A Graphics object stores attributes of the display device and attributes of the转载 2014-10-30 22:55:33 · 1761 阅读 · 0 评论 -
ADO中使用addnew
1.AddNew之后必须Update2.Update后要值向下个位置具体说,把你的循环代码改成如下:m_pRecset->MoveLast(); m_pRecset->AddNew(); m_pRecset->PutCollect("Pihao",(long)(vCount.lVal + 1)); m_pRecset->PutCollect("RoadNum",vroadNum);转载 2014-11-06 16:37:28 · 3996 阅读 · 0 评论 -
[转]Sql Server查询性能优化之不可小觑的书签查找
小小程序猿SQL Server认知的成长1.没毕业或工作没多久,只知道有数据库、SQL这么个东东,浑然分不清SQL和Sql Server Oracle、MySql的关系,通常认为SQL就是SQL Server2.工作好几年了,也写过不少SQL,却浑然不知道索引为何物,只知道数据库有索引这么个东西,分不清聚集索引和非聚集索引,只知道查询慢了建个索引查询就快了,到头来索引也建了不少,查转载 2014-11-06 16:36:30 · 580 阅读 · 0 评论 -
Win7 在安装vs2010后向sql2008添加SQL_Server_Management详解
我们在安装好VS2010后,会发现VS2010自带了sql server 2008,但自带的版本缺少SQL_Server_Management,所以我们得自己安装这个,在网上找到了比较详细的步骤,如下:安装的先决条件:1.SQLManagementStudio_x86_CHS,这个可以自己到官网下载,如果需要的朋友可以给我留言2.系统安装有.Net FrameWork3.5转载 2014-11-21 17:02:31 · 713 阅读 · 0 评论 -
带优美外观的UserControl控件GroupBox
http://www.myfirm.cn/news/DotNetUserInterface/20080208095730391.html 写在前面:如果大家觉得.Net自带的GroupBox控件太差了,样子很不美观,而想用.Net强大的自定义功能来实现定制控件,如,在GroupBox的Title那里加个Button形状的东西,给GroupBox的四周的角都变成圆的,给Gro转载 2014-11-06 09:33:26 · 2332 阅读 · 0 评论 -
配置SQL Server的身份验证方式
在默认情况下,SQL Server 2005 Express是采用集成的Windows安全验证且禁用了sa登录名。为了工作组环境下不使用不方便的Windows集成安全验证,我们要启用SQL Server 2005 Express的混合安全验证,也就是说由SQLServer来验证用户而不是由Windows来验证用户。1、使用SQL Server Management Studio Express转载 2014-11-21 17:10:27 · 1465 阅读 · 1 评论 -
定义enum,我用struct { enum Type{};};
本文仅仅讨论如何在SolidMCP中定义更可读的enum,也算是攻克Clean Code和Readable Code的副作用。 -- Piaoger>> 几种定义enum的方法 其实这几种形式的主要的区别在于:是否为enum的定义放在一个被嵌套的enum Type内;enum Type是嵌套在struct还是在namespace之内。1.转载 2014-10-19 20:56:58 · 3753 阅读 · 0 评论 -
A set of ADO classes - version 2.20 编译手记
http://www.codeproject.com/KB/database/caaadoclass1.aspx在VS2008项目下编译会出现大量错误错误1:ado2.h(45) : fatal error C1083: 无法打开类型库文件:“msado15.dll”: No such file or directory解决方法://#import ren转载 2014-11-04 22:14:45 · 1020 阅读 · 0 评论 -
安装SQL2008 提示 创建usersettings/microsoft.sqlserver.configuration.landingpage.properties.se
安装SQL2008 提示 创建usersettings/microsoft.sqlserver.configuration.landingpage.properties.se环境WIN7 64位,安装SQL2008之前 已安装好了 VS2010 VS2012和SQL2005造成这个原因是由于先装了VS开发环境造成的,需要删除路径为 C:\Users\je\AppData\L转载 2014-11-25 19:35:29 · 4909 阅读 · 0 评论 -
如何调用[建立ADO连接字符串对话框]?
我们做数据库应用程序时,经常需要动态建立数据库连接,您知道怎么做吗?下面的代码会给你提供一些帮助,效果如图01.HRESULT hr;02.IDataSourceLocatorPtr dlPrompt=NULL;03._RecordsetPtr rs=NULL;04.try05.{06.// 初始化DataLink转载 2014-11-04 10:43:09 · 744 阅读 · 0 评论 -
MFC CListCtrl隐藏列 锁定列
隐藏列的时候 将宽度先设置0,然后处理消息继承CHeaderCtrl类,CMyHeaderCtrl,在ListCtrl创建的时候m_header.SubclassWindow(m_ctlList.GetHeaderCtrl()->GetSafeHwnd());响应HDN_BEGINTRACK这个消息 void CMyHeader::OnBeginTrack(NMHDR* pNM转载 2014-10-17 10:02:54 · 6090 阅读 · 0 评论 -
VS2010 Win7 64位 C++ MFC DataGrid绑定实例
纠结了几天的DataGrid绑定问题今天终于能跑出来了。我下载别人的代码,都可以跑,因为我是用VS2010 Win7 64位 的环境来学习 C++ MFC的,网上找的资料大都是VC6.0正面的,我下载的DataGrid例子都可以跑出来,一到我自己写就出错了。后来我按照如下方法就可以了。文章最后有实例下载1:新建一个MFC应用程序:DataGridDemo转载 2014-11-03 16:21:59 · 857 阅读 · 0 评论 -
将combobox设成只读的简单方法
((CEdit*)m_combobox.GetWindow(GW_CHILD))->SetReadOnly(); 解析: CComboBox派生于CWnd,于是可以利用GetWindow(GW_CHILD)获得该Combobox的第一个子窗口。 而CEdit也是派生于CWnd,将得到的字窗口指针强制转化成CEdit*以后,就可以调用其中的SetReadOnly()。 可见,Co转载 2014-10-17 09:50:44 · 9138 阅读 · 1 评论 -
Picture Control的使用
在对话上放了一个Picture控件,并载入一幅位图,将Picture的大小调得和位图的大小一样(在Windows2000下),但当我在Widnows98下再次运行这个对话框程序时,Picture控件变大了(整个对话框和其中的控件都变大了),但其中的位图没有随着变大,显得很难看,请问:1:怎么才能让位图随Picture尺寸的变化而变化?2:怎样避免在不同的Widnows平台上运行时,整个对话转载 2014-11-03 15:51:03 · 1026 阅读 · 0 评论 -
用windows api获取mac地址和硬盘id编号
1. 获取机器的MAC地址真的有很多种方法。可以通过windows api,可以通过wmi服务等。MSDN上面的例子是使用IP helper函数GetAdaptersInfo。其实还有一个api,是GetAdaptersAddresses。NetBios和DDK的方法不推荐使用,低于api层次的调用不保证微软会淘汰掉。建立一个支持MFC的控制台程序:stdafx.h#i转载 2014-08-07 17:02:35 · 6250 阅读 · 0 评论 -
API函数中的缩写
最近看源码,发现有好多复杂的缩写,看不懂,记不住,MSDN上没有,百度呢,要不是没有,要不就是形似。就猜,应该是有联系的吧。有一定的命名规则。就上网搜了一下程序员的编程规范,发现了一些类似的标志。 形成缩写的几种技术1) 去掉所有的不在词头的元音字母如screen写成scrn, primtive写成prmv2) 使用每个单词的头一个或几个字母如Channel转载 2014-07-23 10:04:57 · 2175 阅读 · 5 评论 -
CDialog::DoModal()的返回值 和 自定义返回值
一般来说模态对话框都是调用 CDialog::EndDialog(int);结束的模板生成的OnOK();和OnCancel();分别对应EndDialog(IDOK);和EndDialog(IDCANCEL);以下是一般对话框的结束码定义:#define IDOK 1 用户单击OK按钮中止对话框的返回值#define IDCANCEL 2 单击转载 2014-07-20 22:46:22 · 1042 阅读 · 0 评论 -
清空CEdit内容
void CNowBibleDlg::clearEditContent(){ m_Edit.SetSel(0,-1); m_Edit.Clear();}FROM: http://blog.sina.com.cn/s/blog_6123f9650100nler.html转载 2014-07-20 23:37:21 · 5963 阅读 · 0 评论 -
MFC编程中“占位符和动态创建”技巧的应用
在MFC编程中,“占位符和动态创建”技巧的应用是十分广泛的,虽然在有些编程书籍和文章中有所涉及,但缺乏系统的介绍和必要的总结,给应用带来不便。本文将对这方面的编程技巧进行介绍,并对该技巧的应用范围和注意事项都进行了详细的总结。一、引言 MFC提供了Windows环境下应用开发的一套标准类,多数情况下能满足应用开发的需要,但在某些具体情况下为了开发具有个性的应用,开发者需转载 2014-06-27 09:36:15 · 2105 阅读 · 0 评论 -
MFC 调试方法
MFC 调试方法Visual Studio 2013其他版本此主题尚未评级 - 评价此主题如果要调试 MFC 程序,这些调试技术可能会有用。本主题中AfxDebugBreakThe TRACE macroMemory leak detectio转载 2014-06-27 10:31:22 · 11585 阅读 · 0 评论 -
互斥类(Cmutex)——MFC
一、关于CMutex类 1、CMutex只是对 win32API 的互斥操作进行了封装 2、它的参数与 win32 API 中的 CreatMutex() 相对应 3、CMutex的构造函数调用 CreatMutex() 创建并检查 4、其Lock操作从基类继承,调用WaitForSingleObject()获得所有权,互斥类重载 Unlock 调用转载 2014-07-19 16:22:39 · 2346 阅读 · 0 评论 -
MFC中如何定义全局变量
MFC中如何定义全局变量 3种方法:1、在一个cpp文件中用extern声明,然后在其他文件中定义就可以用 2、全局类的对象来实现 3、在**APP类中做公有变量,其他类中用AfxGetApp()得到一个App对象指针就可引用 4、专门写一个全局类,里边的变量及方法全部声明为静态===========================================转载 2014-07-19 10:37:02 · 30861 阅读 · 0 评论 -
CTrueColorToolBar还真好用--真彩工具条类
这是一个真彩工具条类。使用步骤:(1) 在MainFrm.h中加入:#define TOOLBAR_DRAW_BUTTON_WIDTH 32 //定义真彩工具条宽度#include ".UITrueColorToolBar.h" //真彩工具条支持类(2)在MainFrm.h中将这一句注释掉://CToolBar m_wndToolBa转载 2014-07-16 19:03:46 · 3098 阅读 · 0 评论 -
LPCSTR与CString转换
1.LPCSTR是Win32和VC++所使用的一种字符串数据类型,L表示long,P表示指针,C表示常量,STR表示字符串。2.LPCSTR转化为CString:LPCSTR lpStr="test";CString str(lpStr);3.CString转化为LPCSTR:CString str("test"); LPCSTR lpStr转载 2014-07-17 11:25:21 · 2557 阅读 · 0 评论 -
窗口变化相关消息 OnSize、OnSizing和OnGetMinMaxInfo
最近用到窗口变化的一些东西,遇到几个相关的消息函数,简要分析,作为备忘。3个消息分别是:WM_SIZE、WM_SIZING、WM_GETMINMAXINFO;分别对应相应的处理函数:OnSize、OnSizing、OnGetMinMaxInfo。当窗口大小发生变化时,响应的顺序依次是:WM_GETMINMAXINFO-->WM_SIZING-->WM_SIZE。转载 2014-07-16 14:26:13 · 2096 阅读 · 0 评论