孙鑫第5课--文本编程

合集下载

孙鑫VC++讲座笔记

孙鑫VC++讲座笔记

孙鑫VC++讲座笔记-(1)Windows程序内部运行机制1,windows程序设计是种事件驱动方式的程序设计,主要基于消息的。

当用户需要完成某种功能时,需要调用OS某种支持,然后OS将用户的需要包装成消息,并投入到消息队列中,最后应用程序从消息队列中取走消息并进行响应。

2,消息结构:typedef struct tagMSG { // msgHWND hwnd; //接收消息的窗口句柄。

和哪个窗口相关联。

UINT message; //消息标识。

消息本身是什么。

WPARAM wParam; //消息的附加信息。

具体取决于消息本身。

LPARAM lParam;DWORD time; //消息投递时间。

POINT pt; //消息投递时,光标在屏幕上的位置。

} MSG;3,消息队列:每个应用程序OS都为它建立一个消息队列,消息队列是个先进先出的缓冲区,其中每个元素都是一个消息,OS将生成的每个消息按先后顺序放进消息队列中,应用程序总是取走当前消息队列中的第一条消息,应用程序取走消息后便知道用户的操作和程序的状态,然后对其处理即消息响应,消息响应通过编码实现。

4,使用VC编程除了良好的C基础外还需要掌握两方面:一,消息本身。

不同消息所代表的用户操作和应用程序的状态。

二,对于某个特定的消息来说,要让OS执行某个特定的功能去响应消息。

