草庐IT

c - GetFileSizeEx 文件映射失败

我在创建命名共享内存和检查其大小时遇到​​问题。当我在这样的函数中调用它时,函数GetFileSizeEx失败。关于如何调试这个的任何想法?voidtest_getsize(constchar*lpName,intsize){HANDLEhandle=CreateFileMapping(INVALID_HANDLE_VALUE,//usepagingfileNULL,//defaultsecurityPAGE_READWRITE,//read/writeaccess0,//maximumobjectsize(high-orderDWORD)size,//maximumobjectsiz

c++ - 如何加载具有负高度的图像

我正在开发一个Win32示例应用程序,我在其中加载图像并显示在屏幕上。要加载图像,我正在使用LoadImage()。这将为某些图像返回正确的结果。因此,某些图像因错误8而失败。然后我开始知道如果图像的高度是-ve那么它就会失败。如果图像高度为–ve,则图像上下颠倒。请告诉我如何加载具有-ve高度的图像 最佳答案 Microsoft位图通常从下到上存储。当位图表头中的高度为负值时,表示图像从上到下存储,其真实高度为abs(表头中指定的高度)。如果您使用GDI函数,它们会处理这个问题(它们会正确显示图像,如果高度为正则从底部开始,如果高

c++ - 用类成员函数调用AfxBeginThread?

如何使用任意非静态类方法调用AfxBeginThread?也许我可以用boostbind做些什么?以下是Microsoft的预期用法(并且是调用非静态方法的示例,但它是硬编码的方法):UINTMyThreadProc(LPVOIDpParam){CMyObject*pObject=(CMyObject*)pParam;if(pObject==NULL||!pObject->IsKindOf(RUNTIME_CLASS(CMyObject)))return1;//ifpObjectisnotvalid//dosomethingwith'pObject'return0;//threadco

c++ - Windows 最低级套接字编程?

我对winsock有多低级有点困惑?我想在Windows上编写一个非常基本的客户端-服务器程序。我真的不想使用臃肿的TCP甚至UDP,只是一些非常基本和低延迟的东西。winsock会是这个的理想选择吗?或者winsock是否与windows网络功能相同,只是全部打包(并且可能更慢)?在nativeWindows网络功能上使用PInvoke会更好吗? 最佳答案 Winsock、TCP、UDP和任何建立在这些之上的广受欢迎的网络库都将在性能方面具有可比性。使用最简单的方法来完成您的工作。 关

c++ - 在调用仿函数时删除它是否安全?

假设我有以下代码:typedefstd::functionfunc_type;voidsome_func(){//Irrelevantstuffhere.Mighttakesometime...}DWORDWINAPIthread_proc(LPVOIDlpParameter){func_type&func=*static_cast(lpParameter);func();return0;}intmain(){HANDLEhandle;{std::functionmy_func(some_func);handle=::CreateThread(NULL,0,&thread_proc,&

c++ - 惰性初始化缓存...如何使其成为线程安全的?

这就是我所拥有的:Windows服务C#多线程服务使用读写锁(一次多次读取,写入会阻塞其他读/写线程)一个简单的、自写的数据库C++足够小以适合内存足够大,不想在启动时加载它(例如10GB)读取性能非常重要写作不太重要树状结构树节点中的信息存储在文件中为了更快的性能,文件仅在第一次使用和缓存时加载延迟初始化以加快数据库启动速度由于数据库会非常频繁地访问这些节点信息(每秒几千次),而且我不经常写,所以我想使用某种双重检查锁定模式。我知道这里有很多关于双重检查锁定模式的问题,但似乎有很多不同的意见,所以我不知道什么是最适合我的情况。你会用我的设置做什么?这是一个例子:一棵有100万个节点的

c++ - 如何创建一个新线程并在一段时间后终止它?

交易是:我想创建一个线程,其工作方式类似于在Windows中执行一个新的.exe,因此如果该程序(新线程)崩溃或进入无限循环:它将被优雅地杀死(超过时间限制后或当它崩溃)并正确释放所有资源。当该线程成功时,我希望能够修改一些全局变量,其中可能包含一些数据,例如文件列表。这就是为什么我不能只从Windows执行外部可执行文件的原因,因为我无法访问在新线程中执行的函数内的变量。编辑:进一步阐明了问题。 最佳答案 调用CreateThread后线程已经运行。WaitForSingleObject不是必需的(除非你真的想等待线程完成);但它

c++ - CreateMutex 和 OpenMutex 返回 NULL

我正在编写一个具有共享内存的应用程序,并正在创建名称上带有适当"Local\"前缀的命名互斥体。但是,每次我调用CreateMutex函数来创建句柄时,我都会得到一个NULL返回值。我什至尝试在那之后调用OpenMutex并获得NULL返回。GetLastError()函数返回6,这意味着ERROR_INVALID_HANDLE。我相信这发生在第一次尝试在任何进程中创建这个命名互斥锁时。我在包含一些MFC组件之后包含了windows.h,并在应用程序的其他地方使用了CMutex;所以我不知道这是否是一个问题。我始终为前两个参数传递NULL和FALSE,并且我使用的是WindowsXP。

c++ - Windows 控制台颜色值是否有与之关联的官方名称(常量)?

通常颜色是通过它们的十六进制关联来调用的,但是在代码中是否可以通过Windows控制台API中构建的一些常量来调用这些颜色?这是我在搜索时找到的颜色名称:https://stackoverflow.com/a/7138277/393087颜色代码:7=>default0=>black1=>blue2=>green3=>aqua4=>red5=>purple6=>yellow7=>lightgray8=>gray9=>lightblueA=>lightgreenB=>lightaquaC=>lightredD=>lightpurpleE=>lightyellowF=>white这些名字是

c++ - 用于 makefie 构建的 C++ 程序的图形化免费调试器 (Windows XP)

我开发的软件使用命令行生成文件。我的环境尽可能使用免费工具。如果您要问我使用的是哪个版本的make,我很难具体说明,因为我已经安装了mingw、cygwin和dev-cpp。但是,我确实知道它是“免费的”,而不是Microsoft的,而目前我路径上的那个来自dev-cpp目录。无论如何,这不是这个问题的症结所在。我的代码从SCM中提取、构建,最后将exe放在bin目录中。我想要一个可以调试这个exe的免费全屏图形调试器。我不是在寻找IDE,但也许答案需要安装IDE。我绝对不会考虑从命令行makefile转移到IDE等价物。我已经用MSVC尝试过这个,我可以通过在进程启动后附加到进程来做