2008年2月18日月曜日

VC++2005 unsigned char*型 から string型へ変換する方法

VC++2005 unsigned char*型 から string型へ変換する方法

■unsigned char*型 から string型へ変換する方法
//------------------------------------------
using namespace std;

unsigned char buf[] = "あいうえお";
unsigned char* str = buf;

string sss = string((char*)str); // string型へ変換
//------------------------------------------

2008年2月15日金曜日

VC#/VC++2005 テキストボックス1の数値を16進数に変換してテキストボックス2に表示する

VC#/VC++2005 テキストボックス1の数値を16進数に変換してテキストボックス2に表示する

■VC#2005の場合
textBox2.Text = String.Format("{0:X}",Convert.ToInt16(textBox1.Text));
■VC++2005の場合
textBox2->Text = ::String::Format("{0:X}",::Convert::ToInt16(textBox1->Text));

コンバートの種類は ToByte , ToChar , ToInt32 など他にもいろいろあります。

2008年2月12日火曜日

VC#2005 フォームをシングルトンのモードレスにする方法

VC#2005 フォームをシングルトンのモードレスにする方法

フォームのインスタンスがすでに存在するかどうかチェックし、なければ新しいインスタンスを作成するようにします。
VC++2005より簡単です。

//■form1.cs
private void button1_Click(object sender, EventArgs e)
{
Form2.Instance().Show();
}
//■form2.cs
public partial class Form2 : Form
{
/* コメントにする↓
public Form2()
{
InitializeComponent();
}
コメントにする↑ */

// 追加する ↓
private static Form2 instance = new Form2();

public static Form2 Instance()
{
if (instance.IsDisposed)
{
instance = new Form2();
}
Form2.instance.InitializeComponent();
return instance;
}
// 追加する ↑
}

2008年2月5日火曜日

VC++2005 ファイルのドラッグ&ドロップの実装(訂正)

VC++2005 ファイルのドラッグ&ドロップの実装(訂正)

08/02/04 の記事に間違いがありましたので、訂正したもの記載します。

エクスプローラからファイルをドラッグしてテキストボックスにドロップすると
ファイル名を表示する方法です。

//-------------------------------------------------------------------
private: System::Void textBox1_DragEnter(System::Object^ sender, System::Windows::Forms::DragEventArgs^ e) {
if(e->Data->GetDataPresent(DataFormats::FileDrop))
{
e->Effect = DragDropEffects::All;
}
else
{
e->Effect = DragDropEffects::None;
}
}
//-------------------------------------------------------------------
private: System::Void textBox1_DragDrop(System::Object^ sender, System::Windows::Forms::DragEventArgs^ e) {
if(e ->Data ->GetDataPresent(DataFormats::FileDrop)) // ファイルドロップのとき
{
array<System::String^>^ files = // 列挙型のファイル名を一覧を取得する
static_cast<array<System::String^>^>
(e->Data->GetData(DataFormats::FileDrop , false));
this->textBox1->Text = files[0]; // 先頭ファイル出力
}
}
//-------------------------------------------------------------------
※上記ソースはそのままコピーして使用するとコンパイルエラーとなります。
全角'<'を半角'<'すれば大丈夫です。

2008年2月4日月曜日

VC++2005 ファイルのドラッグ&ドロップの実装

VC++2005 ファイルのドラッグ&ドロップの実装

エクスプローラからファイルをドラッグしてテキストボックスにドロップすると
ファイル名を表示する方法です。

//-------------------------------------------------------------------
private: System::Void textBox1_DragEnter(System::Object^ sender, System::Windows::Forms::DragEventArgs^ e) {
if(e->Data->GetDataPresent(DataFormats::FileDrop))
{
e->Effect = DragDropEffects::All;
}
else
{
e->Effect = DragDropEffects::None;
}
}
//-------------------------------------------------------------------
private: System::Void textBox1_DragDrop(System::Object^ sender, System::Windows::Forms::DragEventArgs^ e) {
if(e ->Data ->GetDataPresent(DataFormats::FileDrop)) // ファイルドロップのとき
{
array^ files = // 列挙型のファイル名を一覧を取得する
static_cast<array<System::String^>^>
(e->Data->GetData(DataFormats::FileDrop , false));
this->textBox1->Text = files[0]; // 先頭ファイル出力
}
}
//-------------------------------------------------------------------

2008年1月26日土曜日

VC++2005 フォームをシングルトンのモードレスにする方法

VC++2005 フォームをシングルトンのモードレスにする方法

フォームのインスタンスを静的フィールドに保持しておき、nullのときは新しいインスタンスを作成するようにします。ボタンを押すと、Form2 のインスタンスに対して Show() します
詳細は以下に示します。

//-----------------------------------------------
// 親ウィンドウ Form1.h ボタンを押したとき
// button1 を押すと Form2 を表示します
//-----------------------------------------------
private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) {
Form2::Instance()->Show();
}
//-----------------------------------------------
// 子ウィンドウ Form2.h のコンストラクタ部
//-----------------------------------------------
public ref class Form2 : public System::Windows::Forms::Form
{
public:
//*********** 追加 ↓ ***********
static Form2^ Instance()// インスタンスの生成を行う静的メンバ関数
{
if(_instance == nullptr){
_instance = gcnew Form2;
}
return _instance;
}
//*********** 追加 ↑ ***********
public:
Form2(void)
{
InitializeComponent();
//
//TODO: ここにコンストラクタ コードを追加します
//
}
//-----------------------------------------------
// 子ウィンドウ Form2.h のメンバ変数宣言部(静的)
// 必要なデザイナへインスタンス変数を追加します
//-----------------------------------------------
private:
static Form2^ _instance; // インスタンス変数
//-----------------------------------------------
// 子ウィンドウ Form2.h の×を押したとき
// Form2 のインスタンス変数も初期化します
//-----------------------------------------------
private: System::Void Form2_FormClosed(System::Object^ sender, System::Windows::Forms::FormClosedEventArgs^ e) {
_instance = nullptr;
}
//-----------------------------------------------

2008年1月23日水曜日

VC++2005 ボタンをオルタネート動作にする方法

VC++2005 ボタンをオルタネート動作にする方法

ボタンをオルタネート動作にするには、チェックボックスを使用すると簡単に行えます。

■プロパティを変更します。
Appearance = "Button"

■ボタンを押したときボタンの色を変更します。
private: System::Void checkBox1_CheckedChanged(System::Object^ sender, System::EventArgs^ e) {
if( checkBox1->Checked == true )
{
checkBox1->BackColor::set(Color::Green);
}
else
{
checkBox1->BackColor::set(Color::WhiteSmoke);
}