nx的ufun函数中提供了一个非模态的消息框:UF_UI_display_nonmodal_msg() ,这个消息框不会阻塞主线程,并且可以指定消息框的弹出位置。 使用这个消息框,可以向用户展示一些中等重要的提示信息。非常好用 ! 但是在主对话框结束时,这个消息框并不会随着对话框一起关闭,程序结束后还需要用户手动点击关闭就显得很笨, 我们可以通过WindowAPI来关闭它。
C#代码:
//定义UFUN函数入口
UFSession theUFsession = UFSession.GetUFSession();
//消息框的标题建议特殊一些,因为WindowsAPI是通过窗口名称来找句柄的,名称过于普通可能会引起误杀
theUfSession.Ui.DisplayNonmodalMsg("非模态消息框标题", "非模态消息框显示文本", 0);
Thread.Sleep(1000); //线程休眠1000ms
IntPtr wnd_handle = IntPtr.Zero;
//由于非模态消息框可能会打开许多个相同窗口,所以使用while循环查找并Destroy
while ((wnd_handle = Win32Api.WindowsAPI.FindWindow(null, "非模态消息框标题")) != IntPtr.Zero)
{
Win32Api.WindowsAPI.DestroyWindow(wnd_handle);
}
C++代码:
UF_UI_display_nonmodal_msg("非模态消息框标题" , "非模态消息框显示文本" , 0);
Sleep(1000);
HWND wnd_handle = 0;
while( 0 != (wnd_handle = FindWindowA(0 , "非模态消息框标题")) )
{
DestroyWindow(wnd_handle);
}