“cbSize”: 不是“tagWNDCLASSA”的成员

tx183584 2009-07-15 10:02:40
#include<windows.h>
#include "stdafx.h"
#include <stdio.h>


ATOM MyRegisterClass(HINSTANCE hInstance);
BOOL InitInstance(HINSTANCE, int);
LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);

int APIENTRY WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow)

{
MSG Msg;
MyRegisterClass(hInstance);

if(!InitInstance(hInstance,nCmdShow))
{
return FALSE;
}


while (GetMessage(&Msg,NULL,0,0))
{
TranslateMessage(&Msg);
DispatchMessage(&Msg);

}

return Msg.wParam;
}

ATOM MyReisterClass(HINSTANCE hInstance)
{
WNDCLASS wcex;
wcex.cbSize=sizeof(WNDCLASS);
wcex.style=CS_HREDRAW|CS_VREDRAW;
wcex.lpfnWndProc=(WNDPROC)WndProc;
wcex.cbClsExtra=0;
wcex.cbWndExtra=0;
wcex.hInstance=hInstance;
wcex.hIcon=NULL;
wcex.hCursor=NULL;
wcex.hCursor=LoadCursor(NULL,IDC_ARROW);
wcex.hbrBackground=(HBRUSH)(COLOR_WINDOW+1);
wcex.lpszMenuName=NULL;
wcex.lpszClassName="canvas";
wcex.hIconSm=NULL;
return RegisterClassEx(&wcex);


}

BOOL InitInstance(HINSTANCE hInstance,int nCmdshow)
{
HWND hWnd;
hInst=hInstance;
hWnd=CreateWindow("canvas","绘图窗口",WS_OVERLAPPEDWINDOW,CW_USEDEFAULT,0,
CW_USEDEFAULT,0,NULL,NULL,hInstance,NULL);
if(!hWnd)
{
return FALSE;
}
MoveWindow(hWnd,10,10,600,450,true);
ShowWindow(hWnd,nCmdshow);
UpdateWindow(hWnd);

return TRUE;
}

444.cpp
1>d:\我的文档\visual studio 2008\projects\444\444\444.cpp(38) : error C2039: “cbSize”: 不是“tagWNDCLASSA”的成员
1> c:\program files\microsoft sdks\windows\v6.0a\include\winuser.h(1566) : 参见“tagWNDCLASSA”的声明
1>d:\我的文档\visual studio 2008\projects\444\444\444.cpp(50) : error C2039: “hIconSm”: 不是“tagWNDCLASSA”的成员
1> c:\program files\microsoft sdks\windows\v6.0a\include\winuser.h(1566) : 参见“tagWNDCLASSA”的声明
1>d:\我的文档\visual studio 2008\projects\444\444\444.cpp(51) : error C2664: “RegisterClassExA”: 不能将参数 1 从“WNDCLASS *”转换为“const WNDCLASSEXA *”
1> 与指向的类型无关;转换要求 reinterpret_cast、C 样式转换或函数样式转换
1>d:\我的文档\visual studio 2008\projects\444\444\444.cpp(59) : error C2065: “hInst”: 未声明的标识符
...全文
226 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
hazrael 2009-07-16
  • 打赏
  • 举报
回复
估计是从书上直接抄来的。
可以使用VC自动生成WIN32程序,估计就是你抄的这段。对照一下就知道了
arong1234 2009-07-16
  • 打赏
  • 举报
回复
在模仿的过程种什么自己的东西都没有,是学不到东西的。你抄的时候,至少要弄清楚人家每行代码是干吗的

[Quote=引用 5 楼 tx183584 的回复:]
我学API刚起步啊。没办法,不是说模仿是最好的老师,实在想不出来啊
[/Quote]
wltg2001 2009-07-16
  • 打赏
  • 举报
回复
我学API刚起步啊。没办法,不是说模仿是最好的老师,实在想不出来啊
========
模仿是最好的老师,但是你也要型明白啊,上面这段代码应该是SDK中最简单的了
tx183584 2009-07-16
  • 打赏
  • 举报
回复
我学API刚起步啊。没办法,不是说模仿是最好的老师,实在想不出来啊
arong1234 2009-07-15
  • 打赏
  • 举报
回复
如果你抄代码只会抄,你大概只能练打字,而不能练编程,很显然,你的错误在于

hInst=hInstance;

为什么要这个赋值?这个赋值给一个没定义的变量的目的是什么?

这种问题一定要自己理解并解决
[Quote=引用 3 楼 arong1234 的回复:]
抄代码要理解代码到底是干吗的,你不能只是拷贝不思考,这个错误很显然,hInst变量名不对,你觉得它应该是哪个变量对应你抄的这个呢?


引用 2 楼 tx183584 的回复:
楼上高人,我抄错了。。。、
但是还有
:\我的文档\visual studio 2008\projects\444\444\444.cpp(59) : error C2065: “hInst”: 未声明的标识符
这个问题
[/Quote]
arong1234 2009-07-15
  • 打赏
  • 举报
回复
抄代码要理解代码到底是干吗的,你不能只是拷贝不思考,这个错误很显然,hInst变量名不对,你觉得它应该是哪个变量对应你抄的这个呢?

[Quote=引用 2 楼 tx183584 的回复:]
楼上高人,我抄错了。。。、
但是还有
:\我的文档\visual studio 2008\projects\444\444\444.cpp(59) : error C2065: “hInst”: 未声明的标识符
这个问题
[/Quote]
tx183584 2009-07-15
  • 打赏
  • 举报
回复
楼上高人,我抄错了。。。、
但是还有
:\我的文档\visual studio 2008\projects\444\444\444.cpp(59) : error C2065: “hInst”: 未声明的标识符
这个问题
hazrael 2009-07-15
  • 打赏
  • 举报
回复
代码从哪里抄来的吧?应该不是VC自动生成的。
应该是WNDCLASSEX,而不是WNDCLASS。
cbSize是WNDCLASSEX的成员变量,而WNDCLASS是不包含cbSize的。

16,472

社区成员

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

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

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