
Windows Programing
loongee
这个作者很懒,什么都没留下…
展开
-
TrackPopupMenu参数为屏幕坐标的转换
第一次接触TrackPopupMenu函数的时候大家可能会发现:编写出来的窗口的动态弹出菜单位置始终不能如愿地显示在正确位置,仔细观察或者查MSDN就知道,TrackPopupMenu函数中的坐标参数是屏幕坐标,而不是我们的窗口相对坐标,因此在使用时我们可能会想到查找当前窗口在屏幕上的坐标来实现窗口坐标与屏幕坐标转换。而有个现存的函数可供我们利用,就是void ClientToScreen(原创 2008-05-07 22:27:00 · 2027 阅读 · 0 评论 -
LoadImage加载到系统OEM图片的BUG解决方案
简单说解决方法就是LoadImage第一个参数不要传递NULL,而使用GetModuleHandle(NULL)代替。 以下是邮件原文:http://www.tech-archive.net/Archive/Development/microsoft.public.win32.programmer.gdi/2007-01/msg00145.htmlHi,There is a bug转载 2010-05-12 20:34:00 · 1263 阅读 · 1 评论 -
WINCE下程序移植问题集
1. 不支持WM_NCPAINT消息。2. 不支持WM_MOUSELEAVE消息及TRACKMOUSE结构体及函数。3. 对SBM_SETSCROLLINFO消息中的LPARAM中的指针访问将会导致函数异常执行。因此自绘的SCROLLBAR必须注意。原创 2010-10-09 15:54:00 · 836 阅读 · 0 评论 -
MFC对话框CDialog中使用CStatusBar状态栏
<br />在MFC的通用对话框中使用状态栏,只需要在对话框成员中增加一个CStatusBar类型的成员变量,然后在OnInitDialog函数中添加如下代码:<br />CRect rect; GetClientRect(rect); static UINT indicators[]={ ID_SEPARATOR }; if(!m_wndStatusBar.Create(this)|| !m_wndStatusBar.SetIndicators(i原创 2011-01-03 11:24:00 · 6748 阅读 · 1 评论 -
创建WINCE下16位格式位图实现快速BitBlt
在WINCE下,如果创建的位图与屏幕设备格式不一样,将会导致BitBlt函数极为缓慢,因此需要创建一幅16位色565格式位图,用此方法创建出的位图可以提供1ms的快速BitBlt绘制。当然,如果设备不是565颜色格式的,更改代码中的颜色掩码位bmiColors就可以了。原创 2011-04-19 14:29:00 · 2525 阅读 · 1 评论 -
MFC C++ 绘制 EAN13 (商品条码)
绘制方法参考的 http://blog.youkuaiyun.com/zgke/archive/2008/12/11/3496721.aspx C#.NET下绘制EAN13 有兴趣的同学还可以参考http://blog.youkuaiyun.com/forrest23/archive/2009/08/21/4470858.aspx VB.NET绘制EAN13 DEMOCClientDC dc原创 2011-06-12 19:25:00 · 4710 阅读 · 3 评论 -
CListBox CEdit 自绘滚动条小试
如果直接需要代码,请直接移步http://www.codeproject.com/KB/dialog/skinscrollbar.aspx (注:本人非此代码作者)用Spy++检查后可知,CListBox的滚动条根本不是独立的滚动条窗口,只是一个逻辑窗口,因此使用对Scrollbar进行SubClass的方法是不可行的,因此只能想办法屏蔽掉Scrollbar。方案一:在CL原创 2012-01-02 17:25:47 · 4130 阅读 · 0 评论 -
MFC笔记
MoveWindow会引发WM_SIZE,而后引发WM_NCCALCSIZE消息ListBox的滚动条绘制在NCPAINT中,向窗体添加滚动条在NCCALSIZE消息响应中。SCROLLINFO中的nPage表示的是当前页面所显示的行数。不能用PreTranslateMessage拦截WM_DESTROY,WM_ERAZEBKGND, WM_NCCALSIZE,因为它们全部都是发送的。原创 2012-03-06 17:01:13 · 745 阅读 · 0 评论 -
C#笔记
var 可以使编译器自动确定一个合适的类型例如 var x = 10; 则在编译时自动将x变量设为INT型。如下函数void optMethod(int first, double second = 0.0, string third = "Hello")可以用此方法调用optMethod(first : 99, second : 123.45, third : "Worl原创 2011-11-10 19:53:04 · 642 阅读 · 0 评论 -
使用NTP协议获取网络时间代码
协议包:转载 2014-04-21 20:59:11 · 12949 阅读 · 4 评论 -
带有可变参数的宏
在1999年版本的ISO C 标准中,宏可以象函数一样,定义时可以带有可变参数。宏的语法和函数的语法类似。下面有个例子:#define debug(format, ...) fprintf (stderr, format, __VA_ARGS__)这里,‘…’指可变参数。这类宏在被调用时,它(这里指‘…’)被表示成零个或多个符号,包括里面的逗号,一直到到右括弧结束为止。当被调用时,在宏转载 2009-06-05 17:04:00 · 700 阅读 · 0 评论 -
MFC程序带参数运行
下面的例子可以用来判断程序运行的时候是否使用了-c,-s或者-p选项,具体程序中大家可以按照例子做简单改动即可。第一步:从CCommandLineInfo重载一个类CWzdCommandLineInfo,实现方式如下#if !defined WZDCOMMANDLINEINFO_H#define WZDCOMMANDLINEINFO_H// WzdCommandLineInf转载 2009-05-02 23:28:00 · 770 阅读 · 0 评论 -
MFC中Arc与ArcTo的区别
Arc与ArcTo函数皆为MFC下的绘弧函数,实际就是从一个椭圆中截取一部分下来而形成的。BOOL ArcTo( LPCRECT lpRect, POINT ptStart, POINT ptEnd);其中lpRect为弧形所属的矩形区域,椭圆就是根据这个矩形而生成的。ptStart,ptEnd作用是用来指定弧形的开始点/结束点,真实的弧形开始点/结束点就是ptStart/pt原创 2008-10-15 17:35:00 · 8593 阅读 · 1 评论 -
直接调用类成员函数地址
一、成员函数指针的用法 在C++中,成员函数的指针是个比较特殊的东西。对普通的函数指针来说,可以视为一个地址,在需要的时候可以任意转换并直接调用。但对成员函数来说,常规类型转换是通不过编译的,调用的时候也必须采用特殊的语法。C++专门为成员指针准备了三个运算符: "::*"用于指针的声明,而"->*"和".*"用来调用指针指向的函数。比如: class tt { public: voi转载 2008-10-30 10:42:00 · 757 阅读 · 0 评论 -
用点乘求点到线段的距离
#include #include struct POINT{double x,y;void Offset(POINT A) //相对A偏移{ x=x+A.x; y=y+A.y;}POINT operator - ( POINT &A ){ POINT X; X.x = x-A.x; X.y = y-A.y; return X;}};double Dist(POINT转载 2008-11-13 14:30:00 · 1640 阅读 · 0 评论 -
MFC中SetWorldTransform函数中XFORM结构体的使用
使用XFORM来控制DC时,需要先设置绘图模式SetGraphicsMode为GM_ADVANCED,再用SetWorldTransform。否则SetWorldTransform函数会失败映射后的坐标与映射前的坐标关系为x = x * eM11 + y * eM21 + eDx, y = x * eM12 + y * eM22 + eDy, 若要设置缩放比例,则只需设置eM11和eM22为相原创 2008-11-15 20:09:00 · 2897 阅读 · 0 评论 -
VISTA注册ActiveX控件出现 0x80040200的处理方法
在VISTA下注册ActiveX控制时可能会出现对DllRegisterServer的调用失败,错误代码为0x80040200的错误消息,引起这个错误的原因是启用了UAC检验系统,若要顺利注册模块,可以关闭UAC或以管理员权限注册此控件。 稍微为方便但不失安全性的方法为找到命令提示符的快捷方式,右键点击快捷方式,选择以管理员身份运行,然后在里面调用REGSVR32 XXX.OCX就可原创 2008-12-24 21:24:00 · 6519 阅读 · 6 评论 -
对话框程序无法响应菜单更新的问题
对话框中的菜单无法响应ON_COMMAND_UI消息,也无法在点击菜单的时候用SETCHECK来达到设置菜单是否打勾的目的,因此只能通过另外的方法解决: 解决方法为: 使对话框响应WM_INITMENUPOPUP消息,然后在消息响应中加入以下代码(以下代码为MFC的FRAME响应菜单更新的源代码) ASSERT(pPopupM原创 2008-12-28 16:25:00 · 1493 阅读 · 1 评论 -
从注册表获取所有的串口
if(::RegOpenKeyEx( HKEY_LOCAL_MACHINE, _T("Hardware//DeviceMap//SerialComm"), NULL, KEY_READ, &hKey ) == ERROR_SUCCESS ) //打开串口注册表对应的键值 {转载 2009-03-31 12:58:00 · 6775 阅读 · 0 评论 -
ASCII到UNICODE转换
// 复制字符串到临时空间并加上/0,以便MultiByteToWideChar使用 char* pRecvStr = new char[size + 1]; memcpy(pRecvStr, pRecvDat, size); pRecvStr[size] = /0; int index = 0; /原创 2009-04-17 22:24:00 · 884 阅读 · 0 评论 -
怎样读取资源文件中的文件
// 将鼠标文件释放到临时文件中以便读取 HRSRC hResource = FindResource(GetModuleHandle(NULL), MAKEINTRESOURCE(IDR_ANI_AIM), _T("ANI_CURSOR")); if(hResource) { HGLOBAL hg = LoadRes原创 2009-05-02 21:31:00 · 797 阅读 · 0 评论 -
关于对话框最小化到托盘后,点击托盘图标后只在任务栏显示而无法还原窗口的解决方法。
在跟随网上的贴子做完怎样将程序缩小到托盘和怎样还原之后,发现网上所说的只用ShowWindow(SW_SHOW)只能将程序在任务栏显示出来,而并不会自动还原到最小化之前的状态(也就是仍然是最小化的,要想看窗口仍然只能在任务栏上点击程序,以使程序恢复),不符合程序设计习惯,因此尝试在使用ShowWindow函数之后使用SetWindowPos函数,但是无论里面的参数怎样设置也无法将窗口自动还原;原创 2009-02-21 17:23:00 · 10524 阅读 · 6 评论