★初心者にVisual C++を教えるスレ★ Part28at TECH
★初心者にVisual C++を教えるスレ★ Part28 - 暇つぶし2ch381:デフォルトの名無しさん
07/12/29 12:47:43
switch caseのcase内でreturnする際にもbreakをつけたほうがいいでしょうか?

382:デフォルトの名無しさん
07/12/29 13:13:12
>>381
VCというより、Cの話だな。
当然、イラン

383:デフォルトの名無しさん
07/12/29 13:54:43
>>382
ありがとうございました。

384:337
07/12/29 15:32:24
>>345
そうですね……似たようなコードを自分で書くことにします。

385:デフォルトの名無しさん
07/12/29 15:34:47
VC++6.0です。
非MFCでモーダルダイアログを作成したいのですが、
DialogBoxとリソースを使わずにCreateWindow(Ex)で作る事は出来ますでしょうか・・・?
拡張スタイルにTOOLWINDOWを使うと、コントロールメニュー無し・タイトルバーあり・閉じるボタンのみありを作れるものの。
タイトルバーが小さな感じになってしまい、他のスタイルを何通りか試してみても、
コントロールメニューが残ったりと再現が出来ません。

マクロと書いてあったので、どうにか出来るかなと思って試行錯誤してますが、どうもこれと言った設定が見つかりません。
助言頂けたら幸いです。

386:デフォルトの名無しさん
07/12/29 17:33:55
>>145
むちゃくちゃ遅いですが回答ありがとうございました><

387:デフォルトの名無しさん
07/12/29 21:21:13
>>377
変にオプションをいじっていなければ、exeだけ。
ただし、別途ランタイムが必要。

388:デフォルトの名無しさん
07/12/29 21:54:00
x64でインラインアセンブラは使えないんですか?
まだ対応してないというだけで、新しい2008では使えるんですか?

389:デフォルトの名無しさん
07/12/29 22:07:42
>>388
使えないよ。
MSは組み込み関数を使えってスタンスなんだと理解してる。

390:デフォルトの名無しさん
07/12/29 22:54:36
>>380
ありがとうございました。

391:デフォルトの名無しさん
07/12/30 13:27:33
VS2005MFCです
カスタムコントロールのサイズを取得する、関数って準備されてない?

392:デフォルトの名無しさん
07/12/30 13:29:28
>>391
■MFC相談室 mfc18d.dll■
スレリンク(tech板)

393:デフォルトの名無しさん
07/12/30 17:08:00
visual c++ 5.0 express
だとメイクファイルのエクスポートってできないんですか?
どのバージョンならできます??

394:デフォルトの名無しさん
07/12/30 20:16:30
VC6.0は少なくともできる。ってか5でもできると思うけど持ってないから何とも・・・

395:デフォルトの名無しさん
07/12/30 22:57:37
express ???????????????????

396:デフォルトの名無しさん
07/12/31 01:41:41
Visual C++ 2005 Express Editionについて質問します。

昨日始めたばかりで右も左もわかりませんが、よろしくお願いします。
コーディングする時に、スペースを打つと・が表示され、
TABを打つと、→が表示されますが、これを消すにはどうすればいいんでしょうか?

分かりにくかったらすいません、よろしくお願いします。。。


397:デフォルトの名無しさん
07/12/31 01:56:45
[編集]-[詳細]-[スペースの表示]

398:396
07/12/31 02:01:36
ググろうにもどうやってググればいいのか分からなくてほんと困ってたんです。

>>397さんありがとですmm

399:デフォルトの名無しさん
07/12/31 03:08:41
>>394
ありがとうございました。

400:デフォルトの名無しさん
07/12/31 06:27:05
VC2008のExpression Editionで生成した.exeファイルを、開発した計算機以外で実行させるにはどうしたらよいでしょうか?
現状では『アプリケーションの構成が正しくないため・・』というエラーメッセージ表示と共に止まってしまいます。

取りあえずググった結果、2005では 構成プロパティ->ランタイムライブラリ の項を『マルチスレッドMT』にする事で解決できるという記事を目にしたので試して見たのですが、
実行できるようになっただけで、正しく動きません。
(.exeファイルをエントリポイントとした、いくつかの.dllで構成されたアプリケーションなのですが、.exeファイルの機能だけが実行されていて、他の.dllの機能が実行されている様子がない。因みにこれら.dllファイルもマルチスレッドMTで構成しています)

これは2008では有効な対処法方ではないのでしょうか?それとも自分が開発したアプリに問題があるのでしょうか?

どなたか解決方法に心当たりございましたら、御教授の程宜しくお願い致します。

401:デフォルトの名無しさん
07/12/31 06:37:15
>400 はスルーしとけ
答えてやってももろくなことはないぞ

402:400
07/12/31 06:56:31
何か問題ありましたでしょうか・・・

403:デフォルトの名無しさん
07/12/31 09:00:38
>何か問題
対処法方
心当たりございましたら
御教授の程

404:デフォルトの名無しさん
07/12/31 10:37:06
>>400

多分、共有ライブラリのバージョンが合つてない。
とりあえずスタティックリンクにすれば直ると思う。


405:デフォルトの名無しさん
07/12/31 10:50:33
実行ファイルには、単純にDLLのインポートライブラリをリンクしただけなのか、
起動後に動的に読み込ませているのか、はっきりしる。
C++/CLIなのか、MFC使っているのか、そこらへんも全て書け。
>.dllの機能が実行されている様子がない。
何を根拠に?

406:デフォルトの名無しさん
07/12/31 11:32:51
Visual C++ Express Editionの2008と2005、どちらを使おうか迷っているのですが、
C言語とDirectXの勉強に使うには、2008と2005どちらの方が良いですか。

407:デフォルトの名無しさん
07/12/31 11:38:58
>>406
どっちも使って使いやすいほうにすれば?その為の無料なんだし

408:デフォルトの名無しさん
07/12/31 11:47:11
今って2008のExpressってのも出てるのか
知らんかった

409:デフォルトの名無しさん
07/12/31 11:54:52
2005じゃないの、今なら、勉強用なら

410:デフォルトの名無しさん
07/12/31 12:12:28
>>409
2008は扱いが難しいのでしょうか。
それとも、2005の方が情報が多くて問題解決がし易いという意味ですか。
2005の方が問題解決のヒントが多いのであれば、2005の方を使ってみます。

411:デフォルトの名無しさん
07/12/31 12:29:11
まあそりゃあ多いだろうよ

412:デフォルトの名無しさん
07/12/31 13:34:39
勉強していくなら情報が転がってる2005のほうがいいでしょ
2008でやっていくなら自分でその情報を発信する側になるぐらいの勢いないとな

413:デフォルトの名無しさん
07/12/31 13:35:52
2008はでたばかりだしね

414:デフォルトの名無しさん
07/12/31 14:50:38
VCって無料(フリー)のソフトですか?

415:デフォルトの名無しさん
07/12/31 14:51:13
いいえ


416:デフォルトの名無しさん
07/12/31 14:54:47
機能制限された無料版もあるソフトです

417:デフォルトの名無しさん
07/12/31 14:55:19
ありがとうございます

418:デフォルトの名無しさん
07/12/31 15:11:59
Visual C++ 2005 Express Edition、Windows SDKの環境での質問です

リソースエディタでタブコントロール付きのダイアログボックスというものを
作ってみたのはいいのですが、これをアプリケーション内で利用するにあたり、
MFC等を使わずに実装する方法がよくわかりません
別のダイアログを貼り付ける、みたいな話はあるようなのですが
実際どのようにコーディングするのかがわからないのです

タブコントロール実装のためのコーディング手順などを教えていただきたいです
長くなるようでしたら、このあたりがわかるようなサイトなどありましたら教えて下さい
よろしくおねがいします

419:デフォルトの名無しさん
07/12/31 15:34:26
知ってるけど教えようがない

420:デフォルトの名無しさん
07/12/31 15:39:29
コーディング手順ってのもまた珍妙な語だな、考えてみると

421:デフォルトの名無しさん
07/12/31 16:43:56
だいたいはプロパティシートを使うんじゃないの。

422:デフォルトの名無しさん
07/12/31 16:50:56
MFC等を使わずに実装する方法がよくわかりません

423:デフォルトの名無しさん
07/12/31 17:09:19
タブはボタンみたいなものだよ
ボタン押した時に何をするかは作る人の勝手だし、
タブで何をするも作る人の勝手

424:418
07/12/31 17:51:23
質問の仕方が悪かったでしょうか?
普通にリソースエディタでタブコントロールを追加したダイアログボックスを
ただDialogBox()関数で呼び出しても、何もない四角が表示されるだけなのですが、
これを選択できる状態にするには具体的にどういった手順を踏めばよいのか、
別のダイアログボックスを貼り付けるにはどうすればよいのかが知りたいです。
よろしくお願いします。

425:デフォルトの名無しさん
07/12/31 18:17:52
>>424

URLリンク(www.kumei.ne.jp)

↑直接的にはこれだけど、他のページも見てみると良いよ。


426:418
07/12/31 19:52:13
>>425
ありがとうございます
そのサンプルだとタブコントロールの作成自体が自前だったので多少混乱しましたが
GetDlgItem()でリソースエディタで作ったタブのハンドルを取得する事で
項目追加については解決しました

そちらのソースを見た感じだとタブ用のウィンドウの上に後からボタンを作っているようなのですが、
リソースエディタ上でタブの上に見えるようにボタンを配置し、それを表示非表示で切り替えたり
する事はできないのでしょうか?

手動で作るか、別のダイアログを固定位置の子ウィンドウとして呼び出すとかしかないでしょうか

427:デフォルトの名無しさん
07/12/31 20:13:34
そりゃ、ShowWindow(GetDlgItem(**),SW_HIDE)とか駆使しればできるだろうけどさ。
ダイアログエディタが混雑するぜ。

428:デフォルトの名無しさん
08/01/01 14:40:45
MSDNて使いにくいね。
特にC言語やC++言語の標準ライブラリの調べにくさはC++Builderのヘルプの比ではない。

429:418
08/01/01 15:17:20
ダイアログをタブコントロールの子ウィンドウとして呼び出して
なんとか実装できました
どうもありがとうございました


430:デフォルトの名無しさん
08/01/01 22:07:34
VC関係のサイトを回っていると、何の説明もなく

throw "あいうえお";

みたいな記述を良く見るのですが、これはどういう意味なのでしょうか?
プログラムを実行させるとランタイムエラーメッセージが出て処理が止まるのはいいのですが
たとえば配布したプログラムでこのthrowが呼び出されてしまったときに、
この"あいうえお"という文字列は、何をもって確認するのですか?

431:デフォルトの名無しさん
08/01/01 22:09:12
>>430
VC以前の問題。
throwって知ってる?

432:デフォルトの名無しさん
08/01/01 22:09:43
おおもと(mainとか)でcatchしとくんだろ。
char*を投げるのはあんまし感心しないけど。

433:デフォルトの名無しさん
08/01/01 22:15:06
正直throwというのが良くわからないです
この場合どういう効果があるのでしょうか
ランタイムエラーメッセージが出る時にthrowで送られた情報が
そのメッセージの中で見られるのかと思ったのですが、見られないのですか?

434:デフォルトの名無しさん
08/01/01 22:16:34
throwはC++の機能、try/chatchあたりでも勉強してくればいい
当然の如くVCには全く関係ないから

435:デフォルトの名無しさん
08/01/01 22:26:20
char*とか、std::exception継承クラスならともかく、かってな
ユーザオブジェクトを投げられたら、いずれにせよランタイムは
情報を出すことが出来ないからなー。

436:デフォルトの名無しさん
08/01/01 22:36:15
throw知らね、って言ってる人には分かる内容じゃないだろうな。

437:デフォルトの名無しさん
08/01/02 09:12:15
・XPでパスワードLOOK中かどうか判断する方法(ctrl + del + altのあれ)
わかる方お願いします。ヒントだけでも結構です。



438:デフォルトの名無しさん
08/01/02 11:37:22
スロー(throw)だけじゃなくてスルー(through)も一部では需要ありそうだなw

439:デフォルトの名無しさん
08/01/02 11:40:09
MSDNのLockWorkStationの解説より
>There is no function you can call to determine whether the workstation is locked

440:デフォルトの名無しさん
08/01/02 15:38:52
結局,関数の宣言の際に例外仕様ってつけるべきなんですか?

