偶是win32sdk/api 方式,不是MFC, VC6,win2000. 打算在WM_NOTIFY 和WM_LBUTTONUP
里画点什么,可是怎么画呢?
里画点什么,可是怎么画呢?
解决方案 »
- 如何关闭vs 2008的智能感应呢?
- CString sText = L"请教,这写字如何计算他的BG2312码呢?"
- 请求赐教:怎样把CStringArray所保存的字符串组在CListBox控件中显示出来。
- Mutex与CEvent与Event的用法?大家帮忙看看??谢谢!!
- 急切寻找Installshield 6.3 东方语言包
- 关于Alt+Tab中的任务的获得
- CListCtrlEx 头文件在那里?
- 我的activex控件为何不能被应用?(十分急,第一个解决问题者给80分)
- OCX
- 疵点检测能否提供个思路?小白
- 高手指教啊!我的控制台程序退出时,那个黑黑的屏幕却怎样也关不了
- 局域网中读取另外的电脑的文件是不是文件传输到本地了呢???
int gl_nPrevX;
int gl_nPrevY;
int gl_nStarX;
int gl_nStarY;
int gl_nEndX;
int gl_nEndY;
int gl_nCurrX;
int gl_nCurrY;
int gl_nMouseState;//1--左键按下void DrawRect(HWND hWnd, int left,int top,int right,int bottom)
{
HDC hDC = GetDC(hWnd);
int old_rop = SetROP2(hDC,R2_XORPEN);
SetBkMode(hDC,TRANSPARENT);
HPEN hPen = CreatePen(PS_SOLID,1, RGB(0,200,0));
HPEN hOldPen = (HPEN)SelectObject(hDC,&hPen);
HBRUSH hBrush = CreateSolidBrush(RGB(50,0,0));
HBRUSH hOldBr = (HBRUSH)SelectObject(hDC,hBrush);
Rectangle(hDC,left,top,right,bottom);
SelectObject(hDC,hOldPen);
SelectObject(hDC,hOldBr);
SetROP2(hDC,old_rop);
}
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
switch (message)
{
case WM_COMMAND:
break;
// 2004-11-26 handwolf (add_start)
case WM_LBUTTONDOWN:
{
gl_nStarX = LOWORD(lParam);
gl_nStarY = HIWORD(lParam);
gl_nMouseState = 1;
}
break;
case WM_LBUTTONUP:
{
int left = min(gl_nStarX,gl_nPrevX);
int right = max(gl_nStarX,gl_nPrevX);
int top = min(gl_nStarY,gl_nPrevY);
int bottom = max(gl_nStarY,gl_nPrevY);
DrawRect(hWnd,left,top,right,bottom);
gl_nEndX = LOWORD(lParam);
gl_nEndY = HIWORD(lParam);
gl_nMouseState = 0;
}
break;
case WM_MOUSEMOVE:
{
gl_nCurrX = LOWORD(lParam);
gl_nCurrY = HIWORD(lParam);
if(gl_nMouseState == 1)
{
int left = min(gl_nStarX,gl_nPrevX);
int right = max(gl_nStarX,gl_nPrevX);
int top = min(gl_nStarY,gl_nPrevY);
int bottom = max(gl_nStarY,gl_nPrevY);
DrawRect(hWnd,left,top,right,bottom);
left = min(gl_nStarX,gl_nCurrX);
right = max(gl_nStarX,gl_nCurrX);
top = min(gl_nStarY,gl_nCurrY);
bottom = max(gl_nStarY,gl_nCurrY);
DrawRect(hWnd,left,top,right,bottom);
}
gl_nPrevX = LOWORD(lParam);
gl_nPrevY = HIWORD(lParam);
}
break;
// 2004-11-26 handwolf (add_end)
case WM_PAINT:
break;
case WM_DESTROY:
PostQuitMessage(0);
break;
default:
return DefWindowProc(hWnd, message, wParam, lParam);
}
return 0;
}
怎么使得文字也可以透明地画出呢?
先画到bitmap上,然后再画到视图上
{
HDC hDC = GetDC(hWnd);
int old_rop = SetROP2(hDC,R2_XORPEN);
SetBkMode(hDC,TRANSPARENT);
//text
HDC hDCPic = CreateCompatibleDC(hDC) ;
HBITMAP hBmp = CreateCompatibleBitmap(hDC,(right-left)/2,(bottom-top)/2) ;
SelectObject(hDCPic,hBmp) ;
PatBlt(hDCPic,0,0,(right-left)/2,(bottom-top)/2,PATCOPY) ;
SetBkColor(hDCPic,RGB(255,255,255)) ;
SetBkMode(hDCPic,TRANSPARENT);
TextOut(hDCPic,10,10,"Hello",5);
BitBlt(hDC,left+(right-left)/4,top+(bottom-top)/4,(right-left)/2,(bottom-top)/2,hDCPic,0,0,SRCINVERT) ;
HPEN hPen = CreatePen(PS_SOLID,1, RGB(0,200,0));
HPEN hOldPen = (HPEN)SelectObject(hDC,&hPen);
HBRUSH hBrush = CreateSolidBrush(RGB(50,0,0));
HBRUSH hOldBr = (HBRUSH)SelectObject(hDC,hBrush);
//rect
Rectangle(hDC,left,top,right,bottom);
SelectObject(hDC,hOldPen);
SelectObject(hDC,hOldBr);
SetROP2(hDC,old_rop);
}
我把分数给你.地址是:http://community.csdn.net/Expert/topic/3586/3586010.xml?temp=.2883722