CreateWindow参数问题

挨踢民工的乐章 2010-05-18 09:22:22

HWND CreateButton(HWND hwndp,LPSTR szTitle)
{
WNDCLASSEX wcx;
HWND hwnd;

hwnd = CreateWindow("BUTTON",szTitle,
WS_VISIBLE | WS_CHILD,
300,120,120,20,
hwndp,
(HMENU)NULL,
hInst,
(LPVOID)NULL
);


if(!hwnd)
{
return NULL;
}
ShowWindow(hwnd,SW_SHOW);
UpdateWindow(hwnd);
return hwnd;
}














1>e:\documents and settings\administrator\my documents\visual studio 2005\projects\win32\win32\win32.cpp(344) : error C2664: “CreateWindowExW”: 不能将参数 2 从“const char [7]”转换为“LPCWSTR”

怎么参数有问题呢?
...全文
136 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
cdsnpeter 2010-05-18
  • 打赏
  • 举报
回复
楼主,等啥时候你们的软件需要用Unicode的时候,参考我给的方案哈。
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 visualeleven 的回复:]

编码问题,VS2005默认是Unicode编码
[/Quote]


是编码问题,vs2005能设置编码方式,在项目选项里面设置为“未设置”就可以了,都怪前几天我把它设置成了
unicode。。。设置回来已经可以了。。谢谢~~~
Eleven 2010-05-18
  • 打赏
  • 举报
回复
编码问题,VS2005默认是Unicode编码
cdsnpeter 2010-05-18
  • 打赏
  • 举报
回复
另外第二个参数,需要做转换。
    LPWSTR pwzTitle;
if (szTitle != NULL)
{
nLength = ::MultiByteToWideChar(CP_ACP,0, szTitle, -1, NULL,0);
nBufferSize = ((nLength + 1) * sizeof(WCHAR));
pwzTitle = (LPWSTR)(::LocalAlloc(LPTR, nBufferSize));

if (pwzTitle)
{
::MultiByteToWideChar(CP_ACP, 0, szTitle, -1, pwzTitle, nLength);
}
}


然后,把上述代码贴到你函数的第一句。并把CreateWindow改为这样:
 hwnd = CreateWindow(_T("BUTTON"),pwzTitle, WS_VISIBLE | WS_CHILD, 300,120,120,20, hwndp, (HMENU)NULL, hInst, (LPVOID)NULL );


warmyellow 2010-05-18
  • 打赏
  • 举报
回复
加_T(要填写的字符串)宏
cdsnpeter 2010-05-18
  • 打赏
  • 举报
回复
改为
   hwnd = CreateWindow(_T("BUTTON"),szTitle,
WS_VISIBLE | WS_CHILD,
300,120,120,20,
hwndp,
(HMENU)NULL,
hInst,
(LPVOID)NULL
);

15,979

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