C语言也能干大事~part 7

583 阅读2分钟

一. 如何实现打开功能

1. 控件如下:

2. 代码如下:【了解即可】


#include <commdlg.h>    //头文件不能少
 

void Main_OnCommand(HWND hwnd, int id, HWND hwndCtl, UINT codeNotify)
{
    switch(id)
    {
        case IDC_OK:
   OPENFILENAME ofn;

  char szFile[MAX_PATH];  //定义一个长度为 MAX_PATH 的 char 数组

  ZeroMemory(&ofn,sizeof(ofn));  

  ofn.lStructSize = sizeof(ofn); //szFile 是一个字符数组,那么 szFile 这个名字就代表这个字符数组的首地址
 
  ofn.lpstrFile = szFile;

  ofn.lpstrFile[0] = TEXT('\0');

  ofn.nMaxFile = sizeof(szFile);

  ofn.lpstrFilter = TEXT("ALL\0*.*\0Text\0*.TXT\0"); //文件类型过滤器

  ofn.nFilterIndex = 1;   //ofn.nFilterIndex = 2;默认选择第几个过滤器,是 1 开始的,不是 0. 这也是试验出来的。

  ofn.lpstrFileTitle = NULL;

  ofn.nMaxFileTitle = 0;

  ofn.lpstrInitialDir = NULL;

  ofn.hwndOwner = hwnd;

  ofn.Flags = OFN_EXPLORER |OFN_PATHMUSTEXIST | OFN_FILEMUSTEXIST;

  if (GetOpenFileName(&ofn)) //用户关闭对话框,GetOpenFileName 函数返回,返回值是 BOOL,等于TRUE 表示用户选择了文件,如果等于 FALSE 就表示用户选择了【取消】按钮

  {

   MessageBox(NULL,szFile,"",MB_OK);

  }

        break;
        default:
  break;
    }
}

3. 运行结果:

二. 音乐播放器

1. 控件如下:

2. 代码如下:

#include "stdafx.h"
#include <windows.h>
#include <windowsx.h>
#include "resource.h"
#include "MainDlg.h"
#include <stdlib.h>
#include <stdio.h>
#include <commdlg.h>
#include <mmsystem.h>
#pragma comment(lib, "WINMM.LIB")

void Main_OnCommand(HWND hwnd, int id, HWND hwndCtl, UINT codeNotify)
{
    switch(id)
    {
        case IDC_OK:
  {

   OPENFILENAME ofn;

   char szFile[MAX_PATH];  //定义一个长度为 MAX_PATH 的 char 数组

   ZeroMemory(&ofn,sizeof(ofn));  

   ofn.lStructSize = sizeof(ofn);
 
   ofn.lpstrFile = szFile;

   ofn.lpstrFile[0] = TEXT('\0');

   ofn.nMaxFile = sizeof(szFile); //szFile 是一个字符数组,那么 szFile 这个名字就代表这个字符数组的首地址

   ofn.lpstrFilter = TEXT("ALL\0*.*\0mp3\0*.mp3\0"); //文件类型过滤器

   ofn.nFilterIndex = 1;   //ofn.nFilterIndex = 2;默认选择第几个过滤器,是 1 开始的,不是 0.这也是试验出来的。

   ofn.lpstrFileTitle = NULL;

   ofn.nMaxFileTitle = 0;

   ofn.lpstrInitialDir = NULL;

   ofn.hwndOwner = hwnd;

   ofn.Flags = OFN_EXPLORER |OFN_PATHMUSTEXIST | OFN_FILEMUSTEXIST;

   if (GetOpenFileName(&ofn)) //用户关闭对话框,GetOpenFileName 函数返回,返回值是 BOOL,等于TRUE 表示用户选择了文件,如果等于 FALSE 就表示用户选择了【取消】按钮

   {

    TCHAR shortPath[MAX_PATH];
    GetShortPathName(szFile, shortPath, sizeof(shortPath));
    
    TCHAR cmd[MAX_PATH+10];
    wsprintf(cmd, "play %s", shortPath);
    //MessageBox(hwnd, shortPath, shortPath, MB_OK);
    mciSendString(cmd,"", 0, NULL);
   }  
  }
        break;
        default:
  break;
    }
}

注意:

要正常运行程序需加头文件#pragma comment(lib, "winmm.lib")

3. 运行结果:

4. 可过滤文件

有点小问题就是:同时播放多个音乐,并不是选一首放一首

Mcisendstring 更多用法(暂停、继续、录音、播放进度控制)请参考 baike.baidu.com/item/mciSen…

更多控件用法: docs.microsoft.com/zh-cn/windo…

音乐播放器成品: pan-yz.chaoxing.com/share/info/…