He hecho una librería con una clase para agilizar el proceso de creación de la ventana, aquí dejo los códigos:
Win32Lib.h
Código
#include <Windows.h>
namespace Win32
{
class Window
{
public:
HWND hWnd;
Window();
bool center();
void create(int height, int width, int x, int y,
DWORD dwStyle, HBRUSH color, HCURSOR cursor, HICON icon, HINSTANCE hInstance, HWND hwnd, HWND hwndParent,
LPCWSTR CLASS_NAME, LPCWSTR menu, LPCWSTR windowName, WNDPROC winProc);
void show(int nCmdShow);
};
}
Win32Lib.cpp
Código
#include "Win32Lib.h"
namespace Win32
{
Window::Window() {};
bool Window::center()
{
int x, y;
RECT rc;
GetWindowRect(hWnd, &rc);
x = (GetSystemMetrics(SM_CXSCREEN) - (rc.right - rc.left)) / 2;
y = (GetSystemMetrics(SM_CYSCREEN) - (rc.bottom - rc.top)) / 2;
return SetWindowPos(hWnd, 0, x, y, 0, 0, SWP_NOZORDER | SWP_NOSIZE);
}
void Window::create(int height, int width, int x, int y,
DWORD dwStyle, HBRUSH color, HCURSOR cursor, HICON icon, HINSTANCE hInstance, HWND hwnd, HWND hwndParent,
LPCWSTR CLASS_NAME, LPCWSTR menu, LPCWSTR windowName, WNDPROC winProc)
{
WNDCLASS wc;
hWnd = hwnd;
wc.hbrBackground = color;
wc.hCursor = cursor;
wc.hIcon = icon;
wc.hInstance = hInstance;
wc.lpfnWndProc = winProc;
wc.lpszClassName = CLASS_NAME;
wc.lpszMenuName = menu;
RegisterClass(&wc);
hwnd = CreateWindowEx(0, CLASS_NAME, windowName, dwStyle, x, y, width, height, hwndParent, NULL, hInstance, NULL);
}
void Window::show(int nCmdShow)
{
ShowWindow(hWnd, nCmdShow);
}
}
Y bueno, aquí esta el código de la aplicación, el caso es que en cuanto declaro la clase con un constructor vacio me dice: "Error (activo) no existe ningún constructor adecuado para convertir de "Win32::Window *" a "Win32::Window" Win32Testing d:\Documentos\Programacion\C++\Proyectos\Win32Testing\Win32Testing\Main.cpp 19"
Código
#ifndef UNICODE
#define UNICODE
#endif
#include <Windows.h>
#include <Win32Lib.h>
using namespace Win32;
LRESULT CALLBACK WindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam);
int WINAPI wWinMain(HINSTANCE hInstance, HINSTANCE, PWSTR pCmdLine, int nCmdShow)
{
HWND hwnd = NULL;
LPCWSTR CLASS_NAME = L"MainWindow";
Window mainWindow = new Window();
MSG msg = {};
mainWindow.show(nCmdShow);
while (GetMessage(&msg, NULL, 0, 0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return 0;
}
LRESULT CALLBACK WindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
switch (uMsg)
{
case WM_DESTROY:
PostQuitMessage(0);
return 0;
}
return DefWindowProc(hwnd, uMsg, wParam, lParam);
}
A que se puede deber? =S


 
  




 Autor
 Autor
		


 En línea
									En línea
								





