|
|
今天遇见个奇怪的问题,我建了个MFC的MDI程序,在里面用CFileDialog打开一个图片并用D3D根据文件名创建个纹理,奇怪的是只要调用DoModal()或者在对话框中点“确定”,D3DXCreateTextureFromFile就会失败,返回个
D3DERR_INVALIDCALL,纹理对象也是0x00000000,但是偏偏点“取消”后就会创建成功~~~,我先以为是D3D设备丢失了,便Reset了一下,也没效果,即使是在DoModal()后面再创建D3D设备,也没用~,部分的代码如下:
void TopLeftView::OpenPicFile()
{
CString strFilter = _T(" ng图片|*.png|Bitmap图片|*.bmp|Gif图片|*.gif|Jpeg图片|*.jpg||");
CFileDialog dlg(TRUE, NULL, NULL, OFN_FILEMUSTEXIST, strFilter);
if ( dlg.DoModal() == IDOK )
{
}
HRESULT hr = D3DXCreateTextureFromFile(m_pDevice, _T("Data/Tiles.png"), &m_pTexture);
if ( FAILED(hr) )
{
::AfxMessageBox("D3DXCreateTextureFromFile Failed");
}
...
}
不知各位大侠有没有遇到过类似现象或有什么办法?小弟高了一天了,快疯了~~~~
[em7] |
|