Delphi i win32 api

0

witajcie bracia i siostry, dziewice i ladacznice ...

generalnie pisze w c i c++ ale teraz zapragnalem cos napisac w delphi ale tylko przy uzyciu Object Pascala i win32 api.
I mam pytanie czy da sie programowac "normalnie"? tzn uzywac standardowych typow windows np:
WNDCLASS a nie TWndClass ;
bo jesli moze byc tylko TWndClass to moj help do tego nie pasuje do konca ...

pozdr

0

Hey! W ObjectPascalu niestety nie da się tak programować (w większości przypadków). Jedynie co to byś musiał się nauczyć tych typów, klas, lub korzystać z zasad:
-początek typów przeważnie zaczyna się od T
-początek interfejsów od I
-całkowicie podstawowe typy (tzn. Cardinal, Byte, Integer, String) bez T na początku

I to chyba na tyle. Musiałbyś poczytać o Object Pascalu :P

0

Jeśli chcesz pisac w WinAPI w Delphi, to da się :)

Poczytaj kursy Adama

0

Object Pascal zaimplementowany w Delphi jest językiem nowoczesnym i ciągle aktualizowanym. Nie ma tutaj żadnych ograniczeń jeśli chodzi o stosowanie funkcji API. Możesz stosować wszystkie funkcje zdefiniowane w systemowych DLL-ach. Większość najważniejszych funkcji API została zaimportowana w module Windows. Sporo również w innych modułach (np. PsAPI, TlHelp32....). Ponadto nic nie stoi na przeszkodzie, aby samemu importować potrzebne funkcje.

A propos nazw:
Nazwy funkcji pozostają bez zmian (w windows.h i windows.pas nazwy są takie same), natomiast z nazwami struktur (pasc. rekordy) jest różnie. Borland przyjął konwencję rozpoczynania nazw większości typów (m.in. rekordów) od litery T. A więc odpowiednikiem WNDCLASS jest TWNDCLASS. Chociaż dla tych najważniejszych struktur zdefiniowane zostały także nazwy "tradycyjne". A więc rekord (struktura) WNDCLASS również jest zdefiniowany w Windows.pas. Podobnie WINDOWPOS, PAINTSTRUCT, WIN32_FIND_DATA................. .

I jeszcze na koniec:
Wiele razy się z tym spotkałem i ciągle mnie to drażni.
Co to znaczy: "pisać w WinApi" ?!
Czy WinApi to jakiś język programowania ?!
Otóż NIE !

0

A propos nazw:
Nazwy funkcji pozostają bez zmian (w windows.h i windows.pas nazwy są takie same), natomiast z nazwami struktur (pasc. rekordy) jest różnie. Borland przyjął konwencję rozpoczynania nazw większości typów (m.in. rekordów) od litery T. A więc odpowiednikiem WNDCLASS jest TWNDCLASS. Chociaż dla tych najważniejszych struktur zdefiniowane zostały także nazwy "tradycyjne". A więc rekord (struktura) WNDCLASS również jest zdefiniowany w Windows.pas. Podobnie WINDOWPOS, PAINTSTRUCT, WIN32_FIND_DATA................. .

I jeszcze na koniec:
Wiele razy się z tym spotkałem i ciągle mnie to drażni.
Co to znaczy: "pisać w WinApi" ?!
Czy WinApi to jakiś język programowania ?!
Otóż NIE !

tzn co mam dodac do uses zeby WNDCLASS nie bylo bledem?
2.
pisac pod windows z bezposrednim wykorzystaniem win32 api? teraz bardziej Ci pasuje?

0
  1. uses
    Windows, .....reszta modułów....... ;
    (dla Delphi 5 i powyżej; nie wiem jak we wcześniejszych wersjach)

  2. TAK !

0
  1. uses
    Windows, .....reszta modułów....... ;
    (dla Delphi 5 i powyżej; nie wiem jak we wcześniejszych wersjach)

hmmm

mam Delphi6PE
w module Windows widzi u mnie tylko TWndClass
WNDCLASS jest niezdefiniowane

0

W Delphi 5 Ent., 6 Ent. i 7 Ent. jest.

  PWndClassA = ^TWndClassA;
  PWndClassW = ^TWndClassW;
  PWndClass = PWndClassA;
  {$EXTERNALSYM tagWNDCLASSA}
  tagWNDCLASSA = packed record
    style: UINT;
    lpfnWndProc: TFNWndProc;
    cbClsExtra: Integer;
    cbWndExtra: Integer;
    hInstance: HINST;
    hIcon: HICON;
    hCursor: HCURSOR;
    hbrBackground: HBRUSH;
    lpszMenuName: PAnsiChar;
    lpszClassName: PAnsiChar;
  end;
  {$EXTERNALSYM tagWNDCLASSW}
  tagWNDCLASSW = packed record
    style: UINT;
    lpfnWndProc: TFNWndProc;
    cbClsExtra: Integer;
    cbWndExtra: Integer;
    hInstance: HINST;
    hIcon: HICON;
    hCursor: HCURSOR;
    hbrBackground: HBRUSH;
    lpszMenuName: PWideChar;
    lpszClassName: PWideChar;
  end;
  {$EXTERNALSYM tagWNDCLASS}
  tagWNDCLASS = tagWNDCLASSA;
  TWndClassA = tagWNDCLASSA;
  TWndClassW = tagWNDCLASSW;
  TWndClass = TWndClassA;
  {$EXTERNALSYM WNDCLASSA}
  WNDCLASSA = tagWNDCLASSA;
  {$EXTERNALSYM WNDCLASSW}
  WNDCLASSW = tagWNDCLASSW;
  {$EXTERNALSYM WNDCLASS}
  <b>WNDCLASS = WNDCLASSA</b>;

1 użytkowników online, w tym zalogowanych: 0, gości: 1