简单的事件驱动代码例子,用C++实现
时间: 2024-10-12 21:12:21 浏览: 36
在C++中,事件驱动编程通常通过一些库如Boost.Asio或者Windows API中的消息队列来实现。下面是一个简单的基于消息队列的例子,假设我们有一个窗口应用程序,当用户点击按钮时会触发一个事件:
```cpp
#include <iostream>
#include <windows.h>
// 假设有一个ButtonEvent结构体表示按钮点击事件
struct ButtonEvent {
int buttonID;
};
LRESULT CALLBACK WindowProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) {
switch (message) {
case WM_COMMAND: // 检查是否是按钮点击事件
if (LOWORD(wParam) == ID_BUTTON1) { // ID_BUTTON1是我们定义的按钮ID
ButtonEvent event = {LOWORD(lParam)};
OnButtonClick(event); // 调用处理按钮点击的函数
}
break;
// 其他窗口消息处理...
}
return DefWindowProc(hWnd, message, wParam, lParam);
}
void OnButtonClick(ButtonEvent event) {
std::cout << "Button " << event.buttonID << " clicked!" << std::endl;
}
int main() {
WNDCLASS wc = {};
wc.lpfnWndProc = WindowProc; // 设置窗口处理函数
wc.hInstance = GetModuleHandle(NULL);
wc.lpszClassName = "EventDrivenApp";
RegisterClass(&wc);
HWND hWnd = CreateWindowEx(0, wc.lpszClassName, L"Event Driven Example", WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT,
NULL, NULL, wc.hInstance, NULL);
ShowWindow(hWnd, SW_SHOW);
MSG msg;
while (GetMessage(&msg, NULL, 0, 0)) {
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return 0;
}
阅读全文