词条 | 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条中文百科知识,基本涵盖了大多数领域的百科知识,是一部内容开放、自由的电子版百科全书。