Tuesday, 13 August 2013

Annoying beep when tab key pressed in basic windows app

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