- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我一直在接受如何制作键盘加速键的培训,但是当我尝试时,它不起作用..这是代码:
资源文件::
#include "resource.h"
IDM_MAINMENU MENU
BEGIN
POPUP "&File"
BEGIN
POPUP "&Program"
BEGIN
MENUITEM "LED O&N", IDM_PROGRAM_LED_ON
MENUITEM "LED O&FF", IDM_PROGRAM_LED_OFF
MENUITEM "LED &BLINK", IDM_PROGRAM_LED_BLINK
END
MENUITEM SEPARATOR
MENUITEM "E&xit", IDM_FILE_EXIT
END
POPUP "&Help"
BEGIN
MENUITEM "&Info", IDM_INFO
END
END
app_icon ICON "untitled.ico"
IDA_ACCEL_TABLE ACCELERATORS
BEGIN
"x", IDA_CTRL_X, CONTROL, VIRTKEY
END
头文件:
#define app_icon 1
#define IDM_MAINMENU 2
#define IDM_FILE_EXIT 3
#define IDA_ACCEL_TABLE 4
#define IDD_DIALOG 5
#define IDA_CTRL_X 6
#define IDM_PROGRAM_LED_OFF 7
#define IDM_PROGRAM_LED_BLINK 8
#define IDM_PROGRAM_LED_ON 9
#define IDM_INFO 10
主 .exe 文件::
#include <windows.h>
#include "resource.h"
#include "define.h"
LRESULT CALLBACK WinProc(HWND hWnd,UINT message,WPARAM wParam,LPARAM lParam);
int WINAPI WinMain(HINSTANCE hInst, HINSTANCE hPrevInst, LPSTR lpCmdLine, int nShowCmd){
window win;
MSG msg;
HMENU hMenu;
hMenu = LoadMenu(hInst, MAKEINTRESOURCE(IDM_MAINMENU));
HACCEL hAccel;
hAccel = LoadAccelerators(hInst, MAKEINTRESOURCE(IDA_ACCEL_TABLE));
win.cbClsExtra = NULL; //Additional parameters
win.cbWndExtra = NULL; //Additional parameters
win.hbrBackground = (HBRUSH)COLOR_WINDOW ; //Sets background color for the window
win.hCursor = LoadCursor(NULL, IDC_ARROW); //The cursor that will appear in the window
win.hIcon = LoadIcon(hInst, MAKEINTRESOURCE(app_icon)); //Icon for the window
win.hInstance = hInst; //Handle to the application instance
win.lpszClassName = "Window Class"; //The unique name of the window class
win.lpszMenuName = NULL; //Used for menus
win.style = NULL; //The look and feel of the window
win.lpfnWndProc=(WNDPROC)WinProc; //The callback procedure (more on that later)
RegisterClass(&win);
HWND hwnd = CreateWindow("Window Class", "Atmel Microcontroller Programmer", WS_OVERLAPPEDWINDOW, 550, 300, 350, 260, NULL, hMenu, hInst, NULL);
ShowWindow(hwnd, SW_SHOWNORMAL);
while(GetMessage(&msg, NULL, 0, 0)){
if(!TranslateAccelerator(hwnd, hAccel, &msg)){
TranslateMessage(&msg);
DispatchMessage(&msg);
}
}
return 0;
}
LRESULT CALLBACK WinProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam){
switch (message){
case WM_CREATE:{
CreateWindow("BUTTON", "LED on", WS_VISIBLE | WS_CHILD | WS_BORDER, 20, 20, 70, 50, hWnd, (HMENU)1, NULL, NULL);
CreateWindow("BUTTON", "LED off", WS_CHILD | WS_VISIBLE | WS_BORDER, 125, 80, 70, 50, hWnd, (HMENU)2, NULL, NULL);
CreateWindow("BUTTON", "LED blink", WS_CHILD | WS_VISIBLE | WS_BORDER, 240, 140, 70, 50, hWnd, (HMENU)3, NULL, NULL);
break;
}
case WM_COMMAND:{
if(wParam == 1){
system("avrdude");
}
if(wParam == 2){
system("avrdude");
}
if(wParam == 3){
system("avrdude");
}
if (wParam == IDA_CTRL_X){
MessageBeep(message);
}
break;
}
case WM_DESTROY:{
PostQuitMessage(0);
return 0;
break;
}
default:{
return DefWindowProc(hWnd, message, wParam, lParam);
}
}
}
这是我一直在使用的所有文件,但还有一个头文件,我在其中定义了一些小东西并添加了注释以供我记住,但它太大了,我定义的最重要的东西是消息MessageBox 和窗口为 WNDCLASS
我知道阅读所有这些内容需要付出很多努力,但我真的需要帮助,非常感谢大家。 =D
编辑
是的,如果你问我正在尝试从计算机制作一个程序来控制我将用微 Controller 制作的电路,但我还没有做十六进制程序或电路,这就是我开始的。
最佳答案
我相信你的错误在这里:
if (wParam == IDA_CTRL_X){
MessageBeep(message);
}
当WM_COMMAND
的消息源是加速器时,wParam
的高位字是1
,低位字是加速器标识符。如果是菜单,则高位字是 0
,低位字是菜单标识符。 (参见 reference。)
所以你要做的是:
switch (message)
{
case WM_COMMAND:
wmId = LOWORD(wParam);
wmEvent = HIWORD(wParam);
switch(wmId)
{
case IDA_CTRL_X:
MessageBeep(message);
break;
}
break;
}
关于c++键盘加速器功能不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23015259/
今天有小伙伴给我留言问到,try{...}catch(){...}是什么意思?它用来干什么? 简单的说 他们是用来捕获异常的 下面我们通过一个例子来详细讲解下
我正在努力提高网站的可访问性,但我不知道如何在页脚中标记社交媒体链接列表。这些链接指向我在 facecook、twitter 等上的帐户。我不想用 role="navigation" 标记这些链接,因
说现在是 6 点,我有一个 Timer 并在 10 点安排了一个 TimerTask。之后,System DateTime 被其他服务(例如 ntp)调整为 9 点钟。我仍然希望我的 TimerTas
就目前而言,这个问题不适合我们的问答形式。我们希望答案得到事实、引用资料或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the
我就废话不多说了,大家还是直接看代码吧~ ? 1
Maven系列1 1.什么是Maven? Maven是一个项目管理工具,它包含了一个对象模型。一组标准集合,一个依赖管理系统。和用来运行定义在生命周期阶段中插件目标和逻辑。 核心功能 Mav
我是一名优秀的程序员,十分优秀!