RSPEC::RAILS介绍(转载分享)

版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/zzp2009hs/article/details/8555580

        这篇博文在都定网上看到的,但是豆丁比较坑,要10元钱才好下载。下载共享出来与大家分享,如有版权问题,请与我联系。

Spec::rails
---------------------------
一个将RSpec引入RailsRails插件
特点:
1.
可以使用RSpec独立的测试modelsviewscontrollersheplers
2.
整合了具夹(fixture)的载入
3.
modelscontrollers特别制作的生成器,可以生成指定的测试RSpec文件来代替原来rails默认生成的tests文件。
4.
增加了很多易读的匹配器
愿景:
 
对那些刚认识TDD这个概念的人来说,rails的测试支持是一个大的飞跃。弄好这些测试就相当的棒了,因为这样的rails程序通常会比没有测试支持的rails程序要容易维护的多。
 
对于我们这些经历了TDD到现在的BDD的人来说,还必须考虑在现有支持上那些spec之间依赖性的问题。为此,RSpec支持4种规范。这主要启发于Test::Rails,这个zenTest内置rails框架。
 
我们还建立良好的mockingstubbing的支持,以助于打破那些不同关联间的依赖关系。

不同类型的ExampleGroups
-------------------------------------------
对如下示例的spec类型,Spec::Rails有各自不同的ExampleGroups子类来支持:

