c/c++ windows控制台 timmer

#include "windows.h"
#include <iostream>

 

using namespace std;
void CALLBACK TimeProc(
    HWND hwnd,      
    UINT message,    
    UINT idTimer,    
    DWORD dwTime);

 

int _tmain(int argc, _TCHAR* argv[])
{

 SetTimer(NULL,1,1000,TimeProc);
 MSG   msg;  
  while(GetMessage(&msg,NULL,0,0))  
  {  
   if(msg.message==WM_TIMER)  
   {  
    DispatchMessage(&msg);  
   }  
  }  


 scanf(&a);
 return 0;
}

 

 

 

void CALLBACK TimeProc(
    HWND hwnd,      
    UINT message,    
    UINT idTimer,    
    DWORD dwTime)  
{
   cout<<"a timer comming"<<endl;
}

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 好的,我可以提供一个示例代码: #include <stdio.h> #include <windows.h> int main() { // 定义变量,用于存储坐标 int x = 0, y = 0; // 循环 100 次 for (int i = 0; i < 100; i++) { // 设置光标位置 COORD coord = {x, y}; SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), coord); // 打印鞭炮字符 printf("🧨"); // 更新坐标 x++; y++; // 等待 50 毫秒 Sleep(50); } return 0; } 这段代码将会在命令行窗口中循环打印 100 个鞭炮字符,每次循环坐标都会更新,并且等待 50 毫秒。希望这能帮到您。 ### 回答2: 在Windows平台上使用C语言编写一个循环放鞭炮的动态界面可以借助于Windows API和图形库来实现。 首先,我们需要引入相应的头文件: ```c #include <Windows.h> #include <conio.h> ``` 然后,我们可以定义一些常量来表示界面的大小、鞭炮的数量等: ```c #define WIDTH 80 // 界面宽度 #define HEIGHT 24 // 界面高度 #define FIREWORKS 10 // 鞭炮数量 ``` 接下来,我们可以定义一个结构体来表示鞭炮的状态: ```c typedef struct { int x, y; // 鞭炮的位置 int vx, vy; // 鞭炮的速度 char character; // 鞭炮的图标 } Firework; ``` 然后,我们可以在主函数中创建一个动态界面,并在循环中不断更新鞭炮的位置和图标: ```c int main() { // 设置控制台窗口大小 system("mode con cols=80 lines=24"); // 创建动态界面缓冲区 char screen[HEIGHT][WIDTH]; // 初始化鞭炮数组 Firework fireworks[FIREWORKS]; for (int i = 0; i < FIREWORKS; i++) { fireworks[i].x = rand() % WIDTH; fireworks[i].y = rand() % HEIGHT; fireworks[i].vx = rand() % 3 - 1; // 随机速度范围为[-1, 1] fireworks[i].vy = rand() % 3 - 1; fireworks[i].character = '*'; } // 循环更新界面 while (!kbhit()) { // 清空界面缓冲区 memset(screen, ' ', sizeof(screen)); // 更新鞭炮的位置和图标 for (int i = 0; i < FIREWORKS; i++) { Firework *firework = &fireworks[i]; firework->x += firework->vx; firework->y += firework->vy; // 防止鞭炮超出界面边界 if (firework->x < 0 || firework->x >= WIDTH) { firework->vx = -firework->vx; } if (firework->y < 0 || firework->y >= HEIGHT) { firework->vy = -firework->vy; } // 在界面缓冲区中绘制鞭炮 screen[firework->y][firework->x] = firework->character; } // 将界面缓冲区内容输出到控制台窗口 for (int i = 0; i < HEIGHT; i++) { screen[i][WIDTH] = '\0'; printf("%s\n", screen[i]); } // 等待一段时间,以控制帧率 Sleep(200); } return 0; } ``` 以上是一个简单的Windows下使用C语言编写循环放鞭炮的动态界面的实现方法。当运行程序时,会在控制台窗口中不断更新鞭炮的位置和图标,形成一个动态的放鞭炮效果。 ### 回答3: 要实现循环放鞭炮的动态界面,在Windows C中可以使用Windows API来创建窗口,并利用定时器来控制鞭炮的放置和移动。 首先,我们需要定义一个窗口,并在窗口中创建一个定时器。在WM_CREATE消息中创建定时器,并在WM_TIMER消息中处理鞭炮的放置和移动。 在WM_CREATE消息处理函数中,可以调用SetTimer函数设置一个定时器。例如,我们可以设置100毫秒为一个计时周期,即每100毫秒执行一次WM_TIMER消息处理函数。 在WM_TIMER消息处理函数中,可以绘制鞭炮的图片并移动它的位置。可以使用GDI函数来绘制图片,例如调用函数LoadBitmap来加载鞭炮的图片资源,并使用函数BitBlt将图片绘制到窗口上。可以使用SetWindowPos函数来改变鞭炮图片的位置。 当窗口接收到WM_DESTROY消息时,需要清除定时器,释放资源,并调用函数PostQuitMessage来退出程序。 简单示例代码如下: ```c #include <windows.h> #define TIMER_ID 1 #define TIMER_INTERVAL 100 LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) { switch (message) { case WM_CREATE: SetTimer(hWnd, TIMER_ID, TIMER_INTERVAL, NULL); break; case WM_TIMER: // 在此处理鞭炮的放置和移动 // 绘制鞭炮图片并移动位置 // 使用 BitBlt 函数绘制图片 // 使用 SetWindowPos 函数改变鞭炮图片的位置 break; case WM_DESTROY: KillTimer(hWnd, TIMER_ID); PostQuitMessage(0); break; default: return DefWindowProc(hWnd, message, wParam, lParam); } return 0; } int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) { const wchar_t CLASS_NAME[] = L"WindowClass"; WNDCLASS wc = { 0 }; wc.lpfnWndProc = WndProc; wc.hInstance = hInstance; wc.lpszClassName = CLASS_NAME; RegisterClass(&wc); HWND hWnd = CreateWindow( CLASS_NAME, L"鞭炮动态界面", WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, 800, 600, NULL, NULL, hInstance, NULL ); if (hWnd == NULL) { return 0; } ShowWindow(hWnd, nCmdShow); MSG msg = { 0 }; while (GetMessage(&msg, NULL, 0, 0)) { TranslateMessage(&msg); DispatchMessage(&msg); } return (int)msg.wParam; } ``` 这只是一个简单的示例代码,具体的效果还需要根据具体需求进行修改和完善。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值