4.1 Windows编程基础 413 Windows基本数据类型 表4 I Windows常用的基本数据类型 Windows所用对应的基本数据 说明 的型樊型 BOOL 布尔值 BSTR unsigned short*32位字符指针 BYTE unsigned char 8位无符号整数 COLORREF unsigned long用作额色值的32位值 DWORD 32位无符号整数,段地址和相关的偏移地址 LONG long 32位带符号整数 LPARAM long 作为参数传递给窗口过程或回调函数的32位值 LPCSTR nst char*指向字符串常量的3位指针 LPS TR 指向字符串的32位指针 LPVOID 指向未定义类型的3位指针 LRESULT long 来自窗口过程或回调函数的32位返回值 UINT unsigned int 32位无符号整数 WORD unsigned short 16位无符号整数 WPARAM 当作参数传递给窗口过程或回调函数的32位值
4.1Windows编程基础 4.1.3Windows基本数据类型
4.1 Windows编程基础 需要说明的是: 这些基本数据类型都是以大写字符出现。 是数据类型的前缀是P或LP,表示该类型是一个指针或长指针数据类型。 前缀是H,表示是句柄类型。前缀是∪,表示是无符号数据类型。 还提供一些宏来处理上述基本数据类型。 LOBYTE和 HIBYTE分别用来获取16 位数值中的低位和高位字节; LOWORD和 HIWORD分别用来获取32位数值 中的低位和高位字; MAKEWORD是将两个16位无符号值结合成一个32位无 符号值。 表4.2 Windows常用的句柄类型 句柄类型 说明 HBITMAP 保存位图信息的内存域的句柄 HBRUSH 画刷句柄 HCURSOR 鼠标光标句柄 HDC 设备描术表句柄 HFONT 字体句柄 HICON 图标句柄 HINSTANCE 应用程序的实例句柄 HMENU 菜单句 HPALE TTE 颜色调色板句柄 HEN 在设备上画图时用于指明线型的笔的句柄 HwND 窗口句柄
4.1Windows编程基础 需要说明的是: ◆ 这些基本数据类型都是以大写字符出现。 ◆ 凡是数据类型的前缀是P或LP,表示该类型是一个指针或长指针数据类型。 前缀是H,表示是句柄类型。前缀是U,表示是无符号数据类型。 ◆ 还提供一些宏来处理上述基本数据类型。LOBYTE和HIBYTE分别用来获取16 位数值中的低位和高位字节;LOWORD和HIWORD分别用来获取32位数值 中的低位和高位字;MAKEWORD是将两个16位无符号值结合成一个32位无 符号值
42编制一个MFC应用程序 421MFc概述 1987年微软公司推出了第一代 Windows产品,并为应用程序设计者提供了 Wn16API,在此基础上推出了 WindOws gUI(图形用户界面),然后采用面 向对象技术对AP进行封装。1992年推出应用程序框架产品AFX( Application Frameworks),并在AFX的基础上进一步发展为MFC产品。MFC类的基本层 次结构如图。 CObject CWinTread CCmd Target CDocument CWinApp CWnd CView FRame Wnd CDialog及控件 CMDIFrame Wnd CMDIChildWnd CMiniFrameV 图44MFC类的基本层次结构
4.2编制一个MFC应用程序 4.2.1MFC概述 1987年微软公司推出了第一代Windows产品,并为应用程序设计者提供了 Win16 API,在此基础上推出了Windows GUI(图形用户界面),然后采用面 向对象技术对API进行封装。1992年推出应用程序框架产品AFX(Application Frameworks),并在AFX的基础上进一步发展为MFC产品。MFC类的基本层 次结构如图。 图4.4 MFC类的基本层次结构 CCmdTarget CWnd CDocument CFrameWnd CObject CWinTread CWinApp CView CDialog及控件 CMDIFrameWnd CMDIChildWnd CMiniFrameWnd
42编制一个MFC应用程序 422设计一个MFC程序 [例 Ex HelloMFO]一个MFC应用程序 #include <afxwin. h> ∥/MFC头文件 class CHelloApp: public CWinApp ∥/声明应用程序类 public virtual BOOL InitInstanceo: 3; CHelloApp theApp: ∥/建立应用程序类的实例 class CMain Frame: public CFrameWnd ∥/声明主窗口类 public MAin Framed ∥/创建主窗口一 Create(NULL,"我的窗口", WS OVERLAPPEDWINDOW CRect(0,0,400,300) protected: afx_msg void OnLButton Down(UINT nFlags, CPoint point); DECLARE_MESSAGE_ MAPO ∥/消息映射入口 BEGIN_ MESSAGE_MAP(CMain Frame, CFrameWnd) ON_ WM_LBUTTONDOWNO∥单击鼠标左键消息的映射宏 END_MESSAGE_MAPO
4.2编制一个MFC应用程序 4.2.2设计一个MFC程序 [例Ex_HelloMFC] 一个MFC应用程序。 #include <afxwin.h> // MFC头文件 class CHelloApp : public CWinApp // 声明应用程序类 { public: virtual BOOL InitInstance(); }; CHelloApp theApp; // 建立应用程序类的实例 class CMainFrame: public CFrameWnd // 声明主窗口类 { public: CMainFrame() { // 创建主窗口 Create(NULL, "我的窗口", WS_OVERLAPPEDWINDOW, CRect(0,0,400,300)); } protected: afx_msg void OnLButtonDown(UINT nFlags, CPoint point); DECLARE_MESSAGE_MAP() }; // 消息映射入口 BEGIN_MESSAGE_MAP(CMainFrame, CFrameWnd) ON_WM_LBUTTONDOWN() // 单击鼠标左键消息的映射宏 END_MESSAGE_MAP()
42编制一个MFC应用程序 void CMainFrame:: OnLButtonDown(UINT nFlags, CPoint point) { MessageBox("你好,我的 Visual c++世界!","问候"0); CFrameWnd: OnLButtonDown(nFlags, point) ∥/每当应用程序首次执行时都要调用的初始化函数 BOOL CHelloApp: Initinstanceo t m_pMainWnd new CMainFrameo m_pMainWnd->Show Window(m_nCmdShow) m_pMainWnd->UpdateWindowo return TRUEI 运行上述MFC程序需要进行以下步骤 选择“Fie”“New”。单击 Projects,选中Win32 Application项,创建一个 Ex HelloMFo空应用程序项目 选择“File>“NeW。单击Fle标签,在左边的列表框中选择C++ Source File项,在右边的Fie框中键入 Ex_HelloMsg cpp,单击[OK] ◆输入上面的代码。选择“ Projectν“ Settings”,选择“ General标签。在 “ Microsoft Foundation Classes”组合框中,选择“ Use MFc in a shared DLL”。单击[OK] ◆程序运行后,单击鼠标左键,就会弹出一个对话框,结果同E_ Hellowin
4.2编制一个MFC应用程序 void CMainFrame::OnLButtonDown(UINT nFlags, CPoint point) { MessageBox ("你好,我的Visual C++世界!", "问候", 0) ; CFrameWnd::OnLButtonDown(nFlags, point); } // 每当应用程序首次执行时都要调用的初始化函数 BOOL CHelloApp::InitInstance() { m_pMainWnd = new CMainFrame(); m_pMainWnd->ShowWindow(m_nCmdShow); m_pMainWnd->UpdateWindow(); return TRUE; } 运行上述MFC程序需要进行以下步骤: ◆ 选择“File”→“New”。单击Projects,选中Win32 Application项,创建一个 Ex_HelloMFC空应用程序项目。 ◆ 选择“File”→“New”。单击File标签,在左边的列表框中选择C++ Source File项,在右边的File框中键入Ex_HelloMsg.cpp,单击[OK]。 ◆ 输入上面的代码。选择“Project”→“Settings”,选择“General”标签。在 “Microsoft Foundation Classes”组合框中,选择“Use MFC in a Shared DLL”。单击[OK]。 ◆ 程序运行后,单击鼠标左键,就会弹出一个对话框,结果同Ex_HelloWin