Olá!!
Venho estudando a api Win32 a algum tempo, porém, quando eu finamente consigo criar uma mísera janelinha... O compilador deixa passar,
porém, retorna a mensagem de error de criação da janela na função CreateWindowEx().
Código:
main.cpp
////////////////////////////////////////////////////////////////////////////////
// //
// Arquivo: main.cpp //
// Data: 27-12-2016 19:18 //
// //
////////////////////////////////////////////////////////////////////////////////
/**
* Arquivos para incusão.
*/
#include "main.h"
/**
* Namespaces utilizados.
*/
using namespace std;
/**
* Função principal da Win32.
*/
int WINAPI WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow)
{
// Variáveis da função.
WNDCLASSEX wnd; // Classe da janela.
HWND hWnd; // Controlador da janela.
MSG msg; // Estrtura de mensagens.
// Iniciando a classe da janela.
wnd.lpszClassName = WND_CLASS_NAME;
wnd.lpszMenuName = WND_WINDOW_NAME;
wnd.style = WS_OVERLAPPEDWINDOW;
wnd.cbSize = sizeof(WNDCLASSEX);
wnd.cbClsExtra = 0;
wnd.cbWndExtra = 0;
wnd.hInstance = hInstance;
wnd.lpfnWndProc = WndProc;
wnd.hIcon = LoadIcon(NULL, IDI_APPLICATION);
wnd.hIconSm = LoadIcon(NULL, IDI_APPLICATION);
wnd.hCursor = LoadCursor(NULL, IDC_ARROW);
wnd.hbrBackground = (HBRUSH)(COLOR_WINDOW + 1);
// Registrando a Classe.
if(RegisterClassEx(&wnd))
{
MessageBox(NULL, "Error ao Registrar Classe da janela Principal", "Fatal Error", MB_ICONERROR | MB_OK);
return 1;
}
// Criando a Janela.
hWnd = CreateWindowEx(WS_EX_OVERLAPPEDWINDOW,
WND_CLASS_NAME,
WND_WINDOW_NAME,
WS_OVERLAPPEDWINDOW,
(GetSystemMetrics(SM_CXSCREEN) - WND_LARG) / 2,
(GetSystemMetrics(SM_CYSCREEN) - WND_ALTU) / 2,
WND_LARG,
WND_ALTU,
NULL,
NULL,
hInstance,
NULL);
// Verificando a criação da janela.
if(!hWnd)
{
MessageBox(NULL, "Error ao criar a janela.", "Fatal Error", MB_ICONERROR | MB_OK);
return 1;
}
// Mostrando a janela.
ShowWindow(hWnd, nCmdShow);
// Atualizando a janela.
UpdateWindow(hWnd);
// Loop de Processamento de janela.
while(GetMessage(&msg, NULL, 0, 0) > 0)
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return msg.wParam;
}
//============================================================================//
/**
* Função WndProc(); Para processamento de mensagens;
*/
LRESULT CALLBACK WndProc(HWND hWnd,
UINT uMsg,
WPARAM wParam,
LPARAM lParam)
{
// Variáveis Locais.
PAINTSTRUCT ps;
HDC hDc;
// Loop de processamento de mensagens.
switch(uMsg)
{
/**
* Caso a Janela seja criada.
*/
case WM_CREATE:
MessageBox(NULL, "Olá Mundo!!!", "", MB_ICONINFORMATION | MB_OK);
return 0;
break;
/**
* Caso a janela precise ser re-desenhada.
*/
case WM_PAINT:
BeginPaint(hWnd, &ps);
EndPaint(hWnd, &ps);
return 0;
break;
/**
* Caso cliquem em fechar.
*/
case WM_CLOSE:
DestroyWindow(hWnd);
return 0;
break;
/**
* Acabando de vez com todo o pograma.
*/
case WM_DESTROY:
PostQuitMessage(WM_QUIT);
return 0;
break;
default:
return (DefWindowProc(hWnd, uMsg, wParam, lParam));
break;
}
}
main.h:
////////////////////////////////////////////////////////////////////////////////
// //
// Arquivo: main.h //
// Data: 27-12-2016 19:18 //
// //
////////////////////////////////////////////////////////////////////////////////
/**
* Arquivos para Inclusão.
*/
#include <windows.h>
#include <string>
/**
* Protótipos de funções.
*/
// Função para processamento de mensagens enviadas pelo windows.
LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
/**
* Definições.
*/
#define WND_CLASS_NAME "Janelinha" // Nome da Classe.
#define WND_WINDOW_NAME "Janelinha" // Nome da janela.
#define WND_LARG 640 // Largura da janela.
#define WND_ALTU 420 // Altua da janela.
Por favor, quem manjar da Win32, me ajude!
desde já, agradeço!