reactos操作系统实现(163)
在应用程序里,当创建窗口之后,就需要把窗口显示出来,那么就需要调用函数ShowWindow,具体这个函数是怎么实现的呢?现在就来分析它的实现代码,如下: #001 EXTINLINE BOOL WINAPI #002 ShowWindow(HWND hWnd,int nCmdShow) #003 {
这里直接就调WIN32K.SYS里的代码了。 #004 return NtUserShowWindow(hWnd,nCmdShow); #005 }
内核里实现显示窗口的函数,实现的代码如下: #001 BOOL APIENTRY #002 NtUserShowWindow(HWND hWnd,LONG nCmdShow) #003 { #004 PWINDOW_OBJECT Window; #005 BOOL ret; #006 DECLARE_RETURN(BOOL); #007 USER_REFERENCE_ENTRY Ref; #008 #009 DPRINT("Enter NtUserShowWindow/n");
进入界面临界区代码。 #010 UserEnterExclusive(); #011
通过窗口句柄获取当前窗口的对象。 #012 if (!(Window = UserGetWindowObject(hWnd))) #013 { #014 RETURN(FALSE); #015 } #016
增加窗口的引用计数。 #017 UserRefObjectCo(Window,&Ref);
调用函数co_WinPosShowWindow来显示窗口出来。 #018 ret = co_WinPosShowWindow(Window,nCmdShow);
减少窗口的引用计数。 #019 UserDerefObjectCo(Window); #020 #021 RETURN(ret); #022 #023 CLEANUP: #024 DPRINT("Leave NtUserShowWindow,ret=%i/n",_ret_);
退出临界区代码。 #025 UserLeave(); #026 END_CLEANUP; #027} (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |