|
|
/****************************************************************************
* * init.c * * Copyright (c) 1991 Microsoft Corporation. All Rights Reserved. * ***************************************************************************/
#include <windows.h>
#include <mmsystem.h>
#include "sbtest.h"
/****************************************************************************
* * public data * ***************************************************************************/
HANDLE hAccTable; // handle to keyboard accelerator table
HWND hMainWnd; // main window
int gInstBase;
BOOL InitFirstInstance(HANDLE hInstance) { WNDCLASS wc;
// define the class of window we want to register
wc.lpszClassName = szAppName; wc.style = CS_HREDRAW | CS_VREDRAW; wc.hCursor = LoadCursor(NULL, IDC_ARROW); wc.hIcon = LoadIcon(hInstance, "Icon"); wc.lpszMenuName = "Menu"; wc.hbrBackground = GetStockObject(WHITE_BRUSH); wc.hInstance = hInstance; wc.lpfnWndProc = MainWndProc; wc.cbClsExtra = 0; wc.cbWndExtra = 0;
if (!RegisterClass(&wc)) return FALSE;
// define a class for our keyboard
wc.lpszClassName = "SYNTHKEYS"; wc.style = CS_HREDRAW | CS_VREDRAW; wc.hCursor = LoadCursor(NULL, IDC_UPARROW); wc.hIcon = NULL; wc.lpszMenuName = NULL; wc.hbrBackground = GetStockObject(WHITE_BRUSH); wc.hInstance = hInstance; wc.lpfnWndProc = KeyWndProc; wc.cbClsExtra = 0; wc.cbWndExtra = 0;
if (!RegisterClass(&wc)) return FALSE;
// define a class for our position display
wc.lpszClassName = "POSITION"; wc.style = CS_HREDRAW | CS_VREDRAW; wc.hCursor = LoadCursor(NULL, IDC_UPARROW); wc.hIcon = NULL; wc.lpszMenuName = NULL; wc.hbrBackground = GetStockObject(WHITE_BRUSH); wc.hInstance = hInstance; wc.lpfnWndProc = PosWndProc; wc.cbClsExtra = 0; wc.cbWndExtra = 0;
if (!RegisterClass(&wc)) return FALSE;
// define a class for our selector
wc.lpszClassName = "SELECTOR"; wc.style = CS_HREDRAW | CS_VREDRAW; wc.hCursor = LoadCursor(NULL, IDC_ARROW); wc.hIcon = NULL; wc.lpszMenuName = NULL; wc.hbrBackground = GetStockObject(WHITE_BRUSH); wc.hInstance = hInstance; wc.lpfnWndProc = InstWndProc; wc.cbClsExtra = 0; wc.cbWndExtra = 0;
if (!RegisterClass(&wc)) return FALSE;
fDebug = 0;
return TRUE; }
BOOL InitEveryInstance(HANDLE hInstance, int cmdShow) { // create a window for the application
hMainWnd = CreateWindow(szAppName, // class name
szAppName, // caption text
WS_OVERLAPPEDWINDOW, // window style
CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, (HWND)NULL, // handle of parent window
(HMENU)NULL, // menu handle (default class)
hInstance, // handle to window instance
(LPSTR)NULL); // no params to pass on
if (!hMainWnd) return FALSE;
ShowWindow(hMainWnd, cmdShow); // display window as open or icon
UpdateWindow(hMainWnd); // paint it
// load the keyboard accelerator table
hAccTable = LoadAccelerators(hInstance, "AccTable"); if (!hAccTable) return FALSE;
gInstBase = GetProfileInt(szAppName, "InstrumentBase", 0);
return TRUE;
}
void InitMenus(HWND hWnd) { UINT n; UINT wDevice; UINT wRet; HMENU hMenu; MIDIOUTCAPS moc; MIDIINCAPS mic;
hMenu = GetMenu(hWnd);
// no output device is the default
ModifyMenu(hMenu, IDM_D0, MF_BYCOMMAND | MF_ENABLED | MF_STRING, IDM_D0, "None"); CheckMenuItem(hMenu, IDM_D0, MF_CHECKED);
n = midiOutGetNumDevs(); for (wDevice = 1; wDevice <= n; wDevice++) { wRet = midiOutGetDevCaps(wDevice - 1, &moc, sizeof(moc)); if (wRet == 0) { ModifyMenu(hMenu, wDevice + IDM_D0, MF_BYCOMMAND | MF_ENABLED | MF_STRING, wDevice + IDM_D0, moc.szPname); } else { ModifyMenu(hMenu, wDevice + IDM_D0, MF_BYCOMMAND | MF_ENABLED | MF_STRING, wDevice + IDM_D0, "ERROR"); } } for (wDevice = n + 1; wDevice < LASTPORT; wDevice++) DeleteMenu(hMenu, wDevice + IDM_D0, MF_BYCOMMAND);
ModifyMenu(hMenu, LASTPORT + IDM_D0, MF_BYCOMMAND | MF_ENABLED | MF_STRING, LASTPORT + IDM_D0, "MIDI MAPPER");
// no input device is the default
ModifyMenu(hMenu, IDM_I0, MF_BYCOMMAND | MF_ENABLED | MF_STRING, IDM_I0, "None"); CheckMenuItem(hMenu, IDM_I0, MF_CHECKED);
n = midiInGetNumDevs(); for (wDevice = 1; wDevice <= n; wDevice++) { wRet = midiInGetDevCaps(wDevice - 1, &mic, sizeof(mic)); if (wRet == 0) { ModifyMenu(hMenu, wDevice + IDM_I0, MF_BYCOMMAND | MF_ENABLED | MF_STRING, wDevice + IDM_I0, mic.szPname); } else { ModifyMenu(hMenu, wDevice + IDM_I0, MF_BYCOMMAND | MF_ENABLED | MF_STRING, wDevice + IDM_I0, "ERROR"); } } for (wDevice = n + 1; wDevice <= LASTPORT; wDevice++) DeleteMenu(hMenu, wDevice + IDM_I0, MF_BYCOMMAND);
EnableMenuItem(hMenu, IDM_STARTMIDIIN, MF_GRAYED); EnableMenuItem(hMenu, IDM_STOPMIDIIN, MF_GRAYED);
EnableMenuItem(hMenu, IDM_PROFSTART, MF_ENABLED); EnableMenuItem(hMenu, IDM_PROFSTOP, MF_GRAYED); }
int sbtestError(LPSTR msg) { MessageBeep(0); return MessageBox(hMainWnd, msg, szAppName, MB_OK); }
|