[各位][图片][格式]求助:各位大哥请帮我看看这个图片格式的问题啊谢谢!

09月 11th, 2008 by admin
Posted in VC/MFC | No Comments »

请帮我看看这个问题啊

我从摄像头可以得到
MEDIASUBTYPE_RGB1          2色,每个像素用1位表示,需要调色板

MEDIASUBTYPE_RGB4          16色,每个像素用4位表示,需要调色板

MEDIASUBTYPE_RGB8          256色,每个像素用8位表示,需要调色板

MEDIASUBTYPE_RGB565      每个像素用16位表示,RGB分量分别使用5位、6位、5位

MEDIASUBTYPE_RGB555    每个像素用16位表示,RGB分量都使用5位(剩下的1位不用)

MEDIASUBTYPE_RGB24    每个像素用24位表示,RGB分量各使用8位

MEDIASUBTYPE_RGB32    每个像素用32位表示,RGB分量各使用8位(剩下的8位不用)

MEDIASUBTYPE_ARGB32    每个像素用32位表示,RGB分量各使用8位(剩下的8位用于表示Alpha通道值)

游戏引擎需要的是
D3DFMT_ARGB32(D3DFMT_A8R8G8B8)

1:
MEDIASUBTYPE_ARGB32 和 D3DFMT_ARGB32 是不是一样的?

2:
如果不是一样的
我的摄像头最好选

MEDIASUBTYPE_RGB1          2色,每个像素用1位表示,需要调色板

MEDIASUBTYPE_RGB4          16色,每个像素用4位表示,需要调色板

MEDIASUBTYPE_RGB8          256色,每个像素用8位表示,需要调色板

MEDIASUBTYPE_RGB565      每个像素用16位表示,RGB分量分别使用5位、6位、5位

MEDIASUBTYPE_RGB555    每个像素用16位表示,RGB分量都使用5位(剩下的1位不用)

MEDIASUBTYPE_RGB24    每个像素用24位表示,RGB分量各使用8位

MEDIASUBTYPE_RGB32    每个像素用32位表示,RGB分量各使用8位(剩下的8位不用)

MEDIASUBTYPE_ARGB32    每个像素用32位表示,RGB分量各使用8位(剩下的8位用于表示Alpha通道值)

中的哪一个?

3:
怎么转换为 D3DFMT_ARGB32 ?

谢谢!

谢谢大哥
好象不行
我显示出来,都是乱的!

//MEDIASUBTYPE_ARGB32;
A8 在最后面
//D3DFMT_A8R8G8B8
A8 在最前面

现在

BYTE * pBuffer;
pSample->GetPointer(&pBuffer); //得到数据
long lBufferSize = pSample->GetSize(); //长度

//——-把MEDIASUBTYPE_ARGB32格式转换为D3DFMT_A8R8G8B8————————–
BYTE * pBuffer2;
pBuffer2 = new BYTE[lBufferSize];

//那么就是把 pBuffer 的 第 4 个,拿到 pBuffer2 的第一个
for(int i = 0; i < lBufferSize; i ++)
{

}
//———把MEDIASUBTYPE_ARGB32格式转换为D3DFMT_A8R8G8B8————————–

这样的,用程序怎么才能表达出来?

谢谢!

Tags: , , ,

[各位][user][breakpoint]各位大虾帮帮忙吧出现这种问题了user breakpoint called from code at 0×7c921230

08月 28th, 2008 by admin
Posted in VC/MFC | No Comments »

我在一个函数中
int Image_width=384;
int Image_height=216;
unsigned char *RGB= new unsigned char [Image_width*Image_height*3];
其中没有做太复杂的操作就是对RGB这个数据进行了一些运算,最后的时候
        delete [] RGB;
这时就出错了,就出现user breakpoint called from code at 0×7c921230这句话,但
奇怪的是我用两个不同的输入文件来做,一个就是好的,另外一个就会出错,这可能是什么原因呢?困扰中!!!!

好的,我先试一下,谢谢。

好像不可以呢,我根据在网上找到的信息是这样激活page heap 的
C:Debuggerspageheap>pageheap /enable mytest.exe /full
mytes.exe,是我程序的名称,但运行后显示这样
C:Debuggers 引用了一个不可用的位置。
我接下来该怎么办呢,晕了

两种可能性,一是RGB这个指针变了,可以前后用%p打印出来比较一下,二是越界访问了RGB所指向的地址前面的部分的内存,把保存该部分内存大小的地址数据覆盖了,导致释放时出错,可以在起初打开内存窗口,把地址定位到RGB所指向的地址前面16个字节左右的地方,然后在delete前设断点,F5看看前面那几个内存有没有变红就知道了。

