ulong类型几位_PTR m_gdiplusToken; GdiplusStartup(m_gdiplusToken,&m_gdiplusStartupInput,NULL);

2706人阅读
VC6.0中gdiPlus的使用以及一个小例子&& &&1.GDIPlus需要下载并安装sdk开发包 && && 2.在tool,option,direction,include&& files下设置头文件路径.../MICROSOFT&& SDK/INCLUDE,在tool,option,direction,libaray&&&& files下设置lib路径.../MICROSOFT&& SDK/SDK8/LIB,在project,&& setting,&& link,&& object/modules&& libaray里面输入gdiplus.lib. && && 注意,路径一定要放在最上层,还有,一定要是绝对路径,上面的...需要自己补充完整 && &&3.新建一个单文档工程XXX,给XXXApp类添加成员变量 && && protected: &&&&&&&& GdiplusStartupInput&& m_gdiplusStartupI &&&&&&&& ULONG_PTR&&&&&&&&&&&&&&&&&&&&&& m_gdiplusT && 在XXXApp::InitInstance()里面添加:GdiplusStartup(&m_gdiplusToken,&& &m_gdiplusStartupInput,&& NULL); && && 重载XXXApp::ExitInstance(),在里面添加:GdiplusShutdown(m_gdiplusToken); && && 注意,以上修改过的文件前面要加上以下语句: && && #include&& &GdiPlus.h& && using&& namespace&& G && &&上面的事情做完,你就可以在程序中使用gdiplus了,以下是一个把bmp转换成jpg的小例子: && && int&& GetEncoderClsid(const&& WCHAR*&& format,&& CLSID*&& pClsid) && { &&&&&&&& UINT&&&& num&& =&& 0;&&&&&&&&&&&&&&&&&&&& //&& number&& of&& image&& encoders &&&&&&&& UINT&&&& size&& =&& 0;&&&&&&&&&&&&&&&&&& //&& size&& of&& the&& image&& encoder&& array&& in&& bytes && &&&&&&&& ImageCodecInfo*&& pImageCodecInfo&& =&& NULL; && &&&&&&&& GetImageEncodersSize(&num,&& &size); &&&&&&&& if(size&& ==&& 0) &&&&&&&&&&&&&& return&& -1;&&&& //&& Failure && &&&&&&&& pImageCodecInfo&& =&& (ImageCodecInfo*)(malloc(size)); &&&&&&&& if(pImageCodecInfo&& ==&& NULL) &&&&&&&&&&&&&& return&& -1;&&&& //&& Failure && &&&&&&&& GetImageEncoders(num,&& size,&& pImageCodecInfo); && &&&&&&&& for(UINT&& j&& =&& 0;&& j&& &&&&& ++j) &&&&&&&& { &&&&&&&&&&&&&& if(&& wcscmp(pImageCodecInfo[j].MimeType,&& format)&& ==&& 0&& ) &&&&&&&&&&&&&& { &&&&&&&&&&&&&&&&&&&& *pClsid&& =&& pImageCodecInfo[j].C &&&&&&&&&&&&&&&&&&&& free(pImageCodecInfo); &&&&&&&&&&&&&&&&&&&& return&&&&&& //&& Success &&&&&&&&&&&&&& }&&&&&&&& &&&&&&&& } && &&&&&&&& free(pImageCodecInfo); &&&&&&&& return&& -1;&&&& //&& Failure && } && && void&& BMP2JPG(CString&& strBMPFile,CString&& strJPGFile) && { &&&&&&&&&& CLSID&&&& encoderC &&&&&&&&&& WCHAR&&&& strGuid[39]; &&&&&&&&&& if(GetEncoderClsid(L&image/jpeg&,&& &encoderClsid)&& &=&& 0) &&&&&&&&&& StringFromGUID2(encoderClsid,&& strGuid,&& 39); &&&& &&&&&&&&&& Image&& image(strBMPFile.AllocSysString()); &&&&&&&&&& image.Save(strJPGFile.AllocSysString(),&encoderClsid,NULL); && && } && 当然,上面的例子所在文件前面也必须加上 && && #include&& &GdiPlus.h& && using&& namespace&& G& 注意:要做初始化工作 以后任何问题都要考虑一下初始化protected:& &&&&&&& GdiplusStartupInput&& m_gdiplusStartupI& &&&&&&& ULONG_PTR&&&&&&&&&&&&&&&&&&&&&& m_gdiplusT& & 在XXXApp::InitInstance()里面添加:GdiplusStartup(&m_gdiplusToken,&& &m_gdiplusStartupInput,&& NULL);& && & 重载XXXApp::ExitInstance(),在里面添加:GdiplusShutdown(m_gdiplusToken); 我在做类似的工程时候 因为没有在Initlnstance()里加入:GdiplusStartup(&&)相应的初始化工作导致报了一个Access Violate的错误 耽误了挺多时间,以后切记。
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:30343次
排名:千里之外
原创:12篇
评论:19条
(1)(1)(1)(3)(1)(1)(2)(1)(2)(4)(1)mfc | 诸神的黄昏
首先声明并创建,
?12CButton*&p_MyBp_MyBut-&Create(&"动态按钮",&WS_CHILD&|&WS_VISIBLE&|&BS_PUSHBUTTON,&CRect(20,10,80,40),&this,&IDC_MYBUTTON&);
动态控件的响应函数不能用ClassWizard添加,只能手动添加,仍以上面的按钮为例,制作按钮的单击响应函数.
首先在MESSAGE_MAP中添加响应函数:
jpg格式使用GDI+来做,gdi+还有个好处是不用建立内存DC,gdi+需要初始化
?718//头文件成员变量ULONG_PTR&m_gdiplusT//构造函数(初始化)Gdiplus::GdiplusStartupInput&StartupIGdiplus::GdiplusStartup(&m_gdiplusToken,&StartupInput,NULL);//析构函数Gdiplus::GdiplusShutdown(m_gdiplusToken);//实现void&CChil…
?123456//&创建字体hFont=CreateFont(-12,0,0,0,FW_THIN,false,false,false,GB2312_CHARSET,OUT_CHARACTER_PRECIS,CLIP_CHARACTER_PRECIS,DEFAULT_QUALITY,FF_MODERN,_T("微软雅黑"));SelectObject(hdc,hFont);//&使用SendMessage(ID,WM_SETFONT,(WPARAM)hFont,1);
?12345//&创建字体CFONT&cfont.CreateFont(-12,0,0,0,FW_THIN,false,false,false,GB2312_CHARSET,OUT_CHARACTER_PR…
功能不完全,且有一个bug,原因未知
void CMFCTEXTView::OnChar(UINT nChar, UINT nRepCnt, UINT nFlags)
// TODO: 在此添加消息处理程序代码和/或调用默认值
CClientDC dc(this);
font.CreatePointFont(120,_T(&微软雅黑&),NULL);
CFont *pOldFont=dc.SelectObject(&font);
TEXTMETRIC
dc.GetTextMetrics(&tm);
有的时候真的很烦,好像世界在与你作对一样.-1s承接网站制作/微网站等微信营销平台搭建,以及企业官网/门户/社区/个人主页等常规网站的制作
git@oschina2013年2月 移动平台大版内专家分月排行榜第三
本帖子已过去太久远了,不再提供回复功能。VC基础知识温习(24)
1.下载(GDI+ for VC6.0 SDK)GDIPlus文件将其中的Includes和Lib中的文件拷到vc目录下的Includes和Lib文件夹中.&& 下载地址:/code/legacy/gdi/GDIPlus.zip(引用他人的)
2.在你将要使用GDI+的工程中,完成初始化工作:在StdAfx.h中加入
#define ULONG_PTR unsigned long#include &Gdiplus.h&using namespace G
#include "GdiPlus.h"
3.在CApp头文件中加入ULONG_PTR &&&& m_gdiplusT
4.在 BOOL C&App::InitInstance() 中添加
GdiplusStartupInput&&&& m_gdiplusStartupIGdiplusStartup(&m_gdiplusToken, &m_gdiplusStartupInput, NULL);
5.在int CXApp::ExitInstance()加入(这个方法需要自己加入 在ClassWizard 中,注意在ClassName中选择CXApp,Messages列表框中选择ExitInstance)
diplusShutdown(m_gdiplusToken);
6.在Project-&stting-&Link-&Object/libary中加入gdiplus.lib此时GDI+设置成功。
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:127987次
积分:1993
积分:1993
排名:第15932名
原创:61篇
转载:44篇
评论:19条
(1)(4)(1)(1)(1)(2)(2)(5)(2)(1)(3)(64)(4)(5)(9)原文链接地址:
1、在stdafx.h中
#include &GdiPlus.h&
using namespace G
#pragma comment(lib, &gdiplus.lib&)
2、在APP.cpp中声明全局变量
ULONG_PTR m_gdiplusT
3、注意在App的InitInstance函数里, 在&INT_PTR nResponse = dlg.DoModal();&之前,添加下面的语句:
GdiplusStartupInput m_gdiplusStartupI
GdiplusStartup(&m_gdiplusToken, &m_gdiplusStartupInput, NULL);
4、在App的ExitInstance()中调用:ExitInstance()函数在类的重写中添加
int CTestGDIApp::ExitInstance()
// TODO: Add your specialized code here and/or call the base class
GdiplusShutdown(m_gdiplusToken);
return CWinApp::ExitInstance();
5、一个使用的小例子:按钮触发画正弦波。基于对话框的MFC。
void CTestGDIDlg::OnBnClickedButton1()
// TODO: 在此添加控件通知处理程序代码
CClientDC dc(this);
GetClientRect(&rect);
dc.SetMapMode(MM_ANISOTROPIC);
dc.SetWindowOrg(<span style="color: #,<span style="color: #);
dc.SetWindowExt(rect.right,rect.bottom);
dc.SetViewportOrg(<span style="color: #,rect.bottom/<span style="color: #);
dc.SetViewportExt(rect.right/<span style="color: #,-rect.bottom);
Graphics graphics(dc);
Pen myPen(Color::Red);
myPen.SetWidth(<span style="color: #);
for(int i=<span style="color: #;i&rect.i++)
graphics.DrawLine(&myPen,i,<span style="color: #0*sin(<span style="color: #*(i/(rect.right/<span style="color: #.0))*<span style="color: #.14),i+<span style="color: #,<span style="color: #0*sin(<span style="color: #*((i+<span style="color: #)/(rect.right/<span style="color: #.0))*<span style="color: #.14));
myPen.SetColor(Color::Blue);
graphics.DrawLine(&myPen, <span style="color: #, <span style="color: #, rect.right, <span style="color: #);
阅读(...) 评论()}

我要回帖

更多关于 gdiplusstartup 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信