Ir ao conteúdo

Full Screen em C


Xinke

Posts recomendados

Postado

Galera, eu to fazendo um programinha, mas eu quero q quando ele for executado ele ja abra em full screen, sem eu ter q ir em opções e colocar la.

tipo, quero mandar pra um amigo e quando ele executar, ja aparecer full screen.

Alguem pode me dizer q comando eu devo colocar no meu codigo pra isso acontecer?

valeu galera

Postado

Se você estiver usando o Dev-C++, inclua a biblioteca windows.h e coloque isso no início do código:

keybd_event ( VK_MENU, 0x36, 0, 0 ); 
keybd_event ( VK_RETURN, 0x1C, 0, 0 );
keybd_event ( VK_RETURN, 0x1C, KEYEVENTF_KEYUP, 0 );
keybd_event ( VK_MENU, 0x38, KEYEVENTF_KEYUP, 0 );

A código acima envia um Alt+Enter para o console.

----------------------------------------------------------------------

Se você estiver utilizando o Turbo C

Entre e saia do modo gráfico. A tela se maximiza automaticamente quando o modo gráfico é iniciado.

Postado
Se você estiver usando o Dev-C++, inclua a biblioteca windows.h e coloque isso no início do código:

keybd_event ( VK_MENU, 0x36, 0, 0 ); 
keybd_event ( VK_RETURN, 0x1C, 0, 0 );
keybd_event ( VK_RETURN, 0x1C, KEYEVENTF_KEYUP, 0 );
keybd_event ( VK_MENU, 0x38, KEYEVENTF_KEYUP, 0 );

A código acima envia um Alt+Enter para o console.

----------------------------------------------------------------------

valeu cara, deu certinhu aqui.

Mas tipo, teria como você me explicar porque isso acontece?

Postado

O keybd_event cria um evento do teclado.

O primeiro parâmetro indica o código da tecla. VK_MENU = Tecla Alt e VK_RETURN = Tecla Enter (veja a tabela de teclas aqui)

O segundo parâmetro indica o código de escaneamento do hardware, veja a tabela aqui.

O terceiro parâmetro indica o evento, por exemplo o KEYEVENTF_KEYUP indica o evento de quando o tecla é solta (liberada).

O quarto parâmetro é para informações adicionais.

Aqui você encontra a descrição desta função.

  • Membro VIP
Postado

Se eu estava perguntando deve ser porque nao tentei.

Você já tentou fazer isso??? ... ... ... ??? ... ... ... ???
Postado
O keybd_event cria um evento do teclado.

O primeiro parâmetro indica o código da tecla. VK_MENU = Tecla Alt e VK_RETURN = Tecla Enter (veja a tabela de teclas aqui)

O segundo parâmetro indica o código de escaneamento do hardware, veja a tabela aqui.

O terceiro parâmetro indica o evento, por exemplo o KEYEVENTF_KEYUP indica o evento de quando o tecla é solta (liberada).

O quarto parâmetro é para informações adicionais.

Aqui você encontra a descrição desta função.

valeu cara, era isso mesmo que eu queria.

  • 2 meses depois...
Postado
O keybd_event cria um evento do teclado.

O primeiro parâmetro indica o código da tecla. VK_MENU = Tecla Alt e VK_RETURN = Tecla Enter (veja a tabela de teclas aqui)

O segundo parâmetro indica o código de escaneamento do hardware, veja a tabela aqui.

O terceiro parâmetro indica o evento, por exemplo o KEYEVENTF_KEYUP indica o evento de quando o tecla é solta (liberada).

O quarto parâmetro é para informações adicionais.

Aqui você encontra a descrição desta função.

Eu tenteii muito, mas nao consegui fazer com que a tela apenas maximize (não é full screen, e sim apenas maximizar).

Eu sei que o atalho no teclado é ALT + SPACE + x

Se puder dar uma força e postar aí. porque já tentei muito mesmo. Não foi

por falta de força de vontade :P

valeu

Postado
Eu tenteii muito, mas nao consegui fazer com que a tela apenas maximize (não é full screen, e sim apenas maximizar).

Eu sei que o atalho no teclado é ALT + SPACE + x

Se puder dar uma força e postar aí. porque já tentei muito mesmo. Não foi

por falta de força de vontade :P

valeu

GALERA.. QUASE CONSEGUI //depois de algumas horas tentando

eu fiz assim:

{

keybd_event ( VK_MENU, 0x38, 0, 0 );

keybd_event ( VK_SPACE, 0x39, 0, 0 );

keybd_event(0x58,0,0,0);

keybd_event ( VK_MENU, 0x38, KEYEVENTF_KEYUP, 0 );

keybd_event ( VK_SPACE, 0x39, KEYEVENTF_KEYUP, 0 );

keybd_event(0x58,0,KEYEVENTF_KEYUP,0);

}