我按照楼上说的试过了,RGB地址没有改变,而且也没有覆盖掉其前面的数据,

引用楼主 pucuicui 的帖子:
我在一个函数中
int Image_width=384;
int Image_height=216;
unsigned char *RGB= new unsigned char [Image_width*Image_height*3];
其中没有做太复杂的操作就是对RGB这个数据进行了一些运算,最后的时候
        delete [] RGB;
这时就出错了,就出现user breakpoint called from code at 0×7c921230这句话,但
奇怪的是我用两个不同的输入文件来做,一个就是好的,另外一个就会出错,这可能是什么原因呢?困扰…

出错的那个位图不是24位位图,还是宽度不是4的倍数?

都不是,输入文件都是好的,我把 delete [] RGB去掉以后,
程序可以继续执行,但是执行到某处new 的时候,又会出现相同的问题,
我觉得是我程序中某处内存泄漏了,才会导致后面的问题。

问题解决了,是我自己太粗心,在RGB的操作过程中出现了越界情况。
多谢各位了。

估计是越界了,或者是修改了RGB指针

Tags: , , ,

[新手上路][各位][指教]新手上路请各位高手指教

08月 23rd, 2008 by admin
Posted in VC/MFC | No Comments »

我的MFC在设置好所有控件后只能显示出部分。。。求救,急问。。请大侠帮忙][/img]

不会吧,什么叫显示部分,到不知道你添加的什么控件?

图片发不上来,我添加了几个botton控件和edit控件, 还有一个combox控件。就是有一部分控件在编译后能够在运行程序的时候显示出来,有一部分不行。botton控件都可以使用,edit控件有三个可以三个不行,combox不能使用。比较奇怪的是edit的设置都是使用的en_update消息,内在程序都还没有编我就试了一下但是有写控件可以显示有些不能显示。非常感谢。

你的对话框的id在你添加不会显示的控件以前你修改了 把

Tags: , , ,

[各位][大老][界面]各位大老!!!! C++界面问题

08月 22nd, 2008 by admin
Posted in VC/MFC | No Comments »

各位老大们,VC窗口界面中如何设置各个控件的tab键功能!就是用户可以不使用鼠标就能完成操作。

不明白你说什么?是用tab键切换控件?如果是对话框,选中tab stop属性为true就行了;如果是非对话框类,需要自己处理,切换焦点。

在VC中编辑对话框的界面中,使用快捷键ctrl + d
这时候你会看到每个控件上都会标记出数字,按顺序用鼠标点击,然后就会按你点击的顺序来布置tab order了

好的,谢谢了!!!非常感谢!!!!

Tags: , , ,

[各位][高人][图像]各位高人:我的一幅图像亮度不均匀怎么办啊

08月 21st, 2008 by admin
Posted in VC/MFC | No Comments »

  我的一幅图像亮度不均匀,一块亮一块暗的,怎么把它弄均匀了。。。

硬件方面,改进光源    成本不高的化,可以考虑

软件方面,直方图均衡化

RGB图像怎么做直方图均衡呢??

Tags: , , ,

[菜鸟][各位][帮助]菜鸟的问题希望各位大哥大姐能帮助一下! 简单计算器(+-*/)设计中编译连接都没问题就是运行不出结果!

08月 21st, 2008 by admin
Posted in VC/MFC | No Comments »

运行是,出现如下错误:
Debud Aeeertion Failed!
Program: E:******** &brvbarDebug计算器。exe
File: winocc.cpp
Line:239
For information on how your program can cause an assertion failure ,see
the Visual C++ documenttation on asserts.
(Press Retry to debug the application)

        终止(A)  重试(R) 忽略(I)

实现文件如下:(便宜,连接都没错误,运行时不出结果)
// 计算器Dlg.cpp : implementation file
//

#include "stdafx.h"
#include "计算器.h"
#include "计算器Dlg.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CAboutDlg dialog used for App About

class CAboutDlg : public CDialog
{
public:
CAboutDlg();

// Dialog Data
//{{AFX_DATA(CAboutDlg)
enum { IDD = IDD_ABOUTBOX };
//}}AFX_DATA

// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CAboutDlg)
protected:
virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV support
//}}AFX_VIRTUAL

// Implementation
protected:
//{{AFX_MSG(CAboutDlg)
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
};

CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD)
{
//{{AFX_DATA_INIT(CAboutDlg)
//}}AFX_DATA_INIT
}

void CAboutDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CAboutDlg)
//}}AFX_DATA_MAP
}

BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)
//{{AFX_MSG_MAP(CAboutDlg)
// No message handlers
//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CMyDlg dialog

CMyDlg::CMyDlg(CWnd* pParent /*=NULL*/)
: CDialog(CMyDlg::IDD, pParent)
{
//{{AFX_DATA_INIT(CMyDlg)
m_Result_Edit = _T("");
//}}AFX_DATA_INIT
// Note that LoadIcon does not require a subsequent DestroyIcon in Win32
m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
}

void CMyDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CMyDlg)
DDX_Control(pDX, IDC_ITEM2_EDIT, m_Item2_Edit);
DDX_Text(pDX, IDC_RESULT_EDIT, m_Result_Edit);
//}}AFX_DATA_MAP
}

BEGIN_MESSAGE_MAP(CMyDlg, CDialog)
//{{AFX_MSG_MAP(CMyDlg)
ON_WM_SYSCOMMAND()
ON_WM_PAINT()
ON_WM_QUERYDRAGICON()
ON_BN_CLICKED(IDC_ADD_BUTTON, OnAddButton)
ON_BN_CLICKED(IDC_CLEAR_BUTTON, OnClearButton)
ON_BN_CLICKED(IDC_DEVIDE_BUTTON, OnDevideButton)
ON_BN_CLICKED(IDC_DIFFERENCE_BUTTON, OnDifferenceButton)
ON_BN_CLICKED(IDC_EXIT_BUTTON, OnExitButton)
ON_BN_CLICKED(IDC_MULTIPLY_BUTTON, OnMultiplyButton)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CMyDlg message handlers

BOOL CMyDlg::OnInitDialog()
{
CDialog::OnInitDialog();

// Add "About…" menu item to system menu.

// IDM_ABOUTBOX must be in the system command range.
ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
ASSERT(IDM_ABOUTBOX < 0xF000);

CMenu* pSysMenu = GetSystemMenu(FALSE);
if (pSysMenu != NULL)
{
CString strAboutMenu;
strAboutMenu.LoadString(IDS_ABOUTBOX);
if (!strAboutMenu.IsEmpty())
{
pSysMenu->AppendMenu(MF_SEPARATOR);
pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
}
}

// Set the icon for this dialog.  The framework does this automatically
//  when the application's main window is not a dialog
SetIcon(m_hIcon, TRUE); // Set big icon
SetIcon(m_hIcon, FALSE); // Set small icon

// TODO: Add extra initialization here

return TRUE;  // return TRUE  unless you set the focus to a control
}

void CMyDlg::OnSysCommand(UINT nID, LPARAM lParam)
{
if ((nID & 0xFFF0) == IDM_ABOUTBOX)
{
CAboutDlg dlgAbout;
dlgAbout.DoModal();
}
else
{
CDialog::OnSysCommand(nID, lParam);
}
}

// If you add a minimize button to your dialog, you will need the code below
//  to draw the icon.  For MFC applications using the document/view model,
//  this is automatically done for you by the framework.

void CMyDlg::OnPaint()
{
if (IsIconic())
{
CPaintDC dc(this); // device context for painting

SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0);

// Center icon in client rectangle
int cxIcon = GetSystemMetrics(SM_CXICON);
int cyIcon = GetSystemMetrics(SM_CYICON);
CRect rect;
GetClientRect(&rect);
int x = (rect.Width() - cxIcon + 1) / 2;
int y = (rect.Height() - cyIcon + 1) / 2;

// Draw the icon
dc.DrawIcon(x, y, m_hIcon);
}
else
{
CDialog::OnPaint();
}
}

// The system calls this to obtain the cursor to display while the user drags
//  the minimized window.
HCURSOR CMyDlg::OnQueryDragIcon()
{
return (HCURSOR) m_hIcon;
}

void CMyDlg::OnAddButton()
{
char cstrItem1[10],cstrItem2[10];
double dfItem1,dfItem2,dfResult;
char cBuffer[50];
m_Item1_Edit.GetWindowText(cstrItem1,10);
m_Item2_Edit.GetWindowText(cstrItem2,10);
dfItem1=atof((LPCTSTR)cstrItem1);
dfItem2=atof((LPCTSTR)cstrItem2);
dfResult=dfItem1+dfItem2;
_gcvt(dfResult,10,cBuffer);
m_Result_Edit=(LPCTSTR)cBuffer;
UpdateData(FALSE);
}

