在程序之间切换时重新绘制问题

Sco*_*007 7 .net c# c++ repaint

MyApp(.NET c#)由OtherApp(c ++)触发.

触发后,我的应用程序将占据整个屏幕并为用户提供两个选项.一个选项退出MyApp并返回到OtherApp主屏幕.第二个选项退出初始屏幕并显示另一个用户输入屏幕 - 输入后退出并返回到OtherApp.

有时候,OtherApp屏幕不会重新绘制(只能看到背景,而不能看到按钮) - 我不能轻易复制它(当我这样做时看起来像是侥幸),但我已经在很多应用程序上看到了它.

有没有办法MyApp可以强制屏幕重绘OtherApp?

可能是什么导致了这个?

澄清 - 其他应用程序不是我们的.我们的客户使用OtherApp.MyApp由filewatcher事件触发.当我们看到一个文件时,我们会处理它.如果这是我们要查找的文件,我们会为用户提供两个选项.OtherApp不知道MyApp存在.

dka*_*man 3

尝试获取 OtherApp 主窗口的 hwnd 并使整个内容无效:

[DllImport("user32.dll")]
static extern bool InvalidateRect(IntPtr hWnd, IntPtr lpRect, bool bErase);

[DllImport("user32.dll", SetLastError = true)]
static extern IntPtr FindWindow(string lpClassName, string lpWindowName);

static void InvalidateOtherApp()
{
  IntPtr hWnd = FindWindow(null, "OtherApp's Main Window's Title");
  if (hWnd != IntPtr.Zero)
    InvalidateRect(hWnd, IntPtr.Zero, true);
}
Run Code Online (Sandbox Code Playgroud)