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

このエントリーをはてなブックマークに追加
200デフォルトの名無しさん
多分すごい有名な
「新VisualC++6.0入門ビギナー編 林春比古署 ソフトバンク社」
を使って今勉強中なんですが、
241ページのサンプルプログラムで、
CPenクラスのオブジェクトのポインタ、’oldPen’ってゆうのを、
’旧ペン’と銘打って保存って書いてありますが、
これをする意味がわかりません。
わざわざポインタでなぜ確保しているのでしょうか?
pDC->SelectObject(&CPen型Object)で選択して書くだけなのに、
別に’旧ペン’を保存しておく必要があるのでしょうか?
私が簡単に確認した程度では、
oldPen 自体設定しなくても実行可能でしたし、
最後に’旧ブラシに戻す’ってゆう作業もなくても問題ありませんでした。
他にもいろいろ記述してoldPenの有用な使い方を検証しましたが、
やればやるほど意味がないのではという考えに傾きます。
大変限定的な質問ですが、
よければ本を持ってる方、もしくはよく知ってらっしゃる方でわかる方がいれば
教えていただけないでしょうか?
201デフォルトの名無しさん:2007/02/08(木) 17:13:22
多分すごい有名な
「新VisualC++6.0入門ビギナー編 林春比古署 ソフトバンク社」
を使って今勉強中なんですが、
241ページのサンプルプログラムで、
CPenクラスのオブジェクトのポインタ、’oldPen’ってゆうのを、
’旧ペン’と銘打って保存って書いてありますが、
これをする意味がわかりません。
わざわざポインタでなぜ確保しているのでしょうか?
pDC->SelectObject(&CPen型Object)で選択して書くだけなのに、
別に’旧ペン’を保存しておく必要があるのでしょうか?
私が簡単に確認した程度では、
oldPen 自体設定しなくても実行可能でしたし、
最後に’旧ブラシに戻す’ってゆう作業もなくても問題ありませんでした。
他にもいろいろ記述してoldPenの有用な使い方を検証しましたが、
やればやるほど意味がないのではという考えに傾きます。
大変限定的な質問ですが、
よければ本を持ってる方、もしくはよく知ってらっしゃる方でわかる方がいれば
教えていただけないでしょうか?
202デフォルトの名無しさん:2007/02/08(木) 18:00:52
DCに選択中のGDIオブジェクトは破棄できないから。
203デフォルトの名無しさん:2007/02/08(木) 18:29:47
>200-201
★初心者にVisual C++を教えるスレ★ Part25
http://pc10.2ch.net/test/read.cgi/tech/1168354839/380

マルチ
204デフォルトの名無しさん:2007/02/08(木) 18:31:55
ほんとだあ
205デフォルトの名無しさん:2007/02/08(木) 18:56:07
あちこち書き込むと早く回答がもらえるよ〜俺って頭いい〜とか思ってるのかね。
206デフォルトの名無しさん:2007/02/08(木) 22:37:31
ttp://aoiruka.blog8.fc2.com/blog-entry-103.html
ここに載っている方法で加算合成を行っても問題はありませんか?
自分の環境では特に支障なく動作するのですが。
207デフォルトの名無しさん:2007/02/08(木) 22:50:54
>>206
そのリンク踏んでも問題はありませんか?
自分の環境で支障がでると困るので
208デフォルトの名無しさん:2007/02/09(金) 10:29:48
あっちこっちかいたらあかんのか、ぼけ。
二箇所しか書いてへんし、掲示板のタイトル選んで書いてるし、
回答は少しでも速いほうがいいし、
もしかしたらいろんな答えがあるかもわからんし、
それを知りたいのは普通やんけ。
誰も頭がいいなんか思うか。
そういう発想にいたるお前は自分が悲しくないんか。
まあ、ここでそんなやつにかまってる自分が悲しいけど。
気分が悪いんでもうこんなところに質問書いたりしません。
どうも何らかの答えになるようなことを書いてくださった方はありがとうございました。
209デフォルトの名無しさん:2007/02/09(金) 14:04:46
もうくるなよ
210デフォルトの名無しさん:2007/02/09(金) 14:41:44
質問です。VC++6.0でMFCを利用しています。

3つのダイアログをモーダレスで表示します。
仮に、A,B,Cとします。

この3つのダイアログのZオーダーを常にA→B→Cに固定するにはどうすれば
よいでしょうか。

私自身、Zオーダーという言葉の使い方が間違っているかもしれませんので補足します。

AとBが重なっていれば必ずAが前面に表示され、BとCならB,AとCならAという
動作です。

ダイアログが2個なら、TOPMOSTが利用できるのですが、3つの場合はどのようにしたら
よいでしょうか。

可能であれば、BダイアログをドラッグしながらAダイアログ上を横切ると、スムースにAの下
を潜り抜けるようなのがよいです。

よろしくお願いします。
211デフォルトの名無しさん:2007/02/09(金) 17:04:21
こういう向いてないやつはどうしたらいんだろうね
本人が悟ってくれるといいけど
212デフォルトの名無しさん:2007/02/09(金) 17:40:22
>>210
ダイアログの作成順をC B Aの順にし、Create時Aの親をBに、Bの親をCにする。
213デフォルトの名無しさん:2007/02/09(金) 22:52:26
ど素人です。
labelに文字を続けて表示させたいのですが、
label->Text = S"hello wo";
label->Text = S"rld";
としてもrldとなってしまいます。
これをfor文等で何回も実行させたいのですが、どうすればよいのでしょうか。
214デフォルトの名無しさん:2007/02/09(金) 23:00:29
これなら低級エスパーでも答えられるな。
215デフォルトの名無しさん:2007/02/09(金) 23:09:15
>>213
普通のCのプログラムならそんな感じだろうけど
Windowsだからね
最低限の基礎知識がないとこれから大変だと思うよ
手取り足取り面倒みてくれる人がいるといいね
216デフォルトの名無しさん:2007/02/09(金) 23:15:26
S""って、マネージリテラル文字列?C++/CLIか?
217デフォルトの名無しさん:2007/02/09(金) 23:15:29
初心者です。
超アホな質問で申し訳ないんですがよろしくです。
VistaにてVS2005Expressを使おうと思ってます。
一応本体+SP1(MSUpdateにて)とSP1Update4Vista(β版)とやらをインスコしてみました。
・・がこれでSP1は適用できてるんでしょうか?
確認方法がわからないんですorz|||
バージョン情報にはSPの文字は見えませんでしたが・・

また、Vista上の2005でビルドすると文字コードエラーが連発しますが、
なんとなくSP1では対策済みとの情報があったような気がしてて、
SP1が適用できてないのでエラーが残ってるのかなぁとか思ってるわけですが、
実際のところどうなんでしょうか?
SP1にしたからって文字コードエラーが消えるわけではないのか、
それともSP1自体適用されてないのか・・

どうかよろしくお願いします!!m(_ _;;)m
218デフォルトの名無しさん:2007/02/09(金) 23:20:57
>>213
label->Text += S"rld";
219213:2007/02/09(金) 23:40:38
>>216
よくわかりませんがVC++.NETでwinフォームアプリケーションを作っています。

>>218
ビルドすると
'+':__gcポインタ 'System::String __gc *'に対してポインタ演算ができません。
とエラーがでてしまいます。
220デフォルトの名無しさん:2007/02/09(金) 23:54:54
一つの入れ物に二つ入れようとしたら
前に入れたのがでて、後から入れたのが残るよ
221213:2007/02/10(土) 00:13:25
String* ss;
ss = System::String::Concat(S"hello wa", S"rld");
label->Text = ss;
とすれば表示させることができました。
一応問題は解決したのですが、もしこれより効率的な書き方があれば
今後のために教えてください。
222デフォルトの名無しさん:2007/02/10(土) 00:33:15
>>221
MASM6.3?
だったら
MOV ES・SI、ソース
MOV DS/SI、ですちねーしょn
MOV ECX、カウント
REP MOV
223デフォルトの名無しさん:2007/02/10(土) 00:39:01
コンパイラ様より効率的なんだろうか
224デフォルトの名無しさん:2007/02/10(土) 00:42:14
>>223
昔DECのフォートランでDOループで定数を埋めるプログラムを作ったら
逆アセンブルしたら全部クリア命令だった
225デフォルトの名無しさん:2007/02/10(土) 00:53:38
>>222
rep movsb だろ。
ていうか、そもそもCLIか。
226デフォルトの名無しさん:2007/02/10(土) 01:43:22
>>221
大量の文字列連結用にSystem.Text.StringBuilderってのがあるけど、
二つ三つ繋ぐのには大げさすぎだな。
227デフォルトの名無しさん:2007/02/11(日) 17:15:26
乱数を取りたいんですが
Random random = new System::Random();
int ran = random.Next(100);
ではコンパイルできないんですがどうしたらいいですか?
228デフォルトの名無しさん:2007/02/11(日) 21:48:08
C++/CLIならたぶんこう。
System::Random random;
random.Next(100);

マネージドC++ならたぶんこう。
System::Random* random = new System::Random;
random->Next(100);

.NETを使わないC++ならboost::randomを使っておけ。
嫌なら<cstdlib>のstd::rand (& std::srand)。
229デフォルトの名無しさん:2007/02/11(日) 22:13:12
>>228
ありがとうございます。
230デフォルトの名無しさん:2007/02/12(月) 00:14:24
猫でもわかる…の他にWin32SDKでダイアログベースアプリケーション
の作り方を解説しているところを教えてください。
231デフォルトの名無しさん:2007/02/12(月) 00:27:54
WisdomSoft
232デフォルトの名無しさん:2007/02/12(月) 00:51:17
>>231
ありがとうございます。
ハード + たまにファーム屋なので、すぐ壁にぶち当たると思うけど
頑張ります。
233デフォルトの名無しさん:2007/02/12(月) 22:40:46
C++とは直に関係なくリソースエディタのことなのですが
メニューをリソースエディタで作る時に
最初にメニュー項目に割り振られたIDをメニューエディタで変えても
resource.hに繁栄されないのですけど そういう仕様なんですか?リンクしてない?
リソースシンボルを見ると書き換えたはずの前のIDも使用中になって消すことも
できませんし……
自分でresouce.hを書き換えるものなんでしょうか?
グラフィカルなメニューエディタとresouce.hの関係がよくわかりません
環境はVS2005stdです
234デフォルトの名無しさん:2007/02/13(火) 00:47:08
それあるね。素直に変わる時もあるけど、バグのような気がする。
235233:2007/02/13(火) 01:55:09
>>234
ということは 本来はメニューエディタで変えたIDはリソースシンボルや
resource.hに反映されるものなのですね
勝手にresource.h書き換えるとVSに怒られるし……
何度か再起動してれば連動することもあるということですね
sp1も充ててるんですけどね

明日 試してみます
236デフォルトの名無しさん:2007/02/14(水) 17:38:06
自分が作ってるのと関係ない窓(例えばIE)を移動させることって可能でしょうか?
237デフォルトの名無しさん:2007/02/15(木) 01:22:31
可能です。
238デフォルトの名無しさん:2007/02/18(日) 22:31:02
VS2005STD-VCの
アイコンエディタの色の並びは
どういう根拠で決定されたものなのでしょうか?

正直、あの並びをデータとして持っているのが無駄に思えます。
239デフォルトの名無しさん:2007/02/18(日) 22:35:23
VGA(640x480,16色)の初期パレットじゃね?
240デフォルトの名無しさん:2007/02/18(日) 22:43:10
って、256モードか
241デフォルトの名無しさん:2007/02/18(日) 22:45:29
あれはわかんね
242デフォルトの名無しさん:2007/02/18(日) 23:20:16
WebSafeColorの216色+WindowsSystemColorの32色+αじゃないのかな。
要は、255を5等分した6濃度をRGB3プレーン分展開したのがWebSafeColorの216色で、
ウィンドウ枠なんかに使っているのがWindowsSystemColorの32色。
243デフォルトの名無しさん:2007/02/19(月) 20:28:58
MFCのOnTimerイベントの処置中は他のボタンなどのイベントを受け付けない
(OnTimer内の処理が終了後に他のイベント処理)動作は可能でしょうか?
244デフォルトの名無しさん:2007/02/19(月) 20:40:19
OnTimer内でメッセージループ回さなきゃ、そういう動作になると思うが。
245243:2007/02/19(月) 20:50:43
>>244
イマイチOnTimerの処理について把握してないのですが、OnTimer内の
処理が終わるまではボタンイベントの処理等には行かないって事でいいのでしょうか?
246243:2007/02/19(月) 20:52:58
あ〜すいません。
行かないってか、貯まったメッセージキューの処理とかしなきゃ行けないですね。
247デフォルトの名無しさん:2007/02/20(火) 11:37:39
これからどうやって勉強すればいいですか
Cに関する知識0です。
248デフォルトの名無しさん:2007/02/20(火) 11:49:53
今まではどうやって勉強して、どこまでいったのだ
249デフォルトの名無しさん:2007/02/20(火) 13:12:56
諦めて樹海にでも行けばいいんじゃね?
250デフォルトの名無しさん:2007/02/20(火) 23:48:17
関数が多くなって非常に醜いソースファイルがあるのですが、
ほかのファイルにいくつかの関数をもっていき、それをメインのソースファイルから利用したりはできませんか?
251デフォルトの名無しさん:2007/02/20(火) 23:50:42
つ ヘッダ
252デフォルトの名無しさん:2007/02/20(火) 23:52:12
>>250
ほかのファイルにいくつかの関数をもっていき、それをメインのソースファイルから利用
すれば出来る。
253デフォルトの名無しさん:2007/02/22(木) 10:07:30
case 1:
if(GetOpenFileName(&ofn)){
GetFileTitle(GotFileName,GotFileShortName,256); strcpy(musictitle,"open ");
strcat(musictitle,GotFileShortName);strcat(musictitle," alias oto");mciSendString(musictitle,NULL,0,NULL);
}
break;

case 2:
mciSendString("stop oto",NULL,0,NULL);
mciSendString("play oto from 0", NULL, 0, NULL );
break;

こんな感じでボタン1が押されたらコモンダイアログ出してファイルを選択させ、
ボタン2が押されたら、選んだファイルを再生する、というようにしてるんですけど
動作が変なんです。

例えば、最初に「oo.mp3」を選択した後、ボタン2を押して再生します。
そして、もう一度ボタン1を押して、「xx.mp3」を選択します。
その後、ボタン2を押すと、「oo.mp3」が最初から再生されてしまいます。
本当は、「xx.mp3」を再生したいのですが・・・
254デフォルトの名無しさん:2007/02/22(木) 10:41:32
>>253
mci使ったことないし、曲再生もやったことないけど、気づいた点を一つ。
closeしないうちに再openできるの?
単純に、oo.mp3がopenされたままだからxx.mp3でopenできてないんじゃない?
255253:2007/02/22(木) 14:35:39
>>254
すんません、書いてなかったです。
WM_DESTROYの中でcloseはしてあります。
256254:2007/02/22(木) 14:51:50
んにゃ、closeしないままopenしてないかって話だけど。
2度目のxx.mp3のときのcase 1で、ちゃんとopenできてるかどうか確認してみたら?
#つーか、mciSendString()はエラーを返さないのか? 返さないとしたら確認手段くらいないのか?


いっそ、試しにこんなロジックでも書いてみたら?
mciSendString("open oo.mp3 alias oto", NULL, 0, NULL);
mciSendString("stop oto", NULL, 0, NULL);
mciSendString("play oto from 0", NULL, 0, NULL);
Sleep(10000);
mciSendString("close oto", NULL, 0, NULL);
mciSendString("open xx.mp3 alias oto", NULL, 0, NULL);
mciSendString("stop oto", NULL, 0, NULL);
mciSendString("play oto from 0", NULL, 0, NULL);
Sleep(10000);
mciSendString("close oto", NULL, 0, NULL);
んで、巧く行ったらcloseをコメントにしてやってみると。
257253:2007/02/22(木) 15:05:31
>>256
出来ました、サンクスです。
てっきり、closeは最後にアプリ閉じるときだけすればいいと思ってました。
そっかー、一旦、close 要るんだったのか。
どうもです。
258デフォルトの名無しさん:2007/02/22(木) 15:32:52
VC++の古いやつ(5.0 Ent)使ってるんだけど
SDKで 

case WM_PAINT:
return 0;

この2行が入っていると、
何故か(左上のアイコンをクリックして出す)システムメニューの
表示が遅くなったり、配置したコントロールの反応が遅れたりする
(例えばチェックボックスをクリックしてもチェックマークが入るのが遅い)。

この2行をコメントにすると直る。

これって、普通なのかな?
今更なんで5.0かって言われそうだけど
259デフォルトの名無しさん:2007/02/22(木) 15:42:35
WindowsのWM_PAINTで再描画が行われない
(正確には更新リージョンが空にならない)と、再びWM_PAINTが投げられる。

だから例えばDefWindowProcの中ではWM_PAINTに対し
ただBeginPaintとEndPaintだけを呼んで更新リージョンを空にしていると、
Programming WindowsかAdvanced Windowsのどっちかに書いてあった。
260デフォルトの名無しさん:2007/02/24(土) 04:13:55
windowsアプリケーションでアイコン作ったものの
コンパイルしても表示されないんですが
設定の仕方があるのですか?
261デフォルトの名無しさん:2007/02/24(土) 07:18:30
俺様のエスパー能力を駆使した感じでは、
元々リソースを含まなかったプロジェクトに対して、アイコンファイルだけを直接追加した予感。
リソースファイル(*.rc)とresource.hがプロジェクトに含まれているか?

通常は、リソースファイルを追加した後、
そのリソースファイルに対してアイコン等を追加する。
262デフォルトの名無しさん:2007/02/24(土) 08:00:40
残念ながら含まれてます
ただ今気付いたんですがフォルダの表示をアイコン表示にすると
ちゃんと表示されます
一覧表示や詳細表示などでは表示されないんですがこれもしかして仕様ですか?
263デフォルトの名無しさん:2007/02/24(土) 08:42:31
諦めずに再エスパー。
アイコンの内32x32の方だけ書き換えていて、16x16は空のまま、とか。
イメージ - 現在のアイコンイメージタイプ をチェックしてみ。
264デフォルトの名無しさん:2007/02/25(日) 23:38:32
>>263
あるある
265デフォルトの名無しさん:2007/02/26(月) 00:33:49
>>263
遅くなってすいません
見事にそれでした
エスパーさんありがとう!
266デフォルトの名無しさん:2007/02/26(月) 03:30:05
エスパーされるってことは、質問の情報が不足してるってことだぞ
267デフォルトの名無しさん:2007/02/26(月) 05:04:43
つまり、馬鹿にされているってこった。
268デフォルトの名無しさん:2007/02/26(月) 06:17:41
関係ないけどFLVPというフリーソフトも小さいアイコンの表示が変だ
大きいやつは赤いアイコン、小さい方はMFCの青いアイコン
269デフォルトの名無しさん:2007/02/26(月) 07:39:04
昔からそうだけど、MFCの吐き出す既定コードが手抜きだから。
LoadIconしたアイコンを大小両方に割り当てる所為で、
タイトルバーには16x16では無く、32x32のアイコンが縮小されて使われている。
両方描くのが面倒な時は、どちらか一方を削除しておくのが無難だな。
270デフォルトの名無しさん:2007/02/27(火) 18:10:22
>>269
最初から16x16も作ってくれちゃうしなあ
アイコン作ったときは、小さいほうはとりあえず消して
小さいアイコンの見栄えが気になってから追加するようにしてる。
271デフォルトの名無しさん:2007/02/27(火) 19:27:48
ソースが同封されてるツールがあって、自分でVisual Studioで
ビルドしてみたのですが、同封されているexeと比べると何故か
サイズが大きいのはどう言ったことが原因と思われるのでしょうか?

あと何個か警告が出たのですが、一応exeが出来ています。
どんな警告も出ないように作ると勝手に想像していたのですが
ある程度の許容範囲内の警告が出るくらいは無視されるものなのでしょうか?
よろしくお願いします。
272デフォルトの名無しさん:2007/02/27(火) 19:51:26
さあ
273デフォルトの名無しさん:2007/02/27(火) 21:57:38
作成者とまったく同じコンパイラと
作成者とまったく同じコンパイルオプションと
作成者とまったく同じライブラリをリンクすれば

たぶん同じサイズの実行ファイルになるんじゃないかな
274デフォルトの名無しさん:2007/02/27(火) 22:07:01
覆水盆に帰らず
275デフォルトの名無しさん:2007/02/27(火) 23:45:12
同じCPUで、同じOSな必要もあるんじゃね?
276デフォルトの名無しさん:2007/02/28(水) 14:56:54
size = GetFileSize( hFile, NULL );
SetWindowText(label,(char)size);

こんな風に書いて、sizeにhFileのファイルサイズを
スタティックコントロールのlabelに表示したいんですが、
labelの表示が変わらないんです。
(char)を取ると、めちゃくちゃな文字列が出ちゃう。
これ、このスレでいいんかな?
277デフォルトの名無しさん:2007/02/28(水) 15:05:06
SetWindowTextなんだからテキストを渡さないと
278デフォルトの名無しさん:2007/02/28(水) 16:32:12
VisualC++2005ExpressEditionを久々に起動しようとおもったんですが
”一つ以上のコンポーネントがみつかりません。再インストールしてください”
とでて、
アンインストールしようとしてもなにかのファイルがみつからないとかいうエラーがでてアンインストールできず
それでも再度インストールしようと試みたらエラーとおもわれるものがでました。
以前にはしっかりと登録もしたはずなんですが
どうすればいいでしょうか。
279デフォルトの名無しさん:2007/02/28(水) 16:45:11
パソコン買い換え
280デフォルトの名無しさん:2007/03/01(木) 08:29:53
最後の手段っぽいけど、Windows Installer CleanUp ユーティリティを使う、とか。
サポート技術情報を文章番号290301で。
281デフォルトの名無しさん:2007/03/01(木) 13:38:53
SetFilePointer(hFile,1,NULL,FILE_BEGIN);
ReadFile(hFile,buf,3,&readsize,NULL);
buf[3] = ('\0');

教えてください。
上のように書いて、hFileのファイルの先頭3バイトを読み
そこにヌル文字を加える、これで先頭3バイトを受け取りたいんです。
でも、これだと2バイト目+3バイト目+ヌル文字になってしまいます。
相当馬鹿なことしてるかもしれませんが・・・
282デフォルトの名無しさん:2007/03/01(木) 14:07:26
>>281
>SetFilePointer(hFile,1,NULL,FILE_BEGIN); 
先頭から読みたいなら0じゃない?
SetFilePointer(hFile,0,NULL,FILE_BEGIN); 
283デフォルトの名無しさん:2007/03/01(木) 14:23:25
この世はすべて1から始まっている

という世界ですな
284281:2007/03/01(木) 14:36:34
>>282
どうもです。できました。
かなり馬鹿なことしてたんかな?
また、質問するかもしれないんでよろしくお願いします。
285デフォルトの名無しさん:2007/03/01(木) 20:15:19
ここでいいかどうかよく判らないですが、質問です。

Web ブラウザから起動される Java アプレットがあり、そこに表示されている情報を
現在作成しているツール(Visual C++ .NET, ダイアログ)から読み取ろうとしています。
・アプレットのクラス名を指定して FindWindow()
・EnumChildWindows() で子ウィンドウを列挙
・子ウィンドウに対して GetWindowRect() や GetWindowText()
という感じで、ラベル(SunAwtLabel)のキャプションは GetWindowText() で取得できるんですが
エディットボックス(Edit)の現在の値が取れません(""となります)。
また、コンボボックス(ComboBox)もあるんですが、これは値の取り方すら分かりません。

エディットボックスとコンボボックスの現在の値を取得するには、どうしたらいいでしょうか?
286デフォルトの名無しさん:2007/03/01(木) 21:13:20
みためがエディットボックスとコンボボックス
287デフォルトの名無しさん:2007/03/01(木) 23:40:19
VC2005ってPDBの埋め込みできないの?
288デフォルトの名無しさん:2007/03/02(金) 09:45:51
SetFilePointer(hFile,1,NULL,FILE_BEGIN); //(1)先頭3バイト読む
ReadFile(hFile,buf,3,&readsize,NULL); // bufはchar
buf[3] = ('\0');

SetFilePointer(hFile,0,NULL,FILE_CURRENT); //(2)先頭から4バイト目を読む(1)の続きを読みたい
ReadFile(hFile,buf,1,&readsize,NULL);
buf[1] = ('\0');

if (buf==0x01)
{
MessageBox(hWnd,"aaa","bbb",MB_OK); //(3)4バイト目は01だからメッセージが出るんじゃ?
}

度々質問ですが、
こんな感じで、まず(1)で先頭から3バイトバイナリを読みます。
次に(2)で(1)の続き(先頭から4バイト目)を読みます。
例えば、バイナリで「41 42 43 01」なら(1)はABCになると思います。
でも、(3)のメッセージが出ません。
if の所の比較が変なんでしょうか?
289デフォルトの名無しさん:2007/03/02(金) 09:46:54
C++とDelphiどっちが簡単なわけ
290デフォルトの名無しさん:2007/03/02(金) 09:54:02
>>288
> SetFilePointer(hFile,1,NULL,FILE_BEGIN);
0から数え始めるからこれでは最初の1バイトを飛ばすことになる

> SetFilePointer(hFile,0,NULL,FILE_CURRENT);
無意味

> if (buf==0x01)
上を治したとして、buf[0]に書き込まれているはずだからif (buf[0] == 0x01)では?
291デフォルトの名無しさん:2007/03/02(金) 10:00:12
実験ならいいけど
こまぎれで読んだらパフォーマンス悪そうだな
292デフォルトの名無しさん:2007/03/02(金) 10:04:37
実験する場合はデバッガ使った方がいい
293288:2007/03/02(金) 10:07:08
>>290
thanxです、buf[0]だったんですね。
それにしてもこのスレで教えてもらうたびに
自分の実力の無さを感じてしまう。
294デフォルトの名無しさん:2007/03/02(金) 11:05:57
実力以前の話だから気にするな
295デフォルトの名無しさん:2007/03/02(金) 11:20:40
イイハナシダナー( ;∀;)
296デフォルトの名無しさん:2007/03/02(金) 18:14:24
イイハナシダナー( ;∀;)
297デフォルトの名無しさん:2007/03/02(金) 18:30:16
イナバウアー( ;∀;)
298デフォルトの名無しさん:2007/03/02(金) 21:30:16
>>289

GUIアプリを作るなら

Delphi>>>(超えられない壁>>>VC++(MFC)
299デフォルトの名無しさん:2007/03/02(金) 23:32:56
やりたいことができなくなったらVC++へ。
300デフォルトの名無しさん:2007/03/04(日) 21:23:56
http://www.kumei.ne.jp/c_lang/
初心者でここを見ながらVisual C++2005の勉強してるのですが、
現在時刻を表示するのに

case WM_TIMER :

GetLocalTime(&st);
wsprintf(str,"%02d:%02d:%02d",st.wHour,st.wMinute,st.wSecond);

でstatic char str[256]に格納して
WM_PAINTでTextOutでこの文字列を出力しようとするとVisual C++では文字化けしてしまいます。
borland c/c++コンパイラでコンパイル実行させるとちゃんと時間が表示されます。
これを直すにはVCの何処を弄ったら良いのでしょうか?
301デフォルトの名無しさん:2007/03/04(日) 21:35:44
ひろってきたソース弄ってるのは勉強とは言わない
302デフォルトの名無しさん:2007/03/04(日) 21:38:25
>>300
プロジェクトのプロパティ → 全般 → 文字セット → マルチバイト文字セットを使用する
にしてみる。
または、
wsprintf(str, TEXT("%02d:%02d:%02d"), st.wHour, st.wMinute, st.wSecond);
にしてみる。
303デフォルトの名無しさん:2007/03/04(日) 21:38:50
第一引数にはLPTSTRを渡さないと
304デフォルトの名無しさん:2007/03/04(日) 21:38:58
>>301
十分勉強だろ
305デフォルトの名無しさん:2007/03/04(日) 21:47:06
>>302
「strの宣言をstatic TCHAR str[256];に直す」が抜けている。

これくらい警告やエラーになりそうな気がするんだがな。
常に/W4 /Wp64付けておけ。
306デフォルトの名無しさん:2007/03/04(日) 22:05:01
糞サイトの無料サポートをほいほい引き受けるお人良しがいたとは
307300:2007/03/04(日) 22:14:39
>>302-303,>>305
ありがとうございます、出来ました!
今までbccだと通っていたので気にしていませんでしたが、
VCだと型に対してキビしいのですね。
仮引数の型を教えてくれる機能があるようなのでこれからは気をつけます><
またプロパティで警告のレベル等を変えられるのも初めて知りました。
親切に教えてくださり本当にありがとうございました。
308デフォルトの名無しさん:2007/03/04(日) 22:42:49
>>307

単に VC8(VS2005)は、デフォがUNICODEになってて、BCCは MBCSに
なっているってだけだよ。
BCCでも UNICODEにすると同じようになるはず。
309デフォルトの名無しさん:2007/03/06(火) 11:59:45
Visual c++
で、ソフト作成にチャレンジしようと思うのですが、
Visual C++ 2005 Express Edition ってのが
マイクロソフトからダウンロードできるんだけど、
それでいいのですか。

ここの皆さんが使っているのはこれですよね。
違ったら教えてください。
似たような名前のソフトがたくさんあって
どれがどれなのかさっぱり分かりません。
どうかお願いします。
310デフォルトの名無しさん:2007/03/06(火) 12:04:59
>>309
EEじゃないけど、まあそれだ。
PlatformSDKとかMSDNライブラリとかも一緒にな
311デフォルトの名無しさん:2007/03/06(火) 17:15:26
ツールボックスのList Controlについて質問です。

List Controlに対する処理(後で記述)を関数化しています。
「変数の追加」でList Controlをm_listctrlとしました。
プロパティは、Viewをレポートにしてるだけです。

関数の処理を行うと「説明」のColumn部分が二つになってしまいます。
m_listctrl.DeleteColumn(1);
で消しているのですが、どうしてでしょうか?
Columnをうまく初期化する方法をおしえて下さい。
312311:2007/03/06(火) 17:18:23
m_listctrl.DeleteColumn(0);
m_listctrl.DeleteColumn(1);
m_listctrl.DeleteAllItems();

// 詳細表示のときのコラムのヘッダーの設定
LVCOLUMN myColumn; // 列情報を保持するオブジェクト
myColumn.mask = LVCF_TEXT|LVCF_WIDTH; // pszText,cxを有効にする

RECT myRect;
m_listctrl.GetClientRect(&myRect); // リストビューサイズを得る
myColumn.cx = (myRect.right - myRect.left) / 3; // 横幅の1/3を表題にする
myColumn.pszText = "項目"; // 列タイトル文字列
m_listctrl.InsertColumn(0, &myColumn); // 0列目を確保する

myColumn.cx = (myRect.right - myRect.left)*2 / 3; // 横幅の2/3を説明にする
myColumn.pszText = "説明"; // 列タイトル文字列
m_listctrl.InsertColumn(1, &myColumn); // 1列目を確保する

// リストビューにアイテムを設定する
static LVITEM myITEM; // 初期値をクリアするためにstaticを使用
myITEM.mask = LVIF_TEXT; // pszTextを有効にする
myITEM.iItem = 0; // 項目0
myITEM.iSubItem = 0; // 列0
myITEM.pszText = "リスト1"; // タイトル文字列
m_listctrl.InsertItem(&myITEM); // 設定する
myITEM.mask = LVIF_TEXT; // pszTextを有効にする
myITEM.iSubItem = 1; // 列1
myITEM.pszText = "ああああああ"; // 説明文字列
m_listctrl.SetItem(&myITEM); // 設定する
313デフォルトの名無しさん:2007/03/06(火) 17:32:44
何がどうなってるのかよくわからんが、
(0) で0個目を消したら1個目は前にずれるから
それも消すのはまた(0)じゃないか?
314311:2007/03/06(火) 17:36:17
すみません、追加です。
プロジェクトの内容は
テンプレート:MFCアプリケーション
アプリケーションの種類:ダイアログベース
「ユニコードライブラリの使用する」のチェックを外す
315311:2007/03/06(火) 17:44:06
>>313
レスどうもです。

m_listctrl.DeleteColumn(0);
m_listctrl.DeleteColumn(0);

で、できました!
しかし、なんかもっとスッキリしたやり方はないのかな・・・。
Columnの数を計算して、ループでDeleteColumn(0);とするんでしょうか・・・。
316デフォルトの名無しさん:2007/03/06(火) 17:47:58
今見たけど、ヘルプのDeleteColumn の例はそうなってるな。
317311:2007/03/06(火) 18:06:45
>>316
なるほど、そうなってますね。
勉強になりました。
ありがとうございます。
318デフォルトの名無しさん:2007/03/08(木) 13:22:56
strcat(all,rectform.top);


all(char[]で宣言)にstrcatでフォームの高さ(位置)を入れたいんですが

'.top' : 左のオペランドが 'struct' へのポインタです。'->' を使用してください。

というようなエラーが出てしまいます。
. を -> に変えると強制終了しちゃうし。
何かキャストが要るんかな?

SDKです。
319デフォルトの名無しさん:2007/03/08(木) 13:28:27
はい。
320デフォルトの名無しさん:2007/03/08(木) 13:34:14
キャストが必要と言うより、プログラミングの基礎知識が必要かと思われます。
321デフォルトの名無しさん:2007/03/08(木) 14:21:44
数値と文字列の相互変換からやっとけ
322デフォルトの名無しさん:2007/03/08(木) 14:28:54
キャストもsdkも100年早い
323デフォルトの名無しさん:2007/03/08(木) 16:05:22
char tmp[20];
sprintf(tmp,"%d",rectform->top);
strcat(all,tmp);
324デフォルトの名無しさん:2007/03/08(木) 16:16:14
こう書くのは駄目か?
int len = strlen(all);
_snprintf(tmp + len, sizeof tmp - len, "%d", rectform->top);
325デフォルトの名無しさん:2007/03/08(木) 17:38:26
>>324
ダメすぎ。
326323:2007/03/08(木) 17:42:54
お、俺のはどう・・?
327324:2007/03/08(木) 17:43:09
ほんとだ、323に影響されてallとtmpをごっちゃにしてる
すまん
328デフォルトの名無しさん:2007/03/08(木) 18:00:32
>318が低レベル過ぎてそれに対するフォローしても妥当かどうかの判断しようがない件。
329デフォルトの名無しさん:2007/03/08(木) 18:35:12
エラーが出たらまずキャストって誰に教わったんだか
330デフォルトの名無しさん:2007/03/08(木) 18:38:25
strcat使うべきところかどうかもあやしい
331デフォルトの名無しさん:2007/03/08(木) 19:56:32
どうみても厨房です。本当にありがとうございました。
332デフォルトの名無しさん:2007/03/08(木) 19:59:12
strcatは安全じゃないってばぁちゃん言ってた
333デフォルトの名無しさん:2007/03/08(木) 20:58:50
いっそ全部stringにしちゃえ
334デフォルトの名無しさん:2007/03/08(木) 22:23:41
最適化なしだと意図通りに動いて、最適化ありだとバグが起こるって
よくあることですかね?
335デフォルトの名無しさん:2007/03/08(木) 22:26:20
変数の未初期化
336デフォルトの名無しさん:2007/03/08(木) 22:30:09
volatileが必要な変数とか?
337デフォルトの名無しさん:2007/03/08(木) 23:15:54
マルチスレッドのプログラムで、外部でフラグを立ててスレッドを終了させ
ようとしています。フラグの変数はvolatileをつけてます。
いろいろ試してみましたが、プログラムサイズの最適化だと意図したとおりに
動くようです。でも実行速度の最適化のオプションではだめなようです。
338デフォルトの名無しさん:2007/03/08(木) 23:29:51
>>337
そうならないためのvolatileなのに変だね。
別の原因なのかな。
339デフォルトの名無しさん:2007/03/08(木) 23:57:27
Win32のイベントを使えばいいだろ。
C/C++のvolatileはそもそも対マルチスレッド専用に作られたわけではないから、
マルチスレッド時にvolatileを付けておけば絶対に大丈夫ということはない。
340デフォルトの名無しさん:2007/03/09(金) 00:09:12
この使い方が駄目なら、volatileの存在意義が無いんじゃね?
とりあえず、プログラムをupしる。
341デフォルトの名無しさん:2007/03/09(金) 00:23:26
じゃあ〜volatileはなんなんだよ〜


最適化による期待はずれの動作は奥が深そうだな。
volatileでは解決しないことの原因なら
勉強のためにも
というかマルチスレッドを使う俺としてはぜひ知りたいところだ。
342デフォルトの名無しさん:2007/03/09(金) 01:10:07
とりあえず重要そうなとこだけ抜粋してみました。
ひょっとかしたら根本的な間違いがあるかもしれませんが。
// グローバル変数
volatile bool exitflag;

int WINAPI WinMain()
{
    (中略)
    hThread = reinterpret_cast<HANDLE>(_beginthread(childThread, 0, NULL));
    (中略)
    // 終了処理
    exitflag = true;
    WaitForSingleObject(hThread, INFINITE);
    return 0;
}

void childThread(void *arg)
{
    (省略)
    while(!exitflag){
        // いろいろな処理
    }
    if(exitflag)
        return;
    (省略)
    while(!exitflag){
        // いろいろな処理
    }
    return;
}
最適化なし、プログラムサイズ最適化はスレッドが終了しますが、
実行速度最適化にするとスレッドが終了しないようです。
343デフォルトの名無しさん:2007/03/09(金) 09:33:46
とりあえず_beginthreadexに変えてみる、とか。
_beginthreadは、CloseHandleが生成されたスレッドで処理されるので、
スレッド終了時点で、返されたハンドルの保証ができなくなる。
運が悪いと、別のスレッドを指してしまう可能性もある。
344デフォルトの名無しさん:2007/03/09(金) 18:31:44
main.cpp
main.h
func.cpp
func.h
・・・
という感じでソースを書いてるんですが、
main.cppの方でfunc.cppの関数を呼び出す際、引数に構造体のアドレスを渡して、関数内でその構造体の中身を変更、としたいんです。
この場合構造体の型と構造体の宣言はどこにどういう風にすればいいんでしょうか。
externを使ったりしてやってみてるんですがどうもエラーがでてしまいます・・・
345デフォルトの名無しさん:2007/03/09(金) 18:42:04
手取り足取り教えてくれる親切な人がいるといいね
346デフォルトの名無しさん:2007/03/09(金) 18:45:49
>>344
func.cpp の関数や構造体をfunc.hで宣言して両方でinclude
つーかcppなのにそれでいいのか、、って気はするが
もうちょっと他のソースやIDEの吐き出したソース参考にしてくれ。

あんまり初歩的だと>>345 みたいになる
347デフォルトの名無しさん:2007/03/09(金) 19:02:01
すみません,伺わせてください.
Windowsフォームで何らかの処理をした際に出現する
フォームの多重起動を防ぐ方法についてなんですが.

グローバルな領域にフォームのオブジェクトを持たせて,
一度目にnew生成,終了時にnullを代入することで,
nullチェックを行えばできるのですが.
グローバル領域を使用せずにする方法があったら教えてください.
お願いします.
348344:2007/03/09(金) 19:08:30
>>346
なんとかなりました。
まだCしか使えないのでこんな形になっています。
C言語質問の方で聞くべき事だったかもしれません。
回答ありがとうございました。
349デフォルトの名無しさん:2007/03/09(金) 19:35:54
一応__beginthreadexに書き換えてみました。しかし駄目でした。
最適化段階で終了条件が消えてしまっているような。。
350デフォルトの名無しさん:2007/03/09(金) 20:08:26
>>342
exitflagをlong型にしてtrueの代入の代わりにInterlockedIncrementを使ったらどう?
351デフォルトの名無しさん:2007/03/09(金) 21:15:32
>>350
試してみました。でも駄目でした。やっぱり速度最適化が駄目です。

volatile修飾ちゃんと利いてるのかな。。それとも俺の書き方が悪いのかorz
352デフォルトの名無しさん:2007/03/09(金) 21:23:19
回っているときにブレークしてみたらどうなる?
353デフォルトの名無しさん:2007/03/09(金) 21:39:55
動作中にブレークポイントを設定してみたら、最適化なしのときには
|if(exitflag)
●| return;
こんな感じで設定できたのですが、
最適化コンパイル後の動作中だとreturnの横クリックしても数行後の
処理に移動してしまいます。

説明が悪くて、わかりにくかったらすいません。
354デフォルトの名無しさん:2007/03/09(金) 21:41:10
>>353
最適化するとソースの行とプログラムコードが一致しないからな
ステップ実行がへんになることある。
355デフォルトの名無しさん:2007/03/09(金) 22:04:57
ダイアログアプリケーションを作っていますが、エディットボックスなどの
コントロールの配置が終わるのはいつでしょうか?
最初の表示が終わった契機でコントロールの表示位置を取得しようと
OnInitDialog() でコントロールの座標を調べてみましたが
なぜか位置が(0,0)となってしまいます。
コントロールの表示位置を取得するのに最適な契機を教えてください。
356デフォルトの名無しさん:2007/03/09(金) 22:06:54
OnInitDialogで設定した0秒のSetTimerが到着する頃には出来てるんじゃないの。
357デフォルトの名無しさん:2007/03/09(金) 22:29:24
あとから動的にコントロール追加とか普通にやるから
そのタイミングでいいんじゃないかな
358355:2007/03/09(金) 22:41:51
>>356
確かに OnInitDialog() 内でタイマをセットするやり方もありますね
もっとスマートな方法がなければこれしかないですね

>>357
「そのタイミング」とは OnInitDialog() で、ということですか?

やりたいのは、ダイアログエディタで配置したコントロールの座標を取得することです。
コントロールは動かさないので、一回だけ座標を取得できればいいのです。
359デフォルトの名無しさん:2007/03/09(金) 22:46:30
>>355
OnInitDialog() でコントロールの座標を調べるなんておれやったことあるけどなあ。
おかしいなあ。
360355:2007/03/09(金) 23:01:51
済みません。
私の初歩的なミスっぽいです。
コントロールの座標を GetClientRect() で取ってたんですが
左上が (0,0) になるので取れてないと思っていました。
OnInitDialog() で GetWindowRect() を発行してみたら
どうやらダイアログ上の座標が取れたようです。
もうちょっと調べてみます。
361355:2007/03/10(土) 02:03:43
OnInitDialog() にて

CRect rect;
CEdit* pEdit=(CEdit*)GetDlgItem(IDC_EDIT_HOGEHOGE);
pEdit->GetWindowRect(&rect);
ScreenToClient(&rect);

でダイアログ相対の座標が取れました。
大変お騒がせ致しました。
362デフォルトの名無しさん:2007/03/10(土) 05:18:31
>>351
駄目っていうのはスレッドが終了しないの? or デバッガ上でのトレースで
returnの行が飛ばされるの?後者ならあまり気にする必要が無い気がする。
前の方の書き込みを見る限り前者なのかな....
XP上のVC6 & VC2005で試してみたけどvolatile longとInterlockedIncrement
の組み合わせでスレッドは終了してたよ。試行回数各10回ほど。

_beginthreadでマルチスレッドやったのは今日がはじめてだけど、MFCでやる場合は
同期オブジェクトを使って終了を通知してる。APIでいうとCreateEventなど。
363362:2007/03/10(土) 05:24:03
追記
最適化は実行速度
364デフォルトの名無しさん:2007/03/10(土) 10:18:30
>>362
スレッドが終了しないってことです。
ってことは書き方が悪いのかなー。。
365デフォルトの名無しさん:2007/03/10(土) 10:48:13
>>361
本当は、ScreenToClientよりMapWindowPointsがお勧め。
まあ、RTL(RightToLeft)環境で動かすようなことは、まずないだろうけど。
MFCのScreenToClient実装は、過去互換の関係で放置してる予感。
あと、GetDlgItemで取るより、メンバ変数に割り当てた方がいい。

>>364
アセンブリコード吐き出させて、頑張って読む。
366デフォルトの名無しさん:2007/03/10(土) 23:02:34
visualC++でプログラム作れるように
なるには、C言語をまず勉強しないといけない
と聞いたのですが、本当ですか?
あとその次にポインタというのを勉強して
それからVisualC++の本買った方が良いというのも
本当でしょうか?

なんか知らないけどどうせならVisualC++でソフトを作ってみたいです。
憧れみたいのがあります。
367デフォルトの名無しさん:2007/03/10(土) 23:15:47
小説を書くにはまず日本語を勉強しないといけないのですか?
みたいな質問だな
368デフォルトの名無しさん:2007/03/10(土) 23:31:20
>>366
C++はC言語+アルファ(語弊あるけど)。
だからC言語を学ぶことは有効だけど
いけないっていうこともないだろうな。

C++って難しい部分もあるから
簡単なところからはじめたほうがいいっていう意味で
先にC言語を学べってことになってしまう。

ポインタは壁にぶつかるやつが多いからな。
ポインタがわからないやつにC++を使わせるのは危険ともいえる。
そもそもC言語を使わせるのも危険だけど
ポインタを理解してからC++をはじめたほうがいいな。
369デフォルトの名無しさん:2007/03/10(土) 23:32:27
>>366
きにすんな。
作っちゃいなよ。
壁にぶつかっちゃいなよ。
370デフォルトの名無しさん:2007/03/10(土) 23:39:58
Visual C++ =
CとC++などのコンパイラ(独自拡張有) +
CとC++の標準ライブラリ(独自拡張有) +
Platform SDK(ただしExpressは別) +
MFCやATLなどMS製のライブラリ +
IDE(デバッガこみ) +
MSDN ライブラリ +
各種ツール

およそこんな感じ
371デフォルトの名無しさん:2007/03/10(土) 23:45:37
>>366
コンパイラの使い方とかデバッグの仕方とかは
ツールによって異なるからな。
バージョンによってメニューとかも多少変わるぞ。

自力で判るとか
友達に手取り足取り教えてもらえるとか
ヘルプをみながら判るやつなら不要だが
初心者はバージョンも合っている解説書的本があったほうがいいな。
372デフォルトの名無しさん:2007/03/12(月) 00:07:58
すまんが聞きたい事がある。フリーソフトでアナログ時計を作って
ベクターに公開しているのだが、ウィンドウズの時計部門の人気順で20位以内に
入っている。オレのプログラミングのレベルはどの位か評価してほしいのだが、頼む。
自分ではVisual C++のレベルが初級を脱した位だと思っているのだが。
373デフォルトの名無しさん:2007/03/12(月) 00:13:54
そんなことわかるわけがない。
良いプログラムが書けるかどうかと人気のあるプログラムが書けるかどうかというのは別問題。
374デフォルトの名無しさん:2007/03/12(月) 00:17:06
人気とプログラミングレベルに相関関係があると思ってるん?
375デフォルトの名無しさん:2007/03/12(月) 02:15:16
ソースアップしてリンク張ってくれれば見るよ
ここだと辛口な意見が多そうだが
376デフォルトの名無しさん:2007/03/12(月) 05:25:50
プログラミングのレベルと人気は必ずしも関係ないでそ。
自分は、どの程度的確に言語仕様を理解しているか、とか、
プロジェクトに適した方法で開発できるか、とか、
そういうことだと思う。

ただ、人気のあるソフトを作れるってことは
良いクリエイターなんじゃないかな。

なんていうかな、Flashとか使えるWebDesignerが、
必ずしもプログラムの技術があるとは限らないっていうか。
377デフォルトの名無しさん:2007/03/12(月) 06:20:07
サイズのでかいのが結構上位に入ってるな
常駐系はサイズが小さいのが常識だと思ってたけど時代は変わっていく
378デフォルトの名無しさん:2007/03/12(月) 17:08:25
非矩形ウィンドウ
システムトレイへの登録
レジストリ操作
多重起動の防止

ぐらい実装していれば中級ではないか
379デフォルトの名無しさん:2007/03/12(月) 19:17:13
コピペでも作れるだろ。そのくらい
380デフォルトの名無しさん:2007/03/12(月) 19:27:50
通信関連のマルチスレッドと低レベルAPI
コピペでやると一発で落ちる
381デフォルトの名無しさん:2007/03/12(月) 19:37:45
非矩形ウィンドウは時計の初歩
382デフォルトの名無しさん:2007/03/13(火) 06:52:32
非矩形ウインドウってまだRegion使ってるの?
383デフォルトの名無しさん:2007/03/13(火) 07:20:51
描画するだけならカラーキー設定して切り抜く
クリック範囲とかなら、リージョン使わないでどうやってるん?
384デフォルトの名無しさん:2007/03/14(水) 17:51:20
画像の処理を行うクラスを作ろうとしています。
メモリDCを確保してビットマップの操作等を行うのですが
その場合は CWnd クラスの派生クラスとする必要があるのでしょうか?
385デフォルトの名無しさん:2007/03/14(水) 18:00:51
ウィンドウハンドルが必要ならメンバに持ってればいいわけだから
別に継承する必要ないだろ
386デフォルトの名無しさん:2007/03/14(水) 18:54:06
DCならCDCが思い浮かびそうなもの
387384:2007/03/14(水) 21:31:57
そもそもDCがよくわかっていません。
メモリDCを確保する際に、CreateCompatibleDC()の引数に
メイン側でGetDC()したポインタを渡せばうまくいくのですが
そうしないでこのクラスだけでCreateCompatibleDC()するには
何を渡せばいいのかわかりません。
NULL だと真っ黒になってしまって・・・
388デフォルトの名無しさん:2007/03/14(水) 21:47:18
なんだ既存のクラスがよくわからない人が作ろうとしてるのか
それだったら1から自分で作れ
389デフォルトの名無しさん:2007/03/14(水) 21:49:35
>>387
CreateCompatibleDCに渡すべきデバイスコンテキストのハンドルを
引数に受け取ればいいだろ。
390デフォルトの名無しさん:2007/03/14(水) 21:59:54
>>389
class GAZOU
{
 void Gazou(CDC* pDC)
 {
  CDC memDC = CreateCompatibleDC(pDC);
  ・・・
 }
}

ダイアログ等
 Gazou gazou(GetDC());
 gazou.hogehoge();

という感じでしょうか?
今の処理はこの通りで、うまく動作しているのですが
これ以外のやり方(CDCのポインタを渡さない)はないでしょうか?
GAZOUクラス内だけで処理できないものかと思っています。
391デフォルトの名無しさん:2007/03/14(水) 22:06:12
>>390
NULLかデスクトップのウィンドウハンドルでDCを用意し
そのDCにコンパチブルなメモリDCを作成するのはどうかな。
出来るかどうか俺は保障しないが。

DCなしでビットマップを操作したいところだがWindowsがそういう仕組みなんで仕方ない。
DCってのは画面用とかプリンタ用とかそれらのコンパチブルなメモリDCなどがあって
ペンとかブラシとかを指定して対象物に描画するときに必須という面倒な代物だな。
392384:2007/03/14(水) 22:25:44
>>391
画像処理クラスにおいて
CWnd* pDesktop = CWnd::GetDesktopWindow();
CDC* pDC = pDesktop->GetDC();
CDC memDC = CreateCompatibleDC(pDC);
・・・
と記述してうまく動作しました。
どうもありがとうございました。
レス頂いた他の皆さんも、ありがとうございました。
よく理解していないため、変な質問で済みませんでした。
393デフォルトの名無しさん:2007/03/14(水) 23:12:32
スクリーン互換のDCなら、CreateCompatibleDCは引数NULLでOK。
あと、ウィンドウからDCを取るときは、必要に応じてCWindowDCかCClientDC使うと楽。
394384:2007/03/15(木) 00:20:23
>>393
ありがとうございます。

CDC memDC;
CBitmap memBmp;

CreateCompatibleDC(NULL);
memBmp.CreateCompatibleBitmap(&memDC, width, height);
memDC.SelectObject(&memBmp);

としてみましたが、どうもモノクロになってしまうようです。
使い方が間違っているのでしょうか?
395デフォルトの名無しさん:2007/03/15(木) 01:57:20
CreateCompatibleBitmapにはmemDCじゃなく392のpDCを渡すのだ。
MSDN - CBitmap::CreateCompatibleBitmapの解説を参照
396デフォルトの名無しさん:2007/03/15(木) 01:59:43
それ以前にCreateCompatibleDC(NULL)の左側が抜けてるな
397デフォルトの名無しさん:2007/03/15(木) 09:51:10
デフォルトでは、素のDCにはモノクロの1x1のビットマップが選択されている
それと互換のビットマップを作ったらモノクロになるのは当然
398384:2007/03/15(木) 22:41:43
>>395-397
なるほど 何となくわかりました。
皆さんのアドバイスを基に、以下のコードに落ち着きました。

CWnd* pDesktop = CWnd::GetDesktopWindow();
CDC* pDC = pDesktop->GetDC();

CDC memDC;
memDC.CreateCompatibleDC(NULL);
CBitmap memBmp;
memBmp.CreateCompatibleBitmap(pDC, width, height);
memDC.SelectObject(&memBmp);
399デフォルトの名無しさん:2007/03/18(日) 15:42:26
【ネガティブ派遣根性チェック】

3つ以上、思い当たる点があればアナタの性格はひん曲がっており、ネガティブ負け組人生を歩んでいます。

□派遣先の人事権のある社員の意見はたとえ間違っていてもマンセーする
□派遣先から「いつまでもここで仕事してくださいね(安い金でw)」と言われて嬉しい
□自社で仕事なんてできるわけがない
□派遣労働の問題点の話題が出ると感情剥き出しにして反論する
□派遣労働の問題を指摘する人は嫌いだ
□派遣先には仕事だけでなくプライベートについてもグイグイ引っ張って欲しい
□奢ってくれる派遣先正社員を尊敬する
□自分の月額金額を知らないのは当然だ、単金を聞いてはいけない
□派遣先正社員より自分の生涯収入が低いのは当然だ
□派遣先に尻尾を振り、いつまでも派遣を続けることが大切だ
400初心者以前です。:2007/03/18(日) 23:46:37
 すみません。教えて下さい。
VisualC++2005ExpressEditionをMSのサイトから
DLして使用したいと考えているのですが、
ズバリ、フリーのデーターベースであるFirebirdと
繋げられるのでしょうか?

やはり製品版でないと無理なのでしょうか?

自分は、単純に初心者向けプログラムである。
CDやDVDの在庫管理アプリを作りたいだけなんですが、
自分の労力以外は、極力フリーで作りたいと思っています。
可能でしょうか?

宜しくお願いします。
401デフォルトの名無しさん:2007/03/19(月) 00:02:40
繋げる意味がよく分からんが、実質フォーマットさえ分かってしまえば作れるんじゃないの?
402400:2007/03/19(月) 00:19:01
>>401

言葉足らずで、すみません。
ただ単に、フリーのDB(FireBird)に基本テーブルやら
履歴テーブルやらを作成して、
そのDBの記録を読み書きさせたいだけです。
403デフォルトの名無しさん:2007/03/19(月) 00:21:43
製品でも繋がるかどうか知らない。
MicrosoftからしてみればフリーのFirebird用の
ライブラリを用意する義理なんてないでしょうし(推測)。

Firebird用のADOがあれば繋がるんじゃい(推測)?
ADO.NETじゃないよ。
あるいはODBC。

実際はDBMS固有の色々あるからすんなり行くか判らんけどね。
404デフォルトの名無しさん:2007/03/19(月) 00:23:51
Visual C++ 2005 ExpressだとATLとかないんだっけ?
ADOはActiveX(COM)だからちょっと大変かもな。
405400:2007/03/19(月) 02:24:40
>>403,404様
本当に、レスありがとうございます。

そうですか、難しいですか・・・。
やはり、SQLServerExpressを使用しないといけない見たいですね。
こちらも、フリーなのですが4G制限等があるからイヤだったんですよねぇ。

実は、図書館レベルとは言わないが、資料がたくさんあるので4Gで収まるか
自信ないんですよねぇ。何件分くらい入るもんでしょうか?
はぁ・・・。
でも、SQLServerExpresとVisualC++2005Expressとの組み合わせなら、
初心者でも簡単にDBアプリ(資料メディア管理アプリ)出来ますでしょうか?
又、DBアプリに関してわかり易いサイトって、MS以外にありますか?
よろしくお願いします。
ちなみに、ググッても分かりませんでした。(検索が悪いとは思いますが)
406デフォルトの名無しさん:2007/03/19(月) 21:27:13
最初は誰でも初心者だけど
それを免罪符にして疑問を○投げって姿勢は良くないお
407デフォルトの名無しさん:2007/03/19(月) 21:35:11
もうSQLiteでいいんじゃね?
408400:2007/03/19(月) 21:58:57
>>406
その通りですね。

>>ALL
取り合えず、初心者なんだからDBは置いといて
C++の勉強から先に始めたいと思います。
ある程度、出来てからまた質問させて頂きたいと思います。

みなさまレスありがとうございまいした。
409日付の罠:2007/03/20(火) 02:35:56
↑にハマっています。

すみません。
単純な日付計算が出来なくて困っています。

dateTimePicker1の日付から、dateTimePicker2の日付の差である。
日付をラベルに出力する方法をお願いいたします。

自分の想像では、

日付変数の宣言
日付変数=dateTimePicker2−dateTimePicker1
ラベル.Text=型変換(日付変数)

だと想像するのですが、HELPにも乗っていません。
ご教授お願いします。
410デフォルトの名無しさん:2007/03/20(火) 03:07:14
日付に罠が仕掛けられていたり、使用法がHELPにのっていないような開発ツールは
使わないほうが良いと思いますよ。
411デフォルトの名無しさん:2007/03/20(火) 03:13:26
dateTimePicker って VB?
412デフォルトの名無しさん:2007/03/20(火) 03:15:14
dotnet
413デフォルトの名無しさん:2007/03/20(火) 03:25:38
>>409
それはC++/CLIかな?それともMscomct2.ocx?
414デフォルトの名無しさん:2007/03/20(火) 03:38:16
C++とC++/CLIの区別がつかず、知らずににC++/CLIを使ってる初心者が増えている。
これはMSの罠だな。
415409:2007/03/20(火) 10:52:25
>>413
レスありがとうございます。
Microsoft Visual C++ 2005 Express Editionを使用しています。
只単に、カレンダー1とカレンダー2との差を表示したいだけです。
例:”期間は、Y年M月D日です。”または、”日数のみ計算でXXX日です。”

C++/CLIが何かさえ分らない自分ですが、よろしくお願いします。

>>414
そうなんですよ。
HELPが分りにくくて・・・理解しにくいし検索もHITしないんです。
なんか、単純計算使用例みたいなのも載ってないっぽいです。
もちろん、頭が悪い自分が一番悪いだろうけどね。
416デフォルトの名無しさん:2007/03/20(火) 11:21:12
>>415
DateTimePickerで検索したら、値を取り出すサンプルが出てきたぞ。
値を取り出すとDateTime型のようだから、DateTime型のメソッドがそのまま利用できる筈なんだが。
417416:2007/03/20(火) 11:23:26
あ、検索したのはMSDNね。
418409:2007/03/20(火) 18:49:03
>>417
レスありがとうです。

でも、理解出来ませんでした。(T_T)
何がどうなっているのやら・・・。

まず、>>409の1行目の予定の
日付変数の宣言方法さえ分りません。
Int型は、市販の書籍に載ってたんですけどねぇ。
お手数ですが、簡単なソースにコメントを書いて頂ければ幸いです。

教えて頂いたサイトから、
「プログラミング チャレンジ スクエア」って言うのも
見つけたんですが、C++は無いのです。
あんな感じのサイトのVisualC++2005ExpressのHPは無いんでしょうか。

宜しくお願いします。
419デフォルトの名無しさん:2007/03/20(火) 18:57:47
そういうやつのためにC#があるんだから素直にそっち使っとけ
420デフォルトの名無しさん:2007/03/20(火) 18:58:45
最早C++/CLIはC++じゃない(と言い切ってもいい位の)存在だから、
C++をやりたいならGUIは一旦横に置くべきだし、GUIをやりたいならC#に乗り換えるべき。
421デフォルトの名無しさん:2007/03/20(火) 21:09:00
2つの日時の値を引き算すると、時間間隔を表すTimeSpan型が返る。
TimeSpan span = dateTimePicker1->Value - dateTimePicker2->Value;

でそのTimeSpanから日の部分だけを取り出し文字列に変換してラベルにセット
label1->Text = span.Days.ToString();

最初はMSDNが理解しにくいのはわかるけど、あれを読めるようにならないと進歩はないよ。
422409:2007/03/21(水) 10:44:52
>>421
ありがとうございます!私にも分りやすいです。
そういう答えが欲しかったんです。m(_ _)m
本当に感謝しています。私にとっては貴方は神です。

>>419,>>420さんの忠告もありがとうございます。
自分が求めているのがC++ではなくC#だと気付かされました。

何より、またこのスレで>>421神に頼るのは心苦しく思います。
C++は、置いといてC#をダウンロードして試してみます。
423デフォルトの名無しさん:2007/03/22(木) 21:29:05
質問があります。
あるデータベース的な2次元vector vecがあって、
性質の違う2つのクラスA,Bからそのvecを参照したり、書き換えたり
したいのですが、そのvecはどんなクラスにしてA,Bからどんな風に
使えばよろしいのでしょうか?

考えた範囲ではvecを静的データメンバにして参照するという方法ですが、
何か「vecはA,Bに含まれるよー」という雰囲気が出せないので他に方法が
あるかのかなぁと思っています。
424423:2007/03/22(木) 21:42:50
追加で質問です。教えてクンですみません・・。
2次元vector(大きさは確定)をデータメンバに持つクラスにおいて、
どうすれば綺麗に初期化すればよいのか教えてください。

考えたのは、以下のとおりです。
Class hogeData{
 std::vector< std::vector<char*> > data;
 hogeData(){
  data.resize(I);
  for(int i=0; i<I ; i++){
   data[i].resize(J);
  }
  // ...dataに代入など
 }
}

気分的には std::vector< std::vector<char*> > data(I,J);
というように一発で初期化したいのですが、クラスのメンバだと
そうもいかず・・。
425デフォルトの名無しさん:2007/03/22(木) 21:47:26
boost::numeric::ublas::matrixとか使った方が良くね?
426423:2007/03/22(木) 22:14:19
>>425 返信ありがとうございます!そんなのもあるんですね。
ぜひ勉強してみます。今ちょっと調べてみたのですが、
vecに対してよく使うことになると思われるsortに関しては、
どうもSTLのvectorの方が速そうです....

ttp://archives.free.net.ph/message/20070223.210148.7ae631a4.en.html
427デフォルトの名無しさん:2007/03/23(金) 22:31:53
Linux環境でgetopt()を使うためにunistd.hをincludeしているソースを、
VisualC++でコンパイルしたところ、unistd.hが見つからないと言われました。
代替になるインクルードファイルはありますでしょうか?
よろしくお願いします。
428デフォルトの名無しさん:2007/03/23(金) 22:40:00
ない
429デフォルトの名無しさん:2007/03/24(土) 00:38:21
無いんですか・・ありがとうございます
430デフォルトの名無しさん:2007/03/24(土) 04:52:12
ほんとかよ、と思ってしまう回答だがはて…
431デフォルトの名無しさん:2007/03/24(土) 06:59:30
getopt()があればどれだけ楽か……
432デフォルトの名無しさん:2007/03/24(土) 08:42:42
CUI環境の話だったらC++スレとかでやってほしい。
激しくどうでもいい
433デフォルトの名無しさん:2007/03/24(土) 08:51:10
GUI環境しか使えない香具師は只単に読み飛ばすということさえ出来ないらしい。困ったもんだ。
434デフォルトの名無しさん:2007/03/24(土) 08:54:59
腐るぐらいスレがあるのにわざわざここで質問するやつの気が知れない。
435デフォルトの名無しさん:2007/03/24(土) 08:57:28
VCだからだろ。
436デフォルトの名無しさん:2007/03/24(土) 09:02:18
Linux依存→依存なしの移植だろ
VC関係ない
437デフォルトの名無しさん:2007/03/24(土) 09:33:42
getopt()だからLinux依存じゃないぞ。VCがPOSIX準拠してないのが問題なんだ。
438デフォルトの名無しさん:2007/03/24(土) 09:35:20
>unistd.hをincludeしているソースを

uniって何の略?
439デフォルトの名無しさん:2007/03/24(土) 09:40:06
>>438
少なくともLinuxの略ではないな。
440デフォルトの名無しさん:2007/03/24(土) 09:42:19
初心者だったら基本やってりゃいいんだよ
実力もないのにややこしいことやろうとすんな

1 初心者には無理だから素直にあきらめる
2 初心者卒業してからやる
3 教えてくれるまで暴れる
441デフォルトの名無しさん:2007/03/24(土) 09:51:59
と、実力もないのに初心者を脱出したと思い込んでいる>432=434=436=438=440が申しております。
442デフォルトの名無しさん:2007/03/24(土) 09:57:07
>>439
unix standardって感じか? システムコール系の関数が詰まってるね。 
443デフォルトの名無しさん:2007/03/24(土) 13:49:52
自分が答えられそうにもないCUI系の質問が来るだけで
火病起こす奴ってなんなの?
444デフォルトの名無しさん:2007/03/24(土) 21:47:01
openFileDialogのOKボタンが押されると、c_printfuncにファイル名を渡して
呼び出し、その関数の内部でファイル名を標準出力したいです。
以下のようにしているのですか何も出力されません。
どこが間違ってるのでしょうか・・?

--------------------
[openFileDialogのOKボタン押された時]
private: System::Void openFileDialog1_FileOk(System::Object^ sender,
 System::ComponentModel::CancelEventArgs^ e) {
 String^ fname;
 if (openFileDialog1->ShowDialog() == System::Windows::Forms::DialogResult::OK) {
  fname = openFileDialog1->FileName;
  c_printfunc(fname);
 }
}
----------------------
[c_printfunc.cpp]
#include "stdafx.h"
#include <stdio.h>
int c_printfunc(char* fname) {
 printf("%s\n", fname);
 return 0;
}
445デフォルトの名無しさん:2007/03/24(土) 22:03:30
すみません今リブルドしたところ、エラーが出ていました
1>f:\documents and settings\(省略)\Form1.h(485) : error C3861: 'c_printfunc': 識別子が見つかりませんでした
446デフォルトの名無しさん:2007/03/24(土) 22:17:51
なんどもすみません
openFileDialogの中からどうやってc_printfuncを認識させるのでしょうか?
今日始めたばかりでわけわかめ状態です;;
447デフォルトの名無しさん:2007/03/24(土) 23:11:19
質問とは関係ないけど
そういえばアウトプットウインドウにデバッグストリング出力する機能があったな
デバッガばっかり使ってて存在自体を忘れてた
448デフォルトの名無しさん:2007/03/25(日) 00:48:25
だからCUIというかソースレベルの質問はスレ違いだって
過去スレ見ればわかるだろ
ここはVisualCの機能や使い方を答える程度のレベルのスレなの
449デフォルトの名無しさん:2007/03/25(日) 00:56:51
>>1も読めない初心者未満が何か言ってる
450446:2007/03/25(日) 10:16:58
関数プロトタイプを記述することで自己解決しました
お騒がせしました
451デフォルトの名無しさん:2007/03/25(日) 14:09:16
ダウンロードするのに住所や電話番号を登録するようですが、
何か連絡が来ることってあるんでしょうか?
452デフォルトの名無しさん:2007/03/26(月) 10:22:46
無いよ
453デフォルトの名無しさん:2007/03/30(金) 01:52:44
#include <stdio.h>
main()
{
printf("文字表示のテスト");
}

これを実行した時に、F5(デバッグあり)で実行すると
すぐにウィンドウが閉じてしまいますが
ctrl+F5(デバッグなし)で実行すると、ウィンドウが表示されたままに
なるのは何故なんでしょうか。

また、DOS窓でなく、通常のウィンドウへの描画は
どのような手順で行うのが簡潔でしょうか。
454453:2007/03/30(金) 01:56:21
環境はVC++8.0ですが、学習のためにCの記述をしています。

また、8.0以前のサンプルを開こうとした時に、変換を行った後
そのソリューションを実行するにはどうすればいいでしょうか。
455デフォルトの名無しさん:2007/03/30(金) 04:26:58
#include <conio.h>
を追加して

}の前にgetch();追加で
キー一回押すまで進行停止が出来るよ
456デフォルトの名無しさん:2007/03/30(金) 06:19:55
>453
裏で別のプログラムが面倒みてくれてる
457デフォルトの名無しさん:2007/03/30(金) 07:36:32
>>455

cinのがよくね?
458453:2007/03/30(金) 07:55:11
すみません、自分で読み直してみて、一度に質問を書き込みすぎました。
でも、皆さん親切に教えていただけるので、とても嬉しいです(;;)
459デフォルトの名無しさん:2007/03/30(金) 09:04:24
微妙に回答のポイントがずれてる希ガス
460デフォルトの名無しさん:2007/03/30(金) 10:36:22
じゃ、簡潔に。

>ctrl+F5(デバッグなし)で実行すると、ウィンドウが表示されたままに
>なるのは何故なんでしょうか。
仕様です。

>また、DOS窓でなく、通常のウィンドウへの描画は
>どのような手順で行うのが簡潔でしょうか。
WinAPIを使えばできますが、その為には先ず一通りCの知識が必要になります。
461デフォルトの名無しさん:2007/03/30(金) 10:40:20
EEなら該当スレみつけてSDKインストール
462デフォルトの名無しさん:2007/03/30(金) 10:50:54
>また、DOS窓でなく、通常のウィンドウへの描画は
>どのような手順で行うのが簡潔でしょうか。

まとめると
(1)MicrosoftのサイトからPlatformSDKをダウンロードしてインストール
  (これでWin32APIを使うことができる)
(2)ウィンドウ作成
  (Win32APIはmainの代わりにWinMainを使う)
(3)ウィンドウに文字を出力
463デフォルトの名無しさん:2007/03/30(金) 11:07:35
>通常のウィンドウへの描画は...

通常のウィンドウをどうやって作るかにもよるんだけど
1. Win32(C or C++)
  基本だけど全てを自分でやる必要がある。
2. MFCアプリ(C++)
  MFCが多くのことをやってくれるけど、構造の理解に時間がかかる。
3. CLRのWindowsフォームアプリ(C++/CLI)
  上の二つとは異質だけど初心者には楽。いわゆるドットネット。

