亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > Delphi > 正文

比較VC和Delphi的WinTest工程

2019-11-18 18:04:51
字體:
來源:轉載
供稿:網友
 

看過幾篇關于VC和Delphi比較的文章,自己也有心寫寫代碼試試,我在VC6下新建了一個工程,叫WinTest。代碼如下:

#include <windows.h>

HWND hwndButton;
int cx, cy;

LRESULT CALLBACK MainWndPRoc (HWND hWindow, UINT nMsg, WPARAM wPrm, LPARAM lPrm)
{

 HDC dc;
 PAINTSTRUCT ps;
 RECT rc;
 switch (nMsg)
 {
  case WM_CREATE:
  {
   TEXTMETRIC tm;

   dc = GetDC (hWindow);
   SelectObject (dc, GetStockObject (SYSTEM_FIXED_FONT));
   GetTextMetrics (dc, &tm);
   cx = tm.tmAveCharWidth * 30;
   cy = (tm.tmHeight + tm.tmExternalLeading) * 2;
   ReleaseDC (hWindow, dc);

   hwndButton = CreateWindow (
     "button",
     "Click Here",
     WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON,
     0, 0, cx, cy,
     hWindow,
     (HMENU) 1,
     ((LPCREATESTRUCT) lPrm)->hInstance,
     NULL
     );

   return 0;
   break;
  }

  case WM_DESTROY:
  {
   PostQuitMessage (0);
   return 0;
   break;
  }

  case WM_PAINT:
  {
   dc = BeginPaint (hWindow, &ps);
   GetClientRect (hWindow, &rc);

   rc.bottom = rc.bottom / 2;
   DrawText (dc, "Hello, World!", -1, &rc,
   DT_SINGLELINE | DT_CENTER | DT_VCENTER);

   EndPaint (hWindow, &ps);
   return 0;
   break;
  }

  case WM_SIZE:
  {
   if (hwndButton && (wPrm == SIZEFULLSCREEN ||wPrm == SIZENORMAL))
   {
    rc.left = (LOWord(lPrm) - cx) / 2;
    rc.top = HIWORD(lPrm) * 3 / 4 - cy / 2;
    MoveWindow (hwndButton,rc.left, rc.top, cx, cy, TRUE);
   }
   return 0;
   break;
  }

  case WM_COMMAND:
  {
   if (LOWORD(wPrm) == 1 && HIWORD(wPrm) == BN_CLICKED &&
    (HWND) lPrm == hwndButton)
   {
    DestroyWindow (hWindow);
   }
   return 0;
   break;
  }
 }

 return DefWindowProc (hWindow, nMsg, wPrm, lPrm);
}

//winmain
int __stdcall WinMain (HINSTANCE hInst, HINSTANCE hPrev, LPSTR lpCmd, int nShow)
{
 HWND hWindowMain;
 MSG MyMsg;

 WNDCLASSEX wcex;

 wcex.cbSize = sizeof(WNDCLASSEX);
 wcex.style   = CS_HREDRAW | CS_VREDRAW;
 wcex.lpfnWndProc = (WNDPROC)MainWndProc;
 wcex.cbClsExtra  = 0;
 wcex.cbWndExtra  = 0;
 wcex.hInstance  = hInst;
 wcex.hIcon   = LoadIcon (NULL, IDI_application);
 wcex.hCursor  = LoadCursor (NULL, IDC_ARROW);
 wcex.hbrBackground = (HBRUSH)(COLOR_WINDOW+1);
 wcex.lpszClassName = "WinTestWin";
 wcex.hIconSm  = LoadIcon (NULL, IDI_APPLICATION);


 RegisterClassEx (&wcex);

 hWindowMain = CreateWindow (
  "WinTestWin",
  "Hello",
  WS_OVERLAPPEDWINDOW,
  CW_USEDEFAULT,
  CW_USEDEFAULT,
  CW_USEDEFAULT,
  CW_USEDEFAULT,
  0,
  0,
  hInst,
  NULL
 );

 ShowWindow (hWindowMain, nShow);
 UpdateWindow (hWindowMain);

 while (GetMessage (&MyMsg, 0, 0, 0))
 {
  TranslateMessage (&MyMsg);
  DispatchMessage (&MyMsg);
 }
 return MyMsg.wParam;
}


其中選擇Release方式編譯,打開VC6的最小代碼優化,編譯生成的執行碼為36.0KB,
然后將其翻譯成Delphi代碼,如下:

program WinTest;

uses
  Windows,Messages;

var
  hwndButton:HWND;
  cx,cy:Integer;

function MainWndProc (hWindow:HWND;nMsg:UINT;wPrm:WPARAM;lPrm:LPARAM):LRESULT;stdcall;
var
  dc:HDC;
 ps:PAINTSTRUCT;
 rc:TRect;
  tm:TEXTMETRIC;
  pctst:PCREATESTRUCT;
