您的位置:首页 > 百科 > 正文

DialogBoxParam

DialogBoxParam函数根据对话框模板资源创建积江家剂么高讲困一个模态的对话框。在显示对话框之前,函数将一个应用程序定义的值传到对话框过程中 WM_IN来自ITDIALOG 消息的 lParam 参数,应用程序可用此值来初始化对话框。

  • 外文名称 DialogBoxParam
  • 函数功能 根据模板创建一个模态的对话框
  • 函数原型 int DialogBoxParam
  • 参数 hlnstance等
  • 类别 计算机函数

定义

  函数功能:

  函数原型:int DialogBoxParam(HINSTANCE hIn来自stance,LPCTSTR IpTemplateName,HWND hWndParent, DLGPROC IPDialogFunc,LPAR360百科AM dwlnitP危买尼粒料材而呀士aram);

  销础长参数:

  hlnstance:标识一医缩良力负足财亚个模块的实例,该模块的可执行文件含有对话框模板。

  IpTemplateName:标识对话框模板。此参数可以指向一个以NULL结尾的字符串的指针,该字符串指希脚理防刑元剧定对话框模扳名,或是指定对话框模板的资源标识符的一个整型值。如果此参婷肉道致战免数指定了一个资源标识符,则它的高位字一定为零,且低位字一定含有标识符。一定用MAKEINTRESOURCE宏指令创建此值。

  hWndParent:均孔指定拥有对话框的窗口。

  IpDialogFunc:指兴认出国测洲向对话框过程的指针。有关更详细的关于对话框过程的信息,请参见DialogProc。

  dwInitParam:指定传递到对话框过程中的 WM_IN良把怕苦肉践ITDIALOG 消息 IParam 参数的值。

  返回值:如函数调用成功则返回值为在对函数EndDialog的调用中的nResu菜格良某复降望lt参数,该EndDialog函数用于中止对话框。如果函数调用失败,则返回值为-1。若想获得错误信息,请调用GetLastE苏打rror函数。

  备注:DialogBoxParam函数用CreateWindowEx函数创建对话框。然后把一个WM_INITDIALOGG消息传递到对话框过程。如果模板指定DS_SETFONT类型,DialogBoxParam函数把一个WM_SETFONT消息传递到对话框过程。(不管模板是否指定WS_VISIBLE类型),函数显示对话框使拥丝调制厚核九层步按区运有窗口失效,且为对话框启动它本身的消息循环来检取律读阶帝企雨亚主和传递消息。当对话框应用程序调用EndDialog函数时,DialogBoxParam函数清除对话框中止消意手挥朝象威入伟若量息循环;使拥有窗口生效(如果以前有效),且返回函数EndDialog的调用中的nReSUlt参数。Windows 95和以序晶图判厚战后版本:系统可支持每个对话框运责球模板最多为255个控制。为把多于255个控制放入对话框,可以在WM_INITDLALOG消息处理器中创建控制,而不是把它们放入模板中。Windows CE:lpTemplateName参数指向的对话框模板中DLGTEM支参强满胡PLATE结构并不支持所有的类型。

  速查:Windows NT:3.1及以上版本:Windows:95及以上版本;Windows CE:1.0及以上版本;头文件:Winuser.h;库文件:USer32.lib:Unicode:在Windows NT上实现为Unicode和ANSI两种版本。

