くだすれVisual C++(超初心者用)その4

このエントリーをはてなブックマークに追加
952946:2007/05/13(日) 14:40:38
専門のスレがあったようなので移動します。
いろいろありがとうございました。

■MFC相談室 mfc17d.dll■
http://pc11.2ch.net/test/read.cgi/tech/1164073111/l50
953デフォルトの名無しさん:2007/05/13(日) 14:40:59
馬鹿には見えないし使えないMFC
954デフォルトの名無しさん:2007/05/13(日) 18:54:04
ビットブリットを何年経ってもビットボルトと読んでしまう
心の中でだけど
955デフォルトの名無しさん:2007/05/14(月) 11:11:56
最初にBltって言葉聞いた時に「何か下品だなぁ」と思ったのは俺だけじゃないはず。
956デフォルトの名無しさん:2007/05/14(月) 11:38:33
ブリッと
957デフォルトの名無しさん:2007/05/14(月) 11:40:10
俺はいまだに
ビットビルト
958デフォルトの名無しさん:2007/05/14(月) 12:23:56
俺もそう読んでた。
959デフォルトの名無しさん:2007/05/14(月) 14:30:38
UnkoBlt
960デフォルトの名無しさん:2007/05/14(月) 14:38:07
BIT BLock Transfer
961デフォルトの名無しさん:2007/05/14(月) 15:02:44
BLT だね。
962デフォルトの名無しさん:2007/05/14(月) 15:36:10
ベーコンレタストマトか
963デフォルトの名無しさん:2007/05/15(火) 14:05:37
すっげーハンバーガーの具にありそう
964デフォルトの名無しさん:2007/05/15(火) 14:17:15
普通に「BLTサンド」じゃないか。
#尤も、某ファミレスのBLTサンドには卵が入ってたりしたが。
965デフォルトの名無しさん:2007/05/15(火) 22:27:19
ベーコン・レタス・タマゴ?
966デフォルトの名無しさん:2007/05/15(火) 22:41:05
いや流石にそれはw
ベーコン/レタス/トマト/卵だった。
967デフォルトの名無しさん:2007/05/16(水) 04:51:45
BELT サンドだな。
968デフォルトの名無しさん:2007/05/16(水) 11:56:16
一体どこまでずれていくのか
969デフォルトの名無しさん:2007/05/16(水) 12:01:46
win2000やXP上で動作するのはVC++の6.0からですか?
970デフォルトの名無しさん:2007/05/16(水) 13:17:35
肉とマヨネーズだめで基本的にパン食べない俺には何の話やら。
971デフォルトの名無しさん:2007/05/16(水) 16:25:37
>>969
保証は無いかもしれんけど、それ以前でも32bitものなら動くんでない?
972デフォルトの名無しさん:2007/05/16(水) 16:27:32
Bit Block TransferをBitBltと略する感覚がわかりません。
973デフォルトの名無しさん:2007/05/16(水) 16:53:38
creat もわからんな
974デフォルトの名無しさん:2007/05/16(水) 17:15:59
create → creat

