//resource_Id.h#define  IDB_PUSHBUTTON        100
#define  IDB_DEFPUSHBUTTON     101
#define  IDB_RADIOBUTTON       102
#define  IDB_AUTORADIOBUTTON   103
#define  IDB_CHECKBOX          104
#define  IDB_AUTOCHECKBOX      105
#define  IDB_GROUPBOX          106 //WinMain.h#include <windows.h>
#include <tchar.h>
#include <stdlib.h>
#include <string>
#include <cmath>
#include "resource_Id.h"
#define  B_PUSHBUTTON(startX,startY,width,height)\
   CreateWindowW(L"普通按扭类",L"这是一个普通按扭",BS_PUSHBUTTON|WS_CHILD|WS_VISIBLE,\
   startX,startY,width,height,\
   hWnd,(HMENU)IDB_PUSHBUTTON,hInstance,NULL);
 /*缺省按扭*/
#define   B_DEFPUSHBUTTON(startX,startY,width,height)\
   CreateWindowW(L"缺省按扭类",L"这是一个缺省按扭",BS_DEFPUSHBUTTON|WS_CHILD|WS_VISIBLE,\
   startX,startY,width,height,\
   hWnd,(HMENU)IDB_DEFPUSHBUTTON,hInstance,NULL);
 /*圆按扭*/
#define  B_RADIOBUTTON(startX,startY,width,height)\
   CreateWindowW(L"圆按扭类",L"这是一个圆按扭",BS_RADIOBUTTON|WS_CHILD|WS_VISIBLE,\
   startX,startY,width,height,\
   hWnd,(HMENU)IDB_RADIOBUTTON,hInstance,NULL);
 /*自动圆按扭*/
#define B_AUTORADIOBUTTON(startX,startY,width,height)\
   CreateWindowW(L"自动圆按扭类",L"这是一个自动圆按扭",BS_AUTORADIOBUTTON|WS_CHILD|WS_VISIBLE,\
   startX,startY,width,height,\
   hWnd,(HMENU)IDB_AUTORADIOBUTTON,hInstance,NULL);
 /*复选框控件子窗口*/
#define B_CHECKBOX(startX,startY,width,height)\
   CreateWindowW(L"复选框类",L"这是一个复选框",BS_CHECKBOX|WS_CHILD|WS_VISIBLE,\
   startX,startY,width,height,\
   hWnd,(HMENU)IDB_CHECKBOX,hInstance,NULL); /*自动复选框控件子窗口*/
#define B_AUTOCHECKBOX(startX,startY,width,height)\
   hWndAutoCheckBox=CreateWindowW(L"自动复选框类",L"这是一个自动复选框",BS_AUTOCHECKBOX|WS_CHILD|WS_VISIBLE,\
   startX,startY,width,height,\
   hWnd,(HMENU)IDB_AUTOCHECKBOX,hInstance,NULL);
 /*组框控件子窗口*/   
#define B_GROUPBOX(startX,startY,width,height)\
       ( L"组框类",L"这是一个组框",BS_GROUPBOX|WS_CHILD|WS_VISIBLE,\
    startX,startY,width,height,\
    hWnd,(HMENU)IDB_GROUPBOX,hInstance,NULL);
