VC驿站

 找回密码
 加入驿站

QQ登录

只需一步,快速开始

搜索
查看: 820|回复: 1

[求助] 关于CreateDialog,和DialogBox函数

[复制链接]
44_avatar_middle
在线会员 发表于 2016-6-24 21:19:03 | 显示全部楼层 |阅读模式
3驿站币
小白最近在学windows32编程。碰见了一个问题希望大神能帮忙。

我弄一个对话框作为主界面http://blog.csdn.net/tcjiaan/article/details/8638247,根据该博客得第二种方法。
现在我想点击对话框,的确定调到 另一个界面,不知道怎么使用,附上代码。


// 局域网尝试2.cpp : Defines the entry point for the application.
//

#include "stdafx.h"
#include "resource.h"
#include <windows.h>//Windows头文件
#include <stdio.h>//因为要用到C语言的库函数\

//函数声明 将函数名字化成winsunproc
LRESULT CALLBACK WinSunProc(
  HWND hwnd,      // handle to window    
  UINT uMsg,      // message identifier
  WPARAM wParam,  // first message parameter
  LPARAM lParam   // second message parameter
);

INT_PTR CALLBACK DlgProc(HWND hdlg, UINT msg, WPARAM wParam, LPARAM lParam);


HINSTANCE hgAppInst;
HWND hwnd;
//第一步,程序入口点函数
int WINAPI WinMain(       //程序入口点函数--WinMain函数,查MSDN
  HINSTANCE hInstance,  // handle to current instance
  HINSTANCE hPrevInstance,  // handle to previous instance
  LPSTR lpCmdLine,      // pointer to command line
  int nCmdShow          // show state of window
)
//第二步,设置窗口类型
{
        WNDCLASS wndcls;             //定义wndclass  若是不懂参数设置可以查wndclass函数
        wndcls.cbClsExtra=0;        //额外类附加字节数
        wndcls.cbWndExtra=0;        //窗口额外附加字节数
        wndcls.hbrBackground=(HBRUSH)COLOR_WINDOW;//背景  brush画刷
        wndcls.hCursor=LoadCursor(NULL,IDC_ARROW);    //  光标  若为标准光标则第一个参数为NULL,cross为十字型光标
        wndcls.hIcon=LoadIcon(NULL,IDI_WINLOGO);      //图标 error错误的图标
        wndcls.hInstance=hInstance;                //应用程序实例号
        wndcls.lpfnWndProc=WinSunProc;            //  窗口过程函数
    wndcls.lpszClassName="leiming";       //类名
        wndcls.lpszMenuName =NULL;               //菜单名字
        wndcls.style=CS_HREDRAW | CS_VREDRAW;   //类型 水平重画 垂直重画

        RegisterClass(&wndcls);                 //注册窗口类

             //定义句柄
        hwnd=CreateWindow("leiming","登录聊天室",WS_OVERLAPPEDWINDOW,   //创建窗口 接下来查CreateWindow参数  窗口类型
                500,300,400,300,NULL,NULL,hgAppInst,NULL);//窗口水平坐标 垂直坐标 宽度与高度 副窗口没有为NULL 菜单 实例句柄 窗口创建数据


        if(!hwnd)
                return 0;
        ShowWindow(hwnd,SW_SHOWNORMAL);//显示窗口
        UpdateWindow(hwnd);//更新窗口
//第三步,设置消息循环管

    MSG msg;
        while(GetMessage(&msg,NULL,0,0))  
                {  
                          if(hwnd==0 || IsDialogMessage(hwnd,&msg))  
                          {  
                                        TranslateMessage(&msg);  
                                        DispatchMessage(&msg);  
                          }  
                }  
        return 0;

        
        //第四步,窗口过程函数代码 

        //查wndclass 找到lpfnwndproc 找WindowProc 拷贝张贴  回到三行做函数声明 回来将函数定义完成

}
LRESULT CALLBACK WinSunProc(
  HWND hwnd,      // handle to window
  UINT uMsg,      // message identifier
  WPARAM wParam,  // first message parameter
  LPARAM lParam   // second message parameter
)

//第五步,显示按键的Char值
{
        int wmId, wmEvent;


        switch(uMsg)
        {
        case WM_COMMAND:
                        wmId    = LOWORD(wParam);
                        wmEvent = HIWORD(wParam);
                        // Parse the menu selections:
                        switch (wmId)
                        {
                                case WM_CLOSE:  
                                        DestroyWindow(hwnd);  
                                        hwnd=NULL;  
                                        return 0;
                                case IDC_IDCANCLE:
                                        MessageBox(hwnd,"山炮欲来风满楼。","提示",MB_OK);
                                        return 0;
                                
                                
                                default:
                                   return DefWindowProc(hwnd, uMsg, wParam, lParam);
                        }
                        break;
        case WM_CREATE:  
    {  
         //创建对话框  
        HWND hdlg = CreateDialog(hgAppInst, MAKEINTRESOURCE(IDD_FORMVIEW), hwnd, (DLGPROC)DlgProc);
        // 显示对话框  
        ShowWindow(hdlg, SW_SHOWNA);  

               
    }  
     break;
         case IDC_IDCANCLE:
                                        MessageBox(hwnd,"山炮欲来风满楼。","提示",MB_OK);
                                        break;
        case WM_CLOSE://如果关闭则
                if(IDYES==MessageBox(hwnd,"是否退出?","提示",MB_YESNO))
                {
                        DestroyWindow(hwnd);
                }

                break;
        
        case WM_DESTROY:
                PostQuitMessage(0);//退出
                break;
        default:
                return DefWindowProc(hwnd,uMsg,wParam,lParam);
        }
        return 0;
}
// 处理对话框消息  

INT_PTR CALLBACK DlgProc(HWND hdlg, UINT msg, WPARAM wParam, LPARAM lParam)  
{  
    /* .............. */  
        switch(msg)
        {
                case WM_CLOSE:  
                        DestroyWindow(hwnd);  
                        hwnd=NULL;  
                                return TRUE;
                case IDC_IDCANCLE:
                        MessageBox(hwnd,"山炮欲来风满楼。","提示",MB_OK);
                        return (INT_PTR)TRUE;
                default:
                                   return (INT_PTR)FALSE;
        }

        
    return (INT_PTR)FALSE;  
}  








上一篇:为什么该程序在vs2013中当输入a,b数值结束后,直接返回程序输入界面没有,其他了?
下一篇:数据类型转化
44_avatar_middle
ico_lz  楼主| 发表于 2016-6-24 21:19:43 | 显示全部楼层
注释不对,没删。
您需要登录后才可以回帖 登录 | 加入驿站 qq_login

本版积分规则

关闭

站长提醒上一条 /2 下一条

QQ|小黑屋|手机版|VC驿站 ( 辽ICP备09019393号tongdun|网站地图wx_jqr

GMT+8, 2019-5-24 16:08

Powered by Discuz! X3.4

© 2009-2019 cctry.com

快速回复 返回顶部 返回列表