我有这个想法,在屏幕上创建一个倒数计时器,如01:02(fullsize)。 有一件事是我真的不知道如何开始。
我知道基本的c / c ++,win32 api和一点gdi。
任何人都有关于如何开始这个的指示?我的程序就像把计算机变成一个大秒表(但增加了功能)
不要求代码,只是关于如何启动它的一些想法/引子。 主要做网络的东西让我在win编程中有点生疏。
欢迎任何想法
由于
注意:由于速度的原因,我认为我必须用c / c ++来做这件事。我的秒表程序可以在非常慢的PC上运行,类似于p3 800mhz,所以速度非常重要。
答案 0 :(得分:3)
如果您对Windows消息处理和Win32 API有一些经验,那么这应该可以帮助您入门。
LRESULT WndProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
HDC hdc;
PAINTSTRUCT ps;
RECT r;
char szBuffer[200];
static int count = 120;
int seconds = 0;
int minutes = 0;
int hours = 0;
switch (message) {
case WM_CREATE:
// create a 1 second timer
SetTimer (hwnd, ID_TIMER, 1000, NULL);
return 0;
case WM_PAINT:
if(count > 0)
{
hdc = BeginPaint (hwnd, &ps);
GetClientRect (hwnd, &r);
hours = count / 3600;
minutes = (count / 60) % 60;
seconds = count % 60;
wsprintf (szBuffer, "Hours: %d Minutes: %d Seconds: %d", hours, minutes, seconds);
DrawText (hdc, szBuffer, -1, &r, DT_LEFT);
EndPaint (hwnd, &ps);
}
else
{
SendMessage (hwnd, WM_CLOSE, 0, 0L)
}
return 0;
case WM_TIMER:
count--;
InvalidateRect (hwnd, NULL, TRUE);
return 0;
case WM_DESTROY:
KillTimer (hwnd, ID_TIMER);
PostQuitMessage (0);
return 0;
} /* end switch */
}
这是使用计时器的一个很好的链接:
答案 1 :(得分:0)
创建计时器,让应用程序通过向自身发送绘制消息来响应计时器事件。当应用程序退出时,请务必删除计时器。
答案 2 :(得分:0)
时钟以每秒一次的屏幕更换运行; 800MHz CPU每秒处理大约8亿条指令。这比你需要的多7.99亿,所以效率不是问题。它仍然可以在浏览器中的Jvascript中运行。但这并不意味着C或C ++不适合。
编写Win32的最简单方法是通过支持库。 wxWidgets和Qt都是不错的选择,而且都是免费的。他们为你节省了很多钱。螺栓侧。基本上,在你创建一个包含文本框对象和计时器对象的Window对象时,你只需将计时器标记连接到文本更新。