5,Window程序入口:int WINAPI WinMain(HINSTANCE hInstance, // 当前事例句柄。

HINSTANCE hPrevInstance, // 先前事例句柄。

LPSTR lpCmdLine, // 命令行指针int nCmdShow // (窗口)显示的状态);说明:WinMain函数是Windows程序入口点函数,由OS调用,当OS启动应用程序的时候,winmain函数的参数由OS传递的。

6,创建一个完整的窗口需要经过下面四个操作步骤:一,设计一个窗口类;如:WNDCLASS wndcls;二,注册窗口类;如:RegisterClass(&wndcls);三,创建窗口;如:CreateWindow(),CreateWindowEX();四,显示及更新窗口。

孙鑫VC教程笔记

孙鑫VC教程笔记

第一课Windows程序内部运行原理1.MFC生成的C++源文件中都有StdAfx.h,此文件包含了常用的AFX函数的声明,其中有afxwin.h,此文件包含了CRECT,CPoint,CWnd等许多类及其方法的声明。

2.Project->Setting->Debug可以加入命令行参数。

3.在SDK中要加入"windows.h"和stdio.h。

因为LoadCursor,MessageBox等函数的声明在这个文件中。

4.创建一个完整的窗口的四个步骤SDK,1设计窗口类,2注册窗口类,3创建窗口,4显示窗口5.函数名可以代表函数代码的首地址,即可作为函数指针。

6.要查看VC数据类型,可以在MSDN中输入“BOOL”然后选择“DATA TYPE”。

7.atof将字符串转化为float,atoi将字符串转化为int型。

8.所有从CWnd类派生的类都有m_hWnd句柄。

9.变量的生命周期:可以认为出了包含它的大括号,这个变量的生命周期结束。

所以全局变量的声明位于所有大括号之外。

但是用new声明的变量和用static声明的变量除外。

10.SDK示范程序,见下面。

11.sprintf格式化字符,其头文件为stdio.h,在MFC中格式化字符用CString.Format12.GetDC()与ReleaseDC()要成对使用,否则会内存泄漏。

同样,BeginPaint()与EndPaint()。

13.GetStockObject()得到画笔、画刷、字体、调色板的句柄,使用时必须用类型转换。

14.什么时候用NULL,什么时候用0.答,对指针赋值时用NULL,对变量赋值时用0.15.15.什么是野指针?答:将指针指向的变量的内存释放后,此指针即变成野指针!如何避免野指针?答:将此指针指向NULL即可。

p=NULL;16.SDK代码流程:#include "windows.h"//包含头文件LoadCursor,TextOut等函数#include "stdio.h"//包含sprintf,printf等函数LRESULT CALLBACK MyProc(...);//声明回调函数int WINAPI WinMain(){WNDCLASS wndcls;//设计窗口类wndcls.hcursor=LoadCursor();//初始化....RegisterClass(&wndcls);//注册窗口类hwnd=CreateWindow(...);//创建窗口ShowWindow(..);//显示窗口UpdateWindow(..);MSG msg;//定义消息结构体while(GetMessage(...))//消息循环{...}return 0;}LRESULT CALLBACK MyProc(...)//实现回调函数{switch(uMsg){case WM_CHAR:break;...}}第二课掌握C++1.定义结构体和类时别忘记在最后加入";"号!例如Class Point{int x;int y;};2.#include <xxx.h>与#include "xxx.h"的区别:<>不查找运行时目录,""查找运行时目录!3.类的定义中,如果未指明成员类型,则缺省为private.而结构体中则缺省为public.4.引用:引用经常用在函数的传参上。

孙鑫老师——JAVA课件PPT整理

孙鑫老师——JAVA课件PPT整理
Download:
我们为什么要用Java
多线程的 Java语言的一个重要特性就是在语言级支持
多线程的程序设计。多线程就好像我们做一张桌 子,如果你一个人完成这张桌子—就好像单线程, 那么你需要先做桌面,做完桌面后,再做4个桌子 腿,如果现在有5个人来做桌子—在程序中开辟5 个线程,其中1个人做桌面,另外4个人分别做4个 桌子腿,那么这两种方式效率的高低,相信大家 都能区分出来。
Java解释器相当于运行Java字节码的“CPU”,但该“CPU”不是通 过硬件实现的,而是用软件实现的。Java解释器实际上就是特定的平 台下的一个应用程序。只要实现了特定平台下的解释器程序,Java字 节码就能通过解释器程序在该平台下运行,这是Java跨平台的根本。 当前,并不是在所有的平台下都有相应Java解释器程序,这也是Java并 不能在所有的平台下都能运行的原因,它只能在已实现了Java解释器 程序的平台下运行。
健壮的 Java致力于检查程序在编译和运行时的
错误。Java也是一种强类型的语言,其类型 检查比C++还要严格。类型检查帮助我们检 查出许多开发早期出现的错误。Java自己负 责内存管理,提供了垃圾内存回收机制, 有效的避免了C++中最头疼的内存泄漏问题。
Download:
Java跨平台的原理
Java源文件的编译过程
Java应用程序的开发周期包括编译、下载、解释和执 行几个部分。Java编译程序将Java源程序翻译为JVM可执行 代码—字节码。这一编译过程同C/C++的编译有些不同。 当C编译器编译生成一个对象的代码时,该代码是为在某 一特定硬件平台运行而产生的。因此,在编译过程中,编 译程序通过查表将所有对符号的引用转换为特定的内存偏 移量,以保证程序运行。Java编译器却不将对变量和方法 的引用编译为数值引用,也不确定程序执行过程中的内存 布局,而是将这些符号引用信息保留在字节码中,由解释 器在运行过程中创建内存布局,然后再通过查表来确定一 个方法所在的地址。这样就有效的保证了Java的可移植性 和安全性。

孙鑫VC++教程之第05节 结构体、联合体、枚举

孙鑫VC++教程之第05节 结构体、联合体、枚举

(3)使用结构体类型时,struct 结构体名作为 一个整体,表示名字为“结构体名”的结构 体类型。 (4)结构体类型的成员可以是基本数据类型, 也可以是其它的已经定义的结构体类型-结构 体嵌套。结构体成员的类型不能是正在定义 的结构体类型(递归定义,结构体大小不能 确定),但可以是正在定义的结构体类型的 指针。
使用结构体: C语言利用结构体将同一个对象的不同类型 属性数据,组成一个有联系的整体。也就是说可 以定义一种结构体类型将属于同一个对象的不同 类型的属性数据组合在一起。本例可以将属于同 一个学生的各种不同类型的属性数据组合在一起, 形成整体的结构体类型数据。可以用结构体类型 变量存储、处理单个学生的信息。
例如:定义关于学生信息的结构体类型。 struct student { int no; char name[20]; char sex; int age; char pno[19]; char addr[40]; char tel[10]; };
说明: (1)struct student是结构体类型名,struct是关键 词,在定义和使用时均不能省略。 (2)该结构体类型由7个成员组成,分别属于不 同的数据类型,分号“;”不能省略。成员 含义同前。 (3)在定义了结构体类型后,可以定义结构体 变量(int整型类型,可以定义整型变量)。
typedef struct _tagData { char a; int b; }DATA; int main(int argc, char* argv[]) { DATA aa; aa.a = 'a'; aa.b = 1000; printf("sizeof(aa) = %d\n",sizeof(aa)); printf("aa.a = %#x,aa.b = %#x\n",&aa.a,&aa.b); return 0; }

掌握C++ 主讲人:孙鑫.ppt

掌握C++ 主讲人:孙鑫.ppt

谢谢你的观看
2
C++的特性
构造函数
1、构造函数最重要的作用是创建对象本身 。
2、C++规定,每个类必须有一个构造函数, 没有构造函数,就不能创建任何对象。
2019-10-11
谢谢你的观看
3
C++的特性
构造函数
3、C++又规定,如果一个类没有提供任何的构造函数,则 C++提供一个默认的构造函数(由C++编译器提供),这 个默认的构造函数是一个不带参数的构造函数,它只负责 创建对象,而不做任何的初始化工作。
2019-10-11
谢谢你的观看
6
C++的特性
函数的重载 重载构成的条件:函数的参数类型、参数个 数不同,才能构成函数的重载。
2019-10-11
谢谢你的观看
7
C++的特性
函数的重载 分析以下两种情况,是否构成函数的重载。 第一种情况:(1)void output();
(2)int output(); 第二种情况:(1)void output(int a,int b=5);
掌握C++
主讲人:xxx
2019-10-11
谢谢你的观看
1
C++的标准输入输出流
C++中提供了一套输入输出流类的对象,它们是cin 、cout和cerr,对 应c语言中的三个文件指针stdin、stdout、stderr,分别指向终端输入、 终端输出和标准出错输出(也从终端输出)。cin与>>一起完成输入 操作,cout、cerr与<<一起完成输出与标准错误输出。利用cin和cout 比C语言中的scanf和printf要方便得多,cin和cout可以自动判别输入输 出数据类型而自动调整输入输出格式,不必像scanf和printf那样一个 个由用户指定。使用cin,cout不仅方便,而且减少了出错的可能性。

孙鑫老师Visual-C++第一章

孙鑫老师Visual-C++第一章

(2) ResourceView(资源视图)
显示项目中所包含的资源文件。展开文件夹可显示 所有的资源类型。
(3) (文件视图)
显示所创建的工程。展开文件夹可以查看工程中所 包含的文件。窗格显示了工程文件和项目工作区中 所包含的文件的逻辑关系。一个工作区可以包含多 个工程,其中活动工程以黑体显示。活动配置决定 了编译活动工程时的编译选项。
活动工程是使用Build或Rebuild All时要编译的那一 个工程。可以用Build菜单上的Set Active Configuration选择不同的活动配置; 也可以在 Project菜单上用Set Active Project选择不同的活动工 程。使用可以查看文件、管理文件(包括增加、删除、 移动、重命名、拷贝文件等)。要增加一个文件到过 程中,可以选择Project→Add to Project→Files菜单, 弹出文件对话框,选择相应文件即可; 要从工程中
图1.2 开始菜单中的Visual Studio 6.0和MSDN
Visual Studio 6.0是1998年下半年发布的,由于其中 还存在着很多Bugs,以及一些其他原因,截止到 1999年5月底,微软已经专门为Visual Studio 6.0推出 了三次Service Pack(软件更新包),其中SP1解决 了与老版本Visual Studio工具存在着的二进制兼容性 问题,SP2又更换了Java虚拟机,新近发布的SP3则 再次修订了大量的Bugs,因此建议在安装完Visual C++ 6.0后,再找一份SP2或SP3来打个补丁,SP2可 在某些报纸的配套光盘上找到,SP3则暂时需要到微 软的MSDN站点上去下载。
Visual C++6.0 实用教程

孙鑫VC教学视频学习笔记1-8

孙鑫VC教学视频学习笔记1-8

2:路径层(Path)的概念!
3: 我试图写一个 MyNotePad 的小应用程序,已完成的任务有:设置自定义的图标,窗口背景,光标.在窗口 显示插入符,并让插入符随鼠标的点击而显示在相应的位置,用 TextOut 完成串的输入,显示,并保存于一个 CString 对象中,可是我发现显示文本的背景色(默认是白色)与自定义的窗口背景色不一致,我先是用如下 的代码: hdc.SetBkColor(hdc.GetBkColor)); 来设置文本背景色,可是背景色仍然是默认的白色,我不停地想是不是 SetBkcolor()不可以用,但当时真是 笨,明明用 GetBkColor()取到的就是文本的背景色,你再设置回去,那不就相当于什么都没做嘛!当时脑子 中充斥的想法是以为 GetBkColor()取到的是窗口的背景色呢!呵呵,笨!另外,hdc.SetTextColor ()可以设 置文本的颜色.但还有一个问题:下面是我处理退格键的代码: void CMyNotePadView::OnChar(UINT nChar, UINT nRepCnt, UINT nFlags) { // TODO: Add your message handler code here and/or call default if(0x0d==nChar) { // m_ptOrigin } else if(0x08==nChar) { CClientDC hdc(this); hdc.SetBkColor(RGB(208,221,238)); hdc.SetTextColor(RGB(208,221,238)); hdc.TextOut(m_ptOrigin.x,m_ptOrigin.y,m_strLine); m_strLine=m_strLine.Left(m_strLine.GetLength()-1); } else { m_strLine+=nChar; } ::InvalidateRect(m_hWnd,NULL,FALSE); CView::OnChar(nChar, nRepCnt, nFlags); } 为了应付窗口切换时的重绘,我把输出工作放在了 OnDraw()函数中了,别的都是正常的,可当退格的时候

孙鑫VC视频笔记_掌握CDC的文字处理程序的编写

孙鑫VC视频笔记_掌握CDC的文字处理程序的编写

1 首先在view类捕获WM_CHAR消息.
2 为了保存字符,我们去定义一个CString的对象,专门用来存储我们输入的字符。在view类增加一个成员变量,类型CString,名称m_strLine,权限public。
3 在view的构造函数,初始化CString的对象,把它赋一个空,先给它清空,m_strLine="";
//要获取一个字体的高度,要用到GetTextMetrics,所以首先的定义一个DC
CClientDC dc(this);//首先的定义一个DC
TEXTMETRIC tm;//定义TEXTMETRIC结构体,GetTextMetrics这个函数要用到
dc.GetTextMetrics(&tm);//获取字体的高度
根据当前设备描述表(DC)字体的来自小,来改变插入符。 要实现以上功能,首先要获取当前DC字体(文本)的信息,要获取文本的信息,可以用GetTextMetrics。
BOOL GetTextMetrics( LPTEXTMETRIC lpMetrics ) const;
Points to the TEXTMETRIC structure that receives the metrics
那么就要在响应WM_PAINT的时候,将我们的文字再次输出。
在view中,就给我们提供了OnDraw函数,利用这个函数。可以解决以上的问题。也就是说想要我们,输出的文字,图型,在view类中,始终都被看到的话,就可以在OnDraw这个函数中处理。
另外,在函数被调用的时候,应用程序框架类,构造了一个CDC的指针pDC传进来[OnDraw(CDC* pDC)],可以方便我们不用构造DC了。

孙鑫VC++讲座笔记-(5)文本编程

孙鑫VC++讲座笔记-(5)文本编程

1,创建插入符:void CreateSolidCaret( int nWidth, int nHeight );//创建插入符void CreateCaret( CBitmap* pBitmap );//创建位图插入符void ShowCaret( );//显示插入符void HideCaret( );//隐藏插入符static void PASCAL SetCaretPos( POINT point );//移动插入符号说明:1)创建插入符要在窗口创建完成之后,CreateSolidCaret函数创建的插入符被初始化为隐藏,所以需要调用ShowCaret()将其显示。

2)使用CreateCaret函数创建位图插入符的时候,不能使用局部的位图对象关联位图资源。

