1 /*程序功能:点击button按钮弹出输入框的文本*/
2 #include<windows.h>
3
4 struct
5 {
6 int iStyle;
7 TCHAR * szText;
8 }
9 button[]=
10 {
11 BS_PUSHBUTTON, TEXT("BS_PUSHBUTTON"),
12 BS_DEFPUSHBUTTON, TEXT("BS_DEFPUSHBUTTON")
13 };
14
15 #define NUM (sizeof button /sizeof button[0]) //num=2
16
17 LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM); //申明函数
18
19 int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int iCmdShow)
20 {
21 static TCHAR szAppName[]= TEXT ("app1");
22
23 HWND hwnd;
24 MSG msg;
25 WNDCLASS wndclass;
26
27 wndclass.style = CS_HREDRAW | CS_VREDRAW;
28 wndclass.lpfnWndProc = WndProc;
29 wndclass.cbClsExtra = 0;
30 wndclass.cbWndExtra = 0;
31 wndclass.hInstance = hInstance;
32 wndclass.hIcon = LoadIcon(NULL, IDI_APPLICATION);
33 wndclass.hCursor = LoadCursor(NULL,IDC_ARROW);
34 wndclass.hbrBackground = (HBRUSH) GetStockObject(WHITE_BRUSH);
35 wndclass.lpszMenuName = NULL;
36 wndclass.lpszClassName= szAppName;
37
38 if(!RegisterClass(&wndclass))
39 {
40 MessageBox(NULL,TEXT("程序要求 Windows NT 系统!"),szAppName,MB_ICONERROR);
41
42 return 0;
43 }
44
45 hwnd = CreateWindow (szAppName,
46 TEXT ( "WindowsAPI程序-按钮实例 "),
47 WS_OVERLAPPEDWINDOW,
48 CW_USEDEFAULT,
49 CW_USEDEFAULT,
50 CW_USEDEFAULT,
51 CW_USEDEFAULT,
52 NULL,
53 NULL,
54 hInstance,
55 NULL);
56
57 ShowWindow(hwnd,iCmdShow);
58 UpdateWindow(hwnd);
59
60 while( GetMessage( &msg,NULL,0,0))
61 {
62 TranslateMessage(&msg);
63 DispatchMessage(&msg);
64 }
65
66 return msg.wParam;
67
68 }
69
70 //窗口过程函数
71 LRESULT CALLBACK WndProc (HWND hwnd,UINT message,WPARAM wParam, LPARAM lParam)
72 {
73
74 static HWND hwndButton[NUM]; //按钮句柄集合
75 static HWND hwndTxt;
76 static HWND hwndBtnSure;
77 static HWND hwndBtnSure2;
78 static HWND hwndChild;
79 static RECT rect; //矩形结构体
80 //char数组
81 static TCHAR szTop[] =TEXT("功能:点击按钮显示文本框内容"),
82 szUnd[] =TEXT("_______ ______ ______"),
83 szFormat[] =TEXT("%-16s%04X-%04X %04X-%04X"), //关于格式化字符串参考 http://blog.163.com/c__0/blog/static/188312066201162661240584/
84 szBuffer[50];
85 char constStr[]= { ",欢迎进入C++世界" };
86 char outputStr[256];
87 static int cxChar,cyChar;
88 HDC hdc; //绘图实例句柄
89 HDC childHdc;
90 PAINTSTRUCT ps; //绘制结构体
91 int i,len;
92 switch (message)
93 {
94 //创建
95 case WM_CREATE:
96
97 cxChar=LOWORD(GetDialogBaseUnits());
98 cyChar=HIWORD(GetDialogBaseUnits());
99
100
101 //文本框
102 hwndTxt = CreateWindow (
103 "edit",
104 "",
105 WS_CHILD|WS_VISIBLE|WS_BORDER|BS_TEXT,
106 250, 100, 300,22,
107 hwnd,
108 (HMENU)1,
109 ((LPCREATESTRUCT) lParam)->hInstance,
110 NULL
111 );
112
113 //按钮
114 hwndBtnSure2 = CreateWindow(
115 TEXT("button"),
116 "点击我2",
117 WS_CHILD|WS_VISIBLE|BS_PUSHBUTTON,
118 230,
119 190,
120 20*cxChar,
121 7*cyChar/4,
122 hwnd,
123 (HMENU)3,
124 ((LPCREATESTRUCT) lParam)->hInstance,
125 NULL
126 );
127
128
129
130 hwndBtnSure=CreateWindow(
131 TEXT("Button"),
132 "点击我",
133 WS_CHILD|WS_VISIBLE|BS_PUSHBUTTON,
134 230,
135 150,
136 20*cxChar,
137 7*cyChar/4,
138 hwnd,
139 (HMENU)2,
140 ((LPCREATESTRUCT) lParam)->hInstance,NULL);
141
142
143
144
145 return 0;
146
147 case WM_SIZE:
148 rect.left=24* cxChar;
149 rect.top=2*cyChar;
150 rect.right=LOWORD(lParam);
151 rect.bottom=HIWORD(lParam);
152 return 0;
153
154 case WM_PAINT:
155
156 InvalidateRect(hwnd,&rect,TRUE);
157
158 hdc=BeginPaint(hwnd,&ps);
159
160 SelectObject(hdc,GetStockObject(SYSTEM_FIXED_FONT)); //选取当前字体
161 SetBkMode(hdc,TRANSPARENT) ;// 背景设置成透明
162
163 // SetBkColor(hdc,GetSysColor(COLOR_BTNFACE));
164 SetTextColor(hdc,GetSysColor(COLOR_BTNTEXT)); //设置文本颜色
165
166 TextOut(hdc,24*cxChar,cyChar,szTop,lstrlen(szTop));
167 //TextOut(hdc,24*cxChar,cyChar,szUnd,lstrlen(szUnd));
168
169
170
171 EndPaint(hwnd,&ps);
172 return 0;
173
174 case WM_DRAWITEM:
175 case WM_COMMAND:
176
177 hdc=GetDC(hwnd);
178 SelectObject(hdc,GetStockObject(SYSTEM_FIXED_FONT)); //选取当前字体
179
180 //获取当前子窗口句柄
181 hwndChild=(HWND)lParam;
182 if(hwndChild==hwndBtnSure)
183 {
184 char szBuff[256];
185 GetWindowText(hwndTxt,szBuff,sizeof(szBuff));
186 if(strlen(szBuff)==0)
187 return 0;
188
189 for(i=0;i<sizeof(outputStr);i++)
190 {
191 if(i==0)
192 len=strlen(szBuff);
193 szBuff[len++]=constStr[i];
194 }
195 MessageBox(NULL, szBuff,TEXT("提示"),0);
196 }
197 else if(hwndChild==hwndBtnSure2)
198 {
199 MessageBox(NULL,TEXT("按钮2点击了"),TEXT("提示"),0);
200 }
201
202 ReleaseDC(hwnd,hdc);
203 ValidateRect(hwnd,&rect);
204 break;
205
206 case WM_CTLCOLORBTN:
207 /*
208 childHdc=(HDC)wParam;
209 SetBkColor(childHdc,GetSysColor(COLOR_BTNFACE));
210 SetTextColor(childHdc,GetSysColor(COLOR_HIGHLIGHT));
211 ReleaseDC((HWND)lParam,childHdc);
212 */
213 break;
214
215 case WM_DESTROY:
216 PostQuitMessage(0);
217 return 0;
218 }
219
220 return DefWindowProc (hwnd,message,wParam,lParam);
221 }