Компактная структура - после закрытия CaptureCameraDialog держать модальное окно перед панелью окон - PullRequest
0 голосов
/ 18 апреля 2011

Я работаю над приложением для Windows Mobile. Я создал мастера, который использует модальное окно, так что панель окон скрыта. На одном из этапов работы мастера требуется сделать снимок. После запуска CaptureCameraDialog панель окон появляется и остается даже после закрытия CaptureCameraDialog. Есть ли способ вернуть мою диалоговую форму перед панелью окон?

1 Ответ

0 голосов
/ 19 апреля 2011

В конце концов мне удалось найти в сети какой-то код, который делал то, что я искал. Вот оно:

public partial class myForm : Form
{
public myForm()
{
   InitializeComponent();
        this.GotFocus += delegate(object sender, EventArgs args)
                             {
                                 //var intPtr = FindWindow("CaptureReturnForm", "");
                                 SetForegroundWindow(GetFocus());
                                 bool result = SHFullScreen(GetFocus(), SHFS_HIDESTARTICON |
                                 SHFS_HIDETASKBAR | SHFS_HIDESIPBUTTON); // 0x0020);

                             };


    }

    [DllImport("coredll.dll")]
    private static extern IntPtr FindWindow(string lpClassName, string lpWindowName);
    [DllImport("coredll.dll", EntryPoint = "SetForegroundWindow")]
    private static extern int SetForegroundWindow(IntPtr hWnd);
    [DllImport("coredll.dll")]
    internal static extern IntPtr GetFocus();
    [DllImport("aygshell.dll")]
    internal static extern bool SHFullScreen(IntPtr hWnd, uint dwState);

    const uint SHFS_SHOWTASKBAR = 0x1;
    const uint SHFS_HIDETASKBAR = 0x2;
    const uint SHFS_SHOWSIPBUTTON = 0x4;
    const uint SHFS_HIDESIPBUTTON = 0x8;
    const uint SHFS_SHOWSTARTICON = 0x10;
    const uint SHFS_HIDESTARTICON = 0x20;
    const int HWND_TOPMOST = -1;
    const int HWND_NOTOPMOST = -2;

    const uint SWP_SHOWWINDOW = 0x40;
    const uint SM_CXSCREEN = 0x0;
    const uint SM_CYSCREEN = 0x1;
    private const int HHTASKBARHEIGHT = 26;
}
...