zoukankan      html  css  js  c++  java
  • Windows 编程之 对话框总结

    关于对话框

    1 对话框种类

             对话框也是一种资源,Windows中对话框分为模态的和非模态的,以及Windows系统中已经定义好的那些通用对话框,比方打开文件,目录,调色板,字符串查找等。

    2 模态对话框和非模态对话框的差别

             模态对话框就是那种你打开后必须关了才干转到主窗体的那种类型;非模态对话框就是即便打开了对话框,你依旧能够在主窗体中指指点点的那种类型。

    3 模态对话框的创建及弹出

    <1>  

    INT_PTR		DialogBox( 
           HINSTANCEhInstance,   	// handle to module
           LPCTSTR lpTemplate,    	//dialog box template
           HWND hWndParent,    	//handle to owner window
           DLGPROC lpDialogFunc  	// dialog box procedure);

    <2>

    INT_PTR   DialogBoxIndirect( 
           HINSTANCEhInstance,       // handle to module
           LPCDLGTEMPLATE lpTemplate,// dialog box template
           HWND hWndParent,          // handle to owner window
           DLGPROC lpDialogFunc      // dialog box procedure);

    <3> 

    INT_PTR    DialogBoxIndirectParam(
     	HINSTANCE hInstance,		// handle to module
     	LPCDLGTEMPLATE hDialogTemplate, // dialog box template
      	HWNDhWndParent,               	// handle toowner window
     	DLGPROC lpDialogFunc,           // dialog box procedure
     	LPARAM dwInitParam              //initialization value);

    <4>           

     INT_PTR     DialogBoxParam( 
           HINSTANCEhInstance,      // handle to module
           LPCTSTR lpTemplateName,  // dialog box template
           HWND hWndParent,       	// handle to owner window
           DLGPROC lpDialogFunc,   	//dialog box procedure
           LPARAM dwInitParam     	// initialization value);

    当中DialogBox和DialogBoxParam是从资源中载入对话框,其余两个是从内存中载入对话框。在这里面要注意的一个參数就是DLGPROC lpDialogFunc,函数原型是:

    INT_PTR	CALLBACK	DialogProc( 
    	HWNDhwndDlg,	// handle to dialog box
    	UINT uMsg,	//message 
    	WPARAMwParam,	// first message parameter
    	LPARAM lParam   //second message parameter);

    这个回调函数跟窗体回调函数非常类似,可是函数的返回类型不一样。

    4 模态对话框的消息处理

             DialogProc非常像WindowProc,但它不是WindowProc,对话框的WindowProc在Windows内部定义,它会调用DialogProc函数。

    BOOL CALLBACK	DlgProc(HWND hdlg,UINT msg,WPARAM wParam,LPARAM lParam)
    {
             switch(msg)
             {
             caseWM_INITDIALOG:
                       returnTRUE;
             caseWM_COMMAND:
                       switch(LOWORD(wParam))
                       {
                       caseIDOK:
                                EndDialog(hdlg,0);
                                break;
                       }
                       break;
             }
             returnFALSE;
    }


    
    

    WM_INITDIALOG消息会在对话框创建的时候发送,在此消息下能够用来初始化对话框中的各种控件。

    5 模态对话框的关闭

    BOOL	EndDialog( HWND	hDlg,INT_PTR nResult);

    指定创建对话框的函数的返回值。


    6 利用控件创建复杂对话框


    7 模态对话框中自己定义控件


    既然是自己定义控件,那么必须在要进行窗体的设计,窗体的注冊,以及配置响应的窗体过程函数。

    制作步骤:

    <1>在工具箱中找到custom control,将其拖拽到面板中

    <2>点击属性,指定起class名称,以及ID

    <3>在WinMain函数中进行设计注冊

    <4>指定其窗体过程函数


  • 相关阅读:
    utf8和utf8mb4的区别
    【JSP 标签】选择判断c:choose
    【JSP 标签】格式化日期
    【Spring 核心】AOP 面向切面编程
    【Spring 核心】高级装配
    【Spring 核心】装配bean(三)XML配置
    【Spring 核心】装配bean(二) JavaConfig装配
    【Spring 核心】装配Bean(一) 自动化装配
    【Js应用实例】图片预览
    【Js应用实例】限制上传图片大小
  • 原文地址:https://www.cnblogs.com/hrhguanli/p/3947886.html
Copyright © 2011-2022 走看看