gpt4 book ai didi

c++ - 如何使用位图实现按钮类型的效果

转载 作者:行者123 更新时间:2023-11-28 08:27:12 24 4
gpt4 key购买 nike

你好,我有一个与启用位图的对话框窗口的使用相关的问题。我已经创建了一个键盘类型布局,我也希望通过键盘获得输入。当我使用鼠标时,我能够获得按钮(s) 按下并且所有按钮都工作正常 - 其他图像 DEFAULT,SELECTED,DISABLED .. 全部加载并工作,因为我在这里使用函数 m_BtnBtn1Ctrl.LoadBitmaps ,但是随后按下键盘上的任何键和屏幕上的相应字符都无法像我通过单击鼠标(并使用 Loadbitmaps() 功能)。

我正在使用这3个功能来实现与使用鼠标相同的 Action 和效果
加载位图()
设置位图()
无效()

我也试过这段代码

HBITMAP hbm = (HBITMAP)LoadImage(NULL, "\\res\\Selected\\bitmap21.bmp", IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE);

bitmap.Attach((HBITMAP)LoadImage(NULL, "\\res\\Selected\\bitmap21.bmp", IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE | LR_CREATEDIBSECTION));

但这些似乎并没有给出按下按钮的效果,尽管它们在内部起作用。有人可以帮我解决这个问题吗

感谢和问候再见

折叠

BOOL KeyBoard_press::PreTranslateMessage(MSG* pMsg)
{
// TODO: Add your specialized code here and/or call the base class
CString strTemp;
if (pMsg->message == WM_KEYDOWN)
{
if ( pMsg->wParam == 0x41 || pMsg->wParam == 0x61) //check for both 'a' and 'A'
OnBtnBtn1();
if (pMsg->wParam == VK_RETURN || pMsg->wParam == VK_DELETE ||
pMsg->wParam == VK_ESCAPE || pMsg->wParam == VK_TAB ||
pMsg->wParam == VK_UP || pMsg->wParam == VK_DOWN || GetKeyState (VK_CONTROL))
{
::TranslateMessage (pMsg);
::DispatchMessage (pMsg);
return TRUE; // DO NOT process further
}
}
return CDialog::PreTranslateMessage(pMsg);
}

最佳答案

据我了解,您有一系列模拟计算机键盘布局的按钮。每当用户按下键盘上的键时,您需要在对话框中模拟按钮单击。您已经为每个按钮的每个状态提供了位图。

为此,我将处理 WM_KEYDOWNWM_KEYUP 消息。在处理程序中,使用键到实际按钮实例的一些映射。然后,将 BM_SETSTATE 发送到按钮控件。

然后,处理来自每个按钮的 WM_COMMAND 消息并检查 BN_CLICKED 代码。

关于c++ - 如何使用位图实现按钮类型的效果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3581619/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com