
VC++
文章平均质量分 88
Python
这个作者很懒,什么都没留下…
展开
-
Unicode字符串与CString字符串之间的互相转换
在写程序时,尤其是使用COM组件时,很可能会遇到Unicode字符串与CString字符串之间互相转换,这里给出两者互相转换的代码,方便使用。除非你能确认你需要转换的字符串的类型,否则应该先用IsTextUnicode进行判断。如: if (IsTextUnicode(pData, lDataSize, NULL)) // IsUincode else原创 2006-01-27 16:07:00 · 4518 阅读 · 0 评论 -
在程序或DLL中调用自定义资源
以二进制资源为例,这样可以在资源保存任何形式的数据,包括.exe文件等。HRSRC hRes = NULL;HGLOBAL hResData = NULL;DWORD dwSize = 0;BYTE* pSrc = NULL;HINSTANCE hInst = AfxFindResourceHandle(MAKEINTRESOURCE(IDR_BIN_DSUM), L"BIN"原创 2008-06-17 22:10:00 · 1372 阅读 · 0 评论 -
通过Proxy访问http文件
可参考如下代码//Download http file through proxyCString GeHttptFile(CString sUrl){ CString sContent; char sProxyList[MAX_PATH], sUsername[64], sPassword[64]; //in this case "pro原创 2008-06-19 16:29:00 · 1227 阅读 · 0 评论 -
COM组件返回字符串数组
STDMETHODIMP CDSUpdate::GetUpdateFileList(VARIANT* sFileList){ AFX_MANAGE_STATE(AfxGetStaticModuleState()); SAFEARRAY * psa; SAFEARRAYBOUND rgsabound[1]; VARIANT var; CComBSTR bstrTmp; l原创 2008-06-20 12:04:00 · 1767 阅读 · 0 评论 -
对于大于9的串口的打开方法
对于大于COM9的串口,需要用//./COMXXX进行打开,如: hPort = CreateFile("////.//COM14", ...);原创 2010-04-27 10:28:00 · 1431 阅读 · 0 评论 -
VC获得MAC的几种方法
使用VC获得网卡MAC地址的两种方法:通过NetBIOS和通过GetAdaptersInfo函数。原创 2010-07-02 09:52:00 · 2261 阅读 · 0 评论 -
FAT32 DBR结构
FAT32 DBR结构 typedef struct _FAT32_DBR{ BYTE Jmp[3]; //JMP instruction BYTE OEM[8]; //OEM INT16 Bytes_Per_Sector; INT16 Sectors_Per_Cluster; INT16 Reserved_Sectors原创 2010-05-19 15:48:00 · 5488 阅读 · 1 评论 -
实现控件透明背景的几种方案
实现控件透明背景有如下几种方案:在父窗口中,通常是对话框中响应WM_CTLCOLOR消息,在OnCtlColor函数中修改对应CONTROLID的所有控件的背景色。如:if (pWnd->GetDlgItemID()==IDC_STATIC) //IDC_STATIC为你的控件名 { pDC->SetBkMode(TRANSPARENT); return (H原创 2010-05-28 10:09:00 · 2413 阅读 · 0 评论 -
使VC Dialog窗体拥有透明效果的API(转)
使VC Dialog窗体拥有透明效果的API(转)原创 2010-06-01 12:11:00 · 1826 阅读 · 0 评论 -
CStdioFile.WriteString无法向文件写入中文
CStdioFile.WriteString向文件中写入字符串,但字符串中带有中文的,无法写入。原创 2010-06-11 09:47:00 · 2996 阅读 · 0 评论 -
CRichEditCtrl加载 rtf 文件和字符串的方法
CRichEditCtrl类没有直接赋值 rtf 的方法,需要通过回调函数的方式加载。本文介绍的几种方法,主要用于加载 rtf 字符串。原创 2010-06-11 10:05:00 · 3545 阅读 · 0 评论 -
Visual Studio 2008/2010 版本控制宏
在进行软件开发时,程序的版本控制非常重要。我控制版本的方案如下:版本号一般如下形式:AA.BB.CC.DDDD。其中AA,BB,CC由自己定义,DDDD由我做的版本控制宏自动递增。AA代表大版本号,有大的更新和功能增加时改变此号码。此版本升级后,BB、CC清零。BB代原创 2010-06-21 12:31:00 · 3472 阅读 · 2 评论 -
等待指定线程结束
//该函数用于提升程序的权限,使之可以等待进程结束bool CDSUMDlg::EnableDebugPrivilege(){ HANDLE hToken; bool bSucceed = false; if (OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES, &hToken)) { TOKE原创 2008-06-13 13:19:00 · 4357 阅读 · 0 评论 -
获得指定进程名的进程ID列表
该函数可用于获得指定进程名的进程ID列表void CDSUMDlg::GetProcessIDList(CString sProcessName, CArray& arrayProcessID){ HANDLE hProcessSnap = NULL; PROCESSENTRY32 pe32 = {0}; HANDLE hParentProcess = NULL; DWOR原创 2008-06-13 12:42:00 · 4329 阅读 · 0 评论 -
通过WM_COPY进行跨进程数据传递
注意事项: 必须用SendMessage,不能用PostMessage。 可以发送自定义的数据结构,但是数据结构中不能有指针,引用等。 发送端:sTmp.Format(L"Test data string.";COPYDATASTRUCT cpd;cpd.dwData = 0;cpd.cbData = sTmp.GetLength() * 2 +原创 2008-06-12 10:23:00 · 1745 阅读 · 0 评论 -
RichEdit中显示的控制
关于RichEdit使用的几个经验代码 该段代码的功能为在RichEdit中显示指定的字符串(pPreview,类型为BYTE*),可以为 text 或者 rtf 之类。在有滚动条的情况下,会自动进行滚动,从第一行起始处显示。在显示 rtf 后再显示普通文本时,不会沿用上一个 rtf 中的格式。其中之所以采用BYTE*型的pPreview,而不使用CString型的sPrev原创 2006-01-26 10:34:00 · 3658 阅读 · 0 评论 -
进程退出前删除自身EXE
下面的代码由Gary Nebbett写就.Gary Nebbett乃是WINDOWS NT/2000 NATIVE API REFERENCE的作者.乃NT系统一等一的高手.下面就分析一些他的这段代码. 这段代码在PROCESS没有结束前就将启动PROCESS的EXE文件删除了. int main(int argc, char *argv[]) { HMODULE module = GetModu转载 2006-01-27 15:35:00 · 1996 阅读 · 0 评论 -
获得当前Windows操作系统版本的详细描述信息
获得当前Windows操作系统版本的详细描述信息。目前支持的版本到Windows 2003。CString GetOSDesc(void){ CString sOSInfo, sTmp; OSVERSIONINFOEX osvi; BOOL bOsVersionInfoEx; sOSInfo = "N/A"; // Try calling GetVersionEx u原创 2006-01-26 15:23:00 · 2081 阅读 · 0 评论 -
编写适应Unicode与非Unicode编译环境的代码的几点经验
我们编写的程序,有时会遇到需要编译支持Unicode和不支持Unicode的两个版本,在VS2005中可以通过项目的属性进行设置。在变更设置后,我们编译程序时会发现对于字符串的处理,两个版本是完全不一样的。如何能够尽可能不改动源代码呢?这就需要我们在编写程序时使用两种环境下都可以使用的字符串函数。以下是我目前知道的几点经验: 对于常量字符串,使用TEXT()宏或_T()宏进行处理。如原创 2006-02-04 00:29:00 · 1770 阅读 · 0 评论 -
通过Proxy下载文件
一段从优快云论坛帖子中摘录的代码//Download http file through proxyCString GeHttpFile(const char *url){CString szContent;char strProxyList[MAX_PATH], strUsername[64], strPassword[64];//in this case "proxya" is the转载 2006-03-09 15:38:00 · 3479 阅读 · 0 评论 -
How to get IE proxy setting?
Maybe we can use function "WinHttpGetIEProxyConfigForCurrentUser" to get the IE proxy setting. The application must be running as a user account to obtain these settings.原创 2006-03-09 16:40:00 · 2453 阅读 · 1 评论 -
获得父进程的方法
可以通过下面这段代码获得当前进程的父进程。 HANDLE hProcessSnap = NULL; PROCESSENTRY32 pe32 = {0}; HANDLE hProcessParent = NULL; DWORD dwParentProcessID = 0; hProcessSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,原创 2006-02-10 00:23:00 · 3011 阅读 · 0 评论 -
让自己的程序界面实现XP风格的两种方法
让自己的程序界面实现XP风格 编写一个.manifest文件,将文件名定为和.exe文件同名,并将其与.exe文件放在同一个文件夹里。 保存.mainfest文件为任意名称,如XPStyle.manifest。将其复制到工程所在目录,再用记事本或其它文本编辑工具手动修改工程目录下的资源文件(.rc),在文件最后加上一行:1 24 "XPStyle.manifest"("1原创 2006-11-15 10:05:00 · 1756 阅读 · 0 评论 -
启动一个进程并获得其主窗口句柄
通过以下两个函数可以实现启动一个进程并获得其主窗口句柄。BOOL CALLBACK CDSUpdate::EnumDSUMWindowsProc(HWND hwnd, LPARAM lParam){ DWORD dwID; EnumParam* pEP = (EnumParam*)lParam; GetWindowThreadProcessId(hwnd, &原创 2008-06-12 10:18:00 · 5530 阅读 · 0 评论 -
基于对话框的程序如何启动时不可见
将如下代码加入OnInitDialog中即可。 WINDOWPLACEMENT wp; wp.length = sizeof(WINDOWPLACEMENT); wp.showCmd = SW_HIDE; SetWindowPlacement(&wp);原创 2008-06-12 16:09:00 · 1080 阅读 · 0 评论 -
通过内存映射文件实现进程间数据共享
以下方法必须保证进程2启动速度快,在进程1没有关闭内存映射文件前进行读取。其中的Sleep(1000)就是在等待进程2启动后读取数据。//Process 1 HANDLE hMapFile; LPCTSTR pBuf; hMapFile = CreateFileMapping(INVALID_HANDLE_VALUE, NULL, PAGE_READWRITE, 0, 256, L原创 2008-06-11 12:18:00 · 2478 阅读 · 0 评论 -
C++开发WPF,Step by Step
示例代码使用C++来开发WPF,主要是如何在MFC(Win32)的窗口中Host WPF的Page。下面我就做个详细的介绍.一、创建工程, 由于MFC的Wizard会生成很多用不到的代码,所以我准备从一个空的工程开始创建一个MFC的工程。a) 打开VS2005,菜单File->New->Projects…, 左面选择Visual C++->Win32,右面选择Win32转载 2012-03-23 17:59:59 · 2290 阅读 · 0 评论