reactos操作系统实现(176)
MessageBox函数是一个非常简单提示性窗口函数,那么它是怎么实现显示窗口的呢?现在就来分析它的实现代码,如下:
#001 int
#002 WINAPI
#003 MessageBoxW(
#004 HWND hWnd,
#005 LPCWSTR lpText,
#006 LPCWSTR lpCaption,
#007 UINT uType)
#008 {
在这里主要调用函数MessageBoxExW来实现。
#009 return MessageBoxExW(hWnd, lpText, lpCaption, uType, LANG_NEUTRAL);
#010 }
MessageBoxExW函数实现如下:
#001 int
#002 WINAPI
#003 MessageBoxExW(
#004 HWND hWnd,
#005 LPCWSTR lpText,
#006 LPCWSTR lpCaption,
#007 UINT uType,
#008 WORD wLanguageId)
#009 {
定义一个消息框的结构。
#010 MSGBOXPARAMSW msgbox;
#011
设置结构大小,以便实现不同版本兼容。
#012 msgbox.cbSize = sizeof(msgbox);
设置本窗口属于那个窗口的句柄。
#013 msgbox.hwndOwner = hWnd;
设置进程实例为空。
#014 msgbox.hInstance = 0;
设置提示性的文字。
#015 msgbox.lpszText = lpText;
窗口显示的标题。
#016 msgbox.lpszCaption = lpCaption;
窗口显示的类型。
#017 msgbox.dwStyle = uType;
窗口图标为空。
#018 msgbox.lpszIcon = NULL;
窗口帮助索引为空。
#019 msgbox.dwContextHelpId = 0;
窗口回调函数也为空。
#020 msgbox.lpfnMsgBoxCallback = NULL;
不同的语言显示。
#021 msgbox.dwLanguageId = wLanguageId;
#022
调用函数MessageBoxTimeoutIndirectW进一步显示。
#023 return MessageBoxTimeoutIndirectW(&msgbox, (UINT)-1);
#024 }