441:デフォルトの名無しさん
08/01/02 15:41:36
宣言関係ないと思うが、、、仕様どおりでおk
誰が作って誰が使うかによってかわるし、こうしろという決まりごとはないよ。

442:デフォルトの名無しさん
08/01/02 22:58:47
>>440が言ってるのって、
void hoge() throw()
見たいなのじゃないの?

C++FAQ第二版で例文がそう記述されてて、
試してみたら(コンパイラに言われたんだか誰かに言われたんだかネットで見たんだか定かでない)けど
「古い記述方法」
という感じだった。 凄くうろ覚えでゴメン。

443:デフォルトの名無しさん
08/01/03 05:48:25
>>442
そう.それ.
例外仕様を頑張って記述したところで,例外仕様の部分って
関数の型としては扱われないし,何かつけてて意味あるのかなって.

444:デフォルトの名無しさん
08/01/03 17:20:05
別スレから、こちらに書き込みます。

リソースの編集したいのだが、
RCの中から、そこいらのヘッダをインクルードしてるファイルだと
フリーソフトではエラーが出て読み込めない。

どうしたら良いですか?
 あきらめたほうが良いですか?お金はびた一文も出しませんので
お金がかからない何か良い方法はないでしょうか?


445:デフォルトの名無しさん
08/01/03 17:20:42
>>444
あきらめた方がいい

446:デフォルトの名無しさん
08/01/03 18:43:29
テキストファイルだから手動でコピペするだけ

447:デフォルトの名無しさん
08/01/03 23:26:43
自分はプロジェクトのプロパティ(コンパイルオプションとか)
をプロジェクトごとに指定することはあまりやらなくて,
あらかじめ用途ごとの vsprops ファイルを作っておいて
組み合わせて適用しているのですが,そうすると
プロジェクトごとに最初から指定されているオプションがうざいです.

デフォルトで全部「親から継承」に簡単にすることってできないんでしょうか?

