-
VC++ OpenGL粒子系统之火山喷发
VC++ 带音效的OpenGL粒子系统之火山喷发,作者:蔡真真 张田田。选择运行参数后,在音效的配合下,很逼真的火山喷发效果展现在眼帘。程序中为每个动态元素都制作了操作类,比如键盘类和程序框架类 、粒子系统火山喷发类、字体类、载入位图类、粒子定义类、粒子系统喷发具体实例类,粒子系统火山喷发模式选择对话框类等,这些类的共同发力,实现了逼真的火山喷发效果,当然你的电脑中需要安装有OpenGL组件,在预览效果时,可选择窗口大小以及全屏、音效等。
在具体实例类中,完成了核心的火山叶喷发功能,比如计算帧速、输出文字信息、绘制地面、绘制天空、绘制背景、初始化粒子、更新粒子等操作。当然,粒子定义类也是一个很主要的操作类。
- 2023-02-15 21:10:04下载
- 积分:1
-
VC++制作支持文字滚动的静态文本控件
VC++静态控件:用Static Text控件显示滚动文字,制作一个支持文字滚动的静态文本控件,静态文本控件,用来滚动显示文字,滚动速度可调,参考下句调整:
m_RollupStatic.SetSpeed(1);//滚动速度(0-慢速,1-中速,2-快速)。
- 2022-03-21 13:53:35下载
- 积分:1
-
VC++ 表格式简历打印的实现
本源码演示在VC++中打印简历模板,是一个采用表格设计的简历界面,VC++将按设计的模式打印出来,就像使用Word打印一样的功能。
以下代码可作为参考:
//获取位图所有数据
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];
//将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);
BITMAPINFOHEADER * m_bitheader = (BITMAPINFOHEADER*)temp;
//获取位图信息,它包括位图信息头和调色板
BITMAPINFO* m_bitinfo = (BITMAPINFO*)temp;
//获取位图的实际数据
m_factbitdata = (void*)(m_buffer+((LPBITMAPFILEHEADER)m_bitbuffer)->bfOffBits);
CClientDC m_dc(this);
//创建位图
hbitmap = CreateDIBitmap(m_dc.m_hDC,m_bitheader,CBM_INIT,m_factbitdata,m_bitinfo,DIB_RGB_COLORS);
delete [] m_bitbuffer;
}
- 2022-07-02 18:31:16下载
- 积分:1
-
VC++ 创建一个非模态对话框
VC++ 创建一个非模态对话框,比较一下模态对话框,与其有何异同。以下是创建对话框的代码:
void CNonModeDlgDlg::Finish()
{
m_pChoice = NULL;
GetDlgItem(IDOK)->EnableWindow();
}
void CNonModeDlgDlg::OnOK()
{
if ( m_pChoice == NULL )
{
m_pChoice = new CChoiceDlg(this);
if ( m_pChoice->Create() == TRUE )
{
GetDlgItem(IDOK)->EnableWindow(FALSE);
}
}
else
{
m_pChoice->SetActiveWindow();
}
}
- 2022-02-10 13:08:52下载
- 积分:1
-
VC 6.0 获得驱动器序列号
VC 6.0 获得驱动器序列号,本例子中可以指定驱动器分区,也就是大家说的D盘、E盘,每个磁盘分区的序列号,这个序列号标识ID分区后由系统自动指定,我们可编写以下代码实现此功能:
//获得实际存储驱动器号的字符串长度
dwNumBytesForDriveStrings=GetLogicalDriveStrings(0,NULL)*sizeof(TCHAR);
//如果字符串不为空,则表示有正常的驱动器存在
if (dwNumBytesForDriveStrings!=0) {
//分配字符串空间
hHeap=GetProcessHeap();
lp=(LPSTR)HeapAlloc(hHeap,HEAP_ZERO_MEMORY,
dwNumBytesForDriveStrings);
//获得标明所有驱动器的字符串
GetLogicalDriveStrings(HeapSize(hHeap,0,lp),lp);
//将驱动器一个个放到下拉框中
while (*lp!=0) {
Driver->AddString(lp);
lp=_tcschr(lp,0)+1;
}
}
- 2022-02-06 01:57:21下载
- 积分:1
-
VC 重载打开文件对话框,添加删除按钮
VC++ 重载打开文件对话框,添加删除按钮,实现思路:设置文件对话框的模板为IDD_MYFILEDLG,使用GetPathName();获取选中文件。打开文件对话框是这样实现的:
if( filedlg.DoModal ()==IDOK )//打开文件对话框
{
CString fileName = filedlg.GetFileTitle();
SetWindowText(fileName);
}
以上代码仅是参考,完整的代码文件请自行下载吧。
- 2022-02-01 14:41:10下载
- 积分:1
-
VC++ .NET 实现窗口内控件自适应屏幕尺寸大小而变化
VC++ .NET 实现窗口内控件自适应屏幕尺寸大小而变化,这个具体点就是,窗口中的边框和按钮等元素,会随着窗口的变大自动变大,并保持原有的比例,调用了CSelfResizeWindow::Rectify()来实现,我觉得是个很实用的窗体设计技巧。关于本源代码的几点说明:
自定义类CSelfResizeWindow实现窗口和控件的自适应,根据屏幕尺寸调整大校
使用步骤 :
1. 使需要自适应的窗口类继承于类CSelfResizeWindow,在OnInitDialog()中调用
__super::Init(this, 1, 3000);(其中1和3000是资源ID的范围,在Resource.h
中用宏定义的,Init函数的参数根据情况确定。)
2. 给窗口类添加OnSize()消息响应函数,在OnSize()函数
中调用__super::Rectify();即可。
- 2023-01-25 01:40:04下载
- 积分:1
-
VC++ 6.0 启动画面编程实例
VC++ 6.0 启动画面编程实例,现在这种软件启动方式比较常见了,打开软件 后,先显示一个启动画面,同时程序开始载入,显示进度条,本例子我觉得演示的挺好,源代码编译环境:vc++6.0,运行截图:请参见测试截图。
- 2022-03-18 03:56:27下载
- 积分:1
-
VC++ 设置打印图形的位置
VC++ 6.0 设置打印图形的位置,实现所见即所得的打印功能。
if(pDC->IsPrinting())//判断是否因打印或打印预览而调用OnPrepareDC()函数
{
pDC->SetViewportOrg(250,400);//设置视口坐标原点
}
//以下为显示和打印的内容
pDC->TextOut(10,10,"实现所见即所得的打印");
pDC->SetBkMode(TRANSPARENT);
pDC->Rectangle(10,40,310,350);
pDC->Ellipse(50,50,210,220);
pDC->Ellipse(70,240,280,320)
//设置映射模式
pDC->SetMapMode(MM_ANISOTROPIC);
CSize winSize = CSize(1024,768);
pDC->SetWindowExt(winSize); //设定窗口大小
//得到实际设备每逻辑英寸的像素数量
int xLogPixPerInch,yLogPixPerInch;
xLogPixPerInch=pDC->GetDeviceCaps(LOGPIXELSX);
yLogPixPerInch=pDC->GetDeviceCaps(LOGPIXELSY);
//得到设备坐标和逻辑坐标的比例
以下是实现打印:
int xExt,yExt;
xExt=winSize.cx*600/xLogPixPerInch; //按照打印机扩大视口
yExt=winSize.cy*600/yLogPixPerInch;
pDC->SetViewportExt(xExt,yExt); //设定视口大小
- 2022-01-27 16:52:24下载
- 积分:1
-
VC++ 使用断言宏检测程序的运行状态
VC++ 使用断言宏检测程序的运行状态,这是一个VC++6.0 书中的代码,我没有搞懂是什么意思,检测程序运行状态的,里面还包括了数组的使用、排序方法、产生随机种子、输出排序后的数组顺序等,
- 2023-03-28 12:15:04下载
- 积分:1