⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 h20000424-23.htm

📁 对于学习很有帮助
💻 HTM
字号:
<html><head><script language="JavaScript">	function reset(){   for ( var i=0; i < document.Form1.elements.length; i++ )     { document.Form1.elements[i].options[0].selected=true }}function going(url){        parent.location=url;        reset();}</script><style><!--A:link {text-decoration: none; color: #000000; font-family: 宋体}A:visited {text-decoration: none; color: #000000; font-family: 宋体}A:active {text-decoration: none; font-family: 宋体}A:hover {text-decoration: underline:#ffffff; color: #ff0000}body,table {font-size: 9pt; font-family: 宋体}.H1 {font-size: 9pt ; line-height:9pt; align=center}.ourfont {font-size: 9pt ; line-height:9pt; }.ourfont1 {font-size: 9pt ; line-height:9pt; }--></style><meta http-equiv="Content-Type" content="text/html; charset=gb2312"><title>在Delphi中不使用VCL库建立窗口&nbsp; </title></head><body topmargin="0" leftmargin="0"><div align="center"><center><table border="0" cellPadding="0" cellSpacing="0" width="700"><tbody>  <tr>    <td><p class="content4"><span class="font"><img border="0" height="3" src="../../soft/pix.gif" width="700"></span></td>  </tr></tbody></table></center></div><div align="center"><center><table border="0" cellPadding="0" cellSpacing="0" width="700"><tbody>  <tr>    <td bgColor="#3399ff" width="658"><p class="ourfont"><span class="font">&nbsp; </span><a style="text-decoration: none; color: rgb(255,255,255)" href="../os/H00705-2.htm">操作系统</a><font color="#FFFFFF"><span class="font"><span> |</span></span></font><a style="color: rgb(255,255,255); text-decoration: none" href="../image/H00705-14.htm">图像处理</a><font color="#FFFFFF"><span>|<span class="font"> </span></span></font><a style="color: rgb(255,255,255); text-decoration: none" href="../autoCAD/H00705-19.htm">辅助设计</a><span class="font"><font color="#FFFFFF"><span> | </span></font></span><a style="color: rgb(255,255,255); text-decoration: none" href="../data/H00705-18.htm">数     据 库</a><span class="font"><font color="#FFFFFF"><span> | </span></font></span><a style="color: rgb(255,255,255); text-decoration: none" href="H00706-1.htm">高级编程</a><span class="font"><font color="#FFFFFF"><span> | </span></font></span><a style="color: rgb(255,255,255); text-decoration: none" href="../netuse/H00705-20.htm">网络应用</a><font color="#FFFFFF"><span><span class="font"> | </span></span></font><a style="color: rgb(255,255,255); text-decoration: none" href="../webpage/H00705-21.htm">网页制作</a><font color="#FFFFFF"><span><span class="font"> |</span></span></font> <a style="color: rgb(255,255,255); text-decoration: none" href="../technic/H00706-3.htm">技术交流     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </a><a style="color: rgb(255,255,255); text-decoration: none" href="http://202.100.13.77/clslyb/default.asp?clsid=jiaoc"><font color="#FFFFFF"><strong>过客留言</strong></font></a></td>    <td bgColor="#3399ff" width="32"><p align="center" class="ourfont"><a href="mailto:net@163.sn.cn"><img src="../../soft/email.gif" alt="email.gif (493 字节)" border="0" WIDTH="20" HEIGHT="19"></a></td>  </tr></tbody></table></center></div><div align="center"><center><table border="1" cellSpacing="1" width="700" bordercolor="#3399FF"><tbody>  <tr>    <td align="left" bgColor="#FFFFFF" vAlign="top" width="700" bordercolor="#0000FF" bordercolorlight="#0000FF" bordercolordark="#0000FF"><p class="ourfont"> </p>    <p align="center">在Delphi中不使用VCL库建立窗口&nbsp; </p>    <p><br>      Borland的Delphi语言中提供了类似于VB中ActiveX的VCL控件库,利用它建立程序界面是十分方便的,但是这也带来了一个问题,就是即使建立一个非常简单的窗口,Delphi也会将所有的控件编译进去,使得程序十分庞大(通过常规方式建立一个仅包含一个窗口,不响应任何消息的程序的尺寸大概就有至少200K字节以上)。<br>      这里,我向大家介绍一个不使用VCL库建立窗口的方法。首先打开一个文本编辑器(例如NotePad),然后在其中输入以下的程序代码:<br>      program Project2;<br>      uses<br>       Windows;<br>      const<br>       AppName = ‘Windows’;<br>       WM_DESTROY = 2;<br>       WM_LBUTTONUP = 514;<br>      {$R *.RES}<br>      //窗口处理函数<br>      function WindowProc(Window:Hwnd;Amessage,wParam,<br>       lParam:LongInt):LongInt;stdcall;export;<br>      begin<br>       WindowProc:=0;<br>       case AMessage of<br>       WM_DESTROY:<br>       begin<br>       PostQuitmessage(0);<br>       Exit;<br>       end;<br>       WM_LBUTTONUP:<br>       begin<br>       PostQuitmessage(0);<br>       Exit;<br>       end;<br>       end;<br>       WindowProc := DefWindowProc(Window,AMessage,wParam,lParam);<br>      end;<br>      <br>      //注册窗口函数<br>      function WinRegister:Boolean;<br>      var<br>       WindowClass:TWndClass;<br>      begin<br>      WindowClass.style:=cs_hredraw or cs_vRedraw or cs_NoClose;<br>       WindowClass.lpfnWndProc := @WindowProc;<br>       WindowClass.cbClsExtra := 0;<br>       WindowClass.cbWndExtra := 0;<br>       WindowClass.hInstance := Hinstance;<br>       WindowClass.hIcon := LoadIcon(0,idi_Application);<br>       WindowClass.hCursor := LoadCursor(0,idc_Arrow);<br>      WindowClass.hbrBackground:=HBrush(COLOR_BTNFACE);<br>       WindowClass.lpszMenuName := nil;<br>       WindowClass.lpszClassName := AppName;<br>      <br>       Result:=RegisterClass(WindowClass)&lt;&gt;0;<br>      end;<br>      <br>      //建立工具栏窗口函数<br>      function WinCreate:HWnd;<br>      var<br>       hWindow:Hwnd;<br>       pcharTemp:PChar;<br>      begin<br>       hWindow:=CreateWindowEx(WS_EX_RTLREADING or WS_EX_TOOLWINDOW,<br>       AppName,‘Samples Window’,ws_OverlappedWindow,<br>       cw_UseDefault,cw_UseDefault,cw_UseDefault,cw_UseDefault,0,0,<br>       Hinstance,nil);<br>       if hWindow&lt;&gt;0 then<br>       begin<br>       pcharTemp:=‘Samples’;<br>       ShowWindow(hWindow,cmdShow);<br>       TextOut(GetWindowDC(hWindow),10,50,pcharTemp,7);<br>       UpdateWindow(hWindow);<br>       end;<br>      <br>       Result:=hWindow;<br>      end;<br>      <br>      var<br>       AMessage:TMsg;<br>       hWindow:HWnd;<br>      begin //主程序部分<br>       if not WinRegister then<br>       begin<br>       MessageBox(0,‘窗口注册失败’,nil,mb_ok);<br>       Exit;<br>       end;<br>       hWindow:=WinCreate;<br>       if hWindow=0 then<br>       begin<br>       MessageBox(0,‘建立窗口失败’,nil,mb_ok);<br>       Exit;<br>       end;<br>       While GetMessage(AMessage,0,0,0)do<br>       begin<br>       TranslateMessage(AMessage);<br>       DispatchMessage(AMessage);<br>       end;<br>       Halt(AMessage.wParam);<br>      end.<br>      将上面的内容以 Project2.dpr 为文件名保存到Delphi的Bin目录中,然后使用Delphi中的DCC32来编译工程文件,具体的使用方法是:<br>    DCC32 Project2.dpr 。在编译过程中可能有一些警告(Warning)消息,不要理会。编译完成后,在Bin目录下会产生一个Project2.exe的文件,查看一下,这个文件是不是“缩水”了很多呢?在我的机器上编译出来的程序只有17K左右,这同使用C++编译的程序大小几乎没有什么两样。分析上面的程序,使用C++编写过Windows下程序的读者可能会觉得十分的熟悉,的确,同C++编写一样。在Delphi中不使用VCL编写窗口界面也需要三个函数:窗口建立函数、窗口注册函数和窗口消息处理函数。在上面的程序中,函数WinCreate是窗口建立函数,这个函数通过CreateWindowsEx函数建立一个工具栏窗口,窗口建立成功后显示窗口并在窗口中10,50的位置输出“Samples”。WindowProc函数是窗口消息处理函数,这个函数只处理两个消息:WM_DESTROY和WM_LBUTTONUP。在得到这两个消息后退出。WinRegister是窗口注册函数,这个函数注册WinCreate建立的窗口并禁止窗口系统菜单的“关闭”项,同时将WindowProc定义为窗口消息处理函数。<br>      对于使用Pascal语言,对C++不熟悉的朋友来说,只要根据自己的需要对上面的程序稍微做一些修改,就可以编写同C++编写出来的一样“苗条”的程序了。<br>      以上程序在Borland Delphi4.0,Win98下编译通过。 </td>  </tr></tbody></table></center></div><hr align="center" SIZE="1" width="700"><p align="center" class="ourfont"><span><span><font color="#000000">&nbsp; <a style="color: rgb(0,0,0); text-decoration: none" href="../../soft/network/index.htm">互联网络</font><font color="#FFFFFF"> </font></a><font color="#000000">|</span></span><a href="../../soft/system/index.htm" style="color: rgb(0,0,0); text-decoration: none">系统工具</a><span>|<span> <a href="../../soft/tools/index.htm" style="color: rgb(0,0,0); text-decoration: none">实用工具</a> | <a href="../../soft/multimedia/index.htm" style="color: rgb(0,0,0); text-decoration: none">媒体工具</a> | <a href="../../soft/image/index.htm" style="color: rgb(0,0,0); text-decoration: none">图形图像</a> | <a href="../../soft/game/index.htm" style="color: rgb(0,0,0); text-decoration: none">游戏娱乐</a> | </span><a href="../../soft/usesoft/index.htm" style="color: rgb(0,0,0); text-decoration: none">软件<span>使用</a></font><font color="#FFFFFF"> |</font>&nbsp; </span></span></p><hr align="center" SIZE="1" width="700"><font color="#FFE8BB"><p align="center" class="ourfont"></font><font color="#000000"><span><span>&copy;&nbsp;Copyright 2000 </span></span>陕西公用计算机互联网信息中心<span><span> 版权所有 </font></p></span></span><p align="center" class="ourfont"><font color="#000000"><span><span>本站制作维护by <a style="color: rgb(0,0,0)" href="mailto:haiyuan@163.sn.cn">HAIYUAN</a></span></span></font></p><p align="center" class="ourfont"><font color="#000000"><span><span>电话:(029)8371051 8371055 8371049 联系信箱:<a href="mailto:net@163.sn.cn">net@163.sn.cn</a></span></span></font></p></body></html>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -