#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”: 未声明的标识符

解决方案 »

  1.   

    代码从哪里抄来的吧?应该不是VC自动生成的。
    应该是WNDCLASSEX,而不是WNDCLASS。
    cbSize是WNDCLASSEX的成员变量,而WNDCLASS是不包含cbSize的。
      

  2.   

    楼上高人,我抄错了、
    但是还有
    :\我的文档\visual studio 2008\projects\444\444\444.cpp(59) : error C2065: “hInst”: 未声明的标识符 
    这个问题
      

  3.   

    抄代码要理解代码到底是干吗的,你不能只是拷贝不思考,这个错误很显然,hInst变量名不对,你觉得它应该是哪个变量对应你抄的这个呢?
      

  4.   

    如果你抄代码只会抄,你大概只能练打字,而不能练编程,很显然,你的错误在于hInst=hInstance; 为什么要这个赋值?这个赋值给一个没定义的变量的目的是什么?这种问题一定要自己理解并解决
      

  5.   

    我学API刚起步啊。没办法,不是说模仿是最好的老师,实在想不出来啊
      

  6.   

    我学API刚起步啊。没办法,不是说模仿是最好的老师,实在想不出来啊
    ========
    模仿是最好的老师,但是你也要型明白啊,上面这段代码应该是SDK中最简单的了
      

  7.   

    估计是从书上直接抄来的。
    可以使用VC自动生成WIN32程序,估计就是你抄的这段。对照一下就知道了