Witam. Mam generalnie problem ze stworzeniem przycisku w oknie dialogowym. Problem polega na tym, ze po uruchomieniu programu, nie pojawia się przycisk. I wynik tego jest pokazanie na poniżej załączonym screenie. Mimo ze próbowałem wieku sposobów, zawsze działa w ten sam sposób. Nie wiem czy gdzieś popełniłem błąd, czy to wina Windowsa, ale już meczę się już kilka godzin. Proszę o pomoc.
include <windows.h>
#include <iostream>
LRESULT CALLBACK WindowProcessMessages(HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam);
int WINAPI WinMain(HINSTANCE currentInstance, HINSTANCE prevInstance, LPSTR lpCmdLine, int nShowCmd){
LPCSTR CLASS_NAME = "unqiueClassWindow";
LPCSTR NAME = "Windows App";
WNDCLASS wc = {};
wc.hInstance = currentInstance;
wc.lpszClassName = CLASS_NAME;
wc.lpfnWndProc = WindowProcessMessages;
wc.hCursor = LoadCursor(nullptr, IDC_ARROW);
wc.hIcon = LoadIcon(nullptr, IDI_APPLICATION);
wc.hbrBackground = (HBRUSH) COLOR_WINDOW;
RegisterClass(&wc);
HWND hwnd = CreateWindow(CLASS_NAME, NAME, WS_OVERLAPPEDWINDOW | WS_VISIBLE, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, nullptr, nullptr, currentInstance, nullptr);
if(hwnd == NULL) return 0;
MSG msg = {};
while(GetMessage(&msg, NULL, 0, 0)){
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return msg.wParam;
}
LRESULT CALLBACK WindowProcessMessages(HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam){
switch(msg){
case WM_CREATE: {
HWND btn1 = CreateWindow(TEXT("Button1"), TEXT("Start"), WS_OVERLAPPEDWINDOW | WS_CHILD , 10, 100, 80, 30, hwnd, (HMENU) 1, nullptr, nullptr);
if(btn1 == NULL) std::cout << "Button1 ERROR!";
return 0;
}
case WM_DESTROY: {
PostQuitMessage(0);
return 0;
}
}
return DefWindowProc(hwnd, msg, wparam, lparam);
}
Jeżeli ktoś zauważył czerwone błędy na edytorze to są tu one:
i mimo tego ze zmieniam zmienne na odpowiedni typ to i tak zwraca mi błąd w kompilatorze:
więc żeby nie było, ze jest to tym spowodowane. Tak rozumiem sens błędów oraz próbowałem na tej funkcji co podana jest w kompilatorze, ale jak mówiłem, wynik jest taki sam. Na jakiekolwiek bym użył funkcji CreateWindow
, CreateWindowW
, CreateWindowExA
, CreateWindowExW
, to wynik się zwraca taki sam.