关于C#:检测是否已发生事件-win32

Detect if event is taken - win32

本问题已经有最佳答案,请猛点这里访问。

我想知道自从我一直在Google周围寻找东西后,是否有人可以帮我这个忙,我很可能找到了它,但只是不知道该怎么做。基本上,这是我想执行的例程。我有按钮" a"和按钮" b",如果按下按钮" a",则打开一个消息框。如果按下按钮'b \\',则打开一个新窗口并显示该窗口的内容。

很抱歉,如此模糊,基本上,我在应用程序上有2个按钮。 1标记为" a",另一个标记为" b"。如何告诉我的应用程序通过某种循环来检查是否按下了这些按钮?如果单击第一个按钮,则打开一个消息框,如果单击第二个,则打开另一个窗口类。然后,如何将新属性添加到在同一应用程序中打开的该窗口类中?

我当时想在switch语句中使用WM_COMMAND方法,但是CASES的ID是什么,它们与每个按钮的对应关系如何? -我对在此问题上能获得的任何帮助都非常感激,甚至更喜欢一个代码示例!

干杯


在Win32中,每个按钮都有一个数字ID。最好给所有按钮提供不同的ID。选择值并将这些数字分配给按钮是您的职责。

取决于环境:纯Win32,MFC等,定义值和分配值的详细信息将有所不同。您可以在创建窗口时指定ID:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
HWND WINAPI CreateWindow
(
  _In_opt_  LPCTSTR lpClassName,
  _In_opt_  LPCTSTR lpWindowName,
  _In_      DWORD dwStyle,
  _In_      int x,
  _In_      int y,
  _In_      int nWidth,
  _In_      int nHeight,
  _In_opt_  HWND hWndParent,
  _In_opt_  HMENU hMenu,
  _In_opt_  HINSTANCE hInstance,
  _In_opt_  LPVOID lpParam
);

该ID在hMenu参数中传递。在http://msdn.microsoft.com/zh-cn/library/windows/desktop/ms632679(v=vs.85).aspx中查找详细信息。在Windows中,具有ID的窗口不能具有菜单。听起来很有趣,但这就是他们在80年代中期实现这一目标的方式。

一旦分配了ID,就可以并且应该在WM_COMMAND处理程序中使用它们。