
Windows via C/C++
文章平均质量分 63
begges
喜欢编程,玩儿,学习,运动。
展开
-
Windows下如何安全结束线程
假设有下面的线程函数:ThreandFunc { ... PostMessage(hwnd, WM_ThreadEnd, 0, 0); return; } 线程结束的时候要通知某个窗口,窗口处理函数如下: OnThreadEnd() { ... // Update UI. ... } 如果在主线程的某个事件处理函数里结束线程后还需要更新界面,如下: OnBtnClick() { ... EndThread();原创 2010-09-03 18:54:00 · 1434 阅读 · 0 评论 -
如何允许在程序运行的时候删除用CFileDialog打开的dialog中创建的文件夹。
SQA发现的问题:在保存文件的时候,在打开的对话框(程序中用CFileDialog打开,flag为OFN_OVERWRITEPROMPT | OFN_HIDEREADONLY )中创建了一个新的文件夹,然后将文件存到该文件夹中。保存完毕之后,在程序没有退出的情况下去删除该文件夹,发现里面的文件被删除了,可是系统不允许删除文件夹。解决办法:将flag的改为:OFN_OVERWRITEPROMPT | OFN_HIDEREADONLY | OFN_NOCHANGEDIR。注意:由于文件夹被删除了,所以文件保存的原创 2010-09-29 15:50:00 · 1146 阅读 · 0 评论 -
使用COleDataSource.DoDropDrag进行往外Drag时要注意的一点
这是我做一个从窗口向windows explore拖放文件时碰到的。通过调用COleDataSource.DoDropDrag来拖动文件对应的图标把文件move或copy到windows explore,但明明产生的是DROPEFFECT_MOVE效果(也就是不带加号的小方块),但该函数最后的返回值却是DROPEFFECT_NONE,这跟往其他不接受拖拽的地方返回的是一样的结果啊。程序中,如果是DROPEFFECT_MOVE,我要删除对应的图标,如果是DROPEFFECT_NONE,我啥也不做。而现在我必须原创 2010-10-27 10:39:00 · 2271 阅读 · 0 评论 -
在鼠标消息中模仿Windows Explore文件和文件夹的选择
维护旧代码中,有一个定制控件跟list contrl很类似,但是bug不少,真不如改用list control,哎。发现对控件内item的选择操作根本不对,自己又模仿Windows Explore中对文件和文件夹的选择,改了一下。在这里记下,以防以后再用到类似的跟list control一样的“轮子”:void CMyWindow::OnLButtonDown(UINT nFlags, CPoint point) { int nShiftStart = -1; int iSelIndex =原创 2010-10-27 15:13:00 · 713 阅读 · 0 评论 -
MsgWaitForMultipleObjects + TranslateMessage 调用时要小心。
出错的程序片段如下:void CDlgThreadTest::OnBtnTest() { DWORD dRet = -2; HANDLE hArray[2]; hArray[0] = m_pThread1->m_hThread; hArray[1] = m_pThread2->m_hThread; MSG msg; BOOL bWaitAll = FALSE; int nExitThreadCount = 0; int nWaitCount = sizeof(hAr原创 2010-11-03 21:22:00 · 967 阅读 · 0 评论 -
A tip for Windows 7 touch development
Windows 7 running on Touch PC works like this:Once the vertical scroll bar is enabled on a window and comes out to work, pressing finger inside the window dose not gernerate WM_LBUTTONDOWN message at once. That is different from using the mouse device(whil原创 2011-01-05 11:17:00 · 661 阅读 · 0 评论