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

Interface Gráfica C


FibraOptica

Pergunta

Andei procurando muito na net e quase não encontrei um tutorial sobre como fazer um programa com interface gráfica. Achei um para windows mas parecia um pouco avançado, para linux foi a mesma coisa (usando a biblioteca GTK).

Queria algumas fontes onde posso encontrar um bom tutorial sobre programação com interface gráfica, que seja do 0, para iniciante.

(Inglês ou Português)

...

valeu, FibraOptica

Link para o comentário
Compartilhar em outros sites

23 respostass a esta questão

Posts Recomendados

  • 0

José Wilker eu tenho o PDF mas não tenho fontes! Este site e' o único que sei que tem este book para download. O que queria mesmo e' passar este PDF para documento texto. Só que o bicho tem 800 páginas. Se alguém quiser, eu junto uma galera e passamos o e-book para .doc. Quem topa?

Link para o comentário
Compartilhar em outros sites

  • 0

beleza, kandrade é que estou usando o kurumin, o sistema e' simples. Eu até tinha pegado um mini-tutorial falando sobre a biblioteca gtk. Mas acho que o kurumin não instala as bibliotecas do gtk por completo, por exemplo, eu não tenho o arquivo gtk.h em meu sistema. Será que tenho que baixar mais arquivos?

Link para o comentário
Compartilhar em outros sites

  • 0

Meu filho, eu desenho meus programas em C++, eles tem interface igual a do Mac Os X com efeitos aqua, eventos e tudo mais. O segredo é usar <windows.h>, criar uma janela vazia, colocar imagens aos montes nela e mapear a tela para que o mouse execute ações em determinadas áreas, teoricamente isto é simples, mas na prática é terrívelmente difícil. No mais, aprenda <windows.h>, que é excelente não só para interfaces gráficas mas também contém funções que nenhuma outra biblioteca tem. O único lado ruim do <windows.h> é que ele não funciona para outras plataformas que não Windows. Até mais.

Link para o comentário
Compartilhar em outros sites

  • 0
Guest - Ricardo -

Uma alternativa e você comprar o livro C para Windows da editora Érica que custa em media R$72,00. Este livro so explora programas em C para o anbiente windows, mas não me ajudou muito. No site Editora Erica você tambem pode encontrar os arquivos com todos os exemplos do livro.

Link para o comentário
Compartilhar em outros sites

  • 0

Cara, estou na mesma robada que você. Procurei até morrer na net e não achei nada que realmente preste. Mas minha dica é que você faça aplicações gráficas com janelas, menus... em Java. É muito mais simples e tenho uma apostila ótima que trata disso. Realmente, ao que parece programar para windows e bem mais é bem melhor a Linguagem Java.

Link para o comentário
Compartilhar em outros sites

  • 0

