1 名前:デフォルトの名無しさん mailto:sage [2008/10/31(金) 12:16:11 ] Visual C++入門者・初心者からの質問を、 お兄ちゃんお姉ちゃん達が優しく、時には厳しく回答してくれるスレッドです。 ■質問するにあたって ・エラーや警告のときはエラーメッセージを書きましょう。 ・開発環境も書きましょう、特にWindowsForm、MFC、Win32アプリケーションの区別。 ・できるだけ具体的に。 質問の仕方については次のページが大変参考になります。 www.hyuki.com/writing/techask.html ■回答するにあたって ・回答する場合はその答えに至るための「コツ」も書いてあげると良いでしょう。 (MSDNのどの項目だとか、何のキーワードでGoogleするとか) ・ネタや煽りは軽く流しましょう。 過去スレ、関連スレなどは>>2-5 辺り。
421 名前:デフォルトの名無しさん [2008/12/18(木) 11:45:07 ] Visual Studio 2005 でC++をやっているのですが i = 0; for(i = 5; i < 0; i--){ printf("%d",i); fflush(stdout); Sleep(1000); } この処理を通ってくれません。forの頭までは来ているのですが次の処理でforを抜けてしまっています
422 名前:デフォルトの名無しさん [2008/12/18(木) 11:49:24 ] C++なのにprintfなんだ・・・
423 名前:デフォルトの名無しさん mailto:sage [2008/12/18(木) 11:52:05 ] >>421 i > 0 にしろ それとi = 0は必要なのかね
424 名前:デフォルトの名無しさん [2008/12/18(木) 11:52:40 ] すみません。書き間違いです コンパイラがC++で、書いてるのはCです
425 名前:デフォルトの名無しさん [2008/12/18(木) 11:55:33 ] おお、いつのまに符号逆に・・・・最初は使えていたのにおかしいと思いました。すみませんありがとうございます i = 0 はなんとなく癖です
426 名前:デフォルトの名無しさん mailto:sage [2008/12/18(木) 12:00:53 ] 下らないかもしれないけど、助けて下さい・・・。 VS2008でC++作ってます。 Irvineとかそういうダウンローダーでよくあるグリッドの入ったリストを作りたいんだけど、そのパーツ?コンポーネント?の名前さえも全くわからず・・・。 ToolBoxでコレだよ、的なもので良いので教えて下さい。
427 名前:デフォルトの名無しさん mailto:sage [2008/12/18(木) 12:28:37 ] >>426 Microsoft DataGrid コントロール ActiveXのやつ
428 名前:デフォルトの名無しさん mailto:sage [2008/12/18(木) 12:31:39 ] ってIrvineとかそういうダウンローダーを知らないんだけど LisiViewコントロールじゃだめなんかな?
429 名前:デフォルトの名無しさん mailto:sage [2008/12/18(木) 12:35:23 ] ListViewってアイテムごとに枠がつかなくないか?エクセルみたいに
430 名前:デフォルトの名無しさん mailto:sage [2008/12/18(木) 12:45:03 ] >>427 ありです。ちょっと試してみますー。
431 名前:426 mailto:sage [2008/12/18(木) 12:55:29 ] 出来たけどRowの部分に出てるのが気になる・・・orz >>429 Excelみたいに各セルが選択できるタイプじゃなくて、選択の対象が行単位で出来るものが良いんですよね。 今ちょうど見たら良い例があったので出してみると、ギコナビの板の中身の表示部分(スレッド一覧)とか。 それにグリッドがついたようなものが欲しいです。 色々と足りてなくて申し訳ない・・・orz
432 名前:デフォルトの名無しさん mailto:sage [2008/12/18(木) 13:01:10 ] リソースのストリングテーブルって1つ以上作れないんですが、 文字列をまとめて入れ替えたい場合はどうすればいいんですか? もしかして全てのloadstringの行でIDSを分岐させてるんですか?
433 名前:あ [2008/12/18(木) 13:12:37 ] >>432 IDをずらす LoadString(hInstance, IDS_MYSTRING + (f ? 10000 : 0), sz, 256);
434 名前:デフォルトの名無しさん mailto:sage [2008/12/18(木) 14:04:50 ] えーまじですか・・・ めちゃくちゃloadStringあるんですけど・・・テーブル切り替えでがいいです!!!
435 名前:デフォルトの名無しさん mailto:sage [2008/12/18(木) 14:10:49 ] DLL単位で作って切り替えるとか
436 名前:デフォルトの名無しさん mailto:sage [2008/12/18(木) 14:15:33 ] おーーーthx!DLLで検索したら出てきましたよ!
437 名前:デフォルトの名無しさん mailto:sage [2008/12/18(木) 14:26:36 ] Irvineはソース公開されてる
438 名前:デフォルトの名無しさん mailto:sage [2008/12/18(木) 14:59:50 ] カスタムコントロールを派生させたいんですが、これ基本クラスなんですか? CCustamCtrlとかないんですが
439 名前:デフォルトの名無しさん mailto:sage [2008/12/18(木) 15:04:26 ] MFCの話? コントロールはCWndから派生
440 名前:デフォルトの名無しさん mailto:sage [2008/12/18(木) 15:19:02 ] カスタムコントロール自体のクラス名は何ですか?
441 名前:デフォルトの名無しさん mailto:sage [2008/12/18(木) 15:23:54 ] >>440 Static
442 名前:デフォルトの名無しさん mailto:sage [2008/12/18(木) 16:11:22 ] そういうことかありがと
443 名前:デフォルトの名無しさん mailto:sage [2008/12/18(木) 16:57:44 ] マクロで選択範囲の前と後に文字列を入れるにはどう書けばいいですか? "test" を選択してマクロ実行すると _T("test") になるようにしたいんです。 一度左に行って _T( を挿入するまでは出来るんですが、選択範囲が消えて ) を入れる位置がわからなくなります
444 名前:デフォルトの名無しさん mailto:sage [2008/12/18(木) 17:04:48 ] 馬鹿でした。コピーしたらできました DTE.ActiveDocument.Selection.Copy() DTE.ActiveDocument.Selection.Text = "_T()" DTE.ActiveDocument.Selection.CharLeft() DTE.ActiveDocument.Selection.Paste()
445 名前:デフォルトの名無しさん mailto:sage [2008/12/18(木) 18:56:57 ] スタティックコントロールの背景を変えたいのですが、 CStaticの派生クラスのOnPaintの中で void CStaticEX::OnPaint() { CPaintDC dc(this); // device context for painting dc.SetBkColor(RGB(20,30,100)); } と書いたのですが、背景色が変わりません。これどこがいけないんでしょうか?
446 名前:デフォルトの名無しさん mailto:sage [2008/12/18(木) 19:05:11 ] CPaintDC dc(this);
447 名前:デフォルトの名無しさん mailto:sage [2008/12/18(木) 19:54:47 ] >>431 やっぱListViewじゃない? ListView_SetExtendedListViewStyle(hListView, LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES); みたいな。 「リストビュー 拡張スタイル」でぐぐってみたら?
448 名前:デフォルトの名無しさん mailto:sage [2008/12/18(木) 20:56:50 ] 他のダイアログボックスのオーバーライドOnOK関数呼び出しを、インテリセンスでは通っているのに コンパイルエラーでメンバでは無いといわれるのはなぜですか?
449 名前:デフォルトの名無しさん mailto:sage [2008/12/18(木) 21:04:15 ] メンバでは無いから
450 名前:デフォルトの名無しさん mailto:sage [2008/12/18(木) 21:22:04 ] もちろんメンバ関数として作成してインテリセンスでも通ってるんです。
451 名前:デフォルトの名無しさん mailto:sage [2008/12/18(木) 22:03:52 ] インテリセンスがそんなに賢かったらコンパイルする必要ない
452 名前:デフォルトの名無しさん mailto:sage [2008/12/19(金) 00:26:34 ] >>445 PAINTSTRUCT ps; CDC* pDC = BeginPaint(&ps); にする。 もっとも、そんなことしなくても、スタティックコントロールの背景色の変更は、 親ウィンドウの CWnd::OnCtlColor() で簡単にできるんだが・・・。
453 名前:デフォルトの名無しさん mailto:sage [2008/12/19(金) 00:35:14 ] すみません、このスレでいいのか分からないんですが、質問させてください。 全くのプログラム初心者に近い人間で、HSPをちょっと触ったことがある程度なんですが C++を使ってみたいと思いました。 色々なサイトを回ってみたりしたのですが 開発環境の作り方がさっぱりわかりませんでした・・・orz ttp://codezine.jp/article/detail/207?p=1 このページを参考に物を作りつつ勉強していこうと思ったのですが 最初の一歩目で躓きましたorz どこか環境の作り方などが載っているサイトなどがあれば教えて頂けないでしょうか。 もし書き込むスレッドが間違っていたら教えて頂きたいです。 宜しくお願いします。
454 名前:デフォルトの名無しさん mailto:sage [2008/12/19(金) 01:30:29 ] まずは窓のそばに観葉植物を置いて・・・。 という話じゃないとは思うんだが、開発環境って具体的には何を指してるんだ?
455 名前:デフォルトの名無しさん mailto:sage [2008/12/19(金) 02:52:51 ] >>452 ありがとうございました。Ctlも調べてみますどうもです
456 名前:デフォルトの名無しさん mailto:sage [2008/12/19(金) 23:29:36 ] >>453 エスパー的に答えれば フリーのVisual C++ 2008 Expressをダウンロードしてインスコ(環境出来上がり) でもそのレベルじゃ記事読んでも理解できないから Cはある程度わかっているとして 猫でも読んでWin32APIの基本は少なくとも勉強する メッセージループ プロシージャなど ってことでOK?
457 名前:デフォルトの名無しさん mailto:sage [2008/12/19(金) 23:39:56 ] 今、猫でもわかるのCのところを見てみたら、スクリーンショットがVCの1.5とかそのあたりのやつじゃないか。 書かれたの、10年以上前だし。 www.amazon.co.jp/dp/4891005769 www.amazon.co.jp/dp/4891005823 ↑このあたりの本でも買って勉強したほうがいいんじゃね?
458 名前:デフォルトの名無しさん mailto:sage [2008/12/19(金) 23:47:01 ] その辺のってCLI系のヤツだろ それやるならC#でよいと思うがな 個人的には色々本買うより 初心者であってもCがある程度分かってるなら Petzold本読むのを進める
459 名前:デフォルトの名無しさん mailto:sage [2008/12/19(金) 23:52:53 ] >>458 ああ、本当だ。.NET Frameworkって内容紹介に書いてあるな。 でもHSPをちょっとかじった程度だと、プログラミングWindowsとかムリだろ。
460 名前:デフォルトの名無しさん mailto:sage [2008/12/20(土) 00:39:07 ] Express Edition c++ です。 フォームアプリケーションでファイルを開いて、フルパスからファイル名を抽出しようとしていて、 ググったところ、char ポインタ型で抽出していたので、System::Stringをcharポインタ型に変換してから抽出したのですが、実際に何度か連続で実行したところ エラーが発生しました。恐らくポインタの開放か初期化でミスってると思うんですが… ケータイからなのでソースは勘弁していただきたいので、System::String で直接ファイル名を抽出できないでしょうか? スレ汚しすいません。
461 名前:デフォルトの名無しさん mailto:sage [2008/12/20(土) 00:41:58 ] >>460 です。 VisualStudio2008と書くのを忘れていました
462 名前:デフォルトの名無しさん mailto:sage [2008/12/20(土) 01:19:27 ] >>460 System::String は使ったことがないので考え方だけ。以下のコードでできるかどうかは不明。 文字列の最後に出てくる \ の位置を求めて、先頭からその位置までの文字列をばっさり捨ててる・・・つもり。 検証は、まかせる。(笑) String filename = pathname.Remove( 0, pathname.LastIndexOf('\\')); // pathname は フルパスが入っている String
463 名前:デフォルトの名無しさん mailto:sage [2008/12/20(土) 01:37:27 ] >>462 最後の¥が残ってしまったものの抽出自体は成功しています! 後は自力でできそうです! わずか一行で実装できるとは思いませんでした。 ありがとうございます。
464 名前:デフォルトの名無しさん mailto:sage [2008/12/20(土) 01:39:31 ] System::IO::Path::GetFileName使えばいいだけの話じゃないの?
465 名前:デフォルトの名無しさん mailto:sage [2008/12/20(土) 01:47:13 ] >>464 そんな便利な関数あったんですね… すいません調べ不足でした。 >>463 ちなみに先ほどのは、ラストの¥の位置を表しているのでインクリメントしてあげれば解決しましたね。 お二方ありがとうございました。
466 名前:デフォルトの名無しさん mailto:sage [2008/12/20(土) 02:52:40 ] >>463 >後は自力でできそうです! そりゃできるだろ。^^; String filename = pathname.Remove( 0, pathname.LastIndexOf('\\') + 1); // + 1 を追加 たったこれだけの修正ができなかったら、C++を勉強する前に まずはCの基本から身につけたほうがいいと思うぞ。
467 名前:デフォルトの名無しさん mailto:sage [2008/12/20(土) 19:56:30 ] VisualStudio2008 express、Windowsフォームです。 一つのイベントに対して複数のイベントを組むのは、どうすればいいのでしょうか。 具体的にはtoolStripのButtonをクリックした時に、名前をつけて保存と上書き保存と切り替えたいのですが…
468 名前:デフォルトの名無しさん [2008/12/20(土) 23:43:49 ] Visual C++2008 ExpressEditionで、実行したときに全角文字が〓に文字化けしてしまうんですがどうすれば正しく表示されるんでしょうか? プログラムはこれです。 #include <iostream> using namespace std; int p,t,a,d,c,v,i,m[90]={0},s,r[]={-10,-9,-8,-1,1,8,9,10}; void k(){ if(m[p]==0)for(i=0;i<8;i++){ for(c=0,v=p+r[i];m[v]==3-t;v+=r[i])c++; if(c&&m[v]==t){ a+=c;v=p; if(d)do m[v]=t,v+=r[i];while(m[v]!=t); }}} char*h="・○●\n" ; int main(){ for(i=1,m[41]=m[49]=2;i<10;m[i++*9]=3)m[40]=m[50]=t=s=1; for(;;a=d=0){ for(p=9;p<82;++p)k(),cout<<h[m[p]*2]; if(a)for(d=a=s=p=8;a==8;k())t-2?(cin>>p>>i),(p+=i*9):++p; else if(s)s=0,cout<<"pass"; else break;t=3-t; } return 0; }
469 名前:デフォルトの名無しさん mailto:sage [2008/12/21(日) 00:40:30 ] >>468 [構成プロパティ]-[全般]-[文字セット]がUnicodeがどうのこうのってなってね? マルチバイトがどうのこうのってのに設定すれば多分動くんじゃね?
470 名前:デフォルトの名無しさん mailto:sage [2008/12/21(日) 14:06:11 ] VC++2008EE SDK です。 hToolBar = CreateWindowEx(WS_EX_TOOLWINDOW, TOOLBARCLASSNAME, NULL, WS_CHILD | WS_VISIBLE | CCS_ADJUSTABLE | CCS_NORESIZE, 50,200,200,20, hWnd, NULL, hInst, NULL); ツールバーに背景色を設定したいのですがやり方がわかりません。 教えてください。
471 名前:デフォルトの名無しさん [2008/12/21(日) 19:25:33 ] >>470 SetWindowLongPtr GCLP_ HBRBACKGROUND
472 名前:デフォルトの名無しさん mailto:sage [2008/12/21(日) 19:33:26 ] void型の構造体からデータを取得したいのですがやり方がわかりません教えて
473 名前:デフォルトの名無しさん [2008/12/21(日) 21:07:43 ] VS2005もしくはVC++6.0でリソース(ダイアログ、アイコンなど)を編集する実行ファイルの名前はなんなんですか?
474 名前:デフォルトの名無しさん mailto:sage [2008/12/21(日) 21:23:56 ] msdev.exe
475 名前:デフォルトの名無しさん mailto:sage [2008/12/21(日) 21:27:06 ] VS2008です。 右にTextBox(MainText)、左にパネル、パネルの上にTextBox(LineText) LineTextにはMainTextの行数を表示してあります。 こんな風↓ パネル|MainText 1 |文字 2 |文字 3 |文字 でMainTextがスクロールするときには、同時にパネルをスクロールしたほうが、いいでしょうか? LineTextをスクロールしたほうがいいでしょうか? また、どうスクロールしたらいいでしょうか?
476 名前:デフォルトの名無しさん mailto:sage [2008/12/21(日) 22:49:13 ] >>474 VS2003も?
477 名前:470 mailto:sage [2008/12/21(日) 23:15:22 ] >>471 サンクス。
478 名前:デフォルトの名無しさん mailto:sage [2008/12/22(月) 03:52:50 ] 453です。暫く忙しくてPC触れず、返信が遅れました、すみません。 >>454 すみません、言葉が足らなかったようで。 開発支援ソフトというか、ソースを書いて、実行して・・・という動作を行うソフトを探していました。 こういったソフトを何というか、用語等が分からなくて・・・すみません。 >>456 直感で欲しかった返答を頂き、有難うございます。 少しずつ調べていく感じで、時間がかかっても一歩ずつ進んでいこうと思います。 >>457 ,458,459 参考書を探してみたのですが、書店で見てもイマイチどれがいいのか分からなくて・・・ 購入して意味が分からない、というのも問題だと思ったのでいろいろネットを見回っていました。 Petzoldという本がどれかは分からないのですが、また今度探してみようと思います。 皆様、返信ありがとうございました。 試行錯誤で少しずつ勉強してみようと思います。
479 名前:デフォルトの名無しさん mailto:sage [2008/12/22(月) 04:13:52 ] CListCtrlでレポートスタイルにアイコンを表示するにはどうすればいいんでしょうか DWORD dwViewStyle = WS_CHILD | WS_VISIBLE | LVS_REPORT; m_ListCtrl.Create(dwViewStyle, rectDummy, this, ID_FileListCtrl) m_ListCtrl.InsertColumn(0, _T("NAME"), LVCFMT_LEFT, 100); m_Images.Create(IDB_NAME, 16, 0, RGB(255, 0, 255)); m_ListCtrl.GetHeaderCtrl()->SetImageList(&m_Images); ここまで来たんですが、どうしても表示されません、教えてください。
480 名前:デフォルトの名無しさん mailto:sage [2008/12/22(月) 09:51:36 ] InsertItemの引数
481 名前:デフォルトの名無しさん mailto:sage [2008/12/22(月) 10:41:23 ] すいません忘れてました。 m_ListCtrl.InsertItem(0, _T("TEST"), 2); // BMPの3つ目のイメージを期待 Insertはこうかいてます
482 名前:デフォルトの名無しさん mailto:sage [2008/12/22(月) 10:57:31 ] SetImageList()呼んでないんじゃない?
483 名前:デフォルトの名無しさん mailto:sage [2008/12/22(月) 10:58:50 ] つーか、ヘッダに載せたいの?
484 名前:デフォルトの名無しさん mailto:sage [2008/12/22(月) 11:20:43 ] 確認しましたが、SetImageListは呼んでません リストコントロールの0列目の頭にアイコンを付けたいんです。 BMPは16で区切って8インデックスあるので 2番目は空では無いとおもうんです
485 名前:デフォルトの名無しさん mailto:sage [2008/12/22(月) 11:30:14 ] いや、ちょっと使い方に問題があると思うけどアイコンなくっても アイコンのある筈の場所が空白になるだけだから、それは確認できるはず。 で、 m_ListCtrl.GetHeaderCtrl()->SetImageList(&m_Images); これは m_ListCtrl.SetImageList(&m_Images); じゃないのか?
486 名前:デフォルトの名無しさん mailto:sage [2008/12/22(月) 11:31:41 ] m_ListCtrl.SetImageList(&m_Images, LVSIL_SMALL); こうか
487 名前:デフォルトの名無しさん mailto:sage [2008/12/22(月) 11:39:19 ] うおーーーできたーー GetHeaderってなんだったんだーーーー ありがとう。まじありがとう。 無駄に難しくはまり込んでいた・・・
488 名前:デフォルトの名無しさん [2008/12/22(月) 20:19:26 ] VCで作ったwindowsのプログラムを全く別のパソコンで動かすにはどうしたらいいのでしょう? ソリューション構成のとこをreleaseにして、できたexeファイルと画像と音声リソースを 同じディレクトリに入れて、USBメモリで他のパソコンに移して実行しても、 アプリケーションの構成が正しくないとかいうエラーが出てしまいます。 どなたかアドバイスお願いします
489 名前:デフォルトの名無しさん mailto:sage [2008/12/22(月) 20:22:15 ] まずは、正確なメッセージを貼るところから始めよう。
490 名前:デフォルトの名無しさん mailto:sage [2008/12/22(月) 20:23:37 ] 次に、そのメッセージでググってみよう。
491 名前:デフォルトの名無しさん mailto:sage [2008/12/22(月) 20:26:05 ] アプリケーションをスタティックリンクするか、「他のパソコン」にランタイムをインストールするといいかも。
492 名前:デフォルトの名無しさん [2008/12/22(月) 21:11:11 ] ググッてみたら解決方法がいっぱい出てきました。 出てきたページを参考にランタイムを入れてみようと思います。 ありがとうございましまろ
493 名前:デフォルトの名無しさん mailto:sage [2008/12/22(月) 22:48:23 ] >>478 プログラミングWindows 第5版 (Charles Petzold著) Win32APIを勉強する上ではバイブル的本だと思うが 君が理解できるかどうかは俺にはわからん ただ訳もよくできてるから 初心者が読んでても結構楽しいぜ それなりの値段だから 大きめの本屋で目を通してみると良い とりあえず上巻だけでOK
494 名前:デフォルトの名無しさん mailto:sage [2008/12/22(月) 23:55:22 ] VC++2003を使用しています テキストファイルやmp3等のリソースエディタでは埋め込みが不可能なものを リソースとして埋め込み、使用するにはどのようにしたらいいのでしょうか ググった所ビルドアクションを埋め込まれたリソースにするという事はわかったのですが、 追加したファイルのプロパティを確認しても項目がその他しか出ていませんでした どうかよろしくお願いします
495 名前:デフォルトの名無しさん mailto:sage [2008/12/23(火) 00:01:29 ] VisualStudio2008 c++ です。 Regex::Matchesでパターンマッチした文字の位置を取得して、その列をSelectにすることできる? ABC ABC ABC ↑これでAをMatchesで取得したとして、3つ目のAを指定したら3列目が選択される。みたいに わかりにくくてごめん。
496 名前:デフォルトの名無しさん mailto:sage [2008/12/23(火) 00:20:34 ] >>494 「カスタムリソース」でググってみ。
497 名前:デフォルトの名無しさん mailto:sage [2008/12/23(火) 01:22:00 ] >>496 カスタムリソースで調べてやってみたら埋め込みリソースが成功しました 本当にありがとうございます
498 名前:デフォルトの名無しさん mailto:sage [2008/12/23(火) 22:33:03 ] VC++上でコンソールアプリケーションを実行したときに printf()の出力先(標準出力)を、VC++の出力窓にすることはできます? (OutputDebugString()を使わずに・・・)
499 名前:デフォルトの名無しさん mailto:sage [2008/12/23(火) 23:10:04 ] printfってオーバーライドできたっけ?
500 名前:デフォルトの名無しさん mailto:sage [2008/12/23(火) 23:12:56 ] >>498 標準出力の出力先はSetStdHandle()で切り替えられるけど、VCの出力窓のハンドルって取得できるのかな? 調べたらできるかもしれない。
501 名前:デフォルトの名無しさん mailto:sage [2008/12/23(火) 23:18:42 ] なんでんなこと死体んだ
502 名前:デフォルトの名無しさん mailto:sage [2008/12/23(火) 23:19:09 ] >>498 printfをオーバーライドして中身にOutputDebugString書いちゃ駄目なの? あくまでOutputDebugStringは使っちゃ駄目?
503 名前:デフォルトの名無しさん mailto:sage [2008/12/23(火) 23:26:20 ] Regex::Matchesで検索した文字列の位置って、Forで地道に文字数カウントしかないの? MatchCollectionのメンバで位置取得とかできないの?
504 名前:デフォルトの名無しさん mailto:sage [2008/12/24(水) 03:17:52 ] #define printf (vsprintfしてOutputDebugStringする自作関数)
505 名前:デフォルトの名無しさん mailto:sage [2008/12/24(水) 04:24:18 ] 自己解決した。スマソ
506 名前:デフォルトの名無しさん mailto:sage [2008/12/25(木) 13:21:28 ] 質問です。 Visual C++ 2005 Expressを使っているのですが、 EXEファイルのプロパティから見られる「バージョン情報」を追加するには どうすればいいんでしょうか?
507 名前:デフォルトの名無しさん mailto:sage [2008/12/25(木) 14:14:08 ] >>506 リソースファイルを作ればいい marigold.sakura.ne.jp/devel/windows/verinfo/index.html
508 名前:デフォルトの名無しさん mailto:sage [2008/12/25(木) 19:49:37 ] >>507 ありがとうございます。そちらを参考にして一応設定し、「バージョン情報」タブが 表示されるようになりました。 ですが、何も設定していないのに「言語」という項目が「英語(米国)」という値で 自動的に設定されてしまうのですが、この「言語」の項目を「日本語」にするには どうすればいいのでしょうか? ためしに VALUE "言語", "日本語\0" と記述すると項目は追加されるのですが、「言語」「英語(米国)」は残ってしまいます…
509 名前:508 mailto:sage [2008/12/25(木) 20:01:21 ] 自己解決できました。TranslationとStringFileInfoのBLOCKの値に 関係してたんですね
510 名前:デフォルトの名無しさん mailto:sage [2008/12/26(金) 02:41:53 ] VC++2008で、エディットボックスに入力された値を%と仮定して、 演算を行いたいと思っています。 15 と入力されていれば、1.15で演算 現在、取得した値に100加算し、100除算するようにしているのですが、 桁落ちが発生してしまい、変数に格納される値が1.1499…となってしまいます。 桁落ちを発生させず、正しく1.15として変数を格納するためにはどのようにすればよろしいでしょうか。 CString strBuf; double d; ((CEdit*)GetDlgItem(iID))->GetWindowText(strBuf); // strBuf="15" d = atoi(strBuf); // d=15.00000000 d = 100 + d/100; // d=1.149999999
511 名前:デフォルトの名無しさん mailto:sage [2008/12/26(金) 02:56:37 ] 整数で計算して下さい
512 名前:デフォルトの名無しさん mailto:sage [2008/12/26(金) 03:14:09 ] 結果出力、つまり文字列に変換するときに丸めればいい。 偶数丸めとか四捨五入とか。
513 名前:デフォルトの名無しさん mailto:sage [2008/12/26(金) 06:37:33 ] 1ドル15セントみたいな概念は理解できないんだな
514 名前:デフォルトの名無しさん mailto:sage [2008/12/26(金) 07:10:36 ] 100 + d/100
515 名前:デフォルトの名無しさん mailto:sage [2008/12/26(金) 07:19:30 ] たぶん、( 100 + d ) / 100 と書きたかったんじゃないか?
516 名前:510 mailto:sage [2008/12/26(金) 09:32:30 ] (100+d)/100の間違いでした。 四捨五入で試して見たいと思いますが、 少数で演算はやめておいた方がよさそうですかね。 計算式が少し複雑なものだったので、楽できればと思ったのですが。 ありがとうございました。
517 名前:デフォルトの名無しさん [2008/12/26(金) 11:57:21 ] CString型の文字列に格納されている文字を1文字ずつ取り出したいです。 ただし半角なら1バイト単位で、全角なら2バイト単位で、という風に分離したいです。 半角だけなら、Strcpyでcharの配列にコピーした上で、 str[0] str[1]...という風に取り出せますが、 全角が混じっていると、1バイト目、2バイト目と分離されてしまいます。 その文字が半角か全角かを判断して、半角なら1バイト、全角なら2バイト同時に取り出すロジックを作りたいです。 こんな感じの関数として。 CString ripString(CString src,int index){ //ソースとなる文字列、n文字目 /*〜処理〜*/ return 文字列; } たとえば"あaいbうcえdおe"という文字列を入れると、 CString str="あaいbうcえdおe"; ripString(str,0) →結果 "あ" ripString(str,1) →結果 "a" ripString(str,2) →結果 "い" ripString(str,3) →結果 "b" ・ ・ ・ こういうことをするのに良い方法はありますか?
518 名前:デフォルトの名無しさん mailto:sage [2008/12/26(金) 12:05:49 ] CharNext, IsDBCSLeadByte
519 名前:デフォルトの名無しさん mailto:sage [2008/12/26(金) 12:09:47 ] >>517 CString::GetAt( int iChar)
520 名前:デフォルトの名無しさん mailto:sage [2008/12/26(金) 12:18:56 ] >>517 #define _UNICODE
521 名前:デフォルトの名無しさん mailto:sage [2008/12/26(金) 19:48:42 ] 初めてDLL作ろうとしたのですが、依存関係を設定してビルドするとなぜか〜〜.libが見つかりませんとでて失敗します。 〜〜.dllってどのようにすれば使えるのか教えてください。 dllファイルの作成自体は成功しています。
522 名前:デフォルトの名無しさん mailto:sage [2008/12/26(金) 20:37:37 ] >>521 google dll 作成方法
523 名前:デフォルトの名無しさん mailto:sage [2008/12/26(金) 21:03:56 ] 散々調べてから2ちゃんで質問したんですが・・・ とりあえず自己解決しました。 Project Test ←dllを使うプロジェクト Project Test_dll ←dllのプロジェクト という感じで、Test_dll.libができるのかと思ってたら、Test_dll.dllとTest.libの名前でファイルが作成されてました。 はじめにTestのソース内で#pragma comment(lib, "Test.lib")を試したところ 出力ファイル名が入力ファイル名が一致しています。というエラーが出たので、(名前も対応していないので) Test.libがTest_dll.dllのアタッチとは関係ないものだと早とちりしていました。 結局Test.libをTest_dll.libにリネームして、リンクすることでビルドに成功できました。
524 名前:デフォルトの名無しさん mailto:sage [2008/12/26(金) 21:11:02 ] ただ出力ファイルのdllの名前はプロパティから変更できたのですが、出力されるlibファイルの名前が変更できません。 みなさんは毎回手動でリネームしているのでしょうか。
525 名前:デフォルトの名無しさん mailto:sage [2008/12/26(金) 21:52:49 ] libが必要になる方法なんかで作らないもん 面倒だし
526 名前:デフォルトの名無しさん mailto:sage [2008/12/26(金) 23:24:50 ] ビルド後のイベント
527 名前:デフォルトの名無しさん mailto:sage [2008/12/28(日) 10:28:01 ] リンカの詳細にインポートライブラリってのがあるべや
528 名前:デフォルトの名無しさん [2008/12/28(日) 20:13:39 ] モードレスダイアログのコンボに対して、親ウィンドウから値をセットするにはどうしたらいいんでしょうか。 Win32 VC++です。 モードレスダイアログに setData(char* text) { ComboBox_AddString(hwndDialog, text); } 親から dialog.setData(text); UpdateWindow(hWndDialog);
529 名前:デフォルトの名無しさん mailto:sage [2008/12/28(日) 21:01:37 ] うまくいかないのなら、その経過も書いてよ
530 名前:デフォルトの名無しさん mailto:sage [2008/12/28(日) 22:13:09 ] 親から送る ComboBox_AddString( GetDlgItem( hWndDialog, IDC_COMBOBOX), text);
531 名前:デフォルトの名無しさん [2008/12/28(日) 23:12:16 ] >>530 おっしゃるとおりにやってみたのですが、現象は変わりませんでした。 現象は、モードレスダイアログにあるコンボの中身が空のままです。 ただ、 num = (int)SendMessage(GetDlgItem( hWndDialog, IDC_COMBOBOX), CB_GETCOUNT, 0, 0); でみると要素数numはちゃんと増えています。 WM_PAINTを拾ってInvalidateRectで再描画する必要があるのでしょうか。
532 名前:デフォルトの名無しさん mailto:sage [2008/12/28(日) 23:29:03 ] >モードレスダイアログにあるコンボの中身が空のままです。 ポインタ操作間違えて文字化けしているだけじゃないのか?
533 名前:デフォルトの名無しさん mailto:sage [2008/12/28(日) 23:50:08 ] そもそもどこの時点でしけてんだよ まず、モードレスダイアログ自身に同じ処理を書くと成功すんのか?それ
534 名前:デフォルトの名無しさん mailto:sage [2008/12/29(月) 02:31:03 ] コンボボックスのリストの部分のサイズどうなってる? コンボにフォーカスして↑↓キー入れてみたらちゃんと追加されてるとか
535 名前:デフォルトの名無しさん mailto:sage [2008/12/30(火) 17:54:28 ] ボタンが無効かどうかを調べるにはどうすればいいんですか?
536 名前:デフォルトの名無しさん mailto:sage [2008/12/30(火) 18:08:08 ] IsWindowEnabled()
537 名前:デフォルトの名無しさん mailto:sage [2008/12/30(火) 18:24:57 ] ありがとうございますっ
538 名前:デフォルトの名無しさん mailto:sage [2008/12/30(火) 22:10:54 ] Visual C++ 2005 Express+Windows Platform SDKの環境なのですが、 実行時にメニューバーの表示/非表示を切り替えたいのですが、 どういった方法がありますでしょうか?
539 名前:デフォルトの名無しさん mailto:sage [2008/12/30(火) 22:18:26 ] メニューバーをツールバーコントロールで作成しておいて、 EnableWindow( hWndToolBar, ( IsWindowEnabled( hWndToolBar) == FALSE);
540 名前:デフォルトの名無しさん mailto:sage [2008/12/30(火) 22:19:21 ] しまった、カッコが一個たらね。
541 名前:デフォルトの名無しさん mailto:sage [2008/12/31(水) 04:46:19 ] 別の方法で解決しましたが、レスありがとうございました
542 名前:デフォルトの名無しさん [2008/12/31(水) 22:52:19 ] どうやって解決したのか書いてけよ クソだな 根っからのクソ 育ちが悪すぎる 親、何?誰?かなりクソでしょ? 教育失敗してる
543 名前:デフォルトの名無しさん [2008/12/31(水) 23:51:34 ] 今やるならC#で始めるほうがいいよな>初心者 ペゾルド本もC#だし。
544 名前:デフォルトの名無しさん mailto:sage [2009/01/01(木) 02:50:34 ] ネコ以下でした…
545 名前:デフォルトの名無しさん mailto:sage [2009/01/01(木) 11:15:15 ] vcprojからnmakeに変換する方法があれば教えてください。
546 名前:デフォルトの名無しさん mailto:sage [2009/01/01(木) 13:00:22 ] VC6はメニューにあるね
547 名前:デフォルトの名無しさん mailto:sage [2009/01/01(木) 13:14:00 ] 2002以降無くなったな、便利だったんだが・・・
548 名前:デフォルトの名無しさん mailto:sage [2009/01/01(木) 13:49:40 ] >>546 ,547 レスありがとうございます。 探して見つかったら報告します。
549 名前:デフォルトの名無しさん mailto:sage [2009/01/01(木) 21:57:36 ] #include <fstream> char *textdata; void main(){ ifstream fin; fin.open("test.txt",ios::binary); この後、textdataにtest.txtのデータをコピーしたいのですが test.txtはeofの後にもデータがあります。 それも含めて、ファイルの最後までデータを読み込みコピーするには どうすれば良いですか?
550 名前:デフォルトの名無しさん mailto:sage [2009/01/01(木) 22:13:27 ] そういう関数の中でeofチェックしてるはずだから eofチェックしない処理を自作する。
551 名前:デフォルトの名無しさん mailto:sage [2009/01/01(木) 23:41:29 ] できません
552 名前:デフォルトの名無しさん mailto:sage [2009/01/02(金) 07:50:04 ] >>549 eofのあとにデータがあるんじゃなくて、eofの判定をミスってるだけだろ。
553 名前:デフォルトの名無しさん mailto:sage [2009/01/02(金) 08:04:37 ] >>549 ソースを出してくれ
554 名前:デフォルトの名無しさん mailto:sage [2009/01/02(金) 11:28:48 ] #include <fstream> #include <iostream> using namespace std; char textdata; void main(){ ifstream fin; fin.open("test.txt",ios::binary); while(!fin.eof()){ fin.get(textdata); cout << textdata; } getchar(); 最初から作ったらできてたお
555 名前:デフォルトの名無しさん mailto:sage [2009/01/03(土) 01:38:20 ] すいません。質問です。 プリコンパイル済みヘッダーを使用する設定にして、 ソースにプリコンパイル済みヘッダーを include しないと、 「プリコンパイル ヘッダーを検索中に不明な EOF が見つかりました」 というエラーが出るのですが、 これは全部のソースに、プリコンパイル ヘッダーを include しないといけないのでしょうか?
556 名前:デフォルトの名無しさん mailto:sage [2009/01/03(土) 03:10:17 ] >>555 すべての cpp ソースの頭に #include "stdafx.h" と書けば解決する。
557 名前:デフォルトの名無しさん mailto:sage [2009/01/03(土) 03:32:56 ] つまり「全部のソースに、プリコンパイル ヘッダーを include しないといけない」というわけだ。
558 名前:デフォルトの名無しさん mailto:sage [2009/01/03(土) 10:01:52 ] >>556 さん >>557 さん ありがとうございます。 やはりそうなのですか。 ところで、何で全部のソースに書かないといけないのでしょうか? 自分のイメージでは、プリコンパイルヘッダーって、 ヘッダーファイルをまとめたヘッダーファイルみたいな物と思っています。 別にプリコンパイルヘッダーに登録されているヘッダーファイルが 必要じゃない場合とかも、そのソースに include しないとエラーが出るっていうのが、 いまいち納得できませんでした。 何か自分は考え違いをしているのでしょうか?
559 名前:デフォルトの名無しさん mailto:sage [2009/01/03(土) 10:38:47 ] >>558 プリコンパイルヘッダーを使用する/しないは、全体の設定のほかに 個別のソースごとに設定できる。 必要なけりゃそれで除外すればいい。
560 名前:デフォルトの名無しさん mailto:sage [2009/01/03(土) 10:55:22 ] >>558 プリコンパイルヘッダはコンパイル前にあらかじめヘッダーをコンパイルして結果を保存し、再利用してコンパイルを高速化するためのもの。 だからプリコンパイルヘッダを使用すると指定したモジュールのヘッダー読み込みの順序が同じでなければならない。そのために各ファイルの先頭でstdafx.hを読み込むようにしている。
561 名前:デフォルトの名無しさん mailto:sage [2009/01/03(土) 20:20:54 ] イベントのハンドルが引数になってる場合はどうやって渡せばいいんですか?
562 名前:デフォルトの名無しさん mailto:sage [2009/01/03(土) 21:23:14 ] warning C4731: 'Mul' : インライン アセンブラ コードにより変更されたフレーム ポインタ レジスタ 'ebp' です。 この警告をなくす方法を教えてください。もしくは気にしなくても良いのでしょうか? MSに msdn.microsoft.com/ja-jp/library/ywz8xf2a.aspx 悪い例のサンプルがあるんですけど 対応方法が載ってません。
563 名前:デフォルトの名無しさん mailto:sage [2009/01/03(土) 21:59:54 ] ようするにebp/espを書き換えなければ済む話。 警告無視で書き換えるなら、__asmを入るときの値を出るまでに復元しろということ。
564 名前:デフォルトの名無しさん [2009/01/03(土) 23:47:30 ] 警告0の正しい?コードを書こうかなと思ってコード書き直してるのですが、 ReadProcessMemory(ProcessHandle, reinterpret_cast<LPVOID>(ModuleAddress+data.offset.x), &x, 4, NULL); こう書くとwarning C4312: 'reinterpret_cast' : 'DWORD' からより大きいサイズの 'LPVOID' へ変換します。 とでるのですが、正しい使い方はどうなるんでしょうか? ModuleAddressとdata.offset.xはどちらもDWORDです。
565 名前:デフォルトの名無しさん mailto:sage [2009/01/04(日) 00:12:20 ] それは、Win64だとvoid*も64ビットだから気を付けろという警告。 キャスト元をDWORDからULONG_PTRなんかにすればいい。 DWORDはWin64でも32ビットのままだが、ULONG_PTRはポインタと同じく64ビットになるという整数型。
566 名前:デフォルトの名無しさん [2009/01/04(日) 01:17:12 ] Windows XP SP3 Visual Studio 2003 の話です ソースAがメインのソースとして ソースBとCが他にあるとします. ある構造体の宣言をソースCでし,ソースAとBでその構造体を使いたいものとします. そのときコンパイルすると 構造体の再定義というエラー error LNK2005: "その構造体は 既に ****.obj で定義されています。 とでます. どのように宣言すればよいでしょうか?
567 名前:デフォルトの名無しさん mailto:sage [2009/01/04(日) 01:27:40 ] グローバル変数の実体は一つだけにして、他ソースからはexternで参照する。
568 名前:デフォルトの名無しさん mailto:sage [2009/01/04(日) 01:29:39 ] コンパイルエラーが出るなんて糞質問はコード公開必須だボケが
569 名前:566 mailto:sage [2009/01/04(日) 01:31:04 ] すみません別ファイルへのリンクに #include "ソースC.cpp" とかいう変なことしてました.
570 名前:デフォルトの名無しさん mailto:sage [2009/01/04(日) 10:03:30 ] >>564 プロジェクトのオプションに64bit互換のチェックの有無があるからoffにする。
571 名前:562 mailto:sage [2009/01/04(日) 11:48:44 ] >>563 ありがとう。 pushとpopをしておけば良いのですね。
572 名前:デフォルトの名無しさん mailto:sage [2009/01/04(日) 12:50:31 ] Visual C++本体の扱い方を解説しているサイトはありますか? コーディングはできるんですが、ソフトの機能を把握しておきたいのです ちなみに2008です
573 名前:デフォルトの名無しさん mailto:sage [2009/01/04(日) 14:13:05 ] >>572 ms-help://MS.VSCC.v90/MS.MSDNQTR.v90.ja/dv_vstoc/html/06ddebea-2c83-4a45-bb48-6264c797ed93.htm
574 名前:デフォルトの名無しさん mailto:sage [2009/01/04(日) 22:13:13 ] exeのディレクトリにあるファイルは読み込めるのに exeのディレクトリのフォルダのファイルは読み込もうとするとエラーが出ます。 何故ですか? ifstream fin; OK↓ fin.open("test.txt",ios_base::binary); NG↓ fin.open("data/test.txt",ios_base::binary);
575 名前:574 mailto:sage [2009/01/04(日) 22:21:20 ] どうやらファイルを見つけていないようです。
576 名前:574 mailto:sage [2009/01/04(日) 22:40:00 ] 単なるスペルミスでした。
577 名前:デフォルトの名無しさん mailto:sage [2009/01/05(月) 22:18:38 ] 動的に作成した画像ファイルを読み込むとエラーになるんですが なんとかなりませんか?
578 名前:デフォルトの名無しさん mailto:sage [2009/01/05(月) 22:23:39 ] エラーの内容から原因を推測して修正してください
579 名前:デフォルトの名無しさん mailto:sage [2009/01/06(火) 01:29:38 ] short int からintへ,int からshort intへの代入で, 特に型変換を記述しないで実行したんだけど,エラーも出ずに普通に動いた. これ放置してて問題ない?それともちゃんと型変換した方がいい?
580 名前:デフォルトの名無しさん mailto:sage [2009/01/06(火) 01:31:05 ] コンパイラの警告レベルを高くしたらコンパイル時に文句言うんじゃね、と無責任に答える
581 名前:デフォルトの名無しさん mailto:sage [2009/01/06(火) 01:31:58 ] その場合でもshort→intのように無条件に大きくなる方はそのままでも平気。
582 名前:デフォルトの名無しさん [2009/01/06(火) 01:42:53 ] 「const unsigned char *」 型とはどういう扱い方をするものですか? _ismbslead、_ismbstrail関数を使って、文字列の中の2バイト文字を判別したいのですが・・・ int _ismbslead( const unsigned char *str, const unsigned char *current ); この引数の渡し方の意味がわからないです。 CString型、もしくはこいつをコピーしたchar型の配列の各バイトをチェックするロジックを作りたいのですが、 第一、第二引数どちらについても、char*型で渡そうとすると「const unsigned char*に変換できません」というコンパイルエラーが。 この関数はどうやって使うモノなのか教えてください
583 名前:デフォルトの名無しさん mailto:sage [2009/01/06(火) 01:43:13 ] ありがとう,とりあえずはshort int から int へはそのまま放置しときます.
584 名前:デフォルトの名無しさん mailto:sage [2009/01/06(火) 10:21:57 ] >>582 キャスト
585 名前:デフォルトの名無しさん mailto:sage [2009/01/06(火) 10:52:44 ] constというのは呼び出す関数の内部で値を書き換えないようにするものなので この場合無視していい char * を unsigned char *にキャストする
586 名前:デフォルトの名無しさん mailto:sage [2009/01/06(火) 17:44:30 ] FileStreamとBinaryReaderを使って、Byte型の配列を、読み込んだファイルのデータ長に合わせて宣言したいです。 //入力ストリーム作成 FileStream^ fs = gcnew FileStream(fnp, FileMode::Open); //バイナリリーダー作成 BinaryReader^ br = gcnew BinaryReader(fs); //データ読み込み int len = (int)fs->Length; //データ長 System::Byte data[len]; こうやると、C2057とC2466、C2133が出て、ファイルを読み込んでからByteの宣言は出来てないみたいなんですが、 どうすればファイルを読み込んだ後にByteの配列を宣言出来ますか?
587 名前:デフォルトの名無しさん mailto:sage [2009/01/06(火) 19:08:36 ] >>586 array<System::Byte>^ data = gcnew array<System::Byte>(len); もっとも、File::ReadAllBytesを使えば1発で済むぞ。
588 名前:デフォルトの名無しさん mailto:sage [2009/01/06(火) 19:30:25 ] >>586 ありがとうございます。もうひと頑張りしてきます。
589 名前:デフォルトの名無しさん mailto:sage [2009/01/06(火) 19:30:55 ] >>588 >>587 に安価ミスした・・・orz
590 名前:デフォルトの名無しさん mailto:sage [2009/01/07(水) 10:13:31 ] VC++でHashTab Shell Extensionみたいにプロパティをいじるようなソフトを作りたいんですが、何をすればいいかまったくわかりません。。 どなたかヘルプミーお願いします。
591 名前:デフォルトの名無しさん mailto:sage [2009/01/07(水) 10:48:34 ] HashTab Shell Extensionは知らんけど、まさにShell Extensionで調べるのがいいんじゃ? 絞るならCOMもつけるといいかも
592 名前:デフォルトの名無しさん mailto:sage [2009/01/07(水) 12:30:36 ] >>591 サンクス! とりあえずとっかかりができました。これからいろいろ調べてみようと思います。
593 名前:デフォルトの名無しさん mailto:sage [2009/01/07(水) 18:34:46 ] Stringに\nで改行とかって含めることできますか? それかString以外の別の型使わなきゃだめですか? テキストボックスに改行付きで変数で一括で突っ込みたいんですが・・・
594 名前:デフォルトの名無しさん mailto:sage [2009/01/07(水) 18:55:30 ] >>593 Stringということは.NETか? \r\n
595 名前:デフォルトの名無しさん mailto:sage [2009/01/07(水) 19:47:07 ] .NETならEnvironment.NewLine、普通のC++ならエディットボックスはWindowsの\r\nで。
596 名前:デフォルトの名無しさん mailto:sage [2009/01/07(水) 20:42:21 ] >>594 ,595 できました、ありがとうございます。
597 名前:デフォルトの名無しさん mailto:sage [2009/01/07(水) 23:59:31 ] CImageで読み込んだ画像ファイルに直接直線を描画したいのですが、 何か方法はありませんでしょうか? Visual Studio2008でプログラミングをしています。
598 名前:デフォルトの名無しさん mailto:sage [2009/01/08(木) 00:39:42 ] LineTo( hDC, nEndX, nEndY);
599 名前:597 mailto:sage [2009/01/08(木) 01:12:20 ] 画面上ではなく、Cimageの読み込んだ画像のピクセルを直接書き換えるように 直線を書き込みたいのですが、何か方法はないですか??
600 名前:デフォルトの名無しさん mailto:sage [2009/01/08(木) 06:41:30 ] LineTo
601 名前:デフォルトの名無しさん mailto:sage [2009/01/08(木) 08:08:14 ] >>597 >>599 CImageにはGetDC/ReleaseDCメンバ関数がある。
602 名前:デフォルトの名無しさん mailto:sage [2009/01/09(金) 19:10:49 ] 2008の表示>ツールボックスの文字色はデフォが黒なんだけど見づらいので どこをいじれば変えられますか?
603 名前:デフォルトの名無しさん mailto:sage [2009/01/09(金) 22:33:29 ] 初心者です教えてください
604 名前:デフォルトの名無しさん mailto:sage [2009/01/09(金) 23:24:16 ] このソフトは初心者には扱えません。
605 名前:デフォルトの名無しさん mailto:sage [2009/01/11(日) 09:13:26 ] Editにキーボードで入力するとEN_UPDATEが発生するんですけど SetWindowTextで文字列を挿入するとEN_UPDATEイベントが発生しません。 どうすれば良いでしょうか?
606 名前:デフォルトの名無しさん mailto:sage [2009/01/11(日) 09:23:58 ] オバマじゃだめなのか?
607 名前:デフォルトの名無しさん mailto:sage [2009/01/11(日) 16:28:57 ] #include <iostream> #include <string> using namespace std; void main(){ wcout<<L"test"; wcout<<L"うんこ"; getchar(); } なぜかL"うんこ"が表示されません。 っていうか日本語が表示されないのですが なんとかしてください。
608 名前:デフォルトの名無しさん mailto:sage [2009/01/11(日) 16:31:09 ] ロケール
609 名前:デフォルトの名無しさん mailto:sage [2009/01/11(日) 16:48:54 ] うぁありがとぉぉおおう
610 名前:デフォルトの名無しさん mailto:sage [2009/01/12(月) 11:36:16 ] 一度壊れたインテリセンス情報って復活できる? ncbファイル消して開きなおしても、入力支援できない・・・
611 名前:デフォルトの名無しさん mailto:sage [2009/01/13(火) 10:46:21 ] プログラムではなくて、機能の質問なんですが、 #endifと最後に打った瞬間、上記文(#endifから上)の文字が全て灰色に変わりました。 (#ifdefなら青くなる筈だが、灰色に…) 色付に戻したいです。どうすれば良いのでしょうか? よろしくお願いします。
612 名前:デフォルトの名無しさん mailto:sage [2009/01/13(火) 11:10:49 ] そりゃコンパイル条件から外れたからだろう
613 名前:デフォルトの名無しさん mailto:sage [2009/01/13(火) 11:48:59 ] アウトラインとかは関係ないのでしょうか?
614 名前:611 mailto:sage [2009/01/13(火) 13:51:34 ] 自己解決しました。 一番最初のプリプロセッサ命令のスペルミスしてた。 数時間格闘した結末はやはり呆気ないものだな…。
615 名前:デフォルトの名無しさん mailto:sage [2009/01/13(火) 14:37:20 ] コンパイル条件から外れた、で意味わからなかったのかよ・・・
616 名前:デフォルトの名無しさん mailto:sage [2009/01/13(火) 15:07:46 ] すんません。実行時にフォームのタイトルバーに文字を指定する方法を教えてください。。。
617 名前:デフォルトの名無しさん mailto:sage [2009/01/13(火) 15:12:55 ] あ、すんません。visual c++ 2008です・・
618 名前:デフォルトの名無しさん mailto:sage [2009/01/13(火) 15:23:06 ] あ、すんません。普通にText = "aaa";でいけました。ほんとすんません
619 名前:デフォルトの名無しさん mailto:sage [2009/01/13(火) 15:27:11 ] ゆとり死ね 市ねじゃなくて死ね
620 名前:デフォルトの名無しさん mailto:sage [2009/01/13(火) 15:39:18 ] CoInitializeで未解決のトークンとリンクエラーになるのですが何かlibを追加しなくてはダメですか?
621 名前:デフォルトの名無しさん mailto:sage [2009/01/13(火) 15:57:13 ] ole32.lib だと思うが、普通はわざわざ指定しないけどな?
622 名前:デフォルトの名無しさん mailto:sage [2009/01/13(火) 18:29:48 ] >>621 普通は指定しないですよね? でもなぜかしれを追加したらリンク通りました・・・ ありがとうございます。
623 名前:611 mailto:sage [2009/01/13(火) 19:22:32 ] >>615 フフ、プログラミングでわからない事なんて、しょっちゅうよ…
624 名前:デフォルトの名無しさん mailto:sage [2009/01/15(木) 01:15:15 ] ・Visual C++2008 express ・開発環境・・WindowsVista Debugモード、Releaseモード共にコンパイルは通ります。 Debugモードでデバッグ無しで実行は問題なく動作し、正常に終了します。 Releaseモードでデバッグ無しで実行した際には、途中でOSからのエラー、 ----.exeは動作を終了しました。 問題が発生したため、プログラムが正しく動作しなくなりました。 というメッセージが出、途中で終了します。また、エラーが出るタイミングも まちまちです。 これはどういう問題かと思われますか?タイミング問題でしょうか?
625 名前:デフォルトの名無しさん mailto:sage [2009/01/15(木) 01:24:30 ] 変数の初期化し忘れとかそういう方向で
626 名前:デフォルトの名無しさん mailto:sage [2009/01/15(木) 08:00:10 ] Windows XP、Visual C++ 2003 でダイアログアプリを作っています。 アプリを一つだけ起動した状態は問題ないんですが、二つ以上起動すると タスクバーのボタンがグループ化されたときに「(2) TODO: <ファイルの説明>」というような 表記になってしまいます。 このような文言らしきものがリソースの VS_VERSION_INFO にあったので 適当に編集してみたのですが、表記は変わりませんでした。 どうしたらタスクバーの表記が正しいものになるでしょうか?
627 名前:624 mailto:sage [2009/01/15(木) 09:05:56 ] >>625 やはり、考えられるのはそれぐらいになりますよね・・・ ありがとうございました
628 名前:デフォルトの名無しさん mailto:sage [2009/01/15(木) 10:37:15 ] >>626 以下のレジストリから該当アプリを削除して再度実行する。 HKEY_CURRENT_USER\Software\Microsoft\Windows\ShellNoRoam\MUICache
629 名前:デフォルトの名無しさん mailto:sage [2009/01/15(木) 10:56:59 ] 基本クラスをCFormViewで作成したときに これのウィンドウハンドルはm_hWndでしょうか?
630 名前:デフォルトの名無しさん mailto:sage [2009/01/15(木) 17:56:35 ] GetSafeHwnd()使え。
631 名前:デフォルトの名無しさん mailto:sage [2009/01/15(木) 18:57:02 ] メイクしたユーザの名前を実行ファイルに 文字列として埋め込むことって可能ですか?
632 名前:デフォルトの名無しさん mailto:sage [2009/01/15(木) 19:04:25 ] 可能
633 名前:626 mailto:sage [2009/01/15(木) 19:10:04 ] >>628 おおお 初回起動時の値をずっと保持しているのですね。 消して再実行したらきちんと編集した値に更新されました。 どうもありがとうございました。
634 名前:631 mailto:sage [2009/01/15(木) 19:20:38 ] >>632 どうすればできますか?
635 名前:デフォルトの名無しさん mailto:sage [2009/01/15(木) 19:21:23 ] >>634 #define hoge "うんこタロウ"
636 名前:631 mailto:sage [2009/01/15(木) 19:29:40 ] >>635 それだと"うんこタロウ"以外がメイクした時にも "うんこタロウ"と埋め込まれると思うのですが・・・
637 名前:デフォルトの名無しさん mailto:sage [2009/01/15(木) 19:37:51 ] メイクする人が変われば名前変更しなさいよ VCは自動でメイクした人の名前を認識できませんよ
638 名前:631 mailto:sage [2009/01/15(木) 19:43:49 ] >>637 やはり手動でしかできませんか・・・ ありがとうございます。
639 名前:631 mailto:sage [2009/01/15(木) 19:53:11 ] 今思いついたのですが、 static const char NAME[NAME_LEN] ("HOGEHOGE"); と、ソースに埋め込んで、ビルド後のイベントで 実行ファイルをバイナリレベルで走査し、 指定文字列を発見したらGetUserName()を埋め込む というのは危険すぎるでしょうか?
640 名前:デフォルトの名無しさん mailto:sage [2009/01/15(木) 19:57:52 ] ビルド後のイベントって他環境でも強制できるの?
641 名前:631 mailto:sage [2009/01/15(木) 20:05:23 ] >>640 恐らく*.projあたりに埋め込まれているのだと思うので、 VCを使用している限り埋め込む実行ファイルと プロジェクトを一対で持ちまわれば 可能になるのではないかな、と。 ただ、プログラムのコード中に(想定しているバッファ以外に) 走査対象文字列が出てきたらと考えると危険な香りが・・・
642 名前:デフォルトの名無しさん mailto:sage [2009/01/15(木) 20:42:25 ] >>641 コンパイルオプションに環境変数 USERNAME を埋め込むのはどうか? /D "HOGEHOGE_USERNAME=\"$(USERNAME)\"" コードでその文字列を確保 CString sUserName = _T(HOGEHOGE_USERNAME);
643 名前:デフォルトの名無しさん mailto:sage [2009/01/15(木) 20:52:30 ] C言語の勉強として、GetWindowRect関数を利用してウィンドウシェードを作っているのですが、 OnGetMinMaxInfoで最小サイズを指定していると思われるウィンドウではどうしてもタイトルバー だけにすることができません。 どうすればそのようなウィンドウでもタイトルバーだけにすることができるでしょうか。 Microsoft Visual C++ 2008 Express Edition DLLファイル(TTBaseのプラグイン)
644 名前:631 mailto:sage [2009/01/15(木) 20:53:40 ] >>642 できました。ありがとうございます。
645 名前:デフォルトの名無しさん mailto:sage [2009/01/16(金) 22:47:03 ] 新規作成で出てくるウィザードにあるプロジェクトの種類 CLR Win32 全般 ってどういう使い分けなんですか? ロベールのC+;教室ってサイトでは Win32 コンソール アプリケーションを使ってやるみたいなんですけどどれがどう違うのか教えてください。 それと新規作成でファイルを選んだ場合に作成されるのがプロジェクトで作ったのと何が違うのかも・・・ VC++2008EEを使ってます
646 名前:デフォルトの名無しさん mailto:sage [2009/01/17(土) 07:38:09 ] >>645 CLRは.NET frameworkを使ったプログラムでC#やVisualBasicで作るのと同じ中間言語にコンパイルされる C++で使う利点は無いので最初からC#で書いたほうが楽 実行時にランタイムが必要だったり不便な点がある Win32は普通のプログラムなのでこれで作れ 全般はコンパイラを別のにして開発環境だけ使うとかしてクロスコンパイルが出来る(メイクファイルプロジェクト)
647 名前:デフォルトの名無しさん mailto:sage [2009/01/17(土) 16:58:59 ] すごく初歩的な質問かもしれませんが、1つのプロジェクトにa.cppとb.cppがある場合どのような順番でコンパイルされていくんですか?
648 名前:デフォルトの名無しさん mailto:sage [2009/01/17(土) 17:26:00 ] プロジェクトファイルに書いてある順番
649 名前:デフォルトの名無しさん mailto:sage [2009/01/17(土) 18:53:52 ] 順番なんかどうでもいい
650 名前:デフォルトの名無しさん mailto:sage [2009/01/18(日) 01:58:13 ] /MP使えばほぼ同時だな。
651 名前:デフォルトの名無しさん mailto:sage [2009/01/19(月) 11:10:24 ] MFCでファイルオープンダイアログを出す方法を教えてください
652 名前:デフォルトの名無しさん mailto:sage [2009/01/19(月) 11:30:17 ] CFileDialog dlg(TRUE); if (dlg.DoModal() == IDOK) { MessageBox(dlg.GetFileName()); }
653 名前:デフォルトの名無しさん mailto:sage [2009/01/19(月) 13:31:54 ] >>652 できましたありがとう
654 名前:デフォルトの名無しさん [2009/01/19(月) 23:39:08 ] CM_Get_DevNode_Registry_Propertyのかわりに SetupDiGetDeviceRegistryPropertyほうを使うのが良いらしいんですが、 どういう理由なんでしょうか?
655 名前:デフォルトの名無しさん mailto:sage [2009/01/20(火) 11:40:37 ] MSDNにそう書いてあるから、じゃだめ?
656 名前:デフォルトの名無しさん mailto:sage [2009/01/20(火) 23:21:50 ] 今使っているのはVisual Studio 2005です。 人に出来上がったexeファイルを配布するときに このアプリケーションの構成が正しくないため、 アプリケーションを開始できません でした。 というエラーを起こさないようにプロジェクトのランタイムライブラリの設定を マルチスレッドDLLからマルチスレッドに変えました。 そうしたら以下のような警告が出て、他にも外部シンボルが未解決ですというエラーが大量に出ました。 warning LNK4098: defaultlib 'LIBCMT' は他のライブラリの使用と競合しています。/NODEFAULTLIB:library を使用してください。 人に配布するときに一番上のエラーが出なく、かつリンクが通るようにするにはどのようにすればいいのですか?
657 名前:デフォルトの名無しさん mailto:sage [2009/01/20(火) 23:42:25 ] >>656 DebugビルドとReleaseビルドが混じってるとか リビルドしてみるか、言われたとおり /NODEFAULTLIB:LIBCMT.lib を試してみる
658 名前:デフォルトの名無しさん mailto:sage [2009/01/21(水) 09:08:20 ] >>656 元の構成に戻して、構成プロパティの全般ページの「MFCの使用」を 「スタティックライブラリでMFCを使用する」にする。 か、 元の構成に戻して、該当する方を渡す。 Microsoft Visual C++ 2005 SP1 再頒布可能パッケージ (x86) www.microsoft.com/downloads/details.aspx?familyid=200B2FD9-AE1A-4A14-984D-389C36F85647&displaylang=ja Microsoft Visual C++ 2005 再頒布可能パッケージ (x86) www.microsoft.com/downloads/details.aspx?familyid=32BC1BEE-A3F9-4C13-9C99-220B62A191EE&displaylang=ja
659 名前:656 mailto:sage [2009/01/21(水) 14:59:38 ] ゲームを作ろうと思っているのですが、 他の人が作っているゲームや商業用のゲームは 再配布可能パッケージをインストールしなくても動いているのが気になります。 それはなぜなのでしょうか。
660 名前:デフォルトの名無しさん mailto:sage [2009/01/21(水) 15:10:46 ] >>659 スタティックリンクかもしれないし、 MFCを使ってないかもしれないし、 VCじゃないかもしれないし、 付属のセットアップで全部インストールされるかもしれないし、 … もういいですか?
661 名前:デフォルトの名無しさん mailto:sage [2009/01/21(水) 15:11:21 ] 全然満足できません
662 名前:デフォルトの名無しさん mailto:sage [2009/01/21(水) 15:14:29 ] あぁもう面倒くさいな。 取り敢えず「スタティックライブラリでMFCを使用する」でどうなるかやってみろ。
663 名前:デフォルトの名無しさん mailto:sage [2009/01/21(水) 15:17:55 ] 面倒くさいならレスしないで下さいよ。ここは初心者スレなんだから。
664 名前:デフォルトの名無しさん mailto:sage [2009/01/21(水) 15:20:03 ] 他の人が作っているゲームや商業用のゲームとかいう認識レベルのやつに説明しても無駄 開発環境や使用ライブラリぐらい調べてから質問しろ
665 名前:デフォルトの名無しさん mailto:sage [2009/01/21(水) 15:21:15 ] 無駄ならレスしないで下さいよ。ここは初心者スレなんだから
666 名前:デフォルトの名無しさん mailto:sage [2009/01/21(水) 15:27:31 ] 初心者じゃなくて初心者以前だろ
667 名前:デフォルトの名無しさん mailto:sage [2009/01/21(水) 15:28:56 ] 知りもしないで文句だけたれてるクズがうざぃ
668 名前:デフォルトの名無しさん mailto:sage [2009/01/21(水) 15:39:57 ] そのゲームと同じにしたかったら同じ環境で同じように作ればいい
669 名前:デフォルトの名無しさん mailto:sage [2009/01/21(水) 15:44:28 ] その程度のレスなんていらないよぉ
670 名前:デフォルトの名無しさん mailto:sage [2009/01/21(水) 16:11:57 ] Microsoft Visual C++ 2005 再頒布可能パッケージなんだから Visual C++ 2005以外で作れば入れる必要ない
671 名前:デフォルトの名無しさん mailto:sage [2009/01/21(水) 17:02:41 ] 誰か>>643 を…
672 名前:デフォルトの名無しさん mailto:sage [2009/01/21(水) 17:16:41 ] >>671 ちょっと待て
673 名前:デフォルトの名無しさん mailto:sage [2009/01/21(水) 17:51:52 ] と思われるウィンドウって他の人が出してるウインドウ? サイズ変更のメッセージでサイズ調整したりするけど 他から勝手に余計なことされたらどうなるんだ?
674 名前:デフォルトの名無しさん mailto:sage [2009/01/21(水) 17:55:57 ] 余計な事は考えないで質問にだけ答えてくださいよ。
675 名前:デフォルトの名無しさん mailto:sage [2009/01/21(水) 17:59:02 ] >>673 ウィンドウシェードが目的なので他のプログラムですね。 コマンドプロンプトなどだと中身が一行見えたり、GIMPだとほとんどウィンドウの中身が見えてしまっていて全く使えません。 もちろん手動でタイトルバーだけにしようと思っても(OnGetMinMaxInfoかなんかで)それ以上小さくならないですし。
676 名前:デフォルトの名無しさん mailto:sage [2009/01/21(水) 18:48:54 ] ウィンドウシェードなんて聞いたことない 知ってるやつが来るまでおとなしく待ってればいいよ
677 名前:デフォルトの名無しさん mailto:sage [2009/01/21(水) 19:37:30 ] >>676 MacやBlackboxなどにあるウィンドウをタイトルバーだけにする機能のことです。
678 名前:デフォルトの名無しさん mailto:sage [2009/01/21(水) 19:44:19 ] explorer.exeを殺して最小化すればいい。
679 名前:デフォルトの名無しさん mailto:sage [2009/01/21(水) 20:03:54 ] >>675 他のシェードツールでは問題なく動作するの? それなら動かしつつSPYで見てみるとか
680 名前:デフォルトの名無しさん mailto:sage [2009/01/21(水) 20:26:41 ] >>678 互換シェル使っていますのでexplorer.exeはファイラー以外使ってません。 でもシェルを切ればタイトルバーだけになりますね。あまりあれは好きではありませんが。 >>679 Stylerでできた気がするのですが諸事情で確認できません。
681 名前:デフォルトの名無しさん mailto:sage [2009/01/21(水) 22:40:49 ] VS2008(VC9?)で、newしたときに、失敗したときに例外じゃなくてNULLを返させたいです。 でもnew(nothrow)みたいに、既存のソースのnewを一個一個置き換えるのはやなので、一発でなんか無いですか?
682 名前:デフォルトの名無しさん mailto:sage [2009/01/21(水) 22:55:40 ] newを自作
683 名前:デフォルトの名無しさん mailto:sage [2009/01/21(水) 22:59:59 ] なんか方法があるのは憶えてるけど、どうやるかは忘れたな。 ググればでてくるんじゃないか?
684 名前:デフォルトの名無しさん mailto:sage [2009/01/21(水) 23:03:43 ] 検索したらmsdnにヒットしたけどオフィシャルとは思えない笑える説明
685 名前:デフォルトの名無しさん mailto:sage [2009/01/21(水) 23:08:01 ] 笑える部分をコピペしてやりたいけど、それやると検索で見つかってしまうからやめておこう
686 名前:デフォルトの名無しさん mailto:sage [2009/01/21(水) 23:09:37 ] ダウンロードしたMSDNライブラリを、たとえばfirefoxで閲覧するにはどうすればよいでしょうか
687 名前:デフォルトの名無しさん mailto:sage [2009/01/21(水) 23:49:00 ] >>682-685 えー 教えてください
688 名前:デフォルトの名無しさん mailto:sage [2009/01/22(木) 00:24:09 ] もしかしてnothrownew.objをリンクするってやつ?
689 名前:デフォルトの名無しさん mailto:sage [2009/01/22(木) 14:29:19 ] WindowsのAPI関数をさしてF1キーなどでドキュメント付属のリファレンス見れますけど、 英語のものばっかり表示されるんですが、日本語で表示するにはどうすればいいですか? オプションで全部日本語を設定してるんですが・・・
690 名前:デフォルトの名無しさん mailto:sage [2009/01/22(木) 14:55:16 ] んな難しい英語使われてないやろ
691 名前:デフォルトの名無しさん mailto:sage [2009/01/22(木) 15:00:09 ] なんで2ちゃんねらーって論点をずらすことばかりするの?
692 名前:デフォルトの名無しさん mailto:sage [2009/01/22(木) 15:03:55 ] そりゃあたくさん人がいるからだよ
693 名前:デフォルトの名無しさん mailto:sage [2009/01/22(木) 15:06:28 ] visual studio使ってる段階でクズだし基地外が好んで使うから
694 名前:デフォルトの名無しさん mailto:sage [2009/01/22(木) 15:20:01 ] >>689 キーワードタブのフィルタ条件を「日本語ドキュメント」にする。 その状態は記憶されるので次からは日本語になる。
695 名前:デフォルトの名無しさん mailto:sage [2009/01/22(木) 15:50:57 ] VC++6.0を使用しています。 メニューバーの項目を一つだけ右端に持って行きたいのですが可能でしょうか? 下のような感じで。 ________________________________ |ファイル|編集|表示|___________________|ヘルプ|  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
696 名前:デフォルトの名無しさん mailto:sage [2009/01/22(木) 15:58:18 ] >>695 不可能
697 名前:デフォルトの名無しさん mailto:sage [2009/01/22(木) 16:04:28 ] >>965 無理
698 名前:デフォルトの名無しさん mailto:sage [2009/01/22(木) 16:05:12 ] >>696 >>697 感謝です。
699 名前:デフォルトの名無しさん mailto:sage [2009/01/22(木) 16:07:43 ] >>695 リソースじゃなくて自分でメニューバーのウィンドー作れば可能
700 名前:695 mailto:sage [2009/01/22(木) 16:15:20 ] >>699 感謝です。 yokohama.cool.ne.jp/chokuto/urawaza/menu1.html メニューバーの作り方はここを参考に作れば大丈夫でしょうか?
701 名前:デフォルトの名無しさん mailto:sage [2009/01/24(土) 21:59:52 ] Web制作の経験があるという理由だけで会社でVisual C++の担当になりました。 1から勉強しなければならないのですが、そもそもこのソフトで何ができるようになるのでしょうか? 上司に聞こうにも上手くはぐらかされるだけでストレスになっています。 例えばこういうものが作れるといった具体例があれば教えていただけないでしょうか?
702 名前:デフォルトの名無しさん mailto:sage [2009/01/24(土) 22:09:40 ] この世に存在する自動的に制御されているものはほとんど作れます
703 名前:デフォルトの名無しさん mailto:sage [2009/01/24(土) 22:17:49 ] これはさすがに釣りだろjk
704 名前:デフォルトの名無しさん mailto:sage [2009/01/24(土) 22:59:02 ] >>701 ウインドウズのアプリケーション。 ライブラリ。 DLL。 COM。 ActiveX。 Webアプリケーション。
705 名前:デフォルトの名無しさん mailto:sage [2009/01/25(日) 04:26:10 ] 工具箱で何が作れるのか聞いてるようなもんだな。
706 名前:デフォルトの名無しさん mailto:sage [2009/01/25(日) 13:11:32 ] >>701 VCはなんでも作れるらから安心しろ。
707 名前:デフォルトの名無しさん mailto:sage [2009/01/25(日) 13:30:49 ] 最初、ヴァーチャルストゥディオって読んでました
708 名前:デフォルトの名無しさん mailto:sage [2009/01/25(日) 13:38:02 ] VirtualStdioか 意味は通らなくもない
709 名前:デフォルトの名無しさん mailto:sage [2009/01/25(日) 16:33:42 ] VisualC++2005EEとVisualC++2008EEの違いって何ですか? 教えてください。
710 名前:デフォルトの名無しさん [2009/01/25(日) 16:40:52 ] VisualC++2008EEのほうが全てに秀でる あと軽い
711 名前:デフォルトの名無しさん mailto:sage [2009/01/25(日) 16:49:55 ] ありがとうございました。 2008インストールしてみます。
712 名前:デフォルトの名無しさん mailto:sage [2009/01/25(日) 19:45:42 ] >>701 会社の業務に関係するシステムを作らされそうなの? たぶんC#とかVBでやったほうがいいとおもうけど。
713 名前:デフォルトの名無しさん [2009/01/26(月) 23:16:58 ] ダイアログベースアプリで、ウイザードが生成するコードで、 CXXXDlg::OnPaint() { if(IsIconic()) { 処理 って奴あるじゃん。 あのIsIconicのときの処理って走りますか? 何時走るの?? ちなみにモーダルやモードレスの子ダイアログの場合、最小化すると走るらしいけど、 メインウインドの場合は?
714 名前:デフォルトの名無しさん mailto:sage [2009/01/26(月) 23:28:03 ] >>713 MSDNには最小化したら0以外が返るって書いてあるけど、 ダイアログ以外のウインドウだと動作が違うの?
715 名前:デフォルトの名無しさん mailto:sage [2009/01/26(月) 23:30:19 ] そもそも最小化しているときにOnPaintが呼ばれるのか?ということだろ。俺も気になる。
716 名前:デフォルトの名無しさん mailto:sage [2009/01/26(月) 23:41:09 ] てか、最近のVCのウィザードはif(IsIconic())なんてコードを吐くの?
717 名前:デフォルトの名無しさん mailto:sage [2009/01/26(月) 23:41:21 ] int main(void) { int a=0, b=99; Exchange(a,b); printf("a=%d ,b=%d\n",a,b); } int Exchange(int t1, int t2){ int tmp = t2; t2 = t1; t1 = tmp; return t1,t2; } 上の文では戻り値が返されずa=0,b=90と言う結果が出てしまいます。 どんな時に戻り値が適用され、どんな場合に仮引数、実引数が使われるのかが分かりません。 もしかして2つの値は返されないのでしょうか? また、これは値渡しと言うものなのでしょうか? 混乱しています。よろしくお願いします。
718 名前:デフォルトの名無しさん mailto:sage [2009/01/26(月) 23:42:49 ] >>715 そうそう、そんな感じ。 ウィザードがわざわざ生成するくらいだから何とかすれば通るような。 でもブレイクポイント設定して何をやってもブレイクしないし。
719 名前:デフォルトの名無しさん mailto:sage [2009/01/26(月) 23:45:16 ] >>717 煽るわけじゃなくて、マジ疑問なんだけど、どういうのを 手本にして勉強してるの? ネットのサイトとか? 二つの値を返したいときはこうだな。 void Exchange(int* t1, int* t2){ int tmp = *t2; *t2 = *t1; *t1 = tmp; } int main(void) { int a=0, b=99; Exchange(&a,&b); printf("a=%d ,b=%d\n",a,b); }
720 名前:デフォルトの名無しさん mailto:sage [2009/01/26(月) 23:46:38 ] >>718 Win3.1時代の名残りかな? そのころは、最小化するとタスクバーじゃなくて、アイコン化されてたし。
721 名前:デフォルトの名無しさん mailto:sage [2009/01/26(月) 23:49:23 ] >>720 最小化なのかアイコン化なのかもちょっと気になる。。 このIsIconic()〜のソースってSDIとかなら分かる気がする。 たとえば、親ウインドの中の子ウインドを最小化すると、親画面の左下に小さくなって並ぶじゃん。 あのときに、親ウインドにWM_PAINTが発生すれば、子供にも回ってきて、 子供は自分で自分がアイコンで占有している部分を更新リージョンからくり抜くんでしょ。たぶん。 でもメインウインドのダイアログのOnPaintでIf(IsIconic())って成立するのかな。。
722 名前:デフォルトの名無しさん mailto:sage [2009/01/26(月) 23:51:38 ] __int32と int型ってまったく同一に見られるんですか? オーバーロードができないんですが。
723 名前:デフォルトの名無しさん mailto:sage [2009/01/26(月) 23:54:21 ] >>721 その場合は、子ウィンドウからしたら、全領域が非クライアント領域のような気がするし、 第一、WS_CLIPCHILDRENを付ければ勝手にやってくれることのような気がする。
724 名前:デフォルトの名無しさん mailto:sage [2009/01/26(月) 23:55:14 ] >>722 そういう仕様。 msdn.microsoft.com/en-us/library/29dh1w7z.aspx > ..., and __int32 is synonymous with type int. なお、ここには載っていないけど、__int64もlong longと同じ。
725 名前:722 mailto:sage [2009/01/26(月) 23:56:48 ] すいません、リサーチ不足でした。 ありがとうございます。
726 名前:デフォルトの名無しさん mailto:sage [2009/01/26(月) 23:57:18 ] >>723 ああ。。確かに。 いったいこのコードなんだろう。誰かご存知のかた、ご回答お待ちしてます。
727 名前:デフォルトの名無しさん mailto:sage [2009/01/26(月) 23:58:59 ] >>719 いや、ポインタを使わずに返すには、こうしたらどうか? ……と、思って書いてみたんですけど…やっぱり無理ですよね。 サンクスです。
728 名前:デフォルトの名無しさん mailto:sage [2009/01/26(月) 23:59:43 ] C++なら参照というものがあってだな……。
729 名前:デフォルトの名無しさん mailto:sage [2009/01/27(火) 00:06:10 ] >>727 構造体を使えばできるけど、Cじゃあんまりやらないな。 struct pair { int first, second; }; struct pair swap(int a, int b) { struct pair c; c.first = b; c.second = a; return c; }
730 名前:デフォルトの名無しさん [2009/01/27(火) 00:12:11 ] VC+++MFCってコントロール少なすぎじゃないですか? どう見ても、VC#でやったほうが楽なのに、なんでVC++のほうがメジャーなんですか?
731 名前:デフォルトの名無しさん mailto:sage [2009/01/27(火) 00:16:13 ] そりゃ単純にいままでVC++でやってきた連中からしたら VC#なんか分からん事だらけだからじゃないの? なんでVC++で簡単にテキストファイル開けたのに C#でその方法をぐぐらなくっちゃいけないの? そこまでして移行してご利益がいっぱいあるの? MSは好都合かもしれないけど。そんなものみんないやなんです。
732 名前:デフォルトの名無しさん mailto:sage [2009/01/27(火) 00:16:36 ] >>730 C#よりも10年近く先に登場した分、資産・ノウハウが貯まっているところが多い。
733 名前:デフォルトの名無しさん mailto:sage [2009/01/27(火) 00:22:46 ] 感覚的には、新規の案件はVCよりC#のほうが多いような気がしたけど、 求人サイトで、C++とC#で検索してみたら、まだC++のほうが多かったな。
734 名前:デフォルトの名無しさん mailto:sage [2009/01/27(火) 00:24:43 ] C++と比較したの?それともVC++と比較したの? C++だけだと、LinuxとかUnixとか組み込みとかあるよ。
735 名前:デフォルトの名無しさん mailto:sage [2009/01/27(火) 00:25:27 ] C#でもWeb系ってたまにないか?
736 名前:デフォルトの名無しさん mailto:sage [2009/01/27(火) 00:29:21 ] >>735 aspで、イントラ作ろうって案件だと、C#かVBだしな。
737 名前:デフォルトの名無しさん [2009/01/27(火) 00:37:49 ] >>732 その割には使えるコントロールが全くないじゃないですか? しかも、Viewって一つしかないし・・・
738 名前:デフォルトの名無しさん mailto:sage [2009/01/27(火) 00:45:22 ] >>737 Viewは複数あるじゃん。
739 名前:デフォルトの名無しさん mailto:sage [2009/01/27(火) 00:47:41 ] >>737 コントロールは増えてないってだけでしょ。 MSはVC向けにはわざとそういう便利なライブラリを出さないんだろうね。 おらおらおらおらおらおらおらおらおらおら!!!!!! さっさとドットネットにいきやがれこんちくしょーーーーーー!! ってことですね。 おっとつい興奮していつの間にかCapsLockがONになってた
740 名前:デフォルトの名無しさん mailto:sage [2009/01/27(火) 00:49:02 ] >>729 遅スレだけれどmain関数の中を int main(void) { struct pair pair1; pair1.first = 0; pair1.second = 90; swap(pair1.first,pair1.second); printf("first=%d,second=%d\n",pair1.first,pair1.second); return 0; } と、書いてみた。 駄目だった…。ちょっと思考錯誤してきます。
741 名前:デフォルトの名無しさん mailto:sage [2009/01/27(火) 00:51:47 ] >>739 90年代はActiveXの時代だった。 どっちかというと、VBで使うのが主流だったと思うけど。
742 名前:デフォルトの名無しさん mailto:sage [2009/01/27(火) 00:52:33 ] >>740 pair = swap(1, 2);
743 名前:デフォルトの名無しさん mailto:sage [2009/01/27(火) 00:55:12 ] >>741 ここで言っているコントロールってActiveXのことなん? もしそうならVCでも使えるんじゃね?
744 名前:デフォルトの名無しさん mailto:sage [2009/01/27(火) 01:10:28 ] >>742 サンクスです。構造体に入れるのを忘れるとは…お恥かしい。 面倒な質問だったと思いますが最後まで有難う御座います。 これでひのきのぼうを装備してスライムが倒せそうです。
745 名前:デフォルトの名無しさん mailto:sage [2009/01/27(火) 02:32:06 ] >>743 使えるけど、たしか標準ではメニューに入っていないでしょ。
746 名前:デフォルトの名無しさん mailto:sage [2009/01/27(火) 07:43:04 ] 基本的にはWindows標準のものだけ扱うからね。 でも2008SP1でごっそり増えたじゃない、C#にもまだないようなのが。 まあこれらもWindowsに標準で組み込まれる予定だけど。
747 名前:デフォルトの名無しさん [2009/01/27(火) 18:29:11 ] int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) {/*ウインドウクラス構造体の設定*/ HWND hDlgWnd; //ダイアログボックスを表示します hDlgWnd = CreateDialog(hInstance, MAKEINTRESOURCE(IDD_DIALOG1),NULL,(DLGPROC)DlgWndProc); ShowWindow(hDlgWnd, SW_SHOW); UpdateWindow(hDlgWnd); //戻り値を返す return 0; } このようにモードレスダイアログを表示する関数を宣言しているのですが、一瞬表示されてすぐに消えてしまいます。 どこがおかしいのでしょうか? ここの記述がおかしいのかはわかりませんが、ご検討をお願いします。
748 名前:デフォルトの名無しさん mailto:sage [2009/01/27(火) 18:39:15 ] >>747 モードレスダイアログは普通のウィンドウのようにメッセージループが必要。
749 名前:デフォルトの名無しさん mailto:sage [2009/01/27(火) 18:43:08 ] UpdateWindow呼んだあとreturnしちゃってるからな。
750 名前:デフォルトの名無しさん [2009/01/27(火) 19:46:16 ] 747です。返信遅れてすみません。 では、WinMainの中に記述してはいけないということでしょうか? 今からいろいろやってみますが、かなりの初心者なので少しヒントを下さい。 お願いします!
751 名前:デフォルトの名無しさん mailto:sage [2009/01/27(火) 19:58:16 ] >>750 メッセージループっていってんだから メッセージループでググレよウンコ
752 名前:デフォルトの名無しさん [2009/01/27(火) 20:15:28 ] int APIENTRY WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nCmdShow) { WNDCLASSEX wcex; //ウィンドウクラス構造体 HWND hDlgWnd; MSG msg; ghInst = hInstance; /*ウィンドウクラス構造体を設定*/ //ダイアログボックスを表示します hDlgWnd = CreateDialog(hInstance, MAKEINTRESOURCE(IDD_DIALOG1),NULL,(DLGPROC)DlgWndProc); ShowWindow(hDlgWnd, SW_SHOW); UpdateWindow(hDlgWnd); while (GetMessage(&msg, NULL, 0, 0) > 0) { TranslateMessage(&msg); DispatchMessage(&msg); } return (int)msg.wParam; //戻り値を返す } という風に書き直したらできました。しかし、このソースおかしいぞと思われたらレスください。 748,749,751さんどうもありがとうございました。
753 名前:デフォルトの名無しさん mailto:sage [2009/01/27(火) 20:36:45 ] なんでageてんの?
754 名前:デフォルトの名無しさん mailto:sage [2009/01/27(火) 22:23:39 ] VC#みたいな補完機能はないのでしょうか? 毎回Ctrl+Spaceするのはめんどくさいですしセミコロン打っても自動で文字間隔とかを調整してくれませんし不便で仕方ないです 補完でこのスレを抽出するとないと言われていますがそんな馬鹿なことはないですよね?
755 名前:デフォルトの名無しさん mailto:sage [2009/01/27(火) 23:12:01 ] ない
756 名前:デフォルトの名無しさん [2009/01/28(水) 00:07:12 ] VC++にはWPFがないのはなぜ? もしかして、見放された?
757 名前:デフォルトの名無しさん mailto:sage [2009/01/28(水) 00:20:17 ] お前はC++を何だと思ってるんだ アーキテクチャ考えれば無いのは当たり前
758 名前:デフォルトの名無しさん mailto:sage [2009/01/28(水) 00:38:43 ] >>755 そうですか・・・ありがとうございました
759 名前:デフォルトの名無しさん mailto:sage [2009/01/28(水) 00:40:33 ] つまり.NETに移行するって事は標準の言語ではなく マイクロソフトのツールを使わせる戦略なの。 マイクロソフトにとってオープンソースや標準というものは金儲けの邪魔なのだ。 もちろん自分が好き勝手に決められる標準なら大好きだ。
760 名前:デフォルトの名無しさん mailto:sage [2009/01/28(水) 01:01:13 ] >>756 なんかのインタビューでC++はそういう用途のものじゃないから、って言っていた気がするが 見つけらんなかった。すまん。
761 名前:デフォルトの名無しさん mailto:sage [2009/01/28(水) 02:19:59 ] >>759 マイクロソフトの戦略というのは確かだが、 何でもかんでも決め付けるはどうかと
762 名前:デフォルトの名無しさん mailto:sage [2009/01/28(水) 10:09:07 ] >>739 MFCフューチャーパックなるものがリリースされて、 コントロールが10年ぶりくらいに刷新されたと聞いたけど、 あれ、どうなんだろう? VS2003使いだから、導入したくても導入できない
763 名前:デフォルトの名無しさん mailto:sage [2009/01/28(水) 13:24:19 ] VC++2005Standard Editionにはmicrosoft platform SDKは同梱されていますか?
764 名前:デフォルトの名無しさん mailto:sage [2009/01/28(水) 13:40:56 ] >>763 されてるよ
765 名前:デフォルトの名無しさん mailto:sage [2009/01/28(水) 13:45:18 ] >>764 ありがとうございます
766 名前:デフォルトの名無しさん mailto:sage [2009/01/28(水) 15:23:17 ] >>763-765 >>763-765 ttp://www.microsoft.com/japan/msdn/vstudio/express/2005/visualc/usingpsdk/ ttp://www.microsoft.com/japan/msdn/vstudio/express/default.aspx
767 名前:デフォルトの名無しさん mailto:sage [2009/01/28(水) 15:29:21 ] >VC++2005Standard Editionにはmicrosoft platform SDKは同梱されていますか?
768 名前:デフォルトの名無しさん mailto:sage [2009/01/28(水) 16:00:05 ] >>766 ExpressじゃなくてStandardの話をしている
769 名前:デフォルトの名無しさん mailto:sage [2009/01/28(水) 16:45:30 ] >>762 あれはコントロールってレベルじゃない。 www.atmarkit.co.jp/fdotnet/special/vs2008sp1/vs2008sp1_02.html
770 名前:デフォルトの名無しさん mailto:sage [2009/01/28(水) 22:23:57 ] >>766 すごい赤っ恥だな 俺だったら軽く鬱になる
771 名前:デフォルトの名無しさん mailto:sage [2009/01/28(水) 22:47:54 ] >>766 みたいにオッチョコチョイの癖にカッコつけて言葉が少ない奴って しょーもねー勘違いで、一人で変な方向に突っ走ってプロジェクトの火種くすぶらせるんだろーな。
772 名前:デフォルトの名無しさん mailto:sage [2009/01/29(木) 10:47:04 ] 江戸っ子なんだろうw
773 名前:デフォルトの名無しさん [2009/01/29(木) 11:37:35 ] アプリケーション開始とともにモードレスダイアログを2つ起動させたいのですが、どのような記述をすればいいのかがわかりません。 インスタンスハンドルが2つ必要なのでしょうか? さっぱり分からないのでお願いします
774 名前:デフォルトの名無しさん mailto:sage [2009/01/29(木) 11:39:29 ] 1個はできてるの? ためしに、単にCreateDialogを2回呼んでみては。
775 名前:デフォルトの名無しさん [2009/01/29(木) 12:07:05 ] 1個は表示されてます。 hDlgWnd = CreateDialog(hInstance, MAKEINTRESOURCE(IDD_DIALOG1),NULL,(DLGPROC)DlgWndProc); hDlg = hDlgWnd; ShowWindow(hDlgWnd, SW_SHOW); UpdateWindow(hDlgWnd); while (GetMessage(&msg, NULL, 0, 0) > 0) { TranslateMessage(&msg); DispatchMessage(&msg); } ghInst = (HINSTANCE)GetWindowLong( hDlg , GWL_HINSTANCE ) ; //ghInst = GetModuleHandle(NULL) ; hDlgWnd2 = CreateDialog(ghInst, MAKEINTRESOURCE(IDD_DIALOG2),hDlg,(DLGPROC)DlgWndProc); hDlg2 = hDlgWnd2; ShowWindow(hDlgWnd2, SW_SHOW); UpdateWindow(hDlgWnd2); while (GetMessage(&msg2, NULL, 0, 0) > 0) { TranslateMessage(&msg2); DispatchMessage(&msg2); } return (int)msg.wParam; } このように記述しています
776 名前:デフォルトの名無しさん mailto:sage [2009/01/29(木) 12:11:07 ] 何でメッセージループが複数あるのさ。 同時ならループの前で2回作れ
777 名前:デフォルトの名無しさん mailto:sage [2009/01/29(木) 12:16:40 ] メッセージループの何たるかを知らずにコピペでプログラムを作る人間か…
778 名前:デフォルトの名無しさん mailto:sage [2009/01/29(木) 12:18:21 ] hDlgWnd = CreateDialog(hInstance, MAKEINTRESOURCE(IDD_DIALOG1),NULL,(DLGPROC)DlgWndProc); hDlg = hDlgWnd; ShowWindow(hDlgWnd, SW_SHOW); UpdateWindow(hDlgWnd); ghInst = (HINSTANCE)GetWindowLong( hDlg , GWL_HINSTANCE ) ; hDlgWnd2 = CreateDialog(ghInst, MAKEINTRESOURCE(IDD_DIALOG2),hDlg,(DLGPROC)DlgWndProc); hDlg2 = hDlgWnd2; ShowWindow(hDlgWnd2, SW_SHOW); UpdateWindow(hDlgWnd2); while (GetMessage(&msg, NULL, 0, 0) > 0) { TranslateMessage(&msg); DispatchMessage(&msg); } return (int)msg.wParam; //戻り値を返す //return 0; } このように記述したらダイアログ2つともでました! ですが、2つめのダイアログの表示が1つめのレイアウトとかぶってしまいました。色とか線が2つめのダイアログにも影響を与えています。
779 名前:デフォルトの名無しさん [2009/01/29(木) 15:50:33 ] Webブラウザコントーロールのバージョンはいくつになるんですか? 自分のマシンにIE7が入っていればIEコンポーネントを埋め込んだアプリを起動したときIE7として起動するんですか?
780 名前:778 mailto:sage [2009/01/29(木) 16:00:51 ] 解決しました。お答えくださったかたがたありがとうございました。
781 名前:デフォルトの名無しさん mailto:sage [2009/01/29(木) 16:08:31 ] どうでもいいけど、GetMessageが0以外の値として-2以下を返すときってないの?
782 名前:デフォルトの名無しさん mailto:sage [2009/01/29(木) 16:19:34 ] それより 警告 GetMessage 関数は、0 以外の値、0、-1 のいずれかを返します。したがって、次のようなコードは避けてください。 while (GetMessage(lpMsg, hWnd, 0, 0)) ... と書いてるくせにVisual C++の自動作成されたやつはしっかりそうなっているという矛盾
783 名前:デフォルトの名無しさん mailto:sage [2009/01/29(木) 21:26:06 ] long long型の数値を入力するときは、 VC++ではfgets→atollができないので、 scanfを使うしかないのでしょうか?
784 名前:デフォルトの名無しさん mailto:sage [2009/01/29(木) 21:30:17 ] long long atoll(char *str){ long long result = 0; int negative=0; while (*str == ' ' || *str == '\t') str++; if (*str == '+') str++; else if (*str == '-') { negative = 1; str++; } while (*str >= '0' && *str <= '9') { result = (result*10) - (*str++ - '0'); } return negative ? result : -result; }
785 名前:デフォルトの名無しさん mailto:sage [2009/01/29(木) 21:30:56 ] >>784 ありがとうございます。 ぐへへへへ、これであんなことやこんなことができる。
786 名前:デフォルトの名無しさん mailto:sage [2009/01/29(木) 21:33:25 ] _atoi64
787 名前:デフォルトの名無しさん mailto:sage [2009/01/29(木) 21:36:17 ] >>785 何だか分からんが とりあえず通報しておいた
788 名前:デフォルトの名無しさん mailto:sage [2009/01/29(木) 21:56:38 ] なぜか負になる不思議!
789 名前:デフォルトの名無しさん mailto:sage [2009/01/30(金) 00:46:27 ] すまん、ホリデーってなん曜日だったっけ?
790 名前:デフォルトの名無しさん mailto:sage [2009/01/30(金) 01:24:22 ] 給料日だよ
791 名前:デフォルトの名無しさん mailto:sage [2009/01/30(金) 06:55:22 ] 俺は毎日がホリデイ
792 名前:デフォルトの名無しさん [2009/01/31(土) 04:49:26 ] CreateWindow()でNULLが返るのですが、どうやってデバッグすればよいですか? (どの変数がおかしいのか、とか、、)
793 名前:デフォルトの名無しさん [2009/01/31(土) 04:54:41 ] テンパってます。助けてぇ〜
794 名前:デフォルトの名無しさん mailto:sage [2009/01/31(土) 05:01:11 ] CreateWindowにブレークポイント設定してそこまでの変数が 期待通りの値になっているか確認したら うまいやり方は玄人が来るまで待て
795 名前:デフォルトの名無しさん [2009/01/31(土) 05:10:14 ] 794 ありがと。それはやってるけど、何が正常なのかよくわからないです。 理由を
796 名前:デフォルトの名無しさん mailto:sage [2009/01/31(土) 05:29:15 ] CreateWindowから前の命令についてMSDN引きながら どういう値が戻るのか、渡すのが正しいのか確認しなよ それも出来ないならエスパーが来るまで2時間程寝たら? 今のテンパってる状態では何かやってもうまくいかないさ
797 名前:デフォルトの名無しさん [2009/01/31(土) 05:35:25 ] <例>cin >> a >> b >> c; scanfを使って一行で表すにはどうしたらいいですか?
798 名前:デフォルトの名無しさん mailto:sage [2009/01/31(土) 10:38:18 ] まずGetLastError()をだな
799 名前:デフォルトの名無しさん mailto:sage [2009/01/31(土) 10:44:20 ] >>795 GetLastError();
800 名前:デフォルトの名無しさん mailto:sage [2009/01/31(土) 10:48:18 ] じゃ、俺も GetLastError()
801 名前:デフォルトの名無しさん mailto:sage [2009/01/31(土) 16:29:08 ] プロジェクトをテンプレートから作成するとき 空のプロジェクトとWin32コンソールアプリケーションとでは どこがどのように異なるのでしょうか。 VC++は2008 Expressです。
802 名前:デフォルトの名無しさん mailto:sage [2009/01/31(土) 16:40:57 ] 質問です。 初心者でもひろってくれる会社はないですか?
803 名前:デフォルトの名無しさん mailto:sage [2009/01/31(土) 16:43:21 ] >>801 Win32コンソールアプリケーションだとmain関数入りのソースファイルが初めから追加済み。 空のプロジェクトは本当に空っぽ。
804 名前:デフォルトの名無しさん mailto:sage [2009/01/31(土) 17:13:58 ] 自分でプロジェクト作って見ればいいだけだろ お前のVC++は2008 Expressは飾りか?
805 名前:デフォルトの名無しさん [2009/02/01(日) 13:39:52 ] すいません、昨日の明け方カキコしたものです。ちょっと前まで寝てました。 なんでCreateWindow()でNULLが返るのか分かりました。WinProc()のWM_CREATEの中で 変なことやってました。早く寝るべきだったス。 ありがとうございました。
806 名前:デフォルトの名無しさん [2009/02/01(日) 13:46:36 ] >>802 ないです。
807 名前:デフォルトの名無しさん [2009/02/01(日) 13:47:54 ] >>797 int a, b, c; scanf("%d%d%d", &a, &b, &c);
808 名前:デフォルトの名無しさん mailto:sage [2009/02/01(日) 19:23:23 ] >>802 求人サイトで、未経験者可の会社さがせ。
809 名前:デフォルトの名無しさん mailto:sage [2009/02/01(日) 21:02:25 ] けどそういう会社ってブラックな所多いよね。
810 名前:デフォルトの名無しさん mailto:sage [2009/02/01(日) 21:38:39 ] 地元で自宅通勤できるならデジドカでもおkだけど、 県外に出てまでデジドカにはなりたくないな。 ところで情報工学科に受かったが、入学前の間このままVCで遊んでいればおk?
811 名前:デフォルトの名無しさん mailto:sage [2009/02/01(日) 21:47:15 ] 何もしなくても問題ないと思うけどね TOEICとか英語の資格取る勉強とかすれば?って気がする
812 名前:デフォルトの名無しさん mailto:sage [2009/02/01(日) 22:19:10 ] スレチなのに回答Thanks! 確かに、何も知らない人にも最初から教えてくれるはずだからな。
813 名前:デフォルトの名無しさん [2009/02/01(日) 22:44:30 ] >>810 私立の情報工学科なんて専門学校と同じだろ?
814 名前:デフォルトの名無しさん mailto:sage [2009/02/01(日) 22:52:43 ] 国立だとどうなの?
815 名前:デフォルトの名無しさん [2009/02/01(日) 22:55:19 ] 国立でも旧帝以外なら屑
816 名前:デフォルトの名無しさん mailto:sage [2009/02/02(月) 01:13:57 ] ダイアログコントロールのプロパティ[Visible]をfalseって裏では何を設定してるんですか?
817 名前:デフォルトの名無しさん mailto:sage [2009/02/02(月) 01:21:52 ] 英語と苦手だったら数学の復習でもしてれば? 後は仕様書きちんと書いてからソフトを作ってみると良い経験になるかな
818 名前:デフォルトの名無しさん [2009/02/04(水) 01:03:58 ] いままで、動いていたプログラムが サービスパック入れたとたん120個エラー。 しかも触ったことも無いヘッダファイルから・・・ ・・・・orz こういうことって良くあるんでつか?
819 名前:デフォルトの名無しさん [2009/02/04(水) 01:34:26 ] VC+++MFCって画面の作り方がさっぱりわかりません ダイアログベースにするとしょぼいコントロールが数個あるだけで・・・ ドキュメントビューにすると、全く画面が作れないし・・・ どうやってつくるのか、いいHPあったら教えてください
820 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 01:59:41 ] 質問させてください。 数値のデータが列挙された Excelデータがあります。内容は、IDと、00 や、 02など 見た目では分かりにくいデータです。 Windows SDKを使用して、Excelの値の意味を画面表示することが目的のプログラムを 作成しようと調査しています。 そこで、Accessのデータベースと、Excelのパラメータを比較して画面出力する処理を 考えていますが、そもそもWindows SDKを使って、mdbと接続できるのでしょうか?
821 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 02:26:06 ] Windows SDKとは関係ありません。 バイナリファイルに自分でアクセスする処理を作って下さい。
822 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 03:03:19 ] 生APIの海の世界へようこそ 君が今まで居た場所は池にすぎない
823 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 08:27:33 ] いや、mdbと接続っていうならバイナリアクセスじゃなくて com使ってexcelやaccessと接続するんじゃないの office オートメーション あたりでのキーワードでググってみたら?
824 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 16:43:22 ] 自分はADO使うんだと思った。
825 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 17:29:12 ] VC++ならDAOでも ADOとDAOは用途似てる上に略式名がふざけすぎていると思うw
826 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 20:33:51 ] >>819 ダイアログアプリにして ぺたぺたコントロールを貼り付けていく
827 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 21:18:03 ] 確かにDialogベースアプリはしょぼい概観。 SDIとかMDIはめんどくさいしほとんど使う価値無し。 最近のアプリ(ウイルスソフトとか)って概観がWebページみたいな感じじゃないですか? ああいうのってどうやって作るんだろ。 以前DirectXを使ってボタンを描画するライブラリとか見たことあるけど。
828 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 21:25:07 ] スキン 貼り絵
829 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 21:55:11 ] >>828 そんな感じなの? ふーん。
830 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 11:13:48 ] Diableベースアプリに見えた
831 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 22:10:28 ] VS2008でMFCアプリ作ってみたら、すごいことになってたな。
832 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 22:27:41 ] SP1のスケルトンだなw
833 名前:デフォルトの名無しさん [2009/02/06(金) 00:08:05 ] >>831 確かに! .NET不要じゃね?て思っちまった
834 名前:デフォルトの名無しさん mailto:sage [2009/02/06(金) 03:55:01 ] クラスをまたがる処理がゴミゴミしてきたのでグローバル変数にしようと思うんですが、 なるべくコードの量を減らしたいので、今、すべての.cppでincludeしてあるstdafx.hを使ってなんとかしたいです。 まずCMainFrameをグローバル変数にしたいのですが、 // stdafx.h extern CMainFrame* g_pMainFrame; // MainFrame.cpp #include "stdafx.h" CMainFrame* g_pMainFrame; CMainFrame() { g_pMainFrame = this; } MainFrame.cpp内でグローバル変数を宣言しているのにexternするのは変化もしれませんが、 すべてのファイルで共有するのでこれでエラーが出ないようにしたいんです。 どうすればいいでしょうか?
835 名前:デフォルトの名無しさん mailto:sage [2009/02/06(金) 09:03:48 ] プリコンパイルヘッダー使ってるならstdafx.h使うのは無理じゃない? あまりそれ使うのはお勧めしないが、 MainFrame.cppだけプリコンパイルヘッダーはずしてstdafx.hインクルード前に#define入れて #ifdefでextern宣言飛ばすようにするとか。
836 名前:デフォルトの名無しさん mailto:sage [2009/02/06(金) 10:21:44 ] >>834 #define CxxxApp::GetMainWnd() g_pMainFrame CMainFrame* CxxxApp::GetMainWnd() { return DYNAMINC_DOWNCAST( CMainFrame, m_pMainWnd); }
837 名前:デフォルトの名無しさん mailto:sage [2009/02/06(金) 10:25:17 ] DYNAMINC_DOWNCAST → DYNAMIC_DOWNCAST class CxxxApp { public: CMainFrame* GetMainWnd(); }
838 名前:デフォルトの名無しさん mailto:sage [2009/02/06(金) 10:29:10 ] いかん。 #define CxxxApp::GetMainWnd() g_pMainFrame → #define theApp.GetMainWnd() g_pMainFrame
839 名前:デフォルトの名無しさん mailto:sage [2009/02/06(金) 10:36:29 ] MFC使ってるのに少しぐらいコードの量減らしたってほとんど意味ない
840 名前:デフォルトの名無しさん mailto:sage [2009/02/06(金) 10:45:30 ] >まずCMainFrameをグローバル変数にしたいのですが、 ってあるからそれ以外にもあるのだろうね、大量にw
841 名前:デフォルトの名無しさん mailto:sage [2009/02/06(金) 14:32:49 ] そうなんです、大量にあるんです。 コードの量を減らすのは見やすいようにするためなんですが、なるべく同じ関数は2度と呼び出さなくてもいいように 確保しておきたいんです。ループの中とかでも頻繁にクラス間のメンバ参照を使うので馬鹿にできないんです。 全ファイルにインクルードするのが面倒というか、増えていくファイルで自動で追加されるstdafx.hにglobal.hをインクルードしておくだけにしたいんです。 で1行は必ず自分のポインタを格納したグローバル変数をもう一度externするのをさけたいんです。 #defineで既にexternされている場合か、宣言が既にある場合はその行だけ飛ばすにはどうかけばいいんでしょうか?
842 名前:デフォルトの名無しさん mailto:sage [2009/02/06(金) 15:22:23 ] CMainFrameはたとえが悪かったな。AfxGetMainWndとかあるしな。 global.cpp をつくり変数はそこで定義すればいいじゃない。 よくやる手段としては、ヘッダファイルで #ifdef EXTERN #define EXTERN extern #endif とかやっといて、cpp1つだけインクルードの前に#define EXTERNとかやる。 stdafx.hを使うのであればmそのcppはプリコンパイルヘッダーを使わない設定にしないとならない。
843 名前:デフォルトの名無しさん mailto:sage [2009/02/06(金) 15:22:49 ] >>841 >>836 以降を実行しろ。グローバル変数になんぞする必要もない。
844 名前:デフォルトの名無しさん mailto:sage [2009/02/06(金) 15:23:01 ] #ifdef EXTERN じゃなくて#ifndef EXTERN だった
845 名前:デフォルトの名無しさん mailto:sage [2009/02/06(金) 15:30:44 ] グローバルはCWinApp派生クラスに一任だぜ WindApp派生クラスのヘッダファイルにextern theAppがあるだろ?
846 名前:デフォルトの名無しさん mailto:sage [2009/02/06(金) 15:55:21 ] もしかしてexternって、書いたファイルでその宣言を使える用にするんじゃなくて externが書いてあるファイルをインクルードしておけば、どのファイルからでも使えるようになるんですか?
847 名前:デフォルトの名無しさん mailto:sage [2009/02/06(金) 16:03:01 ] まずインクルードのこと、翻訳単位について勉強だな
848 名前:デフォルトの名無しさん mailto:sage [2009/02/06(金) 16:16:01 ] すまん、本をもう一度読んでからレスを読み返してみるよ みんなありがとう
849 名前:デフォルトの名無しさん mailto:sage [2009/02/06(金) 16:29:21 ] わかりました。グローバルファイルを別に作る必要すらなかったです。 externの意味を間違えていたのが原因でしたすいません! // .hのクラスの外(グローバル領域) extern CMainFrame* g_pMainFrame; // .hのクラスの中 CMainFrame* g_pMainFrame; // .cppのCMainFrameのコンストラクタ g_pMainFrame = this;
850 名前:デフォルトの名無しさん mailto:sage [2009/02/06(金) 16:41:10 ] やばい振り出しに戻った
851 名前:デフォルトの名無しさん mailto:sage [2009/02/06(金) 18:12:17 ] そもそもグローバル変数にしなきゃならんような設計が間違い
852 名前:デフォルトの名無しさん mailto:sage [2009/02/06(金) 19:59:56 ] 中途半端にコードだすから・・・ 何度こういうケースを見たことか。
853 名前:デフォルトの名無しさん mailto:sage [2009/02/06(金) 21:51:31 ] VC++ 6.0 使ってます。 スレッドを生成するのに、JavaのThreadクラスのようなものは無いのでしょうか?
854 名前:デフォルトの名無しさん [2009/02/06(金) 21:52:58 ] CThread
855 名前:デフォルトの名無しさん mailto:sage [2009/02/06(金) 22:19:20 ] MFCごときで作るアプリなんざ、グローバル変数使ったって全然もんだいない。 じゃんじゃん使え。CWinAppの派生クラスに押し込めるとか、そんな糞めんどくさいことするな。 あとアクセス関数とか全然必要ないよ。 全部変数はパブリック。楽で良いぞ。
856 名前:853 mailto:sage [2009/02/06(金) 23:19:37 ] >>854 ありがとうです。 CThreadはCWinThreadを継承して自分で作るってことですか? 調べてみたらこんなのしかなかったんですが、この方法でよいのでしょうか・・・? www.tri-field.com/progtips/tips04.html hp.vector.co.jp/authors/VA014436/prg_memo/windows/vctips/039.html www.edita.jp/h1ro/one/h1ro8125407.html
857 名前:デフォルトの名無しさん mailto:sage [2009/02/06(金) 23:41:56 ] _beginthreadexつかえ。
858 名前:デフォルトの名無しさん mailto:sage [2009/02/06(金) 23:52:15 ] 物凄く初歩的かつ大雑把な質問なのですが、 システムの処理上sqrtやcos,sinをかなり使っていて、 これらの処理が重いということは知っていたのですが、 「最近のPCだと、もちろん重いことには重いがそれほど四則計算と変わりない」と聞きました 実際のところはどうなのですか?
859 名前:デフォルトの名無しさん [2009/02/06(金) 23:54:55 ] 最近のマシンで動作する3Dゲームを見れば分かる。 アレだけたくさんのポリゴンを計算し、それらの表面の光沢を表現し その膨大な演算を一瞬にしてこなしているだろ? だから早いんだよ
860 名前:デフォルトの名無しさん mailto:sage [2009/02/06(金) 23:57:03 ] 確かにそうですね。 最近は2次元の計算作業なんて多少無理しても大丈夫なレベルになってるんですね。 ありがとうございます。
861 名前:デフォルトの名無しさん mailto:sage [2009/02/07(土) 00:03:24 ] >>860 自分のための処理であるのなら実際に自分が使用する環境で実測してみることをお勧めする 処理速度や計算機リソースをどの程度消費するかなどは結局のところ実際に計ってみないと議論できない面がある 実際に行いたい処理から規模をスケールダウンして実測してみてそこから外挿してそれが無理な処理か大丈夫なレベルか判断
862 名前:デフォルトの名無しさん [2009/02/07(土) 00:17:32 ] 計算機なんて20年ぶりに聞いたw
863 名前:デフォルトの名無しさん mailto:sage [2009/02/07(土) 04:53:42 ] FORTRAN屋みたいな奴がいるなw
864 名前:デフォルトの名無しさん mailto:sage [2009/02/08(日) 00:16:09 ] VC2008で操作ミスってソースウィンドウのタブやスペースが ”→”、”・”と表示されるようになったんですが、 元に戻すにはどうしたらいいんでしょうか?
865 名前:デフォルトの名無しさん [2009/02/08(日) 00:24:55 ] メニューバー→編集→詳細→スペースの表示
866 名前:デフォルトの名無しさん mailto:sage [2009/02/08(日) 00:25:25 ] ageスマン
867 名前:デフォルトの名無しさん mailto:sage [2009/02/08(日) 00:25:49 ] >865 直りました。 ありがとうございます。
868 名前:デフォルトの名無しさん [2009/02/08(日) 20:03:10 ] VC++9を使いはじめたものです。 タブを押すと押しただけどんどんタブが追加されていくんですが、 これをタブをインデントをそろえるために使えませんでしょうか? キーボードをEmacsタイプにするのは、ほかのキーバインドもEmacs風になってしまうので、 やめたいです。 よろしくお願いします
869 名前:デフォルトの名無しさん mailto:sage [2009/02/08(日) 20:29:42 ] 逆に考えるんだ。 「VSのやり方に合わせよう」と考えるんだ。 みんなそうしているよ。
870 名前:デフォルトの名無しさん mailto:sage [2009/02/08(日) 20:30:13 ] そこだけ設定抜きだして入れりゃいいじゃんか
871 名前:デフォルトの名無しさん [2009/02/08(日) 20:36:23 ] >>870 どうやるんスか?
872 名前:デフォルトの名無しさん mailto:sage [2009/02/08(日) 21:37:14 ] これをタブをインデントを
873 名前:デフォルトの名無しさん mailto:sage [2009/02/08(日) 21:51:12 ] >>871 ユーザー設定のコマンドに全部設定あるだろ。 EMACSでやってる欲しい設定だけ拾ってキーに設定するんだよ
874 名前:デフォルトの名無しさん mailto:sage [2009/02/08(日) 22:24:54 ] タブデント!
875 名前:デフォルトの名無しさん [2009/02/09(月) 00:08:29 ] 初心者です。 VC6.0のFormViewで色々実装しています。 ドキュメントクラスのSerialize関数がメニューの[開く][上書き保存][保存] からしか呼び出されません。 上記のものを消してしまい、後で追加したいのですが何も考えずに追加すると Serialize関数が呼び出されません。一見[開く]などとたの項目とでは特に 違いがなさそうなのですがSerialize関数を呼び出すにはどうすればよいのでしょうか。
876 名前:デフォルトの名無しさん mailto:sage [2009/02/09(月) 09:55:03 ] 追加したコマンドIDは消す前と同じかえ?
877 名前:デフォルトの名無しさん mailto:sage [2009/02/09(月) 09:58:45 ] 別に新規で作って見てみたら? それでわからなかったら、Serializeにブレークポイント置いておいて 止まったら呼び出し履歴見てみれば。
878 名前:デフォルトの名無しさん mailto:sage [2009/02/12(木) 15:54:51 ] VC++6.0のダイアログベースで作成しているのですが 元のダイアログをAとし、別のダイアログBを作成し、AからBにDoModalを行った後、 Bのダイアログのリストビューのアイテムをダブルクリックした時に、 Aのダイアログにもどり、Aにあるスタティックテキストをそのダブルクリックされたアイテムの 名前に変更したいのですが非常に苦戦しております、、 自分が考えていたのはアイテムがダブルクリックされたときに、 アイテムをグローバル変数に突っ込んで CDialog::OnOK();を実行し 元のダイアログに戻った時にデータを突っ込んでUpdateDataをかけようと思っていたのですが、 CDialog::OnOK();で元のダイアログが閉じられたあとにどこに行っているのかがさっぱりで 処理を突っ込めませんでした。 CDialog::OnOK();の後どこにいくのか、また他になにか良い方法はないか よろしくおねがいします。
879 名前:デフォルトの名無しさん mailto:sage [2009/02/12(木) 16:15:37 ] OnOK後はDoModalから返ってくるだろ。 Bのパブリックメンバーにしておいて、DoModalがOK返してきたら AからBのそのメンバー見ればいいじゃんかよ。
880 名前:デフォルトの名無しさん mailto:sage [2009/02/12(木) 16:40:04 ] >>879 あー、言われて見直して10分悩んで見直したら出来ました。 全然頭が回ってないですね自分。 ありがとうございました。助かりました。
881 名前:デフォルトの名無しさん [2009/02/13(金) 01:53:54 ] windowsでC++の勉強を始めたのですが、Std::coutに出力してもどこにも 出力が出ません。どうすれば表示されますか?
882 名前:デフォルトの名無しさん mailto:sage [2009/02/13(金) 02:15:57 ] コンソールアプリケーションのプロジェクトを選べ
883 名前:デフォルトの名無しさん [2009/02/13(金) 02:42:29 ] ありがとうございます。 windowsアプリケーションを選ぶときは、どうすればいいですか?
884 名前:デフォルトの名無しさん mailto:sage [2009/02/13(金) 04:15:21 ] windowsアプリケーションを選べばいんじゃね?
885 名前:デフォルトの名無しさん [2009/02/13(金) 05:44:00 ] MessageBox()を使えばいいよ。
886 名前:デフォルトの名無しさん mailto:sage [2009/02/13(金) 10:33:06 ] >>878 です。 先程のプログラムでAからBにDoModalしたのちに、BのDoDataExchangeの最後に、 thread_param param; param.instance = this; param.pParam = 0; m_Thread = AfxBeginThread(thread_entry,¶m,THREAD_PRIORITY_NORMAL); と実行してスレッドを作成しようとするとエラーが出てプログラムが強制終了してしまいます。 ボタンにして画面が出た後に実行すると出来るのですが、画面に入った後に自動的に実行したいのですが、 どのようしたらよいでしょうか?
887 名前:デフォルトの名無しさん mailto:sage [2009/02/13(金) 12:24:08 ] >>886 スレッドにローカル変数のアドレス渡してるのがマズい。 作成されたスレッド側がparamを参照しようとした時に スレッドを作成した側が既にスコープを抜けてparamが破棄されてる可能性がある。
888 名前:デフォルトの名無しさん mailto:sage [2009/02/13(金) 13:33:46 ] >>887 できました! 的確なご指摘ありがとうございました!
889 名前:デフォルトの名無しさん mailto:sage [2009/02/14(土) 12:21:07 ] vc2008 で Intellisense の自動更新を無効にする方法知りませんか?
890 名前:デフォルトの名無しさん mailto:sage [2009/02/14(土) 14:55:38 ] Visual C++ 2008 Express Edition Windoes XP Pro SP3 C++/CLI使用 親ウィンドウで画像ファイルを指定すると、MDIの子ウィンドウで画像を読み込んで表示し、親ウィンドウのズームイン/ズームアウトボタン(またはメニュー)でアクティブな子ウィンドウの画像をウィンドウごと大きくしたり小さくしたりするプログラムを作りました。 子ウィンドウの作成・イメージ読み込み・ズーム処理などを行うクラスと、そのウィンドウをコレクションで複数保持するクラスを作り、クラスライブラリとして作成し、それを親ウィンドウのFormから呼び出す形でプログラミングしました。 複数の画像読み込み、複数の子ウィンドウ表示、ズームイン/ズームアウトなどの処理は正常に動作しています。 この親ウィンドウのメニューに、表示されている複数の子ウィンドウのリストが表示される(一般的なウィンドウメニュー)を追加しました。 方法は簡単で、menuStrip1のMdiWindowListItemプロパティにウィンドウメニューのオブジェクトを代入するだけです(開発環境のプロパティウィンドウから設定しました)。 これも正常に動作して、コードを追加しなくてもウィンドウメニューに画像ファイルを読み込んだ複数の子ウィンドウのタイトルが、メニューに表示されました。 次に続く・・・
891 名前:890 mailto:sage [2009/02/14(土) 14:56:43 ] ここからが問題です。 子ウィンドウのウィンドウタイトルには、画像のファイル名とズーム倍率が表示されるように作りました。 例: 1つ目の子ウィンドウ「img1001.jpg / 100%」 2つ目の子ウィンドウ「img1002.jpg / 100%」 親ウィンドウのズームイン/ズームアウトボタンを押すと、画像の大きさが変わると同時に、タイトルの倍率の数値も変わります。 例: 1つ目の子ウィンドウをズームインした場合 「img1001.jpg / 120%」 ところが、この状態で親ウィンドウのウィンドウメニューをドロップダウンさせると、ズームインさせる前の状態で表示されてしまいます。 ウィンドウ(W) 1 img1001.jpg / 100% 2 img1002.jpg / 100% つまり、子ウィンドウのタイトルを変更させても、ウィンドウメニューには反映されません。 しかし、アクティブウィンドウを変えると(別の子ウィンドウをクリックして全面に出すと)反映されます。 例:2つ目の子ウィンドウをクリックした後 ウィンドウ(W) 1 img1001.jpg / 120% 1 img1002.jpg / 100% やりたいこと: ズームイン/ズームアウトボタンを押した直後にウィンドウメニューを表示させても、そのウィンドウのタイトルの変更をすぐに反映させたい。 どなたかご教授お願いします。
892 名前:デフォルトの名無しさん mailto:sage [2009/02/14(土) 15:09:19 ] 開発環境 Microsoft Visual Stdio2008 c++ Windowsフォームアプリケーション textBox1,textBox2,button1を設置して button1を押すとBox1のひらがなはローマ字に、ローマ字はひらがなに変換して Box2に入れるようにしたいのですが、ひらがなからローマ字への変換ができません。 自分なりに考えたプログラムを張るのでアドバイスや、 もっと効率のいい方法がありましたら教えていただけると幸いです。 private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) { String^str1 = textBox1->Text; String^str2; int len,i; len = textBox1->Text->Length; for(i=0;len>i;i++){ if(str1[i]=='a'){ str2=str2+"あ"; } else if(str1[i]=='i'){ str2=str2+"い"; } else if(str1[i]=='u'){ str2=str2+"う"; ////////////////////略///////////////////// } textBox2->Text = str2; }
893 名前:デフォルトの名無しさん mailto:sage [2009/02/14(土) 19:05:48 ] あいうえお以外には使えない
894 名前:デフォルトの名無しさん mailto:sage [2009/02/14(土) 19:17:18 ] >>893 分かりにくくてすいません////略////の部分で上記以外のローマ字からひらがなへの 変換(la li lu kya kyu kyoなど)は終わっています 数字や漢字は変換せずに追加されるようになています
895 名前:デフォルトの名無しさん mailto:sage [2009/02/14(土) 19:37:14 ] 子音が重なったら、「っ」変換する処理とかは入ってるのだろうか。
896 名前:デフォルトの名無しさん mailto:sage [2009/02/14(土) 19:40:28 ] そういう処理はIMEにまかせて、結果だけ奪え。
897 名前:デフォルトの名無しさん mailto:sage [2009/02/14(土) 19:53:50 ] >>895 はい、「yotto」→「よっと」などですよね? 「ん」も母音か子音かの前かで「nn」と「n」で使い分けているので大丈夫です。 if(str1[i]=='あ')ではif文の中の処理に入れないのでひらがなからローマ字への変換ができないんです、 どうしたらどんなひらがなかによって判断できるようになりますか?
898 名前:デフォルトの名無しさん mailto:sage [2009/02/14(土) 20:16:52 ] シナ製のIMEは、wを連打するとwwwwwになるはず。 偉大なる祖国のFEPだと、っっっっっっwってなる。
899 名前:デフォルトの名無しさん mailto:sage [2009/02/14(土) 20:18:20 ] >>897 str1[i] == L'あ'でできると思う。
900 名前:デフォルトの名無しさん mailto:sage [2009/02/14(土) 20:29:48 ] >>899 なるほど!!おかげさまで無事できました、ありがとうございます。
901 名前:デフォルトの名無しさん [2009/02/15(日) 09:21:53 ] Source Filesの下に、Main.cppというソースがあって、そこから Source Filesの隣にあるResource Filesというフォルダの下のHoge.txtファイルを オープンしたいのですが、 FileOpenFunc(_T("..\\Resource Files\\Hoge.txt")); と書いてもファイルが見つかりません。どう書けばよいですか?
902 名前:デフォルトの名無しさん mailto:sage [2009/02/15(日) 11:52:48 ] 実行時のフォルダからのパスを書かなきゃだめだから
903 名前:デフォルトの名無しさん mailto:sage [2009/02/15(日) 11:58:07 ] カレントディレクトリからのパスじゃねぇっけ? たしかファイルダイアログを呼び出すたびにホイホイかわってすっげーぷっつんくる仕様だった希ガス アクセスするときには必ずフルパス直してアクセスしないとつながんねーとかアリガチ?
904 名前:デフォルトの名無しさん mailto:sage [2009/02/15(日) 12:07:19 ] まあ、そういう作りだったらexeのパスを取得してフルパスにした方が確実だな
905 名前:デフォルトの名無しさん mailto:sage [2009/02/15(日) 12:31:12 ] GetModuleFileとかそんな感じの、実行ファイル名をフルパスでゲット出来る関数があったはずだから、 それとShlwApiとかそれっぽい名前の関数群を使えばいいかもしれない気がしないでもない。
906 名前:デフォルトの名無しさん [2009/02/15(日) 19:58:59 ] RegisterClassってなにをやってるんですか? CreateWindowとRegisterClassって1個にまとめちゃえばいいような気がする。
907 名前:デフォルトの名無しさん mailto:sage [2009/02/15(日) 20:04:11 ] >>906 なんかはじめのメインウィンドウ作るときぐらいしか使わない記憶あるけど 俺のきのせい?
908 名前:デフォルトの名無しさん mailto:sage [2009/02/15(日) 20:19:56 ] RegisterClassは、Windowsに、「こういうスタイルを登録するよ。名前はUSERね」ってやってるだけ。 次に、CreateWindowで、「こういうウインドウ作ります。スタイルはUSERです」ってWindowsに通知する。 CreateWindowで、STATIC とか、EDIT って指定するだろ?アレは、そういうスタイルがWindowsが持ってるわけだ。 RegisterClassで指定してるのは、これから使う、ユーザ独自のスタイル。 んなもんWindowsのしったこっちゃないから、あらかじめ登録しちゃうわけ。 CreateWindowで、RegisterClassで登録した名前を指定するのはそういうわけ。登録して、使う。
909 名前:デフォルトの名無しさん mailto:sage [2009/02/15(日) 21:12:57 ] ようするに1つのクラスをテンプレートにして、いくつものウィンドウを作れる。 だから別々に分かれている。
910 名前:デフォルトの名無しさん mailto:sage [2009/02/16(月) 01:53:46 ] RegisterClassはウィンドウの動作に関する事を指定する CreateWindowはウィンドウの見た目に関する事を指定する
911 名前:初心者 [2009/02/16(月) 02:23:14 ] 「botton1をクリックしたとき、〜する」っていうような、コードを教えてください。 ほんとに、初心者ですみません。
912 名前:デフォルトの名無しさん mailto:sage [2009/02/16(月) 02:36:41 ] ボタンを貼り付ける。 そんで、そのボタンをダブルクリックする。 生成されたコードの中に処理を書く
913 名前:初心者 [2009/02/16(月) 02:50:39 ] コードをkwskお願いします
914 名前:デフォルトの名無しさん mailto:sage [2009/02/16(月) 02:56:20 ] ダイアログベースの場合は上記の通り。 ボタンをはっつけて、それをダブルクリックするだけで勝手にコードが自動生成される。 んで、そこに書き込む。 WinAppの場合は、ウインドプロシージャでやる。 詳しくはここを読め。 homepage2.nifty.com/c_lang/sdk/sdk_28.htm
915 名前:初心者 [2009/02/16(月) 03:07:57 ] すみません、説明不足でした。 if型で、「botton1をクリックしたときに、〜する」というコードです。 ほんとに、すみません
916 名前:デフォルトの名無しさん mailto:sage [2009/02/16(月) 03:10:02 ] とりあえずボタンをダブルクリックするまでやってみなよ
917 名前:初心者 [2009/02/16(月) 03:14:22 ] botton1と、botton2があり、それを選んでbotton3を押すと、 それぞれ動き方が違うというプログラムを作りたいです。
918 名前:デフォルトの名無しさん mailto:sage [2009/02/16(月) 03:32:01 ] ん?IF型ってなぁに? まずダイアログベースアプリなのか、SDIアプリケーションなのか、Win32アプリケーションなのか、 それ以外なのかちゃんと書こうぜ。
919 名前:デフォルトの名無しさん mailto:sage [2009/02/16(月) 03:44:40 ] ボタンを選択するってことはラジオボタン? もしかしてこんなかんじかな? IDC_RADIO1、2はラジオボタンで、スタイルがプッシュボタン型。 で、通常のボタン(ボタン3)を押した場合の処理が以下。(名前はOnBnClickedButton1だけどな) void CzzzDlg::OnBnClickedButton1() { // TODO : ここにコントロール通知ハンドラ コードを追加します。 if( ((CButton *)GetDlgItem(IDC_RADIO1))->GetCheck() == TRUE ) { MessageBox("Radio1"); } else if( ((CButton *)GetDlgItem(IDC_RADIO2))->GetCheck() == TRUE ) { MessageBox("Radio2"); } }
920 名前:デフォルトの名無しさん mailto:sage [2009/02/16(月) 03:47:10 ] あ、間違えた^^; == TRUEではなくて、== BST_CHECKED だな。
921 名前:初心者 [2009/02/16(月) 06:50:13 ] 説明不足が多く、すみませんでした。 >>919 ありがとうございました!!
922 名前:デフォルトの名無しさん [2009/02/16(月) 10:01:49 ] textBox1 の「1」の部分に変数を使いたいのですが 方法が分かりません ><
923 名前:デフォルトの名無しさん mailto:sage [2009/02/16(月) 10:30:44 ] フォーム?MFC?
924 名前:デフォルトの名無しさん [2009/02/16(月) 10:32:33 ] フォームです
925 名前:デフォルトの名無しさん [2009/02/16(月) 11:07:02 ] >>908-910 すげぇ、、、 説明がすぅっと頭に入ってきました。 Win32の達人の方ですね。
926 名前:デフォルトの名無しさん mailto:sage [2009/02/16(月) 11:07:29 ] array<System::Windows::Forms::TextBox^>^ textBox; でメンバー持っておいて、 this->textBox = gcnew array<System::Windows::Forms::TextBox^>(2); してから this->textBox[0] = textBox1; this->textBox[1] = textBox2; するとか。
927 名前:デフォルトの名無しさん mailto:sage [2009/02/16(月) 11:17:47 ] >>926 うーむ。なるほど ここに、変数を使うのは、あまり一般的ではないですか?
928 名前:デフォルトの名無しさん [2009/02/16(月) 11:25:13 ] >>926 あ。ありがとうございました!
929 名前:デフォルトの名無しさん mailto:sage [2009/02/16(月) 17:37:54 ] Visual C++ 6.0 Windoes XP Pro SP3 を使用しています。 グローバルに構造体を作って、クラス内でexturnをしようすると、 exturnのところでエラーが出て怒られてしまいます。 グローバルでの定義部分ではエラーは出てないものの、ちゃんと出来ているかも正直怪しいかもしれません。 何か良い方法は無いでしょうか?
930 名前:デフォルトの名無しさん mailto:sage [2009/02/16(月) 17:38:16 ] Visual C++ 6.0 Windoes XP Pro SP3 を使用しています。 グローバルに構造体を作って、クラス内でexturnをしようすると、 exturnのところでエラーが出て怒られてしまいます。 グローバルでの定義部分ではエラーは出てないものの、ちゃんと出来ているかも正直怪しいかもしれません。 何か良い方法は無いでしょうか?
931 名前:デフォルトの名無しさん mailto:sage [2009/02/16(月) 17:39:04 ] すいません、二重書き込みしてしまいました…
932 名前:デフォルトの名無しさん mailto:sage [2009/02/16(月) 17:41:01 ] しかもexternだろw 言いたいことがよくわからん。 どんなコードなんだ?
933 名前:デフォルトの名無しさん mailto:sage [2009/02/16(月) 18:10:00 ] >>932 すいません、externでした。 グローバルに struct st{ char id[ID_SIZE]; char name[NAME_SIZE]; struct st *next; }; と定義して、それをクラスAやクラスBで extern struct st{ char id[ID_SIZE]; char name[NAME_SIZE]; struct st *next; }; とすると、まず「空白の宣言が見つかりました。」というエラーが出て止まってしまいます。 拙い説明で申し訳ないです。
934 名前:デフォルトの名無しさん mailto:sage [2009/02/16(月) 18:23:03 ] まだわかんねー。 何がやりたいんだ。 構造体の定義と、変数の宣言とその変数のextern宣言が必要だが、そもそも変数(実体)がない。
935 名前:デフォルトの名無しさん [2009/02/16(月) 18:29:52 ] #include "st.h" でいいんじゃないの?何がしたいのかまったくもってわからない。
936 名前:デフォルトの名無しさん mailto:sage [2009/02/16(月) 18:30:27 ] ageスマソ
937 名前:デフォルトの名無しさん mailto:sage [2009/02/16(月) 19:10:08 ] externでぐぐるぐらいしてから来たらいかがですかね 定義、宣言、参照について全く理解していない気がします。
938 名前:デフォルトの名無しさん mailto:sage [2009/02/16(月) 19:10:14 ] グローバルに構造体の型を宣言しています。 さらに、実体もグローバルに定義しています。 実体に値が入っていて、 その値をスレッド内でグローバルで定義した実体を通して 参照したいです。 グローバル変数を使う知識として、 externを付けることは知っているのですが、 そもそも、スレッド内からグローバルに定義した 構造体にアクセスできるかどうかわかりません。 何か方法がありましたら、教えてください。 >>935 やってみたのですが、そのようなヘッダはありませんと怒られてしまいました。
939 名前:デフォルトの名無しさん mailto:sage [2009/02/16(月) 19:14:55 ] あと、拙い説明にもかかわらず ご返事いただきありがとうございます。 >>937 結構ぐぐったのですが私の理解力が足らず申し訳ございません・・・
940 名前:935 mailto:sage [2009/02/16(月) 19:15:48 ] // FILE : st.h struct st { ... }; extern st g_st; // FILE : st.cpp #incluede "st.h" st g_st; // FILE : a.h #include "st.h" class A { ... }; ってことね。とりあえず何を参考に勉強してるのかしりたい。
941 名前:デフォルトの名無しさん [2009/02/16(月) 20:08:02 ] すいません、聞きたいのですが。。。 Windowsファームアプリケーションを作成したのですが、ほかのPCで動作しません。 「このアプリケーションの構成が正しく・・・」と表示されます。 リリースコンパイルもしましたが動きません。 「プロパティ」の「C++」の「コード生成」の「ランタイムライブラリ」を「マルチスレッド」にすると、コンパイルすることができません。 いったいどうすれば動くのでしょうか? ほかのPCに、ランタイムを入れない方法を探しています。 お願いします。
942 名前:デフォルトの名無しさん mailto:sage [2009/02/16(月) 20:34:19 ] >>941 ×ファーム ○フォーム 純粋なWin32アプリや標準ライブラリだけを使うコンソールアプリなら ライブラリを静的にリンクすればよいと思うけど、 Windowsフォームアプリケーションでランライムに依存しないのは無理じゃないの?
943 名前:デフォルトの名無しさん mailto:sage [2009/02/16(月) 21:04:01 ] > Windowsファームアプリケーション C++/CLIだったりして・・・。そのPC、.netframework入れてないとかw
944 名前:デフォルトの名無しさん mailto:sage [2009/02/17(火) 07:42:27 ] >>941 >ランタイムを入れない方法を探しています。 無理 フォームアプリはランタイム(.NET Framwork)必須
945 名前:デフォルトの名無しさん mailto:sage [2009/02/17(火) 11:57:12 ] いろいろ試した結果、パスに日本語が入ってると読み込めないようです どうすれば読み込めるようになりますか? char fname[] = "C:\\テスト\\test.txt"; ifstream fin; fin.open(fname); char c; while (fin.get(c)) { printf("%c", c); } fin.close(); if (getch()) return 0;
946 名前:デフォルトの名無しさん mailto:sage [2009/02/17(火) 12:42:13 ] locale設定した?
947 名前:デフォルトの名無しさん mailto:sage [2009/02/17(火) 13:04:17 ] setlocale(LC_ALL, "japanese"); ifstream fin; こうすれば読み込めるようになりました、ありがとうございます
948 名前:デフォルトの名無しさん mailto:sage [2009/02/17(火) 18:05:29 ] 先物の夕場は証券自己とかの約定させる気のない発注・取り消しに個人が振り回されて 値がついてる感じだな
949 名前:デフォルトの名無しさん [2009/02/18(水) 00:28:05 ] VC++とVB&C#の違いは大まかに言うと オブジェクト->プロパティ オブジェクト.プロパティ という理解でいいんでしょうか?
950 名前:デフォルトの名無しさん mailto:sage [2009/02/18(水) 00:29:58 ] 出直して来い
951 名前:デフォルトの名無しさん mailto:sage [2009/02/18(水) 00:32:44 ] すごい理解
952 名前:デフォルトの名無しさん mailto:sage [2009/02/18(水) 15:46:47 ] >>949 親読んでこい 説教してやる
953 名前:デフォルトの名無しさん [2009/02/18(水) 17:59:43 ] VC++ 2005ExpressEditionでWin32アプリ作ってます。 int WINAPI WinMain( HINSTANCE hi, HINSTANCE hip, LPSTR sc, int ic ) { MSG Msg; char *str; memset( &Msg, 0, sizeof( MSG ) ); return ( int )Msg.wParam; } strが0xcccccccc<不適切なPtr>となるのはなぜですか。 C++ならstring使えっていう事なんですか?
954 名前:デフォルトの名無しさん mailto:sage [2009/02/18(水) 18:01:33 ] 何が疑問なのかわからん。 そのstrは単に初期化してないポインタだからそのままじゃ使えないだろう。
955 名前:デフォルトの名無しさん mailto:sage [2009/02/18(水) 18:02:27 ] strが初期化されていないから不定値。 デバッグ時に0xccで埋められてるだけ。 実際にアプリケーションを動かすと、不定値。 char *str = NULL; とかで初期化する。
956 名前:デフォルトの名無しさん [2009/02/18(水) 18:10:20 ] なるほど。 newしてあげれば不適切Ptrではなくなるんですね。 ありがとうございます。 あのぉ。。。もひとつ疑問がでちゃったんですが、いいですか? newして例外出てんのに期待通りの動作してるのはなぜですか これが解決できたら1年ぐらいROMしときます。
957 名前:デフォルトの名無しさん mailto:sage [2009/02/18(水) 18:26:16 ] 例外の内容によるでしょう。 具体的にコード出してこういう例外が出たと書いてくれないとわからんよ。
958 名前:デフォルトの名無しさん mailto:sage [2009/02/18(水) 18:35:51 ] >>956 >newしてあげれば不適切Ptrではなくなるんですね。 なんもわかってねぇじゃん まず、入門書と紙と鉛筆用意して全文書き取りからはじめたほうがいいぞ
959 名前:デフォルトの名無しさん [2009/02/18(水) 19:22:49 ] すいません。3日かかってどうしても直らないエラーがあるので教えて下さい。 ビルドすると、 fatal error C1083: include ファイルを開けません。'afxwin.h': No such file or directory e:\visual studio 2005\projects\キャプチャ\irsystem\stdafx.h 43 というエラーが出ます。 環境は Visual Studio 2005 Professional Edition sp1 OS:Vistaです。 Visual Stadio Professionalかつフルインストールしているので、 MFCが入っているはずなのですがどうしても動きません。 どなたかわかる方いらっしゃいますでしょうか。 わかる方がいましたら教えて下さい。
960 名前:デフォルトの名無しさん mailto:sage [2009/02/18(水) 19:42:35 ] >>959 うーん、なんかVC2008eeででるんと同じようなエラー内容だなぁ・・・ なんか設定する必要あんのかな?
961 名前:デフォルトの名無しさん mailto:sage [2009/02/18(水) 19:43:35 ] そのinclude文のとこ右クリックして開いてみ それで見つからないならインクルードパスの設定すればいい
962 名前:デフォルトの名無しさん mailto:sage [2009/02/18(水) 19:52:04 ] ツール - オプション - プロジェクト - VC++ ディレクトリ で 「インクルード ファイル」の設定内容をチェック バージョンの違いでちょっと文言が違う鴨試練
963 名前:デフォルトの名無しさん mailto:sage [2009/02/18(水) 20:03:24 ] support.microsoft.com/kb/320479/ja これかなぁ・・・なんか違う?
964 名前:デフォルトの名無しさん mailto:sage [2009/02/18(水) 20:25:58 ] ライブラリのパスの直下のlibファイルはリンクできるのですが、 サブディレクトリのlibファイルは、下記のようにはリンクできないのですか? OK #pragma comment(lib, "mylib.lib") NG #pragma comment(lib, "lib/mylib2.lib")
965 名前:デフォルトの名無しさん [2009/02/18(水) 21:48:11 ] hhj
966 名前:デフォルトの名無しさん mailto:sage [2009/02/18(水) 22:07:10 ] #pragma comment(lib, "lib\\mylib2.lib")
967 名前:964 mailto:sage [2009/02/18(水) 23:03:19 ] 966 もちろんディレクトリ区切りを\\にしてもだめでした。 それにフルパスで記述したときに/で通るので、多分原因はそこではないと思います。 #pragma commentでライブラリファイルを指定するときに、サブディレクトリ内もちゃんと見るんですよね。 とりあえずそこの確認がほしいのです。
968 名前:デフォルトの名無しさん mailto:sage [2009/02/18(水) 23:24:34 ] 自分のプログラムとしてはなんかlibに関してはプロジェクトに追加してるかどうかだなぁw ヘッダ読んでpraguma云々の記述はlibファイルなんかねーとこ指してるけど動いてるw って状況やってみそ ヘッダとlibファイルのプロジェクトへの追加な
969 名前:デフォルトの名無しさん mailto:sage [2009/02/18(水) 23:40:56 ] ./hoge/lib.lib とかでもダメぽ?
970 名前:964 mailto:sage [2009/02/19(木) 00:17:33 ] ファイルの階層はこんな感じです。 C:\MyLibrary ←VC++ディレクトリ-ライブラリとインクルードの一番上で指定。 mylib.lib lib mylib.h (#include <lib/mylib.h>は失敗しない) mylib.lib (上では区別のためにmylib2.libと書いたけど、コピーしたもの) プロジェクト-リンカ-追加の依存ファイルで指定しても 1>LINK : fatal error LNK1104: ファイル 'lib/mylib.lib' を開くことができません。 と出ます。 ./lib/mylib.libも同様にpragma でも依存ファイルの指定でも失敗しますorz
971 名前:デフォルトの名無しさん mailto:sage [2009/02/19(木) 01:19:58 ] まさか、lib\\mylib.h のなかに #pragma comment(lib, "lib/mylib.lib") って書いている わけじゃないだろーな
972 名前:デフォルトの名無しさん mailto:sage [2009/02/19(木) 01:23:57 ] コンパイルしようとしてるソースファイルはどこなんだよ
973 名前:デフォルトの名無しさん mailto:sage [2009/02/19(木) 02:03:28 ] // main.cpp // マイドキュメント-VS2008-Projects/Test/Test // = プロジェクトディレクトリ #include <lib/mylib.h> // OK #pragma comment(lib, "lib/mylib.lib") // NG //#pragma comment(lib, "C:/MyLib/lib/mylib.lib") // OK //#pragma comment(lib, "mylib.lib") // OKだけど違うファイル int main() { const int ret = test_func(2); return 0; } // mylib.h #pragma once int test_func(int val); //mylib.cpp #include "mylib.h" int test_func(int val) { return val * 100; } 改行を削るとこのような感じになります。 コンパイルすると970のエラーメッセージが出ます。。。 もう遅いし、解決できそうにないのであきらめてフルパスで書くことにします。 ありがとうございました。
974 名前:デフォルトの名無しさん mailto:sage [2009/02/19(木) 02:41:48 ] 同名の違うファイルにパスが通ってるのも問題じゃないか
975 名前:デフォルトの名無しさん mailto:sage [2009/02/19(木) 03:16:25 ] つーか、自前のlibなら、#pragma comment(lib, "ほにゃらら")は ヘッダに書けよ。 したら、cpp にゃ、ヘッダをインクルードするだけで済むだろーが。 じゃないと、他のプロジェクトで mylib.h を使いまわす時に、lib をリンクし忘れるのがオチだ。
976 名前:デフォルトの名無しさん mailto:sage [2009/02/19(木) 05:36:29 ] >>970 あるよ。 以上。 ↓次の方どうぞ
977 名前:デフォルトの名無しさん mailto:sage [2009/02/19(木) 11:22:48 ] >>926 このコードの真ん中って、「this->」いらなくない?
978 名前:デフォルトの名無しさん mailto:sage [2009/02/19(木) 11:24:50 ] >>977 TextBoxと紛らわしかったので、説明上念のためつけただけ。
979 名前:デフォルトの名無しさん mailto:sage [2009/02/19(木) 11:28:08 ] >>978 いや、エラーになるでしょ
980 名前:デフォルトの名無しさん mailto:sage [2009/02/19(木) 11:36:27 ] >>978 array<System::Windows::Forms::TextBox^>^ textBox; ↑ ひょっとして、これだけ、違うところに記述するんですか?
981 名前:デフォルトの名無しさん mailto:sage [2009/02/19(木) 11:39:54 ] 同じメソッド内に書いたらそこでしか使えないじゃない。 まあそれで済むならそれでいいけど。
982 名前:デフォルトの名無しさん mailto:sage [2009/02/19(木) 11:50:06 ] >>981 すみません。いけました。 ありがとうございます
983 名前:デフォルトの名無しさん mailto:sage [2009/02/19(木) 20:52:20 ]