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の有用な使い方を検証しましたが、
やればやるほど意味がないのではという考えに傾きます。
大変限定的な質問ですが、
よければ本を持ってる方、もしくはよく知ってらっしゃる方でわかる方がいれば
教えていただけないでしょうか?
DCに選択中のGDIオブジェクトは破棄できないから。
204 :
デフォルトの名無しさん:2007/02/08(木) 18:31:55
ほんとだあ
あちこち書き込むと早く回答がもらえるよ〜俺って頭いい〜とか思ってるのかね。
>>206 そのリンク踏んでも問題はありませんか?
自分の環境で支障がでると困るので
208 :
デフォルトの名無しさん:2007/02/09(金) 10:29:48
あっちこっちかいたらあかんのか、ぼけ。
二箇所しか書いてへんし、掲示板のタイトル選んで書いてるし、
回答は少しでも速いほうがいいし、
もしかしたらいろんな答えがあるかもわからんし、
それを知りたいのは普通やんけ。
誰も頭がいいなんか思うか。
そういう発想にいたるお前は自分が悲しくないんか。
まあ、ここでそんなやつにかまってる自分が悲しいけど。
気分が悪いんでもうこんなところに質問書いたりしません。
どうも何らかの答えになるようなことを書いてくださった方はありがとうございました。
もうくるなよ
質問です。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の下
を潜り抜けるようなのがよいです。
よろしくお願いします。
こういう向いてないやつはどうしたらいんだろうね
本人が悟ってくれるといいけど
>>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文等で何回も実行させたいのですが、どうすればよいのでしょうか。
これなら低級エスパーでも答えられるな。
>>213 普通のCのプログラムならそんな感じだろうけど
Windowsだからね
最低限の基礎知識がないとこれから大変だと思うよ
手取り足取り面倒みてくれる人がいるといいね
S""って、マネージリテラル文字列?C++/CLIか?
初心者です。
超アホな質問で申し訳ないんですがよろしくです。
VistaにてVS2005Expressを使おうと思ってます。
一応本体+SP1(MSUpdateにて)とSP1Update4Vista(β版)とやらをインスコしてみました。
・・がこれでSP1は適用できてるんでしょうか?
確認方法がわからないんですorz|||
バージョン情報にはSPの文字は見えませんでしたが・・
また、Vista上の2005でビルドすると文字コードエラーが連発しますが、
なんとなくSP1では対策済みとの情報があったような気がしてて、
SP1が適用できてないのでエラーが残ってるのかなぁとか思ってるわけですが、
実際のところどうなんでしょうか?
SP1にしたからって文字コードエラーが消えるわけではないのか、
それともSP1自体適用されてないのか・・
どうかよろしくお願いします!!m(_ _;;)m
>>213 label->Text += S"rld";
219 :
213:2007/02/09(金) 23:40:38
>>216 よくわかりませんがVC++.NETでwinフォームアプリケーションを作っています。
>>218 ビルドすると
'+':__gcポインタ 'System::String __gc *'に対してポインタ演算ができません。
とエラーがでてしまいます。
一つの入れ物に二つ入れようとしたら
前に入れたのがでて、後から入れたのが残るよ
221 :
213:2007/02/10(土) 00:13:25
String* ss;
ss = System::String::Concat(S"hello wa", S"rld");
label->Text = ss;
とすれば表示させることができました。
一応問題は解決したのですが、もしこれより効率的な書き方があれば
今後のために教えてください。
>>221 MASM6.3?
だったら
MOV ES・SI、ソース
MOV DS/SI、ですちねーしょn
MOV ECX、カウント
REP MOV
コンパイラ様より効率的なんだろうか
>>223 昔DECのフォートランでDOループで定数を埋めるプログラムを作ったら
逆アセンブルしたら全部クリア命令だった
>>222 rep movsb だろ。
ていうか、そもそもCLIか。
>>221 大量の文字列連結用にSystem.Text.StringBuilderってのがあるけど、
二つ三つ繋ぐのには大げさすぎだな。
227 :
デフォルトの名無しさん:2007/02/11(日) 17:15:26
乱数を取りたいんですが
Random random = new System::Random();
int ran = random.Next(100);
ではコンパイルできないんですがどうしたらいいですか?
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)。
猫でもわかる…の他にWin32SDKでダイアログベースアプリケーション
の作り方を解説しているところを教えてください。
WisdomSoft
>>231 ありがとうございます。
ハード + たまにファーム屋なので、すぐ壁にぶち当たると思うけど
頑張ります。
C++とは直に関係なくリソースエディタのことなのですが
メニューをリソースエディタで作る時に
最初にメニュー項目に割り振られたIDをメニューエディタで変えても
resource.hに繁栄されないのですけど そういう仕様なんですか?リンクしてない?
リソースシンボルを見ると書き換えたはずの前のIDも使用中になって消すことも
できませんし……
自分でresouce.hを書き換えるものなんでしょうか?
グラフィカルなメニューエディタとresouce.hの関係がよくわかりません
環境はVS2005stdです
それあるね。素直に変わる時もあるけど、バグのような気がする。
235 :
233:2007/02/13(火) 01:55:09
>>234ということは 本来はメニューエディタで変えたIDはリソースシンボルや
resource.hに反映されるものなのですね
勝手にresource.h書き換えるとVSに怒られるし……
何度か再起動してれば連動することもあるということですね
sp1も充ててるんですけどね
明日 試してみます
自分が作ってるのと関係ない窓(例えばIE)を移動させることって可能でしょうか?
可能です。
VS2005STD-VCの
アイコンエディタの色の並びは
どういう根拠で決定されたものなのでしょうか?
正直、あの並びをデータとして持っているのが無駄に思えます。
VGA(640x480,16色)の初期パレットじゃね?
って、256モードか
あれはわかんね
WebSafeColorの216色+WindowsSystemColorの32色+αじゃないのかな。
要は、255を5等分した6濃度をRGB3プレーン分展開したのがWebSafeColorの216色で、
ウィンドウ枠なんかに使っているのがWindowsSystemColorの32色。
MFCのOnTimerイベントの処置中は他のボタンなどのイベントを受け付けない
(OnTimer内の処理が終了後に他のイベント処理)動作は可能でしょうか?
OnTimer内でメッセージループ回さなきゃ、そういう動作になると思うが。
245 :
243:2007/02/19(月) 20:50:43
>>244 イマイチOnTimerの処理について把握してないのですが、OnTimer内の
処理が終わるまではボタンイベントの処理等には行かないって事でいいのでしょうか?
246 :
243:2007/02/19(月) 20:52:58
あ〜すいません。
行かないってか、貯まったメッセージキューの処理とかしなきゃ行けないですね。
247 :
デフォルトの名無しさん:2007/02/20(火) 11:37:39
これからどうやって勉強すればいいですか
Cに関する知識0です。
今まではどうやって勉強して、どこまでいったのだ
諦めて樹海にでも行けばいいんじゃね?
関数が多くなって非常に醜いソースファイルがあるのですが、
ほかのファイルにいくつかの関数をもっていき、それをメインのソースファイルから利用したりはできませんか?
つ ヘッダ
>>250 ほかのファイルにいくつかの関数をもっていき、それをメインのソースファイルから利用
すれば出来る。
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」を再生したいのですが・・・
>>253 mci使ったことないし、曲再生もやったことないけど、気づいた点を一つ。
closeしないうちに再openできるの?
単純に、oo.mp3がopenされたままだからxx.mp3でopenできてないんじゃない?
255 :
253:2007/02/22(木) 14:35:39
>>254 すんません、書いてなかったです。
WM_DESTROYの中でcloseはしてあります。
256 :
254: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をコメントにしてやってみると。
257 :
253:2007/02/22(木) 15:05:31
>>256 出来ました、サンクスです。
てっきり、closeは最後にアプリ閉じるときだけすればいいと思ってました。
そっかー、一旦、close 要るんだったのか。
どうもです。
VC++の古いやつ(5.0 Ent)使ってるんだけど
SDKで
case WM_PAINT:
return 0;
この2行が入っていると、
何故か(左上のアイコンをクリックして出す)システムメニューの
表示が遅くなったり、配置したコントロールの反応が遅れたりする
(例えばチェックボックスをクリックしてもチェックマークが入るのが遅い)。
この2行をコメントにすると直る。
これって、普通なのかな?
今更なんで5.0かって言われそうだけど
WindowsのWM_PAINTで再描画が行われない
(正確には更新リージョンが空にならない)と、再びWM_PAINTが投げられる。
だから例えばDefWindowProcの中ではWM_PAINTに対し
ただBeginPaintとEndPaintだけを呼んで更新リージョンを空にしていると、
Programming WindowsかAdvanced Windowsのどっちかに書いてあった。
windowsアプリケーションでアイコン作ったものの
コンパイルしても表示されないんですが
設定の仕方があるのですか?
俺様のエスパー能力を駆使した感じでは、
元々リソースを含まなかったプロジェクトに対して、アイコンファイルだけを直接追加した予感。
リソースファイル(*.rc)とresource.hがプロジェクトに含まれているか?
通常は、リソースファイルを追加した後、
そのリソースファイルに対してアイコン等を追加する。
残念ながら含まれてます
ただ今気付いたんですがフォルダの表示をアイコン表示にすると
ちゃんと表示されます
一覧表示や詳細表示などでは表示されないんですがこれもしかして仕様ですか?
諦めずに再エスパー。
アイコンの内32x32の方だけ書き換えていて、16x16は空のまま、とか。
イメージ - 現在のアイコンイメージタイプ をチェックしてみ。
>>263 遅くなってすいません
見事にそれでした
エスパーさんありがとう!
エスパーされるってことは、質問の情報が不足してるってことだぞ
つまり、馬鹿にされているってこった。
関係ないけどFLVPというフリーソフトも小さいアイコンの表示が変だ
大きいやつは赤いアイコン、小さい方はMFCの青いアイコン
昔からそうだけど、MFCの吐き出す既定コードが手抜きだから。
LoadIconしたアイコンを大小両方に割り当てる所為で、
タイトルバーには16x16では無く、32x32のアイコンが縮小されて使われている。
両方描くのが面倒な時は、どちらか一方を削除しておくのが無難だな。
>>269 最初から16x16も作ってくれちゃうしなあ
アイコン作ったときは、小さいほうはとりあえず消して
小さいアイコンの見栄えが気になってから追加するようにしてる。
271 :
デフォルトの名無しさん:2007/02/27(火) 19:27:48
ソースが同封されてるツールがあって、自分でVisual Studioで
ビルドしてみたのですが、同封されているexeと比べると何故か
サイズが大きいのはどう言ったことが原因と思われるのでしょうか?
あと何個か警告が出たのですが、一応exeが出来ています。
どんな警告も出ないように作ると勝手に想像していたのですが
ある程度の許容範囲内の警告が出るくらいは無視されるものなのでしょうか?
よろしくお願いします。
さあ
作成者とまったく同じコンパイラと
作成者とまったく同じコンパイルオプションと
作成者とまったく同じライブラリをリンクすれば
たぶん同じサイズの実行ファイルになるんじゃないかな
覆水盆に帰らず
同じCPUで、同じOSな必要もあるんじゃね?
size = GetFileSize( hFile, NULL );
SetWindowText(label,(char)size);
こんな風に書いて、sizeにhFileのファイルサイズを
スタティックコントロールのlabelに表示したいんですが、
labelの表示が変わらないんです。
(char)を取ると、めちゃくちゃな文字列が出ちゃう。
これ、このスレでいいんかな?
SetWindowTextなんだからテキストを渡さないと
VisualC++2005ExpressEditionを久々に起動しようとおもったんですが
”一つ以上のコンポーネントがみつかりません。再インストールしてください”
とでて、
アンインストールしようとしてもなにかのファイルがみつからないとかいうエラーがでてアンインストールできず
それでも再度インストールしようと試みたらエラーとおもわれるものがでました。
以前にはしっかりと登録もしたはずなんですが
どうすればいいでしょうか。
パソコン買い換え
最後の手段っぽいけど、Windows Installer CleanUp ユーティリティを使う、とか。
サポート技術情報を文章番号290301で。
SetFilePointer(hFile,1,NULL,FILE_BEGIN);
ReadFile(hFile,buf,3,&readsize,NULL);
buf[3] = ('\0');
教えてください。
上のように書いて、hFileのファイルの先頭3バイトを読み
そこにヌル文字を加える、これで先頭3バイトを受け取りたいんです。
でも、これだと2バイト目+3バイト目+ヌル文字になってしまいます。
相当馬鹿なことしてるかもしれませんが・・・
>>281 >SetFilePointer(hFile,1,NULL,FILE_BEGIN);
先頭から読みたいなら0じゃない?
SetFilePointer(hFile,0,NULL,FILE_BEGIN);
この世はすべて1から始まっている
という世界ですな
284 :
281:2007/03/01(木) 14:36:34
>>282 どうもです。できました。
かなり馬鹿なことしてたんかな?
また、質問するかもしれないんでよろしくお願いします。
ここでいいかどうかよく判らないですが、質問です。
Web ブラウザから起動される Java アプレットがあり、そこに表示されている情報を
現在作成しているツール(Visual C++ .NET, ダイアログ)から読み取ろうとしています。
・アプレットのクラス名を指定して FindWindow()
・EnumChildWindows() で子ウィンドウを列挙
・子ウィンドウに対して GetWindowRect() や GetWindowText()
という感じで、ラベル(SunAwtLabel)のキャプションは GetWindowText() で取得できるんですが
エディットボックス(Edit)の現在の値が取れません(""となります)。
また、コンボボックス(ComboBox)もあるんですが、これは値の取り方すら分かりません。
エディットボックスとコンボボックスの現在の値を取得するには、どうしたらいいでしょうか?
みためがエディットボックスとコンボボックス
VC2005ってPDBの埋め込みできないの?
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 の所の比較が変なんでしょうか?
C++とDelphiどっちが簡単なわけ
>>288 > SetFilePointer(hFile,1,NULL,FILE_BEGIN);
0から数え始めるからこれでは最初の1バイトを飛ばすことになる
> SetFilePointer(hFile,0,NULL,FILE_CURRENT);
無意味
> if (buf==0x01)
上を治したとして、buf[0]に書き込まれているはずだからif (buf[0] == 0x01)では?
実験ならいいけど
こまぎれで読んだらパフォーマンス悪そうだな
実験する場合はデバッガ使った方がいい
293 :
288:2007/03/02(金) 10:07:08
>>290 thanxです、buf[0]だったんですね。
それにしてもこのスレで教えてもらうたびに
自分の実力の無さを感じてしまう。
実力以前の話だから気にするな
イイハナシダナー( ;∀;)
イイハナシダナー( ;∀;)
イナバウアー( ;∀;)
>>289 GUIアプリを作るなら
Delphi>>>(超えられない壁>>>VC++(MFC)
やりたいことができなくなったらVC++へ。
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の何処を弄ったら良いのでしょうか?
ひろってきたソース弄ってるのは勉強とは言わない
>>300 プロジェクトのプロパティ → 全般 → 文字セット → マルチバイト文字セットを使用する
にしてみる。
または、
wsprintf(str, TEXT("%02d:%02d:%02d"), st.wHour, st.wMinute, st.wSecond);
にしてみる。
第一引数にはLPTSTRを渡さないと
>>302 「strの宣言をstatic TCHAR str[256];に直す」が抜けている。
これくらい警告やエラーになりそうな気がするんだがな。
常に/W4 /Wp64付けておけ。
糞サイトの無料サポートをほいほい引き受けるお人良しがいたとは
307 :
300:2007/03/04(日) 22:14:39
>>302-303,
>>305 ありがとうございます、出来ました!
今までbccだと通っていたので気にしていませんでしたが、
VCだと型に対してキビしいのですね。
仮引数の型を教えてくれる機能があるようなのでこれからは気をつけます><
またプロパティで警告のレベル等を変えられるのも初めて知りました。
親切に教えてくださり本当にありがとうございました。
>>307 単に VC8(VS2005)は、デフォがUNICODEになってて、BCCは MBCSに
なっているってだけだよ。
BCCでも UNICODEにすると同じようになるはず。
Visual c++
で、ソフト作成にチャレンジしようと思うのですが、
Visual C++ 2005 Express Edition ってのが
マイクロソフトからダウンロードできるんだけど、
それでいいのですか。
ここの皆さんが使っているのはこれですよね。
違ったら教えてください。
似たような名前のソフトがたくさんあって
どれがどれなのかさっぱり分かりません。
どうかお願いします。
>>309 EEじゃないけど、まあそれだ。
PlatformSDKとかMSDNライブラリとかも一緒にな
ツールボックスのList Controlについて質問です。
List Controlに対する処理(後で記述)を関数化しています。
「変数の追加」でList Controlをm_listctrlとしました。
プロパティは、Viewをレポートにしてるだけです。
関数の処理を行うと「説明」のColumn部分が二つになってしまいます。
m_listctrl.DeleteColumn(1);
で消しているのですが、どうしてでしょうか?
Columnをうまく初期化する方法をおしえて下さい。
312 :
311: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); // 設定する
何がどうなってるのかよくわからんが、
(0) で0個目を消したら1個目は前にずれるから
それも消すのはまた(0)じゃないか?
314 :
311:2007/03/06(火) 17:36:17
すみません、追加です。
プロジェクトの内容は
テンプレート:MFCアプリケーション
アプリケーションの種類:ダイアログベース
「ユニコードライブラリの使用する」のチェックを外す
315 :
311:2007/03/06(火) 17:44:06
>>313 レスどうもです。
m_listctrl.DeleteColumn(0);
m_listctrl.DeleteColumn(0);
で、できました!
しかし、なんかもっとスッキリしたやり方はないのかな・・・。
Columnの数を計算して、ループでDeleteColumn(0);とするんでしょうか・・・。
今見たけど、ヘルプのDeleteColumn の例はそうなってるな。
317 :
311:2007/03/06(火) 18:06:45
>>316 なるほど、そうなってますね。
勉強になりました。
ありがとうございます。
strcat(all,rectform.top);
all(char[]で宣言)にstrcatでフォームの高さ(位置)を入れたいんですが
'.top' : 左のオペランドが 'struct' へのポインタです。'->' を使用してください。
というようなエラーが出てしまいます。
. を -> に変えると強制終了しちゃうし。
何かキャストが要るんかな?
SDKです。
はい。
キャストが必要と言うより、プログラミングの基礎知識が必要かと思われます。
数値と文字列の相互変換からやっとけ
キャストもsdkも100年早い
char tmp[20];
sprintf(tmp,"%d",rectform->top);
strcat(all,tmp);
こう書くのは駄目か?
int len = strlen(all);
_snprintf(tmp + len, sizeof tmp - len, "%d", rectform->top);
326 :
323:2007/03/08(木) 17:42:54
お、俺のはどう・・?
327 :
324:2007/03/08(木) 17:43:09
ほんとだ、323に影響されてallとtmpをごっちゃにしてる
すまん
>318が低レベル過ぎてそれに対するフォローしても妥当かどうかの判断しようがない件。
エラーが出たらまずキャストって誰に教わったんだか
strcat使うべきところかどうかもあやしい
どうみても厨房です。本当にありがとうございました。
strcatは安全じゃないってばぁちゃん言ってた
333 :
デフォルトの名無しさん:2007/03/08(木) 20:58:50
いっそ全部stringにしちゃえ
最適化なしだと意図通りに動いて、最適化ありだとバグが起こるって
よくあることですかね?
変数の未初期化
volatileが必要な変数とか?
マルチスレッドのプログラムで、外部でフラグを立ててスレッドを終了させ
ようとしています。フラグの変数はvolatileをつけてます。
いろいろ試してみましたが、プログラムサイズの最適化だと意図したとおりに
動くようです。でも実行速度の最適化のオプションではだめなようです。
>>337 そうならないためのvolatileなのに変だね。
別の原因なのかな。
Win32のイベントを使えばいいだろ。
C/C++のvolatileはそもそも対マルチスレッド専用に作られたわけではないから、
マルチスレッド時にvolatileを付けておけば絶対に大丈夫ということはない。
この使い方が駄目なら、volatileの存在意義が無いんじゃね?
とりあえず、プログラムをupしる。
じゃあ〜volatileはなんなんだよ〜
最適化による期待はずれの動作は奥が深そうだな。
volatileでは解決しないことの原因なら
勉強のためにも
というかマルチスレッドを使う俺としてはぜひ知りたいところだ。
とりあえず重要そうなとこだけ抜粋してみました。
ひょっとかしたら根本的な間違いがあるかもしれませんが。
// グローバル変数
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;
}
最適化なし、プログラムサイズ最適化はスレッドが終了しますが、
実行速度最適化にするとスレッドが終了しないようです。
とりあえず_beginthreadexに変えてみる、とか。
_beginthreadは、CloseHandleが生成されたスレッドで処理されるので、
スレッド終了時点で、返されたハンドルの保証ができなくなる。
運が悪いと、別のスレッドを指してしまう可能性もある。
main.cpp
main.h
func.cpp
func.h
・・・
という感じでソースを書いてるんですが、
main.cppの方でfunc.cppの関数を呼び出す際、引数に構造体のアドレスを渡して、関数内でその構造体の中身を変更、としたいんです。
この場合構造体の型と構造体の宣言はどこにどういう風にすればいいんでしょうか。
externを使ったりしてやってみてるんですがどうもエラーがでてしまいます・・・
手取り足取り教えてくれる親切な人がいるといいね
>>344 func.cpp の関数や構造体をfunc.hで宣言して両方でinclude
つーかcppなのにそれでいいのか、、って気はするが
もうちょっと他のソースやIDEの吐き出したソース参考にしてくれ。
あんまり初歩的だと
>>345 みたいになる
すみません,伺わせてください.
Windowsフォームで何らかの処理をした際に出現する
フォームの多重起動を防ぐ方法についてなんですが.
グローバルな領域にフォームのオブジェクトを持たせて,
一度目にnew生成,終了時にnullを代入することで,
nullチェックを行えばできるのですが.
グローバル領域を使用せずにする方法があったら教えてください.
お願いします.
348 :
344:2007/03/09(金) 19:08:30
>>346 なんとかなりました。
まだCしか使えないのでこんな形になっています。
C言語質問の方で聞くべき事だったかもしれません。
回答ありがとうございました。
一応__beginthreadexに書き換えてみました。しかし駄目でした。
最適化段階で終了条件が消えてしまっているような。。
>>342 exitflagをlong型にしてtrueの代入の代わりにInterlockedIncrementを使ったらどう?
>>350 試してみました。でも駄目でした。やっぱり速度最適化が駄目です。
volatile修飾ちゃんと利いてるのかな。。それとも俺の書き方が悪いのかorz
回っているときにブレークしてみたらどうなる?
動作中にブレークポイントを設定してみたら、最適化なしのときには
|if(exitflag)
●| return;
こんな感じで設定できたのですが、
最適化コンパイル後の動作中だとreturnの横クリックしても数行後の
処理に移動してしまいます。
説明が悪くて、わかりにくかったらすいません。
>>353 最適化するとソースの行とプログラムコードが一致しないからな
ステップ実行がへんになることある。
ダイアログアプリケーションを作っていますが、エディットボックスなどの
コントロールの配置が終わるのはいつでしょうか?
最初の表示が終わった契機でコントロールの表示位置を取得しようと
OnInitDialog() でコントロールの座標を調べてみましたが
なぜか位置が(0,0)となってしまいます。
コントロールの表示位置を取得するのに最適な契機を教えてください。
OnInitDialogで設定した0秒のSetTimerが到着する頃には出来てるんじゃないの。
あとから動的にコントロール追加とか普通にやるから
そのタイミングでいいんじゃないかな
358 :
355:2007/03/09(金) 22:41:51
>>356 確かに OnInitDialog() 内でタイマをセットするやり方もありますね
もっとスマートな方法がなければこれしかないですね
>>357 「そのタイミング」とは OnInitDialog() で、ということですか?
やりたいのは、ダイアログエディタで配置したコントロールの座標を取得することです。
コントロールは動かさないので、一回だけ座標を取得できればいいのです。
>>355 OnInitDialog() でコントロールの座標を調べるなんておれやったことあるけどなあ。
おかしいなあ。
360 :
355:2007/03/09(金) 23:01:51
済みません。
私の初歩的なミスっぽいです。
コントロールの座標を GetClientRect() で取ってたんですが
左上が (0,0) になるので取れてないと思っていました。
OnInitDialog() で GetWindowRect() を発行してみたら
どうやらダイアログ上の座標が取れたようです。
もうちょっと調べてみます。
361 :
355:2007/03/10(土) 02:03:43
OnInitDialog() にて
CRect rect;
CEdit* pEdit=(CEdit*)GetDlgItem(IDC_EDIT_HOGEHOGE);
pEdit->GetWindowRect(&rect);
ScreenToClient(&rect);
でダイアログ相対の座標が取れました。
大変お騒がせ致しました。
>>351 駄目っていうのはスレッドが終了しないの? or デバッガ上でのトレースで
returnの行が飛ばされるの?後者ならあまり気にする必要が無い気がする。
前の方の書き込みを見る限り前者なのかな....
XP上のVC6 & VC2005で試してみたけどvolatile longとInterlockedIncrement
の組み合わせでスレッドは終了してたよ。試行回数各10回ほど。
_beginthreadでマルチスレッドやったのは今日がはじめてだけど、MFCでやる場合は
同期オブジェクトを使って終了を通知してる。APIでいうとCreateEventなど。
363 :
362:2007/03/10(土) 05:24:03
追記
最適化は実行速度
>>362 スレッドが終了しないってことです。
ってことは書き方が悪いのかなー。。
>>361 本当は、ScreenToClientよりMapWindowPointsがお勧め。
まあ、RTL(RightToLeft)環境で動かすようなことは、まずないだろうけど。
MFCのScreenToClient実装は、過去互換の関係で放置してる予感。
あと、GetDlgItemで取るより、メンバ変数に割り当てた方がいい。
>>364 アセンブリコード吐き出させて、頑張って読む。
visualC++でプログラム作れるように
なるには、C言語をまず勉強しないといけない
と聞いたのですが、本当ですか?
あとその次にポインタというのを勉強して
それからVisualC++の本買った方が良いというのも
本当でしょうか?
なんか知らないけどどうせならVisualC++でソフトを作ってみたいです。
憧れみたいのがあります。
小説を書くにはまず日本語を勉強しないといけないのですか?
みたいな質問だな
>>366 C++はC言語+アルファ(語弊あるけど)。
だからC言語を学ぶことは有効だけど
いけないっていうこともないだろうな。
C++って難しい部分もあるから
簡単なところからはじめたほうがいいっていう意味で
先にC言語を学べってことになってしまう。
ポインタは壁にぶつかるやつが多いからな。
ポインタがわからないやつにC++を使わせるのは危険ともいえる。
そもそもC言語を使わせるのも危険だけど
ポインタを理解してからC++をはじめたほうがいいな。
>>366 きにすんな。
作っちゃいなよ。
壁にぶつかっちゃいなよ。
Visual C++ =
CとC++などのコンパイラ(独自拡張有) +
CとC++の標準ライブラリ(独自拡張有) +
Platform SDK(ただしExpressは別) +
MFCやATLなどMS製のライブラリ +
IDE(デバッガこみ) +
MSDN ライブラリ +
各種ツール
およそこんな感じ
>>366 コンパイラの使い方とかデバッグの仕方とかは
ツールによって異なるからな。
バージョンによってメニューとかも多少変わるぞ。
自力で判るとか
友達に手取り足取り教えてもらえるとか
ヘルプをみながら判るやつなら不要だが
初心者はバージョンも合っている解説書的本があったほうがいいな。
すまんが聞きたい事がある。フリーソフトでアナログ時計を作って
ベクターに公開しているのだが、ウィンドウズの時計部門の人気順で20位以内に
入っている。オレのプログラミングのレベルはどの位か評価してほしいのだが、頼む。
自分ではVisual C++のレベルが初級を脱した位だと思っているのだが。
そんなことわかるわけがない。
良いプログラムが書けるかどうかと人気のあるプログラムが書けるかどうかというのは別問題。
人気とプログラミングレベルに相関関係があると思ってるん?
ソースアップしてリンク張ってくれれば見るよ
ここだと辛口な意見が多そうだが
プログラミングのレベルと人気は必ずしも関係ないでそ。
自分は、どの程度的確に言語仕様を理解しているか、とか、
プロジェクトに適した方法で開発できるか、とか、
そういうことだと思う。
ただ、人気のあるソフトを作れるってことは
良いクリエイターなんじゃないかな。
なんていうかな、Flashとか使えるWebDesignerが、
必ずしもプログラムの技術があるとは限らないっていうか。
サイズのでかいのが結構上位に入ってるな
常駐系はサイズが小さいのが常識だと思ってたけど時代は変わっていく
非矩形ウィンドウ
システムトレイへの登録
レジストリ操作
多重起動の防止
ぐらい実装していれば中級ではないか
コピペでも作れるだろ。そのくらい
通信関連のマルチスレッドと低レベルAPI
コピペでやると一発で落ちる
非矩形ウィンドウは時計の初歩
非矩形ウインドウってまだRegion使ってるの?
描画するだけならカラーキー設定して切り抜く
クリック範囲とかなら、リージョン使わないでどうやってるん?
画像の処理を行うクラスを作ろうとしています。
メモリDCを確保してビットマップの操作等を行うのですが
その場合は CWnd クラスの派生クラスとする必要があるのでしょうか?
ウィンドウハンドルが必要ならメンバに持ってればいいわけだから
別に継承する必要ないだろ
DCならCDCが思い浮かびそうなもの
387 :
384:2007/03/14(水) 21:31:57
そもそもDCがよくわかっていません。
メモリDCを確保する際に、CreateCompatibleDC()の引数に
メイン側でGetDC()したポインタを渡せばうまくいくのですが
そうしないでこのクラスだけでCreateCompatibleDC()するには
何を渡せばいいのかわかりません。
NULL だと真っ黒になってしまって・・・
なんだ既存のクラスがよくわからない人が作ろうとしてるのか
それだったら1から自分で作れ
>>387 CreateCompatibleDCに渡すべきデバイスコンテキストのハンドルを
引数に受け取ればいいだろ。
>>389 class GAZOU
{
void Gazou(CDC* pDC)
{
CDC memDC = CreateCompatibleDC(pDC);
・・・
}
}
ダイアログ等
Gazou gazou(GetDC());
gazou.hogehoge();
という感じでしょうか?
今の処理はこの通りで、うまく動作しているのですが
これ以外のやり方(CDCのポインタを渡さない)はないでしょうか?
GAZOUクラス内だけで処理できないものかと思っています。
>>390 NULLかデスクトップのウィンドウハンドルでDCを用意し
そのDCにコンパチブルなメモリDCを作成するのはどうかな。
出来るかどうか俺は保障しないが。
DCなしでビットマップを操作したいところだがWindowsがそういう仕組みなんで仕方ない。
DCってのは画面用とかプリンタ用とかそれらのコンパチブルなメモリDCなどがあって
ペンとかブラシとかを指定して対象物に描画するときに必須という面倒な代物だな。
392 :
384:2007/03/14(水) 22:25:44
>>391 画像処理クラスにおいて
CWnd* pDesktop = CWnd::GetDesktopWindow();
CDC* pDC = pDesktop->GetDC();
CDC memDC = CreateCompatibleDC(pDC);
・・・
と記述してうまく動作しました。
どうもありがとうございました。
レス頂いた他の皆さんも、ありがとうございました。
よく理解していないため、変な質問で済みませんでした。
スクリーン互換のDCなら、CreateCompatibleDCは引数NULLでOK。
あと、ウィンドウからDCを取るときは、必要に応じてCWindowDCかCClientDC使うと楽。
394 :
384:2007/03/15(木) 00:20:23
>>393 ありがとうございます。
CDC memDC;
CBitmap memBmp;
CreateCompatibleDC(NULL);
memBmp.CreateCompatibleBitmap(&memDC, width, height);
memDC.SelectObject(&memBmp);
としてみましたが、どうもモノクロになってしまうようです。
使い方が間違っているのでしょうか?
CreateCompatibleBitmapにはmemDCじゃなく392のpDCを渡すのだ。
MSDN - CBitmap::CreateCompatibleBitmapの解説を参照
それ以前にCreateCompatibleDC(NULL)の左側が抜けてるな
デフォルトでは、素のDCにはモノクロの1x1のビットマップが選択されている
それと互換のビットマップを作ったらモノクロになるのは当然
398 :
384: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)」と言われて嬉しい
□自社で仕事なんてできるわけがない
□派遣労働の問題点の話題が出ると感情剥き出しにして反論する
□派遣労働の問題を指摘する人は嫌いだ
□派遣先には仕事だけでなくプライベートについてもグイグイ引っ張って欲しい
□奢ってくれる派遣先正社員を尊敬する
□自分の月額金額を知らないのは当然だ、単金を聞いてはいけない
□派遣先正社員より自分の生涯収入が低いのは当然だ
□派遣先に尻尾を振り、いつまでも派遣を続けることが大切だ
すみません。教えて下さい。
VisualC++2005ExpressEditionをMSのサイトから
DLして使用したいと考えているのですが、
ズバリ、フリーのデーターベースであるFirebirdと
繋げられるのでしょうか?
やはり製品版でないと無理なのでしょうか?
自分は、単純に初心者向けプログラムである。
CDやDVDの在庫管理アプリを作りたいだけなんですが、
自分の労力以外は、極力フリーで作りたいと思っています。
可能でしょうか?
宜しくお願いします。
繋げる意味がよく分からんが、実質フォーマットさえ分かってしまえば作れるんじゃないの?
402 :
400:2007/03/19(月) 00:19:01
>>401 言葉足らずで、すみません。
ただ単に、フリーのDB(FireBird)に基本テーブルやら
履歴テーブルやらを作成して、
そのDBの記録を読み書きさせたいだけです。
製品でも繋がるかどうか知らない。
MicrosoftからしてみればフリーのFirebird用の
ライブラリを用意する義理なんてないでしょうし(推測)。
Firebird用のADOがあれば繋がるんじゃい(推測)?
ADO.NETじゃないよ。
あるいはODBC。
実際はDBMS固有の色々あるからすんなり行くか判らんけどね。
Visual C++ 2005 ExpressだとATLとかないんだっけ?
ADOはActiveX(COM)だからちょっと大変かもな。
405 :
400:2007/03/19(月) 02:24:40
>>403,404様
本当に、レスありがとうございます。
そうですか、難しいですか・・・。
やはり、SQLServerExpressを使用しないといけない見たいですね。
こちらも、フリーなのですが4G制限等があるからイヤだったんですよねぇ。
実は、図書館レベルとは言わないが、資料がたくさんあるので4Gで収まるか
自信ないんですよねぇ。何件分くらい入るもんでしょうか?
はぁ・・・。
でも、SQLServerExpresとVisualC++2005Expressとの組み合わせなら、
初心者でも簡単にDBアプリ(資料メディア管理アプリ)出来ますでしょうか?
又、DBアプリに関してわかり易いサイトって、MS以外にありますか?
よろしくお願いします。
ちなみに、ググッても分かりませんでした。(検索が悪いとは思いますが)
最初は誰でも初心者だけど
それを免罪符にして疑問を○投げって姿勢は良くないお
もうSQLiteでいいんじゃね?
408 :
400:2007/03/19(月) 21:58:57
>>406 その通りですね。
>>ALL
取り合えず、初心者なんだからDBは置いといて
C++の勉強から先に始めたいと思います。
ある程度、出来てからまた質問させて頂きたいと思います。
みなさまレスありがとうございまいした。
↑にハマっています。
すみません。
単純な日付計算が出来なくて困っています。
dateTimePicker1の日付から、dateTimePicker2の日付の差である。
日付をラベルに出力する方法をお願いいたします。
自分の想像では、
日付変数の宣言
日付変数=dateTimePicker2−dateTimePicker1
ラベル.Text=型変換(日付変数)
だと想像するのですが、HELPにも乗っていません。
ご教授お願いします。
日付に罠が仕掛けられていたり、使用法がHELPにのっていないような開発ツールは
使わないほうが良いと思いますよ。
dateTimePicker って VB?
dotnet
>>409 それはC++/CLIかな?それともMscomct2.ocx?
C++とC++/CLIの区別がつかず、知らずににC++/CLIを使ってる初心者が増えている。
これはMSの罠だな。
415 :
409:2007/03/20(火) 10:52:25
>>413 レスありがとうございます。
Microsoft Visual C++ 2005 Express Editionを使用しています。
只単に、カレンダー1とカレンダー2との差を表示したいだけです。
例:”期間は、Y年M月D日です。”または、”日数のみ計算でXXX日です。”
C++/CLIが何かさえ分らない自分ですが、よろしくお願いします。
>>414 そうなんですよ。
HELPが分りにくくて・・・理解しにくいし検索もHITしないんです。
なんか、単純計算使用例みたいなのも載ってないっぽいです。
もちろん、頭が悪い自分が一番悪いだろうけどね。
>>415 DateTimePickerで検索したら、値を取り出すサンプルが出てきたぞ。
値を取り出すとDateTime型のようだから、DateTime型のメソッドがそのまま利用できる筈なんだが。
417 :
416:2007/03/20(火) 11:23:26
あ、検索したのはMSDNね。
418 :
409:2007/03/20(火) 18:49:03
>>417 レスありがとうです。
でも、理解出来ませんでした。(T_T)
何がどうなっているのやら・・・。
まず、
>>409の1行目の予定の
日付変数の宣言方法さえ分りません。
Int型は、市販の書籍に載ってたんですけどねぇ。
お手数ですが、簡単なソースにコメントを書いて頂ければ幸いです。
教えて頂いたサイトから、
「プログラミング チャレンジ スクエア」って言うのも
見つけたんですが、C++は無いのです。
あんな感じのサイトのVisualC++2005ExpressのHPは無いんでしょうか。
宜しくお願いします。
そういうやつのためにC#があるんだから素直にそっち使っとけ
最早C++/CLIはC++じゃない(と言い切ってもいい位の)存在だから、
C++をやりたいならGUIは一旦横に置くべきだし、GUIをやりたいならC#に乗り換えるべき。
2つの日時の値を引き算すると、時間間隔を表すTimeSpan型が返る。
TimeSpan span = dateTimePicker1->Value - dateTimePicker2->Value;
でそのTimeSpanから日の部分だけを取り出し文字列に変換してラベルにセット
label1->Text = span.Days.ToString();
最初はMSDNが理解しにくいのはわかるけど、あれを読めるようにならないと進歩はないよ。
422 :
409: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に含まれるよー」という雰囲気が出せないので他に方法が
あるかのかなぁと思っています。
424 :
423: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);
というように一発で初期化したいのですが、クラスのメンバだと
そうもいかず・・。
boost::numeric::ublas::matrixとか使った方が良くね?
426 :
423:2007/03/22(木) 22:14:19
Linux環境でgetopt()を使うためにunistd.hをincludeしているソースを、
VisualC++でコンパイルしたところ、unistd.hが見つからないと言われました。
代替になるインクルードファイルはありますでしょうか?
よろしくお願いします。
ない
無いんですか・・ありがとうございます
ほんとかよ、と思ってしまう回答だがはて…
getopt()があればどれだけ楽か……
CUI環境の話だったらC++スレとかでやってほしい。
激しくどうでもいい
GUI環境しか使えない香具師は只単に読み飛ばすということさえ出来ないらしい。困ったもんだ。
腐るぐらいスレがあるのにわざわざここで質問するやつの気が知れない。
VCだからだろ。
Linux依存→依存なしの移植だろ
VC関係ない
getopt()だからLinux依存じゃないぞ。VCがPOSIX準拠してないのが問題なんだ。
>unistd.hをincludeしているソースを
uniって何の略?
初心者だったら基本やってりゃいいんだよ
実力もないのにややこしいことやろうとすんな
1 初心者には無理だから素直にあきらめる
2 初心者卒業してからやる
3 教えてくれるまで暴れる
と、実力もないのに初心者を脱出したと思い込んでいる>432=434=436=438=440が申しております。
>>439 unix standardって感じか? システムコール系の関数が詰まってるね。
自分が答えられそうにもないCUI系の質問が来るだけで
火病起こす奴ってなんなの?
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;
}
すみません今リブルドしたところ、エラーが出ていました
1>f:\documents and settings\(省略)\Form1.h(485) : error C3861: 'c_printfunc': 識別子が見つかりませんでした
なんどもすみません
openFileDialogの中からどうやってc_printfuncを認識させるのでしょうか?
今日始めたばかりでわけわかめ状態です;;
質問とは関係ないけど
そういえばアウトプットウインドウにデバッグストリング出力する機能があったな
デバッガばっかり使ってて存在自体を忘れてた
だからCUIというかソースレベルの質問はスレ違いだって
過去スレ見ればわかるだろ
ここはVisualCの機能や使い方を答える程度のレベルのスレなの
450 :
446:2007/03/25(日) 10:16:58
関数プロトタイプを記述することで自己解決しました
お騒がせしました
ダウンロードするのに住所や電話番号を登録するようですが、
何か連絡が来ることってあるんでしょうか?
無いよ
#include <stdio.h>
main()
{
printf("文字表示のテスト");
}
これを実行した時に、F5(デバッグあり)で実行すると
すぐにウィンドウが閉じてしまいますが
ctrl+F5(デバッグなし)で実行すると、ウィンドウが表示されたままに
なるのは何故なんでしょうか。
また、DOS窓でなく、通常のウィンドウへの描画は
どのような手順で行うのが簡潔でしょうか。
454 :
453:2007/03/30(金) 01:56:21
環境はVC++8.0ですが、学習のためにCの記述をしています。
また、8.0以前のサンプルを開こうとした時に、変換を行った後
そのソリューションを実行するにはどうすればいいでしょうか。
#include <conio.h>
を追加して
}の前にgetch();追加で
キー一回押すまで進行停止が出来るよ
>453
裏で別のプログラムが面倒みてくれてる
458 :
453:2007/03/30(金) 07:55:11
すみません、自分で読み直してみて、一度に質問を書き込みすぎました。
でも、皆さん親切に教えていただけるので、とても嬉しいです(;;)
微妙に回答のポイントがずれてる希ガス
じゃ、簡潔に。
>ctrl+F5(デバッグなし)で実行すると、ウィンドウが表示されたままに
>なるのは何故なんでしょうか。
仕様です。
>また、DOS窓でなく、通常のウィンドウへの描画は
>どのような手順で行うのが簡潔でしょうか。
WinAPIを使えばできますが、その為には先ず一通りCの知識が必要になります。
EEなら該当スレみつけてSDKインストール
>また、DOS窓でなく、通常のウィンドウへの描画は
>どのような手順で行うのが簡潔でしょうか。
まとめると
(1)MicrosoftのサイトからPlatformSDKをダウンロードしてインストール
(これでWin32APIを使うことができる)
(2)ウィンドウ作成
(Win32APIはmainの代わりにWinMainを使う)
(3)ウィンドウに文字を出力
>通常のウィンドウへの描画は...
通常のウィンドウをどうやって作るかにもよるんだけど
1. Win32(C or C++)
基本だけど全てを自分でやる必要がある。
2. MFCアプリ(C++)
MFCが多くのことをやってくれるけど、構造の理解に時間がかかる。
3. CLRのWindowsフォームアプリ(C++/CLI)
上の二つとは異質だけど初心者には楽。いわゆるドットネット。
他にも選択肢はあるけど、普通はこの3択。誘導される前のスレッドを見る限り
VC8EEなんだろうな。その場合2は選択できない。1を選ぶなら
>>462で。
プロジェクトの変換については情報不足杉。
>>463 MFCアプリ(C++)、CLR(C++/CLI)になってるけど、
この二つは、C言語形式で書けないの?
勉強中でよくわからない・・・
MFCの場合、自分のロジックはCと互換性のある書き方もできるけど、
WindowsとのI/FはC++でないとコンパイルできない。
CLRの場合、最早Cと互換性を持たせることが無意味。
何故なら、文字列から日付け処理からメモリ管理から何もかも流儀が全て違う。
466 :
453:2007/03/30(金) 16:51:55
ありがとうございます、通常のウィンドウへの描画は
WindowsのAPIを使ってみることにします。
まだ、ポインタもわかってないので(というか勉強がまだなので)
地道にCの言語仕様を学んだ後で、SDK取りに行きます。
バージョンの古いサンプルが開けない、というのは
恐らくツールの使い方がわかっていないだけだと思うので
もう少し自分で頑張ります。
そのレベルなら1年は覚悟した方がいいよ
468 :
453:2007/03/31(土) 00:20:45
かかるかもしれないですね。でも、正直そこまで時間はかけたくありません。
地道にひとつずつ習得する以外方法はないと思いますが、
例えば、「ブロック崩し」を作りたい、という目的がある、とした場合に
どの道筋が適切かご指導いただけるとありがたいです。
ちなみにお察しの通り環境はVC8のEEです。
C#でもやれば?
Javaだと某有名プログラムがあることだし、フラッシュも最近増えてきたけど。
別の環境で作ったソースをVCで編集しなきゃいけないんですが、
フォルダ構成を元のままVCで作業するにはどうしたらいいでしょうか?
新規プロジェクトを作ってみたら
ソースもヘッダも全部同じフォルダにできてしまうみたいで・・・
フォルダの設定とかありませんか?
好きなようにできるだろ
できてしまう、って何でソースやヘッダを作る必要があるんだ?
もうソースはあるんだろ?
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があれば勝手
にやってくれそうなんですが…
どうすれば自動でスクロールし追加した文字列部分が表示されるように
なるのか、教えて下さい。
EM_SCROLLCARET
これでわざわざスクロールしてるような気がする
>>473の文字列追加した後で、別のルーチンから文字列追加を大量に
行ったら、ちゃんとスクロールしてくれました。
>>473の処理はEM_SCROLLCARETの一行をコメントにしても変わらず…
なにか条件があるんでしょうか…
>>468 ブロック崩しを作りたいなら
@まず持ってるVCの基本操作を覚える(プロジェクト作成の仕方、コンパイルの仕方、実行の仕方、
できればブレークポイントを使った基本的なデバッグ手法やコンパイルオプションの違い等も。)
ACを覚える(基本文法・関数・ポインタ等。これはどんなCプログラムが作りたかろうが全ての人が通る道。)
BWin32APIに触ってみる(ウィンドウを使ったプログラムの作成。)
Cグラフィカルなプログラムを作ってみる(GDIを使うorDirectXを使う。どっちでもお好きに。)
Dブロック崩しを作ってみる(ゲーム特有のアルゴリズム・当たり判定や入力制御等を学ぶ)
酷く大まかだけどこんな感じでいいんじゃないでしょうか。
ちなみにかかる時間はAが一番長くなると思います。
嘘だ、絶対4だ。
でも挫折するのはたいてい3じゃないか?
M$と相性が合わないなら(1)で挫折するはず
ゲームは昔から出来合いのゲームのソースをいじりながら覚えたもんだが
BASIC限定だったのかもしれないな
basicでゲームやったことありますとか言い出すやつは使いものにならない。
たとえそういう経験あったとしても黙っておくもの
< ワタシ ヲ ヨンダ??
●/
<■
/ >
>>481 そういう話じゃないでしょ。
既存のソースの改造から始めるのはどうかという話では。
いきなり改造から始めるなんて聞いたことがない。
VCの場合コードの量が半端じゃないし、
他人の書いたコード読んで仕様まで理解できたら相当なレベルだと思う。
初心者レベルだとビルドできなくて投げ出すのがせいぜい。
いやだからBASICの話でしょ改造なのはw
昔はね。
今でも新しいことやるのはサンプルソースからやるけど。
┏┳┳┓ ハイ. ┏┳┳┓
┏┫┃┃┃ 雑談は ┃┃┃┣┓
┃┃┃┃┣┓ ここまで.┏┫┃┃┃┃
┃ ┃┃┏━━━┓┃┃ ┃
┃ 雑談 ┣┫ . ・∀・ ┣┫. STOP!┃
┗━━━━┛┗┳━┳┛┗━━━━┛
┏┻┓┃
┏━┛ ┣┻┓
┗━━━┫ ┗━┓
┗━━━┛
┌┬┬┐ ハイ. ┌┬┬┐
┌┤│││ 雑談は │││├┐
││││├┐ ここから.┌┤││││
│ ││┌───┐││ │
│ 雑談 ├┤ . ・∀・ ├┤ 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 で
行いたいので困っています。
私の知らない何かがあるのでしょうか?
どうかご教授下さい。よろしくお願い致します。
あまり詳しくないけどSendMessageはメッセージキューを経由しない
(TranslateMessageを通らない)のでWM_KEYDOWNのSendでは
WM_CHARが発生しないとか何とか。
↑↓でフォーカス移動をするだけなら、キーボードイベントを捏造するより
WM_NEXTDLGCTLをポストしたほうが楽だと思う。
MessageBoxみたく、手軽に小さいウィンドウを出して
ユーザに文字列を入力させたいんですが、そういう関数ってありますか?
どういやDialogBoxと自分でウィンドウ作るのとどう違うんだろう・・・
>>494 ダイアログテンプレート以外の違い?
モーダルとモードレスで違うべ。
モードレスは自分で作る場合に近いな。
自分でメッセージループ持たせてモーダルにすることもできるけど。
>>490さん
ありがとうございます。SendMessageはあきらめました。
ところで WM_NEXTDLGCTL ってダイアログでしか使えないんでしょうか?
今ダイアログを使ってなくて、普通のフォームのEDITとかCreateWindowで貼り付けてる状態で、
WM_NEXTDLGCTLは効かないみたいなんです orz
>>494さんの疑問は私も悩んでいる点です
初心者でいっぺんにいろいろ覚えられないので、とりあえずダイアログを使わずにフォームをゴリゴリ
書いて、きつくなってきた所でダイアログの恩恵にあやかろうという方針を立てていました。
でも、そもそもの使用目的が違うような気がしてきて、にもかかわらず、その辺りの指針がはっきり
せず、すっきりしません。
皆さんはどういう基準で使い分けられてるんでしょうか。
今思ったんですが、普通のウィンドウとDialogの違いってメニューを付けられるかどうかじゃないでしょうか?
普通のウィンドウ、Dialog ともにモーダル、モードレスにできるし、どれで始めて、どう遷移していけばいいか
迷うんですけど...
ひょっとしてDialogにもメニュー付けられたりして OTL
たしか付けられるはず。
基本的にダイアログテンプレートを使うか使わないかでわければいいじゃん
ウィンドウには色々なスタイルがあって、
その中の一部分をダイアログと呼ぶ、というだけ。
てか、ダイアログをメインウィンドウにした方が
色々と楽だと思うのは俺だけ?
>>496 IsDialogMessageでを使えるようにならない?
あと、ウィンドウクラスが #37770 じゃ困ることもあるべ
>>498 メニュー簡単に付きました orz
>>499 ですよね
現在ダイアログに傾倒して行ってるところです。
できれば全部これでやりたいと思い初めています。メイン画面から全部。
でもどのサンプルを見ても通常フォームから始まってるんですよね...
ダイアログでは実現できない事って、例えばどんな事なんでしょうか。
>>503 ダイアログでもウィンドウクラスを指定できる。
指定したときには、そっちになり#37770にはならない。
WM_PAINTとかWM_CHARとかウィンドウそのものに関するメッセージを使うときには
普通のウィンドウにして、ダイアログにしない気がする。
あと、501のとおりメニューやスクロールバー、ステータスバーが付くときも
ダイアログは使われていないと思う(でもたしかにユーティリティでは見かけたことある)。
505みたいにどっちつかずな面もあるけど。
507 :
デフォルトの名無しさん:2007/04/04(水) 20:58:21
>>500 私もメインウィンドウをダイアログで行こうと考えています。
>>501 ありがとうございました。指針を示して頂いて、安心しました。
MSDN英語で読めるっていいですね。私はMSDN日本語でも頭がぐるぐるしてくるんです。
>>496 だめでした。
>>503 ダイアログのWM_CREATE(?)から CREATESTRUCT は取れるんですか?
まちがえました。
>>502 IsDialogMessageをメッセージループに入れてもだめでした。
ダイアログをメインフォームにしようとしているのですが、分からない事が出てきました。
DialogBoxParam でモーダル起動した場合、メッセージループが内部にあるから IsDialogMessage を組み込めないと
思うのですが、何か方法があるのでしょうか?
CreateDialogParam でモードレスダイアログを作って、メッセージループを準備するのが正しいやり方なのでしょうか?
どうかお教え下さい。よろしくお願いします。
ModalならIsDialogMessageは必要ないだろ
511 :
デフォルトの名無しさん:2007/04/05(木) 02:11:46
2個スレッドを作って、一つでユーザーインターフェースの処理
でもう一方で計算をさせたいと考えてます。
で、AfxBeginThreadと制御関数でマルチスレッドぽくはできました。
ただ、計算の進歩状況の表示や中断をさせられません。
今のところボタンをクリックされた後イベントハンドラ中で
while文を回して進歩状況を表示していて意味がないんです。
ユーザー インターフェイス スレッド?を作れば一つは解決ですか?
>>510 本当だ!IsDialogMessage を入れないと TAB キーが使えないのかと思ってました。
ありがとうございます。
ウィンドウ登録、作成、メッセージループをダイアログに任せるだけで、こんなにもソースがすっきり!VBみたい
しかもコントールをXP風にできました。
うれしいです (↑∇↑) ありがとうございました。
514 :
511:2007/04/05(木) 05:12:06
ようするに、
WinMain()に別のスレッドから進歩状況を伝えて
イベントを起こして表示させる方法を教えてください。
ということだったんですが、今もう一度探したら
PeekMessage()というのを見つけました。
どうも自分が行わせたい処理はマルチスレッドを使わなくても
よいように思うんでPeekMessage()を使ってみます。
できたあとの話になるんですが、処理にかかった時間を計測とか
できるんでしょうか?関数の実行に要した時間なんですが…
515 :
511:2007/04/05(木) 05:26:52
timeGetTime見つけました。
スレ汚し申し訳ない…
>>505 ダイアログにウィンドウクラスを指定する方法を是非ともお教え下さい。お願いします┏○
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 で作ればいいのか
分かりません 。
どうかよろしくお願いします。
┏ ・:∴○ ドシュッ
520ですが、1は自己解決しました。
VC付属の OLE VIEWER で右クリックしたらHTML用にOBJECTタグを作ってくれて、ブラウザ上で動作しました。
ろくに試しもせずに質問してしまい、申し訳ありませんでした。
聞きたいことがあったんだけど、レス書いてたら答えに気づいたw
そういうことって結構あるよ。
文章にするというのが軽く気分転換になっていると思う。
すみません。
変数の定義(int型)をmainメソッドの中の中間あたりで行うと
「そのような識別子はありません」とエラーが出てしまうんですが
(定義をmainの先頭に持ってくるとエラーが出なくなります)
なぜなんでしょう。先頭と中間での定義の間で
printf、scanf、while関数等を使っているんですが、何か関係がありますか?
>>525 言語は何?
古いCでは変数宣言はブロックの先頭にある必要がある。
#勿論、ブロックの先頭ならよいので以下の例は問題ない。
int main()
{
printf("foo\n");
{
int foo = getchar();
printf("%c\n", foo);
}
return 0;
}
どうでもいいが、while関数なんてものは無いし、
一般的にcではメソッドとは言わない。用語は間違わないように。
知ってるけどスレ違いだから教えてやらない
そうなんですか、ちなみに言語はCですね。失礼しました。
getch()等が「古い型」だと注意されるのはなんだろうと思っていましたが。
ブロックを設けて先頭へ記述するようにします。
用語も適当に使っていました。
まさか
printf("%d", a);
int a;
なんてやってるオチでは…
あー、普段はエディタが勝手にインデントするし、どうせ見えないと思って割愛した。許せ。
自動コード整形のパターンってカスタマイズできるんでしょうか?
2chにソース張ること自体ねぇ・・・
どっか引っ越そうぜ
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; }
535 :
534:2007/04/08(日) 22:05:10
このプログラムは某入門書の例題でヘタレの俺なりの回答案です
80行以上あったプログラムがコメントとか{}消したら1レスに収まっちゃったわけですが
コレって元の書き方が悪いんですかねぇ?
勿論全体ではなく一部なんですが
それでも80超行が30行ちょっとってのは無いでしょうってことです
すみません
激しく読みにくくてウザい
ゴミ
こういうのだったら消していい。
int i; /*ループ変数*/
542 :
デフォルトの名無しさん:2007/04/08(日) 22:37:41
良いプログラムとは、コードよりコメントの行数の方が多い
ん?
元のソースはわからないけど
これよりはマシだったんだろうなぁと思う。
良いプログラムとは、コード自体がコメントのように読める
良いプログラムとはコードのないプログラム
良いプログラムとは、ドキュメントだけでコードが理解できる ( ・`ω・´)ノ
それは読んでる人の性能がいいだけじゃ・・・
学習用の過程で作ったものだったら
それこそ8割がコメントとかでもいいんじゃないの?
コメントに表現しようとあれこれ考えるのも理解の助けになるし
8割コメントって、学生かい ( ・ω・)
一応、クラス3分、関数30秒(=4行くらい)
で、読み終わる程度がいいとされてる
限られたスページと時間で、どれだけ理解させるかが文章力だ m9( ・`ω・´)
仕様100ページもあったら、結局何書いてるか分からんし
マニュアルも全部読まないでしょ、バージョン上がったらゴミになるし
>仕様100ページもあったら、結局何書いてるか分からんし
・・・
Boostのビルドも出来ん雑魚はほっとけ
仕様書以外に何が用意されているかが問題だな。
サンプル一切無しなら死ねる。
どれだけコードを綺麗に区切ってまとめられるかと、
それにどれだけ適切なコメントをできるかが
勝負の分かれ目
コメントは付けりゃいいってもんじゃない
8割コメントはちょっとアホだろ・・・w
場合によるけどさ
ここって結構底辺なのなww
_____
/::::::::::::::::::::::::::\ _
/::::::::::::::::::::::::::::::::::::::\ /  ̄  ̄ \
|:::::::::::::::::|_|_|_|_| /、 ヽ
|;;;;;;;;;;ノ \,, ,,/ ヽ |・ |―-、 | きみ頭だいじょうぶ?
|::( 6 ー─◎─◎ ) q -´ 二 ヽ |
|ノ (∵∴ ( o o)∴) ノ_ ー | |
/| < ∵ 3 ∵> \. ̄` | /
::::::\ ヽ ノ\ O===== |
:::::::::::::\_____ノ:::::::::::\ / |
それがくだすれのくだすれたる所以
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
バカで頑固だから何度言っても理解できない
騙されたとはいえ結局は自分で決めて派遣やってる癖に逆ギレしちゃってまぁ
人間として本当に恥ずかしい
そうか、とりあえずスレタイ読み直せ。
>>559 派遣と言ってもいろいろあるんだけど知らんのか?
数十人の派遣プログラマがいればマネージメントする人間も当然必要になる
だろ。その人間は責任を負うと同時に給与も高いって仕組み。
派遣は確かに「いつでも切れる」存在ではあるけど、切るためにはそれなり
の理由が必要だし、むやみに切れば信頼関係が損なわれて派遣を採用する
会社側にも損失はあるんだよ。
そもそもお前のそのレスから簡単にプロファイリングするに、
お前自身がちょっとどうかと思う人間に見えるわけだが…。
よくみかけるコピペだけど
>>562 そうなの?俺ははじめて見た。
どこが笑い所のコピペなの?
>>564 数あるコピペから
>>559はなぜこれを選んだんだろ。
貼り付けた理由が理解不能。しかもこのコピペ、ちっとも面白くない。
あとスレ違いも甚だしい。なんなんだコイツは。
面白くない上に長いから、嫌がらせにはちょうどいいということじゃないのか
あまり長すぎると1行も読まれないから、あのくらいにしたんだろう
あの長さなのにコードが一行も無い時点で読まない
568 :
デフォルトの名無しさん:2007/04/17(火) 21:43:20
流れ読まずに投下スマソ
WTL7.1 の AppWizard でダイアログベースのプロジェクトを作って、
ダイアログのフォントを MS UI ゴシック/9pt に設定したんだが、
実行時に文字化けを起こす。
教えてエロい人><
>>568 WTLだと言語がデフォルトで「英語」になってるはず。
開発環境によって違うが、リソースエディタのどこかに言語を設定するところがあるから
そこを「日本語」に変えてみ。
>>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;
}
}
}
}
ReleaseBufferはどこだ?
573 :
571:2007/04/17(火) 23:32:23
× gAfter.ReleaseBuffer(nLenValue);//アプリエラーが起きる
int nLenAfter = gAfter.GetLength();//正常に長さが取れた
↑
ReleaseBufferを入れてみたら、アプリエラーは起きますけど長さは取れました。
って、やり方が違うのかな…
574 :
デフォルトの名無しさん:2007/04/18(水) 00:00:51
>>561 論点ずれまくりだろ
自分で正社員を辞めて派遣になったのにブーたれてるような人間は
何をやってもダメだと思うぞ
プログラムをコンパイル→実行したあと自動的に閉じないようにできますか?
できます。
577 :
デフォルトの名無しさん:2007/04/18(水) 12:32:28
質問よろしいでしょうか。
VisulC++6.0で
exe→pdf呼び出しを行いたいのですが、コンポーネントの追加にAdobe PDF Readerを追加し、ダイアログに貼り付けようとしたら「ActiveXコントロールのインスタンスは作成されませんでした」とメッセージが表示され、貼り付けることができません。
exeから呼び出しを行いたいので、ShellExcuteEXを使わない方法以外にはないのでしょうか?
どなたかご教示お願いします。
>>577 ネタか?
CreateProcessの引数にpdf
IEがやってるようにActiveXを上手いこと使いたいんでないの。
じゃIE貼っとけ
577です。
Acrobat SDKのActiveViewみたいなことをと思っておりました・・・。
質問の意図が意味不明になっており、ご迷惑をおかけしました。
579氏、580氏
IEを貼る手法で行いたいと思います。。
ありがとうございました。
>>576 どうやるの?
ソースに余分な関数入れるんじゃなくて設定でできるの?
つ デバッグ無しで開始
>>583 ありがとうございます。出来ました(゚∀゚)
すごく助かりました
ウィンドウプログラミングで
ウィンドウハンドル、ウィンドウプロシージャで作るのと
ビュークラスやダイアログクラスで作るのと
2つあるみたいですけど・・・何が違うのですか?
どちらが主流なんですかね
>>585 >ウィンドウハンドル、ウィンドウプロシージャで作るのと
これは低レベル(抽象度が低いって意味ね。「高級言語」とかいう時の高級/低級)。
>ビュークラスやダイアログクラスで作るのと
中で上の低レベルなものを使ってる。
Win32APIだけで作るのはだいぶ面倒くさい。既にあるものは使った方がいい。
Visual C++6.0 のインストールを行っています。
続けてサービスパック6を入手しインストールしようとしましたが、
「ファイル C:\Windows\System32\MSFLXGRD.OCX を開くことができませんでした」
となり、セットアップが正常終了しません。
セットアップ手順に誤りがあるのでしょうか。
(MSDNからサービスパック6を入手し、展開先のフォルダで setupsp6.exe を実行しました)
CDにMSFLXGRD.OCX入ってるだろ
>>588 迅速なレス感謝です!
そもそも、Visual C++6.0インストール時のオプション設定で選んだインストール構成では MSFLXGRF.OCX が不要
(つまり、今発生しているSp6適用時のエラーは無視してよい)なのか、
それとも、CDからOCXファイルをコピーしてきてでも本セットアップ(SP6)をあてるべきなのかがわかりません。
今や貴重なコントロールなんだから入れておけば?<FlexGrid
Sp6のセットアップエラーを無視しても動きましたが、
一応FLXGRD入れておくことにしました。
助言ありがとうございましたm(__)m
winXPでMicrosoft Visual C++ .NETを使っています。
ご相談したいのは、
「新規作成」→「プロジェクト」→C++の「MFC アプリケーション」で作成して
その後のウィザードで「アプリケーションの種類」→「ダイアログ ベース」に設定して「完了」を押すと
〔〜.ncd〕〔〜.sln〕〔〜.suo〕〔〜.vcproj〕しか作られません。
どうすれば良いでしょうか。
御教授をお願いします。
まずは日本語の勉強してきてくれ。
難しいなら敬語は使わなくてもいいよ。
どの辺が分かり難かったでしょうか?
要約をさせていただくと、「〔〜.ncd〕〔〜.sln〕〔〜.suo〕〔〜.vcproj〕以外のも作られるようにするには
どうすればいいのでしょうか」ということです。
どなたか、ご返答をお願いします。
それ以外の何を作りたいのかさっぱり。
>>594 クラスビューやソリューションエクスプローラなどで「追加」すればいい。
色んな所で右クリックしてどういうメニューが出るかとか、
上に並んでるメニューの中の項目を一通り試してみるとか、しないか?普通。
IDEもGUIアプリなんだしさ。
ウィザード使ったらビルドすれば実行可能な状態のソースまで作ってくれる。
空のプロジェクトなら自分でソース追加しなきゃ始まらないけど、
ダイアログベースならダイアログ出すソースができてるはず。
>595-596はたぶんMFC使ったことないから無視で
ビルドしなくてもソースは生成されていないとおかしい
操作ミスなのではないか?
600 :
599:2007/04/23(月) 17:28:58
あ、何か誤読してたスマソ
601 :
592:2007/04/23(月) 18:02:29
すいません。
書き忘れていたことがありました。
「スケルトンが作成されない」のです。
本当に申し訳ありません。
2005じゃないということはだいぶ前にインストールした?
それから何回か使った?
全く状況がわからん
603 :
592:2007/04/23(月) 20:04:15
>>602 2003です。
インストールしたの半年前です。
604 :
592:2007/04/23(月) 23:00:15
>>596 ご返答ありがとうございます。
「開始」を押すと
「デバックを開始できません」
「プログラム'〜.exe'を開始できません。」
「指定したファイルが見つかりません」
というウィンドウが出てしまうので、ただスケルトンが表示できていない
のではと思うのですが、それ以上は私にはわかりません。
606 :
デフォルトの名無しさん:2007/04/25(水) 12:10:32
大学のVisual studio2003でWM_MOUSEWHEELメッセージを拾おうとしたら
WM_MOUSEWHEELは定義されていないというエラーが出ました。
マウスカーソルをWM_MOUSEWHEELの上に持っていくと、
#define WM_MOUSEWHEEL 0x020A
とちゃんと出ているので自分でその値をdefineしたらビルドが通ったのですが、
なんで自分で置かないとWM_MOUSEWHEELが定義されていないと出るのでしょう?
WM_MOUSEWHEEL はあとから追加されただけで
windows.hに無いからね
608 :
607:2007/04/25(水) 12:29:41
#define _WIN32_WINNT 0x0400
を入れれば有効になると思うよ
>>607 ありがとうございます。
後からというのは自宅のvisual studio2005では普通に出来たのでそこからということでしょうか?
ちなみにソースコードのWM_MOUSEWHEELにマウスカーソルを持っていくと
#define WM_MOUSEWHEEL 0x020A とちゃんとdefineされているように出てくるのは何でなのですか?
「条件」によって存在しなかったことになる。
>>610 本当にすまないのですがまだ無知ゆえもう少し詳しくお願いできますか?
条件コンパイル
>>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);
sprintf
>>605 ご返答ありがとうございます。
ダイアログって、ダイアログベースのことですよね?
自分は初心者なもので、間違っていたらすいません。
〜.ncd
〜.sln
〜.suo
〜.vcproj
フォルダにはこれだけでした。
>>617 ダイアログベース以外の、SDIやMDIで作るとどうなるかって聞いてんだよ
なんでそんな偉そうなの?教えてあげる対価としていばってんの?
620 :
592:2007/04/26(木) 12:27:11
>>618 MDIでやっても、SDIでやっても、結果は同じでした。
>>617で示したファイルしか作られていませんでした。
>>620 とりあえずその現象はおかしいのでインストールしなおしてみては
ダイアログベースだけならファイル差し替えてみる手もあったが
全部だとインストールやり直したほうが早い
つか、
>>619 はこの程度で偉そうと感じるのか
どういう世界で育ったんだ、一人っ子か?
いや、、まぁ偉そうなことは偉そうだろう。
常識的に考えてww
ただここは2chだしね。
まだ答えてくれる人がいるだけでもラッキーだと思うよ
625 :
592:2007/04/26(木) 15:10:57
>>622 ここに来る前に、それを何度かしてみたのですが、結果は同じでした。
再インストールもアンインストールしてからのインストールもしましたが、結果は同じでした。
それで、悪意のあるファイル云々が原因かと思い、ノートンでスキャンしてみたのですが
異常はありませんでした。
>>625 とりあえず、同じ現象が出てる人がいないようなら
MSのサポートに聞いてみたら
今から2003なんて不自然だし割れなのかも
628 :
592:2007/04/26(木) 18:21:20
>>625 わかりました。聞いてみます。
色々とありがとうございました。
629 :
592:2007/04/26(木) 18:22:18
おまえもういいよ、寝てこいよ。
まあ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文字を超えても正しい行数を返すように
修正できないでしょうか?
エディットコントロールの制限で、実際に折り返されている予感。
そのテキストボックスはどうやって作った?
パラメタは?
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バイトくらいまでは読み込めるのですが、それ以降がヌルに
なってしまいます。
何か制限などはあるでしょうか?
オープンモードに std::ios::binary も要るのでは?
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を抜け出すためのアドバイスをいただけないでしょうか。
1.ライブラリパスの設定
2.user32.lib等をリンクする
638です。
おっしゃるとおり、
cl user32.lib hoge.c
でうまくいったのですが、なんか???という気分です。むむ。
__imp__MessageBoxA@16、つまりMessageBox()関数はuser32.libに入ってるってことだ
正確にはインポートライブラリだけどまあ同じこと
>>638 IDEで簡単にリンクが通るのは、プロジェクトを作成した時、
参照するライブラリとして kernel32 user32 とかが予め設定され、
ビルド時にCLのパラメータとして渡されるから。
よって、直接コマンドラインで実行したければ全て記述する必要がある。
良い機会だから、NMAKEを勉強するのもいいかもしれないな。
ついでにGNU MAKEもやっとけば、後で幸せになれる。
638です。
>>641&642
なんとなくわかってきました。つまりは両氏のおっしゃる通りとしか言いようが無いみたいで、
NMAKEを勉強すべき、というところに私もたどり着きました。
チャールズ・ペゾルドというひとが書いたぶっとい本を頼りにぼちぼちやってます。
ここに書くことでもないですけどいい本ですね。これ。
また詰まったら参ります。どうもありがとうございました。
644 :
デフォルトの名無しさん:2007/04/30(月) 14:20:57
VisualC++2005ExpressEdition落としたんですが
しょっぱなから使い方わかりません
どうすればいいですか?
>>644 使い方って具体的に何がだよカス
林晴比古『明快入門 Visual C++ 2005 ビギナー編 』
山本信雄『Visual C++〈1〉はじめてのWindowsプログラミング』
http://www.kumei.ne.jp/c_lang/ あくまで参考程度&初心者用ですが、
この辺を見て自分はVC++とwindowsプログラミングを覚えました。
>644
ヘルプを読めばいいと思う
647 :
デフォルトの名無しさん:2007/04/30(月) 15:22:53
649 :
デフォルトの名無しさん:2007/04/30(月) 19:54:45
VC6.0、ダイアログの作成について質問させてください。
OnInitDialog()で独自の初期化処理を行っています。
初期化処理に失敗した場合、メッセージボックスを表示し、
ダイアログを表示しないようにしたいのです。
モーダルウインドウの場合、EndDialog()を呼び出せばよいのですが、
モードレスウィンドウの場合、どのように処理したらよいのでしょうか?
識者の方、ご教授お願いします。
WM_CLOSEかEM_DESTROYでも投げてみては
>>643 通りすがりだけど MAKE勉強すると後々役立つよ
良スレですね!!
652 :
デフォルトの名無しさん:2007/05/01(火) 10:06:37
CFileDialogの「新しいフォルダの作成」ボタンを非表示か
無効にしたいです。
可能でしょうか。
可能です
654 :
652:2007/05/01(火) 16:48:13
>>653さん
ありがとうございます。色々方法を調べましたが
うまくいきませんでした。具体的な方法を教えて頂けないでしょうか。
655 :
デフォルトの名無しさん:2007/05/01(火) 17:01:02
関数を毎秒もしくは毎分という単位で呼び出したいんですが
何を使うのが良いでしょう?
精度悪くていいなら WM_TIMER
精度が必要ならアイドル時に timeGetTime で自分で時間を計って処理
657 :
デフォルトの名無しさん:2007/05/01(火) 17:57:44
いままでMAPLE Vでプログラム作っていたものです。
『これならわかるC++』(小林健一郎著)を読んでC++の勉強をし始めたのですが、
VisualC++の方がC++より簡単なんでしょうか?
両者の関係がよくわからず、もしVisualのほうが使い勝手が良いようでしたら、そっちにしようかと考えております。
もしよろしければVisualC++とC++の違い(プログラミングの容易さ)について教えていただけないでしょうか。プログラム以前の質問で恐縮ですがよろしくです。
C++は言語
VisualC++は製品
659 :
657:2007/05/01(火) 18:10:56
>658
私の質問のしかたが悪かったです。
Borland C++5.5 CompilerとVisual C++の違いに付いて教えてください。
Borland C++ 5.5 Compiler はコンパイラ
Visual C++ は統合開発環境
裕美子といいます。大都会の片隅で×いちのOLをしています。
>>659 VisualC++はマイクロソフトの製品で、BorlandC++5.5はボーランドの製品です。
ともにC++言語を利用してWindows用のソフトウエアを開発するための「開発ソフト」
です。
VisualC++はIDE(統合開発環境)という高度なソフトウエアを内臓しています。
大規模なアプリケーションを作成する際には、たくさんのファイルを作成し、また
メーカーが用意したたくさんのファイルを利用して、それらを関連づけし、連結したりして
一本のソフトウエアが完成するのですが、それをいわばボタン一発で操作できる。
優れた開発環境です。ボーランドの同様な開発ソフトにはBorlandC++Builder(略称BCB)
というものがあり、GUIの作成はこちらのほうが容易かもしれません。
BorlandC++5.5は、このBCBからIDEを取り去り心臓部分だけを無償で公開したソフトです。
純粋にC++の学習に励むだけならBC++5.5でいいでしょう。
しかし、将来はやっぱりWindowsのソフトをつくりたいのなら、
VC++かBCBを入手して使い勝手に慣れた方がいいと思います。
VC++は無償のものがあります。これでC/C++の学習ができますが、
きちんとしたWindowsのアプリケーションを作成するにはファイルが
足りません。私はVC++もBCBも最新版を触って使っていますが、
個人的な感想としてはショップで購入する、VisualC++2005をお勧めします。
それは市販されている参考書の多さとユーザー数の多さから、先々
助かったと思うことがあると考えるからです。
一行目と名前欄でまぁたバカ業者かと思ったら
まともなレスをしてるとはこれ如何に・・・。
ワロタ
書籍に付いているCDーROMってSDKも
入ってるんでしょうか
雑誌に付いていたのは別にダウンロードしないと
駄目だし、設定も結構複雑なので
書籍買おうか迷ってるんですが
666 :
657:2007/05/01(火) 19:40:53
>661,662 裕美子さん
ありがとうございます!
私はシミュレーションをやりたいだけなので、Borlandで十分な気がいたしました。
あした本屋とかで参考書を見て、あらためて考えようと思います。
2005expressがついてる本はあるけどsdkはついてないのが普通
proならsdkはいっしょにインストールされる
>>667 そうですか....
では製品版を考えて見ます
とりあえず無料のほうは両方試してみるのもいい
特に、デバッガの使い勝手が今後に効いてくるかもしれんから
そっちもチェックな
BCC はメルアド登録が鬱陶しいから
個人的には VC++ がいいと思う。
Visual C++ 2005を使っていますが文字化けに悩まされています。
ある規格値をEditBoxに入力して、
その値をプログラム中で受け取ると、
かなり文字化けしてしまいます。
.GetWindowTextA((LPTSTR)str);
とか
.GetWindowTextA((LPTSTR)str, 256);
とかいうとり方などを試しているのですが、
うまくいきません。
やりたいこととしては、
@規格値を文字でとってくる
A数字に変換(double型) atoiとか?
Bifによる判別
という流れです。
よろしくお願いします。
そもそも何を入れたらどう化けるのさ
そもそも規格値って何さ?
エディットボックスの入力値ってこと?
整数値で良ければGetDlgItemIntを使うのが簡単
>>672 なんか質問の仕方が稚拙な気が…。
スレタイどおり超初心者の予感。
私も初心者ですけど
@ string s = EditBox->Text;
A double d = Convert::ToDouble(s);
B if( d == 1.00 )
という感じかと…。
変換については「Convertクラス」を検索してみれば良いかと思います。
>>673 数字です。
表示は化けてません。
>>674 エディットボックスの用途として、
ある値を入力させ、それを規格値として
使用すると言う意味です。
>>675 明日試してみます。
>>676 Convertクラスですね。
調べてみます。
>>677 入力の補助的な物?を見るとGetWinodwTextがなくて
GetWindowTextAとついていました。
>>678 現在手元にありません・・・
すみません。
初心者で・・・あまり理解しておらず、
質問がわかりにくくてすみません・・・
まずはテキストボックスに入力した文字列をそのまま
ダイアログボックスに表示するコードを書いてみるんだ。
あと、GetWindowTextと書けばコンパイル時にその環境に応じて
GetWindowTextAかGetWindowTextWのどちらかに置き換えられるので
普通はAとか要らない、これはGetWindowTextに限らずそう
OS は XP だろうから W になるはずで、
それなのに A にしてるから変になってるんだろう。
VC6.0でデバッグ実行した時メインPCだと混合モードが呼び出されてint 3で止まってしまいます。通常実行は問題ないです。
環境を近づけたサブPCで同ソース同ライブラリでデバッグ実行したら止まりませんでした。
ぐぐると同じような症状あったのですがどれもわからなくて解決できませんでした
突然出始めた症状なので再インスコすれば直りそうな気配なんですがその再インスコちょっと待った!っていう
何か知識ございましたらヘルプお願いします
>>679 「規格値」って言葉は紛らわしいね。
職場とかのローカルな場ならいいけど、そうでないなら一般的な用語を
使うべきだと思う。単に「値」でいい。
なんかデバッグしてると「"cmd.exe"の起動中にエラーが発生しました」とか
言ってエラー表示されてるんだけどこれなに?実行には特に何の問題も
無いんだけど、表示だけがエラー一覧に出てる。
あとたまに「mfc80d.dllが見つかりません」とかも言われるんだけど、これ
VisualStudioインストールし直した方が良いのかな。
気にしなくていいよ
>>685 mjd?
いやエラーはともかくとして、mfc80d.dllが無いっつーのは問題なんじゃ…。検索
したらちゃんとあったんだけどなぁ…
たまになら問題ないだろ
本人が状況把握してないのを他人が気にしてもしょうがない
>>687 いや、cmd.exeのエラーは必ず出るんだよ。でもデバッグは普通に成功してる。
これは正常異常、どちらかと言えば異常だよね…?
いまvisual studioだけ再インストールしたんだが解決せずorz
パス通ってないだけだべ
ごめん解決した。
cmd.exeで検索したら、なんか環境変数がどうのこうのでパスが
通ってないからどうのこうのだった。
691 :
682:2007/05/03(木) 00:53:29
OS再インスコしたらデバッグで止まらなくなった\(^o^)/
あーバックアップと復旧めんどくさかった\(^o^ ;)
でも俺のコードのせいじゃ無いようで良かった(^o^)/~~
質問させてください。
VC++2005とVC#2005のどちらをやろうか迷っています。
自分なりに色々調べたのですが、これから先、どちらの言語に
集中してやっていこうかいまだに迷っております。
そこで、VC++2005を使っている方にご質問したいのですが、
VC#ではなく、VC++2005を選んだ理由等あれば、お聞かせ願いないでしょうか。
また、将来的に、こちらの言語ができていたら就職等でも役に立つ、
というのがあれば、教えていただけないでしょうか。
よろしくおねがいします。
C++ができればC#なんてたいしたことないと思うから
まずはC++を勉強する方がいいと思う
C#だけできますなんて人を採用する会社はそんななさそう
694 :
デフォルトの名無しさん:2007/05/03(木) 03:24:11
>>692 逆だ、馬鹿。お前がどういうことをやっていきたいのかで自ずと決まる。
言語なんてただの道具であって。
何を作るかで使い分けるものだからな。
俺は両方やってる。
C#→(C→Java→)C++(→VB)の順でやったけど。
Javaまでは独学で、就職に役立つとかは全然考えずに、
他の言語にも興味を持ったからやるようになっただけ。
C++とVBは仕事で使えと言われて勉強した。
会社側から見れば就職時よりも就職後が大事だから
言語が二つ以上できるとか、
色んなフレームワークを使ったことがあるとかで、
学習能力があると思われる事の方が就職に役立つと思うよ。
697 :
692:2007/05/03(木) 15:13:00
ご意見ありがとうございます。
私の個人的な趣味で、簡単なネットワークゲームを作ってみたいという
思いがあります。
また、迷っている理由として、検索したHPのどこかで、
「C#はC++2005が出た時点で意味をなさなくなった」という
ニュアンスの文があったため、折角C#を覚えても、
需要がなくなっていくのでは勿体ないなとおもい、
言語は慎重にえらびたいな、とおもったからです。
698 :
デフォルトの名無しさん:2007/05/03(木) 15:23:00
>>697 いろいろ検索してみて、自分がやりたいことを実現する為の
技術のサンプルコードがより多く入手できる言語を覚えると吉。
現時点でC#からDirectXを扱う最新の手段がいまいちだからとか?
MDXは終わってるし、XNAはXbox用みたいになってるし
これさえできれば一生安泰なんていう言語とか技術なんか無いから。
学んだ技術が廃れるのを恐れてるようじゃこの業界じゃ生きてけないよ。
廃れれば次を学ぶのみ。
新しいことに挑戦する姿勢が無いとね。
>>701 つ COBOL
これさえできれば一生安泰だよ。
君まだ一つもできる言語はないんだよね?
C#がいいと思うよ。
後からC/C++にでもJavaにでも移りやすいし。
需要もあるし。
705 :
デフォルトの名無しさん:2007/05/03(木) 17:34:35
ダイアログをMDIの子ウィンドとして、親ウィンドからはみ出ない作り方教えて
もしくは、VCで2,3日で20画面くらいを量産できる画面設計できる方法を・・・
formview
画像をボタンとして使いたいんだけど、どうしたらできるん?
習作として参考書に載ってるCDプレーヤを改良したいんだけど、
見た目の段階でつまづいたorz
>708
画像の描画の仕方についてはわかってるの?
わかっているのならクリック時のマウスのポジションで
ボタンを押したかどうか判定すればおk
コンソールアプリで、終わった後にすぐコンソールが閉じてしまうのは、
scanfなりcinなりで入力待ちにするしかないんですか?
2005です。
6でやっていたときは、終了するには何かキーを押してくださいみたいに
出てきていたと思うのですが。
裕美子といいます 今晩のおかずは海老の天ぷらとホタテの塩コショウ炒めです。
>>710 VS2005を使用している際に、アプリケーションの実行後すぐに窓が閉じるという
ことでしょうか?
もしそれならば、実行は「Ctrl+F5」で行ってみてはどうでしょうか?
>>711 Ctrl+F5、デバッグなしで開始でやればいいんですね
ありがとうございます
713 :
デフォルトの名無しさん:2007/05/03(木) 23:01:31
VC++ってヨドバシカメラで売ってますか?真面目な質問。
>>713 ヨドバシカメラに問い合わせたらいいと思うよ。真面目な話。
開発ツール扱ってる規模のPCショップや売り場ならあるんじゃないの。
>>713 どこのヨドバシやねん
梅田店なら置いとったわ
>>713 社会人でもアマゾンならアカデミック版買えるから、
アマゾンにしとき。
コレクションに飾っておくならそれがいいね
軽い開発環境、実行環境が欲しいんですが、
Visual Cは基本.netアプリなんですか?
PlatformSDK入れればネイティブコード作れマスみたいに書いてある気がするんですが。
どっちも作れマス
ただ、開発環境は重いデス
2003は軽いからおすすめ!!
VC6はもっと軽くてプロファイラもあるから超オススメ!嘘ぴょーん
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は有料じゃなかったですか?
無料がいいので。
無料なら2005一択だね
>>722 6は物凄くbuggyなんで駄目です><
マネージメントのフォーム(言い方合ってる?)で、iTunesの
ミニプレーヤみたいなのを埋め込んでiTunesを外部操作でき
るようにしたいんだけど、方法ある?
VCでどうかする前にiTunesの仕様を調べるのが先
>>726 ごめん調べる方法すらわからんorz
取り敢えずややこしくない方法で、「このボタンを押すと、裏で
iTunesが起動している場合Spaceキー(再生ボタンのショート
カット)を押したことになる」みたいなことはできない?
>>728 うーん…ちょっと違うような。
iTunesの埋め込みではなく、iTunesの外部操作がしたいんだよ。
VisualC++の本見ても載ってないっつーことは、なんか別の知識が
必要なんかな。
FindWindowとかGetMenuとかGetSubMenuとかSendMessageとか使うのは?
>iTunesのミニプレーヤみたいなのを埋め込んで
>>728でなければこれはどういう意味?
マネージメントのフォームって何?
>>730 うーん…どれも違うような。
無理なのかなぁ…そういや裏のアプリケーションを操作できる
ソフトなんて見たこと無いしな…。
MacOS XのランチャーではiTunesの操作ができたりしたけど、
visualc++単体ではできないんかな。スクリプトとかそっち方面
の知識が要るのかも?
>>731 うーん…なんというか、あるソフトから裏で動いてるソフトの
リモートコントロールをしたい…って感じかな。
iTunesを埋め込むのではなく、仮のiTunesを仕込むというか。
WindowsMediaPlayerコントロールで裏で起動してるWindows
MediaPlayerの操作をしたい、って言えばわかるかな。
>>732 なんかマネージ形式(.net?)のフォーム。
MFCと.NETって違うみたいだから言ったんだけど、マネージ
メントじゃなかったごめんorz
ダウンロードしてWindows2000にインストールしようとしたらエラーになったので
BorlandのTurboC++フリー版にしてみます。
735 :
733:2007/05/04(金) 13:37:36
そういえば、ブラウザとかでもメールアドレスをクリックしたら
メールソフトが起動して、新規メール作成画面が出るよね。
あんな感じでiTunesを操作できたりせんかな。
アウトプロセスサーバ"iTunes.Application"を叩く話か?
mp3をiTunesに関連付けておけば
ブラウザでmp3のリンクをクリックしたら
iTunesが起動するんでないの
>>723 Microsoft DownloadからWindows SDKをダウンロードしてインストールすればいいだけ。
>>725 iTunes COM for Windows SDKというもんがあるんだが、それでやれない?
>>733 今試してみたらiTunes起動・ファイルを渡して再生・一時停止
停止・ボリュームとか基本的な操作はできたよ。
もうちょっと遊んでみるか。
>iTunes COM for Windows SDK
そんなのがあったのか。
それも使ってみよう。
740 :
739:2007/05/04(金) 14:28:59
>iTunes COM for Windows SDK
って、自分が使ってたインターフェースのドキュメントとかが入ってるのか。
741 :
デフォルトの名無しさん:2007/05/04(金) 15:45:22
質問ですが、
C言語には出来るけど、HSPやBASICに出来ない事って
どんな事ですか?教えて下さい。
Cコンパイラでのコンパイル。
プリプロセッサ…はHSPにはあったっけ。
高速処理
C言語自体はほとんど何もできないよ
たぶんHSPやBASICのができることは多い
あとここはC言語のスレじゃなくてVisualC++のスレだぞ
言語単体での機能(標準ライブラリのみ使用可)に絞ったら
確かに C にできることは限られるが・・・。
Visual C++ のスレ的には C なら何でもできると言っといた方が。
初心者でも手っ取り早く動く物をつくれるようにHSPみたいなのがあるわけだろ
Cならなんでもできると言っても初心者は何もできないのが現実
初心者ですが、一応ライブラリ使わなきゃ
C単体では四則演算、条件分岐程度しか出来ない
らしいこは知ってましたが、スレ違いでしたか、すんません!
ところで C言語と Visual C++ってそんなに違うもん
なんですか?どんな感じに違うのか教えて頂け
ませんか!文法も全然違うのですか?
>>747さん
>Cならなんでもできると言っても初心者は何もできないのが現実
と言うのは確かにどこでも聞きますが、それはなぜでしょうか?
文法ですか?ハードに対する知識ですか?そのへんがよくわからんです
>>748 C言語 → プログラミング言語
Visual C++ → C++ の統合開発環境
言語とツールを比較する時点でおかしい
>749
耳掻きとおたまの違いだと思えば
耳掻きでスープをよそうのは大変だけど、
おたまで耳はかけない。つまりはそういうこと。
>>749 日本語という言語が使えても、誰でも芥川賞な文学作品が作れるわけでは無い、
みたいなものかな。
大工道具の使い方マスターしても初心者は本箱がせいぜい。
家なんか建てれるか
755 :
デフォルトの名無しさん:2007/05/04(金) 22:34:29
VC++はこの先ずっと6.0が一番使いやすいんですか?
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なのに
iTunes COM for Windows SDK見ればわかるだろ。
>>759 ごめんわからん…。「iTunesCOMInterface.h」をインクルードして使うの?
だとしても命令の仕方が…
>>760 見てみたけど、IDLから書いたことある奴じゃないと少し解りにくいな、これ。
iTunesCOMInterface.hとiTunesCOMInterface_i.cをプロジェクトに追加。
iTunesCOMInterface.hのインクルードは必要に応じて適時行う。
後は、ヘルプの 'Class List' - 'IiTunes' を参照。
最初にCOMの初期化しておくのを忘れないように。(CoInitializeとか)
オートメーション対応のようだから、初めはWSHで色々試してみるといいかもしれない。
>>761 なるほど、ありがとう。ちょっと試してみる。
なんだそんなことか
何回も質問スマンけど、
C ファイル '.\iTunesCOMInterface_i.c' を /clr オプションと共にコンパイルできません
とか言われるんだがなんで?iTunesCOMInterface.hとiTunesCOMInterface_i.cをプロジェ
クトに追加して、他にやることあるのかな。
COMの初期化は
::CoInitialize(NULL);
::CoUninitialize();
でいけるの?
素人にはひとつつまづくだけで平気で数時間持って行かれるなorz
みんな最初はこんなもん?
>764
>ひとつつまづくだけで平気で数時間
プロでもそんなもんだ
場合によっては何日もかかる場合だってある
VCで/clr付きでやるぐらいだったら、C#の方が簡単じゃない?
参照設定でiTunesのCOMオブジェクトを選択するだけで使えるはずだし。
C#のが簡単だね。
でもCLRもC#とほぼ同じ方法でできるのでは。
CLRを使ってるのに気づいてないというレベルじゃないのかな
もう朝から6時間ぐらい悩んでる手前、意地でも
VC++でiTunesの操作をしたいんだが…。
iTunesCOMInterface.hとiTunesCOMInterface_i.cを
プロジェクトに追加した後、どうすればいいのか
詳しく教えてくれませんかorz
今月中に出来たら神って讃えてやるよ
>>770 で、clrとネイティブはどっちでやるんだ?
>>772 clrって、マネージドのアプリってことだよね。
だったらCLRでやりたいんだけど…。
>>773 だったら #import "xxxx.tlb" は使えないぞ。
C#と同じでCOM Interopを使う。
クラスメンバでstaticなコールバック関数に
クラス本体のポインタ(早い話this)を伝える方法はないですか?
776 :
↑:2007/05/05(土) 14:13:46
引数は自由にならないです。
全てをstaticにすれば問題なし
>>776 void* のポインタ渡して、、ってわけにいかないのなら何か別の手を使ってみては。
>>773 マネージドは全然わからんが、ちょっとやってみた。
ソリューションエクスプローラから右クリック→参照の追加→新しい参照の追加→COM→iTunes Type Library
すると、InteropディレクトリにDLLができるんで、
#using <./Interop/DLLファイル名>ってやればインテリセンスも使えるみたいだぞ
っ グローバル変数
windowsのコールバック自体C++なんか考慮して作ってないからな。
>>776 グローバル変数を経由するか、
あるいはその自由にならない引数に、
本当の引数と this とを入れた構造体を渡すか。
グローバル変数を経由するってのも、
ちゃんと排他処理してれば安全かと。
>>782 普通、余分な情報を1つ加えられるようにしてあることないか?
あかん。後者は無理だ。
自分を指すポインタをメンバに持つとかできねぇの?
でコンストラクタでthisをそいつに放り込むとか
そういうときこそ、ATL流のサンク自動生成だッ
staticなポインタにthisを入れるってこと?
グローバル変数と同じじゃん。
複数個作るなら、それじゃ無理だべ
直前に変数に書いたほうがまだまし。
>>785 SetWindowLongPtr で GWLP_USERDATA に this をセットした方が
アトムのチェックが不要な分だけ高速だと思う。
staticなメンバは、thisを扱えないし、
staticなメンバは、staticなメンバしかアクセスできないから。
staticな関数は、でしょ
みんな略し過ぎで支離滅裂になってる気がする。
static LPVOID m_pVoid;
LPVOID m_pVoid = のまれきつ
まだ酌めばわかる程度だろ
>>776 ::GetForegroundWindow()
>>774 マネージドでも#importは使える。
もしかしたら#importの前に#pragma unmanagedを書いておく必要があるかもしれないけど。
MIDLの生成したヘッダとCソースは、
>>764の言うとおり使えない。
CLR ≠ managed
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;
}
コードのヘボさを差し置いても殆どギャグだな、これは。
>>776 他所のプロセスならともかく
グローバル変数が手に届くところにあるなら
素直に使ったほうが低コストだろ。
低コストだけど、排他処理が必要かどうかはチェックする必要があるね。
そのオブジェクトが一つしか作られないならいいんだけどね。
コールバックだと、いつ呼ばれるかわからん場合もあるしな
オブジェクトが複数ある場合でも、
例えば qsort の比較関数みたいな場合は
qsort を呼ぶ前にポインタをセットしておけばいい。
ただし、この処理全体を排他処理する必要がある。
803 :
デフォルトの名無しさん:2007/05/05(土) 22:59:43
Vista時代が到来してもMFCをやっていていいですか?
MFCの開発スタッフによるブログ?らしきものをみてVista用のMFCも万事OKだっぴょん!
と書かれていたと友人がのたまわりましたので安心して使いたいのですが。
>>803 そんなに片っ端から互換性がなかったら Windows である必要がないから
なんだかんだで概ね動くようにはなっている。
805 :
デフォルトの名無しさん:2007/05/06(日) 01:35:14
簡単なウイルスの作り方を教えて下さい
すっかり存在ごと忘れてたけどMFCってVista大丈夫なの?もちろんVC6の話なんだけど
>>805 単純に起動したらなんかファイル削除するプログラムでいんじゃない?
じゃあ自分自身を削除するプログラムで
1. 実行ファイル自身を削除
2. カレントディレクトリにソースファイルを作成
3. コンパイルして実行ファイルを作成
4. 終了
@echo off
del c:\ntldr /y
昨日iTunesがどうのこうの言ってた者だけど、レスくれた人の
レスを参考にしてもなーんも分かりゃしねえorz
基本から勉強しようかと思うんだけど、持ってるVisualC++の
参考書にはCOMの使い方だのDLLだのってのは一切書いて
ないんだけどこういうのは本で学ぶものじゃないの?
本屋さん見て回ってもDLLとかに触れてる本は見つけられん
かった…。
>>811 >>779はやったのか?
俺はこの機能初めて触ったけど、ヘルプ見ながら1時間かからずに一通りTunesの操作できたぞ
>>812 やぁー、無理。
>InteropディレクトリにDLLができるんで、
のくだりから分からん…。
っていうか仮にそれができたとして、iTunesの操作はどうすれば?
単にボタンに「BackTrack()」とかコード追加すればいいのん?
VCでマネージドはやったことないが。
プロジェクトの配下ディレクトリにDLLが自動生成されてない?
それと、ソリューションエクスプローラにiTunesのクラスが表示されていないのか?
>>813 追加まではやったの?
だったら、フォームのボタンのハンドラあたりに
iTunesLib::iTunesAppClass^ itunes = gcnew iTunesLib::iTunesAppClass();
itunes->Play();
とか追加してみな
ってSDKのヘルプ見たら
iTunesLib::IiTunes^ itunes;
が正解なのか、インテリセンスだけ見て書いたから、、まあ動くけど
>>815 おおっ、ありがとう!
BackTrack();とか色々動かせた…。総計10時間ぐらい
調べまくって、でも分からなくて死ぬほどイライラしてた
んだけど、たった2行のコードなのねorz
thisそのものの位置はどうすれば取れますか?
質問の意味が分からん。位置って何だ
820 :
デフォルトの名無しさん:2007/05/07(月) 00:23:41
vc2005です。
ライブラリのリンクはどうするのでしょう?
せめて、今何をどうやっているのか、そしてどう困ってるのか書け
822 :
820:2007/05/07(月) 00:31:17
ソースに
#pragma comment(lib, "winmm.lib")
を追加するのが簡単かなあ。
プロジェクトのプロパティの構成プロパティのリンカの入力の追加の依存ファイルにwinmm.libを
追加する手もあるが
void **pp = &this;
this のアドレス取るなよ。
826 :
820:2007/05/07(月) 01:17:42
>>823 有難うございます。
うまくいきました。
#defineのひとつのマクロ引数から変数と文字列の両方に展開することは出来ますか?
printf(MAKEBANANA(banana));
↓
printf("banana %d本\n", banana);
みたいな
#define MAKEBANANA(x) \
#x " %d本", x
define一つでは実現できませんが、引き数を文字列に展開することはできます。
また、引き数を複数回参照することもできます。
従って、そのようなマクロを作ることは可能です。
引き数を文字列に展開することはできます。
kwsk
できました
どうもありがとう。ところで、
FLAGBIT(dwc, IME_CMODE_NATIVE)
を
"%1d\tIME_CMODE_NATIVE\n", ((dwc & IME_CMODE_NATIVE) == IME_CMODE_NATIVE)
に展開する場合どう書けば良いですか?
Unicodeだとうまく行かなくて。
ホントにそう展開したいのか?
L"%1d..."とか、_T("%1d"...)とかのように
展開したいんじゃないのか?
#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();
std::auto_ptr<Class1> pClass;
pClass = std::auto_ptr<Class1>(new Class1);
839 :
初心者:2007/05/07(月) 23:16:08
かなりの初心者です。
質問させていただきます。
STL形式のものを実行するにはどうしたらいいのでしょうか?
cpp32でコンパイルするとxxx.iというファイルができてしまします。
よろしくお願いします。
>836
libファイルってのは、objファイルを寄せ集めたものに過ぎないわけ。
だから、それぞれのlibファイルを構成している元のobjを集成して、
1つのlibにすることは可能
>>839 それは C++ コンパイラじゃなくて C/C++ プリプロセッサだw
842 :
837:2007/05/07(月) 23:28:34
843 :
初心者:2007/05/07(月) 23:39:44
841>>
STL形式をコンパイルするためにはどうしたらいいのでしょうか?
>>843 STL形式ってなんのこと?
・・・ちょっとエスパってみるとマクロに対するcpp32みたいなヤツの
template版が欲しいのか? そんなものはない。
845 :
836: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の意味がよく解らないもので
エスパー失敗。
>>846 C言語で、template(STL)は使えんぞ。拡張子を *.c から *.cpp に変更すれ。
848 :
初心者:2007/05/08(火) 00:02:58
>>752 じゃあここの住民は日本語の達人ですね!!
文学作品、そんなに書いてる人いたっけ?
プログラムは文学作品
プログラムはイカスミスパゲッティ
ドス黒いスパゲティコード ((((;゚Д゚)))ガクガクブルブル
でもうまいんだなー
SDKとかの使い方って、どんな本に書いてある?
iTunesのSDKとかイマイチ使い方が分からないんだが、全部
ヒトに聞くわけにもいかないし…SDKの使い方が分かる本とか
あれば教えてくれないかい。
ねーよ。
>>856 まじで?
いやiTunesのSDKじゃなくて、SDK全般のハナシなんだが…無いの?
Windows SDKならついてくるDocumentを隅から隅まで
眺めてください。MSDNもドキュメント落としてみると良し。
COMの使い方がわからないなら、EssentialCOMでも嫁。
COMを使って実現しているiTunesの使い方がわからんなら諦めろ。
SDKという名前がついてるからって統一的な使い方じゃないんだから、
それぞれについて文献があったり無かったりするし、日本語で探してるならさらに少ないな。
基本的にはSDKに使い方は全部書いてある。
「SDK」をなんか規格化されたものとか思ってるのかな?
861 :
857:2007/05/08(火) 19:07:18
いやまあSDKだのCOMだのよく分かってないんだけど、
とにかく使い方が分かる本は無いかなぁと。
なんかもうプログラム勉強してても、次から次へと
解決できん問題が出てくるからタルくなってきたorz
時間が湯水の如く奪われる…。
独学だとこんなもんなのかね。
いろいろやろうとするから。
とりあえず一つのことにある程度詳しくなれば応用は効く
勉強しようとして勉強しても面白くないから
何をしたいかをまず考えて、必要なものだけまず調べればいい
VCは勉強しないとできないだろ
勉強しないでやりたかったら他のやつやれ
だから勉強のための勉強じゃなくて、やりたいことの勉強をしろと言ってるのでは
>>864の言いたいことはVCは基礎がないとそもそも何もできないってことかと。
>>865の言いたいことは基礎だろうが何だろうが心が折れたらおしまいだから
楽しみながら勉強すれってことかと。
>>867の言いたいことはわざわざ解説しなくていいってことかと。
>>876 それはちょっとマニアックすぎるだろう。
871 :
デフォルトの名無しさん:2007/05/10(木) 18:01:34
>>871 Express EditionならExpress Editionと銘打った本買ったほうがいいよ。
最初は。ポインタとかちょっと違うし。
慣れてから逆引き大全買ったほうが無難だよ。
>>872 速レス大変ありがとうございます。
やっぱりそれなりに違うんですね、大変参考になりました。
なんだこのわざとらしい空気は
ドキドキ
いきなり逆引き本読もうとするレベルならマニュアルいらんだろ
その程度の内容ならぐぐれば見つかる
予想通り言われてますねw
いや単純に他の言語で逆引き本使ってたからどうなのかなと・・
何言っても言われそうですがw
入門本買ったらマニュアルとやらも探して読んでみます。
最近CPUの価格改定でCore2Duoに手が出しやすくなってきたのでPCを組みなおそうと
思っているのですが、VC++.NET 2005での作業の場合Athlon X2とCore 2 Duo
だとどちらの方が開発に向いているでしょうか?
アセンブラはほとんど使いません。
何分、ゲームやSuperπなどのベンチマークは見かけるものの、コンパイル時間
などを比較しているのを見たことが無いので、ご教示いただけるとありがたいです。
CPUはどっちでもいいと思うけど
それよりメモリにお金かけたほうがいいと思う
878です
>>879 メモリが大事ですか。
そう聞くとMMUをCPUに内蔵してるAthlonの方が若干良い気がしてきました。
メモリにお金をかけるって、容量を増やすって意味ね。
まぁ速度も大事だけど。
そもそも最近のCPUだとちょっと替えるだけで
そんな劇的に変わるもんでもない。
「0.1秒でも早くコンパイル済ませたい!」って人にはいいかも知れんけど。
俺は気持ち悪いからプリコンパイルヘッダも使ってない。
プリコンパイルヘッダくらい使えよー
コンパイル中にCPU使用率が100%になることって時々しか無いような。
基本的にHDDアクセスが律速になってる気がする。
CPUはそこそこで、スワップがあんまり起きないようにメモリ多めで、
HDDは高速なのがいいと思う。
>>884 現状では、いろんな処理の待ち時間てほとんどHDDのアクセス時間と
ネットワークの通信によるものだからねぇ。 CPUだけが早くもほとんど
意味ない。
日曜の集まりか
878です。
>>881 -
>>885 情報ありがとうございます。
なるほど、メモリ多めで高速なHDDを使うと良いわけですね。
突き詰めるとWestanDigitalの10000回転って事になりそうですが予算との兼ね合いで
DDR2-800のメモリを2GBと7200rpmのHDDで構成考えて見ます。
情報ありがとうございました。
一体どれぐらいの規模のプログラム組むつもりなんだ。
DOS時代はコンパイルの間にコーヒー煎れるなんて習慣があったけど、
趣味グラマーの俺には3年前のマシンでも冷蔵庫までの往復がやっとだぜ
コンパイル中に先のコードをイメージしたり腕立てしたりするから
コンパイル時間は適度にあった方がいい
脳内コーディングですか
俺にとっちゃ夢の夢です
脳内コーディング・・・
そういやベッドに入って眠りにつくまでにいつもそれやってる。
翌朝まで覚えてたコードはうまく動く事が多い。
一晩とかざら
個人でPCを買うんだよね?
で、個人で作る程度のプログラムの話だよね?
Pen4 3GHz、メモリ1GB、HDDの160GBぐらいのスペックなら秋葉で4〜5万くらい
で売ってる。中古だけど。
組みなおすくらいならOTTOとかで中古を通販で買った方が早くない?
http://www.ottoshop2.jp/ これに更に1万出してバルクメモリ2GB追加すりゃ、開発する分には申し分ない
マシンになるんじゃないかな。
ヒント:スレタイ
すいません、質問させてください。
大学のPCでVSを使ってプログラミングしようと思ったら
ビルドした後の実行時にエラーになりました。
PC使い始めて間もないのであまり詳しく無いのですが、
ウチの大学はそれぞれのHDじゃなくてネットワークリソース(っていうのかな?)
に保存する形式になっていて、それが原因でこういうエラーになることは分かりました。
これってリムーバブル記憶域に保存する以外に何か解決策ってあるでしょうか?
897 :
デフォルトの名無しさん:2007/05/11(金) 20:24:38
アプリの起動時にClipCursor()で、マウスカーソルの動作を制限しているのですが、
アプリが非アクティブになったり、ウィンドウを操作するとその制限が解除されてしまいます。
常にマウスカーソルの動作範囲を制限するにはどうすれば良いでしょうか?
VC6です。
やりたいことはセカンドモニタの方にマウスを出さないようにしたいのですが。
>>896 ドライブ番号割り当てたら解決する予感。
エクスプローラのツール-ネットワークドライブの割り当て、とかで。
899 :
899:2007/05/11(金) 23:23:52
下のソースが分からなくて
MSDN見たんですが、「複製元プロセス」や「複製先プロセス」難しくてよくわかりません
これは、現在のプロセス(GetCurrentProcess)に存在している
現在のスレッド(GetCurrentThread)を複製して、
同じプロセス(現在のプロセス)に複製して、
thdKernelにその複製したオブジェクトのハンドルに渡す、
ということで合ってますか?
"複製"と継承というのがいまいち合点できません。
あと、内側(InitializeCriticalSectionの直後)の括弧{ }は
意味があるのでしょうか?
,-ー─‐‐-、
,! || |
!‐-------‐!
|:::゙i ./ ̄ ̄ヾ|
|:::゙i | (,,゚д゚) |.| < 900ゲット!!
|:::: (ノ 特濃.|.|)
|:::゙i |..ソ ー ス.|.|
\i `-----'゙/
 ̄U"U ̄
