播放器MCI小程序

来源:互联网 发布:java localthread 编辑:程序博客网 时间:2024/06/08 12:48

 // TestMCI.cpp : 定义应用程序的入口点。
//

#include "stdafx.h"
#include "atlstr.h"
//#include <windows.h>
#include  "iostream"
#include  "string.h"
#include <vfw.h>

#include "TestMCI.h"

using namespace std;
#define MAX_LOADSTRING 100

// 全局变量:
HINSTANCE hInst;        // 当前实例
TCHAR szTitle[MAX_LOADSTRING];     // 标题栏文本
TCHAR szWindowClass[MAX_LOADSTRING];   // 主窗口类名
CString str1("c://20060513.wav");
// 此代码模块中包含的函数的前向声明:
ATOM    MyRegisterClass(HINSTANCE hInstance);
BOOL    InitInstance(HINSTANCE, int);
LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
LRESULT CALLBACK About(HWND, UINT, WPARAM, LPARAM);

void SetClientRect(HWND hwnd, HWND hwndMCI)
{
    RECT rect;
    GetWindowRect(hwndMCI, &rect);
    AdjustWindowRectEx(&rect, GetWindowLong(hwnd, GWL_STYLE),
                       FALSE, GetWindowLong(hwnd, GWL_EXSTYLE));
    MoveWindow(hwnd, rect.left, rect.top, rect.right - rect.left,
               rect.bottom - rect.top, TRUE);
}


int APIENTRY _tWinMain(HINSTANCE hInstance,
                     HINSTANCE hPrevInstance,
                     LPTSTR    lpCmdLine,
                     int       nCmdShow)
{
  // TODO: 在此放置代码。
 MSG msg;
 HACCEL hAccelTable;

 // 初始化全局字符串
 LoadString(hInstance, IDS_APP_TITLE, szTitle, MAX_LOADSTRING);
 LoadString(hInstance, IDC_TESTMCI, szWindowClass, MAX_LOADSTRING);
 MyRegisterClass(hInstance);

 // 执行应用程序初始化:
 if (!InitInstance (hInstance, nCmdShow))
 {
  return FALSE;
 }

 hAccelTable = LoadAccelerators(hInstance, (LPCTSTR)IDC_TESTMCI);

 // 主消息循环:
 while (GetMessage(&msg, NULL, 0, 0))
 {
  if (!TranslateAccelerator(msg.hwnd, hAccelTable, &msg))
  {
   TranslateMessage(&msg);
   DispatchMessage(&msg);
  }
 }

 return (int) msg.wParam;
}

 

//
//  函数: MyRegisterClass()
//
//  目的: 注册窗口类。
//
//  注释:
//
//    仅当希望在已添加到 Windows 95 的
//    “RegisterClassEx”函数之前此代码与 Win32 系统兼容时,
//    才需要此函数及其用法。调用此函数
//    十分重要,这样应用程序就可以获得关联的
//   “格式正确的”小图标。
//
ATOM MyRegisterClass(HINSTANCE hInstance)
{
 /*WNDCLASSEX wcex;

 wcex.cbSize = sizeof(WNDCLASSEX);
   
 wcex.style   = CS_HREDRAW | CS_VREDRAW;
 wcex.lpfnWndProc = (WNDPROC)WndProc;
 wcex.cbClsExtra  = 0;
 wcex.cbWndExtra  = 0;
 wcex.hInstance  = hInstance;
 wcex.hIcon   = LoadIcon(hInstance, (LPCTSTR)IDI_TESTMCI);
 wcex.hCursor  = LoadCursor(NULL, IDC_ARROW);
 wcex.hbrBackground = (HBRUSH)(COLOR_WINDOW+1);
 wcex.lpszMenuName = (LPCTSTR)IDC_TESTMCI;
 wcex.lpszClassName = (LPCTSTR)szWindowClass;
 wcex.hIconSm  = LoadIcon(wcex.hInstance, (LPCTSTR)IDI_SMALL);

 return RegisterClassEx(&wcex);
 */
WNDCLASS wndClass;

        memset(&wndClass, 0, sizeof(wndClass));
        wndClass.style = CS_HREDRAW | CS_VREDRAW;
        wndClass.lpfnWndProc = WndProc;
        wndClass.hInstance = hInstance;
        wndClass.hCursor = LoadCursor(NULL, IDC_ARROW);
        wndClass.hbrBackground = (HBRUSH)(COLOR_WINDOW + 1);
        wndClass.lpszClassName =szWindowClass;
  //wndClass.lpszMenuName=(LPCTSTR)IDC_TESTMCI;
        if (!RegisterClass(&wndClass)) return FALSE;
   
}

