|
本帖最后由 cumulonimbus 于 2022-8-2 13:11 编辑
- #define IsKeyPressed(nVirtKey) ((GetKeyState(nVirtKey) & (1<<(sizeof(SHORT)*8-1))) != 0)
- BOOL CpenetrationDlg::PreTranslateMessage(MSG* pMsg)
- {
- // TODO: 在此添加专用代码和/或调用基类
- if (IsKeyPressed(VK_CONTROL) & IsKeyPressed(VK_DOWN))
- {
- ::SetWindowLong(m_hWnd, GWL_EXSTYLE, ::GetWindowLong(m_hWnd, GWL_EXSTYLE) | WS_EX_TRANSPARENT);
- return TRUE;
- }
- else if (IsKeyPressed(VK_CONTROL) & IsKeyPressed(VK_UP))
- {
- ::SetWindowLong(m_hWnd, GWL_EXSTYLE, ::GetWindowLong(m_hWnd, GWL_EXSTYLE) & (~WS_EX_TRANSPARENT));
- return TRUE;
- }
- return CDialogEx::PreTranslateMessage(pMsg);
- }
复制代码
我想实现的是易语言的功能:窗口_置穿透 (取窗口句柄 (), 真)
窗口在不透明的状态下,鼠标也能穿越窗口
我以前也写过类似的是这样实现的
DWORD dwNewLong;
dwNewLong = GetWindowLong(g_hwnd, GWL_EXSTYLE);
dwNewLong |= WS_EX_TRANSPARENT | WS_EX_LAYERED;
SetWindowLong(g_hwnd, GWL_EXSTYLE, dwNewLong);
|
上一篇: Windows窗口程序下一篇: 求助 外部组件发生异常。
|