#include <windows.h>
#include <stdio.h>
#include "release/resource.h"
#define WM_SETSOUND WM_USER+1
#define WM_MY_TRAY_NOTIFICATION WM_USER+2
#define WM_CHOOSEWAY WM_USER+3
#pragma comment(lib,"winmm.lib")
//回调函数声明
LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM);
//全局函数声明
//BOOL TrayMessage(HWND,DWORD,HICON,PSTR);
BOOL TrayMessage(HWND hWnd, DWORD dwMessage, HICON hIcon, PSTR pszTip)
{
BOOL res;
NOTIFYICONDATA tnd;
tnd.cbSize = sizeof(NOTIFYICONDATA);
tnd.hWnd = hWnd;
tnd.uID = ID_TRAYICON;
tnd.uFlags = NIF_MESSAGE|NIF_ICON|NIF_TIP;
tnd.uCallbackMessage= WM_MY_TRAY_NOTIFICATION;
tnd.hIcon = hIcon;
lstrcpyn(tnd.szTip, pszTip, sizeof(tnd.szTip));
res = Shell_NotifyIcon(dwMessage, &tnd);
return res;
}
//主函数
int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,
LPSTR lpcmdLine,int nCmdShow)
{
static TCHAR szAppName[]=TEXT("volume ctrl");
static TCHAR szClassName[]=TEXT("volume ctrl");
HWND hwnd;
MSG msg;
WNDCLASS wndclass;
wndclass.style=CS_HREDRAW | CS_VREDRAW;
wndclass.lpfnWndProc=WndProc;
wndclass.cbClsExtra=0;
wndclass.cbWndExtra=0;
wndclass.hInstance=hInstance;
wndclass.hIcon=LoadIcon(NULL,IDI_APPLICATION);
wndclass.hCursor=LoadCursor(NULL,IDC_ARROW);
wndclass.hbrBackground=(HBRUSH)GetStockObject(WHITE_BRUSH);
wndclass.lpszMenuName=NULL;
wndclass.lpszClassName=szClassName;
if(!RegisterClass(&wndclass))
{
MessageBox(NULL,"Register WNDCLASS FAILTURE!",szAppName,MB_ICONERROR);
return FALSE;
}
hwnd=CreateWindow(szClassName,"VOLUME CTRL",
WS_OVERLAPPEDWINDOW ,CW_USEDEFAULT,CW_USEDEFAULT,
CW_USEDEFAULT,CW_USEDEFAULT,NULL,NULL,hInstance,NULL);
//下两句取消可使窗口最开始时就不可见
//ShowWindow(hwnd,nCmdShow);
//UpdateWindow(hwnd);
while(GetMessage(&msg,NULL,0,0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return msg.wParam;
}
//回调函数
LRESULT CALLBACK WndProc(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam)
{
//变量声明
static HINSTANCE hInstance;
static HMIXER hMixer; //混频器句柄
static HMIXER hMixerWave; //WAVEOUT句柄
static DWORD m_controlnum; //用于保存声道数
static DWORD m_controlid; //声道的ID
static LONG m_min; //声音最小值
static LONG m_max; //声音最大值
static LONG vr,vl; //左右声道
static HICON hIcon;
static HKEY hKey;
static bChMenu=FALSE,bWave=FALSE,bNoVoilce=FALSE;
static iChCtrl=0;
LPTSTR lpBuffer=NULL;
DWORD dwRegAttr;
char test[20];
switch(message)
{
case WM_CREATE:
hInstance=(HINSTANCE)GetWindowLong(hwnd,GWL_HINSTANCE)