精华内容
下载资源
问答
  • 对话框分为两类:「模态的」和「非模态的」,其中模态对话框最为普遍。当您的程序显示一个模态对话框时,使用者不能在对话框与同一个程序中的另一个窗口之间进行切换,使用者必须主动结束该对话框,这藉由通过按一下...

    模态对话框

    简单对话框

    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对话框

    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 编程之 对话框总结

    千次阅读 2014-04-25 18:37:09
     对话框也是一种资源,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>指定其窗口过程函数


    展开全文
  • 专升本-计算机公共课考点分析Windows 7 操作系统26. 操作系统的概念27. 操作系统的功能28. 操作系统的主要特征29. 操作系统的分类30. 常用操作系统简介31. Windows 7 的基本操作32. 窗口的组成33. 对话框操作34. ...
  • Windows对话框分为两类:模态对话框和非模态对话框. 模态对话框是这样的对话框,当它弹出后,本应用程序其他窗口将不再接受用户输入,只有该对话框响应用户输入,在对它进行相应操作退出后,其他窗口才能继续与用户...
  • MFC文件对话框

    2018-07-05 10:21:53
    (文件对话框分为打开文件对话框和保存文件对话框,相信大家在Windows系统中经常见到这两种文件对话框。例如,很多编辑软件像记事本等都有“打开”选项,选择“打开”后会弹出一个对话框,让我们选择要打开文件的...
  • 对话框是windows资源中一个非常重要的东西,对话框分为两类,模态的和非模态的,它们的区别是在于是否允许用户在不同的窗口间进行切换。 对话框的工作原理  对话框和普通的窗口之间有很多相同的地方。但是对话框...
  • 这就需要用到 Windows应用程序中一个很重要的用户接口 ——对话框对话框基本认识常用控件介绍对话框的种类模态对话框非模态对话框对话框的新建和显示模态对话框的创建非模态对话框的创建 对话框...
  • 模式对话框与非模式对话框的区别

    千次阅读 2018-09-28 14:56:47
    模式对话框就是不处理它就没法处理父窗口,而非模式对话框就是不用先处理此对话框也可以处理父窗口.例子:在桌面上右击我的电脑,选择属性,弹出系统属性窗口,点击下面的技术支持,弹出技术支持信息,现在再对系统属性窗口...
  • 最近在做Windows 开发过程中遇到一个问题,需要打开文件对话框和另存为对话框,获取所选文件的路径信息,这部分很容易就实现了,可当另存为文件时如何获得格式不同文件的扩展名却遇到了一点问题,经过一番资料搜索和...
  • 一般来说,Windows应用程序中,对话框分为模态对话框和非模态对话框两种。 模态对话框(Modal Dialogue Box,又叫做模式对话框)垄断了用户的输入。当一个模态对话框打开时,用户只能与该对话框进行交互,而其他用户...
  • 计算机应用基础Windows7Office2010期末测试题(一).docx (2页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦!9.90 积分期末试题(一)考试时间:90分钟,总分:100分一、...
  • VC++ 对话框的使用

    2012-10-19 11:08:15
    对话框分为两类,一是模态对话框,二是非模态对话框;另外还可以直接建立基于对话框的应用程序。 Visual C++6.0提供的对话框编辑器能“可视”地进行设计、编辑对话框,并可用ClassWizard为对话框从CDialog基类中派生...
  • windows编程---对话框

    千次阅读 2012-08-28 11:34:34
    用过windows的对于对话框并不陌生,其主要用于完成特定的任务,是人机交互的一个方式。对话框可以分为两种:模态对话框和非模态对话框。 模态对话框也可分为两种,一种是系统方式的模态对话框,这种对话框只有当其...
  • 按照类型可以分为两类,模态和非模态。 模态: 会阻止其他界面,知道对话框被关闭。 非模态:可以永久停留在屏幕上,而且不会干扰界面中的其他窗口,可以接受输入(随时)。 创建对话框的三种方法: 1)调用通用...
  • windows应用程序是通过窗口(window)、控件(control)和对话框(dialog box)来和用户交互的,windows系统预定义了很多基本的交互行为和外观,也预定义了很多共用的控件和对话框,让应用程序开发者更容易开发出...
  • 1、对话框组成  从MFC角度看,分为两类:  (1)对话框模板资源。对话框模板用于指定对话框的控件及其分布,Windows根据对话框模板来创建并显示对话框  (2)对话框类。... 对话框分为模态(Model)对
  • 6.1 基本概念 对话框是 GUI 程序中不...QDialog(及其子类,以及所有Qt::Dialog类型的类)的对于其 parent 指针都有额外的解释:如果 parent 为 NULL,则该对话框会作为一个顶层窗口,否则则作为其父组件的子对话框..
  • 一 数据库安装1 环境说明1.1操作系统版本windows 7 旗舰版1.2 数据库版本oracle 11g R2 11.2.0.4 Windows版本2 准备工作2.1首先将操作系统安装完毕2.2将oracle软件放到服务器任意目录,并将两个文件解压缩到同一个...
  • 计算机操作系统——Windows7模块2模块2 计算机操作系统—Windows7操作系统(operating system,OS)是最基本的系统软件,它是控制和管理计算机所有硬件和软件资源的一组程序,是用户和计算机之间的通信界面,用户通过...
  • 文档介绍:2基于Word2010的文字处理2.1Word2010的界面与操作2.2文档的建立与编辑2.3文档的格式化2.4表格处理2.5图文处理2.6Word的其他功能2019/7/101任务1制作第一个Word文档[任务描述]本任务通过第一个Word文档的...
  • 模态对话框和非模态对话框Windows对话框分为两类:模态对话框和非模态对话框。模态对话框是这样的对话框,当它弹出后,本应用程序其他窗口将不再接受用户输入,只有该对话框响应用户输入,在对它进行相应操作退出后....
  • 1. 在Windows系统中启动任务管理器可使用:Ctrl+Alt+Delete、Ctrl+Shift+Esc、右击任务栏空白处 2. UNIX操作系统是一种多用户分时操作系统,Linux操作系统最早是由芬兰黑客为尝试在因特尔X86架构上提供自由免费的...
  • 非模态对话框

    2017-03-22 17:09:06
    对话框分为模态的和非模态的,常见的是模态对话框,通常可以在资源文件中新建一个对话框,然后再WinMain函数中调用DialogBox来显示对话框,当模态对话框未关闭时,不可以对主窗口进行操作,必须将其关闭才可以,非...
  • 模态对话框和非模态对话框 Windows对话框分为两类:模态对话框和非模态对话框。 模态对话框是这样的对话框,当它弹出后,本应用程序其他窗口将不再接受用户输入,只有该对话框响应用户输入,在对它进行相应操作...
  • Windows 7操作系统一、操作系统概述1. 操作系统的概念2.操作系统的功能3.操作系统的主要特征4.操作系统的分类5.常用操作系统简介二、Windows 7基础1. Windows 7的配置2. 键盘、鼠标的基本操作3.窗口4.对话框5.剪切板...
  • 对话框-计算机文化基础第 二 章 Windows XP 操作系统 本章内容 2.1 操作系统概述 2.2 Windows XP基础 2.3 Windows XP的桌面 2.4 Windows XP的资源管理器 2.5 控制面板 2.6 Windows XP的系统维护与性能优 2.7 Windows...
  • Windows程序设计中,基于对话框的程序设计,对对话框上控件的访问有多种方法。在这里我总结七种方法,但这七种方法我可以把他们分为三大类。下面通过一个小示例演示对话框控件访问的几种方法:  上图为一个小...
  • Windows对话框分为两类:模态对话框和非模态对话框。 模态对话框,当它弹出后,本应用程序其他窗口将不再接受用户输入,只有该对话框响应用户输入,在对它进行相应操作退出后,其他窗口才能继续与用户交互。 非模态...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 36,001
精华内容 14,400
关键字:

windows7对话框分为