win32编程实例

  FirstWindow.cpp

  #include "Windows.h"

  #include "tchar.h"

  TCHAR ClassName[] = _T("DLGCLASS");

  TCHAR MenuName[] = _T("MyMenu");

  TCHAR DlgName[] = _T("MyDialog");

  TCHAR AppName[] = _T("Our First Dialog Box");

  TCHAR TestString[] = _T("Wow! I'm in an edit box now");

  TCHAR buffer[512];

  HINSTANCE g_hInstance;

  #define IDC_EDIT 3000

  #define IDC_BUTTON 3001

  #define IDC_EXIT 3002

  #define IDM_GETTEXT 32000

  #define IDM_CLEAR 32001

  #define IDM_EXIT 32002

  LRESULT CALLBACK ProcWinMain( HWND hWnd,

  UINT Msg,

  WPARAM wParam,

  LPARAM lParam

  )

  {

  switch(Msg)

  {

  case WM_CREATE:

  {

  SetDlgItemText(hWnd,IDC_EDIT,AppName);

  }

  break;

  case WM_COMMAND:

  {

  if(lParam == 0)

  {

  switch(LOWORD(wParam))

  {

  case IDM_GETTEXT:

  GetDlgItemText(hWnd,IDC_EDIT,buffer,512);

  MessageBox(NULL,buffer,AppName,MB_OK);

  break;

  case IDM_CLEAR:

  SetDlgItemText(hWnd,IDC_EDIT,NULL);

  break;

  default:

  DestroyWindow(hWnd);

  break;

  }

  }

  else

  {

  if(HIWORD(wParam) == BN_CLICKED)

  {

  switch(LOWORD(wParam))

  {

  case IDC_BUTTON:

  SetDlgItemText(hWnd,IDC_EDIT,TestString);

  break;

  case IDC_EXIT:

  SendMessage(hWnd,WM_COMMAND,IDM_EXIT,0);

  break;

  }

  }

  }

  }

  break;

  case WM_DESTROY:

  {

  PostQuitMessage(NULL);

  }

  break;

  default:

  return DefWindowProc(hWnd, Msg, wParam, lParam );

  }

  return 0;

  }

  int WINAPI WinMain( HINSTANCE hInstance,

  HINSTANCE hPrevInstance,

  LPSTR lpCmdLine,

  int nCmdShow

  )

  {

  HICON hIcon;

  HCURSOR hCursor;

  MSG stMsg;

  WNDCLASSEX stdWndClass;

  HWND hDlg;

  g_hInstance = hInstance;

  RtlZeroMemory(&stdWndClass, sizeof(stdWndClass));

  stdWndClass.hCursor = LoadCursor(0,IDC_ARROW);

  stdWndClass.cbSize = sizeof(stdWndClass);

  stdWndClass.style = CS_HREDRAW|CS_VREDRAW;

  stdWndClass.lpfnWndProc = ProcWinMain;

  stdWndClass.hbrBackground = (HBRUSH)(COLOR_BTNFACE+1);

  stdWndClass.lpszClassName = ClassName;

  stdWndClass.hInstance = hInstance;

  stdWndClass.lpszMenuName = MenuName;

  stdWndClass.cbClsExtra = NULL;

  stdWndClass.cbWndExtra = DLGWINDOWEXTRA;

  hIcon = LoadIcon(NULL,IDI_APPLICATION);

  stdWndClass.hIcon = hIcon;

  stdWndClass.hIconSm = hIcon;

  hCursor = LoadCursor(NULL,IDC_ARROW);

  stdWndClass.hCursor = hCursor;

  RegisterClassEx(&stdWndClass);

  hDlg = CreateDialogParam(hInstance,DlgName,NULL,NULL,NULL);

  if(!hDlg)

  return 0;

  SetFocus(GetDlgItem(hDlg,IDC_EDIT));

  ShowWindow(hDlg,SW_SHOWNORMAL);

  UpdateWindow(hDlg);

  while(GetMessage(&stMsg,NULL,0,0))

  {

  if(!IsDialogMessage(hDlg,&stMsg))

  {

  TranslateMessage(&stMsg);

  DispatchMessage(&stMsg);

  }

  }

  return stMsg.wParam;

  }

  rsrc.rc

  //#include "resource.h"

  #include <windows.h>

  #define IDC_EDIT 3000

  #define IDC_BUTTON 3001

  #define IDC_EXIT 3002

  #define IDM_GETTEXT 32000

  #define IDM_CLEAR 32001

  #define IDM_EXIT 32003

  MyDialog DIALOG 10, 10, 205, 60

  STYLE 0x0004 | DS_CENTER | WS_CAPTION | WS_MINIMIZEBOX |

  WS_SYSMENU | WS_VISIBLE | WS_OVERLAPPED | DS_MODALFRAME | DS_3DLOOK

  CAPTION "Our First Dialog Box"

  CLASS "DLGCLASS"

  BEGIN

  EDITTEXT IDC_EDIT, 15,17,111,13, ES_AUTOHSCROLL | ES_LEFT

  DEFPUSHBUTTON "Say Hello", IDC_BUTTON, 141,10,52,13

  PUSHBUTTON "E&xit", IDC_EXIT, 141,26,52,13, WS_GROUP

  END

  MyMenu MENU

  BEGIN

  POPUP "Test Controls"

  BEGIN

  MENUITEM "Get Text", IDM_GETTEXT

  MENUITEM "Clear Text", IDM_CLEAR

  MENUITEM "", , 0x0800 /*MFT_SEPARATOR*/

  MENUITEM "E&xit", IDM_EXIT

  END

  END

发表评论

评论列表