//
//   函数: InitInstance(HANDLE, int)
//
//   目的: 保存实例句柄并创建主窗口
//
//   注释:
//
//        在此函数中,我们在全局变量中保存实例句柄并
//        创建和显示主程序窗口。
//
BOOL InitInstance(HINSTANCE hInstance, int nCmdShow)
{
   HWND hWnd;
   MSG msg;
   //char *ch="HELLO";
   CString str("HELLO");
 
   hInst = hInstance; // 将实例句柄存储在全局变量中

   //hWnd = CreateWindow(szWindowClass, szTitle, WS_OVERLAPPEDWINDOW,
      //CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, NULL, NULL, hInstance, NULL);
  // hWnd = CreateWindow("HELLO", reinterpret_cast<LPCWSTR>("HELLO"),WS_OVERLAPPED | WS_CAPTION | WS_SYSMENU,
    //CW_USEDEFAULT, 0, CW_USEDEFAULT, 0,NULL, NULL, hInstance, NULL);
  
   hWnd = CreateWindow(szWindowClass,str,WS_OVERLAPPED | WS_CAPTION | WS_SYSMENU,
    CW_USEDEFAULT, 0, 0,CW_USEDEFAULT,NULL, NULL, hInstance, NULL);


    SetClientRect(hWnd, MCIWndCreate(hWnd, hInstance, WS_VISIBLE | WS_CHILD |
  MCIWNDF_SHOWALL | MCIWNDF_NOTIFYSIZE |MCIWNDF_NOTIFYPOS|WS_BORDER,str1 ));
   if (!hWnd)
   {
      return FALSE;
   }
  
   ShowWindow(hWnd, nCmdShow);
   UpdateWindow(hWnd);
   while (GetMessage(&msg, NULL, 0, 0))
        DispatchMessage(&msg);
   return TRUE;
}

//
//  函数: WndProc(HWND, unsigned, WORD, LONG)
//
//  目的: 处理主窗口的消息。
//
//  WM_COMMAND - 处理应用程序菜单
//  WM_PAINT - 绘制主窗口
//  WM_DESTROY - 发送退出消息并返回
//
//
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
 int wmId, wmEvent;
 PAINTSTRUCT ps;
 HDC hdc;

 switch (message)
 {
  case MCIWNDM_NOTIFYPOS:
        case MCIWNDM_NOTIFYSIZE:
            SetClientRect(hWnd, (HWND)wParam);
            break;
  case MCI_PLAY :
   MessageBox(hWnd, (LPCTSTR)"HELLO",NULL,MB_YESNO);

   break;

 case WM_COMMAND:
  wmId    = LOWORD(wParam);
  wmEvent = HIWORD(wParam);
  // 分析菜单选择:
  switch (wmId)
  {
  case IDM_ABOUT:
   DialogBox(hInst, (LPCTSTR)IDD_ABOUTBOX, hWnd, (DLGPROC)About);
   break;
  case IDM_EXIT:
   DestroyWindow(hWnd);
   break;
  default:
   return DefWindowProc(hWnd, message, wParam, lParam);
  }
  break;
 case WM_PAINT:
  hdc = BeginPaint(hWnd, &ps);
  // TODO: 在此添加任意绘图代码...
  EndPaint(hWnd, &ps);
  break;
 case WM_DESTROY:
  PostQuitMessage(0);
  break;
 default:
  return DefWindowProc(hWnd, message, wParam, lParam);
 }
 

 return 0;
}

// “关于”框的消息处理程序。
LRESULT CALLBACK About(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
{
 switch (message)
 {
 case WM_INITDIALOG:
  return TRUE;

 case WM_COMMAND:
  if (LOWORD(wParam) == IDOK || LOWORD(wParam) == IDCANCEL)
  {
   EndDialog(hDlg, LOWORD(wParam));
   return TRUE;
  }
  break;
 }
 return FALSE;
}

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 剧烈运动后难受怎么办 泡澡后全身无力怎么办 运动后头晕是怎么办 颈椎运动后头晕怎么办 跑步之后浑身疼怎么办 运动后头疼恶心怎么办 减肥减的头晕怎么办 剧烈运动后眩晕怎么办 剧烈运动后头昏怎么办 锻炼完头晕恶心怎么办 没休息好头疼怎么办 人的体力不好怎么办 反胃怎么办 吃什么好 怀孕恶心想吐怎么办 nba篮球大师破产怎么办 记忆力差反应迟钝怎么办 脑子笨记性不好怎么办 产后脑子不好使怎么办 老人脑子不好使怎么办 脑子不好使怎么办搞笑 脑子不好使了怎么办 最近脑子不好使怎么办 感觉自己好笨没脑子怎么办 脑子浑浊不清晰怎么办 30岁体力下降怎么办 皮肤差毛孔粗大怎么办 最近身体素质越来越差怎么办 身体素质差容易感冒怎么办 易疲惫犯困体质怎么办 成年狗体力不行怎么办 累了体力不支怎么办 新兵连成绩不合格怎么办 征兵体检血压高怎么办 魔域手游幻兽亲密度过低怎么办 移动账号被锁定怎么办 魔域手游账号被冻结怎么办 魔域手游没用的装备怎么办 5173账号三年找回怎么办 电脑的任务栏不见了怎么办 减肥出现瓶颈期怎么办 减肥到瓶颈期怎么办