开发者

How to let the parent window of a child window (a.k.a. owned window) stay active with winapi?

开发者 https://www.devze.com 2023-04-02 05:20 出处:网络
I am writing a small C application using winapi. The开发者_C百科re I\'ve got a window with a child window (toolbox). I am able to keep it inside this window and so on, but my question is: How to keep

I am writing a small C application using winapi. The开发者_C百科re I've got a window with a child window (toolbox). I am able to keep it inside this window and so on, but my question is: How to keep the main window active, if the child window gets focused?

The main window gets grayed out in this moment.

The windows get created by:

hMainWindow = DialogBoxParam(.......);
hChildWindow = CreateDialogParam(..., hMainWindow, ...); 
ShowWindow (hChildWindow, SW_SHOW);

Here a little image of the behaviour of the two windows:

How to let the parent window of a child window (a.k.a. owned window) stay active with winapi?


I've found out that simply creating it as WS_CHILD and explicitly NOT as WS_POPUP solves that. It also turns the absolute window coordinates to relative ones so that I dont have to care about the window position anymore by moving the parent window.

// Solved


Create the child window as a modeless dialog box instead of a modal one. So instead of using DialogBox, use CreateDialog


Sorry, that's just the way Windows works: one active window at a time.

You can see this in Visual Studio if you bring up Find and Replace as a tool window, you'll see that it gets activated and the main VS window goes inactive.

Trying to have them both active at the same time could confuse users and accessibility tools like screen readers.

0

精彩评论

暂无评论...
验证码 换一张
取 消