448:デフォルトの名無しさん
08/01/04 21:16:05
C++/CLIでファイルから特定の文字列を検索する部分なのですが、
C++/CLIのStringクラスのCompare(ryメソッドでは、
完全一致は探すことができたのですが、部分一致を探し出すことができませんでした
Cのstrstr関数やC++STLのStringクラスのfindメソッドのような、
文字列から文字列を探すことのできる、C++/CLIのクラスメソッドはないのでしょうか?

449:デフォルトの名無しさん
08/01/04 21:42:44
>>448
単にオーバーライドを見つけられていないだけな気もするけど、一応。

ファイルの内容が全てメモリに収まる程度という前提なら、
内容をSystem::Stringに全部押し込んだ後で、System::String.IndexOfか?
System::Text::RegularExpressions辺りで一気にやるほうが楽かもしれん。

450:449
08/01/04 21:44:22
オーバーロードだった orz

451:448
08/01/04 22:20:11
>>449
すぽーんと見落としてました・・お恥ずかしい
読み込むのはファイルの一部だけなので、IndexOfで大丈夫そうです
どうもありがとうございました

452:デフォルトの名無しさん
08/01/05 00:48:48
構成プロパティの文字セットをUnicodeを使用するにした状態で

int _tmain(int argc, _TCHAR* argv[])
{
  _tprintf( _T( "testあいうえお" ) );
  _gettch();

  return 0;
}

というような感じでコードを書いたのですが、
abcまではDOS窓に表示されるんですが、あいうえおが表示されません
Unicodeだとどうすれば日本語も表示されるようになるのでしょうか?

ちなみにマルチバイト文字セットにすると上手く行きます
できるだけマルチバイトでもUnicodeでも正常動作するようにしたいのです
_Tで囲むことで期待通りの表示になるかと思ったのですが…

よろしくお願いします

453:デフォルトの名無しさん
08/01/05 00:51:40
あ、abcではなくてtestでした_| ̄|○よろしくお願いします

454:デフォルトの名無しさん
08/01/05 00:54:21
>>453
本当に表示されてるのはtestだけなんだな? その後に何も表示されてない?

455:デフォルトの名無しさん
08/01/05 00:56:57
>>454
えーと、入力待ちのカーソルが、間隔を開けずにtestの真横に表示されます
文字化けしてでるとかもないです

456:デフォルトの名無しさん
08/01/05 00:57:00
setlocale

457:デフォルトの名無しさん
08/01/05 01:26:48
>>456
ありがとうございます。こんな感じでいいのでしょうか?
一応あいうえおの表示はされたのですが、何か弊害などはありますか?

int _tmain(int argc, _TCHAR* argv[])
{
  _tsetlocale( LC_ALL, _T( "Japanese_Japan.932" ) );
  _tprintf( _T( "testあいうえお" ) );
  _gettch();

  return 0;
}


458:デフォルトの名無しさん
08/01/05 02:29:07
CLRのSystem::Windows::Formsクラスを使用するWindowsアプリケーションでは、
処理は全てFormクラス内のメソッドにまとめるものなのでしょうか?
WinAPIでのWindowsアプリケーション作成もしたことがないので、混乱しています・・

459:デフォルトの名無しさん
08/01/05 02:35:48
好きにしなさい

460:デフォルトの名無しさん
08/01/05 09:36:58
>457
そういうプログラムなら標準Cで作った方が汎用性が高いから
そんな見苦しいことやって喜んでるのはお前ぐらいだと思う

461:デフォルトの名無しさん
08/01/05 10:03:22
マジですか
もはや時代はユニコードだと思っていたのですが違うのですか?

462:デフォルトの名無しさん
08/01/05 10:17:10
自己完結しているアプリなら言語は関係ないだろ
ウェブとか、多言語つかうならユニ

463:デフォルトの名無しさん
08/01/05 10:56:10
VC++の_t系はWindows APIとの整合性を取るためのものだと俺は思っている。

464:デフォルトの名無しさん
08/01/05 14:23:23
COM の BSTR は MBCS ですか? Unicode ですか?
もしくはそういうことは COM の規格の範囲外のことですか?

465:デフォルトの名無しさん
08/01/05 14:25:30
COMの規約ではどうなっているかしらないが、
Win16ではMBCS、Win32以降はUTF-16 (x86ならリトルエンディアン)。

466:デフォルトの名無しさん
08/01/05 14:57:05
>>465
API でいえば hogehogeA と hogehogeW の話ですよね?
主要な COM コンポーネントでも二種類の
インターフェイスが用意されていると思ってたんですが,
そうではないのでどうしたものかなぁ,と.

しかしよく考えたらたとえば MSXML が XML 文書を
受け取るのも BSTR なわけで,その時は文字コードに
よらずなんでも受け取るのだから BSTR は文字コード
を限定しないなにか(32ビットで領域のサイズが
明示的に前置された何か)だと思うことにします.

467:デフォルトの名無しさん
08/01/05 17:56:23
>>457
寝てたわ・・・
プログラムよりも、デフォルトで開くコンソールのコードページの問題だからねえ。

468:デフォルトの名無しさん
08/01/06 02:01:00
猫本見ながら何度もやってるんですが、画像を表示するところで詰まってます><
ビットマップをrcに変換し
LoadBitmapでインスタンスハンドルを取得するところでエラーが出ちゃうんですが
正しい手順教えて下さい><

switch(msg){
case WM_PAINT:
hdc = BeginPaint(hWnd, &ps);
hBmp = LoadBitmap(hInst, "IDB_BITMAP1");
GetObject(hBmp, (int)sizeof(BITMAP), &bmp_info);
w = bmp_info.bmWidth;
h = bmp_info.bmHeight;
hdc_mem = CreateCompatibleDC(hdc);
SelectObject(hdc_mem, hBmp);
BitBlt(hdc, 0, 0, w, h, hdc_mem, 0, 0, SRCCOPY); //描画
DeleteDC(hdc_mem);
DeleteObject(hBmp);
EndPaint(hWnd, &ps);
break;

C:\temp\a.c(102) : error C2065: 'hInst' : 定義されていない識別子です。
C:\temp\a.c(102) : warning C4047: 'function' : 間接参照のレベルが 'struct HINSTANCE__ *' と 'int ' で異なっています。
C:\temp\a.c(102) : warning C4024: 'LoadBitmapA' : の型が 1 の仮引数および実引数と異なります。
cl.exe の実行エラー

開発環境はVisualC++6.0です

469:デフォルトの名無しさん
08/01/06 02:21:40
>>468
> C:\temp\a.c(102) : error C2065: 'hInst' : 定義されていない識別子です。

470:468
08/01/06 02:31:52
ありがとうございました
hInstを宣言したらエラーが消えました。

でも画像が表示されない><

471:デフォルトの名無しさん
08/01/06 03:36:53
宣言しただけかよw

サンプル丸写しして出直して来い

472:デフォルトの名無しさん
08/01/06 04:20:07
せめてhBmpがまともかチェックくらいしたら
たぶん、"IDB_BITMAP1" を MAKEINTRESOUCE(IDB_BITMAP1) にすればいいとは思うが・・・

473:デフォルトの名無しさん
08/01/06 06:24:14
C++/CLIで作ったリストボックスの項目にツールチップ表示をさせる方法ってありませんか?
ググってもMFCとか他言語ばかりで・・

474:デフォルトの名無しさん
08/01/06 07:22:03
>>469
hInstっつーのはそのアプリケーションのメイン関数 _tWinMain()の
引数で渡されているHINSTANCE型の引数のことだよ

これはそのアプリケーションに一つしかないものだから
グローバル変数にでも保持しておいて使えばいい

475:デフォルトの名無しさん
08/01/06 07:22:27
>>458だた

476:デフォルトの名無しさん
08/01/06 07:22:54
>>468だたw寒くて指がずれるw

477:468
08/01/06 16:01:38
>>471さん
サンプルまる写しで出来ないんです><

>>472さんのやりかたでやっても画面が真っ白のままでした><
プロジェクトフォルダの中身を覗いたらScript1.rcのサイズが2kbなんですけど
ちゃんとビットマップ画像入ってないのかと思ってダブルクリックしてみたところ
VisualC++が立ち上がって
Script1.rc

Bitmap
└IDB_BITMAP1
ってなってるんですけど問題無いですよね?

ちゃんと#include <windows.h>の下に

#include "resource.h"は書いてあるんです><

>>474さん
Cコンソールの時にやったコマンドライン引数みたいな解釈でいいですか?
猫本にはインスタンスハンドルとしか書いてなかったのでよくわからないまま読み進めてました><


478:デフォルトの名無しさん
08/01/06 16:28:57
VS2005でWin32プログラムをデバッグで開始すると問題なく実行できるんですが、
Debug Release問わずデバッガ無しで実行すると途端に
---------------------------
cppwin.exe - アプリケーション エラー
---------------------------
"0x00000000" の命令が "0x00000000" のメモリを参照しました。メモリが "read" になることはできませんでした。


プログラムを終了するには [OK] をクリックしてください
プログラムをデバッグするには [キャンセル] をクリックしてください
---------------------------
OK キャンセル
---------------------------
で落ちてしまいます。
どういう事なんでしょうか。自殺すればいいんでしょうか。

479:デフォルトの名無しさん
08/01/06 16:30:52
はい、よく分かってらっしゃる

480:デフォルトの名無しさん
08/01/06 16:36:33
そんな殺生な。
もう2005が出てから2年以上経つんですから
デバッガなしだと表面化するバグがどういうものかくらいの情報はあるはずです。
教えてください。

481:デフォルトの名無しさん
08/01/06 16:38:01
>>478
デバッガで落ちてそうな所を見つけるしかないんじゃね?
MFC使ってるのなら、AfxCheckMemoryとかが有効っぽいケースに見えるけどな。

482:デフォルトの名無しさん
08/01/06 16:39:33
>>480
デバッガを疑いたい気持ちは痛いほどわかるが、デバッガのせいじゃないと思うよ。


483:デフォルトの名無しさん
08/01/06 16:40:50
>>481
落ちそうな所も何もデバッガ付きならちゃんと意図したとおりに動いてくれるんですが・・・。

484:デフォルトの名無しさん
08/01/06 16:48:12
>>483
例外ダイアログからデバッガを起動できるから、起きた場所を特定しよう

485:デフォルトの名無しさん
08/01/06 16:58:00
とりあえず変数を初期化せずに使ってるんじゃね

486:デフォルトの名無しさん
08/01/06 17:01:22
>>477
hBmpはいくつだったんだよ
0ならいつまでたっても絵は出ないぞ
試しに>>468のまるまるコピーして
IDB_BITMAP1版(MAKEINTRESOURCE使用)と"IDB_BITMAP1"版どっちも
ビットマップ表示できてるけど

487:486
08/01/06 17:02:46
hInstはInitInstanceでグローバル変数に格納してるVC++が作ったソースのまま
一応念のため

488:デフォルトの名無しさん
08/01/06 17:47:29
>>483

int *a;
a = NULL;

どっかでメモリ確保

if( a )
{
// aのメモリが確保されていた時の処理
}

とかやって落ちている気がするよ
デバッガ使うと何もしなくても変数が0初期化されてる事が多い

489:デフォルトの名無しさん
08/01/06 17:49:08
あ、しまった
a=NULLしたら正常動作するなw

>>488のa=NULLを飛ばしてる気がする

490:デフォルトの名無しさん
08/01/06 18:06:38
>>489
初期化されてないのが正常動作です。

491:468
08/01/06 18:57:43
hBmpに正しく数値入ってるかどうか調べるために、表示させようと思ったんだけど
Printf使えないから試行錯誤で頑張って見たけど
HBITMAP hBmp;
BITMAP bmp_info;
RECT rc;
int w, h;
char *szStr="a";

DRAWTEXTPARAMS dtp;

switch(msg){
case WM_PAINT:
hdc = BeginPaint(hWnd, &ps);
hBmp = LoadBitmap(hInst, "MAKEINTRESOUCE(IDB_BITMAP1");
szStr = BITMAP.bmWidth; //hBmpの情報をszSTRに代入
SetTextColor(hdc, RGB(0, 0, 0));
//szStrの中身を表示
DrawTextEx(hdc,
szStr,
-1,
&rc,
DT_WORDBREAK | DT_EXPANDTABS | DT_TABSTOP,
&dtp);

(110) : error C2275: 'BITMAP' : typedef 識別子に、クラス メンバ アクセス演算子 (->) を使用しました。
よくわからないエラーが…変数の表示ってどうやるの?(´;ω;`)ブワッ

492:デフォルトの名無しさん
08/01/06 19:14:22
まさかブレイクポイントも知らないんじゃないだろうな

493:デフォルトの名無しさん
08/01/06 19:18:13
VC++のスレだから、当然デバッガ使える環境だと思ったんだが

494:デフォルトの名無しさん
08/01/06 19:22:18
>>491
hBmp = LoadBitmap(hInst, MAKEINTRESOUCE(IDB_BITMAP1));
こうな。
そんでコンパイル通る状態にして、この行の次にカーソル移して
F9押してF5押してとまったらhBmpの上にマウスのポインタ置いてみな

495:デフォルトの名無しさん
08/01/06 19:29:11
>>491
あのさー、型名と変数名の違いぐらい勉強してからこいよ

BITMAP 型名
bmp_info 変数名

君ははっきり言って基本的な知識がなさすぎる
まずはコンソールでCの勉強から始めなさい

496:468
08/01/06 19:53:43
大学の課題で締切が迫っておりのっぴきならない状況なのでもう少し質問させてください><
ブレイクポイントは初めて聞いたのですぐに調べて
>>494さんのやり方で出来ました。マウスを載せたら型名と変数のHBITMAP hBmpが表示されて
エラー内容はa.obj : error LNK2001: 外部シンボル "_MAKEINTRESOUCE" は未解決です
Debug/a.exe : fatal error LNK1120: 外部参照 1 が未解決です。
って出ました><

>>495さん
半年前にやったCコンソールの本で構造体の部分読み返してみます><

497:デフォルトの名無しさん
08/01/06 19:55:23
ごめんよ、
MAKEINTRESOURCE
こうね。

498:468
08/01/06 20:07:37
エラーが消えたけど画面がすごく・・・白いです><

499:デフォルトの名無しさん
08/01/06 20:36:45
>>498
そこで>>494

500:デフォルトの名無しさん
08/01/06 21:29:03
>>468のソースで、hInstさえ正しい値を与えれば表示されるっしょ。

501:デフォルトの名無しさん
08/01/07 10:31:24
VS2005 C++のテキストエディタの画面で、
タブキーや、スペースコードが →や・マークで表示されてしまう様になってしまいました。
何かのキーを触ったら偶然そういう設定になってしまったのですが、
戻し方が解りません。どなたか教えて下さい。

502:デフォルトの名無しさん
08/01/07 10:40:33
>>501
超FAQだと思ったが、ここのテンプレはわからなかったので、、、
編集 - 詳細 - スペースの表示 (Ctrl+R, Ctrl+W) で

503:501
08/01/07 11:24:14
>>502
ありがとうございました。無事元に戻りました

504:デフォルトの名無しさん
08/01/07 19:23:12
VS2005 で手元のプロジェクトをコンパイルするときに
WINVER not defined. Defaulting to 0x0502 (Windows Server 2003)
という warning が現れます。
出力ウインドウを見ていると、.cpp ファイルの時にはこれが現れ、
.c ファイルの時には自動的に WINVER を設定しないようで現れません。
どこでファイルタイプを判別して動作を変えているのでしょうか。
また、なぜこのような違いが出るようになっているのか教えてください。

505:デフォルトの名無しさん
08/01/07 20:08:05
標準Cライブラリのヘッダしかインクルードしていないから。

506:デフォルトの名無しさん
08/01/07 21:11:23
MFCを使ったいろいろな例文が載っているサイトないでしょうか?

507:デフォルトの名無しさん
08/01/07 21:13:32
>>506
本買ったほうがいいんじゃないか。

508:デフォルトの名無しさん
08/01/07 21:22:05
>>506
ぐぐればいくらでもあると思うが……
例えば、こんなのでいいのか?
URLリンク(athomejp.com)

509:デフォルトの名無しさん
08/01/08 00:37:11
vc++ 2005と 2008の違いを教えてください

510:デフォルトの名無しさん
08/01/08 00:45:23
バージョン

511:デフォルトの名無しさん
08/01/08 00:48:29
2005年に出たのが2005、2007年にでたのが2008

512:デフォルトの名無しさん
08/01/08 04:23:40
2005って2004年じゃなかったか?

513:デフォルトの名無しさん
08/01/08 04:50:56
どっちでも良いじゃん

514:デフォルトの名無しさん
08/01/08 06:46:02
>>512
2005年だよ

515:デフォルトの名無しさん
08/01/08 15:23:44
入力したwaveを、エフェクトをかけ出力するプログラムを
作りたいのですがそのようなプログラムの作り方を解説するサイトってないでしょうか?

ググッてみたものの出てきませんでした。

当方『windowsサウンドプログラミング』の本を読んで、
そのまま出力するプログラムは出来ています(サンプルプログラムw)

環境VC++6.0

何か書いている途中にスレチな気がしてきましたがよろしくお願いします。

516:デフォルトの名無しさん
08/01/08 15:28:09
SDKのサンプルになかったっけ?
DirectX使いたいのかな?

517:デフォルトの名無しさん
08/01/08 17:33:40
>>515
その本にはWAVデータの詳細が載っているんじゃないかい?
どのデータが何を意味しているかさえわかれば、
あとはそのデータをいじってから出力すればいいだけだ

518:515
08/01/08 17:55:34
>>516
レスありがとうございます。
SDKとは何でしょう?すいません無知もいいとこで…
DirectXを使ったほうが楽なのでしょうか?

>>517
レスありがとうございます。
それがあんまり載っていなくて、
というか私の勉強不足かも知れないんですが…
ど素人なもんでいじり方がどういじってよいやら…



519:デフォルトの名無しさん
08/01/08 17:59:37
うん、君にはまだ早いんじゃないかな

520:デフォルトの名無しさん
08/01/08 18:04:57
#defineした単語の表示色を変えることはできますでしょうか?
オプションのフォントと色を見てみたのですがそれらしい項目が見つからなくて。

521:デフォルトの名無しさん
08/01/08 18:50:23
WAVの波形をいじるだけだからVCとか関係ない
方程式書いて計算するだけ

522:デフォルトの名無しさん
08/01/08 21:12:04
>>520
標準のエディタじゃ無理

523:デフォルトの名無しさん
08/01/09 08:16:34
今までListBoxへのD&Dは、WM_CREATE後のDragAcceptFilesに失敗してても上手く行きましたが、
エディットコントロールへのD&Dが上手く行かなくて困っています。
MessageBox でテスト確認してみたら WM_DROPFILES メッセージを送ってないようなのですが、
これはサブクラス化するしか方法は無いのでしょうか・・・?
リストボックスでは出来てエディットボックスでは出来ないのは何故でしょうか・・・?
ご教授よろしくお願いします。

524:デフォルトの名無しさん
08/01/09 09:01:53
ひとつのウインドウにリストボックスとエディットボックスを配置して
リストボックスにドロップしたらファイル名
エディットボックスにドロップしたらファイルの内容を表示
みたいにやってるけど特に問題なく動いてる

525:523
08/01/09 10:06:21
もしかして同じ種類のコントロールが複数ある場合はサブクラス化しなきゃダメということでしょうか。。
複数のコントロールでD&D使い分けてるのはDragQueryPoint使ってるのかな・・・。

一応CreateWindowExでWS_EX_ACCEPTFILES指定して、
D&Dの際にはカーソルも変わるんですが、上述の通りWM_DROPFILESで何も起きません。

ちなみに、どのコントロールがアクティブ状態でも共通キー処理したいために、
全てのコントロールを一つのプロシージャにサブクラス化しています。
当然、このプロシージャではWM_DROPFILES動作は出来ました。
(ただし、リストボックスで上手く行く他のソースではメインウィンドウプロシージャでWM_DROPFILES受け取ります)

526:デフォルトの名無しさん
08/01/09 11:35:08
作成時に親ウィンドウorコントロールにメッセージを関連付けるような設定がなかったっけか

527:デフォルトの名無しさん
08/01/09 12:35:07
親ウィンドウで受けてもいいし、コントロールで受けてもいいし、
サブクラス化してもいいし、サブクラス化しなくてもいいし、
どれでもお好きなように

528:デフォルトの名無しさん
08/01/09 22:02:32
試しにリストボックスを適当な場所にCreateWindowExで作って観たところ、
(WS_EX_ACCEPTFILES | WS_EX_CLIENTEDGE + WS_CHILD | WS_VISIBLE | LBS_EXTENDEDSEL | WS_HSCROLL | WS_VSCROLL,)
親ウィンドウへ通知するスタイルを指定しなくても WM_DROPFILES メッセージが送られました。
逆に、リストボックスで上手く行く方のソースでエディットボックスを作って同様スタイルにしてもダメでした。

D&D可能にしたいエディットボックスは
WS_EX_ACCEPTFILES | WS_EX_CLIENTEDGE, + WS_CHILD | WS_VISIBLE | WS_TABSTOP | ES_MULTILINE | ES_AUTOVSCROLL | ES_AUTOHSCROLL | WS_VSCROLL | WS_HSCROLL,
のようなスタイルで作成してます。
最初に書くべきことでしたが、環境は VC++ 6.0 です。リソースではなく一つずつCreateしてます。

エディットボックスとドラッグ ドロップでググって観たら似たような症状が幾つか観られたんですが、
サブクラス化以外でリストボックスのように親ウィンドウでの処理という仕方がどうしても見つけられませんでした。

529:デフォルトの名無しさん
08/01/09 22:22:19
お勧め
URLリンク(www5.plala.or.jp)

530:デフォルトの名無しさん
08/01/09 23:59:08
VC++6.0とVC++2005は何が違うんでしょう

531:デフォルトの名無しさん
08/01/10 00:00:52
すいません、基本的な質問かもしれませんが‥

C言語でファイルを保存するととき(fprintfでいいんですが)
testというフォルダに保存したいのですがどうすればよろしいでしょうか?
フォルダはあります。
(例えば、sample,txtというファイル)
PCの環境はwindowsです
よろしくお願いします

532:デフォルトの名無しさん
08/01/10 00:04:43
ファイル開くときにそのフォルダ指定すればいいだけ
ただしアドレスの\は\\にすること

533:デフォルトの名無しさん
08/01/10 00:07:58
\\test\\sample.txt
みたいな形ですか?

一度試してみます

534:デフォルトの名無しさん
08/01/10 00:11:50
ごめんVCとC/C++スレ隣通しにしてたから勘違いしてた・・・
VCやったことないけど試してみて><

535:デフォルトの名無しさん
08/01/10 00:14:19
すいません、ありがとうございました。

test\\sample.txtみたいな形でやれば上手いことできました。
ありがとうございます

536:デフォルトの名無しさん
08/01/11 05:39:28
VC++2005 Standardです。
リンク中に 「fatal error C1001: コンパイラで内部エラーが発生しました。」 というエラーが出るので困ってます。
__m128 x = _mm_set_ps1(y);
と書かれたところが問題のようです。でも、Debugビルドだと問題なくコンパイルできます。Releaseの場合のみエラーが出てきます。
__m128 x = {y, y, y, y};
とするとReleaseでもコンパイルできたりします。

原因がまったくわからないのでお手上げなんですが・・・

537:デフォルトの名無しさん
08/01/11 08:34:11
エラーの起きる最小限のプログラムに削って調べてみる。それをup

538:デフォルトの名無しさん
08/01/11 21:15:58
__m128とか_mm_set_ps1とか初めて見た。情報がすくねぇw
DebugとReleaseで_mm_set_ps1がコンパイルエラーになるなら_mm_set_ps1の定義見てみては?
俺は環境がないから確認できない・・・
関係ないかもしれないけど↓みたいな話もあるみたいね。
URLリンク(richa850.hp.infoseek.co.jp)

539:デフォルトの名無しさん
08/01/12 12:33:54
VisualC++2008ExpressEditionを今日から使い始めました
1つのソリューション内に複数のプロジェクトがあり、ソリューション内の
あるプロジェクト(コンソールアプリ)から同ソリューション内の他のプロジェクトをインクルードディレクトリに指定する場合
どのようにすればスマートですか?

プロジェクトをコンソールアプリで作成すると構成プロパティのツリー内に
「C/C++」という項目が出てこない為、推移的に「追加のインクルードディレクトリ」という項目もありませんでした
コマンドラインの-I ../hogeを使うのかなと思いましたけど、どこに追加すればいいのやらで

初歩的過ぎで申し訳ありませんがご教授の程お願いします。

540:デフォルトの名無しさん
08/01/12 12:46:45
タスクバーのメニューを消して、タスクトレイにアイコンを表示させるものを作っています。
タスクトレイのアイコンをダブルクリックした際に、ウィンドウを表示、ウィンドウをトレイへ格納の動作をつけたいと思うのですが、
処理が分かりません。
どーいった関数、処理の流れになるのか教えて下さい。
また、参考になるサイト等もあれば教えて頂きたいと思います。宜しくお願いします。

541:デフォルトの名無しさん
08/01/12 13:23:50
なんでググらないんだろう

542:デフォルトの名無しさん
08/01/12 13:27:57
■回答するにあたって
・回答する場合はその答えに至るための「コツ」も書いてあげると良いでしょう。
 (MSDNのどの項目だとか、何のキーワードでGoogleするとか)


543:デフォルトの名無しさん
08/01/12 15:22:18
>>539
[ファイル]-[新規作成]-[プロジェクト]
[Visual C++]-[全般]
空のプロジェクト

でコンソールアプリを作成してるけど

[プロジェクト]-[xxx のプロパティ]
[構成プロパティ]-[C/C++]-[全般]
追加のインクルードディレクトリ

が見えてる

544:539
08/01/12 16:44:51
>>543
資料を見ながら作っていたのですがその手順の通りだと
あたかも最初から表示されているようにかかれてましたがソースファイルが1つも無いプロジェクトには
どうやらC/C++の項目が表示されないようになっているようです。
1つ適当にファイルを追加した後表示される事が確認できました。
有り難うございました。

545:デフォルトの名無しさん
08/01/13 20:16:06
ググって分からないから書いてんだろ?
キーワードもうまく見つけられないんだろうな

546:デフォルトの名無しさん
08/01/13 21:41:49
beginthreadで開始したスレッドが終わらないうちにプログラム本体をPostQuitMessageで終了すると、
デバッグ時の出力ウィンドウに
cppwin.exe の 0x77d0f450 で初回の例外が発生しました: 0xC0000005: 場所 0x25a5fd54 を読み込み中にアクセス違反が発生しました。
cppwin.exe の 0x77d0f450 で初回の例外が発生しました: 0xC0000005: 場所 0x25a5fd54 を読み込み中にアクセス違反が発生しました。
と表れるんですが、どうすればアクセス違反が起こらないように終了できるんでしょうか。

547:デフォルトの名無しさん
08/01/14 04:42:22
>>546
子供に自殺要求を出して、その死水を取ってから自殺してください。

548:デフォルトの名無しさん
08/01/14 14:42:18
VC++ 2005 でisNaNを使った関数を使用するためには
ソースコード中に
using namespace System

と書けばいいのでしょうか?

549:デフォルトの名無しさん
08/01/14 14:49:31
>>548
isnan()でよければそんなことを書く必要はありませんが。

550:デフォルトの名無しさん
08/01/14 14:59:32
>549
どうもありがとうございます

デバッグかけるとソースコード中の

track_box.angle = !isnan(theta) ? (float) -theta : 0;

のところで、

error C3861: 'isnan': 識別子が見つかりませんでした
と表示されてしまいます…コードがいけないのでしょうか?

551:デフォルトの名無しさん
08/01/14 15:03:41
_isnan()

552:デフォルトの名無しさん
08/01/14 15:10:46
>551
うまくいきました!ありがとうございました

553:デフォルトの名無しさん
08/01/14 17:13:21
デバッグ?って実行しようとしてその前のコンパイルでのエラーか・・・

554:デフォルトの名無しさん
08/01/14 22:31:41
_inran()

555:デフォルトの名無しさん
08/01/15 09:00:58
>>546
メモリ破壊を修正

556:デフォルトの名無しさん
08/01/16 21:33:58
Visual C++ 2005でdirectx9.0でプログラミングしています。
プログラムは動くのですが、終了時に
スレッド 'Win32 スレッド' (0x654) はコード 0 (0x0) で終了しました。
スレッド 'Win32 スレッド' (0x98) はコード 0 (0x0) で終了しました。
スレッド 'Win32 スレッド' (0x424) はコード 0 (0x0) で終了しました。
スレッド 'Win32 スレッド' (0x2e0) はコード 0 (0x0) で終了しました。
スレッド 'Win32 スレッド' (0x65c) はコード 0 (0x0) で終了しました。
スレッド 'Win32 スレッド' (0x4c0) はコード 0 (0x0) で終了しました。
スレッド 'Win32 スレッド' (0x4d8) はコード 0 (0x0) で終了しました。
スレッド 'Win32 スレッド' (0x4b0) はコード 0 (0x0) で終了しました。
スレッド 'Win32 スレッド' (0x4a0) はコード 0 (0x0) で終了しました。
スレッド 'Win32 スレッド' (0x23c) はコード 0 (0x0) で終了しました。
と大量に同じようなメッセージが出力されます。
これは異常なのでしょうか?


557:デフォルトの名無しさん
08/01/16 21:35:54
異常です

558:デフォルトの名無しさん
08/01/16 21:37:46
ウイルス

559:デフォルトの名無しさん
08/01/16 21:47:09
大量に出るのは異常だという根拠があるのなら異常です。

560:デフォルトの名無しさん
08/01/16 21:56:08
>>556
スレッドを作った覚えはあるかどうか。
心当たりが無ければ、実行中に中断させて、デバッグ-ウインドウ-スレッドでスレッドの一覧が出るので、何のスレッドか調べてみよう。

561:556
08/01/16 21:57:04
どうやら音関係の初期化で出てるみたいなんですけど、
//パフォーマンスの作成
CoCreateInstance(CLSID_DirectMusicPerformance, NULL,
CLSCTX_INPROC, IID_IDirectMusicPerformance8,
(void**)&g_pPerformance );
とするとエラーが大量に出てしまうようです。
おかしな所あるでしょうか?指摘お願いします。

562:デフォルトの名無しさん
08/01/16 21:58:41
感染してるとそうなる

563:デフォルトの名無しさん
08/01/17 00:33:52
悪いことは言わない、DirectMusicには手を出さない方がいい
超えられない壁がある

564:デフォルトの名無しさん
08/01/17 12:19:17
(BBSを使うのは)難しい

565:デフォルトの名無しさん
08/01/18 14:39:11
XP(SP2) VC++6.0 MFC ダイアログベースです。
画像をランダムに表示させたいのですが、どうすればいいでしょうか?

566:デフォルトの名無しさん
08/01/18 14:56:33
rand()に時間でもかけて使えばいいと思います

567:デフォルトの名無しさん
08/01/18 15:01:23
ランダムじゃないところまではできてるのなら、それを晒してみ。

568:565
08/01/18 21:42:25
randで自己解決しました。
表示させる枚数も少ないので…。

ご迷惑をおかけしました。

569:デフォルトの名無しさん
08/01/18 21:44:47
自己解決

570:デフォルトの名無しさん
08/01/18 23:29:09
向きを持ったキャラクタを回転させたいんですけど、
3D空間での単位ベクトルの回転ってどうしたらいいですか?
回転といったら行列を掛ければいいとおもったんですけど、ベクトルは3元なので
どうしたらよいかわかりません。

571:デフォルトの名無しさん
08/01/18 23:36:20
ゲーム製作板にでも行け

572:デフォルトの名無しさん
08/01/19 00:50:34
>>568
どこが自己解決だよカス

573:デフォルトの名無しさん
08/01/19 00:53:03
>>570
・単位マトリクスを用意
・用意したマトリクスの平行移動成分にベクトル値を入れる
・回転マトリクスと乗算する

574:デフォルトの名無しさん
08/01/19 01:59:59
>>573
やってみたら出来ました。
ありがとうございます。
しかし、z軸の+の方からみた時は上手く動くのですが、
逆を向いた時に上下が反対になってしまいます。
D3DXMatrixRotationYawPitchRoll(&m_mat,
D3DXToRadian(yaw),
D3DXToRadian(pitch),
D3DXToRadian(roll) );
として回転行列作っているんですが、pitchの回転が上手くいきません。


575:デフォルトの名無しさん
08/01/19 03:51:03
調子に乗るなよカス
ここはVCのスレだ

576:デフォルトの名無しさん
08/01/19 11:55:55
strcpyとか使うと出る例のwarningが、
#define _CRT_SECURE_NO_DEPRECATE 1
ってやっても出たまんまなんですけど、
なぜだか分かりますか?
(#pragma warning(disable:4996)は効きます)


577:デフォルトの名無しさん
08/01/19 12:05:54
ヘッダのインクルードより先に書いている?

578:デフォルトの名無しさん
08/01/19 12:13:16
>>577
ありがとうございました。
解決しました。
自作のヘッダーの方では、ライブラリのinclude前に
あったのですが、mainの方ではそのヘッダーをライブラリよりも
あとから呼んでました。

もしかして、
このdefineはmainのあるcppの頭にだけ
書けばよいものなのでしょうか?


579:デフォルトの名無しさん
08/01/19 13:30:28
ふつうは、コンパイルオプションに仕込むけど

580:デフォルトの名無しさん
08/01/19 14:23:17
Visual C++ってフォームデザイナ付いてんの?

581:デフォルトの名無しさん
08/01/19 14:56:38
>>580
[ファイル]-[追加]-[新しいプロジェクト]
[Visual C++]-[CLR]
Windows フォーム アプリケーション
でプロジェクトを作成すると使えるみたい

582:デフォルトの名無しさん
08/01/19 15:00:17
C++ とうか C++/CLI だけどね.

583:デフォルトの名無しさん
08/01/19 18:30:45
クラスの中で+演算子(などを)定義した際、一時的に、
newで何かを作ったとします。
(こんな感じ?)
type* tmp = new type[num];。
で、その何かは(何らかの処理後)
その演算子定義のreturnで使いたいとします。
return CLASS_X(tmp_s);
このとき、tmpのdeleteはいったい
どこで行ったらよいのでしょうか?
(deleteなしで作成後、実行しても動いてはいる?
のですが、たまたまのような気がして心配なので)

584:デフォルトの名無しさん
08/01/19 18:32:07
訂正
誤:return CLASS_X(tmp_s); 
正:return CLASS_X(tmp); 


585:デフォルトの名無しさん
08/01/19 18:44:40
>>583
tmpの型をboost::scoped_array<type>にでもすればいい。

586:デフォルトの名無しさん
08/01/19 18:59:11
>>583
CLASS_X()の戻り値を変数に保持してからtmpを解放
で、returnで保持した変数を返せばいい

587:デフォルトの名無しさん
08/01/19 19:00:19
ちなみに>>583でも動くだろうが、呼び出す毎にどんどん空きメモリが減っていく

588:デフォルトの名無しさん
08/01/19 19:02:32
>>580
スタンダード以上ならついてる

589:デフォルトの名無しさん
08/01/19 19:12:29
フォームでよければexpressにもついてる

590:デフォルトの名無しさん
08/01/19 19:31:40
>>585
できればboost以外でお願いしたいのですが。


591:デフォルトの名無しさん
08/01/19 19:34:09
>>583
operator=()の中でnewする必要がある状態ってのがよく分からない。
自動変数の値返しじゃダメなのか?
ソース提示可能なら提示よろ。

deleteしなかった場合は587の言うように当然メモリリークしていくぞ

592:デフォルトの名無しさん
08/01/19 19:46:23
標準C++の話なら他所でやれ

593:デフォルトの名無しさん
08/01/19 19:47:08
>>590
std::vector<type>
&tmp[0]のようにすれば、先頭要素へのポインタも得られる。

594:583
08/01/19 19:48:07
>>591

ありがとうございます。
簡単に言えば文字列の足し算なんですけど、
newしないでできるのでしょうか。
(当方初心者です)

friend Mojiretsu operator+=(const Mojiretsu& moji1, const Mojiretsu& moji2) {    // +演算子
  int tmp_nagasa = moji1.nagasa + moji2.nagasa ;
  char* tmp_moji = new char[tmp_nagasa+1];
  mojicpy(tmp_moji,moji1.s);
  mojicat(tmp_moji,moji2.s);

  return Mojiretsu(tmp_moji);
}


595:583
08/01/19 19:51:06
>>586

ありがとうございます。(前後してすいません)
こんな感じでしょうか。

friend Mojiretsu operator+=(const Mojiretsu& moji1, const Mojiretsu& moji2) {    // +演算子
  int tmp_nagasa = moji1.nagasa + moji2.nagasa ;
  char* tmp_moji = new char[tmp_nagasa+1];
  mojicpy(tmp_moji,moji1.s);
  mojicat(tmp_moji,moji2.s);
  char* tmp2_moji = tmp_moji;
  delete tmp_moji;

  return Mojiretsu(tmp2_moji);
}

一応、動きましたが、tmp2_mojiの先が解放されちゃってて
これも心配なんですが、大丈夫なのでしょうか。


596:583
08/01/19 19:54:04
訂正
正:mojicpy、mojicat
誤:strcpy、strcat

597:デフォルトの名無しさん
08/01/19 19:55:17
最近マジデ、どのプログラムもつまんないんですが、どうしたらいいですか?
責めて、C++で鬱病から逃れたいんですが

598:583
08/01/19 19:59:39
>>592
すいません、この質問が終わったらよそに行きます。
見逃してください。

599:デフォルトの名無しさん
08/01/19 19:59:44
ここC++スレじゃないってば
VCスレ

600:デフォルトの名無しさん
08/01/19 20:00:57
>598
見苦しいから汚いコード貼らないでくれる?

601:591
08/01/19 20:05:37
正直すまんかった。

>>598
C++相談室 part60
スレリンク(tech板)

あたりで同じ質問してくれ。

602:583
08/01/19 20:08:15
>>601
すいませんです。
そちらに行きます。

お邪魔いたしました。

603:デフォルトの名無しさん
08/01/19 20:30:05
最近は、プログラムってFPGAとかのハードプログラムが面白い罠

604:デフォルトの名無しさん
08/01/19 23:23:32
3週間完全マスターVisual C++ 6.0 1版1刷(日経BP社)を図書館で借りたのですが、、、
どっかに、正誤表とかはないんですか?

605:デフォルトの名無しさん
08/01/20 01:25:08
>>603
PCに標準で乗ってたら面白いけどな.

606:デフォルトの名無しさん
08/01/20 09:45:08
>>604
ここで聞いてどうするw
出版社に聞け

607:デフォルトの名無しさん
08/01/20 12:10:01
デバイスコンテキストを使用しててどうも前に進めません。
新しくトップにウィンドウ(タイトルバー無し)をポップアップして、
そこにテキストを表示するというものなのですが、
一定以上の大きさを制限するために、一旦デバイスコンテキストに描画したものをStretchしたいのですが、
それ以前にCreateCompatibleDCでメモリデバイスコンテキストにDrawTextしてから
BitBltでウィンドウにそのままSRCCOPYしても真っ白なままです。
hDC = GetDC(hWnd);
hMemDC = CreateCompatibleDC(hDC);
GetClientRect(hWnd);
DrawText(hMemDC, szText, -1, &rec, DT_WORDBREAK);
BitBlt(hMemDC, 0, 0, rec.right, rec.bottom, hDC, 0, 0, SRCCOPY);
のような感じで、取り敢えずウィンドウの大きさそのままに描画してもダメでした。
これが DrawText(hDC, szText, -1, &rec, DT_WORDBREAK); に置き換えると、ちゃんと描画されます。
プロポーショナルフォントを使っているので、ウィンドウサイズに合わせてポイントを変えるとずれてしまうので、
設定したフォントのまま縮小出来れば、、と試行錯誤してますが、デバイスコンテキストの描画の時点で止まってしまってます。
助言どうかよろしくお願いします。

608:607
08/01/20 12:12:20
すいません、一行書き間違えしました。
>BitBlt(hMemDC, 0, 0, rec.right, rec.bottom, hDC, 0, 0, SRCCOPY);
→BitBlt(hDC, 0, 0, rec.right, rec.bottom, hMemDC, 0, 0, SRCCOPY);

609:デフォルトの名無しさん
08/01/20 12:29:26
CreateCompatibleDCでググれ。
メモリDCはビットマップを割り当てないとまともに使えない。

610:デフォルトの名無しさん
08/01/20 16:37:28
2008/01/20 現在での最新のVisualC++ のバージョンは何でしょうか?

611:デフォルトの名無しさん
08/01/20 16:40:49
マイクロソフトの公式でも池よカス

612:デフォルトの名無しさん
08/01/20 16:47:11
>>611
いっぺあってどれがどれやらワケワカメなんだよボケェ
体系的に整理されていないと頭にインプットされねーんだよウンコ

613:デフォルトの名無しさん
08/01/20 16:52:28
2008じゃないの?

614:デフォルトの名無しさん
08/01/20 17:00:35
まずなにしたらいいですか

615:デフォルトの名無しさん
08/01/20 17:09:27
>>614
オナ・・・というのは置いといて
Hello world を表示だな

616:デフォルトの名無しさん
08/01/20 17:10:33
>>614
コーヒーを用意し
服を脱ぎ
コーヒーに塩を入れ
裸体のまま一気に飲む

617:デフォルトの名無しさん
08/01/20 17:16:28
>>614
void main()
{
printf( "Hello world!!\n" );
}
これを動かしてみ?

できるかな?
できるかな?

618:デフォルトの名無しさん
08/01/20 17:25:46
>>614
なんで手に入れたんだよ
ワレズか?
違法だからやめとけお勧めしないから違法なんだよ

619:デフォルトの名無しさん
08/01/20 17:47:26
>>609
更に調べてみたら、どうにか作りたい形に近づきました。
hBmp = CreateCompatibleBitmap(hMemDC, rec.right, rec.bottom);
SelectObject(hMemDC, hBmp);
のようにしてから、DrawText, StretchBltをhMemDCに出力したところ、反映されたのですが、
テキストの埋まってない余白部分が黒くなってしまいます。
HBITMAPやCreateCompatibleBitmapで調べてるのですが、どうも背景を白く塗りつぶす事が出来ず・・・。

SelectObject(hMemDC, hBmp);
に関してはメモリデバイスコンテキストとBITMAP領域をリンクした状態にするという感じでしょうか・・・?

620:デフォルトの名無しさん
08/01/20 18:40:28
DrawTextやStretchBltは呼べるのに、何故FillRectを呼ばないのかと

621:デフォルトの名無しさん
08/01/20 18:47:16
>>619
DrawText()とか使うなら、SetBkColor()やSetBkMode()を覚えましょう。

622:デフォルトの名無しさん
08/01/21 00:46:43
Cプログラマ必須テキスト!

URLリンク(mori.eco.to)

623:デフォルトの名無しさん
08/01/21 02:37:57
Visual Studio 2005 でリビルド

========== すべてリビルド: 1 正常終了、0 失敗、0 スキップ ==========
リビルドがすべて正常に完了しました

デバッグする

ダイアログで
「プログラム×××.exeは開始できませんでした。」
と表示され、デバッグできません。

何のエラーメッセージも表示されないのですが
心当たりのある方いますか?

624:619
08/01/21 04:30:52
>>620-621
レスどうもです。SetBkColorは書き忘れただけで、書いてました。が、ダメでした。
FillRectは完全に盲点でした。。存在すら知らなかったもので、試した所、上手く行きました。
本来はマスクかけたりとか色々やるべきなのかもしれませんが、
取り敢えずテキストを白背景に黒で表示という目的は達する事が出来、ありがとうございました。

625:デフォルトの名無しさん
08/01/21 10:23:25
質問です。
タスクトレイのアイコンから最小化、元のサイズの処理をしているんですが、
最小化は
ShowWindow(hWnd,SW_MINIMIZE);
ShowWindow(hWnd,SW_HIDE);
で、出来るんですが、下のサイズの処理をした時に、ウィンドウがアクティブにならず、他のものに隠れて後ろに表示されてしまいます。
処理は
ShowWindow(hWnd,SW_RESTORE);
ShowWindow(hWnd,SW_SHOW);
と書いているんですが、これのどこがいけないんでしょうか?


626:デフォルトの名無しさん
08/01/21 10:26:15
そのへん、いろいろあるんで似たような目的のAPIや引数をいろいろ試してみるといい。
まあ、SetForegroundWindowを併用するのが確実かなあ

627:デフォルトの名無しさん
08/01/21 10:48:47
>>626
レスありがとうございます。
一応、SetForegroundWindowやSetWindowPosを使って最前面に表示する事が可能なのは確認しましたが、
普通のウィンドウとは動作が違っちゃうんですね。

上記のものだと、関数が発行された時は確かにアクティブなんですが、そのあと後ろのウィンドウを消したりすると、
自分のプログラムが最背面になってしまいます。

自分の作ったウィンドウをmy、その他のウィンドウA、Bとあるとすると、
アクティブ順位が1:A、2:Bの状態から1:my、2:A、3:Bになり、AやBを最小化すると、
1:A(B)、2:myになってしまいます。何故か分かりますか?

628:デフォルトの名無しさん
08/01/21 11:05:56
visual c++ 2008 express editionでgeocoderja.dll内の関数gcjDbLoadを使うプログラムを書いています。が、エラーが出てしまいます。
dllを扱うには動的リンクと静的リンクがあるというところまではわかり、とりあえず動的リンクで試そうとしているんですがどうにもわかりません。
かなり低脳なので申し訳ないのですが、解決法を教えてください。

[ソース]
#include "stdafx.h"
#include <stdio.h>
#include <windows.h>

int _tmain(int argc, _TCHAR* argv[])
{
typedef int(__cdecl* _gcjDbLoad)(char *, int);
HINSTANCE hDll = LoadLibrary("geocoderja.dll");
int func = (int)GetProcAddress(hDll, "gcjDbLoad");

char *path = "C:/Documents";
int loadLevel = 4;
int retCode = func( path, loadLevel

FreeLibrary(hDll);
return 0;
}


[エラー]
------ ビルド開始: プロジェクト: geocoderja, 構成: Debug Win32 ------
コンパイルしています...
geocoderja.cpp
c:\documents and settings\de\デスクトップ\geocoderja\geocoderja\geocoderja.cpp(16) : error C2064: 2 引数を取り込む関数には評価されません。
ビルドログは "file://c:\Documents and Settings\DE\デスクトップ\geocoderja\geocoderja\Debug\BuildLog.htm" に保存されました。
geocoderja - エラー 1、警告 0
========== ビルド: 0 正常終了、1 失敗、0 更新不要、0 スキップ ==========

629:デフォルトの名無しさん
08/01/21 11:08:04
引数はいろいろやったの?
SW_SHOWNORMAL とか

630:デフォルトの名無しさん
08/01/21 11:14:37
SW_SHOWNORMALならRESTOREなんてやる必要ない

631:628
08/01/21 11:16:12
>>629
早速レスありがとうございます。
SW_SHOWNORMAL??
動的リンクのサンプルを見ながらちょこちょこいじってきたんでよくわかりません。
すみません・・

632:デフォルトの名無しさん
08/01/21 11:20:43
typedef int(__cdecl* _gcjDbLoad)(char *, int);
イミフメイ

633:デフォルトの名無しさん
08/01/21 11:21:57
>>628
何を聞いてるの?
もともと間違いはあちこちあるけど、そのエラーは
>int retCode = func( path, loadLevel
この行が途中までしか書いてないから出るんだよ。

634:デフォルトの名無しさん
08/01/21 11:22:13
>>631
ShowWindow()の引数だよ
それ一つあればSW_RESTOREもSW_SHOWもいらない

635:デフォルトの名無しさん
08/01/21 11:22:32
>>628
geocoderのことは知らないが

> typedef int(__cdecl* _gcjDbLoad)(char *, int);
↑のように書いたのなら
>int func = (int)GetProcAddress(hDll, "gcjDbLoad");
の行は
_gcjDbLoad func = (_gcjDbLoad)GetProcAddress(hDll, "gcjDbLoad");
と書かないと意味無くないか?

>>631
629-630はその前の質問に対するものだろ。

636:628
08/01/21 11:28:52
すみません訂正です。書き込みの際に消してしまったようです。

[ソース]
#include "stdafx.h"
#include <stdio.h>
#include <windows.h>

int _tmain(int argc, _TCHAR* argv[])
{
typedef int(__cdecl* _gcjDbLoad)(char *, int);
HINSTANCE hDll = LoadLibrary("geocoderja.dll");
int func = (int)GetProcAddress(hDll, "gcjDbLoad");

char *path = "C:/Documents";
int loadLevel = 4;
int retCode = func( path, loadLevel ); //エラーが出てる行

FreeLibrary(hDll);
return 0;
}

[エラー]
c:\documents and settings\de\デスクトップ\geocoderja\geocoderja\geocoderja.cpp(13) : error C2064: 2 引数を取り込む関数には評価されません。

>>632
その行が意味もわからず見よう見まねで書いたのでよくわからないんです・・

>>634
ShowWindow()は使ってないのですが、関連があるんですか?無知ですみません・・

637:デフォルトの名無しさん
08/01/21 11:31:49
>>636
俺が悪かった
ShowWindowは君の質問とは一切関係ないw

638:635
08/01/21 11:33:36
>>636
>int retCode = func( path, loadLevel ); //エラーが出てる行

エラーの出てるのはその行だろうけど
原因は635で書いたところにあると思うよ。
意味が分からないなら「関数ポインタ」について調べてみ。

639:628
08/01/21 11:42:21
>>637
完全に勘違いしてました。すみません。

>>635
635さんの言うように
int func = (int)GetProcAddress(hDll, "gcjDbLoad");

_gcjDbLoad func = (_gcjDbLoad)GetProcAddress(hDll, "gcjDbLoad");
にするとうまくビルドできました!
関数gcjDbLoadも使えているようです。
ありがとうございます!

>>638
とりあえず動作するようにはなったみたいなのでいろいろと調べてみます。
ありがとうございます!

640:デフォルトの名無しさん
08/01/21 12:19:15
SW_SHOWNORMALも試しました。
ShowWindow(hWnd,SW_SHOWNORMAL);
でも、>>627に書いた通りの動作になってしまいます^^;

ShowWindow(hWnd,SW_SHOWNORMAL);
SetForegroundWindow(hWnd);
でも同じです。

641:デフォルトの名無しさん
08/01/21 12:28:49
うちじゃそうならないから、キミのとこの環境がおかしいのかもね

642:デフォルトの名無しさん
08/01/21 13:49:08
何で出来ないんですかねぇ;
もうちょっと試行錯誤してみます。ありがとうございました。

643:デフォルトの名無しさん
08/01/21 17:45:19
Windowでプロジェクト全検索してみれば?
どっかでアホな事やってるんだろう

644:デフォルトの名無しさん
08/01/21 20:47:59
Visual Basicにはちゃんとしたスレはないの?
変な流れのネタスレしかないお。

645:デフォルトの名無しさん
08/01/21 22:42:25
VB(笑)

646:デフォルトの名無しさん
08/01/22 01:09:20
澄んだ目で見れば、ネタスレなどない。

647:デフォルトの名無しさん
08/01/22 05:14:22
>>644
サイトが充実してるから2ちゃんでやらんでいいやろ

648:名無しさん@ゴーゴーゴーゴー!
08/01/22 10:08:57
VisualStadio2005を使っています。
コンパイルオプションにdefineを追加するのはどうやったらいいのでしょうか。

#define _CRT_SECURE_NO_DEPRECATE 1
#pragma warning(disable:4312)
#pragma warning(disable:4996)

上記のをソースに書かず、オプションに追加したいんですが、
プロジェクト→~のプロパティ→C/C++→コマンドラインの中に書くのでは違うのでしょうか?
どこに、どう書いたらいいのか分かりません。
分かる方お願いします。

649:デフォルトの名無しさん
08/01/22 10:21:31
>>648
コマンドラインに書いてもいいけど、VC++でやるなら普通は
プロパティのC/C++ - プリプロセッサの「プリプロセッサの定義」

650:デフォルトの名無しさん
08/01/22 10:23:34
あー、あとpragmaのほうは同じく C/C++ - 詳細の「指定の警告を無効にする」

651:デフォルトの名無しさん
08/01/22 10:48:29
出来ました。ありがとうございます。

652:デフォルトの名無しさん
08/01/22 13:18:08
Visual C++とかVBの如くバカにされたときの反応を教えろ。(・∀・)

653:デフォルトの名無しさん
08/01/22 14:42:41
スルー

654:デフォルトの名無しさん
08/01/22 14:52:15
そうなんだーって言う

655:デフォルトの名無しさん
08/01/23 01:42:39
Visual Studio.NET 2003でWin32のプログラムを作りました。
Visual Studio上でデバッグ起動することはできるんですが、

使ってる画像などを含めて、他のPCで動かすためのexeファイルを作るには
どうすればいいんでしょうか?

解説してるサイトなどあったら、教えてもらえませんか。

656:デフォルトの名無しさん
08/01/23 07:03:54
exe作らずデバッグできるほどVC++は器用じゃない

657:デフォルトの名無しさん
08/01/23 09:39:25
Release版の話?インストーラーの話?

658:デフォルトの名無しさん
08/01/23 10:12:49
>>656
Debugフォルダにexeができてました。
画像を同じフォルダに入れたら動きました。

>>657
インストーラの作り方もできれば知りたいです。
exeファイルにアイコン画像をつける方法とかも。

659:デフォルトの名無しさん
08/01/23 10:42:29
すごく基本的なことだから少し勉強すればすぐわかると思う

660:デフォルトの名無しさん
08/01/23 15:08:16
リソースエディタで検索

661:デフォルトの名無しさん
08/01/23 15:22:03
>>660
?????????????????????????????????????????????

662:デフォルトの名無しさん
08/01/23 16:25:10
DirectShowを用いて二つのカメラからの信号をそれぞれサンプルグラバフィルタを使用して入力し、
RGB情報をカメラごとの配列に入れて画像処理で用いたいのですが、なかなかうまくいきません。
どのようにすればいいか、ご教示願えませんでしょうか。

663:デフォルトの名無しさん
08/01/23 16:26:45
VC++関係ない気が

DirectShowと戦うスレ Part 2
スレリンク(tech板)

ここの誤爆?

664:http://p1062-ipbf4007marunouchi.tokyo.ocn.ne.jp.2ch.net/
08/01/23 16:31:20
tbs 

665:p1062-ipbf4007marunouchi.tokyo.ocn.ne.jp
08/01/23 16:34:16
tbs 

666:655
08/01/23 23:25:43
>>659
基本的なことなら、もう少し自力で調べてみます。

667:デフォルトの名無しさん
08/01/24 19:54:53
VC++2002 MFC で
CFormViewにリストコントロールを配置しています
リストコントロールの幅や高さ等を取得したいのですがうまくいきません
コントロールのサイズを取得する方法を教えてください

668:デフォルトの名無しさん
08/01/24 20:13:28
自己解決しました

669:デフォルトの名無しさん
08/01/25 13:28:26
VARIANTとCStringの変換について教えてください。
下記のようなコーディングで問題ないでしょうか?

//VARIANTからCString
CString hoge = newValue.bstrVal;


//CStringからVARIANT
CString hoge = "hoge";
vaResult.vt = VT_BSTR;
vaResult.bstrVal = hoge.AllocSysString();


670:デフォルトの名無しさん
08/01/25 17:42:48
それでいいけど、VARIANTからCStringへは、
単にCString hoge = newValueでいけるはず。

あと場合にもよるけど、CComVariant (ATL), COleVarinat(MFC)もよろしく。

671:デフォルトの名無しさん
08/01/25 20:59:51
プロジェクト内のファイルのファイル名を変更する
簡単な方法があれば、教えてください。現在は次の
方法でファイル名を変更しています。
(Visual C++6.0です。)

(1) プロジェクトからそのファイルをいったん除外する。
  (FileViewでファイルを選択し[編集]→[削除])

(2) エクスプローラでファイル名を変更。

(3) そのファイルをプロジェクトへ再度追加する。
  [プロジェクト]→[プロジェクトへ追加]→[ファイル]

672:デフォルトの名無しさん
08/01/25 21:10:10
>>671
(1)の後、エクスプローラで操作しなくても、
(3)の追加時にファイル名変更すればいい。

673:671
08/01/25 21:17:46
>>672
なるほど。ありがとうございました。

674:デフォルトの名無しさん
08/01/27 00:37:17
俺メモ

ShowCursor()関数は単純に表示のON/OFFを切り替えるものではない
表示カウンタという意味不明なカウンタを持ってるらしく
ON/OFF切り替えるには同じ回数だけtrueとfalseをセットする必要がある
氏ねよMS('A`)

675:デフォルトの名無しさん
08/01/27 00:40:02
MSDN見ずにAPIを叩いてはいけないという例。

>Parameters bShow
>[in] Specifies whether the internal display counter is to be incremented or decremented.
>If bShow is TRUE, the display count is incremented by one.
>If bShow is FALSE, the display count is decremented by one.

>Remarks
>This function sets an internal display counter that determines
>whether the cursor should be displayed. The cursor is displayed
>only if the display count is greater than or equal to 0.

676:デフォルトの名無しさん
08/01/27 00:53:55
流石にそれで氏ねは可哀想だろ。
とはいえ、自分で使うとしたらラッパ書いて単純トグルにしてしまいそうだけど。

677:デフォルトの名無しさん
08/01/27 02:53:52
FileViewのツリーの中でファイルはファイル名の順に
並ぶようですが、この順序を変更することはできるでしょうか?
Visual C++6.0です。

678:デフォルトの名無しさん
08/01/27 06:55:10
>>675
VSとJaneDoeStyleとブラウザ開いたら重すぎてMSDNなんて見れない、というか見たくない。

679:デフォルトの名無しさん
08/01/27 09:54:30
そんなにヘボPCなのかw

680:デフォルトの名無しさん
08/01/28 09:41:50
昔は描画するときにマウスカーソル消して描いてたからな。
カウンタはあって当たり前の必須機能だったな。
今だとカーソル消すなんてよほどのことじゃないか?

681:デフォルトの名無しさん
08/01/28 10:42:37
>>679
メモリが256MiBもあってCPUの速度も2GiHz超えしているという、
世界初のコンピュータとは比べ物にならないほどの高い性能を持ち合わせた俺のマシンが唸る!

682:デフォルトの名無しさん
08/01/28 16:27:12
>>680
エロゲで数秒たったらカーソル消すのは必須機能だよ


683:デフォルトの名無しさん
08/01/28 16:33:52
ああ、今は動画とかで消しっぱにするってことか
ウィンドウのカーソルを見えないやつに差し替えじゃあかんのかな?
ゲームは自前カーソルが多い気がするから、別の話か。

684:デフォルトの名無しさん
08/01/30 07:45:29
プログラムは無事に完成しリリースビルドしたのですが、
コンパイル済み実行ファイルをテキストエディタ等で開くとエラー時に表示するメッセージや
読み込むファイル名がそのまま見えてしまいます
これはセキュリティ上よろしくないと思うのですが見えなくする方法はあるのでしょうか?

685:デフォルトの名無しさん
08/01/30 09:33:51
自分でリソースに定義したやつだったら好きなように暗号化できるだろ

686:デフォルトの名無しさん
08/01/30 13:21:11
それが見えて何か困ることでも?
まあ隠したいんならテキストを圧縮するなり文字コードに
無駄な数字を足すなりなんなりとすればいい

687:デフォルトの名無しさん
08/01/30 13:25:53
そういえば昔exeの中からパスワード探したりしてた
今はネットで探せばたいてい見つかる

688:デフォルトの名無しさん
08/01/30 14:09:44
パスワードを探す用途って何?

689:デフォルトの名無しさん
08/01/30 14:25:22
>>684
どうせエラー時に表示するんなら隠す必要もないのでは?
あと開くファイル名なんてFilemonでも使えばすぐ分かる.

690:デフォルトの名無しさん
08/01/30 14:31:39
昔の雑誌に掲載されていたアドベンチャーゲームとかは暗号化してたな。
あれは打ち込む人=プレーヤーだからなあw

691:デフォルトの名無しさん
08/01/30 15:05:57
VC++6のコンソールアプリケーションで、Ctrl-Cをトラップすることはできますか?

692:デフォルトの名無しさん
08/01/30 17:25:17
ごにょぼにょする時じゃーねの?

693:デフォルトの名無しさん
08/01/30 17:29:26
>>691
SIGINTのトラップのことなら、SetConsoleCtrlHandler

694:デフォルトの名無しさん
08/01/30 18:17:47
シギント

695:デフォルトの名無しさん
08/01/30 20:26:58
C++で

気温 : ○○℃
湿度 : ○○%
風速 : ○○(m/s)

という複数行のパラメータを上書き表示するにはどのようにすれば宜しいのでしょうか?
一行だと"\r"を使ってできたのですが。。。
教えて君で申し訳ありません(>_<)

void show()
{
cout << "気温 : " << a << "\r" ;
cout << "湿度 : " << b << "\r" ;
cout << "風速 : " << c << "\r" ;

}

とすると全て上書きされて一行しか表示できませんでした・・・。


696:デフォルトの名無しさん
08/01/30 21:07:04
\rを\nに

697:デフォルトの名無しさん
08/01/30 21:15:37
複数行だと、ANSI.SYS組み込み+エスケープシーケンス、
もしくはAPI直呼び出しでもしないと駄目だと思う。

698:デフォルトの名無しさん
08/01/30 21:34:04
コンソールAPI使えばいいんじゃねーの?使った事ないからしらんけど。

699:デフォルトの名無しさん
08/01/31 06:34:55
先輩の方々に質問です。
Visual C++ 2008 Expressをインストールして、
mfcのプログラム(サンプルプログラム diblook)をビルドしたのですが、
afxwin.hが見つからないよエラーとなってしまいました。
2008 ExpressにはMFCがついていないんでしょうか?


700:デフォルトの名無しさん
08/01/31 06:35:24
はい

701:デフォルトの名無しさん
08/01/31 16:19:25
Expressにはついてないよ
もしついてたから誰も有料のやつ買わないでしょ

702:デフォルトの名無しさん
08/01/31 16:20:53
>>701修正


Expressにはついてないよ
もしついてたら誰も有料のやつ買わないでしょ

703:デフォルトの名無しさん
08/01/31 18:36:36
リストコントロールについて質問です。

レポート形式で、カラムヘッダにツールチップを表示したいのですが可能でしょうか?
可能であれば、やり方をお聞きしたいです。
よろしくお願いします。

VC.NET、MFC使用です。

704:デフォルトの名無しさん
08/01/31 19:47:30
>>700-702
ありがとうございます。
言われてみればそうですね。商売にも使えるわけですから
どこの企業も買わなくなっちゃいますね。
仕方ないのでWin32 Apiでしこしこ書くことにします。

705:sage
08/01/31 23:16:08
VC++2005ExEditionのWindowsフォームを使って簡単なアプリを作っているのですが
ある程度行数のある文字列をForm内に出力したいのですがどうしたらよいでしょうか?
イメージとしてはDOS窓みたいなものを作りたいのですが・・・どうかご教授お願いします。

706:デフォルトの名無しさん
08/01/31 23:34:40
適当にプロパティをいじる。

707:デフォルトの名無しさん
08/02/01 15:10:08
VC++2008 Expressを使って、コマンドラインベースのプログラムを作っています。
実行時の実行プライオリティ設定したいのですが、どの関数を使えばよいのでしょうか?

708:デフォルトの名無しさん
08/02/01 16:00:45
>>704
もうこのさいだから C++/CLI でフォームアプリにしちゃいな!

709:デフォルトの名無しさん
08/02/01 18:01:55
//ChildView.cpp


//winmm.libにリンクする
#pragma comment(lib,"winmm")

・・・

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

PlaySound("WinXP_Startup",NULL,SND_RESOURCE | SND_ASYNC | SND_LOOP);

CWnd::OnLButtonDown(nFlags, point);
}


PlaySound関数を使いたいのですが、上記のようにコーディングすると

error C2065: 'SND_RESOURCE' : 定義されていない識別子です。
error C2065: 'SND_ASYNC' : 定義されていない識別子です。
error C2065: 'SND_LOOP' : 定義されていない識別子です。
error C3861: 'PlaySound': 識別子が見つかりませんでした

とコンパイルエラーがでてしまいます。
どのようにすればエラーがでなくなるか、教えていただけないでしょうか。

710:デフォルトの名無しさん
08/02/01 18:16:35
#include <MMsystem.h>
かな。
WIN32_LEAN_AND_MEANでもいいがMFCだとよくわからん

711:デフォルトの名無しさん
08/02/01 19:11:47
>707
SetPriorityClass( GetCurrentProcess(), REALTIME_PRIORITY_CLASS );
みたいな?

712:デフォルトの名無しさん
08/02/01 20:37:14
>>707
プロセス単位なら、startコマンドのオプションでもいけるよ。

713:デフォルトの名無しさん
08/02/02 22:34:28
テンプレートの有用性と使い道がイマイチ理解できません



714:デフォルトの名無しさん
08/02/02 22:40:22
>>713
URLリンク(ja.wikipedia.org)

715:デフォルトの名無しさん
08/02/02 23:04:36
いやいや、テンプレートの本質はそこじゃないだろう。
テンプレートの有用性が知りたければboostのソースを嫁。

716:デフォルトの名無しさん
08/02/03 01:08:22
OpenCVをWindows form Applicationで使うための設定の仕方を教えてください。
環境は、Visual c++ 2005 Express Editionです。
ビルドのエラーを解決できなくて困っています。
VCの使い方が間違っていることが原因っぽいのですが・・・
エラー
1>c:\program files\opencv\cxcore\include\cxtypes.h(212) : warning C4793: '__asm' : 関数 'int cvRound(double)' 用にネイティブ コードの生成が発生します
1> c:\program files\opencv\cxcore\include\cxtypes.h(205) : 'cvRound' の宣言を確認してください。

717:デフォルトの名無しさん
08/02/03 07:59:00
先日ここで2008 ExpressにMFCがあるか聞いたものです。
Win32を使ってコンソール型のコマンドが完成したのですが、
やはり画面をつけてあげたいなと思っています。
Win32で画面を作るのは敷居が高そうなので(リソースエディタがないなど)
他によい方法があれば採用したいのですが、どんな仕組みがあるんでしょうか。
CLIってのがそうなのかな?心配しているのは、ランタイムパッケージやら
DLLをごっそりインストールすることにならないかなんです。
単純な機能のツールをネットで配布するんで、できれば身軽に、余分なものは
なしでいきたいんです。そんなわたしにぴったりの何かはあるんでしょうか?
長文失礼しました。

718:デフォルトの名無しさん
08/02/03 08:48:07
無名 delegate とか Lambda 式とか見てると C# がうらやますぃ.
それでも C++ から離れられない俺はどうすればいいですか?
boost::lambda でしょうか?
C++09 を待てばいいのでしょうか?
C# の yield とかもうらやますぃ.
LINQ は微妙.なれればいいんだろうな.

719:デフォルトの名無しさん
08/02/03 10:55:04
>>717
画面はdelphi 6 personalで作ればおk
簡単に作れてランタイムもいらない。開発環境は無料。

720:デフォルトの名無しさん
08/02/03 13:44:01
Visual Sturdio.NET 2003でWin32プログラムをデバッグ実行すると、

出力に
'aaa.exe': 'C:\WINDOWS\system32\XXX.dll' を読み込みました。シンボルが読み込まれていません。
というメッセージがたくさんでるんですが、これは何なんでしょうか?

ググると問題無いと書いてたんですが、できれば出ないようにしたいです。

721:デフォルトの名無しさん
08/02/03 14:16:52
無理

722:デフォルトの名無しさん
08/02/03 15:37:30
gcc用で配布されているコードを,
VisualStudio2005でコンパイルしたところ,
エラー 1 error C2143: 構文エラー : '{' が ':' の前にありません。 c:\program files\microsoft visual studio 8\vc\include\cmath 18
エラー 2 error C2059: 構文エラー : ':' c:\program files\microsoft visual studio 8\vc\include\cmath 18

といった無数のエラーが出ました.

ちなみにcmathはインクルードしておらず,
#include<stdio.h>

#include<stdlib.h>


#include<math.h>

#include<complex>
だけです.

どなたかアドバイス頂けませんでしょうか?
C/C++スレでも質問書いたのですが,
こっちのスレの方が適切なようでマルチポストさせて頂きました.

723:デフォルトの名無しさん
08/02/03 16:34:56
>>722
cmathを直接includeしてないけれども
complexの中でcmathがincludeされてるからなぁ。

で、エラーの原因はその情報だけじゃ分からない。
C2143やC2059はエラー出力に表示されている箇所よりも
前の場所での構文ミスで出ることもあるから。
他の場所で'}'の閉じ忘れなんてのも原因になりうる。

もしかしたらとは思うが、拡張子が.cになっているんじゃないかな?
そうなら.cppに変えたらうまくいく可能性が高いな。

724:デフォルトの名無しさん
08/02/03 16:57:50
>>720
該当のDLLをリンクからはずせば出なくなると思うけど
必要になったらまたリンクからはずせばいい

725:デフォルトの名無しさん
08/02/03 16:58:44
ごめん
必要になったらまたリンクからはずせばいい
→必要になったらまたリンクすればいい


726:デフォルトの名無しさん
08/02/03 17:03:31
シンボル入れとけばいい

727:722
08/02/03 17:15:59
>>723
拡張子変えたらこのエラーは解決しました!ありがとうございます!
別のエラー出たのでまた頑張ります.

728:デフォルトの名無しさん
08/02/03 17:18:29
>>722
コンソールプロジェクトを作って放り込んでるんなら
stdafx.hをインクルードしないとダメかも
じゃなきゃプリコンパイル済みヘッダーを使用しないにするか


729:デフォルトの名無しさん
08/02/03 17:19:11
うわ、恥ずかしい><もう解決してたのね

730:デフォルトの名無しさん
08/02/03 19:21:19
インクルードガードは#pragma onceでしょうか?
それとも#ifndef HOGOHOGE_H_IS_INCLUDEDでしょうか?

731:デフォルトの名無しさん
08/02/03 20:03:20
#pragma onceって標準の仕様なのか?

732:デフォルトの名無しさん
08/02/03 20:21:31
標準規格には含まれていないが、
現在は殆どのコンパイラで通るようになっている。gccも。
今は、対応を気にせずに使える段階に入ってるんじゃないかな。

733:デフォルトの名無しさん
08/02/03 20:27:25
よくVisualStudio自体の機能かな、で、デバッグ機能が強力だーとか聞くんですが
詳しく解説しているページとかないでしょうか?

ブレイクポイントっていうのがそこでストップするっていうのはわかってたりするんですが
それの使いどころが判然としなかったり、他の機能に関してもそうです

734:デフォルトの名無しさん
08/02/03 21:18:28
つ ステップ実行
ウォッチウィンドウ等で変数の中身を確認しながら実行すれば、
論理的なエラーを発見するのに死ぬほど役立つ。
呼び出し履歴を併用すれば、変数の状態も追いかけ放題。

735:デフォルトの名無しさん
08/02/03 21:21:26
ちうか、733は「デバッグ」をどのようにやればいいのかが
そもそも明確に判ってないような気がする。

736:デフォルトの名無しさん
08/02/03 21:22:16
プログラマ歴20年だけどデバッグ機能ってほとんど
使ったことない。

737:デフォルトの名無しさん
08/02/03 21:26:22
733とは違うが自分もデバッグ方法やVSのデバッグ機能の使い方を知りたいな

よい書籍やサイトないですか?

738:デフォルトの名無しさん
08/02/03 21:27:37
あんまり自慢にならんね、それは。

739:738
08/02/03 21:30:48
>>738>>736 宛てな。

>>737
まずは、ヘルプの「デバッガの使用方法」に目を通せばいいんじゃね?

740:733
08/02/03 21:49:54
>>734
ループ部分とかループ回数分確認し続ける、とかなりそうですね・・・
使いどころが難しそうだ

>>735
バグ取りくらいの認識なんで、エラーの行見て修正
論理的なところは紙に全部書きだして直してます



741:デフォルトの名無しさん
08/02/03 22:30:10
>>740
ループを抜け出たいなら、ちょうど出た所にブレイクポイントをかけておいて
通常実行をすればいい

あと気をつけないといけないのは、DebugモードとReleaseモードの違いね
Releaseの場合は、普通はコードが最適化されるので、その都合上
デバッガで追いかけられない場合がある
その場合はDebugモードに戻して再実行すること

742:733
08/02/03 22:42:26
>>741
なるほど、それなら便利そうです

まだそういった作業が必要なレベルのものを組んだことがないんで実感が沸かなかったのかな・・

ありがとうございました

743:733
08/02/03 22:43:15
うわあげちゃったごめんなさいorz

744:デフォルトの名無しさん
08/02/03 23:41:33
visualc++2005express editionをインストールしているんですが、今visualc++2008express editionがでてるじゃないですか。
なので2005をアンインストールして、2008をいれたほうがいいのでしょうか?
それと2005と2008の違いを教えてください。

745:デフォルトの名無しさん
08/02/03 23:55:22
VCEEについては、そんなに変更はなかったんじゃないかな。

746:デフォルトの名無しさん
08/02/04 01:24:04
新しいものが好きなら2008
安心を得たいなら2005

747:デフォルトの名無しさん
08/02/04 01:34:32
iostream系の日本語の処理が、2005はおかしかったって話だけど。

748:デフォルトの名無しさん
08/02/04 07:49:46
locel

749:デフォルトの名無しさん
08/02/04 10:14:59
>>736
自分の書いたものしかデバッグしないの?
20年前か、、CodeViewで衝撃受けたころかなー

750:デフォルトの名無しさん
08/02/04 11:14:18
デバッグ使えない奴はバグの原因が自分のコードか他人のコードか確認できないから
バグを他人のせいにしやすい。

751:デフォルトの名無しさん
08/02/04 11:28:08
printfならいっぱい入れるけど

752:デフォルトの名無しさん
08/02/04 12:29:02
誰かご存知だったら教えてください。
VS2005のVC++でWin32ベースのDLLを作成しました。
その後セットアッププロジェクトで
レジストリの編集を行うところで戸惑っております。
すでに存在する、複数行文字列値(REG_MULTI_SZ)の値に
ある文字列を追加したいのですがセットアッププロジェクト上には
複数行文字列の項目がみあたりません。
セットアッププロジェクトのレジストリ編集では
複数行文字列の値を操作できないのでしょうか?
いい解決方法などご存知の方、どうぞよろしくお願いします。

753:デフォルトの名無しさん
08/02/04 13:50:48
ここ初心者スレですけど

754:752
08/02/04 14:01:06
すみません、、、スレを改めます。
失礼しました。


755:デフォルトの名無しさん
08/02/04 14:11:55
学ぼうとする姿勢がある限り人はずっと初心者だってばっちゃが言ってた

756:デフォルトの名無しさん
08/02/04 16:55:07
REG_MULTI_SZで検索

757:デフォルトの名無しさん
08/02/04 17:50:43
char buff[256];
for (int i=0; i<sizeof(buff); i++) {
  printf("%c", buff[i]);
}

をもっと速くなるようにチューニングしたいのですが
どのような方法がありますか?

758:デフォルトの名無しさん
08/02/04 18:00:12
>>757
それは遅いのか?
本当に?
ちゃんと最適化しても問題になるほど遅いのか?


OK!
それなら、取り敢えずputchar(buff[i])ではどうだろうか。

759:デフォルトの名無しさん
08/02/04 18:01:06
buff内にナル文字がないことが保証されているのなら、printf("%.256s", buff)でいいね。

760:757
08/02/04 18:27:20
>>758
ありがとうございます。
とりあえずputcharにしました。
速くなった気はしないでもないです。

>>759
困ったことにナル文字があります。


761:100
08/02/04 18:31:14
先日まで動いていたプログラムを実行したところ、
リソース(ダイアログ)が表示されなくなってしまいました。
原因が全く分かりません。
エラー、警告ともに0です。
実行できていたときから修正などは一切していません・・・何が原因でしょうか?
どなたかお分かりの方、お教えて頂けないでしょうか><


762:デフォルトの名無しさん
08/02/04 18:38:36
>>760
斯くなる上は、fwrite(buff, sizeof(buff), 1, stdout)だ。
# 変わらんと思うけどねぇ。

763:デフォルトの名無しさん
08/02/04 18:40:54
>>760
sizeof(buff)を変数に移して使った方が速いんじゃないかな

764:デフォルトの名無しさん
08/02/04 18:44:49
>>763
sizeof(buff)は定数だから心配なし。

765:デフォルトの名無しさん
08/02/04 18:44:51
>>761
それだけじゃエスパーじゃない限り返答不能です。
ダイアログ呼び出し前後のソースを公開してください

766:デフォルトの名無しさん
08/02/04 18:44:59
質問です。最小化の動作って、指定した座標などに向かって動作させられますか?
可能ならどんな関数を使えばいいか教えて下さい。お願いします。

767:デフォルトの名無しさん
08/02/04 18:48:29
>>764
そうなん?てっきり値が変わらなくても毎回サイズ計算するものだと思ってたよ

768:デフォルトの名無しさん
08/02/04 18:52:14
>>766
簡単には出来ないと思うけど、自分でウィンドウサイズと位置を制御して
アニメーションさせれば似たような事ができると思うよ

769:100
08/02/04 18:53:56
申し訳ございません。
ソースは下記の通りです。

int PASCAL WinMain ( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow )
{
int Ret;

hPrevInstance = hPrevInstance;
lpCmdLine = lpCmdLine;
nCmdShow = nCmdShow;
// Create Dialog
Ret = DialogBox( hInstance, MAKEINTRESOURCE(IDD_DIALOG), NULL, DIO_Sample );
return Ret;
}

前回実行させて動作確認できたときから何も触っていない状態で、
今日実行させたらリソース画面が出てこなくなりました。
プログラムの問題なのでしょうか?

770:デフォルトの名無しさん
08/02/04 18:57:07
>>767
計算するって言ったって、何を計算すると思ったのかね。
まさか、size_t foo = 4; は計算すると思わないだろ?
size_t foo = sizeof(int); は?
勿論、size_t foo = sizeof(buff); だって同じことだ。

771:757
08/02/04 19:00:30
>>762
おぉ!これは速そうですね!


772:デフォルトの名無しさん
08/02/04 19:10:53
>>768
そのアニメーションをさせる関数が分かりません;
SystemParametersInfoはアニメーションを指定の座標へ行わせるものではないんですよね?
なんて検索したら見つかるでしょう・・

773:デフォルトの名無しさん
08/02/04 19:32:34
何がしたいのかいまいち分からないな。
既定の動作だと最小化するとタスクバーに入るけど
それをどうしたいの?
もしかしてタスクトレイに入れたいとか?

774:デフォルトの名無しさん
08/02/04 19:33:40
>>772
定期的にSetWindowPosでも呼び出して座標とサイズを指定してやればいいんじゃないかと

775:デフォルトの名無しさん
08/02/04 19:50:10
>>770
計算というか、中にある型やバッファのサイズの値を調べて取得する処理って事かな
内部的動作に詳しくないから、そういう処理は別になくて、バイナリコード的には
調べたサイズの値が直接入っているかもしれないけど。

776:デフォルトの名無しさん
08/02/04 20:08:44
wikiをみると「コンパイル時に計算される」とあるね。
てことはバイナリコード的には取得した結果が直接入ってるって事か
URLリンク(ja.wikipedia.org)


777:デフォルトの名無しさん
08/02/04 20:14:24
>>773
そうです。タスクトレイへアニメーションつきで最小化をさせようと考えてます。
今、タスクトレイの座標取得をし、GetWindowRectで自ウィンドウのサイズを取得し、
DrawAnimatedRectsで自ウィンドウ位置からタスクトレイへアニメーションを考えてやってるんですが、少々問題がありまして。
文で説明するのが難しいんですが、ウィンドウは最大化状態ではないのに、アニメーションがウィンドウ一杯のメニューバーの大きさから
タスクトレイへ向かってアニメーションされてしまいます。それを自ウィンドウサイズに合わせる方法が全く分からず悩んでます。

>>774
DrawAnimatedRectsはRECT構造体を指定しないといけないんで、他でありますか?

778:デフォルトの名無しさん
08/02/04 20:15:53
XPでの最小化の挙動を見ると、タイトルバーだけが縮小しながらタスクバーに向かう感じだな
同じような挙動にしいなら、タイトルバーサイズのサブウインドウを用意して
それを縮小アニメーションさせつつ指定座標に移動させていき、指定座標にたどり着いたら
元のウィンドウを非表示にする必要がある。

何に使うのかは知らないけれど。

779:デフォルトの名無しさん
08/02/04 20:30:35
>>777
よくわからんけど、>>778の一行目みたいなウィンドウズ準拠の動きは嫌だってこと?
ウィンドウ全体が縮小しながら移動するようにしたい?
そうなるとやっぱ定期的にSetWindowPosでセットするしかないんじゃない?

780:デフォルトの名無しさん
08/02/04 20:39:35
>>777
>DrawAnimatedRectsはRECT構造体を指定しないといけないんで、他でありますか?

GetWindowRectで取得したRECT構造体のデータを使いたいって意味なら

RECT構造体っていうのは、
left→左上座標 X
top→左上座標 Y
right→右下座標 X
bottom→右下座標 Y
の4つで構成されてるデータ。

SetWindowPosにはleft、top,、right - left、bottom - top の値を設定すればいい

781:デフォルトの名無しさん
08/02/04 20:41:16
>>779
>>778のような動きをさせたいんで回答としては有難いものなんですが、タイトルバーサイズのサブウィンドウを用意する必要があるんでしょうか?
DrawAnimatedRectsのRECT構造体はタイトルバーサイズの数値が入ってればいいってものではないんですか?
開始点のRECTには、タイトルバーサイズの数値がそれぞれのメンバに入ってるんですが、
何故か最大サイズのタイトルバーからアニメーションが始まります・・


てゆーか、新しくそれ用にサブウィンドウを用意するのが良く分からない・・・w
それもまた調べなければですね^^;

782:デフォルトの名無しさん
08/02/04 20:43:44
>>780
レスが食い違いました。
ちなみになんですが、SetWindowPosってのはウィンドウレベルの指定と、ただ画面を動かすものではないんですか?

783:デフォルトの名無しさん
08/02/04 20:46:58
SetWindowPosはサイズも指定できるよ

というかDrawAnimatedRectsAPIで普通に>>778の動きになるような気がするんだけど
実際にそういうの作ったことないから俺は発言控えた方がいいな。
混乱させるだけみたいだし。

784:デフォルトの名無しさん
08/02/04 21:09:18
>>782
と、言いつつ、試しにコレだけやってみたけど普通に動いてるよ
なんか範囲の設定が間違ってるんじゃない?

RECT rect, rect2;
GetWindowRect( hWnd, &rect);
rect2.left = 750;
rect2.top = 580;
rect2.right = 800;
rect2.bottom = 600;
DrawAnimatedRects(hWnd, IDANI_CAPTION, &rect, &rect2 );


785:デフォルトの名無しさん
08/02/04 21:17:00
>>784
ありがとうございます。
私のは何が違っているのか判明しました。

上ではタスクトレイの座標を取得し、と書きましたがトレースしたら取得できてませんでした;;

HWND tray;
RECT stray;
tray = FindWindow("ModelApp","SysPager");
GetWindowRect(tray,&stray);

では取得できてませんでした。
DrawAnimatedRectsの方の使い方や考え方はあってたのに、こっちが違ったとはorz
FindWindowはこの記述じゃいけないんですかね?
ModelAppはエントリポイントで指定したClassNameです。

786:デフォルトの名無しさん
08/02/04 21:29:37
>>785
参考になるかな?これまたやった事ないんで確証はないけど
URLリンク(www.geocities.jp)


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