O que acontece é o seguinte.. Quando eu compilo e executo direto do compilador.. na hora.. ele maximiza do jeito que eu quero.

mas quando eu vou no executavel depois.. e executo, ele só executa as duas primeiras teclas ALT + SPACE . Falta executar o X então deve ser só ali o meu problema. Se alguem puder dar uma força.. valeu

valeu

Postado

Olá veiow.

Você não vai conseguir maximizar a tela dessa forma, pois o atalho que você sugeriu é utilizado pelo gerenciador de janelas do windows, ele não é um "comando" passado ao prompt.

O que você pode fazer é utilizar a função system e enviar o comando MODE, assim:

system("MODE con cols=100 lines=50");

Talvez o único problema que encontra fazendo isso é que você altera os limites de linhas e colunas.

Postado
Olá veiow.

Você não vai conseguir maximizar a tela dessa forma, pois o atalho que você sugeriu é utilizado pelo gerenciador de janelas do windows, ele não é um "comando" passado ao prompt.

O que você pode fazer é utilizar a função system e enviar o comando MODE, assim:

system("MODE con cols=100 lines=50");

Talvez o único problema que encontra fazendo isso é que você altera os limites de linhas e colunas.

Crudo

Na verdade o que eu já tinha feito ali deu certo. Ele não executava a tecla X porque não dava tempo de abrir o prompt. + eu resolvi isso criando um laço de repetição no inicio do meu codigo, contando de 1 até 10 para dar tempo de executar a tecla X.

Más o sua dica ainda valeu, porque usei para diminuir o tamanho da tela na vertical. Obrigado mesmo :]

  • mês depois...
Postado

Galera, tô com um probleminha!

Meu programa tá no Fullscreen, mas toda vida que alguém fala comigo no msn, ele sai do Fullscreen e vai pra tela pequena...alguém sabe como eu faço pra segurar no Fullscreen?

O keybd_event cria um evento do teclado.

O primeiro parâmetro indica o código da tecla. VK_MENU = Tecla Alt e VK_RETURN = Tecla Enter (veja a tabela de teclas aqui)

O segundo parâmetro indica o código de escaneamento do hardware, veja a tabela aqui.

O terceiro parâmetro indica o evento, por exemplo o KEYEVENTF_KEYUP indica o evento de quando o tecla é solta (liberada).

O quarto parâmetro é para informações adicionais.

Aqui você encontra a descrição desta função.

E mais uma coisa, eu não entendi direito esse segundo parâmetro, pra que ele serve!

  • Membro VIP
Postado

Uma solução talvez não muito inteligente seria criar uma função para estabelecer ou não o modo tela-cheia.Dentro da função você colocaria um loop semi-infinito, onde só pararia de executar a rotina dada se alguma tecla ou evento fosse requisitado(se você apertasse ESC, por exemplo).Dessa forma, você restringe o encerramento da rotina de tela-cheia a um comando seu.Abraços.

Galera, tô com um probleminha!

Meu programa tá no Fullscreen, mas toda vida que alguém fala comigo no msn, ele sai do Fullscreen e vai pra tela pequena...alguém sabe como eu faço pra segurar no Fullscreen?

E mais uma coisa, eu não entendi direito esse segundo parâmetro, pra que ele serve!

Postado
Uma solução talvez não muito inteligente seria criar uma função para estabelecer ou não o modo tela-cheia.Dentro da função você colocaria um loop semi-infinito, onde só pararia de executar a rotina dada se alguma tecla ou evento fosse requisitado(se você apertasse ESC, por exemplo).Dessa forma, você restringe o encerramento da rotina de tela-cheia a um comando seu.Abraços.

Mas como eu posso fazer com que fiquei "rodando" uma função, enquanto eu tô utilizando as outras funções do programa?

  • Membro VIP
Postado

Me passe o seu código. Poste-o usando as tags de spoiler, pois, dependendo do que você estiver fazendo, temos diferentes adequações.Abraços.

Mas como eu posso fazer com que fiquei "rodando" uma função, enquanto eu tô utilizando as outras funções do programa?
Postado

#include <stdio.h>

#include <stdlib.h>

#include <string.h>

#include <conio.h>

#include <windows.h>

struct reg{

char nome[50];

int tel;

};

//Registro com Nome e Telefone

