草庐IT

c++ - CWnd::CreateDlgIndirect 离开 m_hWnd==NULL

我正在处理的对话框未显示,使用:CWnd::CreateDlgIndirect(LPCDLGTEMPLATElpDialogTemplate,CWnd*pParentWnd,HINSTANCEhInst)对CreateDlgIndirect的调用是在lon-used基类中进行的,它有效地获取了资源文件中对话框模板的IDD-它适用于许多其他对话框,但我看不出我的对话框有什么不同。当以更正常的方式创建时,我的对话框工作正常,但我必须使用基类,因为它内置了许多其他功能。我在dlgcore.cpp中搜索CWnd::CreateDlgIndirect时发现,普通的Win32API调用失败了:hW

c++ - 如何获得鼠标点击的位置(以 x-y 坐标像素为单位)?

在C++(WIN32)中,如何获取鼠标点击屏幕的(X,y)坐标? 最佳答案 假设是普通的Win32API,在WM_LBUTTONDOWN的处理程序中使用它:xPos=GET_X_LPARAM(lParam);yPos=GET_Y_LPARAM(lParam); 关于c++-如何获得鼠标点击的位置(以x-y坐标像素为单位)?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/18572

c++ - WINAPI:查看来自其他进程的消息

我是WindowsAPI的新手,想知道如何查看另一个进程收到的消息。例如,我想获取记事本的HWND,并查看发送到该窗口的所有消息。我用C/C++编写代码。谢谢 最佳答案 您可以使用SetWindowsHookEx函数,带有WH_CALLWNDPROC或其他类型的钩子(Hook),以及here是一个例子。WH_CBT可以为您提供很好的机会,因为您可以从中获取HCBT_CREATEWND代码,并且它会在窗口之前发送给您创建,从而使您有可能提供自己的窗口过程而不是真实的窗口过程,然后能够使用它获取所有可能的消息。但请记住,更大的可能性也意

c++ - 解释 HRESULT 的声明/定义

刚刚看了VS2008中HRESULT的定义。WinNT.h具有以下行:typedef__success(return>=0)longHRESULT;具体是什么意思?在我未经训练的眼中,它甚至不像C或C++ 最佳答案 这是一个注解。简而言之,__success(expr)表示expr描述了函数被认为成功的条件。对于返回HRESULT的函数,该条件是返回值(因为HRESULT是一个long)是非负数。由于这个typedef,所有返回HRESULT的函数都应用了这个注释。在SALAnnotations上的MSDN中可能比您想要的更多详细信

c++ - 安全删除窗口子类化?

我正在尝试使用全局CBTHook子类化Windows系统上当前聚焦的窗口。这与thisquestion中发生的事情有关。,但错误是不同的。当这个子类化生效时,会阻止Opera(10.50版)的主窗口显示。Opera有一个“启动画面”,您需要单击主窗口的“开始”才能显示在Opera未正常关闭后出现的画面。每当弹出此窗口时,Opera的主窗口将不会显示。如果Opera正常关闭,并且没有显示启动画面,主窗口会正常显示。HHOOKhHook;HWNDhWndSubclass=0;voidSubclassWindow(HWNDhWnd){Unsubclass();FARPROClpfnOldWn

c++ - 获取窗口截图 Windows API

我正在尝试制作一个程序以在现有GUI之上运行以对其进行注释并提供额外的计算和统计信息。我想使用图像识别来做到这一点,因为我在大学里使用Matlab和类似的东西学到了很多这方面的知识。我可以获得要对其执行图像识别的窗口的句柄,但我不知道如何将该句柄转换为该窗口及其所有可见子窗口的图像。我想我正在寻找类似于屏幕截图功能的功能,但仅限于单个窗口。我该怎么做呢?我想我需要像.bmp这样的东西来处理。此外,它必须足够高效,我可以每秒调用它几次而不会导致我的PC停止运行。希望这不是一个显而易见的问题,我在google中输入了一些内容,但没有得到任何相关信息。 最佳答案

c++ - 十六进制编辑器如何如此快速地显示数据?

我创建了一个类似记事本的应用程序,如果我将一个1MB的文件加载到文本框中,大约需要1分钟。VisualStudio二进制编辑器在几分之一秒内显示行、十六进制和ascii版本。他们如何快速将数据输入文本框?谢谢 最佳答案 他们只读取足够的文件来显示屏幕上可见的内容。也就是说,如果你的UI一次只能显示100个字节,那么你只需要读取100个字节就可以填满屏幕。如果用户滚动窗口,您必须读取额外的字节来填充缺失的部分。 关于c++-十六进制编辑器如何如此快速地显示数据?,我们在StackOverf

c++ - Win32 事件与信号量

基本上我需要替换ConditionVariable和SleepConditionVariableCS,因为它只支持Vista和UP。(对于C++)有人建议用Semaphore,我也找到了CreateEvent。基本上,我需要让线程等待WaitForSingleObject,直到一个或多个其他线程告诉我有事情要做。我应该在哪种情况下使用信号量与Win事件?谢谢 最佳答案 在你的情况下,我会自己使用一个事件。当您希望线程开始运行时向事件发出信号。工作完成:)编辑:信号量和事件之间的区别归结为内部计数。如果有多个ReleaseSemaph

c++ - 如何使 tab 键在非对话框的 win32 窗口中工作

我已经在WM_CREATE消息处理程序的窗口中创建了几个控件,我希望允许使用Tab键将焦点从一个控件集推进到下一个控件集。控件的创建是这样的:caseWM_CREATE:{CreateWindowA("button","RefreshListview",BS_MULTILINE|WS_CHILD|WS_VISIBLE,10,10,70,50,hwnd,(HMENU)IDC_REFRESHLW,g_hInst,NULL);break;}当我按Tab键将焦点更改为窗口中的另一个控件时,它什么也没做。我必须以某种方式初始化它吗?我注意到如果我使用对话框,它已经自动允许使用Tab键,并且Tab

C++ 套接字 - 我只能发送字符吗?

我在win32窗口中使用同步套接字,并使用send()和recv()函数通过InternetTCP发送数据;我想知道的是,我如何通过tcp套接字发送一些整数甚至我自己的类/结构?因为send()函数只允许我发送字符。我是否只需要发送字符然后使用atoi()将它们转换为整数?或者,如果我想发送一个类结构,我会发送许多字符串,然后将它们放入变量中……一个一个地发送。 最佳答案 它不是发送文本意义上的字符——它发送的是连续的字节数组,它使用char*来引用。你可以通过这种方式指向任何值类型的字节,所以如果你想发送一个int,intA=5;