(与资源相关联的C++对象,当它析构的时候会同时把与它相关联的资源销毁。

)2,获取当前字体信息的度量:CDC::GetTextMetricsBOOL GetTextMetrics( LPTEXTMETRIC lpMetrics ) const;说明:typedef struct tagTEXTMETRIC { /* tm */int tmHeight;//字体高度。

Specifies the height (ascent + descent) of characters.int tmAscent;//基线以上的字体高度int tmDescent;//基线以下的字体高度int tmInternalLeading;int tmExternalLeading;int tmAveCharWidth;//字符平均宽度int tmMaxCharWidth;int tmWeight;BYTE tmItalic;BYTE tmUnderlined;BYTE tmStruckOut;BYTE tmFirstChar;BYTE tmLastChar;BYTE tmDefaultChar;BYTE tmBreakChar;BYTE tmPitchAndFamily;BYTE tmCharSet;int tmOverhang;int tmDigitizedAspectX;int tmDigitizedAspectY;} TEXTMETRIC;3,OnDraw函数:virtual void OnDraw( CDC* pDC )当窗口(从无到有或尺寸大小改变等)要求重绘的时候,会发送WM_PAIN消息,调用OnDraw函数进行重绘。

掌握C++ 主讲人:孙鑫.ppt

掌握C++ 主讲人:孙鑫.ppt


2019-9-6
感谢你的欣赏
9
小技巧:在以后的MFC编程中,如果在成员函数中想调用同 类中的某个成员,可以使用VC++提供的自动列出成员函数 功能,使用this->,VC++将列出该类中的所有成员,我们可 以从列表中选择我们想调用的成员。
自动列出成员函数功能,可以提高编写速度,减少拼写错误。 我们经常不能完全记住某个函数的完整拼写,但却能够从列 表中辨别出该函数,自动列出成员函数的功能在这时就显得 更加有用了。事实上,在各种IDE编程环境中,我们通常都 不可能记住也没有必要记住所有的函数,只要将常用的函数 记住,其他不常用的函数只要记住其大概的写法和功能,在 调用该函数时可以从自动列出成员函数中选取,这样可以大 大节省我们的学习时间。我们不用花费大量的时间去死记硬 背许多函数,利用自动列出成员函数功能和帮助系统,就能 够在编程时顺利地使用这些函数,等用的次数多了,也就在 不知不觉中完全掌握了这些函数。
Public Protected Private
Public Protected Private
Public Protected No access
Protected Protected No access
Private Private No access
2019-9-6
感谢你的欣赏
12
C++的特性
对于输出来说,我们像以上方式调用就可以了,对于输入来说,我 们以如下方式调用即可:
int i;
cin>>i; 注意箭头的方向。在输出中我们还使用endl(end of line),表示换 行,注意最后一个是字符‘l’,而不是数字1,endl相当于C语言的'\n', 表示输出一个换行。

孙鑫C++教程 完整版

孙鑫C++教程  完整版

从变量的类型区分变量的用途
int x,y; x=30; y=30; //x和y既可以用来表示坐标点,也可以用来表示宽度和 高度,还可以用来表示身高和体重。 typedef int WIDTH typedef int HEIGHT WIDTH x; HEIGHT y; //好处:我们从变量的类型上就可以知道x和y是用来表 示宽度和高度。
2.掌握C++
C++的标准输入输出流
C++中提供了一套输入输出流类的对象,它们是cin 、cout和cerr,对 应c语言中的三个文件指针stdin、stdout、stderr,分别指向终端输入、 终端输出和标准出错输出(也从终端输出)。cin与>>一起完成输入 操作,cout、cerr与<<一起完成输出与标准错误输出。利用cin和cout 比C语言中的scanf和printf要方便得多,cin和cout可以自动判别输入输 出数据类型而自动调整输入输出格式,不必像scanf和printf那样一个 个由用户指定。使用cin,cout不仅方便,而且减少了出错的可能性。 对于输出来说,我们像以上方式调用就可以了,对于输入来说,我 们以如下方式调用即可: int i; cin>>i; 注意箭头的方向。在输出中我们还使用endl(end of line),表示换 行,注意最后一个是字符‘l’,而不是数字1,endl相当于C语言的 '\n',表示输出一个换行。
C++的特性

构造函数
1、构造函数最重要的作用是创建对象本身 。 2、C++规定,每个类必须有一个构造函数, 没有构造函数,就不能创建任何对象。
C++的特性

孙鑫VC学习笔记第5课

孙鑫VC学习笔记第5课
//DEL if(m_nWidth>sz.cx)当长方形的长度大于字符串的长度后,将其重新归0
//DEL {
//DEL m_nWidth=0;
//DEL dc.SetTextColor(RGB(0,255,0));
//DEL dc.TextOut(0,200,str);
//DEL }
b.取出动态创建的菜单的数据的方法。
1)创建一个弹出菜单,弹出菜单下面有4个子菜单。将子菜单的ID号连续。
2)在resource.h中添加#define IDM_PHONE1 123....
3)添加其消息响应函数。注意注释中的文字
BEGIN_MESSAGE_MAP(CMenu2View, CView)
CRgn rn;
rn.CreateRectRgn(0,50,sz.cx,sz.cy);
pDC->SelectClipRgn(&rn,RGN_DIFF);
路径层有什么作用?可以保护我们先前的文本或者图像不被后来画的覆盖。
4.在View上输入文字的步骤。
CMenu *pPopup=menu.GetSubMenu(0);
ClientToScreen(&point);
pPopup->TrackPopupMenu(TPM_LEFTALIGN | TPM_RIGHTBUTTON, point.x, point.y,
GetParent());
dc.TextOut(m_ptOrigin.x,m_ptOrigin.y,m_strLine);
m_strLine=m_strLine.Left(m_strLine.GetLength()-1);

