将bitmap文件拖进对话框中,获取位图文件的参数。
首先是面板上的文件拖拉属性应该设置为true
其次,利用类向导添加消息响应函数,ON_WM_DROPFILES()
在函数中获取文件的路径信息。
//--------------------获取拖拉上来的文件名---------------------------//
UINT count;
count = DragQueryFile(hDropInfo, 0xFFFFFFFF, NULL, 0); // 初始化文件
// 用于一个成功文件拖拽后获取文件名称
if(count){
for(UINT i=0; i<count; i++){
int pathLen = DragQueryFile(hDropInfo, i, filePath, sizeof(filePath));
//AfxMessageBox(CString(filePath));
}
}
DragFinish(hDropInfo); // 释放shell为传递文件名而开辟的内存空间
添加一个按钮,在按钮的消息函数里面添加。
UpdateData(TRUE);
CDC *pDC=NULL;;
CDC MemDC;
HBITMAP hBmp;
BITMAP bm;
CBitmap Bitmap;
CPoint point( 10, 10);
CString cStr;
hBmp = (HBITMAP)::LoadImage(AfxGetInstanceHandle(),filePath,IMAGE_BITMAP,0,0,LR_LOADFROMFILE);
Bitmap.DeleteObject();
Bitmap.Attach( hBmp );
Bitmap.GetObject(sizeof(BITMAP),&bm);
MemDC.CreateCompatibleDC(pDC);
width=bm.bmWidth;
width=bm.bmWidth;
height=bm.bmHeight;
planes=bm.bmPlanes;
widthtype=bm.bmWidthBytes;
bitpixel=bm.bmBitsPixel;
type=bm.bmType;
UpdateData(FALSE);
MemDC.SelectObject(&Bitmap);
pDC->BitBlt(point.x, point.y, bm.bmWidth, bm.bmHeight, &MemDC, 0, 0, SRCCOPY);
MemDC.DeleteDC();
构造函数中声明的变量
void CTextureDlg::DoDataExchange(CDataExchange* pDX)
{
CDialogEx::DoDataExchange(pDX);
DDX_Text(pDX, IDC_EDIT1, width);
DDX_Text(pDX, IDC_EDIT2, height);
DDX_Text(pDX, IDC_EDIT3, type);
DDX_Text(pDX, IDC_EDIT4, widthtype);
DDX_Text(pDX, IDC_EDIT5, planes);
DDX_Text(pDX, IDC_EDIT6, bitpixel);
}