Windows Modal Dialog Focus Problem
9 отговора
842 прегледа
Windows Modal Dialog Focus Problem
При стартиран модален диалог, потребителят губи фокуса например с Алт + Таб. В последствие фокусът бива върнат, но се показва само модалният диалог, а главният прозорец на приложението не се показва. Някакви идеи, защо се получава това?
Редактирано от expeler на
така е по идея
докато имаш пуснат модален диалог, приложението ти не може да получава съобщения. а за да се покаже прозореца му все пак трябва да обработи ON_PAINT, нали? ако искаш да ти се появява, то ползвай немодален диалог.
Re: така е по идея
Мда, ама не точно - PAINT event-а се обработва от прозореца, към който е адресиран без значение дали процеса обработващ съобщенията за въпросният прозорец се е забил с модален диалог. Windows пренасочва към модалния диалог само INPUT съобщенията - от клавиатурата и мишката.
как пък не
първо - модален диалог може да се пусне САМО от нишката на съобщенията на главния прозорец. много ясно че щом нишката за съобщения ти е спряла върху нещо си, то никакви съобщения не можеш да получаваш. как ще ги получиш, по торсионната поща ли? второ, не мисля че някакви събщения се пренасочват - просто модалния диалог си пуска собствена помпа за съобщения. естествено е когато фокуса е върху него, да хваща клавиатурата. модалния диалог не е някакъв особен примитив, той е просто прозорец. всеки прозорец може да го накараш да бачка като модален диалог.
Re: Windows Modal Dialog Focus Problem
Провери дали hWndParent параметъра който използваш, когато показваш модалния диалог (примерно с DialogBox( HINSTANCE hInstance, LPCTSTR lpTemplate, HWND hWndParent, DLGPROC lpDialogFunc)) наистина е валиден хендъл на главният ти прозорец, защото ако не е така (примерно използваш NULL) Windows-а няма автоматично да смени Z-order-а на главният ти прозорец така че и той да се вижда в/у другите прозорци, когато отново активираш модалният си диалог.
баси...прав си
безкрайно съм учуден, обаче сега го пробвах и наистина се показва целия джам. значи помпата за съобщения, която модалния диалог пуска, разпраща и до главния джам.
как не съм забелязал до сега. обаче и моите спомени са като на този който отваря темата - като върна фокуса, появява се само диалога. а сега го пробвах не е така, появява се целия процорец, и се извиква OnPaint.
как не съм забелязал до сега. обаче и моите спомени са като на този който отваря темата - като върна фокуса, появява се само диалога. а сега го пробвах не е така, появява се целия процорец, и се извиква OnPaint.
Това е просто,но решава и други "модални" проблеми
Като например ако от попъп на трей иконка се създават ралични (или еднакви:) модални прозорци.
Re: Windows Modal Dialog Focus Problem
Благодаря за отговорите, наистина нормалните модални диалози не се държат така както описах проблема си. Днес цяла сутрин го дебъгвах това, проблема беше в един събкласнат комбо бокс.
I wanna read interesting postingz
I wanna read interesting postingz