void visio(){

printf(" 0000000 00 \n");

printf(" 0 00 000 00 \n");

printf(" 0 0 00000 0000 00 \n");

printf(" 00 00 0 0 00 00 00 000000000 \n");

printf(" 00 00 0 0 00 00 0 \n");

printf(" 00 00 0 0 00 00 00 00 \n");

printf(" 00 00 0 000 00 00 00 00 \n");

printf(" 00 00 0 00 00 0 00 \n");

printf(" 00 00 0 00 00 0 00 \n");

printf(" 0000 0 00 00 000 000 00 \n");

printf(" 00 0 0 00 00 \n");

printf(" 0 0000 000 \n");

printf(" 0 0 \n");

printf(" 0 0 \n");

}

//Imagem da VISIO

void gravarArquivo(struct reg a[],FILE *arq,int x){

fwrite(&a[x].nome,sizeof(a[x].nome),1,arq);

fwrite(&a[x].tel,sizeof(a[x].tel),1,arq);

}

void funcAuxT(struct reg a[],int tel,int i){

int auxTel;

int j = 0;

int x = 0;

while(j<i){

auxTel = a[j].tel;

if(tel < 10){

auxTel = auxTel/10000000;

}

if((tel>=10) && (tel<100)){

auxTel = auxTel/1000000;

}

if((tel>=100)&&(tel<1000)){

auxTel = auxTel/100000;

}

if((tel>=1000)&&(tel<100000)){

auxTel = auxTel/10000;

}

if((tel>=100000)&&(tel<1000000)){

auxTel = auxTel/1000;

}

if((tel>=1000000)&&(tel<10000000)){

auxTel = auxTel/100;

}

if((tel>=10000000)&&(tel<100000000)){

auxTel = auxTel/10;

}

if(auxTel == tel){

printf("Nome: %s\n",a[j].nome);

printf("Telefone: %d\n",a[j].tel);

x++;

}

j++;

}

if(x == 0){

printf("\nNenhum contato localizado\n");

}

}

//Função serve pra pesquisar o Telefone sem que seja completo.

void funcAuxN(struct reg a[],char nome[],int i){

int num = strlen(nome);

char auxCP[50];

char auxC;

int j = 0;

int x = 0;

while(j<i){

if(num != 1){

strncpy(auxCP,a[j].nome,num);

}else{

auxC = a[j].nome[0];

}

if((strcmp(auxCP,nome) == 0)||(auxC == nome[0])){

printf("Nome: %s\n",a[j].nome);

printf("Telefone: %d\n",a[j].tel);

x++;

}

j++;

}

if(x == 0){

printf("\nNenhum contato localizado\n");

}

}

//Função pra pesquisar pelo nome sem que seja completo.

void organizarContatos(struct reg a[]){

int i = 0;

struct reg aux;

while(strcmp(a.nome,"//*") != 0){

i++;

}

for(int j=0;j<i-1;j++){

for(int x=0;x<i-1-j;x++){

if(strcmp(a[x].nome,a[x+1].nome)>0){

aux = a[x];

a[x] = a[x+1];

a[x+1] = aux;

}

}

}

}

int pesqtel(struct reg a[], int tel, int i){

int j=i-1;

int r = 0;

while((j>=0)&&(r==0)){

if(tel == a[j].tel){

r = 1;

j--;

}

else{

j--;

}

}

return r;

}

//Função que pesquisa se o numero ja foi registrado!

void cadastrarContato(struct reg a[]){

int i=0;

char cod;

FILE*arq;

arq = fopen("Agenda.dat","wb");

while(strcmp(a.nome,"//*") != 0){

i++;

}

do{

system("CLS");

fflush(stdin);

printf("Nome: ");

gets(a.nome);

strupr(a.nome);

do{

printf("Telefone: ");

scanf("%d",&a.tel);

if(pesqtel(a,a.tel,i) == 1){

printf("Numero existente, por favor digite outro\n\n");

}

}while(pesqtel(a,a.tel,i) == 1);

printf("\n");

gravarArquivo(a,arq,i);

printf("voce deseja cadastrar mais um contato? s - Sim e n - Nao\n");

scanf(" %c",&cod);

i++;

if(i == 999)

{

printf("agenda cheia");

break;

}

}while((cod == 's')&&(i < 999));

strcpy(a.nome,"//*");

a.tel = 0000000;

gravarArquivo(a,arq,i);

fclose(arq);

}

//Função que cadastra os contatos

char lerOpcao(){

system("CLS");

char x;

fflush(stdin);

printf("\n\n\t\t\t\aEscolha o que deseja fazer: \n");

printf("\t\t\t\20 1 - Cadastrar contato\n");

printf("\t\t\t\20 2 - Retirar contato\n");

printf("\t\t\t\20 3 - Listar contatos\n");

printf("\t\t\t\20 4 - Buscar contato\n");

printf("\t\t\t\20 5 - Editar contato\n");

printf("\t\t\t\20 6 - Sair do Programa\n");

x=getch();

return x;

}

