VS2010 C++ MFC框架学习笔记2 - 创建一个简单的加法计算器(2)

VS2010 C++ MFC框架学习笔记2 - 创建一个简单的加法计算器(2) Title: VS2010 C++ MFC框架学习笔记2 - 创建一个简单的加法计算器(2) VS2010 C++ MFC框架学习笔记1 - 创建一个简单的加法计算器(1)里,我们入门了MFC的基本概念,现在我们要实践一个简单的加法器了。 ======================================== MFC程序: 创建对话框模板和修改对话框属性 什么是对话框 C++ Windows应用程序有很多类型,比如单文本类型,多文本,对话框,等等。一个360安全助手就是一个对话框,只不过做了很多美工。 Windows计算器也是一个对话框类型的程序。 创建对话框主要分两大步, 创建对话框资源:主要包括创建新的对话框模板、设置对话框属性和为对话框添加各种控件; 生成对话框类: 主要包括新建对话框类、添加控件变量和编写控件的消息处理函数等。 第一步:创建对话框资源 创建基于对话框的应用程序框架 创建对话框模板 修改对话框属性 添加各种控件 第二步:生成对话框类 | | | | | | | | | | | |

READ MORE

VS2010 C++ MFC框架学习笔记1 - 创建一个简单的加法计算器(1)

