• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

c++ id returned 1 exit status czemu WinAPI?!?

0 głosów
691 wizyt
pytanie zadane 2 listopada 2020 w C i C++ przez hihijsonel Obywatel (1,250 p.)

Witam, 

Mam taki kod (wiem że troche długi ale nie wiem gdzie błąd więc daję cały)

#include <windows.h>

LPSTR nazwaKlasy = "nazwaOkienka";

MSG komunikat;

LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
	switch(msg) {
		case WM_CLOSE:
			DestroyWindow(hwnd);
			break;
		case WM_DESTROY:
			PostQuitMessage(0);
			break;
		case WM_LBUTTONDOWN:
			{
    		HDC hdc;
			hdc = GetDC(hwnd);
		    LineTo(hdc, LOWORD(lParam), HIWORD(lParam));
			ReleaseDC(hwnd, hdc);
			break;
			};
		case WM_LBUTTONDBLCLK:
			{
    		HDC hdc = GetDC(hwnd);
		    Ellipse(hdc, LOWORD(lParam)-3, HIWORD(lParam)-3, LOWORD(lParam)+3,HIWORD(lParam)+3);
    		ReleaseDC(hwnd, hdc);
			break;
			};
		case WM_COMMAND:
			switch(wParam) {
				case 01:
					MessageBox( hwnd, "Wcisnąłeś przycisk!", "Test", MB_ICONINFORMATION );
					break;
   				default:
   					MessageBox( hwnd, "Zrobiłeś coś innego :)", "Test", MB_ICONINFORMATION );
			};
		break;
		default:
			return DefWindowProc(hwnd, msg, wParam, lParam);
		};
	return 0;
};

int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow )
{
	
	switch(MessageBox(NULL, "Wyświetić okno aplikacji?", "Czy wyświetlić okienko?", MB_YESNO | MB_ICONQUESTION | MB_DEFBUTTON1)) {
		case IDYES:
			WNDCLASSEX wc;
			wc.cbSize = sizeof(WNDCLASSEX);
			wc.style = CS_DBLCLKS;
			wc.lpfnWndProc = WndProc;
			wc.cbClsExtra = 0;
			wc.cbWndExtra = 0;
			wc.hInstance = hInstance;
			wc.hIcon = LoadIcon(NULL, IDI_APPLICATION);
			wc.hCursor = LoadCursor(NULL, IDC_ARROW);
			wc.hbrBackground =(HBRUSH)(COLOR_WINDOW+1);
			wc.lpszMenuName = NULL;
			wc.lpszClassName = nazwaKlasy;
			wc.hIconSm = LoadIcon(NULL, IDI_APPLICATION);
			if(!RegisterClassEx(&wc)) {
				MessageBox(NULL, "Nie udało się zarejestrować okna", "Niestety", MB_ICONEXCLAMATION | MB_OK);
				return 0;
			};
			HWND hwnd;
			hwnd = CreateWindowEx (WS_EX_WINDOWEDGE, nazwaKlasy, "Okno", WS_OVERLAPPED | WS_CAPTION | WS_SYSMENU | WS_THICKFRAME | WS_MINIMIZEBOX | WS_MAXIMIZEBOX | WS_VISIBLE, 1, 1, 1000, 1000, NULL, NULL, hInstance, NULL);
			if( hwnd == NULL ) {
				MessageBox(NULL, "Zdarzył się błąd, zamykanie aplikacji", "Błąd", MB_OK | MB_ICONWARNING);
				return 0;
			};
			HWND g_hPrzycisk;
			g_hPrzycisk = CreateWindowEx( 0, "BUTTON", "Se tam przycisk", WS_CHILD | WS_VISIBLE, 100, 100, 150, 30, hwnd, (HMENU)01, hInstance, NULL );
			ShowWindow(hwnd, nCmdShow);
			UpdateWindow(hwnd);
			while(GetMessage(&komunikat, NULL, 0, 0)) {
			TranslateMessage(&komunikat);
			DispatchMessage(&komunikat);
			};
			return komunikat.wParam;
			break;
		case IDNO:
			return 0;
		defalut:
			MessageBox(NULL, "Zdarzył się błąd, zamykanie aplikacji", "Błąd", MB_OK | MB_ICONWARNING);
			return 0;
	};
};

I mi wywala id returned 1 exit status.

Wiem, że na internecie jest pełno o tym błędzie, ale nie mogę znaleźć odpowiedzi. Czy ktoś może mi pomóc? Z góry dziękuję za odpowiedź.

 

Używam DEV c++

1
komentarz 2 listopada 2020 przez j23 Mędrzec (195,220 p.)

Podaj pełną treść błędu, bo to, co podałeś, to tylko fragment.

 

Używam DEV c++

Oh boy...

komentarz 2 listopada 2020 przez hihijsonel Obywatel (1,250 p.)
[Warning] deprectated conversion from string constant  to 'LPSTR{aka char*}' [-Wwrite-strings]

BezNazwy3.cpp:(.text+0xa3): undefined reference to '__imp_LineTo'

BezNazwy3.cpp:(.text+0x113): undefined reference to '__imp_Ellipse'

[Error] Id returned 1 exit status

1 odpowiedź

0 głosów
odpowiedź 2 listopada 2020 przez j23 Mędrzec (195,220 p.)
wybrane 12 grudnia 2020 przez hihijsonel
 
Najlepsza

Dodaj bibliotekę gdi32.a

komentarz 2 listopada 2020 przez hihijsonel Obywatel (1,250 p.)
a cio ona robi?

i wogule jej nie mam
komentarz 2 listopada 2020 przez j23 Mędrzec (195,220 p.)

Musisz mieć, bo to jedna z podstawowych bibliotek Windowsa. A co robi? Zapewnia (pośrednio) implementację funkcji GDI (LineTo, Ellipse itd.).

komentarz 2 listopada 2020 przez hihijsonel Obywatel (1,250 p.)
#include <gdi32.a>

 

jak dałem to ^^^ to nie mam
komentarz 2 listopada 2020 przez j23 Mędrzec (195,220 p.)

Tak się nie dodaje bibliotek, tak to załączasz nagłówki. Biblioteki dodaje się w opcjach projektu.

W Project ► Project options ► Parameters ► Linker dodaj -lgdi32 (lub samo gdi32).

komentarz 2 listopada 2020 przez VBService Ekspert (256,660 p.)

A dokładniej chodzi o gdi32.dll

komentarz 3 listopada 2020 przez hihijsonel Obywatel (1,250 p.)
em dałem tak i i tak mi daje id returned...
komentarz 3 listopada 2020 przez j23 Mędrzec (195,220 p.)
Ale z tą samą treścią, czy coś nowego się pojawiło.

Podobne pytania

0 głosów
2 odpowiedzi 1,230 wizyt
0 głosów
1 odpowiedź 706 wizyt
pytanie zadane 26 stycznia 2020 w C i C++ przez Nowicjusz13 Użytkownik (570 p.)
0 głosów
1 odpowiedź 2,461 wizyt

93,777 zapytań

142,736 odpowiedzi

323,388 komentarzy

63,381 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Twierdza Linux. Bezpieczeństwo dla dociekliwych

Aby uzyskać rabat -10%, użyjcie kodu pasja-linux, wpisując go w specjalne pole w koszyku.

...