他にも選択肢はあるけど、普通はこの3択。誘導される前のスレッドを見る限り
VC8EEなんだろうな。その場合2は選択できない。1を選ぶなら>>462で。
プロジェクトの変換については情報不足杉。
464デフォルトの名無しさん:2007/03/30(金) 11:27:54
>>463
MFCアプリ(C++)、CLR(C++/CLI)になってるけど、
この二つは、C言語形式で書けないの?
勉強中でよくわからない・・・
465デフォルトの名無しさん:2007/03/30(金) 11:40:54
MFCの場合、自分のロジックはCと互換性のある書き方もできるけど、
WindowsとのI/FはC++でないとコンパイルできない。

CLRの場合、最早Cと互換性を持たせることが無意味。
何故なら、文字列から日付け処理からメモリ管理から何もかも流儀が全て違う。
466453:2007/03/30(金) 16:51:55
ありがとうございます、通常のウィンドウへの描画は
WindowsのAPIを使ってみることにします。
まだ、ポインタもわかってないので(というか勉強がまだなので)
地道にCの言語仕様を学んだ後で、SDK取りに行きます。

バージョンの古いサンプルが開けない、というのは
恐らくツールの使い方がわかっていないだけだと思うので
もう少し自分で頑張ります。
467デフォルトの名無しさん:2007/03/30(金) 23:25:52
そのレベルなら1年は覚悟した方がいいよ
468453:2007/03/31(土) 00:20:45
かかるかもしれないですね。でも、正直そこまで時間はかけたくありません。
地道にひとつずつ習得する以外方法はないと思いますが、

例えば、「ブロック崩し」を作りたい、という目的がある、とした場合に
どの道筋が適切かご指導いただけるとありがたいです。
ちなみにお察しの通り環境はVC8のEEです。
469デフォルトの名無しさん:2007/03/31(土) 00:25:11
C#でもやれば?
Javaだと某有名プログラムがあることだし、フラッシュも最近増えてきたけど。
470デフォルトの名無しさん:2007/03/31(土) 16:50:42
別の環境で作ったソースをVCで編集しなきゃいけないんですが、
フォルダ構成を元のままVCで作業するにはどうしたらいいでしょうか?

新規プロジェクトを作ってみたら
ソースもヘッダも全部同じフォルダにできてしまうみたいで・・・

フォルダの設定とかありませんか?
471デフォルトの名無しさん:2007/03/31(土) 17:25:30
好きなようにできるだろ
472デフォルトの名無しさん:2007/03/31(土) 17:59:47
できてしまう、って何でソースやヘッダを作る必要があるんだ?
もうソースはあるんだろ?
473デフォルトの名無しさん:2007/04/01(日) 12:46:41
VC6.0でWIN32API(SDK?)で開発しています

エディットコントロールで文字列を追加したときに、自動でスクロール
させたいのですがうまくいきません(文字列の追加はできてます)。

CreateWindowExで指定しているウィンドウスタイルは次の通りです。
 WS_CHILD | WS_VISIBLE | WS_BORDER | WS_VSCROLL |
 ES_AUTOVSCROLL | ES_LEFT | ES_MULTILINE | ES_READONLY,

文字列周りは、このようにしています。
 SetWindowText(hEdit, "起動\r\n(^-^)\r\n");
 SendMessage(hEdit, EM_SETSEL, 0, -1);
 SendMessage(hEdit, EM_SETSEL, -1, -1);
 SendMessage(hEdit, EM_REPLACESEL, 0, (LPARAM)"(@-@)\r\n");
 SendMessage(hEdit, EM_REPLACESEL, 0, (LPARAM)"(T-T)\r\n");
 SendMessage(hEdit, EM_REPLACESEL, 0, (LPARAM)"orz\r\n");
 SendMessage(hEdit, EM_SCROLLCARET, 0, 0);

ネットで調べたところ、ES_AUTOVSCROLLやEM_SCROLLCARETがあれば勝手
にやってくれそうなんですが…
どうすれば自動でスクロールし追加した文字列部分が表示されるように
なるのか、教えて下さい。
474デフォルトの名無しさん:2007/04/01(日) 14:03:10
EM_SCROLLCARET
これでわざわざスクロールしてるような気がする
475デフォルトの名無しさん:2007/04/01(日) 17:29:35
>>473の文字列追加した後で、別のルーチンから文字列追加を大量に
行ったら、ちゃんとスクロールしてくれました。
>>473の処理はEM_SCROLLCARETの一行をコメントにしても変わらず…
なにか条件があるんでしょうか…
476デフォルトの名無しさん:2007/04/02(月) 12:02:01
>>468
ブロック崩しを作りたいなら
@まず持ってるVCの基本操作を覚える(プロジェクト作成の仕方、コンパイルの仕方、実行の仕方、
 できればブレークポイントを使った基本的なデバッグ手法やコンパイルオプションの違い等も。)
ACを覚える(基本文法・関数・ポインタ等。これはどんなCプログラムが作りたかろうが全ての人が通る道。)
BWin32APIに触ってみる(ウィンドウを使ったプログラムの作成。)
Cグラフィカルなプログラムを作ってみる(GDIを使うorDirectXを使う。どっちでもお好きに。)
Dブロック崩しを作ってみる(ゲーム特有のアルゴリズム・当たり判定や入力制御等を学ぶ)

酷く大まかだけどこんな感じでいいんじゃないでしょうか。
ちなみにかかる時間はAが一番長くなると思います。
477デフォルトの名無しさん:2007/04/03(火) 01:18:00
嘘だ、絶対4だ。
478デフォルトの名無しさん:2007/04/03(火) 08:14:48
でも挫折するのはたいてい3じゃないか?
479デフォルトの名無しさん:2007/04/03(火) 10:05:53
M$と相性が合わないなら(1)で挫折するはず
480デフォルトの名無しさん:2007/04/03(火) 12:02:09
ゲームは昔から出来合いのゲームのソースをいじりながら覚えたもんだが
BASIC限定だったのかもしれないな
481デフォルトの名無しさん:2007/04/03(火) 12:34:05
basicでゲームやったことありますとか言い出すやつは使いものにならない。
たとえそういう経験あったとしても黙っておくもの
482デフォルトの名無しさん:2007/04/03(火) 12:57:19

      < ワタシ ヲ ヨンダ??
  ●/ 
<■
/  >
483デフォルトの名無しさん:2007/04/03(火) 13:59:52
>>481
そういう話じゃないでしょ。
既存のソースの改造から始めるのはどうかという話では。
484デフォルトの名無しさん:2007/04/03(火) 14:17:17
いきなり改造から始めるなんて聞いたことがない。
VCの場合コードの量が半端じゃないし、
他人の書いたコード読んで仕様まで理解できたら相当なレベルだと思う。
初心者レベルだとビルドできなくて投げ出すのがせいぜい。
485デフォルトの名無しさん:2007/04/03(火) 14:25:47
いやだからBASICの話でしょ改造なのはw
486デフォルトの名無しさん:2007/04/03(火) 14:48:20
昔はね。
今でも新しいことやるのはサンプルソースからやるけど。
487デフォルトの名無しさん:2007/04/03(火) 14:51:03
  ┏┳┳┓     ハイ.     ┏┳┳┓
┏┫┃┃┃     雑談は   ┃┃┃┣┓
┃┃┃┃┣┓   ここまで.┏┫┃┃┃┃
┃      ┃┃┏━━━┓┃┃      ┃
┃ 雑談   ┣┫ . ・∀・ ┣┫. STOP!┃
┗━━━━┛┗┳━┳┛┗━━━━┛
            ┏┻┓┃
        ┏━┛  ┣┻┓
        ┗━━━┫  ┗━┓
             ┗━━━┛
488デフォルトの名無しさん:2007/04/03(火) 21:53:49
  ┌┬┬┐     ハイ.     ┌┬┬┐
┌┤│││     雑談は   │││├┐
││││├┐   ここから.┌┤││││
│      ││┌───┐││      │
│ 雑談   ├┤ . ・∀・ ├┤ START.!!│
└────┘└┬─┬┘└────┘
            ┌┴┐│
        ┌─┘  ├┴┐
        └───┤  └─┐
             └───┘
489デフォルトの名無しさん:2007/04/03(火) 23:58:42
初心者なんですが、どうしても分からない事があります。お教え頂けないでしょうか?
 フックプロシージャで、VK_DOWNをVK_TABに変換しているのですが、PostMessageだとうまく行くのに
SendMessageに変えると動作しません。
 ソースは次のようなものです。

static LRESULT CALLBACK OnKeyHook( int nCode, WPARAM wparam, LPARAM lparam )
{
if( nCode < 0 )
return CallNextHookEx( HHook, nCode, wparam, lparam );

UINT msg;
if( lparam & 0x80000000 ){
msg = WM_KEYUP;
}else{
msg = WM_KEYDOWN;
}
switch( wparam ){
case VK_DOWN:
PostMessage( GetFocus(), msg, VK_TAB, lparam );  ←ココです。
return TRUE;
default:
...
break;
}
return CallNextHookEx( HHook, nCode, wparam, lparam );
}

 VK_UP を SHIFT + VK_TAB に変換するのに SetKeyboardState を使いたいので、SendMessage で
行いたいので困っています。
 私の知らない何かがあるのでしょうか? 
 どうかご教授下さい。よろしくお願い致します。
490デフォルトの名無しさん:2007/04/04(水) 01:25:54
あまり詳しくないけどSendMessageはメッセージキューを経由しない
(TranslateMessageを通らない)のでWM_KEYDOWNのSendでは
WM_CHARが発生しないとか何とか。

↑↓でフォーカス移動をするだけなら、キーボードイベントを捏造するより
WM_NEXTDLGCTLをポストしたほうが楽だと思う。
491デフォルトの名無しさん:2007/04/04(水) 12:02:54
MessageBoxみたく、手軽に小さいウィンドウを出して
ユーザに文字列を入力させたいんですが、そういう関数ってありますか?
492デフォルトの名無しさん:2007/04/04(水) 12:28:47
>>491
DialogBox
493デフォルトの名無しさん:2007/04/04(水) 12:36:55
>>492
素早い返答thx!!!
494デフォルトの名無しさん:2007/04/04(水) 12:40:06
どういやDialogBoxと自分でウィンドウ作るのとどう違うんだろう・・・
495デフォルトの名無しさん:2007/04/04(水) 12:44:21
>>494
ダイアログテンプレート以外の違い?
モーダルとモードレスで違うべ。
モードレスは自分で作る場合に近いな。

自分でメッセージループ持たせてモーダルにすることもできるけど。
496デフォルトの名無しさん:2007/04/04(水) 15:14:21
>>490さん
ありがとうございます。SendMessageはあきらめました。

ところで WM_NEXTDLGCTL ってダイアログでしか使えないんでしょうか?
今ダイアログを使ってなくて、普通のフォームのEDITとかCreateWindowで貼り付けてる状態で、
WM_NEXTDLGCTLは効かないみたいなんです orz


>>494さんの疑問は私も悩んでいる点です

初心者でいっぺんにいろいろ覚えられないので、とりあえずダイアログを使わずにフォームをゴリゴリ
書いて、きつくなってきた所でダイアログの恩恵にあやかろうという方針を立てていました。

でも、そもそもの使用目的が違うような気がしてきて、にもかかわらず、その辺りの指針がはっきり
せず、すっきりしません。

皆さんはどういう基準で使い分けられてるんでしょうか。
497デフォルトの名無しさん:2007/04/04(水) 18:09:55
今思ったんですが、普通のウィンドウとDialogの違いってメニューを付けられるかどうかじゃないでしょうか?

普通のウィンドウ、Dialog ともにモーダル、モードレスにできるし、どれで始めて、どう遷移していけばいいか
迷うんですけど...

ひょっとしてDialogにもメニュー付けられたりして OTL
498デフォルトの名無しさん:2007/04/04(水) 18:27:22
たしか付けられるはず。
499デフォルトの名無しさん:2007/04/04(水) 18:37:25
基本的にダイアログテンプレートを使うか使わないかでわければいいじゃん
500デフォルトの名無しさん:2007/04/04(水) 20:37:30
ウィンドウには色々なスタイルがあって、
その中の一部分をダイアログと呼ぶ、というだけ。
てか、ダイアログをメインウィンドウにした方が
色々と楽だと思うのは俺だけ?
501デフォルトの名無しさん:2007/04/04(水) 20:41:57
>>496
ダイアログ以外では使えないと思う。
MFCのCFormViewなどでは通常のウィンドウの上にモードレスダイアログを貼り付けて
ダイアログリソースを利用しているので WM_NEXTDLGCTLも動く。

VistaのUIのガイドラインではウィンドウ全体を表示するためにスクロールバーを必要とする
ダイアログは使うな。ダイアログはメニューバーやステータスバーを持つな。となってるけど
ユーティリティのようなトップレベルウィンドウがダイアログの場合は除くとなっている。

トップレベルウィンドウをダイアログにするか、通常ウィンドウにするかの基準は、ざっと見た限りは
見つからなかった。
ttp://msdn.microsoft.com/library/default.asp?url=/library/en-us/UxGuide/UXGuide/Windows/DialogBoxes/DialogBoxes.asp
502デフォルトの名無しさん:2007/04/04(水) 20:45:04
>>496
IsDialogMessageでを使えるようにならない?
503デフォルトの名無しさん:2007/04/04(水) 20:45:13
あと、ウィンドウクラスが #37770 じゃ困ることもあるべ
504デフォルトの名無しさん:2007/04/04(水) 20:46:34
>>498
メニュー簡単に付きました orz

>>499
ですよね

現在ダイアログに傾倒して行ってるところです。
できれば全部これでやりたいと思い初めています。メイン画面から全部。

でもどのサンプルを見ても通常フォームから始まってるんですよね...

ダイアログでは実現できない事って、例えばどんな事なんでしょうか。

505デフォルトの名無しさん:2007/04/04(水) 20:47:02
>>503
ダイアログでもウィンドウクラスを指定できる。
指定したときには、そっちになり#37770にはならない。
506デフォルトの名無しさん:2007/04/04(水) 20:51:03
WM_PAINTとかWM_CHARとかウィンドウそのものに関するメッセージを使うときには
普通のウィンドウにして、ダイアログにしない気がする。
あと、501のとおりメニューやスクロールバー、ステータスバーが付くときも
ダイアログは使われていないと思う(でもたしかにユーティリティでは見かけたことある)。

505みたいにどっちつかずな面もあるけど。
507デフォルトの名無しさん:2007/04/04(水) 20:58:21
>>500
私もメインウィンドウをダイアログで行こうと考えています。

>>501
ありがとうございました。指針を示して頂いて、安心しました。
MSDN英語で読めるっていいですね。私はMSDN日本語でも頭がぐるぐるしてくるんです。

>>496
だめでした。

>>503
ダイアログのWM_CREATE(?)から CREATESTRUCT は取れるんですか?
508デフォルトの名無しさん:2007/04/04(水) 21:01:26
まちがえました。

>>502
IsDialogMessageをメッセージループに入れてもだめでした。
509デフォルトの名無しさん:2007/04/05(木) 00:50:55
ダイアログをメインフォームにしようとしているのですが、分からない事が出てきました。

DialogBoxParam でモーダル起動した場合、メッセージループが内部にあるから IsDialogMessage を組み込めないと
思うのですが、何か方法があるのでしょうか?

CreateDialogParam でモードレスダイアログを作って、メッセージループを準備するのが正しいやり方なのでしょうか?

どうかお教え下さい。よろしくお願いします。
510デフォルトの名無しさん:2007/04/05(木) 01:42:26
ModalならIsDialogMessageは必要ないだろ
511デフォルトの名無しさん:2007/04/05(木) 02:11:46
2個スレッドを作って、一つでユーザーインターフェースの処理
でもう一方で計算をさせたいと考えてます。
で、AfxBeginThreadと制御関数でマルチスレッドぽくはできました。
ただ、計算の進歩状況の表示や中断をさせられません。
今のところボタンをクリックされた後イベントハンドラ中で
while文を回して進歩状況を表示していて意味がないんです。
ユーザー インターフェイス スレッド?を作れば一つは解決ですか?
512デフォルトの名無しさん:2007/04/05(木) 02:27:39
>>510
本当だ!IsDialogMessage を入れないと TAB キーが使えないのかと思ってました。
ありがとうございます。
513デフォルトの名無しさん:2007/04/05(木) 02:43:43
ウィンドウ登録、作成、メッセージループをダイアログに任せるだけで、こんなにもソースがすっきり!VBみたい
しかもコントールをXP風にできました。
うれしいです (↑∇↑) ありがとうございました。
514511:2007/04/05(木) 05:12:06
ようするに、
WinMain()に別のスレッドから進歩状況を伝えて
イベントを起こして表示させる方法を教えてください。
ということだったんですが、今もう一度探したら
PeekMessage()というのを見つけました。
どうも自分が行わせたい処理はマルチスレッドを使わなくても
よいように思うんでPeekMessage()を使ってみます。

できたあとの話になるんですが、処理にかかった時間を計測とか
できるんでしょうか?関数の実行に要した時間なんですが…
515511:2007/04/05(木) 05:26:52
timeGetTime見つけました。


スレ汚し申し訳ない…
516デフォルトの名無しさん:2007/04/05(木) 05:30:31
>>514
皆さん寝てるんじゃないですか。

スレッドは以前覚えたんだけど...確かセマフォとかミューテックスとかあってご要望の事もできる筈だけど
使わなかったので忘れましたヾ(≧▽≦)ノ

明日の夜ぐらいにはエロいひとが来て、答えてくれるんじゃないかなぁ。
とりあえず ↓ に目を通しておかれたらいいかも。

http://www2m.biglobe.ne.jp/~yasutaka/intro/no_99.htm

関数の実行に要した時間は簡単にとれると思うけど...
517デフォルトの名無しさん:2007/04/05(木) 05:48:31
>>505
ダイアログにウィンドウクラスを指定する方法を是非ともお教え下さい。お願いします┏○
518デフォルトの名無しさん:2007/04/05(木) 08:03:06
519デフォルトの名無しさん:2007/04/05(木) 20:08:04
>>518
ありがとうございます ┏○
520デフォルトの名無しさん:2007/04/05(木) 20:40:11
 COM(ActivX?)が良く分かりません。以前VBでコントロール作ったり、ActiveX.Exe,ActiveX.Dllを作ったぐらいで...
 将来的にやりたい事は、以下の2つです。できればMFCなしで行いたいんです。

1.ブラウザ上に貼り付けて利用するもの。
2.DirectX,DirectShow がComベースらしいので理解したい。

 疑問点は以下の2つです。

1.MFC使わずにATL だけで実現可能でしょうか?
2.VS.NET 2003 で作成できるのでしょうか?(No Managedで)
  今まではVC6の ATL COM AppWizard で作成してたんですが、VS.NET 2003 ではどの AppWizard で作ればいいのか
  分かりません 。

 どうかよろしくお願いします。
521デフォルトの名無しさん:2007/04/05(木) 21:21:17
┏  ・:∴○ ドシュッ
522デフォルトの名無しさん:2007/04/06(金) 04:01:26
520ですが、1は自己解決しました。

VC付属の OLE VIEWER で右クリックしたらHTML用にOBJECTタグを作ってくれて、ブラウザ上で動作しました。
ろくに試しもせずに質問してしまい、申し訳ありませんでした。
523デフォルトの名無しさん:2007/04/06(金) 10:45:33
聞きたいことがあったんだけど、レス書いてたら答えに気づいたw
524デフォルトの名無しさん:2007/04/06(金) 18:07:19
そういうことって結構あるよ。
文章にするというのが軽く気分転換になっていると思う。
525デフォルトの名無しさん:2007/04/07(土) 12:09:26
すみません。

変数の定義(int型)をmainメソッドの中の中間あたりで行うと
「そのような識別子はありません」とエラーが出てしまうんですが
(定義をmainの先頭に持ってくるとエラーが出なくなります)
なぜなんでしょう。先頭と中間での定義の間で
printf、scanf、while関数等を使っているんですが、何か関係がありますか?
526デフォルトの名無しさん:2007/04/07(土) 12:14:54
>>525
言語は何?
古いCでは変数宣言はブロックの先頭にある必要がある。
#勿論、ブロックの先頭ならよいので以下の例は問題ない。
int main()
{
printf("foo\n");
{
int foo = getchar();
printf("%c\n", foo);
}
return 0;
}

どうでもいいが、while関数なんてものは無いし、
一般的にcではメソッドとは言わない。用語は間違わないように。
527デフォルトの名無しさん:2007/04/07(土) 12:23:03
知ってるけどスレ違いだから教えてやらない
528デフォルトの名無しさん:2007/04/07(土) 12:29:35
そうなんですか、ちなみに言語はCですね。失礼しました。
getch()等が「古い型」だと注意されるのはなんだろうと思っていましたが。

ブロックを設けて先頭へ記述するようにします。
用語も適当に使っていました。
529デフォルトの名無しさん:2007/04/07(土) 12:29:56
まさか

printf("%d", a);
int a;

なんてやってるオチでは…
530デフォルトの名無しさん:2007/04/07(土) 12:31:23
>>526
インデントぐらいつけなよ
531デフォルトの名無しさん:2007/04/07(土) 12:51:13
あー、普段はエディタが勝手にインデントするし、どうせ見えないと思って割愛した。許せ。
532デフォルトの名無しさん:2007/04/08(日) 18:03:44
自動コード整形のパターンってカスタマイズできるんでしょうか?
533デフォルトの名無しさん:2007/04/08(日) 20:30:36
2chにソース張ること自体ねぇ・・・
どっか引っ越そうぜ
534デフォルトの名無しさん:2007/04/08(日) 22:01:23
int main() {
    using std::vector;
    typedef std::vector<int>::size_type vec_sz;

    vector<int> Integers;
        int    Integers_num = 112,   Integers_max = 100,     Integers_min = 0 ;
        make_randnums( Integers, Integers_num, Integers_min, Integers_max);    
    vector< vector<int> > Devided;
        vec_sz Devided_num = 4;
        Devided.resize( Devided_num );
        vec_sz Dev_contents_num = Integers.size() / Devided_num ;
        for ( vec_sz i = 0; i < Devided_num - 1 ; i++ )
            Devided.at(i).resize( Dev_contents_num );

        vec_sz last_num = Integers.size() - ( Devided_num - 1 ) * Dev_contents_num;
        Devided.back().resize( last_num );

        if ( Integers.size() ==
            ( Devided.size() - 1 ) * Devided.at(0).size() + Devided.back().size() ) {
            }else exit(1);
        std::sort( Integers.begin(), Integers.end() );
        std::reverse( Integers.begin(), Integers.end() );    

        vector<int>::iterator
            start_ptr    = Integers.begin(),
            end_ptr        = start_ptr ;
        for ( vec_sz i = 0; i < Devided.size(); i++ ) {
            std::copy( start_ptr, end_ptr += Devided.at(i).size(), Devided.at(i).begin() );
            start_ptr += Devided.at(i).size();
        }
    return 0; }