HINSTANCE           hInstance;
HWND                hWnd;
RECT                rect={100,100,100,100};
int                 nCmdShow;BOOL  InitWindowsClass(HINSTANCE hInstance);
BOOL  InitWindows(HINSTANCE hInstance, int nCmdShow);
long  WINAPI WndProc(HWND hWnd,UINT iMessage,UINT wParam,LONG lParam);
int   WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nCmdShow)
{
::hInstance=hInstance;  
::nCmdShow=nCmdShow;
        static  HACCEL   hAccel;   
      MSG Message;
if(!InitWindowsClass(hInstance)) return FALSE;//初始化窗口类.
        if(!InitWindows(hInstance,nCmdShow))          return FALSE;//初始化窗口. 
hAccel=LoadAccelerators(::hInstance,L"Menu");
while(GetMessage(&Message,0,0,0))
{
if(!TranslateAccelerator(hWnd,hAccel,&Message))
{
TranslateMessage(&Message); DispatchMessage(&Message);
}
}
return (int)Message.wParam;
}
BOOL InitWindows(HINSTANCE hInstance, int nCmdShow) //初始化
{
   HWND  hWnd;
   hWnd=CreateWindow(_T("键盘"),_T("键盘按键"),WS_OVERLAPPEDWINDOW,CW_USEDEFAULT,0,CW_USEDEFAULT, 0, NULL,0,hInstance,NULL);
    if(!hWnd)  return FALSE;      
    ShowWindow(hWnd,nCmdShow); UpdateWindow(hWnd);      
    return TRUE;   }BOOL InitWindowsClass(HINSTANCE hInstance) //初始化窗口类.
{
WNDCLASS WndClass; //定义窗口类.
WndClass.cbClsExtra=0;  //窗口类无扩展.
WndClass.cbWndExtra=0;  //窗口实例无扩展.
WndClass.hbrBackground=(HBRUSH)(GetStockObject(WHITE_BRUSH));//窗口背景为白色.
WndClass.hCursor=LoadCursor(NULL,IDC_ARROW); //窗口采用箭头光标.
WndClass.hIcon=LoadIcon(NULL,IDI_APPLICATION); //窗口的最小化图标为缺省图标.
WndClass.hInstance=hInstance; //当前实例句柄.
WndClass.lpfnWndProc=WndProc; //窗口处理函数.
WndClass.lpszClassName=_T("键盘"); //窗口类名.
WndClass.lpszMenuName=_T("Menu");          //无菜单
WndClass.style=0;  //窗口类型为缺省类型.   
return RegisterClass(&WndClass); //返回注册窗口的值.
}
//WinProc.cpp
#include"winMain.h"
#include "resource_Id.h"long WINAPI WndProc(HWND hWnd,UINT iMessage,UINT wParam,LONG lParam)
{
      PAINTSTRUCT  ps;          HDC    hDc; 
         static int startX=10,startY=50,width=100,height=20;
  static HWND hWndPush,hWndDefPush, hWndRadio,hWndAutoRadio,hWndCheckBox,hWndAutoCheckBox,hWndGroupBox;
  switch(iMessage)
  {
  case WM_CREATE: hWndPush    =B_PUSHBUTTON(startX,startY,width,height)
                      hWndDefPush     =B_DEFPUSHBUTTON(startX,startY+40,width,height)
                      hWndRadio       =B_RADIOBUTTON(startX,startY+40,width,height)
                      hWndAutoRadio   =B_AUTORADIOBUTTON(startX,startY+40,width,height)
                      hWndCheckBox    =B_CHECKBOX(startX,startY+40,width,height)
                      hWndAutoCheckBox=B_AUTOCHECKBOX(startX,startY+40,width,height)
                      hWndGroupBox    =B_GROUPBOX(startX,startY+40,width,height)  
  break;
  case WM_COMMAND:switch(LOWORD(wParam))
{
               case IDB_PUSHBUTTON:      SetWindowText(hWndPush,L"按下1");        break;   
               case IDB_DEFPUSHBUTTON:   SetWindowText(hWndDefPush,L"按下2");     break;   
                       case IDB_RADIOBUTTON:     SetWindowText(hWndRadio ,L"按下3");      break;   
                       case IDB_AUTORADIOBUTTON: SetWindowText(hWndAutoRadio,L"按下4");   break;  
                       case IDB_CHECKBOX:        SetWindowText(hWndCheckBox,L"按下5");    break;  
                       case IDB_AUTOCHECKBOX:    SetWindowText(hWndAutoCheckBox,L"按下6");break;   
                       case IDB_GROUPBOX:                                                break;           }
 break;  
  case WM_PAINT: InvalidateRect(hWnd,&rect,true);            
             hDc=BeginPaint(hWnd,&ps);
SelectObject(hDc,GetStockObject(SYSTEM_FIXED_FONT));
SetBkMode(hDc,TRANSPARENT);
TextOut(hDc,startX*24,startY,Title,sizeof(Title)-2);
             EndPaint(hWnd,&ps);
return 0;          case WM_DESTROY:          PostQuitMessage(0); return 0;
  default: return (long)(DefWindowProc(hWnd,iMessage,wParam,lParam));  
      }
   return 0;
}SDI简单程序!我创建的按扭看不到

