一般来说,showmodel就够了。 实在需要的话在SetForegroundWindow前加入以下语句。RedrawWindow(0,nil,0,RDW_ERASE or RDW_INVALIDATE or RDW_ALLCHILDREN);
说明: RedrawWindow 导致更新特定的矩形或者给定窗口的区域。不同的操作允许你控制更新过程。BOOL RedrawWindow( HWND hWnd, // handle of window CONST RECT *lprcUpdate, // address of structure with update rectangle HRGN hrgnUpdate, // handle of update region UINT flags // array of redraw flags );
实在需要的话在SetForegroundWindow前加入以下语句。RedrawWindow(0,nil,0,RDW_ERASE or RDW_INVALIDATE or RDW_ALLCHILDREN);
RedrawWindow 导致更新特定的矩形或者给定窗口的区域。不同的操作允许你控制更新过程。BOOL RedrawWindow(
HWND hWnd, // handle of window
CONST RECT *lprcUpdate, // address of structure with update rectangle
HRGN hrgnUpdate, // handle of update region
UINT flags // array of redraw flags
);
参数:
HWND: 指定窗口的句柄。如果这个参数是NULL,则更新桌面窗口。lprcUpdate: 到RECT结构的指针。这个矩形包含要更新的客户区的坐标。这个参数可以是NULL。如果这个参数和hrgnUpdate都是NULL,则假设为整个客户区。hrgnUpdate: 指定要更新的区域句柄。如果这个参数不是NULL,则将忽略lprcUpdate。如果这个参数和lprcUpdate都是NULL,则假设为整个客户区。flags: 指定定义如何影响窗口,如何进行重绘和影响哪一个窗口的不同标志。对于flags的值参数如下:无效标志RDW_ERASE 受到影响的窗口将在重新绘制的时候收到WM_ERASEBKGND消息。也必须指定RDW_INVALIDATE标志。
RDW_FRAME 导致和更新区域相交的非客户区部分收到WM_NCPAINT消息。也必须指定RDW_INVALIDATE标志。
RDW_INTERNALPAINT 强迫向受到影响的窗口发送WM_PAINT消息,而无论是否存在无效的区域。
RDW_INVALIDATE 导致将hrgnUpdate 或者lprcUpdate所定义的区域标志为无效。如果两个参数者是NULL,则整个客户区是无效的。有效标志RDW_NOERASE 导致忽略任何挂的WM_ERASEBKGND消息。
RDW_NOFRAME 导致忽略任何挂的WM_NCPAINT消息。也必须指定RDW_VALIDATE消息。
RDW_NOINTERNALPAINT 导致忽略任何挂的WM_PAINT消息。如果产生的更新区域不是NULL,则仍然将发出WM_PAINT。
RDW_VALIDATE 导致hrgnUpdate 或者lprcUpdate所定义的区域标志为有效。任何挂起的内部WM_PAINT消息仍然将发送给窗口。重新绘制标志RDW_ERASENOW 导致完成任何挂起的WM_NCPAINT和WM_ERASEBKGND消息。
RDW_UPDATENOW 导致在从这个函数返回之前,完成任何挂起的WM_NCPAINT,WM_ERASEBKGND和WM_PAINT消息。子窗口控制标志RDW_ALLCHILDREN 导致影响所有子窗口。
RDW_NOCHILDREN 导致不影响所有子窗口。返回值 如果成功,则返回非0,否则返回0。
再SetForegroundWindow