杂记1

MFC 向导创建的DLG对话框


theApp 声明一个全局唯一变量 调用cxxApp 构造函数

程序执行的顺序是

1 CXXXApp theApp  //定义处  理解为 “唯一的一个APP对象 表示了我们的应用程序”

2 CxxxApp::CxxxApp 构造函数的定义

3 WinMain 程序入口


对话框程序的执行顺序如下

CxxApp::InitInstance  MFC程序的入口

dlg对象     CxxDlg对象

Dlg构造函数  

DoModal

OninitDlg  


创建模态对话框

在按钮消息响应函数中  CXXXDlg dlg;  dlg.domodal();


非模态对话框 

创建  Create(0

CxxDlg   *m_nonmodal;   //添加在对话框类新的成员变量

HWND CreateWindow()

关闭非模态对话框

CWND::DestroyWindow(0

CWND::ShowWindow(SW_HIDE)


创建非模态对话框4步

1 添加新Dialog 资源

IDD_XXX  

Class DlgNew;

2 在主窗口中类定义中加入

DlgNew *m_modal;

3 在OninitDlg 中m_modal=new DlgNew;

m_modal->CreateWindow(IDD_XXX,this);

4 在button相应函数中

m_modal->ShowWindow(SW_SHOW|其他样式)

5 WM_DestroyWindow



控件:静态文本框和按钮

在布局管理器中   调整TAB切换界面控件的顺序


静态文本框  CStatic  类


添加一个静态文本框后  在DoDataExchange后面 

afx-msg 增加了一个宏  (控件ID号,响应函数) 的关联


文本框控件    CEdit类

属性可设置是否显示 等设置

GetDlgItem 得到控件

GetDlgItem->GetWindowText 得到内容

例如GetDlgItem(IDC_xxx_xxx)->GetWindowText(CSTRING xxx) 直接赋值


方法2  得到控件中的内容

DDX 即 Dialog Data Exchange

MFC提供了DDX机制,允许事先设定控件与变量对应交换


成员变量    -------------------->  abl控件等

m_strText   <------------------- 双向的交互


如何关联(针对VC6.0)

在IDC_XXX_XXX 处 class wizard 双击

也是在DoDataExchange中 进行的变量和IDC_xxx_xxx 的关联


例如 



点击复制按钮将框1的值赋予框2


Cstring StrText;

GetDlgItem(IDC_xxx)->GetWindowText(xxx);

updatedata(true);    //UpdateData 函数是一个更新机制函数  默认值为TRUE

m_strShow=m_strMsg;

UpdateData(false);


组合框  CComboBox类


1GetCurSel  可以得到当前选中的行,注意行引用号从‘0’开始

2 GetLBText 可以得到某一行的文本


获得组合框值得方法:

方法一 通过对组合框控件进行变量映射

1 可以将其映射成一个CString 类得对象

2 映射成CComboBox 类型的对象,通过调用对象获得选中的值


方法二 将组合框作为一个CWnd 对象,通过调用CWnd对象的GetWindowText方法,获得其当前显示的内容

其实很多控件都是CWnd对象,都可以用同样的方法获取内容。


列表控件  CListCtrl 类

CListCtrl封装了“列表视图控件” 功能


在OnInitDialog 中完成对控件初始化

GetItemCount() 获取列表行数值



此处LCPTSTR 第二个参数   用_T("xxx") 来转换








CFile类是所有文件的基类,派生于CObject

CFile  open close flush write read


CFile::modeCreate  如果重复调用,会自动删除原文件,然后创建新的该名的文件


文本文件  ASC II码存储的文件   不能存储 例如位图 视频等文件

CFile->CStdioFile   该类对文本文件的操作更加方便

文本文件和二进制文件的区别  注意  /n /r 等转意符号



程序的异常处理

异常捕获格式

try

 {

 }

catch(类型,参数)

 {

 }

catch(){} 

从try中抽出异常甩给catch,每一个catch都处理自己指定类型的异常

catch捕获异常的顺序依照从大到小的顺序写


三类典型异常

1 CException  c++所有异常父类

2 _com_err&e  能捕获com组件的异常

3 ...   三个点   能捕获一切异常



GDI概述

windows图形设备接口 GDI 是为与设备无关的图形设计的,GDI负责系统与用户或绘图程序之间的信息交互,并控制在输出设备上显示图形或文字。

在使用GDI绘图时,必须要指定一个设备环境DC 将某个窗口或设备环境类得句柄指针关联七里啊,所有绘图操作与该句柄有关。

MFC中封装为CDC类

应用程序通过设备描述表的句柄来间接的存取设备描述表与属性。

CDC从CObject直接继承来。

子类 CClientDC 代表操作窗口DC

         CPaintDC    以及  CWindowDC

CDC相关函数

1 CreateCompatibleDC 创建一个与指定设备兼容的内存设备上下文环境

2 SelectObject  选择对象到指定设备

SetStretchBltMode

BitBlt

StretchBlt


GDI绘图

CRect  

CDC中几个基本图形绘制函数

Rectangle  矩形

Ellipse  椭圆

MoveTo 移动到某点

LineTo  点到点直线


绘图分2步进行

OnInitDialog() 初始化中使用

然后在OnPaint 中也必须有绘图函数 DrawLogo() 方法    //此处函数名打个比方 举例

因为先进行OnInitDlg,然后运行OnPaint 

若OnPaint中没有绘图函数则无法显示图形


待续。。。








展开阅读全文

没有更多推荐了,返回首页