从本节开始介绍windows开发实现记事本程序的逻辑实现部分。本节的主要内容有以下3点:
1. 主窗口定义 —— 主要介绍记事本主界面窗口对应的窗口类及实现方案
2. RichEdit控件的选用及初始化 —— 记事本程序中编辑控件的选择及使用
3. 整个程序ICON的选择。—— 程序ICON设置
2. 实际开发
2.1 主窗口实现
在上一篇介绍界面的实现中只是给出了运行界面的效果,但是当时那个界面程序不能响应任何的windows消息,因为当时的窗口在创建时将窗口对应的过程处理函数设置为NULL。现在,我们需要将相应的过程处理函数添加上使得这个记事本应用程序可以响应我们发出的一系类操作指令。为此,本文在开发时,单独设计了一个用于保存主界面窗口的类CMainWnd。这个类定义了整个窗口的过程处理函数Main_Porc。在Main_Proc中可以对传入的任何消息进行处理(包括初始化窗口消息,窗口中其他控件的消息,关闭窗口消息等等)。以windows 自带记事本为例,如图1所示

图1 windows主窗口消息效应区域
如上图所示,在windows记事本主界面中,需要响应红色矩形区域内的菜单控件的各类消息、响应黄色矩形区域内系统按钮的相关消息,以及相应编辑控件Edit中的消息。对于主窗口中的各类控件的消息,windows会以WM_COMMAND消息进行传输,这也是整个程序的核心处理区域。系统按钮关闭的消息则是WM_CLOSE。窗口初始化消息WM_INITDIALOG则是构建对话框窗口前发出的初始化消息。为了能够响应上述各类消息,需要在CMainWnd中添加对于这几类消息的响应函数,因此整个CMainWnd的基本实现形式如下:
头文件声明:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
#ifndef _MAIN_WND_H
#define _MAIN_WND_H
#include <Windows.h>
class CMainWnd
{
public :
static BOOL WINAPI Main_Proc( HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam);
static BOOL Main_OnInitDialog( HWND hWnd, HWND hWndFocus, LPARAM lParam);
static void Main_OnCommand( HWND hWnd, int id, HWND hWndCtl, LPARAM lParam);
static void Main_OnClose( HWND hWnd);
private :
static HWND hMainWnd;
};
|