2010-12-05 53 views
1

如何确保在按钮上只创建一个线程而不会意外双击?在按钮上启动线程

+0

这被称为“debouncing”。见例如http://blogs.msdn.com/b/oldnewthing/archive/2004/10/15/242761.aspx – MSalters 2010-12-06 10:46:08

回答

0

下面的代码应该这样做(在Win32下)...

EnterCriticalSection(&critSec); 
if (ghThread != INVALID_HANDLE_VALUE) 
{ 
    ghThread = ::CreateThread(NULL, stackSize, (LPTHREAD_START_ROUTINE)ThreadEntry, NULL, 0, NULL); 
} 
LeaveCriticalSection(&critSec); 

这并不当然假设你初始化ghThread HANDLE提前INVALID_HANDLE_VALUE。

+0

这取决于。多个线程可以访问这个函数吗? – 2010-12-05 19:16:30

0

你说的是Windows编程吗? 我对此并不太熟悉,但是您应该捕获WM_LBUTTONDOWN消息(或双击)并将一些布尔标志设置为TRUE。如果此标志为TRUE,所有你需要的不是创建线程。它必须被初始化为cource的FALSE。

+0

国旗的要点是什么?另外,`WM_LBUTTONDOWN`没有双击指示。这不仅仅是一次点击,只是它的前半部分。您需要单独的向上/向下拖放信息进行拖放,而不是点击。 – MSalters 2010-12-06 10:44:23