c++学习笔记 (2)

上传人:hjk****65 文档编号:191792864 上传时间:2023-03-04 格式:DOC 页数:13 大小:3.68MB
返回 下载 相关 举报
c++学习笔记 (2)_第1页
第1页 / 共13页
c++学习笔记 (2)_第2页
第2页 / 共13页
c++学习笔记 (2)_第3页
第3页 / 共13页
点击查看更多>>
资源描述
第五课 文本编程插入符创建插入符CWnd:CreateSolidCaretvoidCreateSolidCaret(int nWidth,int nHeight); 设为0则定义为系统默认窗口的宽度高度默认为隐藏,还要调用ShowCaret创建插入符根据字体大小改变 要获取文本信息BOOL GetTextMetrics( LPTEXTMETRIC lpMetrics ) const;获取字体度量信息typedef struct tagTEXTMETRIC /* tm */ int tmHeight; 字体高度 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;CreateCaretCBitmap bitmap;局部变量 放在函数中会析构掉 要设成view类的成员函数在窗口输出文字:窗口变化会重绘使用OnDrawCstring类:无基类 重载操作符pDC-TextOut(50,50,str);BOOL LoadString( UINT nID ); 载入字符串资源 用字符串资源列表路径层概念CDC:BeginPathBOOL BeginPath( );开启路径层BOOL EndPath( );结束路径层获取字符串宽度:CDC:GetTextExtentCSize GetTextExtent( LPCTSTR lpszString, int nCount ) const;CSize GetTextExtent( const CString& str ) const;for(int i=0;iMoveTo(0,i);pDC-LineTo(300,i);pDC-MoveTo(i,0);pDC-LineTo(i,300);生成网格CDC:SelectClipPathBOOL SelectClipPath( int nMode ); 选择剪切区域字符输出功能:字符输入消息为WM_CharCWnd:SetCaretPos 设置插入符位置static void PASCAL SetCaretPos( POINT point );回车ASCII:0x0d(可以在MSDN里查询)获取背景色:COleControl:GetBackColorOLE_COLOR GetBackColor( );CDC:SetTextColor 设置文字颜色virtual COLORREF SetTextColor( COLORREF crColor );减少字符 Cstring left(获取左边n个字符) GetLength(获取字符串长度)插入符随输入移动:SetCaretPos字体设置:CfontBOOL CreatePointFont( int nPointSize, LPCTSTR lpszFaceName, CDC* pDC=NULL)从90分钟开始第六课(11.18)IDM_TEST(M表示菜单)/无MessageBox/ TODO: Add your command handler code hereAfxMessageBox(App);CWnd-MessageBox菜单项响应顺序: 1view2 doc 3mainframe4app解释:点击菜单项mainframe获得命令消息;mainframe将消息传给view类,view类有消息响应函数就响应,没有则交给doc类;doc有则响应,没有就将消息还给view类;view类将消息还给mainframe,mainframe检测自己有没消息响应函数,有则响应,无则传给app;app再做类似过程。消息的分类:1. 标准消息 除WM_COMMAND以外所有以WM_开头的消息。从CWnd派生的类都可以接受这类消息。2. 命令消息 来自菜单、加速键或工具栏按钮的消息。都以WM_COMMAND呈现。从CcmdTarget派生的类,都可以接受到这类消息。*CWnd派生自CcmdTarget类,因此前者可以接受两种消息,后者只能接受命令消息3. 通告消息由控件产生的消息,如:按钮的单击,列表框的选择等均产生此类消息,为的是向父窗口(通常为对话框)通知事件的发生。也以WM_COMMAND形式呈现。从CcmdTarget派生的类都可以接受此消息。WindowProc是CWnd成员函数。OnWndMsg判断消息类型。消息映射,调用相应消息处理函数如何创建标记菜单(有对号):先找到菜单栏、再找到菜单项、最后子菜单(整个菜单项)Cmenu* GetMenu() const;封装了跟菜单有关的操作,返回指向整个菜单栏的指针Cmenu* GetSubMenu(int nPos) const;返回指向整个子菜单的指针Cmenu 对菜单句柄封装Cmenu* CheckMenuItem(UINT nIDCheckItem,UINT nCheck);对菜单项做标记。ID或者索引号在MainFrame类中OnCreate函数里面加上GetMenu()-GetSubMenu(0)-CheckMenuItem(0,NF_BYPOSITION|MFCHECKED);按照索引号GetMenu()-GetSubMenu(0)-CheckMenuItem(ID_FILE_NEW,NF_BYCOMMAND|MFCHECKED);按照ID号缺省菜单项:采用Cmenu下的成员函数:BOOL SetDefaultItem(UINT uItem,BOOL fByPos=FALSE);后者为false,前者为ID;否则为位置(索引);在MainFrame类中OnCreate函数里面加上GetMenu()-GetSubMenu(0)-SetDefaultItem(1,True);一个菜单栏,只能有一个缺省菜单(要不怎么叫缺省呢)。设置菜单图形(位图太大了,只显示左上角部分 解决之道:用GetSystemMetrix()函数获取位图标记大小):Cstring str;Str.Format(将。格式化到参数中)(“x=%d,y=%d”, GetSystemMetrix(SM_CXMENUCHECN)高度, GetSystemMetrix(SM_CVMENUCHECK)宽度);MessageBox(str);BOOL SetMenuItemBitMaps(UINT nPosition,UINT nFlags,const Cbitmap* pBmpUnchecked未选中时的位图,const Cbitmap* pBmpChecked选中时的位图);先构造一个位图(作为成员变量,写在CmainFrame里面) Cbitmap bitmap; bitmap.LoadBitmap(位图的ID);使某个按键不能使用(EnableMenuItem(使菜单变灰,不能使用等等):今日关键(11.18):获取菜单获取菜单栏 GetMenu()-GetSubMenu(0)-看到65:20了11.19将整个菜单取消:CWnd:SetMenu(Cmenu* pMenu); SetMenu(0);CMenu menu; 重新设置菜单 CMenu定义成局部变量会出现问题menu.LoadMenu(IDR_MAINFRAME); SetMenu(&menu);menu.Detach();/SetMenu以后要调用Detach函数将菜单句柄传给窗口(将句柄和c+对象断开)MFC对菜单项采用的命令更新机制:用ON_UPDATE_COMMAND_UI(用于设置菜单项可否使用)宏捕获CN_UPDATE_COMMAND_UI消息CCmdUI类pCmdUI-Enable(true);最好采用ID号设置右键弹出菜单功能:Pop-up Menu弹出菜单 增加到View类中,因为View类覆盖在MainFrame类上,MainFrame无法接收鼠标消息CView类中增加了OnContextMenu(弹出位置,x,y,拥有弹出菜单的窗口,如果为null,点击外面会消失,否则不会消失)用于显示弹出菜单ClientToScreen()坐标转化GetParent();获取父窗口指针动态添加、插入、删除菜单:109:04第14课 网络编程协议:语义+语法+规则应用层:Telnet HTTP DNS SMTP POP3传输层:TCP(三步握手 数据确认、数据重传) UDP(无连接不可靠)网络层:IP ICMP(互联网控制报文协议) IGMP(internet组管理协议)封装:就是在数据前面加上特定的协议头部 对等层协议之间交换的信息单元统称为PDU(协议数据单元)TCP/IP包括4个层次:应用层传输层网络层网络接口层TCP/IP使用16位和32位整数高位先存格式客户机/服务器模式:客户向服务器提出请求,服务器接收到请求以后提供相应服务。加载套接字库 WSAStartup1.加载套接字库2.版本协商之后创建套接字socket将套接字绑定到本地ip和端口(bind)addrSrv.sin_addr.S_un.S_addr=htonl(INADDR_ANY);解释:htons()主机字节序到网络字节序的转换 htonl网络字节序到主机字节序的转换IN表示定义时要赋予初始值OUT表示会返回一个值添加库(.lib) 工程-设置-连接87:03以后:基于UDP应用程序的编写UdpSrv不行。烫为什么聊天用UDP?因为UDP实时性较高,对准确性要求不高。第15章 多线程编程32:4560:00
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 成人自考


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!