VC++入门教程.docx

上传人:b****2 文档编号:1421069 上传时间:2023-04-30 格式:DOCX 页数:39 大小:48.65KB
下载 相关 举报
VC++入门教程.docx_第1页
第1页 / 共39页
VC++入门教程.docx_第2页
第2页 / 共39页
VC++入门教程.docx_第3页
第3页 / 共39页
VC++入门教程.docx_第4页
第4页 / 共39页
VC++入门教程.docx_第5页
第5页 / 共39页
VC++入门教程.docx_第6页
第6页 / 共39页
VC++入门教程.docx_第7页
第7页 / 共39页
VC++入门教程.docx_第8页
第8页 / 共39页
VC++入门教程.docx_第9页
第9页 / 共39页
VC++入门教程.docx_第10页
第10页 / 共39页
VC++入门教程.docx_第11页
第11页 / 共39页
VC++入门教程.docx_第12页
第12页 / 共39页
VC++入门教程.docx_第13页
第13页 / 共39页
VC++入门教程.docx_第14页
第14页 / 共39页
VC++入门教程.docx_第15页
第15页 / 共39页
VC++入门教程.docx_第16页
第16页 / 共39页
VC++入门教程.docx_第17页
第17页 / 共39页
VC++入门教程.docx_第18页
第18页 / 共39页
VC++入门教程.docx_第19页
第19页 / 共39页
VC++入门教程.docx_第20页
第20页 / 共39页
亲,该文档总共39页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

VC++入门教程.docx

《VC++入门教程.docx》由会员分享,可在线阅读,更多相关《VC++入门教程.docx(39页珍藏版)》请在冰点文库上搜索。

VC++入门教程.docx

VC++入门教程

VC++入门教程(windows入门程序详解)

想做个VC入门教程,呵呵~不敢称做教程.不过先借来用用吧.(;C_>_EL&u 

很多内容都是自己学习时积累下来的资料整理.把它们凑起来,供大家学习.其实也是督促我自己.好了&!

__KJr_Q 

大家有什么意见可以在这里提哦._}_#w>>{Q 

<>.上面说的已经很详细了.想学好VC.了解他的内幕是至关重要的.废话少说,大家看下面的内容.初学者可能不容易看懂,有问题在下面跟贴.sfa_T`_q_ 

----不是我写的.y#Y_Cc{K[ 

>L_[,.}_(9 

F2>o"j2 

第一讲:

预备知识与概念介绍3l_5q?

"$ 

注:

我写这个专题目的是为VC初学者提供一个思路,我本人很菜,但我认为对于VC初学者来讲,可能有点帮助,当然,对于WinSDK编程,我也是刚刚接触。

如果你对WinSDK编程较熟,请与我联系,咱们共同来把这个专题做好,如果你发现了什么错误,也麻烦你给我留言指正。

我写的内容也基本上是我自己的一些理解,错误是肯定有的,如果你发现我的理解偏差很大的话,麻烦你提醒一下。

---小朱!

cg0L(o_I~_ 

x\_I9J_4Q_ 

什么是WinSDK:

++Az~{W7 

_n3~xiQ'__ 

大致说来windows编程有两种方法:

1.windwosc方式(SDK),2.c++方式:

即对SDK函数进行包装,如VC的MFC,BCB的OWL等,如果要深入下去,还是要熟悉SDK。

_d_

Ras_9g 

0y2iS_'t 

两种方法有哪些区别呢:

SDK编程就是直接调用windows的API进行编程,但是有上千个API组成(win95的API有两千多个),这种数目太大了,对于编程显然不利。

而MFC把这些API封闭起来,共有一百多个类组成。

一般只需20多个windows类和另外20多个通用的非windows类就可"干活"了,这一改变无疑是有很大好处的。

尽管MFC如此方便,但是要学VC,直接去学MFC却是不明智的选择。

只有在熟悉了MFC的运行机制的情况下,才有可能深入下去。

那些如多少天精通什么什么的书籍其实讲的全是些如怎么使用VC这种工具的话题,学来学去学会了怎么会使用VC这种工具,而不能深入MFC编程。

象VB这类工具就更令人感觉到太闷了,不过各有各的好处。

DV{Qbe#In 

f<0-'fGJd_ 

MFC虽然提高了程序员编程的效率,但是也失去了SDK编程的灵活性.....不好意思,跑题了...._5x4(_5c5^ 

lq1pgM?

Kf 

本专题假定:

0#XZ__(@%_ 

)v0m7Lv#/ 

C语言是windows的源语言,用C进行SDK编程是最合适的,你应该至少学过C语言,知道C语言的各种语法等,当我说到指针等类似概念的时候,你不至于茫然就行了。

0Oe@0L%^3" 

o5_._

q_ 

你还应该安装了VisualC++6.0,低版本的就不用用了吧,D版的才几块钱吗?

!

m__q_+Oz~ 

U2@?

!

B[\d` 

