已有8人关注
明日书架上的《Visual C++程序开发实例宝典》第10章第510页的实例284的“打印简历”不显示图片
发表在VC++答疑区 2016-12-20
是否精华
版块置顶:

明日书架上的《Visual C++程序开发实例宝典》第10章第510页的实例284的“打印简历”不显示图片,仅显示出文字。代码是书中原配的,我没有作任何改动,编译运行后也没有出现错误提示。现把截图和源文件包发给您,请帮忙解决。如下图所示:打印简历.png

PrintResume.rar

分享到:
精彩评论 13
Administrator
学分:1180 LV8
TA的每日心情
东指即为天涯
2017-04-30 20:46:44
2016-12-21
沙发

您好:

您的反馈已收到,技术老师正在调试程序,分析您描述的问题,有结果后会第一时间给您回复,请耐心等待。

另:同一内容,请不要反复发帖,感谢您的支持!

13949910063
学分:71 LV3
TA的每日心情
2017-11-11 19:37:13
2016-12-21
板凳

我是你们公司的忠实读者和消费者.原来花1298元买了明日科技出版的书编程词典的电子版(含一个硬盘),后来,先后又买了<Visual C++程序开发范例宝典>、<Visual C++从入门到精通>、<Visual C++自学手册>、<Visual C++实例开发大全>基础卷和提高卷、<Visual C++数据库系统开发完全手册>共6本书,这些书中的实例很多都有问题.特别是<Visual C++自学手册>问题特多,初学者往往会望而却步.

Administrator
学分:1180 LV8
TA的每日心情
东指即为天涯
2017-04-30 20:46:44
2016-12-22
地板

感谢您一直以来的支持!

您在学习中遇到问题可以随时在社区发帖提问,我们会积极处理~

由于编程语言运行环境的不断更新、电脑系统环境不断变化等原因,会导致某些实例在运行时产生不同的报错,这些问题不管是学习还是工作中都会遇到,请不要气馁,遇到问题,我们一起来解决~

加油!我们也会继续努力!

again
学分:250 LV4
2016-12-22
4L

--------------------------------------------------------------------------------------------------

HBITMAP CPrintResumeDlg::GetBitmapFromField()

{

if ((! m_pRecord->ADOEOF)&&(!m_pRecord->BOF))

{

_variant_t m_bitdata;

static char* m_bitbuffer;

char* m_buffer = NULL;

char* temp = NULL;

long m_factsize =  m_pRecord->GetFields()->GetItem("照片")->ActualSize;

//获取位图所有数据

m_bitdata = m_pRecord->GetFields()->GetItem((long)9)->GetChunk(m_factsize);

HBITMAP m_hmap ;


if (m_bitdata.vt==(VT_ARRAY |VT_UI1))

{

            //定义一个数据缓冲区

            m_bitbuffer = new char[m_factsize];

            ZeroMemory(m_bitbuffer, m_factsize);

            //将m_buffer指向m_bitdata

            SafeArrayAccessData(m_bitdata.parray, (void**)&m_buffer);

            //复制位图数据到m_bitbuffer;

            memcpy(m_bitbuffer, m_buffer, m_factsize);


            SafeArrayUnaccessData(m_bitdata.parray);


            void* m_factbitdata; //实际的位图数据


            //temp指向位图信息头

            temp = m_bitbuffer + sizeof(BITMAPFILEHEADER) + 74;


            BITMAPINFOHEADER * pBitmapInfoHeader = (BITMAPINFOHEADER*)(i + temp);

            //获取位图信息,它包括位图信息头和调色板

            BITMAPINFO* pBitmapInfo = (BITMAPINFO*)(i + temp);


            //获取位图的实际数据

            m_factbitdata = (void*)(m_buffer + ((LPBITMAPFILEHEADER)(74 + m_bitbuffer))->bfOffBits);


            CClientDC m_dc(this);

            //创建位图

            //auto hdc = ::GetDC(GetSafeHwnd()); //m_dc.GetSafeHdc(),  // hdc

            hbitmap = CreateDIBitmap(

                m_dc.GetSafeHdc(),

                pBitmapInfoHeader,        // *header

                CBM_INIT,           // CBM_INIT

                m_factbitdata,      // 数据

                pBitmapInfo,          // BITMAPINFO*

                DIB_RGB_COLORS);


            if (!hbitmap) {

                CString str;

                str.Format(_T("创建设备同样关位图失败, GLE=%d"), GetLastError());

                AfxMessageBox(str);

            }


            delete[] m_bitbuffer;

}

}

return hbitmap;

}