孙鑫C++教程(全20讲)

孙鑫C++教程(全20讲)


C++的特性
this指针 1、this指针是一个隐含的指针,它是指向对象本身, 代表了对象的地址 2、一个类所有的对象调用的成员函数都是同一代码 段。那么成员函数又是怎么识别属于同一对象的 数据成员呢?原来,在对象调用pt.output(10,10)时, 成员函数除了接受2个实参外,还接受到了一个对 象s的地址。这个地址被一个隐含的形参this指针 所获取,它等同于执行this=&pt。所有对数据成员 的访问都隐含地被加上前缀this->。例如:x=0; 等 价于 this->x=0。

关于句柄

句柄(HANDLE),资源的标识。
操作系统要管理和操作这些资源,都是通 过句柄来找到对应的资源。按资源的类型, 又可将句柄细分成图标句柄(HICON), 光标句柄(HCURSOR),窗口句柄 (HWND),应用程序实例句柄 (HINSTANCE)等等各种类型的句柄。操 作系统给每一个窗口指定的一个唯一的标 识号即窗口句柄。

从变量的类型区分变量的用途
int x,y; x=30; y=30; //x和y既可以用来表示坐标点,也可以用来表示宽度和 高度,还可以用来表示身高和体重。 typedef int WIDTH typedef int HEIGHT WIDTH x; HEIGHT y; //好处:我们从变量的类型上就可以知道x和y是用来表 示宽度和高度。

