草庐IT

c++ - 如何更改控制台字体大小

如何在Windows控制台应用程序中更改字体大小?最简单的方法?使用system("")和windows.h更改控制台颜色有什么区别? 最佳答案 您可以使用SetCurrentConsoleFontEx更改字体大小.下面是一个你可以尝试的小例子,确保你#include和#includeCONSOLE_FONT_INFOEXcfi;cfi.cbSize=sizeof(cfi);cfi.nFont=0;cfi.dwFontSize.X=0;//Widthofeachcharacterinthefontcfi.dwFontSize.Y=2

c++ - 为什么 Windows 10 中 kernel32.dll 上的 GetFileVersionInfo 返回版本 6.2?

我正在尝试检索kernel32.dll版本以执行Windows版本检查。然而,出于某种原因,即使kernel32.dll的版本(如文件属性中所示)为10.0.10586.0,返回的版本为:6.2.10586.0怎么会呢?DWORDdwDummy;DWORDdwFVISize=GetFileVersionInfoSize(lpszFilePath,&dwDummy);LPBYTElpVersionInfo=newBYTE[dwFVISize];if(GetFileVersionInfo(lpszFilePath,0,dwFVISize,lpVersionInfo)==0){returnF

c++ - Windows 虚拟键代码

我如何实现像std::stringVirtualKeyCodeToStdString(UCHARkey)这样返回虚拟键描述的函数?示例:输入为VK_CAPITAL,返回值为std::string("CapsLock") 最佳答案 将VK代码转换为key的文本表示的一种简单方法是:使用MapVirtualKey将VK码转换为扫码。进行位移以将该值转换为长整数,其中第16-23位是扫描码使用GetKeyNameText获取key的名称。例如:WCHARname[1024];UINTscanCode=MapVirtualKeyW(VK_C

c++ - 为什么我的应用程序无法正确显示 unicode 字符?

我决定将我的win32c++应用程序转换为Unicode版本,但是当我使用它时,我得到了阿拉伯语、中文和日语的不可读字母...首先:如果我不使用Unicode,我可以在编辑框窗口标题中使用阿拉伯语:HWNDhWnd=CreateWindowEx(WS_EX_CLIENTEDGE,"Edit","ابتثجحخدذ",WS_CHILD|WS_VISIBLE|WS_BORDER|ES_MULTILINE,10,10,300,200,hWnd,(HMENU)100,GetModuleHandle(NULL),NULL);SetWindowText(hWnd,"صباحالخير");输出看起

c++ - 是否可以创建一个只有边框的 winapi 窗口

因此,我正在尝试创建一个仅显示其边框并让主体的其余部分透明的窗口。我已经创建了一个在我脑海中看起来像的模型:我尝试在具有透明像素的缓冲区中进行blitting,但没有达到预期的效果。有什么想法吗? 最佳答案 这可以通过传递WS_EX_NOREDIRECTIONBITMAP来实现1将窗口样式扩展到对CreateWindowEx的调用.这可以防止系统为窗口的客户区分配渲染表面,使客户区完全透明。请注意,这不会使窗口对鼠标点击透明。HitTest仍然由窗口控制,即使它没有可见的客户区。以下代码提供了一个展示使用的最小代码示例:#defin

c++ - 测试是否安装了字体 (Win32)

如何测试是否安装了字体?最终,我想实现一个类似HTML的字体选择,即当指定例如“Verdana,Arial”,它应该选择安装的第一个字体。ThisQuestion为.NET提供了一个答案——似乎推荐的方法是创建字体,然后cmpare实际使用的字体。这是最有效的方法吗? 最佳答案 您可以尝试创建字体并查看您得到的结果(因此使用操作系统的字体名称匹配/替换)。或者您可以枚举已安装的字体并自行匹配。“最有效”的方法将取决于“匹配”的细节,并且很可能取决于安装了多少字体。在安装了50种字体的系统上,您可能会发现性能与安装了1000种字体的系

c++ - "Correct"发送 UDP 数据报序列的方式?

我的印象是UDP的不稳定性是物理层的一个属性,但似乎不是:我正在尝试通过UDP发送消息,它被分成一系列数据包。消息识别和重新排序是隐式完成的。我在同一台计算机上运行的两个应用程序上测试了此方法,并希望它能顺利运行。然而,即使数据传输完全在同一台机器上的两个程序之间进行,也存在丢包的情况,而且也很频繁。丢失似乎也很随机:有时整个消息都通过了,有时没有。现在,即使在同一台机器上也会发生损失,这让我想知道我是否做对了?最初,我是在一次发送中异步发送消息的所有片段,而不是等待一个片段完成再发送下一个片段。然后,我尝试从前一条消息的完成例程中发送下一条消息。这确实提高了丢包率,但并没有完全阻止它

c++ - Windows XP 样式 : Why do we get dark grey background on static text widgets?

我们正在使用C++和Win32编写Windows桌面应用程序。我们的对话框具有“WindowsXP风格”的丑陋外观:静态文本的背景是灰色的。对话框背景也是灰色的,这不是问题,但是在选项卡控件中,背景是白色的,文本的灰色背景非常明显。过去我们自己绘制了很多控件,但现在我们正在尝试尽可能多地使用标准外观,并尽可能避免覆盖标准行为。我们使用的是Win32API,它有点过时了,但我认为即使使用ATL也会出现问题。我们正在创建一个DIALOGTEMPLATE。文本位于“静态”控件(0x0082)中。我们为样式设置的唯一标志是“SS_LEFT”。文本控件位于选项卡控件内:“SysTabContro

C++ Win32 键盘事件

出于个人兴趣,我正在开发我的击键记录器,昨天问了一个与此相关的问题;WhileloopusingalotofCPU.该程序的问题是占用了过多的CPU使用率,人们建议使输入基于键事件。因为我是Win32API的新手,所以我尝试寻找引用资料和教程,它们将告诉我如何将键盘输入创建为基于事件的,而不是基于轮询的。但问题是我找不到任何可靠的例子或引用资料,因为对于一个完全的新手来说很难理解。他们中的大多数人提到基于事件的编程驻留在GUI应用程序中,但我希望这个击键记录器应用程序成为控制台应用程序。我的两个主要问题是:我可以使用Win32API编写基于事件的控制台击键记录器吗?如果没有,我有什么选

c++ - 我应该在我的 C++ WIn32 应用程序中重写 operators new/delete

我知道Microsoft自己曾经建议通过调用HeapCreate()和HeapAlloc()来覆盖operatornew,但那是不久前的事了。有关详细信息,请参阅KB139638。在Win32上重写new/delete是否仍然有益?推荐的实现方式是什么?TIA。 最佳答案 这篇文章说你可以做,而不是说你应该。其中的代码写得很糟糕,一点也不有趣,而且它不是线程安全的。通常,提供的new和delete实现可以很好地满足所有一般编程需求。只有当您确定了重新实现可以解决的特定问题时,您才应该考虑重新实现它们。