创建两个Windows导致第二个创建为Bum Out

时间:2011-10-01 16:19:07

标签: c++ winapi message hotkeys

我正在尝试使用热键将分层窗口从透明变为允许鼠标消息通过。

在我的主要功能中,我称之为

// make hotkey with WM_HOTKEY messages sent to hwnd's window procedure, id 1, 
// no other keys to work, F5 as hotkey  
// while checking for errors and it completes successfully. I also do the same 
// (id of 2) for VK_F7 and it completes successfully.

RegisterHotKey (hwnd, 1, 0, VK_F5); 
RegisterHotKey (hwnd, 2, 0, VK_F7);

在我的窗口程序中,我有

case WM_HOTKEY: 
    MessageBox (hwnd, "Got here", "Attention", MB_OK);
    // Other stuff I need to do here

我尝试添加MOD_CONTROL,但无济于事。

之前确实有效。现在唯一的区别是我意识到两个窗口可以解决我一直遇到的问题。上次我只有一个,现在我的应用程序中有两个窗口程序。我确保它都是正确的一切,但我不应该只限于一个窗口...窗口本身显示,因为我将透明度设置为100/255所以它会稍微屏蔽视图,并且我可以看到那个屏幕。

更改密钥本身不执行任何操作,WM_HOTKEY消息将发布到队列中。我将尝试手动将它们发送到窗口。

编辑:^使用SendMessage()无法正常工作,看看它是否正在获取任何消息,并且当我正在使用时,它与其他窗口相同。

编辑:好吧我觉得这样说是个白痴,但我已经RegisterHotKey去了一个空的hwnd,因为我还没有真正创建那个窗口(我创建了一个没有得到热键消息的人在那之后有这些权利)。 问题是即使我可以看到这个窗口,如果我对它进行全部评论,视图也是不同的(没有屏幕),它就不会收到任何消息。

编辑:我将标题更改为更适合此额外信息的内容。如果这是任何人都经历的一般事情,我会很高兴听到。现在,我假设它是我的包装并手动创建它们。

主要编辑:我只是尝试使用原始API而不是我的包装器,它注册了第二个错误。我更改了类名,现在类注册并创建了窗口。出现热键的消息框也会显示。我想我忘了把showwindow放到他们身上,我会说一下它是如何工作的(编辑:我再次重新启动计算机!!!)。在你问之前,我没有花太多时间在我的包装器上,是的,它有错误检查,但使用类似的系统来设置/获取lasterror()并且我没有检查它们的返回值,因为第二个一个似乎是在创造之前。

1 个答案:

答案 0 :(得分:0)

问题是两个窗口都有相同的类名。这确实让我感到困惑,因为我认为他们被允许了,然后我将添加一个静态实例计数成员给我的包装器。最终的结果是这个领域的每个问题现在都已修复:D
编辑:我只需要在学习之后添加它,但我知道你可以创建两个具有相同类名的窗口,但它们必须使用相同的窗口过程。学习这个实际上加强了我对这个主题的理解,所以如果我为另一个人清楚这一点,我会很高兴。 / EDIT

万一你想知道这个目的是什么,我包括了一点点。它有望变成你可以“屏幕”你的屏幕的东西。它确实保持领先并现在跟着你,所以大部分都完成了。如您所见,不是最好用的电脑

screenshot of program in action http://i56.tinypic.com/24g6d5l.jpg

当我添加退出方式时,控制台窗口将被隐藏。

相关问题