草庐IT

c++ - 如何捕获 WndProc() 函数中定义的静态对象的异常?

下面的伪代码中,WndProc()是Win32API中的标准消息处理函数,如何捕获静态对象a抛出的异常?classA{public:classException{};A()throw(Exception){...}};LRESULTCALLBACKWndProc(HWNDhwnd,UINTmessage,UINTwParam,LONGlParam){staticAa;switch(message){caseWM_CREATE:...break;...default:returnDefWindowProc(hwnd,message,wParam,lParam);}return0;}

C++:如何为控制台应用程序设置新的 wndProc?

如果我有一个控制台应用程序,它的句柄是这样设置的;HWNDhWnd=GetConsoleWindow();那我该如何为窗口设置一个新的wndProc呢?我尝试使用SetWindowLong(hWnd,GWL_WNDPROC,(LONG)conProc);conProc被定义为LRESULTCALLBACKconProc(HWNDhWnd,UINTmsg,WPARAMwParam,LPARAMlParam){switch(msg){caseWM_NCHITTEST:returnHTCAPTION;}returnDefWindowProc(hWnd,msg,wParam,lParam);}

windows - 如何将消息路由到控件的标准 WNDPROC

创建标准窗口控件(例如"EDIT"控件)时,其WNDPROC被定义为窗口类的一部分(即"EDIT"有一个特定的WNDPROC,旨在使窗口显示并充当编辑控件。MFC允许您通过它们的包装类与此类控件进行交互,例如CEdit包装了"EDIT"窗口控件的专用消息。MFC进一步允许您将"EDIT"窗口的实例绑定(bind)到CEdit的C++子类,例如CMyEdit,您可以在其中覆盖继承的虚函数CEdit和CWnd,您可以定义一个消息表来访问/覆盖发送到窗口实例本身的消息。有CWnd::Default(),它使用当前消息参数调用this->DefWndProc。这似乎是在WNDPROC中查找与之

windows - 在 JNA 中创建一个 native Windows 窗口,并使用 GWL_WNDPROC 创建一些 GetWindowLong

你好,我一直在使用JNA与WindowsAPI进行交互,现在我在创建窗口时卡住了。据我所做的如下:1.已创建现有窗口的子窗口并获得有效的处理程序。2.了解Windows中的每个窗口都有一个不间断的消息分发循环。3.了解将我的窗口包含在消息分发循环中的最佳方法是使用类似于以下代码的内容(不是我的,但我也会这样做):finalLONG_PTRprevWndProc=newLONG_PTR(User32.INSTANCE.GetWindowLong(hwnd,User32.GWL_WNDPROC));//thisistoobtainapointertotheWNDPROCoftheparen

c++ - 如何在控制台应用程序中注册 WndProc

当我创建一个新的Win32应用程序时,我注意到函数:LRESULTCALLBACKWndProc(HWNDhWnd,UINTmessage,WPARAMwParam,LPARAMlParam)当某处调用函数PostMessage时会收到消息或SendMessage,我注意到函数WndProc可以接收消息,因为有一个函数注册它:ATOMMyRegisterClass(HINSTANCEhInstance){WNDCLASSEXwcex;wcex.cbSize=sizeof(WNDCLASSEX);wcex.style=CS_HREDRAW|CS_VREDRAW;wcex.lpfnWndP

c - (为什么)Windows "Calc.exe"是否缺少 WndProc?

我正在摆弄wndprocs和WinSpy++,我偶然发现了calc.exe的一个奇怪的东西。它似乎缺少WndProc。这是我的屏幕截图:我制作的测试程序,WinSpy++窗口,显示N/A,以及罪魁祸首。也许该工具有点过时,但经验证据证明不存在WndProc。我不知道这是设计使然(这会很奇怪),还是我遗漏了什么...引用代码如下:FunctionFindWindow(titleAsString)AsIntPtrReturnAutoIt.AutoItX.WinGetHandle(title)EndFunctionFunctionGetWindowProc(handleAsIntPtr)As

windows - 如何从 WndProc 中获取窗口句柄?

也许是个愚蠢的问题,但是......我正在编写一个类,它应该负责将一个窗口(FGuestHWnd,从现在开始)视觉锚定到一个“宿主窗口”(FHostHWnd).FGuestHWnd和HostHWnd没有父/所有者/子关系。FGuestHWnd属于另一个进程-无关紧要。FHostHWnd是VCLTWinControl的窗口句柄,因此它是我进程中的子窗口。它可以位于父/子树内的任何级别。例如,假设它是一个TPanel。现在我必须“Hook”FHostHWnd的移动/调整大小并在自定义计算后调用SetWindowPos(FGuestHWnd...。调整大小很简单:我可以使用SetWindow

c++ - C2440 无法在 C++ WinApi 中将 LRESULT 转换为 WNDPROC

我正在尝试使用WinApi编写这个win32程序,但我被卡住了,因为我正在学习的教程似乎有问题。主窗口.h:classMainWindow{public:MainWindow(HINSTANCE);~MainWindow(void);LRESULTCALLBACKWndProcedure(HWND,UINT,WPARAM,LPARAM);//[...]主窗口.cpp:MainWindow::MainWindow(HINSTANCEhInstance):hwnd(0){WNDCLASSEXWndClsEx;//[...]WndClsEx.lpfnWndProc=&MainWindow::