2009-12-17 2 views
0

Я использую ShowWindow из user32.dll, чтобы отображать всплывающие окна в стиле посыльного (всегда сверху, не краду фокус), но я не могу заставить их ответить. Кажется, что в моей новой форме отсутствует messageloop, и поэтому не может нарисовать ее элементы управления или реагировать на ввод.ShowWindow and messageloop

Я попытался создать форму в фоном, но это, похоже, не помогает (форма все еще остается невосприимчивой).

Если я показываю форму с помощью Application.Run (myForm), я получаю messageloop и отвечающую форму, но не всегда на вершине + функция do-not-steal-focus.

Так что мой вопрос: как мне создать messageloop для моей формы?

+0

На данный момент я перейду с Application.DoEvents. Это не самое элегантное решение, но единственное, что я могу придумать. – Morri

ответ

1

Возможно, вы захотите проверить this SO сообщение о том, как показать форму без кражи фокуса. Это должно помочь
Далее вниз в ответах вы можете увидеть:

protected override bool ShowWithoutActivation 
{ 
    get 
    { 
     return true; 
    } 
} 

Тогда вобщ form.Show(), и вы должны получить сообщение насос с неактивным окном.

+0

Это использует ShowWindow, который не дает мне messageloop, и созданная форма ничего не делает. – Morri

+0

Я добавил раздел формы ответа, который должен работать без ShowWindow, который даст вам сообщение pump – SwDevMan81

+0

Я также понял, что я могу сделать Application.Run() после ShowWindow, чтобы получить сообщение для моей формы. – Morri

Смежные вопросы