ModelExamples
这个和rails内置的单元测试工具相同。讽剌的是(对那些传统的TDD'er),我们认为这些只是与数据库相关的(言下之意,rails内置的test只是提供了数据库相关的测试)。
详细示例

ControllerExamples
除了不能真的给你转向views外,这和你在rails里做功能测试差不多。而且如果你喜欢,你也可以强制它转向一个view。你可以设置预期的模板,以代替设置预期转向的页面。
详细示例

viewExamples
这是rails功能测试的别一部分。Viewspec可以让你建立设置指定(感谢ZenTest
详细示例

Helper示例
你可以直接测试你heplers里的指定方法。
详细示例

Fixtures
--------------------------------
你可以在你任何的specs中使用fixture,如modelviewcontrollerhelper,都可以。如果你想在全局中使用fixture,你可以在spec/spec_helper.rb设置。看下面的例子:

命名约定:
为了明确和一致,RSpec在目录和rake任务上使用和Rails内置测试模块稍微不同的命名约定
project
 |
  +--app
  |
  +--...
  |
 +--spec
      |
     +-- spec_helper.rb
      |
     +-- controllers
      |
     +-- helpers
      |
     +-- models
      |
     +-- views
Rake
任务也对应的命名

Models
---------------------
Model
specSRAILS_ROOT/spec/models/目录中,并提供对fixtures的支持

Expectations
---------------------
Model
样板支持如下的自定义Expectations
详见:Spec::Rails::Expectations
Records
Model.shouldhave(:no).records
Model.should have(1).record
Model.shouldhave(3).records

这个比Model.find(:all).length.should== 3.要简略一些

Error
model.shouldhave(:no).errors_on(:attribute)
model.shouldhave(1).error_on(:attribute)
model.shouldhave(3).errors_on(:attribute)

Controllers
-----------------------------
Controllers
spec$RAILS_ROOT/spec/controllers/
相对Test::UnitSpec::Rails不需要在setup方法中初始化controller。取而代之的是把controller类传给describe方法。Spec::Rails会自动给你实例化一个controller,在Examples中你可以直接访问该controller的方法

views独立开来
-----------------------------
默认情况下,Spec::Rails将你的Controlleractions与相关的views独立开来。这就让你可以在还没有views的时候测试你的controllers,并在当views出错的时候保持这些(controller)spec结果。

整合views
------------------------------
如果你要整合views的测试功能(在很多的功能测试中),你可以在代码中加入“integrate_views”
describeArticlesController do
  integrate_views
 ...
end
整合后,你可以使用views中使用才能使用的Expectations。详见viewsExamples

与数据库分离
-----------------------------
我们强烈建议您使用RSpecmocking/stubbing框架来拦截类级的调用,如:find:create甚至:new,从而引入mock实例来代替事实的active_record实例。
这容许你的specs专注于controller所处理的事而不用担心那些复杂的验证和关联,这些验证和关联spec
会在ModelExamples中去处理。
account=mock_model(Account)
Account.should_receive(:find).with("37").and_return(account)

account=mock_model(Account)
Account.stub!(:find).and_return(account)
Mocks
Stubs框架详细信息详见其文档。

ResponseExpectations
----------------------------
 
这个Expectations在分离模式或整合模式中都能使用。详见Spec::Rails::Expectations
Response.shouldbe_success
 
当返回200状态,测试才能通过。注:分离模式下,这也返回真,所以它的用处不大,但起码你的specs不会终止。
 response.should be_success
  response.should be_redirect
 
返回300-399状态时通过。
 response.should be_redirect
  response.shouldrender_template
  get 'some_action'
  response.shouldrender_template("path/to/template/for/action")
 response.should have_text
  get 'some_action'
 response.should have_text("expected text")
 response.should redirect_to
  get 'some_action'
 response.should redirect_to(:action => 'other_action')
 
还支持如下的格式:
 response.should redirect_to(:action => 'other_action')
 response.should redirect_to('path/to/local/redirect')
 response.shouldredirect_to('http://test.host/some_controller/some_action')
 response.should redirect_to('http://some.other.domain.com')
 assigns, flash and session
 
使用如下方法访问assigns,flash session.
 assigns[:key]
  flash[:key]
  session[:key]
RoutingExpectations(
路由Expectations)
--------------------------------
验证通过路由来获得的地址
route_for(:controller=> "hello", :action => "world").should =="/hello/world"
验证路由发送过来的参数
params_from(:get,"/hello/world").should == {:controller => "hello",:action => "world"}

Views
-----------------------------
 View Examples
位于$RAILS_ROOT/spec/views/
 Spec::Rails
支持完全从他们controllers分离出的views测试。
 
这让你可以在没有controllers或是相关acitons被开发之前的时候测试和写你的views。这也意味着controllers中引入的bugs并不会使views的测试用例失败。
 
正如介绍中说有,这是一个很大的好处,但是他们将controllers和他们的views关互产生的Bugs给隐藏起来了。我们强烈建议将这些独立的views测试与高层次的集成测试结合起来,最好使用Cucumber
 
注:Cucumber是一个BDDBehaviourDrivenDevelopment)工具。
 Spec::Rails::Expectations
中还提供了几个可用的函数。
  
Conveniences
-------------------------------
assigns
 
使用assigns[:key]来给view中的实例变量赋值。我们推荐您这里使用mock框架,而不是使用真实的model对象,这样可以使viewspecmodels的变更中独立开来。
   # example
 article =mock_model(Article)
 article.should_receive(:author).and_return("Joe")
 article.should_receive(:text).and_return("thisis the text of the article")
 assigns[:article] =article
 assigns[:articles] = [article]
 
 #template
 <% for article in @articles -%>
 <!--etc -->
    flash
paramssession
 
使用flash[:key],params[:key]session[:key]来给viewexample中的值赋值。
   # example
 flash[:notice] = "Message inflash"
 params[:account_id] = "1234"
 session[:user_id]= "5678"
 
 # template
 <%=flash[:notice] %>
 <%= params[:account_id] %>
 <%=session[:user_id] %>

Examples支持下面的自定义expectations
----------------------
 Spec::Rails
viewExamples支持下面的自定义expectations
 response.shoud have_tag
 
这个覆盖了assert_select,并可以在集成模式下的所有viewexamplescontrollerExamples都可以使用。
   response.should have_tag('div') #
如果有div标记则通过
 response.shouldhave_tag('div#interesting_div')
 response.shouldhave_tag('div', 'expected content')
 response.shouldhave_tag('div', /regexp matching expected content/)
 response.shouldhave_tag('form[action=?]', things_path)
 response.shouldhave_tag("input[type=?][checked=?]", 'checkbox','checked')
 response.should have_tag('ul') do
  with_tag('li', 'list item 1')
   with_tag('li', 'listitem 2')
   with_tag('li', 'list item 3')
 end
 
注:任何的hash值都可以是Stringsregexps,并得到相应的评价。
 response[:capture].shouldhave_tag
 
这个方法可以访问那些被content_for捕获的内容。
 1.example
    response[:sidebar].shouldhave_tag(‘div’)
  2.template
    <%content_for :sidebar do %>
   Sidebar contenthere
 <% end %>
Mocking
stubbinghelpers
 
如果你希望使用mockstubhelper方法,这些可以在template对象中完成:
 template.should_receive(:current_user).and_return(mock("user"))

Helpers
----------------------------------------
 Helper Examples
$RAILS_ROOT/spec/helpers/
 
helpersspecs很容易,只要告诉ExampleGrouphelper的名字就可以了
  describe RegistrationHelper do
   ...
 end
 
这将会在ExampleGroup中得到一个包含了这个helper的对象
Conveniences
---------------------
assigns
 
使用assigns[:key]来在包含了这个helperview中给实例变量赋值。详见上面的鸽子。

writing
---------------------------
 
使用Spec::RailsExamples介绍
  
 Spec::Rails
支持4种不同类型的可招执examples
 1.Models Examples
  2.View Examples
  3.ControllorExamples
  4.Helper Examples
 
使用这些各专门ExampleGroup子类可以让你访问适当的服务和方法。他们被放在各自相应的目录中,并以*_spec.rb的明显方法标注出来:
   spec/controllers/**/*_spec.rb
 spec/helpers/**/*_spec.rb
 spec/models/**/*_spec.rb
 spec/views/**/*_spec.rb
 
警告:如果你没有遵守这些约定,那可以得不到正确的ExampleGroup子类。如果你更喜欢不管这些约定,那你也可以通过传递一个hash值给describe方法来获得正确的ExampleGroup子类:
   describe "some model", :type => :model do
  ...
 end
 
在:model,:view,:controller:helper都生效。
  
Generators
(生成器)
---------------------------------
Spec::Rails
包含了一个生成器,你可以用来生成modelsRESTfulControllers,它和Rails内置的生成器基本一样。唯一不同的是,他多帮你会在spec目录下生成一个specs来代替test,还有一个fixtures用来提供测试数据。如下例:
rubyscript/generate rspec_scaffold purchase order_id:integercreated_at:datetime amount:decimal
ruby script/generaterspec_model person
ruby script/generate rspec_controller person

详细的用法,可以以上命令不加参数获得其帮助。

运行 
---------------------
标准的spec命令:
 script/specpath/to/directory/with/specs
 script/specpath/to/individual_spec.rb

快速运行模式--drb(推荐)
------------------------
每次运行都输入所有的Rails环境变量,spec运行起来就很慢了。为了加速测试速度,Spec::Rails安装一个守护进程脚本,用于加载本地Rails应用,并用DRb侦听传入的连接。

打开一个shell来运行spec服务:
script/spec_server

现在你可以使用--drb参数来使用这个功能了。
如果你使用Rake来运行,应该把--drb加给spec/spec.opts文件。

注意到默认情况下,有的类和modules不要rails重新载入,在spec中也是一样的。你也可以修改rails的环境文件中的策略变量来让rails每次都重新载入他们。详细rails的文档。

使用Rake来运行specs
 
注意到rake任务不能使用快速Rails_spec命令--就是说只能使用标准的spec。同时我们注意到它预设的都是以_spec结尾的文件,所以你必须遵从如下的约定。
  
 
注意到你可以通过编辑sepc/spec.opts文档来配置传给RSpec的选项。
 
那运行所有的spec(包括plugins)的代码是:
   rake spec
 rake spec:app
 
包括plugins在内的specs
   rake spec:all
 
你也可单独运行modelscontrollerviewhelper或是pluginspecs
   rake spec:models
 rake spec:controllers
 rakespec:views
 rake spec:helpers
 rake spec:plugins
 
查看rake中所有的RSpec任务:
   rake --tasks spec



展开阅读全文

分享』Android 启动过程(转载

11-01

1. Boot系统初始化, 具体过程参见(system\core\init\Init.c)中的main函数,这时候,手机或者模拟器出现的画面是一个console,显示“ANDROID”msg。rnrn rnrn2. 初始化成功后,就开始mounting系统,具体参见(system\core\mountd\Mountd.c) 中的main函数。rnrn rnrn3.接下来运行ndroidRuntime,并开始启动java虚拟机dalvikvm。rnrn rnrn4. Java虚拟机启动成功后,开始系统初始化。系统初始的第一步是用JNI方式实现的,对应java代码为(frameworks\base\services\java\com\android\server\SystemServer.java) init1(Native)函数,对应的JNI C++代码为(frameworks\base\core\jni\server\com_android_server_SystemServer.cpp),而实现的C++代码为rnrn(frameworks\base\cmds\system_server\library\ System_init.cpp) 中的system_init()函数。rnrn rnrn5. system_init调用SurfaceFlinger,SurfaceFlinger的readyToRun()函数用BootAnimation来实现开机动画,这时候手机或者模拟器显示是一副背景图加一个动态的小机器人。rnrn rnrn6. 系统初始化的第二步,将启动ServerThread进程,参见SystemServer.init2()。ServerThread将启动各种系统服务,如Power Manager、Activity Manager等等,具体参见ServerThread的run函数,ServerThread同在SystemServer.java中。rnrn rnrn7.这之后的事,应该就是进入系统了。(这部分没有调查过)。rnrn转自:[url=http://blog.sina.com.cn/baiduman2010]http://blog.sina.com.cn/baiduman2010[/url] 论坛

JSF使用( 转载 )分享

08-24

rn原文地址:http://www.javaworld.com/javaworld/jw-07-2004/jw-0719-jsf.htmlrnrn使用JavaServer Faces(JSF)、Spring Framework和Hibernate建立一个真实的Web应用程序rn内容概要rn使用JSF建立一个真实的Web应用程序不是没有意义的任务,这篇文章介绍了如何将JSF与Sping Framework和Hibernate集成,并且给出了使用这些技术建立这个真实的Web应用程序的最佳实践和设计指导rn JavaServer Faces(JSF)技术是J2EE应用程序的一个新的用户接口框架,它非常适合基于MVC(Model-View-Controller)体系结构的应用程序。已经有大量的文章介绍JSF。然而,很多文章都是站在理论研究的层面上,没有挑战一个真实的企业开发。很多问题没有解决,例如,JSF怎样全面适合MVC体系结构?JSF如何与其他JAVA框架集成?业务逻辑应该放在JSF的backing beans里面吗?怎样处理JSF里面的安全问题?最重要的是你怎样使用JSF建立一个真实的Web应用程序?rn 这篇文章涉及所有这些问题。它向你展示如何集成其他特定的Java框架,Spring Framework和Hibernate,它示范怎样去创建一个叫JCatalog的Web应用程序,一个在线的产品目录系统。这篇文章使用JCatalog例子,介绍了Web应用程序设计的每一个阶段,包括业务需求收集,分析,技术选择,高层体系结构和详细设计。这篇文章论述了JCatalog里面好的和不好的技术,示范了应用程序设计中一些关键方面的方法和步骤。rn 这篇文章是写给正在从事基于J2EE Web应用程序的Java架构师,开发者,它不是对JSF、Spring Framework和Hibernate的入门教程。如果您对这些领域不熟悉,请参考文章最后的资源链接。rn例子应用程序的功能需求rn 这篇文章的例子应用程序JCatalog是一个真实的Web应用程序,例子足够现实是为了决定应用程序架构而进行意味深长的讨论的基础。我通过介绍JCatalog项目的需求开始。我在这里谈到后面贯穿于整个文章的内容是为了演示技术选择和体系结构设计。rn设计Web应用程序的第一步是收集系统的功能需求,这个例子应用程序是一个典型的电子商务应用系统。用户能浏览产品目录和查看产品细节,管理员能管理产品目录。功能还可以增加,举例来说,为了开发一个成熟的电子商务系统,可以添加库存管理和订单处理的功能。rn用例rn用例分析被用于去访问例子应用程序的功能需求,图1是应用程序的用例图。 rnrnrnrn 图1 用例图rnrn 一个用例图确定在一个系统中的参与者以及参与者可以执行的操作。例子应用中7个用例必须被实现。参与者中的User能浏览产品目录和察看产品细节。一旦用户以Administrator身份连接到系统,他就能创建新产品,编辑存在的产品,删除老的产品。rn业务规则rnJCatalog 必须符合下面的业务规则:rn每个产品有一个唯一的产品IDrn每个产品至少属于一个目录rn产品ID一旦被创建就不能改变rn假定rn对于产品的设计和实现,我们做下面的假定。rn英语是默认语言;不要求国际化rn目录中不超过500种产品rn目录的更新不频繁rn页面流rn图2显示了所有JCatalog的页面和它们之间的转换。rnrn 图2 页面流图rnrn 应用程序有两组页面:公共的国际互联网和管理员的企业内部网。企业内部网只有对那些成功登陆到系统的用户有效。产品概要页面是公用的,它作为产品目录的内容包含在一个HTML框架里面。产品列表是一个特殊的目录,只能被管理员看见,它包含创建、编辑和删除产品的链接。rn 图3是目录页的一个模型。理想情况下,每一个页面所有的控制和必要的内容明细的模型应该被包含在需求文档里面。rnrn rn 图3 目录页面模型rn高级体系结构设计rn下一步的设计是Web应用程序的高级体系结构设计,它包括将应用程序细分成功能组件以及将这些组件划分到各自所属的层。高级体系结构设计独立于使用的技术。rn多层体系结构rn一个多层体系结构将整个系统划分成清晰的单元——客户端、表示层、业务逻辑层、集成层和企业信息系统(EIS),这保证了清晰的责任划分以及可维护性和可扩展性。三层或多层系统已经被证明比没有业务逻辑层的客户-服务器系统具有更多的可升级性和柔韧性。rn客户端是数据模型被消费和呈现的地方。对于一个Web应用程序,客户层通常是Web浏览器。基于浏览器的瘦客户不包含表示逻辑;它依赖于表示层。rn表示层使用业务逻辑层为用户服务,它知道怎样去处理一个客户请求,怎样去和业务逻辑层结合以及怎样去选择下一个试图去显示。rn业务逻辑层包含一个应用程序的业务对象和业务服务。它从表示层接受请求,基于请求处理业务逻辑,作为访问EIS层资源的的中介。业务逻辑层组件使用许多系统级别的服务,例如,安全管理、事物管理和资源管理。rn集成层是业务逻辑层和EIS层之间的桥梁。它封装了与EIS层相结合的逻辑。有时,集成层和业务逻辑层的结合是作为中间层被提到。rn应用程序数据在EIS层被持久化,包括关系数据库,面向对象数据库和遗留系统。rnJCatalog 的体系结构设计rn图4显示了JCatalog的高级体系结构设计以及它怎样适合多层体系结构。rnrn 图4 高级体系结构图rnrn应用程序使用了一个多层的非分布式的体系结构,图4显示应用程序层和每一层技术选择的划分。它也用于应用程序的部署图。对于一个可配置的体系结构,表示层、业务逻辑层和集成层被定位在同样的Web容器。定义良好的接口隔离了每一层的职责。可配置的体系结构使应用程序简单和可升级。rn对于表示层,经验告诉我们,最好的实践是选择一个存在的,被验证的Web应用框架,远比设计开发一个定制的框架好。我们有几个Web应用框架可供选择,举例来说,Struts、WebWork和JSF。对于JCatalog项目,我们使用JSF。rn对于业务逻辑层,不是使用EJB(Enterprise JavaBeans)就是使用POJO(plain old Java objects)。如果应用程序是分布式的,EJB具有远程接口是一个较好的选择。因为JCatalog是一个典型的没有远程访问请求的Web应用程序,POJO在Spring框架的帮助下,用于实现业务逻辑层。rnPure JDBC(Java Database Connectivity):这是最灵活的实现方法;然而,低级的JDBC和不好的JDBC代码工作是麻烦的,执行的不好。rnEntity beans:一个容器管理持久化(CMP,container-managed persistence)的entity bean是隔离数据访问代码和处理O/R(object- relational) mapping数据持久化的昂贵的方法。它是一个以应用服务器为中心的解决办法。一个entity bean不和特定的数据库紧耦合,但是应用程序和EJB容器进耦合。rnO/R mapping framework:一个O/R影射的框架采用以对象为中心的方法实现数据持久化。一个以对象为中心的应用程序是容易开发和高度轻便的。在这个领域内存在几个框架——JDO(Java Data Objects),Hibernate,Toplink。CocoBase是一个新的例子。在例子应用程序中我们使用HIbernate。rn现在,让我们讨论将应用程序的每一个层联合起来设计的问题。因为JSF相对来说是一个新技术,我强调一下它的使用。rn 论坛

好文共分享 (转载 homezj )

03-23

[color=#FF0000]转载一位 homezj 大虾的制作的 ToolBar 工具栏控件[/color]rnrn但是不明白怎么封装,怎么用这个类?具体一点谢谢rnrn原文如下:rnrn[code=VB] (一) rnMS的ToolBar是是最容易找到找的工具栏控件了,简单方便实用,但它的缺点也是明显的,样式古板,与这个时代有点不合拍。为解决这个问题,我专门写了一个类。rn 其实ToolBar提供了一个CustomDraw功能,MS为你已搭好了ToolBar的框架,只是ToolBar的模样交给你自己绘,很简单地,就可以用任意你想要的模样,使用ToolBar的所有功能,这比自己做ToolBar是不是更容易更方便?rn 该功能当然是通过消息机制触发,其核心就是通过WM_NOTIFY消息,这个消息的lParam参数,就是指向一个NMHDR结构的地址,通过NMHDR 结构,我们可得知产生消息的hwnd等信息,确定控件类型,并进一步决定整个结构的类型是什么,进而获得NMCUSTOMDRAW和 NMTBCUSTOMDRAW结构,NMTBCUSTOMDRAW最前面就是NMCUSTOMDRAW,而NMCUSTOMDRAW最前面就是 NMHDR,所以一个NMHDR、NMCUSTOMDRAW,NMCUSTOMDRAW实际上都是同一个地址lParam,只是需根据前面信息,最终确定整个结构的长度而已。rnrn WM_LBUTTONDOWN、WM_LBUTTONUP消息本应与本类无关,只是ToolBar中带菜单的样式的按钮,我一时不知如何获取其Drap消息,所以被迫采用了判断鼠标动作的权宜之计,不知哪位能把这个改改。rnrn DrawToolbarButton过程是改变按钮样式的核心内容,在这部分下下功夫,就可以做出自己理想的ToolBar了rnrn'测试窗体中的代码:需有个ToolBar,最好有ImageList。rnOption ExplicitrnPrivate Sub Command1_Click()rnDim i As Longrn With oTbrrn Randomizern 'If .BackPicture = "" Thenrn ' .BackPicture = "e:\12.jpg"rn 'Elsern ' .BackPicture = ""rn 'End Ifrn .BorderColor = vbBlue '只有BorderStyle大于3时才有效rn .BackColor = Rnd * (2 ^ 24)rn .TextColor = Rnd * (2 ^ 24)rn .TextHiColor = Rnd * (2 ^ 24)rn i = .BorderStyle + 1rn If i > 4 Then i = 0rn .BorderStyle = i '取值范围0-4rn End WithrnEnd SubrnPrivate Sub Command2_Click()rn If oTbr Is Nothing Thenrn Set oTbr = New cToolbarrn With oTbrrn .BindToolBar Toolbar1.hWndrn End Withrn Command2.Caption = "取消样式"rn Command1.Enabled = Truern Elsern Set oTbr = Nothingrn Toolbar1.Refreshrn Command2.Caption = "加载样式"rn Command1.Enabled = Falsern End IfrnEnd SubrnrnrnPrivate Sub Form_Load()rn Command1.Caption = "随机变样"rn Command2.Caption = "加载样式"rn Command2.Enabled = Truern Command1.Enabled = FalsernEnd SubrnrnPrivate Sub Form_Unload(Cancel As Integer)rn Set oTbr = NothingrnEnd Subrn--------------------------------------------------rnrnrn--------------------------------------------------rn'标准模块中的代码:rnOption ExplicitrnPublic oTbr As cToolbarrnPublic OldWindowProc As LongrnPrivate Const WM_NOTIFY As Long = &H4ErnPrivate Const WM_LBUTTONDOWN = &H201rnPrivate Const WM_LBUTTONUP = &H202rnPrivate Declare Function CallWindowProc Lib "user32" Alias "CallWindowProcA" (ByVal lpPrevWndFunc As Long, ByVal hWnd As Long, ByVal Msg As Long, ByVal wParam As Long, ByVal lParam As Long) As LongrnPublic Function TBSubClass(ByVal hWnd As Long, ByVal Msg As Long, ByVal wp As Long, ByVal lp As Long) As Longrn Dim ProcOK As Longrn Static MouseDown As Booleanrn If Msg = WM_NOTIFY Thenrn ProcOK = oTbr.MsgProc(lp, MouseDown)rn ElseIf Msg = WM_LBUTTONDOWN Thenrn MouseDown = Truern ElseIf Msg = WM_LBUTTONUP Thenrn MouseDown = Falsern End Ifrn If ProcOK Thenrn TBSubClass = ProcOKrn Elsern TBSubClass = CallWindowProc(OldWindowProc, hWnd, Msg, wp, lp)rn End IfrnEnd Function[/code]rnrn 论坛

韩国网站欣赏(转载..分享)

04-12

刚才无意找到个好东西,所以帖出来与大家分享:rn(转自http://www.designcool.net/coolweb/web_korea.htm)rn韩国网站欣赏rnhttp://www.homepg.co.kr/rnhttp://www.yoondesign.com/ rnhttp://www.rodingallery.org/rnhttp://www.toyota.co.kr/rnHYUNDAIrnhttp://www.hyundai.co.kr/rnGunyang ITTrnhttp://www.gunyangitt.com/rnhttp://www.kia.co.kr/rnrnWelcome to Renault Samsung Motors rnhttp://www.renaultsamsungm.com/rnrn部分购物站点:rnrnBoomBoom rnhttp://www.boomboom.co.kr/rnEDWIN INTERNATIONAL rnhttp://www.edwin.co.kr/rnhttp://www.lotte.com/rnhttp://www.baropay.co.kr/rnhttp://www.ticketlink.co.kr/rnrnrn部分优秀装饰类站点:rnhttp://www.magicinterior.net/rnhttp://www.swancarpet.co.kr/rnhttp://www.einteriorshop.co.kr/rnSein Designrnhttp://www.humaninterior.com/rnrnrn部分优秀旅游类站点:rnrnhttp://www.n7788.co.kr/rnhttp://www.abroad.co.kr/rnhttp://www.newtour.co.kr/ rnhttp://www.jal.co.kr/rnhttp://www.gangbuk.seoul.kr/ rnhttp://www.startvtour.com/rnhttp://www.naeil21.co.kr/rnhttp://korea.attic.co.kr/rnhttp://www.garosu.com/rn部分优秀门户类站点:rnhttp://www.chol.com/rnhttp://www.myfolder.net/rnWelcome.Korea.com rnhttp://welcome.korea.com/rnIBBClub rnhttp://www.ibbclub.co.kr/rnhttp://www.garosu.com/rnhttp://www.simmani.com/rnhttp://www.puckii.com/rnhttp://www.hanmir.com/rnhttp://www.ieasysoft.com/rnKBSrnhttp://www.kbs.co.kr/rnrn韩方网站 B 2 C 网站集合rnhttp://www.joa21.net/rnhttp://www.ilovezzim.com/rnhttp://www.hanbay.com/rnhttp://www.couplegift.co.kr/rnhttp://www.speedmeeting.co.kr/rnhttp://www.manialab.co.kr/rnhttp://www.tntee.co.kr/rnhttp://www.beeseojob.com/rnhttp://www.jkmarket.co.kr/rn rnhttp://www.kofic.com/ rnhttp://www.cwd.go.kr/rnhttp://www.ktf.co.kr/rnhttp://www.maf.go.kr/ rnhttp://www.bizoweb.com/port_list.jsprnrnhttp://www.webcns.co.kr/portfolio/website.htmrnrnrnhttp://www.oashoppingmall.com/rnhttp://miryangnet.com/rnhttp://www.jejudosite.com/rnhttp://www.newsb.co.kr/rnhttp://phoneface.co.kr/rnhttp://www.hojuonly.com/yellow/yellow.asprnhttp://www.coamkorea.com/ rnrnrnhttp://na-tec.com/rnhttp://www.mubyung.co.kr/index.phprnhttp://www.rist.re.kr/rnhttp://lexpia.com/rnhttp://www.supertranslator.co.kr/index.asprnhttp://younginglb.com/rnhttp://www.bridgeaccess.co.kr/rnhttp://www.hsdgt.com/rnhttp://www.wdobae.com/index2.htmlrnhttp://www.leponia.com/index.htmlrnhttp://www.kuka.co.kr/chi/main/index.htmrnrnrnhttp://www.ktf.co.kr/eng/main.jsprnhttp://www.cm-corp.co.kr/index.htmrnhttp://www.zenuine.com/ rnrnrnhttp://www.carpool.co.kr/rnhttp://www.comwave.co.kr/kor/index.htm rnrnrnhttp://www.tft-tech.co.kr/main.htmrnhttp://www.menuprinting.co.kr/index.htmrnhttp://www.carpool.co.kr/ rnhttp://www.jeil21.co.kr/rnrnhttp://www.moleg.go.kr/rnhttp://www.kois.go.kr/rnhttp://www.lgsolution.co.kr/rnhttp://www.ktf.co.kr/eng/main.jsprnhttp://www.ktf.co.kr/rnhttp://www.domainbank.co.kr/index.htmlrnhttp://english.kangnam.seoul.kr/quick/useful.htmrnhttp://www.ceranics.com/index.asprnhttp://www.zenuine.com/rnhttp://www.carpool.co.kr/rnhttp://www.loan-cardinfo.co.kr/rnhttp://www.comwave.co.kr/kor/index.htmrnhttp://www.pelo.co.kr/rnhttp://www.jeil21.co.kr/rnhttp://www.menuprinting.co.kr/rnhttp://www.goworldgo.net/korean/index.htmrnhttp://www.pipakorea.com/main.htmlrnhttp://www.myaccessory.net/index.htmlrnhttp://www.goairx.com/index.htmlrnhttp://www.tft-tech.co.kr/main.htmrnhttp://www.anycar-job.co.kr/rnhttp://www.iprsystem.co.kr/rnhttp://www.happyzip.co.kr/index.htmrn rn rnrnhttp://www.iloveschool.co.kr/rnhttp://www.com.ne.kr/rnhttp://www.hihome.com/rn设计rnhttp://www.onoffkorea.com/rnhttp://www.x-game.co.kr/rn门户rnhttp://www.nate.com/rnhttp://www.hanmir.com/rnhttp://www.simmani.com/rnhttp://www.altavista.co.kr/rnhttp://www.empas.com/rnhttp://www.naver.com/rnhttp://www.onkino.co.kr/rnhttp://gembc.intizen.com/rn韩-永进出版社rnhttp://www.youngjin.com/ rnhttp://www.ngtv.net/rnhttp://www.buynjoy.com/jsp/shop/ViewMall.jsprnhttp://www.daum.net/rnhttp://www.dongashopping.co.kr/rnhttp://www.intermate.pe.kr/DreamMat...gn_overseas.htmrnhttp://www.lotte.com/rnhttp://www.officeplus.co.kr/index.jsprnhttp://www.samsungmall.co.kr/mallfront_sism.jsprnhttp://www.s1.co.kr:11000/rnhttp://www.carecamp.com/ rnrnhttp://speedmeeting.co.kr/rnhttp://www.boomboom.co.kr/rnhttp://www.bbbkorea.org/rnhttp://www.lotte.com/rnhttp://www.baropay.co.kr/rnhttp://www.goworldgo.net/rnhttp://www.designsil.co.kr/rnhttp://www.goairx.com/rnhttp://www.naejang.net/rnhttp://www.pipakorea.com/rnrnrnrnhttp://design.mooni.co.kr/rnhttp://www.designdb.com/rnhttp://www.designmd.co.kr/rnhttp://www.on-design.com/web/happym.htmlrnhttp://www.kaywon.ac.kr/rnhttp://www.design.co.kr/rnhttp://www.happym.net/rnhttp://www.kbs.co.kr/rnhttp://www.yorizori.com/rnhttp://www.ontooniverse.com/rnhttp://job.sbs.co.kr/rnhttp://www.duggo.net/rnhttp://www.weddingone.co.kr/rnhttp://www.e-sens.co.kr/main.phprnhttp://bokdanzi.co.kr/rnhttp://www.dreampia.co.kr/rnhttp://www.kmhealth.co.kr/rnhttp://www.gkbox.com/rnhttp://www.hydra.pe.kr/rnhttp//shop.daum.net/rnhttp://www.xcard.co.kr/default.asprnhttp://www.whitehair.co.kr/hair/index.php rnrnhttp://www.flashclub.co.kr/rnhttp://reelworld.com/reelworld.htmlrnhttp://www.katb.or.kr/index.htmlrnhttp://www.gender.or.kr/rnhttp://heart.or.kr/main.htmlrnhttp://www.koreahospital.com/rnhttp://www1.kisti.re.kr/~siis/rnhttp://www.soodiet.co.kr/ rnrn韩国设计师作品集rnhttp://www.brainwork.co.kr/Portfolio/portfolio.htmrnrnhttp://www.boomboom.co.kr/ rnhttp://speedmeeting.co.kr/ rnhttp://www.bbbkorea.org/ rnhttp://www.lotte.com/ rnhttp://www.baropay.co.kr/ rnhttp://www.goworldgo.net/ rnhttp://www.designsil.co.kr/ rnhttp://www.goairx.com/ rnhttp://www.naejang.net/ rnhttp://www.pipakorea.com/ rnhttp://design.mooni.co.kr/ rnhttp://www.designdb.com/ rnhttp://www.designmd.co.kr/ rnhttp://www.on-design.com/web/happym.html rnhttp://www.kaywon.ac.kr/ rnhttp://www.design.co.kr/ rnhttp://www.happym.net/ rnhttp://www.kbs.co.kr/ rnhttp://www.yorizori.com/ rnhttp://www.ontooniverse.com/ rnhttp://job.sbs.co.kr/ rnhttp://www.duggo.net/ rnhttp://www.weddingone.co.kr/ rnhttp://www.e-sens.co.kr/main.php rnhttp://bokdanzi.co.kr/ rnhttp://www.dreampia.co.kr/ rnhttp://www.kmhealth.co.kr/ rnhttp://www.gkbox.com/ rnhttp://www.hydra.pe.kr/ rnhttp://shop.daum.net/ rnhttp://www.xcard.co.kr/default.asp rnhttp://www.whitehair.co.kr/hair/index.php rnhttp://www.flashclub.co.kr/ rnhttp://reelworld.com/reelworld.html rnhttp://www.soodiet.co.kr/ rnhttp://www.pcsnaracom.com/ rnhttp://www.okgajun.co.kr/ rnhttp://pure114.com/index.php rnhttp://www.jeuncell.com/ rnrnhttp://www.atm-link.co.kr/rnhttp://www.kwinfo.co.kr/rnhttp://www.misan.co.kr/main.htmrnhttp://www.emac.co.kr/rnhttp://www.indisoft.co.kr/rnhttp://www.kihologistics.co.kr/main.htm rnrnhttp://www.jejudosite.com/rnhttp://www.usgtf.co.kr/rnhttp://www.vocaledu.pe.kr/ rnrnhttp://www.e-sens.co.kr/portfolio_form/list.htmlrn 论坛

没有更多推荐了,返回首页