★初心者にVisual C++を教えるスレ★ Part8

このエントリーをはてなブックマークに追加
タイトルの通り、Visual C++ 初心者用スレッドです。

■質問するにあたって
・エラーや警告のときはエラーメッセージを書きましょう。
・開発環境も書きましょう。
・できるだけ具体的に。

  質問の仕方については次のページが大変参考になります。
  http://www.hyuki.com/writing/techask.html
  http://www.geocities.co.jp/Beautycare/4965/public/template.html

■回答するにあたって
・回答する場合はその答えに至るための「コツ」も書いてあげると良いでしょう。
 (MSDNのどの項目だとか、何のキーワードでGoogleするとか)
・ネタや煽りは軽く流しましょう。

前スレや関連スレは >>2-5 あたりに。
31:03/09/08 23:00
Part6が見つかりません。
見つけた方は貼ってください。
41:03/09/08 23:03
すいません、関連スレの更新忘れていました。MFCスレは更新してあります。

C++相談室 part23
http://pc2.2ch.net/test/read.cgi/tech/1062690663
Win32API質問箱Build13
http://pc2.2ch.net/test/read.cgi/tech/1059549320
(つД`)C/C++の宿題は私にやらせてよ!Ver12
http://pc2.2ch.net/test/read.cgi/tech/1060706382
o2
>>1
乙!


おまけ

★初心者にVisual C++を教えるスレ★ Part6
http://pc2.2ch.net/test/read.cgi/tech/1052931903/ [元URL]
http://pc2.2ch.net/tech/kako/1052/10529/1052931903.html [過去ログ]
ようやく立ったか。>>1乙。
8デフォルトの名無しさん:03/09/09 16:19
初心者の質問ではないかもしれませんが,該当スレがなかったのでこちらに失礼します.
カスタムAppWizardのデフォルトディレクトリが

C:\Program Files\Microsoft Visual Studio\Common\MSDev98\Template

あたりになっているのですが,ここに書き込む権限がないため,
デバッグも実行もできません.
AppWizardの参照ディレクトリを書き換えることはできないのでしょうか?
VCってmeで動作しますか?
マシンスペックは全てクリアしてるんですが・・・
Visual Studio.NET 2003で、VC++7.1相当の使い方をしています。

PlatformSDKのIA64用のコンパイラを、Visual Studioから使えるようにできますか?
12全スレ996:03/09/09 19:33
全スレの>>996でPlatform SDKのURLをたずねたものです。
>>997-998様、ありがとうございました。
無事ダウンロードできました。m(__)m
>>11
プロジェクト新規作成でmakefileを選択。
ビルド時に実行するバッチを作成。↓のを参考にしてみて下さい。
ドライバ作成用ですが、考え方は一緒です。
.netでも出来るはずです。

参考 http://www.ouk.co.jp/ogawa/vsusume.html
1411:03/09/09 22:09
>>13
それですと、Makefileを手で書いて、
コマンドラインからnmake実行するのと、あまり変わりません。

プロジェクトの構成マネージャでプラットフォームでWin64を選択できるようにしたいのです。
1513:03/09/09 23:22
CFGに例えば "IA64 - Release" とか設定する。
で、*.dsp内も"IA64 - Release" に変更する。
プラットフォームの箇所で選択は出来ないので、変だけど
プラットフォームはWin32のままにしておく。
でも実行されるのはIA64用のもの、というわけ。

プラットフォームの選択は、どのコンパイラを使うとかの環境の設定を
指定するものですが、自分で環境(環境変数/使用コンパイラ)などを
バッチの中で設定してしまえ!というのが考え方です。

これ書いていて思い出したけど、以前MSDNmagazineに↑のことが載っていた。
さがしてみて。
1611:03/09/10 13:21
>>15
ありがとうございます。

とりあえずWin32でプログラムのデバッグまで終わらしてから、トライしてみます。
9x系で動くVC++ってどこかで売ってませんか?
1817:03/09/10 18:11
ぁ, 東京周辺でおながいしますです。
秋葉原行くべし
自分は関西なんで
大阪周辺でVC6.0売ってるところが聞きたいです
日本橋の祖父の中古専門店とかなら、ありますかね?
21デフォルトの名無しさん:03/09/11 09:28
>>20
ny(w
思い切ってMSDNにするってのはどう?
今のMSDNにVisualStudio6.0が入ってるか、知らないんだけど。
2317:03/09/11 16:42
>>19 Thx.
今度逝ってみるわ

>>22
msdn自体見たことない
>>23
俺もMSDNは見た事ないな・・

もっぱらネットのMSDNやC++のページ、ここでの質問で事が足りるから
お金払ってまでMSDN買おうとは思わない罠

実際MSDNっていくらぐらいなんだろう?
MSDNのヘルプの話ではなく、開発ツール一式が付くことを言っていると思うんだけど?
MSDNのPro以降ならVC6は付いてるが、それ未満のエディションでライブラリだけ買っても無意味
まっとうなMSDNは10万円程度した気がするけど
9x系で動くVC探すのも良いが、VS.Net MSDN DeluxeでNT系OSごとゲトーした方が良いような。
そこまで金を掛けるのが嫌って事で>>17の質問なら、東京周辺なんだから秋葉原逝っとけ。
きっと何処かに生き残ってると思う。多分。
28デフォルトの名無しさん:03/09/14 12:06

#include <stdio.h>
#include <conio.h>
int main(void)
{
  for(;;)
    if(kbhit())
      printf("%c",(char)getch());
  return 0;
}

前にこのプログラムをビルド時のexeとexeダブルクリック時のexeで
スピードが違うと言う質問をさせてもらったものですが、
いまだに解決できずにいます。コードが悪いと思っていろいろ調べていたの
ですが分かりませんでした。

目の付け所を変えてみた所、ビルド時とダブルクリック時で、終了した時に
すぐ閉じる閉じないの違いがあった事を思い出しました。もしかして、設定で
スピードが違うのかと思い、いろいろいじってみたのですが、どこを変更すれば
良いか分かりませんでした。

解決方法を教えてください。
29デフォルトの名無しさん:03/09/14 12:19
>>28
コンソールを開く・閉じる必要がある分
遅いんじゃない?


3028:03/09/14 12:43
>>29
コンソールを開く・閉じるの意味が分からないのですが。
ただ、これが最小のコードだと思うので、どうしようもありません。
また、普通にfgetsやscanfの時の入力でも遅くなるんです。
そんなわけわからん質問の仕方してたら一生答えてもらえない。
3228:03/09/14 12:51
>>31
ボタンを押し続けた時です。
ビルド時のexe(!を押した時のexe)だと一定間隔で表示されるのですが、
Debug or Release フォルダにあるexeファイルをダブルクリックした時の
exeだと、表示されるのが遅く成る時が多く、
終いにはピピピとなってしまいます。
33デフォルトの名無しさん:03/09/14 12:55
>>28
ベンチマークの取り方を覚えれば幸せに
なれるかもしれません。
>>28
今試してみたけど速度に違いはなかったよ。
3528:03/09/14 13:12
>>33
ぜひ、そのやり方を教えてください。

>>34
ホントですか?なんで自分のはダメなんだろう。

キャプチャー機器があればどういう感じか視覚的に見せれるが無いしな。
36デフォルトの名無しさん:03/09/14 13:30
>>35
clock()
3728:03/09/14 13:43
>>36
どうもです。だが実は、ベンチマークという言葉自体が分かりませんでした。
ソフトとハードを比べてタイムを計るみたいですね。やってみます。

後、VC6、Me、アカデミック版なんですが、環境は問題ないですか?
3828:03/09/14 13:51
#include <stdio.h>
#include <conio.h>
#include <time.h>
int main(void)
{
  clock_t t=clock()/CLOCKS_PER_SEC;
  int i;
  for(i=0;i<=319;)
    if(kbhit())
    {
      printf("%c",(char)getch());
      i++;
    }
  printf("%ld\n",clock()/CLOCKS_PER_SEC-t);
  getchar();
  return 0;
}

>>33
上のコードで調べてみた所、!は10秒、ダブルクリックは13、14秒でした。
#include <stdio.h>
#include <conio.h>
#include <time.h>
int main(void)
{
    printf("Hit Any Key To Begin : ");
    getch();
    clock_t t=clock();
    int i;
    for(i=0;i<=319;)
    {
        if(kbhit()){
             printf("%c",(char)getch());
             i++;
         }
    }
    printf("%ld\n",clock()-t);
    scanf("%d",&i);
    return 0;
}

↑の結果両方とも9秒ちょい。大した差はなかった。(完)
4028:03/09/14 14:46
>>39
そうでしたか。自分だけなのかなー。

もう一台の98でやってみた所、11/15でした。
4128:03/09/14 14:58
関係ないかもしれませんが、MS-DOSプロンプトを開いてずっと押しを
した時は、!の時と同じ感じのスピードでした。

後、Win32ApplicationのwParam、TextOutで同じような事をしても
!とダブルクリックのスピードに違いはありません。
4228:03/09/14 15:49
今、BCC5.5をダウンロードしてやってみた所、同じように遅いexeが
出来上がりました。問題はVCでは無く、別の所にあるようです。
又は、安い、フリーに遅くするプロテクトが入っているのかもしれませんが。
お答えいただいた方どうもありがとうございました。
>>41
>>39の奴で試してみなよ。
去年入社したばっかの新人コボラーなのですが、会社の研修ではCOBOLしか教えてもらえなかったので、
自分でC++を勉強しようと思うのですが、
初心者向けの書籍でオススメを教えていただけないでしょうか?
4528:03/09/14 16:11
>>43
VC!:10秒、VCダブルクリック:13秒、
BCCダブルクリック(-wあり):13秒、BCCダブルクリック(-wなし):13秒でした。
>>44
お前、ひょっとして
http://pc.2ch.net/test/read.cgi/prog/1061479188/357
じゃねぇだろうなw
4744:03/09/14 16:16
違いますヽ(`Д´)ノウワァァァン
>>47
なんだ違うのか。まあ、何かの縁だと思ってちょっと来いよ。
http://pc.2ch.net/test/read.cgi/prog/1061479188/l50
>>47

初心者向けならなんでもいいよ。立ち読みして文面に好感が持てるものを買えば?
50デフォルトの名無しさん:03/09/14 16:53
こいつらヲタくだな w
51デフォルトの名無しさん:03/09/14 16:55
407 :仕様書無しさん :03/09/14 16:54
馬鹿なスレ w
推薦図書スレいけ
53デフォルトの名無しさん:03/09/14 17:05
【初心者歓迎】C/C++室【環境依存OK】
http://pc2.2ch.net/test/read.cgi/tech/1059041347/l50
このスレで充分
5444:03/09/14 17:14
>>52
情報サンクスです
55デフォルトの名無しさん:03/09/14 17:33
CV++.NETを入れてから、Borland C++Builder6を入れたらVC++.NETの方が起動できなくなりました。
厳密に言うと、スプラッシュウインドウが表示されて、その後メインウィンドウが一瞬だけ開いてすぐ閉じてしまうのです。

Builder6のほうをアンインストールしてもダメでした。C++Builderのときは大丈夫だったのですが・・・。

再インストールすればいいのでしょうが、実はVC++のディスクが1枚行方不明になってしまったのです。
OSはWinXP Homeです。

解決策をご存知の方、よろしくお願いします。
56デフォルトの名無しさん:03/09/14 18:25
>>44
> 去年入社したばっかの新人コボラーなのですが、会社の研修ではCOBOLしか教えてもらえなかったので、
> 自分でC++を勉強しようと思うのですが、
> 初心者向けの書籍でオススメを教えていただけないでしょうか?
 研修とはそういうものだ。
57デフォルトの名無しさん:03/09/14 18:28
>>44
会社は学校ではない。利益、貢献するところだ
>>55
なくしたディスク探すか、MSに泣きついて再発行してもらば?
>>55
ちゃんと店でVC++.NETを買う。
60デフォルトの名無しさん:03/09/14 18:54
>>58
やっぱりそれしかないのでしょうか・・・

>>59
もうひとつ買えと言う事ですかTT
>>60
もしかすると該当するかもしれない。
http://support.microsoft.com/default.aspx?scid=kb;ja;306905
62デフォルトの名無しさん:03/09/14 20:48
>>61
おお!有難うございます。
症状が似てるのでダメ元でやってみます!
6328:03/09/14 21:18
>>28です。質問の内容は、ボタンを押し続けた時、
ビルド時のexe(!を押した時のexe)だと一定間隔で表示されるのですが、
Debug or Release フォルダにあるexeファイルをダブルクリックした時の
exeだと、表示されるのが遅く成る時が多く、
終いにはピピピとなってしまいます。でした。

その遅くなるexeをDebug、Release両方張ります。ソースは>>39さんのです。
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1055157603&res=5
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1055157603&res=6
比べるテストをお願いします。

また、速いexeが作れる人、そのexeをアップしてください。お願いします。
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/lounge/index.html#pagetop
単にforループが忙しくてMeカーネルがキーインプットを落とすとか云う話ではないのか?
それなら、Sleep(1)とかループ中に挟んでおけば解決したりしないか?
6528:03/09/14 21:37
>>64
Releaseの方は速くなりました。
ReleaseとDebugに差が出たのをはじめてみました。
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1055157603&res=7
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1055157603&res=8
なお8の方はReleaseですが間違えて表示がDebugになっています。
6628:03/09/14 21:49
>>64
ゲームにもその方法を使ったら解決できました。
なお、ゲームの方はDebug、Release両方速くなりました。
どうもありがとうございました。

また、何回も書き込みお騒がせいたしました。
Visual Studio .NETにおいて、数式中の数字と記号の間に、
自動的に半角空白文字を挿入することはでけますか?
あればその方法を教えてください。
例)
「a=b+d」

「a = b + d」
>>67
VBを使う。
6955:03/09/15 15:46
>>61

だめでした・・・。
しばらくはここに来ることは出来なそうですTT
コンボボックスの右側にボタンがありますよね?
あれが押されたかどうかを調べるにはどうすればいいんですか?
>>70
CBN_DROPDOWNのハンドラを作ってガーッときてゴーッってな感じで
72デフォルトの名無しさん:03/09/16 18:25
VK_NUMLOCK → "NumLock"
みたいにキーコードを文字列に変換したいんですけど、ちまちまマッピングを
書いてやるしかないのでしょーか。

どっかにソース落ちてないですか?
Keycode2Name( VK_NUMLOCK , szKeyName )
こんな感じの。

ついでにWindowsメッセージ版もあるとありがたい。
Message2Name( WM_CREATE , szMessageName )
こんな感じの。
>>72
随分と面倒くさがり屋なプログラマですな。
7472:03/09/16 19:12
自己レス。

キー名に関してはAPIの GetKeyNameText() でいけますた。
75デフォルトの名無しさん:03/09/18 23:56
VisualC++6 Pro SP5
MFCダイアログベースでの質問です。

スタック上にCHogeDlg dlg;としてインスタンスを作成して、これをdlg.DoModal()でモーダル表示をし、EndDialog(0)で閉じてるのですが
これを繰り返すと(DoModal() -> EndDialog(0))4KBずつくらいメモリ使用量が増えていくのですが
EndDialog(0)のあと(まえ)に何かしないといけないですか?

> EndDialog(0)のあと(まえ)に何かしないといけないですか?
あんたのつくりしだい。
>>75
DoModal()の中で一時的なCWndオブジェクトが作られることはある。
そいつなら、アイドリング時に自動的に削除されるから、ほっといてもいずれ消える。
DeleteTempMap()で明示的に消すこともできる。

CDialog dlg(IDD_DIALOG1, this);
dlg.DoModal();
DeleteTempMap();
よくウィンドウにWindows Media Playerが張り付いた(?)物を見かけますが、
あれはどうすればできるのですか?
79デフォルトの名無しさん:03/09/20 03:28
C言語の勉強を始めたばかりの、めちゃくちゃ初心者です。
本に書いてある通り、新規作成からwin32プロジェクト、
コンソールアプリケーション、空のプロジェクトを選択し、ファイルを新規作成し、
コードを入力してビルドからデバックを開始しても、
「デバックを開始できません。指定されたファイルが見つかりません。」
と表示されてしまいます。
助けてください。
>>79
ファイルを作るとき「ファイル」→「新規作成」メニュー使ってないか?
だとすると「ファイル」→「既存項目の追加」を実行しないとプロジェクトに追加されない。
それが面倒なら最初から「ファイル」→「新しい項目の追加」でファイルを作れ。
>>76
つけ足すと、Compuware社(旧NuMega)のBoundsCheckerを使ってみる、というのも手。
ただ、BoundsChecker通ればいい、という勘違いをしないように、使うことがポイント。

>>78
ActiveXコントロールの使い方を勉強しましょう。
8279:03/09/20 13:43
>80さんありがとうございました。おかげでさっきまでのメッセージは
出なくなったのですが、デバッグを開始すると、一瞬MS-DOSの画面が開くと
すぐに消えてしまい、「プログラムはコード 0 (0x0) で終了しました。」という
メッセージが表示されてしまいます。ビルドでも正常終了しますし、何がいけないのでしょうか。
8379:03/09/20 13:47
いや、MS-DOSに一瞬表示されてすぐに消えてしまうのです。
確か過去ログに同じようなことが書いてあったような気するので
探してきます、すみませんでした。
84ぷぅ:03/09/20 16:47
コンパイルの説明をしていただけませんか?
ちなみにVisual C++ 6.0をつかっています。
85俺って親切だなあ…:03/09/20 16:55
86ぷぅ:03/09/20 17:04
詳しい解説HPを載せてもらいありがとうございました。
本当に感謝しています。ぺこ <(_ _)>
87ぷぅ:03/09/20 17:08
>>85
でもコンパイルのしかたが載っていないような気がするんですが・・・
88(;´Д`)y─┛~~:03/09/20 17:22
>>80さんに質問です。僕も79さんと同じ疑問もっていたんですが
既存項目の追加 新しい項目の追加というボタンがありません。
どこにありますか?
自分の環境を書けぃ。
90(:03/09/20 17:40
OSはwin98です。
ぷぅさん同様visual c++ 6.0です。
よろしくおねがいします。
VC6 だったら

 ファイル -> プロジェクト -> Win32 (Console) App -> 単純なアプリケーション

と選んでいけば、勝手にテキストファイル生成されるから
そこに打ち込んでいけばよろし。

そのテキストファイル以外にテキストファイルを追加する場合は、
追加したいテキストファイルを編集できる状態にして

 右クリック -> プロジェクトへファイルの挿入

すればいい。
92デフォルトの名無しさん:03/09/21 21:53
Visual C++.net standard version 2003を
購入してインストールしたんですけど
たくさんのファイルなどができて
どのファイルで起動すればよいのかわからないです。
どのファイルに入っているか教えていただけないでしょうか?
>>92
スタートメニューに登録されていません?
エクスプローラーから起動するなら、Common7のIdeのDevEnv.exe。
94デフォルトの名無しさん:03/09/21 22:58
>>93
スタートメニューから行けました。
ありがとうございました。
95デフォルトの名無しさん:03/09/23 00:02
VC6.0でビルドしたとき
リンク中...という所で止まってしまい、
中止することも、終了することも出来ないのですが
解決する方法はありますか?
>>95
しばし待て!
>>95
うちはVC6 SP5あてたら直ったよ。
DirectShowを使ってメディアプレーヤーを作ってみたけど、
mp3は何か時間の取得がうまく出来ないことがあるね。
再生時間がやたらと長く取得されたりとか。
あれって何か良い対処法無いの?
9995:03/09/23 15:40
>>97
SP5あてたら止まらなくなりました。
ありがとうございます!!

でもなんで止まるんだろー?
100デフォルトの名無しさん:03/09/23 15:56
英語版のVCで、日本語の文字列(ダブルクオーテーションで括られている)が含まれたソースをコンパイルした物を実行したとき、
日本語が表示される環境でソース通りの文字列が表示されますか?

 ソフトウェアの日本語化が(本家から)依頼されたのですが、私はVCを持っていないのでこのような質問をしました
VC ではなく Visual Studio でした
スレ違いのようなのですれ立てるまでもない〜へ逝って来ます。
スレ汚し、失礼しました。
>>100
Unicode対応でちゃんと書かれていれば、日本語通ると思うよ。
スレ違い気味の質問にレスをして頂いて、ありがとうございます。

SHIFT_JISですが、大丈夫でしょうか。
>>104
試しにやるのが一番。
プログラミングをやってみたくて猫でもわかる〜に行ったんですが、
ソフトがありません。どこかで無料ダウンロードできますか?
107デフォルトの名無しさん:03/09/23 21:27
コンパイラ?開発環境?なんのソフト?
108106:03/09/23 21:34
Visual C++1.5? です
これさえあれば後は説明通りにやれば勉強できると思ったので・・・
>>108
買えよ。
110108:03/09/23 21:55
無料じゃないんですか・・・
失礼しました
>109
ところで、VC++1.5なんて骨董品どこらへんで売ってる?
>>106
Borlanc C++のフリー版を使う。
113デフォルトの名無しさん:03/09/24 06:49
HTMLをVCエディタを使って作りたいのですが、その場合はどのプロジェクトで
作ればよいのでしょう。また、ビルドみたいなのはどうするのでしょう。
インタプリタなのでビルドとはやり方が違うと思いますが。
114デフォルトの名無しさん:03/09/24 07:19
>>113
ファイル→新規作成→ファイル→HTMLページ

じゃダメなの?
>>114
それでもできるのですが、cppの場合はプロジェクトに
コンソール/ウインドウズを指定してからファイルを作成するので
そういうのがあるのかなと。
>>115
ヘルプに載ってなきゃ無いと思う。
>>114>>116
お答えありがとうございました。

>>116
調べてみます。
118デフォルトの名無しさん:03/09/24 16:39
MFC超初心者なんですが、こちらでいいですか。
VC++6.0に添付の「プログラミング入門」の
Appendix Aのp.372の
「メンバ関数は、クラス定義の内部で実装
(関数のコードを記述)することもできますし、
クラス定義の外部で実装(::)することもできます。」
とあります。
ここで、クラス定義の内部で実装というのは、
p.373のcstringクラスにコンストラクタの追加、
すなはち
clss cString{
...略
pubulic:
~~~~~~~~
cString();//コンストラクタ
~~~~~~~~~
  ↑
この破線の部分が「クラス定義の内部で実装」を示しているのでしょうか?
宜しくお願いします。
>>118
とりあえずclassのつづりが間違ってるな。
class aa{
  void B();
}

void aa::B()
{
  ・・・
}

もできるし、

class aa{
  void B(){
    ・・・
  }
}

もできるってこと。
>pubulic:
>~~~~~~~~
public: は関数ではありません。

>cString();//コンストラクタ
>~~~~~~~~~
関数を宣言しているだけです。実装なら、
cString(){
 ...略
}
>>119-121
分かりやすく、的確な即レス、有難うございます。さすがプリンス板です(自分の中では)。
納得いたしました。sageですが有難うございました。
示してをりません。宣言してゐるだけです。
>>123
有難うございます。
実装はcString()のメンバ(中身)ですね。
for (int i = 0; i< SIZE; i++) {
 pBuffer[i] = n;
}
for (int i = 0; i< SIZE; i++) {
 *pBuffer++ = n;
}
配列の扱いで後者は良く見られるパターンですが前者の方が早いって本当ですか?
>>125 実際にやってみてレポートきぼんぬ
サンデープログラマだから、そんなに多くのコード見ないけど、後者ってよく見られるの?
それならCスレで激論してくれ。
129100:03/09/24 21:41
>>105
わかりました。先方に言っておきます。ありがとうございました。
130デフォルトの名無しさん:03/09/25 14:03
初めてVCを始めるものですが、
ファイル処理に
ランタイムライブラリ関数
win32api
MFCのCfile
のどれを使おうかちょっと考えてます。
それぞれの特徴はどんなもんでしょうか。
131130:03/09/25 14:42
すでにMFCで始めちゃったんですが、感覚としてはVBでいうところの
ランタイムライブラリ関数=VBの関数
win32api=win32api
MFC=コントロール
見たいなものですか?
VC始めたのもVBでapiを使うことが多くなってきたのがきっかけのひとつです。
MFCといっても結局API使うことが増えてくるのでせうか?
132デフォルトの名無しさん:03/09/25 14:48
質問させてください。

VC++で複数の子ダイアログを表示する方法を教えてください。
子ダイアログにはそれぞれWndProcが走っている状態にしたいのです。


お願いします。
133デフォルトの名無しさん:03/09/25 17:15
SDKのエディットボックスに背景色を設定する方法を教えてください
おーばーらいどというのを使わなければいけないのでつか(;´Д`)?
>>132
MFC使えば楽
>>133
親ウィンドウのWM_CTLCOLOREDITハンドラでSetBkColor()
136デフォルトの名無しさん:03/09/25 23:15
VC6.0 MFCのSDIにて作成しています。(OS:Win2K)