推荐与参考资料:

__d&__.)Dw 

eU_x|_*__` 

1.Petzold的[programmingwindowsbypetzold],这是我看过的一本书(电子书),不过是E文的,我只看了一半,"下载空间"一栏能供了该电子书。

中文版的是[Windows程序设计](包括上,下卷),CharlesPetzold著,北京博彦发展有限公司译,北京大学出版社出版,本书唯一的缺点就是太贵,价格是160元。

一些朋友让我多推荐一些这方面的书,我也没办法,一是这类书目前本就很少,二是如果你非要买的话,肯定要买这本书了,可是经典呢!

/_v_=MGX@r 

70*Y4'u}A 

2.还有一本老书值得一提,可能市面上已经买不到了,书名[Windows编程],刘振安著,人民邮电出版社出版发行。

一个朋友曾借给我看了几天我又还了,很容易读懂的,不过一看日期,95年出版,得!

没希望了。

我们学校图书馆好像也有几本,不过好像都很烂。

Yl>@_(tu)| 

_Jr9\j3J{ 

3.VC的在线帮助MSDN,有关SDK的资料在"PlatformSDK"一栏中。

tb{l(up/a 

]?

____b#~ 

下面再加深几点概念:

__QTtc__GU 

PHZA?

_>Q7Z 

什么是API:

_vYrqZie< 

nwHi3_ojD:

 

什么是API,有必要再谈一下,特别对于从TC过来的朋友和初学编程的朋友。

API,全称applicationprograminterface,意思是应用程序编程接口(说起API并不仅仅指windows而言,windows支持的API叫winapi)。

winapi就是应用程序和windows之间通讯的一个编程界面。

windows提供了上千个API函数,以方便程序员来编写应用程序。

做数据库管理系统是很少和API打交道的,我以前学PB,看的十几本书都没有专门的章节来介绍API的。

只有到网上看那些PB技巧之类的文章才谈及API,不过还要加入一大堆声明之类的东东。

好像VB也是这样。

总之,进行系统编程,API是必不可少的。

API是每个VC高手的必过的一关。

Z_5_U___D 

>%_'|_@75K 

什么是WinSDK编程:

____z{:

LIirOf~e;!

 

WinSDK程序设计就是API方式的windows程序设计。

SDK,全称SoftwareDevelopersKit,意思是软件开发工具箱。

它是在windows程序设计早期,程序员进行windows程序设计所必须购买的一个软件包(不知道那时候有没有D版的)。

我两个月前见SDK还不知所云。

开始进行WinSDK编程用C语言最好,可以撇开C++的特性专心熟悉一下Win32编程的思路以及了解windows的消息运行机制。

等把这些有所了解后,慢慢转向C++和MFC编程。

不过我的观点是WinSDK编程永远要慢慢进行下去,直接接触底层代码对MFC源码的理解是有很大好处的。

上周开始用MFC时,按F11进行单步跟踪,一开始见到"_tWinMain"这样古怪的东东也没有感觉到太大的迷惑,不就是相当于SDK编程中的WinMain函数吗?

"4oYF__:

R_c_o#_?

'_ 

什么是MFC:

QcIa%_lf_ 

_y_]+i.8[ 

MFC,全称MicrosoftFoundationClasses,伪软把WinAPI进行封装的类库。

它是一个类的集合,通过覆盖WinAPI,为编程提供了一个面向对象的界面。

它使windows程序员能够利用C++面象对象的特性进行编程,类似BCB的OWL,Delphi的VCL组件。

它把那些进行SDK编程时最繁琐的部分提供给程序员,使之专注于功能的实现。

你不妨把它想象成类似TC提供的函数库吧。

用VisualC++这种开发工具编程时,可以用MFC,也可以不用,但MFC是VC的精华所在,从某种意义上来说,不会MFC就是不会使用VC。

研究MFC源代码是件既快乐又痛苦的事情,不过,阵痛之后,嘻嘻,......28>gAz.__# 

>z_.o?

F__ 

怎么进行WinSDK编程:

j_a#E}`wC4 

