"User32.DLL"); if(hInst) { typedef BOOL (WINAPI *MYFUNC)(HWND,COLORREF,BYTE,DWORD); MYFUNC fun = NULL; //取得 SetLayeredWindowAttributes 函数指针 fun=(MYFUNC)GetProcAddress(hInst, "SetLayeredWindowAttributes"); if(fun)fun(this->GetSafeHwnd(),0, 200,//0 ~ 255 2); FreeLibrary(hInst); } } //字体对话框的初始化********************************************* LOGFONT lf; lf.lfHeight=-35; lf.lfCharSet=134; lf.lfWeight=400; lf.lfOutPrecision=3; lf.lfClipPrecision=2; lf.lfQuality=1; lf.lfPitchAndFamily=2; strcpy(lf.lfFaceName,"宋体");//以上初始化为宋体 26 号字 CFontDialog cf(&;lf);//字体 cf.m_cf.rgbColors=textcolor;//颜色 //移动没有标题的窗口**********************************************
//1 定义: CPoint just_point; //2 void CClockfortecherDlg::OnLButtonDown(UINT nFlags, CPoint point) { // TODO: Add your message handler code here and/or call default just_point=point; CDialog::OnLButtonDown(nFlags, point); } //3 void CClockfortecherDlg::OnMouseMove(UINT nFlags, CPoint point) { // TODO: Add your message handler code here and/or call default WINDOWPLACEMENT wi; GetWindowPlacement(&;wi); if(nFlags==MK_LBUTTON) SetWindowPos(&;wndTop, wi.rcNormalPosition.left+(point.x-just_point.x), wi.rcNormalPosition.top+(point.y-just_point.y), 0,0,SWP_NOSIZE); CDialog::OnMouseMove(nFlags, point); } //线程与信号量*************************************************** //1,定义信号量句柄 HANDLE event; //2,创建信号量 event=CreateEvent(NULL, TRUE, FALSE, NULL); //3,创建线程, //1)定义线程函数,格式必须如下,其中 lParam 为 AfxBeginThread 的第二个参数值,可强制 转化成所需类型 UINT WorkThreadProc(LPVOID lParam)//必须是 UINT XXX..XXX(LPVOID lParam) { //代码示例 WaitForSingleObject: while(1) {//-----------------------注意, 如果线程间要求同步或互斥的时候, 要在每一层循环体中加入 WaitForSingleObject WaitForSingleObject((HANDLE)lParam, INFINITE); //WaitForSingleObject 的使用方法:第一个为信号量 HANDLE,是 CreateEvent 的返回值, 第二个参数为等待的毫秒数(1/1000 秒) //第二个参数为 INFINITE 时则一直等待,直到调用 SetEvent()设置信号量时函数返回;为数 值(如 1000)则函数在 1 秒后返回 //(即使你没调用 SetEvent()设置信号量)
AfxMessageBox("fcuk");//不能用 MessageBox()因为这不是在类中了... ResetEvent((HANDLE)lParam); /*重置信号量,以使 WaitForSingleObject 函数可以继续等待,否则(如果你已经调用过了 SetEvent()设置了信号量) WaitForSingleObject 函数将会
立刻返回 */ } } //2)用 AfxBeginThread 创建一个 WorkThreadProc 的线程 AfxBeginThread(WorkThreadProc,event); //4,在主
程序需要的地方调用 SetEvent()设置信号量启动线程 SetEvent(event); //-----------或者用 WaitForMultipleObjects 函数 static UINT __stdcall WorkThreadProc(void* pThis);/*如果 lParam 参数为一个对话框 的指针,想调用 这个对话框的变量或函数那么就得这样定义线程函数, 还要将 WorkThreadProc 改成 CWait_forDlg::WorkThreadProc, 这样 WorkThreadProc 就成为 CWait_forDlg 类的函数, 在这个线程里就可以调用该类的变量 了, 注意得用_beginthreadex 函数创建线程*/ UINT CWait_forDlg::WorkThreadProc(void * lParam) { CWait_forDlg *pThis=(CWait_forDlg *)lParam; HANDLE hObjects[2]; hObjects[0] = pThis->event1; hObjects[1]= pThis->event2; while(1) { DWORD dw