VC相关
文章平均质量分 59
tiantangniao232
喜欢编程
展开
-
如何让编辑框响应鼠标单击
鼠标单击会产生WM_LBUTTONDOWN消息,此消息属于标准窗口消息。标准窗口消息的路由是从子类向父类传递,因此我们可以利用标准消息的路由来实现。默认情况下编辑框是不响应鼠标单击的,因为当你单击编辑框时产生的WM_LBUTTONDOWN消息都流向了编辑框的基类CEdit。所以我们要想编辑框响应鼠标单击,就得为编辑框派生一个新类。这样当我们单击编辑框时,WM_LBUTTONDOWN消息原创 2007-03-08 20:54:00 · 3616 阅读 · 2 评论 -
启动隐藏对话框
VC 对话框程序运行即隐藏,看起来容易实现,但要完美的解决(很多办法都要闪一下才隐藏),可不是那么容易,要一点小小的技巧。添加成员int IsFirstShow;//可能你需要它开始运行时隐藏,而不是一直隐藏,如果你要它一直隐藏,这里就不要声明了。构造函数里加IsFirstShow=1;响应WM_WINDOWPOSCHANGING消息。添加代码void CSpyRegExeDlg::OnWind转载 2007-09-05 21:22:00 · 1178 阅读 · 0 评论 -
OnInitDialog中ShowWindow为什么无效?
最近看到有关对话框启动隐藏的问题, 觉得不就是在OnInitDialog里调用 ShowWindow( SW_HIDE )幸亏想当然了的一段还算不太长的时间(^_^)试了以后发现启动时对话框并没有隐藏,纳闷了?????然后查看了一下MFC的底层代码以后发现,发现对话框的显示路由如下:首先当然就是从InitInstance里的dlg.DoModal()开始啦,DoModal又调用了CWnd:Crea原创 2007-09-08 08:48:00 · 4774 阅读 · 1 评论 -
WM_COMMAND消息路由
下面就谈谈命令消息WM_COMMAND的路由吧,作为一次学习笔记吧下面是从MSDN上copy过来的命令消息路由表:(很详细哦) MDI frame window (CMDIFrameWnd) Active CMDIChildWnd原创 2007-09-08 10:30:00 · 1661 阅读 · 0 评论 -
句柄
所谓句柄实际上是一个数据,是一个Long (整长型)的数据。 句柄是WONDOWS用来标识被应用程序所建立或使用的对象的唯一整数,WINDOWS使用各种各样的句柄标识诸如应用程序实例,窗口,控制,位图,GDI对象等等。WINDOWS句柄有点象C语言中的文件句柄。 从 上面的定义中的我们可以看到,句柄是一个标识符,是拿来标识对象或者项目的,它就象我们的姓名一样,每个人都会有一个,不同的人的姓名不一样原创 2007-09-06 10:41:00 · 571 阅读 · 0 评论 -
绘制圆形按钮
由于从CButton类派生的按钮外观过于“简洁”,有时并不能满足我们的要求。爱美之心人皆有之,何况按钮呼?那么要如何才能做出一个漂亮的按钮呢?这就得求助与按钮的自绘功能。所谓按钮的自绘,就是按钮的形状可以重新绘制。既然按钮的形状可以重新绘制,那岂不正是 我们需要的。下面简要的说一下圆形按钮的制作思路:首先得让按钮具有自绘风格(ownerdraw),可以在按钮的属性里选上,也可以通过PreSubCl原创 2007-09-10 10:27:00 · 1352 阅读 · 6 评论 -
一个microsoft的.exe程序的启动过程
一个microsoft的.exe程序的启动过程 学习windows 编程从mfc角度来说可分为两部分那就是WinMain函数以前的,和WinMain函数以后的。前者涉及很多windows操作系统内部的知识,后者么看mfc源码就可以了。虽然大多数程序不需要你了解太多关于os加载应用程序这方面的知识,但我认为能较深入了解windows os的运行情况对程序员是很有帮助的。 最近我正在研究一个m转载 2007-09-11 18:37:00 · 695 阅读 · 0 评论 -
使对话框全屏显示
如何使对话框全屏显示呢?我们可以借助于函数SetWindowPos,其原型如下:BOOL SetWindowPos ( const CWnd* pWndInsertAfter, int x, int y, int cx, int cy, UINT nFlags );参数说明:pWndInsertAfter 可以取值如下 wndTop wndBottom wndTopMost原创 2007-09-13 10:41:00 · 2133 阅读 · 0 评论 -
启动隐藏对话框的简单例子
利用WM_WINDOWPOSCHANGING首先建立一个基于对话框的工程,然后给对话框添加WM_WINDOWPOSCHANGING消息处理函数。给对话框类添加一个成员bVisibe用来决定窗口初始显示时是隐藏还是显示。在构造函数中将其初始化为FALSE即初始隐藏。然后在消息处理函数中添加如下代码即可:void CTestDlg::OnWindowPosChanging(WINDOWPOS FAR*原创 2007-09-13 09:33:00 · 771 阅读 · 0 评论 -
如何让主对话框启动时弹出一个对话框
比如我们想做一个登录窗口,当主对话框启动时先启动一个登录窗口,只有成功登录才会显示主对话框,否则退出。下面就介绍一个简单的方法:很简单就是利用在弹出主对话框出现之前,先弹出我们的登录窗口。首先添加一个对话框资源,用来作为登录窗口,并关联一个对话框类如CLoginDlg然后在InitInstance中添加如下代码:只是简单地实现,你可以在此基础上扩展功能CLonginDlg* pLogin = ne原创 2007-09-14 09:41:00 · 935 阅读 · 0 评论 -
为什么有时候程序在到达全局theApp时会先进入CWinApp呢???
工程名:Test按照一般的理解,加点调试时程序首先应该进入全局对象CTestApp theApp。但有时候我们却发现程序首先进入的是CWinApp(。。。),这就让我们很难理解?????进一步调试发现此时 this指向一个叫 _afxOleWinApp的对象。看名子应该是一个全局对象。搜一下进入到了DLLOLE.CPP里,发现它里面的却有一个 _afxOleWinApp对象 CWinApp原创 2007-10-03 09:40:00 · 2296 阅读 · 3 评论 -
VC操作光驱
目前有许多的商业软件特别是一些音频、视频播放软件中都带有自动监测光驱的弹出和送入的状态,然后进行自动播放的功能。本文介绍的小软件演示了一种自动识 别光驱弹出和送入状态的能力,并且可以判断出当前的光驱中是否有Windows系统可识别的CDROM碟片。程序实现过程中利用了Windows的 WM_DEVICECHANGE消息和Windows系统广播机制来达到自动监测光驱状态改变的目的。一、实现原理Win转载 2007-09-04 11:18:00 · 1431 阅读 · 0 评论 -
c++ 编程命名规则
编程的命名规则,我第一反应就会想到匈牙利命名法。匈牙利命名法我都不想多说,因为网上的文章一大把,大家自己去google搜索。但是为了方便起见,我还是在这里简单的介绍一下:匈牙利命名法通过在变量名前面加上相应的小写字母的符号标识作为前缀,标识出变量的作用域,类型等。这些符号可以多个同时使用,顺序是一、先m_(成员变量)或者是g_(全局变量)二、就是指针,通常以p来表示三、然后是简单数据类型四、再是其转载 2007-09-02 10:58:00 · 754 阅读 · 0 评论 -
窗口关闭的消息路由
有时候当我们点击窗口右上角的关闭按钮时,窗口在关闭之前会弹出一个提示对话框,询问我们是否真的要关闭窗口 。当我们点击确定以后,窗口会正常关闭,否则一切如常。那么上面的功能是如何实现的呢?让我们先来了解一下窗口关闭时的消息路由:首先当我们点击关闭按钮后,窗口会发出WM_SYSCOMMAND消息,此消息会交由默认的消息处理函数处理,默认的消息处理函数会发出WM_CLOSE消息。该消原创 2007-03-31 08:40:00 · 1483 阅读 · 0 评论 -
如何动态创建按钮,并响应消息
如何让动态创建的按钮响应鼠标双击? 利用按钮的BS_PUSHBUTTON风格,具有该风格的按钮被单击时会发出WM_COMMAND消息,他的响应原理和用类向导定义的函数一样。只不过它的响应函数原形,消息映射以及函数实现需要你自己手动写进去例如:首先建一个AppWizard的工程Button,然后给CButtonDlg添加一个成员变量m_btn如:CButton m_bt原创 2007-03-31 15:21:00 · 4308 阅读 · 2 评论 -
CToolTipCtrl的用法(静态地显示工具提示)
下面实现的是当鼠标滑过一个控件时,在控件上显示一个工具提示程序创建的工具提示相对简单,主要用到以下几个函数:BOOL Create( CWnd* pParentWnd, DWORD dwStyle = 0 );BOOL AddTool( CWnd* pWnd, UINT nIDText, LPCRECT lpRectTool = NULL, UINT nIDTool = 0 );v原创 2007-03-31 16:17:00 · 2187 阅读 · 0 评论 -
让编辑框动态显示系统时间
这是一个很简单的程序设计。在你的对话框上放置一个Edit控件,要有一定的长度便于显示。给编辑框关联一个控件变量:CEdit m_Edit1;在OnInitDialog中添加如下代码:CString strTime; CTime tm; tm=CTime::GetCurrentTime();//获得系统时间 strTime=tm.Format("%y年%m月%d日 %原创 2007-03-31 12:28:00 · 1707 阅读 · 1 评论 -
使用MFC的数组类
MFC的数组类支持的数组类似于C++中的常规数组,可以存放任何数据类型。C++的常规数组在使用前必须将其定义成能够容纳所有可能需要的元素,而MFC数组类创建的对象可以根据需要动态地增大或减小,数组的起始下标是0,而上限可以是固定的,也可以随着元素的增加而增加,数组在内存中的地址仍然是连续分配的。 MFC定义了数组模板类CArray,并针对各种常用变量类型定义了CByteArray,CWordA转载 2007-04-01 10:07:00 · 1279 阅读 · 0 评论 -
指向类成员
最近我收到许多有关类方法指针的问题,比如:在 VC 中无法使用类方法指针,编译器报如下错误:Cannot convert parameter 2 from long (unsigned long)tolong (__cdecl *)(unsigned long)我该怎么办?下面是解决这个问题的代码://in the headerclass CKernel:{转载 2007-04-01 10:39:00 · 556 阅读 · 0 评论 -
打造自定义的 AfxMessageBox
一、需求 与标准的 MessageBox 相比,MFC提供了 AfxMessageBox 的方法是我们对消息框的变得更加容易。然而简单的 AfxMessageBox 有时已经不能够满足我们的需求了:有时候我仅仅想提示用户一下,并不需要用户确认,也就是说过一段时间消息框就能自动关闭。 您可能马上会想到,使用自己定义的对话框来替代程序中的 AfxMessageBox,没错,这样的结果非常能够让你转载 2007-04-01 10:34:00 · 970 阅读 · 0 评论 -
CBitmapButton的用法
我们有时希望对应按钮的不同状态,按钮可以有不同的显示形式。比如通常情况下按钮的四种状态正常显示 (Up) 鼠标按下(Down) 获得焦点(Focus) 不可用(Disable)因此可以用四张位图来对应这四种状态,我们不需要为每一种状态单独加载位图,只需要利用CBitmapButton类即可 总共有两种方法实现:下面先说第一种:假如有原创 2007-09-02 15:55:00 · 2087 阅读 · 1 评论 -
vc的一些小知识
1----隐藏任务栏::ShowWindow(::FindWindow("Shell_TrayWnd",NULL),SW_HIDE);2----窗口最大化并覆盖任务栏int cxScreen = ::GetSystemMetrics(SM_CXSCREEN); int cyScreen = ::GetSystemMetrics(SM_CYSCREEN原创 2007-09-02 18:49:00 · 613 阅读 · 0 评论 -
鼠标停靠在按钮上和鼠标离开按钮时的触发事件
下面以按钮为例阐述: 首先给对话框类添加一个新类:CNewButton类我们都知道有关鼠标的移动事件通常是WM_MOUSEMOVE,它表示鼠标滑过按钮事件。但有时我们需要知道鼠标停靠在按钮上的事件和鼠标离开按钮上的事件。只有WM_MOUSEMOVE是不能满足我们的要求的。我们需要WM_MOUSEHOVER和WM_MOUSELEAVE事件,这两个消息系统是有定义的。但并不像WM_原创 2007-09-02 08:32:00 · 4108 阅读 · 1 评论 -
VC++编译选项
Visual C++ 编译器选项按字母顺序列出的编译器选项 选项 目的 @ 指定响应文件 /? 列出编译器选项转载 2007-10-09 18:51:00 · 1712 阅读 · 0 评论