草庐IT

WinAPI-RedBlue

全部标签

c++ - 使用 WINAPI 如何更改复选框按钮的值?

目前我在WM_CREATE中创建了一个复选框:hwndButtonPollFlag=CreateWindow(TEXT("BUTTON"),TEXT(sA.getMonitor(monitorSelected)->szDevice),WS_CHILD|WS_VISIBLE|SS_WHITERECT|BS_CHECKBOX,0,0,0,0,hwnd,(HMENU)IDB_PollFlag,hInstance,NULL);每当单击另一个按钮时,我试图更改它的值:if(sA.getScreenArray(monitorSelected)->getPollFlag()){SetWindowLo

windows - DefWindowProc WinApi 的行为

有人可以解释为什么使用DefWindowProc一切正常,但如果我删除它,字符串“Hellowindows”会出现在没有窗口和任何按钮的屏幕上吗?"UpdateWindow"向窗口过程发送WM_PAINT消息,那么为什么显示了文本但跳过了窗口的创建?#includeLRESULTCALLBACKproc1(HWND,UINT,WPARAM,LPARAM);intWINAPIWinMain(HINSTANCEhInstance,HINSTANCEhPrevInstance,PSTRszCmdLine,intiCmdShow){staticTCHARszAppName[]=TEXT("Pr

c++ winapi listview项目已选中但未突出显示

这是包含ListView的对话框的dialogProc该对话框是通过我的应用程序主窗口中的一个简单按钮创建的。问题是ListView_SetItemState成功但项目未突出显示。同样,当我手动单击一个项目(图标)时,仅选择了该图标(突出显示)不是项目的整个RECT。感谢您的帮助。BOOLCALLBACKDialogProc(HWNDihDlg,UINTuMsg,WPARAMwParam,LPARAMlParam){TCHARpszfile[MAX_PATH];SIZEsize;intselected_icon,wn_v;charbuffer[MAX_PATH];LVTILEVIEWI

windows - 通过 WinAPI 确定英特尔高清显卡版本

所以我想通过WinAPI函数获取有关显卡的信息,但有一个关于如何获取我的确切显卡信息的问题。我已经编写了调用EnumDisplayDevices的代码,并且通过调用我收到了DeviceString“Intel(R)HDGraphicsFamily”。然而,这并没有告诉我确切的显卡,例如英特尔高清显卡系列有4200、4400等等(根据我的理解)。我搜索了更多的方法来查找此信息,甚至查看了注册表,它仍然引导我找到“Intel(R)HDGraphicsFamily”的描述字符串......现在我在这里。非常感谢任何能帮助我的人,它实际上是一个stackoverflow线程,它首先将我引向了E

windows - 如何为重叠窗口设置确切的客户端大小? (winapi)

当我创建一个普通的“重叠”窗口时,我想设置一个精确的客户端大小(比如300x300)。有一个AdjustWindowRectEx()函数,我可以在其中传递所需的客户端区域并获取我可以传递给CreateWindowEx的大小,但它说在文档中我不应该将它用于重叠的窗口我不明白为什么。当我通过300x300时,我从中得到306x326,当我收到WM_SIZE,客户端大小为298x298,因此它太小了2个像素。如何创建具有精确给定客户端大小的重叠窗口? 最佳答案 我的错误如下:AdjustWindowRectEx(&rect,WS_OVER

winapi - 用于虚拟内存管理的新 Windows 8.1 API : `DiscardVirtualMemory()` vs `VirtualAlloc()` and `MEM_RESET` and `MEM_RESET_UNDO`

Windows8.1/Server2012RC2刚刚引入了用于虚拟内存管理的新API:OfferVirtualMemory()、ReclaimVirtualMemory()、DiscardVirtualMemory()、它们的用法非常简单,只需查看它们的名称即可。我无法理解这些API如何针对VirtualAlloc()以及标志MEM_RESET和MEM_RESET_UNDO工作,以及什么是细微差别。对于OfferVirtualMemory(),MSDN说它与VirtualAlloc()+MEM_RESET非常相似,只是它从工作集,并限制对页面的进一步访问。所以,基本上它限制了对页面的访

c++ - 在 WinAPI 中为控制台应用程序处理窗口关闭事件的最简单方法是什么?

我正在使用WinAPI在C++中编写一个控制台多进程应用程序。所以我有Dispatcher(例如“Parent”)和Client(例如“Child”)进程。两个进程都是同步的:它们使用信号量、事件、互斥量和管道(所有这些都是标准的WinAPI句柄)。当用户键入“exit”命令时应用程序停止。如果用户这样做,调度程序进程会通知它的子进程,然后子进程释放其资源并执行另一个退出前程序以正确退出。但是有一件事困扰着我:如果用户按下窗口“关闭”按钮会发生什么?如果是这样,我应该听关闭事件,然后执行我的资源释放过程。处理窗口关闭事件的最简单方法是什么? 最佳答案

c++ - (WinAPI) 模拟 ComboBox 中的项目选择

我目前正在为具有自己的GUI的现有应用程序编写包装器。我无权访问原始应用程序的源代码(不幸的是)。我正在编写的程序是用C++编写的,我正在使用WinAPI。我正在通过模拟按钮时钟、勾选复选框等来操纵目标应用程序。我现在面临的问题如下:我需要在作为WinAPI实现的下拉列表中进行选择ComboBox.我正在使用宏ComboBox_SetCurSel来做到这一点.下拉列表中的选择正确更改。但是在原始应用程序中有一个只读文本框,它会根据组合框中的选择更改值。当我执行ComboBox_SetCurSel时,这个不会改变。我所做的假设是CBN_SELENDOK和/或CBN_SELCHANGE在C

c# - 在 Windows 8 Pro 平板电脑中使用 WinAPI 抛出 AccessViolationException

我正在尝试使用MagnificationAPI为32位Windows8Pro平板电脑编写辅助功能应用程序。应用程序可以完美地放大和缩小全屏,但是当放大时,点击事件被发送到未放大屏幕的错误位置,因此用户无法准确触摸到他所看到的内容。为了解决这个问题,我尝试了MagSetInputTransform(fSetInputTransform,rcSource,rcDest)。它适用于64位Windows8桌面,但当我在平板电脑上测试时,出现以下错误:System.AccessViolationException:Attemptedtoreadorwriteprotectedmemory.Thi

C# 相当于 C (WinAPI) 中的 DllMain

我有一个较旧的应用程序(大约2005年),它接受dll插件。该应用程序最初是为Win32C插件设计的,但我有一个可用的C#dll模板。我的问题:我需要做一些一次性初始化,这在Win32Cdll中将在DllMain中完成:BOOLAPIENTRYDllMain(HANDLEhModule,DWORDul_reason_for_call,LPVOIDlpReserved){[one-timestuffhere...]}是否有与此等效的C#?我的C#模板中没有“DllMain”。我尝试了文字C#解释,但没有成功:dll可以工作,但不会触发DllMain函数。publicstaticboolD