VC経験は以前にダイアログベースで電卓プログラムをつくった程度です。

目的はSDIにてボタンの追加やリストボックスなどを使用したプログラミングの作成です。
(以前の電卓ではリソースファイルにエディタ(?)を使いボタンの追加などを行っていました)

文字の表示は
void CxxxxView::OnDraw(CDC* pDC)
{
pDC->TextOut(0,0,"TestString");
}
で行えました。(ありふれた例題を参考)

さて正直このように、どのクラスに何を追加してよいのか的レベルで悩んでいます。
(ボタンのOnOK後の処理うんぬんではなく描画させることができていません)

今週末に時間をかけて作成しようと思っていますので、みなさまご教授おねがいします。

参考までに下記URLにて、作成したスケルトン(例題まんまですが)と
私のやりたい目標の画像を掲示しましたのでよければみてください。

ttp://home.att.ne.jp/grape/inchikikusai/situmon.htm
137デフォルトの名無しさん:03/09/25 23:19
VC6とVC.NETって機能は変わってますか?
どちらがいいのか迷っているのでお奨めの方教えてください。
>>136
この形式(CView利用)のウィンドウにコントロールを置くのは、
各種ウィザードが使えないから面倒だよ?ま、とりあえずボタンの作り方。

(1)クラスビューでCEx03Viewを右クリック→メンバ変数の追加
  →変数のタイプ"CButton"→変数名"m_button1"→OK押す
(2)クラスウィザードでCEx03ViewにWM_CREATEハンドラを追加
  →CEx03View::OnCreate()関数ができる
(3)CEx03View::OnCreate()に以下のコードを追加
m_button1.Create("hoge", WS_VISIBLE|BS_PUSHBUTTON, CRect(0,0,80,30), this, 1000);
139136:03/09/26 00:09
>>138さん
即レスどうもです。 今は環境がないので明日実装してみます。

2点追加質問です。
1、
>この形式(CView利用)のウィンドウにコントロールを置くのは、
>各種ウィザードが使えないから面倒だよ?ま、とりあえずボタンの作り方。
これ絡みなので、私もシロウトながらそう思いました。
ただ、ダイアログではなくウインドベースを目指す→SDI 利用にしました。
何か別の方法や手法があるのでしょうか? 例えばリソースファイルを引っ張ってくるであるとか・・・・

2、
URLの方で「名前不明」としていたのは何って言うのでしょう?
エクスプローラでファイル表示形式を詳細にすると「名前」「種類」「サイズ」などと出てスクロールできるやつです。
名前不明なため全然参考ソースなど調べることができませんでした。
140デフォルトの名無しさん:03/09/26 00:40
なんかな〜と愚痴ってみる
141138:03/09/26 00:55
>>139
ああ、俺はまた、好んでイバラの道を行く人なんかとおもた。ちがうのか。
なら新規プロジェクト作成のとき、「基本クラス」をCFormViewに。
SDIだけどリソースで画面が作れる。
質問2はリストビュー。作成時の「基本クラス」でCListViewを選択。
142133:03/09/26 06:19
>>135
ありがとうございます。ちゃんと表示色変えられました。
ただ全部の色が変わってしまったのでGetDlgCtlID的なものを探しています。
IDはどっかのパラメータに入ってるのかな。もちょっとがんがってみます。
目がしょぼしょぼ。・゚・(つД`)・゚・。
>>137
IDEが重くて未成熟でも構わないのなら.NET。
快適に開発したいのならV6。
144デフォルトの名無しさん:03/09/26 17:13
リンク時に特定の警告メッセージを抑制したいのですが知っていますか?
コンパイル時には、
#pragma warning( disable : 4507 34 )
とすれば、4507 34 番の警告が抑制されますが、これのリンカー版みたいのってありますか?
リンカーにwarningってあるんだ?
>>143
レスサンクス
マシンが遅いのでVC6を探して買ってきます。
.NETはバグ無くなってからにします。
147デフォルトの名無しさん:03/09/26 21:21
質問させてください。
VC++で,自作プログラムから外部プログラムへデータを
渡したいのですが,どんなふうに処理してよいか分かりません.

たとえば,数値データをエクセルに送ってグラフ化するまでを
自動化できないでしょうか?

お願いします。
148デフォルトの名無しさん:03/09/26 21:38
WindowsXP + Visual C++ .NET(2002) + DirectX SDK 9bを使用しています。

1、ライブラリmylib.libからDirectXのd3d9.libなどをリンク
2、ライブラリ使用側はmylib.libとDirectX9のd3d9.libをリンク
とすると、ライブラリ使用側からみるとmylib.libとd3d9.libの二箇所に
同じものが組み込まれてしまっているのではないかと思ったのですが
これでも問題ないのでしょうか?

例えばある構造体を使用したときに、mylib.libからその構造体を
取ってくるのか、d3d9.libからその構造体を取ってくるのかといったことを
どのように解決するのかということが疑問に思いました。

どうかよろしくお願い致します。
>ライブラリmylib.libからDirectXのd3d9.libなどをリンク

これはどうやればできるのか?
mylib.libを作る際には、d3d9.libの指定など無効なはずだ。
150150:03/09/26 21:52
>>149
>mylib.libを作る際には、d3d9.libの指定など無効なはずだ。

そうだったんですか。ライブラリの中を覗いてみたところ
使用していないDirectXの様々な構造体名などの単語がずらずら並んでいたので
リンクされてしまっているものだと思っていました。

どうもありがとうございました。
ダイアログボックスのプロバティの水平スクロールバー、垂直スクロールバー
に関しての質問です。

チェックすると表示はしますが、スライダーを動かしてもすぐに初期位置にもどって
しまいますし、ダイアログボックス内のコントロールも移動してくれません。
どのように使用するのでしょうか?
>>151
WM_HSCROLL, WM_VSCROLLのハンドラを作ってスクロール位置を更新。
コントロールもあなたがやさしく動かしてあげないといけません。
>>152
水平スクロールバーの作成(コントロール移動は後回し)の所ですけど

ClassWizardによりハンドラ追加後、
void CTest1Dlg::OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar)
{
int nNewPos; // スクロール後の位置
switch( nSBCode ){
case SB_THUMBTRACK:
nNewPos = nPos;
break;
// 残りの「SB_何とか」はここでは省略
}
pScrollBar->SetScrollPos( nNewPos );
CDialog::OnHScroll(nSBCode, nPos, pScrollBar);
}
と作成して実行してもpScrollBarの値が0なので
「バンドルされてない例外は・・・」となってしまうんです。
154136続き:03/09/27 12:45
とりあえずリストビュー自体はくっつけることができました。

「基本クラス」をCFormViewにしてリソースでつくったんですが、
もとから「基本クラス」でCListViewの方がよかったんでしょうか?
(後々ボタンやチェックボックスの追加などがやりやすいと思いリソース使用にしたのですが)

さて、現状優先課題は、
1、メインウインドの大きさ変化に対して、リストビューの大きさが変わらない。
>これはウインドを可変させたときに、確か何やら値が返ってくるので、その数値をリストビューに反映させる。
であってますか? (それとももっと単純な落ち度があるのでしょうか?)

2、リストビュー内のデータについて
void CxxxxView::OnInitialUpdate(){
内で仮作成していますが、よくないと思っています。
このような場合、データだけをどこかで作り、呼び出す形式が一般的でしょうか?
また、そのとき「CxxxxxView」とは別クラスを用意した方がよいのでしょうか?

例によって参考URLです

ttp://home.att.ne.jp/grape/inchikikusai/situmon.htm
>>154
1. WM_SIZE の OnSize を追加。
2. MSDNのDoc/View

なんかMFCの知識が圧倒的に不足している悪寒。
時間のあるときにじっくりMSDN眺めれ。
>>155
MFCというかWindowsの(ry
157デフォルトの名無しさん:03/09/28 16:15
SDIアプリを作成して、クライアント領域にダイアログを
子ウィンドウとして(WS_CHILD)貼り付けました。
(↓のコードを書きました)

  ::CreateDialog( this->m_hInstance,
    MAKEINTRESOURCE( IDD_DIALOG1 ),
    this->GetMainWnd()->m_hWnd,
    (DLGPROC)DialogProc );

ところが表示はされるのですが、ボタンを押すことができません。
ダイアログをスタイルで「無効」にしているわけではありません。
Spyで調べても、WM_PAINTなどの描画メッセージは来ているのですが、
マウス関連のメッセージは来ません。
どうすればボタンを押せるようになるでしょうか?
158デフォルトの名無しさん:03/09/28 17:07
ここに質問していいのか迷いますがお願いします。

jpegを開いて画像処理したりするアプリを作ろうと思ったのですが、
コードを書く前に詰まってしまいました。
Independent JPEG Group(http://www.ijg.org/ )のjpegライブラリを使おうとしてDL私的たのですが、
libjpeg.libを生成しようとしてVCの環境変数も書きなおし、
jconfig.vcをjconfig.hにリネームし、
jpeg-6bディレクトリに移動して

nmake -f makefile.vc

と打ちました。
最初はうまいこと画面が流れてコンパイルできているようでしたが、
最後に

DEL LIBJPEG.LIB

と表示してPCがフリーズしてしまいました。
ちなみに、再起動した後jpeg-6bディレクトリにはlibjpeg.libはありませんでした。
環境はwin98,VC++6.0SEです。
$(RM) libjpeg.lib をコメントアウトしてみ
以前にVBを軽くいじっていたためにどうもVC入門書のコンソール画面から解説する解説書を読む気になれません....
しかし、いきなりGUIから始まる入門書も難解で....こんなあふぉな私にVCを簡単に理解可能な入門書またはサイトはないでしょうか?
VBをいじってたと言っても基礎的なのでほかの言語に応用できるような感じではありません...
>解説書を読む気になれません....
やる気が無いなら無理。
>>161
C言語入門書はやったのですが挫折気味でした。コレが何に使えるんだ?とおもってしまってw
確かに根気とやる気が必要ですね。精進させていただきます
163デフォルトの名無しさん:03/09/28 22:11
MFCを使用してプログラムしていますが、
WndProcを利用してメッセージを制御したい
と思っています。
WndProcはSDKだけでMFCでは利用できないのでしょうか?

教えてください。
>>163
無理諦めろ
>>163
CWnd::WindowProc
>>163
マルチ氏ね
167デフォルトの名無しさん:03/09/29 00:47
起動してから「Hello World」のプログラムを
書くところまでの具体的な手順を教えて下さい。
ボタンがたくさんあって良くわからないです(´・Д・`)
自分で調べろ
169デフォルトの名無しさん:03/09/29 04:18
始めようとC++.net2003を学割でかったのですが、、、
hello.c
#include <stdio.h>

main(){
printf("Hello C world!\n");
}

みたいなgccで通りそうなソースが通らないのですが、通らないのでしょうか?
申し訳ありませんがご教授クダサイ。
>>169
>通らないのですが、通らないのでしょうか?
大きな意味で、向いてないと思う。あと、>>1読め。
>>168
そうは言っても最初にIDEというものに触るときは何していいかさっぱりわからんもんだぜ。
プロジェクト?何それ、意味不明。

まぁ、入門書の1冊でも買うのが一番の近道か。
説明書みればいいだけなのだが
C++.NETでTreeViewにCheckBoxを付けてある場所がマウスでチェックされたら、
一番上のノードにチェックが付くようにしたいのですが
アプリケーションエラーが発生してしまいうまくいきません(exeのハンドルエラー)

いい方法はないでしょうか?(treeViewのCheckBoxはtrueになっています)

private: System::Void treeView_KeyTable_AfterCheck(System::Object * sender, System::Windows::Forms::TreeViewEventArgs * e)
{
if(treeView_KeyTable->Nodes->Item[0]->Nodes->Item[0]->Nodes->Item[0]->Checked)
{
treeView_KeyTable->Nodes->Item[0]->set_Checked(true);
}
174173:03/09/29 14:57
すいません
ソース'}'が足りませんでした・・
正しい奴は↓です

private: System::Void treeView_KeyTable_AfterCheck(System::Object * sender, System::Windows::Forms::TreeViewEventArgs * e)
{
if(treeView_KeyTable->Nodes->Item[0]->Nodes->Item[0]->Nodes->Item[0]->Checked)
{
treeView_KeyTable->Nodes->Item[0]->set_Checked(true);
}
}
コンボボックス内に現在つながれているMIDI機器を表示させ
選択出来るようにしたいのですが、どうすればいいでしょうか?
>>175
初心者スレなのでしょうがないとも言えるが、人に聞くなら最低限問題は切り分けろ。

MIDI機器を列挙する方法がわからないのか?
コンボボックスに入れる方法がわからないのか?
選択させる方法がわからないのか?
自分では何もする気がないから誰かに全部作らせたいのか?
177175:03/09/29 18:35
>>176
全部に決まってるだろ!
それくらい気づけ!
>>177
繋ぎ直したのか?
179デフォルトの名無しさん:03/09/29 19:20
ここは初心者スレでもなんでもないな。
ただ煽ることしかできない厨のたまり場になってる。
180175:03/09/29 20:38
>>176
MIDI機器を列挙する方法を教えてください。
182175:03/09/29 21:27
>>181
ありがとうございます。
183175:03/09/29 21:59
VBですね・・・。
184181:03/09/29 22:11
俺はgoogleの検索結果を示しただけだが・・・。
お前さんがどのページを見るかは勝手だが、OS提供のAPIはそれを使う言語とは関係ないぞ。
185175:03/09/29 22:14
そうでしたか
>>185
馬鹿だろお前
187175:03/09/30 07:55
>>186
いいえ
188デフォルトの名無しさん:03/09/30 09:55
すみません、教えてください。
ワーカースレッドを生成するプログラムのデバッグってふつうは
どういう風にするものなんでしょうか?
WinInetを使って通信するプログラムなんですが、タイムアウトの
バグを回避するためにはワーカースレッドで通信してます。
で、ときどきうまくタイムアウトしないようなので、ステップ実行で
トレースしてみているんですが、当然、元のプログラムとワーカー
スレッドの進行度合いの関係は通常の実行時とは違いますよね。
それで悩んでます。
189デフォルトの名無しさん:03/09/30 11:07
>>188

ステップ実行しているスレッド以外のスレッドは全速力で動くよ。
OutputDebugString たくさん仕込むのがいいんじゃない?
190デフォルトの名無しさん:03/09/30 15:15
教えてください。
プログラムを走らせると、
Debug Error!
Program: ....
DAMAGE: after Normal block (#62) at 0x00441520
という、エラー(?)が出てしまうのですが、
これはどうしてなのでしょうか?

プログラム自体は期待した結果をきちんと出してくれています。
調べてみたところ、どうも一番最後のところで
メモリの解放がうまく出来ていないことが
原因のようなのですが、、、

環境は
WinXP Professional
VC++6.0
です。
よろしくお願いいたします。
sourceを読みたいのう
じゃあ がんばってメモリ解放しようぜ
ソースなんですが、ちょっと長いんです。
もし、見てくださるなら、
何かしらの方法でテキストファイルをお送りしたいのですが
いかがでしょう?
>>190
Compuware社のBoundsCheckerっていうソフト、
メモリリークだけじゃなくて、解放済みメモリに書き込むのも検出してたような・・・。
>>190
DAMAGE: はアクセス違反でしょ。
どっかで配列超えて書き込んだりしてない?
>194
>195
ありがとうございます。
調べてみます。m(--)m
ちなみに、Cランタイムの終了処理の中で、
緩衝領域が侵されていないかチェックしてるので、
メモリ解放処理にミスがあるとは限らないよ。
おっと訂正。

> 緩衝領域が侵されていないかチェックしてるので、
終了時にトレースにエラーが出力されるわけで、 ←この行追加
ちょい質問何だけどVCの一時オブジェクトってどうなってる?
#include <iostream>
using namespace std;
char str[]="test obj";
struct test
{
  test(char* s){ cout<<s<<endl; }
};
test fun(){ return test(str); }
int main()
{
  fun(); //Ok
  test(str); //NG
  return 0;
}
これってどうして?
もちろんキャストや整数型ならオーケーなんだけど。
> test(str); //NG
これは
test str;
と同等にみなされる。つまり「test型のローカル変数strの宣言」だ。
この文脈でコンストラクタを呼び出すつもりなら、関数名をカッコに入れろ。
(test)(str);
>>201
構文解釈で関数宣言みなせるものは関数宣言とみなす。
という話は知ってたんですけどまさかローカル変数の宣言とみなすとは知らなかった。
だけど括弧が無視されるのは何か奇妙な感じですな〜。
test(dummy)(str);
こんな文法やだな〜。
203デフォルトの名無しさん:03/10/01 01:50
Visual Studio .NET2003のC++で勉強を始めました。
よく本やWEB上のサンプルで、コンソールならmain、WindowsプログラムならWinMainを
使うと書いていますが、VisualStudioのウィザードで自動的に作成されたコードでは
_tmain、_tWinMainという関数がそれに相当するようです。
この「_t」を削除してもコンパイルは通るのですが、この「_t」って一体何なんでしょうか?
ご存じの方教えて下さい。
>>203
汎用テキストをあらわすプレフィックス。Unicode版とANSI版を同一の
ソースコードから作成するのに便利なように定義されている。
当分の間は(あるいは一生)気にする必要はない。
205デフォルトの名無しさん:03/10/01 05:28
VC++のSDKでマルチラインのEditコントロールを配置しました。
WM_CTLCOLOREDITメッセージ内でフォントサイズ12のテキストを描画させたところ
|←の表示位置が文字の前後でなく真ん中に表示されたり、文字の選択等がおかしくなってしまいました。
なにか設定等をしなければならないのでしょうか?
またSetBkColor()で背景色を設定したのですがES_MULTILINEスタイルを指定していると無視されてしまいます。
違う設定方法があるのでしょうか?
206デフォルトの名無しさん:03/10/01 12:35
馬鹿な質問の気がしますが・・・・・・・・・・
VC6じゃないとコンパイルが通らないプログラムがありました。
(VC6以降サポートされたAPIのため)
そのためVC6を買いました。

VC5で最新のSDKを入れるとコンパイルが通ったのでしょうか?
>>206
最新のSDKとは何ですの?
>>206
多分通ったでしょうね
っていうか、今のタイミングでVC6?
新しいiostream、using namespace stdより、古いiostream.hのほうが
cout出力が速いみたいなんですけど、これってこういうもんなんですか?
>>209
そういうもんだろ。
211デフォルトの名無しさん:03/10/01 18:34
>>208
レスありがとうございます

VC6自体を買ったのはかなり前の話です
ボクって馬鹿でした・・・・・
>>205
そんな所で描画しちゃいかん。フォント変えたかったらWM_SETFONT送れ。
背景は、好きな色のブラシ作っといてWM_CTLCOLOREDITで返す。
213205:03/10/02 02:25
>>212
レスありがとうございますです。
テキストの描画は他のとこでやっており、SelectObject()で描画した気になっていました。
すみません(;;
WM_SETFONTで設定したところカーソルの振る舞いは正常なものになりました。ありがとうございますヽ(≧▽≦)ノ

ただマルチラインを指定したエディットボックスの背景なのですが
SetBkMode()では1行目しか変更できませんでした。
改行すると他の行も変更されるのですが・・・
もう少しがんばってみますm(_ _)m
>>213
SetBkColorで文字の背景色を変え(wParamがHDC)、
ブラシハンドルをreturnしてコントロールの背景色を変えてみる。
215205:03/10/02 16:28
できますた!ヽ(≧▽≦)ノ
単純にキャストして返せば良かったのですねー
ありがとうございました〜m(_ _)m
216デフォルトの名無しさん:03/10/02 22:27
VC6なんだけど、ProsessorPackっていうのを訳も分からず入れてみた。

これってインストするだけで、いいの?

っていうか、インスト前と後でコンパイルしたEXEをバイナリエディタで比較して
みたら、入れた後の方がコード部分が短かくなっる...

きょうびのCPU向けに最適化されたって考えていいのかしら?
>>216
ちょっと違う。
どう違うかは>>218が詳しく説明してくれる。
(;´Д`)<シラネー
219デフォルトの名無しさん:03/10/03 15:06
APIを使ってマシンのMacアドレスを取得したいのですが、
可能でしょうか?
調べてみたらWin2000以降でないと使えないAPIとかでてきてしまいまして。
95系、NT系、どちらでも使えるAPIはないでしょうか?
>>219
すみません。
スレ違いでした。
221デフォルトの名無しさん:03/10/03 17:22
222デフォルトの名無しさん:03/10/04 04:30
センセイ!
EM_GETLINEの正しい使い方教えてください!VCでSDKしてます!
LPARAMにデータが入ってこないんです。・゚・(つД`)・゚・。
>>222
おしいな。VB用なら前に作ったのに。
win2k visualC++.netでwin32アプリ作ったんですが
2kでは動くんですけど
9x系のOSだとダイアログなどが文字化けしてしまい
またしばらくすると固まってしまいます

どうすれば問題なく動くようになりますか?
>>224
UNICODE関係か?
226222 :03/10/04 11:34
お騒がせしました。
バッファに使う変数の宣言位置いじったらデータが入ってきました。
でも何でか分からない…_| ̄|○
>>226 そういうのって、リビルドすると直ることあるよ
>>226
宣言位置を変えて直るのはたいがいその近くでオーバーフローしてるかヒープ破壊してるかのどっちかだが。
>>226
EM_GETLINEのマニュアルを読め。
LPARAMの先頭にバッファサイズを入れておく必要がある。
230222:03/10/04 20:24
バッファサイズ入れてないのに
データは来る・・・_| ̄|   __○
>>230
それってゴミ値じゃねーの?
>>230
初期化していないのだから、サイズがいくつになっているかは不定だ。
データが取得できなかったときは、*たまたま*0になっていて、
データが取得できるときは、*たまたま*適当な値になっているということ。
マルチメディアタイマーを使用して、10msごとにテキストボックスのメンバ変数を1ずつインクリメントし、
再描画をするプログラムを作り、実行したたところ、
XPでは正常に動くのですが、98系ではウインドウが激しく点滅してしまい、使い物になりません。
98系での正常動作をさせる為に何かアドバイスをいただけないでしょうか。
再描画?その辺りのソースを晒してもらわんことにはわからんなぁ。
>>233
マルチメディアタイマーを使っているところに問題ないか?
あれはスレッドの優先順位が最も高いから、そっちのほうに処理が食われて、
他のところがおろそかになるんだよな。
マルチスレッドのほうがいいと思うが。
それから10msはちと早すぎ。50msくらいにまで落としたほうがいい。
236188:03/10/06 09:17
>>189
ありがとうございます。
規制があったのか、書き込みできなかったもので、
アドバイスいただいたのに遅くなってすみません。
やっぱりそうなんですね。
教えていただいた方法でやってみます。
昔作成したファイルを、VC++.net 2003でコンパイルしたら、
「WINVERを設定して無いね。0x0501にしておいたよ。」
なんていうメッセージがびっしり出てしまいました。

WINVERについて調べると、どのWindowsをターゲットにするのかを設定するのに
使用するマクロっぽかったのですが、
WINVERマクロをどういう値にするとどのwindowsがターゲットになるのかが
ちっとも分かりません。

MSとかでサーチしても
http://search.microsoft.com/search/results.aspx?View=ja-jp&p=1&s=0&c=4&st=b&qu=WINVER&na=30
こんなだし....

たとえば Win98SE、WinME、Win2k、WinXPをターゲットにしたい時は
WINVERを設定すればいいんでしょう。


とりあえず、なんかデフォルトらしいので
#define WINVER 0x0501
とかにしてみてますが...
238デフォルトの名無しさん:03/10/06 13:08
そしてage
名が無知にもおしえtげやって
http://www.muzie.co.jp/cgi-bin/artist.cgi?id=a016219
Windows95系は知らんが、
NT4.0 0x400
NT5.0 0x500
NT5.1 0x501
です。NT5.0っていうのは2000のことで、NT5.1っていうのはXPのことね。
MSDNに書いてあったとおもうが
242r/237:03/10/06 20:31
>>240
ありがとうです。つか、どこに書いてあったんですか?その情報...

>>241
MSDNって、VC++.netのヘルプのことでしょうか。
(ぜんぜん違いますか?もしかして...)
なんかVC++.netの[ヘルプ]->[検索]ってやって、
WINVERで検索しても、役に立ちそうな情報は見当たらなかったです...

はふー。
>>242
すまん、_WIN32_WINNTや_WIN32_WINDOWSについては書いてあったが
WINVERについては書いてなかったようだ
普通にWindowsのバージョンで良いんじゃないかな
244240:03/10/06 21:11
>>242
ソースは脳内です。
どこで見たのか覚えてないです。

>>243
プラットフォームSDKの2001年8月(MSDNライブラリの2001年10月)の、
キーワードWINVERで出てくる、"Using the SDK Headers" には、
WINVERが書かれていますが、

プラットフォームSDKの2003年2月(MSDNライブラリ VS.NET 2003)の、
キーワードWINVERでは、キーワードがWINVERなのに、
WINVERについて書かれていません。うーむ。
>>244
やっぱりそうだよな
俺もそこ見たんだが、WINVERが無くなってたんだ
246デフォルトの名無しさん:03/10/06 21:16
当方,VCでグラフ出力をしたいのですが,
その際にlogスケールで出力したいのです.

しかし,かなりGoogleなどで検索したのですが,
方法が見つかりませんでしたので,ご助言お願いします.
ヘルプでlog検索しなされ
>かなりGoogleなどで検索した
例えばどんなキーワードで検索したんだ?
現状で、Logスケールじゃなかったら描けるわけ?>>246
249246:03/10/06 21:27
>248
キーワードは,対数表示,Logスケールなどです.

リニアスケールでは現状で出力できます.
>>246
よー分からんのだが、いったいどういう風にグラフを出力してんだ?
単に横(縦)軸の値をlogにして出力すればいいんじゃねーの?
251246:03/10/06 21:41
>250
横(縦)軸の値をlogにするのはもちろんなのですが,
軸そのもののスケールをlogにしたいのです.

つまり,軸のメモリが1,10,100,1000と等間隔になるように
対数表示したいのです.

分かりにくい文章で,申し訳ないです.
>>251
だったら、軸のメモリを1,100,1000のLogをとった値で線を引けばいいんじゃねーの?
n番目のメニュー項目を消したいのですが
うまくいきません

HMENU hMenu = GetSubMenu(cs.hMenu,(n-1));
DestroyMenu(hMenu);

ではダメダメでした
どなたかご教示おねがいします
>>246
セミログ・グラフ(片対数グラフ)
ログログ・グラフ(両対数グラフ)
どっちのことかいな?
どっちにしろ対数目盛りをlogの値のでとってけばいいのでは?
(もちろん、画面上の座標値に変換する必要がありますが)
>>253
DeleteMenu
256デフォルトの名無しさん:03/10/07 20:59
もじゃーり
257253:03/10/07 21:34
少し言葉足らずだったようです
ポップアップをまるごと消したいのです
DeleteMenuもやってみましたが
ポップアップ内の項目しか消せませんでした
何か指定の仕方があるのでしょうか
258デフォルトの名無しさん:03/10/07 21:41
仕事でVC++NETを使う必要が出てきたのですが、
VC++6とインタフェースがかなり違っていてとまどってます。
Static Libraryを作成するプロジェクトはどうやって
作成すればいいのでしょうか?
VC++6なら新規作成でStatic Library作成のプロジェクトが
あるのですが、NETでは見あたらなくてどうすればいいのか
わかりません。教えてください。
>>257
DeleteMenu
>>258
Win32アプリケーションからだったと思う
261デフォルトの名無しさん:03/10/07 23:41
質問です。
VC++.NETでCGIを作りたいのですが、
CGIを作る場合も、普通のプログラムと同じように
コンパイルしていいのでしょうか?
それともCGIの場合のやり方があるのでしょうか?
どうもUNIX系(gcc)の解説は見かけるのですが、Windowsの場合が
よくわからないです。あと、Windowsの場合はCGIの拡張子は
exeでいいのでしょうか?
>>261
サーバーの設定による
普通はexeでいいんじゃない?
ちょっと待て、CGIを作るって、WebServerからアプリケーションを呼び出す仕掛けを作るんじゃないのか?
>>263
何を言っているのか理解できないが、少なくとも apache とIIS は
普通に EXE を呼べる。
CGI=CommonGatewayInterface≒呼び出されるモジュール
>>263
言いたいことはわかるが、まぁまぁ。

>>264
CGIを作るって行ったらApacheでいうところのmod_cgiを作るってことだな。
この板だったら特に。

>>265
それじゃあ意味わからんだろ。
267デフォルトの名無しさん:03/10/08 00:30
つーか、CGIアプリケーションのことをCGIと呼ぶんですよ。
>>267
上の人は分かっていて意地悪なことを言っているんだろうけど、本当に分からなかったらそれはそれでアホだよね。
あの〜すみません。
接続しているディスプレイの名前と、ディスプレイがいくつ接続されているかを
知りたいのですが、どうしたらいいでしょうか?
APIを調べたのですが、見つからなくて、レジストリから取得しないと
駄目なのかなと思ってるのですが、できればレジストリからでない方がよくて・・。

どなたかご存知でしたら教えてください。
270ごめん。:03/10/08 16:26
puts( "How many displays were connected?" );
scanf( "%d", &display_count );
display_name = malloc( sizeof(char*) * display_count );
for( i = 0; i < display_count; i++ ) {
    display_name[i] = malloc( sizeof(char) * 100 );
    puts( "Input %d%s display name." );
    scanf( "%s", display_name[i] );
}
271デフォルトの名無しさん:03/10/08 18:34
>>270
すみません。
入力させるのではなく、プログラム内で調べて取得したいのです。
EnumDisplayDevices
まちがった。
EnumDisplayMonitors
274デフォルトの名無しさん:03/10/08 21:14
イロイロ処理を行って画面に文字などが出力されている画面で
また一番上から文字を出力させたい場合はどうすればいいんですか?
>>274
まずお前がどんな方法でプログラムしてるのか言え!
276274:03/10/08 21:31
どんな場面でもいいんだけど・・・・例えば
void main(void)
{
 printf("僕は・・・\n");
 Sleep(1000);
 printf("正常です");
}
こうやったら当たり前だけど、二個目のprintfは二列目に来るんですけど、
それを1行目に表示するのはどうやってやるのかなぁっと思って。
また一番上から描画しはじめるやり方があると思うんですがね・・・
system("cls");が比較的楽かな。
まあ、その例なら、最初の\nを\rにするのが正解か。
278274:03/10/08 21:38
>>277thx
>>277
それはクリスってよむのかな。
280デフォルトの名無しさん:03/10/08 22:06
printf("あああああああああああああああああああああああああああああああああああああああ");
ってやると文字が小さくても作ってるとき横に長くなってスクロールしないと見れなくなってしまいます。
上のを作る上で見やすくするために2行にすることってできるんですか?
>>280
\nを入れれば?
長くて見えないのはソースの話で、
printf("ああああ"
"ああああ");
って事では?
283デフォルトの名無しさん:03/10/08 22:59
>>282
なるほど。そうやるのか。
char[3][100]={"あああああああああああああああああああああああああああああああああああああああ","い","う"};
とか言う場合は無理なのかな・・・
何が無理だって?
282で文字列は任意に分割できる、ということを示しただろう。
あ・・・やべぇ、何素っ頓狂な事言ってだ俺。普通に282見れば分かるのに・・・・スンマソ
こんなことも可能

MessageBox( NULL,
"  / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄  \r\n"
"< しいたけですが、何か?\r\n"
"  \_________  \r\n"
, "IE の中止ボタンがしいたけに見えて困る", MB_ICONSTOP );
>>286
XPのはもろしいたけ?
288デフォルトの名無しさん:03/10/09 09:37
現在プリンタキューに入っている、
プリンタスプールを削除するプログラムを作成したいのですが、
MSDN等を参考にしても今一つわかりません。
なにかよい手立てはありますでしょうか?
289デフォルトの名無しさん:03/10/09 12:58
超初歩でスミマセン。
Win32Appricationの単純なWin32アプリケーションで作った雛形なのですが
intWINAPIWinMain(HINSTANCEhInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nCmdShow)
{
if(hPrevInstance)
return(0);
//Winアプリの初期化
if(!InitApplication(hInstance))
return-1;
//メインウィンドウの初期化、生成、表示
  if(!InitInstance(hInstance,nCmdShow))
return-1;
returnRun(); //サブルーチン
}
としたのですが、メインウィンドウが一瞬表示され消えてしまいます。
どこがダメですか?
>>288
SetPrinterかな
>>289
猫でも〜
291デフォルトの名無しさん:03/10/10 01:39
Doc/Viewわけわか
292デフォルトの名無しさん:03/10/10 14:56
>>272
どうもありがとうございます。
助かりました。
293 ◆kPmitmMo1A :03/10/10 16:01
エラーで下のように出ました。意味が分からないので教えてください。
LINK : fatal error LNK1104: ファイル "Debug/step.exe" を開けません。
>>293
HDの故障だな。
295 ◆kPmitmMo1A :03/10/10 17:08
>>294
どうすれいいのですか?
step.exeが実行中なんだろ
>>295
一度msdevを終了する
step.exeが見当たらなかったらタスクマネージャでstep.exeプロセスを終了しる
299デフォルトの名無しさん:03/10/12 23:37
ソースコードの行番号表示ってどうやるんですか?
300デフォルトの名無しさん:03/10/13 00:00
中古でVC++5.0エンタープライズ版が
3000円で売ってたので買ってきますた。
で、インストールしたんですが使い方が分かりません。
つーか、どこがビジュアルなのかと小一時間、、、
301デフォルトの名無しさん:03/10/13 00:02
いくらC/C++が分かっててもドキュメントービューが分からなければ話にならんわな
302デフォルトの名無しさん:03/10/13 00:03
そのてんC++Builderはまだ分かりやすいと思うよ
>>300
ダイアログやメニューの作成のところだろ。
304デフォルトの名無しさん:03/10/13 01:00
チェックボックスを最初からチェックした状態で作るにはどうしたらいいですか?
>>304
誘導されたからってそのまま書いたらマルチと思われるぞ。

チェックした状態で作るのではなく、作った直後にチェックしちゃいけないのか?
そもそもどうやって作ってるのか分からないのに答えようがないぞ。
306デフォルトの名無しさん:03/10/13 05:51
>>305
そのような方にはお答えいただかなくて結構です
307デフォルトの名無しさん:03/10/13 06:24
勿体つけてああだこうだと文句を言う馬鹿ってさむいな。
さっさと答えかけばか。
>>300
VC5は持っていないが、VC6の場合は、スタート→プログラム→VC→
新規作成(プロジェクト)(Win32ConsoleApprication等)→新規作成
(ファイル)(Main.cpp等)→エディタにコードを書く→ビルド、
見たいな感じだが、似たような感じだと思う。

めんどくさい場合は、右クリック→新規作成→テキストファイル
→名前の拡張子をcかcppにする→ファイルが使えなくなるかもをはい→
そのファイルを開く、エディタにコードを書く→ビルド、でも、
コンソールプログラムなら作れる。
>>306
生意気だな。何様のつもりだ?
>>307
お前のような奴に誰が教えるか。
早速一匹釣れてるよ...。
(まあ、俺が二匹目なわけだが。)
312デフォルトの名無しさん:03/10/14 12:34
CDドライブの名前(型番?)を調べたいのですが、
どうしたらいいでしょうか?
ドライブの中に入ってるCDの名前ではなく、
CDドライブ自体の名前がほしいのです。

よろしくお願いします。
>>306
荒らすなよー。
お世話になってるの、あんただけじゃないんだぞ!
>>312
コントロールパネル>システム>デバイスマネージャ>CDドライブ
の中の名前じゃダメなの?
オブジェクトの名前の変数か何かで使うの?
だとすると、これじゃないかもしれない。
ファイル指定して実行でregeditでレジストリのディレクトリの中の
HKEY_LOCAL_MACHINE\Enum
あたりにハードウェア情報入ってるよ。
でも、この名前でよいのかも分からない。
もし、レジストリの内容使うなら、PCの危ないからバックアップは採っておいた方が良いような...
314デフォルトの名無しさん:03/10/14 14:47
>>313
デバイスマネージャで表示される名前を、
APIでとることができないかなと思いまして。
レジストリからとるしかないんですかね?
APIで用意されてると思うんですが、
名前を取るAPIが無くて・・・。
315デフォルトの名無しさん:03/10/14 16:53
コンソールアプリで
SetTimerで作るみたいなタイマを使いたいのですが
何かないですか?
SetTimer使えば?
コンソールアプリでも使えるぞ。
317315:03/10/14 17:31
>>316
HWND hWnd, // handle of window for timer messages
とかコンソールアプリではどうするんですか?
>>317
そのコメントをどこから拾ってきたのかは知らんがMSDN嫁
319315:03/10/14 17:38
>>318
If this parameter is NULL, no window is associated with the timer
and the nIDEvent parameter is ignored.
ってありましたすいません
メンバ名見ただけで判断してました
>>315
自分もやり方が分からないのでこう言うのを使っている。
#include <stdio.h>
#include <windows.h>
#define TIMER 10
int LoopWait(long miriByou)
{
  long now=GetTickCount();
  static long keep=0;
  if(keep==0) keep=GetTickCount()+miriByou;
  if(keep<=now) {keep=0;return 1;}
  return 0;
}
int main(void)
{
  int t;
  for(t=0;t<TIMER;)
  {
    if(LoopWait(1000))
    {t++;printf("%d\n",t);}
  }
  return 0;
}
321315:03/10/14 20:05
>>318
やっぱりコンソールで使うときHWNDをどうすればいいのか
わからなくなってしまいました.
NULLにするとまともに動いてくれなくて

>>320
それをスレッドでってことですか?
時間はずれませんか?
>>321
ウィンドウプロシージャ-作ってウィンドウを作成したら?
確か出来たはず。
#include <windows.h>
#include <stdio.h>

VOID CALLBACK OnTimer( HWND hwnd, UINT uMsg, UINT_PTR idEvent, DWORD dwTime )
{
static int i;
printf( "%d\n", i++ );
if ( i==10 ) PostQuitMessage( 0 );
}
int main(void)
{
SetTimer( NULL, 0, 100, OnTimer );
MSG message;
while( GetMessage( &message, NULL, 0, 0 ) )
DispatchMessage( &message );
return 0;
}
VC++6.0についてるMSDNのCDは1枚だけ?
325315:03/10/14 23:45
>>323
それいいですね
ありがとうございます
326312:03/10/15 16:06
駄目です!
CDドライブのモデル名をとる方法がどうしても見つかりませんっっっ。
色々調べてみたのですが、どうしても見つけられないです。
誰か知ってる人教えてください〜〜い。
327なーお:03/10/15 17:36
ピクチャボックスにタイマー処理の中で1sごとに描画しているのですが、
途中で「リソースが使用できません」のエラーメッセージがでてバグってし
まします。どなたかアドバイスもらえませんか?
329デフォルトの名無しさん:03/10/15 17:47
VCでwindows mediaエンコーダを操作したいのですが・・・。
お願いします。
330デフォルトの名無しさん:03/10/15 17:49
>>312
やっぱ、カーネルのレジストリのAPI関数使うしかないんじゃないかなぁ。
'存在するキーを開く
LONG RegOpenKey(
HKEY hKEY, //開いている親キーのハンドル(例えばHKEY_LOCALMACHINEとか)
LPCTSTR lpSubKey, //開くべきサブキーの名前
PHKEY PHKEY phkResult //開くことに成功したサブ・キーのハンドル
);
'データ読み込み
LONG RegQueryValueEx(
HKEY hKey, //キーのハンドル
LPCTSTR lpValueName, //レジストリエントリ名
LPDWORD lpReserved, //予約済み
LPDWORD lpType, //データ型が格納されるバッファ
LPBYTE lpData, //データが格納されるばっふぁ
LPDWORD lpcbData, //データのバッファのサイズ
);
キー閉じる
LONG RegCloseKey(
HKEY hKey
);

取得するKEYはregeditで探して、おそらく>>313の場所にあると思う。
ASPIを叩くのはどうか。
>>327
死ね!
333デフォルトの名無しさん:03/10/16 14:59
スレッドの質問です

MFCによるダイアログベースでボタンを押したらスレッドを走らせようとしたのですが
スレッドなメンバを作るのは無理なのでしょうか?

Class DLG : CDialog{
 void OnButtonToThreadStart();//ボタン殴打時にthread_func起動
 static DWORD WINAPI thread_func(LPVOID pParam);//スレッド本体
}

 
 
>>333 それでいけると思うけど?
335デフォルトの名無しさん:03/10/16 15:14
>>334
AfxBeginThread(test_func,0,THREAD_PRIORITY_NORMAL,0,0);
スレッドテスト2Dlg.cpp(182) : error C2665: 'AfxBeginThread' : 2 のオーバーロードは 1 番目の引数を 'unsigned long (void *)' から要求の型に変換できません

なぜかエラーがでます
また、スレッド本体がメンバとして外れているようです。(this->これが反応しない)
pfnThreadProc
ワーカー スレッドの制御関数を指します。NULL は指定できません。この関数は次のように宣言される必要があります。
UINT MyControllingFunction( LPVOID pParam );
>335
thread_funcをtest_funcと間違えてるから?

...というケアレスミスは置いといて、thread_func宣言する場合に
WINAPIって必要なの?
漏れ、付けたコト無いけど
338デフォルトの名無しさん:03/10/16 15:47
>>336
戻り値を受けたが原因は別にあるようです。

>>337
コピペミスですw
WINAPIはふるいパソコンだけ必要みたいです・・
www.microsoft.com/japan/mobile/developer/technicalarticles/multithreaded.asp
マイクロソフトとかみてたら、今の書き方がまずいことはわかりました
339デフォルトの名無しさん:03/10/16 17:12
VC++で
math.hをインクルードすると
atanf, atan2f, cosf, sinf, sqrtf関数のところで
floatは不要ですってエラーが出るんですけれども
何が原因でしょうか

これらの関数は使ってないので
コメントアウトするとコンパイル通るんですが
math.hを書き換えるのって好ましくないと思うので
なんとか解決したいのですが
340339:03/10/16 17:18
言い忘れましたが
インクルードを行ってるファイルはC++のファイルです.
VC++であってもCのファイルではこのようなことは
起きません.
341312:03/10/16 17:47
>>330
う〜〜ん。
やっぱりそれしかないですかね〜。
あるような気がしないでもないんですけどね〜。

わかりました。もうちょっと探して見て、駄目ならレジストリですね。
どうもありがとうございました。
>>333 DWORDじゃなくてUINTじゃないと通らない罠
>>333
どうでもいいことだけど
ボタン殴打するのはかわいそうなのでやめてね
344 :03/10/16 22:39
Windows2000、VisualC++6.0にサービスパック5を当てようとすると、
「msvcp60.dllが開けません。別のアプリケーションで使われてます。」
とでて失敗します。

他のプログラムを起動しないようにしてるのに出てしまいます。
どうしたら言いのですか?
DLLを使ってるプログラムを特定することができるのですか?
>>344
それ、よくなるよね。SRCpyってツールで再起動時に置き換えてる。
346 :03/10/17 02:33
>>345
どうもありがとうございます。
どれと置き換えていいのかわからないから(サービスパックが展開されたフォルダにはmsvcp60.dllがなかった)、
SRCpyでmsvcp60.dllを削除してからサービスパックのセットアッププログラムを走らせてみました。
ちゃんと新しいmsvcp60.dllがシステムフォルダにできてるのでうまくいったと思います。

でもVCからヘルプ→バージョン情報でバージョン情報表示しても、サービスパック当てたことが表示されないけど大丈夫かな?
ウィンドウズOSや他のプログラムはサービスパック当てたら分かるようになってるのに。
もしかして失敗してるのかな?
vcは何故か表示されないのです……
348デフォルトの名無しさん:03/10/17 08:09
>>342
うん。コンパイルが通ったYO。
しかし、メンバスレッドから他のメンバ変数にアクセスできないよぉ〜

>>343
初心者なもんでつい「パチィーン パティーン」ってなるのはどうしてでしょう・・・
349348:03/10/17 08:41
自己スレ
スタティックメンバから非性的メンバにアクセスできないってことで
thisポインタ受け取るしかないということですか?
>>346
問題ないハズ。うちも表示されないし。

VB だったら、起動ロゴのところに "SP5" とか入ってて
分かりやすいんだけどねぇ…
__stdccall,__cdecl,fastcallってどういう意味ですか?
>>351
「呼び出し規約」で調べて見れ。
>>352
わかったことは__cdeclが標準でAPIが__sddcallぐらい
呼び出し規約を意識するときってどんなときですか?
354346:03/10/17 11:44
>>347 >>350
ありがとう。安心しました。
>>353
主に混合言語でプログラミングする時かな。
プログラム以前の問題ではありますが、
visual C++.net Standardをこの度購入致しまして(安かった)、
で、あるスレで「最適化が出来ない」らしきことを聞いたのですが、
最適化が不可能なことによる弊害とは何なのでしょうか?
そもそも最適化とは?

こんな質問ではありますが、ご教授下されば幸いです。
357356:03/10/17 18:21
追記

最適化とは「コードの最適化」らしいのですが。
【最適化前】

356: デフォルトの名無しさん sage 03/10/17 18:20
プログラム以前の問題ではありますが、
visual C++.net Standardをこの度購入致しまして(安かった)、
で、あるスレで「最適化が出来ない」らしきことを聞いたのですが、
最適化が不可能なことによる弊害とは何なのでしょうか?
そもそも最適化とは?

こんな質問ではありますが、ご教授下されば幸いです。

357: 356 sage 03/10/17 18:21
追記

最適化とは「コードの最適化」らしいのですが。

【最適化後】

visual C++.net Standardでコードの最適化ができないデメリットは?
俺もvisual C++.net Standard買ったんだが、コンパイルの仕方がわからん・・・
本だとメニュー部分にコンパイルって項目があるのに。

どうすればよいのでしょうか?
360356:03/10/17 18:51
>>358ありがとうございます。

文意を汲み取るに、
打ったコードをソフトのほうで単純化等してくれる、
ということでよろしいでしょうか?
開発してそれを動かすということが出来ないわけではないようですね。
速度やサイズが有利になるように微調整してくれるとでも思っておけ
362356:03/10/17 19:01
>>361わかりました。
これで(ある程度は)安心して勉強に臨めます。
本当にありがとうございました。
>>359
VC++のメニューは開いているファイルやフォーカスのある位置で変わる。
プロジェクトに含まれるファイルを開いていればコンパイルも表示されるはず。
ただし実行可能ファイルを作るのはコンパイルじゃなくてビルドだよ。
364359:03/10/18 12:05
>>363
あ、なんとなくつかめてきました。
どうもです
365デフォルトの名無しさん:03/10/18 22:06
前にも質問したのですが
VC++のエディタに行番号表示機能ってないんですかね・・・
>>365
ない
>>365
2003買え。
368365:03/10/18 22:59
やっぱりないんですね。
何行目にエラーがあるって出てるのに、それがどこか分からない歯がゆさ。
もしかしてこれがVC++の本質ですか?
369365:03/10/18 23:01
ていうか右下見れば分かりますけど・・・
全体的な雰囲気でアレなんです。アレ。あれれ?
エラーメッセージダブルクリックしる
初心者は文句言う前に使い方覚えろ
372デフォルトの名無しさん:03/10/19 00:51
今現在、DirectXを勉強中なのでありますが、

error LNK2001: 外部シンボル "_D3DXVec3Normalize@8" は未解決です
error LNK2001: 外部シンボル "_D3DXMatrixPerspectiveFovLH@20" は未解決です
error LNK2001: 外部シンボル "_D3DXMatrixLookAtLH@16" は未解決です
error LNK2001: 外部シンボル "_Direct3DCreate8@4" は未解決です
error LNK2001: 外部シンボル "_D3DXCreateTextureFromFileA@12" は未解決です
error LNK2001: 外部シンボル "_D3DXLoadMeshFromX@28" は未解決です
fatal error LNK1120: 外部参照 6 が未解決です。

ってな状況に陥って困っております。

[ツール]→[オプション]→[ディレクトリ]の設定はしっかり行いました。

似たようなエラーが出て解決した人など居りませぬか?。。。

環境は、
OS WindowsXP
CPU 1.6GHz
メモリ 512MB
VC++6.0
DirectX 9.0 SDK
です。
LIBはプロジェクトに入れてるの?
374372:03/10/19 01:15
>>373
レスどうもです。

[ツール]→[オプション]→[ディレクトリ]の中で、
[インクルードファイル]→C:\DXSDK\Include
[ライブラリファイル]→C:\DXSDK\Lib
ですよね。

一応、DirectXの勉強に参考にさせてもらっているサイトのソースはコンパイルできるので、
設定でミスはないと思うのですが・・。
375372:03/10/19 01:17
訂正、追記
>ソースはコンパイルできるので、
ソースはコンパイルから実行までできるので、

重ねて質問ですが、プロジェクトを新規作成するときに
あることをやっておかなければ上記のようなエラーが出ることなどありますか?。。。
>>374
ディレクトリを指定してるだけじゃん。
リンクしなきゃダメだよ。
377372:03/10/19 01:30
>>376
解決しました。
初歩的なことだったようで、まことに申し訳ない。

>>376氏、>>373氏、まことにありがとうございました。
>>365
そんなもん要らんし。
N88-Basicじゃねーんだからよ。
379デフォルトの名無しさん:03/10/19 17:20
すいません。かれこれ一週間格闘してるのですが、お願いします。
classcString{
private:
char*m_str;
intm_len;
voidSetLength();
public:
int&SetMessage(char*);
int&PrintMessage(int);
};

voidmain(){
cStringmessage;
     message.SetMessage("JIKKEN");
message.PrintMessage(10);
}

これで、コンパイルは通るのですが、ビルドで
APPENDIXAp368.obj : error LNK2001: 外部シンボル ""public: int & __thiscall cString::PrintMessage(int)" (?PrintMessage@cString@@QAEAAHH@Z)" は未解決です
APPENDIXAp368.obj : error LNK2001: 外部シンボル ""public: int & __thiscall cString::SetMessage(char *)" (?SetMessage@cString@@QAEAAHPAD@Z)" は未解決です
Debug/APPENDIXAp368.exe : fatal error LNK1120: 外部参照 2 が未解決です。
とでます。リビルドしても同じです。
それから、cStringのメンバ関数の定義で「&」をはずしても全く同じエラーがでました。
どこがおかしいですか?または、エラーログからどの辺がおかしいか分かりますか?
どうか、どうか、お願いしますーーー!
(´д`;);ヾ
(\ノ)
 ((
380379:03/10/19 17:37
(´д`;);ヾ
(\ノ)
 ((
あぁぁ、TABが抜けてしまったので改めて書き直します。
すみません。
すいません。かれこれ一週間格闘してるのですが、お願いします。
classc String{
private:
char *m_str;
int m_len;
void SetLength();
public:
int &SetMessage(char*);
int &PrintMessage(int);
};

void main(){
cString message;
     message.SetMessage("JIKKEN");
message.PrintMessage(10);
}

これで、コンパイルは通るのですが、ビルドで
APPENDIXAp368.obj : error LNK2001: 外部シンボル ""public: int & __thiscall cString::PrintMessage(int)" (?PrintMessage@cString@@QAEAAHH@Z)" は未解決です
APPENDIXAp368.obj : error LNK2001: 外部シンボル ""public: int & __thiscall cString::SetMessage(char *)" (?SetMessage@cString@@QAEAAHPAD@Z)" は未解決です
Debug/APPENDIXAp368.exe : fatal error LNK1120: 外部参照 2 が未解決です。
とでます。リビルドしても同じです。
それから、cStringのメンバ関数の定義で「&」をはずしても全く同じエラーがでました。
どこがおかしいですか?または、エラーログからどの辺がおかしいか分かりますか?
class String
なのに、 cString とは、これいかに。
>>380
↑が単なるスペルミスとしたら、単にメンバ関数が
見つかんねぇよ、このヴぉけ!ってコンパイラ様が
お怒りになられたってこった。
383379:03/10/19 17:46
class cString{
です。すいません。
(´д`;);ヾ
(\ノ)
 ((
つか、2003で付いてくるMSDNにCStringのメンバ関数が
載ってないのはこれいかに?

CStringTとは、違うよな…

>>383
>>382
>>379
単純に関数の実体が無いんじゃねーのか?
386379:03/10/19 18:17
CStringではありません。
新たに作った、cStringです。
VC++6.0に付いていたプログラミング入門のP368です。

>単純に関数の実体が無いんじゃねーのか?

そういう事なのでしょうか。上記以外は何も書いてません。
387233:03/10/19 18:52
遅レスですが、おっしゃるとおりインターバルを調整したら解決しました
有難うございます。
388379:03/10/19 19:16
>>385さんの「実体が無いんじゃ」の言葉にハッと思いつき、下を試しに入れてみました。
すると、コンパイル、ビルドとも通りました。
SetMessage、PrintMessageともに勝手に作ったcStringの関数なので勝手に文字をセットしたり、出力したりなんてことはしないんですね。
まさしく、実体が無かったようです。
voidcString::SetLength(char*s)
{
m_len=(s!=NULL)?strlen(s):-1;
}

voidcString::SetMessage(char*s)
{
SetLength(s);
m_str=newchar[m_len];
strcpy(m_str,s);
}

voidcString::PrintMessage(intn)
{
printf("%.\n",min(n,m_len),m_str);
}

単純なことで、お騒がせしました。
有難うございました。
389379追加:03/10/19 19:29
void SetLength();の()内をchar*を入れて、
int &SetMessage(char*);
int &PrintMessage(int);
をともにvoid型にして、&を取り除きました。
ドモでした。
(´д`;);ヾ
(\ノ)ヾヘコヘコ・・
 ((
>>384
今のCStringはCStringTのtypedefだよ
>>390
レスサンクス。
だけど、CString のいくつかのメンバ関数の説明が
見つからないんですよ。GetBuffer()とか。
C++.NETで外部ファイルを実行していくプログラムを作っています
ESCボタンを押しながらプロセスを終了した場合、プログラムが終了するように
したいのですがいい方法がありませんでしょうか?
(修飾子キーならControl::ModifierKeysでできるんですが・・)
while(1)
{
//対象パス取得
pInfo->FileName=Str_Key1;

//プロセス実行
Process* Key1 = Process::Start(pInfo);

//プロセス終了まで待機
Key1->WaitForExit();

Application::DoEvents();

if(Control::ModifierKeys==Keys::Alt)
{
//アプリケーションを終了する
Application::Exit();
break;
}
}
394392:03/10/20 22:40
訂正:
対象のファイルに対応するアプリケーションがアクティブの時でも
ESCボタンが押されたらプログラムを終了するようにしたいです
(ESCボタンが無理な場合ほかのボタンCtrlボタンでもかまいません)

よろしくお願いします
395デフォルトの名無しさん:03/10/20 23:14
c言語の勉強始めたばかりの初心者ですが、ここの掲示板初めて見たけどみんな凄いですね。
何かこんな問題聞くの恥ずかしい気もしますが誰か教えてくれませんか?
以下のような実行結果になるようなプログラムを勉強中なんですが、whileの所の意味がサッパリ分かりません?
誰か"詳しく"教えてくれませんか?

whileの所はwhile(*p='\0')では駄目なんですか?
一応実行してみたらエラーは無かったけど何も表示されませんでした。

プログラム--------------
#include<stdio.h>
main()
{
char st[]="ABCDEFG";
char *p;

p=st;
while(*p){
printf("%7s\n",p);
++p;
}
}

実行結果----------
ABCDEFG
BCDEFG
CDEFG
DEFG
EFG
FG
G
Press any key to continue
>>395
板内を「宿題」で検索。そして氏ね。
>>395
>whileの所はwhile(*p='\0')では駄目なんですか?
ダメです。
http://www006.upp.so-net.ne.jp/candynar/visualc/visualc_begin.htm
ここのLESSON1のソフトなんですが計算を押すと値が2回返ってくるんですが・・・・・
実行時にリダイレクトで
> a.txt
みたいに格納したいのですが、
どこでどうすればできるのでしょうか?
400399:03/10/21 00:42
バージョンは6.0です。おねがいします。
>>399
コマンドラインでどうぞ。
VisualStudio内から指定したいならプロジェクトのプロパティで設定可能。
freopen("a.txt", "w", stdout);
>>395
まぁここあたりでも。
http://homepage1.nifty.com/toshio-k/prog/c/
404399:03/10/21 02:06
>>401さん
単にCプログラムするのだと過程としては
ファイル→新規作成→c++ソースファイル
ででてきたウィンドウにソース打って
ビルド→コンパイル→はい→保存(コンパイル完了)→ビルド→実行
という順番ですよね。

>VisualStudio内から指定したいならプロジェクトのプロパティで設定可能。
と仰るのは、プロジェクト→設定→デバッグ・・・あたりのタブでやるんでしょうか?
どこにどう入れたらいいのか、ぜひお願いします。
>>404
402は?
>プロジェクト→設定→デバッグ・・・あたりのタブでやるんでしょうか?
そこの引数に > a.txt と入れば?
>>395
代入と比較を勉強しなおせ!
1つのCStringオブジェクトを真ん中で切って2つのCStringオブジェクトに分けて
表示したいのですが、日本語と半角英数が混じっているので真ん中で分けるこ
とができなかったり、文字化けしたりしてしまいます。
GetLength()で文字数を取得して真ん中で分けようとしているのですが、日本語
と半角英数が混じっているときでもGetLength()は8 ビット単位でカウントするの
でうまくいかないのだろうと思います。どうすれば日本語と半角英数が混じって
いるCStringオブジェクトをちょうど真ん中で切って2つのCStringにすることがで
きるようになるのでしょうか?
一端UNICODEに変換するのがまぁまぁそこそこ楽かもしれないナ。
410デフォルトの名無しさん:03/10/21 02:49
>>409
こんなのは?

size_t len = s.GetLength();
LPCTSTR p = (LPCTSTR) s;
while (p - (LPCTSTR) s < len/2)
p = CharNext(p);

CString s1((LPCTSTR) s, p - (LPCTSTR) s);
CString s2(p);
411デフォルトの名無しさん:03/10/21 02:57
●●●マスコミの「盗聴/盗撮」は許されるの?その2●●● http://natto.2ch.net/mass/kako/988/988402795.html
605 名前: 文責:名無しさん 投稿日: 2001/05/18(金) 20:36
>>595
>その子は盗聴され始める前から近所に住んでた子なの?
ナイスです。声が、どの家からしたかは特定できない...としておきます。
しかし、大体どの家並みかは、わかります。

マスコミから盗聴・盗撮などされているのでは、と思い始めた頃、その家並みはまだ空き地でした。
やがて、マスコミからの公共の電波を使った嫌がらせが相次いだ頃、その空き地で建築工事が始まりました。
もし、自分が盗聴側の人間だったとしたら...しかも大きい後ろ盾があるとしたら、
これは好機だな、と思いました。
(もちろん、”馬鹿馬鹿しい、非現実的な考えだ”とも思いましたが)
そして、現実として、妙なことを言うガキがいる..。

色々言ってくれますよ、そのガキ。
警察に宛てた文章(長文)を数日かけて作製していたんですが、上手く行かずに途中で止めました。すると、
「さくぶんは、もぉ、おしまいかぁ〜〜い」
うちの犬がゲロ吐いたので「ゲロッピーだなぁ」と言うと、翌日家の前を通りながら
「”げろげろっぴー”ってのは、だめかぁ〜い」
その1だったかにも書いた「ぼくたちには、きみが、ひつよーなんだぁ」も。
オナるとまた面白いリアクションが来るんですな。(お下品で、失礼(ワラ)
「あぁ、あぁ、きもちいぃいいい〜〜」
とか。ガキが言うんですぜ、これを。(笑
「マヨネーズが、白いマヨネーズが、ぴちょ、ぴちょぴちょ...」
とか。
夜中、そぉ〜っと紙ひっぱってオナるとですな。翌日、「カサッ、カサッ、カサカサカサ...」

指示を出している親のこと考えると、泣けますな。アホだわ。
>>409>>410
レスサンクスです。
>>410さんのやりかたでうまくいきそうです。
ありがとうございました。
うちのはあるけど・・・
414デフォルトの名無しさん:03/10/21 16:26
VisualStudioのインストール時にWin2kなのに、NTのデバッグシンボルが
どうのこうのというメッセージが出るのですが、セットアップしないと
デバッグ出来ないんですか?
無視して進んで、一見なんとなく動いているように見えるんですが、実は正しく
動作してないのでしょうか?
シンボルを使ったデバッグはできない
416414:03/10/21 16:49
シンボルを使ったデバッグというのは、VCで普通にやるブレークポイントを
設定して値を見たり、そこから順にトレースしたりというのとはまた違う
やり方でしょうか?(デバッグといえばこれしか知らないもので・・・)
その方法はどういうときに使いますか?
たぶん414には必要ない。
418デフォルトの名無しさん:03/10/21 17:07
WinXP VS2003 で VC++ の勉強をしています。
スタティック ライブラリ(.lib) を適当に作ってみたの
ですが、このライブラリを使う方法がわかりません。
かなり基本的なことだと思いますが、どなたか
教えていただけませんか。
今日はじめてVC使いました。(Java派なもんで)
で、int型の変数を文字列(char[]?)に変換したいのですが、
どうやったらいいですか?
>>419
forなりwhileでまわしながら、
intの中身を1桁ずつchar1文字に置きかえる。
>>420
例えば、どう書いたらよい?
よくわからないもんで。
sprintfの方が早くね?
標準関数だからネットでもリファレンスあるし、知らないと上達しない。
>>419
お前がどうしたいのかにもよるが、
文字列に変換したいのなら_itoaが簡単かな。
424399:03/10/21 19:13
>>399です。
>>401さんの言っているコマンドラインは>>404の私の過程では
どこでできるのでしょうか?
425ここm(−−)m:03/10/21 19:24
文字列を入力として受け付けて、その文字列中に含まれる数字の合 値を求めよ。
例: a1b23g4 と入力された場合、1+2+3+4 で10 を出力する。


426ここm(−−)m:03/10/21 19:26
問題

文字列を入力として受け付けその文字列中に含まれる数字の合計値を求めよ。
例: a1b23g4 と入力された場合、1+2+3+4 で10 を出力する。


宿題は自分でやれ!
マターリ解いてみろ(;´Д`)y-~~
>>426
int foo(const char* p) {
return isdigit(*p) ? (*p - '0') + foo(p+1) : *p ? foo(p+1) : 0;
}
print eval(join('+',($input =~ /\d/g)));
431401:03/10/21 22:45
私がVisualStudio使ってもそういう手順にならないんだが。

それはさておき、デバッグができると言うことは実行モジュール(*.exe)ができているということだろうから、
それをコマンドラインで起動すればよろしい。

まさかとは思うが、リダイレクトでファイルに落としたいと言いつつ、
コマンドラインとは何か理解していないわけではあるまいな?
432399:03/10/22 00:29
>>401さん
ms-dosプロンプトでやればよかったんですね。
どうもありがとうございますた!
ちなみに、単純なCプログラムを作る場合には、
ツールバーの最左にある新規作成ボタンで出てくるウインドウに
ソース打ってやればいいんですよね?
>>432
なんじゃそりゃ。
リダイレクトという言葉を知ってる奴が気付かないものなのか・・・
435399:03/10/22 00:36
>>434
ご教授おながいします(TT)
ウィンドウがコマンドラインから立ち上がるってのはなかなか
気が付かないものだよ。いまだに違和感がある・・・。
意味分からん!(・∀・)
>>437
激しく同意。
すみません、知恵をお借りしたいのですが…、

bRet = GetPrinter(hPrinter,2,NULL,0,&dwBytesNeeded);
pi = (PRINTER_INFO_2*)GlobalAlloc(GPTR,dwBytesNeeded);
bRet = GetPrinter(hPrinter,2,(LPBYTE)pi,dwBytesNeeded,&dwBytesReturned);
bRet = SetPrinter(hPrinter,2,(LPBYTE)PRINTER_CONTROL_PURGE,0);

というプログラムを作成したのですが実行すると、
「ハンドルされていない例外はWINSPOOL.DRVにあります」
と出て正しく実行できません。
Winspool.drvはプリンタスプール関係だとはなんとなくわかりますが…。
あるディレクトリ(今はdata)にファイルを保存したい場合
data\\ファイル名
このように書いてるんですけど、うまくいきません。
間違ってますか?
はい。
どう直せばよいですか?
フルパスで指定する。
フルパスでもだめだったんですけど。
あきらめなさい。
1つのファイルが2MBで、それを複数書き込もうとするのが
よくないのでしょうか?
char *filename = ファイル名;
char path[] = "data\\";
char *filename2 = strcat(path,filename);

こういうプログラムなんだけどダメ?
全然ダメ。
どこがだめ?
strcatは、第一引数で指された領域に文字列を追加する。
だから、必ずバッファオーバーフローする。


つーか、
初心者はCの文字列操作用の標準関数を使わないほうが無難だよ。
オーバーインデックスの危険性をはらむものが多いし、
そうでないものは文字列を'\0'でターミネートしてくれなかったりする。
文字列の"外側"までコピーするものもある。

なんか”掃き溜め”見たいになってる。
451デフォルトの名無しさん:03/10/22 13:19
文字列の外側までコピーする、ってのは間違い。
VC6,MFCなのですが、初心者という事でこちらへ質問させ
ていただきます。
ダイアログ(CFormView)、それらに貼り付けたコントロー
ル(CTabCtrlやCButton)のサイズを固定にするにはどのよ
うに行えばよいでしょうか?
画面のプロパティでシステムのフォントサイズを小さい
フォント/大きいフォントのどちらの時も同じサイズにし
たいのです。
設計自体云々の話はご勘弁を。
よろしくおねがいします。
>>447
てか何がしたいのこれ?
c++使ってんだったら、素直にstd::stringを使ったほうが良い気がする。
455452:03/10/23 11:46
スレ違いなようですので、MFCスレの方へ移動させていただきます。
申し訳ございませんでした。
456デフォルトの名無しさん:03/10/23 14:10
VC++.NET 2003を使ってるんですが、
IDEのウィンドウに張り付いているウィンドウ(出力とか、検索結果とか、ソリューションビューとか、...)や
ツールバーがポコポコ外れて気持ち悪いです。

ウィンドウの構成(?)を固定するのはどうすればよいのでしょう。
あぁ・・・俺もよくツールバー動かしちまう。
メニューバーの上まで行ったりして、
しかも他のエディタのツールバー表示まで全て狂う。
固定したい。
458デフォルトの名無しさん:03/10/23 20:18
質問です。
VC++6.0でプログラムを作りました。
しかし絵心が無いため、アイコンは知人に作ってもらいました。
32x32の256色bmp画像です。
早速その画像を組み込んだのですが、何故か白黒になってしまいます。
念のためIrfanViewで色情報を見ましたがきちんと256色bmpでした。

何か解決策はありますか?
>>458
正規の物をご購入下さい。
パレット潰れてんだろ。
Winのビットマップは256色だとパレットが必須だったはず。
461デフォルトの名無しさん:03/10/23 23:50
VC++6.0なんですが、ソースファイルのフォントが
大きく、画面に表示される文字数が少ないのが悩みです。
どうにかしてフォントを小さくできないのでしょうか?

あと特定のキーワードについて色を変えたいのですが、
VC++のエディタにそういう機能はないんでしょうか?
コメントや制御文はVC++エディタでも色変わりますけど、
他のも別の色にしたほうが見やすいので。
>>461
後者は知らんが、前者はできる。
ツールメニュー辺りに環境設定関係のダイアログがあったと思うが忘れた。
少なくとも私は9ptにしているから間違いない。
463461:03/10/24 00:05
>462さん
どうもありがとうございます。
早速明日やってみます。
>>461
"UserType.dat" を、MSDNライブラリで検索してみ
初心者です。お願いします。
ソースのフォントなのですが、Linuxなどで印刷した物は
大体Courier Newみたいなフォントですよね?

Visual C++に限らないのですが、あれと同じフォントは
何て言うのでしょうか?またどこで手に入れられますか?
466デフォルトの名無しさん:03/10/24 18:01
質問です。
以下の様にするにはどうしたら良いのでしょうか?

1. アプリAから、アプリBにテキストデータを送りたい。
2. さらに、テキストデータをアプリBに送られた事をアプリBに知らせたい。

宜しくお願いします。
467デフォルトの名無しさん:03/10/24 18:05
1 IPC
2 イベント

468466:03/10/24 18:11
>>467
すみません、もう少し具体的に教えてもらえませんか?

IPCとはなんですか?
どうやって他のアプリのウィンドウハンドルを取得しますか?
469466:03/10/24 18:36
自分で解決出来ました。
WM_COPYDATAメッセージで通信する事にしました。
>>468
 IPC → プロセス間通信

パイプなり、共有メモリなり好きなのをつかってくれ。
 Windowsでもあるから。

ハンドルはどうやるんだっけ?GetWindowsあたり?
 
471デフォルトの名無しさん:03/10/24 18:57
Visual C++ .NET 2003 standardを使った
マルチスレッドアプリケーションのデバッグ方法についてなんですが。

AfxBeginThreadで起動したスレッド上で動いている処理にブレークポ
イントをおきたいんです。ま、IDEでソースコードの左端をクリックす
ると、ブレークポイントは確かに置けるんですが、そのブレークポイ
ントを踏むと、そのデバッグ中のアプリとIDEとWindowsが固まっちゃ
うんです。
( 固まるって言っても、まあ全体的にほんのり動いてるんですけどね )

そんで、以下の原因がありそうかな、って思いました。

1. VC++.NET 2003 Standardでは、AfxBeginThread()で起動したスレ
ッドでのステップ実行などのデバッグはサポートされていない

2. なんかブレークポイントの置き方に作法・コツなどがある

3. VC++.NET 2003のデバッガのバグ

4. 漏れの作ってるソフトが変

5. その他

これらのうち、どれがもっとも望ましいでしょうか。
472デフォルトの名無しさん:03/10/24 21:01




毎年、約1万組の日韓結婚。
それに伴なう朝鮮化した混血児。
年間、日本の新生児約100万人のうち、
約1〜2万人の新生児に
容赦の無い朝鮮人の血が流し込まれている。

また、韓国朝鮮人の帰化が年間約1万人も!



>>471
4に一票。
スレッドを山ほど起動してないか?
474466:03/10/25 00:29
>>470
レスどうもありがとうございました。

一応最初、Atom系APIでやり取りしようと思ったのですが
それだと、変更を知らせたりするのが面倒だった為、
色々探しているうちに、WM_COPYDATAメッセージに辿り着きました。

ハンドルは、FindWindowで取得しました。
>>471
俺も似たような経験がある……けどはっきりとした理由は分からずじまい。
ただ、デバッガ起動直後になりやすかったような。
とりあえず、デバグ用ランタイムは使ってるね?

それからこれは違うかもしれないが、グラボ(Canopus)のドライバを
入れ替えたらデバッガが不具合を起こしにくくなったこともあったよ。
VisualC++ .netつかって
directXのゲーム作ってます。

何故かこのような現象が起きてしまいます。
普通のビルドをしているのに、なぜかビルド済みのファイルまで
毎回コンパイルしてしまう。
・実行やデバッグをしようとしたときに

Microsoft Developement Environment
これらのプロジェクトは古い形式で構成されています
ビルドしますか?

というメッセージがでるのです。

どうすればこれらの現象を回避できるのでしょうか?
477デフォルトの名無しさん:03/10/25 16:27
以前にVisual C++6.0を使っていたのですが。最近はいろんな物が出て混乱してます。
Visual C++.NETとVisual Studio.NETは違う物なんですか?分類がよく分かりません。
Visual C++6.0の同等以上の機能を含んで最新のツールはどれなんでしょう?

なんか変な質問してます?
系統や分類を説明してるサイトあったらお願いします。
478デフォルトの名無しさん:03/10/25 16:47
>>477
根本的に解ってないらしいが
Visual C++.NET⇒C/C++環境のみの開発ツール
Visual Studio.NET⇒VB、C/C++、C♯、J♯言語を全て使えるセットのような感じの開発環境。

アカデミック版のStudioは単品でC++等を買うよりも遥かに安い。
ちなみに6.0proとかの機能は.NETのpro版が単品で発売されてないのでStudio.NETproを買わないと使えない。
学校でCの勉強が一段落したんで独学でVC++をやりたいのですがお勧めの本ありませんか?

推薦図書/必読書のためのスレッド PART 13
http://pc2.2ch.net/test/read.cgi/tech/1066825927/
DLLの関数をインテリセンスで表示させるにはどうすればいいですか?
482デフォルトの名無しさん:03/10/25 20:49
fstreamについて質問です。環境はVC++.net Windowsのアプリ開発です

std::fstream ofs;
ofs.open(Filename,std::ios_base::binary |std::ios_base::in);

この後、ファイルのサイズを知りたいのですが、どのようにすれば良いのでしょうか?
メンバの中にsizeのようなものも存在しないようですし (.で出るPOPUPウインド参照)
どうすれば良いのでしょうか?

1)fstreamの中にサイズが格納されているメンバが存在する

2)そんなもの無いから、ファイルの最後までシークしてサイズを得るとか...

3)WINAPIを使う

ヘルプのリンクが膨大すぎて、なかなか知りたい情報にたどり着けない_| |○
みなさんはどうしていますか?
クラスの中身を参照(HELP)する方法...

483デフォルトの名無しさん:03/10/26 06:51
this->でインテリセンスが表示される関数と表示されない関数があるんですけど、どうしてですか?
484デフォルトの名無しさん:03/10/26 08:11
>>483
VC++の既知のバグ
485デフォルトの名無しさん:03/10/26 09:04
>>484
表示されるときと表示されない場合の違いって何でしょうか?
また、どのようにすれば回避できますでしょうか?
>>485
直接関数名を入力する。
>>483
プロジェクトのフォルダの中の *.clw ファイルを手動で削除し、リビルドすると
直る可能性がある。
再度 *.clw ファイルを作る場合は、リビルドした後ClassWiardに入るといろいろ
聞かれるのでデフォルトのボタンを押していけばOK。
環境が再現できないので確認できないけど、
 1.バッチビルド -> クリーン。
 2.VCを抜けて、.ncb .opt .clw を削除。
 3.VCを立ち上げてビルド。
で上手くいったことがあった。
489デフォルトの名無しさん:03/10/26 14:00
VC++6.0 MFCなんですがタブブラウザみたいなものを想定して
MDIでツールバーにReBarを加えてプロジェクトを作成しました。

そしてIDR_MAINFRAME上にタブコントロールを作り、対応した子フレームをアクティブに、
というプログラムを作ろうと思ったのですがタブコントロールをうまく作成することが出来ません。

http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/vccore/html/_core_creating_the_tab_control.asp
http://www.hi-ho.ne.jp/hawk/mfc0401.html#control_tab

上のURL等を参照してある程度のことは試してみたのですが・・・。
他に分かりやすく解説されているサイトやヒントなど何でもいいので何かありましたら教えていただけないでしょうか。
490デフォルトの名無しさん:03/10/26 14:32
>>484 >>487 >>488
どうもありがとうございます。
お陰でうまくいきました。
スペシャルサンクス♪


491デフォルトの名無しさん:03/10/27 00:30
SDIで、ドキュメントビューを使わないでアプリケーションを作るのに
参考になるサイトがあれば教えてください。いろいろ探してるんですが・・・。
492デフォルトの名無しさん:03/10/27 01:37
3Dグラフィック系を(効率よく)描くプログラムを作りたいと思ったら、
VisualC++のどんな機能を使えば良いのでしょうか?
そのための良書とかありますか?
よろしければ教えてください。
>>492
DirectGraphics(Direct3D)を使うのが一番楽だと思いますが。
子ウィンドウにて入力した文字列を、親ウインドウ上に描画したいのですが、
グローバル変数を使って値を渡そうとしても上手くいかないようです

何か上手い方法は無いでしょうか?
495デフォルトの名無しさん:03/10/27 04:10
>>494
あきらめる
>>494
グローバルでうまくいかないんならお前の組み方が悪い。
>>494
グローバル変数に入れたとして、それをどうやって親ウィンドウに伝えているんだ?

例えば親ウィンドウのEditコントロールにSetWindowText()するだけで渡せると思うのだが。
498492:03/10/27 09:41
>>493
ありがとうございます
499494:03/10/27 17:58
>>497
親ウィンドウにDrawText()で描画するのが目的で、
子ウィンドウで入力した文字列をバッファに保存し、
strncpy()を使ってグローバル変数として宣言した文字列バッファに読み込み、
それを親ウインドウから読み込もうとしているのですが、アクセス違反になるのです。

親ウィンドウと子ウィンドウのプロージャは別ファイルに分けて記述し、
グローバル変数は子ウインドウ内でexternを使用して宣言しています。
まずグローバル変数を使わない設計に改める
>>499
strncpyって事は、バッファはchar[]でしょ?
確保した領域以上に書き込もうとしてるんじゃないの?
502494:03/10/27 19:01
というより、グローバル変数にアクセスした時点で違反が発生します。
デバッグで変数の内容見ても変な値になってるようですし…
>>502
どっちにしても、不正なアドレスにアクセスしているのだろうから
途中でバッファに変なアドレスが格納されてないか良く確かめてみましょう。
504494:03/10/27 19:11
externを使って外部変数を宣言するときの型を、
親側からコピペすればうまくいきました。

相談に乗って頂いてありがとう御座いました。
>>504
デッバグする時はコードをもっとよく見ましょう。
DLL使うと動作遅くなりますか?
>>506
起動時にリンクするだけなので
速度は静的リンクの場合と同じだと思いますが。
>>506
ほんのわずかだけ、遅くなります。
誰の人生にとっても殆ど無意味なくらいだけ。
DLL使うと、メモリの節約になります・・・・ていうのは昔の話?
いまはサイドバイサイドとか言って、複数バージョンのDLL混在の時代かもねぇ・・・。
510471:03/10/28 12:14
いまさらですが
>>473 30個くらいスレッド起きてますね...これがよくないのかなぁ。
>>475 そですよねー、結構ありますよね。

つーか。アサーションやWin32例外でアプリケーションが死んだ時も、
ブレークポイントを踏んだ時みたいにIDEとOSがまとめて固まるんだよな...
はぁ....
>>510
スレッド起こしてるとIDE止まるのはよくあるけど、OS止まった経験はないなぁ。
#Win2k+VC6
尤も、起こしてるスレッドは高々20個ほどだしみんな待機系だけど。
IDEは固まったように見えても5分ぐらい放置しておくと動き出すことない?
>>512
あるある!
でも漏れはたるいんで再起動。
5分も放置したことないよ・・・
正直、5分は言い杉ですた
516デフォルトの名無しさん:03/10/28 17:44
画像をフルカラーから256色に減少させる関数というのは
あるんでしょうか。
517デフォルトの名無しさん:03/10/28 17:46
ブレークポイントが急にたくさん現れることがあるんだけど
これはどうして?白丸とかもあるし。ブレークポイントの位置の
検索はできないのかなぁ
Ctrl+Bで一覧でなかったっけ?
>>513
ログオフでも回避できるけどな。
VC6でActiveXコントロールのFlexGrid使って実験データ処理のアプリを
開発したいのですが、intやdoubleをセルに突っ込めないのですか?
charしか駄目だとか言われます。つーか、全然フレックスじゃねー!
セルに直接書込む仕様にするにはEditBox重ねて誤魔化したりと、
これはVS-FlexGrid買わせるための罠か?
521デフォルトの名無しさん:03/10/28 22:40
実行した後にメモリが解放されきる前に再び
コンパイルするとエラーになります。
メモリ解放としてfree関数を使っているのですが、
インタフェースを閉じた後も解放されるのに時間がかかるんです
これはこんなものとして考えるのしかないのでしょうか。
それとも他にメモリを解放する関数はあるのでしょうか。
>>521
インターフェイスが何のことかは知らんがいろいろ後処理に時間がかかってるだけでメモリの開放速度は無関係だろ。
523やまぁ ◆97dnDBrkmg :03/10/29 11:59
大学でVisual C++を始めたばかりの者です。
授業で簡単なC++の問題を出されたのですが、実行しても何故かエラーが発生します。
よろしければご指導頂けないでしょうか?
こちらの環境は、windows XP home pentium4 2.4GHz
使用ソフトはMicro soft Visual C++ 6.0です。

【問題内容】以下のプログラムをFDからデータを入出力するプログラムを作りなさい。
1から与えられた整数N(>1)までの和を求めるプログラムを作成し、適当な数を入力してプログラムを実行させなさい。
【入出力ファイル名】cqin.dat、cqout.dat
それで私が書いたプログラムは以下の通りです。

#include <stdio.h>
main()
{
FILE *fp,*fw;
fp=fopen("D:cqin.dat","r");
fw=fopen("D:cqout.dat","w");
int n,a,b;
fscanf(fp,"%d",n);
a=0;
for (b=0;b<=n;b++);
{
a=a+b;
}
fprintf(fw,"1からNまでの和は%dです。\n",a);
fclose(fp);
fclose(fw);
}

ちなみにFDからではなく、HDからの読み込み、書き込みにしてあります。
宜しくお願いします。
>>523
ファイルオープンチェック入れたら先進むよきっと。
あと変数nが負数になる可能性無いの?
525524:03/10/29 12:46
失礼設問にn>1って書いてた
>523
&n
というかスレ違いだろ。宿題スレ逝きなさい。
何処に書こうか迷いましたが取り敢えずここに。
COMプロジェクトでクラスビューで追加したインターフェース名を後から変更って出来ないんですか?
.idlやら.hやら変更しても、どうも上手く行きません。
VC6でATL使用です。
>>513
回避って言うより、甘受だな
どうも上手くいきません、ってのが一番悪い質問の仕方
>>530
しかし教えてくん養成マニュアルにはこのように書けと書かれていたのですが・・・
>>531
おじさんつまんなーい。
533523:03/10/29 16:12
有難う御座いました。
&が抜けていただけでしたね(汗)

続いて質問ですが、ソースをコンパイル中に

error C2664: 'fprintf' : 1 番目の引数を 'struct _iobuf' から 'struct _iobuf *' に変換できません。 (新しい機能 ; ヘルプを参照)
この変換を実行可能なユーザー定義変換演算子がないか、または演算子を呼び出せません。

というようなエラーが発生しますが、何のことだか全くわかりません。
作ったソースファイルは524の通りです。

ちなみにこのソースは、10人の生徒の学籍番号とテストの点数を入力して
ファイルに出力するプログラムらしいです。
google等の検索エンジンや、cの本を調べたのですが、なぜエラーが発生するのかわかりません。
わかる方がいれば宜しくお願いします。
534533の続き:03/10/29 16:12

#include<stdio.h>
main()
{
FILE *fr,fw;
int kekka[100][2],ninzu,i;
fr=fopen("D:cq5in.dat","r");
fw=fopen("D:cq5out.dat","w");
fscanf(fr,"%d",&ninzu);
for(i=1;i<ninzu;i++)
{
fscanf(fr,"%d %d",&kekka[i][0]);
if(kekka[i][1]>=80)
fprintf(fw,"%d Yuu\n",kekka[i][1]);
else if(kekka[i][1]>=70)
fprintf(fw,"%d Ryou\n",kekka[i][1]);
else if(kekka[i][1]>=60)
fprintf(fw,"%d Ka\n",kekka[i][1]);
else fprintf(fw,"%d Fuka\n",kekka[i][0]);
}
fclose(fr);
fclose(fw);
}
535デフォルトの名無しさん:03/10/29 16:14
何度もカキコすいません。訂正です。

× 作ったソースファイルは524の通りです。
○ 作ったソースファイルは534の通りです。

宜しくお願いします。
>FILE *fr,fw;
これ。
FILE *frl;
FILE *fw;
l は余計だった_| ̄|○
なんで宿題スレに誘導されてるのに無視して再び質問するんだ・・・・
IDEが固まるって香具師、窓XP使ってねえ?
もしそうだとしたら、IMEバーをタスクバーから出せば解決するよ。
中学校の宿題?

1〜nの総和を、ベタに積和する、ってのは
for文を使わせたいからだろうけど、ちょっとね。

いや、nがいくつまでなら、ループでまわして、
いくつ以上なら乗算使ってもいいのか、
っていう考察をしる、ってことなのか?
えーっと、では質問の仕方を変えます。
VC6でCOMプロジェクト作った時、インターフェースメソッド名をIDE上で変更するにはどうすればいいんでしょう?
>>541
Alt+E, I でファイル全て (*.*) を検索して、出てきたところを全て書き換える。
実際には .idl, .j, .cpp, .rgs あたりだけでよいと思うけどね。
>>538
てか答えるほうも無視すればいいのに…
宿題は自分の力で殺るもんだろーが。

>>539
2000でも起こるぞ!
それにXPなんぞ糞なもん使わんよ。
544デフォルトの名無しさん:03/10/29 21:58
Visual Studio .NET Academic と
Visual Studio .NET Professional Academic って同じものなのでしょうか?

もし違うとしたら、後者はプロダクトアクティベーション不要ですか?
>>540
「積和」というのは掛けて(積)足す(和)から積和というのだが…。
546540:03/10/29 22:18
吊ってくる。
547544:03/10/29 22:19
吊ってきます。
548541:03/10/30 11:39
>>542
.jと.rgsも書き換える必要があったんですか。
ありがとうございます。
>>539
そういえば、その直後くらいから固まらなくなった気が……。
550471:03/10/30 17:49
>>539
なんか漏れのVC++.NETのデバッガも安定してきたよ!
不思議不思議★ありがとう♪

551デフォルトの名無しさん:03/10/30 21:22
ファイルをドラッグアンドドロップで読み込む
方法がわかりません。
教えていただけませんでしょうか。
>>551
マルチうざい。っと言おうと思ったが、
真の教えて君志望だっけか?ガンガレ。
>>551
DragQueryFileで調べろ。
554デフォルトの名無しさん:03/10/30 23:33
非常に幼稚な質問で申し訳ないのですが、未だにプログラムを動かすことすら
できません。状態はと言いますと、>>79さんとまったく同じです。貼り付けると

新規作成からwin32プロジェクト、
コンソールアプリケーション、空のプロジェクトを選択し、ファイルを新規作成し、
コードを入力してビルドからデバックを開始しても、
「デバックを開始できません。指定されたファイルが見つかりません。」
と表示されてしまいます。

で、>>80さんが的確に助言をだしているので、やってみれば一度はできたの
ですが、2回目できたなくなってしまったのです・・・。
とりあえず今とまっているのは、新規作成→プロジェクト→Win32プロジェクト
→コンソールアプリケーション、空のプロジェクト→完了→新しい項目の追加
ときたところでC++ファイルを選択しようと思ったのですが、ありません。
変わりにテキストファイルなどがあるだけです。

もう一つ困ったことは、以前まではファイル→新規作成→ファイル→C++ファイル
でプログラムを打つ→ビルド→(ファイル名)をビルドと表示されたのですが
それすらも表示されず、かわりにソリューションのビルドというものが
表示されます。もうどうしたらよいかわからず途方にくれております。
XP,Visual C++.net standard version2002 です。よろしくお願いします。 
ファイル→新規作成→ファイル→C++ソースファイルで新しいcppファイル作っても駄目か?
>>554
コードを書いたファイルを開いて、なにも考えずF5押す。
557デフォルトの名無しさん:03/10/31 00:06
>>555
やはりだめです。そもそも上でも書いてるようにビルドができないのです
。ソリューションのビルドしか表示されないのです。初めはビルドでき
たのですが・・・。

>>556
名前をつけて保存→デバックを開始できません、指定されたファイルが
みつかりません となります。どうしたらいんでしょ。もうかれこれ
2時間はさまよってます・・・・。
>>557
>新規作成からwin32プロジェクト、コンソールアプリケーション、
>空のプロジェクトを選択
まで(ファイルを追加しない)でビルドするとどうなる?
559デフォルトの名無しさん:03/10/31 00:40
>>558
すいません、新規作成から空のプロジェクトまできて完了をクリックすると
スタートページが表示されているだけでプログラムは打っていないのですが
何をビルドするのでしょうか?
デバック・・・
>>559
もちろんプロジェクトを。
562デフォルトの名無しさん:03/10/31 00:44
>>558
すいません、新規作成から空のプロジェクトを選択ときて完了をクリックすると
スタートページが表示されてるだけで何のプログラムも打たれて
いないのですが、何をビルドしたらいいんでしょうか?
563デフォルトの名無しさん:03/10/31 00:45
>>558
すいません、新規作成から空のプロジェクトを選択ときて完了をクリックすると
スタートページが表示されてるだけで何のプログラムも打たれて
いないのですが、何をビルドしたらいいんでしょうか?
564デフォルトの名無しさん:03/10/31 00:46
>>558
すいません、新規作成から空のプロジェクトを選択ときて完了をクリックすると
スタートページが表示されてるだけで何のプログラムも打たれて
いないのですが、何をビルドしたらいいんでしょうか?
565デフォルトの名無しさん:03/10/31 00:49
げ〜多重すいません・・・、情けない。
で、ビルドを押すと、そこで表示されるのがやはりソリューションの
ビルドでした・・・。以前のようにファイル名のビルド が表示
されませんでした。ちなみにソリューションのビルドを実行し、
デバックなしで開始をしてみても「デバックを開始できません、
指定されたファイルがみつかりません」が表示されてだめでした。
「ファイル名」のビルドなんかあったか?
567デフォルトの名無しさん:03/10/31 00:54
ファイル名の部分に自分で決めたファイル名が表示されるってことです。
確かそんな感じだったと思います。しかし、なぜできないんでしょうか・・。
>>567
いや、俺はそんなのは見たこと無いが。
VSはファイルは「コンパイル」、プロジェクト・ソリューションは「ビルド」と使い分けてるから。

ところで指定されたファイル(=プロジェクトのビルド結果のEXE)はある?
569デフォルトの名無しさん:03/10/31 01:44
ないみたいです・・・。そりゃ実行できないか・・・。
あのソリューションのビルドってのがだめなのではないのですか?
>>569
空のプロジェクトをビルドしても何も無いのは正常。
空じゃないプロジェクトをビルドした時、EXEファイルはある?
571デフォルトの名無しさん:03/10/31 02:11
いや、ないみたいです。
>>571
空じゃない=なんらかの関数の書かれたソースファイルがC++ファイルとしてコンパイルされている
だけど
エラーも出てないわけね?
CPPファイルのプロパティ->全般->ツールがちゃんと「C/C++ コンパイラ ツール」になってるか確認
中間ファイルはあるかどうか確認
もし無いならDebugフォルダは作られてるのかどうか
プロジェクトのプロパティで出力フォルダ名も確認
書き込み権があるかどうか確認
出力フォルダ名がMAX_MATHより長いと失敗する可能性もあるかも
何らかの常駐ソフトが新規作成されたEXEを片っ端から消してるかも
くらいしか思いつかないな。
573デフォルトの名無しさん:03/10/31 03:35
>>2の「猫でもわかるプログラミング」のお勧めに従って
BCCとBCC Developerを入手したのですが、
VBのように、クラスや関数の入力ヒントや入力支援が出て来るエディタご存知ないでしょうか?
記憶力が弱いもんで・・
VBではがんばってクラス作ると入力ヒントや入力支援が付くので
その後楽になるためにやる気も起きるんですが、
それがないとクラスを増やすことによってかえって覚えることが増えてしまうので、
作り溜めても自分で使い方忘れて面倒になって使わなくなったり、
なるべくクラス化しない方向に行ってしまいそうな気がします。
>>573
VisualStudio
575573:03/10/31 04:39
>>574
いや〜んほんとでした。失礼しました。
>>562->>564
荒らしか。と思ったら真性かよ。始末に終えねーな。
RemoteDesktopとかVNCとかで、やり方を見せてやりたいな。
>>571

プロジェクトじゃなくてソリューションの方にファイルを追加してた、に一票。
エスパー
580539:03/10/31 15:55
約二名ほどのお役に立てたようで誠に重畳。
ちなみに窓2Kで固まる香具師には以下の呪いが効くかも知れぬ。

キーボード(言語)のプロパティの近辺にある「詳細なテキストサービス」をOffにする

元ネタはWinFAQ。
581デフォルトの名無しさん:03/10/31 18:12
#include <stdio.h>

class test
{
int a;
public:
int b;
}

int main(void)
{
return 0;
}

相当基本的なことだと思うんですが、上のコードでコンパイル
できません。クラスの定義あたりでエラーがでます。
何を勘違いしてるのかよかったら教えてください。

XPSP1 VC++(2003)
int main(void)

;int main(void)
にしなさい
583デフォルトの名無しさん:03/10/31 18:41
>>582
RESありがとうございます。
でも、これで解決できなかったです。
なんでだろうなぁ
>>583
.cppのソースで
int b;
} ←これを「};」に置き換えなさい
585デフォルトの名無しさん:03/10/31 18:52
>>582,584
RESありがとうございます。
今別のプロジェクト「Win32コンソール」を作って、それに貼り付けて
(もちろん;を付けて)そしたらコンパイルできました。
前のは同じ「Wi32コンソール」でしたが、空のプロジェクトに
main.cを新しく作ってそこにソース書いていました。
原因が他のとこにありそうなので探して見ます。
586デフォルトの名無しさん:03/10/31 18:55
>>582,584
ごめんなさい、拡張子をc→cppにしたら正常になりました。
まさか拡張子だけでソースの扱いが違うとは思ってませんでした。
教えていただきありがとうございました。
クラスってサブルーチンとは違うの?

クラスってどういう状況で使ったらいいんでしょうか。
デバッグ機能について教えてください。

(1) ウォッチウインドウではenum型の変数の値は整数値として表示されるのですが、
   対応する定義名(enum {AKA, SHIRO} a;ならAKAやSHIROを表示させる方法は
   ないでしょうか?

(2) gdbなどのように、ステップ実行中に好きな関数を呼ぶことはできないのでしょうか?
  p PrintTree(t) のように自前のダンプ関数を呼んで値を確認したいのですが…。
>>587
機能があってそれで解決できる問題があるんじゃない。
問題があってそれを解決するための機能があるんだ。
クラスの使いどころを聞く前にクラスを使わざるを得ない問題にぶち当たるまで数こなせ。
>>587
つーか、Basicにだってクラスの概念はあるだろ?
ClassViewタブでメンバ変数を追加したときに
いちいちクラスのツリーが閉じてしまうのですが
どうにかなりませんか?
>>590
VBにはある
C→C++
B→VB
VisualC++6.0で関数を書くと引数が表示されますよね。
あの機能でマクロの引数も表示できないのでしょうか?

ちなみに.Netでは普通に出てたのですが・・・。
もしかして6では無理ですか?
594デフォルトの名無しさん:03/11/01 02:21
Doc/Viewが全然分かりません。
>>593
VC++6.0じゃ無理では?
というか、.NETのインテリセンスってマクロもOKなの?
と言う事は、#defineもすべて補間されるの?
>>593
#if defined(__DEG_TO_RAD__)
float DEG_TO_RAD(d){}
#endif

#define DEG_TO_RAD(d) (d * (3.14159265358979323846f / 180.0f))

無理矢理だけど一応表示される。
VC++.NET 2003 でXPスタイルを使う方法を教えて下さい。
他から取って来たソースをコンパイルするとうまくなるのですが自分で作ったプログラムはなりません。
598588:03/11/01 08:05
やはりVC++では無理なのでしょうか…。
599593:03/11/01 09:28
>>595
はい、.Netはマクロもインテリセンスが効いてました。
この点は便利なんですが、操作性や重さにちょっと難がありまして・・・。

>>596
確かに無理矢理っぽいけど、これでも行けそうですね。
ちょっと考慮してみます。
>>587
まったく別物。
>>588
・enum値は表示されなかったっけ? 少なくとも私は表示されたのを見た気がする。
・関数を呼ぶのは知らないけど、デバッグ中にブレークしたところより先のソースは
変更可能だからそれで対応したことはある。
602デフォルトの名無しさん:03/11/01 16:22
>>587
クラスではインスタンスごとに別々にプロパティを持てる。
603デフォルトの名無しさん:03/11/01 21:05
ダイレクトXを勉強してるんですが
ダイレクトXの入門書にあるサンプルプログラムを
ビルドしてみたんですがエラーになってしまいました
ウィンドウを表示するだけの簡単なプログラムなのですが
原因がわからなくて困ってます
どうすれば解決できますか?
以下はエラー文です

Base fatal error LNK1104: コンパイラは、ファイル './/Base.exe' を開くことができません。
604デフォルトの名無しさん:03/11/01 21:25
VC++5.0&Win2000でOpenGLの勉強をしております。
glutというライブラリを入れたいと思い、

glut.h,glut32.lib,glut32.dll

が必要とのことなので
http://www.xmission.com/~nate/glut.html
のglut-3.7.6-bin.zip を取ってきました。

glut.hをVC/include/glに、
glut32.libをVC/libに、
glut32.dllをWINNT/systemに入れました。
また、プロジェクトの設定でリンク->ライブラリモジュールにglut32.libを追加しました。

そしてglut系の関数を書いてコンパイルしてみたのですが、

>C:\Program Files\DevStudio\VC\LIB\glut32.lib :
>fatal error LNK1106: ファイルが無効であるか、 またはディスクがいっぱいです
>: 0x3beab413 にシークできません

と出ます。どうしたらいいでしょうか。
605 :03/11/01 22:53
                 選挙だワッショイ!!
 +            \\  選挙だワッショイ!! //
       +        \\ 選挙だワッショイ!!/             +
  +                          +/■\  /■\
 +  /■\    /■\  /■\  /■\ ( ´∀`∩∩´∀` ) ∩ /■\ +
.   ( ´∀`)   ( ´∀`∩(´∀`∩)( ´∀`) (つ   丿ヽ  ⊂丿  ヾ(゚Д゚ )
 (( ( つ  ~つ )) (つ   ノ (つ  丿(つ  つ ( ( ノ  ( ( ノ ))  /   ⊃ )) +
   乂  ((⌒) )) ヽ  ( ノ ( ヽノ  ) ) )  し'し'   し'し'    0_ 〈
    (__)   /■\)し' し(/■\_)_)  /■\   ピョーン   .   `J  *
         (( n´∀`n) ))  ( ´∀` )     ( ´∀`)    /■ヽ
  /■\○   ヽ    )    と    ⊃    _ / つ つ ))  (゚ー゚*)      /■\
と(´∀`と~⌒つ (⌒(⌒)     /  ,、 ヽ  (( ( `(  Y    (( とと ヽ  と⌒~つ´∀`)つ
         /■\   ∩■\(__) /■\゙     /■\      /■\
       ( ´∀` )   | |.´∀`)   (´∀` )    ( ´∀`.)     (´∀` )
      ⊂     づ  /    ,⊃ (⊂、   づ   O    ,O゙    ⊂  ⊂ヽ
    (( ⊂,,,  ノ゙ (((  ,,_,,づ  ((⊂,,,_,, )  (( (  ,,_,,つ )  ((⊂,,__,, )))
   /■\(__/,, /■\),,    /■\(_/,   ∩ヽ_),,   /■\b (_/  ./■\
   ( ´∀`)⊃  ( ´∀`)   (´ー` )     ( ⌒つ )) ( ´∀` ) )    (´ー` )
(( と     ノ (( ( つと )  (( と と ヽ     |/■\ (( (6    ノ  (( と と  )

              創価学会と同じでイイ人 →自民党に投票!
               新しい空気にしたい人  →民主党に投票!

          みんなで選挙に行こう。不在者投票もあるよ。日本を変えよう。
606デフォルトの名無しさん:03/11/01 23:02
同じソースが会社の環境だとビルドとおるのに
自宅だと以下のエラーが出てとおりません。

これってVisualC++のバグなんでしょうか?
それとも何かパッチをあてる必要があるのでしょうか?
ちなみにWindowsのSPはどちらの環境もSP4です。

===========================================================
error C2678: 二項演算子 '==' : 型 'const class tokenizer'
の左オペランドを扱う演算子は定義されていません。
(または変換できません)(新しい動作; ヘルプを参照)
===========================================================

どなたか解決方法をご存知の方は教えてください。
よろしくお願いします。
607デフォルトの名無しさん:03/11/01 23:10
sin(nx-ωt)
みたいに波が時間ごとに進行して行く様子を描きたいのですが、
計算をしながらリアルタイムに動かしつつ
且つ時間の流れが画面の中と現実で同じようにするってどうやるんですか?
>>607
俺も似たようなこと殺ったな。ADボードで取り込んだ波形をスクロールして表示させるっつうの。
もっとも1秒単位で取り込んでるから一秒ほど遅れるけどな。
まぁ方法としてはメモリビットマップを作成して波形を描画した後、
それを少しずつずらしながらウィンドウにコピーすればいいんじゃねーの?
609607:03/11/02 00:22
>>608
少しずつずらすときの時間間隔の指定ってどうやればいいですか?
610デフォルトの名無しさん:03/11/02 01:11
WindowsXPとVisual C++ 6.0な環境なのですが,Borland C++ Version 3.1で
作成されたコードをコンパイルしたいのですが,BCCのmakefileの記述を
VCではどこに記述したらよいのか分からず困ってます.
どなたか教えてもらえないでしょうか.

# makefileが無いとなんか変な感じがする...
611デフォルトの名無しさん:03/11/02 01:30
リソースのビットマップって256色までしか読み込めないの?
フルカラーは無理?編集するときどうすればいいの?
>>609
sleep
613609:03/11/02 01:45
ある簡単な物理現象を微分方程式を使って数値積分しながら、
実際の丁度1/10の速度で描写したいときは
数値積分の計算時間も含めて
1/10の速度にするって方法みたいなのはないですか?
614デフォルトの名無しさん:03/11/02 07:18
>>613
近年のPCなら、数値積分の計算時間は一瞬でしょ?
ほぼ無視できるぐらい。
どうしてでも気になるなら時々現在時刻とでも照らし会わせ、時間補正をすれば?
>>614
物理現象と言ってるのに現在時刻?
秒単位の物理現象ですか?

timeGetTime()程度はさ…
616デフォルトの名無しさん:03/11/02 08:12
COMオブジェクトを利用するときに,
事前にCoInitialize() or CoInitializeEx()を呼び出す必要がありますよね。

で,例えばCOMオブジェクトをラップしたクラスを作成したとして
CoInitialize()はどこで呼び出すのが適当なのでしょう?
普通は,プログラムの始めに呼ぶのでしょうけど,
これだとクラスの使用者にCOMオブジェクトを使ってることを
意識させてしまうことになりますよね?
何か定石のようなものは無いのでしょうか。お願いいたします。
>>606
多分バージョンの違いだと思う。
両方同じバージョンにするかマクロで処理するか。
>>610
単純なソースの登録だけなら「プロジェクトに追加」「ファイル」でOK。
細かな処理をさせたければ「プロジェクトの設定」のタブと睨めっこ。
今最新のVisual Cってバージョンはいくつですか?
620593:03/11/02 16:07
2003と最初にでた.NETのVC++で大きな変更点ありますか?
>>588
どちらも無理.
VCのデバッガってよく出来てると思うけど,ところどころ基本的な機能が抜け落ちてる.
622デフォルトの名無しさん:03/11/02 16:32
>>618
makefileで複数の実行ファイルを作っているので,そのままファイルを追加して
実行すると「すでに定義されています」のメッセージがでてしまいます.
そのためVCでもmakefileを書こうかと思ったのですが,どうやって書けばいいのか,
もしくは依存関係をどうやって指定したらよいのか分かりません.
どなたかご教授願います.
>>620
見た目はあんま変わってないがコンパイラの標準準拠度が格段に上がってる。
HRESULTをヘルプ検索しても英語なのでよく分からない
へたれですが日本語でどういう意味でしょうか?
boostが100%通るぐらいな。
なんか誇らしい気分。
>>624
HRESULTのHはハンドルのHでしょ。
RESULTは結果という意味だから「結果のハンドル」では?
子ウィンドウでCTabCtrlを以下のようにして作っているのですが、

窓クラスA::OnCreate()
 m_tab.Create(WS_CLIPCHILDREN |TCS_MULTILINE|WS_VISIBLE|WS_CHILD,CRect(0,0,0,0),this,NULL)

そのタブがクリックされた時に、窓クラスAの
OnChildNotify() が呼ばれません。どうしたら、子ウィンドウの
CTabCtrlから通知メッセージが来るのでしょうか?
628627:03/11/02 18:42
すいません。環境は VC++.net 2003 です。
よろしくお願いします。
629627:03/11/02 19:59
CTabCtrlの派生クラスを作って解決しました。
Microsoft Visual C++6.0使ってるんですけど
curses.h ってファイルが見つからないんです
どこにあるんでしょうか?
>>621
watch windowで関数コールできるのだが。
>>630
UNIX用じゃん
633デフォルトの名無しさん:03/11/03 00:41
クラスウィザードで新規のクラスを作成したあと、
それを安全に削除したい場合はどうしたらよいですか?
何だかソースファイルを削除したら
クラスウィザードには削除したクラスの情報が残っていたりして変です。
634デフォルトの名無しさん:03/11/03 01:05
VC++のデバッガってあれか。PCの操作もろくにできないのか。
おまけにメモリに書き込みもできやしないじゃないか。
>>633
クラスウィザードで削除できたと思うが。
気になるなら、プロジェクトを一旦閉じてプロジェクト名.clwを削除してしまえば綺麗になる。

>>634
メモリへの書き込みくらいできるよ。勿論、ターゲットプログラムの扱うメモリって意味で。
636r:03/11/03 08:01
デバッガで、文字列を簡単に書き換える方法って無いですか?
>>636
簡単かどうかは兎も角、あります。
CStringなんかならWatchWindowでそのまま入力、char *なんかならアドレスをコピーしてMemoryWindowで入力。
>>635
ん?FileViewでソースファイルとヘッダファイルを削除すればいいんじゃないの?
639デフォルトの名無しさん:03/11/03 13:57
CFileDialog関数でファイル(dat)を指定し,そのファイルのフルパスを
GetPathNameでもらって,そのファイルを読み込もうと思ったら,
そのファイルがないってエラーが出るんです.

それと関連して,CFileDialog関数を通ると,今までにあらかじめ指定して
おいたファイルまで読めなくなってしまうのです.

つまり,CFileDialog関数を呼び出すボタンを押さずに実行すると,
回るのに,CFileDialog関数を通ると,そのCFileDialog関数の中の
変数は何一つ用いていないのに,あらかじめ指定しておいたファイルが
読めなくなって,エラーがでるんです.

CFileDialog関数を通ると,ファイルの読み方に違いが生じるのでしょうか?
今回のエラーは本当にさっぱり見当がつきません.ご助言お願いします.
>>639
カレントディレクトリが変わってるんだろ。

読み込むファイル指定をするときにフルパスにしれ。
641639:03/11/03 14:27
>>640
お返事ありがとうございます.

読み込むファイルをあらかじめ指定しておくときに,
フルパスにしても,エラーが出ます.

先ほど,馬鹿な間違いに気づき,CFileDialog関数からファイルを
指定して,フルパスをもらってそのファイルを読み込むことはできたのですが,
やはり,あらかじめ指定したファイルがフルパスで指定していても,
エラーが出てしまいます.フルパスもアドレスからコピペしているので
打ち間違いはないと思うのですが・・・

カレントディレクトリをもとに戻す方法はあるのでしょうか?
>>641
アドレスをコピペしたら\がそのままじゃないか?\\としてるか?

例 "C:\\dir\\file.txt"
643639:03/11/03 14:49
>>642
ご指摘されたとおりでした・・・
稚拙な質問で申し訳ありませんでした.

あともうひとつ,分からないことがあるんですが,
あらかじめフルパスを指定しておくと,他のユーザが
他のPCで利用したときに,もちろんエラーがでると思うのです.

今まではカレントディレクトリが変わることがなかったので,
相対パスで指定することによって,それをカバーしてきたのですが,
CDialogFileを利用するとそれも無理そうなので,カレントディレクトリを
戻す方法があればご助言お願いします.

他にも上記の問題が解決する方法があればお願いします.
リソースのツールバーのアイコンを間違って消してしまって、
フロッピーのアイコンとかを元に戻したいときは
どこから引っ張ってくれば良いのですか?
645639:03/11/03 15:20
解決しました.お返事くださった方ありがとうございました.
646デフォルトの名無しさん:03/11/03 16:17
ダイアログ自体およびそれに関わる関数などを
削除するにはどうすれば良いでしょうか?

>>643
>カレントディレクトリを戻す方法
んなもん起動時にカレントディレクトリのフルパスを記憶しておいて、
その記憶しておいたディレクトリに移動すればいいだけだろ。
VC++の良書キボンヌ
>>643
m_ofnだかのFlagsにOFN_NOCHANGEDIRを追加
>>644
ニセプロジェクトを一個作ってコピペ
>>646
ファイルごとプロジェクトから外す
>>649
651デフォルトの名無しさん:03/11/03 20:00
クライアント領域に連続描画していってアニメーションさせるとき、
一回メモリ上のキャンパスに描いてから、それをビューに映して
ちらつきを抑えるみたいなテクニックってありますか?
どうやるんですか?
ダブルバファリン
>>651
メモリDC?

これとかどうでしょう。
http://www.codeproject.com/gdi/flickerfree.asp?target=CMemDC
654651:03/11/03 21:09
あっ、それです。>メモリデバイスコンテキスト
>>651
第26章 ビットマップ画像の表示
http://www.kumei.ne.jp/c_lang/sdk/sdk_26.htm
656651:03/11/03 21:30
ウホッいいHP
657651:03/11/03 22:06
>>653
そのコードを写さないとメモリDCの機能は使えませんか?
そのくらいの機能は最初からMFCにないんですか?
>>657
ねーよ馬鹿!
めんどくさくてもメモリDCとメモリBMPつくらんと無理。
常識だろ?
>>658
馬鹿の一言にいちいち反応してたら身が持たんよ
>>657
単純すぎてサポートのしようが無いからだろ。
具体的にどうしてくれたらうれしいんだよ。
むしろ
そのくらいのことは自分でやれ
662デフォルトの名無しさん:03/11/03 22:21
ダイレクトXのプログラムを作るときって
プロジェクトを作った後
d3d9.lib d3dx9.lib dxguid.lib winmm.lib
とかいうのをいちいちリンクさせないといけないから
めんどくさいです。
プロジェクトを作ると同時に勝手にリンクしてくれる
ように設定できませんか?
コンパイラはc++.netです
>>662
#pragma comment( lib, "d3d9.lib" )
以下略

を書いたヘッダをどこかの共通フォルダに保存しておいて。
新しく作ったプロジェクトのソース内のどこかで

#include "さっきのヘッダ"

書くよろし
いちいちいんくるーどさせないといけないから
めんどくさいです。
665デフォルトの名無しさん:03/11/03 23:40
マウスの動きをグローバルフックするためにDLLを書き、
フックをセットするときに呼び出し側のHWNDを渡し、DLL側の変数に保存、
フックしたらPostMessageするようにしたのですが上手くいきません。

フック自体は上手くいっているのですが、PostMessageが出来ません。
渡したはずのHWNDが上手く保存されていないみたいなのです。

呼び出し側のウィンドウ上でマウスを動かした場合は
DLL側のWHND変数はフックをセットしたときに渡したHWNDの値で、
ちゃんと呼び出し側にPostMessageされるのですが
呼び出し側ウィンドウ以外の場所ではDLL側のHWND変数が0になってしまいます。

どなたかアドバイスお願いします。
>>665
アドレス空間が異なるので当然の結果である。
好きな方法で共有すればうまくいく。
667デフォルトの名無しさん:03/11/03 23:51
>>665
>>DLL側の変数に保存
この変数は、プロセス間で共有するように処理してるか?
変数はそのプロセスでのみ有効。
他のプロセスでも使いたいなら、#pragmaやファイルマッピングで
共有するようにしないと。
>>664
それじゃカエレ。
宣言不要な旧VBでも使ってろ。
>>665
Postが出来ないっていうより ウィンドウハンドル が取得できてない、もしくは取得
できたんだけど渡せない、ってことでしょ。
自分が何を聞きたいのかを分析し、できるだけ単純化した例を挙げるなりしたほう
が有効な回答を引き出しやすいと思うぞ。

>渡したはずのHWNDが上手く保存されていない
って聞かれても、”渡したんだろ?”で終わっちゃうよ。
どのように渡してるのかなど明確に。

>>667
偉いね。
Visual C++6.0 応用50例という本を買ってみました。
これマジで糞です。助けてください。
>>670
内容が知らないからよう分からんが・・・
なぜ買った?
役に立ちそうな雰囲気を醸し出していたからです。
>>664
あらかじめ、>>663のように記述したヘッダを含んだプロジェクトを作っておいて
DirectXのプログラムする時は、そのプロジェクトをテンプレートにすれば良いのでは?
>>672
おまえの負けだ。
あとC/C++プログラミング辞典というのも駄目駄目だった。
676デフォルトの名無しさん:03/11/04 02:30
上のほうでメモリDCの質問をした者ですが、
一度に複数のメモリDCを作ることってできますか?
リソースのbmpファイルを読み込むためにひとつと、
それをメモリDCに描く用にひとつが必要だと思うのですが。
DrawState
678676:03/11/04 03:12
CDC dc_bitmap,Memdc;
dc_bitmap.CreateCompatibleDC(pDC);
Memdc.CreateCompatibleDC(pDC);
のようにやっても、何故か下のメモリDCが作られません。

dc_bitmapにビットマップイメージを読み込んでから、
Memdcにdc_bitmapをBitBltで転送して、他にも何か書いてから
*pDCにMemdcをBitBltで転送して表示したいのですが。
>>678
質問直後の俺のありがたい一言レスをことごとく無視してくれやがりましたね。
まぁ損をするのはお前なのでどうでも良いが。

そんなお前はここでも読んでなさい。
http://www.microsoft.com/JAPAN/developer/library/vcmfc/_mfc_cdc.3a3a.createcompatibledc.htm
680676:03/11/04 03:31
バファリン?とか良く分かりませんでした。
とりあえず、まだ良く分かりません。どうすればいいんですか?
MemdcからpDCに転送するときBitBltは使えませんか?
というか、どうやってメモリDCから本DCに移すのか分かってませんでした。
どうやるんですか?
こういう処理のことをDouble Bufferingと呼ぶ。
いちいちビットマップをDCに設定しなくても DrawState で直接描画できる。
Memdc の CreateCompatibleDC は成功しているが、初期設定されているビットマップが 1x1x1 しかないから自分で必要なサイズのビットマップを作って選択しなきゃいけないの。
>>670
てかその手の本で役に立つ物を見たことが無い。
>>678
そりゃそうだろ。メモリBMPを作って選択してねーじゃねーかよ。
685676:03/11/04 09:38
>>684
メモリBMPを作って選択ってどうやるんですか?
よろしければ教えていただけますか?
686665:03/11/04 13:15
解決しました。
つか、そもそもどこもおかしくありませんでした。
寝ぼけていて、ちゃんと動いているのに気がついていなかっただけで
おかしかったのは人間の頭の方でした。

>>666 >>667
もちろん#pragma data_seg して リンカオプション /SECTION 設定していました。

>>669
ウフ。
C++.NETでプロセス制御のプログラムを作っているのですが
自プログラムがアクティブでない時でもコントロールボタンが押されたら
自プログラムを終了させたいのですがどうしたらいいのでしょうか?
(OS:XP PRO C++.NET)

RegisterHotKey関数を使えばいい所までわかったのですが
どう使っていいのかよくわかりません・・・

while(1)
{
//対象パス取得
pInfo->FileName=Str_Key1;
pInfo->Arguments=Str_option1;

//プロセス実行
Process* Key1 = Process::Start(pInfo);
int a=RegisterHotKey(this->Handle,0x0000,MOD_CONTROL,VK_SPACE);

if(a==0)
{
break;
}
//プロセス終了まで待機
Key1->WaitForExit();

Key1->Close();
}
>>684
CBitmapのCreateCompatibleBitmapでビットマップ作ってSelectObjectで選択しろ。
それくらい分かるだろ?
689デフォルトの名無しさん:03/11/04 21:56
void CDCMDlg::OnButton()
{
CBB dlg;
dlg.DoModal();

if(dlg.DoModal()==IDOK)
{
////
}
}

上のプログラムでダイアログを起こして,OKボタン押すと,
もう一度同じダイアログが立ち上がってしまうんですけど,
なぜ立ち上がってしまうか分かりません。

キャンセルを押しても立ち上がってしまいます。
もう一度ダイアログを消すと,ちゃんとメインのダイアログに戻ります。

どなたかご助言お願いします。
DoModal呼んだらダイアログが一つ
もう一度呼んだらダイアログが二つ
>>689
爆笑
おまえら非道すぎ。
>>691
ほんとだ。
よくみたらコリャ可笑しいわw
イトオカシ
695デフォルトの名無しさん:03/11/04 22:26
ダイアログを起こして、そのダイアログのエディットボックスに
データを入れ、ダイアログを閉めて再度ダイアログを起こしたときに
前のデータがエディットボックスに残っている状態にするには
どうすればいいっすか?
>>695
>>689参照
ジャストタイミングだな
698676:03/11/04 22:34
駄目です、分かりません。
メモリデバイスコンテキストに描いてから
画面に表示のやり方がまだ駄目です。
>>698
そんなこと説明してるページはいくらでもある。
二度とここには来るな。
700695:03/11/04 22:38
>>696
>>689を見ても分からないのですが・・・
>>700
689をまんま実行すれば期待通りの動作をすると思うが・・・
702695:03/11/04 22:54
689のソースはOKボタンを押したときに実行せよっていう
プログラムですよね?

あのif文の中にどういったソースを書けば分からないのですが・・・
>>702
ifの前をよーくごらん
>>702
if文の中なんかどうでもいいんですが・・・
705695:03/11/04 23:04
void型がいけないんでしょうか・・・

こんだけヒントもらってもわかんないっす。
ほんとすいません。
705はニセモノ
メインウインドウのサイズを変更できなくしたり、
アイコンやマウスポインタの形をMFCで変えたりするにはどうしたら良いのでしょうか?
APIなら分かるのですが、MFCではどの関数を使えばよいか分かりません。
Visual C++ (ver.6 professional) で、マウスイベントを発生させることって可能でしょうか?
やりたいことは、「あるウィンドウの中のある座標の位置での左マウスボタン押下&離す」
という動作を該当するアプリに伝えることです。

Visual Basicではできるらしいですが、これはVCの方でも可能なのでしょうか。
ポインタなど頂けたら幸いです。よろしくお願い致します
709695:03/11/04 23:20
>>705ニセモノじゃないっす!!

まじでわからないっす。
ヒントとなるようなサイトとかでも結構なんで
教えてください
>>709
ヒントじゃなくて答えが出てるっつーのに・・・
>>707
MFCはソースを読め、って先輩に言われました。

ソースを読まなくてもいいから、検索してみてはどうでしょうか?
該当するメンバがなかったら・・・MFCはラッパークラスみたいなものだと思って、直叩きする。
>>709
始めのdlg.Modal()を消せ。そして二度と来るな。
>>698
だったら諦めろ!
お前の悪い頭じゃ一生無理!

>>707
APIが分かるならMFCでも分かるだろ?
どしたの今日は。
>>695
まずヘルプでDDXを調べて実装する
それができたら>>689を実行
716707:03/11/04 23:40
>>713
そうでもないです。MFCになると分かりません。
>>708
当然できる
その目的のウインドウにメッセージをポスト
やっとメモリデバイスコンテキストができました。
これも偏に皆様方のお陰です。
しかし何故かリソースのビットマップを連続的に動かしたときに
その軌跡が残ってしまいます。
メモリデバイスコンテキストは描画前に
全部白でFillRectで塗りつぶしているのですが、何故でしょうか。
718が作ったアプリ リソースだだ漏れしてそうでいやだ・・・
720718:03/11/05 01:16
おおっできました。
どこかのサイトのやり方を参考にInitialUpdate()の中に
メモリDCのFillRectを突っ込んでいたら最初の一回しか描写されてませんでした。
っというか、InitialUpdate()がどういうときに呼び出されるのか知らずに
ただそのサイトのソースを写しただけでした。
でもまだウインドウのサイズを変更しようとすると
背景のビットマップがちらつきます。これはどうすればいいんですか?
>>616
COMかあ。
結局のところ、クラスの使用者にCOMオブジェクトを使ってることを
意識させるのが一番よいという結論に私は達したよ。うん。
だって、同じスレッドが別のCOMオブジェクトを使ってて
CoInitializeExの引数を調整しなきゃならなくなったりしたら大変だし。
いい加減まともに答えてみるか。
>695
WM_INITDIALOGでSetDlgItemText()
>>616
 まったくお勧めしないが、どこでどう利用されるかわからない DLL などで
どうしても 721 のような問題を避けるなら、別スレッド立ててそっちで CoInit
して COM を利用、メインスレッドからはスレッド間通信でデータのやりとり
を行うしかないと思う。
724C++:03/11/05 03:25
時間がなくて、もうお願いするしかありません。どうかどうか、以下の内容の助言をお願いします。

WindowsXP にて Visual C++ 6.0 を持っております。 C++の知識は #include <iostream>で
文字を表示させられる程度です。(以下はVisualBasic6.0でプログラムは完成していました。が、
VisualBasicでの実行は今回に限りダメ!と言う状態に・・・。)

本題です。
デジカメで撮った画像を20枚BMP形式で保存しています。その画像をPCモニタの全画面表示
で1分おきに表示したいと思っています。どうしてもC++(かVisualC++)で作成したプログラムで
実行したいのです。どうしてもその20枚の表示のためだけに、プログラムが必要なのです。
ズバリ、プログラムを作成いただけませんでしょうか。

どうかお力をお貸しください。 この通りです。 (ぺこぺこ
>>724
スバリ、宿題は自分で解いてください
726724:03/11/05 04:55
なんとか 上司を説得できてVisualBasicで了解もらいました。
ホッ。プレゼンに間にあいそー。

さすがに数時間でプログラムかける人はいませんよね。
失礼しました。
>>724
既存のFreeのソフトでそういうことができるものは腐るほどある罠。
つーか、Office持ってないの?
728687:03/11/05 09:56
やっぱ、.NET使ってる人は少ないのでしょうか・・・
.NETでAPI関数を使うのは間違っているのか?
Microsoft VisualC++6.0で実行結果画面をコピーするには
どうしたらいいですか?
730729:03/11/05 13:20
実行結果画面をそのままWordに貼り付けたいのです
>>730
Alt+Printscreenじゃだめなの?
>>731
駄目なんです Alt+Printscreen押してwordのとこで貼り付けしても
前にコピーしたやつが貼り付けされるんです
やり方が違うのかな?もうちょっといろいろやってみます
Alt-PrintScreenは時々空振りっていうか、変な挙動するね。

漏れは、Paintに一旦貼り付けるようにしてます。
>>733
俺の環境はAltじゃなくてもPrint Screenは100%失敗する。
同じく、ペイントに貼り付けるとうまく行くのに他のソフトは全滅。
画面の色数が関係してるんじゃないかと勘繰っているが。
ベクタ逝けばその手のツールは幾らでも転がってると思うが。
だめだ printscreen出来ない・・・
このPCじゃ無理なのかな
ViXのクリップボードセーバーはどう?
出来ない人でもできるかもしれません。
738593:03/11/05 23:06
VC++6のリソースエディタでダイアログを作成すると、
ウィンドウの文字サイズを変えた時も
自動でウィンドウサイズが変更されますよね。

これを維持したまま、ピクチャーのサイズを
任意で固定したいのですが、リソースエディタ側だけで
設定できるのでしょうか?
>>738
少し前も同じような質問でたけど固定したいならSetWindowPosで。
CStringクラスの
CString STR=_T("・・");
の_Tって何ですか?
741740:03/11/06 01:22
分かりました。
汎用テキスト マッピングのマクロですね。
まあ良く分かってないけど満足です。
742708:03/11/06 01:49
>>717
お返事遅れてすみません。それを聞いて安心しました。
今から頑張って具体的な方法を学ぼうと思います。
どうもありがとうございました
ビットマップを回転して(角度をつけて)表示って
どうやればいいのですか?
744デフォルトの名無しさん:03/11/06 11:52
>>743
DirectXを使う。
C++.NETでマシンのシャットダウンイベントを拾いたいんですが
何か簡単な方法はないでしょうか?
746デフォルトの名無しさん:03/11/06 15:30
エディットボックスに入力されたものを、ファイルに保存したいのですが
どうすればいいですか?
>>745
.NETというか、汎用の方法は WM_(QUERY)ENDSESSION をキャッチ

>>746
エディットボックスから文字列を読み込む(やりかた色々)

その文字列をファイルに出力する(やりかた色々)
>>747
ありがとうございました
WM_ENDSESSIONで終了できました

しかしProcess::WaitForExitを使用した場合
WM_ENDSESSIONの取得がプロセス終了までできません
WaitForExitの待機中でもWM_ENDSESSIONが取得できる方法はないでしょうか?
プロセス終了がしてから取得してしまうので・・
749VC++.netで:03/11/06 19:45
データ型が変換される時の挙動が分からないのです.
intと同じ数字をcharに与えたいのです.

//宣言
int y = 3000;
char text;

//計算
y = y--;

//intのまま出力
printf("intだよん %d \n",y);

//charに変換して出力
text = y;
printf("charになた %d \n",text);

上記コードを実行すると…
intだよん 2999
chaになた -73
intだよん 2998
chaになた -74
intだよん 2997
chaになた -75
intだよん 2996
chaになた -76
.....

となてまいます.なしてマイナスとか言われますか.泣きそうです.
>>749
泣きわめけボケ
>>749は割れざ。
753printf:03/11/06 20:50
もういいもういい、もうそんなに型変換しなくていいよ。
サイズ足りないんだろ。オーバーフローしちゃうからいいよ。
だからそんなに入らないって。
おい、もういいっていってんのに。値を表示するからくれよ。ほら。
なんでcharにするんだよ。charにしなくていいって。charにするなよ。
入らねえよ、大き過ぎだって。charにするなって。よこせよほら。
おい、おい、なんでまだcharにするんだよ。すごいことなってるって。
何バイトだそれ。やめろって。入るかって。
聞いてんのかよcharにするなって。なんでcharにするの。やめろよ、やめろって。
誰が表示するんだよその値を。もういいから。いいからさ。
おい、ほんとに入らないって。つーか聞いてんの。ねえ。
もうやめて、charにしないで。やめてって。charにしなくていいって。
やめろって。おいやめろよ。やめろ、charにするのやめろ。charにするな。charにするな。
おまえ何してんだよ。charにするとかcharにしないとかの話じゃなくて何やってんだって。
おい、ほんとなにしてんだよ、入り切れてないって。オーバーフローしてるって。
もうやめろよ。やめろよ。やーめーろーよ。
>>753
どこを縦読みするんだ?
>>753
もういい,の改変コピペか.
>>749への回答になっててわろた.
現在Visual C++ 6.0を持ってるんですが、コンソールアプリ(数値計算)
しか開発してませんでした。

これからWindowsプログラミングもやろっかなーとか思ってるんですが、
今からやるんなら.NETに移行して勉強した方がいいんでしょうか?

何冊か6.0の本があって、こいつらが無駄になりそうで勿体無い感じがしますが、
.NETが「完全に」6.0の上位互換なら移行してもいいかなと。

識者の方、アドバイスを頂けないでしょうか?
>>756
インターフェイスはかなり変わってる。
本を無駄にしたく無いなら移行しないほうがいい。
労力を無駄にしたく無いならWin32なんかやらずに.NETやったほうがいい。
758756:03/11/07 16:37
>>757
お返事ありがとうございます。

うーん、本はちょっぴり勿体無いけど、労力には代えられないですね。
将来性とかも考えて、.NETを勉強してみることにします。
アドバイスありがとうございました!
>>758
Visual C++ 6.0も使いこなしてないくせにNETに移行しようとしてんじゃねーよ!
金の無駄だろ?
.net使ってますが、最近実行ファイルが作れません。
以前は大丈夫だったのに、ビルドするときに
「プリコンパイル済みヘッダーの検索中に予期しないEOFを検出しました」
とエラーに表示され実行ファイルが作成されません。どうしたらよいでしょうか?
VC++.NET 2002を使って、
struct hanage_tag {
// :
    hanage_tag() { /* ... default construction */ }
};
ってな構造体のオブジェクトを
hanage_tag* hanage = new hanage_tag();
って確保してたんです。

で、最近 VC++.NET 2003を導入したんですが、同じコードをコンパイルすると
warning C4345: 動作変更 : 形式 () の初期化子で構築される POD 型のオブジェクトは既定初期化されます。
なんて言われるようになっちゃったんですね。

....え? VC++.NET 2002では、デフォルトコンストラクタが呼ばれていなかったのかよ!
ってな感じで、かなり戦慄してしまいました。
そこで、知りたいことが二つあります。

1. VC++.NET 2002 でも VC++.NET 2003でも、
    hanage_tagのデフォルトコンストラクタを呼ぶにはどうすればいいですか?

2. というか、とりあえずこのワーニング、抑止できないですかねぇ。




>>760
プロジェクト内にある全部の .cpp ファイルの先頭に #include "stdafx.h" ってかくか、
プロジェクトのプロパティで「プリコンパイル済みヘッダを自動的に作成する」を選びなさい。
762760:03/11/07 19:36
どうもです!
>>761
new hanage_tag;

#pragma
764761:03/11/07 20:43
>>763
ヒャッホウ
タスカリーーー!
>>760
Debugフォルダ内のファイルをすべて消して再コンパイル。
766758:03/11/07 22:33
>>759
すみません、、、

でも、仕事でVBも使用するハメになって、そちらも覚えなきゃならんのですが、
今はver.6が手に入らんから.NET買うしかないんですよ。なんで、いっそVCの方も、と。。
ヘタレでごめんなさい
767デフォルトの名無しさん:03/11/08 13:08
MFCAppWizardで作ったスケルトンのリソースの
ツールバーとかのアイコンとか削除したとき、
それに対応していた無駄なコードが残ってしまう気がするのですが
それらも勝手に削除されているのですか?
>>767
んなわけねーだろ。
>>767
んなこたーない。
>>767
プッ
>>767
それができるのはDelphiだけ
Delphiまんせー
>>771
またDelphi房か( ´,_ゝ`)プッ
>>772
VCでできるもんならやってみろ
それ*だけ*のために相当数の客を逃してるぞ( ´,_ゝ`)プッ
おい、こんなところにも出張厨がいるのか!おめでてーな。
Delってリソース削除しただけでコードまで消えるのか・・・?
怖くて使えねーな・・・
だからdelなのか
777デフォルトの名無しさん:03/11/08 21:29
他スレで聞いたのですが、一応こちらでも質問させて下さい。

ユーザーが100個の数値データを入力するのですが、出来るだけ簡単な方法無いでしょうか?
自分が考えたのは

@エディットボックスを100個作りそこからプログラムがデータを取得する。
Aテキスト形式である一定の規則(データとデータの間にスペースを入れる等)でユーザーが入力して
それをファイルメニューなどから読み込ませる。

ぐらいしか思いつきません。@は作る方も面倒なので今のところAが有力なんですが
何かいいアドバイス下さい。
>>777
マルチ氏ね。
両方出来るようにしたらいいじゃん。
>>777
ファイルを読ませるなら、CSV形式とかがいいんじゃない?
入力・加工がExcel上で楽にできるでしょ。
780デフォルトの名無しさん:03/11/08 21:44
質問します。
ダイアログボックスのクラスが、
C○○DocumentくらすやC○○Viewクラスの変数を取得するには
どうしたら良いのですか?
781デフォルトの名無しさん:03/11/08 21:49
変数を渡せばいいんじゃないの?
782デフォルトの名無しさん:03/11/08 21:58
>>779
そうですね。テキスト形式ならその方が良いかも。
俺のプログラムの完成はまだまだ・・・先
783デフォルトの名無しさん:03/11/08 22:15
Cで、WAVEを扱いたいです。
apiを利用する必要があるそうですが、
どういう手順でソースの入力画面まで設定していったらいいのでしょうか?
784783:03/11/08 22:16
環境はvc6のスタンダードです。お願いします。
>>783
スゲー質問だな。

作りたいアプリによって違うが、MFCかWin32コンソールを選んで、
「次へ」を押してけばいいんじゃないの。

完成させることは100%無理だと思うけど。
786783:03/11/08 22:36
>>785
どうすれば完成できるでしょうか?
とりあえず
ttp://www.aa.wakwak.com/~dragoon/wave.htm
にあるようなソースを動かして学習したいです。
普通にやってもエラーになるので・・・。
そのための設定を作りたいのです。
>>780
DoModalで呼び出してるなら、ClassWizardからDoModalを追加し、
intを渡す例 → virtual int DoModal(int IntParam);
などとオーバーライドして渡すとか。
788780:03/11/08 22:54
>>781
>>787
レスどうもです。
ダイアログボックスが作られたときに、
中にエディットボックス内にC○○Documentなどの変数が
表示されている感じにしたいです。
DoModalをオーバーライドして渡すんですか。

あとIDOKのボタンが押されたときどんな処理をしてるか、
CDialogのソースを見ようとしたのですが
どこにあるのか分かりません。
>>788
IDOKのソースを見てなんか意味あるの?
動きを変えたければ、自分でボタンの動作を書けばいいし。
790788:03/11/08 23:09
>>789
ただ単純に、IDOKと同じ機能を持つ、別IDのボタンとか作りたいと思いました。
意味無いですけど。
あと自分はIDCANCELとIDOKの機能の差もよく分かってません。
>>790
OnOKで返せば良い。

IDCANCELとIDOKの違いは、プログラマが決める。
792788:03/11/08 23:20
>>791
デフォルトではIDOKもIDCANCELのハンドラも
ただEndDialogを実行しているだけなのですか?
793788:03/11/09 00:01
あ〜なんか駄目です。
ダイアログボックスが表示されたときに
C○○Documentのint型の変数を
エディットボックスに表示しようと思って頑張ったのですが、
なんか変な値が出てしまいます。
CHogeDlg dlg;
dlg.m_int_a = pDoc->m_nA;

if(dlg.DoModal() == IDOK){
  pDoc->m_nA = dlg.m_int_a;
}
795783:03/11/09 00:09
どうぞ救いの手をお願いします(つД`)
>>795
http://www.kumei.ne.jp/c_lang/ で勉強すること。
>>793
MFC勉強する前に質問の仕方を勉強汁。
798788:03/11/09 00:16
>>794
どうもありがとうございます。
なんか狂ったことやってました・・・
799788:03/11/09 00:18
>>797
はい、頑張ります
>>1に質問の仕方書いてあるんだけどな
>>798
もう説明がめんどいので・・・
intが渡せたのなら、ダイアログのクラスにC○○Document*形の
変数を作ってC○○Documentのthisを渡せば?
(怒られるかな・・・)
802デフォルトの名無しさん:03/11/09 00:36
自分が作っているMFCアプリケーションに欠陥があることに
気がつきました。開発はVC.NETで行っています。

まず自分のアプリケーションの画面ウインドウ(DirectXで初期化された
CChildViewを使用)に、他のアプリケーションを重ねます。
その状態で他のアプリケーションをタスクバーのクリックによって
縮小状態に変えます。
するとそこでフリーズしてしまいます。

フリーズ時に出現するダイアログで「デッバグ」を選択したところ、
wincore.cpp の中の

void CWnd::GetWindowText(CString& rString) const
{
→ASSERT(::IsWindow(m_hWnd));

ここでエラーが発生したことがわかりました。

これだけの情報で原因に検討をつけるのは難しいかも知れませんが、
どなたかアドバイスをよろしくお願いします。

(ちなみにタスクバーを使わず、タイトルバーのアイコンで縮小
した時は、このフリーズはおこりません。)
デッバク かこいい〜。
804783:03/11/09 00:50
>>796
そこで勉強はしたのですが、WAVEを使うAPIのことについては
わかりませんでした。
どうぞお願いします。
>>804
スキルなさ杉。
何がわからないかわからないし
質問できるぐらいの基礎知識はつけろ。
806783:03/11/09 01:03
>>805
>>786で書いたようなプログラムを実行する設定の手順を知りたいのですが・・・
(console applicationでそのまま実行するとエラーになるので。)
わかりませんか?
どうぞお願いします。
>>806
いい加減消えてくれよ・・・頼むから。
808デフォルトの名無しさん:03/11/09 01:07
>>806
まず本買って、勉強するしかないかもな。
いや、冗談抜きでね。
それかまずHelloプログラムを探してくるとか。
(Helloプログラムとは、"Hello World!!!"と単に表示させるだけのプログラムを言い、すべての言語において基礎的なプログラムを示す。)
>>806
そんな質問の仕方じゃいつまでたっても誰も相手にしてくれないよ。
だって一から全部説明するのめんどうだもの。
>>806
あのページは関数の使い方を載せているだけであって、
そのまま貼り付けただけじゃ動かないのは
Cできりゃわかるだろ。

実行するとエラーになるって、具体的にはどんなエラーなのか、
あと、ソース晒せ

まずここで一から勉強してみてはどうでしょうか
http://www.geocities.jp/chiakifujimon/
812783=806:03/11/09 01:25
みなさん、ありがとうございます。
::waveInOpenの「::〜」という形や、
GetSafeHwnd()(これが一つのAPIですよね…?)
などの勉強がしたいのです。

>>808さんの仰るhello programは
#include <stdio.h>
main{ printf("hello, world\n");}
のことじゃないですよね。ひょっとしてWindowsプログラミングの
(ttp://web.kyoto-inet.or.jp/people/ysskondo/chap2.html)
↑こんなのでしょうか…?

>>810さん、>>786の(ttp://www.aa.wakwak.com/~dragoon/wave.htm)は
ソースの一部だと思うのですが、#include ~~やらmain関数やらは…?
これが自分のやりたいWAVEを扱うAPIと関係あるのか…?と言った感じです。

お恥ずかしいのは承知の上ですが、
気の向く限りお付き合いいただけたらと思います。
>>810
お前責任持って相手しろな
>>812
だからあなたはまだwaveを扱えるほどの技量がないと思う。
俺が行った811で基礎から叩き直してくるべきだと。
ええっと、helloworldの件だが、
それはC言語やろ。俺が言っているのはウィンドウ表示でそれを表示すれと。

ここは別にそういう初心者を対象にしていない。
初心者といっても、ある程度本で勉強して、MFCを使えないと駄目。

と誰かが言いそうだ。
>>802
m_hWnd が NULLとかになってないか?
ブレークしたとこからコンテキストたどれるはず(.NET使ってないから、やりかた
知らんけど)だから GetWindowTextの呼び出し元でおかしなことになってないか、
チェック。
816783=806:03/11/09 01:44
>>814
ありがとうございます。
そこ逝ってきます。

スレ違いかもしれませんが、ひとつだけお願いします。
hello worldなどのテキスト関係のプログラムはdos窓用に(Cでは(#include <stdio.h>
main{ printf("hello, world\n");})で表現できますが、
WAVEとなると>>811のようなWindowsプログラミングが当たり前なのでしょうか?
>>816
だからそういう質問は(ry
試しにお絵かきソフトを作りたいのですが、
過去に描いた部分を1枚絵にして、次に描く部分をその1枚絵に付け加えて行くような
感じにするにはどうすればよいでしょうか。
819猫でも・・・:03/11/09 02:26
bcc32 -W -eRelease\win01.exe win01.cpp
この場合、コマンドラインオプションって、どこに入れればいいのですか??
>>819
コマンドラインオプションの何たるかも分からずにプログラム作る気ですか?
821hage:03/11/09 04:39
>>820
┐(´д`)┌ ヤレヤレ
「猫でも」とか書いてあるから、ホームページ見てやり始めたんじゃねーの?
煽りじゃなかったら、教えてやれyo!!
ここは何のスレだっての。w
bccのスレじゃないことだけは確かです
823デフォルトの名無しさん:03/11/09 08:52
まさかとは思うが、Waveを効果音として再生したいだけじゃないのか??????
ソリューションに二つのプロジェクトを作り。
両方共,同じソースコードを使いたいのですが

ソースコードをプロジェクト毎に挙動を変え
させることは可能でしょうか?

プロジェクトAでは
int apple = 2000;
となっている部分を

プロジェクトBでは
int apple = 4000;
という風にさせていきたいのですが。
1.ソリューションごとに条件定義して#ifdefを使う。
2.だが別のファイルにしたほうが、規模が大きくなってきたときの対応がしやすいかもしれん。
826806:03/11/09 09:49
スキルがなくてとりあえずそれすらも無理だと言われましたので…sndPLAYSOUNDですよね?これは分かったのですが実際のソースが動かなく…
>>824
ソリューションごとにインクルードファイルを用意してそこでマクロ定数を定義し、
共通となるソースではそのマクロ定数で挙動を変えるというのも一つの手。
VC++6のリソースエディタでTABページ毎にでる項目を
エディタ側でセットする事はできないのでしょうか?
(指定のページの時は指定のダイアログの内容を表示するような)

今は、ページ切り替え毎に
プログラムでいちいちウィンドウの表示非表示、位置セットを
手動でやってますが、ちと面倒なので・・・・。
できたらいいね。それだったら私も使いたいな。
>824
iniファイルで指定、ってのもアリかと
たとえBCCだとしても猫でBCC編がはじまってるんだが
ウインドウのサイズを変更しながら、
一定の大きさ以上になろうとしたときに
それ以上大きくならないようにするにはどうしたら良いでしょうか。
>832
【初心者歓迎】C/C++室 Ver.2【環境依存OK】
http://pc2.2ch.net/test/read.cgi/tech/1067189450/441-442
834生茶 ◆6qVNOCbX1M :03/11/11 00:29
最近、C++の勉強を始めました!

以下のようなことをやりたいのですけど、どう組んだらいいか教えていただけませんか??
特に、各クラスのポインタの渡し方などをどのようにすればよいか頭にうかばないんです。

厨な質問ですみませんが、どうぞご教授くださいまし。m(_ _)m

【やりたいこと】
1.ログを処理するクラスを作成し、AddLog(CString)いうメンバ関数を作成する。

  AddLog関数は、ダイアログのリストボックスに引数の文字列を表示する。

2.インスタA、B、Cから  ダイアログのリストボックスに出力したいメッセージを
  ログクラスのメンバ関数AddLog()の引数に設定して呼び出す。


ダイアログ−インスタA−インスタB−インスタC
 ↑       │      │      |
ログ←────┴────┴────┘
>>832
WM_SIZEを取得して処理したら?
this って何に使うの?使った事無いな。
>>836
たとえば、operator=をオーバーライドする時、return *this;って書いたりしない?
あと、そのインスタンス自身への操作を他の関数に委譲したりするときとか。
>>834
ログクラスのインスタはダイアログのメンバか?
まぁ、正解なんて無いから、思うようにコーディングすればいいと思うけど。

ところで、インスタって
変な略語はやめてほしいなあ
>>836
CPaint dc(this);とか。
ありゃ、CPaintDCだよ。
842デフォルトの名無しさん:03/11/11 15:33
すれ立てるまでもない質問はここで、スレに書いたのですが
ご存知の方がいないようですので、VC++をお使いの方にお聞きします。

Excelのアドオンを作りたいと思うのですが、情報をどうやって調べていいか分かりません。
Googleで「Excel アドオン ActiveX」とか検索してもプログラミング関連でないものばかりヒットしてしまいます。
C++は多少分かりますが、ActiveXとかWindowsプログラミングにはそれほど精通していません。

具体的には、ある程度の規模の線形計画法を解きたいのですが
標準のソルバーでは解くことができないので、glpkなどのライブラリを使おうと思います。

アドオンでなく、VBAからDLLとして呼び出す方法も考えたのですが
VisualBasicは不慣れなので、どちらがいいか迷っています。

この辺に詳しい方、アドバイスをお願いします。
ところで、
★初心者にVisual C++を教えるスレ★
の初スレが建ったころ、VCの本スレって別になかったっけ?
MFCスレだけだっけ?
//こっちは当初糞スレ扱いだった記憶が
>>843
あったよ。でも、結局VC++の中でもMFCの人はMFCスレで質問するし、Win32APIの人はWin32API質問箱で質問するし、初心者の中の一人がVC++スレじゃやさしく教えてくれないとかで糞スレを立てたのがこのスレの始まり。
そのうちその糞スレ立てた1も消えて、徐々に普通の質問スレになった。
その後MFCスレとかでも初心者すぎる質問を誘導するための初心者用スレがあった方がいいという話も出てきてここの>>1にあるような「質問の仕方」やスレのテンプレ案が出て、それがこのスレで採用され、今に至る。
845844:03/11/11 16:09
経緯を説明できるほど自分は2chばかり見てることに気づいてちょっと凹んだ。
846ふんがが:03/11/11 16:50
はじめまして。VCの初心者です☆ビットマップをファイルからメモリに読み込みたいのですが、うまくいきません。「loadimage」って関数を使っているのですが、この関数は難しいのですか?よろしくお願いします。
( ゚Д゚)ポカーン・・・
848ふんがが:03/11/11 16:55
?????
>>844
その元本スレのタイトルかポインタきぼん。

次スレ立てるとき、テンプレに入れたほうがよくね?
一応VCのKBになるわけだし。
>>846
質問文に「☆」を入れるな!
むかつくんだよ!
851デフォルトの名無しさん:03/11/11 17:35
☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆
>>852 ミラクルサンクスコ☆
MFCで、マウスリリースイベント拾いたいんだけど、
君ならどうする?
VCでマウスリリースイベントなんて言う?
On*ButtonUp系かな。*は左ボタンならL、右ならR、真中ならM
マウスリリースイベントって何?
857855:03/11/11 20:59
検索したらJavaとかQtしかヒットしなかった。マウスを放したときのイベントらしいので>>855を紹介したんだけど。
>>856
鼠を放すんだよ、きっと。

>>846
愚痴と質問からなったレスのようなので、質問にのみ回答。
>この関数は難しいのですか?
いいえ。
>>836
亀だけどVCのエディタ使ってるなら補完が効くから、メンバうろ覚えのときに
this->と書いてから頭文字を2,3個いれて選んでる。
で、かっこ悪いから後でthis->を置換で消す。
見たいな使い方してます。
>>859
Ctrl+Spaceで出ますが何か。
>>860
そうだったのですかっ。
予約語の中でthisを一番多く打ってる気がする俺。
862デフォルトの名無しさん:03/11/12 01:45
VC++でOutlook Express見たいなUIはどうやって作るの?
C++Builderなら簡単なのに・・・
863デフォルトの名無しさん:03/11/12 01:48
MSNメッセみたいに閉じるボタンを押すとタスクトレイのほうにするっと
収納されるようなものってどうやって作るの?
スクロールバー入れたダイアログボックス表示するときに、
スクロールバーの最小最大値をセットするために
SetScrollRange(0,255)
関数をダイアログのクラスのコンストラクタにセットしたのですが、
ダイアログを表示したら不正終了になってしまいます。
一体どこで最小最大をセットすればよいのでしょうか?
>>832
WM_MINMAXINFOだな。場合によってはWM_SIZINGも。
>>865
微妙に亀レスな上、回答済み、しかもメッセージ名間違ってますよ?
>>862
MFCのWizardならそれっぽいスケルトンが作れる。
エクスプローラ形式+スプリッタでどうよ?
>>864
コンストラクが動くときにはまだウィンドウは出来ていない⇒SetScrollRange 出来ない
OnInitDialog あたりでやってみたら。
869デフォルトの名無しさん:03/11/12 20:01
>>867
それだと左と右にしか分割されない
右を更に上:リスト、下:エディットに分割したい
>>869
だからスプリッタを入れ子にするんだって。
スプリッタウィンドウを使ってエクスプローラのような左右分割にして、(←ここまではWizardでできる)
さらにその右ペインをスプリッタウィンドウを使って上下分割する。
871デフォルトの名無しさん:03/11/12 20:12
VCでデバッグメッセージ出力みたいな関数があったとおもったんですけど思い出せません。
872871:03/11/12 20:13
検索したらありました。すみません。・OutputDebugString
873864:03/11/12 20:49
>>868
どーもありがとうございました。解決しました。
874デフォルトの名無しさん:03/11/12 21:43
875デフォルトの名無しさん:03/11/13 00:37
ダイアログのピクチャ領域を再描画するときは
何のメッセージを処理すれば良いのですか?
876875:03/11/13 00:40
全部OnDrawで処理してしまえば良いのですか。
877875:03/11/13 00:51
OnDrawで処理しようとすると、
ダイアログがまだ表示されていない状態では危険なので、
そのときはifを用いるのですか?
878デフォルトの名無しさん:03/11/13 02:57
すごく初歩的な質問で申し訳ないのですが、
継承を使用せず、クラスAとクラスBをクラスの双方向
の関連を持たせるにはどうコーディングすればいいんでしょうか?

「クラスAにはクラスBのポインタ」を「クラスBには
クラスAのポインタ」を持たせればいいんでしょうか?

クラスAはクラスBを持っていて(has-a)、クラスBはクラスA
を持ってる(has-a)??
もしそうだとすると、ヘッダが2重定義みたいになってしまい
ますよね???
879デフォルトの名無しさん:03/11/13 03:37

キーボードメッセージでF10だけが取得できません。
ほかのファンクションキー、F1〜F9、F11、F12は取得できます。
どなたか取得方法ご存知ありませんか?
ソースの一部)
case WM_KEYDOWN:
  switch(wParam) {
    case VK_F9:
      MessageBox(hWnd, "F9", "test", MB_OK);
    break;
    case VK_F10:
      MessageBox(hWnd, "F10", "test", MB_OK);
    break;
<以下略>
環境)
WinXP Pro
VisualC++6.0Pro + SP5
>>879
WM_SYSKEYDOWNで行けそうな予感。
多分Windowsのショートカットキーだからかな?
881879:03/11/13 04:12
>>880
WM_SYSKEYDOWNで出来ました。
ありがとうございます。一発で解決しました。
>878
「前方宣言」とか「不完全クラス」で調べてみ。

そういやコンストラクタで互いにnewしたら、
コンパイルエラーにならない無限相互has-a関係が出来るな。逝くだけだけど。
D3DXCreateTextureFromFileでビットマップからテクスチャを作りたいんですが
第二引数の読み込む画像の指定はどう書けばいいのでしょうか。
たとえばリソースとしてabon.bmpをインポートした場合どうなるのでしょう。
単に第二引数にabon.bmpと入れるだけではだめでした。 
D3DXCreateTextureFromResource
使ったことないけど名前からしてこれだろ
885878:03/11/14 01:15
>>882
ありがとうございますた。

Googleとかで調べて解決しました。
また、一昨日にEffectiveC++を購入したのでいっしょに見ています。
ちなみに、EffectiveC++には、ヘッダファイルの中で他のヘッダ
ファイルのincludeは極力さけるべきだと書いてありましたね。

ということで、ヘッダファイル内に関連するクラスのヘッダファイ
ルをincludeするものと思っていましたが、認識が違ったようです。
886878:03/11/14 01:53
またまた、初歩的な質問で申し訳ないのですが、
下のように階層が深いクラスCのデータを表示するためのダイアロ
グCを作成したとします。
ダイアログはダイアログCを生成し、ダイアログCにクラスCへのポインタを
教えてやる必要があると思っています。

          has-a         has-a has-a
┌─────┐   ┌─────┐  ┌─────┐  ┌─────┐
|ダイヤログ ├──┤  クラスA ├─┤ クラスB ├─┤ クラスC │
└──┬──┘   └─────┘  └─────┘  └──┬──┘
     │                                ┌──┴──┐
     └─────────────────────┤ダイアログC│
            has-a                      └─────┘

上の例では、階層が浅いですが、階層が深くなるにつれ(クラスn-ダイアログn)、
ややこしいことになりそうな気がするのですが、なにかテクニックがあるんでしょうか?

もしかしすると認識の大きな間違えがあるのかもしれませんが・・・
887デフォルトの名無しさん:03/11/14 02:03
ダイアログとダイヤログをどう使い分けてるの?
888878:03/11/14 02:07
>>887
図中のダイヤ(ア)ログがミスタイプだす(´Д⊂グスン
>>886
ダイヤログのポインタはグローバル関数AfxGetMainWindow()で
どこからでも取れるので

CDialogC *ptrC = ((CMyDialog*)AfxGetMainWindow())->GetDialogC();

みたいな雰囲気でできると思うけど。
>>888
別にダイヤログでも間違い(tbs
diamondがダイヤモンドになる国だし。
891889:03/11/14 03:10
AfxGetMainWnd() だった。

>>889を書いた自分が言うのも何なんだけど、C++のキャストの使い分けってのが
今一つよくわかっておらず...

きちんと書くと reinterpret_cast とか dynamic_cast とか static_cast とか
のうち、どれを使うべきなのでしょうか?
>>891
reinterpret_castは、無関係の型のポインタ同士や、整数型への型変換など。
dynamic_castは、ポリモーフィズムを使用した時のサブクラスへの安全なキャストや、ダイアモンド継承をしたときなど。
const_castはconst/volatileをつけたりはずしたり。
static_castは上記以外の普通のキャスト。

サブクラスへのキャストはdynamic_castを使用してちゃんとNULLじゃないか確かめるのが筋だけど、
今回のように入っているものの型が自明で、NULLチェックもしないような手抜きにはstatic_castがお似合い。
追加
MFCにはDYNAMIC_DOWNCASTもあるので、コンパイラオプションいじりたくないときはこっち使うのも手。
894883:03/11/14 11:17
やはりCreateTextureFromFile関数であっていると思いますが・・・
ビットマップの指定の部分がうまくいきません。
895デフォルトの名無しさん:03/11/14 13:47
大変初歩的なことなんですが、2の5乗などを表すには
どう表記したらいいのでしょうか?
pow(2,5)
897デフォルトの名無しさん:03/11/14 15:19
最適化:実行速度でやりたいのですが・・・。
--------------------構成: bench - Win32 Debug--------------------
コンパイル中...
コマンド ラインのエラー D2016 : コマンド ライン オプション '/ZI' と '/O2' は同時に指定できません
cl.exe の実行エラー

bench.obj - エラー 1、警告 0

のようなエラーが出てしまいます。どうしたらよいのでしょうか?
あまりよくわからないので、丁寧に教えてください。
アクティブな構成を、Releaseビルドにしなさい。
899デフォルトの名無しさん:03/11/14 15:41
898番さん、ありがとうございます。
これで宿題ができました。
>>894
取り敢えず近辺のソース晒しなさい。
多分ビットマップの作り方間違ってると思うから。
>>892-893  ありがと。参考になった。
902デフォルトの名無しさん:03/11/14 17:00
CTabCtrlをCreateしてみたところ、文字のフォントが異様に大きくなってしまいました。
サイズを小さくしたいのですが、どうしたらいいでしょうか。
SetFontを使ってみましたが、タブの大きさが変化するだけで、文字のサイズは変わりませんでした。
>>900
894じゃないんですが、僕もなぜかロードできない現象に悩んでるのでソースをさらします。

LPDIRECT3DDEVICE9 d= GGraphics::Get()->GetDevice();
char buf[256];
GetCurrentDirectory(100,buf);
if(FAILED(D3DXCreateTextureFromFileExA(d, filename,0,0,0,0,D3DFMT_UNKNOWN, D3DPOOL_DEFAULT, D3DX_FILTER_NONE ,D3DX_FILTER_NONE,0xFF000000,NULL,NULL,&m_pTexture ) ))
{

}
MSDNによれば、エラーコードは「D3DXERR_INVALIDDATA データが無効である。 」でした。
bufはデバッグでカレントディレクトリを調べるためのものです。
しかしカレントディレクトリにfilenameで指定したファイルがあるにもかかわらず失敗しました。
Direct3Dの初期化には成功しています。
bmpはWindowsペイントで作成した256*256フルカラービットマップです。
つーか、DirectXのスレいきんしゃい
905903:03/11/14 20:14
すみません。ディレクトリ間違ってました。本当にすみません。
a.cppに
#define __hoge__
と定義して

b.cppにも
#define __hoge__
を引き継ぐ事は可能でしょうか

headerファイルに#defineを定義するのではなく。
>>906

-- a. cpp --
#define __hoge__
#pragma once
-- b.cpp --

#include "a.cpp"

(゚д゚)ウマー。
908デフォルトの名無しさん:03/11/14 21:55
int型のデータ123をファイルにテキストとして保存したいのですが。
どうしたらいいでしょうか?
基本的なことなんですが全く分かりません。
CArchive& ar
ar << 123;
で文字化け。
ar << (CString)123;
でも文字化け。
う〜ん・・・どうやるんだっけ・・・・というかんじです。
>>908
CArchive はテキスト書き出し用のクラスじゃない、ってことを理解スレ!
CFile で書け。
910902:03/11/14 22:00
自己解決できました。 スレ汚しすみません。 
方法: クラスのメンバにCFontを持たせることで解決しました。
>>906 それかプロジェクトオプションで指定
>>909
もうちょっとヒント下さい。
Write関数でやってみたのですがやっぱり文字化けしてしまいます。
FILE*とfprintfでもつかっとけ。
MFC 風:
 CFile f("hoge.txt", CFile::CFile::modeCreate | CFile::modeWrite | CFile::modeText);
 CString s;
 s.Format(_T("%d\r\n"), 123);
 f.Write(s, s.Length());

#include <cstdio> 風:
 FILE* fp = fopen("hoge.txt", "w+t");
fprintf(fp, "%d\n", 123);

C++ 風:
 using namespace std;
 ofstream ofs("hoge.txt");
 ofs << dec << 123 << endl;
書式付きファイル出力をサポートするMFCは用意されてないのでしょうか?
CFileクラスを調べたのですがそれらしい物ありませんでした。
俺の検索不足orスキル不足なんでしょうか。
>>914

> s.Format(_T("%d\r\n"), 123);
これは  s.Format(_T("%d\n"), 123); でそ。
>>914
細かいとこまでありがとうございます。
>>915は気にしないで下さい。読む前に書いてしまいました。
試してみます。
pure virtual function callというエラーはどうして起きるのでしょうか・・・
自分のつたないC++の知識では、pure virtualなら呼びようがないと思うのですが・・・。
派生クラスのデストラクタが通った後にPureVirtualFunctionの
呼び出しをかければそういうエラーが出てきた記憶がある、、
http://jp.sun.com/software/sundev/suncc7001/faqs/cpp.html#3q7
ああ、そうか、thisを渡すのがポイントなのか。
解像度が変わった事を取得することは出来ますか?
>>919
>>920
サンクスです。
じぶんのそーすでもthisを渡していたのでチェックしてみます
923デフォルトの名無しさん:03/11/15 11:02
質問です。
全角を含む文字列の何バイトから何バイト目までの
文字列置換を行いたいのですがどうすればよいのでしょうか?
例えば "abcdeあいうえおaiueo" という文字列があった場合
10バイト目から12バイト目の "う" だけを他の全角文字に置換したいのですが・・・
本当はC#で書きたいのですがこの程度の処理ならC++でも対して変わりないと
思いましたのでこちらに書きこみました。
スキルのある方お願いします。
str[9] = "か"[0];
str[10] = "か"[1];
>"abcdeあいうえおaiueo" という文字列

char* WCHAR* CString std::string std::wstring BSTR LPCSTR
かなり初歩の質問で申し訳ありません。

SetTimer を使っていますが、OnTimer が呼び出されないのです。

MFC AppWizard を使っています。
CTestView に、WM_TIMER を追加し、
CTestView のコンストラクタで SetTimer(1,1,NULL) としているのですが、
OnTimer() が呼び出されません。
(OnTimer() の中に記述した処理が行われていない)

また、同クラス内に OnPaint() がありますが、
これは、画面の再描画のときに呼び出されると思っているんですが、
ウィンドウを動かしても、Invalidate(false) としても呼び出されません・・・。
最小化したときは呼び出されているようです。

いじった点と言えば、プロジェクト作成の際
ドキュメント/ビュー アーキテクチャ のサポートをはずしたのと、
ActiveX コントロールをはずしたのと、
ウィンドウのリサイズができないように
PreCreateWindow 内で cs をいじった程度です。

よろしくお願いします。
>>926
つーかインターバル短くないか?
それにコンストラクタじゃなくてOnCreateで呼び出したほうがいいと思うが。
928925:03/11/15 16:52
>>926
CMainFrm の OnCreate() ですか?
移動してみましたが、変わらず、でした・・・。

書き忘れましたが、
SetTimer の戻り値は 0 ではないようですので、
正常終了しているはずなのです。
>>928
Win32とMFCの基礎を先ず勉強した方がいいと思うが・・・。

CTestViewのコンストラクタ内でSetTimerを使っても、まだウィンドウは作成されていないのでOnTimerではなく第3引数のコールバック関数が呼び出される。
CMainFrame内でSetTimerを使えばCMainFrameのOnTimerが呼び出される。
930デフォルトの名無しさん:03/11/15 17:47
エディットボックスなどを作れるコントロールパネルは
どうやったら出せるのですか。
ダイアログしか出ないです。
は?
>>930
MFCスレとマルチだろ
933925:03/11/15 18:11
>>929
なるほど、言われてみれば最もです。
全く気がつきませんでした。ありがとうございます。
934デフォルトの名無しさん:03/11/15 18:41
>>932
どこで聞けばいいのですか。
>>934
どこでもいいがとりあえず日本語を話せ
>>934
どこで聞いてもそんな質問の仕方じゃ相手にしてもらえません。
937934:03/11/15 18:59
>>935>>936
すみません。
MFCでエディットボックスなどを作れるコントロールを
使いたいのですが、どうやったら出せるのですか。
画面上にダイアログしか出ていなくて、出し方が分かりません。
宜しくお願いします。
メニューの[ツール]→[カスタマイズ]→[ツールバー]タブ→[コントロール]にチェック

のことか?
939デフォルトの名無しさん:03/11/15 19:07
まだVC++を始めてないのに質問です。
UNIXで云うmanのような、関数の返り値、引数、エラー(例外?)が
調べられるコマンドまたは、ソフト、WEBサイトは存在しますか?
できれば、Javaのようにクラス毎に整理された資料があるといいなぁとか妄想しています。
940934:03/11/15 19:08
>>938
ありがとうございます。大変失礼しました。
>>939
MSDNライブラリというチュートリアルからリファレンス、技術情報が書いてある巨大なヘルプファイルがある。
Webでも公開されている。
>>939
http://www.microsoft.com/japan/msdn/library/ja/vclib/html/_mfc_Class_Library_Reference_Introduction.asp
こことか。

製品にはこれのもっと詳しいオフライン版がついてくるはず。
943939:03/11/15 19:25
>>941 >>942
どうもです。
944fofofo:03/11/15 21:45
#include <stdio.h>

void main()
{
int i;

printf("前方が危険な場合は車線をはみ出してもよい ○の場合は5\n");
scanf("%d\n",&i);


if(i<=5){

printf("正解\n");
}else{

printf("間違い\n");




どこがダメかわかりますか?識別子pの前に;を付けろっていうコンパイルエラーが出たんですが全く分かりません
ネタ?”}”が大文字だよ
946デフォルトの名無しさん:03/11/15 22:00
#include "stdafx.h"って何ですか?
プリコンパイルヘッダとは、<stdio.h><windows.h>といった滅多に変更することがないヘッダを
特殊な形で事前にコンパイルしておき、コンパイルの速度を速くする仕掛けだ。
で、VCにはその滅多に変更することがないヘッダをstdafx.hの中に書くという慣習がある。
stdafx.hというヘッダファイルは何処にあるのですか?
950934:03/11/15 22:38
コントロールについて質問した者ですが、
ワークスペースを作った時に自動的にコントロールが
表示されるように出来ませんか。
毎回表示するのが面倒なので。
951934:03/11/15 23:27
>>950
質問を取り消します。
952934:03/11/15 23:34
ここのスレには新Visual C++6.0入門ビギナー編 林晴比古著
を勉強している方はいますか。
Chapter10あたりからつまずいています。
953デフォルトの名無しさん:03/11/15 23:37
>>945さん、アホなミスに付き合ってくれてありがとうございました
そろそろ次スレ?
>>952 みんなつまづいてるから質問するんだ。どんとこいコラ
>>954
まだいい。
957934:03/11/16 00:42
>>955
ありがとうございます。
分からない事をまとめてから聞きたいと思います。
958デフォルトの名無しさん:03/11/16 01:31
OnPaintとOnViewどう違うか良く分かりません。どうなのですか?
>>958
まずOnViewがどんなものなのか説明を頼む。
漏れはOnPaintとOnDrawの違いの方が知りたい
961958:03/11/16 02:11
OnViewじゃなくてOnDrawだった
void CView::OnPaint()
{
 // standard paint routine
 CPaintDC dc(this);
 OnPrepareDC(&dc);
 OnDraw(&dc);
}

That's all.   なのかな?
963958:03/11/16 02:44
どうもありがとうございます。
大した違いは無いんですね。
964958:03/11/16 02:47
ついでに、
CFormView継承でピクチャボックスに何か描いたりしてから、
ウインドウをサイズ変更してスクロールバーが表示されるまで小さくすると
不正終了してしまいます。
これはなんとかなりませんか?実際のところ泣きそうです。
>>964
俺の予想では0除算だな
966958:03/11/16 03:05
CFormViewを継承したスケルトンに、
ピクチャボックス(IDC_PICT)をひとつ作って
OnPaint()でそのピクチャボックスを黒く塗りつぶす処理をしているだけです。
CWnd *pict=GetDlgItem(IDC_PICT);
CClientDC picDC(pict);
CRect picRect;
pict->GetClientRect(&picRect);
picDC.FillSolidRect(picRect,RGB(0,0,0));
これでウインドウを小さくして、スクロールバーが表示されたときに
スクロールバーを動かそうとすると不正終了します。
遅レスですが・・。

>>828 の様な事ができる開発環境はありますか?
968デフォルトの名無しさん:03/11/16 05:37
Viewにスクロールバーをつけたくて
WS_VSCROLLをスタイルに追加したら表示はされたんですが
ためしに動かしてみるとぴゅーっと一番上に戻ってしまいます。
いったいこれはどういう仕様なんでしょう。
あとどんな処理が必要なんでしょうか?
宜しくおねがい
>>968
WM_HSCROLL/WM_VSCROLLに適切なハンドラが必要
970934:03/11/16 09:24
新Visual C++6.0入門ビギナー編 林晴比古著のChapter11のp.321で
外周部の意味が良く分からず、ピクチャプロパティが出ません。
971デフォルトの名無しさん:03/11/16 10:04
VC++6.0,Win2000を使っています。

img.cpp(125) : fatal error C1010: プリコンパイル済みヘッダーの検索中に
予期しない EOF を検出しました。
imgbmp.cpp(548) : fatal error C1010: プリコンパイル済みヘッダーの
検索中に予期しない EOF を検出しました。

が出ます。助けてください。

現在、
toglimg.hを
img.cppと
imgbmp.cpp
main.cppでインクルードしており、上記のように2つ出ます。

>>971
#include "stdafx.h"
973デフォルトの名無しさん:03/11/16 10:09
>>972
エラーが増えましたよ
974デフォルトの名無しさん:03/11/16 10:19
どなたか>>971分かる方いませんか…
>>971
ケースバイケースとしか言いようが無いのでポイントのみ。
・リビルド
・中間ファイルを消してリビルド
・プロジェクトの設定を見直してからリビルド
そろそろ次スレ?
>>971
プリコンパイルヘッダを使うなと言ってみる
978デフォルトの名無しさん:03/11/16 11:51
>>971
img.cppとimgbmp.cppがインクルードしているヘッダに記述ミスが
あるのでは?
「;」つけてないプロトタイプ宣言があったりとか
「}」で閉じていない関数があったりとか

MFCプロジェクトならその2つのcppの先頭にstdafx.hを入れてない
可能性が高いんだけど、コンソールアプリっぽいね。
979971:03/11/16 12:23
なんとか解決しますた。
空プロジェクトにヘッダとcppを追加して、stdafx.hを
使わない形?にしたら出来ました。
980デフォルトの名無しさん:03/11/16 16:45
VC.NETでBHO作るのはどうすればいいのでしょうか。
VC6のサンプルはMSDNにあるのだけど、.NETではウィザードとかの形式変わっていて・・・
981デフォルトの名無しさん:03/11/16 20:17
Viewの現在のフォントを使ってある文字列を描画した場合、
その文字列が収まる矩形を知りたいのですがどうすればよいのでしょうか?
982 ◆Manna2uCLg :03/11/16 20:19
さすがに、もうそろそろ次スレが必要だろう……
ってことで、ちょっくら立ててくるぜー
>>982
よろしくりくりクリトリス。
984 ◆Manna2uCLg
★初心者にVisual C++を教えるスレ★ Part9
http://pc2.2ch.net/test/read.cgi/tech/1068983609/

立てた〜