begin
  case nMsg of
    WM_CREATE:
    begin
      dc := GetDC (hWindow);
   SelectObject (dc, GetStockObject (SYSTEM_FIXED_FONT));
   GetTextMetrics (dc, tm);
   cx := tm.tmAveCharWidth * 30;
   cy := (tm.tmHeight + tm.tmExternalLeading) * 2;
   ReleaseDC (hWindow, dc);
      pctst:= PCREATESTRUCT(lPrm);
      hwndButton := CreateWindow(
     'button',
     'Click Here',
     WS_CHILD or WS_VISIBLE or BS_PUSHBUTTON,
     0, 0, cx, cy,
     hWindow,
     HMENU(1),
     pctst^.hInstance,
     nil
     );
      Result:=0;
      Exit;
    end;

    WM_DESTROY:
    begin
      PostQuitMessage(0);
      Result:=0;
      Exit;
    end;

    WM_PAINT:
    begin
   dc := BeginPaint (hWindow, ps);
   GetClientRect (hWindow, rc);

   rc.bottom := Round(rc.bottom / 2);
   DrawText (dc, 'Hello, World!', -1, rc,
   DT_SINGLELINE or DT_CENTER or DT_VCENTER);

   EndPaint (hWindow, ps);
   Result:= 0;
   Exit;
    end;

    WM_SIZE:
    begin
   if (hwndButton<>0) and (wPrm = SIZEFULLSCREEN)  or (wPrm = SIZENORMAL) then
   begin
    rc.left := Round((LOWORD(lPrm) - cx) / 2);
    rc.top := Round(HIWORD(lPrm) * 3 / 4 - cy / 2);
    MoveWindow (hwndButton,rc.left, rc.top, cx, cy, True);
   end;
   Result:= 0;
   Exit;
    end;

    WM_COMMAND:
    begin
   if (LOWORD(wPrm) = 1) and (HIWORD(wPrm) = BN_CLICKED) and
    (HWND(lPrm) = hwndButton) then
   begin
    DestroyWindow (hWindow);
   end;
   Result:= 0;
   Exit;
    end;

  end;

  Result:=DefWindowProc (hWindow, nMsg, wPrm, lPrm);

end;

//winmain
var
 hWindowMain:HWND;
 MyMsg:MSG;
 wcex:WNDCLASSEX;
begin
 wcex.cbSize := SizeOf(WNDCLASSEX);
 wcex.style := CS_HREDRAW or CS_VREDRAW;
 wcex.lpfnWndProc := @MainWndProc;
 wcex.cbClsExtra := 0;
 wcex.cbWndExtra := 0;
 wcex.hInstance := MainInstance;
 wcex.hIcon := LoadIcon (0, IDI_APPLICATION);
 wcex.hCursor := LoadCursor (0, IDC_ARROW);
 wcex.hbrBackground := HBRUSH(COLOR_WINDOW+1);
 wcex.lpszClassName := 'WinTestWin';
 wcex.hIconSm := LoadIcon (0, IDI_APPLICATION);

 RegisterClassEx (wcex);

 hWindowMain := CreateWindow (
  'WinTestWin',
  'Hello',
  WS_OVERLAPPEDWINDOW,
  CW_USEDEFAULT,
  CW_USEDEFAULT,
  CW_USEDEFAULT,
  CW_USEDEFAULT,
  0,
  0,
  MainInstance,
  nil
 );

 ShowWindow (hWindowMain, CmdShow);
 UpdateWindow (hWindowMain);

 while GetMessage (MyMsg, 0, 0, 0)=True do
 begin
  TranslateMessage (MyMsg);
  DispatchMessage (MyMsg);
 end;
 
end.

最后發現Delphi生成的代碼僅有16.5k,比VC小了一半以上。說明Delphi有一個不錯的編譯器,加之VCL的可視化功能,應該是一個很好的開發工具。 以我來看,Delphi開發大型系統是一點問題沒有的,甚至可能性能將超過VC,只是VCL的高封裝層次使得使用VCL的程序通常都大,但開發效率卻不是VC可以比的。 Delphi也同樣可以不使用VCL寫程序,像網上有人將Quake2的源碼翻譯成了Delphi的,效果與C寫的相差無幾。



上一篇:DELPHI中的快捷方式一覽(完全正式版)

下一篇:對Delphi接口的又一疑惑:怎么會自動釋構的?

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
學習交流
熱門圖片

新聞熱點

疑難解答

圖片精選

網友關注

亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产亚洲人成a一在线v站| 亚洲黄色成人网| 国产xxx69麻豆国语对白| 97超碰国产精品女人人人爽| 免费不卡在线观看av| 另类少妇人与禽zozz0性伦| 国产午夜精品全部视频在线播放| 国产香蕉一区二区三区在线视频| 日韩精品极品在线观看| 欧美高清电影在线看| 国产精品一区二区三区在线播放| 亚洲成人亚洲激情| 亚洲国产精品va在线看黑人动漫| 在线视频精品一| 国产精品视频精品视频| 欧美老肥婆性猛交视频| 中日韩午夜理伦电影免费| 92看片淫黄大片看国产片| 欧美日韩精品在线观看| 亚洲一区二区在线播放| 国产69精品久久久久久| 国产精品视频一| 日本精品久久久久影院| 国产精品久在线观看| 欧美午夜精品久久久久久久| 精品久久久久久久久久久久久久| 岛国av一区二区三区| 亚洲va久久久噜噜噜| 日韩电影中文字幕在线观看| 成人精品视频99在线观看免费| 亚洲国产精品嫩草影院久久| 欧美日韩国产专区| 久久精品视频在线观看| 日韩暖暖在线视频| 在线视频中文亚洲| 国产精品99一区| 欧美乱大交xxxxx另类电影| 91国内在线视频| 激情久久av一区av二区av三区| 欧美日韩中文字幕| 亚洲色图美腿丝袜| 97超级碰碰人国产在线观看| 国产精品高潮呻吟久久av黑人| 欧美xxxx做受欧美.88| 国产精品精品一区二区三区午夜版| 色偷偷亚洲男人天堂| 日韩成人在线视频网站| 亚洲国产日韩欧美在线图片| 欧美激情视频免费观看| 久久久久久久久久久久久久久久久久av| 欧美性极品xxxx做受| 欧美亚洲一区在线| 91免费在线视频| 国产精品久久久久久久9999| 亚洲天堂男人天堂| 久久精品国产亚洲7777| 欧美黑人又粗大| 国产区精品在线观看| 亚洲电影免费观看高清完整版在线观看| 国产自产女人91一区在线观看| 亚洲午夜性刺激影院| 欧美精品999| 久久这里只有精品99| 国产乱人伦真实精品视频| 在线视频免费一区二区| xvideos成人免费中文版| 亚洲无线码在线一区观看| 国外成人免费在线播放| 性色av一区二区咪爱| 国产精品露脸av在线| 精品国产一区av| 欧美亚洲午夜视频在线观看| 日韩欧美在线第一页| 国产欧美精品va在线观看| 美日韩精品免费观看视频| 亚洲色图激情小说| 亚洲wwwav| 国产精品尤物福利片在线观看| 91中文字幕一区| 在线精品高清中文字幕| 亚洲成人av中文字幕| 久久久97精品| 91中文字幕一区| 美女999久久久精品视频| 日韩电影中文字幕一区| 欧美一级高清免费播放| 成人激情在线观看| 欧美性极品xxxx娇小| 国产精品91免费在线| 91日本在线观看| 欧美激情二区三区| 欧美综合在线第二页| 欧美夫妻性视频| 欧美乱大交做爰xxxⅹ性3| 久久香蕉精品香蕉| 国产精品7m视频| 国产日韩中文字幕在线| 26uuu久久噜噜噜噜| 国产一区av在线| 久久精品国产v日韩v亚洲| 色在人av网站天堂精品| 国产精品视频男人的天堂| 久久久久久av| 羞羞色国产精品| 久久亚洲一区二区三区四区五区高| 精品国产自在精品国产浪潮| 全亚洲最色的网站在线观看| 国产精品免费一区豆花| 亚洲精品中文字幕有码专区| 91av成人在线| 久久好看免费视频| 日韩有码片在线观看| 91中文精品字幕在线视频| 中文字幕日韩精品有码视频| 欧美性xxxx极品高清hd直播| 亚洲伊人久久综合| 国产精品入口免费视| 国产精品一区二区在线| 97热精品视频官网| 国产美女直播视频一区| 国产精品白嫩初高中害羞小美女| 黑人巨大精品欧美一区二区一视频| 成人精品网站在线观看| 成人国产精品久久久久久亚洲| 国产欧美精品va在线观看| 亚洲一区二区久久久| 亚洲视频综合网| 亚洲精品98久久久久久中文字幕| 欧美精品福利视频| 2020久久国产精品| 一本色道久久88精品综合| 精品视频中文字幕| 日韩欧美在线国产| 国产精品成人一区二区三区吃奶| 色yeye香蕉凹凸一区二区av| 97久久久免费福利网址| 欧美日韩在线视频一区| 亚洲护士老师的毛茸茸最新章节| 亚洲欧美国产日韩中文字幕| 国产成人精品久久二区二区91| 欧美美女18p| 久久综合伊人77777尤物| 国产精品嫩草影院一区二区| 91精品视频在线看| 亚洲精品www久久久| 日韩国产一区三区| 亚洲美女中文字幕| 粉嫩av一区二区三区免费野| 国产成人精品视频在线观看| 91精品国产综合久久香蕉的用户体验| 日韩高清免费观看| 久久成人一区二区| 亚洲天堂一区二区三区| 国产精品福利在线观看网址| 亚洲aⅴ男人的天堂在线观看| 97久久久免费福利网址| 亚洲www在线| 色综合久久精品亚洲国产| 国产精品久久久av| 欧美一级淫片aaaaaaa视频| 亚洲美女免费精品视频在线观看| 日韩中文字幕在线视频播放| 久久久99久久精品女同性| 2020久久国产精品|