今は、MessageBoxの柔軟性を高くするために、引数に合わせて正しくメッセージボックスを生成させようと思っています。
① MessageBox(NULL, TEXT("text1"), TEXT("title1"), MB_OK);
② MessageBox(NULL, &text[0], TEXT("title2"), MB_OK);
③ MessageBox(NULL, TEXT("text3"), &title[0], MB_OK);
④ MessageBox(NULL, &text[0], &title[0], MB_OK);
上記で正しく動作するのは①だけで、④はMessageBoxAを使えば動作させられるのですが
②、③は既存の関数では対応できず、引数によって使う関数を変えるのも面倒なので、
オーバーロードにてこれらを包括した関数を作成しようとしましたが、引数に全角文字を使うと文字化けしてしまいました。
(下記プログラムのように半角英数では期待通りの動作になります)
全角文字を使用しても文字化けしないようにしたいのですが、どのように変えれば良いでしょうか?
正直、TEXT("~~")の中身が良くわかっていないので、理解が追いつくか不安ですがよろしくお願いします。
環境は、「Microsoft Visual C++ 2010 Express」です。
int MessageBoxX(HWND hwnd, LPCTSTR lpText, LPCTSTR lpCaption, UINT uType){
return MessageBox(hwnd, lpText, lpCaption, uType);
}
int MessageBoxX(HWND hwnd, char *lpText, LPCTSTR lpCaption, UINT uType){
int i1, length, Message;
char *title;
for(i1=0; i1<2560; i1++){
if(lpCaption[i1] == '\0') break;
}
if(i1 == 2560) i1--;
length = i1 + 1;
title = (char *)malloc(sizeof(char) * length);
for(i1=0; i1<length; i1++){
title[i1] = lpCaption[i1];
}
title[2560] = '\0';
Message = MessageBoxA(hwnd, &lpText[0], &title[0], uType);
free(title);
return Message;
}
int MessageBoxX(HWND hwnd, LPCTSTR lpText, char *lpCaption, UINT uType){
int i1, length, Message;
char *text;
for(i1=0; i1<2560; i1++){
if(lpText[i1] == '\0') break;
}
if(i1 == 2560) i1--;
length = i1 + 1;
text = (char *)malloc(sizeof(char) * length);
for(i1=0; i1<length; i1++){
text[i1] = lpText[i1];
}
text[2560] = '\0';
Message = MessageBoxA(hwnd, &text[0], &lpCaption[0], uType);
free(text);
return Message;
}
int MessageBoxX(HWND hwnd, char *lpText, char *lpCaption, UINT uType){
int i1, length, Message;
char *title, *text;
for(i1=0; i1<2560; i1++){
if(lpCaption[i1] == '\0') break;
}
if(i1 == 2560) i1--;
length = i1 + 1;
title = (char *)malloc(sizeof(char) * length);
for(i1=0; i1<length; i1++){
title[i1] = lpCaption[i1];
}
title[2560] = '\0';
for(i1=0; i1<2560; i1++){
if(lpText[i1] == '\0') break;
}
if(i1 == 2560) i1--;
length = i1 + 1;
text = (char *)malloc(sizeof(char) * length);
for(i1=0; i1<length; i1++){
text[i1] = lpText[i1];
}
text[2560] = '\0';
Message = MessageBoxA(hwnd, &text[0], &title[0], uType);
free(title);
free(text);
return Message;
}