--------------------------------------------------------------------------------------------------


把文件printResumeDlg.cpp中的函数代码换成上面的代码。


数据库文件就是 ResumeInfo.mdb 如果 使用Access打开之后看不到数据表,可能表被隐藏了。

again
学分:250 LV4
2016-12-22
5L

Administrator 发表于2016-12-22 11:18

感谢您一直以来的支持!

您在学习中遇到问题可以随时在社区发帖提问,我们会积极处理~

由于编程语言运行环境的不断更新、电脑系统环境不断变化等原因,会导致某些实例在运行时产生不同的报错,这些问题不管是学习还是工作中都会遇到,请不要气馁,遇到问题,我们一起来解决~

加油!我们也会继续努力!

显示隐藏数据表的方法:

打开ResumeInfo.mdb之后, 在 “所有表”上单击右键,选择 “导航选项”,在打开的对话框中 选中 “显示隐藏对象”。 之后可以看到数据表 “Resume”。



双击打开此表,其中的照片列就是之前没有显示出来的照片。 可以双击该列中的某一项,查看照片。    

13949910063
学分:71 LV3
TA的每日心情
2017-11-11 19:37:13
2016-12-23
6L

老师,在上面您的回复中,i 在哪里定义的?在使用中,提示没有定义?如下图所示。I定义.png

again
学分:250 LV4
2016-12-23
7L

13949910063 发表于2016-12-23 07:40

老师,在上面您的回复中,i 在哪里定义的?在使用中,提示没有定义?如下图所示。I定义.png

早。

可以直接把 i换为0,或者把 i+去掉。


again
学分:250 LV4
2016-12-23
8L

显示隐藏数据表的方法:

打开ResumeInfo.mdb之后, 在 “所有表”上单击右键,选择 “导航选项”,在打开的对话框中 选中 “显示隐藏对象”。 之后可以看到数据表 “Resume”。



双击打开此表,其中的照片列就是之前没有显示出来的照片。 可以双击该列中的某一项,查看照片。    



不知道您是否用到了 数据库文件中的照片。


照片是作为附件存在数据库中的, 所以我前面的代码中 有了一个i主要是来探查这个文件的格式的,最后发现从偏宜74开始,才数照片的数据文件。 所以在代码中取照片的数据时,加了个74.

13949910063
学分:71 LV3
TA的每日心情
2017-11-11 19:37:13
2016-12-23
9L

老师:您好!经过您的指点,我打开了数据库ResumeInfo.mdb并修改了代码,“照片”列果然存有照片,但在编译时遇到“HBITMAP m _hmap”这句时提示错误,我把这句代码去了以后再编译,程序运行正常。并没有显示人像,而是显示一个空白的照片。如下图所示:编译时提示错误.png谢谢老师了!

13949910063
学分:71 LV3
TA的每日心情
2017-11-11 19:37:13
2016-12-23
10L

运行效果图如下运行效果图.png是否表示正常了呢?谢谢老师

首页上一页 12 下一页尾页 13 条记录 1/2页
手机同步功能介绍
友情提示:以下图书配套资源能够实现手机同步功能
明日微信公众号
明日之星 明日之星编程特训营
客服热线(每日9:00-17:00)
400 675 1066
mingrisoft@mingrisoft.com
吉林省明日科技有限公司Copyright ©2007-2022,mingrisoft.com, All Rights Reserved长春市北湖科技开发区盛北大街3333号长春北湖科技园项目一期A10号楼四、五层
吉ICP备10002740号-2吉公网安备22010202000132经营性网站备案信息 营业执照