Archive for the ‘平台’ Category

文件打开对话框——文件多选

星期六, 11 7 月, 2009

参考资料:

http://xxkkff.blog.51cto.com/162016/26222

http://blog.csdn.net/xuminggang/archive/2009/05/21/4206010.aspx

文件多选时,GetOpenFileName(&ofn)执行后,ofn.lpstrFile的结构为

文件目录路径文件1文件2……

WavPlayer

星期六, 11 7 月, 2009

#include <windows.h>
#include <mmsystem.h>

int WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
{
 int choice = 0;
 do
 {
  OPENFILENAME ofn;
  char szFile[MAX_PATH];
  ZeroMemory(&ofn, sizeof(ofn));
  ofn.lStructSize = sizeof(ofn);
  ofn.lpstrFile = szFile;
  ofn.lpstrFile[0] = TEXT(‘\0’);
  ofn.nMaxFile = sizeof(szFile);
  ofn.lpstrFilter = TEXT(“*.wav\0*.wav\0”);
  ofn.nFilterIndex = 1;
  ofn.lpstrFileTitle = NULL;
  ofn.nMaxFileTitle = 0;
  ofn.lpstrInitialDir = NULL;
  ofn.Flags = OFN_EXPLORER | OFN_PATHMUSTEXIST | OFN_FILEMUSTEXIST;
  if(GetOpenFileName(&ofn))
  {
   PlaySound(szFile, NULL, SND_FILENAME | SND_SYNC);
   choice = MessageBox(NULL, TEXT(“wav播放完毕,是否重新选择wav文件?”), TEXT(“播放完毕”), MB_YESNO | MB_ICONQUESTION | MB_DEFBUTTON1);
   if(choice == IDYES)
    choice = 1;
   else
    choice = 0;
  }
 }while(choice);
 return 0;
}

WavPlayer

文件打开对话框

星期五, 10 7 月, 2009

#include <windows.h>

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR szCmdLine, int iCmdShow)
{
 OPENFILENAME ofn;
 //文件打开对话框主要通过GetOpenFileName函数实现
 //其参数为OPENFILENAME指针类型
 //此处定义一个OPENFILENAME类型的变量ofn
 char szFile[MAX_PATH];
 //定义保存打开文件路径的char数组
 //数组长度为MAX_PATH
 //MAX_PATH是Windows操作系统中的路径最长长度常量为260
 ZeroMemory(&ofn, sizeof(ofn));
 //OPENFILENAME是种结构体
 //ZeroMemory将结构体置零
 //对比memset函数
 ofn.lStructSize = sizeof(ofn);
 //结构体本身能够知道自己的大小,为什么很多WINAPI结构体中都有存储结构体大小的变量?
 //Windows发展的历史原因。
 ofn.lpstrFile = szFile;
 //ofn.lpstrFile指针指向szFile
 ofn.lpstrFile[0] = TEXT(‘\0’);
 //相当于szFile[0] = ‘\0’
 //也就是置零
 //ofn.lpstrFile和szFile[MAX_PATH]是如何取得值的?
 ofn.nMaxFile = sizeof(szFile);
 ofn.lpstrFilter = TEXT(“文本文档(*.txt)\0*.txt\0所有文件\0*.*\0”);
 //文件类型过滤器
 //’\0’将其分隔
 //每两段为一组,前面部分为显示值,后面部分为过滤。
 ofn.nFilterIndex = 1;
 //默认过滤文件类型索引
 //此处的索引数字从1开始
 ofn.lpstrFileTitle = NULL;
 ofn.nMaxFileTitle = 0;
 ofn.lpstrInitialDir = NULL;
 ofn.Flags = OFN_EXPLORER | OFN_PATHMUSTEXIST | OFN_FILEMUSTEXIST;
 //OFN_EXPLORER——新界面
 //OFN_PATHMUSTEXIST——文件路径必须存在
 //OFN_FILEMUSTEXIST——文件必须存在
 if(GetOpenFileName(&ofn))
  MessageBox(NULL, szFile, NULL, MB_OK);
 return 0;
}

PlaySound

星期三, 8 7 月, 2009

头文件:mmsystem.h

函数原型:BOOL WINAPI PlaySound(LPCSTR pszSound, HMODULE hmod, DWORD fdwSound)

参考http://zhidao.baidu.com/question/41366091.html

#include <windows.h>
#include <mmsystem.h>

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd)
{
 int choice = MessageBox(NULL, TEXT(“重启计算机?”), TEXT(“重启”), MB_OKCANCEL | MB_ICONQUESTION | MB_DEFBUTTON2);
 if(choice == IDOK)
 {
  PlaySound(“C:WINDOWSMediaWindows XP 关机.wav”, NULL, SND_FILENAME | SND_ASYNC);
  MessageBox(NULL, TEXT(“关闭计算机……”), TEXT(“关闭”), MB_OK);
  PlaySound(NULL, NULL, SND_FILENAME);
  choice = MessageBox(NULL, TEXT(“启动计算机?”), TEXT(“启动”), MB_YESNO | MB_ICONQUESTION);
  if(choice == IDYES)
  {
   PlaySound(“C:WINDOWSMediaWindows XP 启动.wav”, NULL, SND_FILENAME | SND_SYNC);
   MessageBox(NULL, TEXT(“计算机已成功启动!”), TEXT(“启动成功”), MB_OK);
  }
 }
 return 0;
}

重启计算机

MessageBox

星期三, 8 7 月, 2009

函数原型:int MessageBox(HWND hWnd, LPCTSTR lpText, LPCTSTR lpCaption, UINT uType)

函数功能:创建、显示和操作一个消息框。消息框含有应用程序定义的消息标题和内容,加上预定义图标与按钮的任何组合。

hWnd标识将被创建的消息框的拥有窗口。如果此参数为NULL,则消息框没有拥有窗口。

lpText消息框内容,lpCaption消息框标题,uType指定一个决定对话框的内容和行为的位标志集。

#include <windows.h>

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd)
{
 MessageBox(NULL, TEXT(
Hello, windows!), TEXT(Msg), MB_OK);
 return 0;
}

有关uType取值可查看winuser.h

/*
 * MessageBox() Flags
 */
#define MB_OK                       0
×00000000L
#define MB_OKCANCEL                 0
×
00000001L
#define MB_ABORTRETRYIGNORE         0
×
00000002L
#define MB_YESNOCANCEL              0
×
00000003L
#define MB_YESNO                    0
×
00000004L
#define MB_RETRYCANCEL              0
×
00000005L
#define MB_ICONHAND                 0
×
00000010L
#define MB_ICONQUESTION             0
×
00000020L
#define MB_ICONEXCLAMATION          0
×
00000030L
#define MB_ICONASTERISK             0
×00000040L

注意到不同取值的分组位规律,采用按位或运算“|”进行组合。

#include <windows.h>

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd)
{
 int choice = MessageBox(NULL, TEXT(“你是好人吗?”), TEXT(“你是好人吗?”), MB_YESNO | MB_ICONQUESTION | MB_DEFBUTTON2);
 switch(choice)
 {
  case IDYES:
   MessageBox(NULL, TEXT(“一看你就不是好人,点击【确定】开始格式化C盘!”), TEXT(“是”), MB_OK | MB_ICONWARNING);
   break;
  case IDNO:
   MessageBox(NULL, TEXT(“尝试把你变成好人失败,是否重试?”), TEXT(“否”), MB_RETRYCANCEL);
   break;
  default:
   ;
 }
 return 0;
}