想在主窗口中建立一个按钮,编译连接都没错误,可运行后主窗口中始终是空空荡荡!代码如下:
#include<windows.h>
#define IDB_PUSHBUTTON 200
//#include<stdio.h>
HINSTANCE hInst1;
HWND hwndButton;LRESULT CALLBACK WndLiaoProc(HWND,UINT,WPARAM,LPARAM);
LRESULT CALLBACK DlgProc(HWND,UINT,WPARAM,LPARAM);
int WINAPI WinMain(
   HINSTANCE hInst,
   HINSTANCE hPreInst,
   LPSTR lpszCmdLine,
   int nCmdShow)
{
WNDCLASS wcApp;
wcApp.lpszClassName="Yhong";
wcApp.hInstance=hInst;
wcApp.hCursor=LoadCursor(NULL,IDC_ARROW);
wcApp.hIcon=LoadIcon(hInst,IDI_APPLICATION);
wcApp.lpfnWndProc=WndLiaoProc;
wcApp.cbClsExtra=0;
wcApp.cbWndExtra=0;
wcApp.hbrBackground=(HBRUSH)GetStockObject(WHITE_BRUSH);
wcApp.lpszMenuName=NULL;
wcApp.style=CS_HREDRAW|CS_VREDRAW;
RegisterClass(&wcApp);
hInst1=hInst; HWND hWnd;
hWnd=CreateWindow("Yhong","Yhong",WS_OVERLAPPEDWINDOW&~WS_MAXIMIZEBOX,CW_USEDEFAULT,CW_USEDEFAULT,600,400,
NULL,NULL,hInst,NULL);
hwndButton=CreateWindow("Button","按钮控件!",BS_PUSHBUTTON|WS_CHILD|WS_VISIBLE,
20,400,240,25,hWnd,(HMENU)IDB_PUSHBUTTON,hInst1,NULL);

ShowWindow(hWnd,nCmdShow);
UpdateWindow(hWnd);

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

}
return(0);
}LRESULT CALLBACK WndLiaoProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{

PAINTSTRUCT ps;
HDC hdc; switch (message) 
{
case WM_CREATE:


break;

case WM_PAINT:
hdc = BeginPaint(hWnd, &ps);
// TODO: 在此添加任意绘图代码...
EndPaint(hWnd, &ps);
break;
case WM_DESTROY:
PostQuitMessage(0);
break;
default:
return DefWindowProc(hWnd, message, wParam, lParam);
}
return 0;
}

解决方案 »

  1.   

    主窗口就是按钮...什么意思!将下面的语句
    hwndButton=CreateWindow("Button","按钮控件!",BS_PUSHBUTTON|WS_CHILD|WS_VISIBLE,
    20,400,240,25,hWnd,(HMENU)IDB_PUSHBUTTON,hInst1,NULL);
    移到WM_CREATE:后也不行呀!
      

  2.   


    hwndButton=CreateWindow("Button","按钮控件!",BS_PUSHBUTTON|WS_CHILD|WS_VISIBLE,
    20,400,240,25,hWnd,(HMENU)IDB_PUSHBUTTON,hInst1,NULL);
    改为
    hwndButton=CreateWindow("Button","按钮控件!",BS_PUSHBUTTON|WS_CHILD|WS_VISIBLE,
    20,100,240,25,hWnd,(HMENU)IDB_PUSHBUTTON,hInst1,NULL);
    控钮就出来了!
    可是窗口大小改变后,按钮又消失了,难道要将上面的语句放在WM_PAINT后吗?
      

  3.   

    建议你在窗口过程中响应WM_SIZE消息,调整按钮的大小和位置。
      

  4.   

    将CreateWindow语句放在WM_CREATE后,
    将ShowWindow语句放在WM_PAINT后问题就解决了!可是当建立一个DateTimePicker控件时上面的问题又来了!
    case WM_CREATE:
    hwndDate=CreateWindow("DATETIMEPICK_CLASS",
                                             "DateTime!",
                                              WS_BORDER|WS_CHILD|WS_VISIBLE,
                   20,180,80,25,
                                               hWnd,
                                              (HMENU)IDB_DATETIME,
                                              hInst1,NULL);
                      break;
              case WM_PAINT:
                       hdc = BeginPaint(hWnd, &ps);
    ShowWindow(hwndDate,SW_SHOW);
    EndPaint(hWnd, &ps);
    break;没有出错信息,也没有控件显示出来!