Articles of createwindow

如何在窗口上绘制图像?

我创build了一个窗口,使用Windows Vista上的C ++中的VS2005创build窗口()api 我的要求是在该窗口上绘制(任何格式的)图像。 我没有在这个应用程序中使用任何MFC。 请帮我一些代码片段。

BringWindowToTop不工作,即使我得到类窗口的句柄

我正在用以下方法注册我的类: BOOL CNDSClientDlg::InitInstance() { //Register Window Updated on 16th Nov 2010, @Subhen // Register our unique class name that we wish to use WNDCLASS wndcls; memset(&wndcls, 0, sizeof(WNDCLASS)); wndcls.style = CS_DBLCLKS | CS_HREDRAW | CS_VREDRAW; wndcls.lpfnWndProc = ::DefWindowProc; wndcls.hInstance = AfxGetInstanceHandle(); wndcls.hbrBackground = (HBRUSH)(COLOR_WINDOW + 1); wndcls.lpszMenuName = NULL; //Class name for using FindWindow later […]

(Windows API)WM_PAINT鼠标问题

我创build了一个包含以下标志的窗口来覆盖一个d3d应用程序:WS_EX_TOPMOST | WS_EX_COMPOSITED | WS_EX_TRANSPARENT | WS_EX_LAYERED我继续着色转换的窗口,一切运作良好。 但是一旦我开始使用GDI进行绘图,就会出现一个无法预料的问题: 出于某种原因,当WM_PAINT正在进行时,鼠标事件(特别是运动)不能正确地通过窗口传递,所以看起来好像鼠标和键盘相对滞后。 FPS是好的,这是一些API的问题,我怀疑由于某种原因,键盘/鼠标消息没有处理,因为他们应该在WM_PAINT正在进行,因为计时器设置得越慢,那就是。 LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) { switch(msg) { case WM_DESTROY: { KillTimer(hwnd, ID_TIMER); PostQuitMessage(0); break; } case WM_CREATE: { SetTimer(hwnd, ID_TIMER, 10, NULL); break; } case WM_TIMER: { InvalidateRect(hwnd, 0, 1); break; } case WM_PAINT: { paint(hwnd); break; } } […]

CreateWindowEx将以ERROR_CANNOT_FIND_WND_CLASS失败

我想创build一个窗口与某个类的types(“VSDebugger CDataTipWnd”),但是,当我运行CreateWindowEx它失败,GetLastError告诉我,该类没有find。 这里是供参考的代码,尽pipe它不重要: const Win32WindowStyles dwStyle = Win32WindowStyles.WS_POPUP; IntPtr wnd = NativeMethods.CreateWindowEx(0L, "VSDebugger CDataTipWnd", "MyWindow", dwStyle, 100, 100, 100, 100, IntPtr.Zero, IntPtr.Zero, IntPtr.Zero, IntPtr.Zero); 我在这个过程中作为一个插件运行,我知道这个类的一个窗口是在创build之前(我确信使用Winspector / Spy ++),但是当我尝试创build一个这种types的窗口时,不工作,我不明白为什么。 该文档说,“类名称可以是注册RegisterClass或RegisterClassEx的任何名称,只要注册该类的模块也是创build该窗口的模块。类名称也可以是任何预定义的系统类名称。有关系统类名称的列表,请参阅“备注”部分。“ 是否有可能在另一个模块(dll / exe)中创build了RegisterClass? 在另一个模块中创build一个类是否会使其他模块的名称无法访问? 如果是的话,我还能不能find那个class级,并用它创build一个窗口? 谢谢! 维塔利

在WM_CREATE中创build子窗口,同一个线程的相关性?

一个典型的模式是在WM_CREATE消息的消息callback( WndProc )中创build一个子窗口: LRESULT APIENTRY WndProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) { … switch (message) { case WM_CREATE: …. hwndChild[i] = CreateWindow (szChildClass[i], NULL, WS_CHILDWINDOW | WS_BORDER … 我完全理解这是一个很好的机会,但是这个问题以后会做吗? 这样做的一个原因是,子窗口是在同一个线程内创build的。 但是还有其他的原因吗? 在同一个线程中创build子窗口有多重要? 至于“ 父GUI对话线程的子线程是否可以创build一个子窗口? ”这似乎不是一般问题?