Pergunta

Existe uma maneira de criar um modal caixa de diálogo em C ++ MFC que sempre fica em cima das outras janelas na aplicação? Estou pensando como o tipo de diálogo Localizar no Visual Studio 2005 -., Onde ele permanece no topo, mas você ainda pode editar o texto subjacente

(Se faz alguma diferença, não é MDI, é um aplicativo com base em diálogo)

Foi útil?

Solução

A partir Nish :

Fazendo sua estadia de diálogo em cima

Não Você já viu programas que têm uma opção "always-stay-on-top"? Bem a coisa inacreditável é que você pode tornar a sua estadia de diálogo no topo com apenas uma linha de código. Basta colocar o seguinte linha no seu de classe de diálogo OnInitDialog () função.

SetWindowPos(&this->wndTopMost,0,0,0,0,SWP_NOMOVE|SWP_NOSIZE);

Basicamente o que estamos fazendo é usar os SetWindowPos função para alterar o Z-ordem do nosso janela de diálogo. Nós tornar a estadia de diálogo em cima de tudo outras janelas, movendo-o para o topo da ordem Z. Agora mesmo quando você ativar alguma outra janela, a nossa janela vai permanecer no topo. Mas eu aconselho Para se certificar de que você sabe exatamente o que você estão fazendo quando você faz isso, para ele pode irritar as pessoas, se eles não podem obter sua janela para fora do caminho quando eles quero fazer isso.

Como você mencionou nos comentários, a linha acima faz o sit janela no topo de cada aplicação. Você vai precisar fazer

SetWindowPos(&this->wndTop,0,0,0,0,SWP_NOMOVE|SWP_NOSIZE);

Para fazer um sit janela em cima de apenas a sua aplicação.

-Adam

Outras dicas

A resposta aceita falha para Windows 7 ou acima. (Ou talvez o seu mim) Mas fazer o diálogo não modal como pop-up em vez de resolve criança de TI. Ele agora fica posicionado wrt janela de diálogo principal, mas você pode escrever código para qualquer constrangimento. Usando os há de fronteira ou barra superior torna uma simples janela.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top