Witamy na forum PC Format Zapraszamy do REJESTRACJI


Użytkownicy przeglądający ten wątek: 1 gości

WinApi - nie chodzi

#1
WinApi - nie chodzi
Kod:
#include <windows.h>

LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM); //deklaracja funkcji obsługi o nazwie WndProc

INT WINAPI WinMain(HINSTANCE hInst,HINSTANCE,LPSTR lStart,INT nShow)
{
  WNDCLASSEX wc;
  wc.hInstance=hInst;
  wc.lpszClassName="Klasa okna";
  wc.lpfnWndProc=WndProc; //nazwa naszej własnej funkcji obsługującej komunikaty
  wc.style=CS_DBLCLKS;
  wc.cbSize=sizeof(WNDCLASSEX);
  wc.hIcon=LoadIcon(0,IDI_APPLICATION);
  wc.hIconSm=LoadIcon(0,IDI_APPLICATION);
  wc.hCursor=LoadCursor(0,IDC_ARROW);
  wc.lpszMenuName=0;
  wc.hbrBackground=(HBRUSH)GetStockObject(WHITE_BRUSH);
  wc.cbWndExtra=0;
  wc.cbClsExtra=0;
  if(RegisterClassEx(&wc)==0) return 0;
  HWND Okno=CreateWindowEx(0,"Klasa okna","Tytuł okna",WS_OVERLAPPEDWINDOW,50,50,100,100,0,0,hInst,0);
  ShowWindow(Okno,nShow);
  MSG msgs;
  while(GetMessage(&msgs,0,0,0))
  {
    TranslateMessage(&msgs);
    DispatchMessage(&msgs);
  }
  return msgs.wParam;
}

LRESULT CALLBACK WndProc(HWND hwnd,UINT msg,WPARAM wPar,LPARAM lPar)
{
  switch(msg)
  {
    case WM_PAINT:
      //polecenia dla komunikatu WM_PAINT
      break;
    case WM_CLOSE:
      //polecenia dla komunikatu WM_CLOSE
      MessageBox(HWND_DESKTOP,"Treść komunikatu","Tytuł komunikatu",MB_OK); //!!!!czemu po kliknięciu krzyżeka nie wyśwuetla się komunikat??
      break;
    default:
      return DefWindowProc(hwnd,msg,wPar,lPar); //domyślna obsługa reszty komunikatów
  }
  return 0;
}
Program po naciśnięciu krzyżyka powinien wyżucić komunikat, ale tak się nie dzieje
 System operacyjny: windows_xp_2003 Przeglądarka: ie
#2
RE: WinApi - nie chodzi
Kod:
#include <windows.h>

INT WINAPI WinMain(HINSTANCE hInst,HINSTANCE,LPSTR lStart,INT nShow)
{
  MessageBox(HWND_DESKTOP,"Treść komunikatu","Tytuł komunikatu",MB_OK);
return0;
}
A wygląda to ta: [Obrazek: komunikat1mf3.jpg]
 System operacyjny: windows_xp_2003 Przeglądarka: firefox
#3
RE: WinApi - nie chodzi
Jest kilka rzeczy które należałoby tutaj poprawić. Zmienną Okno proponuje uczynić zmienną globalną. Proponował bym również, aby nazwę klasy przechowywać w stałej globalnej typu LPSTR const np. LPSTR const KlasaOkna = "KlasaOkna";. Po wyświetleniu okna trzeba je jeszcze odświeżyć. Po prostu po poleceniu ShowWindow(Okno, nShow); dodaj polecenie UpdateWindow(Okno);. Trzeba też po zakończeniu programu odrejestrować klasę okna. Po pętli wiadomości dodaj polecenie UnregisterClass(KlasaOkna, Okno);. Jeżeli chcesz aby po naciśnięciu krzyżyka program wyświetlał komunikat musisz w w funkcji obsługi komunikatów musisz napisać:

Kod:
case WM_CLOSE:
MessageBox(NULL, "Koniec programu", Info", MB_OK | MB_ICONWARNING)
DestroyWindow(Okno);
break;

Powinieneś jeszcze wyrzucić z funkcji obsługi komunikatów kod:
Kod:
case WM_PAINT:
      //polecenia dla komunikatu WM_PAINT
      break;
W tym wypadku jest ci on zupełnie niepotrzebny.
 System operacyjny: windows_xp_2003 Przeglądarka: firefox
Programy: Polecane / Nowe / Inne




Podobne wątki (WinApi - nie chodzi)
Wątek: Autor Odpowiedzi: Wyświetleń: Ostatni post
  [C++ WinAPI] Kompresja bitmapy kikiw 0 5203 25.12.2014, 16:15
Ostatni post: kikiw
  [c,winapi]-Access voliation reading location i problem z BITMAPFILEHEADER sfx 3 3417 12.08.2014, 16:11
Ostatni post: Darekg11
  winapi-taki sam tekst w kolejnych zakładkach sfx 0 3019 27.07.2014, 20:28
Ostatni post: sfx

Skocz do:


Wybrane wątki (WinApi - nie chodzi)
Wątek: Autor Odpowiedzi: Wyświetleń: Ostatni post
Big Grin Czy dostane sie technikum informatycznego klaudiusz20046 6 7480 21.03.2019 01:28
Ostatni post: UnableToSee
  [C#] Program do moderacji czatów gier wiktrom12 0 5222 07.03.2019 15:33
Ostatni post: wiktrom12
  Mój pierwszy projekt - Pomoc rafal12999 1 5757 07.02.2019 22:01
Ostatni post: Szachista
  pomoc projekt scilab piesel18 2 7000 04.02.2019 09:03
Ostatni post: piesel18
  Szkoła Informatyczna Zikinan 1 6108 02.02.2019 17:59
Ostatni post: wojownikhaha
  [Java] Strona z zadaniami do rozwiązania i odpowiedziami rafal12999 2 6892 27.01.2019 13:44
Ostatni post: rafal12999
  kompilacja biblioteki Agui - cmake jurek2 0 6172 10.01.2019 13:12
Ostatni post: jurek2
  Zamiana całego zestawu znaków wg przyporządkowania BarHorab 5 6841 19.12.2018 16:45
Ostatni post: Szachista
  Sumowanie licz excel - problem OxyGenE 2 9740 19.12.2018 16:29
Ostatni post: Szachista
  Jaki kod pod pewne zdarzenia visualbasic 2010 aktywny27 4 7434 07.11.2018 13:41
Ostatni post: Ajgor
Scared Ipad Pro programowanie? NissmoOne 4 8135 06.10.2018 12:22
Ostatni post: NissmoOne
  C# pierwsza pusta komórka Excel DonCorleone 0 7533 21.09.2018 16:58
Ostatni post: DonCorleone
  .bat nie kompresuje plików GIENTY 3 7918 06.09.2018 07:20
Ostatni post: broda99
  problem z programem .bat wiktrom12 4 9033 30.08.2018 08:25
Ostatni post: wiktrom12
  Silnik do gier ZigglerGames 1 7784 23.08.2018 09:03
Ostatni post: Szachista