//Menu principal, ativado pelo main.

void retirarContato(struct reg a[]){

system("CLS");

int i = 0, j = 0;

char nome[50];

int tel;

char cod;

int x = 1;

FILE*arq;

arq = fopen("agenda.dat","wr");

while(strcmp(a.nome,"//*") != 0){

i++;

}

printf("Bucar por:\n");

printf("1 - Nome\n");

printf("2 - Telefone\n");

printf("Qualquer outra tecla sai\n");

cod = getch();

switch(cod){

case '1': printf("\nDigite o nome do contato a ser procurado: ");

scanf("%s",&nome);

strupr(nome);

fflush(stdin);

while((strcmp(nome,a[j].nome)!=0)&&(j<i)){

j++;

}

break;

case '2': printf("\nDigite o telefone do contato a ser procurado: ");

scanf("%d",&tel);

fflush(stdin);

while((tel != a[j].tel)&&(j<i)){

j++;

}

break;

default: return;

}

if(j<i){

for(int c=j;c<i;c++){

strcpy(a[j-1+x].nome,a[j+x].nome);

a[j-1+x].tel = a[j+x].tel;

x++;

}

strcpy(a.nome,"");

printf("\nContato excluido\n");

for(int y=0;y<i;y++){

gravarArquivo(a,arq,y);

}

}else{

printf("\nContato nao existe\n");

}

system("Pause");

}

//Como nome já diz, função pra apagar o contato. Onde é procurado pelo número do telefone(Contatos não podem ter o mesmo número)

void listarContatosCadastrados(struct reg a[]){

system("CLS");

int i = 0;

organizarContatos(a);

if(strcmp(a[0].nome,"//*") == 0){

printf("Nao existe nenhum contato cadastrado\n");

}else{

while(strcmp(a.nome,"//*") != 0){

printf("\n\aNome: %s\n",a.nome);

printf("Telefone: %d\n",a.tel);

i++;

}

}

system("Pause");

}

//Listar os contatos registrados.

void buscarContato(struct reg a[]){

system("CLS");

int i = 0;

int j = 0;

int tel;

char nome[50];

char cod;

while(strcmp(a.nome,"//*") != 0){

i++;

}

printf("Bucar por:\n");

printf("1 - Nome\n");

printf("2 - Telefone\n");

printf("Qualquer outra tecla sai\n");

cod = getch();

switch(cod){

case '1': printf("\nDigite o nome do contato a ser procurado: ");

scanf("%s",&nome);

strupr(nome);

funcAuxN(a,nome,i);

break;

case '2': printf("\nDigite o telefone do contato a ser procurado: ");

scanf("%d",&tel);

funcAuxT(a,tel,i);

break;

default: return;

}

/*if(j<i){

while(j<i){

printf("\nNome: ");

puts(a[j].nome);

printf("\nTelefone: %d\n",a[j].tel);

printf("\n");

j++;

}

}else{

printf("\nContato nao localizado\n");

puts(aux[0]);

}*/

system("Pause");

}

//Busca o contato pelo telefone

void editarContato(struct reg a[]){

system("CLS");

FILE*arq;

arq = fopen("agenda.dat","wb");

int i = 0;

int j = 0;

int tel;

char cod;

char nome[50];

while(strcmp(a.nome,"//*") != 0){

i++;

}

printf("Bucar por:\n");

printf("1 - Nome\n");

printf("2 - Telefone\n");

printf("Qualquer outra tecla sai\n");

cod = getch();

switch(cod){

case '1': printf("\nDigite o nome do contato a ser procurado: ");

scanf("%s",&nome);

strupr(nome);

fflush(stdin);

while((strcmp(nome,a[j].nome)!=0)&&(j<i)){

j++;

}

break;

case '2': printf("\nDigite o telefone do contato a ser procurado: ");

scanf("%d",&tel);

fflush(stdin);

while((tel != a[j].tel)&&(j<i)){

j++;

}

break;

default: return;

}

if(j<i){

printf("\nRedigite os campos para serem editados\n");

printf("\nNome: ");

gets(a[j].nome);

strupr(a[j].nome);

printf("\nTelefone: ");

scanf("%d",&a[j].tel);

for(int x=0;x<=i;x++){

gravarArquivo(a,arq,x);

}

fclose(arq);

}else{

printf("\nContato nao localizado\n");

}

}

//Edita o contato em geral

