草庐IT

wide-winapi

全部标签

c++ - WinAPI 中的 sz 和 pwsz 前缀

我现在对WinAPI中用于CHAR字符串和WCHAR字符串的匈牙利符号前缀有点困惑。当我们使用CHAR字符串时,通常会使用这样的前缀:CHARszString[]="Hello";我们有一个以零结尾的字符串szString,所以一切都很好。但是当我们使用WCHAR字符串时,通常会使用这样的前缀:WCHARpwszString[]=L"Hello";它代表指向以零结尾的宽字符串的指针……但是我们的类型看起来不是这样的。指向以零终止的宽字符串的指针是WCHAR**或PWSTR*。我错了吗?为什么CHAR字符串是sz而WCHAR字符串是pwsz而不是wsz? 最佳

c++ - 程序是否应该检查 "shouldn' t"但可以失败的 WinAPI 函数的失败?

最近我正在更新一些用于使用GetWindowDC->CreateCompatibleDC->CreateCompatibleBitmap->SelectObject->BitBlt->GetDIBits系列WinAPI函数截屏的代码。现在我检查所有这些是否失败,因为它们有时会失败,而且确实会失败。但随后我必须通过删除创建的位图、删除创建的dc和释放窗口dc来执行清理。在我见过的任何示例中——甚至在MSDN上——相关函数(DeleteObject、DeleteDC可能失败。这只是一个值得注意的例子,因为这些调用彼此相邻。但偶尔会有其他功能可以失败但实际上永远不会失败。如GetCursor

c++ - winapi 函数的函数指针 (stdcall/cdecl)

有人可以给我一些为MSwinapi函数创建函数指针的技巧吗?我正在尝试为DefWindowProc(DefWindowProcA/DefWindowProcW)创建指针,但出现此错误:LRESULT(*dwp)(HWND,UINT,WPARAM,LPARAM)=&DefWindowProc;errorC2440:'initializing':cannotconvertfrom'LRESULT(__stdcall*)(HWND,UINT,WPARAM,LPARAM)'to'LRESULT(__cdecl*)(HWND,UINT,WPARAM,LPARAM)'我不知道我需要使用什么,因为我

c++ - 如何使用 C++/WinAPI 绘制具有透明背景的文本?

如何使用WinAPI绘制透明颜色的文本?通常我使用SetBkMode(hDC,TRANSPARENT),但现在我需要使用双缓冲区。这样图像绘制正确,但文本绘制不正确(黑色背景)。caseWM_PAINT:{hDC=BeginPaint(hWnd,&paintStruct);SetBkMode(hDC,TRANSPARENT);HDCcDC=CreateCompatibleDC(hDC);HBITMAPhBmp=CreateCompatibleBitmap(hDC,width,height);HANDLEhOld=SelectObject(cDC,hBmp);HFONThFont=(HF

c++ - 海森堡 : WinApi program crashes on some computers

求助!我真是无计可施了。我的程序是一个小的个人笔记管理器(谷歌搜索“cintanotes”)。在某些计算机上(当然我不拥有它们)它在启动后立即崩溃并出现未处理的异常。这些计算机没有什么特别之处,只是它们往往配备AMDCPU。环境:WindowsXP、VisualC++2005/2008、原始WinApi。关于这个“Heisenbug”,可以肯定的是:1)崩溃仅发生在Release版本中。2)一旦我删除了所有与GDI相关的内容,崩溃就会消失。3)BoundChecker没有任何提示。4)写日志显示崩溃发生在局部int变量的声明上!怎么可能呢?内存损坏?任何想法将不胜感激!更新:我已经成功

c++ - 有没有人在 C++/WinAPI 中有类似 FileSystemWatcher 的类?

我需要原始C++/WinAPI中的.NetFileSystemWatcher模拟。我几乎开始使用FindFirstChangeNotification/FindNextChangeNotification自己编写代码,但后来我想到我可能不是第一个需要它的人,也许有人愿意分享。理想情况下,我需要的是一个可以按如下方式使用的类:FileWatcherfw;fw.startWatching("C:\MYDIR","filename.dat",FileWatcher::SIZE|FileWatcher::LAST_WRITE,&myChangeHandler);...fw.stopWatchi

c++ - C 库与 WinApi

许多标准c库(fwrite、memset、malloc)函数在WindowsApi(WriteFile、FillMemory/ZeroMemory、GlobalAlloc)中有直接的等价物。除了可移植性问题,应该使用什么,CLIB或WindowsAPI函数?C函数会调用WindowsApi函数还是相反? 最佳答案 C库没有什么神奇之处。它只是一个用于从操作系统访问公共(public)服务的标准化API。这意味着它是在操作系统之上实现的,使用操作系统提供的API。根据您的情况使用任何有意义的。C库是可移植的,Win32不是。另一方面,

c++ - WinAPI:如何确定网络何时正在识别?

当通过以太网连接一些设备时,我可以看到“网络连接”面板中的适配器状态更改为“识别网络”。我想使用C++WindowsAPI查询此状态。我正在我的项目中实现一些动态ipconfig/all列表。当网络接口(interface)上的网络正在识别时,我想显示“正在识别网络”。我知道INetwork接口(interface),但令人恼火的是它只能通过COM访问。还有别的办法吗?也许来自有关网络接口(interface)本身的信息? 最佳答案 INetwork是怎么知道的?如果你会在系统文件中搜索相关的属性包键L"NA_NetworkClas

windows - WinAPI - 如何绘制虚线?

我使用WinAPIGDI方法创建HPEN:HPENhPen=CreatePen(PS_DOT,1,color);然后使用方法MoveToEx和LineTo画线。事实上,绘制的线是虚线。3个像素为空,3个像素为彩色--虚线。为什么PS_DOT样式不画虚线?如何使用WinAPI绘制虚线? 最佳答案 这是我在CodeProject上找到的MaxHacher的精彩解决方案(http://www.codeproject.com/KB/GDI/DOTTED_PEN.aspx)LOGBRUSHLogBrush;LogBrush.lbColor=c

winapi - 使 MessageBox 保持在其他窗口之上

我有一个调用MessageBox的TimerProc。我希望MessageBox位于其他窗口之上。因此,例如,父窗口设置计时器,然后我在其上移动另一个窗口。当计时器触发时,我想让MessageBox出现在覆盖应用程序的窗口顶部。这可能吗?我应该怎么做? 最佳答案 我想你想让它成为MB_SYSTEMMODAL的系统模式,如所述here.和/或使位于顶部的窗口成为MessageBox的所有者。 关于winapi-使MessageBox保持在其他窗口之上,我们在StackOverflow上找到