完整程序:
http://download.csdn.net/detail/maverick432/8457633
(其实没几行代码,为啥vs2010生成的工程这么大,都哪些可以删啊)主要代码:
void CShowHBITMAPDlg::OnBnClickedOk()
{
// TODO: 在此添加控件通知处理程序代码
UpdateData(TRUE);
CWnd *wnd = FindWindow(NULL, m_strCaption);
if(wnd)
{
m_strInfo.Format(_T("找到窗口的hWnd为 %d"), (long)wnd->m_hWnd);
CFileDialog fd(TRUE, NULL, NULL, NULL, _T("bmp(*.bmp)|*.bmp||"));
if(fd.DoModal())
{
HBITMAP hBitmap = (HBITMAP)LoadImage(AfxGetInstanceHandle(), fd.GetPathName(), IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE | LR_CREATEDIBSECTION);
CBitmap bitmap;
bitmap.Attach(hBitmap); //关联位图对象
CDC* pDC = wnd->GetDC();
CDC dcimage;
dcimage.CreateCompatibleDC(pDC); //内存DC
BITMAP bmp;
bitmap.GetBitmap(&bmp); //获取位图信息
dcimage.SelectObject(&bitmap); //选取位图对象
CRect rect;
wnd->GetClientRect(&rect);
pDC->StretchBlt(0, 0, rect.Width(), rect.Height(), &dcimage, 0, 0, bmp.bmWidth, bmp.bmHeight,SRCCOPY); //显示
DeleteObject(hBitmap);
}
}
else
{
m_strInfo = _T("没有找到窗口");
}
UpdateData(FALSE);
}效果:
但是因为不是自己的程序,没法处理WM_PAINT,所以只要窗口一重绘图像就被破坏了
http://download.csdn.net/detail/maverick432/8457633
(其实没几行代码,为啥vs2010生成的工程这么大,都哪些可以删啊)主要代码:
void CShowHBITMAPDlg::OnBnClickedOk()
{
// TODO: 在此添加控件通知处理程序代码
UpdateData(TRUE);
CWnd *wnd = FindWindow(NULL, m_strCaption);
if(wnd)
{
m_strInfo.Format(_T("找到窗口的hWnd为 %d"), (long)wnd->m_hWnd);
CFileDialog fd(TRUE, NULL, NULL, NULL, _T("bmp(*.bmp)|*.bmp||"));
if(fd.DoModal())
{
HBITMAP hBitmap = (HBITMAP)LoadImage(AfxGetInstanceHandle(), fd.GetPathName(), IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE | LR_CREATEDIBSECTION);
CBitmap bitmap;
bitmap.Attach(hBitmap); //关联位图对象
CDC* pDC = wnd->GetDC();
CDC dcimage;
dcimage.CreateCompatibleDC(pDC); //内存DC
BITMAP bmp;
bitmap.GetBitmap(&bmp); //获取位图信息
dcimage.SelectObject(&bitmap); //选取位图对象
CRect rect;
wnd->GetClientRect(&rect);
pDC->StretchBlt(0, 0, rect.Width(), rect.Height(), &dcimage, 0, 0, bmp.bmWidth, bmp.bmHeight,SRCCOPY); //显示
DeleteObject(hBitmap);
}
}
else
{
m_strInfo = _T("没有找到窗口");
}
UpdateData(FALSE);
}效果:
但是因为不是自己的程序,没法处理WM_PAINT,所以只要窗口一重绘图像就被破坏了
解决方案 »
- VC获取INI文件的键名
- StrCpy在定义了unicode的环境下编译为strcpyw,那如果还要拷贝char *的怎么拷贝
- 怎么样用vc把目录下的所有jpg图象依次打开
- 摄相头远程控制程序
- 为什么这样能编译通过链接通不过?
- 谁有 <Win32 多线程程序设计>(候捷译)的光盘代码,谢谢!
- 求《Visual C++网络高级编程 》《基于Windows的TCP_IP编程》随书源码光盘
- 请问各位大虾一个问题给点指点。
- 如何在自己的程序中显示Explorer中的右键菜单?
- 判断鼠标移到控件范围内,应该用哪个消息???
- 请大神帮我看看代码哪里出问题了,运行后没有显示! Win32 SDK编程!
- 网络编程那些协议真的好难懂,需要什么基础?
HWND hw1=FindWindow(0,"MFCPic");MFCPic 是我当前窗口 ,窗口上就2个按钮 ,还有一片空白
void OnBnClickedOk(HBITMAP hBitmap)
{
CString m_strInfo;
// TODO: 在此添加控件通知处理程序代码
HWND hw1=FindWindow(0,"MFCPic");
CWnd *wnd =CWnd::FromHandle(hw1);
if(wnd)
{
m_strInfo.Format(_T("找到窗口的hWnd为 %x"), (long)wnd->m_hWnd);
AfxMessageBox(m_strInfo); //句柄没问题
SaveBitmapToFile(hBitmap,"c:\\333.bmp"); //图像没问题
CBitmap bitmap;
bitmap.Attach(hBitmap); //关联位图对象
CDC* pDC = wnd->GetDC();
CDC dcimage;
dcimage.CreateCompatibleDC(pDC); //内存DC
BITMAP bmp;
bitmap.GetBitmap(&bmp); //获取位图信息
dcimage.SelectObject(&bitmap); //选取位图对象
CRect rect;
wnd->GetClientRect(&rect);
pDC->StretchBlt(0, 0, rect.Width(), rect.Height(), &dcimage, 0, 0, bmp.bmWidth, bmp.bmHeight,SRCCOPY); //显示
DeleteObject(hBitmap);
}
else
{
MessageBox(0,"FromHandle",0,0);
}
}
HWND hw1=FindWindow(0,"MFCPic");MFCPic 是我当前窗口 ,上面就2个按钮 还有y
void OnBnClickedOk(HBITMAP hBitmap)
{
CString m_strInfo;
// TODO: 在此添加控件通知处理程序代码
HWND hw1=FindWindow(0,"MFCPic");
CWnd *wnd =CWnd::FromHandle(hw1);
if(wnd)
{
m_strInfo.Format(_T("找到窗口的hWnd为 %x"), (long)wnd->m_hWnd);
AfxMessageBox(m_strInfo); //句柄没问题
SaveBitmapToFile(hBitmap,"c:\\333.bmp"); //图像没问题
CBitmap bitmap;
bitmap.Attach(hBitmap); //关联位图对象
CDC* pDC = wnd->GetDC();
CDC dcimage;
dcimage.CreateCompatibleDC(pDC); //内存DC
BITMAP bmp;
bitmap.GetBitmap(&bmp); //获取位图信息
dcimage.SelectObject(&bitmap); //选取位图对象
CRect rect;
wnd->GetClientRect(&rect);
pDC->StretchBlt(0, 0, rect.Width(), rect.Height(), &dcimage, 0, 0, bmp.bmWidth, bmp.bmHeight,SRCCOPY); //显示
DeleteObject(hBitmap);
}
else
{
MessageBox(0,"FromHandle",0,0);
}
}
SetWindowLong 给目标窗口设置新的消息处理回调函数
在消息函数中处理 WM_ERASEBKGND 及 WM_PAINT 消息注意任何一个窗口退出时及时调用 SetWindowLong 将原来的窗口消息函数设置回去
dll注入:http://pnig0s1992.blog.51cto.com/393390/804484/
窗口子类化:http://blog.csdn.net/lwbeyond/article/details/5393495
你好 根据您提供的子类化思路,现在又出现个问题 麻烦在帮忙看下 谢谢
http://bbs.csdn.net/topics/390989558