どうしても5文字にしたかったのだろうか。
975デフォルトの名無しさん:2007/05/16(水) 18:37:16
Thompsonが後悔したという有名な話だな
976デフォルトの名無しさん:2007/05/16(水) 18:57:41
Thompson?(´・ω・`)知らんがな
977デフォルトの名無しさん:2007/05/16(水) 20:28:39
検索する頭もないのか
978デフォルトの名無しさん:2007/05/17(木) 20:33:12
VC++ 2005を使っています。
以下をビルドするとMessageBox関数の第二引数lpCmdLineを変換できないから
キャストしろとエラーがでますがどうやるんでしょうか?

#include<windows.h>

int WINAPI WinMain(
HINSTANCE hInstance ,
HINSTANCE hPrevInstance ,
PSTR lpCmdLine ,
int nCmdShow ) {

MessageBox(NULL , lpCmdLine , TEXT("xxx") , MB_OK);
return 0;
}
979デフォルトの名無しさん:2007/05/17(木) 20:56:22
つ _tWinMain
980デフォルトの名無しさん:2007/05/17(木) 21:28:35
>>978
「PSTRからLPCWSTRに変換できません」って出るの?
俺もわからん
ごめん
981デフォルトの名無しさん:2007/05/17(木) 21:34:05
ここで検索しているわけだが
982デフォルトの名無しさん:2007/05/17(木) 21:38:30
#include<windows.h>
#include<tchar.h>

int WINAPI _tWinMain(
HINSTANCE hInstance ,
HINSTANCE hPrevInstance ,
LPTSTR lpCmdLine ,
int nCmdShow ) {

MessageBox(NULL , lpCmdLine , TEXT("xxx") , MB_OK);
return 0;
}
983980:2007/05/17(木) 21:45:46
探してみたらmbstowcs_sって関数があった
マルチバイト文字からワイド文字に変換するんだってさ
適当に

#include <windows.h>
#define STRLEN 100

int WINAPI WinMain(HINSTANCE hInst, HINSTANCE, LPSTR lpsCmdLine, int)
{
wchar_t lpswCmdLine[STRLEN];
size_t nConvertedChars;
mbstowcs_s(&nConvertedChars, lpswCmdLine, STRLEN, lpsCmdLine, strlen(lpsCmdLine));
MessageBox(NULL, lpswCmdLine, TEXT("XXX"), MB_OK);
}

ってやったらうまくいった

ただ、文字列がワイドになるのはUNICODEという語がdefineされている時だけだから
UNUCODEがdefineされてなかったらダメだった
(#include <windows.h>の前の行に#undef UNICODEってやったらエラーになった)
984980:2007/05/17(木) 21:47:23
>>982
「WinMainはオーバーロードできません」って出てきた
985デフォルトの名無しさん:2007/05/17(木) 21:50:04
GetCommandLineWでも呼んどけば?
986デフォルトの名無しさん:2007/05/17(木) 21:53:13
>>984
LPCTSTR lpCmdLineなら確かにそうなるけど
LPTSTRなら通るはず(2003, 2005)
987デフォルトの名無しさん:2007/05/17(木) 22:07:45
ATL::CA2CT
988980:2007/05/17(木) 22:14:28
>>985
通った
ありがとう

>>986
一番最初の行に
#undef UNICODE
って書けば通った
書かなければエラーだった(Vistaで2005)
989デフォルトの名無しさん:2007/05/17(木) 22:17:02
ホントにくだすれなんですが、
MFC覚えようとC++の勉強を始めたのですが、
コンソールプログラムをVCで動かしたら速攻で終了してしまうのです。
最後にcin > i;とか入力待ちを書いておけば良いのですが、
プログラム自体は最後まで行っても処理を見るために
ウィンドウが消えないようにする方法ってないですか?
990デフォルトの名無しさん:2007/05/17(木) 22:17:55
こんな些細なところでも不具合でるのかよ
Vistaは恐ろしいな
991デフォルトの名無しさん:2007/05/17(木) 22:20:12
>>989
main()のreturnの行にIDE側でブレークポイント設定するとか
992978:2007/05/17(木) 22:25:22
みなさん、ありがとうございます。

>>982-983はそれぞれビルドはできましたが、何故その変更でビルドできたのか
理解できていないのでこれから調べようと思います。
993980:2007/05/17(木) 22:43:11
>>992
調べてみたら、VC++2005のWindowsAPIでの文字型は
(1)UNICODEが定義されているとき -> wchar_t(ワイド文字)
(2)定義されていないとき -> char
をtypedefしているらしい

>>978のプログラムは、wchar_tによる文字列の引数(LPCWSTR)が必要なのに、charの文字列(LPSTR)を入れてしまった

それならWinMainの引数もそういうのに対応してほしかった
994デフォルトの名無しさん:2007/05/17(木) 22:47:42
>>993
正確には、VC++ 2005以前からchar/wchar_tの切替はあった。
VC++ 2005からUNICODEが定義された状態が初期状態になっただけ。

> ならWinMainの引数もそういうのに対応してほしかった
それが>>979>>982で真っ先に挙げられた
_tWinMainなわけだが、お前の目は節穴か。
995デフォルトの名無しさん:2007/05/17(木) 23:03:13
>>989
デバッグしてんなら最後にブレークポイント置いとけ
デバッグするつもりが無いなら、Ctrl-F5で実行
996デフォルトの名無しさん:2007/05/17(木) 23:19:25
2005にしたら文字列は全部Unicodeになったようで
全部WCHARなんですね。
997980:2007/05/17(木) 23:36:04
>>994
すまん
_tWinMainについて何も知らなかった
998デフォルトの名無しさん:2007/05/18(金) 06:12:13
"hoge" は char 配列だし。
999デフォルトの名無しさん:2007/05/18(金) 06:21:10
つTEXT()
1000デフォルトの名無しさん:2007/05/18(金) 06:56:58
★初心者にVisual C++を教えるスレ★ Part26
http://pc11.2ch.net/test/read.cgi/tech/1176387917/l50
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。