![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
软件开发资料
文章平均质量分 56
songshu1007
这个作者很懒,什么都没留下…
展开
-
VS2008中CDockablePane停靠框
VS2008中CDockablePane停靠框VS2008中对于MFC的MDI程序界面做了增强,支持很炫的的布局效果,之前还在说不能用CDialogBar类,现在完全可以使用CDockablePane类替代了,现在只需要新建一个继承自CDockablePane的新类,就可以在其上添加各种控件了,如组合框、对话框等,现在尝试添加一个对话框。 新建一个MFC的多文档程序,如在Wizar转载 2014-05-09 11:01:23 · 699 阅读 · 0 评论 -
线程中更新窗口不能直接调用UpdateData函数 的解决办法
LRESULT OnUpdateData(WPARAM wParam, LPARAM lParam);加到你的头文件中去 tonygesong回复于15日21点31分 1.自定义消息: #define WM_UPDATEDATA 10000+1 // 更新界面 2.添加消息映射: ON_MESSAGE(WM_UPDATE转载 2014-05-09 11:35:58 · 2056 阅读 · 0 评论 -
SetFilePointer出现溢出的问题
今天在使用SetFilePointer 的时候出现了溢出的问题,使用了SetFilePointerEx,出现了指针错位的问题,其实只要设置LONGLONG64位,然后分别设置SetFilePointer 的高低位不会出现溢出的问题 下面是转的一篇使用这个接口的博文DWORD SetFilePointer( HANDLE hFile, LONG lDistanceToMo转载 2014-05-09 11:40:53 · 1370 阅读 · 0 评论 -
vs2005双击控件提示重载函数已存在
vs2005双击控件提示重载函数已存在问题 :1.删除工程文件目录下的.ncb文件。2.将中文的工程名更改为英文的工程名。转载 2014-05-09 11:49:28 · 893 阅读 · 0 评论 -
如何去掉CDockablePane窗口的标题栏
方法一:virtual int GetCaptionHeight() const{return 0;//使标题栏的高度为0;}方法二:在创建CDockablePane子类创建时,编写如下代码就行了m_wndFileView.Create(strFileView,this,CRect(0,0,200,200),FALSE,ID_VIEW_FILEVIEW,WS_CHILD|WS_VISIB转载 2014-05-09 14:48:02 · 1846 阅读 · 0 评论 -
读配置文件
GetPrivateProfileString("配置",strTemp,"default.fil", strTempA.GetBuffer(MAX_PATH),MAX_PATH,dlgR.GetPathName()); 读配置文件读出的内容存储在缓存器中,如果要对内容进行处理,如查找、截断等需要将缓存器中的内容格式化成字符串原创 2014-05-09 11:29:45 · 564 阅读 · 0 评论 -
ListBox
ListBox窗口用来列出一系列的文本,每条文本占一行。创建一个列表窗口可以使用成员函数: BOOL CListBox::Create( LPCTSTR lpszText, DWORD dwStyle, const RECTamp;rect, CWnd* pParentWnd, UINT nID = 0xffff ); 其中dwStyle将指明该窗口的风格,除了子窗口常用的风格转载 2014-05-09 11:42:18 · 448 阅读 · 0 评论 -
MDI 界面开发
一般的多文档应用都会有居于左侧或右侧的导航窗口,在VC中是如何实现的呢?试建了一个MDI项目,发现MFC的MDI功能在2008上有很大的增强,支持很多很炫的布局效果(见截图)。这是典型的Office 2007风格,特别是Outlook 2007及VS 2008的风格,看起来相当的漂亮。在进一步了解这个示例的代码前,我想自己尝试一下,如何在经典的MDI主窗口添加公用面板。转载 2014-05-09 15:16:15 · 1617 阅读 · 0 评论 -
WIN32和Kernel直接读写硬盘扇区
这里是摘自文章里的一个表:硬盘的总体结构***********************************************************************编号 名称 备注1 主引导扇区(含硬盘分区表) 占用一个扇区空间(一个扇区空间为5转载 2014-05-09 11:02:47 · 856 阅读 · 0 评论 -
解决打印代码的一个Bug
ActiveX控件中的打印代码一直是运行正常,可今天为了修改ActiveX控件的版本,修改资源文件后,打印功能一直报错。 Debug后发现错误描述信息是:ERROR: Cannot find dialog template with IDD 0x7803. 错误的根源就是下述代码,原因是用于打印预览的对话框工具栏的资源无法找到,而这些资源是在afxprint.rc文件中的转载 2014-05-09 11:31:20 · 742 阅读 · 0 评论 -
依次将大文件的各个部分映射到进程中的一个较小的地址空间
文件操作是应用程序最为基本的功能之一,Win32 API和MFC均提供有支持文件处理的函数和类。一般来说,这些函数可以满足大多数场合的要求,但是对于某些特殊应用领域所需要的动辄几十GB、几百GB、乃至几TB的海量存储,再以通常的文件处理方法进行处理显然是行不通的。目前,对于上述这种大文件的操作一般是以内存映射文件的方式来加以处理的。内存映射文件与虚拟内存有些类似,通过内存映射文件可以保留一个地转载 2014-05-09 11:36:53 · 792 阅读 · 0 评论 -
VC 下加载 JPGJPEGGIFPNG 图片最简单的方法
VC MFC 提供的 API LoadBitmap / LoadImage类CBitmap 等都只能操作 BMP 位图,图标。对于其他常用的 JPG / JPEG / GIF / PNG格式,它无能为力。VC下怎样才能加载各种非BMP格式的图片呢?下面介绍一种最简单的办法。用 CImage类的 Load 函数加载图片,之后用 Detach 取得 HB转载 2014-05-09 11:39:21 · 558 阅读 · 0 评论 -
读取一个大文件的高效的方法
内存映射 HANDLE hFile = CreateFile("data.dat", GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, (HANDLE)0); HANDLE hMapping = CreateFileMapping(hFile, N转载 2014-05-09 11:28:49 · 3152 阅读 · 0 评论 -
VC打印控制
char szprinter[80]; char *szDevice,*szDriver,*szOutput; HDC hdcprint; // 定义唯一设备环境句柄 OrginPoint point; //定义唯一打印功课 static DOCINFO di={sizeof(DOCINFO),"printer",NULL}; // 得到设备字符串存入数组szprinter转载 2014-05-09 11:37:34 · 1383 阅读 · 0 评论 -
CWinApp::Enable3dControls”引起的C4996告警
“CWinApp::Enable3dControls”引起的C4996告警 这个是编译使用了老的向导生成的MFC代码时遇到的问题,一个典型的告警信息输出如下所示:CrpFileCrack.cppf:\project\.....\crpfilecrack.cpp(52) : warning C4996: 'CWinApp::Enable3dControls': CW转载 2014-05-09 11:46:00 · 768 阅读 · 0 评论 -
一些CDockablePane 关闭等编程问题
声明:这些程序都是鄙人亲自调试通过,转载敬标注来源于酒天聊博文!1、CDockablePane的关闭见解: MFC提供的Pane关闭可以再事件里面找到: BOOL CMainFrame::OnCloseDockingPane(CDockablePane* pWnd) ; 注释:关闭停靠窗口事件,事实上是隐藏窗体,还是占用资源的 BOOL CM转载 2014-05-09 14:52:01 · 2642 阅读 · 0 评论 -
屏蔽CDockablePane右击鼠标触发事件弹出右键菜单
1.主要思想:在CDockablePane的子类中重载响应函数OnContextMenu。2.具体方法:假设CDockablePane的子类的文件为Pane01Test (1)在Pane01Test.cpp中添加相应右击Pane的消息映射: BEGIN_MESSAGE_MAP(**,**) ****转载 2014-05-09 15:19:19 · 2720 阅读 · 0 评论 -
用VC如何改变编辑框的背景颜色
用VC如何改变编辑框的背景颜色在VC中,编辑框的颜色改变起来似乎很难,MFC的CEdit类后没有提供可改变颜色的函数。在本文中,我们将重载CEdit类,编写一个可以改变背景颜色的类CMyEdit类,将编辑框的变量定义为CMyEdit类型来实现改变编辑框的背景颜色。一、构建应用程序 新建一个基于对话框基础的程序ChangeEdit,然后在对话框的摸板上删除静态文本框,添加三个编辑框转载 2014-05-09 10:57:30 · 3699 阅读 · 0 评论 -
CArchive和Serialize即通过串行化文档的写入与读取
CArchive和Serialize即通过串行化文档的写入与读取 标签: 杂谈 之所以要这样通过串行化(CArchive和Serialize)的方式进行文件读去而不用CFile的方式进行文件的读取是因为串行化方式除了可以使用文件保存对象之外,还可以通过网络,串口,传输对象!!例如这里使用打开键打开一个格式为txt的文件,并将文件内容显示在当前的View里面:void CTextVi转载 2014-05-09 11:43:18 · 1129 阅读 · 0 评论 -
内存映射文件技术
1. 用途和基本操作用于不同进程之间的内存共享操作, 可以将一个物理文件映射到内存当中然后直接利用分配到的或者打开的命名共享内存的地址空间实现资源共享访问2. 相关流程1) 新建命名共享内存首先利用CreateFile或者CreateFileForMapping获得一个用于映射的物理文件句柄, 然后利用该文件句柄结合CreateFileMapping得到一个命名的共享内存映射文件句转载 2014-05-09 11:34:09 · 531 阅读 · 0 评论 -
UTF8到GB2312的用法
CString Convert(CString str, int sourceCodepage, int targetCodepage){int len=str.GetLength();int unicodeLen=MultiByteToWideChar(sourceCodepage,0,str,-1,NULL,0);wchar_t * pUnicode;pUnicod转载 2014-05-09 11:40:09 · 501 阅读 · 0 评论 -
warning C4996:warning C4244;warning C4996
1 warning C4996: “itoa”被声明为否决的 ; 已验证: 将itoa()或_itoa()改为 _itoa_s()即可2 warning C4244: “=”: 从“ULONGLONG”转换到“DWORD”,可能丢失数据; 强制转换就可以了3 warning C4996: “fopen”被声明为否决的 根据warning提示的地三原创 2014-05-09 11:48:41 · 1031 阅读 · 0 评论 -
如何去掉CDockablePane的Close按钮
方法一:在继承CDockablePane的类中重写CanBeClosed()方法: virtual BOOL CanBeClosed() const; ... BOOL COutputWnd::CanBeClosed() const { return FALSE;} 方法二:if (!m_wndView.Create(strFile转载 2014-05-09 11:25:04 · 728 阅读 · 0 评论 -
vc++使用内存映射
文件操作是应用程序最为基本的功能之一,Win32 API和MFC均提供有支持文件处理的函数和类,常用的有Win32 API的CreateFile()、WriteFile()、ReadFile()和MFC提供的CFile类等。一般来说,以上这些函数可以满足大多数场合的要求,但是对于某些特殊应用领域所需要的动辄几十GB、几百GB、乃至几TB的海量存储,再以通常的文件处理方法进行处理显然是行不通的。目前转载 2014-05-09 11:38:22 · 1970 阅读 · 0 评论 -
CDockablePane窗口风格设置
去掉关闭按钮:在继承CDockablePane的类中重写CanBeClosed()方法:virtual BOOL CanAutoHide() const { return FALSE; }去掉自动隐藏风格:virtual BOOL CanAutoHide() const { return FALSE; }想要去掉更多的风格,可以直接一层层地查看源码,返回FALSE即可。转载 2014-05-09 14:54:50 · 2034 阅读 · 0 评论 -
MFC分割窗口的实现
新建一个单文档的MFC工程。新建两个对话框,用于分割窗口,对话框的Style属性改为Child,Border属性改为None,最开始没有改这个,程序运行的时候报错了。将两个对话框生成从CFormView派生的类。在CMainFrame中添加两个成员变量,类型为CSplitterWnd,如下所示CSplitterWnd m_splitterWnd1;// IDD_DLG_1CSp转载 2014-05-09 16:02:13 · 1129 阅读 · 0 评论 -
编程学习网页
http://www.jizhuomi.com/http://www.codeproject.com/http://www.vckbase.com/原创 2014-05-09 16:10:57 · 409 阅读 · 0 评论 -
Vc++(MFC)中使用ADO 连接SQL Server的(远程)
连接字符串: _bstr_t strConnect="Provider=SQLOLEDB.1;Initial Catalog=“数据库名称”;Data Source=远程IP";hr = m_pConnection->Open(strConnect,"用户名","密码",adModeUnknown);原创 2014-05-09 16:26:26 · 2433 阅读 · 0 评论 -
动态修改CDockablePane上面的工具条CMFCToolBar的信息提示(续2)
前面虽然可以显示信息提示,但是,还是不能显示状态栏提示,以下实现:class CViewClientToolBar : public CMFCToolBar{ virtual void OnUpdateCmdUI(CFrameWnd* /*pTarget*/, BOOL bDisableIfNoHndler) { CMFCToolBar::On转载 2014-05-09 15:12:42 · 1058 阅读 · 0 评论 -
动态修改CDockablePane上面的工具条CMFCToolBar的信息提示(续1)
前面说到一种方法,但是这个方法有缺陷,原因是,这个信息提示确实可以显示,但是同时显示了Prompt信息,而Prompt信息却不能动态改变,以下解决:CMainFrame中重载GetMessageString, virtual void GetMessageString(UINT nID, CString& rMessage) const; 实现:转载 2014-05-09 15:11:28 · 937 阅读 · 0 评论 -
C++ 通过WIN32 API 获取逻辑磁盘详细信息
C++ 通过WIN32 API 获取逻辑磁盘详细信息众所周知,在微软的操作系统下编写应用程序,最主要的还是通过windows所提供的api函数来实现各种操作的,这些函数通常是可以直接使用的,只要包含windows.h这个头文件, 下载源文件今天我们主要介绍的是几个常用的api函数,通过它我们可以获取用户磁盘的相关信息。 其主要函数原型说明如下: 1.获取系统中逻转载 2014-05-09 17:03:12 · 736 阅读 · 0 评论 -
CDockablePane上面的工具条CMFCToolBar加ToolTips
OnUserToolTip,猜测应该可以实现我所要的效果,于是,重载CMFCToolBar,如下:class CViewClientToolBar : public CMFCToolBar{ virtual void OnUpdateCmdUI(CFrameWnd* /*pTarget*/, BOOL bDisableIfNoHndler) { C转载 2014-05-09 15:08:29 · 1216 阅读 · 0 评论 -
MFC使用ADO连接SqlServer
1.首先,要用#import语句来引用支持ADO的组件类型库(*.tlb),其中类型库可以作为可执行程序(DLL、EXE等)的一部分被定位在其自身程序中的附属资源里,如:被定位在msado15.dll的附属资源中,只需要直接用 #import引用它既可。可以直接在Stdafx.h文件中加入下面语句来实现:#import "c:/program files/common files/system转载 2014-05-09 16:22:42 · 1721 阅读 · 0 评论 -
获取网页内容
CInternetSession *session=new CInternetSession();CString myData;CString myUrl;myUrl = "http://127.0.0.1/asss.php";CHttpFile* yHttpFile=(CHttpFile*)session->OpenURL(myUrl);whi转载 2014-05-09 16:48:00 · 478 阅读 · 0 评论 -
mfc之ListBox介绍
listbox窗口用来列出一系列的文本,每条文本占一行。创建一个列表窗口可以使用成员函数:BOOL CListBox::Create( LPCTSTR lpszText, DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID = 0xffff );其中dwStyle将指明该窗口的风格,除了子窗口常用的风格WS_CHI转载 2014-05-09 16:52:00 · 969 阅读 · 0 评论 -
CreateFile() -- 打开与创建文件
CreateFile() 函数用以打开和创建文件,函数原型声明如下:HANDLE WINAPI CreateFile( __in LPCTSTR lpFileName, __in DWORD dwDesiredAccess, __in DWORD dwShareMode, __in_opt LPSECURITY_ATTRIBUTE转载 2014-05-16 15:48:19 · 8710 阅读 · 0 评论 -
GetLastError返回值查询(2)
〖3716〗-设备类型未知。 〖3717〗-日志文件已经损坏。 〖3718〗-程序文件名后必须以 .EXE 结束。 〖3719〗-找不到匹配的共享,因此没有删除。 〖3720〗-用户记录中的 “单位/星期” 的值不正确。 〖3725〗-删除共享时出错。 〖3726〗-用户名无效。 〖3727〗-密码无效。 〖3728〗-密码不匹配。转载 2014-05-16 10:33:59 · 6991 阅读 · 0 评论 -
如何让WriteFile立即生效
WriteFile函数通常是将数据写入到内部缓冲区,然后OS会定期将缓冲区中的数据写入到磁盘。如果想在调用WriteFile之后,数据就立即写入磁盘,有如下三种方法:1. 调用FlushFileBuffers(hFile);Flushes the buffers of a specified file and causes all buffered data to be writt转载 2014-05-16 16:50:55 · 2329 阅读 · 0 评论 -
GetLastError返回值查询(1)
〖0〗-操作成功完成。〖1〗-功能错误。〖2〗-系统找不到指定的文件。〖3〗-系统找不到指定的路径。〖4〗-系统无法打开文件。〖5〗-拒绝访问。〖6〗-句柄无效。〖7〗-存储控制块被损坏。〖8〗-存储空间不足,无法处理此命令。〖9〗-存储控制块地址无效。〖10〗-环境错误。〖11〗-试图加载格式错误的程序。转载 2014-05-16 10:32:55 · 1659 阅读 · 0 评论 -
VC++之文件基本操作之基于CArchive类的文件读写
一、创建单文档应用程序二、添加菜单资源菜单ID与标题 文件操作IDM_DU 读取文件IDM_XIE 写入文件三、添加函数四、添加代码(红色部分)void CCDocView::OnDu(){// TODO: Add your command handler code here转载 2014-05-12 16:46:06 · 1424 阅读 · 0 评论