★初心者にVisual C++を教えるスレ★ Part29at TECH
★初心者にVisual C++を教えるスレ★ Part29 - 暇つぶし2ch500:デフォルトの名無しさん
08/03/22 17:22:43
>>499
初心者質問スレでその対応はないだろ

501:デフォルトの名無しさん
08/03/22 17:25:18
お前が親切に相手してやれ

502:デフォルトの名無しさん
08/03/22 17:31:43
>500
手本を示せ

503:デフォルトの名無しさん
08/03/22 19:22:16
>>491
勘違いしているようだが、メッセージループはメインスレッドでやるんだよ
ゲームループと言ってるものは、ゲームを作る場合イベントドリブン方式を使わないで
ゲームの進行に関わる処理をループで行う
単純な例では、キー入力->ステート変化->画面表示->キー入力->....こんなループを組む
たとえば、キー入力をWM_KEYDOWNのメッセージハンドラーで受けないで
GetKeyboardStateとかを使ったりして今のキーの押下状態を取得する
どうしてそのようなことをするのかについてはゲーム作成などのHPでも見てもらいたい
メニューポップアップに関しては、そのpeekmessageを使ったルーチンを作って実際に試してみてね
質問の仕方が変だというのに関しては確かにそう思う、だけどここは初心者スレだから多少の意訳はしてあげても良いと思った

質問者がすでに消えたようなのでもうこの問題はこれで収めようとおもうんだけど

504:デフォルトの名無しさん
08/03/22 19:24:12
とっくに終わってるのに1人で何やってんの?

505:デフォルトの名無しさん
08/03/22 19:43:05
>>503
誤解されると良くないからちゃんと書いておくが
メッセージループは、beginthreadexによる別スレッドでゲームループを作る場合も、
peekmessageをつかったメインスレッド中にループを作る場合も、メインスレッドで行うと言う意味ね

このことは当たり前の前提で話していたつもりなんだが、>>465の書き込みを見ると
すでに認識の違いがそこにあったようなので一応書いておいた

506:デフォルトの名無しさん
08/03/22 19:45:15
>>504
この板は、どの書き込みが>>491なのか判らないので
終わっているかどうかは判らんから一応ね

507:デフォルトの名無しさん
08/03/22 19:45:20
また始まったか

508:491
08/03/22 20:20:46
なるほど。ゲームループというのを知らなかったから話が噛み合わなかったわけだ。申し訳ない。
なんでGetMessageじゃなくてPeekMessageなんだろうと思ってたけど、そういうことね。

>505
指摘どおり、認識違いしていた。

ただポップアップメニューについてはやはり分からない。試したけど止まらなかった。
「メニューポップアップ」とはTrackPopupMenuを使ったポップアップメニューのことと思ってたんだけど、それが違う気がしてきた。
説明して欲しい。

ゲームループは以下とほぼ同じ。ウィンドウプロシージャのWM_RBUTTONUPでTrackPopupMenuをコールした。
URLリンク(www.geocities.co.jp)

#質問者は去ったが、もうちょっと続けさせて欲しい。

509:デフォルトの名無しさん
08/03/22 21:10:00
どっかよそでやってほしい
ゲーム製作板あたりで

510:デフォルトの名無しさん
08/03/23 00:57:12
お聞きしたいのですが

ボタンがもっとも美しく見える大きさについて
横幅はフォントの高さに対して x分のy
高さはフォントの高さに対して z分のw

と言う推奨比率みたいなのを
その昔MS発行の何かの書籍で見た記憶があるのですが
どなたかご存じであり 且つ 教えていただけませんでしょうか…


511:422
08/03/23 09:02:43
>>423
ありがとうございます。
初回のビルドでは警告がでて当然なんですね。
実際にも簡易リビルドの警告のあと、自動的に通常ビルドされていました。
通常のビルドでのエラーに絞ってなお調べてみようと思いますm(_ _)m

あれからすぐ書き込み規制に入ってしまい返事が遅くなりすみません。

512:デフォルトの名無しさん
08/03/23 16:58:57
何度でも蘇るよ!

513:デフォルトの名無しさん
08/03/24 14:12:56
Win32APIとランタイムライブラリを使ったプログラムで、_beginthreadを使ったら
_beginthreadexを使えって怒られたんだけど、_beginthreadの問題点を調べても
なかなかわからない。

スレッドの終了コードや生成時の状態を指定する必要が無ければ_beginthreadでも
いいような気がするんだけど。

どんな問題点があるんですか?おすえてくらさい。

514:デフォルトの名無しさん
08/03/24 14:46:22
スレッド起こしっぱなしで放置でいい用途なら_beginthreadで問題ないんじゃ。
WaitForSingleObjectとかするなら_beginthreadexを使うべし。

URLリンク(msdn.microsoft.com)
>_beginthread よりも _beginthreadex を使用した方が安全です。_beginthread が作成したスレッドの終了が早すぎると、
>_beginthread の呼び出し元に返されるハンドルが無効となる可能性や、別のスレッドを指してしまう可能性があります。
>しかし、_beginthreadex から返されるハンドルは _beginthreadex の呼び出し元で閉じられる必要があるため、
>_beginthreadex がエラーを返さなかった場合にはハンドルが有効であることが保証されます。

515:513
08/03/24 22:05:57
514>>
アリガ㌧
やっぱハンドル使ったりしないなら_beginthreadで問題ないよね?

でも上司に反抗するのも建設的じゃないんで_beginthreadexに書き換えますたw

516:デフォルトの名無しさん
08/03/24 22:40:12
WindowsXPでVisual C++ 2008 Express Editionを三日くらい使っているのですが、
プログラムを実行したときの表示が一瞬で消えてしまいます
ずっと表示させるにはどうしたらいいですか?

517:デフォルトの名無しさん
08/03/24 22:53:00
ヤフオク見るとVC++.netのスタンダードしかないんだけどプロフェッショナル
って品薄なのですか?スタンダードとプロフェの価格が知りたいです。

518:デフォルトの名無しさん
08/03/25 01:12:14
>>516
[デバッグ]-[デバッグなしで開始]

519:デフォルトの名無しさん
08/03/25 01:33:58
>>516
main関数の最後に↓を追加
getchar();


520:デフォルトの名無しさん
08/03/25 14:32:27
>>517
スタンダード2~3万 プロフェショナル8~9万ぐらい

521:デフォルトの名無しさん
08/03/25 20:58:40
>>516
コマンドラインで実行

522:デフォルトの名無しさん
08/03/25 22:42:33
>>517
おとなしくExpress使ってろよ


523:sage
08/03/26 19:21:13
ListBoxで長いテキストの右は隠れんだけど、マウスを乗せて
ポップアップ窓に全文表示ってどうすんの?
調べんだけどわからん

524:523
08/03/26 19:24:34
久し振りで来たら名前とE-mail間違え


525:デフォルトの名無しさん
08/03/26 20:07:35
>>523
tooltip

526:デフォルトの名無しさん
08/03/26 20:32:13
>>525
ありがとうございます
tooltipにテキストを取得ってどうするんでしょうか?
コントロールやなんかのヘルプは表示できるんですが

527:デフォルトの名無しさん
08/03/26 21:19:36
int APIENTRY WinMain(HINSTANCE hInstance,
     HINSTANCE hPrevInstance,
     LPSTR lpCmdLine,
     int nCmdShow){

  HANDLE hMutex = CreateMutex(NULL,FALSE,szInstance);
  if(::GetLastError() == ERROR_ALREADY_EXISTS){
   CloseHandle(hMutex);
   return FALSE;
  }

  DialogBox(hInstance,MAKEINTRESOURCE(IDD_DIALOG1),NULL,DlgWndProc);

  return 0;

}

この記述でリリースビルドをしても構成エラーとかで起動できないPCがあるんですが、原因が分かりません;
分かるかた是非お願いいたします。

528:デフォルトの名無しさん
08/03/26 21:35:34
そのエラーは、大方Visual C++のランタイムをインストールしていないのだろう。
2005, 2005 SP1, 2008とかそれぞれ分かれているから、
自分のプログラムをビルドしたVC++のバージョンと同じやつを選んでインストールしろ。

529:デフォルトの名無しさん
08/03/26 21:46:44
やっぱりそれ関係のエラーだったのか・・

相手にそーいった環境が一切なくても動くようにするにはどうすればいいですか?


530:デフォルトの名無しさん
08/03/26 21:56:48
原因が分かりません
     ↓
やっぱりそれ関係のエラーだったのか・・

531:デフォルトの名無しさん
08/03/26 22:28:56
1度コード書いてコンパイルに成功する
EXEができてそれが起動する
コードを修正したけどコンパイル失敗
なのに1番目にコンパイルしたEXEが起動する

これ、コンパイル失敗したらEXE起動しないようにするにはどうすれば?

532:デフォルトの名無しさん
08/03/26 22:34:26
コンパイルではEXE起動しないよ

533:デフォルトの名無しさん
08/03/26 22:39:50
原因を特定できなくて「分からない」と言ったんで、
これかな?あれかな?って思ったのはあったんだよね;

534:デフォルトの名無しさん
08/03/26 23:27:08
>529
/MDじゃなくて、/MTでコンパイルすれば。

535:デフォルトの名無しさん
08/03/26 23:51:28
>>534
すいません。どーゆー意味でしょう・・?

536:デフォルトの名無しさん
08/03/27 00:45:33
ヘルプ嫁

537:デフォルトの名無しさん
08/03/27 11:57:29
Microsoft Visual C++ 2008 Express Editionを使用しています。
c:\Program Files\Microsoft Visual Studio\Common\MSDev98\Template
というフォルダにawxファイルを入れたいんですが
見つかりません。
Expressには無いんでしょうか??

538:デフォルトの名無しさん
08/03/27 12:00:26
>>531
前に作ったEXEを起動するか?って聞いてくるはずなんだけど。
「今後この問い合わせをしない」にチェック入れたのか。

ツール-オプションのプロジェクトおよびソリューションのビルド/実行に
それ関連の設定あるみたいだから見てみては。
起動する/しない/確認の3通り設定できる

539:デフォルトの名無しさん
08/03/27 13:24:47
で、MTとMDの違いが分かりませんw

540:デフォルトの名無しさん
08/03/27 13:45:04
ヘルプ嫁

541:デフォルトの名無しさん
08/03/27 13:50:12
ヘルプヘルプってそんくらい教えてやれよ
どーせお前わかんねーんだろ?w
ぷっ

542:デフォルトの名無しさん
08/03/27 13:58:51
エラーになったとき、エラーの原因が表示されるコンパイラはありますか?

543:デフォルトの名無しさん
08/03/27 23:43:27
>>539
[プロジェクト]-[プロパティ]-[構成プロパティ]-[C/C++]-[コマンドライン]にあるよ

544:デフォルトの名無しさん
08/03/28 00:49:43
>>543
あ。ありがとー
リンクの静的と動的が具体的にどう違うのかいまいち理解しきってないなぁ・・

545:デフォルトの名無しさん
08/03/28 02:16:49
CRTを自分のEXE/DLLに内蔵するか、外のDLLに頼るかの違い。

546:デフォルトの名無しさん
08/03/28 11:38:52
お。ありがとうございます

547:デフォルトの名無しさん
08/03/28 20:11:35
自分でクラス作るところでつまづく
Cも関数作るところでつまづいた

548:デフォルトの名無しさん
08/03/28 21:45:30
VC++2005で、バイナリデータをchar型の配列にいれてから、DATファイルに保存していましたが、
SQLSERVER2005にそのバイナリデータを直接保存できるようにしたいです。
varchar型のFIELDにそのデータを保存しようとすると、認識できないデータ(文字?)
があるらしく、データがそこで切れてしまいます。FIELDのデータ型をいろいろ変えたり
してみましたがやはり駄目でした(binary型などはエラーになってしまいます)。
何かヒントを頂ければ幸いです。スレ違いだったらすみません。