535534:2007/04/08(日) 22:05:10
このプログラムは某入門書の例題でヘタレの俺なりの回答案です
80行以上あったプログラムがコメントとか{}消したら1レスに収まっちゃったわけですが
コレって元の書き方が悪いんですかねぇ?
536デフォルトの名無しさん:2007/04/08(日) 22:07:06
勿論全体ではなく一部なんですが
それでも80超行が30行ちょっとってのは無いでしょうってことです
537536は535=534です:2007/04/08(日) 22:07:45
すみません
538デフォルトの名無しさん:2007/04/08(日) 22:08:20
激しく読みにくくてウザい
539デフォルトの名無しさん:2007/04/08(日) 22:11:33
ゴミ
540デフォルトの名無しさん:2007/04/08(日) 22:23:15
>>534
コメントは消すなよw
541デフォルトの名無しさん:2007/04/08(日) 22:32:43
こういうのだったら消していい。
int i; /*ループ変数*/
542デフォルトの名無しさん:2007/04/08(日) 22:37:41
良いプログラムとは、コードよりコメントの行数の方が多い
543デフォルトの名無しさん:2007/04/08(日) 22:54:13
ん?
元のソースはわからないけど
これよりはマシだったんだろうなぁと思う。
544デフォルトの名無しさん:2007/04/09(月) 14:18:52
良いプログラムとは、コード自体がコメントのように読める
545デフォルトの名無しさん:2007/04/09(月) 14:24:59
良いプログラムとはコードのないプログラム
546デフォルトの名無しさん:2007/04/09(月) 14:42:14
良いプログラムとは、ドキュメントだけでコードが理解できる ( ・`ω・´)ノ
547デフォルトの名無しさん:2007/04/09(月) 15:18:10
それは読んでる人の性能がいいだけじゃ・・・
548デフォルトの名無しさん:2007/04/09(月) 15:26:57
学習用の過程で作ったものだったら
それこそ8割がコメントとかでもいいんじゃないの?
コメントに表現しようとあれこれ考えるのも理解の助けになるし
549デフォルトの名無しさん:2007/04/09(月) 17:44:31
8割コメントって、学生かい ( ・ω・)
一応、クラス3分、関数30秒(=4行くらい)
で、読み終わる程度がいいとされてる
限られたスページと時間で、どれだけ理解させるかが文章力だ m9( ・`ω・´)

仕様100ページもあったら、結局何書いてるか分からんし
マニュアルも全部読まないでしょ、バージョン上がったらゴミになるし
550デフォルトの名無しさん:2007/04/09(月) 17:46:33
>仕様100ページもあったら、結局何書いてるか分からんし

・・・
551デフォルトの名無しさん:2007/04/09(月) 18:03:46
Boostのビルドも出来ん雑魚はほっとけ
552デフォルトの名無しさん:2007/04/09(月) 19:48:20
仕様書以外に何が用意されているかが問題だな。
サンプル一切無しなら死ねる。
553デフォルトの名無しさん:2007/04/10(火) 16:10:07
どれだけコードを綺麗に区切ってまとめられるかと、
それにどれだけ適切なコメントをできるかが
勝負の分かれ目