void CMyDlg::OnDifferenceButton()
{
char cstrItem1[10],cstrItem2[10];
double dfItem1,dfItem2,dfResult;
char cBuffer[50];
m_Item1_Edit.GetWindowText(cstrItem1,10);
m_Item2_Edit.GetWindowText(cstrItem2,10);
dfItem1=atof((LPCTSTR)cstrItem1);
dfItem2=atof((LPCTSTR)cstrItem2);
dfResult=dfItem1-dfItem2;
_gcvt(dfResult,10,cBuffer);
m_Result_Edit=(LPCTSTR)cBuffer;
UpdateData(FALSE);

}

void CMyDlg::OnMultiplyButton()
{
char cstrItem1[10],cstrItem2[10];
double dfItem1,dfItem2,dfResult;
char cBuffer[50];
m_Item1_Edit.GetWindowText(cstrItem1,10);
m_Item2_Edit.GetWindowText(cstrItem2,10);
dfItem1=atof((LPCTSTR)cstrItem1);
dfItem2=atof((LPCTSTR)cstrItem2);
dfResult=dfItem1*dfItem2;
_gcvt(dfResult,10,cBuffer);
m_Result_Edit=(LPCTSTR)cBuffer;
UpdateData(FALSE);

}

void CMyDlg::OnDevideButton()
{
char cstrItem1[10],cstrItem2[10];
double dfItem1,dfItem2,dfResult;
char cBuffer[50];
m_Item1_Edit.GetWindowText(cstrItem1,10);
m_Item2_Edit.GetWindowText(cstrItem2,10);
dfItem1=atof((LPCTSTR)cstrItem1);
dfItem2=atof((LPCTSTR)cstrItem2);
dfResult=dfItem1/dfItem2;
_gcvt(dfResult,10,cBuffer);
m_Result_Edit=(LPCTSTR)cBuffer;
UpdateData(FALSE);

}

void CMyDlg::OnClearButton()
{
  m_Item1_Edit.SetSel(0,-1);
  m_Item1_Edit.ReplaceSel("");
  m_Item2_Edit.SetSel(0,-1);
  m_Item2_Edit.ReplaceSel("");
  m_Result_Edit="";
  UpdateData(FALSE);
}

void CMyDlg::OnExitButton()
{
OnOK();

}

引用 1 楼 Mackz 的回复:
选择“重试”单步调试定位错误先。

_gcvt(dfResult,10,cBuffer);
m_Result_Edit=(LPCTSTR)cBuffer;

改成如下就OK了:
CString cRueslt;
cRueslt.Format("%f",dfResult);
m_r.SetWindowText(cRueslt)//注m_r和m_Item1_Edit和m_Item2_Edit的定义方法一样,这个估计就是出错的原因!
如果找不到CString 可以在stdafx.h中加上#include <afx.h>就行了

帮你改一个函数,其他的你自己改:

void CMyDlg::OnAddButton() 
{
char cstrItem1[10],cstrItem2[10];  //定义了长度为10的字符数组
double dfItem1,dfItem2,dfResult;
char cBuffer[50];
m_Item1_Edit.GetWindowText(cstrItem1,9); //所以在这里不能取10个,要保留最后一个,用来存放字符串结束符''
m_Item2_Edit.GetWindowText(cstrItem2,9); //同上
/* dfItem1=atof((LPCTSTR)cstrItem1); *///上面定义的是字符数组,所以cstrItem1就代表了这个数组的首地址了,而你要用到的却是里面的内容,所以应该改成:
dfItem1=atof(*cstrItem1);
/* dfItem2=atof((LPCTSTR)cstrItem2); */
dfItem2=atof(*cstrItem2);
dfResult=dfItem1+dfItem2;
_gcvt(dfResult,49,cBuffer);
m_Result_Edit=*cBuffer;
UpdateData(FALSE);
}

Tags: , , ,

[各位][视频][捕捉]请各位高手帮帮忙,如何将我用视频捕捉到的图象 显示出来

08月 21st, 2008 by admin
Posted in VC/MFC | No Comments »

例如   我捕捉到一个1.bmp的图象   存在d:1.bmp
那么现在我怎样   用API把它读出来   显示到窗口呢?
我是新手   希望兄弟们能给我源代码

请教:怎样才能把视频中的某一帧图像保存下来啊?谢谢

显示磁盘上的一个BMP文件:
HBITMAP   bitmap=(HBITMAP)LoadImage(NULL,_T( "d:\1.bmp "),IMAGE_BITMAP,0,0,LR_LOADFROMFILE);
CBitmap   bmp;
bmp.Attach(bitmap)
CDC   dcMemory;
CDC*   pDC=GetDC();
dcMemory.CreateCompatibleDC(pDC);
dcMemory.SelectObject(&bmp);
pDC-> BitBlt(0,0,720,576,&dcMemory,0,0,SRCCOPY);
ReleaseDC(pDC);

