门户网站开发需求文档软件外包app
news/
2025/9/22 15:30:20/
文章来源:
门户网站开发需求文档,软件外包app,青岛网站建设公司哪家好,一个网站的建设流程有哪些资料1.如图#xff0c;实现功能: Hello World!字符串跟随鼠标移动鼠标左击Hello World!颜色为红色鼠标右击Hello World!颜色为蓝色鼠标滚轮滚动改变Hello World!颜色的RGB中的G值 2.实现工具: vs20133.实现步骤: 新建一个win32项目 如图,看到HelloWorldGame.cpp中 _tWinMain()的函… 1.如图实现功能: Hello World!字符串跟随鼠标移动鼠标左击Hello World!颜色为红色鼠标右击Hello World!颜色为蓝色鼠标滚轮滚动改变Hello World!颜色的RGB中的G值 2.实现工具: vs20133.实现步骤: 新建一个win32项目 如图,看到HelloWorldGame.cpp中 _tWinMain()的函数是程序入口函数 WndProc()是处理主窗口的所有消息 About()是显示关于信息 这样就搭建好了win32框架 接下来开始使用GDI图形编程 在WndProc函数中找到case WM_PAINT,在注释中可以看出,WM_PAINT表示绘制消息我们就是在此 进行绘制操作,我们加入以下代码 TextOut(hdc,0,0,LHello World!,12) /* 参数解释: hdc 待输出的设备 0 坐标x 0 坐标y LHello World! L表示将ANSI字符转换为unicode 以便支持中文,Hello World!表示要打印的字符串 12 表示要输出的字符数 */ F5运行 效果如图 好接下来我们来添加颜色 在变量声明区域加入以下代码 int r 125;int g 125;int b 125;COLORREF color RGB(r, g, b); //定义一个颜色索引color 并在TextOut函数前加入 SetTextColor(hdc, color);//设置文本的颜色 F5运行 如图 好的继续我们来增加一些互动性,添加更多的消息处理 在WndProc函数中 添加以下代码 case WM_LBUTTONDOWN://鼠标左击消息 color RGB(255, 0, 0); break; case WM_RBUTTONDOWN://鼠标右击消息 color RGB(0, 0, 255); break; F5运行一下看看,哈哈O(∩_∩)O哈是不是发现没效果 对没效果是对的为什么呢 因为没有及时发出重新绘制消息 case WM_LBUTTONDOWN://鼠标左击消息 color RGB(255, 0, 0); InvalidateRect(hWnd, NULL, TRUE); break; case WM_RBUTTONDOWN://鼠标右击消息 color RGB(0, 0, 255); InvalidateRect(hWnd, NULL, TRUE); 这样就行了 /* InvalidateRect参数 hWnd 窗口句柄 NULL 设置矩形 TRUE 设置重画 */ F5运行 好的我们实现了鼠标左右击颜色变化 接下来我们加入鼠标移动消息处理让Hello World跟着鼠标移动 首先在声明区声明 WCHAR str[64];int x 200, y 150; 然后在WndProc中加入 case WM_MOUSEMOVE: x LOWORD(lParam);//得到x坐标 y HIWORD(lParam);//得到y坐标 InvalidateRect(hWnd, NULL, TRUE);//发出重绘消息 break; F5运行 好的接下来添加鼠标滚轮消息 case WM_MOUSEWHEEL: //得到鼠标滚轮的参数 int zDelta (short)HIWORD(wParam); if (zDelta 0) //正值向前 { if (g255) g 1; } else //负值向后 { if (g0) g--; } color RGB(0, g, 122); InvalidateRect(hWnd, NULL, TRUE); break; 编译运行试试你发现了什么haha编译不同过 因为在case 中定义变量需要用括号把整个部分包含起来才行 case WM_MOUSEWHEEL: { //得到鼠标滚轮的参数 int zDelta (short)HIWORD(wParam); if (zDelta 0) //正值向前 { if (g255) g 1; } else //负值向后 { if (g0) g--; } color RGB(0, g, 122); InvalidateRect(hWnd, NULL, TRUE); } break; 我们再添加显示x,y,r,g,b值 定义 int r 125;int g 125;int b 125;COLORREF color RGB(r, g, b);WCHAR infor[64];int x 200, y 150; 在case WM_PAINT:中 swprintf_s(infor, Lr:%d,g:%d,b:%d\nx%d,y%d,r,g,b, x, y);//格式化字符串 TextOut(hdc, x, y - 100, infor, wcslen(infor)); F5运行一下 就得到了实现的效果 下面给出 HelloWorldGame.cpp的代码 1 // HelloWorldGame.cpp : Defines the entry point for the application.2 //3 4 #include stdafx.h5 #include HelloWorldGame.h6 7 #define MAX_LOADSTRING 1008 9 // Global Variables:10 HINSTANCE hInst; // current instance11 TCHAR szTitle[MAX_LOADSTRING]; // The title bar text12 TCHAR szWindowClass[MAX_LOADSTRING]; // the main window class name13 14 //15 int r 125;16 int g 125;17 int b 125;18 COLORREF color RGB(r, g, b);19 WCHAR infor[64];20 int x 200, y 150;21 //22 // Forward declarations of functions included in this code module:23 ATOM MyRegisterClass(HINSTANCE hInstance);24 BOOL InitInstance(HINSTANCE, int);25 LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);26 INT_PTR CALLBACK About(HWND, UINT, WPARAM, LPARAM);27 28 int APIENTRY _tWinMain(_In_ HINSTANCE hInstance,29 _In_opt_ HINSTANCE hPrevInstance,30 _In_ LPTSTR lpCmdLine,31 _In_ int nCmdShow)32 {33 UNREFERENCED_PARAMETER(hPrevInstance);34 UNREFERENCED_PARAMETER(lpCmdLine);35 36 // TODO: Place code here.37 MSG msg;38 HACCEL hAccelTable;39 40 // Initialize global strings41 LoadString(hInstance, IDS_APP_TITLE, szTitle, MAX_LOADSTRING);42 LoadString(hInstance, IDC_HELLOWORLDGAME, szWindowClass, MAX_LOADSTRING);43 MyRegisterClass(hInstance);44 45 // Perform application initialization:46 if (!InitInstance(hInstance, nCmdShow))47 {48 return FALSE;49 }50 51 hAccelTable LoadAccelerators(hInstance, MAKEINTRESOURCE(IDC_HELLOWORLDGAME));52 53 // Main message loop:54 while (GetMessage(msg, NULL, 0, 0))55 {56 if (!TranslateAccelerator(msg.hwnd, hAccelTable, msg))57 {58 TranslateMessage(msg);59 DispatchMessage(msg);60 }61 }62 63 return (int)msg.wParam;64 }65 66 67 68 //69 // FUNCTION: MyRegisterClass()70 //71 // PURPOSE: Registers the window class.72 //73 ATOM MyRegisterClass(HINSTANCE hInstance)74 {75 WNDCLASSEX wcex;76 77 wcex.cbSize sizeof(WNDCLASSEX);78 79 wcex.style CS_HREDRAW | CS_VREDRAW;80 wcex.lpfnWndProc WndProc;81 wcex.cbClsExtra 0;82 wcex.cbWndExtra 0;83 wcex.hInstance hInstance;84 wcex.hIcon LoadIcon(hInstance, MAKEINTRESOURCE(IDI_HELLOWORLDGAME));85 wcex.hCursor LoadCursor(NULL, IDC_ARROW);86 wcex.hbrBackground (HBRUSH)(COLOR_WINDOW 1);87 wcex.lpszMenuName MAKEINTRESOURCE(IDC_HELLOWORLDGAME);88 wcex.lpszClassName szWindowClass;89 wcex.hIconSm LoadIcon(wcex.hInstance, MAKEINTRESOURCE(IDI_SMALL));90 91 return RegisterClassEx(wcex);92 }93 94 //95 // FUNCTION: InitInstance(HINSTANCE, int)96 //97 // PURPOSE: Saves instance handle and creates main window98 //99 // COMMENTS:
100 //
101 // In this function, we save the instance handle in a global variable and
102 // create and display the main program window.
103 //
104 BOOL InitInstance(HINSTANCE hInstance, int nCmdShow)
105 {
106 HWND hWnd;
107
108 hInst hInstance; // Store instance handle in our global variable
109
110 hWnd CreateWindow(szWindowClass, szTitle, WS_OVERLAPPEDWINDOW,
111 CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, NULL, NULL, hInstance, NULL);
112
113 if (!hWnd)
114 {
115 return FALSE;
116 }
117
118 ShowWindow(hWnd, nCmdShow);
119 UpdateWindow(hWnd);
120
121 return TRUE;
122 }
123
124 //
125 // FUNCTION: WndProc(HWND, UINT, WPARAM, LPARAM)
126 //
127 // PURPOSE: Processes messages for the main window.
128 //
129 // WM_COMMAND - process the application menu
130 // WM_PAINT - Paint the main window
131 // WM_DESTROY - post a quit message and return
132 //
133 //
134 LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
135 {
136 int wmId, wmEvent;
137 PAINTSTRUCT ps;
138 HDC hdc;
139
140 switch (message)
141 {
142 case WM_COMMAND:
143 wmId LOWORD(wParam);
144 wmEvent HIWORD(wParam);
145 // Parse the menu selections:
146 switch (wmId)
147 {
148 case IDM_ABOUT:
149 DialogBox(hInst, MAKEINTRESOURCE(IDD_ABOUTBOX), hWnd, About);
150 break;
151 case IDM_EXIT:
152 DestroyWindow(hWnd);
153 break;
154 default:
155 return DefWindowProc(hWnd, message, wParam, lParam);
156 }
157 break;
158 case WM_LBUTTONDOWN://鼠标左击消息
159 color RGB(255, 0, 0);
160 InvalidateRect(hWnd, NULL, TRUE);
161 break;
162 case WM_RBUTTONDOWN://鼠标右击消息
163 color RGB(0, 0, 255);
164 InvalidateRect(hWnd, NULL, TRUE);
165 break;
166 case WM_MOUSEMOVE:
167 x LOWORD(lParam);//得到x坐标
168 y HIWORD(lParam);//得到y坐标
169 InvalidateRect(hWnd, NULL, TRUE);//发出重绘消息
170 break;
171 case WM_MOUSEWHEEL:
172 {
173 //得到鼠标滚轮的参数
174 int zDelta (short)HIWORD(wParam);
175 if (zDelta 0) //正值向前
176 {
177 if (g255)
178 g 1;
179
180 }
181 else //负值向后
182 {
183 if (g0)
184 g--;
185 }
186 color RGB(0, g, 122);
187 InvalidateRect(hWnd, NULL, TRUE);
188 }
189 break;
190
191 case WM_PAINT:
192 hdc BeginPaint(hWnd, ps);
193 // TODO: Add any drawing code here...
194 SetTextColor(hdc, color);
195 TextOut(hdc, x, y, LHello World!, 12);
196 swprintf_s(infor, Lr:%d,g:%d,b:%d\nx%d,y%d,r,g,b, x, y);//格式化字符串
197 TextOut(hdc, x, y - 100, infor, wcslen(infor));
198 EndPaint(hWnd, ps);
199 break;
200 case WM_DESTROY:
201 PostQuitMessage(0);
202 break;
203 default:
204 return DefWindowProc(hWnd, message, wParam, lParam);
205 }
206 return 0;
207 }
208
209 // Message handler for about box.
210 INT_PTR CALLBACK About(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
211 {
212 UNREFERENCED_PARAMETER(lParam);
213 switch (message)
214 {
215 case WM_INITDIALOG:
216 return (INT_PTR)TRUE;
217
218 case WM_COMMAND:
219 if (LOWORD(wParam) IDOK || LOWORD(wParam) IDCANCEL)
220 {
221 EndDialog(hDlg, LOWORD(wParam));
222 return (INT_PTR)TRUE;
223 }
224 break;
225 }
226 return (INT_PTR)FALSE;
227 } HelloWorldGame.cpp 转载于:https://www.cnblogs.com/ncgds/p/6288885.html
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/909473.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!