こんばんは。
興味深いので、試してみましたが、其の通りの様です。
MFCは使用出来ない状況にあるのですが、Visual Studio 2005 Express アンド OpenCV 1.1pre1. October, 2008の組み合わせにて、コンソールアプリから確認していますが、確かに「xボタン」を押すとプロセスが固まって動かなくなりました。
逆にOpenCV 1.1pre1. October, 2008関連の関数をコメントアウトすると、プロセスは確かに正常終了しました。
どうやら、cvLoadImage()関数がいけないようです(ファイルの"test.bmp"は確かに読み込めている事をデバッガにて確認済み)。
// test32.cpp : コンソール アプリケーションのエントリ ポイントを定義します。
//
//win32関連
#include"stdafx.h"
#include<windows.h>
#include<shlobj.h>
//OpenCV 1.1pre1, October, 2008関連
#include<cv.h>
#include<cxcore.h>
#include<highgui.h>
//win32関連
#pragma comment(lib, "user32.lib")
#pragma comment(lib, "shell32.lib")
#pragma comment(lib, "ole32.lib")
//OpenCV 1.1pre1, October, 2008関連
#pragma comment(lib, "cxcore.lib")
#pragma comment(lib, "highgui.lib")
int main()
{
BROWSEINFO bInfo = {0};
TCHAR szDisplayName[MAX_PATH];
bInfo.hwndOwner = NULL;
bInfo.pidlRoot = NULL;
bInfo.pszDisplayName = szDisplayName;
bInfo.lpszTitle = TEXT("選択");
bInfo.ulFlags = BIF_RETURNONLYFSDIRS;
bInfo.lpfn = NULL;
bInfo.lParam = 0;
LPITEMIDLIST pIDList = ::SHBrowseForFolder(&bInfo);
if(pIDList == NULL)
{
::MessageBox(NULL, TEXT("Error"), TEXT("None Selected Close"), IDOK);
}
else
{
if(!::SHGetPathFromIDList(pIDList, szDisplayName))
{
::MessageBox(NULL, TEXT("Error"), TEXT("SHGetPathFromIDList() <- Returned Error"), IDOK);
return 0;
}
//OpenCV 1.1pre1, October, 2008関連 ↓
IplImage* ipl = ::cvLoadImage("test.bmp", 0);
if(ipl == NULL)
{
::MessageBox(NULL, TEXT("Error"), TEXT("IPL is NULL"), IDOK);
return 0;
}
::cvReleaseImage(&ipl);
//OpenCV 1.1pre1, October, 2008関連 ↑
::CoTaskMemFree(pIDList);
}
}
お礼
ありがとうございます。 やはり無理なようですね。 バージョンを1.0に落として試してみると 正常に動作しました。 バージョンを落としても問題はなさそうなので これでいこうかと思います。 どうもありがとうございました。