|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 编程追风梦 于 2022-11-17 18:04 编辑
今天翻看以前的积分记录,恰好看见有一次被 @python爱好者. 扣了分,原因是在@南归 的帖子里面回复了一句不恰当的话。
今天看起来不由得感叹,那时的我就像年轻时,懵懂又无知...........太言过了啊....
当时我刚来的时候发一些小恶搞什么的,南归就总是跟我说一点技术含量都木有,我要发一些好贴,既能改变自己,更能改变他人。
这就像我的人生导师,现在他是中级鱼油II,而我是中级鱼油III,比他高一等。
今天突然想起来想感叹,也是在此跟他交一个朋友
最后给大家分享一个圣诞节小程序
转载原文链接:https://blog.csdn.net/weixin_45713725/article/details/122104942
上代码
- #include <stdio.h>
- #include <windows.h>
- #include <graphics.h>
- #include <commctrl.h>
- #include <mmsystem.h>
- #pragma comment(lib,"winmm.lib")
-
- int main()
- {
- keybd_event(VK_LWIN, 0, 0, 0);
- keybd_event('D', 0, 0, 0);
- keybd_event('D', 0, 2, 0);
- keybd_event(VK_LWIN, 0, 2, 0);
-
- Sleep(3000);
- int CX = GetSystemMetrics(SM_CXSCREEN);
- int CY = GetSystemMetrics(SM_CYSCREEN);
-
- HWND hwnd = initgraph(500,500); //创建一个窗口hwnd
- HRGN Ellip = CreateEllipticRgn(10, 32, 100+10, 100+32);//设置一个逻辑的图形rect
- SetWindowRgn(hwnd, Ellip, true); //设置窗口的区域
- SetForegroundWindow(hwnd);
- MoveWindow(hwnd, CX / 2 - 120, CY / 2, 500, 500, true);
-
- mciSendString("open res/music.mp3", 0, 0, 0); //打开
- mciSendString("play res/music.mp3 repeat", 0, 0, 0); //播放
- bool isplay = true; //音乐是否正在播放
-
- int sence = 3; //场景
- int frame = 0; //帧数
- IMAGE img[30];
- int maxframe[] = { 20, 7, 4, 15, 10}; //每一种场景的图片的张数
- char picpath[30] = { 0 }; //字符串 图片的路径
- for (int i = 0; i < maxframe[sence]; i++)
- {
- sprintf(picpath, "res/%02d-%02d.bmp", sence, i);
- loadimage(&img[i], picpath, 100, 100);
- }
-
- /*---------------------------------------------------------*/
- //获取到桌面图标的窗口
- HWND zmWnd = FindWindow("Progman","Program Manager"); //桌面窗口
- HWND bzWnd = FindWindowEx(zmWnd, 0, "SHELLDLL_DefView", NULL); //壁纸窗口
- HWND tbWnd = FindWindowEx(bzWnd, 0, "SysListView32", "FolderView"); //图标窗口
-
- HWND workHwnd = NULL;
- while (tbWnd == NULL)//必须存在桌面窗口层次
- {
- workHwnd = FindWindowExA(0, workHwnd, "WorkerW", NULL);//获得WorkerW类的窗口
- if (workHwnd == NULL)
- break;//未知错误
- bzWnd = FindWindowExA(workHwnd, NULL, "SHELLDLL_DefView", NULL);
- if (bzWnd == NULL)
- continue;
- tbWnd = FindWindowExA(bzWnd, NULL, "SysListView32", NULL);
- }
-
- DWORD dwStyle = (DWORD)GetWindowLong(tbWnd, GWL_STYLE);
- if (dwStyle & LVS_AUTOARRANGE)
- SetWindowLong(tbWnd, GWL_STYLE, dwStyle & ~LVS_AUTOARRANGE);
-
- DWORD dwExStyle = (DWORD)ListView_GetExtendedListViewStyle(tbWnd, GWL_EXSTYLE);
- if (dwExStyle & LVS_EX_SNAPTOGRID)
- ListView_SetExtendedListViewStyle(tbWnd, dwExStyle & ~LVS_EX_SNAPTOGRID);
-
-
- //指挥它 威胁它 图标的窗口
- int count = SendMessage(tbWnd, LVM_GETITEMCOUNT, 0, 0);
- for (int i = 0; i < count; i++)
- SendMessage(tbWnd, LVM_SETITEMPOSITION, i, (3000 << 16) + 100);
- POINT dir[14] = { { 868 * CX / 1920, 316 * CY / 1080 }, { 730 * CX / 1920, 207 * CY / 1080 },
- { 591 * CX / 1920, 221 * CY / 1080 }, { 515 * CX / 1920, 327 * CY / 1080 }, { 542 * CX / 1920, 469 * CY / 1080 },
- { 610 * CX / 1920, 624 * CY / 1080 }, { 723 * CX / 1920, 746 * CY / 1080 }, { 870 * CX / 1920, 814 * CY / 1080 },
- { 1012 * CX / 1920, 744 * CY / 1080 }, { 1130 * CX / 1920, 626 * CY / 1080 },
- { 1219 * CX / 1920, 485 * CY / 1080 }, { 1225 * CX / 1920, 328 * CY / 1080 }, { 1156 * CX / 1920, 225 * CY / 1080 },
- { 1012 * CX / 1920, 217 * CY / 1080 } };
-
- ExMessage m; //定义消息
- int oldsence;
- while (1){
-
- if (peekmessage(&m, EM_MOUSE)) //如果获取到一条鼠标消息
- {
- switch (m.message)
- {
- case WM_LBUTTONDOWN: //点下左键 换一个场景
- oldsence = sence;
- do
- {
- sence = rand() % (sizeof(maxframe) / sizeof(maxframe[0])); //0-5
- } while (sence == oldsence);
-
- for (int i = 0; i < maxframe[sence]; i++)
- {
- sprintf(picpath, "res/%02d-%02d.bmp", sence, i);
- loadimage(&img[i], picpath, 100, 100);
- }
- SendMessage(hwnd, WM_SYSCOMMAND, 0xf012, 0);
-
- break;
- case WM_RBUTTONDOWN:
- if (isplay) //正在播放
- mciSendString("pause res/music.mp3", 0, 0, 0);
- else
- mciSendString("play res/music.mp3 repeat", 0, 0, 0);
-
- isplay = !isplay; //取反
- break;
- }
- }
- else //绘制界面
- {
- putimage(0, 0, &img[frame++]);
- if (frame > maxframe[sence] - 1)frame = 0;
-
- for (int i = 0; i < 14; i++)
- {
- SendMessage(tbWnd, LVM_SETITEMPOSITION, i, (dir[i].y << 16) + dir[i].x);
- }
-
- int x = dir[0].x;
- int y = dir[0].y;
- for (int i = 0; i < 13; i++)
- {
- dir[i].x = dir[i + 1].x;
- dir[i].y = dir[i + 1].y;
- }
- dir[13].x = x;
- dir[13].y = y;
- }
- }
- return 0;
- }
-
复制代码
|
评分
-
查看全部评分
|