掌握C++
主讲人:孙鑫

C++的标准输入输出流
C++中提供了一套输入输出流类的对象,它们是cin 、cout和cerr,对 应c语言中的三个文件指针stdin、stdout、stderr,分别指向终端输入、 终端输出和标准出错输出(也从终端输出)。cin与>>一起完成输入 操作,cout、cerr与<<一起完成输出与标准错误输出。利用cin和cout 比C语言中的scanf和printf要方便得多,cin和cout可以自动判别输入输 出数据类型而自动调整输入输出格式,不必像scanf和printf那样一个 个由用户指定。使用cin,cout不仅方便,而且减少了出错的可能性。 对于输出来说,我们像以上方式调用就可以了,对于输入来说,我 们以如下方式调用即可: int i; cin>>i; 注意箭头的方向。在输出中我们还使用endl(end of line),表示换 行,注意最后一个是字符‘l’,而不是数字1,endl相当于C语言的 '\n',表示输出一个换行。

孙鑫VC++从入门到精通开发详解视频教程FLASH版

孙鑫VC++从入门到精通开发详解视频教程FLASH版

第85集 第十课 A-1
第86集 第十课 A-2
第87集 第十课 B
第88集 第十课 C
第89集 第十课 D
第90集 第十课 E
第91集 第十课 F
第92集 第十课 G
第93集 第十课 H
第94集 第十课 I
第26集 第三课 G
第27集 第三课 H
第28集 第三课 I
第四课 MFC消息映射机制的剖析 讲述如何运用ClassWizard
第29集 第四课 A-1
第30集 第四课 A-2
第31集 第四课 B
第32集 第四课 C
第33集 第四课 D
第50集 第六课 G
第51集 第六课 H
第52集 第六课 I
第53集 第六课 J
第54集 第六课 K
第七课 对话框用户界面程序的编写
Hale Waihona Puke 第55集 第七课 A-1
第56集 第七课 A-2
第57集 第七课 B
第58集 第七课 C
第一课 Windows程序运行原理及程序编写流程
第1集 第一课 A-1
第2集 第一课 A-2
第3集 第一课 B
第4集 第一课 C
第5集 第一课 D
第6集 第一课 E
第7集 第一课 F
第8集 第一课 G
第9集 第一课 H
第42集 第五课 G
第六课 菜单的工作原理及编写应用
第43集 第六课 A-1
第44集 第六课 A-2
第45集 第六课 B
第46集 第六课 C
第47集 第六课 D
第48集 第六课 E