VS2010 C++ MFC框架学习笔记1 - 创建一个简单的加法计算器(1) ======================================= MFC程序框架及运行流程介绍 利用C++ MFC (微软基础类库)创建windows应用程序可以比较方便,因为微软打包好了很多基础东东,比如控件。 首先MFC写的程序的运行大致原理,要了解。 MFC应用程序的运行流程与SDK程序是类似的,都是先进行一些初始化过程,再注册并创建窗口,然后显示、更新窗口,最后进入消息循环,消息都由窗口过程函数处理。 在运行流程上有基本的掌握即可。 ======================================== MFC程序消息驱动机制 Windows应用程序是消息驱动的。在MFC软件开发中,界面操作或者线程之间通信都会经常用到消息,通过对消息的处理实现相应的操作。比较典型的过程是: 用户操作窗口, 然后有消息产生, 送给窗口的消息处理函数处理, 对用户的操作做出响应。 什么是消息 窗口消息一般由三个部分组成: 1) 一个无符号整数,是消息值; 2) 消息附带的WPARAM类型的参数; 3) 消息附带的LPARAM类型的参数。 其实我们一般所说的消息是狭义上的消息值,也就是一个无符号整数,经常被定义为宏。 什么是消息映射机制 MFC使用一种消息映射机制来处理消息,在应用程序框架中的表现就是一个消息与消息处理函数一一对应的消息映射表,以及消息处理函数的声明和实现等代码。当 窗口接收到消息时,会到消息映射表中查找该消息对应的消息处理函数,然后由消息处理函数进行相应的处理。SDK编程时需要在窗口过程中一一判断消息值进行相应的 处理,相比之下MFC的消息映射机制要方便好用的多。 Windows消息分类 先讲下Windows消息的分类。Windows消息分为系统消息和用户自定义消息。 Windows系统消息有三种: 1.标准Windows消息。除WM_COMMAND外以WM_开头的消息是标准消息。例如,WM_CREATE、WM_CLOSE。 2.命令消息。消息名为WM_COMMAND,消息中附带了标识符ID来区分是来自哪个菜单、工具栏按钮或加速键的消息。 3.通知消息。通知消息一般由列表框等子窗口发送给父窗口,消息名也是WM_COMMAND,其中附带了控件通知码来区分控件。 CWnd的派生类都可以接收到标准Windows消息、通知消息和命令消息。命令消息还可以由文档类等接收。 用户自定义消息是实际上就是用户定义一个宏作为消息,此宏的值应该大于等于WM_USER,然后此宏就可以跟系统消息一样使用,窗口类中可以定义它的处理函数。 消息映射表 除了一些没有基类的类或CObject的直接派生类外,其他的类都可以自动生成消息映射表。下面的讲解都以HelloWorld的CMainFrame为例。消息映射表如下: C++代码: 1. BEGIN_MESSAGE_MAP(CMainFrame, CFrameWndEx) 2. ON_WM_CREATE() 3. ON_COMMAND(ID_VIEW_CUSTOMIZE, &CMainFrame::OnViewCustomize) 4. ON_REGISTERED_MESSAGE(AFX_WM_CREATETOOLBAR, &CMainFrame::OnToolbarCreateNew) 5. ON_COMMAND_RANGE(ID_VIEW_APPLOOK_WIN_2000, ID_VIEW_APPLOOK_WINDOWS_7, &CMainFrame::OnApplicationLook) 6. ON_UPDATE_COMMAND_UI_RANGE(ID_VIEW_APPLOOK_WIN_2000, ID_VIEW_APPLOOK_WINDOWS_7,&CMainFrame::OnUpdateApplicationLook) 7. ON_WM_SETTINGCHANGE() 8. END_MESSAGE_MAP() 在BEGIN_MESSAG_MAP和END_MESSAGE_MAP之间的内容成为消息映射入口项。消息映射除了在CMainFrame的实现文件中添加消息映射表外,在类的定义文件MainFrm.h中还会添加一个宏调用: DECLARE_MESSAGE_MAP() 一般这个宏调用写在类定义的结尾处。 添加消息处理函数 如何添加消息处理函数呢?不管是自动还是手动添加都有三个步骤: 1.在类定义中加入消息处理函数的函数声明,注意要以afx_msg打头。例如MainFrm.h中WM_CREATE的消息处理函数的函数声明: afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct); 2.在类的消息映射表中添加该消息的消息映射入口项。例如WM_CREATE的消息映射入口项:ON_WM_CREATE()。 3.在类实现中添加消息处理函数的函数实现。例如,MainFrm.cpp中WM_CREATE的消息处理函数的实现: int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct) { .

READ MORE

Ruby学习笔记7: 添加身份验证(adding Authentication)

我们已经完成了Category & Product页面内容的增删改查,再加入一个身份验证即可成为一个较完整的Rails App了。本文就来完成这个任务。 We now need to give users the ability to sign up for the app so that they can do things like purchase products or leave reviews. To do this, we'll add a user authentication system to the app.看下图: 1. install a gem called Devise. Earlier, we learned about bundler and how it sets up our gems. To add authentication, we'll install a gem called Devise. We've gone ahead and added Devise for you in your Gemfile.

READ MORE

Ruby学习笔记6: 动态web app的建立(3)--多Model之间的交互

We first built a static site which displayed a static image using only a Controller and a View. This is our Etsy landing page page. Then we built the Categories page, with a Model (manages data), Controller (manages decisions) and View (manages display). The Categories pages allows us to display dynamic content so users can browse through different Categories that can be updated regularly. Now we will build the Products page, which will allow users to browse through Products in our Etsy app.

READ MORE

Ruby学习笔记5: 动态web app的建立 (2)

上一节里,我们搭建了一个数据库的结构,并用index验证了request-response cycle,如下图: 1. Add show method into Controller 这一节,我们要继续丰富我们的controller: While index gave all categories, show allows us to access one category. This this is helpful when we want to show just one Category at a time in our Etsy app. The show method works like this. we write: [ruby] view plaincopy def show    @category = Category.find(params[:id])    #it's a hash that we use to find an object by its unique id end  The show method finds a single category of a given id and stores it in @category.

READ MORE

Ruby学习笔记4: 动态web app的建立

Ruby学习笔记4: 动态web app的建立 We will first build the Categories page. This page contains topics like Art, Home & Living, and Kids, so our users can browse through categories and find what they like. Each Category in our site will need to store information about itself, such as a name and an image. Our Category Model is what stores information about our Categories. Remember that our Model manages the data in our app. =============================== 1. Build Model 2. Build Migration Table

READ MORE

Ruby学习笔记3:Rendering(渲染)和 Redirect(重定向)

1. Rendering Rendering 是特别要告诉Controller 中的methods,要哪个view file来显示给用户。We can show Views as we wish! Earlier each one of our Views rendered based on the method specified in the Controller. If we write the following method: def render_demo end Rails will always look for the render_demo View. But if we write: def render_demo render :home end We can tell Rails to render the home View, as long as we have one. Rendering just tells Rails to show the View we specify. 这里这个例子是这样的:

READ MORE

对互联网垂直社交产品的分析

社交产品是对每个个体自身人性的迎合、利诱和放大。如果说世界上最复杂的是人性,那么创业项目里最复杂的自然就是社交产品。互联网创业最有意思又最深奥的就是社交类产品。 一款好的社交产品一定是能够迎合人类七宗罪中的其中之一的,比如他觉得Facebook迎合的是傲慢/自负,人们把一些精挑细选的东西用粉饰后的方式表现给他们的关注者们,以此来获得一种虚荣感。 人类七宗罪(好色、暴食、贪婪、懒惰、愤怒、嫉妒、傲慢) 从七宗罪类型的人类原始需求出发的产品,好处是能够迅速吸引用户,形成病毒传播,但坏处是可持续性差,社区氛围维持难度高,和留存低。 更重要的是要像放风筝一样,利用七宗罪反过来的把社区向正面塑造。日常生活中的交往是一样的,哪怕你再喜欢一个人,也是要一步步循序渐进。 懂得生活的人,会从身边的旁枝末节中体会生活,而不是每天只高谈阔论。懂得追女孩子的人,与其每天都在献殷勤、表白和宣誓,不如找点事情一起做,找个共同话题一起聊天。容易交朋友的人,也是一样,都是有自己的兴趣和专长,这样大家才有话聊,才能在交谈中更加深入的了解彼此。 所有社交产品表面上要解决的核心问题只有一个,那就是牵线搭桥、制造媒介,最终让用户基于这个平台上的媒介形成更好的互动和关系的留存。 “知乎”给人们制造的媒介是问答 “YY”或“9158”给人们制造的媒介是视频娱乐内容 “豆瓣”给人们制造的媒介是影音书 “Nice”是潮流文化和标签式媒介 “陌陌”最早兴起的媒介其实就是地理位置因素 “会会”的媒介是用户的行业和背景与相约聊天的主题。 交往的过程需要这些媒介,要让用户之间有话聊,有源源不断的内容产生,内容消费,并且形成关系链条。 有甚者,有一些社交产品跳过了媒介,直接把人和人的关系引向了结果,比如直接可供任何人线下约饭的产品或是单纯根据照片挑选配对类的产品我都觉得是非常粗暴、违反人类正常交往习惯和不可持续的。 社交类产品还有一个需要注意的事情是“媒介的即时性”。 每种媒介的作用和效果都不同。媒介的选择非常重要,直接影响了最终产品和社区的形态。一种双向多边的,每个人都能低成本生产和消费内容的媒介才是最理想的。 垂直社交产品的意义并没有那么大。结果就是社交产品往往是几年出一个大的,也是个赢家通吃的市场。所以在最开始的时候就要想好抓的是用户的什么痛点和原始需求,又该用怎样的媒介来引导。 脉脉、会会、知乎、Linkedin、“Same”、“陪我”、“抱抱”

READ MORE

Ruby学习笔记2 : 一个简单的Ruby网站,搭建ruby环境

Ruby on Rails website 的基础是 请求-返回 循环。 首先是浏览器请求服务器, 第二步,Second, in our Rails application, the route takes the request and finds the right Controller and method to handle the request. 第三步,控制器拿到相关数据并发给View模块。 最后,View模块把数据打包好,并且发回给浏览器显示。 ----- 搭建开发环境: Creat rails file package: rails new my-appInstall Ruby gemsMaking a controller called pages 在routes.rb文件中,Create a routeCreate the View 1. Creat rails file package 操作 Rails 用的commands叫做Generator, 在Terminal里,使用如下命令可以新建一个rails app: rails new my-app rails就会建立一系列的站点文件。 然后我们在浏览器里输入:localhost:8000就能访问rails建立的第一个web 站点:   Let's learn about the files that you generated.来看看我们建立了哪些文件:   Rails is made up folders that hold our code:

READ MORE

Patrick Hughes - 错觉3D雕塑艺术

Pictures Patrick Hughes (artist) From Wikipedia, the free encyclopedia Patrick Hughes. Leaning on a Landscape, 1979, print. Patrick Hughes (born 20 Oct 1939)[1] is a British artist working in London. He is the creator of "reverspective", an optical illusion on a 3-dimensional surface where the parts of the picture which seem farthest away are actually physically the nearest. Contents   [hide]  1 Life2 Art3 Writing4 Influences5 Bibliography6 References7 External links Life[edit] Patrick Hughes was born in Birmingham, went to school in Hull and went on at the James Graham Day College in Leeds in 1959. Later he taught at the Leeds College of Artbefore becoming an independent artist.

READ MORE