Pergunta para o FibraOptica e ao demais interessados em C para Windows, digamos: Vocês tem interesse de *aprender (estudar o código)* a fazer uma interface gráfica, ou seja, digitar 'um monte' de código complicado (o que, na minha opinião, não é legal, pois hoje em dia tudo deve ser rápido e prático, usando auxílio de IDE's) ou vocês tem interesse de *fazer uma aplicação de interface gráfica, seja qual for o método*?

Se for: "fazer uma aplicação de interface gráfica, seja qual for o método": 'http://www.borland.com/br/products/cbuilder/index.html'. Pronto! Na minha opinião, a melhor solução! O Borland C++ Builder é uma IDE's para C++ (serve para C, também). Nele você faz aplicações do tipo Console, Windows (com interface gráfica), bibliotecas (DLL), etc... Sem contar o suporte que ele dá para a plataforma CLX. É bem legal, pois sua interface é parecida com a do Delphi. OBS: Ele usa bibliotecas diferentes, não comuns ao dia-a-dia do programador C/C++ para fazer a interface gráfica, mas o que importa... Já que vem tudo pronto mesmo : ) (em termo de interfae gráfica).

Mas, se for: 'aprender (estudar o código)': Hum.. Aí complica... Já ouvi falar muito na biblioteca Windows (windows.h).. Mas, pode ser uma solução, apesar que nem testei, mas aí vai: Navegando em 'http://www.roesler-ac.de/wolfram/hello.htm' (uma página de demostrações de várias linguagens, demonstrações de Hello World's em diferentes linguagens) duas linguagens me chamaram a atenção: 'C-Windows' e 'C-X11-Athena'. *Parece* que essas linguagens dão um *suporte* (digamos) maior ao fazer a interface.. Dê uma pesquisada... Essa 'C-Windows'... Pelo nome e pelo comentário descrito na página.. Parece ser totalmente voltada para o Windows.. Talvez isso facilite as coisas.. *TALVEZ*.

Bom, mas para quem não quer pesquisa, olhe só essa aplicação (com interface) feita em C. O exemplo mostra uma janela com um botão para finalizar o programa. Este exemplo vem junto com o Dev-C++ 4.9.8.0: (É complicado e 'meio' inútil, mas têm algumas explicações (comentários) em inglês...)

/*
 * A basic example of Win32 programmiwng in C.
 *
 * This source code is in the PUBLIC DOMAIN and has NO WARRANTY.
 *
 * Colin Peters <colin@bird.fu.is.saga-u.ac.jp>
 */

#include <windows.h>
#include <string.h>
#include <iostream>

/*
 * This is the window function for the main window. Whenever a message is
 * dispatched using DispatchMessage (or sent with SendMessage) this function
 * gets called with the contents of the message.
 */
LRESULT CALLBACK
MainWndProc (HWND hwnd, UINT nMsg, WPARAM wParam, LPARAM lParam)
{
/* The window handle for the "Click Me" button. */
static HWND hwndButton = 0;
static int cx, cy;/* Height and width of our button. */

HDC hdc;/* A device context used for drawing */
PAINTSTRUCT ps;/* Also used during window drawing */
RECT rc;/* A rectangle used during drawing */
/*
 * Perform processing based on what kind of message we got.
 */
switch (nMsg)
{
case WM_CREATE:
{
/* The window is being created. Create our button
 * window now. */
TEXTMETRIC tm;

/* First we use the system fixed font size to choose
 * a nice button size. */
hdc = GetDC (hwnd);
SelectObject (hdc, GetStockObject (SYSTEM_FIXED_FONT));
GetTextMetrics (hdc, &tm);
cx = tm.tmAveCharWidth * 30;
cy = (tm.tmHeight + tm.tmExternalLeading) * 2;
ReleaseDC (hwnd, hdc);

/* Now create the button */
hwndButton = CreateWindow (
"button",/* Builtin button class */
"Click Here",
WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON,
0, 0, cx, cy,
hwnd,/* Parent is this window. */
(HMENU) 1,/* Control ID: 1 */
((LPCREATESTRUCT) lParam)->hInstance,
NULL
);

return 0;
break;
}

case WM_DESTROY:
/* The window is being destroyed, close the application
 * (the child button gets destroyed automatically). */
PostQuitMessage (0);
return 0;
break;

case WM_PAINT:
/* The window needs to be painted (redrawn). */
hdc = BeginPaint (hwnd, &ps);
GetClientRect (hwnd, &rc);

/* Draw "Hello, World" in the middle of the upper
 * half of the window. */
rc.bottom = rc.bottom / 2;
DrawText (hdc, "Hello, World!", -1, &rc,
DT_SINGLELINE | DT_CENTER | DT_VCENTER);

EndPaint (hwnd, &ps);
return 0;
break;

case WM_SIZE:
/* The window size is changing. If the button exists
 * then place it in the center of the bottom half of
 * the window. */
if (hwndButton &&
(wParam == SIZEFULLSCREEN ||
 wParam == SIZENORMAL)
   )
{
rc.left = (LOWORD(lParam) - cx) / 2;
rc.top = HIWORD(lParam) * 3 / 4 - cy / 2;
MoveWindow (
hwndButton,
rc.left, rc.top, cx, cy, TRUE);
}
break;

case WM_COMMAND:
/* Check the control ID, notification code and
 * control handle to see if this is a button click
 * message from our child button. */
if (LOWORD(wParam) == 1 &&
    HIWORD(wParam) == BN_CLICKED &&
    (HWND) lParam == hwndButton)
{
/* Our button was clicked. Close the window. */
DestroyWindow (hwnd);
}
return 0;
break;
}

/* If we don't handle a message completely we hand it to the system
 * provided default window function. */
return DefWindowProc (hwnd, nMsg, wParam, lParam);
}


int STDCALL
WinMain (HINSTANCE hInst, HINSTANCE hPrev, LPSTR lpCmd, int nShow)
{
HWND hwndMain;/* Handle for the main window. */
MSG msg;/* A Win32 message structure. */
WNDCLASSEX wndclass;/* A window class structure. */
char*szMainWndClass = "WinTestWin";
/* The name of the main window class */

/*
 * First we create a window class for our main window.
 */

/* Initialize the entire structure to zero. */
memset (&wndclass, 0, sizeof(WNDCLASSEX));

/* This class is called WinTestWin */
wndclass.lpszClassName = szMainWndClass;

/* cbSize gives the size of the structure for extensibility. */
wndclass.cbSize = sizeof(WNDCLASSEX);

/* All windows of this class redraw when resized. */
wndclass.style = CS_HREDRAW | CS_VREDRAW;

/* All windows of this class use the MainWndProc window function. */
wndclass.lpfnWndProc = MainWndProc;

/* This class is used with the current program instance. */
wndclass.hInstance = hInst;

/* Use standard application icon and arrow cursor provided by the OS */
wndclass.hIcon = LoadIcon (NULL, IDI_APPLICATION);
wndclass.hIconSm = LoadIcon (NULL, IDI_APPLICATION);
wndclass.hCursor = LoadCursor (NULL, IDC_ARROW);

/* Color the background white */
wndclass.hbrBackground = (HBRUSH) GetStockObject (WHITE_BRUSH);

/*
 * Now register the window class for use.
 */
RegisterClassEx (&wndclass);

/*
 * Create our main window using that window class.
 */
hwndMain = CreateWindow (
szMainWndClass,/* Class name */
"Hello",/* Caption */
WS_OVERLAPPEDWINDOW,/* Style */
CW_USEDEFAULT,/* Initial x (use default) */
CW_USEDEFAULT,/* Initial y (use default) */
CW_USEDEFAULT,/* Initial x size (use default) */
CW_USEDEFAULT,/* Initial y size (use default) */
NULL,/* No parent window */
NULL,/* No menu */
hInst,/* This program instance */
NULL/* Creation parameters */
);

/*
 * Display the window which we just created (using the nShow
 * passed by the OS, which allows for start minimized and that
 * sort of thing).
 */
ShowWindow (hwndMain, nShow);
UpdateWindow (hwndMain);

/*
 * The main message loop. All messages being sent to the windows
 * of the application (or at least the primary thread) are retrieved
 * by the GetMessage call, then translated (mainly for keyboard
 * messages) and dispatched to the appropriate window procedure.
 * This is the simplest kind of message loop. More complex loops
 * are required for idle processing or handling modeless dialog
 * boxes. When one of the windows calls PostQuitMessage GetMessage
 * will return zero and the wParam of the message will be filled
 * with the argument to PostQuitMessage. The loop will end and
 * the application will close.
         */
while (GetMessage (&msg, NULL, 0, 0))
{
TranslateMessage (&msg);
DispatchMessage (&msg);
}
return msg.wParam;
}

Falows! : )

Link para o comentário
Compartilhar em outros sites

  • 0

Denis Bittencourt Muniz: Tenho interesse de fazer programas gráficos, e também estudar linha por linha como você mencionou.. A questã do código, hum.. parece muito código para nada, percebeu? Para o cara programar linha por linha para um programa, digamos, +/- ele ficaria uns meses atrofiado no computador..

Programas GUI gera muito tempo por parte do programador. Certo? wink.gif

Link para o comentário
Compartilhar em outros sites

  • 0

Concordo. Programas GUI feitos 'na unha' (linha por linha) são muito demorados. É verdade: no caso da opção linha por linha é muito código para muito pouco serviço.

Bom, tenho uma opinião: Que tal usar o Borland C++ Builder 6 para fazer programas GUI? Pois isso irá economizar tempo, você irá adquirir experiência e muita outras vantagens, como cito no post acima.

Você pode até estudar uma janela linha por linha, mas só para diversão e enrrequicimento de conhecimento, não concorda? : )

