题
我有这种想法建立一个倒计时定时器,如1点02,在屏幕上(全尺寸)上的。 一件事是,我真的没有就如何启动一个线索。
我知道基本的C / C ++,Win32 API的和位GDI的。
人对如何启动这个任何指针?我的节目会像使计算机成为一个大秒表(但具有附加功能)
不要求代码,只是关于如何启动这个一些想法/引物。 这样做主要是网页内容已在WIN编程我有点生疏了。
任何想法欢迎
由于
请注意:我觉得我有/ C ++,因为速度的C至做到这一点。我的秒表程序将在一个非常缓慢的PC上运行,像一个P3 800MHz的,所以速度是非常重要的。
解决方案
如果您有与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 */
}
下面是关于使用定时器良好的链接:
其他提示
创建一个定时器,让应用程序通过发送绘制消息本身回应计时器事件。要确保当应用程序退出删除定时器。
一个时钟以每秒一个screenchange运行; 800MHz的CPU每秒处理约800万条指令。这比你需要约7.99亿多,所以效率不是问题。它仍然在Jvascript在浏览器中运行。并不意味着C或C ++是不合适的,虽然。
要Win32程序的最简单的方法是通过一个支撑库。的wxWidgets和Qt都是不错的选择,而且都是免费的。他们节省您的螺母和螺栓侧不少。基本上,在两个你创建包含文本框对象以及计时器对象窗口对象,并且你只是接线计时器滴答到文本更新。
不隶属于 StackOverflow