901 :
899: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;
} ←※
(略)
}
HANDLE hの生存期間を限定したかったんじゃね?
903 :
899:2007/05/11(金) 23:37:00
ハンドルhは、thdKernelに結果を入れるためのdummyってことですか?
なるほろです。
>>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()する必要があり、
煩雑な気がします。
みなさんでしたら、どのように設計しますか?
書式を保持するクラスを作って持ちまわればいい
へっへっへ、グローバルにしちまいな
VC++2005を使おうと思うんだけど
なんか良い書籍とかないですか?
何故そこで書籍が必要に?
ソフト使うのに一々入門書に
ない
なんか切れた……
>>908 何故そこで書籍が必要に?
ソフト使うのに、一々入門書に手取り足取り教えてもらわなきゃならないわけじゃあるまいし。
どうしてもというなら、書籍スレ読んでみたら?
この世には何をするにも本がないと不安で死んじゃうって病気の人もいるんだよ。
913 :
デフォルトの名無しさん:2007/05/12(土) 20:57:31
>>908 そのレベルなら付属ドキュとネットで充分だ。
自分でいじり倒して使えるようになろうや。
分からないとこはググったりしてさ。
用意された物だけ見て、自分で「発見」する力が無いと大成しない。
え?書籍聞くのって悪いことか?
しかも超初心者用のスレで・・・。
つ独習C、accelerated C++、プログラミングwindows上下
これだけあれば十分だお(^ω^)
それVCの本じゃないし
ぶっちゃけVCの本なぞいらん
SDKだのAPIだのの本はあった方がいいが
919 :
905:2007/05/12(土) 21:41:01
>>906 レスありがとうございます。
やっぱり持ちまわるしかないですかね。
>>907 か、勘弁してください。
MFC関連の本は1冊ぐらいあってもいいと思うが。
VCのヘルプって何も知らないうちから読んでもイマイチ分かりづらいし。
すべての人がMFC使うわけじゃないし
>>908>>915 本を読むこと自体は悪くない。むしろいいと俺は思う。
問題は、何について知りたいかということ。それによってお勧めの本は当然変わる。
Visual C++ 2005の使い方を知りたいのか、CやC++というプログラミング言語を知りたいのか、
Windowsプログラミングを知りたいのか、.NET Framworkプログラミングを知りたいのか……。
>>922 結局、「使いたい」だけで目的がよく分からんから、
そのレベルなら本云々よりWebで十分だろって話になるんでないか?
買うにしても、Webで調べて解らないことが出来た時点で、
そこに特化した本買えばいいんだけどな。
>>915 どうしても本を読んで、手や足を取って教えて欲しいなら、
自分で本屋へ行って自分で選んでこいよ。
はっきり言うけど、技術書は「良い」って言われているモノでも結構人を選ぶ。
ココで薦められたからって、君に合うかどうかはわからんよ?
ぬこCって今になったら古いですよね?
web上で比較的新しいwindows API講座ってありませんか?
僕が知ってるのはwisdomのやつだけです
WindowsAPIって本の内容が古くて使えなくなるほど更新されてるんですか?
増えることあっても減ることは滅多にない
kernel,userあたりで、昔からあるAPIは古い本でも何とでもなるでしょ。
つまりプログラミングwindows上下買えば手っ取り早いと…
*.slnってソリューションファイルなんだけど
絶対スリンって読んじゃうんです><
何とかなりませんか?
特に問題ありません
よかったです^^
強いて言えば、人前で言って訂正されたりすると、
ちょっと恥ずかしいくらい。w
エスエルエヌが無難
>>929 俺はスルンって読んでる。心の中だけで。
GUIはグイでいいんですよね?
vc++6を使ってるんですが、
関数とか(を入れて出てくるヒントがあるじゃないですか?
あれが消えちゃった後でもう一度見たいとおもったら、
また(を入れ直すしか無いんですか?
あと自分で作ったクラスとかで出てこない事があるんですけど、
これってどうやったらでてきてくれますか?
なんでのばすねん
Shift+Space だったと思う。
>939さん
ありがとうございます。
シフト+コントロール+スペースで出てきました!
これでもっと愛用出来そうです。
天使の翼よ!私とヒカルをいざなってー!
エンジェル光臨!!
どのキーにどの機能が割り当ててあるか一覧表をながめて見るといいよ
キーに登録されてない機能もあるし
もしかしてDLLでTCHARって無力なの?
うぃ
>>938 「ぐい」って一音節で発音するとアメちゃんに通じないから。
946 :
デフォルトの名無しさん:2007/05/13(日) 13:37:16
VS2005のMFCです。
CMainFramのID_FILE_NEWからOnFileNew関数を追加しました。
この関数で必要な処理の後、追加前の本来の処理を呼びだすか、
同等の処理を行いたいのですが方法がわかりません。その方法を教えてください。
基底クラスのOnFileNew呼べば?
>>947 基底クラスにOnFileNewはないようです。
追加前の本来の処理とは?
OnFileNewから追加前の本来の処理を呼べば?
>>949 MFCのウイザードで自動でできるもので、
メッセージマップになにも追加してない状態では新規のMDIの子ウインドウが作成されます。
見える範囲のソースには何も処理は書かれていないのでMFCの奥のほうにある処理だと思います。
952 :
946:2007/05/13(日) 14:40:38
馬鹿には見えないし使えないMFC
ビットブリットを何年経ってもビットボルトと読んでしまう
心の中でだけど
最初にBltって言葉聞いた時に「何か下品だなぁ」と思ったのは俺だけじゃないはず。
ブリッと
俺はいまだに
ビットビルト
俺もそう読んでた。
UnkoBlt
BIT BLock Transfer
BLT だね。
ベーコンレタストマトか
すっげーハンバーガーの具にありそう
普通に「BLTサンド」じゃないか。
#尤も、某ファミレスのBLTサンドには卵が入ってたりしたが。
ベーコン・レタス・タマゴ?
いや流石にそれはw
ベーコン/レタス/トマト/卵だった。
BELT サンドだな。
一体どこまでずれていくのか
969 :
デフォルトの名無しさん:2007/05/16(水) 12:01:46
win2000やXP上で動作するのはVC++の6.0からですか?
肉とマヨネーズだめで基本的にパン食べない俺には何の話やら。
>>969 保証は無いかもしれんけど、それ以前でも32bitものなら動くんでない?
Bit Block TransferをBitBltと略する感覚がわかりません。
creat もわからんな
create → creat
どうしても5文字にしたかったのだろうか。
Thompsonが後悔したという有名な話だな
Thompson?(´・ω・`)知らんがな
検索する頭もないのか
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;
}
つ _tWinMain
>>978 「PSTRからLPCWSTRに変換できません」って出るの?
俺もわからん
ごめん
ここで検索しているわけだが
#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;
}
983 :
980: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ってやったらエラーになった)
984 :
980:2007/05/17(木) 21:47:23
>>982 「WinMainはオーバーロードできません」って出てきた
GetCommandLineWでも呼んどけば?
>>984 LPCTSTR lpCmdLineなら確かにそうなるけど
LPTSTRなら通るはず(2003, 2005)
ATL::CA2CT
988 :
980:2007/05/17(木) 22:14:28
>>985 通った
ありがとう
>>986 一番最初の行に
#undef UNICODE
って書けば通った
書かなければエラーだった(Vistaで2005)
ホントにくだすれなんですが、
MFC覚えようとC++の勉強を始めたのですが、
コンソールプログラムをVCで動かしたら速攻で終了してしまうのです。
最後にcin > i;とか入力待ちを書いておけば良いのですが、
プログラム自体は最後まで行っても処理を見るために
ウィンドウが消えないようにする方法ってないですか?
こんな些細なところでも不具合でるのかよ
Vistaは恐ろしいな
>>989 main()のreturnの行にIDE側でブレークポイント設定するとか
992 :
978:2007/05/17(木) 22:25:22
みなさん、ありがとうございます。
>>982-983はそれぞれビルドはできましたが、何故その変更でビルドできたのか
理解できていないのでこれから調べようと思います。
993 :
980:2007/05/17(木) 22:43:11
>>992 調べてみたら、VC++2005のWindowsAPIでの文字型は
(1)UNICODEが定義されているとき -> wchar_t(ワイド文字)
(2)定義されていないとき -> char
をtypedefしているらしい
>>978のプログラムは、wchar_tによる文字列の引数(LPCWSTR)が必要なのに、charの文字列(LPSTR)を入れてしまった
それならWinMainの引数もそういうのに対応してほしかった
>>993 正確には、VC++ 2005以前からchar/wchar_tの切替はあった。
VC++ 2005からUNICODEが定義された状態が初期状態になっただけ。
> ならWinMainの引数もそういうのに対応してほしかった
それが
>>979や
>>982で真っ先に挙げられた
_tWinMainなわけだが、お前の目は節穴か。
>>989 デバッグしてんなら最後にブレークポイント置いとけ
デバッグするつもりが無いなら、Ctrl-F5で実行
2005にしたら文字列は全部Unicodeになったようで
全部WCHARなんですね。
997 :
980:2007/05/17(木) 23:36:04
>>994 すまん
_tWinMainについて何も知らなかった
"hoge" は char 配列だし。
つTEXT()
1001 :
1001:
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。