Tag: windows messages

我的字符集有什么问题(Win32 API)

我目前正在使用本教程学习Win32,而且我对显示的角色很难。 以这段代码为例,在创建时向我的窗口添加一个菜单: case WM_CREATE: { HMENU hMenu, hSubMenu; HICON hIcon, hIconSm; hMenu = CreateMenu(); hSubMenu = CreatePopupMenu(); AppendMenu(hSubMenu, MF_STRING, ID_FILE_EXIT, “Exit”); AppendMenu(hMenu, MF_STRING | MF_POPUP, (UINT)hSubMenu, “File”); hSubMenu = CreatePopupMenu(); AppendMenu(hSubMenu, MF_STRING, ID_STUFF_GO, “&GO”); AppendMenu(hMenu, MF_STRING | MF_POPUP, (UINT)hSubMenu, “&Stuff”); SetMenu(hwnd, hMenu); hIcon = LoadImage(NULL, “Stuff.ico”, IMAGE_ICON, 32, 32, LR_LOADFROMFILE); if (hIcon) SendMessage(hwnd, WM_SETICON, ICON_BIG, […]

在按住窗口拖动或菜单按钮期间,如何阻止Windows阻止程序?

我是Win32的新手,我一直在追求一个问题(如果它可以被称为一个问题),当用户抓住窗口标题栏并在屏幕上移动时,Windows阻止程序的流程。 我没有合理的理由来解决这个问题,除非它困扰我。 一些可能性包括完全删除框架,但它似乎是一个不方便的黑客。 有些游戏(单人游戏)根本没有发现这个问题。 然而,我已经读过,当程序冻结时,多人游戏可能会遇到问题,因为它期望信息不断流动,并且在这样的延迟之后可能会被淹没。 我试过把它添加到我的WindowProc switch (uMsg) { case WM_SYSCOMMAND: if (wParam == SC_CLOSE) PostQuitMessage(0); return 0; … … default: return DefWindowProc(hwnd, uMsg, wParam, lParam); } return 0; 这似乎是一个快速的黑客,除了当我在关闭图标上徘徊时,我可以拉开鼠标并放开而不关闭程序,在此期间,当关闭图标时,程序再次被阻止。 此外,我不知道如何在用户单击标题栏并拖动鼠标时手动包含移动窗口所需的代码。 对于初学者,我不知道要处理哪个uMsg和wParam 。 那么我的问题是,当用户点击退出按钮(或最小化/最大化按钮)时,如何在单击鼠标并通过按钮释放时处理案例时,如何禁止阻塞,以及如何允许用户移动/拖动窗口而不阻止程序(或点击标题栏时发送的消息,而不是按钮或菜单)? 我正在使用WS_SYSMENU | WS_MINIMIZEBOX创建窗口 WS_SYSMENU | WS_MINIMIZEBOX 。 我仍然希望程序响应最小化,最大化和退出命令。 如果multithreading可以修复它,那么这很有趣,但我想知道我是否可以让它在单核处理器上工作。 我已经阅读了有关钩子的内容,但MSDN页面仍然难以解释。