『原创』用C++开发WM应用系列(1)——"Hello World" Pro!(上)

用C++开发WM应用系列文章索引

引言:

  其实,在很久之前,就想涉足Native C++的WM开发,无奈自身的C++水平仅限于大学时的应试阶段,所以,特别的潜心修炼,重新炒炒回锅肉,终于,小有成就,特此拿出来,供各位朋友一起分享,特别是针对初学c++又想搞WM开发的朋友。我的这一系列的文章,也会以一个初学者(我也不是高手)的角度,一步一步介绍如何在Native C++语言环境下,进行WM的一般开发。

  当然,为了照顾到和我一样的入门学者,我在随笔中也会花部分精力为大家将就介绍一些c++的知识,稍显罗嗦,不过还请海涵啊~呵呵!再一点,本文也是针对那些已经有c#语言开发WM应用的朋友,如果没有这方面的基础,估计是有点难!

 

正文:

  世界上最俗气的入门程序,莫过于“你好,世界!”(Hello World!)了(发现中文要比英文少敲好几个按键啊~呵呵),在此呢,Jack也是不能免俗,拿这个最通俗易懂的例子,来和大家一起进入今天的随笔。我们要用vs2008,使用c++语言,建立一个智能设备项目,而项目模板则使用MFC,如下图:

1-选择语言、项目模板以及项目类型,输入我们的项目名称“HelloWorld”

   

2-注意我们选择Windows Mobile 5.0 Pocket PC这个SDK来作为我们的实例SDK:

  

3-选择应用程序类型为“基于对话框”

  

  什么是MFC呢?我建议大家自己查查资料吧,说起来,真的太多太广了!当然,我也是初学,红皮书这么告诉我的,那么我也就按部就班的建立起这个项目了。

tips:什么是MDI、SDI及对话框?

参考链接(有图有真相):http://book.51cto.com/art/200901/105523.htm

  至此,我们建立了一个新的基于“对话框”的MFC移动应用程序,可以看到,右侧的解决方案资源浏览器,有几个文件夹,什么头文件、源文件这些的,请你参考<Visual Studio 2005 c++ 入门经典>一书,上面详细的介绍了这些文件夹的作用以及关系。在此就不赘述了。

  我们打开一个叫做“资源视图”的窗体,应该如下图所示:

  

  你可能会对这写内容感兴趣,但是在此限于篇幅,请各位朋友自行查阅一些资料,去了解这个“资源”是回什么事儿,它对于这个项目有什么用,我们可以怎么来用它~等等。那么,我们双击上图中标出的菜单,在主编辑区可以看到一个熟悉的界面打开了,还可以从工具栏拖动控件到这个界面上,是不是有点Delphi的味道?到这里,我就不多说了。想必大家已经把一个Button按钮放到界面中了吧。

  

  好的,如果我们要对这个按钮进行事件的添加,突然发现,不能像c#中双击控件了,这里,我们要按照MFC的规则,来给控件添加“事件处理程序”,在MFC中,这种方式很常见,它用一个向导型的过程,帮助我们创建这些方法及代码。具体流程如下图:

1-右键单击我们的Button1按钮,在上下文菜单中选择“添加事件处理程序”:

  

2-在新窗口中,设置消息类型、此消息位于哪个类,以及函数处理程序的名称:如下图红色框所示

    

  OK,至此,我们学会了如何在MFC中为控件创建相应代码和方法,那么我们就开始来写代码吧,很简单,就是在刚才的那个方法体内,写入如下代码:

  

void CHelloWorldDlg::OnBnClickedButton1()
{
	MessageBox(L"Hello World",L"Tips",0);
}

  接下来,编译、生成、运行一下!

  是不是成功了呢?!别高兴,在此我们还有些东西不明白,不过不急,我们是初学者,先有个感性的认识再说其他的吧。这篇随笔就到这里,下一篇中,我将和大家一起分享如何使用类、函数以及成员变量,来扩充我们的这个“你好,世界!”程序!

 

总结:

我们学会了:

  1. 使用VS2008创建一个基于MFC的智能设备应用项目
  2. 我们了解了MDI、SDI及对话框的概念
  3. 我们学会了为控件添加“事件处理程序”
  4. 我们学会了为程序添加功能代码  

问题:

