На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
В этом разделе можно создавать темы, которые относятся к поколению 32-битных компиляторов.
Здесь решаются вопросы портирования кода из старого доброго Турбо Паскаля в FPC, TMT, VP, GPC компиляторы, а также особенностей программирования на них для Windows/Linux и других ОС.
Указывайте тип компилятора, его версию, а также платформу (Windows/Linux/..) компиляции, другими словами, Target.
Модераторы: volvo877
  
> Экспорт windows библиотек
    Здравствуйте.
    Есть код
    ExpandedWrap disabled
      program b1;
       
      uses
        U_Patterns;
        
      var
        cyClient, cxCaps, cyChar, cyDesc : Integer;
        
      const
        iNumTypes = 5;
        show: array [0..iNumTypes] of
        record
          li : LongInt;
          sz : PChar;
        end =
        (
          (li:HS_BDIAGONAL;  sz:'HS_BDIAGONAL'),
          (li:HS_CROSS;      sz:'HS_CROSS'),
          (li:HS_DIAGCROSS;  sz:'HS_DIAGCROSS'),
          (li:HS_FDIAGONAL;  sz:'HS_FDIAGONAL'),
          (li:HS_HORIZONTAL; sz:'HS_HORIZONTAL'),
          (li:HS_VERTICAL;   sz:'HS_VERTICAL')
        );
        
      function WndProc(myWnd: HWND; Msg: Word; myWParam: Word;
        myLParam: LongInt): LongInt; export;
      var
        Ps: TPaintStruct;
        NewBrush: HBRUSH;
        fm: TTextMetric;
        brsh: HBRUSH;
        i, h, w: Integer;
        rect: TRect;
       
        myDC: HDC;
      begin
        WndProc := 0;
       
        case Msg of
          WM_CREATE:
            begin
              myDC := GetDC(myWnd);
              GetTextMetrics(myDC, fm);
              cxCaps := 20;
              cyChar := fm.tmHeight + 100;
              cyDesc := fm.tmDescent;
              ReleaseDC(myWnd, myDC);
            end;
       
          WM_PAINT:
            begin
              myDC := BeginPaint(myWnd, Ps);
              for i := 0 to iNumTypes do
              begin
                brsh := CreateHatchBrush(show[i].li, 0);
                rect.top := 20 + (cyChar div 4) + (i mod 3) * (cyChar);
                rect.left := (i div 3) * 250 + 10;
                rect.bottom := rect.top + cyChar;
                rect.right := rect.left + 120;
                SelectObject(myDC, brsh);
                DrawText(myDC, show[i].sz, -1, rect, DT_RIGHT);
                h := rect.left + 130;
                w := 10 + (i mod 3) * (cyChar);
                Rectangle(myDC, h + 10, w, h + cyChar - 10, w + cyChar - 20);
                DeleteObject(brsh);
              end;
              EndPaint(myWnd, Ps);
            end;
       
          WM_CLOSE:
            begin
              DestroyWindow(myWnd);
            end;
       
          WM_DESTROY:
            begin
              PostQuitMessage(0);
            end;
       
        else
          WndProc := DefWindowProc(myWnd, Msg, myWParam, myLParam);
        end;
      end;
       
      const
        szClientClass = 'Patterns';
        flFrameFlags = WS_CAPTION or WS_SYSMENU or WS_SIZEBOX or WS_MINIMIZEBOX or
          WS_MAXIMIZEBOX;
       
      var
        wc: TWndClass;
        MainWnd: HWND;
        Msg: TMsg;
       
      begin
        wc.style := 0;
        wc.lpfnWndProc := @WndProc;
        wc.cbClsExtra := 0;
        wc.cbWndExtra := 0;
        wc.hInstance := hInstance;
        wc.hIcon := LoadIcon(0, IDI_APPLICATION);
        wc.hCursor := LoadCursor(0, IDC_ARROW);
        wc.hbrBackground := COLOR_WINDOW + 1;
        wc.lpszMenuName := nil;
        wc.lpszClassName := szClientClass;
       
        if not RegisterClass(wc) then
        begin
          MessageBox(0, 'RegisterClass Failed!', 'Error!',
            MB_ICONEXCLAMATION or MB_OK);
          Exit;
        end;
       
        MainWnd := CreateWindow(szClientClass, szClientClass, flFrameFlags,
          CW_USEDEFAULT, CW_USEDEFAULT, 580, 400, 0, 0, 0, nil);
        if MainWnd = 0 then
        begin
          MessageBox(0, 'CreateWindow Failed!', 'Error!',
            MB_ICONEXCLAMATION or MB_OK);
          Exit;
        end;
       
        ShowWindow(MainWnd, SW_SHOW);
        UpdateWindow(MainWnd);
       
        while GetMessage(Msg, 0, 0, 0) do
        begin
          TranslateMessage(Msg);
          DispatchMessage(Msg);
        end;
        DestroyWindow(MainWnd);
       
      end.


    И мной составленный модуль
    U_Patterns.pas
    ExpandedWrap disabled
      unit U_Patterns;
       
      interface
       
      type
        PStr      = PChar;
        MakeIntResource = PStr;
       
      const
        hs_Horizontal = 0;       { ----- }
        hs_Vertical   = 1;       { ||||| }
        hs_FDiagonal  = 2;       { ///// }
        hs_BDiagonal  = 3;       { \\\\\ }
        hs_Cross      = 4;       { +++++ }
        hs_DiagCross  = 5;       { xxxxx }
        
        wm_Create           = $0001;
        wm_Paint            = $000F;
        wm_Close            = $0010;
        wm_Destroy          = $0002;
        
        dt_Right           = $0002;
        ws_Caption      = $00C00000;
        ws_SysMenu      = $00080000;
        ws_ThickFrame   = $00040000;
        ws_SizeBox = ws_ThickFrame;
        ws_MinimizeBox = $00020000;
        ws_MaximizeBox = $00010000;
        
        idi_Application = MakeIntResource(32512);
        idc_Arrow    = MakeIntResource(32512);
        color_Window          = 5;  
        mb_IconExclamation  = $0030;
        mb_Ok               = $0000;
        cw_UseDefault = Integer($8000);
        sw_Show            = 5;  
        
        
        
      type
        Bool     = WordBool;          { Windows compatible boolean }
        THandle  = Word;              { Global memory handle }
        TFarProc = Pointer;           { Procedure address }
        HWnd          = THandle;
        HDC           = THandle;
        HBrush        = THandle;
        HIcon    = THandle;
        HCursor  = THandle;  
        HMenu    = THandle;
        
        
        PRect = ^TRect;
        TRect = record
          left: Integer;
          top: Integer;
          right: Integer;
          bottom: Integer;
        end;  
        
        PPaintStruct = ^TPaintStruct;
        TPaintStruct = record
          hdc: HDC;
          fErase: Bool;
          rcPaint: TRect;
          fRestore: Bool;
          fIncUpdate: Bool;
          rgbReserved: array[0..15] of Byte;
        end;
        
        PTextMetric = ^TTextMetric;
        TTextMetric = record
          tmHeight: Integer;
          tmAscent: Integer;
          tmDescent: Integer;
          tmInternalLeading: Integer;
          tmExternalLeading: Integer;
          tmAveCharWidth: Integer;
          tmMaxCharWidth: Integer;
          tmWeight: Integer;
          tmItalic: Byte;
          tmUnderlined: Byte;
          tmStruckOut: Byte;
          tmFirstChar: Byte;
          tmLastChar: Byte;
          tmDefaultChar: Byte;
          tmBreakChar: Byte;
          tmPitchAndFamily: Byte;
          tmCharSet: Byte;
          tmOverhang: Integer;
          tmDigitizedAspectX: Integer;
          tmDigitizedAspectY: Integer;
        end;
        
        TColorRef = Longint;
        
        PWndClass = ^TWndClass;
        TWndClass = record
          style: Word;
          lpfnWndProc: TFarProc;
          cbClsExtra: Integer;
          cbWndExtra: Integer;
          hInstance: THandle;
          hIcon: HIcon;                       { Name clash }
          hCursor: HCursor;                   { Name clash }
          hbrBackground: HBrush;
          lpszMenuName: PChar;
          lpszClassName: PChar;
        end;
       
        PPoint = ^TPoint;
        TPoint = record
          x: Integer;
          y: Integer;
        end;
       
        PMsg = ^TMsg;
        TMsg = record
          hwnd: HWnd;
          message: Word;
          wParam: Word;
          lParam: LongInt;
          time: Longint;
          pt: TPoint;
        end;
       
       
       
        
        
        
      function GetDC(Wnd: HWnd): HDC;
      function GetTextMetrics(DC: HDC; var Metrics: TTextMetric): Bool;
      function ReleaseDC(Wnd: HWnd; DC: HDC): Integer;
      function BeginPaint(Wnd: HWnd; var Paint: TPaintStruct): HDC;
      function CreateHatchBrush(Index: Integer; Color: TColorRef): HBrush;
      function SelectObject(DC: HDC; hObject: THandle): THandle;
      function DrawText(DC: HDC; Str: PChar; Count: Integer; var Rect: TRect;
        Format: Word): Integer;
      function Rectangle(DC: HDC; X1, Y1, X2, Y2: Integer): Bool;
      function DeleteObject(Handle: THandle): Bool;
      procedure EndPaint(Wnd: HWnd; var Paint: TPaintStruct);
      function DestroyWindow(Wnd: HWnd): Bool;
      procedure PostQuitMessage(ExitCode: Integer);
      function DefWindowProc(Wnd: HWnd; Msg, wParam: Word;
        lParam: LongInt): LongInt;
      function LoadCursor(Instance: THandle; CursorName: PChar): HCursor;
      function RegisterClass(var WndClass: TWndClass): Bool;
      function UnregisterClass(ClassName: PChar; Instance: THandle): Bool;
      function MessageBox(WndParent: HWnd; Txt, Caption: PChar;
        TextType: Word): Integer;
      function CreateWindow(ClassName, WindowName: PChar; Style: LongInt;
        X, Y, Width, Height: Integer; WndParent: HWnd; Menu: HMenu;
        Instance: THandle; Param: Pointer): HWnd;
      function ShowWindow(Wnd: HWnd; CmdShow: Integer): Bool;
      procedure UpdateWindow(Wnd: HWnd);
      function GetMessage(var Msg: TMsg; Wnd: HWnd; MsgFilterMin,
        MsgFilterMax: Word): Bool;
      function TranslateMessage(var Msg: TMsg): Bool;  
      function DispatchMessage(var Msg: TMsg): LongInt;  
      function LoadIcon(Instance: THandle; IconName: PChar): HIcon;
       
       
       
      implementation  
       
      function GetDC;                 external 'USER' index 66;
      function GetTextMetrics;        external 'GDI' index 93;
      function ReleaseDC;             external 'USER' index 68;
      function BeginPaint;            external 'USER' index 39;
      function CreateHatchBrush;      external 'GDI' index 58;
      function SelectObject;          external 'GDI' index 45;
      function DrawText;              external 'USER' index 85;
      function Rectangle;             external 'GDI' index 27;
      function DeleteObject;          external 'GDI' index 69;
      procedure EndPaint;             external 'USER' index 40;
      function DestroyWindow;         external 'USER' index 53;
      procedure PostQuitMessage;      external 'USER' index 6;
      function DefWindowProc;         external 'USER' index 107;
      function LoadCursor;            external 'USER' index 173;
      function RegisterClass;         external 'USER' index 57;
      function UnregisterClass;       external 'USER' index 403;
      function MessageBox;            external 'USER' index 1;
      function CreateWindow;          external 'USER' index 41;
      function ShowWindow;            external 'USER' index 42;
      procedure UpdateWindow;         external 'USER' index 124;
      function GetMessage;            external 'USER' index 108;
      function TranslateMessage;      external 'USER' index 113;
      function DispatchMessage;       external 'USER' index 114;
      function LoadIcon;          external 'USER' index 174;
       
       
      end.

    компилирую
    Цитата
    dcc32 -b -UC:\BD20min\LIB b2.pas

    запускаю и вижу
    Цитата
    This application has failed to start because GDI.dll was not found.

    сам компилятор http://depositfiles.com/files/69425hg42
      В %SystemRoot%\system32 эта DLL присутствует? Вообще-то сейчас все больше GDI32.DLL ...

      P.S. http://pcsupport.about.com/od/findbyerrormessage/a/gdi-dll-not-found-missing-error.htm
        volvo877 должно работать.
        Потому что я это взял из WinProcs.pas осуда http://pascal.sources.ru/museum/bp7_13.zip
        (Под BPC это всё реализованно)

        Добавлено
        Помоему просто не происходит поиск
        Цитата volvo877 @
        В %SystemRoot%\system32 эта DLL присутствует?

        нет.

        НУ тогда стронно почему же под BPC всё работает.....
          Поменяй в Implementation-секции:

          ExpandedWrap disabled
                implementation  
                
                function GetDC;                 external 'USER32' name 'GetDC';
                function GetTextMetrics;        external 'GDI32' name 'GetTextMetricsA';
                function ReleaseDC;             external 'USER32' name 'ReleaseDC';
                function BeginPaint;            external 'USER32' name 'BeginPaint';
          ну, и так далее... Учти, что CreateWindow нет, есть CreateWindowEx...
          Цитата ccode10 @
          тогда стронно почему же под BPC всё работает.....
          Потому что Дельфи - это 32-битный компилятор, а не 16-ти, как BP...
            Цитата volvo877 @
            Поменяй в Implementation-секции:

            Попробовал, вот такой код
            ExpandedWrap disabled
              unit U_Patterns;
               
              interface
               
              type
                PStr      = PChar;
                MakeIntResource = PStr;
               
              const
                hs_Horizontal = 0;       { ----- }
                hs_Vertical   = 1;       { ||||| }
                hs_FDiagonal  = 2;       { ///// }
                hs_BDiagonal  = 3;       { \\\\\ }
                hs_Cross      = 4;       { +++++ }
                hs_DiagCross  = 5;       { xxxxx }
                
                wm_Create           = $0001;
                wm_Paint            = $000F;
                wm_Close            = $0010;
                wm_Destroy          = $0002;
                
                dt_Right           = $0002;
                ws_Caption      = $00C00000;
                ws_SysMenu      = $00080000;
                ws_ThickFrame   = $00040000;
                ws_SizeBox = ws_ThickFrame;
                ws_MinimizeBox = $00020000;
                ws_MaximizeBox = $00010000;
                
                idi_Application = MakeIntResource(32512);
                idc_Arrow    = MakeIntResource(32512);
                color_Window          = 5;  
                mb_IconExclamation  = $0030;
                mb_Ok               = $0000;
                cw_UseDefault = Integer($8000);
                sw_Show            = 5;  
                
                
                
              type
                Bool     = WordBool;          { Windows compatible boolean }
                THandle  = Word;              { Global memory handle }
                TFarProc = Pointer;           { Procedure address }
                HWnd          = THandle;
                HDC           = THandle;
                HBrush        = THandle;
                HIcon    = THandle;
                HCursor  = THandle;  
                HMenu    = THandle;
                
                
                PRect = ^TRect;
                TRect = record
                  left: Integer;
                  top: Integer;
                  right: Integer;
                  bottom: Integer;
                end;  
                
                PPaintStruct = ^TPaintStruct;
                TPaintStruct = record
                  hdc: HDC;
                  fErase: Bool;
                  rcPaint: TRect;
                  fRestore: Bool;
                  fIncUpdate: Bool;
                  rgbReserved: array[0..15] of Byte;
                end;
                
                PTextMetric = ^TTextMetric;
                TTextMetric = record
                  tmHeight: Integer;
                  tmAscent: Integer;
                  tmDescent: Integer;
                  tmInternalLeading: Integer;
                  tmExternalLeading: Integer;
                  tmAveCharWidth: Integer;
                  tmMaxCharWidth: Integer;
                  tmWeight: Integer;
                  tmItalic: Byte;
                  tmUnderlined: Byte;
                  tmStruckOut: Byte;
                  tmFirstChar: Byte;
                  tmLastChar: Byte;
                  tmDefaultChar: Byte;
                  tmBreakChar: Byte;
                  tmPitchAndFamily: Byte;
                  tmCharSet: Byte;
                  tmOverhang: Integer;
                  tmDigitizedAspectX: Integer;
                  tmDigitizedAspectY: Integer;
                end;
                
                TColorRef = Longint;
                
                PWndClass = ^TWndClass;
                TWndClass = record
                  style: Word;
                  lpfnWndProc: TFarProc;
                  cbClsExtra: Integer;
                  cbWndExtra: Integer;
                  hInstance: THandle;
                  hIcon: HIcon;                       { Name clash }
                  hCursor: HCursor;                   { Name clash }
                  hbrBackground: HBrush;
                  lpszMenuName: PChar;
                  lpszClassName: PChar;
                end;
               
                PPoint = ^TPoint;
                TPoint = record
                  x: Integer;
                  y: Integer;
                end;
               
                PMsg = ^TMsg;
                TMsg = record
                  hwnd: HWnd;
                  message: Word;
                  wParam: Word;
                  lParam: LongInt;
                  time: Longint;
                  pt: TPoint;
                end;
               
               
               
                
                
                
              function GetDC(Wnd: HWnd): HDC;
              function GetTextMetrics(DC: HDC; var Metrics: TTextMetric): Bool;
              function ReleaseDC(Wnd: HWnd; DC: HDC): Integer;
              function BeginPaint(Wnd: HWnd; var Paint: TPaintStruct): HDC;
              function CreateHatchBrush(Index: Integer; Color: TColorRef): HBrush;
              function SelectObject(DC: HDC; hObject: THandle): THandle;
              function DrawText(DC: HDC; Str: PChar; Count: Integer; var Rect: TRect;
                Format: Word): Integer;
              function Rectangle(DC: HDC; X1, Y1, X2, Y2: Integer): Bool;
              function DeleteObject(Handle: THandle): Bool;
              procedure EndPaint(Wnd: HWnd; var Paint: TPaintStruct);
              function DestroyWindow(Wnd: HWnd): Bool;
              procedure PostQuitMessage(ExitCode: Integer);
              function DefWindowProc(Wnd: HWnd; Msg, wParam: Word;
                lParam: LongInt): LongInt;
              function LoadCursor(Instance: THandle; CursorName: PChar): HCursor;
              function RegisterClass(var WndClass: TWndClass): Bool;
              function UnregisterClass(ClassName: PChar; Instance: THandle): Bool;
              function MessageBox(WndParent: HWnd; Txt, Caption: PChar;
                TextType: Word): Integer;
              function CreateWindow(ClassName, WindowName: PChar; Style: LongInt;
                X, Y, Width, Height: Integer; WndParent: HWnd; Menu: HMenu;
                Instance: THandle; Param: Pointer): HWnd;
              function ShowWindow(Wnd: HWnd; CmdShow: Integer): Bool;
              procedure UpdateWindow(Wnd: HWnd);
              function GetMessage(var Msg: TMsg; Wnd: HWnd; MsgFilterMin,
                MsgFilterMax: Word): Bool;
              function TranslateMessage(var Msg: TMsg): Bool;  
              function DispatchMessage(var Msg: TMsg): LongInt;  
              function LoadIcon(Instance: THandle; IconName: PChar): HIcon;
               
               
               
              implementation  
               
              function GetDC;                 external 'USER32' index 66;
              function GetTextMetrics;        external 'GDI32' index 93;
              function ReleaseDC;             external 'USER32' index 68;
              function BeginPaint;            external 'USER32' index 39;
              function CreateHatchBrush;      external 'GDI32' index 58;
              function SelectObject;          external 'GDI32' index 45;
              function DrawText;              external 'USER32' index 85;
              function Rectangle;             external 'GDI32' index 27;
              function DeleteObject;          external 'GDI32' index 69;
              procedure EndPaint;             external 'USER32' index 40;
              function DestroyWindow;         external 'USER32' index 53;
              procedure PostQuitMessage;      external 'USER32' index 6;
              function DefWindowProc;         external 'USER32' index 107;
              function LoadCursor;            external 'USER32' index 173;
              function RegisterClass;         external 'USER32' index 57;
              function UnregisterClass;       external 'USER32' index 403;
              function MessageBox;            external 'USER32' index 1;
              function CreateWindow;          external 'USER32' index 41;
              function ShowWindow;            external 'USER32' index 42;
              procedure UpdateWindow;         external 'USER32' index 124;
              function GetMessage;            external 'USER32' index 108;
              function TranslateMessage;      external 'USER32' index 113;
              function DispatchMessage;       external 'USER32' index 114;
              function LoadIcon;          external 'USER32' index 174;
               
               
              end.

            компилируеться
            но при запуске просто ничего невижу
            Сообщение отредактировано: ccode10 -
              Блин, ты не читаешь, что тебе пишут? По имени, а не по индексу!!! Ты уверен, что индексы процедур/функций остались прежними при переходе с Win16 на Win32? Я - нет. Тебе еще повезло, что программа просто ничего не делает. Черт знает что ты там вызываешь...
                Мне ещё повезло что ты сказал. Спасибо.
                Шас посижу...

                Добавлено
                Вот такой код сейчас
                ExpandedWrap disabled
                  unit U_Patterns;
                   
                  interface
                   
                  type
                    PStr      = PChar;
                    MakeIntResource = PStr;
                   
                  const
                    hs_Horizontal = 0;       { ----- }
                    hs_Vertical   = 1;       { ||||| }
                    hs_FDiagonal  = 2;       { ///// }
                    hs_BDiagonal  = 3;       { \\\\\ }
                    hs_Cross      = 4;       { +++++ }
                    hs_DiagCross  = 5;       { xxxxx }
                    
                    wm_Create           = $0001;
                    wm_Paint            = $000F;
                    wm_Close            = $0010;
                    wm_Destroy          = $0002;
                    
                    dt_Right           = $0002;
                    ws_Caption      = $00C00000;
                    ws_SysMenu      = $00080000;
                    ws_ThickFrame   = $00040000;
                    ws_SizeBox = ws_ThickFrame;
                    ws_MinimizeBox = $00020000;
                    ws_MaximizeBox = $00010000;
                    
                    idi_Application = MakeIntResource(32512);
                    idc_Arrow    = MakeIntResource(32512);
                    color_Window          = 5;  
                    mb_IconExclamation  = $0030;
                    mb_Ok               = $0000;
                    cw_UseDefault = Integer($8000);
                    sw_Show            = 5;  
                    
                    
                    
                  type
                    Bool     = WordBool;          { Windows compatible boolean }
                    THandle  = Word;              { Global memory handle }
                    TFarProc = Pointer;           { Procedure address }
                    HWnd          = THandle;
                    HDC           = THandle;
                    HBrush        = THandle;
                    HIcon    = THandle;
                    HCursor  = THandle;  
                    HMenu    = THandle;
                    
                    
                    PRect = ^TRect;
                    TRect = record
                      left: Integer;
                      top: Integer;
                      right: Integer;
                      bottom: Integer;
                    end;  
                    
                    PPaintStruct = ^TPaintStruct;
                    TPaintStruct = record
                      hdc: HDC;
                      fErase: Bool;
                      rcPaint: TRect;
                      fRestore: Bool;
                      fIncUpdate: Bool;
                      rgbReserved: array[0..15] of Byte;
                    end;
                    
                    PTextMetric = ^TTextMetric;
                    TTextMetric = record
                      tmHeight: Integer;
                      tmAscent: Integer;
                      tmDescent: Integer;
                      tmInternalLeading: Integer;
                      tmExternalLeading: Integer;
                      tmAveCharWidth: Integer;
                      tmMaxCharWidth: Integer;
                      tmWeight: Integer;
                      tmItalic: Byte;
                      tmUnderlined: Byte;
                      tmStruckOut: Byte;
                      tmFirstChar: Byte;
                      tmLastChar: Byte;
                      tmDefaultChar: Byte;
                      tmBreakChar: Byte;
                      tmPitchAndFamily: Byte;
                      tmCharSet: Byte;
                      tmOverhang: Integer;
                      tmDigitizedAspectX: Integer;
                      tmDigitizedAspectY: Integer;
                    end;
                    
                    TColorRef = Longint;
                    
                    PWndClass = ^TWndClass;
                    TWndClass = record
                      style: Word;
                      lpfnWndProc: TFarProc;
                      cbClsExtra: Integer;
                      cbWndExtra: Integer;
                      hInstance: THandle;
                      hIcon: HIcon;                       { Name clash }
                      hCursor: HCursor;                   { Name clash }
                      hbrBackground: HBrush;
                      lpszMenuName: PChar;
                      lpszClassName: PChar;
                    end;
                   
                    PPoint = ^TPoint;
                    TPoint = record
                      x: Integer;
                      y: Integer;
                    end;
                   
                    PMsg = ^TMsg;
                    TMsg = record
                      hwnd: HWnd;
                      message: Word;
                      wParam: Word;
                      lParam: LongInt;
                      time: Longint;
                      pt: TPoint;
                    end;
                   
                   
                   
                    
                    
                    
                  function GetDC(Wnd: HWnd): HDC;
                  function GetTextMetrics(DC: HDC; var Metrics: TTextMetric): Bool;
                  function ReleaseDC(Wnd: HWnd; DC: HDC): Integer;
                  function BeginPaint(Wnd: HWnd; var Paint: TPaintStruct): HDC;
                  function CreateHatchBrush(Index: Integer; Color: TColorRef): HBrush;
                  function SelectObject(DC: HDC; hObject: THandle): THandle;
                  function DrawText(DC: HDC; Str: PChar; Count: Integer; var Rect: TRect;
                    Format: Word): Integer;
                  function Rectangle(DC: HDC; X1, Y1, X2, Y2: Integer): Bool;
                  function DeleteObject(Handle: THandle): Bool;
                  procedure EndPaint(Wnd: HWnd; var Paint: TPaintStruct);
                  function DestroyWindow(Wnd: HWnd): Bool;
                  procedure PostQuitMessage(ExitCode: Integer);
                  function DefWindowProc(Wnd: HWnd; Msg, wParam: Word;
                    lParam: LongInt): LongInt;
                  function LoadCursor(Instance: THandle; CursorName: PChar): HCursor;
                  function RegisterClass(var WndClass: TWndClass): Bool;
                  function UnregisterClass(ClassName: PChar; Instance: THandle): Bool;
                  function MessageBox(WndParent: HWnd; Txt, Caption: PChar;
                    TextType: Word): Integer;
                  function CreateWindowEx(ExStyle: LongInt; ClassName, WindowName: PChar;
                    Style: LongInt; X, Y, Width, Height: Integer; WndParent: HWnd;
                    Menu: HMenu; Instance: THandle; Param: Pointer): HWnd;
                  function ShowWindow(Wnd: HWnd; CmdShow: Integer): Bool;
                  procedure UpdateWindow(Wnd: HWnd);
                  function GetMessage(var Msg: TMsg; Wnd: HWnd; MsgFilterMin,
                    MsgFilterMax: Word): Bool;
                  function TranslateMessage(var Msg: TMsg): Bool;  
                  function DispatchMessage(var Msg: TMsg): LongInt;  
                  function LoadIcon(Instance: THandle; IconName: PChar): HIcon;
                   
                   
                   
                  implementation  
                   
                  function GetDC;                 external 'USER32' name 'GetDC';
                  function GetTextMetrics;        external 'GDI32' name 'GetTextMetricsA';
                  function ReleaseDC;             external 'USER32' name 'ReleaseDC';
                  function BeginPaint;            external 'USER32' name 'BeginPaint';
                  function CreateHatchBrush;      external 'GDI32' name 'CreateHatchBrush';
                  function SelectObject;          external 'GDI32' name 'SelectObject';
                  function DrawText;              external 'USER32' name 'DrawTextA';
                  function Rectangle;             external 'GDI32' name 'Rectangle';
                  function DeleteObject;          external 'GDI32' name 'DeleteObject';
                  procedure EndPaint;             external 'USER32' name 'EndPaint';
                  function DestroyWindow;         external 'USER32' name 'DestroyWindow';
                  procedure PostQuitMessage;      external 'USER32' name 'PostQuitMessage';
                  function DefWindowProc;         external 'USER32' name 'DefWindowProcA';
                  function LoadCursor;            external 'USER32' name 'LoadCursorA';
                  function RegisterClass;         external 'USER32' name 'RegisterClassA';
                  function UnregisterClass;       external 'USER32' name 'UnregisterClassA';
                  function MessageBox;            external 'USER32' name 'MessageBoxA';
                  function CreateWindowEx;        external 'USER32' name 'CreateWindowExA';
                  function ShowWindow;            external 'USER32' name 'ShowWindow';
                  procedure UpdateWindow;         external 'USER32' name 'UpdateWindow';
                  function GetMessage;            external 'USER32' name 'GetMessageA';
                  function TranslateMessage;      external 'USER32' name 'TranslateMessage';
                  function DispatchMessage;       external 'USER32' name 'DispatchMessageA';
                  function LoadIcon;          external 'USER32' name 'LoadIconA';
                   
                   
                  end.

                но запуске опять ничего не вижу.....
                Сообщение отредактировано: ccode10 -
                  Вот такой кодПрикреплённый файлsource.zip (3,29 Кбайт, скачиваний: 175)

                  При запуске вижу все, что положено. А теперь обрати внимание на изменения. И в структурах, и в прототипах функций...
                    volvo877, о спасибо. Рабает всё.

                    Я тут хотел спросить. Я тут заметил что
                    ExpandedWrap disabled
                         ShowWindow(MainWnd, CmdShow{SW_SHOW});

                    но невижу откуда CmdShow берёться.

                    И может ты знаешь как при компиляции задать компилятору UNICODE директиву
                    И как можно сделать что тут под Pascal?
                    Тоесть хочу сделать какое своего рода переключение между UNICODE и ANSI

                    (ну больше мне ничего ненадо будет делать такого, это уже последнее)

                    Добавлено
                    P.S.

                    Сам синтаксис я как-бы не знаю
                      Цитата ccode10 @
                      невижу откуда CmdShow берёться.
                      Из модуля System. Там эта переменная описана. Точно так же, как и hInstance, hPrevInstance и CmdLine. А уж значения, которые ты получаешь через эти переменные, передаются от ОС при запуске программы.

                      Цитата ccode10 @
                      И может ты знаешь как при компиляции задать компилятору UNICODE директиву

                      ExpandedWrap disabled
                        >dcc32 -b -UC:\BD20min\LIB -DUNICODE b2.pas
                      , либо в тексте программы {$define UNICODE}...
                      0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                      0 пользователей:


                      Рейтинг@Mail.ru
                      [ Script execution time: 0,0471 ]   [ 18 queries used ]   [ Generated: 19.04.24, 16:55 GMT ]