少了cw.hIconSm=LoadIcon(NULL,IDI_WINLOGO);
就失败
那么哪些是必须要加的项目(WNDCLASSEX cw中的)   不要告诉我全部都要加哦
// sdk_1.cpp : Defines the entry point for the application.
//#include "stdafx.h"
LRESULT CALLBACK WinProc(HWND ,UINT,WPARAM,LPARAM);int APIENTRY WinMain(HINSTANCE hInstance,
                     HINSTANCE hPrevInstance,
                     LPSTR     lpCmdLine,
                     int       nCmdShow)
{
  // TODO: Place code here.
         HWND hwnd;
WNDCLASSEX cw;
MSG msg; cw.hInstance=hInstance;
cw.lpszClassName="Window";
cw.lpfnWndProc=WinProc;
cw.style=0; cw.cbSize=sizeof(WNDCLASSEX); cw.hIcon=LoadIcon(NULL,IDI_APPLICATION);
cw.hIconSm=LoadIcon(NULL,IDI_WINLOGO);
cw.hCursor=LoadCursor(NULL,IDC_ARROW); cw.lpszMenuName=NULL;
cw.cbClsExtra=0;
cw.cbWndExtra=0;
cw.hbrBackground=(HBRUSH)GetStockObject(BLACK_BRUSH); if(!RegisterClassEx(&cw)) { MessageBox(NULL,"Sdf","Sdf",MB_OK);return 0;}
hwnd=CreateWindow(
cw.lpszClassName,
        "First",
WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT,
CW_USEDEFAULT,
CW_USEDEFAULT,
CW_USEDEFAULT,
HWND_DESKTOP,
NULL,
cw.hInstance,
NULL);

ShowWindow(hwnd,nCmdShow);
UpdateWindow(hwnd);
while(GetMessage(&msg,NULL,0,0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
} return msg.wParam;
}LRESULT CALLBACK WinProc(HWND hwnd,UINT message,WPARAM wParam,LPARAM lparam)
{
switch(message)
{
case WM_DESTROY:
PostQuitMessage(0);
break;
default: 
return DefWindowProc(hwnd,message,wParam,lparam);
}
return 0;
}

解决方案 »

  1.   

    这种小 kiss 的问题,仔细看看 MSDN,多试几遍不就知道了?学习写程序没有诀窍,多练!
      

  2.   

    应该说都是要加的!
    反正我写SDK程序时不会少一个!
    少一个好像都不对!
    没辙!
      

  3.   

    有些不需要加载,但需要初始化,建议在前面加一句
    memset(&cw,0,sizeof(cw));
      

  4.   

    solar(int argc,char**argv) :
    void *memset( void *dest, int c, size_t count );???Sets buffers to a specified character.
    这么做的作用是什么?
      

  5.   

    估计《WINDOWS程序设计》的第一个程序中的东西都是必须的。
      

  6.   

    solar(int argc,char**argv) :默认的都是0吗?
      

  7.   

    memset():把全体置零,防止WndStyle等因未初始化造成莫名其妙的错误
      

  8.   

    都需要。用了memset(),可以少写一些代码而已,就是数据结构中初始化为0的项可以不一一列出了。
      

  9.   

    用memset(&cw, 0, sizeof(cw));是把cw这个结构体都初始化成0。
    省去了填写的麻烦。
    然后 你只需填cbSize,lpfnWndProc,lpszClassName
    就可以注册成功。
    但是这个也许并不是你需要的,所以你要根据自己的需要填写其他项目。