コメントは付けりゃいいってもんじゃない
8割コメントはちょっとアホだろ・・・w
場合によるけどさ
554デフォルトの名無しさん:2007/04/10(火) 20:28:35
ここって結構底辺なのなww
555 ̄ ̄ ̄V ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄:2007/04/10(火) 21:08:38
       _____
      /::::::::::::::::::::::::::\                  _
     /::::::::::::::::::::::::::::::::::::::\             /  ̄   ̄ \
     |:::::::::::::::::|_|_|_|_|           /、          ヽ
     |;;;;;;;;;;ノ   \,, ,,/ ヽ          |・ |―-、       |  きみ頭だいじょうぶ?
     |::( 6  ー─◎─◎ )          q -´ 二 ヽ     |
     |ノ  (∵∴ ( o o)∴)         ノ_ ー  |     |
   /|   <  ∵   3 ∵>          \. ̄`  |      /
   ::::::\  ヽ        ノ\           O===== |
   :::::::::::::\_____ノ:::::::::::\        /          |
556デフォルトの名無しさん:2007/04/11(水) 12:22:23
それがくだすれのくだすれたる所以
557デフォルトの名無しさん:2007/04/15(日) 09:36:39
class Fred;
typedef auto_ptr<Fred> FredPtr;
class Fred{
public:
static FredPtr create() throw(bad_alloc);
static FredPtr create(int i) throw(bad_alloc);
static FredPtr create(const Fred& x) throw(bad_alloc);
virtual void goBowling();
private:
Fred(int i=10) throw();
Fred(const Fred& x) throw();
int i_;
};
FredPtr Fred::create() throw(bad_alloc)
{ return new Fred(); }

FredPtr Fred::create(int i) throw(bad_alloc)
{ return new Fred(i); }

FredPtr Fred::create(const Fred& x) throw(bad_alloc)
{ return new Fred(x); }

void Fred::goBowling(){
std::cout << this->i_;
}
Fred::Fred(int i) throw() : i_(i){}
Fred::Fred(const Fred& x) throw() : i_(x.i_){}
void sample()
{
FredPtr p(Fred::create(5));
p->goBowling();
}
558デフォルトの名無しさん:2007/04/15(日) 09:37:49
C++QAにあるソースなんですが、
p->goBowling();でアクセス違反が起こります。

なんで?
559デフォルトの名無しさん:2007/04/15(日) 21:24:47
元々は正社員だったのに取引先にフリーのほうが稼げるとか騙されて
結局派遣やってるバカがいるんだけどw
なんか派遣先といい関係、とか言ってたから思わず吹き出しちゃったよw
最近はマネージャーもやってるとか寝言言ってるし、派遣がまねぇじゃぁ?はあ!?w

そもそも信頼されてるなら直接契約するか正社員にするはずだが、
いつでも切れる派遣会社経由って舐められてんだよ

派遣期間が長くならないうちに早く就職しろ、と忠告したら、ウッキー!って逆ギレw
バカで頑固だから何度言っても理解できない
騙されたとはいえ結局は自分で決めて派遣やってる癖に逆ギレしちゃってまぁ
人間として本当に恥ずかしい
560デフォルトの名無しさん:2007/04/15(日) 22:34:31
そうか、とりあえずスレタイ読み直せ。
561デフォルトの名無しさん:2007/04/17(火) 17:01:15
>>559
派遣と言ってもいろいろあるんだけど知らんのか?
数十人の派遣プログラマがいればマネージメントする人間も当然必要になる
だろ。その人間は責任を負うと同時に給与も高いって仕組み。

派遣は確かに「いつでも切れる」存在ではあるけど、切るためにはそれなり
の理由が必要だし、むやみに切れば信頼関係が損なわれて派遣を採用する
会社側にも損失はあるんだよ。

そもそもお前のそのレスから簡単にプロファイリングするに、
お前自身がちょっとどうかと思う人間に見えるわけだが…。
562デフォルトの名無しさん:2007/04/17(火) 17:03:00
よくみかけるコピペだけど
563デフォルトの名無しさん:2007/04/17(火) 17:12:48
>>562
そうなの?俺ははじめて見た。
どこが笑い所のコピペなの?
564デフォルトの名無しさん:2007/04/17(火) 17:21:10
565デフォルトの名無しさん:2007/04/17(火) 17:57:12
>>564
数あるコピペから>>559はなぜこれを選んだんだろ。
貼り付けた理由が理解不能。しかもこのコピペ、ちっとも面白くない。
あとスレ違いも甚だしい。なんなんだコイツは。
566デフォルトの名無しさん:2007/04/17(火) 18:21:21
面白くない上に長いから、嫌がらせにはちょうどいいということじゃないのか
あまり長すぎると1行も読まれないから、あのくらいにしたんだろう
567デフォルトの名無しさん:2007/04/17(火) 21:00:57
あの長さなのにコードが一行も無い時点で読まない
568デフォルトの名無しさん:2007/04/17(火) 21:43:20
流れ読まずに投下スマソ

WTL7.1 の AppWizard でダイアログベースのプロジェクトを作って、
ダイアログのフォントを MS UI ゴシック/9pt に設定したんだが、
実行時に文字化けを起こす。
教えてエロい人><
569デフォルトの名無しさん:2007/04/17(火) 21:57:48
>>568
WTLだと言語がデフォルトで「英語」になってるはず。
開発環境によって違うが、リソースエディタのどこかに言語を設定するところがあるから
そこを「日本語」に変えてみ。
570デフォルトの名無しさん:2007/04/17(火) 22:53:43
>>569
おっしゃるとおり、リソース自体の言語が 英語 になってますた!
最初日本語にしても「あれ?カワンネ」と思いリビルドしたらうまくいった!
thxエロイ人!!!!!!!!!!
571デフォルトの名無しさん:2007/04/17(火) 23:12:59
以下のような全角半角変換関数を作ったのですが、変換成功判定がうまくいきません。
『×』の行がおかしいところです。
どうすればいいのかお願いします。
ちなみにVC++6です。

//全角→半角変換関数
BOOL CDlg050Imp::ConvertZenToHan(CString gZenNum, CString& gHanNum){
BOOL bRet = TRUE;//変換成功フラグ
CString gAfter = _T("");//gHanNumを直接使うと前回のバッファが残っているので別変数を間にかます。
int nLenValue = gZenNum.GetLength();
int nRet = LCMapString(GetUserDefaultLCID(), LCMAP_HALFWIDTH, gZenNum, nLenValue, gAfter.GetBuffer( nLenValue ), nLenValue);
gHanNum = gAfter;//コピー
× int nLenAfter = gAfter.GetLength();//必ず0になってしまう。
× int nLenHanNum = gHanNum.GetLength();//必ず0になってしまう。
if(nLenValue != nLenAfter)//文字数が違うなら
bRet = FALSE;//変換失敗
else
{
for(int nMoji = 0; nMoji<nLenValue; nMoji++ )
{
CString gOneZen = gZenNum.Mid(nMoji, 1);
× CString gOneAfter = gAfter.Mid(nMoji, 1);//nLenAfterが0なので当然ながらアプリエラーが起きる。
if(gOneZen == gOneAfter)//同じ文字があるなら
{
bRet = FALSE;//変換失敗
break;
}
}
}
}
572デフォルトの名無しさん:2007/04/17(火) 23:19:26
ReleaseBufferはどこだ?
573571:2007/04/17(火) 23:32:23
× gAfter.ReleaseBuffer(nLenValue);//アプリエラーが起きる
int nLenAfter = gAfter.GetLength();//正常に長さが取れた


ReleaseBufferを入れてみたら、アプリエラーは起きますけど長さは取れました。
って、やり方が違うのかな…
574デフォルトの名無しさん:2007/04/18(水) 00:00:51
>>561
論点ずれまくりだろ
自分で正社員を辞めて派遣になったのにブーたれてるような人間は
何をやってもダメだと思うぞ
575デフォルトの名無しさん:2007/04/18(水) 02:26:59
プログラムをコンパイル→実行したあと自動的に閉じないようにできますか?
576デフォルトの名無しさん:2007/04/18(水) 03:05:08
できます。
577デフォルトの名無しさん:2007/04/18(水) 12:32:28
質問よろしいでしょうか。

VisulC++6.0で
exe→pdf呼び出しを行いたいのですが、コンポーネントの追加にAdobe PDF Readerを追加し、ダイアログに貼り付けようとしたら「ActiveXコントロールのインスタンスは作成されませんでした」とメッセージが表示され、貼り付けることができません。

exeから呼び出しを行いたいので、ShellExcuteEXを使わない方法以外にはないのでしょうか?

どなたかご教示お願いします。
578デフォルトの名無しさん:2007/04/18(水) 14:38:01
>>577
ネタか?
CreateProcessの引数にpdf
579デフォルトの名無しさん:2007/04/18(水) 14:58:38
IEがやってるようにActiveXを上手いこと使いたいんでないの。
580デフォルトの名無しさん:2007/04/18(水) 15:04:49
じゃIE貼っとけ
581デフォルトの名無しさん:2007/04/18(水) 15:23:54
577です。
Acrobat SDKのActiveViewみたいなことをと思っておりました・・・。
質問の意図が意味不明になっており、ご迷惑をおかけしました。

579氏、580氏
IEを貼る手法で行いたいと思います。。

ありがとうございました。
582デフォルトの名無しさん:2007/04/18(水) 19:31:46
>>576
どうやるの?
ソースに余分な関数入れるんじゃなくて設定でできるの?
583デフォルトの名無しさん:2007/04/18(水) 20:02:45
つ デバッグ無しで開始
584デフォルトの名無しさん:2007/04/18(水) 21:17:49
>>583
ありがとうございます。出来ました(゚∀゚)
すごく助かりました
585デフォルトの名無しさん:2007/04/19(木) 11:01:38
ウィンドウプログラミングで
ウィンドウハンドル、ウィンドウプロシージャで作るのと
ビュークラスやダイアログクラスで作るのと
2つあるみたいですけど・・・何が違うのですか?
どちらが主流なんですかね
586デフォルトの名無しさん:2007/04/19(木) 19:25:37
>>585
>ウィンドウハンドル、ウィンドウプロシージャで作るのと
これは低レベル(抽象度が低いって意味ね。「高級言語」とかいう時の高級/低級)。

>ビュークラスやダイアログクラスで作るのと
中で上の低レベルなものを使ってる。

Win32APIだけで作るのはだいぶ面倒くさい。既にあるものは使った方がいい。
587デフォルトの名無しさん:2007/04/21(土) 17:24:44
Visual C++6.0 のインストールを行っています。
続けてサービスパック6を入手しインストールしようとしましたが、
「ファイル C:\Windows\System32\MSFLXGRD.OCX を開くことができませんでした」
となり、セットアップが正常終了しません。

セットアップ手順に誤りがあるのでしょうか。
(MSDNからサービスパック6を入手し、展開先のフォルダで setupsp6.exe を実行しました)
588デフォルトの名無しさん:2007/04/21(土) 17:32:13
CDにMSFLXGRD.OCX入ってるだろ
589デフォルトの名無しさん:2007/04/21(土) 17:55:15
>>588
迅速なレス感謝です!
そもそも、Visual C++6.0インストール時のオプション設定で選んだインストール構成では MSFLXGRF.OCX が不要
(つまり、今発生しているSp6適用時のエラーは無視してよい)なのか、
それとも、CDからOCXファイルをコピーしてきてでも本セットアップ(SP6)をあてるべきなのかがわかりません。
590デフォルトの名無しさん:2007/04/21(土) 18:08:11
今や貴重なコントロールなんだから入れておけば?<FlexGrid
591デフォルトの名無しさん:2007/04/21(土) 20:46:48
Sp6のセットアップエラーを無視しても動きましたが、
一応FLXGRD入れておくことにしました。

助言ありがとうございましたm(__)m
592デフォルトの名無しさん:2007/04/22(日) 23:26:17
winXPでMicrosoft Visual C++ .NETを使っています。

ご相談したいのは、
「新規作成」→「プロジェクト」→C++の「MFC アプリケーション」で作成して
その後のウィザードで「アプリケーションの種類」→「ダイアログ ベース」に設定して「完了」を押すと
〔〜.ncd〕〔〜.sln〕〔〜.suo〕〔〜.vcproj〕しか作られません。
どうすれば良いでしょうか。
御教授をお願いします。
593デフォルトの名無しさん:2007/04/23(月) 01:19:05
まずは日本語の勉強してきてくれ。
難しいなら敬語は使わなくてもいいよ。
594デフォルトの名無しさん:2007/04/23(月) 15:03:05
どの辺が分かり難かったでしょうか?
要約をさせていただくと、「〔〜.ncd〕〔〜.sln〕〔〜.suo〕〔〜.vcproj〕以外のも作られるようにするには
どうすればいいのでしょうか」ということです。
どなたか、ご返答をお願いします。
595デフォルトの名無しさん:2007/04/23(月) 15:19:48
それ以外の何を作りたいのかさっぱり。
596デフォルトの名無しさん:2007/04/23(月) 15:34:02
>>594
クラスビューやソリューションエクスプローラなどで「追加」すればいい。

色んな所で右クリックしてどういうメニューが出るかとか、
上に並んでるメニューの中の項目を一通り試してみるとか、しないか?普通。
IDEもGUIアプリなんだしさ。
597デフォルトの名無しさん:2007/04/23(月) 16:26:34
ウィザード使ったらビルドすれば実行可能な状態のソースまで作ってくれる。
空のプロジェクトなら自分でソース追加しなきゃ始まらないけど、
ダイアログベースならダイアログ出すソースができてるはず。
598デフォルトの名無しさん:2007/04/23(月) 17:15:52
>595-596はたぶんMFC使ったことないから無視で
599デフォルトの名無しさん:2007/04/23(月) 17:28:06
ビルドしなくてもソースは生成されていないとおかしい
操作ミスなのではないか?
600599:2007/04/23(月) 17:28:58
あ、何か誤読してたスマソ
601592:2007/04/23(月) 18:02:29
すいません。
書き忘れていたことがありました。
「スケルトンが作成されない」のです。
本当に申し訳ありません。
602デフォルトの名無しさん:2007/04/23(月) 19:02:34
2005じゃないということはだいぶ前にインストールした?
それから何回か使った?
全く状況がわからん
603592:2007/04/23(月) 20:04:15
>>602
2003です。
インストールしたの半年前です。
604592:2007/04/23(月) 23:00:15
>>596
ご返答ありがとうございます。
「開始」を押すと
「デバックを開始できません」
「プログラム'〜.exe'を開始できません。」
「指定したファイルが見つかりません」
というウィンドウが出てしまうので、ただスケルトンが表示できていない
のではと思うのですが、それ以上は私にはわかりません。
605デフォルトの名無しさん:2007/04/25(水) 10:08:10
>>604
ダイアログ以外はどうなんの?
606デフォルトの名無しさん:2007/04/25(水) 12:10:32
大学のVisual studio2003でWM_MOUSEWHEELメッセージを拾おうとしたら
WM_MOUSEWHEELは定義されていないというエラーが出ました。
マウスカーソルをWM_MOUSEWHEELの上に持っていくと、
#define WM_MOUSEWHEEL 0x020A
とちゃんと出ているので自分でその値をdefineしたらビルドが通ったのですが、
なんで自分で置かないとWM_MOUSEWHEELが定義されていないと出るのでしょう?
607デフォルトの名無しさん:2007/04/25(水) 12:28:19
WM_MOUSEWHEEL はあとから追加されただけで
windows.hに無いからね
608607:2007/04/25(水) 12:29:41
#define _WIN32_WINNT 0x0400
を入れれば有効になると思うよ
609デフォルトの名無しさん:2007/04/25(水) 12:44:00
>>607
ありがとうございます。
後からというのは自宅のvisual studio2005では普通に出来たのでそこからということでしょうか?
ちなみにソースコードのWM_MOUSEWHEELにマウスカーソルを持っていくと
#define WM_MOUSEWHEEL 0x020A とちゃんとdefineされているように出てくるのは何でなのですか?
610デフォルトの名無しさん:2007/04/25(水) 14:49:48
「条件」によって存在しなかったことになる。
611デフォルトの名無しさん:2007/04/25(水) 16:56:44
>>610
本当にすまないのですがまだ無知ゆえもう少し詳しくお願いできますか?
612デフォルトの名無しさん:2007/04/25(水) 17:02:50
条件コンパイル
613デフォルトの名無しさん:2007/04/25(水) 17:20:47
>>612
なるほど、そういうことでしたか!
よく分かりました、ありがとうございます><
614デフォルトの名無しさん:2007/04/25(水) 22:12:59
質問させてください。

FLOAT型の変数の値をMessageBoxで表示させたいのですが、ビルドを実行すると
2番目の引数を'float'から'LPCSTR'に変換できません。と出ます。float型をLPCSTR型に
変換するにはどうしたらよいのでしょう?コードはこのような感じで書いてます。

float a = 0.3f;
MessageBox(NULL, a, NULL, MB_OK);
615デフォルトの名無しさん:2007/04/25(水) 22:15:25
sprintf
616デフォルトの名無しさん:2007/04/25(水) 22:26:30
>>615
できました!ありがとうございます!
617デフォルトの名無しさん:2007/04/25(水) 23:59:24
>>605
ご返答ありがとうございます。

ダイアログって、ダイアログベースのことですよね?
自分は初心者なもので、間違っていたらすいません。

〜.ncd
〜.sln
〜.suo
〜.vcproj
フォルダにはこれだけでした。
618デフォルトの名無しさん:2007/04/26(木) 10:17:26
>>617
ダイアログベース以外の、SDIやMDIで作るとどうなるかって聞いてんだよ
619デフォルトの名無しさん:2007/04/26(木) 12:14:07
なんでそんな偉そうなの?教えてあげる対価としていばってんの?
620592:2007/04/26(木) 12:27:11
>>618
MDIでやっても、SDIでやっても、結果は同じでした。
>>617で示したファイルしか作られていませんでした。
621デフォルトの名無しさん:2007/04/26(木) 12:38:23
>>619
普通の言い方で通じないからだよ
622デフォルトの名無しさん:2007/04/26(木) 12:40:46
>>620
とりあえずその現象はおかしいのでインストールしなおしてみては
ダイアログベースだけならファイル差し替えてみる手もあったが
全部だとインストールやり直したほうが早い

つか、>>619 はこの程度で偉そうと感じるのか
どういう世界で育ったんだ、一人っ子か?
623デフォルトの名無しさん:2007/04/26(木) 13:08:06
いや、、まぁ偉そうなことは偉そうだろう。
常識的に考えてww
ただここは2chだしね。
624デフォルトの名無しさん:2007/04/26(木) 13:33:58
まだ答えてくれる人がいるだけでもラッキーだと思うよ
625592:2007/04/26(木) 15:10:57
>>622
ここに来る前に、それを何度かしてみたのですが、結果は同じでした。
再インストールもアンインストールしてからのインストールもしましたが、結果は同じでした。
それで、悪意のあるファイル云々が原因かと思い、ノートンでスキャンしてみたのですが
異常はありませんでした。
626デフォルトの名無しさん:2007/04/26(木) 15:27:27
>>625
とりあえず、同じ現象が出てる人がいないようなら
MSのサポートに聞いてみたら
627デフォルトの名無しさん:2007/04/26(木) 16:13:08
今から2003なんて不自然だし割れなのかも
628592:2007/04/26(木) 18:21:20
>>625
わかりました。聞いてみます。
色々とありがとうございました。
629592:2007/04/26(木) 18:22:18
>>628
>>625」から「>>625」の間違いです。すいません。
630デフォルトの名無しさん:2007/04/26(木) 18:27:48
おまえもういいよ、寝てこいよ。
631デフォルトの名無しさん:2007/04/26(木) 18:56:24
まあOSの再インストールからやれば直るんだろうけどw
余ってるマシンにインストールして比べてみるってのはたまにやるな
632デフォルトの名無しさん:2007/04/26(木) 23:29:48
テキストボックス内のカーソルの位置から
現在の行数を取得したいのですが、
1行が1024文字を超えた位置にカーソルがあると、
下記の変数rowの値が1だけ繰り上がってしまいます。
どうやら1024区切り(1024,2048,3072,…)で1ずつ繰り上がるようです。

TEXT->WordWrap = false;
int row = TEXT->GetLineFromCharIndex(TEXT->SelectionStart);
TEXT->WordWrap = true;

これを回避して、1024文字を超えても正しい行数を返すように
修正できないでしょうか?
633デフォルトの名無しさん:2007/04/27(金) 00:43:50
エディットコントロールの制限で、実際に折り返されている予感。
634デフォルトの名無しさん:2007/04/27(金) 00:44:24
そのテキストボックスはどうやって作った?
パラメタは?
635デフォルトの名無しさん:2007/04/27(金) 17:54:02
質問があります。
以下のようにバイナリファイルを読み込みました。

static char buff[1024*1024];

std::fstream fs ("hoge.dmp", std::ios::in);
fs.read(buff, size);
fs.close();

すると816バイトくらいまでは読み込めるのですが、それ以降がヌルに
なってしまいます。
何か制限などはあるでしょうか?
636デフォルトの名無しさん:2007/04/27(金) 18:24:15
オープンモードに std::ios::binary も要るのでは?
637デフォルトの名無しさん:2007/04/27(金) 19:05:22
>>636
ビンゴです!ありがとうございます!
638デフォルトの名無しさん:2007/04/28(土) 23:20:02
VC++ExpressEditionというのを導入してやっているものです。
ちょっと思うところあってあえてIDEは無視してコマンドラインでやってます。

このたびWin32APIというのに手を出してみようと思い立ったのですが、
下の順番でどつぼにはまっています。

@windows.hがインクルードできない
→MSのサイトを参考にしながらWindows Platform SDKというのを導入して、
 IDE環境ではインクルードしてビルドして実行できるようになりました。

Aコマンドラインではそれだけではコンパイルできない
→VCVARS32,batを直してSDKにもパスが通るようにしました。

Bインクルードはできているっぽいけど、リンクできないところがある

error LNK2019: 未解決の外部シンボル __imp__MessageBoxA@16 が関数 _WinMain@16 で参照されました。
fatal error LNK1120: 外部参照 1 が未解決です。

Bを抜け出すためのアドバイスをいただけないでしょうか。
639デフォルトの名無しさん:2007/04/28(土) 23:29:42
1.ライブラリパスの設定
2.user32.lib等をリンクする
640デフォルトの名無しさん:2007/04/29(日) 01:53:25
638です。

おっしゃるとおり、

cl user32.lib hoge.c

でうまくいったのですが、なんか???という気分です。むむ。
641デフォルトの名無しさん:2007/04/29(日) 02:00:32
__imp__MessageBoxA@16、つまりMessageBox()関数はuser32.libに入ってるってことだ
正確にはインポートライブラリだけどまあ同じこと
642デフォルトの名無しさん:2007/04/29(日) 10:04:40
>>638
IDEで簡単にリンクが通るのは、プロジェクトを作成した時、
参照するライブラリとして kernel32 user32 とかが予め設定され、
ビルド時にCLのパラメータとして渡されるから。
よって、直接コマンドラインで実行したければ全て記述する必要がある。

良い機会だから、NMAKEを勉強するのもいいかもしれないな。
ついでにGNU MAKEもやっとけば、後で幸せになれる。
643デフォルトの名無しさん:2007/04/29(日) 21:44:42
638です。

>>641&642

なんとなくわかってきました。つまりは両氏のおっしゃる通りとしか言いようが無いみたいで、
NMAKEを勉強すべき、というところに私もたどり着きました。

チャールズ・ペゾルドというひとが書いたぶっとい本を頼りにぼちぼちやってます。
ここに書くことでもないですけどいい本ですね。これ。

また詰まったら参ります。どうもありがとうございました。
644デフォルトの名無しさん:2007/04/30(月) 14:20:57
VisualC++2005ExpressEdition落としたんですが
しょっぱなから使い方わかりません
どうすればいいですか?
645デフォルトの名無しさん:2007/04/30(月) 14:37:06
>>644
使い方って具体的に何がだよカス

林晴比古『明快入門 Visual C++ 2005 ビギナー編 』
山本信雄『Visual C++〈1〉はじめてのWindowsプログラミング』
http://www.kumei.ne.jp/c_lang/
あくまで参考程度&初心者用ですが、
この辺を見て自分はVC++とwindowsプログラミングを覚えました。
646デフォルトの名無しさん:2007/04/30(月) 15:08:07
>644
ヘルプを読めばいいと思う
647デフォルトの名無しさん:2007/04/30(月) 15:22:53
>>645
>>646
カスとかいいながらサンクス
648デフォルトの名無しさん:2007/04/30(月) 16:52:25
>>645
ひどいツンデレを見た
649デフォルトの名無しさん:2007/04/30(月) 19:54:45
VC6.0、ダイアログの作成について質問させてください。

OnInitDialog()で独自の初期化処理を行っています。
初期化処理に失敗した場合、メッセージボックスを表示し、
ダイアログを表示しないようにしたいのです。

モーダルウインドウの場合、EndDialog()を呼び出せばよいのですが、
モードレスウィンドウの場合、どのように処理したらよいのでしょうか?

識者の方、ご教授お願いします。
650デフォルトの名無しさん:2007/04/30(月) 21:30:33
WM_CLOSEかEM_DESTROYでも投げてみては
651デフォルトの名無しさん:2007/05/01(火) 01:16:16
>>643
通りすがりだけど MAKE勉強すると後々役立つよ
良スレですね!!
652デフォルトの名無しさん:2007/05/01(火) 10:06:37
CFileDialogの「新しいフォルダの作成」ボタンを非表示か
無効にしたいです。
可能でしょうか。
653デフォルトの名無しさん:2007/05/01(火) 10:09:26
可能です
654652:2007/05/01(火) 16:48:13
>>653さん
ありがとうございます。色々方法を調べましたが
うまくいきませんでした。具体的な方法を教えて頂けないでしょうか。
655デフォルトの名無しさん:2007/05/01(火) 17:01:02
関数を毎秒もしくは毎分という単位で呼び出したいんですが
何を使うのが良いでしょう?
656デフォルトの名無しさん:2007/05/01(火) 17:17:11
精度悪くていいなら WM_TIMER
精度が必要ならアイドル時に timeGetTime で自分で時間を計って処理
657デフォルトの名無しさん:2007/05/01(火) 17:57:44
いままでMAPLE Vでプログラム作っていたものです。
『これならわかるC++』(小林健一郎著)を読んでC++の勉強をし始めたのですが、
VisualC++の方がC++より簡単なんでしょうか?
両者の関係がよくわからず、もしVisualのほうが使い勝手が良いようでしたら、そっちにしようかと考えております。
もしよろしければVisualC++とC++の違い(プログラミングの容易さ)について教えていただけないでしょうか。プログラム以前の質問で恐縮ですがよろしくです。
658デフォルトの名無しさん:2007/05/01(火) 18:06:26
C++は言語
VisualC++は製品
659657:2007/05/01(火) 18:10:56
>658
私の質問のしかたが悪かったです。
Borland C++5.5 CompilerとVisual C++の違いに付いて教えてください。
660デフォルトの名無しさん:2007/05/01(火) 18:26:15
Borland C++ 5.5 Compiler はコンパイラ
Visual C++ は統合開発環境
661裕美子(×いちのOL):2007/05/01(火) 18:31:57
裕美子といいます。大都会の片隅で×いちのOLをしています。

>>659
VisualC++はマイクロソフトの製品で、BorlandC++5.5はボーランドの製品です。
ともにC++言語を利用してWindows用のソフトウエアを開発するための「開発ソフト」
です。
VisualC++はIDE(統合開発環境)という高度なソフトウエアを内臓しています。
大規模なアプリケーションを作成する際には、たくさんのファイルを作成し、また
メーカーが用意したたくさんのファイルを利用して、それらを関連づけし、連結したりして
一本のソフトウエアが完成するのですが、それをいわばボタン一発で操作できる。
優れた開発環境です。ボーランドの同様な開発ソフトにはBorlandC++Builder(略称BCB)
というものがあり、GUIの作成はこちらのほうが容易かもしれません。
BorlandC++5.5は、このBCBからIDEを取り去り心臓部分だけを無償で公開したソフトです。
662裕美子(×いちのOL):2007/05/01(火) 18:40:47
純粋にC++の学習に励むだけならBC++5.5でいいでしょう。
しかし、将来はやっぱりWindowsのソフトをつくりたいのなら、
VC++かBCBを入手して使い勝手に慣れた方がいいと思います。

VC++は無償のものがあります。これでC/C++の学習ができますが、
きちんとしたWindowsのアプリケーションを作成するにはファイルが
足りません。私はVC++もBCBも最新版を触って使っていますが、
個人的な感想としてはショップで購入する、VisualC++2005をお勧めします。
それは市販されている参考書の多さとユーザー数の多さから、先々
助かったと思うことがあると考えるからです。
663デフォルトの名無しさん:2007/05/01(火) 18:52:03
一行目と名前欄でまぁたバカ業者かと思ったら
まともなレスをしてるとはこれ如何に・・・。
664デフォルトの名無しさん:2007/05/01(火) 18:54:24
ワロタ
665デフォルトの名無しさん:2007/05/01(火) 19:14:03
書籍に付いているCDーROMってSDKも
入ってるんでしょうか
雑誌に付いていたのは別にダウンロードしないと
駄目だし、設定も結構複雑なので
書籍買おうか迷ってるんですが
666657:2007/05/01(火) 19:40:53
>661,662 裕美子さん
ありがとうございます!
私はシミュレーションをやりたいだけなので、Borlandで十分な気がいたしました。
あした本屋とかで参考書を見て、あらためて考えようと思います。
667デフォルトの名無しさん:2007/05/01(火) 19:41:05
2005expressがついてる本はあるけどsdkはついてないのが普通
proならsdkはいっしょにインストールされる
668デフォルトの名無しさん:2007/05/01(火) 19:46:57
>>667
そうですか....
では製品版を考えて見ます
669裕美子(×いちのOL):2007/05/01(火) 20:16:21
>>657

ttp://hp.vector.co.jp/authors/VA017148/

もしBC++5.5を使うなら、ここのCpadをお勧めします。
これも開発環境の一種ですが、BC++5.5を使いやすくします。
BBSも変な人が来ません。CpadはどうもBCB(もしくはDelphi)で
作ったアプリケーションみたいですね。
BC++5.5は 別に専用スレッドがありますので、設定などの疑問は
そちらを使うか、専用BBSへどうぞ。
670デフォルトの名無しさん:2007/05/01(火) 22:05:22
とりあえず無料のほうは両方試してみるのもいい
特に、デバッガの使い勝手が今後に効いてくるかもしれんから
そっちもチェックな
671デフォルトの名無しさん:2007/05/01(火) 22:22:19
BCC はメルアド登録が鬱陶しいから
個人的には VC++ がいいと思う。
672デフォルトの名無しさん:2007/05/01(火) 23:32:35
Visual C++ 2005を使っていますが文字化けに悩まされています。

ある規格値をEditBoxに入力して、
その値をプログラム中で受け取ると、
かなり文字化けしてしまいます。

.GetWindowTextA((LPTSTR)str);

とか

.GetWindowTextA((LPTSTR)str, 256);

とかいうとり方などを試しているのですが、
うまくいきません。


やりたいこととしては、
@規格値を文字でとってくる
A数字に変換(double型) atoiとか?
Bifによる判別

という流れです。

よろしくお願いします。
673デフォルトの名無しさん:2007/05/01(火) 23:39:42
そもそも何を入れたらどう化けるのさ
674デフォルトの名無しさん:2007/05/01(火) 23:48:41
そもそも規格値って何さ?
エディットボックスの入力値ってこと?
675デフォルトの名無しさん:2007/05/01(火) 23:53:36
整数値で良ければGetDlgItemIntを使うのが簡単
676デフォルトの名無しさん:2007/05/02(水) 00:10:16
>>672
なんか質問の仕方が稚拙な気が…。
スレタイどおり超初心者の予感。

私も初心者ですけど
@ string s = EditBox->Text;
A double d = Convert::ToDouble(s);
B if( d == 1.00 )
という感じかと…。

変換については「Convertクラス」を検索してみれば良いかと思います。
677デフォルトの名無しさん:2007/05/02(水) 00:44:47
>>672
何で A つけてるんだぜ?
678デフォルトの名無しさん:2007/05/02(水) 00:57:48
>>672
問題個所の周りのコードを全部出せ。
679デフォルトの名無しさん:2007/05/02(水) 01:35:16
>>673
数字です。
表示は化けてません。

>>674
エディットボックスの用途として、
ある値を入力させ、それを規格値として
使用すると言う意味です。

>>675
明日試してみます。

>>676
Convertクラスですね。
調べてみます。

>>677
入力の補助的な物?を見るとGetWinodwTextがなくて
GetWindowTextAとついていました。

>>678
現在手元にありません・・・
すみません。

初心者で・・・あまり理解しておらず、
質問がわかりにくくてすみません・・・
680デフォルトの名無しさん:2007/05/02(水) 01:50:46
まずはテキストボックスに入力した文字列をそのまま
ダイアログボックスに表示するコードを書いてみるんだ。
あと、GetWindowTextと書けばコンパイル時にその環境に応じて
GetWindowTextAかGetWindowTextWのどちらかに置き換えられるので
普通はAとか要らない、これはGetWindowTextに限らずそう
681デフォルトの名無しさん:2007/05/02(水) 03:57:04
OS は XP だろうから W になるはずで、
それなのに A にしてるから変になってるんだろう。
682デフォルトの名無しさん:2007/05/02(水) 13:14:26
VC6.0でデバッグ実行した時メインPCだと混合モードが呼び出されてint 3で止まってしまいます。通常実行は問題ないです。
環境を近づけたサブPCで同ソース同ライブラリでデバッグ実行したら止まりませんでした。
ぐぐると同じような症状あったのですがどれもわからなくて解決できませんでした
突然出始めた症状なので再インスコすれば直りそうな気配なんですがその再インスコちょっと待った!っていう
何か知識ございましたらヘルプお願いします
683デフォルトの名無しさん:2007/05/02(水) 13:48:06
>>679
「規格値」って言葉は紛らわしいね。
職場とかのローカルな場ならいいけど、そうでないなら一般的な用語を
使うべきだと思う。単に「値」でいい。
684デフォルトの名無しさん:2007/05/02(水) 16:01:46
なんかデバッグしてると「"cmd.exe"の起動中にエラーが発生しました」とか
言ってエラー表示されてるんだけどこれなに?実行には特に何の問題も
無いんだけど、表示だけがエラー一覧に出てる。
あとたまに「mfc80d.dllが見つかりません」とかも言われるんだけど、これ
VisualStudioインストールし直した方が良いのかな。
685デフォルトの名無しさん:2007/05/02(水) 17:02:28
気にしなくていいよ
686デフォルトの名無しさん:2007/05/02(水) 17:27:15
>>685
mjd?
いやエラーはともかくとして、mfc80d.dllが無いっつーのは問題なんじゃ…。検索
したらちゃんとあったんだけどなぁ…
687デフォルトの名無しさん:2007/05/02(水) 17:31:03
たまになら問題ないだろ
本人が状況把握してないのを他人が気にしてもしょうがない
688デフォルトの名無しさん:2007/05/02(水) 18:04:43
>>687
いや、cmd.exeのエラーは必ず出るんだよ。でもデバッグは普通に成功してる。
これは正常異常、どちらかと言えば異常だよね…?
いまvisual studioだけ再インストールしたんだが解決せずorz
689デフォルトの名無しさん:2007/05/02(水) 18:21:27
パス通ってないだけだべ
690デフォルトの名無しさん:2007/05/02(水) 18:22:15
ごめん解決した。
cmd.exeで検索したら、なんか環境変数がどうのこうのでパスが
通ってないからどうのこうのだった。
691682:2007/05/03(木) 00:53:29
OS再インスコしたらデバッグで止まらなくなった\(^o^)/
あーバックアップと復旧めんどくさかった\(^o^ ;)
でも俺のコードのせいじゃ無いようで良かった(^o^)/~~
692デフォルトの名無しさん:2007/05/03(木) 02:19:16
質問させてください。
VC++2005とVC#2005のどちらをやろうか迷っています。
自分なりに色々調べたのですが、これから先、どちらの言語に
集中してやっていこうかいまだに迷っております。

 そこで、VC++2005を使っている方にご質問したいのですが、
VC#ではなく、VC++2005を選んだ理由等あれば、お聞かせ願いないでしょうか。

 また、将来的に、こちらの言語ができていたら就職等でも役に立つ、
というのがあれば、教えていただけないでしょうか。

 よろしくおねがいします。
693デフォルトの名無しさん:2007/05/03(木) 02:35:24
C++ができればC#なんてたいしたことないと思うから
まずはC++を勉強する方がいいと思う
C#だけできますなんて人を採用する会社はそんななさそう
694デフォルトの名無しさん:2007/05/03(木) 03:24:11
>>692
逆だ、馬鹿。お前がどういうことをやっていきたいのかで自ずと決まる。
695デフォルトの名無しさん:2007/05/03(木) 08:33:47
言語なんてただの道具であって。
何を作るかで使い分けるものだからな。
696デフォルトの名無しさん:2007/05/03(木) 09:08:48
俺は両方やってる。
C#→(C→Java→)C++(→VB)の順でやったけど。
Javaまでは独学で、就職に役立つとかは全然考えずに、
他の言語にも興味を持ったからやるようになっただけ。
C++とVBは仕事で使えと言われて勉強した。

会社側から見れば就職時よりも就職後が大事だから
言語が二つ以上できるとか、
色んなフレームワークを使ったことがあるとかで、
学習能力があると思われる事の方が就職に役立つと思うよ。
697692:2007/05/03(木) 15:13:00
ご意見ありがとうございます。

私の個人的な趣味で、簡単なネットワークゲームを作ってみたいという
思いがあります。
また、迷っている理由として、検索したHPのどこかで、
「C#はC++2005が出た時点で意味をなさなくなった」という
ニュアンスの文があったため、折角C#を覚えても、
需要がなくなっていくのでは勿体ないなとおもい、
言語は慎重にえらびたいな、とおもったからです。
698デフォルトの名無しさん:2007/05/03(木) 15:23:00
>>697
いろいろ検索してみて、自分がやりたいことを実現する為の
技術のサンプルコードがより多く入手できる言語を覚えると吉。
699デフォルトの名無しさん:2007/05/03(木) 16:17:26
>>697
そのHPどこ?
700デフォルトの名無しさん:2007/05/03(木) 16:23:01
現時点でC#からDirectXを扱う最新の手段がいまいちだからとか?
MDXは終わってるし、XNAはXbox用みたいになってるし
701デフォルトの名無しさん:2007/05/03(木) 16:31:25
これさえできれば一生安泰なんていう言語とか技術なんか無いから。
学んだ技術が廃れるのを恐れてるようじゃこの業界じゃ生きてけないよ。
廃れれば次を学ぶのみ。
新しいことに挑戦する姿勢が無いとね。
702デフォルトの名無しさん:2007/05/03(木) 16:53:15
>>701
つ COBOL

これさえできれば一生安泰だよ。
703デフォルトの名無しさん:2007/05/03(木) 17:02:39
704デフォルトの名無しさん:2007/05/03(木) 17:21:31
君まだ一つもできる言語はないんだよね?
C#がいいと思うよ。
後からC/C++にでもJavaにでも移りやすいし。
需要もあるし。
705デフォルトの名無しさん:2007/05/03(木) 17:34:35
ダイアログをMDIの子ウィンドとして、親ウィンドからはみ出ない作り方教えて

もしくは、VCで2,3日で20画面くらいを量産できる画面設計できる方法を・・・
706デフォルトの名無しさん:2007/05/03(木) 17:51:38
>>705
その前に日本語を・・・
707デフォルトの名無しさん:2007/05/03(木) 18:42:45
formview
708デフォルトの名無しさん:2007/05/03(木) 19:49:22
画像をボタンとして使いたいんだけど、どうしたらできるん?
習作として参考書に載ってるCDプレーヤを改良したいんだけど、
見た目の段階でつまづいたorz
709デフォルトの名無しさん:2007/05/03(木) 20:23:37
>708
画像の描画の仕方についてはわかってるの?
わかっているのならクリック時のマウスのポジションで
ボタンを押したかどうか判定すればおk
710デフォルトの名無しさん:2007/05/03(木) 21:21:32
コンソールアプリで、終わった後にすぐコンソールが閉じてしまうのは、
scanfなりcinなりで入力待ちにするしかないんですか?
2005です。

6でやっていたときは、終了するには何かキーを押してくださいみたいに
出てきていたと思うのですが。
711裕美子(×いちのOL):2007/05/03(木) 22:18:33
裕美子といいます  今晩のおかずは海老の天ぷらとホタテの塩コショウ炒めです。

>>710
VS2005を使用している際に、アプリケーションの実行後すぐに窓が閉じるという
ことでしょうか?
もしそれならば、実行は「Ctrl+F5」で行ってみてはどうでしょうか?
712デフォルトの名無しさん:2007/05/03(木) 22:20:49
>>711
Ctrl+F5、デバッグなしで開始でやればいいんですね
ありがとうございます
713デフォルトの名無しさん:2007/05/03(木) 23:01:31
VC++ってヨドバシカメラで売ってますか?真面目な質問。
714デフォルトの名無しさん:2007/05/03(木) 23:06:19
>>713
ヨドバシカメラに問い合わせたらいいと思うよ。真面目な話。
開発ツール扱ってる規模のPCショップや売り場ならあるんじゃないの。
715デフォルトの名無しさん:2007/05/03(木) 23:08:57
716デフォルトの名無しさん:2007/05/04(金) 00:18:24
>>713
どこのヨドバシやねん
梅田店なら置いとったわ
717デフォルトの名無しさん:2007/05/04(金) 08:07:53
>>713
社会人でもアマゾンならアカデミック版買えるから、
アマゾンにしとき。
718デフォルトの名無しさん:2007/05/04(金) 10:00:10
コレクションに飾っておくならそれがいいね
719デフォルトの名無しさん:2007/05/04(金) 10:17:24
軽い開発環境、実行環境が欲しいんですが、
Visual Cは基本.netアプリなんですか?

PlatformSDK入れればネイティブコード作れマスみたいに書いてある気がするんですが。
720デフォルトの名無しさん:2007/05/04(金) 10:24:06
どっちも作れマス

ただ、開発環境は重いデス
721デフォルトの名無しさん:2007/05/04(金) 10:31:28
2003は軽いからおすすめ!!
722デフォルトの名無しさん:2007/05/04(金) 10:32:25
VC6はもっと軽くてプロファイラもあるから超オススメ!嘘ぴょーん
723デフォルトの名無しさん:2007/05/04(金) 10:35:54
http://www.microsoft.com/japan/msdn/vstudio/express/visualc/
>Windows ネイティブと .NET Framework の両方に対応
>.NET Framework の提供するデータ アクセスやネットワーク、印刷などの機能を活用した、高度なアプリケーションをプログラミングできます。
>Windows Platform SDK* (英語) を利用して、高機能でパフォーマンスに優れた Windows アプリケーションを作成できます。
>Web サービスと連携するインターネット アプリケーションのプログラミングも可能です。
>* 無償で追加ダウンロード可能

>Windows Platform SDK*

って書いてあるんですが、リンクが切れてて。
で、それないとネイティブコードにはコンパイルできないんじゃないかと。

あ、Express版の話なんですが。

>>721
2003は有料じゃなかったですか?
無料がいいので。
724デフォルトの名無しさん:2007/05/04(金) 10:42:26
無料なら2005一択だね

>>722
6は物凄くbuggyなんで駄目です><
725デフォルトの名無しさん:2007/05/04(金) 10:49:09
マネージメントのフォーム(言い方合ってる?)で、iTunesの
ミニプレーヤみたいなのを埋め込んでiTunesを外部操作でき
るようにしたいんだけど、方法ある?
726デフォルトの名無しさん:2007/05/04(金) 11:27:13
VCでどうかする前にiTunesの仕様を調べるのが先
727デフォルトの名無しさん:2007/05/04(金) 12:03:55
>>726
ごめん調べる方法すらわからんorz
取り敢えずややこしくない方法で、「このボタンを押すと、裏で
iTunesが起動している場合Spaceキー(再生ボタンのショート
カット)を押したことになる」みたいなことはできない?
728デフォルトの名無しさん:2007/05/04(金) 12:26:44
>>727
http://www.microsoft.com/japan/msdn/academic/Articles/fun/05/
このWindowsMediaコントロールのiTunes版みたいな事をしたいの?
729デフォルトの名無しさん:2007/05/04(金) 12:32:44
>>728
うーん…ちょっと違うような。
iTunesの埋め込みではなく、iTunesの外部操作がしたいんだよ。
VisualC++の本見ても載ってないっつーことは、なんか別の知識が
必要なんかな。
730デフォルトの名無しさん:2007/05/04(金) 12:51:23
FindWindowとかGetMenuとかGetSubMenuとかSendMessageとか使うのは?
731デフォルトの名無しさん:2007/05/04(金) 13:02:09
>iTunesのミニプレーヤみたいなのを埋め込んで
>>728でなければこれはどういう意味?
732デフォルトの名無しさん:2007/05/04(金) 13:03:39
マネージメントのフォームって何?
733デフォルトの名無しさん:2007/05/04(金) 13:27:35
>>730
うーん…どれも違うような。
無理なのかなぁ…そういや裏のアプリケーションを操作できる
ソフトなんて見たこと無いしな…。
MacOS XのランチャーではiTunesの操作ができたりしたけど、
visualc++単体ではできないんかな。スクリプトとかそっち方面
の知識が要るのかも?

>>731
うーん…なんというか、あるソフトから裏で動いてるソフトの
リモートコントロールをしたい…って感じかな。
iTunesを埋め込むのではなく、仮のiTunesを仕込むというか。
WindowsMediaPlayerコントロールで裏で起動してるWindows
MediaPlayerの操作をしたい、って言えばわかるかな。

>>732
なんかマネージ形式(.net?)のフォーム。
MFCと.NETって違うみたいだから言ったんだけど、マネージ
メントじゃなかったごめんorz
734デフォルトの名無しさん:2007/05/04(金) 13:36:01
ダウンロードしてWindows2000にインストールしようとしたらエラーになったので
BorlandのTurboC++フリー版にしてみます。

735733:2007/05/04(金) 13:37:36
そういえば、ブラウザとかでもメールアドレスをクリックしたら
メールソフトが起動して、新規メール作成画面が出るよね。
あんな感じでiTunesを操作できたりせんかな。
736デフォルトの名無しさん:2007/05/04(金) 13:42:37
アウトプロセスサーバ"iTunes.Application"を叩く話か?
737デフォルトの名無しさん:2007/05/04(金) 13:44:38
mp3をiTunesに関連付けておけば
ブラウザでmp3のリンクをクリックしたら
iTunesが起動するんでないの
738デフォルトの名無しさん:2007/05/04(金) 13:54:24
>>723
Microsoft DownloadからWindows SDKをダウンロードしてインストールすればいいだけ。

>>725
iTunes COM for Windows SDKというもんがあるんだが、それでやれない?
739デフォルトの名無しさん:2007/05/04(金) 14:17:27
>>733
今試してみたらiTunes起動・ファイルを渡して再生・一時停止
停止・ボリュームとか基本的な操作はできたよ。
もうちょっと遊んでみるか。

>iTunes COM for Windows SDK
そんなのがあったのか。
それも使ってみよう。
740739:2007/05/04(金) 14:28:59
>iTunes COM for Windows SDK
って、自分が使ってたインターフェースのドキュメントとかが入ってるのか。
741デフォルトの名無しさん:2007/05/04(金) 15:45:22
質問ですが、

C言語には出来るけど、HSPやBASICに出来ない事って
どんな事ですか?教えて下さい。
742デフォルトの名無しさん:2007/05/04(金) 15:50:53
Cコンパイラでのコンパイル。
743デフォルトの名無しさん:2007/05/04(金) 15:55:31
プリプロセッサ…はHSPにはあったっけ。
744デフォルトの名無しさん:2007/05/04(金) 16:29:01
高速処理
745デフォルトの名無しさん:2007/05/04(金) 16:54:14
C言語自体はほとんど何もできないよ
たぶんHSPやBASICのができることは多い

あとここはC言語のスレじゃなくてVisualC++のスレだぞ
746デフォルトの名無しさん:2007/05/04(金) 16:59:27
言語単体での機能(標準ライブラリのみ使用可)に絞ったら
確かに C にできることは限られるが・・・。
Visual C++ のスレ的には C なら何でもできると言っといた方が。
747デフォルトの名無しさん:2007/05/04(金) 17:06:36
初心者でも手っ取り早く動く物をつくれるようにHSPみたいなのがあるわけだろ
Cならなんでもできると言っても初心者は何もできないのが現実
748デフォルトの名無しさん:2007/05/04(金) 17:11:44

初心者ですが、一応ライブラリ使わなきゃ
C単体では四則演算、条件分岐程度しか出来ない
らしいこは知ってましたが、スレ違いでしたか、すんません!

ところで C言語と Visual C++ってそんなに違うもん
なんですか?どんな感じに違うのか教えて頂け
ませんか!文法も全然違うのですか?
749デフォルトの名無しさん:2007/05/04(金) 17:15:29
>>747さん
>Cならなんでもできると言っても初心者は何もできないのが現実

と言うのは確かにどこでも聞きますが、それはなぜでしょうか?
文法ですか?ハードに対する知識ですか?そのへんがよくわからんです
750デフォルトの名無しさん:2007/05/04(金) 18:10:16
>>748
C言語 → プログラミング言語
Visual C++ → C++ の統合開発環境

言語とツールを比較する時点でおかしい
751デフォルトの名無しさん:2007/05/04(金) 18:35:21
>749
耳掻きとおたまの違いだと思えば

耳掻きでスープをよそうのは大変だけど、
おたまで耳はかけない。つまりはそういうこと。
752デフォルトの名無しさん:2007/05/04(金) 18:49:12
>>749
日本語という言語が使えても、誰でも芥川賞な文学作品が作れるわけでは無い、
みたいなものかな。
753デフォルトの名無しさん:2007/05/04(金) 19:41:13
>>752の喩えいいね。
754デフォルトの名無しさん:2007/05/04(金) 22:00:50
大工道具の使い方マスターしても初心者は本箱がせいぜい。
家なんか建てれるか
755デフォルトの名無しさん:2007/05/04(金) 22:34:29
VC++はこの先ずっと6.0が一番使いやすいんですか?
756デフォルトの名無しさん:2007/05/04(金) 22:45:09
2003がオヌヌメ
757デフォルトの名無しさん:2007/05/04(金) 23:23:03
VC++2003のイミディエイトウィンドウでメンバ関数呼ぶときはどうすればいいんでしょうか?

static int testss() { return 0; }

class Cls {
int i;
public:
Cls() : i(100) {;}
int f(int i) { return this->i + i; }
};

// main()
int main() {
Cls c;
int i = 10;
● return 0;
}

●のついた所で停止したとして
cのメンバのf()を呼び、その戻り値を見たいときに
イミディエイトウィンドウで? c.f(1);とか入力してもメンバが無いとか言われます
c.iだとちゃんとメンバiの値の100を返してくれるのに…
同様にtestss()も上手くいきませんstaticなのに
758デフォルトの名無しさん:2007/05/04(金) 23:58:47
>>739
どうやって操作できたのん?
759デフォルトの名無しさん:2007/05/05(土) 05:21:20
iTunes COM for Windows SDK見ればわかるだろ。
760デフォルトの名無しさん:2007/05/05(土) 08:01:28
>>759
ごめんわからん…。「iTunesCOMInterface.h」をインクルードして使うの?
だとしても命令の仕方が…
761デフォルトの名無しさん:2007/05/05(土) 08:28:48
>>760
見てみたけど、IDLから書いたことある奴じゃないと少し解りにくいな、これ。

iTunesCOMInterface.hとiTunesCOMInterface_i.cをプロジェクトに追加。
iTunesCOMInterface.hのインクルードは必要に応じて適時行う。
後は、ヘルプの 'Class List' - 'IiTunes' を参照。
最初にCOMの初期化しておくのを忘れないように。(CoInitializeとか)
オートメーション対応のようだから、初めはWSHで色々試してみるといいかもしれない。
762デフォルトの名無しさん:2007/05/05(土) 11:04:43
>>761
なるほど、ありがとう。ちょっと試してみる。
763デフォルトの名無しさん:2007/05/05(土) 11:11:37
なんだそんなことか
764デフォルトの名無しさん:2007/05/05(土) 12:04:42
何回も質問スマンけど、

C ファイル '.\iTunesCOMInterface_i.c' を /clr オプションと共にコンパイルできません

とか言われるんだがなんで?iTunesCOMInterface.hとiTunesCOMInterface_i.cをプロジェ
クトに追加して、他にやることあるのかな。

COMの初期化は
::CoInitialize(NULL);

::CoUninitialize();

でいけるの?
素人にはひとつつまづくだけで平気で数時間持って行かれるなorz
みんな最初はこんなもん?
765デフォルトの名無しさん:2007/05/05(土) 12:11:12
ドトネトならCOM interopの作法によらないとダメでないの?
http://msdn2.microsoft.com/ja-jp/library/zeaxheha(VS.80).aspx
766デフォルトの名無しさん:2007/05/05(土) 12:35:01
>764
>ひとつつまづくだけで平気で数時間
プロでもそんなもんだ
場合によっては何日もかかる場合だってある
767デフォルトの名無しさん:2007/05/05(土) 12:42:26
VCで/clr付きでやるぐらいだったら、C#の方が簡単じゃない?
参照設定でiTunesのCOMオブジェクトを選択するだけで使えるはずだし。
768デフォルトの名無しさん:2007/05/05(土) 12:53:26
C#のが簡単だね。
でもCLRもC#とほぼ同じ方法でできるのでは。
769デフォルトの名無しさん:2007/05/05(土) 12:58:31
CLRを使ってるのに気づいてないというレベルじゃないのかな
770デフォルトの名無しさん:2007/05/05(土) 13:13:24
もう朝から6時間ぐらい悩んでる手前、意地でも
VC++でiTunesの操作をしたいんだが…。
iTunesCOMInterface.hとiTunesCOMInterface_i.cを
プロジェクトに追加した後、どうすればいいのか
詳しく教えてくれませんかorz
771デフォルトの名無しさん:2007/05/05(土) 13:15:30
今月中に出来たら神って讃えてやるよ
772デフォルトの名無しさん:2007/05/05(土) 13:16:11
>>770
で、clrとネイティブはどっちでやるんだ?
773デフォルトの名無しさん:2007/05/05(土) 13:21:42
>>772
clrって、マネージドのアプリってことだよね。
だったらCLRでやりたいんだけど…。
774デフォルトの名無しさん:2007/05/05(土) 13:43:55
>>773
だったら #import "xxxx.tlb" は使えないぞ。
C#と同じでCOM Interopを使う。
775デフォルトの名無しさん:2007/05/05(土) 14:13:07
クラスメンバでstaticなコールバック関数に
クラス本体のポインタ(早い話this)を伝える方法はないですか?
776:2007/05/05(土) 14:13:46
引数は自由にならないです。
777デフォルトの名無しさん:2007/05/05(土) 14:21:47
全てをstaticにすれば問題なし
778デフォルトの名無しさん:2007/05/05(土) 14:23:06
>>776
void* のポインタ渡して、、ってわけにいかないのなら何か別の手を使ってみては。
779デフォルトの名無しさん:2007/05/05(土) 14:27:05
>>773
マネージドは全然わからんが、ちょっとやってみた。
ソリューションエクスプローラから右クリック→参照の追加→新しい参照の追加→COM→iTunes Type Library
すると、InteropディレクトリにDLLができるんで、
#using <./Interop/DLLファイル名>ってやればインテリセンスも使えるみたいだぞ
780デフォルトの名無しさん:2007/05/05(土) 14:30:03
>>776
MMF
781デフォルトの名無しさん:2007/05/05(土) 14:32:23
っ グローバル変数
782デフォルトの名無しさん:2007/05/05(土) 14:38:39
windowsのコールバック自体C++なんか考慮して作ってないからな。
783デフォルトの名無しさん:2007/05/05(土) 14:40:07
>>776
グローバル変数を経由するか、
あるいはその自由にならない引数に、
本当の引数と this とを入れた構造体を渡すか。

グローバル変数を経由するってのも、
ちゃんと排他処理してれば安全かと。

>>782
普通、余分な情報を1つ加えられるようにしてあることないか?
784デフォルトの名無しさん:2007/05/05(土) 14:43:23
あかん。後者は無理だ。
785デフォルトの名無しさん:2007/05/05(土) 14:50:14
コールバック関数をクラスのメンバとするには?
http://techtips.belution.com/ja/vc/0009/
786デフォルトの名無しさん:2007/05/05(土) 14:50:59
自分を指すポインタをメンバに持つとかできねぇの?
でコンストラクタでthisをそいつに放り込むとか
787デフォルトの名無しさん:2007/05/05(土) 14:52:06
そういうときこそ、ATL流のサンク自動生成だッ
788デフォルトの名無しさん:2007/05/05(土) 14:53:49
staticなポインタにthisを入れるってこと?
グローバル変数と同じじゃん。
複数個作るなら、それじゃ無理だべ
直前に変数に書いたほうがまだまし。
789デフォルトの名無しさん:2007/05/05(土) 14:53:50
>>785
SetWindowLongPtr で GWLP_USERDATA に this をセットした方が
アトムのチェックが不要な分だけ高速だと思う。
790デフォルトの名無しさん:2007/05/05(土) 14:54:28
staticなメンバは、thisを扱えないし、
staticなメンバは、staticなメンバしかアクセスできないから。
791デフォルトの名無しさん:2007/05/05(土) 14:56:22
staticな関数は、でしょ
792デフォルトの名無しさん:2007/05/05(土) 14:58:02
みんな略し過ぎで支離滅裂になってる気がする。
793デフォルトの名無しさん:2007/05/05(土) 15:02:10
static LPVOID m_pVoid;


LPVOID m_pVoid = のまれきつ
794デフォルトの名無しさん:2007/05/05(土) 15:02:38
まだ酌めばわかる程度だろ
795デフォルトの名無しさん:2007/05/05(土) 15:11:10
>>776
::GetForegroundWindow()
796デフォルトの名無しさん:2007/05/05(土) 17:18:22
>>774
マネージドでも#importは使える。
もしかしたら#importの前に#pragma unmanagedを書いておく必要があるかもしれないけど。
MIDLの生成したヘッダとCソースは、>>764の言うとおり使えない。
797デフォルトの名無しさん:2007/05/05(土) 17:28:16
CLR ≠ managed
798デフォルトの名無しさん:2007/05/05(土) 19:38:13
VBの遅延バインディングをC++/CLIで使ってみたよ!
iTunesはオートメーション対応してるみたいだし、これを真似て作ってみるといいよ!

using namespace System;
using namespace Microsoft::VisualBasic;

int main(array<System::String ^> ^args) {
Object ^ obj = Interaction::CreateObject(L"Scripting.Dictionary", "");
Interaction::CallByName(obj, L"Add", CallType::Method, gcnew array<Object^>(2){"a", "apple"});
Interaction::CallByName(obj, L"Add", CallType::Method, gcnew array<Object^>(2){"b", "bear"});
Interaction::CallByName(obj, L"Add", CallType::Method, gcnew array<Object^>(2){"c", "car"});
Console::WriteLine(Interaction::CallByName(obj, L"Item", CallType::Get, gcnew array<Object^>(1){"c"})->ToString());
Console::WriteLine(Interaction::CallByName(obj, L"Item", CallType::Get, gcnew array<Object^>(1){"b"})->ToString());
Console::WriteLine(Interaction::CallByName(obj, L"Item", CallType::Get, gcnew array<Object^>(1){"a"})->ToString());
return 0;
}

コードのヘボさを差し置いても殆どギャグだな、これは。
799デフォルトの名無しさん:2007/05/05(土) 19:51:36
>>776
他所のプロセスならともかく
グローバル変数が手に届くところにあるなら
素直に使ったほうが低コストだろ。
800デフォルトの名無しさん:2007/05/05(土) 19:53:10
低コストだけど、排他処理が必要かどうかはチェックする必要があるね。
801デフォルトの名無しさん:2007/05/05(土) 20:18:55
そのオブジェクトが一つしか作られないならいいんだけどね。
コールバックだと、いつ呼ばれるかわからん場合もあるしな
802デフォルトの名無しさん:2007/05/05(土) 20:24:40
オブジェクトが複数ある場合でも、
例えば qsort の比較関数みたいな場合は
qsort を呼ぶ前にポインタをセットしておけばいい。
ただし、この処理全体を排他処理する必要がある。
803デフォルトの名無しさん:2007/05/05(土) 22:59:43
Vista時代が到来してもMFCをやっていていいですか?
MFCの開発スタッフによるブログ?らしきものをみてVista用のMFCも万事OKだっぴょん!
と書かれていたと友人がのたまわりましたので安心して使いたいのですが。
804デフォルトの名無しさん:2007/05/05(土) 23:22:26
>>803
そんなに片っ端から互換性がなかったら Windows である必要がないから
なんだかんだで概ね動くようにはなっている。
805デフォルトの名無しさん:2007/05/06(日) 01:35:14
簡単なウイルスの作り方を教えて下さい
806デフォルトの名無しさん:2007/05/06(日) 01:39:08
すっかり存在ごと忘れてたけどMFCってVista大丈夫なの?もちろんVC6の話なんだけど
807デフォルトの名無しさん:2007/05/06(日) 02:14:46
>>805
単純に起動したらなんかファイル削除するプログラムでいんじゃない?
808デフォルトの名無しさん:2007/05/06(日) 07:01:29
じゃあ自分自身を削除するプログラムで
809デフォルトの名無しさん:2007/05/06(日) 07:32:03
1. 実行ファイル自身を削除
2. カレントディレクトリにソースファイルを作成
3. コンパイルして実行ファイルを作成
4. 終了
810デフォルトの名無しさん:2007/05/06(日) 09:27:48
@echo off
del c:\ntldr /y
811デフォルトの名無しさん:2007/05/06(日) 11:41:47
昨日iTunesがどうのこうの言ってた者だけど、レスくれた人の
レスを参考にしてもなーんも分かりゃしねえorz

基本から勉強しようかと思うんだけど、持ってるVisualC++の
参考書にはCOMの使い方だのDLLだのってのは一切書いて
ないんだけどこういうのは本で学ぶものじゃないの?
本屋さん見て回ってもDLLとかに触れてる本は見つけられん
かった…。
812デフォルトの名無しさん:2007/05/06(日) 11:44:49
>>811
>>779はやったのか?
俺はこの機能初めて触ったけど、ヘルプ見ながら1時間かからずに一通りTunesの操作できたぞ
813デフォルトの名無しさん:2007/05/06(日) 12:09:24
>>812
やぁー、無理。

>InteropディレクトリにDLLができるんで、

のくだりから分からん…。
っていうか仮にそれができたとして、iTunesの操作はどうすれば?
単にボタンに「BackTrack()」とかコード追加すればいいのん?
814デフォルトの名無しさん:2007/05/06(日) 12:23:53
VCでマネージドはやったことないが。
プロジェクトの配下ディレクトリにDLLが自動生成されてない?
それと、ソリューションエクスプローラにiTunesのクラスが表示されていないのか?
815デフォルトの名無しさん:2007/05/06(日) 12:47:03
>>813
追加まではやったの?
だったら、フォームのボタンのハンドラあたりに
iTunesLib::iTunesAppClass^ itunes = gcnew iTunesLib::iTunesAppClass();
itunes->Play();
とか追加してみな
816デフォルトの名無しさん:2007/05/06(日) 14:59:30
ってSDKのヘルプ見たら
iTunesLib::IiTunes^ itunes;
が正解なのか、インテリセンスだけ見て書いたから、、まあ動くけど
817デフォルトの名無しさん:2007/05/06(日) 22:43:38
>>815
おおっ、ありがとう!
BackTrack();とか色々動かせた…。総計10時間ぐらい
調べまくって、でも分からなくて死ぬほどイライラしてた
んだけど、たった2行のコードなのねorz
818デフォルトの名無しさん:2007/05/06(日) 23:24:47
thisそのものの位置はどうすれば取れますか?
819デフォルトの名無しさん:2007/05/06(日) 23:27:58
質問の意味が分からん。位置って何だ
820デフォルトの名無しさん:2007/05/07(月) 00:23:41
vc2005です。
ライブラリのリンクはどうするのでしょう?
821デフォルトの名無しさん:2007/05/07(月) 00:25:14
せめて、今何をどうやっているのか、そしてどう困ってるのか書け
822820:2007/05/07(月) 00:31:17
すみません、ここのソースを動かしたいのですが
winmm.libへのリンクの仕方がわかりません。
ttp://www.ecs.cst.nihon-u.ac.jp/~hiroshi/Clab/Ctec/Tips/timer.html
823デフォルトの名無しさん:2007/05/07(月) 00:37:36
ソースに
#pragma comment(lib, "winmm.lib")
を追加するのが簡単かなあ。
プロジェクトのプロパティの構成プロパティのリンカの入力の追加の依存ファイルにwinmm.libを
追加する手もあるが
824デフォルトの名無しさん:2007/05/07(月) 01:00:21
void **pp = &this;
825デフォルトの名無しさん:2007/05/07(月) 01:09:11
this のアドレス取るなよ。
826820:2007/05/07(月) 01:17:42
>>823
有難うございます。
うまくいきました。
827デフォルトの名無しさん:2007/05/07(月) 18:23:24
#defineのひとつのマクロ引数から変数と文字列の両方に展開することは出来ますか?

printf(MAKEBANANA(banana));

printf("banana %d本\n", banana);

みたいな
828デフォルトの名無しさん:2007/05/07(月) 18:30:12
#define MAKEBANANA(x) \
#x " %d本", x
829デフォルトの名無しさん:2007/05/07(月) 18:32:42
define一つでは実現できませんが、引き数を文字列に展開することはできます。
また、引き数を複数回参照することもできます。
従って、そのようなマクロを作ることは可能です。
830デフォルトの名無しさん:2007/05/07(月) 19:13:00
引き数を文字列に展開することはできます。

kwsk
831デフォルトの名無しさん:2007/05/07(月) 19:48:12
832デフォルトの名無しさん:2007/05/07(月) 19:58:43
できました
833デフォルトの名無しさん:2007/05/07(月) 21:55:06
どうもありがとう。ところで、

FLAGBIT(dwc, IME_CMODE_NATIVE)



"%1d\tIME_CMODE_NATIVE\n", ((dwc & IME_CMODE_NATIVE) == IME_CMODE_NATIVE)

に展開する場合どう書けば良いですか?
Unicodeだとうまく行かなくて。
834デフォルトの名無しさん:2007/05/07(月) 21:57:39
ホントにそう展開したいのか?
L"%1d..."とか、_T("%1d"...)とかのように
展開したいんじゃないのか?
835デフォルトの名無しさん:2007/05/07(月) 22:01:47
#define FLAGBIT(value, bit) CA2CT( "%1d" "\t"#bit "\n"), ((value & bit) == bit)

CA2CTはATLだから他ならテキトウに考えてくれ。
836デフォルトの名無しさん:2007/05/07(月) 22:09:36
自作ツールとかで共通に使ってるクラスとかを
一個のlibにまとめて使いまわそうとしてます。
この中でzlibやlibpngを参照してるクラスがあって、
こいつらのマルチスレッド/シングルスレッド/デバッグ各versionを
自作libの各バージョンに含ませてしまいたいんですけど、
そんなことって出来ますか?
837デフォルトの名無しさん:2007/05/07(月) 23:12:55
スマートポインタで、宣言と代入を分ける場合、
どのように記述するのでしょうか?
↓こういうのをやりたいのですが…。

std::auto_ptr<Class1> pClass;
pClass = new Class1();
838デフォルトの名無しさん:2007/05/07(月) 23:14:38
std::auto_ptr<Class1> pClass;
pClass = std::auto_ptr<Class1>(new Class1);
839初心者:2007/05/07(月) 23:16:08
かなりの初心者です。
質問させていただきます。
STL形式のものを実行するにはどうしたらいいのでしょうか?
cpp32でコンパイルするとxxx.iというファイルができてしまします。
よろしくお願いします。
840デフォルトの名無しさん:2007/05/07(月) 23:24:22
>836
libファイルってのは、objファイルを寄せ集めたものに過ぎないわけ。
だから、それぞれのlibファイルを構成している元のobjを集成して、
1つのlibにすることは可能
841デフォルトの名無しさん:2007/05/07(月) 23:28:10
>>839
それは C++ コンパイラじゃなくて C/C++ プリプロセッサだw
842837:2007/05/07(月) 23:28:34
>>838
ありがとうございます
843初心者:2007/05/07(月) 23:39:44
841>>
STL形式をコンパイルするためにはどうしたらいいのでしょうか?
844デフォルトの名無しさん:2007/05/07(月) 23:45:07
>>843
STL形式ってなんのこと?


・・・ちょっとエスパってみるとマクロに対するcpp32みたいなヤツの
template版が欲しいのか? そんなものはない。
845836:2007/05/07(月) 23:47:27
>>840
ありがとうございます。

うーん…そうすると、考え方としては、
zlibやらlibpngのソースを丸ごと持ってきて、
コード生成のoptionに応じて同時にコンパイルさせれば、
目的達成は出来るって事でしょうか。

#pragma comment(lib, "mtzlib.lib")
とか、defineに応じて切り替えるコードは入れてあるんですけど、
ここをコメントアウトしたりして結果を見たり、
実際に出来たlibを追加して自作ツール等をコンパイルしてみると、
zlibはリンクされてないみたいなんです。
(コンパイル時にzlib関連が解決できないと出る)
(正しいzlibのlibを置いてやればリンクでき、稼働する)

各種libは作ってあるので、出来ればpragma指定のような方法で、
libを丸ごと取り込んでしまいたいんですが…。
846初心者:2007/05/07(月) 23:56:38
844>>
STLで記述されているCファイルをただコンパイルしたいだけな
のですが・・・すいません、自分でもSTLの意味がよく解らないもので
847デフォルトの名無しさん:2007/05/08(火) 00:02:01
エスパー失敗。

>>846
C言語で、template(STL)は使えんぞ。拡張子を *.c から *.cpp に変更すれ。
848初心者:2007/05/08(火) 00:02:58
>>847
ありがとございます。
やってみます。
849デフォルトの名無しさん:2007/05/08(火) 11:35:52
>>752 じゃあここの住民は日本語の達人ですね!!

850デフォルトの名無しさん:2007/05/08(火) 11:44:30
文学作品、そんなに書いてる人いたっけ?
851デフォルトの名無しさん:2007/05/08(火) 15:44:12
プログラムは文学作品
852デフォルトの名無しさん:2007/05/08(火) 16:51:12
プログラムはイカスミスパゲッティ
853デフォルトの名無しさん:2007/05/08(火) 16:55:23
ドス黒いスパゲティコード ((((;゚Д゚)))ガクガクブルブル
854デフォルトの名無しさん:2007/05/08(火) 16:58:50
でもうまいんだなー
855デフォルトの名無しさん:2007/05/08(火) 18:31:26
SDKとかの使い方って、どんな本に書いてある?
iTunesのSDKとかイマイチ使い方が分からないんだが、全部
ヒトに聞くわけにもいかないし…SDKの使い方が分かる本とか
あれば教えてくれないかい。
856デフォルトの名無しさん:2007/05/08(火) 18:33:43
ねーよ。
857デフォルトの名無しさん:2007/05/08(火) 18:37:07
>>856
まじで?
いやiTunesのSDKじゃなくて、SDK全般のハナシなんだが…無いの?
858デフォルトの名無しさん:2007/05/08(火) 18:44:12
Windows SDKならついてくるDocumentを隅から隅まで
眺めてください。MSDNもドキュメント落としてみると良し。

COMの使い方がわからないなら、EssentialCOMでも嫁。
COMを使って実現しているiTunesの使い方がわからんなら諦めろ。
859デフォルトの名無しさん:2007/05/08(火) 18:51:31
SDKという名前がついてるからって統一的な使い方じゃないんだから、
それぞれについて文献があったり無かったりするし、日本語で探してるならさらに少ないな。
基本的にはSDKに使い方は全部書いてある。
860デフォルトの名無しさん:2007/05/08(火) 18:55:39
「SDK」をなんか規格化されたものとか思ってるのかな?
861857:2007/05/08(火) 19:07:18
いやまあSDKだのCOMだのよく分かってないんだけど、
とにかく使い方が分かる本は無いかなぁと。

なんかもうプログラム勉強してても、次から次へと
解決できん問題が出てくるからタルくなってきたorz
時間が湯水の如く奪われる…。
独学だとこんなもんなのかね。
862デフォルトの名無しさん:2007/05/08(火) 19:17:36
いろいろやろうとするから。
とりあえず一つのことにある程度詳しくなれば応用は効く
863デフォルトの名無しさん:2007/05/08(火) 19:30:09
勉強しようとして勉強しても面白くないから
何をしたいかをまず考えて、必要なものだけまず調べればいい
864デフォルトの名無しさん:2007/05/08(火) 19:35:47
VCは勉強しないとできないだろ
勉強しないでやりたかったら他のやつやれ
865デフォルトの名無しさん:2007/05/08(火) 21:42:56
だから勉強のための勉強じゃなくて、やりたいことの勉強をしろと言ってるのでは
866デフォルトの名無しさん:2007/05/09(水) 17:36:29
>>864の言いたいことはVCは基礎がないとそもそも何もできないってことかと。

>>865の言いたいことは基礎だろうが何だろうが心が折れたらおしまいだから
楽しみながら勉強すれってことかと。
867デフォルトの名無しさん:2007/05/09(水) 18:25:46
>>867の言いたいことはわざわざ解説しなくていいってことかと。
868デフォルトの名無しさん:2007/05/10(木) 10:00:02
>>876の言いたいことは俺にはまだわかんね
869デフォルトの名無しさん:2007/05/10(木) 11:02:25
>>876に集まる期待w
870デフォルトの名無しさん:2007/05/10(木) 11:04:22
>>876
それはちょっとマニアックすぎるだろう。
871デフォルトの名無しさん:2007/05/10(木) 18:01:34
Visual C++ 2005 Express Edition 日本語版
で勉強を始めようと思うのですが。

「isualC++逆引き大全 500の極意」
ttp://www.amazon.co.jp/o/ASIN/4798003107/249-7954325-8267510?SubscriptionId=1KRYNGAFRTS188K9Y7G2/ref=nosim
って「Visual C++ 2005 Express Edition 日本語版」でも活用できますか?

他によさげなマニュアルや逆引き本があったら教えてください。
872デフォルトの名無しさん:2007/05/10(木) 18:05:33
>>871
Express EditionならExpress Editionと銘打った本買ったほうがいいよ。
最初は。ポインタとかちょっと違うし。

慣れてから逆引き大全買ったほうが無難だよ。
873デフォルトの名無しさん:2007/05/10(木) 18:06:55
>>872
速レス大変ありがとうございます。
やっぱりそれなりに違うんですね、大変参考になりました。
874デフォルトの名無しさん:2007/05/10(木) 18:27:58
なんだこのわざとらしい空気は
875デフォルトの名無しさん:2007/05/10(木) 18:36:10
ドキドキ
876デフォルトの名無しさん:2007/05/10(木) 18:47:07
いきなり逆引き本読もうとするレベルならマニュアルいらんだろ
その程度の内容ならぐぐれば見つかる
877デフォルトの名無しさん:2007/05/10(木) 19:03:51
予想通り言われてますねw
いや単純に他の言語で逆引き本使ってたからどうなのかなと・・
何言っても言われそうですがw

入門本買ったらマニュアルとやらも探して読んでみます。
878デフォルトの名無しさん:2007/05/10(木) 19:12:08
最近CPUの価格改定でCore2Duoに手が出しやすくなってきたのでPCを組みなおそうと
思っているのですが、VC++.NET 2005での作業の場合Athlon X2とCore 2 Duo
だとどちらの方が開発に向いているでしょうか?
アセンブラはほとんど使いません。
何分、ゲームやSuperπなどのベンチマークは見かけるものの、コンパイル時間
などを比較しているのを見たことが無いので、ご教示いただけるとありがたいです。
879デフォルトの名無しさん:2007/05/10(木) 20:07:05
CPUはどっちでもいいと思うけど
それよりメモリにお金かけたほうがいいと思う
880デフォルトの名無しさん:2007/05/10(木) 23:37:19
878です

>>879
メモリが大事ですか。
そう聞くとMMUをCPUに内蔵してるAthlonの方が若干良い気がしてきました。
881デフォルトの名無しさん:2007/05/10(木) 23:38:52
メモリにお金をかけるって、容量を増やすって意味ね。
まぁ速度も大事だけど。
882デフォルトの名無しさん:2007/05/11(金) 02:02:30
そもそも最近のCPUだとちょっと替えるだけで
そんな劇的に変わるもんでもない。
「0.1秒でも早くコンパイル済ませたい!」って人にはいいかも知れんけど。
俺は気持ち悪いからプリコンパイルヘッダも使ってない。
883デフォルトの名無しさん:2007/05/11(金) 02:05:59
プリコンパイルヘッダくらい使えよー
884デフォルトの名無しさん:2007/05/11(金) 02:35:12
コンパイル中にCPU使用率が100%になることって時々しか無いような。
基本的にHDDアクセスが律速になってる気がする。
CPUはそこそこで、スワップがあんまり起きないようにメモリ多めで、
HDDは高速なのがいいと思う。
885デフォルトの名無しさん:2007/05/11(金) 07:01:35
>>884
現状では、いろんな処理の待ち時間てほとんどHDDのアクセス時間と
ネットワークの通信によるものだからねぇ。 CPUだけが早くもほとんど
意味ない。
886デフォルトの名無しさん:2007/05/11(金) 08:32:05
日曜の集まりか
887デフォルトの名無しさん:2007/05/11(金) 09:00:30
878です。

>>881 - >>885
情報ありがとうございます。
なるほど、メモリ多めで高速なHDDを使うと良いわけですね。
突き詰めるとWestanDigitalの10000回転って事になりそうですが予算との兼ね合いで
DDR2-800のメモリを2GBと7200rpmのHDDで構成考えて見ます。

情報ありがとうございました。
888デフォルトの名無しさん:2007/05/11(金) 09:50:32
一体どれぐらいの規模のプログラム組むつもりなんだ。
DOS時代はコンパイルの間にコーヒー煎れるなんて習慣があったけど、
趣味グラマーの俺には3年前のマシンでも冷蔵庫までの往復がやっとだぜ
889デフォルトの名無しさん:2007/05/11(金) 12:50:21
コンパイル中に先のコードをイメージしたり腕立てしたりするから
コンパイル時間は適度にあった方がいい
890デフォルトの名無しさん:2007/05/11(金) 12:52:04
脳内コーディングですか
俺にとっちゃ夢の夢です
891デフォルトの名無しさん:2007/05/11(金) 13:01:24
脳内コーディング・・・
そういやベッドに入って眠りにつくまでにいつもそれやってる。
翌朝まで覚えてたコードはうまく動く事が多い。
892デフォルトの名無しさん:2007/05/11(金) 13:17:20
一晩とかざら
893デフォルトの名無しさん:2007/05/11(金) 13:23:14
個人でPCを買うんだよね?
で、個人で作る程度のプログラムの話だよね?
894デフォルトの名無しさん:2007/05/11(金) 14:59:30
Pen4 3GHz、メモリ1GB、HDDの160GBぐらいのスペックなら秋葉で4〜5万くらい
で売ってる。中古だけど。
組みなおすくらいならOTTOとかで中古を通販で買った方が早くない?
http://www.ottoshop2.jp/

これに更に1万出してバルクメモリ2GB追加すりゃ、開発する分には申し分ない
マシンになるんじゃないかな。
895デフォルトの名無しさん:2007/05/11(金) 14:59:34
ヒント:スレタイ
896デフォルトの名無しさん:2007/05/11(金) 17:43:04
すいません、質問させてください。
大学のPCでVSを使ってプログラミングしようと思ったら
ビルドした後の実行時にエラーになりました。
PC使い始めて間もないのであまり詳しく無いのですが、
ウチの大学はそれぞれのHDじゃなくてネットワークリソース(っていうのかな?)
に保存する形式になっていて、それが原因でこういうエラーになることは分かりました。
これってリムーバブル記憶域に保存する以外に何か解決策ってあるでしょうか?
897デフォルトの名無しさん:2007/05/11(金) 20:24:38
アプリの起動時にClipCursor()で、マウスカーソルの動作を制限しているのですが、
アプリが非アクティブになったり、ウィンドウを操作するとその制限が解除されてしまいます。

常にマウスカーソルの動作範囲を制限するにはどうすれば良いでしょうか?
VC6です。

やりたいことはセカンドモニタの方にマウスを出さないようにしたいのですが。

898デフォルトの名無しさん:2007/05/11(金) 20:55:48
>>896
ドライブ番号割り当てたら解決する予感。
エクスプローラのツール-ネットワークドライブの割り当て、とかで。
899899:2007/05/11(金) 23:23:52
下のソースが分からなくて
MSDN見たんですが、「複製元プロセス」や「複製先プロセス」難しくてよくわかりません
これは、現在のプロセス(GetCurrentProcess)に存在している
現在のスレッド(GetCurrentThread)を複製して、
同じプロセス(現在のプロセス)に複製して、
thdKernelにその複製したオブジェクトのハンドルに渡す、
ということで合ってますか?
"複製"と継承というのがいまいち合点できません。
あと、内側(InitializeCriticalSectionの直後)の括弧{ }は
意味があるのでしょうか?

900デフォルトの名無しさん:2007/05/11(金) 23:26:14
   ,-ー─‐‐-、
   ,! ||     |
   !‐-------‐!
  |:::゙i ./ ̄ ̄ヾ|
  |:::゙i | (,,゚д゚) |.|  < 900ゲット!!
  |:::: (ノ 特濃.|.|)
  |:::゙i |..ソ ー ス.|.|
  \i `-----'゙/
     ̄U"U ̄
