VC常用代码(VS2008下测试过的)
来源:互联网 发布:mac 网页关闭 复原 编辑:程序博客网 时间:2024/05/01 09:27
1.只允许运行程序的一个实例
MFC写在InitInstance函数中
HANDLE hMutex = CreateMutex(NULL, TRUE, _T("test"));
//创建一个有名的互斥对象 if (ERROR_ALREADY_EXISTS == GetLastError())//如果互斥对象创建失败 { CWnd *wnd;//找到当前允许程序的窗口,第二个程序为窗口名 if( wnd = CWnd::FindWindow(0, _T("ControlDemo"))) { //恢复窗口 wnd->ShowWindow(SW_RESTORE); //最前端显示 wnd->SetForegroundWindow(); } return FALSE; }
2.打开保存文件
1 LPCTSTR pFileType =_T("音乐/电影文件(mp3,wav,avi,asf)|*.mp3;*.wav;*.avi;*.asf|mp3 文件(*.mp3)|*.mp3|音频文件 (*.wav)|*.wav|视频文件 (*.avi)|*.avi|Window Media 文件(*.asf)|*.asf|所有文件 (*.*)|*.*||");2 CFileDialog dlg(FALSE, _T("打开MP3文件"), _T("默认打开的文件名"), OFN_FILEMUSTEXIST|OFN_NOCHANGEDIR, pFileType); 3 if(dlg.DoModal()==IDOK) 4 { 5 CString m_filename=dlg.GetPathName(); 6 7 }
3.打开目录
1 TCHAR szPath[MAX_PATH]; //存放选择的目录路径 2 CString str; 3 4 ZeroMemory(szPath, sizeof(szPath)); 5 6 BROWSEINFO bi; 7 bi.hwndOwner = m_hWnd; 8 bi.pidlRoot = NULL; 9 bi.pszDisplayName = szPath; 10 bi.lpszTitle = L"请选择需要打开的目录:"; 11 bi.ulFlags = 0; 12 bi.lpfn = NULL; 13 bi.lParam = 0; 14 bi.iImage = 0; 15 //弹出选择目录对话框16 LPITEMIDLIST lp = SHBrowseForFolder(&bi); 17 18 if(lp && SHGetPathFromIDList(lp, szPath)) 19 {20 str.Format(_T("选择的目录为 %s"), szPath);21 AfxMessageBox(str); 22 }23 else 24 AfxMessageBox(_T("无效的目录,请重新选择"));
4.执行控制台命令和打开程序
有3种方式可以实现。
1 WinExec("cmd", SW_SHOW);
//执行的程序名称{文件名和参数; 如没指定路径会按以下顺序查找: 程序目录/当前目录/System32/Windows/PATH环境变量},显示方式 2 system("cmd"); 3 ShellExecute(NULL, _T("open"),_T("cmd"),NULL,NULL, SW_SHOWNORMAL); 4 /* 5 ShellExecute( HWND hwnd, //父窗口句柄 (如:NULL,Handle等) 6 LPCSTR lpOperation, //操作类型 (如:"open")*要加英文双引号 7 LPCSTR lpFile, //要进行操作的文件或路径 8 LPCSTR lpParameters, //当lpOperation为“explore”时指定要传递的参数,通常设为NULL 9 LPCSTR lpDirectory, //指定默认目录,通常设为NULL 10 INT nShowCmd //文件打开的方式,以通常方式还是最大化或最小化显示,一般为SW_SHOWNORMAL 11 ) 12 参数说明:13 ●hWnd:用于指定父窗口句柄。当函数调用过程出现错误时,它将作为Windows消息窗口的父窗口。例如,可以将其设置为应用程序主窗口句柄,即Application.Handle,也可以将其设置为桌面窗口句柄(用GetDesktopWindow函数获得)。 14 ●Operation:用于指定要进行的操作。其中“open”操作表示执行由FileName参数指定的程序,或打开由FileName参数指定的文件或文件夹;“print”操作表示打印由FileName参数指定的文件;“explore”操作表示浏览由FileName参数指定的文件夹。当参数设为nil时,表示执行默认操作“open”。 15 ●FileName:用于指定要打开的文件名、要执行的程序文件名或要浏览的文件夹名。 16 ●Parameters:若FileName参数是一个可执行程序,则此参数指定命令行参数,否则此参数应为nil或PChar(0)。 17 ●Directory:用于指定默认目录。 18 ●ShowCmd:若FileName参数是一个可执行程序,则此参数指定程序窗口的初始显示方式,否则此参数应设置为0。 19 若ShellExecute函数调用成功,则返回值为被执行程序的实例句柄。若返回值小于32,则表示出现错误。
传入的参数既可以是cmd命令,也可以是exe程序
例:
关机:system("shutdown -s -t 0");
打开磁盘: system("explorer.exe D:\\")
PROCESS_INFORMATION pi;
STARTUPINFO si;
memset(&si,0,sizeof(si));
si.cb=sizeof(si);
si.wShowWindow=SW_SHOW;
si.dwFlags=STARTF_USESHOWWINDOW;
bool fRet=CreateProcess(L"C:\\Test.exe",NULL,NULL,FALSE,NULL,NULL,NULL,NULL,&si,&pi);
5.文件拖动
//1 添加 WM_DropFILES 静态消息
//2 在OnInitDialog()函数中加入
DragAcceptFiles(TRUE);//允许拖放
//3 WM_DropFILES 的处理函数为
1 unsigned int nFiles=DragQueryFile(hDropInfo,0xFFFFFFFF,NULL,0);//取得拖放的文件总数 2 for (unsigned int i = 0; i < nFiles; i++)//循环取得文件名 3 { 4 unsigned int nLen = DragQueryFile(hDropInfo, i, NULL, 0)+1;//取得文件名长度 5 char *psBuffer = new char[nLen]; 6 unsigned int sLen = DragQueryFileA(hDropInfo, i, psBuffer, nLen);//取得文件名到psBuffer中,sLen为实际拷贝的字符数 7 CString str(psBuffer); 8 ListBox.AddString(str);//将路径加入ListBox中 9 delete [] psBuffer; 10 } 11 DragFinish(hDropInfo);//结束
6.文件查找
1 void CControlDemoDlg::FindAllFile(const CString &strPath, const CString &strType) 2 { 3 CFileFind file; 4 BOOL bScanFirst = FALSE;//目录是否是第一次扫描 5 CString strRealPath;//将路径和文件类型进行拼接
6 strRealPath.Format(_T("%s\\*.*"),strPath); 7 bool bFind = file.FindFile(strRealPath); 8 while(bFind) 9 { 10 bFind = file.FindNextFile();11 CString strTemp = file.GetFilePath();12 if (!file.IsDots() && !file.IsDirectory())//如果不是目录13 {14 if (!bScanFirst)15 {16 FindTypeFile(strPath, strType);//查找当前文件所在文件夹下指定类型的文件
17 bScanFirst = TRUE;18 }19 }20 else if (!file.IsDots() && file.IsDirectory())//如果是目录,排除.和..两种类型的目录21 {22 FindAllFile(strTemp, strType);())//递归目录23 }24 }25 }26 27 void CControlDemoDlg::FindTypeFile(const CString &strPath, const CString &strType)28 {29 CFileFind file;30 CString strRealPath;31 strRealPath.Format(_T("%s\\%s"),strPath,strType);32 bool bFind = file.FindFile(strRealPath);33 while(bFind)34 { 35 bFind = file.FindNextFile();36 CString strTemp = file.GetFilePath();37 if (!file.IsDots() && !file.IsDirectory())//如果是指定格式的文件则加入列表框38 {39 ListBox.AddString(strTemp);//添加到ListBox
40 }41 }42 }
- VC常用代码(VS2008下测试过的)
- 百度分享代码(收集的,没测试过)
- vs2008下mpich2的配置和测试
- VC下测试一段代码运行时间
- iOS 一些整理过的常用代码
- VC常用代码(转)
- VC++6.0下的工程在VS2008中打开注意事项 (zz)
- 整理之前写过的小代码,测试代码
- 俺在VS2008中写程序是代码的字体忒小了、那位兄台能指点下不、小弟谢过了
- Java中的日历类Calendar的常用方法(所有方法都在客户端测试过)
- 【opencv学习笔记一】opencv2.4.3在vs2008下的配置(包括测试程序)
- win7下激活vs2008的方法(已测试可以激活)
- 自己写过的一些比较常用的代码,mybatis
- VS2008常用的快捷键
- VC++常用代码总结(一)
- vc常用代码
- VC常用代码
- VC常用代码段
- 关于vs2005、vs2008和vs2010项目互转的总结(转)
- 随机数(转)
- Windows API ——WritePrivateProfileString——配置文件
- (转载)String,CString,TCHAR*,char*之间区别和联系
- Boost 1.46.1 - VS2008下直接安装使用 .(转)
- VC常用代码(VS2008下测试过的)
- 常用cmd命令
- Windows API ——SetWindowLong—— 设置窗口样式
- GUID
- #pragma指令的使用(转)
- 结构体对齐的具体含义(#pragma pack)(转) .
- 查找窗口、窗口置顶、获取窗口的文本
- Windows API ——OpenProcess——打开进程
- WIN32进程快照以及进程ID和句柄查找(转)