知识大全 比较VC和Delphi的WinTest工程

Posted 工程

篇首语:逆水行舟用力撑,一篙松劲退千寻。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 比较VC和Delphi的WinTest工程相关的知识,希望对你有一定的参考价值。

比较VC和Delphi的WinTest工程  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

#include     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 * ;  cy = (tm tmHeight + tm tmExternalLeading) * ;  ReleaseDC (hWindow dc);    hwndButton = CreateWindow (   button    Click Here   WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON    cx cy   hWindow   (HMENU)   ((LPCREATESTRUCT) lPrm) >hInstance   NULL  );    return ;  break;      case WM_DESTROY:    PostQuitMessage ( );  return ;  break;      case WM_PAINT:    dc = BeginPaint (hWindow &ps);  GetClientRect (hWindow &rc);    rc bottom = rc bottom / ;  DrawText (dc Hello World! &rc   DT_SINGLELINE | DT_CENTER | DT_VCENTER);    EndPaint (hWindow &ps);  return ;  break;      case WM_SIZE:    if (hwndButton && (wPrm == SIZEFULLSCREEN ||wPrm == SIZENORMAL))    rc left = (LOWORD(lPrm) cx) / ;  rc top = HIWORD(lPrm) * / cy / ;  MoveWindow (hwndButton rc left rc top cx cy TRUE);    return ;  break;      case WM_MAND:    if (LOWORD(wPrm) == && HIWORD(wPrm) == BN_CLICKED &&  (HWND) lPrm == hwndButton)    DestroyWindow (hWindow);    return ;  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 = ;  wcex cbWndExtra = ;  wcex hInstance = hInst;  wcex hIcon  = LoadIcon (NULL IDI_APPLICATION);  wcex hCursor = LoadCursor (NULL IDC_ARROW);  wcex hbrBackground = (HBRUSH)(COLOR_WINDOW+ );  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         hInst   NULL  );    ShowWindow (hWindowMain nShow);  UpdateWindow (hWindowMain);    while (GetMessage (&MyMsg ))    TranslateMessage (&MyMsg);  DispatchMessage (&MyMsg);    return MyMsg wParam;        其中选择Release方式编译 打开VC 的最小代码优化 编译生成的执行码为 KB   然后将其翻译成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 * ;  cy := (tm tmHeight + tm tmExternalLeading) * ;  ReleaseDC (hWindow dc);  pctst:= PCREATESTRUCT(lPrm);  hwndButton := CreateWindow(   button    Click Here   WS_CHILD or WS_VISIBLE or BS_PUSHBUTTON    cx cy   hWindow   HMENU( )   pctst^ hInstance   nil  );  Result:= ;  Exit;  end;    WM_DESTROY:  begin  PostQuitMessage( );  Result:= ;  Exit;  end;    WM_PAINT:  begin  dc := BeginPaint (hWindow ps);  GetClientRect (hWindow rc);    rc bottom := Round(rc bottom / );  DrawText (dc Hello World! rc   DT_SINGLELINE or DT_CENTER or DT_VCENTER);    EndPaint (hWindow ps);  Result:= ;  Exit;  end;    WM_SIZE:  begin  if (hwndButton<> ) and (wPrm = SIZEFULLSCREEN) or (wPrm = SIZENORMAL) then  begin  rc left := Round((LOWORD(lPrm) cx) / );  rc top := Round(HIWORD(lPrm) * / cy / );  MoveWindow (hwndButton rc left rc top cx cy True);  end;  Result:= ;  Exit;  end;    WM_MAND:  begin  if (LOWORD(wPrm) = ) and (HIWORD(wPrm) = BN_CLICKED) and  (HWND(lPrm) = hwndButton) then  begin  DestroyWindow (hWindow);  end;  Result:= ;  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 := ;  wcex cbWndExtra := ;  wcex hInstance := MainInstance;  wcex hIcon := LoadIcon ( IDI_APPLICATION);  wcex hCursor := LoadCursor ( IDC_ARROW);  wcex hbrBackground := HBRUSH(COLOR_WINDOW+ );  wcex lpszClassName := WinTestWin ;  wcex hIconSm := LoadIcon ( IDI_APPLICATION);    RegisterClassEx (wcex);    hWindowMain := CreateWindow (   WinTestWin    Hello   WS_OVERLAPPEDWINDOW   CW_USEDEFAULT   CW_USEDEFAULT   CW_USEDEFAULT   CW_USEDEFAULT         MainInstance   nil  );    ShowWindow (hWindowMain CmdShow);  UpdateWindow (hWindowMain);    while GetMessage (MyMsg )=True do  begin  TranslateMessage (MyMsg);  DispatchMessage (MyMsg);  end;    end     最后发现Delphi生成的代码仅有 k 比VC小了一半以上 说明Delphi有一个不错的编译器 加之VCL的可视化功能 应该是一个很好的开发工具 以我来看 Delphi开发大型系统是一点问题没有的 甚至可能性能将超过VC 只是VCL的高封装层次使得使用VCL的程序通常都大 但开发效率却不是VC可以比的 cha138/Article/program/Delphi/201311/8414

相关参考

知识大全 VC++.NET几个比较难缠的问题及其解决方法

VC++.NET几个比较难缠的问题及其解决方法  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  问

知识大全 Delphi软件工程师试题

Delphi软件工程师试题  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!您为什么选择软件开发这个行

知识大全 Delphi中动态链接库两种调用方式的比较

Delphi中动态链接库两种调用方式的比较  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!一动态链接

知识大全 解析PHP中VC6 X86和VC9 X86的区别及 Non Thread Safe的意思

解析PHP中VC6X86和VC9X86的区别及NonThreadSafe的意思  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,

白癜风和VC有哪些关系呢

大家都知道白癜风患者的身上会有明显的白斑,而我们身上之所以颜色不是白色的是因为我们皮肤中有黑色素。患者身上的白斑就是因为局部缺乏黑色素的结果。那么我们常常提到的VC又与白斑的形成及黑色素有什么关联呢?

白癜风和VC有哪些关系呢

大家都知道白癜风患者的身上会有明显的白斑,而我们身上之所以颜色不是白色的是因为我们皮肤中有黑色素。患者身上的白斑就是因为局部缺乏黑色素的结果。那么我们常常提到的VC又与白斑的形成及黑色素有什么关联呢?

知识大全 VC#2005快速入门之使用do语句

VC#2005快速入门之使用do语句  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  while和

鱼虾饵料宜加VC

鱼虾VC缺乏时,主要表现为食欲不振、生长缓慢、体态异常、游动缓慢等,严重时甚至出现类似哺乳动物的坏血病症状。例如草鱼缺乏VC时,易引起眼窝充血、鳍基部出血、鳃盖出血及腹腔出血等症状。虾类的典型VC缺乏

鱼虾饵料宜加VC

鱼虾VC缺乏时,主要表现为食欲不振、生长缓慢、体态异常、游动缓慢等,严重时甚至出现类似哺乳动物的坏血病症状。例如草鱼缺乏VC时,易引起眼窝充血、鳍基部出血、鳃盖出血及腹腔出血等症状。虾类的典型VC缺乏

知识大全 Delphi设计形象的动态三维饼图

Delphi设计形象的动态三维饼图  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!在进行数据比较或者