【发布时间】:2011-12-11 19:22:45
【问题描述】:
对于标准的 win32 控件,c# 如何在 clr 的后台处理事件, 说一个按钮:
示例:(c#)
private void Form1_Load(object sender, EventArgs e)
{
button1.Click += (_, __) => { MessageBox.Show("You clicked me !"); };
}
在主消息循环中是否像 c++ 一样?`
例子:
while (GetMessage(&msg, NULL, 0, 0))
{
if (!TranslateAccelerator(msg.hwnd, hAccelTable, &msg))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
}
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
switch (message)
{
case WM_COMMAND:
if(hWnd>0 && hWnd==buttonhwnd) //Button click
{
callback_button();
}
default:
return DefWindowProc(hWnd, message, wParam, lParam);
}
return 0;
}
我的意思是 C# 中的所有标准控件都会发送每个信号,例如单击、鼠标悬停、 等到一个模拟循环 - 然后在源代码中注册回调?像我的 lambda 示例一样?
【问题讨论】: