windows/VC/MFC
文章平均质量分 69
liuliu20036
这个作者很懒,什么都没留下…
展开
-
读取硬盘物理序列号
//HDID.CPP //Written by Lu Lin // http://lu0.126.com // 2000.11.3 //---*/ #include #include #include #define DFP_GET_VERSION 0x00074080转载 2008-09-30 13:43:00 · 1139 阅读 · 0 评论 -
GDI+编程的肤浅使用及Char ,CString,WCHAR 之间的转换小结
前几天有朋友突然找我帮他想想如何用VC编程在图片上绘字,并且能够批量生成新的图片。其实我对VC编程也不怎么样,很多东西都没用过,大体的概念也就觉得应该可以用GDI编程,读入图片入内存,然后使用内存与设备无关的设备描述表作图来实现,可是仔细翻 Windows程序设计 来看也没发现可行的办法,于是没办法只好上网上搜,结果发现有人提出过类似问题,网上的高手们的回答有用GDI+的,以前还真没听过这个库。我转载 2009-08-30 01:07:00 · 1701 阅读 · 0 评论 -
设置光标坐标请用设备坐标
SetCaretPos设置光标坐标的时候,它用的是设备坐标,而不是逻辑坐标,一般画图的时候都是用的逻辑坐标,所以我们在进行显示光标的时候,尤其是在滚动条滚动的时候,一定要将此时光标的逻辑坐标转换为设备坐标,然后再去调用SetCarePos函数 一般内存DC是不能进行坐标转换的,我们只能用屏幕DC去进行坐标转换。原创 2009-08-16 17:26:00 · 933 阅读 · 0 评论 -
如何判断两矩形是否相交
【解题思路】假定矩形是用一对点表达的(minx,miny)(maxx, maxy) 那么两个矩形rect1{(minx1,miny1)(maxx1, maxy1)}, rect2{(minx2,miny2)(maxx2, maxy2)} 相交的结果一定是个矩形,构成这个相交矩形rect{(minx,miny)(maxx, maxy)}的点对坐标是:原创 2008-12-27 23:37:00 · 4148 阅读 · 1 评论 -
当鼠标移动到界面外面, 如何继续得到WM_LBUTTONUP消息
【问题】:当鼠标移动到界面外面, 怎么得到WM_LBUTTONUP消息?【解决方案】使用SetCapture函数可以解决,SetCapture函数是让鼠标捕获属于窗口所在的线程。一旦界面捕获了鼠标,所有的鼠标输入都响应在该窗口中,不管鼠标的坐标是否在界面外面。具体措施如下:void ControlFrameUnit::OnLButtonDown(WPARAM wPara原创 2008-12-27 16:29:00 · 1767 阅读 · 0 评论 -
使用PostThreadMessage向工作线程发送消息
把window线程间传送消息仔细的看了一遍,觉得以前的理解很不深刻。说一说对PostThreadMessage的理解。 PostThreadMessage是一个线程体发送一个消息到指定的线程ID,其原型如下: BOOL PostThreadMessage( DWORD idThread,转载 2009-02-11 22:38:00 · 16092 阅读 · 2 评论 -
tab控件在SDK中的使用例子
#include "stdafx.h" #include "resource.h" #include #pragma comment(lib,"comctl32.lib") static HINSTANCE g_hInst; static HWND g_hTabCtrl; static HWND g_hTabSheet1; static HWND g_hTabSh原创 2009-01-28 23:29:00 · 1148 阅读 · 0 评论 -
一个窗口居中的例子(Win32)
要实现窗口居中显示并不难,只要在窗体创建的时候我们设置窗口的位置就可以了.在这里我们主要用到3个API函数,分别是:GetSysMetrics,GetWindowRect,SetWindowPos.我们用GetSysMetrics来获的屏幕的宽度和高度,然后用GetWindowRect来获取窗口的坐标.通过运算后计算出居中窗口的位置,最后用SetWindowPos来设置窗体的位置.整个过程就是如此转载 2009-01-18 20:02:00 · 5522 阅读 · 0 评论 -
RegQueryValueEx函数返回234错误解决方法
我们在调用RegQueryValueEx这个函数,在注册表中读取字符串形式的数据时候,经常会出现返回234错误。MSDN说是 If the buffer specified by lpData parameter is not large enough to hold the data, the function returns the value ERROR_MORE_DATA,Window N原创 2008-11-22 18:41:00 · 8360 阅读 · 6 评论 -
RegOpenKeyEx和RegCreateKeyEx函数
由于电脑经常会关闭,或者应用程序也会经常关闭,但有一些参数是经常需要保存。比如当你打开程序,并设置了窗口的大小,想每次打开时都设置窗口为上次打开的大小。这样就需要保存窗口的大小,那么窗口大小的参数保存到那里呢?其实在Windows里最方便的做法,就是保存到注册表里。又比如游戏登录时,总是想保存最后一个登录的用户,那么也需要保存这个用户到注册表里。其实注册表是Windows保存系统配置的数据库,比如转载 2008-11-16 18:11:00 · 4642 阅读 · 0 评论 -
如何实现软件的自动启动和取消自动启动
自动启动代码:void CServerApp::SetAutoRun(){ HKEY hKey; char* szRegpath = "Software//Microsoft//Windows//CurrentVersion//Run"; long lRet; // 打开注册表 lRet = Re原创 2008-11-16 17:33:00 · 1239 阅读 · 0 评论 -
双缓冲刷新效率的改善
【问题】在以前的双缓冲Demo中,发现这个在移动一张牌的时候,效率还能忍受过去。但是当应用双缓冲技术到显示多张纸牌的时候,我们会发现效率已经不能再让人忍受了。移动纸牌发生飘移;发牌的时候,当把定时器间隔修改为1ms的时候,速度还是很慢。为此需要对双缓冲的效率进行改善。【解决方法】经过调查,解决方法具体如下:1. 将创建内存画布的工作移动到OnSize函数中去做,也就是当窗口大小发生变化的时候,原创 2009-01-01 16:00:00 · 1142 阅读 · 0 评论 -
VC中如何播放WAV文件
VC中播放WAV文件的API为PlaySound函数。1.函数详细说明:PlaySound函数的声明为: BOOL PlaySound(LPCSTR pszSound, HMODULE hmod,DWORD fdwSound); 参数pszSound是指定了要播放声音的字符串,该参数可以是WAVE文件的名字,或是WAV资源的名字,或是内存中声音数据的指针,或是在系统注册表WIN.INI中定原创 2008-11-05 21:31:00 · 7150 阅读 · 0 评论 -
VC++双缓冲之实现
在图形图象处理编程过程中,双缓冲是一种基本的技术。我们知道,如果窗体在响应WM_PAINT消息的时候要进行复杂的图形处理,那么窗体在重绘时由于过频的刷新而引起闪烁现象。解决这一问题的有效方法就是双缓冲技术。 因为窗体在刷新时,总要有一个擦除原来图象的过程OnEraseBkgnd,它利用背景色填充窗体绘图区,然后在调用新的绘图代码进行重绘,这样一擦一写造成了图象颜色的反差。当WM_PA原创 2008-11-02 15:05:00 · 740 阅读 · 0 评论 -
CString 内存分配机制
CString比起STL的string来说,有很多方便的地方。许多有经验的作者在他们的文章里都写过,string是一个很好用的类型,但是往往MFC程序里的许多BUG就是它引起的,典型的漏洞有:缓冲溢出、内存泄漏等。而且这些BUG都是致命的,会造成系统的瘫痪。因此C++里就专门的做了一个类用来维护字符串指针。标准C++里的字符串类是string,在microsoft MFC类库中原创 2008-09-29 20:05:00 · 6763 阅读 · 0 评论 -
如何在单文档中实现分割窗口功能
1.MainFrame.hprotected: CSplitterWnd m_wndSplitterTotal; //用于总体切割 CSplitterWnd m_wndSplitterRight; //用于右侧切割 BOOL m_bSplitterCreated; // 是否已经分割窗口 2. MainFrame.cpp:BOOL原创 2009-10-15 00:03:00 · 1937 阅读 · 1 评论