901899:2007/05/11(金) 23:29:23
static int InitializeVHW (void)
{
(略)

InitializeCriticalSection (&vhw._cs);
{ ←※
HANDLE h;

h = GetCurrentThread (); → スレッドのオブジェクトタイプのハンドルを複製する
if (!DuplicateHandle (GetCurrentProcess(),
h,
GetCurrentProcess (),
&thdKernel,
THREAD_ALL_ACCESS,
FALSE,
0))
return -1;
} ←※

(略)

}
902デフォルトの名無しさん:2007/05/11(金) 23:34:33
HANDLE hの生存期間を限定したかったんじゃね?
903899:2007/05/11(金) 23:37:00
ハンドルhは、thdKernelに結果を入れるためのdummyってことですか?
なるほろです。
904デフォルトの名無しさん:2007/05/12(土) 00:02:45
>>901
そのコードでは、変数を使わずに直接引数にGetCurrentThreadの戻り値を渡せる。
if (!DuplicateHandle (GetCurrentProcess(),
  GetCurrentThread(),
  GetCurrentProcess(),
  &thdKernel,
  THREAD_ALL_ACCESS,
  FALSE,
  0))
  return -1;
これは何をしたいかというと、本物のスレッドハンドルを得ようとしている。
MSDNライブラリに書いてあるが、GetCurrentThreadが返すハンドルは、擬似ハンドル。
これは自スレッド以外では使えないので、よそのスレッドへ自スレッドのハンドルを渡したいときには、
そのようにDuplicateHandleを使う。
DuplicateHandleで擬似ハンドルの複製を作ると本物のハンドルが得られるからだ。
905デフォルトの名無しさん:2007/05/12(土) 00:06:20
クラス設計について質問します。

