播放和暂停,不同图片的切换有关问题.
播放和暂停,不同图片的切换问题..
问大家一个问题,我想让控件按下后有不同的图片显示,象播放器的播放和暂停状态一样,这是我的代码,可是这样做却不行,应该怎么做好一点?
case WM_LBUTTONDOWN:
case WM_LBUTTONDBLCLK:
SendMessage(p-> Win.Wnd,WM_COMMAND,IF_PLAY,0);
if(id == 102)
{
id = DrawBitmap (p-> WndMyButtons1,101);
}
else
{
id = DrawBitmap (p-> WndMyButtons1,102);
}
return 0;
DrawBitmap函数的第2个参数是图片的id
------解决方案--------------------
修改id,刷新界面,在WM_PAINT消息中根据id绘图。
------解决方案--------------------
//根据文件名播放位图图片
void PlayImage()
{
CString filename = m_PicSearchList.GetItemText(m_nPicSelItem, 2);
if(filename.GetLength() == 0)
return;
if(hBitmap)
{//释放LoadImage函数申请的内存,否则内存会累积增大无法释放。
DeleteObject(hBitmap);
hBitmap = NULL;
}
char szTemp[256];
sprintf(szTemp, "%s\\%s ",g_szPicPath, filename);
hBitmap=(HBITMAP)LoadImage(AfxGetInstanceHandle(),szTemp,IMAGE_BITMAP,0,0,LR_LOADFROMFILE|LR_CREATEDIBSECTION);
GetObject(hBitmap, sizeof BITMAP, &bm);
SelectObject(hSrcDC, hBitmap);
//对位图进行伸缩处理
RECT rect;
hwnd-> GetClientRect(&rect);
::SetStretchBltMode(hDesDC,COLORONCOLOR);
::StretchBlt(hDesDC, rect.left, rect.top, rect.right, rect.bottom, hSrcDC, 0, 0, bm.bmWidth, bm.bmHeight,+SRCCOPY);
}
问大家一个问题,我想让控件按下后有不同的图片显示,象播放器的播放和暂停状态一样,这是我的代码,可是这样做却不行,应该怎么做好一点?
case WM_LBUTTONDOWN:
case WM_LBUTTONDBLCLK:
SendMessage(p-> Win.Wnd,WM_COMMAND,IF_PLAY,0);
if(id == 102)
{
id = DrawBitmap (p-> WndMyButtons1,101);
}
else
{
id = DrawBitmap (p-> WndMyButtons1,102);
}
return 0;
DrawBitmap函数的第2个参数是图片的id
------解决方案--------------------
修改id,刷新界面,在WM_PAINT消息中根据id绘图。
------解决方案--------------------
//根据文件名播放位图图片
void PlayImage()
{
CString filename = m_PicSearchList.GetItemText(m_nPicSelItem, 2);
if(filename.GetLength() == 0)
return;
if(hBitmap)
{//释放LoadImage函数申请的内存,否则内存会累积增大无法释放。
DeleteObject(hBitmap);
hBitmap = NULL;
}
char szTemp[256];
sprintf(szTemp, "%s\\%s ",g_szPicPath, filename);
hBitmap=(HBITMAP)LoadImage(AfxGetInstanceHandle(),szTemp,IMAGE_BITMAP,0,0,LR_LOADFROMFILE|LR_CREATEDIBSECTION);
GetObject(hBitmap, sizeof BITMAP, &bm);
SelectObject(hSrcDC, hBitmap);
//对位图进行伸缩处理
RECT rect;
hwnd-> GetClientRect(&rect);
::SetStretchBltMode(hDesDC,COLORONCOLOR);
::StretchBlt(hDesDC, rect.left, rect.top, rect.right, rect.bottom, hSrcDC, 0, 0, bm.bmWidth, bm.bmHeight,+SRCCOPY);
}