请高手指教,在vc中如何用代码获取一个视频文件的视频编码格式(如 MPEG-2,H.264等)谢谢!

请高手指教,在vc中如何用代码获取一个视频文件的视频编码格式(如 MPEG-2,H.264等)谢谢!,第1张

1建一个登陆对话框,加上两个文本控件,账号。密码,关联一个类LOAD,在“确定”按钮里判断输入是否正确,类里加一个变量 loadok初始为false, 判断输入是否正确 ,输入正确 loadok=true

在该类里的添加OnPaint()函数加背景

void LOAD::OnPaint()

{

CPaintDC dc(this);

CDC MemDC; // 环境

CBitmap bit; //位图

CRect rect;

//加载位图,IDB_BITMAP2是已经加到资源里的

bitLoadBitmap(IDB_BITMAP2);

//建立CDC匹配内存环境。

MemDCCreateCompatibleDC(this->GetDC()); MemDCSelectObject(&bit); //位图选到内存里

this->GetClientRect(&rect); //得到对话框有效矩形

dcStretchBlt(0,0,rectWidth(),rectHeight(),&MemDC,0,0,708,654,SRCCOPY); //将内存位图复制到对话框上

MemDCDeleteDC();

::DeleteObject(&bit);

}

2在主对话框里加

BOOL 主对话框::OnInitDialog()

{

CDialog::OnInitDialog();

LOAD load;

loadDoModal();

if(loadloadok==false) //没有正确登陆,关闭主对话框

OnOK();

loadok 为true 就可以继续主对话框

。。。。。。。。。

}

我可以帮助你,你先设置我最佳答案后,我百度Hii教你。你的串号我已经记下,采纳后我会帮你制作

载入位图可以用LoadBitmap()有两种重载形式

BOOL LoadBitmap( LPCTSTR lpszRecourceName );

BOOL LoadBitmap( UINT nIDResource );

参数: lpszResourceName 指向一个包含了位图资源名字的字符串(该字符串以null结尾)。

nIDResource 指定位图资源中资源的ID号。

获取位图可以用GetBitmapBits()

DWORD GetBitmapBits( DWORD dwCount, LPVOID lpBits ) const;

CBitmap::GetBitmap

int GetBimap( BITMAP pBitMap );

返回值:调用成功时返回非零值,否则为0。

参数: pBitMap 指向BITMAP结构的一个指针,不能为NULL。

说明:

本函数用于查看CBitmap对象的信息。返回的信息存放在pBitMap指向的BITMAP结构中。

BITMAP结构如下:

BITMAP结构具有如下形式:

typedef struct tagBITMAP

{ / bm /

int bmType;

int bmWidth;

int bmHeight;

int bmWidthBytes;

BYTE bmPlanes;

BYTE bmBitsPixel;

LPVOID bmBits;

} BITMAP;

BITMAP结构定义了逻辑位图的高,宽,颜色格式和位值。

成员: bmType 指定了位图的类型。对于逻辑位图,这个成员必须为0。

bmWidth 指定了位图的宽度,以像素为单位。宽度必须大于0。

bmHeight 指定了位图的高度,以扫描行为单位。高度必须大于0。

bmWidthBytes 指定了每个扫描行中字节的数目。这个值必须是个偶数,因为图形设备接口(GDI)假定位图中的位值构成一个整数(2字节)数组。换句话说,bmWidthBytes8必须是16的倍数,大于或等于bmWidth与bmBitsPixel相乘所得的值。

bmPlanes 指定了位图中颜色平面的数目。

bmBitsPixel 指定了每个位平面中用于定义一个像素所需的颜色位数。

bmBits 指向位图中位值的位置。bmBits成员必须是一个指向单字节数组的长指针。

注释:

现在使用的位图格式有单色的和彩色的。单色的位图使用每个位平面一位的格式。每个扫描线是16的倍数。

对于一个高度为n的单色位图,扫描线是按照如下方式组织的:

Scan 0

Scan 1

Scan n-2

Scan n-1

单色设备上的像素不是黑就是白。如果位图中对应的位是1,则像素就被打开(白)。如果对应的位是0,则像素被关闭(黑)。

所有具有RC_BITBLT位的设备都支持位图,该位是在CDC::GetDeviceCaps成员函数的RASTERCAPS索引中设置的。

