1 名前:デフォルトの名無しさん mailto:sage [2008/10/31(金) 12:16:11 ] Visual C++入門者・初心者からの質問を、 お兄ちゃんお姉ちゃん達が優しく、時には厳しく回答してくれるスレッドです。 ■質問するにあたって ・エラーや警告のときはエラーメッセージを書きましょう。 ・開発環境も書きましょう、特にWindowsForm、MFC、Win32アプリケーションの区別。 ・できるだけ具体的に。 質問の仕方については次のページが大変参考になります。 www.hyuki.com/writing/techask.html ■回答するにあたって ・回答する場合はその答えに至るための「コツ」も書いてあげると良いでしょう。 (MSDNのどの項目だとか、何のキーワードでGoogleするとか) ・ネタや煽りは軽く流しましょう。 過去スレ、関連スレなどは>>2-5 辺り。
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 ]