Annoying beep when tab key pressed in basic windows app
I'm trying to get rid of the beep whenever I press the TAB key in the
windows app below ...
#include <windows.h>
//global vars ...
HWND hWnd;
HWND hPanel;
HWND hRadio1;
HWND hRadio2;
HWND hRadio3;
const int panelWidth = 200;
LONG WINAPI MainWndProc (HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM
lParam)
{
int clientheight;
switch (uMsg)
{
case WM_SIZE:
clientheight = HIWORD(lParam);
SetWindowPos(hPanel, NULL, 0,
0, panelWidth, clientheight, SWP_NOACTIVATE | SWP_NOZORDER);
return 0;
case WM_CLOSE:
DestroyWindow(hWnd);
return 0;
case WM_DESTROY:
PostQuitMessage(0);
return 0;
case WM_COMMAND:
switch (LOWORD (wParam))
{
case 1234: PostQuitMessage(0);
return 0;
}
return DefWindowProc (hWnd, uMsg, wParam, lParam);
default: return DefWindowProc (hWnd, uMsg, wParam, lParam);
}
}
//------------------------------------------------------------------------------
int WINAPI WinMain (HINSTANCE hInstance,
HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
const LPCWSTR appname = TEXT("Demo");
WNDCLASS wndclass;
MSG msg;
// Define the window class
wndclass.style = 0;
wndclass.lpfnWndProc = (WNDPROC)MainWndProc;
wndclass.cbClsExtra = 0;
wndclass.cbWndExtra = 0;
wndclass.hInstance = hInstance;
wndclass.hIcon = LoadIcon(hInstance, appname);
wndclass.hCursor = LoadCursor(NULL, IDC_ARROW);
wndclass.hbrBackground = (HBRUSH)(COLOR_WINDOW+1);
wndclass.lpszMenuName = appname;
wndclass.lpszClassName = appname;
// Register the window class
if (!RegisterClass(&wndclass)) return FALSE;
HACCEL hAccel = LoadAccelerators(hInstance, MAKEINTRESOURCE(1));
int windowSizeX = 540, windowSizeY = 400;
int dx = GetSystemMetrics(SM_XVIRTUALSCREEN);
int dy = GetSystemMetrics(SM_YVIRTUALSCREEN);
dx += ((GetSystemMetrics(SM_CXSCREEN) -windowSizeX) /2);
dy += ((GetSystemMetrics(SM_CYSCREEN) -windowSizeY) /2);
// Create the window
hWnd = CreateWindowEx(
WS_EX_CONTROLPARENT,
appname,
appname,
WS_OVERLAPPEDWINDOW | WS_CLIPSIBLINGS | WS_CLIPCHILDREN,
dx, dy, windowSizeX, windowSizeY,
NULL,
NULL,
hInstance,
NULL);
if (!hWnd) return FALSE;
hPanel = CreateWindowEx(WS_EX_DLGMODALFRAME | WS_EX_CLIENTEDGE,
TEXT("static"), TEXT(""),
SS_CENTER | SS_CENTERIMAGE | WS_VISIBLE | WS_CHILD ,
0, 0, panelWidth, 20,
hWnd, NULL, NULL, NULL);
HWND hGroup = CreateWindow(TEXT("button"), TEXT(" GROUP "),
BS_GROUPBOX | WS_VISIBLE | WS_CHILD,
15, 15, panelWidth - 30, 100, hWnd, NULL, NULL, NULL);
hRadio1 = CreateWindow(
TEXT("BUTTON"), TEXT("RADIOBUTTON1"),
WS_CHILD | WS_VISIBLE | BS_AUTORADIOBUTTON | WS_GROUP | WS_TABSTOP,
25, 40, 150, 20, hWnd, (HMENU)11, NULL, NULL);
hRadio2 = CreateWindow(
TEXT("BUTTON"), TEXT("RADIOBUTTON2"),
WS_CHILD | WS_VISIBLE | BS_AUTORADIOBUTTON | WS_TABSTOP,
25, 60, 150, 20, hWnd, (HMENU)12, NULL, NULL);
hRadio3 = CreateWindow(
TEXT("BUTTON"), TEXT("RADIOBUTTON3"),
WS_CHILD | WS_VISIBLE | BS_AUTORADIOBUTTON | WS_TABSTOP,
25, 80, 150, 20, hWnd, (HMENU)13, NULL, NULL);
HWND hButton1 = CreateWindow(
TEXT("BUTTON"), TEXT("BUTTON"),
BS_PUSHBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP,
15, 140, panelWidth - 30, 30, hWnd, (HMENU)14, NULL, NULL);
// Display the window
ShowWindow(hWnd, nCmdShow);
UpdateWindow(hWnd);
// Event loop
while (true)
{
if (PeekMessage(&msg, NULL, 0, 0, PM_NOREMOVE) == TRUE)
{
if (!GetMessage(&msg, NULL, 0, 0)) return TRUE;
else if (!IsDialogMessage(hWnd, &msg) ||
!TranslateAccelerator(hWnd, hAccel, &msg))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
}
}
}
Resource file ...
1 ACCELERATORS
LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
{
VK_ESCAPE, 1234, VIRTKEY
}
Any help greatly appreciated. (If I remove TranslateAccelerator() the
beeping disappears.)
No comments:
Post a Comment