=K-B_I 

VisualC++6.0:

File-->new-->Projects-->Win32Application(projectname)-->......K__p~_x_ 

gle__~es'K 

我们既然用C语言进行,就选第一项"Anemptyproject"......K8e_cSs}}J 

cAC]_%~orx 

......好累,这篇就写这么多吧,但愿对你有帮助,也建议多给我提意见,你的反馈是我最大的动力渊源......Gp6|M2Vu_5 

讲的不错吧~,还是比较好懂的.下面接着看.要自己动手.&C___V%_+ 

_F%UyF_Uz_ 

R0B\|O0Uv 

第二讲:

WinMain与两只小板凳的故事U_pF,e_>s 

注:

呵呵,近两天收到不少网友来信,要求我继续写下去,说实在的,写这东西费时费力。

不过一旦想起这些对大家或许有些帮助时,无形的压力就来了。

我所写的,仅仅是我编程中的感想,如果你有何感想,希望给我留言或到"C程序员论剑台"交流,如果你有好的建议,欢迎提出;如果你有好的对VC初学者有利的作品或文章,也欢迎给本站介绍,我将大力为你推广。

---小朱C{`+h163\_ 

__W>.KV7_ 

第一只小板凳:

_=_6_y4*f 

___\tc4DS 

打开"anemptyproject"后,在VC的IDE中,打开文本编辑器。

输入以下内容:

Y;_O\_>o[ 

<5%x3e"_7u 

#include"windows.h"*

e&O_p_Vn 

Ikv@}^p7 

intWINAPIWinMain(HINSTANCEhInstance,HINSTANCEhPrevInstance,PSTRszCmdLine,intiCmdShow)_.bE+dA6:

2Dgulx5kGZ 

{!

ba/]A_/ 

Xxhzzm-B 

  MessageBox(NULL,TEXT("你好,欢迎来到VC之路"),TEXT("欢迎"),0);\b

NN__]= 

'id]_<<_F 

  return0;CV&+^_j'k 

lf3

__QMr+ 

}}i0(^"SoXZ 

:

)hS-_*P 

把它保存成以".c"为扩展名的文件,并加入空项目中。

编译......Z7>_p_z:

 

_nW#U_BtZ 

看到了吧,这就我们的第一只小板凳。

它就类似于TC下的"helloworld"吧!

虽然什么功能也没实现,但它比"helloworld"强多了,因为它向我们展示了一个小窗口。

o,}`4_N||_ 

0$_Rl7_8>( 

支解第一只小板凳:

;n1<_1M>!

 

[HNWM/ff7+ 

像TC一样,它包含一个头文件"windows.h",这是一个最基本的头文件,它包含其它的windows头文件.在你的"X:

\ProgramFiles\MicrosoftVisualStudio\VC98\Include"目录下,打开windows.h这个文件,你就知道它包含什么东东了。

I2"_F2(>8K 

Bq/<_kEgM 

像dos下的C编程的main()一样,windows下的入口是WinMain()函数。

aLa_{z

_h

d_W_}._ 

把光标放在WinMain()上,按F1键。

启动MSDN,如果你没安装的话,一定要安装一下,MSDN是最好的学习VC的资料,当然,对于我们入门者,有一本书从头到尾学一下最好。

/_~=W3l_hY 

y8~/EyY|_^ 

第一个参数:

应用程序的当前实例句柄。

_4_~__'K?

 

V_+_04_X_" 

第二个参数:

应用程序的前一个实例句柄,别管它,对于Win32位而言,它一般是NULL._p<]___jt 

:

_`_U@b_6 

第三个参数:

指向任何传给程序的命令行参数。

PSTR代表"指向字符串的指针"。

_&:

_Mk^DH5 

._lbo\v}2W 

第四个参数:

它告诉应用程序如何初始化窗口,如最大化,最小化等状态。

._eZsK_c-@ 

qukym3F_ 

WinMain()所起的作用:

初始化,展示,销毁应用程序等。

_)7_`2_FLG 

#Cy9_E"lP 

MessageBox(),如果大家在windows下编程,这是一个很常用的API,不用我费话了吧!

Ej;BI#g_x= 

L___N!

e__b 

几个要点:

;fOk_R+__ 

l_P_B_WpHX 

1.句柄(handle):

在标准C库中句柄用来对文件输入输出。

如下面的代码:

_=PQ__Md__ 

_cT&!

__g#g 

inthandle;)_0\"_8_}!

 

1__Uy_'TEk 

handle=open("filename","r")|<2_g^ZK)_ 

