标签: lpcwstr

用C++连接两个WCHAR_T数组

处理这些疯狂的字符串和数组令我头疼......

到目前为止,这是我的代码

wchar_t mypath[MAX_PATH];
wchar_t temppath[MAX_PATH];

GetModuleFileName(0, mypath, MAX_PATH);
GetTempPath(MAX_PATH, temppath);
CreateDirectory(???, NULL);
Run Code Online (Sandbox Code Playgroud)

前两个Windows API函数使用LPWSTR变量.第三个使用LPCWSTR.有什么主要区别?在我获得TEMP目录的路径后,我想在其中创建一个名为"test"的新目录.这意味着我需要将(L"test")追加到我的"temppath"变量中.有人可以给我一些关于如何使用这些数组的技巧.这就是让C++变得痛苦的原因.为什么不能每个人都只选择一种数据类型的字符串.wchar_t如何有用?这很难使用和操纵.

多谢你们!

c++ arrays string winapi lpcwstr

1
推荐指数
1
解决办法
2466
查看次数

LPCWSTR将无法在TextOut()方法上正确转换

整个代码片段......

#include <windows.h>
#include <string>
#include <vector>
using namespace std;
//=========================================================
// Globals.
HWND ghMainWnd = 0;
HINSTANCE ghAppInst = 0;
struct TextObj
{
    string s; // The string object.
    POINT p; // The position of the string, relative to the
    // upper-left corner of the client rectangle of
    // the window.
};
vector<TextObj> gTextObjs;

// Step 1: Define and implement the window procedure.
LRESULT CALLBACK
WndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
    // Objects for painting.
    HDC …
Run Code Online (Sandbox Code Playgroud)

c++ wm-paint textout lpcwstr

0
推荐指数
1
解决办法
691
查看次数

有一个PCWSTR并需要它是一个WCHAR []

我正在从我下载的一些代码中重写一个C++方法.该方法最初将PCWSTR作为参数,然后提示用户输入文件名.我修改了方法以获取两个参数(均为PCWSTR)而不是提示用户.我已经在其他地方生成了文件列表.我试图用我的迭代文件列表的方法中的两个参数调用我的新(修改)方法.

原始方法使用StringCBGetsW命令提示用户输入.像这样...

HRESULT     tst=S_OK;         //these are at the top of the method
WCHAR       fname[85] = {0};  //these are at the top of the method
tst = StringCbGetsW(fname,sizeof(fname));
Run Code Online (Sandbox Code Playgroud)

wchar fname被传递给另一个迭代方法.当我看到那个方法时,它说它是LPCWSTR类型; 我假设它可以取代WCHAR.

但它不能做的就是采用该方法获得的PCWSTR.我的最终目标是尝试不提示用户输入文件名,而是取代之前在另一种方法中迭代的文件名.

TL;博士.我有一个PCWSTR,它需要转换为WCHAR.我不知道WCHAR []是什么或如何用它做什么.包括尝试做printf以查看它是什么.

PS ...我知道有更简单的方法来移动和复制文件,有一个原因我试图使用程序来完成这项工作.

c++ string winapi wchar-t lpcwstr

0
推荐指数
1
解决办法
614
查看次数

LPCWSTR转换为char *,反之亦然

我正在使用DirectX9进行一个简单的项目。我对数据类型的转换有些迷惑,并且已经做过一些研究,但是还没有发现任何特别有用的东西。让我们从代码开始:

LPDIRECT3DSURFACE9 LoadSurface(char *fileName, D3DCOLOR transColor)
{
LPDIRECT3DSURFACE9 image = NULL;
D3DXIMAGE_INFO info;
HRESULT result;

result = D3DXGetImageInfoFromFile(fileName, &info);
if (result != D3D_OK) return NULL;

result = d3ddev->CreateOffscreenPlainSurface(
    info.Width,         //width of the surface 
    info.Height,        //height of the surface
    D3DFMT_X8R8G8B8,    //surface format
    D3DPOOL_DEFAULT,    //memory pool use
    &image,             //reference to image
    NULL);              //reserved - ALWAYS NULL

//make sure file loaded properly
if (result != D3D_OK) return NULL;

return image;

}
Run Code Online (Sandbox Code Playgroud)

在第6行,我得到了变量fileName的错误:

IntelliSense:“ char *”类型的参数与“ LPCWSTR”类型的参数不兼容

当尝试使用MessageBox时,我在第二个和第三个参数上也得到了完全相同的错误消息:

if (d3ddev == NULL)
{
MessageBox(hWnd, …
Run Code Online (Sandbox Code Playgroud)

c++ type-conversion char directx-9 lpcwstr

0
推荐指数
1
解决办法
3687
查看次数