鹿我所录的博客

记录我在学习C#中的点点滴滴,记录下以备后来人借鉴。

 

2015年8月2日

vc++ 如何添加右键弹出菜单

摘要: 一、创建新工程 二、编辑菜单资源 1、添加菜单 按“Ctrl+R”,双击“Menu”图标 2、于菜单编辑器内编辑菜单 四、添加代码(红色部分) void CCMenuView::OnUpdateShow(CCmdUI* pCmdUI) { // TODO: Add your command update UI handler code here MessageBox(... 阅读全文

posted @ 2015-08-02 13:50 鹿我所录 阅读(4588) 评论(0) 推荐(0) 编辑

2015年7月31日

VC++ MFC 按钮的全部样式Style

摘要: Button StylesBS_3STATE与复选框一样本样式按钮可被单击变暗。变暗状态通常用于指示本样式的按键正处于禁用状态。BS_AUTO3STATE 与三状态的复选框一样当用户选中它本按钮样式状态外观会改变。BS_AUTOCHECKBOX 与复选框一样,除了在用户点控件后会出现一个选中标志,当... 阅读全文

posted @ 2015-07-31 07:57 鹿我所录 阅读(8822) 评论(0) 推荐(0) 编辑

2015年7月23日

VC++ MFC如何生成一个可串行化的类

摘要: 一、MFC允许对象在程序运行的整个过程中持久化的串行化机制(1)串行化是指向持久化存储媒介(如一个磁盘文件)读或写对象的过程。(2)串行化用于在程序运行过程时或之后修复结构化数据(如C++类或结构)的状态。(3)MFC支持CObject类中的串行化,所以,所有继承于CObject的类可以利用CObject的串行化协议。(4)串行化的基本思想: a、对象必须能将其当前状态写入到持久... 阅读全文

posted @ 2015-07-23 11:07 鹿我所录 阅读(1353) 评论(0) 推荐(0) 编辑

2015年7月6日

VC++ 获取系统时间、程序运行时间(精确到秒,毫秒)的五种方法

摘要: 1.使用CTime类(获取系统当前时间,精确到秒) CString str; //获取系统时间 CTime tm; tm=CTime::GetCurrentTime();//获取系统日期 str=tm.Format("现在时间是%Y年%m月%d日 %X"); MessageBox(str,NULL,MB_OK);a,从CTimet中提取年月日时分秒 CTime t = CTime::GetCu... 阅读全文

posted @ 2015-07-06 17:48 鹿我所录 阅读(29983) 评论(1) 推荐(0) 编辑

2015年7月4日

C++ AfxBeginThread和AfxEndThread 使用方法

摘要: 启动线程: CWinThread* AfxBeginThread( 线程函数,this ); 线程的退出: 在刚刚使用的时候,退出线程的方法有问题,导致退出的时候异常。 下面说线程退出的方法: 1. 线程函数返回 线程都在死循环中,当满足一定条件时,return,也会将线程结束。 2. AfxEndThread 这个函数只能用在线程函数中,当满足一定条件是,调用。 举一个例子: 可以创建一个信号量... 阅读全文

posted @ 2015-07-04 15:49 鹿我所录 阅读(14742) 评论(0) 推荐(0) 编辑

2015年7月3日

C++ 与 CDC相关的知识,点滴总结

摘要: hdc = GetDC (hwnd) ;GetDc函数:用于获得hWnd参数所指定窗口的客户区域的一个设备环境。 所获得的设备环境可以是通用、类或者私有类型,具体由指定窗口的类风格决定。对于通用设备环境,GetDc函数每次获取一个设备环境时都会用默认属性对它进行初始化。该函数获得的类和私有设备环境... 阅读全文

posted @ 2015-07-03 07:51 鹿我所录 阅读(794) 评论(0) 推荐(0) 编辑

2015年6月28日

C++ 设置透明背景图片

摘要: 背景: 有两个图片,一个是目标背景图片, 一个是带有自身背景色彩的彩色图片 先将这彩色图片绘制到目标背景图片中, 这一步通过BITBLT就可实现。 但实现后的效果是: 目标图片上,绘制上去的彩色图片带有其本身的背景。 问题就来了, 我们想将彩色图片本身的背景去掉,应该如何解决?解决方法: 使用API... 阅读全文

posted @ 2015-06-28 14:48 鹿我所录 阅读(6630) 评论(0) 推荐(0) 编辑

C++ CBitmap,HBitmap,Bitmap区别及联系

摘要: 加载一位图,可以使用LoadImage: HANDLE LoadImage(HINSTANCE hinst,LPCTSTR lpszName,UINT uType,int cxDesired,int CyDesired,UINT fuLoad); LoadImage可以用来加载位图,图标和光标 加载时可以规定加载图的映射到内存的大小: cxDesired:指定图标或光标的宽度,以像素为单位... 阅读全文

posted @ 2015-06-28 14:20 鹿我所录 阅读(8393) 评论(0) 推荐(0) 编辑

2015年6月27日

C++ 关于 CMFCPropertyGridCtrl 的使用方法 之二 (原创)

摘要: 接上一节所讲,这一节咱们重点讲一下CMFCPropertyGridCtrl 所支持的数据表格的建立过程 在上一节中,咱们已经了解到了 CMFCPropertyGridCtrl 是要用到实例函数:AddProperty()。现在 咱们来具体分析一下过程 要想建立一个属性一般来讲我们先建立一个项目:如上一节中提到的 “概述”项目属性。这个属于的一个大的特点,就是这个属性并没有一个对应的值,也就是说 ... 阅读全文

posted @ 2015-06-27 08:58 鹿我所录 阅读(4419) 评论(1) 推荐(0) 编辑

2015年6月26日

C++ 关于MFC多线程编程中的一些注意事项 及自定义消息的处理

摘要: 在多线程编程中,最简单的方法,无非就是利用 AfxBeginThread 来创建一个工作线程,看一下这个函数的说明:CWinThread* AFXAPI AfxBeginThread(AFX_THREADPROC pfnThreadProc, LPVOID pParam,int nPriority ... 阅读全文

posted @ 2015-06-26 16:19 鹿我所录 阅读(1251) 评论(0) 推荐(0) 编辑

2015年6月25日

C++ 关于 CMFCPropertyGridCtrl 的使用方法 之一 (原创)

摘要: 题外话:最近在写一个重要的程序,想做的更灵活一些,于是想采用属于对话框的形式,如图所示但查了好几本大部门的C++及MFC的书,还有很多的网上的资料,这方面的介绍实在是少之又少。不过,好在VS2013是半开源的。哈哈,里抽的代码看不到,但是函数声明还是都能看到的。这为我解决问题提供了一条好的方法 ,另... 阅读全文

posted @ 2015-06-25 14:35 鹿我所录 阅读(8755) 评论(0) 推荐(0) 编辑

2015年6月24日

C++ 原来 const 中所使用的函数 必须 全都具有 const 才行

摘要: 今天在写程序的时候,出现了一个错误 “对象包含与成员函数不兼容的类型限定符”,从网上查了一下,原来原因是这样子的void showPair();改成 void showPair()const; 在具有 如上图所示的函数中,如果调用了其它函数,那么其它函数也必须有 const 属性,否则就会出现 类型限定符不兼容的错误! 阅读全文

posted @ 2015-06-24 18:08 鹿我所录 阅读(620) 评论(1) 推荐(0) 编辑

2015年6月18日

C++ MFC常用函数(转)

摘要: WinExec() ExitWindowsEx() GlobalMemoryStatus() GetSystemInfo() GetSystemDirectory() GetWindowsDirectory() GetTaskmanWindow() //user32.dll中 获取任务栏窗口句柄 OpenProcessToken()打开一个进程的访问令牌 GetCurrentProcess()获取... 阅读全文

posted @ 2015-06-18 19:54 鹿我所录 阅读(1658) 评论(0) 推荐(0) 编辑

2015年6月17日

C++ VC实现对话框窗口任意分割

摘要: 最近写MFC的程序,想在对话框里实现窗口的任意分割。现在网络资料一大抄,找个东西实在麻烦。总算这个很简单,很快就搞定了,写下来做个笔记。 个人认为简单问题最好就是直接贴源代码,一看就明白,说来说去反而弄不清楚,那我就少废话了,自己看吧,注释很清楚。 先来张图片 1. 新建一个MFC对话框程序MySplitterDlg。 再插入两个Dialog资源 ,这里一定要选择IDD_FORMVI... 阅读全文

posted @ 2015-06-17 18:22 鹿我所录 阅读(5156) 评论(1) 推荐(0) 编辑

C++ 关于滚动条的滚动问题

摘要: SCROLLINFO scrollinfo; GetScrollInfo(SB_HORZ, &scrollinfo, SIF_ALL); switch (nSBCode) { case SB_LINERIGHT: if (scrollinfo.nPos < scrollinfo.nMax){ scrollinfo.nPos += 10; SetScrollInfo(SB_H... 阅读全文

posted @ 2015-06-17 09:26 鹿我所录 阅读(3034) 评论(1) 推荐(0) 编辑

2015年6月16日

C++ 自定义控件的移植(将在其它程序中设计的自定义控件,移植到现在的系统中)

摘要: 方法很简单就是将需要的代码 复制到 新系统中就可以了,方法就是 把相关文件添加到现有的系统中,并特别注意以下问题 1\如果原设计中用到了菜单或是其它资源,相应的资源要在新的菜单中,手动添加. 目前没有发现其它好办法 2\如果有些资源名称重复的话,还需要少量的修改 源代码 3\对于无法识别到新的资源文件,可以在 源文件中添加 #include "resource.h" 4\对于新系统中,需要... 阅读全文

posted @ 2015-06-16 17:59 鹿我所录 阅读(686) 评论(0) 推荐(0) 编辑

C++ 动态创建按钮及 按钮的消息响应

摘要: 动态创建的按钮 都会在消息 OnCommand 中得到处理,无论是什么消息,都会处理的 1\创建按钮 CButton* btn = new CButton(); btn->Create(_T("方法"), WS_CHILD | WS_VISIBLE, CRect(0,0,50,50), this, 2); 注意创建的最后一个参数 这个数据代表的就是创建的那个控件的ID值,相当于 这个数... 阅读全文

posted @ 2015-06-16 16:31 鹿我所录 阅读(4212) 评论(0) 推荐(0) 编辑

C++ Custom Control控件 向父窗体发送对应的消息

摘要: 向父窗体发送消息 ,这里只讲发送 WM_NOTIFY 消息, 其它消息是相同的 在 控件中的某个函数中 设置发送消息的程序 首先定义一个WM_NOTIFY消息的专用结构. NMHDR nm; nm.code = 123456; // 这里是消息的区别代码 nm.hwndFrom = m_hWnd;//这是控件的HWND句柄 nm.idFrom = GetDlgCtrlID();//这是得到... 阅读全文

posted @ 2015-06-16 14:55 鹿我所录 阅读(831) 评论(0) 推荐(0) 编辑

2015年6月15日

C++ MFC 改变控件大小和位置

摘要: 用CWnd类的函数MoveWindow()或SetWindowPos()可以改变控件的大小和位置。void MoveWindow(int x,int y,int nWidth,int nHeight);void MoveWindow(LPCRECT lpRect);第一种用法需给出控件新的坐标和宽度... 阅读全文

posted @ 2015-06-15 15:27 鹿我所录 阅读(5318) 评论(0) 推荐(0) 编辑

2015年6月14日

C++ 使用VS2010创建MFC ActiveX工程项目

摘要: 1.ActiveX的基本概念 ActiveX控件可以看作是一个极小的服务器应用程序,它不能独立运行,必须嵌入到某个容器程序中,与该容器一起运行。这个容器包括WEB网页,应用程序窗体等。。。 ActiveX控件的后缀名是OCX或者DLL。一般是以OCX和动态库共存的形式打包成cab或者exe的文件放在服务器上,客户端下载后运行安装cab或exe解压成OCX和动态库... 阅读全文

posted @ 2015-06-14 18:18 鹿我所录 阅读(5419) 评论(0) 推荐(2) 编辑

VC++ 自定义控件的建立及使用方法

摘要: 一、VC++定义自定义控件与delphi,VB有些差异。 delphi,vb在 file-new-other中建立。vc++在工具栏中就有自定义控件,但必须加入控件类型。 许多书籍都在类向导中建立。我这里介绍的是手动建立,其结果是一样的。二.建立过自定义控件类型: 2.1、把工具栏上的自定义控件放入对话框中 2.2、建立Mycontrol.h, Mycontrol.cpp文件 2.3、... 阅读全文

posted @ 2015-06-14 17:41 鹿我所录 阅读(2511) 评论(0) 推荐(0) 编辑

2015年6月13日

C++ CTreeview的checkbox使用方法

摘要: 1. 消息事件 (1)鼠标点击当前ITEM的CHECKBOX:引发NM_CLICK事件并传递TVHT_ONITEMSTATEICON。 (2)鼠标点击当前ITEM的TEXT:引发NM_CLICK事件。 (3)鼠标点击新ITEM的CHECKBOX:引发TVN_SELCHANGED事件、NM_CLICK事件并传递TVHT_ONITEMSTATEICON。 (4)鼠标点击新ITEM的TE... 阅读全文

posted @ 2015-06-13 15:56 鹿我所录 阅读(1414) 评论(0) 推荐(0) 编辑

2015年6月12日

C++ vc中怎么使用SendMessage自定义消息函数

摘要: vc中怎么使用SendMessage自定义消息函数:SendMessage的基本结构如下:SendMessage( HWND hWnd, //消息传递的目标窗口或线程的句柄。 UINT Msg,//消息类别(这里可以是一些系统消息,也可以是自己定义,下文具体介绍,) WPARAM wParam, /... 阅读全文

posted @ 2015-06-12 08:15 鹿我所录 阅读(6852) 评论(0) 推荐(0) 编辑

2015年6月10日

C++ 将数据转为字符串的几种方法

摘要: 收集一下: 1\将int 转为 LPCTSTR 其实LPCTSTR可以直接使用CString直接代替,无需类型强制转换 CString str; int number=15; //str="15" str.Format(_T("%d"),number); //str=" 15"(前面有两个空格;4表示将占用4位,如果数字超过4位将输出所有数字,不会截断) str.Form... 阅读全文

posted @ 2015-06-10 17:38 鹿我所录 阅读(3785) 评论(0) 推荐(0) 编辑

C++ 网络编程 总结

摘要: 第一次用C++写程序,对C++ 只是菜鸟级别的,倒是对C#很熟悉。两者有很大的相似性。但也有不同。首先写了一个网络通讯用的小的MFC程序。发现(1)MFC写界面真的好麻烦呀。 用C#写的tab 分分钟搞定的事,用C++害得我写了两天.关键是不熟练. 还有list control 控件的图标显示. 真... 阅读全文

posted @ 2015-06-10 15:51 鹿我所录 阅读(8625) 评论(0) 推荐(0) 编辑

2015年6月9日

C++ 关于MFC List Control 控件的使用事项 原创

摘要: 1\在开发项目时,使用到了 listcontrol 控件,就一些问题,做一下备注,以备以后使用 (1) 给list项目 删除所有的项目 DeleteAllItems(); (2) 给list项目 添加一个列 .InsertColumn(0, _T("编号")); (3)给list a项目 设置列的宽度 .SetColumnWidth(0, 50); (4) 在添加项目之前 可以使用 .Se... 阅读全文

posted @ 2015-06-09 13:01 鹿我所录 阅读(1865) 评论(0) 推荐(0) 编辑

2015年6月7日

C++ AfxBeginThread的介绍/基本用法

摘要: AfxBeginThread 用户界面线程和工作者线程都是由AfxBeginThread创建的。现在,考察该函数:MFC提供了两个重载版的AfxBeginThread,一个用于用户界面线程,另一个用于工作者线程,分别有如下的原型和过程:用户界面线程的AfxBeginThread用户界面线程的Afx... 阅读全文

posted @ 2015-06-07 07:44 鹿我所录 阅读(21246) 评论(0) 推荐(0) 编辑

2015年6月6日

C++ 简单实现MFC ListControl 点击列头排序

摘要: 说明:SetItemData可以为每一行绑定一个DWORD类型的变量。用GetItemData可以获得这个变量。举个例子,假设CListCtrl中你需要显示某个数据表中的记录,该表有个流水号主键ID,一般这个ID值本身没有什么意义,用户也不需要看,因此在CListCtrl的可见列中,你不需要显示。但... 阅读全文

posted @ 2015-06-06 17:06 鹿我所录 阅读(6690) 评论(0) 推荐(0) 编辑

VC++ 中ListCtrl经验总结

摘要: 先注明一下,这里,我们用m_listctrl来表示一个CListCtrl的类对象,然后这里我们的ListCtrl都是report形式,至于其他的如什么大图标,小图标的暂时不讲,毕竟report是大众话的使用。其次,我们这里用条款一,条款二来描述第一点,第二点,这个是参照《Effective C++》的叫法,俺觉得这么叫比较COOL :)条款一:设置ListCtrl的风格在CSDN上常常看到有人... 阅读全文

posted @ 2015-06-06 16:39 鹿我所录 阅读(7810) 评论(0) 推荐(0) 编辑

Vc++ 控件用法总结之List Control

摘要: 1.新建对话框MFC,在对话框上放一个ListCtrl ID:IDC_PATH View:Report 2.为ListCtrl添加变量 右击->添加变量m_wndPath 3.找到OnInitDialog()函数添加如下代码: // TODO: 在此添加额外的初始化代码 m_wndPath.DeleteAllItems();//清空 m_wndPath.InsertColumn(0,_T("... 阅读全文

posted @ 2015-06-06 16:34 鹿我所录 阅读(399) 评论(0) 推荐(0) 编辑

C++ CSTRINGLIST用法

摘要: CStringList类成员 构造 CStringList构造一个空的CString对象列表首/尾访问 GetHead返回此列表(不能是空的)中头部的元素GetTail返回此列表(不能是空的)中尾部的元素操作 RemoveHead从列表的头部删除元素RemoveTail从列表的尾部删除元素AddHead在列表的头部添加一个元素(或者是另一个列表中的所有元素),即产... 阅读全文

posted @ 2015-06-06 15:56 鹿我所录 阅读(2207) 评论(0) 推荐(0) 编辑

C++ MFC Tab Control控件的详细使用

摘要: 1. 新建一个MFC工程, 取名MyTab, 选择Dialog based, 然后Finish.2. 删除对话框上默认添加的三个控件. 添加Tab Control控件并在Property属性中设置ID为IDC_TABTEST 在More Styles里勾上Bottom. 调速尺寸使其布满整个对话框, 我这边Tab Control的尺寸最后为164X203. 在ClassWizard为其添加变量,... 阅读全文

posted @ 2015-06-06 14:53 鹿我所录 阅读(10007) 评论(0) 推荐(1) 编辑

C:\\MFC控件大小随窗体大小而改变

摘要: 一。大小和位置都改变 1.首先为窗体类添加CRect m_rect,该成员变量用来记录窗体的当前大小。 2.在类向导里面(Ctrl+W),为窗体添加消息WM_SIZE的响应函数OnSize(); 注意if(nType==1) return;这一句必须添加,否则最小化恢复的时候会出错。 [cpp]view plaincopy voidCPaperManagementD... 阅读全文

posted @ 2015-06-06 14:13 鹿我所录 阅读(1748) 评论(0) 推荐(0) 编辑

2015年6月5日

C++ : 窗口变化相关消息 OnSize、OnSizing和OnGetMinMaxInfo,onsizeonsizing

摘要: 3个消息分别是:WM_SIZE、WM_SIZING、WM_GETMINMAXINFO;分别对应相应的处理函数:OnSize、OnSizing、OnGetMinMaxInfo。 当窗口大小发生变化时,响应的顺序依次是:WM_GETMINMAXINFO-->WM_SIZING-->WM_SIZE。 OnGetMinMaxInfo 这个函数在窗口初始化的时候会被调用一次,当窗口大小发生改变的... 阅读全文

posted @ 2015-06-05 13:50 鹿我所录 阅读(3151) 评论(0) 推荐(0) 编辑

2014年5月8日

C#自定义控件:如果定义控件的事件

摘要: 我做了一个控件:在控件上面添加了一个 richTextBox1 系统控件我想要的效果时,如果点击我的控件,就执行 用户自定义的控件的 onClick 事件而控件的工作过程时,如果点击我的控件,实际上是点击了我的控件中的 richTextBox1控件,所以需要将 richTextBox1控件的OnCl... 阅读全文

posted @ 2014-05-08 21:50 鹿我所录 阅读(278) 评论(0) 推荐(0) 编辑

2014年4月17日

C#图像处理:Stream 与 byte[] 相互转换,byte[]与string,Stream 与 File 相互转换等

摘要: C# Stream 和 byte[] 之间的转换一. 二进制转换成图片MemoryStream ms = new MemoryStream(bytes);ms.Position = 0;Image img = Image.FromStream(ms);ms.Close();this.pictureB... 阅读全文

posted @ 2014-04-17 06:27 鹿我所录 阅读(2192) 评论(0) 推荐(0) 编辑

2014年3月30日

C# 图像处理: 获取当前活动窗口句柄,获取窗口大小及位置

摘要: 需调用API函数需在开头引入命名空间 using System.Runtime.InteropServices;获取当前窗口句柄:GetForegroundWindow()[DllImport("user32.dll", CharSet = CharSet.Auto, ExactSpelling = true)]public static extern IntPtr GetForegroundWindow();返回值类型是IntPtr,即为当前获得焦点窗口的句柄使用方法 : IntPtr myPtr=GetForegroundWindow();获取到该窗口句柄后,可以对该窗 阅读全文

posted @ 2014-03-30 19:43 鹿我所录 阅读(11152) 评论(0) 推荐(0) 编辑

2014年3月28日

C#图像处理:截图程序(包含鼠标)

摘要: 截图后在picbox中显示,用定时器定时每毫秒截图一次,在picbox上显示就有动画效果.代码: [DllImport("user32.dll")] static extern bool GetCursorInfo(out CURSORINFO pci); private const Int32 CURSOR_SHOWING = 0x00000001; [StructLayout(LayoutKind.Sequential)] struct POINT { public Int32 x;... 阅读全文

posted @ 2014-03-28 13:54 鹿我所录 阅读(5474) 评论(1) 推荐(0) 编辑

C# 图像处理:实现鼠标选择矩形截图

摘要: 使用方法如下: private void button1_Click(object sender, EventArgs e) { s.GerScreenFormRectangle(); } private Zgke.CopyScreen s; private void Form1_Load(object sender, EventArgs e) { s = new Zgke.CopyScreen(); s.GetScreenImage+=ne... 阅读全文

posted @ 2014-03-28 13:41 鹿我所录 阅读(8706) 评论(0) 推荐(0) 编辑

2014年3月27日

C# 图像处理:记录图像处理时间的一个类

摘要: class HiPerTimer { [DllImport("user32.dll")] static extern bool GetLastInputInfo(ref LASTINPUTINFO plii); /// /// 最后一次输入的时间间隔,静态函数,不用实例化即可调用 /// /// 返回时间长度 public static long GetLastInputTime() { LASTINPUTINFO vLastInputInfo... 阅读全文

posted @ 2014-03-27 20:54 鹿我所录 阅读(789) 评论(0) 推荐(0) 编辑

导航