-
VC++ 版 GDI+程序设计实例源代码实例集
gdiplus应用实例,在网络上广泛流传的“GDI+程序设计实例源代码”中使用的是C#语言,且封装了开源对象,
源代码主要在 “Form1.cs” 中,其功能的实现形式与.Net的MSDN帮助不同。
作者对该源代码进行了移植,在VC的非 UNICODE 环境下进行了修改,主要处理:
1、提供了一个 multibyte 与 widechar 的转化类 CWideCharString
实现 char* 与 WCHAR* 的转换有许多方法,如:
a) CWideCharString(char*) 得到 WCHAR*
b) L"char* string" 得到 WCHAR*
c) 在非UNICODE环境下,CString(WCHAR*) 得到 char*
2、将原C#中的Math、Shell等对象转换为普通的VC函数,如定义了 rand_Next 等。
3、将原C#代码中的new改为VC的引用或指针,避免了在VC中对new的重载和delete的繁杂调用所带来的内存泄漏
4、定义了一组MyDrawString函数,替换原代码中的 graphics.DrawString(...),保持了原C#代码中DrawString的参数顺序和引用方式,增加了两个 _MakeA_RGB 函数
5、因为 Image::Save 要求保存的文件不得存在,而在演示中可能会反复执行Save,所以提供了 MyImageSave 函数,先判断文件是否存在,若存在则删除,然后 Save.
6、为尽可能保持原代码的风格,在 CWalkLtDemo.cpp 的 OnDraw(...) 函数中提供一个void DoGdiplusDemo(...) 函数,该函数负责向各功能演示函数中传递所需要的绘图区和Graphics实例。
7、在主菜单“查看”项下增加了“GDI+功能演示”和“当前演示的源代码”菜单,并在工具条上增加了相应按钮。
8、程序已在VC6和VC++.NET中进行了完全的测试。
本源码包中使用的 gdiplus*.h 中对 Color 和 Point 进行了重新声明,分别为:
GdiPlusColor 和 PointI
为与MSDN中的 Color 和 Point 相一致,在WalkLtDemoHelp.h中使用了 typede
- 2023-07-17 07:35:04下载
- 积分:1
-
VC++ 6.0 演示如何获取打印份数
VC++ 6.0 演示如何获取打印份数,这个功能在平时的打印操作中,几乎每次都要设置一下,要不然打印机按打印一份处理,本程序可设置打印份数,将参数传递给打印机,一次可打印多份文档,代码超简单,有兴趣下载源码学习。
- 2022-03-24 22:43:51下载
- 积分:1
-
VC++ 获取所有进程并进行管理-进程管理器
进程:进程管理器,VC++ 6.0枚举获取所有进程并进行管理-模拟一个进程管理器的写法,枚举Windows中所有正在运行的进程,本示例将演示如何获取进程路径,打开进程句柄,获取进程优先级,终止进程主函数,创建状态栏,获取当前行行号,在状态栏上显示时间,取得选择项目的索引,重新取得第一个位置,更新进程等。
- 2022-01-22 05:53:39下载
- 积分:1
-
VC++在视图中使用鼠标进行绘图操作(涂鸦)
VC++ ——在视图中使用鼠标进行绘图操作(涂鸦),按下鼠标左键,载入"十字"光标,移动鼠标即可实现绘制图形,但窗口不能自动重绘,定义各变量及具体实现:
void CBaseDocViewDemo1View::OnLButtonDown(UINT nFlags, CPoint point)
{
SetCursor(m_Hcursor);//使用新光标
m_bDraw=TRUE;//进入绘图状态
m_pOld=point;
SetCapture();//捕捉鼠标
CRect rect;
GetClientRect(&rect);//获取客户窗口矩形区域
ClientToScreen(&rect);//转换为屏幕坐标
ClipCursor(rect);//限定鼠标不能移出客户窗口
CView::OnLButtonDown(nFlags, point);
}
void CBaseDocViewDemo1View::OnLButtonUp(UINT nFlags, CPoint point)
{
m_bDraw=FALSE;//取消绘图状态
ReleaseCapture();//释放鼠标捕捉
ClipCursor(NULL);//取消鼠标区域的限制
CView::OnLButtonUp(nFlags, point);
}
- 2023-04-03 12:40:04下载
- 积分:1
-
vc CListBox左右两个列表框互相交换数据
这是一个常见的ListBox列表框用法,在本例中,左右两个列表框互相交换数据,具体的实现思路是通过INI文件来作为中间数据媒介,将左边列表框的学生姓名写入ini文件,然后从该ini文件读出放到右边的列表框中,编写的步骤是:从ini文件中获得数量,从ini文件中获得学生,并加到右边列表中,获得学生数量,将学生写入ini文件,将学生数量写入ini文件。
- 2022-03-12 17:49:53下载
- 积分:1
-
VC++ 6.0制作的弹出式菜单
VC++ 6.0制作的弹出式菜单,代码作者:一剑,这里主要是定义了CMainFrame::OnContextMenu函数来实现弹出式菜单,请参见以下核心代码:
void CMainFrame::OnContextMenu(CWnd* pWnd, CPoint point)
{
CMenu menu;
CMenu *popup;
//IDR_POP_MENU是菜单资源的ID号,是刚添加的菜单
menu.LoadMenu(IDR_POP_MENU);
ASSERT(menu);
//此函数用于得到子菜单的指针。
//由于需要的是“可弹出项”的第一层子菜单,因此用GetSubMenu(0)来得到。
popup=menu.GetSubMenu(0);
popup->TrackPopupMenu(TPM_LEFTALIGN|TPM_RIGHTBUTTON,point.x, point.y,this);
}
然后需要定义几个菜单命令响应函数,请参见源代码文件。
- 2022-03-30 01:28:38下载
- 积分:1
-
VC++ 删除已存在的存储过程
VC++ 演示在程序中删除已存在的存储过程,VC6存储过程相关操作实例,删除方法很简单,创建对象,如下代码示:
UpdateData(true);
BOOL result;
ADOConn m_AdoConn;
m_AdoConn.OnInitADOConn();
_bstr_t sql;
sql = "drop procedure "+m_edit+" ";
result = m_AdoConn.ExecuteSQL(sql);
m_AdoConn.ExitConnect();
if(result)
MessageBox("存储过程已删除!");
else
MessageBox("存储过程不存在!");
- 2022-12-24 15:50:03下载
- 积分:1
-
VC++ 显式链接:关闭计算机
VC++ 显式链接:关闭计算机,制作一个竖长形的窗口,功能包括了关机、重启、注销、锁机等功能。
- 2023-05-28 20:55:03下载
- 积分:1
-
VC 电话录音的实现
这个VC 源码模拟实现了电话录音的功能,运行时显示通道信息,程序首先要加载驱动程序,检查可用的通道数量,设置CardList列表扩展风格,然后显示使用的通道信息,包括了通道号,通道类型,状态,信息。并定义了电话的三种状态,即:内线、外线、悬空。在外线来电话状态,可以启动录音程序,摘机,开始录音,挂机停止录音,录音过程中判断电话是否挂机,双保险。
- 2023-06-20 11:50:03下载
- 积分:1
-
VC利用OpenGL绘制NURBS曲线
VC++利用OpenGL绘制NURBS曲线,程序将进行缓冲区交换,交换缓冲区,运行后将生成一个三维曲线图,模拟NURBS曲线效果,最终效果请参见示例图所示。
- 2022-01-26 07:51:48下载
- 积分:1