草庐IT

c++ - 如何在 C++ Win32 中捕获鼠标在标题栏上的移动?

我有一个自定义的窗口标题栏。我还在这个栏上画了一个位图,我想知道什么时候有人用鼠标光标悬停在它上面。我已经处理了WM_NCMOUSEMOVE消息,但这似乎只在边界上触发,而不是我的标题区域本身。如何检测鼠标何时位于标题栏的特定区域?这是使用VisualC++2010。更新:我已经在一定程度上解决了这个问题。我(故意)没有在窗口上设置WS_CAPTION样式,而是处理WM_NCCALCSIZE并手动调整非客户区的大小-将其向下移动在这种情况下为20像素。这意味着我“强制”为非客户区的区域不会收到WM_NCMOUSEMOVE消息,但也不会收到WM_MOUSEMOVE消息。一种绕过它的方法是

c++ - 如何使用 Qt 在 Windows 上检查网络接口(interface)类型是以太网还是无线?

我需要找出PC上的网络接口(interface)类型是有线还是无线。我尝试使用提供适配器名称的QNetworkInterface类。但是Windows上的用户可以更改适配器名称。在Mac上,我可以检查接口(interface)类型为eth0或eth1,因为它对所有用户都是相同的。我也试过QNetworkConfiguration::bearerType,但我得到的配置是以太网,即用于有线和无线配置的BearerEthernet。有没有其他方法可以在Qt中或使用特定于Windows平台的API找出网络接口(interface)类型? 最佳答案

c++ - Windows 8(.1) 比需要多睡 1 毫秒

Windows8.1x64上的休眠总是比需要多持续1毫秒。例如Sleep(1)持续大约2毫秒,Sleep(2)-3等。timeBeginPeriod设置为1。在Windows7按预期工作正常(没有多余的毫秒数)。这种行为是否正常/是否可以修复?#include#include#pragmacomment(lib,"winmm.lib")LARGE_INTEGERFrequency;longlongintGetCurrent(){LARGE_INTEGERcounter;QueryPerformanceCounter(&counter);return(1000000*counter.Qu

c++ - Win32 选项卡控件灰色背景

我正在努力使我在win32中的ui无处不在。问题是我的选项卡控件的背景不是白色的,所以不是选项卡本身,而是选项卡旁边的部分是灰色的。我正在为静态控件处理WM_CTLCOLORSTATIC,但它似乎不适用于选项卡控件。caseWM_CTLCOLORSTATIC:{HDChEdit=(HDC)w_param;SetBkMode(hEdit,TRANSPARENT);SetTextColor(hEdit,RGB(0,0,0));SetBkColor(hEdit,RGB(255,255,255));//DonotreturnabrushcreatedbyCreateSolidBrush(...

c++ - 获取某个桌面打开的所有进程

我正在开发一个应用程序,该应用程序在启动时创建一个新桌面,并使用组合键我可以在原始桌面和新桌面之间来回移动。创建时,在新桌面中启动一个新的explorer.exe进程,因此用户可以启动他想要的任何应用程序。当检测到发送退出命令的组合键时,新桌面关闭,我们回到原来的桌面,但用户在新桌面上启动的所有应用程序仍在运行。有没有办法获得在新桌面中打开的所有这些进程的句柄,有一个用于WindowStation的HANDLE和一个用于新桌面的HDESK句柄桌面? 最佳答案 感谢DavidHeffernan的想法,我找到了以下解决方案。有了桌面的H

c++ - 为什么 UuidFromString 函数请求非常量指针指向 unsigned char?

我不知道为什么UuidFromString函数需要非常量指向无符号字符的指针。为什么不用constchar*代替呢?我的想法是不需要修改第一个参数所指出的数据。 最佳答案 UuidFromString专为COM/DCOM而设计。unsignedchar是为了防止需要检查负数char值(默认char是signed,这意味着值的范围是[-128,127]-因为这个字符串应该是ANSI字符,这是避免条件检查的一种廉价方法)。它的姊妹函数(UuidToString)确实需要一个const输入参数。我在文档中看不到关于为什么UuidFromS

c++ - MFC:RadioButton 在 CWnd 的子类中不起作用(变灰)

简介:我有一个派生自CWND的类(自定义窗口)。这个自定义类有一个单选按钮(CButton)和一堆其他静态控件。问题:当创建单选按钮时,它是灰色的,点击它什么也不做。用于创建的代码非常简单:m_radioButton->Create(_T("rButton1.1"),WS_CHILD|WS_VISIBLE|BS_AUTORADIOBUTTON,CRect(5,5,300,15),this,2001);我试着添加ON_BN_CLICKED(2001,method())事件但未被触发。我也有ShowWindow()和EnableWindow()方法,但这也不起作用。问题:由于此类不是从CD

c++ - 手动签署 PE 文件

我正在尝试手动签署现有的可移植可执行文件。我正在按照thisdocument中的说明进行操作:将图像header加载到内存中。初始化哈希算法上下文。按照可选headerWindows特定字段中的规定,将图像header从其基址散列到校验和地址开始之前。跳过校验和,这是一个4字节的字段。按照可选header数据目录中的规定,对从校验和字段末尾到证书表条目开始之前的所有内容进行哈希处理。从证书表条目中获取属性证书表地址和大小。有关详细信息,请参阅PE/COFF规范的第5.7节。从计算中排除证书表条目,并对从证书表条目末尾到图像header末尾的所有内容进行哈希处理,包括节表(header)

c++ - 将函数指针从一种类型转换为另一种类型的最佳方法是什么?

我在StackOverflow上搜索了一个答案,但我没有得到任何关于这个问题的具体信息:只有关于使用各种类型的转换运算符的一般情况。因此,恰当的例子是使用WindowsGetProcAddress()API调用检索函数地址时,它返回类型为FARPROC的函数指针,其中:typedefINT_PTR(__stdcall*FARPROC)();.问题是,很少(如果有的话)寻求的实际函数具有此实际签名,如下面的MRCE代码所示。在这段代码中,我展示了将返回值转换为适当类型的函数指针的各种不同尝试,除第四种方法外,所有方法都被注释掉了:#include#includetypedefDPI_AW

c++ - SwapBuffers 使我的程序崩溃!

我有一个OpenGL程序可以在我所有的计算机上运行,​​但只有一台。这是一款配备Vista64和RadeonHD4850的台式机。问题似乎出在我对SwapBuffers(hdc)的调用中。它编译得很好,然后给我一个异常:Program.exe中0x00000000处的未处理异常:0xC0000005:访问冲突。在调用SwapBuffers之前使用VC++中断显示hdc的值为:0xfe011734{未使用=???}CXX0030:错误:无法计算表达式有人知道会发生什么吗?从一台PC到另一台PC,SwapBuffers有什么变化吗?我已经让它在XP32、XP64和(不同的)Vista64上