Jump to content

[Resolvido] Não deixar redimensionar a janela


Recommended Posts

Posted

Estou fazer um projecto para a faculdade que consiste em fazer o minesweeper. Esta ser desenvolvido em C++ e OpenGl.

O que eu gostava de saber é se existe alguma maneira de fazer desaparecer ou desactivar o botao maximizar da janela onde vai abrir o jogo.

Cumprimentos e Obrigado

Posted

Estou fazer um projecto para a faculdade que consiste em fazer o minesweeper. Esta ser desenvolvido em C++ e OpenGl.

O que eu gostava de saber é se existe alguma maneira de fazer desaparecer ou desactivar o botao maximizar da janela onde vai abrir o jogo.

Cumprimentos e Obrigado

pois ja somos 2....  eu ando a trabalhar em C++ / Opengl, já fiz 3 trabalhos e em todos dava-me jeito ter uma opção para não deixar redimensionar a janela.... não consegui  👍

já agora deixo aqui o link do meu jogo do galo fiz... jogo do galo em C++/opengl

gostaria de ver depois o teu resultado final....  😄

já agora usas que biblioteca? eu só posso usar o glut.h  😛   que mau...o glaux. é bem melhor, tem mais coisas....  :dontgetit:

Caso descobras a solução para a nossa duvida... diz a solução ...

Obrigada

Tofas

Posted

tambem so uso a glut.

Depois ponho este e o segundo que estou fazer. no outro tambem fazia jeito o que perguntei mas como nao achei paciencia. Tambem para aquele programa não era necessario.

Mas neste é. Vamos la ver o que se consegue. Cumprimentos

Posted

A funçao de Opengl que cria a janela so aceita um parametro (ponteiro para char) que é o nome da janela.

Ja procurei no google por alguma funçao de opengl para fazer o que quero mas ate agora nada..

Posted

Em princípio bastará colocares este código:

	HWND hWnd=FindWindow(TEXT("GLUT"), TEXT("NOME DA JANELA PASSADO A glutCreateWindow()"));
LONG gwl=GetWindowLong(hWnd, GWL_STYLE);
gwl&=(~WS_MAXIMIZEBOX);
SetWindowLong(hWnd, GWL_STYLE, gwl);

imediatamente antes da chamada à função glutMainLoop() (tendo o cuidado de alterar o nome da janela na 1ª linha 😄 )

Desaparecido.

Posted

Em princípio bastará colocares este código:

	HWND hWnd=FindWindow(TEXT("GLUT"), TEXT("NOME DA JANELA PASSADO A glutCreateWindow()"));
LONG gwl=GetWindowLong(hWnd, GWL_STYLE);
gwl&=(~WS_MAXIMIZEBOX);
SetWindowLong(hWnd, GWL_STYLE, gwl);

imediatamente antes da chamada à função glutMainLoop() (tendo o cuidado de alterar o nome da janela na 1ª linha 😄 )

Muito bom mesmo, funciona perfeitamente  😁

Eu também na altura em que tinha gráf. comp. não sabia como se fazia.

Cumpr. brink@ero      😉

Posted

Em princípio bastará colocares este código:

	HWND hWnd=FindWindow(TEXT("GLUT"), TEXT("NOME DA JANELA PASSADO A glutCreateWindow()"));
LONG gwl=GetWindowLong(hWnd, GWL_STYLE);
gwl&=(~WS_MAXIMIZEBOX);
SetWindowLong(hWnd, GWL_STYLE, gwl);

imediatamente antes da chamada à função glutMainLoop() (tendo o cuidado de alterar o nome da janela na 1ª linha 😄 )

ehehhe 😁

é mesmo isso que pretendo... fixe!!  😉

obrigada...  😛

Posted

Outras duvidas:

        Se poderem tambem para fazer desaparecer o botao de fechar. ( Este já descobri)

        Para criação de uma nova janela, isto é, alem da janela main uma segunda.

Posted

        Se poderem tambem para fazer desaparecer o botao de fechar. ( Este já descobri)

Então posta aí o que é preciso que eu não cheguei a nenhuma conclusão :😉 Só consegui fazer desaparecer os 3 botões...

        Para criação de uma nova janela, isto é, alem da janela main uma segunda.

Suponho que para criação de outra janela num mesmo programa, tenhas que criar um novo thread...

Desaparecido.

Posted

Como isto não aparece nenhum dos botoes

	HWND hWnd=FindWindow(TEXT("GLUT"), TEXT("Projecto de EDA - MineSweeper"));
LONG gwl=GetWindowLong(hWnd, GWL_STYLE);
gwl&=(~WS_SYSMENU);
SetWindowLong(hWnd, GWL_STYLE, gwl);
Posted

Certo. Aí já tinha chegado. Pensei que querias ficar com o botão de minimizar activo. Mas isso é mt mais complicado. Penso que estou a chegar lá agora... Já digo resultados, se chegar a tê-los!

EDIT

Algumas centenas de linhas de código depois, e muitas páginas do MSDN lidas... finalmente encontrei a forma de desligar o botão de fechar a janela, mantendo os outros activos (maximizar e minimizar):

	HWND hWnd=FindWindow(TEXT("GLUT"), TEXT("NOME DA JANELA PASSADO A glutCreateWindow()"));
LONG gwl=GetWindowLong(hWnd, GWL_STYLE);
//para desligar os outros botoes, descomentar as duas linhas abaixo
//gwl&=(~WS_MAXIMIZEBOX)&(~WS_MINIMIZEBOX);
//SetWindowLong(hWnd, GWL_STYLE, gwl);

//apanhar o menu do canto esquerdo da barra de titulo
HMENU sysMenu = GetSystemMenu(hWnd, false);

//ver se o menu contem comandos
int mnucnt;
if ((mnucnt = GetMenuItemCount(sysMenu))>0)
	//por a opcao "Fechar" a cinzento
	EnableMenuItem(sysMenu, SC_CLOSE, MF_BYCOMMAND | MF_GRAYED);

Desaparecido.

  • 1 month later...
Posted

então e impedir de dimensionar a janela ?

Aqui está o modo como fazes desactivar o botão maximizar já respondido:

Em princípio bastará colocares este código:

	HWND hWnd=FindWindow(TEXT("GLUT"), TEXT("NOME DA JANELA PASSADO A glutCreateWindow()"));
LONG gwl=GetWindowLong(hWnd, GWL_STYLE);
gwl&=(~WS_MAXIMIZEBOX);
SetWindowLong(hWnd, GWL_STYLE, gwl);

imediatamente antes da chamada à função glutMainLoop() (tendo o cuidado de alterar o nome da janela na 1ª linha 😄 )

Se quiseres que a janela tenha sempre a mesma dimensão, sempre podes pegar na função do openGL que é chamada quando tentas redimensionar e forças o tamanho original da janela.

Cumpr. bk@ero  😄

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.