精华内容
下载资源
问答
  • Windows对话框

    2013-04-18 18:08:47
    Windows对话框根据其与父窗口的关系,可分为模式对话框与无模式对话框两类。 模式(modal)对话框:当该类对话框运行时,其父窗口无效,直到该对话框结束。 无模式(modeless)对话框:该类对话框可与父窗口共同...

    Windows的对话框根据其与父窗口的关系,可分为模式对话框与无模式对话框两类。

    模式(modal)对话框:当该类对话框运行时,其父窗口无效,直到该对话框结束。

    无模式(modeless)对话框:该类对话框可与父窗口共同运行。

     

    一个完整的对话框一般包含对话框面板与函数两部分:

    对话框模版:是在RC文件中定义的一个对话框,以各种方式决定对话框的大小、有哪些控件、各在什么位置等。

    对话框函数:其函数原型非常类似于窗口函数。但是它通常只处理WM_INITDIALOG和WM_COMMAND两个消息。对话框中的各个控件也都是小窗口,各有对应的窗口函数,它们通过消息传递与其父窗口沟通。而所有的控件传来的消息都是WM_COMMAND,再根据其参数分辨是哪一种控件以及哪一种消息。

     

    原型:int DialogBox ( HINSTANCE hInstance, LPCTSTR IpTemplate, HWND hWndParent, DLGPROC IpDialogFunc)

    参数:第一个参数hInstance用于标识应用程序的实例,该程序的可执行文件含有对话框模版。

                第二个参数IpTemplate用于标识对话框模版,此参数可以是指向一个以NULL结尾的字符串的指针,该字符串指定对话框模版名,也可以是指定对话框模版的资源标识符中的一个整型值。

               第三个参数hWndParent用于指向该对话框的父窗口。

               第四个参数lpDialogFunc表示一个指向对话框过程的指针。

     

    如果函数调用成功,则返回非0值,其为函数EndDialog()的调用中的nResult参数。

    如果函数调用失败,则返回值为0。

    展开全文
  • Windows对话框依其与父对话框的关系可分为两类: (1)“令其父窗口无效,直到对话框结束”,这种称为modal对话框。 (2)“父窗口与对话框共同运行”,这种称为modeless对话框。 比较常用的对话框为modal对话框,...

    Windows的对话框依其与父对话框的关系可分为两类:

    (1)“令其父窗口无效,直到对话框结束”,这种称为modal对话框。

    (2)“父窗口与对话框共同运行”,这种称为modeless对话框。

    比较常用的对话框为modal对话框,为了做出一个对话框必须准备两样东西:

    1、对话框模板(dialog template)。这是在RC文件中定义的一个对话框外貌,以各种方式决定对话框的大小、字形、内部有哪些控件、各在什么位置等等

    2、对话框函数(dialog procedure)。其形态非常类似于窗口函数,但是他通常只处理WM_INITDIALOG和WM_COMMAND两个消息。对话框中的各个控件也都是小小的窗口,各有自己的窗口函数,他们以消息与其管理者(父窗口,也就是对话框)沟通,而所有的控件传来的消息都是WM_COMMAND,再由其参数分辨哪一种控件以及哪一种通知消息(notification).


    注:modal对话框的激活与结束口,靠的是dialogbox和Enddialog两个API函数


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

    关于对话框

    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>指定其窗体过程函数


    转载于:https://www.cnblogs.com/hrhguanli/p/3947886.html

    展开全文
  • 对话框分为两类:「模态的」和「非模态的」,其中模态对话框最为普遍。当您的程序显示一个模态对话框时,使用者不能在对话框与同一个程序中的另一个窗口之间进行切换,使用者必须...在Windows中,显示了系统模态对话

    模态对话框

    简单对话框

    about1
    About1.rc

    /////////////////////////////////////////////////////////////////////////////
    //
    // Dialog
    //
    
    ABOUTBOX DIALOGEX 32, 32, 180, 102
    STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP
    FONT 8, "MS Sans Serif", 0, 0, 0x0
    BEGIN
        DEFPUSHBUTTON   "OK",IDOK,66,81,50,14
        ICON            "ABOUT1",IDC_STATIC,7,7,21,23
        CTEXT           "About1",IDC_STATIC,40,12,100,8
        CTEXT           "About Box Demo Program",IDC_STATIC,7,40,166,8
        CTEXT           "(c) Charles Petzold, 1998",IDC_STATIC,7,52,166,8
    END
    
    
    /////////////////////////////////////////////////////////////////////////////
    //
    // Menu
    //
    
    ABOUT1 MENU
    BEGIN
        POPUP "&Help"
        BEGIN
            MENUITEM "&About About1...",            IDM_APP_ABOUT
        END
    END

    RESOURCE.H

    #define IDM_APP_ABOUT                   40001
    /*------------------------------------------
       ABOUT1.C -- About Box Demo Program No. 1
                   (c) Charles Petzold, 1998
       ------------------------------------------*/
    
    #include <windows.h>
    #include "resource.h"
    
    LRESULT CALLBACK WndProc      (HWND, UINT, WPARAM, LPARAM) ;
    BOOL    CALLBACK AboutDlgProc (HWND, UINT, WPARAM, LPARAM) ;
    
    int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,
                        PSTR szCmdLine, int iCmdShow)
    {
         static TCHAR szAppName[] = TEXT ("About1") ;
         MSG          msg ;
         HWND         hwnd ;
         WNDCLASS     wndclass ;
    
         wndclass.style         = CS_HREDRAW | CS_VREDRAW ;
         wndclass.lpfnWndProc   = WndProc ;
         wndclass.cbClsExtra    = 0 ;
         wndclass.cbWndExtra    = 0 ;
         wndclass.hInstance     = hInstance ;
         wndclass.hIcon         = LoadIcon (hInstance, szAppName) ;
         wndclass.hCursor       = LoadCursor (NULL, IDC_ARROW) ;
         wndclass.hbrBackground = (HBRUSH) GetStockObject (WHITE_BRUSH) ;
         wndclass.lpszMenuName  = szAppName ;
         wndclass.lpszClassName = szAppName ;
    
         if (!RegisterClass (&wndclass))
         {
              MessageBox (NULL, TEXT ("This program requires Windows NT!"),
                          szAppName, MB_ICONERROR) ;
              return 0 ;
         }
    
         hwnd = CreateWindow (szAppName, TEXT ("About Box Demo Program"),
                              WS_OVERLAPPEDWINDOW,
                              CW_USEDEFAULT, CW_USEDEFAULT,
                              CW_USEDEFAULT, CW_USEDEFAULT,
                              NULL, NULL, hInstance, NULL) ;
    
         ShowWindow (hwnd, iCmdShow) ;
         UpdateWindow (hwnd) ; 
    
         while (GetMessage (&msg, NULL, 0, 0))
         {
              TranslateMessage (&msg) ;
              DispatchMessage (&msg) ;
         }
         return msg.wParam ;
    }
    
    LRESULT CALLBACK WndProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
    {
         static HINSTANCE hInstance ;
    
         switch (message)
         {
         case WM_CREATE :
              hInstance = ((LPCREATESTRUCT) lParam)->hInstance ;
              return 0 ;
    
         case WM_COMMAND :
              switch (LOWORD (wParam))
              {
              case IDM_APP_ABOUT :
                   DialogBox (hInstance, TEXT ("AboutBox"), hwnd, AboutDlgProc) ;
                   break ;
              }
              return 0 ;
    
         case WM_DESTROY :
              PostQuitMessage (0) ;
              return 0 ;
         }
         return DefWindowProc (hwnd, message, wParam, lParam) ;
    }
    
    BOOL CALLBACK AboutDlgProc (HWND hDlg, UINT message, 
                                WPARAM wParam, LPARAM lParam)
    {
         switch (message)
         {
         case WM_INITDIALOG :
              return TRUE ;
    
         case WM_COMMAND :
              switch (LOWORD (wParam))
              {
              case IDOK :
              case IDCANCEL :
                   EndDialog (hDlg, 0) ;
                   return TRUE ;
              }
              break ;
         }
         return FALSE ;
    }
    

    复杂对话框

    about2
    About2.rc

    /
    //
    // Dialog
    //
    
    ABOUTBOX DIALOGEX 32, 32, 200, 234
    STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION
    FONT 8, "MS Sans Serif", 0, 0, 0x0
    BEGIN
        ICON            "ABOUT2",IDC_STATIC,7,7,20,20
        CTEXT           "About2",IDC_STATIC,57,12,86,8
        CTEXT           "About Box Demo Program",IDC_STATIC,7,40,186,8
        LTEXT           "",IDC_PAINT,114,67,72,72
        GROUPBOX        "&Color",IDC_STATIC,7,60,84,143
        RADIOBUTTON     "&Black",IDC_BLACK,16,76,64,8,WS_GROUP | WS_TABSTOP
        RADIOBUTTON     "B&lue",IDC_BLUE,16,92,64,8
        RADIOBUTTON     "&Green",IDC_GREEN,16,108,64,8
        RADIOBUTTON     "Cya&n",IDC_CYAN,16,124,64,8
        RADIOBUTTON     "&Red",IDC_RED,16,140,64,8
        RADIOBUTTON     "&Magenta",IDC_MAGENTA,16,156,64,8
        RADIOBUTTON     "&Yellow",IDC_YELLOW,16,172,64,8
        RADIOBUTTON     "&White",IDC_WHITE,16,188,64,8
        GROUPBOX        "&Figure",IDC_STATIC,109,156,84,46,WS_GROUP
        RADIOBUTTON     "Rec&tangle",IDC_RECT,116,172,65,8,WS_GROUP | WS_TABSTOP
        RADIOBUTTON     "&Ellipse",IDC_ELLIPSE,116,188,64,8
        DEFPUSHBUTTON   "OK",IDOK,35,212,50,14,WS_GROUP
        PUSHBUTTON      "Cancel",IDCANCEL,113,212,50,14,WS_GROUP
    END
    
    
    /
    //
    // Icon
    //
    
    // Icon with lowest ID value placed first to ensure application icon
    // remains consistent on all systems.
    ABOUT2                  ICON                    "About2.ico"
    
    /
    //
    // Menu
    //
    
    ABOUT2 MENU
    BEGIN
        POPUP "&Help"
        BEGIN
            MENUITEM "&About",                      IDM_APP_ABOUT
        END
    END
    
    
    /
    //
    // DESIGNINFO
    //
    
    #ifdef APSTUDIO_INVOKED
    GUIDELINES DESIGNINFO
    BEGIN
        "ABOUTBOX", DIALOG
        BEGIN
            LEFTMARGIN, 7
            RIGHTMARGIN, 193
            TOPMARGIN, 7
            BOTTOMMARGIN, 227
        END
    END
    #endif    // APSTUDIO_INVOKED
    
    
    /
    //
    // AFX_DIALOG_LAYOUT
    //
    
    ABOUTBOX AFX_DIALOG_LAYOUT
    BEGIN
        0
    END
    
    #endif

    RESOURCE.H

    #define IDC_BLACK                       1000
    #define IDC_BLUE                        1001
    #define IDC_GREEN                       1002
    #define IDC_CYAN                        1003
    #define IDC_RED                         1004
    #define IDC_MAGENTA                     1005
    #define IDC_YELLOW                      1006
    #define IDC_WHITE                       1007
    #define IDC_RECT                        1008
    #define IDC_ELLIPSE                     1009
    #define IDC_PAINT                       1010
    #define IDM_APP_ABOUT                   40001

    About2.c

    /*------------------------------------------
       ABOUT2.C -- About Box Demo Program No. 2
                   (c) Charles Petzold, 1998
      ------------------------------------------*/
    
    #include <windows.h>
    #include "resource.h"
    
    LRESULT CALLBACK WndProc      (HWND, UINT, WPARAM, LPARAM) ;
    BOOL    CALLBACK AboutDlgProc (HWND, UINT, WPARAM, LPARAM) ;
    
    int iCurrentColor  = IDC_BLACK,
        iCurrentFigure = IDC_RECT ;
    
    int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,
                        PSTR szCmdLine, int iCmdShow)
    {
         static TCHAR szAppName[] = TEXT ("About2") ;
         MSG          msg ;
         HWND         hwnd ;
         WNDCLASS     wndclass ;
    
         wndclass.style         = CS_HREDRAW | CS_VREDRAW ;
         wndclass.lpfnWndProc   = WndProc ;
         wndclass.cbClsExtra    = 0 ;
         wndclass.cbWndExtra    = 0 ;
         wndclass.hInstance     = hInstance ;
         wndclass.hIcon         = LoadIcon (hInstance, szAppName) ;
         wndclass.hCursor       = LoadCursor (NULL, IDC_ARROW) ;
         wndclass.hbrBackground = (HBRUSH) GetStockObject (WHITE_BRUSH) ;
         wndclass.lpszMenuName  = szAppName ;
         wndclass.lpszClassName = szAppName ;
    
         if (!RegisterClass (&wndclass))
         {
              MessageBox (NULL, TEXT ("This program requires Windows NT!"),
                          szAppName, MB_ICONERROR) ;
              return 0 ;
         }
    
         hwnd = CreateWindow (szAppName, TEXT ("About Box Demo Program"),
                              WS_OVERLAPPEDWINDOW,
                              CW_USEDEFAULT, CW_USEDEFAULT,
                              CW_USEDEFAULT, CW_USEDEFAULT,
                              NULL, NULL, hInstance, NULL) ;
    
         ShowWindow (hwnd, iCmdShow) ;
         UpdateWindow (hwnd) ; 
    
         while (GetMessage (&msg, NULL, 0, 0))
         {
              TranslateMessage (&msg) ;
              DispatchMessage (&msg) ;
         }
         return msg.wParam ;
    }
    
    void PaintWindow (HWND hwnd, int iColor, int iFigure)
    {
         static COLORREF crColor[8] = { RGB (  0,   0, 0), RGB (  0,   0, 255),
                                        RGB (  0, 255, 0), RGB (  0, 255, 255),
                                        RGB (255,   0, 0), RGB (255,   0, 255),
                                        RGB (255, 255, 0), RGB (255, 255, 255) } ;
    
         HBRUSH          hBrush ;
         HDC             hdc ;
         RECT            rect ;
    
         hdc = GetDC (hwnd) ;
         GetClientRect (hwnd, &rect) ;
         hBrush = CreateSolidBrush (crColor[iColor - IDC_BLACK]) ;
         hBrush = (HBRUSH) SelectObject (hdc, hBrush) ;
    
         if (iFigure == IDC_RECT)
              Rectangle (hdc, rect.left, rect.top, rect.right, rect.bottom) ;
         else
              Ellipse   (hdc, rect.left, rect.top, rect.right, rect.bottom) ;
    
         DeleteObject (SelectObject (hdc, hBrush)) ;
         ReleaseDC (hwnd, hdc) ;
    }
    
    void PaintTheBlock (HWND hCtrl, int iColor, int iFigure)
    {
         InvalidateRect (hCtrl, NULL, TRUE) ;
         UpdateWindow (hCtrl) ;
         PaintWindow (hCtrl, iColor, iFigure) ;
    }
    
    LRESULT CALLBACK WndProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
    {
         static HINSTANCE hInstance ;
         PAINTSTRUCT      ps ;
    
         switch (message)
         {
         case WM_CREATE:
              hInstance = ((LPCREATESTRUCT) lParam)->hInstance ;
              return 0 ;
    
         case WM_COMMAND:
              switch (LOWORD (wParam))
              {
              case IDM_APP_ABOUT:
                  // 激活对话框
                   if (DialogBox (hInstance, TEXT ("AboutBox"), hwnd, AboutDlgProc))
                        InvalidateRect (hwnd, NULL, TRUE) ;
                   return 0 ;
              }
              break ;
    
         case WM_PAINT:
              BeginPaint (hwnd, &ps) ;
              EndPaint (hwnd, &ps) ;
              // 画图
              PaintWindow (hwnd, iCurrentColor, iCurrentFigure) ;
              return 0 ;
    
         case WM_DESTROY:
              PostQuitMessage (0) ;
              return 0 ;
         }
         return DefWindowProc (hwnd, message, wParam, lParam) ;
    }
    
    // 对话框消息处理程序,返回布尔类型
    BOOL CALLBACK AboutDlgProc (HWND hDlg, UINT message, 
                                WPARAM wParam, LPARAM lParam)
    {
         static HWND hCtrlBlock ;
         static int  iColor, iFigure ;
    
         switch (message)
         {
         // 对话框处理的第一个消息
         case WM_INITDIALOG:
              iColor  = iCurrentColor ;
              iFigure = iCurrentFigure ;
    
              // 设置单选按钮颜色状态 从IDC_BLACK到IDC_WHITE的一组
              CheckRadioButton (hDlg, IDC_BLACK, IDC_WHITE,   iColor) ;
              // 设置单选按钮形状状态 从IDC_RECT到IDC_ELLIPSE的一组
              CheckRadioButton (hDlg, IDC_RECT,  IDC_ELLIPSE, iFigure) ;
              // 获得窗口句柄
              hCtrlBlock = GetDlgItem (hDlg, IDC_PAINT) ;
    
              SetFocus (GetDlgItem (hDlg, iColor)) ;
              return FALSE ;
    
         case WM_COMMAND:
              switch (LOWORD (wParam))
              {
              case IDOK:
                   iCurrentColor  = iColor ;
                   iCurrentFigure = iFigure ;
                   EndDialog (hDlg, TRUE) ;
                   return TRUE ;
    
              case IDCANCEL:
                   EndDialog (hDlg, FALSE) ;
                   return TRUE ;
    
              case IDC_BLACK:
              case IDC_RED:
              case IDC_GREEN:
              case IDC_YELLOW:
              case IDC_BLUE:
              case IDC_MAGENTA:
              case IDC_CYAN:
              case IDC_WHITE:
                   iColor = LOWORD (wParam) ;
                   CheckRadioButton (hDlg, IDC_BLACK, IDC_WHITE, LOWORD (wParam)) ;
                   PaintTheBlock (hCtrlBlock, iColor, iFigure) ;
                   return TRUE ;
    
              case IDC_RECT:
              case IDC_ELLIPSE:
                   iFigure = LOWORD (wParam) ;
                   CheckRadioButton (hDlg, IDC_RECT, IDC_ELLIPSE, LOWORD (wParam)) ;
                   PaintTheBlock (hCtrlBlock, iColor, iFigure) ;
                   return TRUE ;
              }
              break ;
    
         case WM_PAINT:
              PaintTheBlock (hCtrlBlock, iColor, iFigure) ;
              break ;
         }
         return FALSE ;
    }

    定义自己的控件

    about3
    About3.rc

    /
    //
    // Dialog
    //
    
    ABOUTBOX DIALOG DISCARDABLE  32, 32, 180, 100
    STYLE DS_MODALFRAME | WS_POPUP
    FONT 8, "MS Sans Serif"
    BEGIN
        CONTROL         "OK",IDOK,"EllipPush",WS_GROUP | WS_TABSTOP,73,79,32,14
        ICON            "ABOUT3",IDC_STATIC,7,7,20,20
        CTEXT           "About3",IDC_STATIC,40,12,100,8
        CTEXT           "About Box Demo Program",IDC_STATIC,7,40,166,8
        CTEXT           "(c) Charles Petzold, 1998",IDC_STATIC,7,52,166,8
    END
    
    
    /
    //
    // Menu
    //
    
    ABOUT3 MENU DISCARDABLE 
    BEGIN
        POPUP "&Help"
        BEGIN
            MENUITEM "&About About3...",            IDM_APP_ABOUT
        END
    END
    
    
    /
    //
    // DESIGNINFO
    //
    
    #ifdef APSTUDIO_INVOKED
    GUIDELINES DESIGNINFO DISCARDABLE 
    BEGIN
        "ABOUTBOX", DIALOG
        BEGIN
            LEFTMARGIN, 7
            RIGHTMARGIN, 173
            TOPMARGIN, 7
            BOTTOMMARGIN, 93
        END
    END
    #endif    // APSTUDIO_INVOKED
    
    
    /
    //
    // Icon
    //
    
    // Icon with lowest ID value placed first to ensure application icon
    // remains consistent on all systems.
    ABOUT3                  ICON    DISCARDABLE     "icon1.ico"
    #endif

    RESOURCE.H

    #define IDM_APP_ABOUT                   40001
    #define IDC_STATIC                      -1

    About3.c

    /*------------------------------------------
       ABOUT3.C -- About Box Demo Program No. 3
                   (c) Charles Petzold, 1998
      ------------------------------------------*/
    
    #include <windows.h>
    #include "resource.h"
    
    LRESULT CALLBACK WndProc (HWND, UINT, WPARAM, LPARAM) ;
    BOOL    CALLBACK AboutDlgProc (HWND, UINT, WPARAM, LPARAM) ;
    LRESULT CALLBACK EllipPushWndProc (HWND, UINT, WPARAM, LPARAM) ;
    
    int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,
                        PSTR szCmdLine, int iCmdShow)
    {
         static TCHAR szAppName[] = TEXT ("About3") ;
         MSG          msg ;
         HWND         hwnd ;
         WNDCLASS     wndclass ;
    
         wndclass.style         = CS_HREDRAW | CS_VREDRAW ;
         wndclass.lpfnWndProc   = WndProc ;
         wndclass.cbClsExtra    = 0 ;
         wndclass.cbWndExtra    = 0 ;
         wndclass.hInstance     = hInstance ;
         wndclass.hIcon         = LoadIcon (hInstance, szAppName) ;
         wndclass.hCursor       = LoadCursor (NULL, IDC_ARROW) ;
         wndclass.hbrBackground = (HBRUSH) GetStockObject (WHITE_BRUSH) ;
         wndclass.lpszMenuName  = szAppName ;
         wndclass.lpszClassName = szAppName ;
    
         if (!RegisterClass (&wndclass))
         {
              MessageBox (NULL, TEXT ("This program requires Windows NT!"),
                          szAppName, MB_ICONERROR) ;
              return 0 ;
         }
    
         wndclass.style         = CS_HREDRAW | CS_VREDRAW ;
         wndclass.lpfnWndProc   = EllipPushWndProc ;
         wndclass.cbClsExtra    = 0 ;
         wndclass.cbWndExtra    = 0 ;
         wndclass.hInstance     = hInstance ;
         wndclass.hIcon         = NULL ;
         wndclass.hCursor       = LoadCursor (NULL, IDC_ARROW) ;
         wndclass.hbrBackground = (HBRUSH) (COLOR_BTNFACE + 1) ;
         wndclass.lpszMenuName  = NULL ;
         wndclass.lpszClassName = TEXT ("EllipPush") ;
    
         RegisterClass (&wndclass) ;
    
         hwnd = CreateWindow (szAppName, TEXT ("About Box Demo Program"),
                              WS_OVERLAPPEDWINDOW,
                              CW_USEDEFAULT, CW_USEDEFAULT,
                              CW_USEDEFAULT, CW_USEDEFAULT,
                              NULL, NULL, hInstance, NULL) ;
    
         ShowWindow (hwnd, iCmdShow) ;
         UpdateWindow (hwnd) ; 
    
         while (GetMessage (&msg, NULL, 0, 0))
         {
              TranslateMessage (&msg) ;
              DispatchMessage (&msg) ;
         }
         return msg.wParam ;
    }
    
    LRESULT CALLBACK WndProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
    {
         static HINSTANCE hInstance ;
    
         switch (message)
         {
         case WM_CREATE :
              hInstance = ((LPCREATESTRUCT) lParam)->hInstance ;
              return 0 ;
    
         case WM_COMMAND :
              switch (LOWORD (wParam))
              {
              case IDM_APP_ABOUT :
                   DialogBox (hInstance, TEXT ("AboutBox"), hwnd, AboutDlgProc) ;
                   return 0 ;
              }
              break ;
    
         case WM_DESTROY :
              PostQuitMessage (0) ;
              return 0 ;
         }
         return DefWindowProc (hwnd, message, wParam, lParam) ;
    }
    
    BOOL CALLBACK AboutDlgProc (HWND hDlg, UINT message, 
                                WPARAM wParam, LPARAM lParam)
    {
         switch (message)
         {
         case WM_INITDIALOG :
              return TRUE ;
    
         case WM_COMMAND :
              switch (LOWORD (wParam))
              {
              case IDOK :
                   EndDialog (hDlg, 0) ;
                   return TRUE ;
              }
              break ;
         }
         return FALSE ;
    }
    
    LRESULT CALLBACK EllipPushWndProc (HWND hwnd, UINT message, 
                                       WPARAM wParam, LPARAM lParam)
    {
         TCHAR       szText[40] ;
         HBRUSH      hBrush ;
         HDC         hdc ;
         PAINTSTRUCT ps ;
         RECT        rect ;
    
         switch (message)
         {
         case WM_PAINT :
              GetClientRect (hwnd, &rect) ;
              GetWindowText (hwnd, szText, sizeof (szText)) ;
    
              hdc = BeginPaint (hwnd, &ps) ;
    
              hBrush = CreateSolidBrush (GetSysColor (COLOR_WINDOW)) ;
              hBrush = (HBRUSH) SelectObject (hdc, hBrush) ;
              SetBkColor (hdc, GetSysColor (COLOR_WINDOW)) ;
              SetTextColor (hdc, GetSysColor (COLOR_WINDOWTEXT)) ;
    
              Ellipse (hdc, rect.left, rect.top, rect.right, rect.bottom) ;
              DrawText (hdc, szText, -1, &rect,
                        DT_SINGLELINE | DT_CENTER | DT_VCENTER) ;
    
              DeleteObject (SelectObject (hdc, hBrush)) ;
    
              EndPaint (hwnd, &ps) ;
              return 0 ;
    
         case WM_KEYUP :
              if (wParam != VK_SPACE)
                   break ;
                                                 // fall through
         case WM_LBUTTONUP :
             // GetParent获得父窗口句柄
             // 消息的wParam等于控件的ID,使用GetWindowLong获得
              SendMessage (GetParent (hwnd), WM_COMMAND,
                   GetWindowLong (hwnd, GWL_ID), (LPARAM) hwnd) ;
              return 0 ;
         }
         return DefWindowProc (hwnd, message, wParam, lParam) ;
    }
    

    非模态对话框

    非模态对话框允许使用者在对话框与其它程序之间进行切换,又可以在对话框与建立对话框的窗口之间进行切换。

    模态对话框是用DialogBox来建立的。只有在清除对话框之后,函数才会传回值。在对话框程序内使用EndDialog呼叫来终止对话框,DialogBox传回的是该呼叫的第二个参数的值。非模态对话框是使用CreateDialog来建立的,该函数所使用的参数与DialogBox相同。

    hDlgModeless = CreateDialog ( hInstance, szTemplate, hwndParent, DialogProc) ;

    区别是CreateDialog函数立即传回对话框的窗口句柄,并通常将这个窗口句柄存放到整体变量中。

    尽管将DialogBox这一名字用于模态对话框而CreateDialog用于非模态对话框是随意的,但是您可以通过非模态对话框与普通窗口类似这一点来记住这两个函数的区别。CreateDialog可以令人想起CreateWindow函数来,而后者建立的是普通窗口。

    模态对话框与非模态对话框的区别

    • 非模态对话框通常包含一个标题列和一个系统菜单按钮。用于非模态对话框的对话框模板中的STYLE叙述形如:STYLE WS_POPUP | WS_CAPTION | WS_SYSMENU | WS_VISIBLE
    • 非模态对话框的STYLE叙述中包含有WS_VISIBLE样式。如 果 省 略 了 WS_VISIBLE , 那 么 您 必 须 在 CreateDialog 呼 叫 之 后 呼 叫ShowWindow,否则不会显示。
    • 非模态对话框的消息要经过程序的消息队列。要将这些消息传送给对话框窗口消息处理程序,则必须改变消息队列。

    方法如下:当您使用CreateDialog建立非模态对话框时,应该将从呼叫中传回的对话框句柄储存在一个整体变量(如hDlgModeless)中,并将消息循环改变为:

    while (GetMessage (&msg, NULL, 0, 0))
    {
    if (hDlgModeless == 0 || !IsDialogMessage (hDlgModeless, &msg))
    {
    TranslateMessage (&msg) ;
    DispatchMessage (&msg) ;
    }
    }

    加上快捷键后:

    while (GetMessage (&msg, NULL, 0, 0))
    {
    if (hDlgModeless == 0 || !IsDialogMessage (hDlgModeless, &msg))
    {
    if (!TranslateAccelerator (hwnd, hAccel, &msg))
    {
    TranslateMessage (&msg) ;
    DispatchMessage (&msg) ;
    }
    }
    }

    调色板

    colors2
    Colors2.rc

    /
    //
    // Dialog
    //
    
    COLORSCRDLG DIALOG DISCARDABLE  16, 16, 120, 141
    STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION
    CAPTION "Color Scroll Scrollbars"
    FONT 8, "MS Sans Serif"
    BEGIN
        CTEXT           "&Red",IDC_STATIC,8,8,24,8,NOT WS_GROUP
        SCROLLBAR       10,8,20,24,100,SBS_VERT | WS_TABSTOP
        CTEXT           "0",13,8,124,24,8,NOT WS_GROUP
        CTEXT           "&Green",IDC_STATIC,48,8,24,8,NOT WS_GROUP
        SCROLLBAR       11,48,20,24,100,SBS_VERT | WS_TABSTOP
        CTEXT           "0",14,48,124,24,8,NOT WS_GROUP
        CTEXT           "&Blue",IDC_STATIC,89,8,24,8,NOT WS_GROUP
        SCROLLBAR       12,89,20,24,100,SBS_VERT | WS_TABSTOP
        CTEXT           "0",15,89,124,24,8,NOT WS_GROUP
    END
    
    
    /
    //
    // DESIGNINFO
    //
    
    #ifdef APSTUDIO_INVOKED
    GUIDELINES DESIGNINFO DISCARDABLE 
    BEGIN
        "COLORSCRDLG", DIALOG
        BEGIN
            LEFTMARGIN, 7
            RIGHTMARGIN, 113
            TOPMARGIN, 7
            BOTTOMMARGIN, 134
        END
    END
    #endif

    RESOURCE.H

    #define IDC_STATIC                      -1
    /*------------------------------------------------
       COLORS2.C -- Version using Modeless Dialog Box
                    (c) Charles Petzold, 1998
      ------------------------------------------------*/
    
    #include <windows.h>
    
    LRESULT CALLBACK WndProc     (HWND, UINT, WPARAM, LPARAM) ;
    BOOL    CALLBACK ColorScrDlg (HWND, UINT, WPARAM, LPARAM) ;
    
    HWND hDlgModeless ;
    
    int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,
                        PSTR szCmdLine, int iCmdShow)
    {
         static TCHAR szAppName[] = TEXT ("Colors2") ;
         HWND         hwnd ;
         MSG          msg ;
         WNDCLASS     wndclass ;
    
         wndclass.style         = CS_HREDRAW | CS_VREDRAW ;
         wndclass.lpfnWndProc   = WndProc ;
         wndclass.cbClsExtra    = 0 ;
         wndclass.cbWndExtra    = 0 ;
         wndclass.hInstance     = hInstance ;
         wndclass.hIcon         = LoadIcon (NULL, IDI_APPLICATION) ;
         wndclass.hCursor       = LoadCursor (NULL, IDC_ARROW) ;
         wndclass.hbrBackground = CreateSolidBrush (0L) ;
         wndclass.lpszMenuName  = NULL ;
         wndclass.lpszClassName = szAppName ;
    
         if (!RegisterClass (&wndclass))
         {
              MessageBox (NULL, TEXT ("This program requires Windows NT!"),
                          szAppName, MB_ICONERROR) ;
              return 0 ;
         }
    
         hwnd = CreateWindow (szAppName, TEXT ("Color Scroll"),
                              WS_OVERLAPPEDWINDOW | WS_CLIPCHILDREN,
                              CW_USEDEFAULT, CW_USEDEFAULT,
                              CW_USEDEFAULT, CW_USEDEFAULT,
                              NULL, NULL, hInstance, NULL) ;
    
         ShowWindow (hwnd, iCmdShow) ;
         UpdateWindow (hwnd) ;
    
         hDlgModeless = CreateDialog (hInstance, TEXT ("ColorScrDlg"), 
                                      hwnd, ColorScrDlg) ;
    
         while (GetMessage (&msg, NULL, 0, 0))
         {
             // IsDialogMessage发送非模态对话框消息
              if (hDlgModeless == 0 || !IsDialogMessage (hDlgModeless, &msg))
              {
                   TranslateMessage (&msg) ;
                   DispatchMessage  (&msg) ;
              }
         }
         return msg.wParam ;
    }
    
    LRESULT CALLBACK WndProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
    {
         switch (message)
         {
         case WM_DESTROY :
              DeleteObject ((HGDIOBJ) SetClassLong (hwnd, GCL_HBRBACKGROUND,
                                  (LONG) GetStockObject (WHITE_BRUSH))) ;
              PostQuitMessage (0) ;
              return 0 ;
         }
         return DefWindowProc (hwnd, message, wParam, lParam) ;
    }
    
    BOOL CALLBACK ColorScrDlg (HWND hDlg, UINT message, 
                               WPARAM wParam, LPARAM lParam)
    {
         static int iColor[3] ;
         HWND       hwndParent, hCtrl ;
         int        iCtrlID, iIndex ;
    
         switch (message)
         {
         case WM_INITDIALOG :
              for (iCtrlID = 10 ; iCtrlID < 13 ; iCtrlID++)
              {
                   hCtrl = GetDlgItem (hDlg, iCtrlID) ;
                   SetScrollRange (hCtrl, SB_CTL, 0, 255, FALSE) ;
                   SetScrollPos   (hCtrl, SB_CTL, 0, FALSE) ;
              }
              return TRUE ;
    
         case WM_VSCROLL :
              hCtrl   = (HWND) lParam ;
              iCtrlID = GetWindowLong (hCtrl, GWL_ID) ;
              iIndex  = iCtrlID - 10 ;
              hwndParent = GetParent (hDlg) ;
    
              switch (LOWORD (wParam))
              {
              case SB_PAGEDOWN :
                   iColor[iIndex] += 15 ;        // fall through
              case SB_LINEDOWN :
                   iColor[iIndex] = min (255, iColor[iIndex] + 1) ;
                   break ;
              case SB_PAGEUP :
                   iColor[iIndex] -= 15 ;        // fall through
              case SB_LINEUP :
                   iColor[iIndex] = max (0, iColor[iIndex] - 1) ;
                   break ;
              case SB_TOP :
                   iColor[iIndex] = 0 ;
                   break ;
              case SB_BOTTOM :
                   iColor[iIndex] = 255 ;
                   break ;
              case SB_THUMBPOSITION :
              case SB_THUMBTRACK :
                   iColor[iIndex] = HIWORD (wParam) ;
                   break ;
              default :
                   return FALSE ;
              }
              SetScrollPos  (hCtrl, SB_CTL,      iColor[iIndex], TRUE) ;
              // 设置静态资源颜色值大小
              SetDlgItemInt (hDlg,  iCtrlID + 3, iColor[iIndex], FALSE) ;
    
              DeleteObject ((HGDIOBJ) SetClassLong (hwndParent, GCL_HBRBACKGROUND,
                                  (LONG) CreateSolidBrush (
                                       RGB (iColor[0], iColor[1], iColor[2])))) ;
    
              InvalidateRect (hwndParent, NULL, TRUE) ;
              return TRUE ;
         }
         return FALSE ;
    }
    

    十六进制计算器

    计算器
    HexCalc.rc

    /
    //
    // Icon
    //
    
    // Icon with lowest ID value placed first to ensure application icon
    // remains consistent on all systems.
    HEXCALC                 ICON    DISCARDABLE     "HexCalc.ico"
    #endif    // English (U.S.) resources
    /
    
    
    
    #ifndef APSTUDIO_INVOKED
    /
    //
    // Generated from the TEXTINCLUDE 3 resource.
    //
    #include "hexcalc.dlg"
    
    /
    #endif    // not APSTUDIO_INVOKED

    HexCalc.dlg

    /*---------------------------
       HEXCALC.DLG dialog script
      ---------------------------*/
    
    HexCalc DIALOG -1, -1, 102, 122
    STYLE WS_OVERLAPPED | WS_CAPTION | WS_SYSMENU | WS_MINIMIZEBOX
    CLASS "HexCalc"
    CAPTION "Hex Calculator"
    {
         PUSHBUTTON "D",       68,  8,  24, 14, 14
         PUSHBUTTON "A",       65,  8,  40, 14, 14
         PUSHBUTTON "7",       55,  8,  56, 14, 14
         PUSHBUTTON "4",       52,  8,  72, 14, 14
         PUSHBUTTON "1",       49,  8,  88, 14, 14
         PUSHBUTTON "0",       48,  8, 104, 14, 14
         PUSHBUTTON "0",       27, 26,   4, 50, 14
         PUSHBUTTON "E",       69, 26,  24, 14, 14
         PUSHBUTTON "B",       66, 26,  40, 14, 14
         PUSHBUTTON "8",       56, 26,  56, 14, 14
         PUSHBUTTON "5",       53, 26,  72, 14, 14
         PUSHBUTTON "2",       50, 26,  88, 14, 14
         PUSHBUTTON "Back",     8, 26, 104, 32, 14
         PUSHBUTTON "C",       67, 44,  40, 14, 14
         PUSHBUTTON "F",       70, 44,  24, 14, 14
         PUSHBUTTON "9",       57, 44,  56, 14, 14
         PUSHBUTTON "6",       54, 44,  72, 14, 14
         PUSHBUTTON "3",       51, 44,  88, 14, 14
         PUSHBUTTON "+",       43, 62,  24, 14, 14
         PUSHBUTTON "-",       45, 62,  40, 14, 14
         PUSHBUTTON "*",       42, 62,  56, 14, 14
         PUSHBUTTON "/",       47, 62,  72, 14, 14
         PUSHBUTTON "%",       37, 62,  88, 14, 14
         PUSHBUTTON "Equals",  61, 62, 104, 32, 14
         PUSHBUTTON "&&",      38, 80,  24, 14, 14
         PUSHBUTTON "|",      124, 80,  40, 14, 14
         PUSHBUTTON "^",       94, 80,  56, 14, 14
         PUSHBUTTON "<",       60, 80,  72, 14, 14
         PUSHBUTTON ">",       62, 80,  88, 14, 14
    }
    

    HexCalc.c

    /*----------------------------------------
       HEXCALC.C -- Hexadecimal Calculator
                    (c) Charles Petzold, 1998
      ----------------------------------------*/
    
    #include <windows.h>
    
    LRESULT CALLBACK WndProc (HWND, UINT, WPARAM, LPARAM) ;
    
    int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,
                        PSTR szCmdLine, int iCmdShow)
    {
         static TCHAR szAppName[] = TEXT ("HexCalc") ;
         HWND         hwnd ;
         MSG          msg ;
         WNDCLASS     wndclass ;
    
         wndclass.style         = CS_HREDRAW | CS_VREDRAW;
         wndclass.lpfnWndProc   = WndProc ;
         wndclass.cbClsExtra    = 0 ;
         wndclass.cbWndExtra    = DLGWINDOWEXTRA ;    // Note!
         wndclass.hInstance     = hInstance ;
         wndclass.hIcon         = LoadIcon (hInstance, szAppName) ;
         wndclass.hCursor       = LoadCursor (NULL, IDC_ARROW) ;
         wndclass.hbrBackground = (HBRUSH) (COLOR_BTNFACE + 1) ;
         wndclass.lpszMenuName  = NULL ;
         wndclass.lpszClassName = szAppName ;
    
         if (!RegisterClass (&wndclass))
         {
              MessageBox (NULL, TEXT ("This program requires Windows NT!"),
                          szAppName, MB_ICONERROR) ;
              return 0 ;
         }
         // 第二个参数:对话框模板名称
         // 第三个参数:父窗口句柄,没有父窗口设置为0
         // 第四个参数:对话框地址,这里不需要
         // 这相当于调用CreateWindow
         hwnd = CreateDialog (hInstance, szAppName, 0, NULL) ;
    
         ShowWindow (hwnd, iCmdShow) ;
    
         while (GetMessage (&msg, NULL, 0, 0))
         {
              TranslateMessage (&msg) ;
              DispatchMessage (&msg) ;
         }
         return msg.wParam ;
    }
    
    void ShowNumber (HWND hwnd, UINT iNumber)
    {
         TCHAR szBuffer[20] ;
    
         wsprintf (szBuffer, TEXT ("%X"), iNumber) ;
         SetDlgItemText (hwnd, VK_ESCAPE, szBuffer) ;
    }
    
    DWORD CalcIt (UINT iFirstNum, int iOperation, UINT iNum)
    {
        // 没有包含资源头文件,是因为按键控件ID和空间上文字ASCII码一一对应
         switch (iOperation)
         {
         case '=': return iNum ;
         case '+': return iFirstNum +  iNum ;
         case '-': return iFirstNum -  iNum ;
         case '*': return iFirstNum *  iNum ;
         case '&': return iFirstNum &  iNum ;
         case '|': return iFirstNum |  iNum ;
         case '^': return iFirstNum ^  iNum ;
         case '<': return iFirstNum << iNum ;
         case '>': return iFirstNum >> iNum ;
         case '/': return iNum ? iFirstNum / iNum: MAXDWORD ;
         case '%': return iNum ? iFirstNum % iNum: MAXDWORD ;
         default : return 0 ;
         }
    }
    
    LRESULT CALLBACK WndProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
    {
         static BOOL  bNewNumber = TRUE ;
         static int   iOperation = '=' ;
         static UINT  iNumber, iFirstNum ;
         HWND         hButton ;
    
         switch (message)
         {
         case WM_KEYDOWN:                   // left arrow --> backspace
              if (wParam != VK_LEFT)
                   break ;
              wParam = VK_BACK ;
                                            // fall through
         case WM_CHAR:
              if ((wParam = (WPARAM) CharUpper ((TCHAR *) wParam)) == VK_RETURN)
                   wParam = '=' ;
              // GetDlgItem获取模板中定义的ID来判断按钮是否有效
              if (hButton = GetDlgItem (hwnd, wParam))
              {
                  // 按钮闪烁
                   SendMessage (hButton, BM_SETSTATE, 1, 0) ;
                   Sleep (100) ;
                   SendMessage (hButton, BM_SETSTATE, 0, 0) ;
              }
              else
              {
                   MessageBeep (0) ;
                   break ;
              }
                                            // fall through
         case WM_COMMAND:
             // 输入焦点给父窗口
              SetFocus (hwnd) ;
    
              if (LOWORD (wParam) == VK_BACK)         // backspace
                   ShowNumber (hwnd, iNumber /= 16) ;
    
              else if (LOWORD (wParam) == VK_ESCAPE)  // escape
                   ShowNumber (hwnd, iNumber = 0) ;
    
              else if (isxdigit (LOWORD (wParam)))    // hex digit
              {
                   if (bNewNumber)
                   {
                        iFirstNum = iNumber ;
                        iNumber = 0 ;
                   }
                   bNewNumber = FALSE ;
    
                   if (iNumber <= MAXDWORD >> 4)
                        ShowNumber (hwnd, iNumber = 16 * iNumber + wParam -
                        (isdigit (wParam) ? '0': 'A' - 10)) ;
                   else
                        MessageBeep (0) ;
              }
              else                                    // operation
              {
                   if (!bNewNumber)
                        ShowNumber (hwnd, iNumber =
                             CalcIt (iFirstNum, iOperation, iNumber)) ;
                   bNewNumber = TRUE ;
                   iOperation = LOWORD (wParam) ;
              }
              return 0 ;
    
         case WM_DESTROY:
              PostQuitMessage (0) ;
              return 0 ;
         }
         return DefWindowProc (hwnd, message, wParam, lParam) ;
    }
    
    展开全文
  • 在Windows程序设计,基于对话框的程序设计,对对话框上控件的访问有多种方法。在这里我总结七种方法,但这七种方法我可以把他们分为三大类。下面通过一个小示例演示对话框控件访问的几种方法: 上图为一个小的...
  • 在Windows程序设计,基于对话框的程序设计,对对话框上控件的访问有多种方法。在这里我总结七种方法,但这七种方法我可以把他们分为三大类。下面通过一个小示例演示对话框控件访问的几种方法: 上图为一个小的...
  • Windows对话框分为两类:模态对话框和非模态对话框。 模态对话框 当它弹出后,本应用程序其他窗口将不再接受用户输入,只有该对话框响应用户输入,对它进行相应操作退出后,其他窗口才能继续与用户交互。...
  • 模态对话框

    2017-12-06 15:10:00
    模态对话框 模态对话框(Modal Dialogue ...一般来说,Windows应用程序对话框分为模态对话框和非模态对话框两种。二者的区别在于当对话框打开时,是否允许用户进行其他对象的操作。 window.showModalDialo...
  • 应用程序,可以自己建立窗体对话框,但是对于通用的一些操作,.Net Framework 提供了与Windows对话框相新关的类,可以实现创建目录和文件、访问打印机,设置字体和颜色。 窗体对话框分为模式和非模式对话框,...
  • Windows对话框分为两类:模态对话框和非模态对话框。 模态对话框,当它弹出后,本应用程序其他窗口将不再接受用户输入,只有该对话框响应用户输入,对它进行相应操作退出后,其他窗口才能继续与用户交互。 非模态...
  • 常用对话框:文件对话框

    千次阅读 2014-12-09 13:59:38
     文件对话框分为打开文件对话框和保存文件对话框,相信大家在Windows系统经常见到这两种文件对话框。例如,很多编辑软件像记事本等都有“打开”选项,选择“打开”后会弹出一个对话框,让我们选择要打开文件的...
  • 对话框是windows资源一个非常重要的东西,对话框分为两类,模态的和非模态的,它们的区别是在于是否允许用户不同的窗口间进行切换。 对话框的工作原理  对话框和普通的窗口之间有很多相同的地方。但是对话框...
  • 在Windows程序设计,基于对话框的程序设计,对对话框上控件的访问有多种方法。在这里我总结七种方法,但这七种方法我可以把他们分为三大类。下面通过一个小示例演示对话框控件访问的几种方法: 上图为一个小的...
  • MFC文件对话框

    2018-07-05 10:21:53
    (文件对话框分为打开文件对话框和保存文件对话框,相信大家在Windows系统经常见到这两种文件对话框。例如,很多编辑软件像记事本等都有“打开”选项,选择“打开”后会弹出一个对话框,让我们选择要打开文件的...
  • 模式对话框

    2013-09-03 19:23:21
    模式(modal)对话框,即模态对话框,是指用户在Windows应用程序的对话框中,想要对对话框以外的应用程序进行操时,必须首先对该对话框进行响应。如单击【确定】或【取消】按钮等将该对话框关闭。相对应的另一个对话框...
  • 文件对话框分为打开文件对话框和保存文件对话框,相信大家在Windows系统经常见到这两种文件对话框。例如,很多编辑软件像记事本等都有“打开”选项,选择“打开”后会弹出一个对话框,让我们选择要打开文件的路径...
  • 文件对话框分为打开文件对话框和保存文件对话框,相信大家在Windows系统经常见到这两种文件对话框。例如,很多编辑软件像记事本等都有“打开”选项,选择“打开”后会弹出一个对话框,让我们选择要打开文件的路径...
  • 非模态对话框

    2017-03-22 17:09:06
    对话框分为模态的和非模态的,常见的是模态对话框,通常可以资源文件新建一个对话框,然后再WinMain函数调用DialogBox来显示对话框,当模态对话框未关闭时,不可以对主窗口进行操作,必须将其关闭才可以,非...
  • 对应本节的内容,可以帮助索引查看 QDialog 和 Dialog Windows 关键字。 一、模态和非模态对话框 QDialog 类是所有对话框窗口类的基类。对话框窗口是一个经常用来完成一个短小任务或者和用户进行简单交互的...
  • MFC 文件对话框

    2017-04-06 21:11:37
     文件对话框分为打开文件对话框和保存文件对话框,相信大家在Windows系统经常见到这两种文件对话框。例如,很多编辑软件像记事本等都有“打开”选项,选择“打开”后会弹出一个对话框,让我们选择要打开文件的...
  • Android 对话框控件

    2016-05-12 22:35:20
    一、概述对话框是 UI 设计常用的控件,在windows操作系统对话框分为模式对话框和非模式对话框。   模式对话框在使用时,项目其它UI是不允许操作的,如保存对文件话框 非模式对话框允许操作其它的 UI...

空空如也

空空如也

1 2 3 4 5 ... 12
收藏数 230
精华内容 92
关键字:

在windows中对话框分为