每个设备都有它自己的颜色格式。为了在不同的设备间传递位图,使用Windows的GetDIBits和SetDIBits函数。

给你举个例子:

CBitmap m_bmp;

BITMAP pBitMap;

m_bmpLoadBitmap("d:\\\\示例\\flowerbmp");//加载位图

m_bmpGetBitmap(pBitMap);//获取位图信息

int i,j;

DWORD color=pBitMap->bmBits[ipBitMap->bmHeight+pBitMap->bmWidth];//访问第i行第j列像素点的颜色值

if(IDOK==dlgDoModal())

这条语句执行完成之后,对话框对象还在,窗口已经销毁。这时候去 *** 作对话框界面肯定不行的

模态对话框,初始化在对话框类的OnInitDialog里面(代码里没有Classwizard重载),绘制 *** 作在OnPaint里面。

获取文档类办法很多,以你当前代码为例:

CGraphicsDlg dlg;

dlgpDoc = GetDocument();//传递文档类指针,对话框类成员变量pDoc

if(IDOK==dlgDoModal())

{

}

这样传递之后,对话框类成员函数都可以通过pDoc->变量; 获取文档类数据了,注意对话框类需要包含文档类头文件。

分类: 电脑/网络 >> 程序设计 >> 其他编程语言

问题描述:

在“我的电脑”里,右键单击鼠标,点“属性”,出现的窗口里显示的那些计算机信息(如内存、CPU等)怎么用VC++代码获得??

解析:

你的问题可以这样的解决,但是在解决问题之前你必须了解

几个windows api函数,它们是:

1:void GetSystemInfo(

LPSYSTEM_INFO lpSystemInfo

);

Parameters lpSystemInfo

2:void GlobalMemoryStatus(

LPMEMORYSTATUS lpBuffer

);

Parameters lpBuffer

我写了一部分的代码,希望对你会有用处:

void CMemView::OnDraw(CDC pDC)

{

CMemDoc pDoc = GetDocument();

ASSERT_VALID(pDoc);

//得到关于内存的信息,

int DIV=1024;

char divisor = "K";

MEMORYSTATUS stat;//它的成员变量非常的多,我只是写了几个,你需要补齐它们

GlobalMemoryStatus (&stat);

CString str;

strFormat("The MemoryStatus structure is %ld bytes long\n",statdwLength);

pDC->TextOut(10,10,str);

strFormat("There are %ld total % ytes of physical memory\n",7, statdwTotalPhys/DIV, divisor);

pDC->TextOut(10,30,str);

strFormat("There are %ld free % ytes of physical memory\n",7, statdwAvailPhys/DIV, divisor);

pDC->TextOut(10,50,str);

下面的代码可以得到系统的一些信息,不过你要了解一下LPSYSTEM_INFO结构的变量

//LPSYSTEM_INFO sysinfo;

//GetSystemInfo(sysinfo);

}

if(!rectMineAreaPtInRect(pt))

{

MINEWND mMINEWND;

memest(&mMINEWND,0,sizeof(MINEWND ));

return mMINEWND;

}

else

最好能继续使用Document->View模式,就是在cview的ondraw中,TextOut(GetDocument()->m_str);其中的m_str就是在你的Document类中声明的字符串变量。

然后在菜单中修改那个m_str就行了,然后redraw你的View!

它返回的是一个COLORREF类型的值,是获取坐标点的像素的RGB颜色值。

可以这样:

COLORREF

rgb

=

GetPixel(30,30);

int

r=GetRValue(rgb);

//红

int

g=GetGValue(rgb);

//绿

int

b=GetBValue(rgb);

//蓝

以上就是关于请高手指教,在vc中如何用代码获取一个视频文件的视频编码格式(如 MPEG-2,H.264等)谢谢!全部的内容,包括:请高手指教,在vc中如何用代码获取一个视频文件的视频编码格式(如 MPEG-2,H.264等)谢谢!、【高分求救】VC++下如何载入一张位图并获取该位图的像素值、VC++6.0中对话框类如何获取文档类中的数据等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/9276826.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-26
下一篇2023-04-26

发表评论

登录后才能评论

评论列表(0条)

    保存