gpt4 book ai didi

C++ 创建增强图元文件导致空文件

转载 作者:行者123 更新时间:2023-11-28 07:22:00 25 4
gpt4 key购买 nike

我正在尝试创建这样一个增强的图元文件:

// Obtain a handle to a reference device context.  

HDC hdcRef = GetDC(hwnd);

// Determine the picture frame dimensions.

int iWidthMM = GetDeviceCaps(hdcRef, HORZSIZE);
int iHeightMM = GetDeviceCaps(hdcRef, VERTSIZE);
int iWidthPels = GetDeviceCaps(hdcRef, HORZRES);
int iHeightPels = GetDeviceCaps(hdcRef, VERTRES);

// Retrieve the coordinates of the client
// rectangle, in pixels.
RECT rect;
GetClientRect(hwnd, &rect);

// Convert client coordinates to .01-mm units.
// Use iWidthMM, iWidthPels, iHeightMM, and
// iHeightPels to determine the number of
// .01-millimeter units per pixel in the x-
// and y-directions.

rect.left = (rect.left * iWidthMM * 100)/iWidthPels;
rect.top = (rect.top * iHeightMM * 100)/iHeightPels;
rect.right = (rect.right * iWidthMM * 100)/iWidthPels;
rect.bottom = (rect.bottom * iHeightMM * 100)/iHeightPels;


// Create the metafile device context.

CreateEnhMetaFile(hdcRef, (LPTSTR)"temp.emf", &rect, NULL);

// Release the reference device context.

ReleaseDC(hwnd, hdcRef);

取码here

我最后得到的只是一些 0 字节的非扩展名文件,名称编码很奇怪,就像整灭支持晨。

可能是什么问题?

附言此外,我在混合模式应用程序中调用它,从 c# 到 c++/cli 对象。

编辑 奇怪编码的问题已经解决,但创建的文件仍然是 0 字节长度。如何解决?

最佳答案

强制转换是个问题,除非你真的必须,否则不要使用强制转换。

令人惊奇的是,您从 Microsoft 网站获得了该类型转换!您不得不怀疑 MS 雇用的人员的素质。但是在他们的代码中,这并没有错,只是多余的。当您将它翻译成您的代码时,它是错误的。

CreateEnhMetaFile(hdcRef, _T("temp.emf"), &rect, NULL);

_T 宏是编写字符串文字的官方方法,根据您的编译器设置,该文字将被解释为 Unicode 字符串或 ANSI 字符串。

关于C++ 创建增强图元文件导致空文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19312291/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com