- 博客(58)
- 资源 (7)
- 收藏
- 关注

原创 帮你弄清引用和指针相同点与区别
下面简短的说了说指针的和引用的共同点和不同点,希望对需要的朋友会有一点点帮助。 引用和指针★ 相同点:1. 都是地址的概念; 指针指向一块内存,它的内容是所指内存的地址;引用是某块内存的别名。★ 区别:1. 指针是一个实体,而引用仅是个别名;2. 引用使用时无需解引用(*),指针需要解引用;3. 引用只能在定义时被初始化一次,之后不可变;指针可变; 引用“从一而终” ^
2009-03-12 12:05:00
784
转载 WM_COMMAND介绍和用法
WM_COMMAND产生的条件:点击菜单,点击加速键,点击子窗口按钮,点击工具栏按钮。这些时候都有command消息产生。WM_COMMAND消息中有两个参数,wparam、lparam,定义如下: wParam 高两个字节 通知码 wParam 低两字节 命令ID lParam 发送命令消息的子窗体句柄。 对于菜单和加速键来说,
2009-11-11 17:09:00
3841
转载 memset用法详解(转)
memset用法详解(转)memest原型 (please type "man memset" in your shell) void *memset(void *s, int c, size_t n); memset:作用是在一段内存块中填充某个给定的值,它对较大的结构体或数组进行清零操作的一种最快方法。常见的三种错误第一: 搞反了c 和 n的
2009-11-11 15:44:00
724
转载 DRAWITEMSTRUCT结构
DRAWITEMSTRUCT结构如下: typedef struct tagDRAWITEMSTRUCT { UINT CtlType; //控件类型; UINT CtlID; //组合框、列表框等控件的ID标识号; UINT itemID; //菜单项的ID标识号或列表框、组合框中某一项的索引值; UINT it
2009-11-10 16:41:00
859
原创 sky教了我一招,两个类之间相互访问,通过传递指针
之前一直都不知道类A里面的函数,如何更安全可靠地访问类B里面的函数和成员... 今天sky 告诉我了,,,做个记录吧。 //类ACB *m_pB; Afun(CB *pB){m_pB = pB } //执行2 Afun2(){m_pB-> //此时就可以调用你想要的方法了 执行3} //类CCB m_b;
2009-11-06 18:40:00
735
原创 SetWindowLong 简短说明
SetWindowLong 函数的说明 函数原型 LONG SetWindowLong(hwnd,nIndex,lNewLong) HWND hwnd; /* handle of window */ int nIndex; /* offset of value to set */ LONG lNewLong; /* new value */ 函数说明 SetWindowLong函数修改
2009-11-04 18:35:00
797
原创 CRect::DeflateRect() 压缩矩形..
网上摘下了的,,,一般都是用在OnDraw函数里面,做按钮什么之类的可以用的上 CRect 类中有这样的方法: void DeflateRect(int x,int y); void DeflateRect(SIZE size); void DeflateRect(LPCRECT lpRect); void DeflateRec
2009-11-04 16:54:00
7064
原创 CArray, CList, CMap
网上找的资料放在一起,本文主要介绍的是 MFC 的相关类: CArray, CList, CMap MFC提供的集合类来管理文档数据,MFC提供几种处理对象数组的类,如集合类,这些集合类表现为下列两种风格:1.模板为基的集合类2.非模板为基的集合类每个集合类又进一步按他的元素类型和他的形加以区分。集合的形指明在集合每如何组织数据,MFC提供3种通用集合类的形:Arra
2009-11-04 11:55:00
2328
转载 MFC 集合类
长久以来,在用到集合类(Collection)时,一般都是打开示例Collect,从中COPY出其中的定义,依葫芦画瓢地用,从来没有彻底的了解其原理。今天终于把相关的MSDN文档细读了一遍。 从功能上分,集合类又分为Array,List和Map。Array和List其实都属于同一类,都是一种顺序存储方式,而Array类似于数组,因此是基于数组下标建立索引,而List则没有顺序。
2009-11-04 11:53:00
887
转载 程序员每天该做的事
程序员每天该做的事 1、总结自己一天任务的完成情况 最好的方式是写工作日志,把自己今天完成了什么事情,遇见了什么问题都记录下来,日后翻看好处多多 2、考虑自己明天应该做的主要工作 把明天要做的事情列出来,并按照优先级排列,第二天应该把自己效率最高的时间分配给最重要的工作 3、考虑自己一天工作中失误的地方,并想出避免下一次再犯的方法 出错不要紧,最重要的是不要重复犯相同的错
2009-11-04 11:49:00
509
转载 钩子 函数 入门1
何为钩子函数,通俗的解答:任务分为操作系统任务和用户任务,当用户任务需要调用系统功能,如硬件上的键盘,鼠标锁定等,就需要底层应用,而钩子函数就是让用户任务可以嵌入到底层,调用操作系统功能,因此钩子函数就是可以嵌入到底层工作的用户程序 windows系统是建立在事件驱动的机制上的,说穿了就是整个系统都是通过消息的传递来实现的。而钩子是windows系统中非常重要的系统接
2009-11-04 10:45:00
529
原创 回调函数...解释
从网上摘下来的,三个人的回答.... 一: 调函数写出来不是自己的程序去调用的,反而是让其他的东西去调用,比如windows操作系统,比如其他的程序等等之类的。但是什么时候被调用却不知道了。回调函数一般是按照调用者的要求定义好参数和返回值的类型,你向调用者提供你的回调函数的入口地址,然后调用者有什么事件发生的时候就可以随时按照你提供的地址调用这个函数通知你,并按照预先规定好的
2009-11-03 18:51:00
671
16
原创 NMHDR和NM_TREEVIEW转换问题
CTreeCtrl树控件中有一个消息响映函数如下:void CCTreeCtrlDlg::OnSelchangedTree1(NMHDR* pNMHDR, LRESULT* pResult) { NM_TREEVIEW* pNMTreeView = (NM_TREEVIEW*)pNMHDR; // TODO: Add your control notification handler code
2009-11-02 17:41:00
3685
1
原创 CFileFind类
CFileFind类的使用总结1、CFileFind类的声明文件保存在afx.h头文件中。2、该类的实现的功能:执行本地文件的查找(查找某个具体的文件,查找某类文件x*.x*,查找所有文件*.*)3、CFileFind类是CGopherFileFind和CFtpFileFind类的基类。4、CFileFind类的构造函数::CFileFind()和关闭函数::Close()我会成对使用。5、CFi
2009-10-30 15:17:00
468
转载 NMHDR
NMHDR = Notify Message Handler NMHDR 结构包含下列成员: typedef struct tagNMHDR { HWND hwndFrom; // handle of control sending message UINT idFrom;// identifier
2009-10-30 14:02:00
924
转载 全面解读WM_NOTIFY NMHDR结构
VC中的消息的分类有3种:窗口消息、命令消息和控件通知消息,我们这里要谈的是最后一种:控件通知消息。 控件通知消息,是指这样一种消息,一个窗口内的子控件发生了一些事情,需要通知父窗口。通知消息只适用于标准的窗口控件如按钮、列表框、组合框、编辑框,以及Windows公共控件如树状视图、列表视图等。例如,单击或双击一个控件、在控件中选择部分文本、操作控件的滚动条都会产生通知消息。 她类似于命令消
2009-10-30 13:57:00
1109
3
原创 更换背景颜色 OnEraseBkgnd,PatBlt 介绍
更换背景颜色,是用brush BOOL CChatView::OnEraseBkgnd(CDC* pDC){ // TODO: Add your message handler code here and/or call default CBrush brush(RGB(255,255,255)); CBrush *pOldBrush = pDC->SelectObject(&brush
2009-10-28 11:21:00
4399
原创 NM _ 开头的消息,WM _ 开头的消息有什么区别
WM_x是标准的消息定义,或者自定义消息。NM_x是通知消息,一般用来子控件通知父窗口的消息。这个是为了方便MFC程序的开发。比如一个对话框窗口,内有一个列表框控件。如果在列表框里面点击鼠标,那么系统首先把消息送给线程,线程预处理后再发给此列表框一个WM_LBUTTONDOWN消息,此列表框收到后,可能做处理可能不做处理,然后再生成一个 NM_x通知消息 发送给其父窗口。这样做的目的,是方便用
2009-10-28 10:13:00
1603
转载 添加状态栏
方法一:1.添加成员变量CStatusBarCtrl m_StatusBar;2.在OnInitDialog()中加入: m_StatusBar.Create(WS_CHILD|WS_VISIBLE|SBT_OWNERDRAW, CRect(0,0,0,0), this, 0); int strPartDim[3]= {100,
2009-10-27 11:55:00
528
转载 学习ListCtrl 的用法
ListCtrl在工作中,常常用到,也常常看到大家发帖问怎么用这个控件, 故总结了一下自己的使用经验,以供参考使用。 先注明一下,这里,我们用m_listctrl来表示一个CListCtrl的类对象,然后这里我们的ListCtrl都是report形式,至于其他的如什么大图标,小图标的暂时不讲,毕竟report是大众话的使用。其次,我们这里用条款一,条款二来描述第一点,第二点,这个
2009-10-27 11:43:00
552
转载 动态创建Menu 菜单
动 态 创 建 级 联 菜 单 菜单是Windows的标准界面元素,几乎所有的Windows应用程序中都有它的身影。MFC中的类CMenu对它进行了封装,使其使用起来更加简便。要在程序中使用菜单也很简单,一般分以下几步:第一步先用VC的菜单编辑器创建一个菜单资源,给它赋予我们自己定义的ID,第二步在程序中构造一个CMenu类的对象,用CMenu::Loa
2009-10-26 14:39:00
1677
原创 SetTimer定时器1
UINT SetTimer(UNIT nIDEvent, UINT nElapse, void (CALLBACK EXPORT* lpfnTimer)(HWND,UINT ,UINT,DWORD)); 第一个参数是标识定时器本身的ID第二个参数是设定的时间第三个参数是回调函数, 如果第三个参数设置为NULL 则定时器会放入消息队列中会被CWnd 对象调用。(同过WM TI
2009-10-22 10:14:00
478
原创 移动光标位置,响应退格和回车按钮
//移动插入符,鼠标按下void CView::OnLButtonDown(UINT nFlags,CPoint point){ SetCaretPos(point);//设置位置 m_strLine.empty(); m_ptOrigin =point;} //响应OnChar消息,退格和回车和其它按键void CView::OnChar(UINT nChar,...){ CC
2009-10-21 13:51:00
813
原创 输入插入光标符
int CTextView::OnCreate(LPCREATESTRUCT lpCreateStruct){ //add you cold,设置光标大小 CClientDC dc(this); TEXTMETRIC tm; dc.GetTextMetrics(&tm); //获取当前dc里面字体的信息 CreateSolidCaret(tm.tmAveCharWidth/8,tm.tmHeig
2009-10-21 13:47:00
703
原创 按下鼠标绘制连续的线
//响应LButtonDown函数m_bDraw = TRUE; //响应LButtonUp函数m_bDraw = FALSE; //响应MOUSEMOVE 函数,添加画笔,绘制图形,还原画笔 CClientDC dc(this);CPen pen(PS_SOLID,1,RGB(255,0,0));CPen *pOldPen = dc.Selec
2009-10-20 19:05:00
526
原创 static 类型变量和函数
static变量必须在类外面初始化static函数内部只可以调用static成员(可以从内存模型理解,static成员不需要构造对象就可以存在,而非static成员需要构造对象才行,两者存在的先后顺不一样,故无法调用非static成员)static函数可直接被类调用 class point{public: void add() { init() }
2009-10-20 18:35:00
563
原创 CDC CClientDC CPen CBrush使用
//创建一个DC画一条线,然后释放DCCDC *pDC = GetDC();pDC->MoveTo(m_ptOrigin);pDC->LineTo(point);ReleaseDC(pDC); //创建一个ClientDC画一条线,不用释放DCCClientDC dc(this);dc.MoveTo(m_ptOrigin);dc.LineTo(point); //创建一个C
2009-10-20 10:22:00
2754
1
原创 获取子窗口的位置 GetWindowRect
GetWindowRect() 得到的是在屏幕坐标系下的RECT(即以屏幕左上角为原点)GetClientRect() 得到的是在客户区坐标系下的RECT(即以所在窗口左上角为原点,去掉了标题栏计算,仅仅是个大小,返回值的左上角永远为0,0) ScreenToClient() 就是把屏幕坐标系下的RECT坐标转换为客户区坐标系下的RECT坐标。由于知道ID,如何通
2009-10-20 10:13:00
3607
转载 MFC 树控件,也挺麻烦的
搞个树控件搞了两天...唉我晕。无奈太菜了,保存下了做个备忘,以后多看看 树型视的三个结构TVINSERTSTRUCT、TVITEM、NMTREEVIEW TVINSERTSTRUCT 包含添加新项到树形视控件所使用的信息。这个结构被TVM_INSERTITEM消息使用。这个结构与TV_INSERTSTRUCT结构是一样的,但它已经按当前的命名习惯重命名了。typed
2009-10-14 18:16:00
3972
原创 MFC 滚动条
今天折腾了一天就学了个滚动条,没有想到挺麻烦的........虽然老师说以后用控件,现在做真够费劲的! 为窗口添加滚动条 为窗口添加滚动条非常的简单,只需在创建窗口时指定窗口的样式中加上WS_VSCROLL或WS_HSCROLL或是两者皆有即可。 设置选项 通过SetScrollInfo函数来设置滚动条 使滚动条大小适应窗口变化变化在WM_ON
2009-10-14 18:11:00
9146
原创 VC入门学习方法帖子(加油!)
学编程急不得,上来就学VC肯定碰一头灰,说VC难就难在这点上了。如果硬上,意志坚强的话也许能挺过来,但也是会缺乏后劲,不得不回过头来补习基础知识。意志不坚强的话,很有可能就此放弃了,并留下一个VC难得不得了的印象。其实,只要踏踏实实一步一步来,VC也就是很简单点事。 建议找本初高中信息学奥赛的书。这些书里讲解了基本的算法,写的却比较通俗,没什么高深的数学知识,容易理解。对于志向是应用软
2009-09-21 23:43:00
659
原创 《深入浅出MFC》学习前提2
C++/MFC程序设计必须跨越四大技术障碍:1.面向对象观念和C++语言2.Windows程序机制(程序进入点,消息传递,窗口函数,callback...)3.MFC 类本身。4.VC++ 集成开发环境。C++ 语言的继承特性对于我们使用MFC尤为重要,因为使用MFC就是要继承各个类并为己用(及虚函数多态)必须多体会。Win32 :基于消息,事件驱动,多任务,多线程MFC:六大技术之
2009-09-19 17:39:00
521
原创 《深入浅出MFC》序言1
Version control 是用来记录程序开发过程中的各个版本..遗憾的是人的大脑没有这种能力 学习过程的傍徨犹豫,挫折困顿,在日积月累的渐悟或刹那之间的顿悟之后,仿佛成了遥远模糊的回忆,曾经大惑不解的地方,学成之后看起来则那么里说当然. 的确谁会在一再跌倒的地方做上记号,永志不忘?谁会把推敲再三的心得殷实详尽地记录下来。。。。我们不应该忘记初学MFC的痛苦. 下
2009-09-19 12:55:00
690
原创 动态库调用方式 动态加载 静态加载
问题:我有个a.dll库,我想在我的mfc对话框项目中调用a.dll中的message函数,怎样静态加载dll或者动态加载dll 并调用? 回答:静态加载:如果你有a.dll和a.lib,两个文件都有的话可以用静态加载的方式: message函数的声明你应该知道吧,把它的声明和下面的语句写到一个头文件中 #pragma comment(lib, "a.lib") 然
2009-08-18 14:37:00
3022
原创 串口和并口
现在有串行的硬盘SATA接口,是一样的道理,它之所以可以150MB/s的速度传输,得益于其串行的方式。并行的几路信号在比较高的频率下不能很好的解决他们之间的干扰,所以现在ATA 13MBb/s的并行硬盘已走到极限,取而代之的是STAT。另80 channel 的ATA100的并口硬盘数据线,其中有40根是地线,是用来防止并行信号之间的干扰的。 STAT那个速度标称的bit/s,实际就是15
2009-08-18 10:22:00
550
原创 sockaddr与sockaddr_in结构体
sockaddr与sockaddr_in结构体简介 收藏 struct sockaddr { unsigned short sa_family; /* address family, AF_xxx */ char sa_data[14]; /* 14 bytes of protocol address */};sa_fam
2009-08-07 18:20:00
476
原创 经典试题C/C++中联合体(union)的使用
试题一:编写一段程序判断系统中的CPU是Little endian还是Big endian模式?分析:作为一个计算机相关专业的人,我们应该在计算机组成中都学习过什么叫Little endian和Big endian。Little endian和Big endian是CPU存放数据的两种不同顺序。对于整型、长整型等数据类型,Big endian认为第一个字节是最高位字节(按照从低地址到高地址的顺序存
2009-08-07 18:19:00
757
1
转载 socket编程(udp tcp)代码备忘 C++/C
socket编程(udp tcp)代码备忘 C++/Csockets(套接字)编程有三种,流式套接字(SOCK_STREAM),数据报套接字(SOCK_DGRAM),原始套接字(SOCK_RAW); 基于TCP的socket编程是采用的流式套接字(SOCK_STREAM)。基于UDP采用的数据报套接字(SOCK_DGRAM).1.TCP流式套接字的编程步骤在使用之前须链接库函数:工程->设置-
2009-08-07 16:49:00
1484
原创 同步通信 异步通信 概念
在串行通信中,由于是一位一位地进行数据传送。为了把每个字节区别开来,需要收发双方在传送数据的串行信息流中,加入一些标记信号位。在数据中根据所添加的标记信号位的不同方式,分成同步通信和异步通信两种。 1.“异步通信”是一种很常用的通信方式(效率较低) 异步通信在发送字符时,发送端可以在任意时刻开始发送字符,因此必须在每一个字符的开始和结束的地方加上标志,即加上开始位和停止位,以便使接收端
2009-07-30 16:29:00
2572
原创 socket 工作原理与电话工作原理比较
什么是 socket socket 是进行程序间通讯(IPC)的 BSD 方法。这意味着 socket 用来让一个进程和其他的进程互通信息,就象我们用电话来和其他的人交流一样。 用电话来比喻是很恰当的,我们在后面将一直用电话这个概念来描叙 socket 。 装上你的新电话(怎样侦听?) 一个人要能够收到别人打给他的电话,首先他要装上一门电话。同样,你必须先建立 socket 以侦听
2009-07-30 14:56:00
1169
贪食蛇 C++ 源码
2009-05-20
《编程高手箴言》 梁肇新 箴言
2009-05-20
《C语言描述——数据结构算法与应用》绝对高清版.rar
2009-05-19
ce3100-datasheet.rar
2009-03-12
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人