KFu

Pg_p 

if(handle)WR<_,[*Mv^ 

&;

x*_uG 

{\O_lB(%E7 

U)swIisE 

 read(handle,block,bytesToread);_pl4_:

>4l/ 

_Z!

81\5 

}HB_0DG

_RF|_r@_/S 

close(handle);

&

W_*

do 

#*~3gMI{= 

在文件被成功打开后,open()返回一个句柄,在read()中使用这个句柄来阅读这个文件。

句柄不是指针。

程序不能直接使用句柄来阅读文件中的信息。

如果不能把它传送给输入输出函数调用的话,句柄就没有用了。

句柄不返回零。

句柄命名以h开始。

这是匈牙利表示法的规定。

;_4__s7\9o 

v_1_a_E[_Q 

2.匈牙利表示法:

G__5_T__( 

=c3_4MY(#X 

初开始看到这个程序时,你一定感觉到很怪,我当时就是这样的。

不知道那些字母怎么回事。

因为所有的命名采用了,匈牙利表示法。

如消息的前缀使用msg.句柄使用h.函数使用fn等。

多说了,习惯了就好了.{=Z___L?

_DPM4v7

3.有效使用MSDN:

`Re_{j{_~s 

zS__/1_v+_ 

想成为VC高手,还要强迫自己习惯于使用MSDN,看得多了,不怕看不懂,如果仅仅知道功能不知道具体的函数,可用类似的英语单词去搜索。

我平时就用金山词霸一点点的啃。

唉,说起来惭愧,本人英语四级没过,这学期连报考都没有。

以后努力了,总感觉到大学的教育很有问题,好像每个人都在为四六级而奔忙。

D6vhW:

t_8?

 

<

HXzcWQ$_ 

呵呵,说了这些,真怀疑对你真的有用。

有不对的地方,请指出。

希望大家共同进步,把VC活吃了......._g__aC[%M 

r=___Od__% 

第二只小板凳Y_0;66bfh} 

]w_HXrB8vx 

打开VC,file-->new-->progects-->win32application,并在projectname中输入hello.顺路走下来,选择第二项。

在编辑器中输入以下程序覆盖向导产生的代码:

yP*oRV%uX 

t+IrQf_,P[ 

#include"stdafx.h"//注意,这个向导产生的头文件不能去掉=`/__GBT$ 

Y__t__FH@M 

#includerv_RIKc|}l 

R&_@N_Fin 

5]_F4_.sa 

LRESULTCALLBACKWndProc(HWND,UINT,WPARAM,LPARAM);N/8_0]Gf 

3dB{DuQ_ 

~zcB@;:

 

intWINAPIWinMain(HINSTANCEhInstance,HINSTANCEhPrevInstance,GiMa_x__ 

#|^yWw^_ 

PSTRszCmdLine,intiCmdShow)ds:

&{~7L

I7?

_s+vyds 

{?

V$@2vBVX4 

a{+

;&j[_!

 

staticTCHARszAppName[]=TEXT("HelloWin");__tr

_$d?

 

C_g&_:

_+

 

HWNDhwnd;Z1sRLk_R^ 

_8c'_5P 

MSGmsg;_#b__C_zWg 

Pw/$}Q9_X 

WNDCLASSwc;U~__G__*0 

___9B2_`FJ 

by*_v(_$ 

wc.style=CS_HREDRAW|CS_VREDRAW;d_;E_(^l 

!

y7w~U_V_s 

wc.lpfnWndProc=WndProc;Hg`2-_Nl

 

7&*d_]#&~j 

wc.cbClsExtra=0;c2U__p

<#t 

L;'C5_#GN 

wc.cbWndExtra=0;_28_=L9q_ 

~[_`*)(_4E 

wc.hInstance=hInstance;\!

!

1o+#1j 

y];@M<

wc.hIcon=LoadIcon(NULL,IDI_APPLICATION);_Su/}OS\

a_xL_O:

Q, 

wc.hCursor=LoadCursor(NULL,IDC_ARROW);9<6_Hs3|.!

 

u,__)_,kj< 

wc.hbrBackground=(HBRUSH)GetStockObject(WHITE_BRUSH);n8e4`-_cY 

_Wkc^?

0p 

wc.lpszMenuName=NULL;Eum_dv#_Qg 

]WZ_i_+_ 

wc.lpszClassName=szAppName;_H\ONv=}7I 

?

KtvXTy_{m 

W5a>6u=g, 

{GM8}M~D&_ 

if(!

RegisterClass(&wc))__|q*s_)8 

DsH`I%w{ 

{_

_1__[r;_ 

I_l,^/qvIY 

MessageBox(NULL,TEXT("ThisprogramrequiresWindowsNT!

"),

b1`(f_"&

szAppName,MB_ICONERROR);uS__i/__| 

%l8nTcL__?

 

return0;p$A`qx

_.+TriPL__ 

}!

_rMl"Y[ 

N}2xt_)JZz 

hwnd=CreateWindow(szAppName,//windowclassname_a>{b'X^LV 

q$__=EUB"C 

TEXT("欢迎你的到来!

"),//windowcaption;qF#!

_Kb5_ 

fjAJ_ys)Q_ 

WS_OVERLAPPEDWINDOW,//windowstyleToHCS/J59 

a_+CHrnU\; 

CW_USEDEFAULT,//initialxposition>cPB:

kD'_ 

_D~xUr)E 

CW_USEDEFAULT,//initialypositionb

Tn7$_EG_ 

LyB$~wZx~@ 

CW_USEDEFAULT,//initialxsize._Fn___O_ 

61Nj&1Ze 

CW_USEDEFAULT,//initialysizeJ

(\"\_Z_ 

_r_'p;Nj._ 

NULL,//parentwindowhandlen_zTzc5_w 

j:

__0VtJo~ 

NULL,//windowmenuhandleF_G~p__[K 

x,js}Ml_w 

hInstance,//programinstancehandle

3R?

7&oXvH_ 

NULL);//creationparameters

:

YB:

)wV,P 

n_]x4t_w_Z 

___a_TF}_ 

ShowWindow(hwnd,iCmdShow);GljxYH_"]# 

_uG3t%Cm_N 

UpdateWindow(hwnd);_v_I]|W 

___Nm<3bd 

`6!

l!

8_v 

while(GetMessage(&msg,NULL,0,0))c\.4__I4uy 

XN]kNJ_X 

{&^

1DNpUZ 

Hwz

_k 

TranslateMessage(&msg);_8:

-[wl/@ 

]m(Uv8/__6 

DispatchMessage(&msg);T\be(@_r_ 

fT/;T

K>z> 

}NXDdU^w7B 

N__(_]6pG= 

returnmsg.wParam;[P_by__d 

r3/_H___Z 

}S_!

2M?

}LU 

K6s'3O(LW 

L_=VJl[_DL 

%g_Jf_

&A 

LRESULTCALLBACKWndProc(HWNDhwnd,UINTmessage,WPARAMwParam,LPARAMlParam)$dgY#ST_%_ 

gx#xB_8n 

{gE0k|Z(RF 

#

HDChdc;.4Jea#M&x 

Jp!

__Q2} 

PAINTSTRUCTps;BEx?

bf@|] 

/_d&zE_|_!

 

RECTrect;*

h!

gjb_i 

p2GkI/6)uu 

r;g[<6`!

switch(message).EM0R\_q_ 

#_;)Oi9{9; 

{)_kfA5xi[ 

}KEyJj3"DA 

szu!

*w__c9 

caseWM_PAINT:

__c3W__9" 

}_A\s`Hm 

hdc=BeginPaint(hwnd,&ps);0?

8_O9__i 

_9E5Ec~l 

r:

]t9y>$< 

GetClientRect(hwnd,&rect);m-_Q!

V+XQp 

kU{_+_@MA; 

__D!

Pv_`wm 

DrawText(hdc,TEXT("你好,欢迎你来到VC之路!

"),-1,&rect,&*}`u_Jt 

b_nHQvCO3$ 

DT_SINGLELINE|DT_CENTER|DT_VCENTER);ySAkj-

"Zm**h._t_ 

EndPaint(hwnd,&ps);dO]N_&'P_7 

Z_>h__S_&B 

return0;Km_S$CFsGL 

;eIqx_e> 

znt

vKOIh 

caseWM_DESTROY:

_WV__5z~_[ 

vd

PostQuitMessage(0);_(bhMo^3/* 

QFe_kj_@_ 

return0;cdd__6_*+E 

_'O>p_@BEK 

}B]_*v{?

$ljzw__@k 

returnDefWi

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 法律文书 > 调解书

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2