CString 如何到头文件中

beautyzeb18 2005-05-16 03:21:58
#include <string>不行
换成#include <afx.h>报#include <windows.h>已经包含有了
到底是怎么回事?在线等待,希望路过的给看看.谢谢
...全文
200 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
beautyzeb18 2005-05-17
  • 打赏
  • 举报
回复
ATL工程中使用CString ,CFile类时,要导入afx.h,而且afx.h必须在导入atlbase.h前面被导入,此外工程还必须支持mfc类库,具体为什么这么做,我也不太清楚
beautyzeb18 2005-05-17
  • 打赏
  • 举报
回复
自己解决了!谢谢各位给的意见
xiao_xiao_zi 2005-05-16
  • 打赏
  • 举报
回复
把头文件里#include <windows.h>去掉
加上#include <afx.h>
beautyzeb18 2005-05-16
  • 打赏
  • 举报
回复

///////////////////////////////////////////////////////////////////////////////
//
// [ VerUpCommon.cpp ]
// Copyright (C) 2000 - 2000, Works Applications Corp.
// All Rights Reserved.
//
///////////////////////////////////////////////////////////////////////////////

//#include "StdAfx_Verup.h"
#include "VerUpCommon.h"
#include <shlwapi.h>
#include <odbcinst.h>
#include <sstream>
#include <list>
typedef std::list<tstring> tstrlist;
#include "WALib01CPP.h"
#include "AutoOleInit.h"
//#include <sqlenv.h>

///////////////////////////////////////////////////////////////////////////////

#define TCharSize(t) (sizeof(t) / sizeof(TCHAR))

///////////////////////////////////////////////////////////////////////////////

BOOL g_fRunningUnderNT;

beautyzeb18 2005-05-16
  • 打赏
  • 举报
回复
///////////////////////////////////////////////////////////////////////////////
//
// [ VerUpCommon.h ]
// Copyright (C) 2000 - 2000, Works Applications Corp.
// All Rights Reserved.
//
///////////////////////////////////////////////////////////////////////////////

#ifndef _VERUPCOMMON_H_IS_INCLUDED
#define _VERUPCOMMON_H_IS_INCLUDED

///////////////////////////////////////////////////////////////////////////////
#include "stdafx.h"
#include <vdmdbg.h>
#include <string>
#include <vector>
typedef std::basic_string<TCHAR> tstring;
typedef std::vector<tstring> tstrvect;

#import "../CompanyEx/CompanyEx.tlb" named_guids
using namespace COMPANYEXLib;
using namespace std;
extern HANDLE g_hEventEndSession;

///////////////////////////////////////////////////////////////////////////////

BOOL InitializeVerUpCommonModule(BOOL fRunningUnderNT);
BOOL UninitializeVerUpCommonModule();
BOOL IsVDMApp(LPCTSTR lpszExeFile);
BOOL OutputDebugLog(
LPCTSTR lpszMessage, BOOL fErrorLog = FALSE, DWORD dwError = 0
);
void ReleaseMonitor();
void SetLoggingMode(BOOL fEnableLogging);
void GetExtErrorMessage(DWORD dwExtError, LPTSTR lpszMessage);
//CString GetErrorMessageEx(DWORD dwError);

///////////////////////////////////////////////////////////////////////////////

typedef struct tagVDMPROCESSINFO {
tstring strExeFile;
DWORD dwProcessId;
BOOL fFound;
BOOL fCompareDirOnly;
DWORD dwProcessIdExclude;
} VDMPROCESSINFO;

BOOL GetVDMProcessId(LPCTSTR lpszVDMExeFile, DWORD& dwProcessId);
BOOL WINAPI EnumProcessProc(
DWORD dwProcessId, DWORD dwAttributes, LPARAM lpVDMProcessInfo
);
BOOL WINAPI EnumTaskProcEx(
DWORD dwThreadId,
WORD hMod16,
WORD hTask16,
PSZ pszModName,
PSZ pszFileName,
LPARAM lpVDMProcessInfo
);

BOOL GetPEProcessId(
LPCTSTR lpszPEExeFile, DWORD& dwProcessId, BOOL fSameDirOnly
);

typedef INT (WINAPI *VDMENUMPROCESSWOW)(PROCESSENUMPROC fp, LPARAM lparam);
typedef INT (WINAPI *VDMENUMTASKWOWEX)(
DWORD dwProcessId, TASKENUMPROCEX fp, LPARAM lparam
);

typedef HANDLE (WINAPI *CREATETOOLHELP32SNAPSHOT)(
DWORD dwFlags, DWORD th32ProcessID
);
BOOL IsSameDir(LPCTSTR lpszExe1, LPCTSTR lpszExe2);
BOOL ExistProcessInSameDir(
LPCTSTR lpszExeFile, DWORD dwProcessIdExclude = 0
);
BOOL ExistVDMProcessInSameDir(
LPCTSTR lpszExeFile, DWORD dwProcessIdExclude = 0
);
BOOL ExistPEProcessInSameDir(
LPCTSTR lpszExeFile, DWORD dwProcessIdExclude = 0
);
BOOL WaitForNoProcessInSameDir(
LPCTSTR lpszExeFile, DWORD dwProcessIdExclude = 0
);
BOOL ExistProcessInSameDirEx(
LPCTSTR lpszExeFile, DWORD dwProcessIdExclude = 0
);

int GetCurrentPtfNumber();
int GetCurrentPtfNumber(LPCTSTR lpszFileName);
BOOL PutCurrentPtfNumber(int iPtfNo);
BOOL PutCurrentPtfNumber(LPCTSTR lpszFileName, int iPtfNo);
BOOL CopyPtfNumberToLocalFile(LPCTSTR lpszFileName);
BOOL IsRunningUnderNT();
HRESULT GetBrowserVersion(LPDWORD pdwMajor, LPDWORD pdwMinor);
HRESULT CreateShortCut(
LPCTSTR pszShortcutFile, LPTSTR pszLink, LPTSTR pszDesc
);
BOOL GetDesktopFolder(LPTSTR lpszFolderPath, int nMax);
BOOL CheckWinInet();
BOOL RemoveDirectoryAndFiles(LPCTSTR lpszDirectory);
BOOL GetRegistryPrivilege(HWND hwnd, BOOL fShowError);

BOOL SetupOracleEnv(
LPCTSTR lpszDsn,
LPCTSTR lpszServer, LPCTSTR lpszSid, LPCTSTR lpszPort,
LPCTSTR lpszCMServer, LPCTSTR lpszCMPort
);
BOOL SetupDb2Env(
LPCTSTR lpszDsn,
LPCTSTR lpszServer, LPCTSTR lpszSid, LPCTSTR lpszPort
);
BOOL SetupBdeEnv(
LPCTSTR lpszDsn, LPCTSTR lpszSid, LPCTSTR lpszUid, LPCTSTR lpszPwd,
LPCTSTR lpszPdoxDir, LPCTSTR lpszBdeDll32Name = NULL
);
BOOL SetupBdeEnv_DB2(
LPCTSTR lpszDsn, LPCTSTR lpszSid, LPCTSTR lpszUid, LPCTSTR lpszPwd,
LPCTSTR lpszPdoxDir = NULL
);
BOOL SetupOdbcEnv(
LPCTSTR lpszDsn, LPCTSTR lpszSid, LPCTSTR lpszUid, LPCTSTR lpszPwd
);
CString GetOracleDllName(BOOL fFileNameOnly);
void FindFileFromDir(
LPCTSTR lpszFileName, LPCTSTR lpszDir, tstrvect& results
);

///////////////////////////////////////////////////////////////////////////////

#if !defined(_DEBUG)
#define DebugMessage(x) \
OutputDebugString(TEXT("Debug : ")); \
OutputDebugString(x); \
OutputDebugString(TEXT("\r\n"))
#else
#define DebugMessage DebugMessageProc
#endif

void DebugMessageProc(LPCTSTR lpszMessage);

///////////////////////////////////////////////////////////////////////////////

BOOL CompactMdb(
LPCTSTR lpszMdbPath, LPCTSTR lpszPassword = NULL,
tstring* pMessage = NULL
);
DWORD RegisterRunOnce(LPCTSTR lpszName, LPCTSTR lpszValue);
DWORD ReplaceRegistryValue(
HKEY hParentKey, LPCTSTR lpszSubKey, LPCTSTR lpszPrev, LPCTSTR lpszAfter
);
CString GetCompanyDirFromRegistry();
CString GetTempCompanyDirFromRegistry();
DWORD SetTempCompanyDirToRegistry(LPCTSTR lpszTempCompanyDir);

///////////////////////////////////////////////////////////////////////////////

#endif // !defined(_VERUPCOMMON_H_IS_INCLUDED)

// [ END OF FILE ] ////////////////////////////////////////////////////////////
beautyzeb18 2005-05-16
  • 打赏
  • 举报
回复
给大侠们看一下,我也不是很明白
就贴出.h和.cpp程序吧!
firmbird 2005-05-16
  • 打赏
  • 举报
回复
晕,你是什么类型的程序啊,是不是没选MFC支持
  • 打赏
  • 举报
回复
.h头文件(c风格)和c++风格的头文件,不能混用.
#include<string>
using namespace std;//ok

#include<string.h>//ok,euqal to the above

#include<string>
#include<iostream.h>
using namespace std;//不管使用不使用using 都出错

.h头文件可以看做暗含了using 指令
区别在:
.h的实现文件(.cpp)文件是没有模块化的
而c++风格的是已经模块化的,所以不要混用
beautyzeb18 2005-05-16
  • 打赏
  • 举报
