/**************************************************************************** * * pos.c * * Copyright (c) 1991 Microsoft Corporation. All Rights Reserved. * ***************************************************************************/ #include #include #include "sbtest.h" /**************************************************************************** * * public data * ***************************************************************************/ HWND hPosWnd; // position window /**************************************************************************** * * internal function prototypes * ***************************************************************************/ static void Paint(HWND hWnd, HDC hDC); void CreatePosition(HWND hParent) { UINT x, y, dx, dy; x = GetSystemMetrics(SM_CXSCREEN) / 8; dx = GetSystemMetrics(SM_CXSCREEN) / 4; y = GetSystemMetrics(SM_CYSCREEN) / 3; dy = GetSystemMetrics(SM_CYCAPTION) * 5 / 2; hPosWnd = CreateWindow("POSITION", "Wave Position", WS_POPUP | WS_CAPTION | WS_SYSMENU | WS_VISIBLE | WS_THICKFRAME, x, y, dx, dy, hParent, NULL, ghInst, (LPSTR)NULL); } static void Paint(HWND hWnd, HDC hDC) { MMTIME mt; char buf[20]; if (hWaveOut) { mt.wType = TIME_SAMPLES; waveOutGetPosition(hWaveOut, &mt, sizeof(mt)); wsprintf(buf, "%lu ", mt.u.sample); } else wsprintf(buf, "Not Playing"); TextOut(hDC, 0, 0, buf, lstrlen(buf)); } long FAR PASCAL PosWndProc(HWND hWnd, unsigned message, UINT wParam, LONG lParam) { PAINTSTRUCT ps; // paint structure HMENU hMenu; // process any messages we want switch (message) { case WM_CREATE: hMenu = GetMenu(hMainWnd); CheckMenuItem(hMenu, IDM_KEYBOARD, MF_CHECKED); break; case WM_PAINT: BeginPaint(hWnd, &ps); Paint(hWnd, ps.hdc); EndPaint(hWnd, &ps); break; case WM_DESTROY: hMenu = GetMenu(hMainWnd); CheckMenuItem(hMenu, IDM_KEYBOARD, MF_UNCHECKED); hPosWnd = NULL; break; default: return DefWindowProc(hWnd, message, wParam, lParam); break; } return NULL; } void ShowPos(void) { HDC hDC; if (!hPosWnd) return; hDC = GetDC(hPosWnd); Paint(hPosWnd, hDC); ReleaseDC(hPosWnd, hDC); }