我有一个图象处理方面的问题,请教
简单的说:比如有十张扑克牌,先拍一张照片,取走一张,在拍一张照片,通过程序判断取走了那张
有没有那位做过类似的东西。给我提供些资料或者方向什么的  
有偿提供实现功能的源代码也可以    
联系地址:上海闵行区辛庄地铁站
联系人:王先生
联系电话:13636579369
QQ:82268578
MSN:wangganling@hotmail.com
E_mail:wanggangling_1@hotmail.com

Tags: , , ,

[各位][专家][OPENGL]各位专家问下一下 关于OPENGL圆环面光照的问题

08月 8th, 2008 by admin
Posted in VC/MFC | No Comments »

我用gluQuadricNormals(quadric,GL_SMOOTH);
    gluQuadricOrientation(quadric,GLU_OUTSIDE);gluDisk(quadric, 0.02, 0.0469, 40, 2);画了一个圆环,想加入一个光照模型,我已经开启了光照,但是运行了没有效果,我又加上glNormal3f(-0.05,0.0,0.0);来规定法向量,但是也没有效果,我想问一下如何才能在二次曲面上加入光照的效果呢?最好能有例子,跪求了……

Tags: , , ,

[基础][麻烦][各位]一个很基础的MFC中的关于建类的问题麻烦各位大哥好人们花几秒钟时间帮我解决一下啊···先感激咯

08月 6th, 2008 by admin
Posted in VC/MFC | No Comments »

  在MFC中创建了一个Dialog based,在的使用中用Insert &brvbarNew Class的方法新建了一个类CMyWinInetClass,在建这个类的时候基类我按书上选的CDialog,在自己

建的这个类中自己又写咯2个成员函数,我就是想调用这个新类这2个成员函数即可,但是在我新创建类时候点确定后出现了一个这个对话框说的If you have not

already created a dialog resource for this class ,created the dialog resource and then run Class wizard.Otherwise the class will

created a invalid ID““““`我只是想建一个类在别处调用刚建的这个类里面的自己写的这2个函数,为什么我还要动resource那些呢?那么我下面该怎么做

呢?书上就说这样建个新类然后在里面写成员函数,然后就开始在别处调用这个类里面的这2个函数咯ⷂ𗂷我就不知道该怎么办咯??请各位大哥们帮帮我啊指点一下ⷂ𗂷
先谢谢咯ⷂ𗂷

“我只是想建一个类在别处调用刚建的这个类里面的自己写的这2个函数”

如果是这样的话,就没必要从对话款继承啊(既然不作为对话框类来用),建一个普通的类就行了。
如果要作为对话框来使用,那就需要建立相应的资源

楼主先说一下,新建的类为什么要选CDialog为基类啊

//只是在别处调用刚建的这个类里面的自己写的这2个函数
// 那就不要继承别的类哈

在新建类向导中,ClassType不要选MFC Class,选Generic Class,这样就建了一个普通的类,不需要创建资源

同意4楼的说法

Tags: , , ,

[事务][失败][各位]com+事务回滚失败请各位高手帮帮忙!!!

07月 20th, 2008 by admin
Posted in VC/MFC | No Comments »

我有一个com+组件,它调用另一个com(save.dll),这个com(save.dll)调用ADO来在sql2000数据库中插入一条记录,然后返回,然后我在com+组件中做事务回滚,
代码系m_spObjectContext->SetAbort();//m_spObjectContext的定义是这样的: CComPtr <IObjectContext> m_spObjectContext;
但回滚失败,请各位高手帮帮忙!!!另外,如果我在这个save.dll写一个出口函数,然后用com+组件用动态链接库的形式链接save.dll,即用LoadLibrary,然后GetProcAddress,这样就可以实现事务回滚。但我现在必须使用com来完成。真系好奇怪!!!为什么com不行呢???

我找到答案了,但又有新的问题。
答案是:另一个com(save.dll)如果是MTS组件,就可以实现事务回滚。
新问题是:实现上述事务回滚的前提条件是必须在com+中创建(CreateInstance)MTS组件(save.dll),但我现在需要com+接收到这个MTS组件(save.dll)的接口,然后调用,结果事务回滚失败。就是说,MTS组件不是在com+中创建,就不可以实现事务了吗?有办法补救吗?

Tags: , , ,