Falows bro!

Link para o comentário
Compartilhar em outros sites

  • 0

Cara, meu primo me indicou uma nova linguagem de programação muito boa. É o Logic Basic. Se trata de uma linguagem para programação em anbiente windows. Ela é totalmente em português e muito fácil de usar olhe o exemplo:

MenuSistema Guia 0, "Arquivo"

MenuSistema Guia 0, Opcao "Novo"

MenuSistema Guia 0, Opcao "Abrir..."

MenuSistema Guia 0, Opcao "Salvar"

MenuSistema Guia 0, Opcao "Salvar Como..."

MenuSistema Guia 0, Opcao "-"

MenuSistema Guia 0, Opcao "Imprimir..."

MenuSistema Guia 0, Opcao "-"

MenuSistema Guia 0, Opcao "Sair"

MenuSistema Guia 1, "Editar"

MenuSistema Guia 1, Opcao "Copiar"

MenuSistema Guia 1, Opcao "Recortar"

MenuSistema Guia 1, Opcao "Colar"

MenuSistema Guia 1, Opcao "-"

MenuSistema Guia 1, Opcao "Selecionar Tudo"

MenuSistema Guia 1, Opcao "Apagar"

MenuSistema Guia 2, "Configurações"

MenuSistema Guia 2, Opcao "Fonte..."

MenuSistema Guia 2, Opcao "-"

MenuSistema Guia 2, Opcao "Opções..."

MenuSistema Guia 3, "Ajuda"

MenuSistema Guia 3, Opcao "Tópicos de Ajuda"

MenuSistema Guia 3, Opcao "Help"

MenuSistema Guia 3, Opcao "-"

MenuSistema Guia 3, Opcao "Suporte Técnico"

MenuSistema Guia 3, Opcao "Links"

MenuSistema Guia 3, Opcao "-"

MenuSistema Guia 3, Opcao "Sobre"

Este simples código gera uma interface completa com janela e todos os menus de sistema.

Ai vai o link do site do fabricante: http://www.topsoftnew.com/logicbasic/

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,4k
×
×
  • Criar Novo...