C语言也能干大事part~7
本帖最后由 gms 于 2020-11-10 13:22 编辑## 一. 如何实现打开功能
> **1. 控件如下:**
**2. 代码如下:【了解即可】**
```c
#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 的 char 数组
ZeroMemory(&ofn,sizeof(ofn));
ofn.lStructSize = sizeof(ofn); //szFile 是一个字符数组,那么 szFile 这个名字就代表这个字符数组的首地址
ofn.lpstrFile = szFile;
ofn.lpstrFile = 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. 代码如下:**
```c
#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 的 char 数组
ZeroMemory(&ofn,sizeof(ofn));
ofn.lStructSize = sizeof(ofn);
ofn.lpstrFile = szFile;
ofn.lpstrFile = 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;
GetShortPathName(szFile, shortPath, sizeof(shortPath));
TCHAR cmd;
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 更多用法(暂停、继续、录音、播放进度控制)请参考
https://baike.baidu.com/item/mciSendString?fr=ala0_1
> 更多控件用法:
https://docs.microsoft.com/zh-cn/windows/win32/controls/individual-control-info?redirectedfrom=MSDN
> 音乐播放器成品:
http://pan-yz.chaoxing.com/share/info/908c992dbd2dfd59 很好,不错,我也学c语言{:301_993:} 可以用bits/stdc++.h代替吗 /滑稽 能弄个其他的语言的吗,比喻java? 不知为何,我用那下载的成品播放器,播放不了mp3文件,点了后就没了 支持楼主! 赞!代码量好大 支持楼主,多放基础代码。 支持楼主,小白非常感谢 支持,建议大佬,每次在贴子最后附上之前的帖子链接
页:
[1]