我的程序运行到某处时,弹出一个对话框,这个对话框的作用是确定插入了一把usbkey,如下CInsertKey Dlg1;
if (Dlg1.DoModal()==IDOK)
{
//do something;
}
else
{
return;
}现在我想弹出对话框时,如果没有插入usbkey,确定按钮就变灰色,直到插入了再变回来,这时用户点确定按钮就可以转到//do something了,无论何时都可以点取消按钮,如何就退出了。
已经写好检测usbkey的函数了 BOOL CheckKey() 我现在的想法是在对话框初始化的时候起一个线程,用轮询的方式调用CheckKey(),我没写过线程的函数 希望有人能指点一下 我这样可行吗 怎么写呢?
if (Dlg1.DoModal()==IDOK)
{
//do something;
}
else
{
return;
}现在我想弹出对话框时,如果没有插入usbkey,确定按钮就变灰色,直到插入了再变回来,这时用户点确定按钮就可以转到//do something了,无论何时都可以点取消按钮,如何就退出了。
已经写好检测usbkey的函数了 BOOL CheckKey() 我现在的想法是在对话框初始化的时候起一个线程,用轮询的方式调用CheckKey(),我没写过线程的函数 希望有人能指点一下 我这样可行吗 怎么写呢?
mReadHandle = CreateThread(NULL, 0, workThread, (LPVOID)(param), NULL, &threadid);
定义一个
DWORD WINAPI workThread(LPVOID lParam);
在线程函数workThread里面写你的轮询param是你要传进去的参数
建议楼主不使用线程,而是在弹出的对话框中放一个定时器,在定时器里调用你的CheckKey()
何必用线程,费资源,可以在对话框弹出时设置一个定时器,设置按钮为你想要的,在WM_TIMER消息响应函数中检测电子狗。检测到变回去即可。