compile 没错,编译的时候报错
错误提示:Linking...
patternDlg.obj : error LNK2001: unresolved external symbol "public: struct HBITMAP__ * __thiscall CPatternDlg::CopyScreenToBitmap(struct tagRECT *)" (?CopyScreenToBitmap@CPatternDlg@@QAEPAUHBITMAP__@@PAUtagRECT@@@Z)
Debug/pattern.exe : fatal error LNK1120: 1 unresolved externals
Error executing link.exe.部门代码如下:HBITMAP CopyScreenToBitmap(LPRECT lpRect)
//lpRect 代表选定区域
{
HDC       hScrDC, hMemDC;      
// 屏幕和内存设备描述表
HBITMAP    hBitmap, hOldBitmap;   
// 位图句柄
int       nX, nY, nX2, nY2;      
// 选定区域坐标
int       nWidth, nHeight;      
// 位图宽度和高度
int       xScrn, yScrn;         
// 屏幕分辨率

// 确保选定区域不为空矩形
if (IsRectEmpty(lpRect))
return NULL;
//为屏幕创建设备描述表
hScrDC = CreateDC("DISPLAY", NULL, NULL, NULL);
//为屏幕设备描述表创建兼容的内存设备描述表
hMemDC = CreateCompatibleDC(hScrDC);
// 获得选定区域坐标
nX = lpRect->left;
nY = lpRect->top;
nX2 = lpRect->right;
nY2 = lpRect->bottom;
// 获得屏幕分辨率
xScrn = GetDeviceCaps(hScrDC, HORZRES);
yScrn = GetDeviceCaps(hScrDC, VERTRES);
//确保选定区域是可见的
if (nX < 0)
nX = 0;
if (nY < 0)
nY = 0;
if (nX2 > xScrn)
nX2 = xScrn;
if (nY2 > yScrn)
nY2 = yScrn;
nWidth = nX2 - nX;
nHeight = nY2 - nY;
// 创建一个与屏幕设备描述表兼容的位图
hBitmap = CreateCompatibleBitmap(hScrDC, nWidth, nHeight);
// 把新位图选到内存设备描述表中
hOldBitmap = (HBITMAP)SelectObject(hMemDC,hBitmap);
// 把屏幕设备描述表拷贝到内存设备描述表中
BitBlt(hMemDC, 0, 0, nWidth, nHeight,hScrDC, nX, nY, SRCCOPY);
//得到屏幕位图的句柄
hBitmap = (HBITMAP)SelectObject(hMemDC, hOldBitmap);
//清除 
DeleteDC(hScrDC);
DeleteDC(hMemDC);
// 返回位图句柄
return hBitmap;
}void CPatternDlg::OnButton5() 
{
RECT r_bmp={Startx,Starty,wid,lon};
HBITMAP hBitmap=CopyScreenToBitmap(&r_bmp);  //出错行,去掉就好了
}