工作总结:MFC使用Windows自带打开对话框
代码:
int nStructSize = ; //Win98 as default
LPARAM lModuleParam = ;
TV_INSERTSTRUCT tvItem;
CString sPathNameSel;
char lpszCurrentDir[];//1K
::GetModuleFileName(NULL, lpszCurrentDir, ); //Get current directory
int n = CString(lpszCurrentDir).ReverseFind('\\');
CString sTemp = CString(lpszCurrentDir).Left(n);
STRCPY(lpszCurrentDir, sTemp);
CString str("", );
/*if (TRUE == bAMT700PrjModify)
{
bAMT700PrjModify = FALSE;
int nAnswer = MxMessageBox(m_hWnd, IDS_SAVEPROJECTORNOT, IDS_CAPTION_NEWPROJECT, MB_YESNO);
if (IDYES == nAnswer)
{
OnBnClickedBtnAmt700PrjSave();
}
}
*/
CFileDialog mFileDlg( TRUE, NULL, NULL, OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT, "IRIS Files (*.ini)|*.ini||", this); //NT does not support
mFileDlg.m_ofn.lpstrFile = (LPSTR)(LPCTSTR)str;//.GetBuffer(MERGE_MAX_COUNT_OF_FILE_CAN_SELECT); mFileDlg.m_ofn.lpstrTitle = RESID2LPSTR(IDS_BROWSEFORPROJECT);
mFileDlg.m_ofn.lpstrInitialDir = lpszCurrentDir;
DWORD dwVersion = GetVersion();
if (dwVersion < 0x80000000) //Windows NT/win2000
{
nStructSize = ;
}
else //Windows95/98
{
nStructSize = ;
}
mFileDlg.m_ofn.lStructSize = nStructSize;
str.ReleaseBuffer();
if (mFileDlg.DoModal() == IDOK)
{
POSITION pos = mFileDlg.GetStartPosition();
while (NULL != pos)
{
m_sPrjPathName = mFileDlg.GetNextPathName(pos);
sPathNameSel = mFileDlg.GetFileName();
}
CFileFind finder;
DWORD dwFindRet;
dwFindRet = m_sPrjPathName.Find(".ini");
if (0xffffffff == dwFindRet)
{
m_sPrjPathName += ".ini";
}
dwFindRet = sPathNameSel.Find(".ini");
if (0xffffffff == dwFindRet)
{
sPathNameSel += ".ini";
}
if (!finder.FindFile(m_sPrjPathName))
{
MxMessageBox(m_hWnd, IDS_PROJECTNOTEXITS, IDS_CAPTION_OPENPROJECT, MB_ICONERROR);
m_sPrjPathName.Empty();
return;
}
sPathNameSel = sPathNameSel.Left(sPathNameSel.GetLength() - strlen(".ini"));
g_prjAMT700.Release();
/*m_treePrj.DeleteAllItems();
m_dlgModule.m_nModuleCount = 0;
m_dlgModule.m_bMethod = 1; //add m_dlgAddr.ShowWindow(SW_HIDE);
m_dlgModule.ShowWindow(SW_SHOW);*/
//CButton * pBtn = (CButton *)GetDlgItem(IDC_RAD_AMT700_MODULE);
//pBtn->ShowWindow(SW_SHOW); //pBtn->SetCheck(1);
//pBtn = (CButton *)GetDlgItem(IDC_RAD_AMT700_ADDR);
//pBtn->ShowWindow(SW_SHOW);
tvItem.hParent = TVI_ROOT;
tvItem.hInsertAfter = TVI_ROOT;
// tvItem.item.iImage = nImage;
// tvItem.item.iSelectedImage = nImage;
tvItem.item.mask = TVIF_IMAGE | TVIF_SELECTEDIMAGE | TVIF_TEXT | TVIF_PARAM;
tvItem.item.pszText = CSTRING_TO_LPSTR sPathNameSel;
tvItem.item.lParam = MAKELPARAM(g_prjAMT700.GetModuleCount(), MAKEWORD(/*PRJ*/, ));//Prj
//m_hPrj = m_treePrj.InsertItem(&tvItem);
//m_treePrj.SelectItem(m_hPrj);
//if (AMT700_VERSION == iAMTVer)
//{
// g_prjAMT700.LoadProject(m_sPrjPathName);
// for (int i = 0; i < g_prjAMT700.GetModuleCount(); i++)
// {
// CModule700 * pTmpModule = g_prjAMT700.GetModuleAt(i);
// lModuleParam = MAKELPARAM(i, MAKEWORD(2/*Module*/, 0));
// HTREEITEM hItem = AddModuleItem(m_hPrj, *pTmpModule, lModuleParam);
// m_dlgModule.m_nModuleCount++;
// for (int j = 0; j < pTmpModule->GetAddrCount(); j++)
// { // CAddr700 pTmpAddr;
// pTmpModule->GetAddrAtEx(j, &pTmpAddr);
// AddAddrItem(hItem, pTmpAddr, MAKELPARAM(j, MAKEWORD(3, 0)));
// }
// }
//}
}
工作总结:MFC使用Windows自带打开对话框的更多相关文章
- 工作总结:MFC调用Windows自带新建、保存对话框代码
保存: void CExample17Dlg::OnBnClickedSaveButton() { // TODO: Add your control notification handler cod ...
- unity3d打开对话框
最近一直在忙项目,没时间更新博客,这两天趁空封装windows下的打开对话框,支持多选.其他系统可以用ngui或者ugui封装一个. 这里就不上封装的源码了提供dll供小伙伴们使用,如果有需要源码请请 ...
- 工作自动化,替代手工操作,使用python操作MFC、windows程序
目录 背景--为什么要自动化操作? 方法--怎么实现自动化操作? 查找窗体 发送消息 获取文本 总结 背景--为什么要自动化操作? 工作中总是遇到反复重复性的工作?怎么用程序把它变成自动化操作?将程序 ...
- 教你用Windows自带工具给优盘/移动硬盘添加密码
教你用Windows自带工具给优盘/移动硬盘添加密码 本文中优盘,移动硬盘和分区操作方式一样,为方便描述,下文将只说优盘 优盘成了很多人每天都会用到的工具,有时候自己优盘会存着一些不希望别人看到的文件 ...
- Windows在当前目录打开cmd
/********************************************************************** * Windows在当前目录打开cmd * 说明: * ...
- Java内存泄露分析和解决方案及Windows自带查看工具
Java内存泄漏是每个Java程序员都会遇到的问题,程序在本地运行一切正常,可是布署到远端就会出现内存无限制的增长,最后系统瘫痪,那么如何最快最好的检测程序的稳定性,防止系统崩盘,作者用自已的亲身经历 ...
- Windows自带强大的入侵检测工具——Netstat 命令 查询是否中木马
Netstat命令可以帮助我们了解网络的整体使用情况.根据Netstat后面参数的不同,它可以显示不同的网络连接信息.Netstat的参数如图,下面对其中一些参数进行说明.如何检测本机是否有被中木马, ...
- derby数据库windows自带的客户端
本示例演示用windows自带的ij来操作derby数据库,包括建库,建表,插入数据,查询数据 首先要配置环境变量: 其次打开cmd输入如下图所示的命令: java代码如下: package com. ...
- VS2010 / MFC + OpenCV 2.4.1打开图片
Windows 7 x64,VS2010 / MFC + OpenCV 2.4.1打开图片显示到Picture控件中. OpenCV 2.2.OpenCV 2.3同样适用. 工具/原料 WinXP / ...
随机推荐
- Android Studio打包签名全过程
Step1:Build-----Generate Step2:签名文件保存位置,习惯性的保存在项目的根目录下E:\Users\StudioProject\SmartHust\smarthust.jks ...
- NDK安装 eclipse 不出现NDK目录问题
android adt自带eclipse无法设置ndk路径 具体情况是 我在mac上搭建android环境 到android sdk官网下载r23版本的adt时自带的eclipse没有设置ndk路径的 ...
- OCCI处理CHAR类型字符串变量的不同
问题背景: 一个旧应用,原先应用是用proc写的,9i的库,如今应用须要改为使用OCCI,当中有一段查询逻辑:select ... where upper(state)=upper(:1). (此处请 ...
- Delphi检查GetElementByID返回值的有效性
Delphi 可以像JavaScript 脚本语言一样使用GetElementByID方法访问网页中指定ID的元素,一般要配合TWebBrowser组件使用.首先使用TWebBrowser浏览网页,然 ...
- MS SQL 性能优化
http://blog.csdn.net/dba_huangzj/article/details/50455543
- Qt 学习之路:QML 组件
前面我们简单介绍了几种 QML 的基本元素.QML 可以由这些基本元素组合成一个复杂的元素,方便以后我们的重用.这种组合元素就被称为组件.组件就是一种可重用的元素.QML 提供了很多方法来创建组件.不 ...
- 实例详解 EJB 中的六大事务传播属性--转
前言 事务 (Transaction) 是访问并可能更新数据库中各种数据项的一个程序执行单元 (unit).在关系数据库中,一个事务可以是一条或一组 SQL 语句,甚至整个程序.它有通常被称为 ACI ...
- Java基础知识强化之集合框架笔记24:ArrayList存储自定义对象并遍历
1. ArrayList存储自定义对象并遍历 2. 代码示例: Student.java,如下: package cn.itcast_01; public class Student { privat ...
- ES6数组去重
今天五一,在出去玩之前赶紧写篇博客,时刻不要忘记学习^_^!! 提到数组去重,想必大家都不陌生,会的同学可能噼里啪啦写出好几个,下面来看看之前常见的去重代码: 'use strict'; var ar ...
- 枚举,Enum,常规使用demo记录
using System;using System.Collections.Generic;using System.Linq;using System.Web;using System.Web.Mv ...