VC编程技巧20法

上传人:桔**** 文档编号:454566795 上传时间:2023-10-08 格式:DOC 页数:10 大小:79.50KB
返回 下载 相关 举报
VC编程技巧20法_第1页
第1页 / 共10页
VC编程技巧20法_第2页
第2页 / 共10页
VC编程技巧20法_第3页
第3页 / 共10页
VC编程技巧20法_第4页
第4页 / 共10页
VC编程技巧20法_第5页
第5页 / 共10页
点击查看更多>>
资源描述

《VC编程技巧20法》由会员分享,可在线阅读,更多相关《VC编程技巧20法(10页珍藏版)》请在金锄头文库上搜索。

1、VC编程技巧20法编程技巧20法(修订)作者:徐景周 1. 如何激活当前屏幕保护程序/ 激活当前屏幕保护程序, jingzhou xuPostMessage(WM_SYSCOMMAND,SC_SCREENSAVE,0);2. 如何禁止/启用屏幕保护及电源管理static UINT dss_GetList = SPI_GETLOWPOWERTIMEOUT, SPI_GETPOWEROFFTIMEOUT, SPI_GETSCREENSAVETIMEOUT;static UINT dss_SetList = SPI_SETLOWPOWERTIMEOUT, SPI_SETPOWEROFFTIMEOUT

2、, SPI_SETSCREENSAVETIMEOUT;static const int dss_ListCount = _countof(dss_GetList);l 禁止屏幕保护及电源管理m_pValue = new intdss_ListCount;for (int x=0;xdss_ListCount;x+)/ 禁止屏幕保护及电源管理VERIFY(SystemParametersInfo (dss_SetListx, 0, NULL, 0);delete m_pValue;l 启用屏幕保护及电源管理m_pValue = new intdss_ListCount;for (int x=0;

3、xlParam;/对应每个条目的数据HTREEITEM hItem = pTVTipInfo-hItem;CString tip;HTREEITEM hRootItem = m_chassisTree.GetRootItem();if (hRootItem != pTVTipInfo-hItem)tip = 树结点的提示;elsetip = 树根上的提示;strcpy(pTVTipInfo-pszText, (LPCTSTR) tip);5. 如何获取系统信息框的路径#include #define IDS_REG_KEY_MSINFO_PATH1 _T( SoftwareMicrosoftS

4、hared ToolsMSInfo )#define IDS_REG_KEY_MSINFO_PATH2 _T( SoftwareMicrosoftShared Tools Location )#define IDS_REG_VAL_MSINFO_PATH1 _T( Path )#define IDS_REG_VAL_MSINFO_PATH2 _T( MSInfo )#define IDS_MSINFO_EXE_NAME _T( MSInfo32.exe )/.BOOL GetSysInfoPath( CString& strPath ) strPath.Empty();LPTSTR pszPa

5、th = strPath.GetBuffer( MAX_PATH );CRegKey reg;DWORD dwSize = MAX_PATH;LONG nRet = reg.Open( HKEY_LOCAL_MACHINE, IDS_REG_KEY_MSINFO_PATH1, KEY_READ );/ 在注册表中寻找第一个MSInfo32.exe 位置if ( nRet = ERROR_SUCCESS )#if ( _MFC_VER = 0x0700 )nRet = reg.QueryStringValue( IDS_REG_VAL_MSINFO_PATH1, pszPath, &dwSize

6、 );#elsenRet = reg.QueryValue( pszPath, IDS_REG_VAL_MSINFO_PATH1, &dwSize );#endifreg.Close();/ 如果第一次寻找失败,则进行第二次寻找if ( nRet != ERROR_SUCCESS )nRet = reg.Open( HKEY_LOCAL_MACHINE, IDS_REG_KEY_MSINFO_PATH2, KEY_READ );if ( nRet = ERROR_SUCCESS )#if ( _MFC_VER = 0x0700 )reg.QueryStringValue( IDS_REG_VA

7、L_MSINFO_PATH2, pszPath, &dwSize );#elsereg.QueryValue( pszPath, IDS_REG_VAL_MSINFO_PATH2, &dwSize );#endif/ 路径名不包括EXE文件名if ( nRet = ERROR_SUCCESS )VERIFY( :PathAppend( pszPath, IDS_MSINFO_EXE_NAME ) );reg.Close();strPath.ReleaseBuffer();strPath.FreeExtra();/ 检查文件是否有效. return :PathFileExists( strPat

8、h );6. 如何直接运行一个资源中的程序bool Run()CFile f; char* pFileName = Execution.exe;if( !f.Open( pFileName, CFile:modeCreate | CFile:modeWrite, NULL ) )AfxMessageBox(Can not create file!);return 0;CString path = f.GetFilePath();HGLOBAL hRes;HRSRC hResInfo;/获取应用实例 HINSTANCE insApp = AfxGetInstanceHandle();/寻找EXE

9、资源名hResInfo = FindResource(insApp,(LPCSTR)IDR_EXE4,EXE);hRes = LoadResource(insApp,hResInfo ); / Load itDWORD dFileLength = SizeofResource( insApp, hResInfo ); /计算EXE文件大小 f.WriteHuge(LPSTR)hRes,dFileLength); /写入临时文件 f.Close();HINSTANCE HINSsd = ShellExecute(NULL, open,path, NULL, NULL, SW_SHOWNORMAL

10、); /运行它. return 1;7. 如何遍历整个目录#include #include /浏览目录.void BrowseFolder( void )TCHAR pathMAX_PATH;BROWSEINFO bi = 0 ;bi.lpszTitle = (递归调用所有目录);LPITEMIDLIST pidl = SHBrowseForFolder ( &bi );if ( pidl != 0 )/ 获取目录路径SHGetPathFromIDList ( pidl, path );/设置为当前路径SetCurrentDirectory ( path );/搜索所有子目录SearchFo

11、lder( path );/ 释放内存IMalloc * imalloc = 0;if ( SUCCEEDED( SHGetMalloc ( &imalloc ) )imalloc-Free ( pidl );imalloc-Release ( );/搜索其下所有子目录及文件.void SearchFolder( TCHAR * path )WIN32_FIND_DATA FindFileData;HANDLE hFind;TCHAR filename MAX_PATH + 256 ;TCHAR pathbak MAX_PATH ;/复制初始用户选择目录strcpy( pathbak, path );/寻找第一个文件hFind = FindFir

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 机械/制造/汽车 > 工业自动化

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号