![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
開発環境
XP Home Edtion
SQL Server2005 Express Edtion
DBから選択してきたその値に .png という文字列を繋げて対応する画像を表示を反映させたいのですがどのようにすればよいですか?
String^ str;
SqlConnection^ sqlConn = gcnew SqlConnection("Data Source=.\\SQLEXPRESS;AttachDbFilename=C:\\SOUTUKEN\\TEST.mdf;Integrated Security=True;User Instance=True");
sqlConn->Open();
str = "SELECT gazou FROM table1 WHERE gazou=1";
SqlCommand^ sqlCmd = gcnew SqlCommand(str,sqlConn);
SqlDataReader^ exeReader = sqlCmd->ExecuteReader();
while(exeReader->Read() ) {
str3=exeReader["gazou"]->ToString();
System::Diagnostics::Debug::WriteLine(str3);
HDC hMdc;
char* dstChar3;
dstChar3 = (char*)(void*)Marshal::StringToHGlobalAnsi(str3);
LPCSTR dstLPCSTR3;
dstLPCSTR3 = (LPCSTR)dstChar3;
LPCSTR name = "'"+dstLPCSTR3+"'.png";
HBITMAP hbmp = (HBITMAP)LoadImage( NULL, name, IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE|LR_CREATEDIBSECTION );
hMdc= CreateCompatibleDC(hdc );
SelectObject(hMdc, hbmp );
BitBlt(hdc, 0, 0, 2000, 5000, hMdc, 0, 0, SRCCOPY);
DeleteDC(hMdc);
DeleteObject(hbmp);
}
sqlConn->Close();
なにとぞよろしくお願いします。
No.3ベストアンサー
- 回答日時:
こんにちは。
この「str3」は「String^型」でしょうか?(間違いなくString^型だと思う)。でしたら、以下で簡単に合成出来ます。
str3 = String::Concat("'", str3, "'", ".png");
それから、Marshal::StringToHGlobalAnsi()の後、Marshal::FreeHGlobal()で開放しないとメモリリークするので要注意です。
以下参考程度に。
while(exeReader->Read())
{
str3 = exeReader["gazou"]->ToString();
System::Diagnostics::Debug::WriteLine(str3);
//文字列を合成してファイル名を作る
str3 = String::Concat("'", str3, "'", ".png");
IntPtr name = Marshal::StringToHGlobalAnsi(str3);
HBITMAP hbmp = (HBITMAP)LoadImageA( NULL, static_cast<LPCSTR>(name.ToPointer()), IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE|LR_CREATEDIBSECTION );
//開放しないと駄目
Marshal::FreeHGlobal(name);
HDC hMdc = CreateCompatibleDC(hdc );
SelectObject(hMdc, hbmp );
BitBlt(hdc, 0, 0, 2000, 5000, hMdc, 0, 0, SRCCOPY);
DeleteDC(hMdc);
DeleteObject(hbmp);
}
返答遅れてすいません。
メモリの開放をしないといけないとは知りませんでした、ご指摘ありがとうございました、そして理解できました。
>この「str3」は「String^型」でしょうか?
すいません、初期化のところを書き忘れました、その通りです。
No.2
- 回答日時:
時と場合によっては sprintf系も選択肢にあがりますな>#1.
sprintf(name, "'%s'.png", dstLPCSTR3);
みたいに.
No.1
- 回答日時:
> LPCSTR name = "'"+dstLPCSTR3+"'.png";
LPCSTRですと内容の変更できない変数の宣言になるのでまずいです
LPSTRまたはLPTSTRなどとして dstLPCSTR3が十分収まる大きさの変数を用意しstrcpy/strcatなどで加工しましょう
LPSTR name[MAX_PATH];
strcpy( name, dstLPCSTR3 );
strcat( name, ".png" );
といった具合です
ファイル名の先頭に 'を付加して 拡張子の手前に' を付加するのであれば
strcpy( name, "'" );
strcat( name, dstLPCSTR3 );
strcat( name, "'.png" );
といった記述になります ・・・
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# プログラミングの授業の課題です 1 2023/01/17 22:15
- C言語・C++・C# c言語配列の結合についてです。 なぜうまくいかないのでしょうか。 #include <stdio.h 4 2022/05/30 22:42
- Excel(エクセル) PHPプログラムをエクセルに張り付けると検索ボックスがでてくる! 3 2022/05/08 07:10
- C言語・C++・C# C#テキストボックスの文字を配列にいれてその後表示する 4 2022/07/17 04:47
- C言語・C++・C# 宣言する関数の形が決まっている状態で、 str1とstr2の文字列をこの順に引っ付けてstrに保存し 2 2022/05/30 18:21
- Excel(エクセル) Excelのセル上の日付の不具合 3 2022/05/22 18:20
- C言語・C++・C# c言語 プログラムのエラー 1 2023/02/11 20:31
- C言語・C++・C# str[j++]の意味 2 2022/08/30 16:20
- JavaScript java keyを配列で表記したい 10 2022/12/01 17:53
- JavaScript 以前の質問だと、どの条件でも配列が表示されてしまいます。 1 2022/07/09 11:40
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Application.ScreenUpdating = ...
-
phpでボタンを押したときに変数...
-
[python] 文字列を変数名として...
-
MSXMLでの属性の存在確認法
-
VB6のLSETをVB2005で実現するに...
-
実行時エラー 3020の対策
-
セグメンテーション違反
-
FindFirst を複数条件で検索
-
UWSC:ポップアップウインドウ...
-
VBA他のブックから値のみ貼付す...
-
ACCESS テキストボックスを隙...
-
「*:*」って何を意味するのでし...
-
検索機能
-
コンボボックスのtag情報の取得...
-
VBAでPDFのコピーとリネームを...
-
16進の10進変換について
-
JSONで文字列が長い時
-
formで特定のinputを送信しない...
-
python3について。
-
CGI(Perl)で、Net::FTPを使いたい
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Application.ScreenUpdating = ...
-
実行時エラー 3020の対策
-
FindFirst を複数条件で検索
-
VBAでPDFのコピーとリネームを...
-
「*:*」って何を意味するのでし...
-
ACCESS テキストボックスを隙...
-
構造体の各データの表示につい...
-
phpでボタンを押したときに変数...
-
VBA他のブックから値のみ貼付す...
-
[python] 文字列を変数名として...
-
vbaでxmlからNodeListでデータ...
-
UWSC:ポップアップウインドウ...
-
コンボボックスのtag情報の取得...
-
エクセルVBA シート名の部分一...
-
MSXMLでの属性の存在確認法
-
C++ コマンドプロンプトでの入...
-
【メモリ不足で落ちる(python)】
-
2つのpythonがあって、一方で...
-
pythonで実体参照文字を直す方法
-
Option Strinct On のなかでの...
おすすめ情報