void lerArquivo(struct reg a[]){

FILE*arq;

int i = 0;

if((arq = fopen("agenda.dat","rb")) == NULL){

arq = fopen("agenda.dat","wb");

strcpy(a.nome,"//*");

a.tel = 00000000;

fclose(arq);

}

arq = fopen("agenda.dat","rb");

rewind(arq);

while(!feof(arq)){

fread(&a.nome,sizeof(a.nome),1,arq);

fread(&a.tel,sizeof(a.tel),1,arq);

i++;

}

fclose(arq);

}

int main(){

keybd_event( VK_MENU, 0x36, 0, 0 );

keybd_event( VK_RETURN, 0x1C, 0, 0 );

keybd_event( VK_RETURN, 0x1C, KEYEVENTF_KEYUP, 0 );

keybd_event( VK_MENU, 0x38, KEYEVENTF_KEYUP, 0 );

system("color 1F");

visio();

printf("\n\n\t\t\t\1 - AGENDA ELETRONICA - \1\n");

system("Pause");

struct reg a[1000];

lerArquivo(a);

char op;

do{

//organizarContatos(a);

op = lerOpcao();

switch(op){

case '1': cadastrarContato(a);

break;

case '2': retirarContato(a);

break;

case '3': listarContatosCadastrados(a);

break;

case '4': buscarContato(a);

break;

case '5': editarContato(a);

break;

}

if ((op!='1')||(op!='2')||(op!='3')||(op!='4')||(op!='5')||(op!='6'))

{

printf("opcao invalida tente novamente");

}

}while(!(op=='6'));

system("CLS");

visio();

printf("\n");

printf("\t\t\t\4---O GRUPO VISIO AGRADECE---\4\n");

system("Pause");

}

Desculpa a demora, tinha postado no tópico errado, só vim dá conta agora! =x

  • Membro VIP
Postado

Quando escolho uma das opções de seu menu, o programa retorna um erro.COntudo, pode ser por fala de algum arquivo textual que trabalhe em comum com o exe.Sendo assim,modifique sua main() da seguinte forma:

Código:

int main()

{

while(1)

{

keybd_event( VK_MENU, 0x36, 0, 0 );

keybd_event( VK_RETURN, 0x1C, 0, 0 );

keybd_event( VK_RETURN, 0x1C, KEYEVENTF_KEYUP, 0 );

keybd_event( VK_MENU, 0x38, KEYEVENTF_KEYUP, 0 );

system("color 1F");

visio();

printf("nnttt1 - AGENDA ELETRONICA - 1n");

system("Pause");

struct reg a[1000];

lerArquivo(a);

char op;

while(1)

{

//organizarContatos(a);

op = lerOpcao();

switch(op){

case '1': cadastrarContato(a);

break;

case '2': retirarContato(a);

break;

case '3': listarContatosCadastrados(a);

break;

case '4': buscarContato(a);

break;

case '5': editarContato(a);

break;

case '6': exit(0);/**Fim da execução de forma brusca**/

break;

}

if ((op!='1')||(op!='2')||(op!='3')||(op!='4')||(op!= '5')||(op!='6'))

{

printf("opcao invalida tente novamente");

}

}

system("CLS");

visio();

printf("n");

printf("ttt4---O GRUPO VISIO AGRADECE---4n");

system("Pause");

}

}

Postado

Provavelmente o programa tá retornando um erro por conta do arquivo "banco de dados", por um probleminha no código que eu ainda não ajeitei. Ai é só tu procurar o arquivo agenda.dat que deve tá lado do executável.

E fiz as mudanças no código mas ele continua saindo do FullScreen quando acontece outro evento no computador, como alguém falar no msn.

  • Membro VIP
Postado
Provavelmente o programa tá retornando um erro por conta do arquivo "banco de dados", por um probleminha no código que eu ainda não ajeitei. Ai é só tu procurar o arquivo agenda.dat que deve tá lado do executável.

E fiz as mudanças no código mas ele continua saindo do FullScreen quando acontece outro evento no computador, como alguém falar no msn.

Vou pensar em uma logica diferente.Realmente a minha está falha. Sugere algo?

  • Membro VIP
Postado
Tava pensando num lanço semi-infinito como tu pensou, só que utilizando algum comando do sistema, isso é possível?(Desculpa se falei besteira =x)

Pensei em fazer uma função booleana que verificasse se o modo tela-cheia está ativo.Caso não estiver, chama a função de fullscreen.Foi ver algumas coisas dentro da <windows.h> para a manipulaçao de janelas e depois volto aqui pra você me dar uma ajuda também.Abraços.

  • Membro VIP

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!