Ir para conteúdo
Fórum Script Brasil
  • 0

Centralizar janela


Hilton J. Marcon

Pergunta

Olá.

Sou novato na programação C++ e iniciei um novo projeto no Code Blocks, Win32 Gui Project.

Compila bonitinho a primeira tela, mas eu gostaria de deixá-la centralizada.

Utilizei o código a seguir:

/* The class is registered, let's create the program*/
    hwnd = CreateWindowEx (
           0,                   /* Extended possibilites for variation */
           szClassName,         /* Classname */
           _T("Aplicação com interface"),       /* Title Text */
           WS_OVERLAPPEDWINDOW, /* default window */
           CW_USEDEFAULT,       /* Windows decides the position */
           CW_USEDEFAULT,       /* where the window ends up on the screen */
           800,                 /* The programs width */
           600,                 /* and height in pixels */
           HWND_DESKTOP,        /* The window is a child-window to desktop */
           NULL,                /* No menu */
           hThisInstance,       /* Program Instance handler */
           NULL                 /* No Window Creation data */
           );

/*Centralizar janela*/
    RECT rect;
    GetWindowRect(hwnd, &rect);
    MoveWindow(hwnd, (GetSystemMetrics(SM_CXSCREEN)-rect.top)/2, (GetSystemMetrics(SM_CYSCREEN)-rect.left)/2, rect.top, rect.left, TRUE);
    

mas não deu muito certo.

Se eu comentar a parte do /*Centralizar janela*/ o form é criado com o tamanho correto.

Mas se eu usar esse código de centralização, a janela realmente fica centralizada, porém, fica com um tamanho muito reduzido.

Alguém poderia me ajudar?

Link para o comentário
Compartilhar em outros sites

4 respostass a esta questão

Posts Recomendados

  • 0

<script type='text/javascript'>window.mod_pagespeed_start = Number(new Date());</script>

Obrigado Jhonas, mas foi a partir desse exemplo que eu fiz o meu código.

Sou novato em programação C++ e não estou conseguindo identificar o problema.

Link para o comentário
Compartilhar em outros sites

  • 0

tente isso

/* The class is registered, let's create the program*/
hwnd = CreateWindowEx (
0, /* Extended possibilites for variation */
szClassName, /* Classname */
_T("Aplicação com interface"), /* Title Text */
WS_OVERLAPPEDWINDOW, /* default window */
CW_USEDEFAULT, /* Windows decides the position */
CW_USEDEFAULT, /* where the window ends up on the screen */
640, /* The programs width */ ===> experimente alterar esse valor
480, /* and height in pixels */ ===> experimente alterar esse valor
HWND_DESKTOP, /* The window is a child-window to desktop */
NULL, /* No menu */
hThisInstance, /* Program Instance handler */
NULL /* No Window Creation data */
);

/*Centralizar janela*/
RECT rect;
GetWindowRect(hwnd, &rect);
MoveWindow(hwnd, (GetSystemMetrics(SM_CXSCREEN)-rect.top)/2, (GetSystemMetrics(SM_CYSCREEN)-rect.left)/2, rect.top, rect.left, TRUE);

====================================================================================

seu código esta diferente desse

case WM_CREATE:
{
RECT rect;
GetWindowRect(hwnd, &rect);


MoveWindow(hwnd, (GetSystemMetrics(SM_CXSCREEN)-rect.top)/2,
(GetSystemMetrics(SM_CYSCREEN)-rect.left)/2, rect.top, rect.left, TRUE);
}


definição da função MoveWindow():


Syntax

BOOL MoveWindow(
HWND hWnd,
int X,
int Y,
int nWidth,
int nHeight,
BOOL bRepaint
);

Parameters

hWnd
[in] Handle to the window.
X
[in] Specifies the new position of the left side of the window.
Y
[in] Specifies the new position of the top of the window.
nWidth
[in] Specifies the new width of the window.
nHeight
[in] Specifies the new height of the window.
bRepaint
[in] Specifies whether the window is to be repainted. If
this parameter is TRUE, the window receives a message. If

the parameter is FALSE, no repainting of any kind occurs.
This applies to the client area, the nonclient area

(including the title bar and scroll bars), and any part of
the parent window uncovered
as a result of moving a child
window
.

==========================================================

reveja o seu código com calma e faça alguns testes

abraço

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...