请输入您要查询的百科知识:

 

词条 DialogBoxParam
释义

定义

函数功能:该函数根据对话框模板资源创建一个模态的对话框。在显示对话框之前,函数把一个应用程序定义的值作为WM_INITDIALOG消息的IParam参数传到对话框过程,应用程序可用此值来初始化对话框控制。

函数原型:int DialogBoxParam(HINSTANCE hlnstance,LPCTSTR IpTemplateName,HWND hWndParent, DLGPROC IPDialogFunc,LPARAM dwlnitParam);

参数:

hlnstance:标识一个模块的事例,该模块的可执行文件含有对话框模板。

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

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

IpDirlogFunc:指向对话框过程的指针。有关更详细的关于对话框过程的信息,请参见DialogProc。

dwlnitaram:指定传递到WM_INITDIALOG消息的IParam参数中的对话框过程的值。

返回值:如果函数调用成功则返回值为在对函数EndDialog的调用中的nResult参数,该EndDialog函数用于中止对话框。如果函数调用失败,则返回值为C1。若想获得错误信息,请调用GetLastError函数。

备注:DialogBoxParam函数用CreateWindowEx函数创建对话框。然后把一个WM_INITDIALOGG消息传递到对话框过程。如果模板指定DS_SETFONT类型,DialogBoxParam函数把一个WM_SETFONT消息传递到对话框过程。(不管模板是否指定WS_VISIBLE类型),函数显示对话框使拥有窗口失效,且为对话框启动它本身的消息循环来检取和传递消息。当对话框应用程序调用EndDialog函数时,DialogBoxParam函数清除对话框中止消息循环;使拥有窗口生效(如果以前有效),且返回函数EndDialog的调用中的nReSUlt参数。Windows 95和以后版本:系统可支持每个对话框模板最多为255个控制。为把多于255个控制放入对话框,可以在WM_INITDLALOG消息处理器中创建控制,而不是把它们放入模板中。Windows CE:IPTemplateName参数指向的对话框模板中DLGTEMPLATE结构并不支持所有的类型。

速查: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

随便看

 

百科全书收录4421916条中文百科知识,基本涵盖了大多数领域的百科知识,是一部内容开放、自由的电子版百科全书。

 

Copyright © 2004-2023 Cnenc.net All Rights Reserved
更新时间:2025/1/4 2:51:19