随笔分类 -  MFC

About MFC Programming on Windows
摘要:当我们启动一个子进程, 打开读写管道,同时设置子进程继承这些管道的句柄, 我们就可以操作子进程的标准输入和标准输出了。 这样有个弊端,子进程会继承父进程打开的所有文件句柄。 如果子进程不退出,一直持续任务,那么,被打开的文件就无法重命名和删除了。 有两个解决的办法: 1. CreateFile的时候 阅读全文
posted @ 2016-04-01 19:07 Jojodru 阅读(6178) 评论(0) 推荐(0)
摘要:代码如下:打开USB Hub设备之后,返回句柄hHubDevice,然后使用EnumerateHubPorts来枚举Hub的端口。疑问在代码的中文注释中。 1 bool CUsbEnumHub::EnumerateHubPorts(HANDLE hHubDevice, ULONG NumPorts, UsbItem* pRootItem) 2 { 3 ULONG index; 4 BOOL bSuccess; 5 PUSB_NODE_CONNECTION_INFORMATION_EX connectionInfo; 6 ... 阅读全文
posted @ 2013-07-26 21:25 Jojodru 阅读(2963) 评论(1) 推荐(0)
摘要:IDE生成的代码,运行几次之后开始出现以下这个错误Error: must call SetScrollSizes() or SetScaleToFitSize() before painting scroll view.该错误非常傻逼,因为并未修改该IDE生成的任何代码,只是运行几次之后就出现了。刚开始我以为是IDE出错,重启,故障依旧。后来调试发现,原来是在程序初始化时出错了。程序初始化时从注册表加载数据,然后在OnDraw在OnInitialUpdate运行了,就出现了这个错误。解决办法就是不要用IDE生成的初始化加载注册表的代码在CXXApp里面注释掉下面这行代码LoadStdProfi 阅读全文
posted @ 2013-06-25 16:19 Jojodru 阅读(435) 评论(0) 推荐(0)
摘要:Windows编程,程序传参,参数分析代码本代码主要是将文件类型参数和非文件类型参数分开。 1 typedef std::vector<const TCHAR*> ParamVector; 2 3 void parseCommandLine(TCHAR * commandLine, ParamVector & paramVector) { 4 //params.erase(params.begin()); 5 //remove the first element, since that is the path of the executable (GetCommand... 阅读全文
posted @ 2013-01-14 15:08 Jojodru 阅读(612) 评论(0) 推荐(0)
摘要:1 #define YEAR_BEGIN 1970 2 #define LEAPYEAR_DAY 366 3 #define NORMALYEAR_DAY 365 4 #define JANUARY 31 5 #define MARCH 31 6 #define APRIL 30 7 #define MAY 31 8 #define JUNE 30 9 #define JULY 31 10 #define AUGUST ... 阅读全文
posted @ 2012-10-08 11:53 Jojodru 阅读(950) 评论(0) 推荐(0)
摘要:经过一段时间的debug和修改,现在的接口趋近于完善了,把代码贴上来共享用法:1.声明一个按钮变量CRgnButton m_BtnBall;2.在父窗口初始化函数中加入如下代码:m_BtnBall.SubclassDlgItem(IDC_BALL, this);m_BtnBall.SetSkin(IDB_BALL_NORMAL, IDB_BALL_DOWN, IDB_BALL_FOCUS);m_BtnBall.SetToolTipText(_T("Ball"));这样就可以将对象m_BtnBall和对话框上的按钮关联起来。按钮最少需要3张图片:普通显示,按下去显示,焦点显示 阅读全文
posted @ 2012-09-05 11:10 Jojodru 阅读(2289) 评论(0) 推荐(1)
摘要:创建后台进程之前先判断进程时候有在运行,如果有,则直接返回,否则创建。创建后台进程,放进单独线程里面做比较好,然后在其他线程可以同时做一些初始化或者其他的工作,当然这些工作必须和后台没有联系,和后台有联系的必须放在后台创建完成之后。本例子以创建adb后台server为例做的。废话不多少,代码如下: 1 #include <Tlhelp32.h> 2 3 #define DEAMON_FILE _T("adb.exe") 4 BOOL IsProcessIsRun(LPCTSTR lpProcessName); 5 6 BOOL IsProcessIsRun(LP 阅读全文
posted @ 2012-09-03 11:11 Jojodru 阅读(1921) 评论(0) 推荐(0)
摘要:手头一个项目要用到adb通信,网上找了个adb for vs2008的版本,改了一些,编译测试通过。需要zlib,如果读者vs2008版本和笔者不一致,则需要重新编译zlib,负责链接失败。zlib编译方法:从vs2008开始菜单进入vs2008的命令行窗口,cd到zlib目录,然后输入命令编译即可:nmake -f win32/Makefile.msc LOC="-DASMV -DASMINF"OBJA="inffas32.obj match686.obj"迅雷快传附件附上adb for vs和zlib的压缩包。http://pan.baidu.com 阅读全文
posted @ 2012-08-30 19:02 Jojodru 阅读(541) 评论(2) 推荐(0)
摘要:使用白色作为透明色Mask创建不规则region发几张图片(程序以bmp做例子,但是论坛不能传bmp)上来做个具体例子:normaldownfocusdiablemask 1 //Header File 2 3 #pragma once 4 5 6 // CRgnButton 7 8 #define WM_CXSHADE_RADIO WM_USER+0x100 9 #define ALLOC_UNIT 10010 11 class CRgnButton : public CButton12 {13 DECLARE_DYNAMIC(CRgnButton)14 15 pub... 阅读全文
posted @ 2012-08-23 17:30 Jojodru 阅读(795) 评论(1) 推荐(0)