解决方案 »

  1.   

    //发上来发现乱了.整理了一下//resource_Id.h #define  IDB_PUSHBUTTON        100 
    #define  IDB_DEFPUSHBUTTON     101 
    #define  IDB_RADIOBUTTON       102 
    #define  IDB_AUTORADIOBUTTON   103 
    #define  IDB_CHECKBOX          104 
    #define  IDB_AUTOCHECKBOX      105 
    #define  IDB_GROUPBOX          106 
    //WinMain.h #include <windows.h> 
    #include <tchar.h> 
    #include <stdlib.h> 
    #include <string> 
    #include <cmath> 
    #include "resource_Id.h" 
    #define  B_PUSHBUTTON(startX,startY,width,height)\ 
      CreateWindowW(L"普通按扭类",L"这是一个普通按扭",BS_PUSHBUTTON ¦WS_CHILD ¦WS_VISIBLE,\ 
             startX,startY,width,height,hWnd,(HMENU)IDB_PUSHBUTTON,hInstance,NULL); 
    /*缺省按扭*/ 
    #define  B_DEFPUSHBUTTON(startX,startY,width,height)\ 
      CreateWindowW(L"缺省按扭类",L"这是一个缺省按扭",BS_DEFPUSHBUTTON ¦WS_CHILD ¦WS_VISIBLE,\ 
            startX,startY,width,height,hWnd,(HMENU)IDB_DEFPUSHBUTTON,hInstance,NULL); 
    /*圆按扭*/ 
    #define  B_RADIOBUTTON(startX,startY,width,height)\ 
      CreateWindowW(L"圆按扭类",L"这是一个圆按扭",BS_RADIOBUTTON ¦WS_CHILD ¦WS_VISIBLE,\ 
         startX,startY,width,height,hWnd,(HMENU)IDB_RADIOBUTTON,hInstance,NULL); 
    /*自动圆按扭*/ 
    #define B_AUTORADIOBUTTON(startX,startY,width,height)\ 
      CreateWindowW(L"自动圆按扭类",L"这是一个自动圆按扭",BS_AUTORADIOBUTTON ¦WS_CHILD ¦WS_VISIBLE,\ 
          startX,startY,width,height,hWnd,(HMENU)IDB_AUTORADIOBUTTON,hInstance,NULL); 
    /*复选框控件子窗口*/ 
    #define B_CHECKBOX(startX,startY,width,height)\ 
      CreateWindowW(L"复选框类",L"这是一个复选框",BS_CHECKBOX ¦WS_CHILD ¦WS_VISIBLE,\ 
          startX,startY,width,height,hWnd,(HMENU)IDB_CHECKBOX,hInstance,NULL); /*自动复选框控件子窗口*/ 
    #define B_AUTOCHECKBOX(startX,startY,width,height)\ 
      CreateWindowW(L"自动复选框类",L"这是一个自动复选框",BS_AUTOCHECKBOX ¦WS_CHILD ¦WS_VISIBLE,\ 
         startX,startY,width,height,hWnd,(HMENU)IDB_AUTOCHECKBOX,hInstance,NULL); 
    /*组框控件子窗口*/  
    #define B_GROUPBOX(startX,startY,width,height)\ 
       CreateWindowW( L"组框类",L"这是一个组框",BS_GROUPBOX ¦WS_CHILD ¦WS_VISIBLE,\ 
              startX,startY,width,height,hWnd,(HMENU)IDB_GROUPBOX,hInstance,NULL); 
    HINSTANCE           hInstance; 
    HWND                hWnd; 
    RECT                rect={100,100,100,100}; 
    int                 nCmdShow; BOOL  InitWindowsClass(HINSTANCE hInstance); 
    BOOL  InitWindows(HINSTANCE hInstance, int nCmdShow); 
    long  WINAPI WndProc(HWND hWnd,UINT iMessage,UINT wParam,LONG lParam); 
    int  WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nCmdShow) 

    ::hInstance=hInstance;  ::nCmdShow=nCmdShow;      
     MSG Message; 
        if(!InitWindowsClass(hInstance)) return FALSE;//初始化窗口类. 
        if(!InitWindows(hInstance,nCmdShow))         return FALSE;//初始化窗口.   while(GetMessage(&Message,0,0,0)) 
          { TranslateMessage(&Message); DispatchMessage(&Message); } 
    return (int)Message.wParam; 

    BOOL InitWindows(HINSTANCE hInstance, int nCmdShow) //初始化 

      HWND  hWnd; 
      hWnd=CreateWindow(_T("键盘"),_T("键盘按键"),WS_OVERLAPPEDWINDOW,CW_USEDEFAULT,0,CW_USEDEFAULT, 0, NULL,0,hInstance,NULL); 
        if(!hWnd) return FALSE;     
        ShowWindow(hWnd,nCmdShow); UpdateWindow(hWnd);     
        return TRUE;  } BOOL InitWindowsClass(HINSTANCE hInstance) //初始化窗口类. 

     WNDCLASS WndClass; //定义窗口类. 
     WndClass.cbClsExtra=0; //窗口类无扩展. 
     WndClass.cbWndExtra=0; //窗口实例无扩展. 
     WndClass.hbrBackground=(HBRUSH)(GetStockObject(WHITE_BRUSH));//窗口背景为白色. 
     WndClass.hCursor=LoadCursor(NULL,IDC_ARROW); //窗口采用箭头光标. 
     WndClass.hIcon=LoadIcon(NULL,IDI_APPLICATION); //窗口的最小化图标为缺省图标. 
     WndClass.hInstance=hInstance; //当前实例句柄. 
     WndClass.lpfnWndProc=WndProc; //窗口处理函数. 
     WndClass.lpszClassName=_T("键盘"); //窗口类名. 
     WndClass.lpszMenuName=_T("Menu");         //无菜单 
     WndClass.style=0; //窗口类型为缺省类型.  
    return RegisterClass(&WndClass); //返回注册窗口的值. 

    //WinProc.cpp 
    #include"winMain.h" 
    #include "resource_Id.h" long WINAPI WndProc(HWND hWnd,UINT iMessage,UINT wParam,LONG lParam) 

          PAINTSTRUCT  ps;          HDC    hDc; 
            static int startX=10,startY=50,width=100,height=20; 
      static HWND hWndPush,hWndDefPush, hWndRadio,hWndAutoRadio,hWndCheckBox,hWndAutoCheckBox,hWndGroupBox; 
      switch(iMessage) 
      { 
      case WM_CREATE:     hWndPush        =B_PUSHBUTTON(startX,startY,width,height) 
                          hWndDefPush     =B_DEFPUSHBUTTON(startX,startY+40,width,height) 
                          hWndRadio       =B_RADIOBUTTON(startX,startY+40,width,height) 
                          hWndAutoRadio   =B_AUTORADIOBUTTON(startX,startY+40,width,height) 
                          hWndCheckBox    =B_CHECKBOX(startX,startY+40,width,height) 
                          hWndAutoCheckBox=B_AUTOCHECKBOX(startX,startY+40,width,height) 
                          hWndGroupBox    =B_GROUPBOX(startX,startY+40,width,height) 
                     break; 
      case WM_COMMAND:switch(LOWORD(wParam)) 
                     { 
                          case IDB_PUSHBUTTON:      SetWindowText(hWndPush,L"按下1");        break;  
                          case IDB_DEFPUSHBUTTON:  SetWindowText(hWndDefPush,L"按下2");    break;  
                          case IDB_RADIOBUTTON:    SetWindowText(hWndRadio ,L"按下3");      break;  
                          case IDB_AUTORADIOBUTTON: SetWindowText(hWndAutoRadio,L"按下4");  break;  
                          case IDB_CHECKBOX:        SetWindowText(hWndCheckBox,L"按下5");    break;  
                          case IDB_AUTOCHECKBOX:    SetWindowText(hWndAutoCheckBox,L"按下6");break;  
                          case IDB_GROUPBOX:                                                break;       } 
                      break; 
      case WM_PAINT: InvalidateRect(hWnd,&rect,true);            
                hDc=BeginPaint(hWnd,&ps); 
                SelectObject(hDc,GetStockObject(SYSTEM_FIXED_FONT)); 
                SetBkMode(hDc,TRANSPARENT); 
                TextOut(hDc,startX*24,startY,Title,sizeof(Title)-2); 
                EndPaint(hWnd,&ps); 
               return 0; 
      case WM_DESTROY:          PostQuitMessage(0); return 0; 
      default: return (long)(DefWindowProc(hWnd,iMessage,wParam,lParam));  
          } 
      return 0; 
    } SDI简单程序!我创建的按扭看不到 
      

  2.   

    把各个CreateWindowW的第1个参数都改成L"BUTTON"。
      

  3.   

    cnzdgs ;
     谢谢你的帮助1一真见血!
    我还想知道为何必须"button"呢?
    换成其他的都不行么?
      

  4.   

    CreateWindow的第1参数是窗口的类名,表示窗口的类型,按钮的类名是"BUTTON"。
    SetWindowText是设置窗口文字,设置什么就是什么,没有所谓的恢复的概念,要改成原来的文字就用SetWindowText设置为原来的文字。