KeyMsgDlg.cpp
1
// KeyMsgDlg.cpp : 实现文件
2
//
3
4
#include "stdafx.h"
5
#include "KeyMsg.h"
6
#include "KeyMsgDlg.h"
7
8
#ifdef _DEBUG
9
#define new DEBUG_NEW
10
#endif
11
12
13
// 用于应用程序“关于”菜单项的 CAboutDlg 对话框
14
15
class CAboutDlg : public CDialog
16

{
17
public:
18
CAboutDlg();
19
20
// 对话框数据
21
enum
{ IDD = IDD_ABOUTBOX };
22
23
protected:
24
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV 支持
25
26
// 实现
27
protected:
28
DECLARE_MESSAGE_MAP()
29
};
30
31
CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD)
32

{
33
}
34
35
void CAboutDlg::DoDataExchange(CDataExchange* pDX)
36

{
37
CDialog::DoDataExchange(pDX);
38
}
39
40
BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)
41
END_MESSAGE_MAP()
42
43
44
// CKeyMsgDlg 对话框
45
46
47
48
49
CKeyMsgDlg::CKeyMsgDlg(CWnd* pParent /**//*=NULL*/)
50
: CDialog(CKeyMsgDlg::IDD, pParent)
51

{
52
m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
53
}
54
55
void CKeyMsgDlg::DoDataExchange(CDataExchange* pDX)
56

{
57
CDialog::DoDataExchange(pDX);
58
}
59
60
BEGIN_MESSAGE_MAP(CKeyMsgDlg, CDialog)
61
ON_WM_SYSCOMMAND()
62
ON_WM_PAINT()
63
ON_WM_QUERYDRAGICON()
64
//}}AFX_MSG_MAP
65
END_MESSAGE_MAP()
66
67
68
// CKeyMsgDlg 消息处理程序
69
70
BOOL CKeyMsgDlg::OnInitDialog()
71

{
72
CDialog::OnInitDialog();
73
74
// 将“关于
”菜单项添加到系统菜单中。
75
76
// IDM_ABOUTBOX 必须在系统命令范围内。
77
ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
78
ASSERT(IDM_ABOUTBOX < 0xF000);
79
80
CMenu* pSysMenu = GetSystemMenu(FALSE);
81
if (pSysMenu != NULL)
82
{
83
CString strAboutMenu;
84
strAboutMenu.LoadString(IDS_ABOUTBOX);
85
if (!strAboutMenu.IsEmpty())
86
{
87
pSysMenu->AppendMenu(MF_SEPARATOR);
88
pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
89
}
90
}
91
92
// 设置此对话框的图标。当应用程序主窗口不是对话框时,框架将自动
93
// 执行此操作
94
SetIcon(m_hIcon, TRUE); // 设置大图标
95
SetIcon(m_hIcon, FALSE); // 设置小图标
96
97
// TODO: 在此添加额外的初始化代码
98
99
return TRUE; // 除非将焦点设置到控件,否则返回 TRUE
100
}
101
102
void CKeyMsgDlg::OnSysCommand(UINT nID, LPARAM lParam)
103

{
104
if ((nID & 0xFFF0) == IDM_ABOUTBOX)
105
{
106
CAboutDlg dlgAbout;
107
dlgAbout.DoModal();
108
}
109
else
110
{
111
CDialog::OnSysCommand(nID, lParam);
112
}
113
}
114
115
// 如果向对话框添加最小化按钮,则需要下面的代码
116
// 来绘制该图标。对于使用文档/视图模型的 MFC 应用程序,
117
// 这将由框架自动完成。
118
119
void CKeyMsgDlg::OnPaint()
120

{
121
if (IsIconic())
122
{
123
CPaintDC dc(this); // 用于绘制的设备上下文
124
125
SendMessage(WM_ICONERASEBKGND, reinterpret_cast<WPARAM>(dc.GetSafeHdc()), 0);
126
127
// 使图标在工作矩形中居中
128
int cxIcon = GetSystemMetrics(SM_CXICON);
129
int cyIcon = GetSystemMetrics(SM_CYICON);
130
CRect rect;
131
GetClientRect(&rect);
132
int x = (rect.Width() - cxIcon + 1) / 2;
133
int y = (rect.Height() - cyIcon + 1) / 2;
134
135
// 绘制图标
136
dc.DrawIcon(x, y, m_hIcon);
137
}
138
else
139
{
140
CDialog::OnPaint();
141
}
142
}
143
144
//当用户拖动最小化窗口时系统调用此函数取得光标显示。
145
//
146
HCURSOR CKeyMsgDlg::OnQueryDragIcon()
147

{
148
return static_cast<HCURSOR>(m_hIcon);
149
}
150
BOOL CKeyMsgDlg::PreTranslateMessage(MSG *pMsg)
151

{
152
if(pMsg->message==WM_KEYDOWN)
153
{
154
switch(pMsg->wParam)
155
{
156
case VK_DOWN:
157
::AfxMessageBox(_T("VK_SHIFT"));//CTRL 按键按下
158
return TRUE;
159
case 'M':
160
if(::GetKeyState(VK_SHIFT)<0)
161
{
162
::AfxMessageBox(_T("VK_SHIFT+M"));//SHIFT+M 按键被按下
163
}
164
return TRUE;
165
}
166
}
167
return CDialog::PreTranslateMessage(pMsg);
168
}
169
170

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

30

31

32



33

34

35

36



37

38

39

40

41

42

43

44

45

46

47

48

49


50

51



52

53

54

55

56



57

58

59

60

61

62

63

64

65

66

67

68

69

70

71



72

73

74


75

76

77

78

79

80

81

82



83

84

85

86



87

88

89

90

91

92

93

94

95

96

97

98

99

100

101

102

103



104

105



106

107

108

109

110



111

112

113

114

115

116

117

118

119

120



121

122



123

124

125

126

127

128

129

130

131

132

133

134

135

136

137

138

139



140

141

142

143

144

145

146

147



148

149

150

151



152

153



154

155



156

157

158

159

160

161



162

163

164

165

166

167

168

169

170