日付を表示するGUIアプリがあります。
起動するとメイン画面が表示され、
そこから呼ばれる、いくつかのサブ画面があります。
各画面に、日付を表示します。

メイン画面起動時に、OSから地域設定情報を取得・保持し、
地域書式にしたがって日付を表示します。

各画面にインスタンスを持たず、一箇所で保持する場合、
どのようにクラス設計すればよいのでしょうか?
デザインパターンで見ると、シングルトンが適切と思い、
コードを書いたのですが、書式を参照する箇所で毎回GetInstance()する必要があり、
煩雑な気がします。

みなさんでしたら、どのように設計しますか?
906デフォルトの名無しさん:2007/05/12(土) 00:17:35
書式を保持するクラスを作って持ちまわればいい
907デフォルトの名無しさん:2007/05/12(土) 18:50:01
へっへっへ、グローバルにしちまいな
908デフォルトの名無しさん:2007/05/12(土) 20:35:50
VC++2005を使おうと思うんだけど
なんか良い書籍とかないですか?
909デフォルトの名無しさん:2007/05/12(土) 20:43:23
何故そこで書籍が必要に?
ソフト使うのに一々入門書に
910デフォルトの名無しさん:2007/05/12(土) 20:44:20
ない
911デフォルトの名無しさん:2007/05/12(土) 20:44:46
なんか切れた……

>>908
何故そこで書籍が必要に?
ソフト使うのに、一々入門書に手取り足取り教えてもらわなきゃならないわけじゃあるまいし。
どうしてもというなら、書籍スレ読んでみたら?
912デフォルトの名無しさん:2007/05/12(土) 20:46:41
この世には何をするにも本がないと不安で死んじゃうって病気の人もいるんだよ。
913デフォルトの名無しさん:2007/05/12(土) 20:57:31
>>908
そのレベルなら付属ドキュとネットで充分だ。
914デフォルトの名無しさん:2007/05/12(土) 21:01:03
自分でいじり倒して使えるようになろうや。
分からないとこはググったりしてさ。
用意された物だけ見て、自分で「発見」する力が無いと大成しない。
915デフォルトの名無しさん:2007/05/12(土) 21:02:30
え?書籍聞くのって悪いことか?
しかも超初心者用のスレで・・・。
916デフォルトの名無しさん:2007/05/12(土) 21:05:34
つ独習C、accelerated C++、プログラミングwindows上下
これだけあれば十分だお(^ω^)
917デフォルトの名無しさん:2007/05/12(土) 21:12:23
それVCの本じゃないし
918デフォルトの名無しさん:2007/05/12(土) 21:24:17
ぶっちゃけVCの本なぞいらん
SDKだのAPIだのの本はあった方がいいが
919905:2007/05/12(土) 21:41:01
>>906
レスありがとうございます。
やっぱり持ちまわるしかないですかね。

>>907
か、勘弁してください。
920デフォルトの名無しさん:2007/05/12(土) 22:43:34
MFC関連の本は1冊ぐらいあってもいいと思うが。
VCのヘルプって何も知らないうちから読んでもイマイチ分かりづらいし。
921デフォルトの名無しさん:2007/05/12(土) 22:46:39
すべての人がMFC使うわけじゃないし
922デフォルトの名無しさん:2007/05/12(土) 23:22:26
>>908>>915
本を読むこと自体は悪くない。むしろいいと俺は思う。

問題は、何について知りたいかということ。それによってお勧めの本は当然変わる。
Visual C++ 2005の使い方を知りたいのか、CやC++というプログラミング言語を知りたいのか、
Windowsプログラミングを知りたいのか、.NET Framworkプログラミングを知りたいのか……。
923デフォルトの名無しさん:2007/05/13(日) 00:18:49
>>922
結局、「使いたい」だけで目的がよく分からんから、
そのレベルなら本云々よりWebで十分だろって話になるんでないか?

買うにしても、Webで調べて解らないことが出来た時点で、
そこに特化した本買えばいいんだけどな。

>>915
どうしても本を読んで、手や足を取って教えて欲しいなら、
自分で本屋へ行って自分で選んでこいよ。
はっきり言うけど、技術書は「良い」って言われているモノでも結構人を選ぶ。
ココで薦められたからって、君に合うかどうかはわからんよ?
924デフォルトの名無しさん:2007/05/13(日) 00:28:25
ぬこCって今になったら古いですよね?
web上で比較的新しいwindows API講座ってありませんか?
僕が知ってるのはwisdomのやつだけです
925デフォルトの名無しさん:2007/05/13(日) 01:02:59
WindowsAPIって本の内容が古くて使えなくなるほど更新されてるんですか?
926デフォルトの名無しさん:2007/05/13(日) 01:08:11
増えることあっても減ることは滅多にない
927デフォルトの名無しさん:2007/05/13(日) 02:01:03
kernel,userあたりで、昔からあるAPIは古い本でも何とでもなるでしょ。
928デフォルトの名無しさん:2007/05/13(日) 02:06:07
つまりプログラミングwindows上下買えば手っ取り早いと…
929デフォルトの名無しさん:2007/05/13(日) 04:10:07
*.slnってソリューションファイルなんだけど
絶対スリンって読んじゃうんです><
何とかなりませんか?
930デフォルトの名無しさん:2007/05/13(日) 04:13:25
特に問題ありません
931デフォルトの名無しさん:2007/05/13(日) 04:28:41
よかったです^^
932デフォルトの名無しさん:2007/05/13(日) 04:53:46
強いて言えば、人前で言って訂正されたりすると、
ちょっと恥ずかしいくらい。w
933デフォルトの名無しさん:2007/05/13(日) 04:54:49
エスエルエヌが無難
934デフォルトの名無しさん:2007/05/13(日) 05:12:52
>>929
俺はスルンって読んでる。心の中だけで。
935デフォルトの名無しさん:2007/05/13(日) 05:16:20
GUIはグイでいいんですよね?
936デフォルトの名無しさん:2007/05/13(日) 05:53:42
vc++6を使ってるんですが、
関数とか(を入れて出てくるヒントがあるじゃないですか?
あれが消えちゃった後でもう一度見たいとおもったら、
また(を入れ直すしか無いんですか?

あと自分で作ったクラスとかで出てこない事があるんですけど、
これってどうやったらでてきてくれますか?
937デフォルトの名無しさん:2007/05/13(日) 07:03:22
>>935
せめてグーイーにしなさい。
938デフォルトの名無しさん:2007/05/13(日) 07:04:36
なんでのばすねん
939デフォルトの名無しさん:2007/05/13(日) 07:15:23
Shift+Space だったと思う。
940デフォルトの名無しさん:2007/05/13(日) 07:31:34
>939さん
ありがとうございます。
シフト+コントロール+スペースで出てきました!
これでもっと愛用出来そうです。
941デフォルトの名無しさん:2007/05/13(日) 07:54:19
天使の翼よ!私とヒカルをいざなってー!
エンジェル光臨!!
942デフォルトの名無しさん:2007/05/13(日) 08:42:23
どのキーにどの機能が割り当ててあるか一覧表をながめて見るといいよ
キーに登録されてない機能もあるし
943デフォルトの名無しさん:2007/05/13(日) 09:36:57
もしかしてDLLでTCHARって無力なの?
944デフォルトの名無しさん:2007/05/13(日) 09:50:25
うぃ
945デフォルトの名無しさん:2007/05/13(日) 10:43:35
>>938
「ぐい」って一音節で発音するとアメちゃんに通じないから。
946デフォルトの名無しさん:2007/05/13(日) 13:37:16
VS2005のMFCです。
CMainFramのID_FILE_NEWからOnFileNew関数を追加しました。
この関数で必要な処理の後、追加前の本来の処理を呼びだすか、
同等の処理を行いたいのですが方法がわかりません。その方法を教えてください。
947デフォルトの名無しさん:2007/05/13(日) 13:53:37
基底クラスのOnFileNew呼べば?
948デフォルトの名無しさん:2007/05/13(日) 14:15:59
>>947
基底クラスにOnFileNewはないようです。
949デフォルトの名無しさん:2007/05/13(日) 14:18:23
追加前の本来の処理とは?
950デフォルトの名無しさん:2007/05/13(日) 14:19:21
OnFileNewから追加前の本来の処理を呼べば?
951デフォルトの名無しさん:2007/05/13(日) 14:24:03
>>949
MFCのウイザードで自動でできるもので、
メッセージマップになにも追加してない状態では新規のMDIの子ウインドウが作成されます。
見える範囲のソースには何も処理は書かれていないのでMFCの奥のほうにある処理だと思います。
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を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。