hWnd = CreateWindow(IDS_APP_TITLE, IDS_APP_TITLE, WS_VISIBLE,
0,30, 240, 320, 
NULL, NULL, hInstance, NULL);创建了窗口,怎么在上面弄个 按钮,点按钮  退出要求能设置 按钮的 位置
求求了
我Q 895000080BOOL InitInstance(
HINSTANCE hInstance, 
int nCmdShow
)
{
HWND hWnd = NULL;

g_hInst = hInstance; // Store instance handle in our global variable

//If it is already running, then focus on the window
hWnd = FindWindow(IDS_APP_TITLE, IDS_APP_TITLE);
if (NULL != hWnd) 
{
SetForegroundWindow (hWnd);
return FALSE;


MyRegisterClass(hInstance, IDS_APP_TITLE);

RECT rect;
GetClientRect(hWnd, &rect);

// create a full-screen window for the browser control
hWnd = CreateWindow(IDS_APP_TITLE, IDS_APP_TITLE, WS_VISIBLE,
0,30, 240, 320, 
NULL, NULL, hInstance, NULL);
if (NULL == hWnd)
{
return FALSE;
}

// Hide all the Shell parts and show the window in full screen mode.
//SHFullScreen(hWnd, SHFS_HIDETASKBAR | SHFS_HIDESTARTICON | SHFS_HIDESIPBUTTON); //ShowWindow(hWnd, nCmdShow);
UpdateWindow(hWnd);

return TRUE;
}

解决方案 »

  1.   

    在你创建的窗口的窗口过程响应WM_CREATE消息,创建按钮。
      

  2.   

    CreateWindow 最后一个参数不要写NULL,要写入对应的响应函数winproc,winproc完成各个消息的响应,在WM_CREATE消息中创建按钮窗口,在WM_COMMAND消息中设置你对应ID的BUTTON的消息
      

  3.   

    CButton btn;
    btn.Create(_T("你的按钮显示信息"), WS_CHILD|WS_VISIBLE|BS_PUSHBUTTON, 
       CRect(0,0,100,30), hwnd, 110);
      

  4.   

    《windows程序设计》中子窗口那章讲的很详细。
      

  5.   

    #include <windows.h> //头文件
    LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM); //窗口函数声明
    char szClassName[]="windowclass"; //窗口结构体的名称
    char szAppTitle[]="使用API创建窗口"; //窗口的标题
    int PASCAL WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpszCmdParam , INT nCmdShow) //WinMain()函数的定义
    {
    HWND hMainWnd; //窗口句柄
    MSG msg; //消息结构体
    WNDCLASS winclass; //窗口结构体
             if(!hPrevInstance)//判断是否已有应用程序的实例在运行,给窗口结构体的数据成员赋值来       规 定所要建立的窗口的特征
    {
    winclass.style=CS_HREDRAW|CS_VREDRAW; //窗口风格
    winclass.lpfnWndProc=WndProc; //窗口的消息处理函数
    winclass.cbClsExtra=0;  //窗口类无扩展
    winclass.cbWndExtra=0;  //窗口实例无扩展
    winclass.hInstance=hInstance; //当前应用程序实例句柄
    winclass.hIcon=LoadIcon(NULL,IDI_APPLICATION); //窗口的最小化图标为缺省图标
    winclass.hCursor=LoadCursor(NULL,IDC_ARROW); //窗口采用箭头光标
    winclass.hbrBackground=(HBRUSH)GetStockObject(WHITE_BRUSH);//窗口背景色为白色
    winclass.lpszMenuName=NULL;//无窗口菜单
    winclass.lpszClassName=szClassName;  //给窗口结构体命名
    RegisterClass(&winclass); //注册窗口
    }
    //下面用CreateWindow()函数来建立窗口,并返回所建立窗口的句柄
    hMainWnd=CreateWindow(
    szClassName, //窗口结构体的名称
     szAppTitle, //窗口的标题
     WS_OVERLAPPEDWINDOW, //窗口风格为可重叠窗口
    //下面四个参数代表窗口左上角x,y坐标和窗口的宽度与高度,都使用缺省值
    CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,
    //下面参数分别为父窗口句柄、窗口菜单句柄、应用程序实例句柄和附加参数
    NULL,NULL,hInstance,NULL);
    ShowWindow(hMainWnd,SW_SHOWNORMAL); //显示窗口
    UpdateWindow(hMainWnd); //更新窗口
    //下面用While()循环来建立消息循环
    while(GetMessage(&msg,NULL,0,0)) //获取消息,填充msg结构体
    {
    TranslateMessage(&msg); //翻译键盘消息
    DispatchMessage(&msg); //向窗口函数发送消息,让窗口函数处理
    }
    return msg.wParam;
    }
    LRESULT CALLBACK WndProc(HWND hMainwnd, UINT message, WPARAM wParam, LPARAM lParam)   //窗口函数的定义
    {
    HDC hdc; //设备描述表
    PAINTSTRUCT ps; //刷新区域
    RECT rect; //矩形结构
    char messageleft[]="按下了鼠标左键!"; //单击鼠标左键,消息框将显示的提示内容
       switch(message) //判断消息标识符
       {
       case WM_PAINT: //窗口重绘
       {
       hdc=BeginPaint(hMainwnd,&ps);
       GetClientRect(hMainwnd,&rect); //获取客户区区域
       rect.bottom=rect.top+50;
       DrawText(hdc,TEXT("使用Windows API创建Windows窗口程序!"),-1,&rect,DT_SINGLELINE| DT_CENTER|DT_VCENTER); //在客户区中央输出文字
       EndPaint(hMainwnd,&ps);
       break;
       }
       case WM_LBUTTONDOWN:
    {
    MessageBox(GetFocus(),messageleft,"使用API创建窗口",MB_OK|MB_ICONINFORMATION);
    break;
    }
       case WM_DESTROY://关闭应用程序窗口时发出的消息
    {
    PostQuitMessage(0); //发出WM_QUIT消息,结束应用程序
    return 0;
    }
       default :
    break;
    }
    return DefWindowProc(hMainwnd,message,wParam,lParam); //其它消息交给Windows做默认处理
    }这个虽不是对话框窗体,希望对你有所提示……
      

  6.   

    花点时间把《Windows程序设计》这本书好好看看,作者Charles Petzold相信会对你有很大帮助
      

  7.   

    CreateWindow
    WM_SIZE
    MoveWindow
      

  8.   

    #include <windows.h>
    #include <stdio.h>
    LRESULT CALLBACK WinSunProc(
      HWND hwnd,      // handle to window
      UINT uMsg,      // message identifier
      WPARAM wParam,  // first message parameter
      LPARAM lParam   // second message parameter
    );                //窗口回调函数声明
    int WINAPI WinMain(
      HINSTANCE hInstance,  // handle to current instance
      HINSTANCE hPrevInstance,  // handle to previous instance
      LPSTR lpCmdLine,      // pointer to command line
      int nCmdShow          // show state of window
    )                         //Windows程序入口函数
    {
    WNDCLASS wndcls;        //设计一个窗口类
    wndcls.cbClsExtra=0;    //类的附加内存
    wndcls.cbWndExtra=0;    //窗口附加内存
    wndcls.hbrBackground=(HBRUSH)GetStockObject(WHITE_BRUSH);  //画刷句柄,GetStockObject函数获取句柄
    wndcls.hCursor=LoadCursor(NULL,IDC_CROSS);  //光标句柄
    wndcls.hIcon=LoadIcon(NULL,IDI_APPLICATION);  //图标句柄
    wndcls.hInstance=hInstance;          //应用程序实例号
    wndcls.lpfnWndProc=WinSunProc;       //类型窗口过程函数(回调函数)
    wndcls.lpszClassName="zhuzhonghua";      //窗口名
    wndcls.lpszMenuName=NULL;                //菜单名
    wndcls.style=CS_HREDRAW | CS_VREDRAW;    //窗口类型,这时设定为水平重画与垂直重画
    RegisterClass(& wndcls);        //注册一个窗口类 HWND hwnd;         //定义窗口句柄,保存窗口标识
    hwnd=CreateWindow("zhuzhonghua","武汉科技大学计算机科学与技术学院",
    WS_OVERLAPPEDWINDOW/* & ~WS_MAXIMIZEBOX*/,100,100,600,400,NULL,NULL,hInstance,NULL);  //创建一个窗口 ShowWindow(hwnd,SW_SHOWNORMAL);//显示一个窗口,第一个参数为要显示窗口句柄,第二个参数为显示状态,如最大化,最小化,正常显示
    UpdateWindow(hwnd);     //更新一个窗口 MSG msg;           //定义消息结构体变量
    while(GetMessage(&msg,NULL,0,0))   //用GetMessage从消息队列中获取消息
    {
    TranslateMessage(&msg);        //对取到的消息队进行转换,并将新消息投递到消息队列中
    DispatchMessage(&msg);         //将收到的消息传递到窗口回调函数进行处理
    }                           //消息循环
    return 0;
    }LRESULT CALLBACK WinSunProc(
      HWND hwnd,      // handle to window
      UINT uMsg,      // message identifier
      WPARAM wParam,  // first message parameter
      LPARAM lParam   // second message parameter
    )
    {
    switch(uMsg)     //判断是何种消息
    {
    case WM_CLOSE:    //窗口关闭消息
    if(IDYES==MessageBox(hwnd,"是否真的结束?","zhuzhonghua",MB_YESNO))
    {
    DestroyWindow(hwnd);  //销毁窗口,发送WM_DESTROY消息
    }
    break;
    case WM_DESTROY:
    PostQuitMessage(0);   //投递一个WM_QUIT消息到现成的消息队列中,GetMessage获取到WM_QUIT消息,返回零值,即为假,while消息循环终止
    break;
    default:
    return DefWindowProc(hwnd,uMsg,wParam,lParam);  //返回缺省窗口过程
    }
    return 0;
    }比六楼简单点的,自己试试吧