两句话我都
听不懂。
现在,我将你的需求实现一遍:
第一步,用向导生成一个win32桌面程序
第二步,定义三个句柄的全局变量
HWND g_hMain, g_hBtn, g_hTxt;
第三步,创建两个控件
BOOL InitInstance(HINSTANCE hInstance, int nCmdShow)
{
hInst = hInstance; // 将实例句柄存储在全局变量中
g_hMain = CreateWindowW(szWindowClass, szTitle, WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, nullptr, nullptr, hInstance, nullptr);
g_hBtn = CreateWindowW( L"BUTTON", L"一个按钮", WS_VISIBLE|WS_CHILDWINDOW, 2,2,100,20, g_hMain, NULL, hInstance, NULL );
g_hTxt = CreateWindowW( L"STATIC", L"静态文本", WS_VISIBLE|WS_CHILDWINDOW, 2,42,100,20, g_hMain, NULL, hInstance, NULL );
ShowWindow(g_hMain, nCmdShow);
UpdateWindow(g_hMain);
return TRUE;
}
第四步,添加消息处理
while (GetMessage(&msg, nullptr, 0, 0))
{
if (!TranslateAccelerator(msg.hwnd, hAccelTable, &msg))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
if( msg.hwnd==g_hMain && (msg.message==WM_LBUTTONDOWN || msg.message==WM_LBUTTONUP) )
{
POINT pt = msg.pt;
RECT rt_txt;
GetWindowRect( g_hTxt, &rt_txt );
if( PtInRect(&rt_txt,pt) )
{
if( msg.message == WM_LBUTTONDOWN )
MessageBoxW( msg.hwnd, L"你在静态标签上按下了左键", L"", MB_OK );
else if( msg.message == WM_LBUTTONUP )
MessageBoxW( msg.hwnd, L"你在静态标签上抬起了左键", L"", MB_OK );
}
}
else if( msg.hwnd==g_hBtn && (msg.message==WM_LBUTTONDOWN || msg.message==WM_LBUTTONUP) )
{
if( msg.message==WM_LBUTTONDOWN )
MessageBoxW( msg.hwnd, L"你在按钮上按下了左键", L"", MB_OK );
else if( msg.message==WM_LBUTTONUP )
MessageBoxW( msg.hwnd, L"你在按钮上抬起了左键", L"", MB_OK );
}
}
再有问题的话,你最好在周围找个人问问。因为这些东西虽简单,但繁杂,描述起来不方便,适合手把手教。
[此贴子已经被作者于2020-6-2 11:14编辑过]