我们看到:

  1. 为什么那个MessageBox方法中的那些字符串之前要加个L呢?其实我们自己下来查下资料就知道了。这里推荐一篇吧:http://www.cnblogs.com/wanghao111/archive/2009/05/25/1488816.html
  2. 为什么添加事件那么麻烦,还引入了一个“消息处理”的概念?其实这个跟MFC的一些基础知识有关,我们也许要自己下来查阅一下关于MFC的基础知识,相信大家能够理解。

后记:

在下一篇随笔中,我会去扩展这个基础的程序功能,我们将新建一个类,为这个类添加方法、属性,让程序调用这个类,来进行一些简单的计算。

作者:Jack Fan初学博闻 of .NET CF/.Net
出处:http://longqi293.cnblogs.com
本博文欢迎大家浏览和转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,在『参考』的文章中,我会表明参考的文章来源,尊重他人版权。若您发现我侵犯了您的版权,请及时与我联系。
更多文章请看 [置顶]索引贴——移动开发(不断更新中)

知识共享许可协议
本篇博文 by Jack Fan is licensed under a Creative Commons 署名-非商业性使用-相同方式共享 2.5 中国大陆 License.
posted @ 2010-02-02 22:12 鸭梨山大同志 阅读(978) 评论(15) 编辑 收藏

 回复 引用 查看   
#1楼[楼主] 2010-02-02 22:20 Jack Fan      
补充:
在PPC开发中,使用的是unicode字符集,所以会经常用到一些数据类型,以下就是一些常用类型:
WCHAR :一个unicode字符。
LPWSTR:指向一个unicode字符的指针。
LPCWSTR:指向一个unicode字符串常量的指针。
TEXT("")和L""是windows.h中定义的宏,这两个在使用上经常是混用的,也没有什么区别,但是在使用时,最好还是用TEXT("")而不是L""。因为,L""只能生成unicode字符串,而TEXT("")与目标环境相关,在winCE下生成unicode字符串,在win9X下则生成ANSI字符串,其常用简写为_T("")。

 回复 引用 查看   
#2楼 2010-02-03 09:18 李森 - listen      
Jack出系列文章了。
关注

 回复 引用 查看   
#3楼[楼主] 2010-02-03 09:23 Jack Fan      
@李森 - listen
呵呵,感谢!

 回复 引用 查看   
#4楼 2010-02-03 11:24 McJeremy&Fan      
非常非常的支持。
找了好久这么基本的Native C++ For WM系列了。
---
跟随楼主学习。
楼主可以把系列写完哈~~

 回复 引用 查看   
#5楼[楼主] 2010-02-03 11:33 Jack Fan      
@McJeremy&Fan
其实还算好了~只是好像没有特别像我这样的基础文章来描述C++下的WM开发,谢谢你的鼓励!
我会坚持写完的!

 回复 引用 查看   
#6楼 2010-02-04 07:15 Jake Lin      
windows 是message-base的系统,什么都是消息。
 回复 引用 查看   
#7楼 2010-02-04 07:16 Jake Lin      
期待下一篇。
 回复 引用 查看   
#8楼[楼主] 2010-02-04 11:23 Jack Fan      
@Jake Lin
@Jake Lin
一语中的!接触了MFC后,这个概念是越来越清晰了!

 回复 引用 查看   
#9楼 2010-02-20 16:21 农民伯伯      
支持!喜欢有文字说明、有图片说明、有代码的文章 :)
 回复 引用 查看   
#10楼 2010-02-23 15:22 amey      
谢谢楼主!准备跟你学习啦!
 回复 引用 查看   
#11楼[楼主] 2010-02-23 21:09 Jack Fan      
@amey
过奖过奖~~我也是分享一下心得体会~呵呵,感谢支持!

 回复 引用 查看   
#12楼[楼主] 2010-02-23 21:10 Jack Fan      
@农民伯伯
谢谢关注~~~嘿

 回复 引用   
#13楼 2010-02-25 14:40 chen2222[未注册用户]
不错!我也想用C++来开发WM,可惜找不到特基础的文章,现在好了,可以跟楼主学习了!希望能坚持下去,持续关注!!!
 回复 引用 查看   
#14楼[楼主] 2010-03-01 15:05 Jack Fan      
@chen2222
感谢关注~我也会尽量抽时间来写的

 回复 引用 查看   
#15楼 2010-06-10 16:33 CowboyRyan      
我们了解了MDI、SDI及对话框的概念

这个估计没有说明,还是我看得太快了?