草庐IT

windows - 我怎样才能知道我的进程被允许创建多少个 GDI 对象?

有一个注册表项,我可以在其中检查(和设置)当前为进程设置的GDI对象配额。但是,如果用户更改该注册表项,该值将保持旧值直到重新启动。在我的程序中,我需要知道是否有办法以编程方式确定我可以创建多少个GDI对象。是否有获取当前进程的GDI信息的API?在系统层面呢? 最佳答案 总是很难证明API的绝对缺失,但这个API是95%不行的。许多系统设置都是通过注册表配置的,没有API可以在之后进行调整。RaymondChen对此类问题的典型回答是“如果你想知道,那你就做错了”。它适用于此,默认的10,000个句柄配额是巨大的。

windows - 如何在 Windows 中生成 OSD?

我想创建一个屏幕显示,即文本或简单图形出现在所有其他显示内容之上。我知道在Linux中这是通过xosd实现的,但在Windows中如何实现?(假设XP和更高版本,如果它更容易,我也很想知道Vista/7中的方法是否不同) 最佳答案 您可以使用NativeWindow按照说明执行此操作here.ThearticleexplainshowtocreateanOSDwindowwithanimation/semi-transparenteffects,inC#,usingtheNativeWindowclass.

c - 检测 Windows 中的总 RAM 变化

如果系统RAM总量发生变化,Windows中是否有回调通知我的应用程序? 最佳答案 如果您可以获取_InstanceCreationEvent,您也许可以通过WMI执行此操作和_InstanceDeletionEvent上课Win32_PhysicalMemory.有示例代码here(WMI不适合在C或C++中使用,抱歉-C#会更容易)。只需在此处使用Win32_PhysicalMemory而不是Win32_Process使您监听的查询:hres=pSvc->ExecNotificationQueryAsync(_bstr_t("W

c - 如果变体具有 INF 或 NAN 值,如何使变体的 ChangeType float ?

我在变体中有浮点值,最初这个变体是一个bstr类型。我正在使用VariantChangeType更改为浮点类型。然后我从中获取浮点值,然后我将其转换为字节vector格式。如果变体具有浮点值,则可以正常工作。如果变体具有INF值,则VariantChangeType会失败。所以我从variant.fltVal中得到0。如果变体具有INF或NAN值,如何将类型更改为float?我想以浮点形式获取INF或NAN值。Convert(_variant_tvarVal,vectordataArr){HRESULThr=VariantChangeType(varVal&,&varVal,0,VT_

windows - 如何在 BITMAP 被 win32 加载后编辑它

使用LoadImage从文件加载BITMAP后:HBITMAPrenderBMP=(HBITMAP)LoadImage(NULL,filePath,IMAGE_BITMAP,0,0,LR_DEFAULTSIZE|LR_LOADFROMFILE);有没有办法轻松地单独访问和编辑像素?我可以用它来获取位图对象,但它似乎没有帮助,BITMAPbm;GetObject(renderBMP,sizeof(bm),&bm);因为结构体中bmBits的值为0。更新:现在我遇到了这个解决方案的错误:structPixel{unsignedcharr,g,b,a;};voidFrame::PushMem

c++ - 无法获得设备中的处理器速度

您好,我正在使用QueryperformanceFrequency来获取周期数,即处理器速度。但它向我展示了错误的值(value)。规范中写的是处理器大约是400MHz,但我们通过代码得到的是16MHz。请提供任何指针:Wince设备的代码是:LARGE_INTEGERFrequnecyCounter;QueryPerformanceFrequency(&FrequnecyCounter);CStringtemp;temp.Format(L"%lld",FrequnecyCounter.QuadPart)`AfxMessageBox(temp);谢谢,穆克什

windows - 我可以创建一个设备上下文,它只是另一个设备上下文的一部分吗?

我已经将一个图形控件子类化,该控件将设备上下文句柄HDC作为输入并用于绘图。我的新控件只是以较大图像为中心的原始控件。我希望能够调用原始控件的Draw()方法以进行代码重用,但我不确定如何继续。思路是这样的:voidCCheckBox::DrawCtrl(HDChdc,HDChdcTmp,LPSIZEpCtlSize,BYTEalpha){//originalmethoddrawsacheckbox}voidCBorderedCheckBox::DrawCtrl(HDChdc,HDChdcTmp,LPSIZEpCtlSize,BYTEalpha){//Drawmyimagehere//

windows - 拖动控制面板项时从 CIDA 获得错误的 PIDL

我现在正在处理拖放问题,并试图获取从Windowsshell拖到我的应用程序的项目的PIDL。如果拖动的项目是“我的电脑”或“控制面板”本身,下面的代码可以获得正确的PIDL,但当拖动的项目是“控制面板”中的项目时,它不起作用。我的代码有什么问题?#defineGetPIDLFolder(pida)(LPCITEMIDLIST)(((LPBYTE)pida)+(pida)->aoffset[0])#defineGetPIDLItem(pida,i)(LPCITEMIDLIST)(((LPBYTE)pida)+(pida)->aoffset[i+1])STGMEDIUMmedium;UI

windows - SetSystemTimeAdjustment 函数 - Windows

我正在开发一个使用SetSystemTimeAdjustment函数的应用程序。但是,调用该函数时出现权限错误-错误代码1314。我已经更新了我在Windows中的“用户权限”以作为操作系统运行并设置系统时间以包括管理员、用户,但我仍然遇到错误。这是代码示例(不是实际的,但类似于):http://winterdom.com/dev/security/tokens 最佳答案 错误代码1314清楚地表明,您没有启用成功运行函数SetSystemTimeAdjustment所需的权限SE_SYSTEMTIME_NAME.您可以找到一个如何

c++ - 检测非标准滚动条

有没有办法用WinAPI检测窗口是否有非标准滚动条(例如,窗口可以自己绘制滚动条而不是使用标准滚动条)? 最佳答案 我不太确定这是否可行,但这只是一个想法。滚动条属于必须在启用此样式的情况下创建的窗口。因此,您可以检查您的窗口是否包含WS_VSCROLL样式,如果是-这是标准滚动条。相反,它是由其他人绘制的。可以这样查看://AssumethatawindowhandlehWndisknownintstyle=GetWindowLong(hWnd,GWL_STYLE);BOOLbStandard=((style&WS_VSCROLL