草庐IT

c++ - 使用 AlphaBlend 绘制略透明的矩形失败

我试图在nativeWin32C++中绘制一个稍微透明的蓝色矩形。我正在使用函数AlphaBlend()但它没有在窗口上绘制任何东西,没有任何反应。我的问题:当我运行我的函数来绘制一个稍微透明的矩形时,它没有显示在我的窗口中。我觉得我做错了,也许我应该使用HBITMAP?你能告诉我我需要做什么才能让我的函数在窗口上绘制一个稍微透明的矩形吗?我也知道GDI+,但我现在想避免使用它,因为我在使用该库时遇到很多编译/包含错误,而且我想在没有帮助的情况下尽可能低/原生为我做一切的图书馆。boolpaintRect(HDChdc,RECTdim,COLORREFpenCol,COLORREFbr

c++ - 是否有比使用 C++ 的 FindFirstFile/FindNextFile 更快的枚举文件夹的替代方法?

我需要获取文件夹中子文件夹的所有路径(使用WinAPI和C++。)到目前为止,我找到的唯一解决方案是递归调用FindFirstFile/FindNextFile但是在具有更深层次结构的文件夹上执行此操作需要花费大量时间。所以我想知道,只是为了获取文件夹名称,是否有更快的方法? 最佳答案 如果你真的只需要子文件夹,你应该能够使用FindFirstFileExsearchoptions过滤掉非目录。文档建议这只是一个建议标志,但您的文件系统可能支持此优化-试一试。FindExSearchLimitToDirectoriesThisisa

c++ - 无法从 'FARPROC' 转换为 'BOOL (__cdecl *)(LPMEMORYSTATUSEX)'

BOOL(WINAPI*gmse)(LPMEMORYSTATUSEX)=GetProcAddress(kernel32,"GlobalMemoryStatusEx");这是一个.cpp文件。编译上述代码时出现以下错误。errorC2440:'initializing':cannotconvertfrom'FARPROC'to'BOOL(__cdecl*)(LPMEMORYSTATUSEX)'Thisconversionrequiresareinterpret_cast,aC-stylecastorfunction-stylecast我似乎无法弄清楚我应该将GetProcAddress函

c++ - 在 Win32 GUI 中的按钮上使用 ↺

我正在制作一个Win32GUI应用程序,我想在按钮上显示↺字符。通常,我认为人们会像这样插入一个unicode字符:HWNDbutton=CreateWindow("BUTTON","\u27F3",WS_TABSTOP|WS_VISIBLE|WS_CHILD|BS_PUSHBUTTON,size-105,size-29,100,24,hwnd,(HMENU)IDI_BUTTON,GetModuleHandle(NULL),NULL);其中“\u27F3”是此处在“C/C++/Java”下描述的unicode字符http://www.fileformat.info/info/unico

c++ - 试图打开 CD 托盘

我正在尝试使用一段代码打开和关闭计算机的CD托盘。我一直在使用MCI命令,并将winmm.lib包含在我的项目配置的附加依赖项中。我还包含了windows.h和mmsystem.h。我使用的代码如下:mciSendCommand(0,MCI_SET,MCI_SET_DOOR_OPEN,NULL);mciSendCommand(1,MCI_SET,MCI_SET_DOOR_CLOSED,NULL);代码构建并运行良好,只是没有CD托盘操作在进行!谁能建议我需要如何调整它? 最佳答案 如果您有多个CD驱动器,您应该使用以下代码:#inc

c++ - 获取不知道位置的 .exe 目录中列出的所有文件

我想我的问题是这样的-我如何将exe位置的目录作为LPCWSTR以便我可以将它输入到我的代码中#include#includeintmain(intargc,char**argv){WIN32_FIND_DATAa;HANDLEswap=FindFirstFile(/*(LPCWSTR)__exe_directory__*/,&a);if(swap!=INVALID_HANDLE_VALUE){do{char*sptn=newchar[lstrlen(a.cFileName)+1];for(intc=0;c它会返回目录中列出的文件而不会出错。我知道我的代码已经在给定的目录下运行,我已经

C++ WIN API : When creating a child process using CreateProcess, 是否需要使输入参数具有全局生命周期?

我对C++和WindowsAPI都很陌生。今天突然想到是不是需要把CreateProcess的入参保持一个长生命周期。根据MSDN:BOOLWINAPICreateProcess(_In_opt_LPCTSTRlpApplicationName,_Inout_opt_LPTSTRlpCommandLine,_In_opt_LPSECURITY_ATTRIBUTESlpProcessAttributes,_In_opt_LPSECURITY_ATTRIBUTESlpThreadAttributes,_In_BOOLbInheritHandles,_In_DWORDdwCreationFl

c++ - 将 WinMain(或 wWinMain)参数传递给普通的 main

如果您尝试将构建类型从Console(/SUBSYSTEM:CONSOLE)更改为Windows(/SUBSYSTEM:WINDOWS),您将收到一个错误提示该条目缺少WinMain点:我认为解决这个问题的最好方法是从WinMain调用您的普通intmain(int,char**):#ifdef_WINDOWS_INTWinMain(HINSTANCEhInstance,HINSTANCEhPrevInstance,PSTRlpCmdLine,INTnCmdShow){returnmain(0,NULL);}#endif问题是ImageMagick正在使用控制台参数(我也计划在未来使用

c++ - 调用 handle 为 NULL 的 CloseHandle(handle) 是否安全

删除NULL指针是安全的。int*p=NULL;deletep;//ok,secure句柄是什么?HANDLEh=NULL;CloseHandle(h);//allowed?我正在阅读MSDN但仍然不确定。它说了一些关于ERROR_INVALID_HANDLE的内容,但它是6L,而不是NULL。我来自一个类的析构函数,它给我一个C6387警告Errorif(m_hThread)WaitForSingleObject(m_hThread,INFINITE);CloseHandle(m_hThread);//warninigC6387m_hThread=NULL;

c++ - 停止系统输入 'standby'

如何在我的应用程序运行时阻止主机进入待机模式?是否有任何win32api调用来执行此操作? 最佳答案 有两个API,具体取决于Windows的版本。XP,2000,2003:http://msdn.microsoft.com/en-us/library/aa373247(VS.85).aspx响应PBT_APMQUERYSUSPEND。Vista,2008年:http://msdn.microsoft.com/en-us/library/aa373208(VS.85).aspx阻止计算机进入休眠状态的正当理由可能有很多。例如,观看视