Advertisement
Guest User

Untitled

a guest
Oct 21st, 2018
69
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pascal 4.73 KB | None | 0 0
  1. program Lab4;
  2.  
  3. uses windows,
  4.   messages; {èíòåðôåéñû ê ñèñòåìíûì DLL}
  5. Var
  6.   FontH  :  THandle;
  7.  
  8. function WndProc(hWnd: THandle; Msg: integer;
  9.                  wParam: longint; lParam: longint): longint;
  10.                  stdcall; forward;
  11.  
  12. procedure WinMain; {Îñíîâíîé öèêë îáðàáîòêè ñîîáùåíèé}
  13.   const szClassName='Shablon';
  14.   var   wndClass:TWndClassEx;
  15.         hWnd: THandle;
  16.         msg:TMsg;
  17.   MyFont  :  TLogFont;
  18.  
  19.  
  20. begin
  21.   wndClass.cbSize:=sizeof(wndClass);
  22.   wndClass.style:=cs_hredraw or cs_vredraw;
  23.   wndClass.lpfnWndProc:=@WndProc;
  24.   wndClass.cbClsExtra:=0;
  25.   wndClass.cbWndExtra:=0;
  26.   wndClass.hInstance:=hInstance;
  27.   wndClass.hIcon:=loadIcon(0, idi_Application);
  28.   wndClass.hCursor:=loadCursor(0, idc_Arrow);
  29.   wndClass.hbrBackground:=GetStockObject(black_Brush);
  30.   wndClass.lpszMenuName:=nil;
  31.   wndClass.lpszClassName:=szClassName;
  32.   wndClass.hIconSm:=loadIcon(0, idi_Application);
  33.  
  34.   RegisterClassEx(wndClass);
  35.  
  36.   hwnd:=CreateWindowEx(
  37.          0,
  38.          szClassName, {èìÿ êëàññà îêíà}
  39.          'Çàãîëîâîê îêíà',    {çàãîëîâîê îêíà}
  40.          ws_overlappedWindow,     {ñòèëü îêíà}
  41.          cw_useDefault,           {Left}
  42.          cw_useDefault,           {Top}
  43.          cw_useDefault,           {Width}
  44.          cw_useDefault,           {Height}
  45.          0,                       {õýíäë ðîäèòåëüñêîãî îêíà}
  46.          0,                       {õýíäë îêîííîãî ìåíþ}
  47.          hInstance,               {õýíäë ýêçåìïëÿðà ïðèëîæåíèÿ}
  48.          nil);                    {ïàðàìåòðû ñîçäàíèÿ îêíà}
  49.  
  50.         // Óñòàíàâëèâàåì ïàðàìåòðû íîâîãî øðèôòà
  51.   with MyFont do
  52.     begin
  53.     lfHeight := 18; // Âûñîòà  14pt * ppi( ïèêñåëåé íà äþéì) div 72
  54.     lfWidth  := 0;   //  Äëèíà
  55.     lfEscapement := -450;  // Óãîë íàêëîíà
  56.     lfOrientation:= lfEscapement;
  57.     lfWeight := 1000;   // Æèðíîñòü
  58.     lfItalic :=0;
  59.     lfUnderline:= 0;
  60.     lfStrikeOut:= 0;
  61.     lfCharSet :=0;
  62.     lfOutPrecision := 0;
  63.     lfClipPrecision := 0;
  64.     lfQuality := 0;
  65.     lfPitchAndFamily := 0;
  66.     lfFaceName := 'Courier New'#0;   // Íàçâàíèå øðèôòà
  67.     end;
  68.  
  69.   FontH := CreateFontIndirect( MyFont );
  70.  
  71.   ShowWindow(hwnd,sw_Show);  {îòîáðàçèòü îêíî}
  72.   updateWindow(hwnd);   {ïîñëàòü wm_paint îêîííîé ïðîöåäóðå, ïðîðèñîâàâ
  73.                          îêíî ìèíóÿ î÷åðåäü ñîîáùåíèé (íåîáÿçàòåëüíî)}
  74.  
  75.   while GetMessage(msg,0,0,0) do begin {ïîëó÷èòü î÷åðåäíîå ñîîáùåíèå}
  76.     TranslateMessage(msg);   {Windows òðàíñëèðóåò ñîîáùåíèÿ îò êëàâèàòóðû}
  77.     DispatchMessage(msg);    {Windows âûçîâåò îêîííóþ ïðîöåäóðó}
  78.   end; {âûõîä ïî wm_quit, íà êîòîðîå GetMessage âåðíåò FALSE}
  79.  
  80.   DeleteObject ( FontH );
  81.  
  82.  
  83.  
  84.  
  85.  
  86.  
  87.  
  88. end;
  89.  
  90. function WndProc(hWnd: THandle; Msg: integer; wParam: longint; lParam: longint): longint; stdcall;
  91.   var ps:TPaintStruct;
  92.       hdc:THandle;
  93.       hpen:THandle;
  94.       rect:TRect;
  95.       color:integer;
  96.       p:pointer;
  97.       bmi:^TBitmapInfo;
  98.       data:pointer;
  99.       f:file;
  100.       sze:integer;
  101.   type
  102.     Re  = record
  103.     left  :  longint;
  104.     top : longint;
  105.     right : longInt;
  106.     bottom  :  longint;
  107.   end;
  108.  
  109.   VAR
  110.       OldFont  :  THandle;
  111.       BmpXY : RECORD
  112.                 Left,
  113.                 Top,
  114.                 Right,
  115.                 Bottom  :  integer;
  116.               END;
  117.       OldMapMode  :  integer;
  118.       RRR  :  TRECT;
  119.       OldPen  :  THandle;
  120.       NewPen  :  THandle;
  121.   CONST
  122.     WWW  :  integer = 10;
  123.  
  124. begin
  125.   result:=0;
  126.   case Msg of
  127.     wm_paint:
  128.       begin
  129.         hdc:=BeginPaint(hwnd,ps); //Óäàëèòü WM_PAINT èç î÷åðåäè è íà÷àòü ðèñîâàíèå
  130.         GetClientRect(hwnd,rect);
  131.  
  132.         hPen:=SelectObject(hdc,createPen(PS_SOLID,WWW,rgb(0,0,200)));
  133.         SetRop2(hdc,r2_copypen);
  134.  
  135.         assignFile(f,'wallppr.bmp'); reset(f,1);
  136.         sze:=filesize(f);
  137.         getmem(p,sze);
  138.         blockread(f,p^,sze);
  139.         closeFile(f);
  140.  
  141.         integer(bmi):=integer(p)+sizeof(TBitmapFileheader);
  142.         integer(data):=integer(p)+TBitmapFileheader(p^).bfOffBits;
  143.  
  144.         //Áåðåì êîîðäèíàòû 70 ïðîöåíòîâ îò òåêóùåãî ðàçìåðà îêíà
  145.         With BmpXY do
  146.           begin
  147.             Left := rect.left;
  148.             Top := rect.top;
  149.             Right := Round ( 70 * rect.right / 100 );
  150.             Bottom := Round ( 70 * rect.bottom / 100 );
  151.           end;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement