1 名前:デフォルトの名無しさん [2008/05/07(水) 23:33:53 ] Visual C++入門者・初心者からの質問を、 お兄ちゃんお姉ちゃん達が優しく、時には厳しく回答してくれるスレッドです。 ■質問するにあたって ・エラーや警告のときはエラーメッセージを書きましょう。 ・開発環境も書きましょう。 ・できるだけ具体的に。 質問の仕方については次のページが大変参考になります。 www.hyuki.com/writing/techask.html myu.daa.jp/osiete/ ■回答するにあたって ・回答する場合はその答えに至るための「コツ」も書いてあげると良いでしょう。 (MSDNのどの項目だとか、何のキーワードでGoogleするとか) ・ネタや煽りは軽く流しましょう。 過去スレ、関連スレなどは>>2-5 辺り。
129 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 12:45:33 ] APIって関数がまとまったものの名称だから Windowsの関数と言っても問題なし。
130 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 13:58:26 ] インターフェースと関数は違うだろ
131 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 23:08:16 ] 正式な言い方はWin32APIだろうな。 またWin32APIには関数だけじゃなくて型の定義なども含まれると認識している。
132 名前:デフォルトの名無しさん mailto:sage [2008/05/18(日) 08:38:29 ] >>128 .netだと売れないってこと?
133 名前:デフォルトの名無しさん mailto:sage [2008/05/18(日) 08:54:50 ] .netで作られたアプリを実行するには ユーザが.net Frameworkを用意しなくちゃ行けない でも、そういうのを用意できるユーザってどのくらいいるのよと
134 名前:デフォルトの名無しさん mailto:sage [2008/05/18(日) 09:32:16 ] 商品名に.netがつかなくなっただけで中味は今まで通り.net対応 MSとしては.netを一押ししたいから無償配布のExpressなんかは デフォルトだと.netのプログラムを作るようになっている
135 名前:デフォルトの名無しさん mailto:sage [2008/05/18(日) 13:20:03 ] >>133 Windowsユーザーのほとんどだろうね。
136 名前:デフォルトの名無しさん mailto:sage [2008/05/18(日) 13:26:43 ] 論理的には導入できるけど .net?なにそれ?ってインストールもできない初心者がいて困る ってことを言いたいのかと思われ インストールできるけどヘンなランタイムとか要らないから却下 とかいう自称玄人もいるから困るといいたいのかと思われ Vistaなら標準で3.5入ってるってから期待してたんだけど あの体たらくだしなぁ
137 名前:デフォルトの名無しさん mailto:sage [2008/05/18(日) 16:37:13 ] updateで自動的に.NET入らないんだっけ?
138 名前:デフォルトの名無しさん mailto:sage [2008/05/18(日) 17:22:29 ] >>137 商用アプリの顧客は必ずしも、自動updateに任せっ切りじゃないからなあ。 仮想化とか、ローカルストレージ無しの方向に行ってるんで、今後の大規模.NET アプリはサービス提供の方向と踏んでる。
139 名前:デフォルトの名無しさん mailto:sage [2008/05/19(月) 10:59:41 ] VBも最初はruntimeの絡みで滅茶苦茶な評価だったことを思い出せば、OSの 世代交代さえ順調に進めば.NET FRAMEWORKの配布は問題じゃなくなるんだろう。 ただね、肝心のOSの世代交代がね。どうもね。 MSがVISTAへの交代より.NET FRAMEWORKへの移行を重要と位置づけて、SPで .NET FRAMEWORKとSuper Fetchを配っちまえば話は早いのにと思わないでもない。
140 名前:デフォルトの名無しさん mailto:sage [2008/05/19(月) 13:58:44 ] その辺コミコミのVistaだろ ま、失敗してるが
141 名前:デフォルトの名無しさん mailto:sage [2008/05/19(月) 14:40:09 ] >>138 一般ユーザのことだと思うぞ
142 名前:デフォルトの名無しさん [2008/05/20(火) 18:52:41 ] すみません。VisualC++6.0でコンボボックスを使用しているのですが、 リソースエディタでコンボボックスを右クリックしてプロパティで 項目の入力っていう欄があるんです。そこに項目を並べたいんですが、 どのようにならべればいいんですか? 並べたいデータは、 北海道、本州、四国、九州、その他 の5つです。 よろしく><;
143 名前:デフォルトの名無しさん mailto:sage [2008/05/20(火) 20:18:55 ] コード書かなあかんよ
144 名前:デフォルトの名無しさん mailto:sage [2008/05/20(火) 20:31:06 ] 沖ノ鳥島を忘れないであげてください
145 名前:デフォルトの名無しさん mailto:sage [2008/05/20(火) 21:28:44 ] ちゃんと竹島(日本領)も入れとけよ。
146 名前:デフォルトの名無しさん mailto:sage [2008/05/20(火) 21:37:11 ] つ 南樺太&千島列島
147 名前:デフォルトの名無しさん mailto:sage [2008/05/20(火) 21:51:37 ] 質問です VC++2008で、親フォームから呼び出した子フォームを非アクティブにする方法で ShowWithoutActivation を使うと良いと言うのは分かったのですが、プロテクトプロパティなので、簡単に 変更が出来ません。 変更の仕方or別の方法、を教えてください
148 名前:デフォルトの名無しさん mailto:sage [2008/05/20(火) 22:36:03 ] 子フォームを実装しているクラスでパブリックに実装するとか。 とりあえずリフレクションとか。 というか、C++/CLIだよな?
149 名前:デフォルトの名無しさん mailto:sage [2008/05/20(火) 22:53:51 ] ええと、なにぶん知識が浅いので ^ と * ←を使い分けや gcnew をつかってるのでC++/CLIのはずです
150 名前:デフォルトの名無しさん [2008/05/20(火) 23:29:33 ] ○青春のスポーツテスト準備編 場面は中学2年時。僕は運動音痴だ。 明日はスポーツテストだ。僕はみなに押し付けられて、学校の授業後に ライン引きをやっていた。僕のほかには女子のヤンキーぽい生徒が2人だ。 なぜ、こんな連中が仕事をしているかと思えば、退屈だし面白そうだから という話だ。 50m走のラインを引き終えると、ヤンキー女子の2人が走ってみようと言い出し2人は走っていた。「あ〜、つかれた〜」といいながら座っている。でも満足げだ。 しばらくすると、「おい、おまえも走れよ!」といいだし、ぎゃあぎゃあ騒いでいる。 僕は運動音痴なので走り方もおかしいからひどく嫌だったが、後がこわいので走ることにした。 よ〜いどんで思い切り走ってみる。しかし、女子2人は大声で笑い転げている。 僕は必死で走ろうと思えば思うほど、フォームが乱れるのがよくわかる。 どうしようもなく恥ずかしい。。しかし、次の瞬間転んでしまった。 女子2人は寄ってきて僕をからかう。そのとき、思春期にありがちな突如の勃起が襲ってきた。 どうしようもなく半ズボンがテントを張っている。 「キャー、こいつ何?興奮してるの?言葉攻め?」 僕はもうどうしようもなく恥ずかしかった。しかし、女子はすでになんらかの経験済みらしく、 慣れている様子で「おい、どうしたんだよ?」とかいいながら僕のナニをけったりしてくる。 僕はとまどいながらも恥ずかしさをぐっとこらえていた。 その後も「運動は音痴だけど、こっちはすげえじゃん」とかいってぎゃーぎゃー騒いでいる。 その後、10分くらいたって、あきたのか笑いつかれて2人は帰っていった。 僕は恥ずかしさと何がなんだかわからないままドキドキしてしょうがなかった。もう何もかんがえるどころではなく、ただうろたえるだけの時間だった。 2人が帰った後、ようやく帰ったかと自分を取り戻す事ができた。しかし その直後、ドクドクしたものが出てきた。僕の初射精だ。その後もあわてたことはいうまでもない。
151 名前:デフォルトの名無しさん mailto:sage [2008/05/20(火) 23:33:41 ] fatal error C1083: include ファイルを開けません。'iostream.h': No such file or directory このエラーが出てコンパイルできません。どうすればいいか教えてください。 バージョンはVC++ 2008 EEです。 後、一応参考になりそうなサイトで調べてVC++のディレクトリに下記のパスを追加している状態です C:\Program Files\Microsoft Visual Studio 9.0\MSDN Express Library コンパイルしようとしているソース #include <iostream.h> void main() { char ss[80]; cout << "何か入力してください"; cin >> ss; cout << "入力は[" << ss << "]です\n"; }
152 名前:デフォルトの名無しさん [2008/05/20(火) 23:36:21 ] すみません。今日も質問させてください。 visual c++ 2008 Expressでwindowsフォームアプリケーションを作成しています。 ビルドしたexeを他の人のマシンで起動しようとすると、 >このアプリケーションの構成が正しくないため、アプリケーションを開始できませんでした。 と出て起動できませんでした。 色々調べた結果、以下のとおり解釈しました。 @visual studioがインストールされていない環境で動かすには 静的リンクでコンパイルする必要がある。 Awindowsフォームアプリケーション(でデザイナからレイアウトしているような場合) では静的リンクは不可能 Bwindowsフォームアプリケーションでしかデザイナは使えない Cデザイナが使えない場合、手打ちで「上からxピクセル。。。」と コーディングしていくしかない 質問ですが、上記解釈は正しいでしょうか。 ほんのちょっと上のレスでそれらしいやりとりが見受けられましたが、 自分の思っているソレの話のことなのか、いまいち自信がないので、 ご回答のほどよろしくお願いします。
153 名前:デフォルトの名無しさん mailto:sage [2008/05/20(火) 23:44:15 ] >>151 そのサイトは残念ながら参考にならない。 そのソースは古くて、現代C++では通用しない。 #include <iostream> int main() { char ss[80]; std::cout << "何か入力してください"; std::cin >> ss; std::cout << "入力は[" << ss << "]です" << std::endl; }
154 名前:デフォルトの名無しさん mailto:sage [2008/05/20(火) 23:48:36 ] >>152 フォームアプリケーションなら相手のPCに.NET Frameworkを入れればいけるはず。 VS 2008だから.NET Framework 3.5だ。 たとえデザイナを使わなかったとしても、 .NET Frameworkを使うC++/CLIアプリケーションである限り 静的リンクはできない。 それにVSが無い環境で使えないなんて使い物にならない機能が わざわざ用意されているはずがない。正規の手順でランタイムを用意すれば、 VSがない環境でもVC++プログラムは実行できる。
155 名前:デフォルトの名無しさん mailto:sage [2008/05/20(火) 23:52:26 ] VC++初心者です。 GUIの部分は、.NET Framework を使って書いて、 内部的な(例えば)通信の部分は、Win32API で書くってできます? できたとしたら、それは邪道ですか?
156 名前:デフォルトの名無しさん mailto:sage [2008/05/20(火) 23:57:42 ] 全然問題ない。 むしろそういうことができるのがVC++の強み。
157 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 00:06:11 ] >>156 ありがとうございます。 そうですか、楽できるとこは楽したかったんです。 MFCも少し勉強し始めてたんですが、中断して C++/CLI の方をやります。
158 名前:デフォルトの名無しさん [2008/05/21(水) 00:08:45 ] >>154 レスありがとうございます。 >フォームアプリケーションなら相手のPCに.NET Frameworkを入れればいけるはず。 >VS 2008だから.NET Framework 3.5だ。 >>133-138 の流れを見るに、 相手のPCに.NET Frameworkが入っていることを期待するのを 期待してはいけない、という流れに繋がるという、と理解して正しいでしょうか。。。 >正規の手順でランタイムを用意すれば、 www.microsoft.com/downloads/details.aspx?displaylang=ja&FamilyID=9b2da534-3e03-4391-8a4d-074b9f2bc1bf こちらですね。ご親切にありがとうございます。 まだ詳しく見ていませんが、 これを私がインストールするわけではなく、 相手のPCにインストールしてもらう、という認識でよろしいでしょうか (煩わしい質問であれば、明日にでも詳しく調べますので返信は不要です) だとすると、.NET Frameworkの軽いVer、というイメージですかね。。。 数年前に「使用するにはVBxxランタイムが必要です」といった アプリを見た記憶があります。 それくらいなら、普通に導入してもらえそうですね。 本当に、ありがとうございました。
159 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 00:21:51 ] >>153 ありがとうございます!コンパイルできました! 本が古すぎたんですね・・・たしかに今見たら98年出版の本でした 後せっかくなので参考にお聞きしたいんですが、追加記述された std:: と std::endl;っていうのは なんなのでしょうか?最初は変数の前に付けるものといった、約束事みたいな感じで覚えておけばいいのでしょうか?
160 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 00:34:40 ] 98年と言えばISOでC++標準が最初に出た年。 endlは結構古くからあったと思うけど、 '\n'の出力に加えバッファのフラッシュを行うもの。 だから時と場合によって\nを直接使うこともある。 どっちにするかはケースバイケース。 std::は名前空間という機能によるもの。 詳しく知りたければ、ググってもいいし、最近の本なら書いているだろうし。
161 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 00:40:01 ] なるほど、とりあえず最近の本買ってみます 親切にありがとうございました!
162 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 00:46:13 ] >>161 その程度ならググれ。 良い本を探すのは難しい。
163 名前:デフォルトの名無しさん [2008/05/21(水) 12:01:42 ] visual studio 2005のWindowsフォームアプリケーションで作成中です。 文字列の分割がうまくいきません。 String^ data0 = "a/b/c"; wchar_t separator = '/'; array<String^>^ data1 = data0->Split(separator, StringSplitOptions::None); 結果的には配列data1にdata0の要素を格納したいのですが、このやり方ではうまくいきません。 どなたかご教示願いませんでしょうか?
164 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 12:55:49 ] >>163 ttp://msdn.microsoft.com/ja-jp/library/ms131448.aspx 最初の引数は文字じゃなくて、文字の配列だぜ。
165 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 13:12:24 ] >>164 ご指摘ありがとうございます。 無事解決しました。
166 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 21:18:51 ] >158 それをC++のランタイムなので、それで解決できるなら、静的リンクもできるという話。 C++/CLI、Form使ってるというなら、 www.microsoft.com/downloads/details.aspx?familyid=333325FD-AE52-4E35-B531-508D977D32A6&displaylang=ja こっちを再配布しないとイケナイ。
167 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 22:07:04 ] VC2003 を使っています。 STLのvectorを参考に、自前のクラスにイテレーターっぽい機能を付けてみようとして、 行き詰まっています。 以下のようなコードを書いているのですが、begin() がインライン展開されません。 vectorのbegin() はインライン展開されているみたいで、何が違うのか分からないです。 class B { public: A* aa; class iterator : public std::iterator<std::random_access_iterator_tag, double, ptrdiff_t, double*, double> { A* a; public: iterator( A* _a ) : a( _a ) { }; ~iterator( void ) { }; }; B( void ) : aa( NULL ) {}; ~B( void ){}; iterator begin() { return( iterator( aa ) ); }; };
168 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 23:35:23 ] 【初心者歓迎】C/C++室 Ver.54【環境依存OK】 pc11.2ch.net/test/read.cgi/tech/1210694402/
169 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 23:40:38 ] >>167 まさか何の最適化オプションも指定していないなんてことはないよな。
170 名前:デフォルトの名無しさん [2008/05/22(木) 10:59:46 ] VC++2008EEでツールチップを表示するにはどうしたら良いのでしょうか。 ググってもMFCのCToolTipCtrlしかヒットしません。 例えばステータスバーに収まり切らない文字列を表示したいのです。 .NETで例えるなら statusStrip1.ShowItemToolTips = true; に相当する処理です。
171 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 11:09:18 ] >>170 ttp://msdn.microsoft.com/en-us/library/bb760246.aspx
172 名前:デフォルトの名無しさん [2008/05/22(木) 15:30:07 ] >>171 ありがとうございます、取敢えずツールチップを表示する事は出来ました。 MFCの解説もエミュレートしているものは参考になりました。 まだステータスバーの位置のみで表示出来ませんが、もう少し頑張ってみます。 LRESULT CALLBACK WndProc(HWND hWnd, UINT msg, WPARAM wp, LPARAM lp) { static HWND hTooltip; static TOOLINFO ti; switch (msg) { case WM_CREATE: InitCommonControls(); hTooltip = CreateWindowEx(0, TOOLTIPS_CLASS, NULL, TTS_BALLOON, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, hWnd, NULL, g_hInst, NULL); GetClientRect(hWnd, &ti.rect); ti.cbSize = sizeof(TOOLINFO); ti.uFlags = TTF_SUBCLASS; ti.hwnd = hWnd; ti.lpszText = L"ツールチップのテスト"; SendMessage(hTooltip, TTM_ADDTOOL, 0, (LPARAM)&ti); SendMessage(hTooltip, TTM_SETTITLE, TTI_INFO, (LPARAM)L"タイトル"); SendMessage(hTooltip, TTM_SETTIPBKCOLOR, (WPARAM)RGB(221, 238, 255), 0); (後略)
173 名前:デフォルトの名無しさん [2008/05/22(木) 17:05:34 ] visual studio 2005のWindowsフォームアプリケーションで作成中です。 textBoxに入力制限をさせたいのですが、やり方がわかりません。 パスワードを入力するときみたいに、入力された文字が強制的に半角英数字になるように 設定させるにはどうしたら良いのでしょうか? どなたかお願いします。
174 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 17:35:48 ] 変化があったタイミングで読んで変換する
175 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 17:47:34 ] >>173 プロパティのPasswordCharの項目に*
176 名前:175 mailto:sage [2008/05/22(木) 17:48:21 ] ああ、半角英数字か・・・ ゴメンゴメン。忘れて
177 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 18:46:22 ] IMEをOFFにするか自分でキー入力読む
178 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 19:46:30 ] 作りたいプログラムがあり、何か言語を習得しようかと考えています 過去にまともなものをプログラムした経験はほとんどなく HSPでぷよぷよの模写を遊びで作ったことがある程度です 言語としてはCOBOLやC++をかじった程度ポインタなどは概念を踏まえて あるていど辞書を引きながら書くことはできます。 プログラムに関する技量などは自分で調べたりしながら向上させていこうと思っているのですが 何を本格的に勉強しようか悩みTurbo DelphiかVC++で行こうと考えて とりあえずVC++2008無償を入れてみたのですが 初めて扱う上に初めての開発環境でソフトの機能や基本的な使い方を習得するだけで挫けそうです VC++の勉強サイトなどをみても2008の環境で説明されている所が見つけられず 新規ファイルを作る段階でさえCLTとWin32の詳細な意味を調べてテンプレート形式もそれぞれ調べて… 書こうと思ってもサイトで提示されている項目が無いたびに色々調べたり プログラムを書く時間よりもやりたいことをする手順なんかで悩んでる時間のほうが長いです 開発環境2008で勉強できるところは無いでしょうか_| ̄|○ il||li
179 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 20:29:33 ] 何を作りたいの? HSPでぷよぷよ作れたなら結構スキルはあるんじゃない?
180 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 20:54:02 ] おとなしくVC++2005とかBC++にしておけば? 今なら腐るほど解説ページあるぞ
181 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 21:00:43 ] 対象ウィンドウ内の詳細なデータを調べて 仮想でウィンドウの模写的なもの(できるだけの機能を残して)を作ることは出来ないかなと ただ深く追求していくとプロセスメモリへのアクセスなどクラックの分野になってくるのかな?と思って… CでもC++でもDelphiでもjavaなんでも他に使いやすい初心者向きのテキストエディタあるやろって話なんですが 覚えたころにはもう使われてませんでしたでは話にならないのでVc++にしようかなぁ…と… ごめんなさい取り説よめでFAでしたね_| ̄|○ il||li
182 名前:178 mailto:sage [2008/05/22(木) 21:12:22 ] ↑178です >>180 レス感謝 win32API使うならCやC++がよさそうなので他のバージョンなりなんなり探してきます そしておとなしくします! さようなら2008 ( ´・ω・`)ノ~
183 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 21:34:20 ] 物凄く不適切な回答を見た。
184 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 23:17:07 ] VC++2008EEとVC++2005EEってそんなに違うものなの?
185 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 23:35:40 ] 両方使ったけど、ほとんど何も変わってない。
186 名前:デフォルトの名無しさん [2008/05/22(木) 23:40:54 ] すみません。今Win32API勉強してるんですが、 WM_INITMENUが呼ばれるタイミングっていうのはどういうタイミングで呼ばれるのですか? たとえばWM_PAINTは、Windowが隠れたりして再描画が必要なときに呼ばれるみたいですが WM_INITMENUの呼ばれるタイミングがわかりません。 よろしくお願いします。
187 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 23:50:39 ] いえいえこちらこそよろしくお願いします。
188 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 23:52:24 ] >>169 Releaseビルドでやってるっす。最適化オプションはO2ですね。 vectorのヘッダーを丸ごとコピーして適当に名前を変えてクラスにしたら、 ちゃんとインライン展開されてるようで。どこがキーなのか分かりません。
189 名前:186 mailto:sage [2008/05/23(金) 00:07:38 ] すません。ぐぐったら出てきました。 自己解決です。スレ汚しすません。
190 名前:173 mailto:sage [2008/05/23(金) 00:35:01 ] >>177 IMEをDisableにしたら狙った通りに動いてくれました。 ご指摘ありがとうございました。
191 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 02:29:00 ] >>186 トレースでもしりゃわかるよ
192 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 02:41:05 ] >>188 templateでかけば普通インライン展開されるんじゃなかったけ
193 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 08:24:12 ] VC++2003EEとVC++2005EE は結構違うよね
194 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 09:04:21 ] エンタープライズだろ
195 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 09:10:18 ] なんだ2005よりインストール楽になってるじゃないか これで挫折するんじゃ救いようがないな ja.wikipedia.org/wiki/Microsoft_Visual_C%2B%2B Visual C++ 2008 Express Edition Visual C++ 2005 Express Editionに続き2007年12月18日から公開されている。 ATLやMFCが付属しない点はVisual C++ 2005 Express Editionと同じであるが、 Windows Platform SDKが標準で同梱されるようになり、 Win32アプリケーションの開発に必要なWindows SDKを別途用意する必要がなくなった。
196 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 09:14:23 ] ・言語の仕様 ・Windowsの仕様 ・IDEの使い方 結局これらがわからないとダメなんじゃない?
197 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 09:17:37 ] 2005と2008だと、細かなところで2008の方が使いやすいな。 俺はInteliSenceで隠れたところがCtrlキーを押すと半透明になるのが一番 便利だな。
198 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 10:58:15 ] >>197 知らんかった
199 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 13:18:18 ] VC++2005AE購入・インストール済みで、2008EEを入れたんですが、 VC++2008版のATL・MFCは、2005の時のものと大きな差がありますか? 2008EEから2005のMFC・ATL使うと何か弊害が考えられるでしょうか?
200 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 14:59:45 ] ライセンス的にどうなのよ
201 名前:デフォルトの名無しさん [2008/05/23(金) 16:25:09 ] VC++2008EEでウィンドウを作成した際にタイトルバーのアイコンが正常に表示されず困っています。 例えばIDI_ICON1と言うアイコンをWNDCLASSEX構造体で WNDCLASSEX wc; (中略) wc.hIconSm = LoadIcon(NULL, MAKEINTRESOURCE(IDI_ICON1)); などと指定しても、実際に表示されるのは吹き出しの中に"?"が書かれたアイコン(TTI_INFOと同じ)になってしまいます。 色深度に制限があるのかと思い24bitカラーのアイコンを使ったり実行ファイル用のアイコンをそのまま指定したりもしましたが症状は改善されません。 何が原因でしょうか。
202 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 16:38:42 ] >>201 LoadIcon の仕様を確認するんだ。 1つめの引数NULLはWindows標準のアイコンだぞ。
203 名前:デフォルトの名無しさん [2008/05/23(金) 17:13:43 ] >>202 確かめてみたら追加のアイコンはインスタンスハンドルを指定するんですね…見落としていました。 4bit透過色使用アイコンは作成するソフトによっては色抜けしなくなるようです。 GIMP2で漸く色抜けするアイコンが作成出来ました。 本当にありがとうございました。
204 名前:デフォルトの名無しさん [2008/05/23(金) 18:02:03 ] Windows XP、 visual studio .NET(ver2003)でCを勉強し始めたものですが コマンドライン引数を指定するようなプログラムのソースを書いて実行しても ファイル名の指定がありません Press any ker to continue と出て、うまく行きません。 どうしたらいいですか?
205 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 18:08:27 ] プロジェクトのプロパティのデバッグにコマンドライン引数の指定できるとこないか?
206 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 18:09:13 ] >>204 デバッガの使い方の話だよね? プロジェクトのプロパティの「デバッグ」→「動作」→「コマンド引数」が、 デバッガが動かすプログラムに与えられるコマンドライン引数。 デバッガで動かしてるんじゃないなら、コマンドライン引数を与えてあげてください。
207 名前:デフォルトの名無しさん [2008/05/23(金) 18:11:07 ] >>204 それはなあ、おまえのパソコンがハング恩してるんだよ
208 名前:デフォルトの名無しさん [2008/05/23(金) 18:28:18 ] >>205 >>206 コマンドライン引数を指定する場所は見つかりました。 当のプログラムが、コマンドライン引数で指定したテキストファイルの内容を表示するプログラム 何ですが、引数はテキストファイルの絶対パスでいいんですか?
209 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 18:29:57 ] いや、、、それを決めるのは君のプログラムでしょ
210 名前:204 [2008/05/23(金) 18:36:28 ] こういうプログラムです。 #include <stdio.h> #include <stdlib.h> int main(int argc, char *argv[]) { FILE *fp; char ch; if(argc!=2) { printf("ファイル名の指定がありません\n"); exit(1); } if((fp = fopen(argv[1], "r"))==NULL) { printf("ファイルを開くことができません\n"); exit(1); } if((fp = fopen(argv[1], "r"))==NULL) { printf("ファイルを開くことが出来ません\n"); exit(1); } while((ch==fgetc(fp)) != EOF) putchar(ch); fclose(fp); return 0; }
211 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 18:41:11 ] 絶対パスでも相対パスでもいいよ。 カレントディレクトリがどこかわからないなら、とりあえず絶対パス入れとけば。
212 名前:204 [2008/05/23(金) 19:09:13 ] >>211 絶対パスでやっても ファイル名の指定がありません となるんですが
213 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 19:20:55 ] >>212 ひょっとして hoge c:\(途中略)Program Files\xxx の様になってないか? 上記例だと、"Program" と "Files\xxx" の間の空白がパラメータ区切りとみなされて argc=3になってしまう。
214 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 19:21:58 ] まず argc の値を出してみろよ。 っつーか、VC++使ってんならそのままブレークポイント置いてargvの中身見てみろよ。
215 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 19:23:28 ] うまくいかない→質問 じゃあ進歩しないぜ
216 名前:デフォルトの名無しさん [2008/05/23(金) 22:29:09 ] >>204 あれだ!そのプロジェクトと同じフォルダにテキストファイル置いてるか?なら、相対パスでOkだ。 それか、C:\に適当にテキストファイル作ってたとえば、C:\test.txtだったとすると それで、hoge C:\text.txtってやってみな。それで表示がおかしかったら、if(argc!=2) ←これがおかしい。 argc!=1じゃないのか?なんでargc!=2にしてあるのかよく知らんけど。そこは、コマンドライン引数の個数をかくんだから 1個しか実行プログラムに引数を与えないなら、argc!=1ってしなきゃならん。 まあ、初心者のうちはそうやって七転八倒しながら覚えるって紋だ!!!!!!!!! がんばりな。俺も、最初はコピー&ペーストすらしらないような人間がプログラムをやろうとしてたんだ。 いまじゃ、7年目で色々できるようになった。まあ、あれだ。がんがれ。
217 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 01:21:53 ] >argc!=1じゃないのか?なんでargc!=2にしてあるのかよく知らんけど。そこは、コマンドライン引数の個数をかくんだから >1個しか実行プログラムに引数を与えないなら、argc!=1ってしなきゃならん。 いやいやいやいやいやいやいや
218 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 01:31:40 ] Express Edition には、リソースエディタがないようですが、 これってなくて大丈夫なんでしょうか?
219 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 02:01:49 ] リソースファイルを全部手書きしないといけないってだけで、プログラム事態には支障はない。 可能か不可能かってのなら可能。リソースコンパイラはWindowsSDKにも入ってるから。
220 名前:218 mailto:sage [2008/05/24(土) 02:54:55 ] >>219 なるほど、そういうことですか。 じゃあ、書き方さえ分かってればいいわけですね。 ありがとうございました。
221 名前:デフォルトの名無しさん [2008/05/24(土) 10:13:58 ] Windowsアプリ作るにはWTLがないと氏ねるそうですが、VC++2008EEでWTL8.0を使おうにもアプリウィザードに組み込めません。 アプリウィザードを使わなくてもWTLは使えますか? またWikipediaの解説を見るとATLがないとWTLは使えないようですが、これはWindows SDK for Windows Server 2008 and .NET Framework 3.5に含まれていますか? 選択画面を見る限りなさそうですが…。 因みに当然今は全てWin32APIでゴリゴリ書いています。 >>220 ResEditおすすめ。 IDEに関連付ければソリューションエクスプローラからダブクリで呼び出せるよ。 Unicode版もあるし。 ttp://www.resedit.net/
222 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 10:37:36 ] >>221 そんなオサレ気なものなくたって、Win32APIがあればまだ5年は戦えるね。
223 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 13:27:50 ] ATL7.1がWDKの方に入ってるよ。
224 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 13:41:13 ] ちなみに、setup80x.js内の8.0を全部9.0に置き換えて実行すれば、 2008EEでも、WTLのウィザード使えるよ。
225 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 14:06:23 ] support.microsoft.com/kb/943126/ja
226 名前:221 [2008/05/24(土) 16:50:33 ] >>222-225 ありがとうございます。 取敢えずヘッダーとx86ライブラリをインスコしてからJScriptのファイルを書き換えて実行し、ウィザードが正常に動作する事を確認しました。 しかしその生成されたコードをそのまま実行してみたら、 fatal error C1083: include ファイルを開けません。'atlbase.h': No such file or directory となってしまいました。 WTLとWindows SDKのインスコ先を見てもatlbase.hはありません。 WinSDKでまだ何か足りないものがあるのでしょうか。
227 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 17:06:31 ] だからWDKに入ってるつーの。
228 名前:デフォルトの名無しさん [2008/05/24(土) 18:31:23 ] すみません。Win32APIっていうのを勉強してるんですが、文字列変数というか char型の配列名にszなんたらかんたらっていう変数名が多いです。たとえば szClassName[] とかszText[]とか。。szってなんですかね?? あと、int型の整数を宣言するだけで、初期値を代入せずにいきなり使ってるんですが、 こういうのってありなんですか?なんか、大昔C言語を勉強したときはint i=0;と初期化してからじゃないと コンパイルエラーが出た覚えがあるんですが。。 すみませんが、おしえてちょんまげ。
229 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 18:34:13 ] >>226 Windows Driver Kit www.microsoft.com/japan/whdc/DevTools/WDK/WDKpkg.mspx サインインはいるが、Microsoft Connect Web サイトから無料で、isoイメージをダウンロードできる。 インクルードファイルパスに、"(DDKフォルダ)\inc\crt\atl71" ライブラリファイルパスに、"(DDKフォルダ)\lib\atl\i386"を追加。 ExpressでのWTLウィザードは、そのままだとATL3.0用になるので、 stdafx.hの中の #define _WTL_SUPPORT_SDK_ATL3 をコメントアウト。 なぜかATL7.1は、atlthunk.libがライブラリ指定されてないので、 リンクでエラーが出るなら、 リンカの追加の依存ファイルに、atlthunk.libを付ける。 いちいち、書き換えるのが面倒だったら、 WTLテンプレートファイルの方のstdafx.hを書き換えるか、 default.jsの // Use ATL3 from SDK for VS2005 Express の項をコメントアウトするといい。 // Linker settingsのところに、 LinkTool.AdditionalDependencies="atlthunk.lib"; で、atlthunk.libをリンク指定できる。 中途半端でほったらかしなWTLなんか使うより、 ATLだけでゴリゴリやった方がいいと思うけどね・・