回复
不行
OpenHero 2005-05-16
  • 打赏
  • 举报
回复
using namespace std;
行不?
看看
OpenHero 2005-05-16
  • 打赏
  • 举报
回复
命名空间
打开链接下载源码: https://pan.quark.cn/s/847069bb2538 标题所提及的“EPSON L1118 L1119 L3106 L3108 L3115 L3116废墨清零软件+带教程说明.rar”具体指代的是为爱普生(EPSON)品牌下特定系列打印机量身定制的废墨清零专用程序,该系列打印机型号涵盖了L1118、L1119、L3106、L3108、L3115以及L3116等。 废墨清零作为打印机维护过程的关键步骤,其核心作用在于处理因打印头清洁周期内累积的废墨所引发的打印机故障报警或工作断现象。 文件描述部分与标题信息保持一致,进一步明确了该压缩文件内含的是针对上述指定型号打印机的废墨计数器重置工具,并且同步提供了操作教程,旨在辅助用户顺利完成软件应用。 在所标注的标签信息,诸如“L1118废墨清零”之类的关键词,清晰表明了该软件套件是专门为这些特定型号打印机研发的,其根本目的在于清除设备内部记录的废墨数据,从而恢复打印机的标准作业效能。 在压缩文件内部署的文件清单如下:1. DataServiceLapper.dll:此文件可能扮演着服务管理层的动态链接库角色,主要负责处理打印机的相关数据服务,其可能集成有废墨计数器重置的核心功能。 2. apdadrv.dll:该文件或许属于打印机驱动程序的构成部分,主要功能在于实现软件与打印机硬件之间的交互通讯,用于下达清零指令。 3. StrGene.dll:此动态链接库可能涉及字符串操作或数据加密的相关功能,其用途可能在于验证软件的合法性或保障数据传输的安全性。 4. Adjprog.exe:此文件极有可能为主控程序,用户需通过执行该可执行文件来启动废墨清零流程。 5. 使用说明.txt:该文本文件提供了软...
内容概要:本文深入解析了pytest自动化测试实战项目在软件行业的应用,涵盖其核心特性、关键技术与实际应用场景。通过构建一个用户管理微服务的API测试项目,详细展示了如何利用pytest的Fixture机制、参数化测试、插件体系和标记系统实现高效、可维护的自动化测试框架。文章强调模块化设计、数据驱动测试及与持续集成系统的无缝整合,并结合具体代码案例阐述最佳实践,最后展望了AI赋能、云原生适配等未来发展方向。; 适合人群:具备Python基础、从事测试或开发工作的工程师,尤其是希望提升自动化测试能力的测试开发人员、QA工程师及DevOps从业者;适合工作1-3年、有一定实践经验的技术人员。; 使用场景及目标:① 掌握pytest在API测试、UI自动化、微服务集成的落地方法;② 学习如何通过fixture复用、参数化和分层设计提升测试效率与可维护性;③ 将pytest集成到CI/CD流水线,实现快速反馈与高质量交付。; 阅读建议:此资源以真实项目为导向,建议读者结合代码结构动手实践,重点理解fixture作用域、数据驱动设计与异常断言策略,并尝试引入pytest-cov、pytest-xdist等插件优化测试流程,在实践掌握从零搭建企业级测试框架的能力。
源码链接: https://pan.quark.cn/s/69b5c1f90e9a Redis作为一款具备出色性能的键值型数据库,在多种应用场景,如数据缓存与消息队列处理,得到了广泛的应用。在实际环境部署时,为了保障服务的持续稳定以及资源的高效利用,常常会选用在后台模式下执行Redis。这种后台执行模式能够确保Redis在不干扰终端操作的前提下运行,从而增强整个系统的适应性。文章标题“redis后台启动redis后台启动”明确指出本主题的核心内容是关于如何在后台环境下来启动Redis服务器。描述部分“redis后台启动命令加对应redis.vbe。修改路径然后直接点击”给出了初步的操作指引,但对于初次接触的用户来说,可能显得不够详尽。接下来将全面阐释Redis后台启动的详细流程,并进一步探讨相关的技术要点。1. Redis后台启动指令: Redis在后台模式下启动通常借助`redis-server`指令并配合`--daemonize yes`参数实现。在命令行输入以下指令: ``` redis-server --daemonize yes ``` 此指令将使Redis以守护进程(daemon)的形式执行,即在后台运行且不占用终端界面。2. 配置文件的调整: 通常情况下,Redis的配置文件命名为`redis.conf`。在文件找到`daemonize`选项,将其参数值设置为`yes`,随后保存并退出。通过这种方式配置后,每次启动Redis时,都会默认采用后台运行模式。启动命令可以简化为: ``` redis-server ```3. 日志文件的配置: 当Redis以守护进程形式运行时,其日志信息会被重定向至`stdout`和`stderr`。为了便...

16,551

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Creator Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