如何检查按钮是否按下
How to check if a button was pressed
我的目标是用一堆不同的子控件填充窗口的客户端区域。像按钮,复选框和静态文本,但我有一个困难的时间弄清楚如何捕捉按钮点击消息。
我代码:#include <windows.h>
#include <CommCtrl.h>
#include "resource.h"
HMENU BUTTON1;
LRESULT CALLBACK WndProc (HWND hwnd, UINT message, UINT wParam, LONG lParam) ;
int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,
LPSTR lpszCmdParam, int nCmdShow)
{
static char szAppName[] = "Keyboarding" ;
HWND hwnd;
MSG msg;
WNDCLASS wndclass;
HMENU hMenu;
hMenu = LoadMenu(hInstance, MAKEINTRESOURCE(IDR_MENU1));
if (!hPrevInstance)
{
wndclass.style = CS_HREDRAW | CS_VREDRAW;
wndclass.lpfnWndProc = WndProc;
wndclass.cbClsExtra = 0;
wndclass.cbWndExtra = 0;
wndclass.hInstance = hInstance ;
wndclass.hIcon = LoadIcon (NULL, IDI_APPLICATION) ;
wndclass.hCursor = LoadCursor (NULL, IDC_ARROW) ;
wndclass.hbrBackground = static_cast<HBRUSH>(GetStockObject (WHITE_BRUSH));
wndclass.lpszMenuName = NULL ;
wndclass.lpszClassName = szAppName ;
RegisterClass (&wndclass) ;
}
hwnd = CreateWindow (szAppName, // window class name
"Lab 6", // window caption
WS_OVERLAPPEDWINDOW, // window style
CW_USEDEFAULT, // initial x position
CW_USEDEFAULT, // initial y position
CW_USEDEFAULT,
CW_USEDEFAULT, // hmmmmm???
NULL, // parent window handle
hMenu, // window menu handle
hInstance, // program instance handle
NULL) ; // creation parameters
HWND button1 = CreateWindow( WC_BUTTON,
"Push Button",
WS_TABSTOP|WS_VISIBLE|WS_CHILD|BS_PUSHBUTTON,
50,
50,
100,
24,
hwnd,
BUTTON1,
hInstance,
NULL);
HWND button2 = CreateWindow( WC_BUTTON,
"Auto Check Button?",
WS_TABSTOP|WS_VISIBLE|WS_CHILD|BS_PUSHBUTTON,
50,
50,
100,
24,
hwnd,
NULL,
hInstance,
NULL);
HWND button3 = CreateWindow( WC_BUTTON,
"Push Button",
WS_TABSTOP|WS_VISIBLE|WS_CHILD|BS_PUSHBUTTON,
50,
50,
100,
24,
hwnd,
NULL,
hInstance,
NULL);
HWND editControl = CreateWindow( WC_BUTTON,
"Push Button",
WS_TABSTOP|WS_VISIBLE|WS_CHILD|BS_PUSHBUTTON,
50,
50,
100,
24,
hwnd,
NULL,
hInstance,
NULL);
HWND StaticControl = CreateWindow( WC_STATIC,
"Hello World",
WS_TABSTOP|WS_VISIBLE|WS_CHILD|BS_PUSHBUTTON,
50,
100,
100,
24,
hwnd,
NULL,
hInstance,
NULL);
HWND ListBox = CreateWindow( WC_BUTTON,
"Push Button",
WS_TABSTOP|WS_VISIBLE|WS_CHILD|BS_PUSHBUTTON,
50,
50,
100,
24,
hwnd,
NULL,
hInstance,
NULL);
ShowWindow (hwnd, nCmdShow) ;
UpdateWindow (hwnd) ;
while (GetMessage (&msg, NULL, 0, 0))
{
TranslateMessage (&msg) ;
DispatchMessage (&msg) ;
}
return (int) msg.wParam ;
}
LRESULT CALLBACK WndProc (HWND hwnd, UINT message, UINT wParam,
LONG lParam)
{
HDC hdc ;
PAINTSTRUCT ps ;
TEXTMETRIC tm;
RECT rClientRect;
RECT rWindowRect;
SIZE size;
int cButtons = 0;
switch (message)
{
case WM_COMMAND:
switch(LOWORD(wParam))
{
case BUTTON1:
break;
}
case WM_PAINT:
hdc = BeginPaint (hwnd, &ps) ;
EndPaint (hwnd, &ps) ;
return 0 ;
case WM_DESTROY:
PostQuitMessage (0) ;
return 0 ;
}
return DefWindowProc (hwnd, message, wParam, lParam) ;
}
我试图抓住我的第一个按钮标签button1,并有"ID"button1。我试过在我的WM_COMMAND中捕捉它们,它说我的BUTTON1是未知的。
你要找的是:
case WM_COMMAND:
switch(LOWORD(wParam)) {
case BUTTON1: {
但是在它识别BUTTON1之前,你必须以一种可以被消息处理程序识别的方式声明它:例如,使它成为一个全局变量,而不是在WinMain中声明它:
HMENU BUTTON1;
int WINAPI WinMaietcetc..
让我知道这是否有效
相关文章:
- winapi 中的哪个功能检查按钮是否正在关闭控制台?
- 有没有办法检查按钮是否被选中?
- 是否有任何功能可以通过按不同的按钮来更改操作
- 所有按钮是否应包含MVC代码(C )中控制器的引用
- 是否可以报告用户在 Android 应用程序中单击了哪些按钮
- 除了Qt中的单选按钮之外,是否有类似gui元素的开关
- CToolbar是否支持带有32位图标的按钮
- 是否通过其他按钮将单选按钮添加到QListWidget或从QListWidget中删除单选按钮?问题
- 如何检测是否在Qt中同时按下了两个鼠标按钮
- 如何知道QDockWidget是否通过按钮或拖动它取消停靠
- 是否可以在 MFC 按钮控件上检测到鼠标右键单击事件
- 检测鼠标按钮是否按下
- 如何确定鼠标是否指向光标下窗口的最大按钮
- 是否存在用于单击组中任何按钮的事件
- 如何检查是否按下了特定的按钮(键盘)- c++
- 在wxWidgets c++中是否可以隐藏/删除最大化按钮?
- 如何检查按钮是否按下
- 是否有方法为窗口窗体中的特定按钮挂钩鼠标事件
- 在c++中是否有一种方法可以在不使用windows api的情况下制作带有按钮和滚动条的自定义gui ?
- 按钮是否应该使用鼠标事件