Java孙鑫教程

Java孙鑫教程

视频特色视频共分12 课,平均每课约两个小时。

本套视频由孙鑫老师亲自授课录制,内容涵盖面广,从入门到精通,授课通俗易懂,分析问题独到精辟,学员通过本套光盘的学习,能够快速掌握Java 编程语言,成为Java 高手。

1、循序渐进从自学者很难弄明白的Java 环境配置开始讲解,一步一步引领您成为Java 高手。

2、通俗易懂编程语言枯燥难懂,然而通过孙鑫老师形象化的讲解,Java 中的难点、重点,让您轻松掌握。

3、实战性强编程中要注意什么?如何阅读出错提示?出现问题如何解决?通过孙鑫老师一步一步地操作讲解,带您迅速掌握编程的全过程。

4、内容全面Java 语言知识,Java 面向对象的编程思想,Java 语言本身的优点和特性,在以后开发中可能出现的问题,由孙鑫老师一一帮你剖析。

5、讲解深刻在一些重难点知识以及属于Java 语言本身优点、特点方面的知识,孙鑫老师都将帮您剖析其本质,讲解其背后运行的原理,让您从根本上理解、掌握并灵活运用这些知识。

6、问答形式在一些重难点知识以及属于Java 语言本身优点、特点方面的知识,孙鑫老师都将帮您剖析其本质,讲解其背后运行的原理,让您从根本上理解、掌握并灵活运用这些知识。

Java 语言知识,Java 面向对象的编程思想,Java 语言本身的优点和特性,在以后开发中可能出现的问题,由孙鑫老师一一帮你剖析。

