这是一个用鼠标框一个区域的代码片段,是《windows编程》里第七章的blokout1程序里的,如果有这书的朋友可以看看书。
有一个函数如下:
void DrawBoxOutline (HWND hwnd, POINT ptBeg, POINT ptEnd)
{
HDC hdc ;
hdc = GetDC (hwnd) ;
SetROP2 (hdc, R2_NOT) ;
SelectObject (hdc, GetStockObject (NULL_BRUSH)) ;
Rectangle (hdc, ptBeg.x, ptBeg.y, ptEnd.x, ptEnd.y) ;
ReleaseDC (hwnd, hdc) ;
}在消息里调用它:
case WM_MOUSEMOVE :
if (fBlocking)
{
SetCursor (LoadCursor (NULL, IDC_CROSS)) ;
DrawBoxOutline (hwnd, ptBeg, ptEnd) ; ptEnd.x = LOWORD (lParam) ;
ptEnd.y = HIWORD (lParam) ; DrawBoxOutline (hwnd, ptBeg, ptEnd) ;
}
return 0 ;为什么这里DrawBoxOutline要调用两次啊,调用一次也可以筐一个区域,但会花屏。请教为什么?
有一个函数如下:
void DrawBoxOutline (HWND hwnd, POINT ptBeg, POINT ptEnd)
{
HDC hdc ;
hdc = GetDC (hwnd) ;
SetROP2 (hdc, R2_NOT) ;
SelectObject (hdc, GetStockObject (NULL_BRUSH)) ;
Rectangle (hdc, ptBeg.x, ptBeg.y, ptEnd.x, ptEnd.y) ;
ReleaseDC (hwnd, hdc) ;
}在消息里调用它:
case WM_MOUSEMOVE :
if (fBlocking)
{
SetCursor (LoadCursor (NULL, IDC_CROSS)) ;
DrawBoxOutline (hwnd, ptBeg, ptEnd) ; ptEnd.x = LOWORD (lParam) ;
ptEnd.y = HIWORD (lParam) ; DrawBoxOutline (hwnd, ptBeg, ptEnd) ;
}
return 0 ;为什么这里DrawBoxOutline要调用两次啊,调用一次也可以筐一个区域,但会花屏。请教为什么?
解决方案 »
- 动态创建一个Button按钮,但焦点获得时,我按回车键,为什么不响应呢?
- 调用API获取进程名——怎么显示中文进程名
- 如何通过程序把文件写到MP3的FLASH中?
- 小弟恳请大虾指点小弟恳请大虾指点小弟恳请大虾指点小弟恳请大虾指点!!!!!迷途中啊。。。。
- 在怎么编程实现打开一个project并调试进入状态。(个人感觉有点bt的问题)
- 使用Socket怎样实现断点续传?
- 请有关高手给一硬盘锁的c代码,或相关提示,感激不尽。。
- 如何实现自动存储??!!
- 在ADO中如何设置bookmark,并能用它来完成更新当前记录?
- 想在MFC 中实现动态的时钟 怎么实现
- 刚学MFC,问个小问题。
- 在vc下如何运行一个可以在开始-〉运行中运行的命令
第一次为擦洗原来的,第二次才是正题
ptEnd.x = LOWORD (lParam) ;
ptEnd.y = HIWORD (lParam) ;
第二次调用的时候ptEnd被更新了。