0

次のような拡張メタファイルを作成しようとしています。

// 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); 

ここでコードを取得しました

最終的に得たのは、整灭攮晭のような奇妙なエンコード名を持つ 0 バイトの非拡張子ファイルだけです。

何が問題になる可能性がありますか?

PS また、C# から c++/cli オブジェクトを介して混合モード アプリで呼び出しています。

編集奇妙なエンコーディングの問題は解決されましたが、作成されたファイルはまだ 0 バイトの長さです。どうすれば解決できますか?

4

1 に答える 1