学孙老师例子发生的问题

zcxrollrock 2007-07-29 02:27:58
各位大哥,这是我照着孙鑫老师的视频教程上写下来的程序:

#include<windows.h>
#include<stdio.h>


LRESULT CALLBACK WinSunProc(
HWND hwnd,
UINT uMsg,
WPARAM wParam,
LPARAM lParam
);

int WINAPI WinMain(
HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR szCmdLine,
int iCmdShow
)
{
WNDCLASS wndclass;
wndclass.cbClsExtra=0;
wndclass.cbWndExtra=0;
wndclass.hbrBackground=(HBRUSH)GetStockObject(BLACK_BRUSH);
wndclass.hCursor=LoadCursor(NULL,IDC_ARROW);
wndclass.hIcon=LoadIcon(NULL,IDI_ERROR);
wndclass.hInstance=hInstance;
wndclass.lpfnWndProc=WinSunProc;
wndclass.lpszClassName="Weixin2003";
wndclass.lpszMenuName=NULL;
wndclass.style=CS_HREDRAW|CS_VREDRAW;

RegisterClass(&wndclass);
HWND hwnd;
hwnd=CreateWindow("Weixin2003","北京维新技术培训中心",WS_OVERLAPPEDWINDOW,0,0,600,400,NULL,NULL,hInstance,NULL);
ShowWindow(hwnd,SW_SHOWNORMAL);
UpdateWindow(hwnd);

MSG msg;
while(GetMessage(&msg,NULL,0,0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return 0;


}


LRESULT CALLBACK WindowProc(
HWND hwnd,
UINT uMsg,
WPARAM wParam,
LPARAM lParam
)
{
switch(uMsg)
{
case WM_CHAR:
char zcxchar[20];
sprintf(zcxchar,"输入的是%d",wParam);
MessageBox(hwnd,zcxchar,"Weixin",0);//??????????????????????????????
break;
case WM_LBUTTONDOWN:
MessageBox(hwnd,"mouse click","Weixin",0);
HDC hdc;
hdc=GetDC(hwnd);
TextOut(hdc,0,50,"计算机编程语言培训",strlen("计算机编程语言培训"));
ReleaseDC(hwnd,hdc);
break;
case WM_PAINT:
HDC hDc;
PAINTSTRUCT ps;
hdc=BeginPaint(hwnd,&ps);
TextOut(hDc,0,0,"维新培训",strlen("维新培训"));
EndPaint(hwnd,&ps);
break;
case WM_DESTROY:
PostQuitMessage(0);
break;
case WM_CLOSE:
{
if(IDYES==MessageBox(hwnd,"zhen de jieshu ?","Weixin",MB_YESNO))
DestroyWindow(hwnd);
}

break;
default:
return DefWindowProc(hwnd,uMsg,wParam,lParam);
}

return 0;

}

我有几个问题想问:
1。
int WINAPI WinMain(
HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR szCmdLine,
int iCmdShow
)我看见孙老师在MSDN上面查到的函数是这样的,但是为什么在我的MSDN上面查到的就没有这个函数呢???我的意思是说我能查到两个函数
一个是:
int WINAPI WinMain(
HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPWSTR szCmdLine,
int iCmdShow
)这个和上面的区别在于LPWSTR szCmdLine; 这个类型不符合我的要求
还有一个版本是:
intWinMain(
HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR szCmdLine,
int iCmdShow
) 也不符合我的要求 因为缺少了 WINAPI 。我在想为什么会这样呢??既然他可以有直接拷贝的函数,为什么我的MSDN上就没有呢???

还有一个问题就是:
error C2440: “=”: 无法从“const char [11]”转换为“LPCWSTR”
error C2664: “CreateWindowExW”: 不能将参数 2 从“const char [11]”转换为“LPCWSTR”
error C2664: “CreateWindowExW”: 不能将参数 2 从“const char [11]”转换为“LPCWSTR”
。。。。。。都是这样饿错误!!!
这到底是怎么回事 啊 ??
...全文
177 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhangwhe112 2012-08-16
  • 打赏
  • 举报
回复
谢谢大哥的指教。
zcxrollrock 2007-07-29
  • 打赏
  • 举报
回复
谢谢这位大哥,可惜我不知道为什么我想给分也没分了
tangb 2007-07-29
  • 打赏
  • 举报
回复
error C2440: “=”: 无法从“const char [11]”转换为“LPCWSTR”
error C2664: “CreateWindowExW”: 不能将参数 2 从“const char [11]”转换为“LPCWSTR”
error C2664: “CreateWindowExW”: 不能将参数 2 从“const char [11]”转换为“LPCWSTR”


你用的是不是VS.NET的编译器啊,点击菜单兰最上面那一排的那牌 项目/属性,再点配置属性/常规/项目默认值/字符集 把使用Unicode字符集,改成多字节字符集就可以了,

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

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