549:デフォルトの名無しさん
08/03/28 21:48:24
初心者スレでSQLSERVER2005はないだろ

550:デフォルトの名無しさん
08/03/28 21:51:27
↑すいません。SQLSERVERにデータを保存する際には、DATファイルに保存
する時と同様に、char型配列にバイナリデータをmemcpyしてから、データを転送しています。
よろしくお願いします。

551:デフォルトの名無しさん
08/03/28 21:52:27
>>549
すいません。。。

552:デフォルトの名無しさん
08/03/28 21:52:27
Microsoft Visual C++ 2008 Express Editionを使ってます
プログラムを書き込む際に普通のテキスト感覚で行うと
前の文字まで消えてしまいます (挿入ができない)

x+600 +の後に4500といれたい
しかしx+4500となって600が消えてしまいます
そういった設定はどこで行えばよいのでしょうか?

553:デフォルトの名無しさん
08/03/28 22:02:11
まさか Insert 押せば終わりってオチじゃないよな…


554:デフォルトの名無しさん
08/03/28 22:08:47
>>553
その通りでした すみません・・

555:デフォルトの名無しさん
08/03/28 22:11:51
>>548
> 認識できないデータ(文字?)
> があるらしく、データがそこで切れてしまいます。

文字列型なんだから、\0がきた時点で切れるだろ。


> binary型などはエラーになってしまいます

エラーの原因を調べろよ。


556:デフォルトの名無しさん
08/03/28 22:25:24
>>555
ありがとうございます。

>文字列型なんだから、\0がきた時点で切れるだろ。

全く同じデータをDATファイルに保存して、そのファイルをテキストエディタで開き、
そのデータをSQLSERVERのFIELDにコピペすると、やはりデータが切れてしまいます。
データを変換する必要があるんですかね?

557:デフォルトの名無しさん
08/03/28 22:30:44
#include <stdio.h>
void main()
{
int count;

for (count = 0; count < 5; count++) {
printf( "countは今%dです\n", count );
}
printf("aaa");
if(count==4){printf("正解です%dです\n",count);}
else{printf("残念");}


getch();
return;

}

VC++2008でデバックしましたがなぜかこれが"残念"のほうが出力されます。
countは4だと思うんですが

558:デフォルトの名無しさん
08/03/28 22:33:21
>557
Cスレで聞けば?

559:デフォルトの名無しさん
08/03/28 22:36:41
すいませんCスレいきます

560:デフォルトの名無しさん
08/03/29 09:00:44
countの値は5

561:デフォルトの名無しさん
08/03/29 10:14:51
>>556

特定のデータまたは文字長で切れるのか調べること
またFIELDのデータ型のルールに違反してないかを調べること

を勧めます。



562:デフォルトの名無しさん
08/03/29 21:25:27
>>557
forの機能を調べなおして来い


563:デフォルトの名無しさん
08/03/29 21:39:00
>562
お前もCスレ行け

