摘要:
注册表(Registry,中国大陆译作注冊表,台湾、港澳译作登录档)是Microsoft Windows中的一个重要的数据库,用于存储系统和应用程序的设置信息。早在Windows3.0推出OLE技术的时候,注册表就已经出现。随后推出的Windows NT是第一个从系统级别广泛使用注册表的操作系统。但是,从Windows 95开始,注册表才真正成为Windows用户经常接触的内容,并在其后的操作系统中继续沿用至今。注册表由键(或称“项”)、子键(子项)和值项构成。一个键就是分支中的一个文件夹,而子键就是这个文件夹中的子文件夹,子键同样是一个键。一个值项则是一个键的当前定义,由名称、数据类型以及分 阅读全文
随笔分类 - win32 sdk 和 MFC
windows 对 win.ini 文件访问
2013-01-12 00:03 by youxin, 1873 阅读, 收藏, 编辑
摘要:
在编写程序的时候,需要将一些初始化的信息写入到一个配置文件中,当程序启动时从这个配置文件中读取这些初始化信息。现在,大部分软件都将这些信息写入到注册表中,然后在软件启动时,从注册表读取这些初始化信息。但是早期的一些程序都是将这些信息写入到win.ini文件中。win.ini,是Windows系统的一个基本系统配置文件。WIN.INI文件包含若干小节,每一节由一组相关的设定组成。文件配保存了诸如影响Windows操作环境的部分、控制系统界面显示形式及窗口和鼠标器的位置、联结特定的文件类型与相应的应用程序、列出有关HELP窗口及对话窗的默认尺寸、布局、文本颜色设置等等的选项。是系统配置不可缺少的文 阅读全文
windows api unresolved external symbol __imp__mcisendcommanda
2013-01-11 22:45 by youxin, 628 阅读, 收藏, 编辑
摘要:
使用了mciSendCommand,头文件也包含了,但是连接报错:DIGITALVIDEO.OBJ : error LNK2001: unresolved external symbol__imp__mciSendCommandA@16明显是找不到相应的函数,问题是link选项里没有加入相应的lib库,如本例就,应在link里加入"winmm.lib",否则编译器无从赵东相应的函数,在工程主程序中的前面加上#pragma comment(lib, "winmm.lib"),特定库的找到方法是看LNK 2001中找不到的函数名,通过MSDN或者其他的手段获 阅读全文
转:剖析Windows消息处理机制
2013-01-11 18:47 by youxin, 494 阅读, 收藏, 编辑
摘要:
1.窗口 Windows程序是由一系列的窗口构成的,每个窗口都有自己的窗口过程,窗口过程就是一个拥有有固定 Signature 的 C函数,具体格式如下: LRESULT CALLBACK WindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam ); 窗口类型: 可重叠窗口(Overlapped Window), 弹出窗口(Pop-up Window), 子窗口(Child Window) 窗口之间的关系: 父子关系,拥有关系,前后关系。2.线程 一个进程至少拥有一个线程,称为主线程,如果一个线程创建了窗口,拥有GUI资源,那 阅读全文
CWnd与HWND的区别与转换
2013-01-11 17:26 by youxin, 526 阅读, 收藏, 编辑
摘要:
一、区别HWND是句柄,CWnd是MFC窗体类,CWnd中包含HWND句柄成员对象是m_hWnd.HWND是Windows系统中对所有窗口的一种标识,即窗口句柄。这是一个SDK概念。CWnd是MFC类库中所有窗口类的基类。微软在MFC中将所有窗口的通用操作都封装到了这个类中,如:ShowWindow等等,同时它也封装了窗口句柄即m_hWnd成员。二、如何得到窗口对象指针CWnd * pCWnd1,在窗体里,直接用 this->,//this就是本窗体的窗口对象指针2,主窗体的类对象指针:AfxGetApp()->m_pMainWnd->, //AfxGetApp()-> 阅读全文
Window 消息大全(便于查看)
2013-01-11 17:21 by youxin, 312 阅读, 收藏, 编辑
摘要:
消息,就是指Windows发出的一个通知,告诉应用程序某个事情发生了。例如,单击鼠标、改变窗口尺寸、按下键盘上的一个键都会使Windows发送一个消息给应用程序。消息本身是作为一个记录传递给应用程序的,这个记录中包含了消息的类型以及其他信息。例如,对于单击鼠标所产生的消息来说,这个记录中包含了单击鼠标时的坐标。这个记录类型叫做TMsg,它在Windows单元中是这样声明的:typeTMsg = packed recordhwnd: HWND; / /窗口句柄message: UINT; / /消息常量标识符wParam: WPARAM ; // 32位消息的特定附加信息lParam: LPAR 阅读全文
CWnd::GetActiveWindow与CFrameWnd::GetActiveView 区别
2013-01-11 17:02 by youxin, 463 阅读, 收藏, 编辑
摘要:
CWnd::GetActiveWindowRetrieves a pointer to the active window.static CWnd* PASCAL GetActiveWindow( );CFrameWnd::GetActiveView CMainFrame独有的函数。Call this member function to obtain a pointer to the active view (if any) attached to a frame window (CFrameWnd).CView* GetActiveView( ) const;via:http://msd. 阅读全文
MFC 自定义消息
2013-01-11 17:00 by youxin, 429 阅读, 收藏, 编辑
摘要:
ClassWizard不允许增加用户自定义消息,所以你必须手工输入。输入后,ClassWizard就可以象处理其它消息一样处理你自定义的消息了。下面是增加自定义消息的步骤:第一步:定义消息。开发应用程序时,Microsoft推荐用户自定义消息至少是WM_USER+100,因为很多新控件也要使用WM_USER消息。在winuser.h中WM_USER被定义为0x0400,定义消息的标号。就像我们经常看到的WM_PAINT等消息一样,他们实际上都有一个标号,#define赋予他们这些标号。#defineWM_MY_MESSAGE1WM_USER+0#defineWM_MY_MESSAGE2WM_U 阅读全文
VS2010创建C++项目类向导和智能感知不可用
2013-01-11 16:16 by youxin, 934 阅读, 收藏, 编辑
摘要:
在vs2010创建了一个mfc工程,创建完成后弹出警告对话框:创建c++浏览数据库文件c:\users\administrator\documents\visual studio 2010\Projects\aaa\aaa.sdf时发生错误。IntelliSense和浏览信息将不能用于c++项目。请确保已安装Microsoft SQL Server Compact 3.5,并且没有其他程序正在访问文件。如果问题任然存在,请删除文件并重新打开解决方案。解决办法:打开vs2010安装光盘,搜索SSCERuntime_x86-chs.msi,安装之后就可以用了。另外发现一个SSCEVSTools-c 阅读全文
MFC 框架各部分指针获取方式
2013-01-11 16:06 by youxin, 289 阅读, 收藏, 编辑
摘要:
获得CWinApp获得CMainFrame获得CChildFrame获得CDocument获得CView在CWinApp中AfxGetMainWnd()m_pMainWndAfxGetMainWnd()->MDIGetActive()AfxGetMainWnd()->GetActiveFrame()SDI:AfxGetMainWnd()->GetActiveView()->GetDocument()MDI:AfxGetMainWnd()->MDIGetActive()->GetActiveView()->GetDocument()SDI:AfxGetM 阅读全文
MFC修改主窗口风格
2013-01-11 16:03 by youxin, 622 阅读, 收藏, 编辑
摘要:
AppWizard生成的应用程序框架的主窗口具有缺省的窗口风格,比如在窗口标题条中自动添加文档名、窗口是叠加型的、可改变窗口大小等。要修改窗口的缺省风格,需要重载CWnd::PreCreateWindow(CREATESTRUCT& cs)函数,并在其中修改CREATESTRUCT型参数cs。CWnd::PreCreateWindow 函数先于窗口创建函数执行。如果该函数被重载,则窗口创建函数将使用CWnd::PreCreateWindow函数返回的CREATESTRUCT cs参数所定义的窗口风格来创建窗口;否则使用预定义的窗口风格。CREATESTRUCT结构定义了创建函数创建窗口 阅读全文
VC中调用外部程序的几种方法
2013-01-10 23:30 by youxin, 729 阅读, 收藏, 编辑
摘要:
可以用3个sdk函数。三个SDK函数:WinExec,ShellExecute ,CreateProcess可以实现调用其他程序的要求,其中以WinExec最为简单,ShellExecute比WinExec灵活一些,CreateProcess最为复杂。 WinExec 两个参数,前一个指定路径,后一个指定显示方式。 ShellExecute 可以指定工作目录,并且还可以寻找文件的关联直接打开不用加载与文件关联的应用程序,ShellExecute还可以打开网页,启动相应的邮件关联发送邮件等等。 CreateProcess 一共有十个参数,不过大部分都可以用NULL代替,它可以指定进程... 阅读全文
(转)MFC技巧学习
2013-01-10 23:08 by youxin, 722 阅读, 收藏, 编辑
摘要:
1."属性页的添加:创建对话框的类,该类要从CpropertyPage继承;然后在要添加该对话框为属性页的类(头文件)里创建CpropertySheet类的一个对象m_tabsheet和新创建的对话框类的对象m_skatch;最后,在.cpp文件里的OnInitDialog()之类的函数里实现如下代码:{ m_tabsheet.Create(this, WS_CHILD | WS_VISIBLE, 0); //使选项卡的按钮在下面 if(m_tabsheet.m_hWnd) m_tabsheet.ShowWindow(SW_MAXIMIZE); //显示选项卡 //加入标签,标... 阅读全文
使用MFC中的CDC,CBitmap来实现贴图
2013-01-10 22:22 by youxin, 2083 阅读, 收藏, 编辑
摘要:
代码如下:void CProView::OnDraw(CDC* pDC){ CProDoc* pDoc = GetDocument(); ASSERT_VALID(pDoc);///////////////////////////////////////////////////////////////////////////////////////////////////////////////贴图CBitmap bitmap;bitmap.LoadBitmap(IDB_BITMAP1);CDC dcMemory;dcMemory.CreateCompatibleDC(pDC);// Sele 阅读全文
mfc error C2501: 'GetDocument' : missing storage-class or type spec
2013-01-10 21:41 by youxin, 412 阅读, 收藏, 编辑
摘要:
在mfc中MainFrame想引用视图类,已经把头文件TestView.h加进来了,为什么还是报错'GetDocument' : missing storage-class or type spec ?还应该把文档类的头文件加进来,类似这样:#include "TestDoc.h" 1#include "TestView.h" 2 顺序不能颠倒哦而且文档类还必须在视图类的头文件必须在视图类头文件前面添加,否则还是报错。类似:http://zhidao.baidu.com/question/33750365 阅读全文
windows dll使用
2012-12-22 15:54 by youxin, 512 阅读, 收藏, 编辑
摘要:
如何生成一个DLL 参考 Windows 动态链接库 DLL 浅析 在VC++6.0开发环境下,打开File\New\Project选项,可以选择Win32 Dynamic-Link Library或MFC AppWizard【dll】来以不同的方式创建Non-MFC DLL、Regular DLL 阅读全文
转贴:MFC Windows程序设计语言总结
2012-11-26 18:24 by youxin, 463 阅读, 收藏, 编辑
摘要:
我在刚开始接触Windows编程时, 从Visual Basic开始, 从MFC开始, 虽然写出了程序, 但自己都不知道程序是如何运行的, 从而造成写程序"容易"修改难, 设计程序"容易"维护难的状况. 经过MFC Windows程序设计的学习之后,明白了有关知识。 API函数是Windows提供给应用程序的编程接口, 任何用户应用程序必须运行在API函数之上. 直接使用API编程是了解操作系统运行细节的最佳方式, 而且熟知API函数也是对程序开发者的一个最基本的要求. 这课程以API函数作为起点介绍Windows编程, 使我撇开C++的特性专心熟悉Wi 阅读全文
windows编程中文件操作的几种方法
2012-11-15 11:28 by youxin, 676 阅读, 收藏, 编辑
摘要:
windows编程中文件操作有以下几种常见方法:1.C语言中文件操作。2.C++语言中的文件操作。3.Win32 API函数文件操作。4.MFC CFile类文件操作。5.MFC CFileDialog类的文件操作。6.注册表文件操作。下面我来详细说明一下各种文件操作方法:1. C语言中文件操作.需要包含的头文件STDIO.H写入文件:fread(buffer,size,count,fp));fwrite(buffer,size,count,,fp);size:要读写的字节数(记录的长度).count:要读写多少个size自己的数据项,即读/写的记录数。返回:已读入或输出的项数,即执行成功返回 阅读全文
win7 vc6.0 Pop-up Menu 不支持此接口
2012-11-12 11:44 by youxin, 398 阅读, 收藏, 编辑
摘要:
Pop-up Menu 不支持此接口,原因是我用的Win7的系统,这就是关键。1、Win7与VC6不兼容,虽然可以装的上,Win7上可以运行VC6,但是有很多类型的工程是无法编译的,建议升级到10.0。2、Pop-up Menu后在文件名中将插入组件的后缀.lnk去掉,将原来的Pop-up Menu.lnk变为Pop-up Menu即可,只是不是很稳定,但是勉强可以使用。3、自己定义菜单资源,自己处理WM_CONTEXTMENU消息,TrackPopupMenu()。此原因,多方面是Win7与VC不兼容,若要使用VC6,还是在XP mode吧! 阅读全文
MessageBox、::MessageBox 、AfxMessageBox区别
2012-11-09 20:15 by youxin, 522 阅读, 收藏, 编辑
摘要:
Messagebox函数在API和MFC里的区别:API的定义如下int MessageBox( HWND hWnd, // handle of owner window LPCTSTR lpText, // address of text in message boxLPCTSTR lpCaption, // address of title of message box UINT uType // style of message box);MFC里的定义如下CWnd::MessageBoxint MessageBox( LPCTSTR lpszText, LPCTSTR lpszCapt 阅读全文