Lesson1:Java 的一些基本概念,Java 的起源、为什么我们要学习Java 语言,Java 跨平台原理剖析;Java 环境变量的配置,初学者常犯的问题,Java 语言的基本数据类型和Java 的语句。

Lesson2:Java 面向对象编程,面向对象编程和面向过程编程的区别,我们如何才能掌握面向对象的编程,类和对象的关系;讲解了Java 中的构造、重载、this 和super 变量、静态变量、Java 中的常量、继承、多态。

Lesson3上:Java 中包的概念,类的说明符、方法的说明符、对象的销毁(JVM 垃圾回收器的演示) ,Java 中接口理解与掌握。

孙鑫笔记5

孙鑫笔记5
GetMenu()->AppendMenu(MF_POPUP,(UINT)menu.m_hMenu,"WinSun");
GetMenu()->InsertMenu(2,MF_BYPOSITION | MF_POPUP,(UINT)menu.m_hMenu,"WinSun");
menu.AppendMenu(MF_STRING,IDM_HELLO,"Hello");
GetMenu()->GetSubMenu(0)->EnableMenuItem(1,MF_BYPOSITION | MF_DISABLED | MF_GRAYED);
5, 取消和加载菜单
用此功能,可以动态的修改菜单
SetMenu(NULL);//取消菜单项
CMenu menu;
2, 设置缺省菜单项
GetMenu()->GetSubMenu(0)->SetDefaultItem(1,TRUE);
GetMenu()->GetSubMenu(0)->SetDefaultItem(ID_FILE_OPEN);
3, 图形标记菜单
先创建图形,注意底色不要是白色
六、 动态添加系统菜单项
电话本程序:键盘输入人名,空格之后电话号码。回车之后,把人名添加到菜单项。当点击菜单时,显示电话本信息。
1, 给View添加private 的
CString m_strLine;//存储输入的字符串
CMenu m_menu;//菜单
5,知道如何为某个框架类添加虚函数或消息处理函数
一、 消息的分类:
消息的分类:标准消息,命令消息,通告消息。

信息技术五年级上册第五课学习编程与应用软件操作优质课

信息技术五年级上册第五课学习编程与应用软件操作优质课

信息技术五年级上册第五课学习编程与应用软件操作优质课编程与应用软件操作是信息技术课程的重要内容之一,它为学生提供了学习和应用计算机编程技能的机会。

本篇文章将介绍一堂优质的信息技术课,旨在帮助学生更好地理解并应用编程和应用软件操作知识。

这堂优质的信息技术课以学习编程为主线,注重培养学生的创新思维和解决问题的能力。

课堂上,老师首先向学生简单介绍了编程的概念,并引导学生思考编程在日常生活中的应用。

然后,老师结合具体的案例,向学生展示了如何使用Scratch这一编程语言进行编程。

通过实际操作,学生能够学习到编程的基本概念,如变量、循环和条件语句等。

在学习了基本的编程知识后,老师引导学生进行实际的编程练习。

学生们分成小组,通过合作共同完成一个简单的编程任务。

这样的设计既培养了学生的合作意识,又让学生能够在实践中更好地理解和应用所学的知识。

在实践中,学生们不仅能够熟练掌握Scratch的基本操作,还能够创造自己的作品。

这种创造性的活动激发了学生的学习兴趣,培养了他们的创新思维和动手能力。

除了编程内容,本堂课还包括了应用软件操作的教学。

在信息技术课程中,学习掌握常用的应用软件操作非常重要。

老师通过演示和实践,向学生介绍了常用的办公软件,如Word、Excel和PowerPoint等。

学生们通过实践操作,学习了常用的办公软件的基本功能和操作技巧。

这些知识为学生日后的学习和工作提供了基础。

本堂优质课的设计和实施突出了学生的主体地位,注重培养学生的实际能力和创新精神。

通过实际的编程练习和应用软件操作,学生们不仅学到了知识,还培养了解决问题和创新的能力。

此外,课堂上的小组合作活动也促进了学生之间的交流和合作。

通过与他人的合作,学生们能够相互学习、相互借鉴,共同进步。

总之,信息技术五年级上册第五课学习编程与应用软件操作的优质课,通过编程和应用软件操作的学习,培养了学生的创新思维和解决问题的能力。

它注重实际操作和合作学习,旨在帮助学生更好地掌握编程和应用软件操作的知识和技能。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

新建一个单文档的程序(Test)
创建一个插入符。

int CTestView::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CView::OnCreate(lpCreateStruct) == -1)
return -1;
CClientDC dc(this);
TEXTMETRIC tm;
dc.GetTextMetrics(&tm);
CreateSolidCaret(tm.tmAveCharWidth/8,tm.tmHeight);//tm.tmAveCharWidth/8是经验ShowCaret( );
// TODO: Add your specialized creation code here
return 0;
}
下面创建一个图形的插入符:
int CTestView::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CView::OnCreate(lpCreateStruct) == -1)
return -1;
CBitmap* pBitmap = new CBitmap;
pBitmap->LoadBitmap(IDB_BITMAP1);
CreateCaret(pBitmap);
ShowCaret();
// TODO: Add your specialized creation code here
return 0;
}
void CTestView::OnDraw(CDC* pDC)
{
CTestDoc* pDoc = GetDocument();
ASSERT_V ALID(pDoc);
CString str1;
str1.LoadString(IDS_STR1);//IDS_STR1在资源视图中的String Table中有定义
pDC->TextOut(0,0,str1);
// TODO: add draw code for native data here
}
下面是路径层的概念:(和轨迹相似)
void CTestView::OnDraw(CDC* pDC)
{
CTestDoc* pDoc = GetDocument();
ASSERT_V ALID(pDoc);
CString str1;
str1.LoadString(IDS_STR1);//IDS_STR1在资源视图中的String Table中有定义
CSize sizestr1=pDC->GetTextExtent(str1);
pDC->BeginPath();
pDC->Rectangle(CRect(0,0,sizestr1.cx,sizestr1.cy));//在路径层中做的操作是看不见的。

pDC->EndPath();
pDC->TextOut(0,0,str1);
pDC->SelectClipPath(RGN_DIFF);
//SelectClipPath在它的矩形的范围内对下面的操作有影响。

for (int i=0;i<300;i=i+5)
{
pDC->MoveTo(0,i);
pDC->LineTo(300,i);
pDC->MoveTo(i,0);
pDC->LineTo(i,300);
}
//SelectClipPath对str2有影响。

CString str2="yyyyyyyyyy";
pDC->TextOut(200,200,str2);
// TODO: add draw code for native data here
}
下面是字符输入的功能:
为VIEW类添加:
private:
CString m_str;并初始化。

CPoint m_dnpt; 初始化。

void CTestView::OnChar(UINT nChar, UINT nRepCnt, UINT nFlags)
{
// TODO: Add your message handler code here and/or call default
CClientDC dc(this);
TEXTMETRIC tmc;
dc.GetTextMetrics(&tmc);
CFont font;
font.CreatePointFont(120, "Arial", &dc);
CFont* def_font = dc.SelectObject(&font);
// dc.SelectObject(def_font);
//font.DeleteObject();
if (0x0d==nChar)
{
m_str.Empty();
m_dnpt.y+=tmc.tmHeight;
}
else if (0x08==nChar)//先白色输出,再用黑色输出去掉后的字符
{
COLORREF txprevcolor=dc.SetTextColor(dc.GetBkColor());
dc.TextOut(m_dnpt.x,m_dnpt.y,m_str);//用白色输出字符
m_str=m_str.Left(m_str.GetLength()-1);
dc.SetTextColor(txprevcolor);
else
{
m_str+=nChar;
}
CSize size=dc.GetTextExtent(m_str);
SetCaretPos(CPoint(size.cx+m_dnpt.x,m_dnpt.y));
dc.TextOut(m_dnpt.x,m_dnpt.y,m_str);
dc.SelectObject(def_font);
font.DeleteObject();
CView::OnChar(nChar, nRepCnt, nFlags);
}
void CTestView::OnLButtonDown(UINT nFlags, CPoint point)
{
// TODO: Add your message handler code here and/or call default //将插入符移到左键位置
SetCaretPos( point );
m_str.Empty();
m_dnpt=point;
CView::OnLButtonDown(nFlags, point);
}
下面模拟卡拉OK字幕变色功能:
为VIEW的ONCREATE函数添加:SetTimer(1,1000,NULL);
为VIEW类增加:int m_nwidth; CString m_colstr;(初始化为0)在ONDRAW函数中添加:
m_colstr="模仿卡拉OK的变色功能";
pDC->TextOut(300,300,m_colstr);
void CTestView::OnTimer(UINT nIDEvent)
{
// TODO: Add your message handler code here and/or call default CClientDC dc(this);
TEXTMETRIC textm;
dc.GetTextMetrics(&textm);
static CRect rect;
rect.left=300;
rect.top=300;
rect.bottom=300+textm.tmHeight;
rect.right=300+m_nwidth;
if (m_nwidth>=dc.GetTextExtent(m_colstr).cx)
{
m_nwidth=0;
dc.SetTextColor(RGB(0,255,0));
else
{
m_nwidth+=5;
dc.SetTextColor(RGB(255,0,0));
}
dc.DrawText(m_colstr,rect,DT_CENTER);
CView::OnTimer(nIDEvent);
}。

相关文档
最新文档