564:デフォルトの名無しさん
08/03/29 21:59:18
count=0
今0です表示
countが1になる。
条件式参照(for・・・にもどる。count<5なのでループ継続。
・・・
今4です表示。
countが5になる。
条件式参照。count<5なのでループ終了。

565:デフォルトの名無しさん
08/03/29 22:02:13
スレ違いに気づけ

566:デフォルトの名無しさん
08/03/30 09:40:54
全く関係ないんじゃないからいいんじゃない?
英語の文法の授業で先生がSpeakingの話はじめたら
「先生、今文法の授業です」っていうタイプかしら。

567:デフォルトの名無しさん
08/03/30 09:56:39
落ちこぼれのために小学校の復習からやられたら迷惑

568:デフォルトの名無しさん
08/03/30 11:52:00
バカは気づかない。
スレ違いでも、分かるやつが答えを1レスすればそこで終わることを。
結局何も分からないやつがアホみたいに、スレ違い、ヘルプ嫁を書き続けるからリソースも無駄遣いすることになる。
教えたくないなら完全にシカトしろ。どーせ答えられねーんだからよ

569:デフォルトの名無しさん
08/03/30 14:08:47
ばかじゃん

570:デフォルトの名無しさん
08/03/30 14:11:54
>559でとっくに終わってるのに

571:デフォルトの名無しさん
08/03/30 14:23:53
このスレの回答者はゴミレベルが幅を利かせてるからな
557なんかは560のレスが出れば終わるだろ。
運悪くゴミに糞回答された質問者は可哀相だよ。


572:デフォルトの名無しさん
08/03/30 14:30:15
というゴミレスを必死に繰返してる君はいったい

573:デフォルトの名無しさん
08/03/30 15:32:35
質問です。
C++の勉強をしようと思って、express editionをダウンロードしたんですが。
.NetFrameworkというのも一緒にダウンロードされました。

これって、何ですか?

574:デフォルトの名無しさん
08/03/30 15:39:00
express editionはC++の勉強に使えないこともないけど
本来は.NetFramework用の開発ツールですよ

575:デフォルトの名無しさん
08/03/30 15:41:44
すみません。
.NetFrameworkって、何なんですか?

576:デフォルトの名無しさん
08/03/30 15:42:48
ググレかす

577:デフォルトの名無しさん
08/03/30 15:44:15
★初心者にVisual C++を教えるスレ★

578:デフォルトの名無しさん
08/03/30 15:45:58
人類にまだ正義は残っている。
URLリンク(www.nicovideo.jp)

579:デフォルトの名無しさん
08/03/30 15:47:51
wikipediaで調べたら・・・
Microsoft .NET Framework(マイクロソフト ドットネット フレームワーク)は、マイクロソフトが開発したアプリケーション開発、実行環境。

WindowsアプリケーションだけでなくXML WebサービスやWebアプリケーションなどWebベースのアプリケーションなどを取り入れた環境。一般に.NETという場合.NET全体の環境を指す。

また.NET Frameworkの基盤となっている仕様はEcmaインターナショナル、ISO、JISにて標準化されており、マイクロソフト以外のベンダーが独自に実装することもできる。

実際にいくつのオープンソースによる実装プロジェクトがある。なお、CLIのマイクロソフトの実装をCLRと呼ぶ。.NET FrameworkはCLRにその他ライブラリ群を加えたものと言える。


初心者の俺には意味がわかりません。

580:デフォルトの名無しさん
08/03/30 15:52:27
なんでもすぐ聞くな
調べろ
徹底的に調べろ

581:デフォルトの名無しさん
08/03/30 16:22:59
調べてみました。

簡単に言うと、同じプログラムで.NetFrameworkが入ってるコンピュータなら
書き直さなくても、同じように動作するってことですか?

582:デフォルトの名無しさん
08/03/30 16:40:49
スクリプト言語みたいなもんです
C++の勉強がしたいならコンソールアプリで十分


583:デフォルトの名無しさん
08/03/30 16:48:02
質問失礼します。
現在ゲームを製作中なのですが、複数のcppファイルで同一のヘッダを
参照すると変数の多重定義によるエラーが出てしまいます。

環境はVC2005EEで、error LNK2005でググって色々試したりしてみましたが何ともいかず、
コンソールアプリケーションですごく簡単なプログラムをコーディングして試してみてもうまくいきません。
申し訳ないのですが少しでも解決方法の手立てをお教え頂けると幸いです・・・。

584:デフォルトの名無しさん
08/03/30 16:52:55
インクルードガード

585:デフォルトの名無しさん
08/03/30 16:53:23
#ifndef __HOGE_H__
#define __HOGE_H__

//・・・

#endif

586:デフォルトの名無しさん
08/03/30 16:54:34
#ifdef __MAIN__
#define EXTERN
#else
#define EXTERN extern
#endif

EXTERN int g_hoge;

587:デフォルトの名無しさん
08/03/30 16:58:10
ここに
スレリンク(gamedev板:491番)

588:デフォルトの名無しさん
08/03/30 17:23:06
>>561
ありがとうございました。もうちょっと調べてみます。

589:デフォルトの名無しさん
08/03/30 17:26:23
皆さんご返答ありがとうございます。

>>584-585,>>587
この用法は既知だったので実装し、尚且つヘッダ内でstatic変数を作成し定義することも、
関数の定義を行うこともせずにビルドしてたのですが、それでもエラーが起こるため
甚だ疑問でした。環境から考えればコンパイラが古いということはないはずなのですが・・・。

>>586
そちらの用法を実装したところ、うまくいきました。ありがとうございます。
出来れば>>585さんの記述の仕方でうまくやりたかったのですが、
何ともいかないのでこちらのやり方で何とかしてみようと思います。

しかし本当に何で#ifndefのほうはうまくいかないのか・・・。

590:デフォルトの名無しさん
08/03/30 17:27:32
目的が違うから。

591:デフォルトの名無しさん
08/03/30 17:34:50
int main ()
{
try { LogFile logFile( "c:\\log.txt" ) ; }
catch(...) { return -1 ; }

logFile.Write( "hoge" ) ;
}
みたいに書きたいんだけど、tryのスコープにlogFileが捕らわれてしまうんだけどどうすれば解決できるでしょうか

592:デフォルトの名無しさん
08/03/30 18:28:59
>>591
LogFile のインスタンスが try 内でのみ有効なのでは?
ポインタを使うのが常套手段かと


LogFile *LogFile;
try {
LogFile = new LogFile( "c:\\log.txt" );
}
catch (..) {
return -1;
}
LogFile->Write( "hoge" );
....
delete LogFile;


LogFile が ref class なら * を ^ に、 new を gcnew で置き換えればOK


593:591
08/03/30 18:36:17
mainのreturnが複数の箇所になって、ポインタをいちいち開放するのがスタイリッシュじゃないと感じて、
オブジェクト使って自動的にデストラクトさせようという狙いだったんです。

594:デフォルトの名無しさん
08/03/30 18:47:29
>>593
goto 文でエラー処理すれば?

err_1:
delete a;

err_2:
delete b;

return -1;
みたいな感じで

著名なツールでも内部でgoto文使って
コードを簡潔化してる事あるよ
あとはdefine使うぐらいしか無いんじゃ

オヤジプログラマーに「goto文使ったら減給」とか
言われかねないけどw

595:デフォルトの名無しさん
08/03/30 18:50:14
どうでもいいけどスレ違い

596:デフォルトの名無しさん
08/03/30 18:52:28
>>591
これでダメな理由は?
try {
  LogFile logFile( "c:\\log.txt" );
  logFile.Write("hoge");
} catch(...) {
  return -1 ;
}




597:591
08/03/30 18:55:55
>>596
かなり簡潔に書いたけど、main内でいろいろ処理しながら、いろいろとログ書き込んでるからきびしいかと

598:デフォルトの名無しさん
08/03/30 18:56:05
そんなことよりスレ違いを気にしたほうがいい

599:デフォルトの名無しさん
08/03/30 19:01:13
このスレの対象ってC++なの?CLRなの?MFCなの?

600:デフォルトの名無しさん
08/03/30 19:06:35
スレリンク(tech板:896番)

誰かご存知の方いませんか?(´;ω;`)ブワッ


センセー、C++もCLIもMS VC範囲内だと思います。

601:デフォルトの名無しさん
08/03/30 19:14:57
>599
標準C/C++のスレでないことは確か

602:デフォルトの名無しさん
08/03/30 19:18:16
C++をVCに含めるならVCはWinに含まれるのか?

603:デフォルトの名無しさん
08/03/30 19:33:55
>>596
コンストラクタで例外が発生する場合もあるしね。

すれ違いなんて気にするな。
その方が愛が育まれる。


604:デフォルトの名無しさん
08/03/31 11:37:10
case WM_CREATE:
hdcMem=CreateCompatibleDC(GetDC(hWnd));
break;
case WM_PAINT:
hDC=BeginPaint(hWnd,&ps);
BitBlt(hDC,0,0,500,415,hdcMem,0,0,SRCCOPY);
EndPaint(hWnd,&ps);
return 0;

こんな感じで、ウィンドウのDCと互換性のあるDC(hdcMem)を作り
WM_PAINTでhdcMemからウィンドウのDCへコピー(画面に表示させる)・・・
というようにしたいのですが
例えばTextOutなどでhdcMemに書き込んでも
画面に何も表示されません。

教えて欲しいです。
あと、このプログラムはゲームのソースの一部ですが、この考え方って
一般的なものでしょうか?

605:デフォルトの名無しさん
08/03/31 11:59:58
更新ないと描画されないからか?

606:デフォルトの名無しさん
08/03/31 13:55:22
ビットマップ選択してないとか?

607:デフォルトの名無しさん
08/03/31 14:03:39
どのcaseでtextoutしてんだ?
PAINT以外でInvalidateRectしてないとか?

てかbitmap選択してないからじゃないの?

608:デフォルトの名無しさん
08/03/31 14:34:06
最初は1x1ドットのビットマップが選択されてるから、
1ドットだけコピーされてるよ。
同じ色になってなけりゃ虫眼鏡で見ればわかるよ。

609:デフォルトの名無しさん
08/04/01 12:22:11
リストビューにファイルを表示させようと思い、SHGetFileInfoでファイル情報を取得したところ、ファイルの種類とアイコンが思惑と異なりました。
対象はあるアプリケーションのファイルなんですが
 ファイル種類 → システムフォルダ
 アイコン → マイコンピュータのアイコン
となってしまいます。

第一引数のLPCITEMIDLISTはフルパスを元に自作したものを使っています。
IEnumIDListのNext()関数で取得したLPCITEMIDLISTを用いた場合は正常に取得できる所を見ると、やはりLPCITEMIDLISTの自作部分に問題があると思った方がいいのでしょうか?

610:デフォルトの名無しさん
08/04/01 12:28:54
そこまでわかってたらデバッガか何かで確認するだけ

611:デフォルトの名無しさん
08/04/01 13:45:21
この辺が参考になるかも。
[ファイルを列挙する]
URLリンク(www.kab-studio.biz)


612:デフォルトの名無しさん
08/04/01 15:05:06
>610
同じハズの2処理で結果が違うのですから、やはり何か異なるはずですよね。
もう少し追跡に集中してみます。

>611
こちらのサイトは参考資料として活用させてもらっています。
もう一度最初から読み直すなどして、もう少し理解を深めようと思います。


お二方ともありがとうございました。

613:デフォルトの名無しさん
08/04/01 15:40:57
>>611

URLリンク(www.kab-studio.biz)

↑に「IEnumIDList::Next()で取得するアイテムIDリストは、たったひとつのアイテムID、つまりそのファイルかフォルダだけしか持っていません。」
て書いてある。
これが原因じゃない?


614:611
08/04/01 15:42:10
>>612

と書きたかった。

615:611
08/04/01 15:57:38
多分フルパスで取得したLPITEMIDLISTを先頭にたどっていけばいいんじゃないかな。
そうすれば最後はNext()で取得したLPITEMIDLISTと一致すると思う。

マイコンピュータのアイコンが表示されてしまうのは、
フルパスの先頭である「マイコンピュータ」を指してるからじゃないかな。



616:611
08/04/01 15:59:46
>>多分フルパスで取得したLPITEMIDLISTを先頭にたどっていけばいいんじゃないかな。
「先頭に」じゃないな。「末尾に」だな。

確認はしてないので違ってたらごめんね。

617:デフォルトの名無しさん
08/04/01 16:23:02
>616
いえ、ありがとうございます。
ここは多少立ち止まってでもしっかり理解したい所なので、全て試してみようと思います。

618:デフォルトの名無しさん
08/04/01 17:48:04
初心者に教えてくれる掲示板ということで教えてほしいのですが、
スタティックテキストの文字の色、大きさ、フォントの種類を変更したいと思っています。
初期の設定で変更し、その後は特に変更しません。
VisualC++2005のダイアログベースで作成中です。
よろしくお願いします。

619:デフォルトの名無しさん
08/04/01 18:25:29
>>618
ダイアログベースってMFC?そうでない?
スタティックテキストは個別に変更したいってこと?
リソースエディタでは無理だから、大きさとフォントは、別に作ったフォントを
WM_INITDIALOGでWM_SETFONTしてやると変更できる。
色はWM_CTLCOLORSTATICメッセージでSetTextColor呼ぶとか

620:デフォルトの名無しさん
08/04/01 18:26:03
>618
そのへんは普通に勉強すれば誰でもわかることだし
掲示板でいちいち説明できる分量じゃない。

621:デフォルトの名無しさん
08/04/01 18:30:53
初心者に教えるスレでっせ。

622:デフォルトの名無しさん
08/04/01 18:37:09
教えるのはいいけど理解できるか?

623:デフォルトの名無しさん
08/04/01 18:42:36
この掲示板で説明するべき話題でないというのは同意。
ググった方が早くて確実で分かりやすいと思う。

突き放すことはないかなって思っただけです。

624:デフォルトの名無しさん
08/04/01 18:50:00
まあ環境もうちょっと書いてくれないとね。
詳しく書いた後で、MFCだとどう書きますかとか聞かれたらやだしね。

適当にはしょって答えて、そのキーワードでググってもらうのがいいかと。

625:デフォルトの名無しさん
08/04/01 19:19:54
>619
ありがとうございます。
MFCです。スタティックは個別にそれだけを変更したいです。
その辺のキーワードを頼りに勉強してみます!

>620
初心者なんですいません。
>そのへんは普通に勉強すれば誰でもわかることだし
ということですが、その普通にを教えていただけませんか?
もちろん参考書で勉強をしていますが、各コントロールの使い方が主に載っていてそれはわかるが、応用するときにはどうしていいかわかりません。

未熟者ですいませんがキーワードとかこういうの参考になるよってのを教えていただけたらと思います。
よろしくお願いします。

626:デフォルトの名無しさん
08/04/01 19:22:22
>各コントロールの使い方が主に載っていてそれはわかるが、応用するときにはどうしていいかわかりません。

>625
林本だろそれ

627:デフォルトの名無しさん
08/04/01 20:11:22
本は欲しい情報が載ってないことが多いし探すのが大変。
自分はMSDNを調べたりキーワードでググったり掲示板を利用したりしている。

掲示板
URLリンク(rararahp.cool.ne.jp)
URLリンク(hpcgi1.nifty.com)
URLリンク(m--takahashi.com)

628:デフォルトの名無しさん
08/04/01 20:15:42
コントロールのデバイスコンテキスト取得

pDC->SetTextColor(0xffffff);

629:デフォルトの名無しさん
08/04/02 01:29:08
DLLファイルを作成するプロジェクト(A)と、そのDLLファイルを使う
プロジェクト(B)があります。AとBは別個のフォルダに収められている
ので、BからAのDLLを使うには次のことをしなければなりません。

(1) .libファイルの場所をBで設定。(コンパイル時)
(2) Bの.exeとリンクされる.dllの場所を設定。(実行時)

(1)については[プロジェクト]→[設定]→[リンク]タブで設定しました。

(2)についてはどうすればいいのでしょうか?
Aが作るDLLにはデバッグバージョンとリリースバージョンがあります。そこで、
Bの.exeがデバッグバージョンであれば、AのデバッグバージョンのDLLが、
Bの.exeがリリースバージョンであれば、AのリリースバージョンのDLLが
リンクされるようにしたいのですが。

630:デフォルトの名無しさん
08/04/02 02:02:28
>>629
AとBの出力フォルダをデバッグ同士・リリース同士で揃えたらいいんじゃない?

631:デフォルトの名無しさん
08/04/02 02:13:14
>>630
.exeと.dllが作成される場所はデフォルトのままにしておきたいのですが。。。

632:デフォルトの名無しさん
08/04/02 02:31:13
>>631
ならBのプロジェクトのプロパティのデバッグの環境変数の設定で
Aの出力フォルダをパスに追加しておくというのはどう?

633:デフォルトの名無しさん
08/04/02 02:46:44
>>632
すみません。具体的にどうやって設定したらよいか教えてもらえませんか?
[プロジェクト]→[設定]とか[ツール]→[オプション]とかは散々いじくった
のですが。。。

Visual C++6.0です。

634:デフォルトの名無しさん
08/04/02 06:53:44
カスタムビルドプロセスで、Aのdllをこっちのexeの出来るフォルダにコピーするとか。

635:デフォルトの名無しさん
08/04/02 08:19:54
>>633
出力はデフォルトのまま出来たDLLとかlibをコピーするのは駄目なの?
コンパイル後のコマンドでコピーすればよいと思うんだけど
あと、デバッグとリリースを分けるなら別名にしたほうがいろいろ便利だよ

636:デフォルトの名無しさん
08/04/02 10:26:22
同じソリューションに入れて依存関係作っとけばよかった気がする

637:625
08/04/02 11:54:51
>>626
林本です!

一応初期化のところでCreateFontでフォントを作成し、GetDlgItemでIDを取得し、SetFontでフォントを指定して文字の大きさは変更できました。
あとは色ですね。。。
もうちょっと勉強してみます!


638:デフォルトの名無しさん
08/04/02 12:05:55
>>637
色は
OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)

if (pWnd->GetDlgCtrlID() == IDC_HOGE)
{
  pDC->SetTextColor(RGB(0xff,0,0));
}
とか }


639:デフォルトの名無しさん
08/04/02 18:23:21
デバッグウインドウに文字を表示するにはどうすればよいでしょうか?

640:デフォルトの名無しさん
08/04/02 18:29:20
以前学校の授業でC言語を簡単に勉強した事があるのですが
C++とCはまったくの別物と考えたほうがいいのでしょうか?

また、勉強用に独習C++あたりを購入しようかと思っているのですが、他におすすめの入門用の書籍などありますか?

641:デフォルトの名無しさん
08/04/02 18:31:58
あまり別物でないように使う事も出来るけど、
フルに機能を利用すれば全くの別物になる。

入門書は
・ 独習 C++
・ C++ プライマー 第4版
・ ロベールの C++ 入門教室
の3つを実際に店頭で読んでみて決めてみたら。

642:デフォルトの名無しさん
08/04/02 18:36:17
>>639
デバッグ中の出力ウィンドウのこと?
OutputDebugStringとかOutputDebugStringFormatとか使う
MFCだとTRACEマクロもある

643:デフォルトの名無しさん
08/04/02 18:41:14
>>641
なるほど、基本的な部分が似てるのなら少し安心です

前に独習Perlがすごい役にたったから今回も独習シリーズでいいや、とか思ってた
たしかに読んでみて自分に合ったの探したほうがよさそうですね。
どうもありがとうございます

644:デフォルトの名無しさん
08/04/02 19:53:10
>>636
依存関係ではダメと思う。

自分は634のようにしている。

645:デフォルトの名無しさん
08/04/02 21:00:54
>>643

自分は「やさしいC++」がオススメ

646:デフォルトの名無しさん
08/04/02 23:31:13
>>642
アリガトン

647:デフォルトの名無しさん
08/04/03 02:55:42
>>634 >>635
ありがとうございます。うまくいきました。

[プロジェクト]→[設定]→[ビルド後の処理]タブで、
出来たての.dllをコピーするコマンドを指定しました。

  copy $(TargetPath) コピー先フォルダ

これでビルド後に.dllが(対応する).exeのフォルダにコピーされ、
.exeの実行時に適切な.dllが使われるようになりました。

>あと、デバッグとリリースを分けるなら別名にしたほうがいろいろ便利だよ
考えてみます。今のところ不都合はないように思います。

>>636
>同じソリューションに入れて依存関係作っとけばよかった気がする

>>644さんのおっしゃる通り、この方法はダメでした。
1つのワークスペース(VisualC++6.0なので)に2つのプロジェクトを挿入して、
それらのプロジェクトの間に依存関係を指定してみたのですが、
うまくいきませんでした。この方法でできれば簡単で良いのですが。。。

648:デフォルトの名無しさん
08/04/03 07:19:02
WNDCLASSEX wc = { sizeof(WNDCLASSEX), CS_OWNDC, MsgProc, 0L, 0L,
GetModuleHandle(NULL), NULL, LoadCursor(NULL,IDC_CURSOR1), NULL, NULL,
L"Cursor Test", NULL };

カーソルを自作カーソルIDC_CURSOR1にするにはどうすればいいんですか?
こうやるとエラーになってしまいます。

649:デフォルトの名無しさん
08/04/03 08:12:29
■質問するにあたって
・エラーや警告のときはエラーメッセージを書きましょう。
・開発環境も書きましょう。
・できるだけ具体的に。

650:デフォルトの名無しさん
08/04/03 08:20:17
>>648
-LoadCursor(NULL,IDC_CURSOR1),
+MAKEINTERSORSE(IDC_CURSOR1)
綴りまちがってるから自分で確認して

651:デフォルトの名無しさん
08/04/03 09:06:33
開発環境は2008です。

WNDCLASSEX wc = { sizeof(WNDCLASSEX), CS_OWNDC, MsgProc, 0L, 0L,
GetModuleHandle(NULL), NULL, LoadCursor(NULL, MAKEINTRESOURCE(IDC_CURSOR1)), NULL, NULL,
L"Cursor Test", NULL };

- + の意味がわからないのですが
これで実行した時のエラーは

error C2065: 'IDC_CURSOR1' : 定義されていない識別子です。
warning C4003: マクロ 'CreateWindowW' に指定された実引数の数が少なすぎます。
error C2059: 構文エラー : ')'

です。

652:デフォルトの名無しさん
08/04/03 09:38:12
IDC_CURSOR1っていう名前のカーソルのリソースがないんじゃないのかい?

653:デフォルトの名無しさん
08/04/03 10:09:47
Windowsフォームアプリケーションだとコントロールを個別にフォントとかをプロパティで簡単に設定できるんですね。
なんでMFCだとできないんですかね。。。実はできたりするんですか?

654:デフォルトの名無しさん
08/04/03 10:14:51
ポトペタRAD環境をC++で使いたいならC++Builderへどうぞ
VC++ではできません

655:デフォルトの名無しさん
08/04/03 11:50:43
>>651
LoadCursor(NULL,IDC_CURSOR1) だと IDC_CURSOR1 でエラーにならないのに
LoadCursor(NULL, MAKEINTRESOURCE(IDC_CURSOR1)) だとエラーになるのはおかしいだろ。

そして、LoadCursorの第一引数がNULLなのはシステム定義アイコンを使うときだ。
hInst を入れてみ。

656:デフォルトの名無しさん
08/04/03 12:30:44
だめでした。
IDC_CURSOR1 を定義する方法は、

リソースビュー>追加>リソース>cursor>新規作成
出来た resource.h をcppにインクルード

だけでいいですか?
LoadCursorのヘルプに afxwin.h が必須インクルードと書いてあるのですが、インクルードすると

#ifdef _DLL
#ifndef _AFXDLL
#error Building MFC application with /MD[d] (CRT dll version) requires MFC shared dll version. Please #define _AFXDLL or do not use /MD[d]

の#errorに飛んでしまいます。

657:デフォルトの名無しさん
08/04/03 15:09:25
MFCのLoadCursor使うならafxwin.hが必要でMFCとしてビルドしないといけない

658:デフォルトの名無しさん
08/04/03 16:21:45
もしかして>>648のエラーも
>error C2065: 'IDC_CURSOR1' : 定義されていない識別子です。
なのか?
そうでないなら出たエラー書いてみて

659:デフォルトの名無しさん
08/04/03 16:29:47
あと、>>648 のその行以外は問題ないとすると
WNDCLASSEX wc = { sizeof(WNDCLASSEX), CS_OWNDC, MsgProc, 0L, 0L,
GetModuleHandle(NULL), NULL, LoadCursor(GetModuleHandle(NULL),MAKEINTRESOURCE(IDC_CURSOR1)), NULL, NULL,
L"Cursor Test", NULL };

こうだな。GetModuleHandle(NULL)がかぶってるから、
事前に呼んでとっておくといい、けどこれWinMainの第一引数なんだけどな。

660:デフォルトの名無しさん
08/04/03 18:12:45
エラーが出なくなりましたが、今度はウインドウが出てこなくなりました。
正常だった記述に戻してもウインドウが出てこなくなりました。
中間ファイルもソリューションのクリーンで消しましたがだめです。WINごと再起動してもだめです。

DirectX9SDKのサンプルCreateDeviceのVS2005プロジェクトをVS2008で自動変換して取り込み自作カーソルリソースを新規作成で追加して
#include "resource.h"追加と

WNDCLASSEX wc = { sizeof(WNDCLASSEX), CS_CLASSDC, MsgProc, 0L, 0L,
GetModuleHandle(NULL), NULL, NULL, NULL, NULL,
L"D3D Tutorial", NULL };

の部分を

WNDCLASSEX wc = { sizeof(WNDCLASSEX), CS_OWNDC, MsgProc, 0L, 0L,
GetModuleHandle(NULL), NULL, LoadCursor(GetModuleHandle(NULL),MAKEINTRESOURCE(IDC_CURSOR1)), NULL, NULL,
L"Cursor Test", NULL };

に書き換えただけです。たすけてください。もう12時間これやってます^^;

661:デフォルトの名無しさん
08/04/03 18:18:42
エラーが出ないって事はコンパイルできたんだろ?
そしたら次はデバッガの使い方をだな・・・

とりあえず、F10連打だ

662:デフォルトの名無しさん
08/04/03 18:53:10
ああそうか!カーソルはこれでクリア出来てるってことですよね
LoadCursor(GetModuleHandle(NULL),MAKEINTRESOURCE(IDC_CURSOR1))
の意味と、CreateDeviceが失敗してるのはまた明日調べます。
まじありがとうございました。

663:デフォルトの名無しさん
08/04/03 19:00:16
ちょっとサンプルみたけど、hInst でいいんじゃん。
LoadCursor(hInst,MAKEINTRESOURCE(IDC_CURSOR1))
で。前のGet・・・につられたわ

664:デフォルトの名無しさん
08/04/03 19:24:36
拾ったサンプルをあてずっぽうで改造?
ほとんど何も知らないでやってる?

665:644
08/04/03 20:28:26
>>647

dllのコピーは必要だけど、依存関係を設定するのはオススメ。
libのリンクを自動的にやってくれるし、
exeをビルドする前にdllをビルドしてくれるので、
古いdllを使ってハマルようなことがなくなる。

つまり 依存関係+ビルド後の処理でコピー と。

666:647
08/04/04 00:44:33
>>665
なるほどです。そうしてみました。

667:デフォルトの名無しさん
08/04/04 08:56:37
>>663
hInstで動きました。ありがとうございました。

668:デフォルトの名無しさん
08/04/06 00:09:59
PCSX2というソフトをコンパイルしたいんですがやり方がわかりません。
プログラムについての知識0です。
勉強したいとかではなくこのソフトがほしいだけです。

Microsoft Visual C++ 2008をとりあえずインストールしましたがやり方がまったくわかりません。
サルにも判るように教えてくれる方がいれば幸いです。

URLリンク(www.pcsx2.net)

URLリンク(pcsx2.svn.sourceforge.net)

669:デフォルトの名無しさん
08/04/06 00:25:00
readme嫁

670:デフォルトの名無しさん
08/04/06 02:26:07
勉強する気ないやつに教えるほど俺は性格良くないです

671:デフォルトの名無しさん
08/04/06 04:37:38
>>668
エミュレータでタダゲーしたいんだけど、コンパイルしないといけない。
だれか手取り足取り教えろ、ということか。
…たしかに何も教える気がまったく起こらんなw 初心者には寛容なほうなのだが。

672:デフォルトの名無しさん
08/04/06 10:00:14
実は頭悪いだろ、ここの人たち

673:デフォルトの名無しさん
08/04/06 10:29:33
残念ながらそんな煽りに乗るほどには悪くないんだな。(w

674:デフォルトの名無しさん
08/04/06 16:45:39
>>668
ここは勉強する意欲のある初心者に教えるスレであって
勉強するつもりもない素人に教えるスレではありません
お帰り下さい

675:デフォルトの名無しさん
08/04/06 20:47:50
今までXPで開発していましたがPCをVistaで新調して開発したところ、
Vista機では問題なく実行できるexeがXPマシンに持っていくとアプリケーション構成エラーが出て実行できません
おそらく>>527さんとほぼ同じ症状で、/MTでコンパイルを通すと実行できるようにはなりますが
ファイルサイズが大きくなるのでできるだけ/MDにしたいです
何か良い手段はないでしょうか
VC2008を使用しています

676:デフォルトの名無しさん
08/04/06 21:08:55
それが嫌なら>528の方法
それも嫌ならライブラリ使わない

677:675
08/04/06 21:26:15
なるほど…
やはり基本的には/MTにするかランタイム導入を促す方向になるのですね
ありがとうございました

678:デフォルトの名無しさん
08/04/06 21:32:39
ランタイムをインストールするのが嫌なら、
EXEと同じフォルダに置くという方法もできる。
マニフェスト関係が面倒だけど。

679:デフォルトの名無しさん
08/04/07 00:18:33
intやfloatの値をLPSTRに変換するにはどうすればいいですか?

680:デフォルトの名無しさん
08/04/07 00:26:55
キャスト

int i = ...;
LPSTR s = (LPSTR)i;

681:デフォルトの名無しさん
08/04/07 02:39:25
すごいな。 いろいろと。 dobuleでなくて良かったとかそういう話なんだな。。

682:デフォルトの名無しさん
08/04/07 03:11:47
どぶれ?

683:デフォルトの名無しさん
08/04/07 06:17:22
>679
CやC++でintやfloatを文字列に変換するのと同じでもいいし
apiやMFC使う方法もある

684:デフォルトの名無しさん
08/04/07 06:19:08
でもfloatは対応してないのもあったかも

685:デフォルトの名無しさん
08/04/07 08:34:49
>>680
オマイ天才

686:デフォルトの名無しさん
08/04/07 08:42:03
2008のMFCで、チェックボックスのメンバ変数を追加して、初期化時に

変数名 = TRUE;

とすればチェックされた常態で起動されるとVC++6.0の本に書いてあるのですが
error C2679: 二項演算子 '=' : 型 'int' の右オペランドを扱う演算子が見つかりません (または変換できません)。
のエラーが出てしまいます。
VBのようにプロパティにもそれらしき項目がないです。教えてください。

687:デフォルトの名無しさん
08/04/07 09:36:44
何の問題もなくできたよ

688:デフォルトの名無しさん
08/04/07 10:06:14
変数を作ったら
DDX_Control(pDX, IDC_CHECK1, as);
この行が追加された。

OnInitDialog()の中に
as = TRUE;
を追加してもだめです。

689:デフォルトの名無しさん
08/04/07 10:27:05
このスレの住人なら知っていますね、あの糞開発ツールのことを

・自分のプログラムのバグなのかコンパイラのバグなのかわからない
・他の仕事に応用できない糞開発ツールの独自世界を必死に学習している
・テキストエディタで書いたほうが効率的なのに糞UIツールを懸命に使っている
・糞開発ツールを批判すると「性格が悪いから糞ツールを批判するんだ」と言われる

糞だけど、政治的な理由で無理やり使わされているんですよね。
もう、あんな厨の作った糞ツールを我慢して使うのはやめましょう。

・糞開発ツールを部下に押し付ける上司の命令は無視しましょう。
 上司は糞開発ツールが使われる実績を作ることであの会社のごきげんをとっているのです。
・糞開発ツールを使わせる上司の下では働けません、と上司の上司に直訴しましょう。
・あの糞開発ツール提供会社には「おたくの糞開発ツールは話にならない」と突き放しましょう。
 バグレポートなどしてはいけません。改善要求などもってのほかです。
 あの会社はあなたたちのことをテスター/モルモットとしか思っていません。
・あの会議で「糞開発ツールを使ったら生産性がxx%アップしました」
 なんて話が出たら力強く机を叩き、会議室を出ましょう。
 あの人たちは糞開発ツールをマンセーすることで立場を確保しているのです。

糞な開発ツールを糞だと言える、そんな当たり前の環境をみんなの力で取り戻しましょう。

690:デフォルトの名無しさん
08/04/07 10:48:51
>>688
単にデフォルトでチェック状態にしたいなら
as.SetCheck(BST_CHECKED)
をすればいいんじゃないの?

691:デフォルトの名無しさん
08/04/07 12:21:28
できました。ありががとうございます。
できましたが、わからないことを逆引きできず、きりがありません、本も相当買いましたが、VBと違いまったく応用できません
このまま一個ずつ積み重ねるしかないのでしょうか?

692:デフォルトの名無しさん
08/04/07 12:25:51
MSDNで調べる癖をつけましょう
それでもわからなければWebやメーリングリストの過去ログなども使いましょう

CheckBoxの場合はCButtonというクラスの変数なのでそのメンバを調べましょう

693:デフォルトの名無しさん
08/04/07 13:01:00
DDX_Controlにするから型があわない
たぶん本に書いてあるのと違うことやってる

694:デフォルトの名無しさん
08/04/08 17:56:11
Visual C++6.0を起動すると、

 「ワークスペースにあるウィンドウのすべてを開くことはできません。」

という意味不明なメッセージボックスが表示されることがあります。
[OK]ボタンがひとつあるだけの単純なメッセージボックスです。
このメッセージは次のように言っているように聞こえます。

「ワークスペースにはウィンドウがいくつかある。あなたはそれをすべて
開こうとした。でもそれはできない。」

???

別に困っているわけではないのですが起動時に数回に一回の割合で出現するので
気になります。一体、このメッセージボックスは何が言いたいのでしょうか?

695:デフォルトの名無しさん
08/04/08 19:13:41
URLリンク(support.microsoft.com)
このぺージの ダイアログ ボックスでWebBrowserコントロールを使用
の部分なのですが、webbrowser2.hが存在していないエラーが出ます。2008では使えないんですか?
代りに何を使えば同じように使えるんでしょうか

696:デフォルトの名無しさん
08/04/08 19:45:02
URLリンク(msdn2.microsoft.com)
ここらへんをみるとwebbrowser2.hは、該当
ActiveXからMFCクラスを生成するとできる、
って書いてあるような気がする

697:デフォルトの名無しさん
08/04/08 19:47:36
>694
メニュー > ウインドウ

698:デフォルトの名無しさん
08/04/09 10:09:33
そこの英語ページぜんぜんわかりません
CWebBrowser2とIWebBrowser2の違いもわかりません。
ドキュメント自体しないですよね

void CtestDlg::OnBnClickedOk()
{
//CWebBrowser2* hExp1 = (CWebBrowser2*)GetDlgItem(IDC_EXPLORER1) ;
//hExp1->Navigate2((CString*)("URLリンク(www.google.com)"), &noArg, &noArg, &noArg, &noArg);

IWebBrowser2* hExp1 = (IWebBrowser2*)GetDlgItem(IDC_EXPLORER1) ;
hExp1->Navigate2((VARIANT*)("URLリンク(www.google.com)"), NULL, NULL, NULL, NULL);
}

これで起動するとコンパイルはできるのですが、ボタンをクリックすると

test.exe の 0x78a49c05 (mfc90ud.dll) でハンドルされていない例外が発生しました
: 0xC0000005: 場所 0x8b55ffdb を読み込み中にアクセス違反が発生しました。

と出てしまいます。VC++2ヶ月でこれはまだ早いですかね

699:デフォルトの名無しさん
08/04/09 11:03:06
IWebBrowser2はインターフェイスでCWebBrowser2はその実装されたクラスだけど多分難しいと思う

単に表示させたいならGetDlgItem使わずにダイアログに直接貼り付けてクラス変数作ってNavigateした方が楽だよ

なんにしてもCOMとかActiveXとかめんどくさい物を勉強した方がいいと思う

700:デフォルトの名無しさん
08/04/09 15:18:28
VC++6.0の初心者です。
 マウスのイベントについて教えて下さい。
 (漢字はよく読めないので、なるべく平仮名でお願う)
MFC AppWizard(exe)を使って、しゅるい はダイアログベース(D)を使います。

1つめ. ダブルホイールマウスを使ってた。
  マウスにかんけい知るイベントで、自分で調べて解ったのは
  WM_MOUSAWHEEL という奴ですが・・・ホイールが2つある、もっと、マウスで
  アプリケーションに必要な処理をおこうなうには何すれば?
   どう考えればいいでしょうか?

701:デフォルトの名無しさん
08/04/09 15:47:15
日本語でOK

702:デフォルトの名無しさん
08/04/09 15:59:22
ホイールが二つあるマウスのイベントを拾いたい

703:デフォルトの名無しさん
08/04/09 17:39:18
横ホイールか

704:デフォルトの名無しさん
08/04/09 17:39:57
>>702さん。
Yes.ホイールが2つ以上あるマウスのイベントを拾いたいです。
(日本語あってる?)

705:デフォルトの名無しさん
08/04/09 18:05:07
VisualC++2005のMFCのダイアログベースでプログラムを作成しています。
まだ初めて1ヶ月もたってないので初歩的なことを聞いてすいません。

OnInitDIalog内の//TODO: 初期化をここに追加します。
というところで

font.CreateFont( 36,
0,
0,
0,
FW_NORMAL,
TRUE,
FALSE,
0,
ANSI_CHARSET,
OUT_DEFAULT_PRECIS,
CLIP_DEFAULT_PRECIS,
DEFAULT_QUALITY,
DEFAULT_PITCH | FF_SWISS,
"Italic");

GetDlgItem(IDC_STATIC)->SetFont(&font);

として、文字のフォントを変更しようとしました。
最初は問題なく変更できていたのですが、気づいたらいつの間にか変換できていませんでした。

ボタンを使って、ボタン動作で
GetDlgItem(IDC_STATIC)->SetFont(&font);
を行うと変更されますので、一度変更した後になんらかの理由で元に戻ってると推測していますが、その理由と場所がわかりません。

これだけの情報でわかれば教えていただけますか?

706:デフォルトの名無しさん
08/04/09 18:25:46
そのfontは保持し続けてるのか?
どこで宣言してる?

707:デフォルトの名無しさん
08/04/09 21:21:31
long ldata[] = {0x00000000,0x00000001,0x00000002,・・・・・};

このような配列を、文字列、"0x000000000x000000010x00000002・・・・・"
と変換するにはどのようにしたらいいでしょうか。
また、この文字列を逆に配列に戻すことは可能でしょうか。



708:デフォルトの名無しさん
08/04/09 21:40:00
VCというよりCかC++を勉強すれば可能

709:デフォルトの名無しさん
08/04/09 21:54:15
>>708
ありがとうございました。可能ということで、勉強したいと思います。

710:デフォルトの名無しさん
08/04/09 22:33:41
>>709
sprintfとかで速効

711:705
08/04/10 09:50:43
>706
一応グローバルで宣言してるつもりで関数の外で宣言してます。

ちなみにC言語は初心者レベルで理解してるつもりです。
まだ、簡単なソフトを1つ作っただけですが。。。初心者レベルで。

712:デフォルトの名無しさん
08/04/10 10:50:01
最近VisualC#2008 Expressをダウンロードして使っているものです。
質問なのですが、
イミディエイトウィンドウを使ってコマンドを入力してデバッグできる
ことを知ったのですが、普通にGUI上からデバッグするだけでは
できないことや効果的な利用方法などがあったら教えて頂きたいです。


713:デフォルトの名無しさん
08/04/10 10:53:47
ここC#じゃないよ

714:デフォルトの名無しさん
08/04/10 12:20:50
static DWORD beforeTime = 0;
DWORD nowTime;static int fps = 0;char buff[80];

nowTime = timeGetTime();fps++;
if ( nowTime - beforeTime >= 1000 ) {wsprintf(buff, "%05d FPS\n", fps);
TextOut(hDC,1,1,buff,lstrlen(buff));fps = 0;
beforeTime = nowTime;
}
counter++;

これは某所にあった
FPSを表示するソースの一部なんだけど
これを使うと(WM_TIMERで呼ぶと)
最初の一回は00001FPSと出て、その後は25000とか二万を越える値が出ます。
どうして?

715:デフォルトの名無しさん
08/04/10 12:31:49
1秒に25000回呼ばれてるんだろ

716:デフォルトの名無しさん
08/04/10 12:56:24
>713
あ、思いっきり間違えました!
すいません。

717:デフォルトの名無しさん
08/04/11 05:19:00
リソースファイルは、Express Edition じゃビルドできないんですか?

ちなみにバージョンは2008です。

718:デフォルトの名無しさん
08/04/11 06:07:09
リソースコンパイラはRC.EXE

719:705
08/04/11 10:28:39
どなたかヒントだけでも教えていただけませんか?

720:デフォルトの名無しさん
08/04/11 11:27:20
>>705
文字を替えたいコントロールのIDをIDC_STATICから別の名前に替えてみて


721:デフォルトの名無しさん
08/04/11 12:07:17
>>720
変更しましたところ、グループボックスの文字が変化しました。
グループボックスのIDもIDC_STATICになっていました。
その原因は GetDlgItem(IDC_STATIC)->SetFont(&font); でIDを変更していなかったので、
ここでGetするIDも変更したのですが、文字は変化しませんでした。

原因はこれですか??

722:デフォルトの名無しさん
08/04/11 12:40:58
>>721
IDC_STATICってのは (-1) になってて
ID未設定でいいときに使うんだよ。
プログラム中で指定するなら自分でIDつけろ

723:デフォルトの名無しさん
08/04/11 13:36:40
>>722
ありがとうございます。
しかし、変更しましたが文字は変化しません。。。

724:デフォルトの名無しさん
08/04/11 13:43:12
すいません。文字変更できました!
なぜかスタティックテキストの上に全く同じスタティックテキストができていて、
上を必死に変更してたのですが、下のものが表示されてたためにいくらやっても変化しなかったようです。

コピーやペーストをした覚えはないんですが、、、


でも、おかげさまでIDのことを覚えることができました。ありがとうございました。
もっと勉強してきます!!

725:デフォルトの名無しさん
08/04/12 21:00:41
しかしこのスレって土日になるととたんに書き込みなくなるよね
仕事でこんなところに書き込んでる奴ばかりなんだろうか

726:デフォルトの名無しさん
08/04/13 03:40:49
仕事でか(((( ;゚Д゚))))

727:デフォルトの名無しさん
08/04/13 09:24:12
VC++2008ExpressでReleaseでビルドしてもtest.exeファイルが作成されません
Releaseフォルダにはtest.exe.intermediate.manifestやtest.objがあるだけです
どうすればいいですか?

728:デフォルトの名無しさん
08/04/13 09:52:27
>>727
あるじゃん

729:デフォルトの名無しさん
08/04/13 10:16:14
Releaseフォルダは2箇所にある。

730:デフォルトの名無しさん
08/04/13 10:35:39
>>727
ほんとだ

731:デフォルトの名無しさん
08/04/13 12:13:21
>>727
リンクエラー出てませんか?

732:デフォルトの名無しさん
08/04/15 18:04:24
設定に関する質問です。
以前VisualC#2005をつかっていた時は、
括弧を閉じたりセミコロンを入れると自動でコードが綺麗に整列されて、例えば
x=5 が x = 5 というように、空白が挿入されたりインデントされたりしてたのですが、
こういった機能はVisualC++2008にはありますか?
自分でも調べたのですがよくわかりませんでした。設定方法がありましたらお願いします。
上手く説明できなくてすみません。。orz

733:デフォルトの名無しさん
08/04/15 19:18:10
>>732
C++に、そういう機能はなかったはず
C#なら2008にもある

734:デフォルトの名無しさん
08/04/15 20:07:24
そうですか。。回答ありがとうございました

735:デフォルトの名無しさん
08/04/15 20:50:01
C#はそんなのがあるんだ。
C++は他の言語や環境と比べると不便さを感じるかもね。

736:デフォルトの名無しさん
08/04/15 21:11:22
昔からVBがそうだけど、特にVCが不便と感じたことはない
逆にいちいち余計なことされるとむかつく

737:デフォルトの名無しさん
08/04/15 22:37:16
VBは改行時にいちいち構文チェックしてうざかったな~
.netになってからVBとかC#とかのインテリセンスはかなり優秀に
C#になれてたんでVC++にきたときに不便さに困った
今となっては慣れたけど

738:デフォルトの名無しさん
08/04/16 03:22:50
C++ はマクロとかあるし、それ抜きにしても文法凶悪だからね。処理系的には。
賢くしづらいのはよく分かる。

739:デフォルトの名無しさん
08/04/16 03:29:29
VCで極力小さい実行ファイルを作るにはどうしたら良いのでしょうか。

#include <windows.h>
int WINAPI WinMain (HINSTANCE hThisInstance, HINSTANCE hPrevInstance, LPSTR lpszCmdParam, int nCmdShow)
{ return 0; }
だけをコンパイルしても24KBにもなってしまい、ビルドオプションで
サイズ優先とかしても変化せず。

変なランタイム使ったり実行ファイルが圧縮されてるわけでも無いのに、
ファイルサイズ10KB台で色々な処理をしてるまともなGUIツールが
あるんですが、何をどうしたらこう言う実行ファイルが作れるのか
皆目見当が付きません。

740:デフォルトの名無しさん
08/04/16 05:43:44
既存のライブラリを使わない

741:デフォルトの名無しさん
08/04/16 06:57:12
あとは/opt:nowin98だっけか。

742:デフォルトの名無しさん
08/04/16 09:55:28
どなたか
URLリンク(www.whitire.com)
をvc++に移植してください!

743:デフォルトの名無しさん
08/04/16 10:43:12
移植もなにも…

744:デフォルトの名無しさん
08/04/16 11:16:47
できあがったDLLからC++のdllexport関数をDEFファイル形式で吐くツールとかないかな・・・

745:742
08/04/16 11:40:27
こんな感じで呼べますか?
URLリンク(www.geocities.co.jp)


746:デフォルトの名無しさん
08/04/16 14:58:36
>>740-741
きっちり1KBの実行ファイルが生成される様になりました。
有り難うございました。

747:デフォルトの名無しさん
08/04/17 00:53:24
ファイルから読み込んだ文字列から数字を取り出す方法を教えてくれないか

[100,100]

こんな感じの文字列なんだが

"[%d,%d]"

こんな書式を使って文字列から数字とか文字列とか取り出せるCの関数ってなんだっけ?

もし、C++だったら別のいいやり方があったらそっちを教えてくれたら嬉しい。

748:デフォルトの名無しさん
08/04/17 00:58:11
自己解決、sscanfだ!

749:デフォルトの名無しさん
08/04/17 03:33:25
スクリプト処理させるなら","やらスペースやら"[" "]"やらでトークン識別して
個々の文字列をatoiとかで読み取らせる方がいいよ

750:デフォルトの名無しさん
08/04/17 08:14:17
sscanf()で%[]や%nを駆使する方がましな希ガス。

751:デフォルトの名無しさん
08/04/17 08:38:20
sscanfは黒歴史だよ

752:デフォルトの名無しさん
08/04/17 08:48:49
Cスレ行け

753:デフォルトの名無しさん
08/04/17 14:51:45
>>750
入力ミスのチェックとか考えると自前で文字列解析処理作った方がいい
仕事でスクリプターが別にいる場合とかはチェック必須だしな

754:デフォルトの名無しさん
08/04/18 13:51:12
あるクラス(以下CTest)をdllにして別のプロジェクトでリンクして
使ったときに、デバッグモードの時だけエラーが出ます。

ソースはこれだけなんですが・・・

1: CTest *ptest = new CTest;
2: delete ptest;

2行目実行時に「Invalid Address specified to RtlFreeHeap」
が出力されてブレークします。ヒープ領域の開放が上手くできて
いないような感じかと思ったのですが、具体的にどうしたら
良いのか分からないです。よろしくお願いします。

755:デフォルトの名無しさん
08/04/18 14:04:11
CTestの中身がなんか悪さしているんじゃない?

756:デフォルトの名無しさん
08/04/18 14:36:49
実際のheapいじるメモリ確保がdllと本体側でまたいでんじゃないの?

757:デフォルトの名無しさん
08/04/18 22:27:40
new CTest;

758:モンキー
08/04/18 23:07:11
BorlandのBCC55を使って初めてコンパイルを試みましたが、うまくいきません。
c:\に「cppprog]というフォルダを作成し、そこに「hello.cpp]という名前で
保存しました。
 コンパイル手順として、コマンドプロンプトを開き、スタートメニュー
から「ファイル名を指定して実行」を選び、名前(O)にcmdと入力し、cmd.exe
ウィンドウが開き、プロンプトがカレントディレクトリとして、Documents and
Settings¥木村が表示されます。ここで「cd\cppprog]でEnterキーを押しても
カレントディレクトリは、Documents and Settings\木村のままです。
どこで違った可能性があるかご指摘いただきたいとおもいます。

759:デフォルトの名無しさん
08/04/18 23:10:25
cd c:\cppprog

ですにょjk

760:デフォルトの名無しさん
08/04/18 23:15:10
>>758
木村さん乙。

761:モンキー
08/04/18 23:16:13
758です。間違いました。C:¥>cd \cppprog エンターキーで
   指定されたパスが見つかりません。と表示されました。よろしく
  お願いいたします。

762:デフォルトの名無しさん
08/04/18 23:22:45
タダで使えるBorland C++ Part5
スレリンク(tech板)

Borland C++ Compiler オ ワ タ
スレリンク(tech板)

Borlandにはやられた...
スレリンク(tech板)


763:デフォルトの名無しさん
08/04/18 23:42:37
木村乙

764:デフォルトの名無しさん
08/04/18 23:42:44
すれ違いな気がしなくもない

ってかBC++使ってるやつって
VC++けなす奴が多くてなんか嫌


765:デフォルトの名無しさん
08/04/18 23:46:42
BC++Builderは、あれはRADだと俺は思う。どっちかっつーとVBに近いような。

766:デフォルトの名無しさん
08/04/18 23:55:36
C++使えるんなら、態々VC++使う理由が判らん
マゾか何か?

767:デフォルトの名無しさん
08/04/19 03:32:23
C++使えるんなら? VC++使う理由がわからん?

その日本語がわからん。 中国人か何か?



768:デフォルトの名無しさん
08/04/19 12:00:27
766みたいなキモイのがいるからBC++はさわる気にもならない
VC++使いたくなくても使わなきゃならない場合もあるんだけど
BC++マンセーしてるやつにはそういう状況は想像できないんだろうね

キモすぎ

769:デフォルトの名無しさん
08/04/19 22:06:58
いきなりですが、質問です。

Dim img As New Bitmap(16,16)でビットマップを作成して

img.SetPixel(4, 4, col) でに色をセットして

PictureBox1.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage
PictureBox1.Image = img でピクチャーボックスに拡大表示

するとなんとSetPixelでセットした色が丸くピカーンと光ります。
並べると干渉したりします。

1pixelを四角く表示する方法を教えてくだされ。

リージョン作って黒く塗りつぶしたのを最初に作ったbitmapに描きこむのかなー?
その方法もよくわからんし、助けてー

770:デフォルトの名無しさん
08/04/19 22:21:28
日本語でおk

771:デフォルトの名無しさん
08/04/19 22:39:44
懐かしいコピペだな

772:デフォルトの名無しさん
08/04/20 08:01:03
超初心者的質問で恐縮なのですが、ダイアログボックス表示について質問させてください。
下のように、ダブルクリックしたときにリソースエディタで作成したIDD_DIALOG1のダイアログを
表示させたいのですが、どうすれば表示できるのでしょうか。
開発環境はVisual C++ 2005です。


void CChildView::OnLButtonDblClk(UINT nFlags, CPoint point)
{
// TODO: ここにメッセージ ハンドラ コードを追加するか、既定の処理を呼び出します。

/* ここでダイアログボックスを表示させたい */

CWnd::OnLButtonDblClk(nFlags, point);
}

773:デフォルトの名無しさん
08/04/20 10:46:31
VC超初心者です。
ソリューション、プロジェクトのプロパティで、
構成のデバック、リリースて切り替えることで、なにか変化あるのでしょうか?

774:デフォルトの名無しさん
08/04/20 11:38:20
ファイルサイズが違う。生成されるコードも違う。そもそもデバッグビルドは再配布禁止。

775:デフォルトの名無しさん
08/04/20 13:28:38
>>772
mfc ダイアログボックス

でぐぐれ

776:デフォルトの名無しさん
08/04/21 01:36:45
以前、C++相談室スレでも質問したのですが解決せず、原因はVC++の設定にあるようなので、
こちらで再度、質問させてください。

URLリンク(www.asahi-net.or.jp)
このサイトを見ながらC++の基礎を勉強しているのですが、このページのデストラクタのサンプルプログラムを
VC++2008EEに打ち込んでも「消滅しました」のメッセージが出ないのですが、考えられる原因はありますでしょうか?

ページ内にある2つのプログラム両方で、「生成されました」「呼び出されました」のメッセージは表示されるものの
デストラクタの「消滅しました」に関する部分だけスルーされているように表示されないのです。
筆者の書いたものをコピペしても解決しないうえ、C++相談室スレでの報告によると、
報告者の環境では問題なく表示されているそうです。

宜しくお願いします。

777:デフォルトの名無しさん
08/04/21 01:39:30
とりあえず中間ファイルを消して、
ディレクトリ全体を zip なり lzh なり圧縮してうpしてくれ。

778:デフォルトの名無しさん
08/04/21 02:06:22
>>776
VC2008に原因を求めるよりは、君に原因を求める方が早い。 
打ち込みミスとか、そのまんまなら打ち込みでなくコピペするから、それ以前で何か思い違いがあるとか。
つまり>>777に従ってくれるのが手っ取り早い、と。

#ああ、>>777getしたかった。。

779:デフォルトの名無しさん
08/04/21 02:14:50
C++/CLIなので
デストラクタじゃなくて、ファイナライザが動いてるとか

780:デフォルトの名無しさん
08/04/21 02:32:50
あー、それありそう。

781:デフォルトの名無しさん
08/04/21 02:32:59
…と思ったけど、
どのみちlocal変数だから
デストラクタが呼ばれるか…

ちなみに、 VC2008EE で試してみたけど
いずれもちゃんとデストラクタが呼ばれたぞ。

782:776
08/04/21 03:33:59
中間ファイルというのがよく分らなかったので、とりあえず丸ごとUPしました。
URLリンク(kissho.xii.jp)
DLKeyは「cpp」です。

こういったファイルに個人情報が自動的に含まれてしまうのか分りませんが、
もしあったら削除しておいてください^^;
ちなみに、アップ前にもう一度テストしてみましたが、やはりダメでした。

宜しくお願いします。

783:デフォルトの名無しさん
08/04/21 04:12:53
分かったわ。
デバッグ実行してるだろ?
pause の部分ではまだデストラクタは実行されないから、
そこでは消滅しましたってところは表示されない。
で、何かキーを押したらデストラクタが実行されて表示されるんだけど、
すぐウィンドウが閉じられるからそれを見ることは出来ない。
Ctrl+F5 で実行してみれ。

784:デフォルトの名無しさん
08/04/21 04:26:33
KENT君乙

785:デフォルトの名無しさん
08/04/21 11:03:36
学習過程はC→C++→API→MFCといった順序がよろしいのでしょうか?

786:デフォルトの名無しさん
08/04/21 12:41:26
どんな順序でも覚えられれば何でもいいが、その順序は悪くない

787:デフォルトの名無しさん
08/04/21 13:37:54
>>785
ベストといっても過言ではない

788:776
08/04/21 15:02:24
>>783
pauseがダメだったんですね。。。
ctrl+F5で実行してみます。ありがとうございました。

>>784
そこは分っちゃうんですね^^;


789:デフォルトの名無しさん
08/04/21 17:16:41
Visual studioでコンソールアプリケーションを実行したときに、cmd以外(ckwなど)で実行させる方法ってありますか?

790:デフォルトの名無しさん
08/04/21 17:27:38
実行させるプログラムを書く

791:デフォルトの名無しさん
08/04/21 17:36:21
具体的に何がしたいのか。
パイプを標準入出力として子プロセスでコンソールアプリを動かすのはよくやる。

792:デフォルトの名無しさん
08/04/21 17:43:07
適当にコード書いてF5押してデバッグ開始したら、cmd.exeの代わりに別のもので実行するようにしたいのです

793:デフォルトの名無しさん
08/04/21 18:48:27
ここ初心者スレだし
通常と異なる特殊な使い方の質問はスレ違いとしか思えない

794:デフォルトの名無しさん
08/04/21 18:51:17
普通か特殊かなんて初心者に求めるなよ
Visual C++で書いてんならスレ違いじゃないだろ

795:デフォルトの名無しさん
08/04/21 19:00:15
はっきり言ってスレ違いです

796:デフォルトの名無しさん
08/04/21 19:03:55
cmd.exeが起動されてるんだったらそれを違うものに置きかえるだけ

797:デフォルトの名無しさん
08/04/21 19:11:12
cmd.exe呼んでるかねぇ

798:デフォルトの名無しさん
08/04/21 21:15:18
コマンドプロンプトにprintf命令で文字を表示させたいんだけど、実行するとすぐにコマンドプロンプトが消えます。
getchar()でコマンドプロンプトが消えるのを止めるしかないんですかね?

799:デフォルトの名無しさん
08/04/21 21:27:00
>798
それがwindowsの仕様で正常な動作
別に変でもなんでもないから気にするな
というかコンソールプログラムはコンソールで使うものだ

800:デフォルトの名無しさん
08/04/21 21:29:39
もうVCスレにはFAQでテンプレに入れた方がいいんじゃないかってくらい多い・・・

801:デフォルトの名無しさん
08/04/21 22:46:51
VC++2005とVC++2008ってどっちが使いやすい?
両方触ったことある人に聞きたい

802:デフォルトの名無しさん
08/04/21 22:51:07
機能を使いこなせてないと、どっちも変わらないとおもうぞ。

803:デフォルトの名無しさん
08/04/21 23:33:19
>>802
そっか
それなら最新の2008版にしてみる
情報サンクス

804:デフォルトの名無しさん
08/04/22 01:12:32
C++を学ぶオススメサイトってやっぱ猫でもわかるってヤツ?

805:デフォルトの名無しさん
08/04/22 01:18:48
ねこは嫌

806:デフォルトの名無しさん
08/04/22 02:31:19
wisdomsoftってとこで今勉強してるけどこれ良いんだろうか

807:デフォルトの名無しさん
08/04/22 02:49:31
Kitty on your lap か? 俺は使い方とかの参考で世話になった。

俺の経験を言わせて貰えば、猫もそうだけど、この手のサイトは函数の使い方の確認にして、
詳細はMSDNみたり、実際に簡単なテストコード組んでためしたほうがいい。

808:デフォルトの名無しさん
08/04/22 03:33:09
コンソールアプリ作るならまずはDOS窓使いこなせよ

809:デフォルトの名無しさん
08/04/22 05:18:24
C++ を学びたいのか Windows プログラミングを学びたいのかで
大きく変わってくるな。

810:デフォルトの名無しさん
08/04/22 09:26:52
>>798
これが最後だぞ
つ【Ctrl + F5】

811:デフォルトの名無しさん
08/04/22 09:49:25
main()の最後にブレークポイントとかな

812:デフォルトの名無しさん
08/04/22 09:50:36
>>808
DOS窓じゃなくてコマンドプロンプトって言え

813:デフォルトの名無しさん
08/04/22 11:10:39
ちわ、MSに氏ね氏ねメールを送るところでした
マネージ形式でデバッグ中に中断してソースを変更してデバッグ開始すると
第2コンパイラが中間言語を解放しなくて(?
exeファイル削除できない>exeを作成できない>デバッグできないという状態になり
ログオフログオンをしないとデバッグが出来なくなり1日苦しみました
ちゃんとデバッグを停止しないといけないんですね、僕だけですか
これからお世話になると思いますがよろしくです、でわでわ

814:デフォルトの名無しさん
08/04/22 20:12:22
タスクマネージャで~.vhost.exeを殺せばええやん。

815:デフォルトの名無しさん
08/04/22 20:12:33
なんなんだこれは

816:デフォルトの名無しさん
08/04/22 22:47:36
おにいさんおねいさん、
ファイル操作について質問です。

-条件-
ログファイルがあって、アプリは1行書くごとにopen/write/closeを行います。
エラーが発生した際とアプリの開始・終了時に書き込みを行います。
ログファイルはサーバーPCに保存され、アプリ利用者(クライアントPC)からログファイルを見ることはできません。
保守担当がリモート接続でのみ見れます。

-質問内容-
アプリ起動中にログを見たいのですが、メモ帳などで見てしまうと、
排他がかかってしまい、アプリが書き込めません。
書き込みエラーでアプリが強制終了してしまいます。
どうしたらよいでしょうか?
ファイルが書き込み可能になるまでループさせるのがよいでしょうか?
今はファイルをコピーして、「コピー ~ AAA.log」を見ています。
ファイル操作はMFCを利用しています。
おにいさんおねいさんよろしくです><

817:デフォルトの名無しさん
08/04/22 22:50:26
CreateFileのFILE_SHARE_READ属性

818:デフォルトの名無しさん
08/04/23 08:35:19
コピーできてるんなら読めないわけないだろ

819:デフォルトの名無しさん
08/04/23 12:23:02
>どうしたらよいでしょうか?
メモ帳で見なければ良いんじゃないか
ログに対して外部から書き込みする必要が無ければ
排他ロックのかからないファイルオープンをするビューアーを探すか、作ればいい
>ファイルが書き込み可能になるまでループさせるのがよいでしょうか?
ファイル処理で、そういう作り方はする場合は結構ある(書き込みも指定サイズ書き込むまでループとか)
どちらにしても、タイムアウトは忘れずに
>今はファイルをコピーして、「コピー ~ AAA.log」を見ています。
べつにこの方法で問題なければこれで良いような気もするが
ログを間違えて編集してしまう危険性が低くなるわけだし

820:デフォルトの名無しさん
08/04/23 13:10:39
メモ帳で開いても排他なんてかかったか?

821:デフォルトの名無しさん
08/04/23 14:12:33
>>801

2008の方が容量小さくね?
2005のプラットフォームSDKがファイルでかすぎる

822:デフォルトの名無しさん
08/04/23 14:20:08
>>808

漢はフロッピー一枚で作る

823:デフォルトの名無しさん
08/04/23 14:22:36
#include <stdio.h>

void main(){
int tdn;

for (tdn=0;tdn<100000;tdn++){
printf("アッー!");
}
}

824:デフォルトの名無しさん
08/04/23 17:26:46
vectorの配列を作ろうと思い

vector<vector<string> > vecStrDim;
vector<string> vecStr;
string strTest = "test";

vecStr.push_back(strTest);
vecStrDim[0].push_back(vecStr);

とやってみました。コンパイルは通るのですが
This application has requested the Runtime to terminate it in an unusual way.
Please contact the application's support team for more information.
とでて実行してもデバッグエラーになります

vecStrDim[0].push_back(vecStr);が悪いのはわかるのですが、方法が思いつきません
どうすればデバッグエラーを対処できるのでしょうか?

825:デフォルトの名無しさん
08/04/23 17:40:09
字が読めないのか?
Please contact the application's support team for more information.
Please contact the application's support team for more information.
Please contact the application's support team for more information.
Please contact the application's support team for more information.
Please contact the application's support team for more information.

826:デフォルトの名無しさん
08/04/23 18:56:09
>824
C++のスレあるだろ

【初心者歓迎】C/C++室 Ver.59【環境依存OK】
スレリンク(tech板)

827:デフォルトの名無しさん
08/04/23 18:57:45
>>826
申し訳ない、スレ違いでしたか


828:デフォルトの名無しさん
08/04/23 20:04:26
×vecStrDim[0].push_back(vecStr);
○vecStrDim.push_back(vecStr);

ビルドが通るのはおかしい。どういう環境?

829:デフォルトの名無しさん
08/04/23 20:29:39
>>828
vector<vector<string> > vecStrDim





[10];

ってなってたです。

830:816
08/04/23 23:15:55
サーバーにはエディタ含めサーバーAP以外をインストールしてはいけない契約になってて、
Windows標準のメモ帳やワードパッドでしか見れない状況です。

書き込み時のエラーを回避して正しく書き込めればいいので、
失敗したらどこかに、、
って自分で書いてて気が付きました><
メモリに持たせておいて排他が解除されたときに書けばいいですねっ!

おにいさんおねいさんありがとですっ(^-^)

831:デフォルトの名無しさん
08/04/23 23:44:07
>>830
> メモリに持たせておいて

書く前に異常終了したら、そのログなくなってしまうからそんな解決策は
ダメダメだろ。

せっかく >>817 がヒント書いてるんだから、ちょっとぐらい調べたのか?

さっぱりわからんと言うなら、コピーしてメモ帳開くバッチファイルでも
作るほうがマシ。

832:デフォルトの名無しさん
08/04/23 23:53:43
プログラムの一番最後に入れるだけじゃなく、cin命令を使ったあとにもgetchar()を入れないと、実行でコマンドプロンプトが消えるがなぜ?

833:デフォルトの名無しさん
08/04/24 00:15:44
>>832
cinなどは改行文字を喰い残すから、その喰い残しの改行文字が(処理停止のための)入力で喰われてしまうから。

834:デフォルトの名無しさん
08/04/24 08:28:27
>>830
メモリに確保するくらいなら、書き込み用のファイルと
閲覧用ファイルを別個に用意して
書き込み用に書いた後に、閲覧用にコピー
失敗したら、時間を置いてコピー
の方が良いな

835:デフォルトの名無しさん
08/04/24 09:33:26
ちわ、>>813です
>>814さんのアドバイスを生かすことが出来ず力不足を感じてます
どうやらメモリが足りなかったみたいでセキュリティソフトを切ったら調子良いです
詳しいことは分からずじまいで悔しいです
Vistaでメモリ1Gじゃ辛いですかね

今はこんなソフトを作っています、まだソースには手を付けてませんが
URLリンク(www.dotup.org)
年内には何とか・・・でわでわ

836:828
08/04/24 20:09:20
それだったらエラーにはならないけどな。(.net 2003)

837:デフォルトの名無しさん
08/04/29 23:02:10
VS2005なんですが
なにか押したらソース内のtabが「→」に,スペースが「・」になってしまいました
これはどうやったら元に戻るんでしょうか

838:デフォルトの名無しさん
08/04/29 23:09:49
>>837
どこかで反対の質問を見たような気がするが、ctrl+r ctrl+w なのだ

839:デフォルトの名無しさん
08/04/30 09:11:18
質問です。

組込みプログラムでは一定時間たったら処理をするというタイマー割り込みができるのですが、
VisualC++2005のMFCでもそういった一定時間たったら処理ってのはできますか?


840:デフォルトの名無しさん
08/04/30 09:14:35
とんぜん

841:839
08/04/30 09:56:05
WindowsアプリケーションではツールボックスにTimerがあったと思うんですが、
MFCだとそのようなコントロールが見当たらないのですが。

どのようにやったらいいですか?

842:デフォルトの名無しさん
08/04/30 10:05:18
APIで対応してるって 一定時間停止やシグナル発生まで待ちとかできる

843:デフォルトの名無しさん
08/04/30 10:27:26
組込みの割り込みに相当する機能あるのかな・・・?
SetTimer()だと、設定時間経過後にWM_TIMER発行するだろうけど、
実行中の関数を中断して割り込んで来ないし

844:デフォルトの名無しさん
08/04/30 10:30:13
>>843
リアルタイムOSじゃないのにそんなレベルの割り込みなんて期待しないでください。

845:デフォルトの名無しさん
08/04/30 10:32:59
APIならCreateWaitableTimer

MFC(Windowタイマかな)を使う方法は説明しづらいので検索してみて。
TimerというコントロールはMFCでは使えない。

846:デフォルトの名無しさん
08/04/30 10:40:05
>>839
素直に、RT系ライブラリ組み込んだ方が良いよ
一時期、クリティカルにA/D値を1msでサンプルするソフト作ってたけど
どうやっても、windowsに制御が移ってしまうのに対応できなくて、結局RTライブラリ組み込んだ

847:デフォルトの名無しさん
08/04/30 10:55:15
>>843
そんな機能はAPIレベルではない
マルチスレッドにして、割り込みをOSに期待するしかない

848:デフォルトの名無しさん
08/04/30 12:35:26

Microsoft Visual C++ Toolkit 2003
fURLリンク(195.252.112.9)

VCToolkitSetup.exe

size 32952488
sha1sum 956c81c3106b97042c4126b23c81885c4b5211f4

edonkey checksum
ed2k://|file|VCToolkitSetup.exe|32952488|c534888fa7605403dcb183d2d15282d1|/





849:839
08/04/30 13:37:24
皆さんありがとうございます。

ちなみにやりたいことはいろいろテストしてて、
その途中でエラー出したら即終了したいんですよ。

で、エラーフラグを作って定期的にそれを見に行って、
エラーが出てれば終了にしたかったのです。


850:デフォルトの名無しさん
08/04/30 14:03:45
>>849
エラーを検出したら終了すればいいだけじゃん。
エラー監視の必要はないと思うのだけど。
# その為に例外機構があるのだし、変な小細工を弄する前にちゃんと言語の勉強しようよ。

851:デフォルトの名無しさん
08/04/30 17:13:48
組込みと言ってるから外部の機器なんかを監視するんじゃないかな

852:デフォルトの名無しさん
08/04/30 18:14:20
>>849
素直にマルチスレッドで作ったら?

853:デフォルトの名無しさん
08/04/30 18:41:03
CreateDialogでダイアログを作って、
親ダイアログを表示した後に子ダイアログを表示させたいんですけど、
WM_INITDIALOGが来た後に必ず来るメッセージってありますか?



854:853
08/04/30 18:42:12
失礼。
CreateDialog()じゃなくてDialogBox()でした。


855:デフォルトの名無しさん
08/04/30 18:54:18
WM_INITDIALOGじゃだめなんだろうか

856:デフォルトの名無しさん
08/04/30 18:56:12
WM_INITDIALOGでユーザーメッセージを自分にPostすれば?

857:853
08/04/30 19:08:35
一応、
WM_INITDIALOGでの処理の最後で自作のウインドウメッセージをPOSTし、
そこで子ウィンドウを作成する処理を書いたんですけど、変わらず
親ウインドウ表示の前に子ウィンドウが表示されてしまいました。

858:デフォルトの名無しさん
08/04/30 19:14:57
そんなに表示される順序が大事なら
WM_SHOWWINDOW使って判定しろ。

859:849
08/04/30 21:04:44
>>850
エラーがどこで出るかわかんないんでエラーを常に監視したいんです。
で、エラーが出たらもちろん終了させます。


860:デフォルトの名無しさん
08/04/30 21:16:01
エラーと言ってもいろいろあるから話が通じない

861:デフォルトの名無しさん
08/04/30 21:16:40
常に監視したいという割には、
タイマーなんてたまにしか呼び出されないものを使おうとする意図がよくわからん。

で、エラーというのは具体的に何?
関数なんかがエラー値を返すというならmallocみたいにきちんと戻り値確かめろ。
C++例外ならキャッチしろ。アクセス違反なんかならSEHとかで同様に捕まえられる。

862:853
08/04/30 21:17:53
とりあえずいろいろ試してみます。

コメントありがとうございました。

863:デフォルトの名無しさん
08/04/30 21:48:15
すみません。C言語の基礎を一通り覚えたところで
C++を始めようと思って調べだしたのですが
ただ文字の出力を行うだけでも
Console::Write("");

cout<<"";
があってどちらの勉強をしていけばいいのか混乱しています。

勉強するにあたって参考になるサイトがあれば教えて欲しいです。

864:デフォルトの名無しさん
08/04/30 21:54:34
どっちも使わない

865:デフォルトの名無しさん
08/04/30 21:57:49
TextOutかDrawTextかSetWindowTextあたりを使う
他にもあるかも

866:デフォルトの名無しさん
08/04/30 21:57:55
どっちでもいいけど世の中の書籍ではcout<<"";使ってる方が多いからこっち使っとくのお勧め。

867:デフォルトの名無しさん
08/04/30 22:00:13
というかConsole::Writeが使えるC++コンパイラと言えば、VC++しかない罠。
要.NET Frameworkだし。

868:デフォルトの名無しさん
08/04/30 22:03:10
ということは基本的にメジャーなcout<<"";からはじめているC++の入門サイト
からはじめたほうがいいということですね!
できればオススメの書籍なんかも教えて欲しいのですが・・・これから買おうと
思っているので参考にしたいです。

869:デフォルトの名無しさん
08/04/30 22:04:18
Nクイーン問題を解くプログラムの一番分かりやすい(オススメ)サイトあります?

870:デフォルトの名無しさん
08/04/30 22:07:53
単にC++を勉強したいならcoutでじゅうぶんだろうけど
VC++ではほとんど使わない

871:デフォルトの名無しさん
08/04/30 22:15:44
>>870
C++とVC++の違いがわかりませんorz


僕はゲームプログラミングの勉強をしたくてC言語をいままで独学でやって
きたんですが今日図書館で借りた「アドベンチャーゲームプログラミング」
という本の内容を見てまったく理解できず

 Cを今までやってた意味ってあったのかな・・・と思い、基本はだいたい
把握できたはずなので、C++に踏み出そうと決めました。
正直今、勉強の方向性を見失ってる状況でもあります。

872:デフォルトの名無しさん
08/04/30 22:30:31
C++はプログラミング言語の1つ。
VC++は、MicrosoftのC++コンパイラ、IDEなどがセットになった製品。

873:デフォルトの名無しさん
08/04/30 22:30:56
>>868
最近、本を出したロベールさんのとこはどう?

874:デフォルトの名無しさん
08/04/30 22:38:40
>>872
回答有難うございます。
C++が言語でVC++がコンパイラだということがわかりました!
細かいことはやっぱり二つとも使ってみないとわからないですよね・・・><

>>873
回答有難うございます。
とてもわかりやすいサイトですぐにでも始めたくなりました!


875:デフォルトの名無しさん
08/04/30 22:56:53
教えてください
オフスクリーンビットマップは最大幅4000pixelくらいまでしか扱えないようですが
もっと大きい画像を表示させたい場合どうすればよいのでしょうか・・・

876:デフォルトの名無しさん
08/04/30 23:07:08
coutでゲームプログラミング

877:デフォルトの名無しさん
08/04/30 23:09:10
>>876
入門はハローワードからでしょ;;

878:デフォルトの名無しさん
08/04/30 23:45:56
というかConsole::WriteはC++/CLIで、C++を含んではいるが別言語と思ったほうがいい。

879:デフォルトの名無しさん
08/05/01 00:36:46
>>838
ありがとうございます
助かりました

880:デフォルトの名無しさん
08/05/01 04:00:43
文字出力はprintf()しか使わない

881:デフォルトの名無しさん
08/05/01 04:05:30
>>871
ゲームプログラミングをするなら
まずはバイナリデータの扱いに慣れる事だな
2進数、16進数、アドレス、ポインタについても知っておく必要がある
最低でもこれらを理解していないとどうしようもない

882:デフォルトの名無しさん
08/05/01 04:09:09
>>871
C++とVC++は別
いくらC++を勉強してもVC++ができる訳ではない
DirectXとWindowsAPIをやらないと出来ない

883:デフォルトの名無しさん
08/05/01 04:17:33
>>869

URLリンク(www.ic-net.or.jp)

884:デフォルトの名無しさん
08/05/01 04:24:34
バイナリデータやC++はゲーム作るのに必ず必要とは限らない
HSPやDarkGDKを勧める

【HSP】HSPで3Dゲーム 2 【3D】
スレリンク(gamedev板)

DarkGDK
スレリンク(tech板)

885:デフォルトの名無しさん
08/05/01 04:58:47
>>884
わざわざC言語からゲーム作ろうとする人は
ゲーム作るってのはあくまでモチベーションを保つための目標であって、
C言語習得が目的だと思っているんだがどうか

886:デフォルトの名無しさん
08/05/01 05:44:21
何やっていいか知らないだけ

887:デフォルトの名無しさん
08/05/01 05:55:23
>>884
ゲームプログラミングの「勉強」をするのには向いてないだろ
楽にゲームをつくりたいならそれでもいいが

HSPはともかくDarkGDKの方は日本人の初心者に勧めるのはどうかと思うしな

888:デフォルトの名無しさん
08/05/01 06:12:35
Dark GDKはDirectX9cフルサポート。マイクロソフトVS2008/VC++のオプションとして無料配布。
初心者を強く意識した設計になっているので、あとは日本語の入門書でもあれば、小学生がひとりで、
3Dゲームを作ってしまう、なんてこともできそうです。もともと DarkBasic というホビーユーザー向けのゲーム開発ツールがあって、
その開発スタイルを C++ に持ってきたのが DarkGDK ということらしいですが、悪くありません。
URLリンク(myhome.cururu.jp)

889:デフォルトの名無しさん
08/05/01 06:40:06
あっそ

890:デフォルトの名無しさん
08/05/01 08:29:36
listviewで一行に大きいアイコン小さいアイコンを表示するにはどうしたらいいですks?
┌─┐  
│   │  ┌─┐
│   │  │ ..│  ┌┐
└─┘  └─┘  └┘

また代替方法があったら教えてください

891:デフォルトの名無しさん
08/05/01 10:13:38
>>885
俺は逆だったけどね
プログラムは手段であって、ゲームを作るのが目的
思い起こせば20年前、イースを自分で作りたいと思ってマシン語をやり始めたのが懐かしいw

892:デフォルトの名無しさん
08/05/01 10:14:45
ふつうはなるべく実用的な速度が出せて完成されられるやつ選ぶよな

893:デフォルトの名無しさん
08/05/01 10:16:20
>>890
アイコンを小さく描画した大きいアイコンを使う。
それかオーナードローとか。

894:デフォルトの名無しさん
08/05/01 10:16:59
趣味ならHSPでもいいだろうし、ゲームツクールでもいいだろ
プログラムを仕事にしたいならC/C++だろう

895:デフォルトの名無しさん
08/05/01 11:18:05
本当にゲーム業界に入るのを目指してるなら、
最初からVC++とDirectXで組むくらいでいかないと。
それでできないなら辞めた方がいい。
趣味なら別になんでもいい。

896:デフォルトの名無しさん
08/05/01 12:14:57
>>892
ゲームプログラミングって、結局そこなんだよ
最初に、簡単な言語をつかってソフト組んで見る
で、おもったよりスピードが出ないのでほかの言語でためす
で、最後にアセンブラ最強!と叫ぶ

897:デフォルトの名無しさん
08/05/01 12:47:18
最初から出来る限りのスピードが出る言語で組む
動作環境を推定する
デザイナーにその環境内で動作可能なデータを指示する


最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch