草庐IT

c++ - 我可以在不引发 C++ 异常的情况下检查内存块是否可读吗?

我需要以下C++代码中的异常处理程序。比如说,我有以下代码块:voidmyFunction(LPCTSTRpStr,intncbNumCharsInStr){__try{//Doworkwith'pStr'}__except(1){//Catchall//ButhereIneedtolog`pStr`intoeventlog//ForthatIdon'twanttoraiseanotherexception//ifmemoryblockofsize`ncbNumCharsInStr`*sizeof(TCHAR)//pointedby'pStr'isunreadable.if(memor

c++ - Win32 窗口创建失败?

我进行了研究,但找不到答案。我找到的最接近的是“Cannotcreatewindow”,但它对我没有帮助。所以,就在这里!基本信息我有一个静态库和一个使用静态库的应用程序。我正确地将应用程序连接到静态库(包括目录、库目录、实际库依赖项等)。在静态库中,我有1个文件:IWindow.h。在应用程序中,我有3个文件:Main.cpp、WindowMain.h和WindowMain.cpp。IWindow.h定义了一个抽象窗口类:#ifndefIWINDOW_H#defineIWINDOW_H#includenamespaceNamespaceName{templateclassIWindo

c - Linux 与 Windows 上的 printf

这个问题在这里已经有了答案:Whydoesprintfnotflushafterthecallunlessanewlineisintheformatstring?(10个答案)关闭9年前。这是一些C代码:inti;printf("Thistextisprinted\nThistextisnotuntiltheforloopend.");for(i=5;i>0;i--){printf("%d",i);sleep(1);}为什么'\n'之后的其余文本没有在for循环开始之前打印出来?即使for循环内的printf也仅在循环结束后打印。如果我在文本末尾放置一个'\n',它会打印出来,但我不想

c++ - 如何通过 Windows API 获取文件夹大小

这个问题在这里已经有了答案:HowcanIfindthesizeofallfileslocatedinsideafolder?(13个答案)关闭9年前。在Windows操作系统上,我们可以使用右键单击文件夹,它会显示包含文件夹大小信息的属性信息。现在,我想使用WindowsAPI来获取文件夹大小,我不想使用FindFirstFile/FindNextFile来枚举所有文件。提前致谢。我尝试了下面的代码,但是,它返回了带有无效数据的大小。HANDLEhFile=CreateFile(tsFolderPath.c_str(),GENERIC_READ,FILE_SHARE_READ,NUL

c++ - 在 C++ 中创建一个只能由我的应用程序访问的文件?

我正在为一个小型办公室开发一个应用程序来维护他们的货币账户。我的应用程序可以帮助创建一个可以存储所有信息的文件。但除我的应用程序外,用户不应访问它。为什么?因为有人可能会删除该文件,所有记录都将消失。环境是一台WindowsPC,具有一个具有管理员权限的帐户。我正在使用MinGW编译器在C++中开发应用程序。关于如何创建这样的文件,我现在有点空白。有什么建议吗? 最佳答案 如果您的应用程序可以修改它,那么运行它的凭据下的用户也可以修改它,就是这样。此外,如果他拥有管理员权限,那么即使您的应用程序在不同的凭据下运行并且文件受ACL保护

c++ - 在类中创建新线程(windows)

我想在一个类中创建一个新线程。问题是当我需要传递一个指向将在新线程中使用的函数的指针时。我无法将指针传递给该函数。引擎盖下的类函数基本上就是这样吧?voidfoo(this);那为什么这段代码拒绝编译呢?classTimeClass{private:DWORDdwThreadId;HANDLEhThread;LPTHREAD_START_ROUTINETimer();public:TimeClass();};TimeClass::TimeClass(){dwThreadId=CreateThread(NULL,0,Timer,this,0,&dwThreadId);}

c++ - 如何在 Windows 8 64 位操作系统中注册 .DLL 文件?

我到处搜索,但没有找到有关如何在Windows864位中注册.DLL文件的结果。看我的this我也尝试了所有方法,然后有人说我必须注册.DLL文件。但是如何呢? 最佳答案 只能注册COM服务器,glut32.dll不是COM服务器。一个标准错误是将32位DLL复制到c:\windows\system32。它们需要被复制到c:\windows\syswow64而不是64位版本的Windws上的32位可执行文件的位置。通常最好避免,弄乱Windows目录总是一个错误。将DLL复制到与EXE相同的文件夹中。最好通过项目中的构建后事件来完成

C++ 将 FILE * 作为参数传递给函数

我想将FILE*传递给另一个函数。在此函数中,使用fread从文件中读取一些字节。不执行写入。我在想该不该说voidDoSomething(FILE*uFile)或voidDoSomething(constFILE*uFile)我害怕在某处引入内存泄漏,并认为const可能更安全。我担心当我不正确地传递它时,该函数可能会创建文件的拷贝。我像这样创建FILE*:FILE*outfile=fopen("c:\\myfile.dat","wb");谢谢。 最佳答案 无论您将FILE*传递给哪个函数,最终都会调用fread/fscanf/f

c - Win32 公共(public)控件初始化会破坏自定义控件吗?

所以我正在尝试在Win32中初始化公共(public)控件和视觉样式。我构建了一个包含我编写的一些自定义控件的DLL,以及一个包含GUI应用程序的EXE。通常,职责分离似乎是我的DLL不应该担心我们是否启用窗口样式。它应该只生成自定义控件并将它们公开给依赖的EXE。然后EXE可以决定它是否需要视觉样式,而DLL一点也不知道。问题是这样的:我让我的DLL在进程附加上的DllMain中注册它的窗口类。但是,如果我在EXE中调用InitCommonControlsEx,自定义控件中的按钮和诸如此类的东西不会显示,因为自定义控件在EXE可以初始化公共(public)控件之前注册。为了证明这一点

c - 简单的 C 代码编译但在给定输入时崩溃

我编写了这段非常简单的代码来查找电阻值。代码将编译并询问初始问题,但是当输入P或S时,代码崩溃并退出。任何帮助都会很棒,我知道这将是我错过的非常简单的事情......#includevoidmain(){floatres1;floatres2;floatres3;floatanswer;charcalctype;printf("Pleaseenter1stresistorvalue:");scanf("%f",&res1);printf("Enter2ndresistorvalue:");scanf("%f",&res2);printf("Enter3rdresistorvalue:"