■過去ログ置き場に戻る■ 1- 前250 次250 最新50


[memo] "9999999999_00.html#R20" という感じで、URLの最後に "#RレスNo" を追加すると幸せになれます。

VisualC++相談室 2
501 名前:デフォルトの名無しさん :2001/05/07(月) 21:55
SDK で spy++ のウインドウファインダのようなものを作っています。

カーソル下のウインドウのリージョンを太枠でハイライトする、
ここまでは FrameRgn() を使ってできましたが、
フォーカスが外れた時に描画した枠を消去する方法がわかりません。

今のところ、InvalidateRect() で無理矢理再描画させているのですが…
ちらついて汚い!
どなたかわかる方いらっしゃいます?

502 名前:デフォルトの名無しさん :2001/05/07(月) 22:21
>501
再描画すべき部分は枠なんでしょ?
だとしたらInvalidateRect()じゃなくてInvalidateRgn()を使え。
CombineRgn()を使って(大きい長方形)−(小さい長方形)で枠のリージョンを作って、それをInvalidateRgn()の第2引数で指定する。
そうすれば枠だけ再描画されるので、中はちらつかないと思う。

リージョンの使い方がわからなければ、ここを参考にしてくれ。
http://www.geocities.co.jp/SiliconValley-PaloAlto/5920/api_index.html

503 名前:デフォルトの名無しさん :2001/05/07(月) 23:46
誰かインラインアセンブラでdouble型の戻り値を受け取る方法教えて!
そもそもアキュムレータに入らない?
intとかの戻り値は普通に受け取れたんだけど

504 名前:デフォルトの名無しさん :2001/05/08(火) 00:04
コンパイラが吐くコード読め>503

505 名前:503 :2001/05/08(火) 00:05
やってみます>504

506 名前:503 :2001/05/08(火) 00:22
できましたー!
ありがとうございました>>504様様

記念age

507 名前:デフォルトの名無しさん :2001/05/09(水) 01:17
Visual C++ 6.0で、AVIファイルから音声の振幅を表示させるプログラムを作成しています。
AVIファイルのオーディオ形式はPCM、22.025KHz、8ビット、モノラルです。
入力音声データをBYTE型で配列に蓄えているのですが、double型で配列に蓄えたいのです。
どうしたらこのようにできますか?
教えてください。

508 名前:デフォルトの名無しさん :2001/05/09(水) 01:31
キャストして代入しろ>507
for (i = from; i < to; ++i)
  doublearray[i] = (double)bytearray[i];

509 名前:デフォルトの名無しさん :2001/05/09(水) 12:13
DWORDってなんですか?

510 名前:デフォルトの名無しさん :2001/05/09(水) 12:19
>>509 MSDNで検索しろ

511 名前:デフォルトの名無しさん :2001/05/09(水) 12:22
API使って&リソースファイル手書きしてプロパティシートを作ろうとしてます。
一応手元の参考書を見ながらやっているのですが(参考書についてたソースはうまくコンパイルできました)、
参考書では1つのソースファイルに全て記述しているので、
自分のプロジェクトでは、WinMainやメインウインドウのウインドウプロシージャを
書いたものと、プロパティシートのダイアログ初期化とダイアログプロシージャを
書いたものを別々のソースに記述してみました。
(メインのウインドウプロシージャでのメニュー選択のswitchから別ソースにある
自作関数にインスタンスハンドルとウインドウハンドルを渡してプロパティシートを作らせる)
で、ビルドしてみたのですが、コンパイルは上手く行くのに
リンクでエラーが出てしまいました。
「error LNK2001: 外部シンボル "__imp__PropertySheetA@4" は未解決です」
「error LNK2001: 外部シンボル "__imp__CreatePropertySheetPageA@4" は未解決です」
と出ました。必要なcommctrl.hはインクルードしているし、リソースファイルにもダイアログの記述は
したのですが・・・・・
C++の仕様にまだ詳しくないのでその辺のミスだと思うのですが、
わかる方おられたら、ぜひ助言お願いします。

512 名前:デフォルトの名無しさん :2001/05/09(水) 12:30
DWORDってなに?

513 名前:sage :2001/05/09(水) 12:34
double world

514 名前:デフォルトの名無しさん :2001/05/09(水) 17:15
>>512
http://homepage1.nifty.com/susho/windoze/datatype.html

515 名前:SAGE :2001/05/09(水) 18:01
>>511
comctl32.lib をリンクするように設定するのを忘れてないかい?

516 名前:511 :2001/05/10(木) 00:19
できた!!!
ありがとうございます!!
なるほど、スタティックリンクのライブラリの設定があったのかぁ〜・・・
厨房ですんまそんー

517 名前:デフォルトの名無しさん :2001/05/10(木) 02:42
DOSから動かしたいんですが、CDを入れないと動作しません。
どうしたらいいのでしょうか?

518 名前:デフォルトの名無しさん :2001/05/10(木) 03:49
サパーリ意味が掴めんが、CD入れとけば>517

519 名前:デフォルトの名無しさん :2001/05/10(木) 04:57
struct hoge{
  char a;
  short b;
  char c;
  int d;
};

なんでこれってsizeof(hoge)が12バイトなの???
自分の計算では10バイトなのに・・

VCの話題でなくてごめんなさい

520 名前:デフォルトの名無しさん :2001/05/10(木) 05:00
ネタですね。>519
わたしは確信してます。
でも一応、
「パディング アラインメント 詰め物」で検索してね。

521 名前:519 :2001/05/10(木) 06:06
ネタにされてる(^^;
いやでもマジなんですよ。ごめんなさい

aa
bb
cccc
dddd
で12バイトって事はわかるんですが(この時点でわかってない?)

最後のintをshortにすると
aa
bb
cc
dd
で8バイトなんですよね

うーむ?
そもそもスレ違いですね。逝ってきます

522 名前:デフォルトの名無しさん :2001/05/10(木) 06:17
>>521
#をパディングとすると、ddddが4バイト境界で始まるように、
a#bbc###dddd
になっているんじゃないの?

523 名前:519 :2001/05/10(木) 06:36
なるほどなるほど
わかりやすい説明どうもでした>>522

524 名前:デフォルトの名無しさん :2001/05/10(木) 14:52
MFCの CAsyncSocket つかって通信してるんですけど
数メガのデータ送っても 8640byte に分割されて届きます。
分割されないでGetできる方法はないものでしょうか?

525 名前:デフォルトの名無しさん :2001/05/10(木) 16:38
>>524
UDP わかってる?

526 名前:524 :2001/05/10(木) 16:56
デフォルトのまま SOCK_STREAM でやってます。
UDPではやってません。
CAsyncSocket か CSoket を使えば、送ったサイズで
分割されずにそのまま取得できると聞いたんですが。
デマでしょうか?

527 名前:デフォルトの名無しさん :2001/05/10(木) 23:23
SDIにおいてCDocumentクラス中で関連付けられているview classの
デバイスコンテキストは取得できますでしょうか?

528 名前:名無しさん :2001/05/10(木) 23:50
GetNextView()->GetXXXDC()でいいんじゃないの。

529 名前:名無し :2001/05/10(木) 23:52
>>524
8640byteに分割はされていても、結局は届くんでしょ?
そうじゃなかったらすまん。
でも、いきなり5MB届きましたーって言われんの嫌じゃない?
そこまで原因不明で帯域落ちたりすんのよ、多分。
逐次処理したいでしょ、ファイルに書きこむにしても。

530 名前:デフォルトの名無しさん :2001/05/11(金) 00:05
DOS窓でC言語基礎を勉強している者だけど、MS−DOSプロンプトの画面で前に自分で入力した文字を↑キーを押すと戻って表示できるようにするにはどうすればいいのですか?

例えば、「cl ○○.c」したらエラーが出て「edit ○○.c」を↑キーで戻って表示する・・・みたいな

くだらない質問でスマソ

531 名前:デフォルトの名無しさん :2001/05/11(金) 00:11
>530

DOSKEY
DOSKEY /INSERT
DOSKEY /?
を実行してみろ。

532 名前:デフォルトの名無しさん :2001/05/11(金) 00:35
>>531
めちゃくちゃくだらない質問なのに、答えていただきありがとうございました

533 名前:デフォルトの名無しさん :2001/05/11(金) 12:45
ダイアルアップネットワークのアイコンが接続時と切断時で
変わるんだけど(ショートカットのアイコンも)
それってどうやってやるんでしょう?

プログラムで真似できないのかなぁ??

534 名前:524 :2001/05/11(金) 14:41
>>529
レス、サンキューです。
やっぱ、TCPは暗黙の了解で約8Kってのがあるみたいですね。
まあ、でかい容量を送るときは、UDPとちがって必ず、
送った順に届くみたいだから、そこのところは便利なのかな。

やっぱTCP使ってみます。

535 名前:デフォルトの名無しさん :2001/05/11(金) 16:39
ダイアログでフォント使うんだけど、皆さんどんなフォント使ってます?
少なくともWindows標準のでないといけないだろうけど、
どれを使えばいいかさっぱり。
システム標準のをダイアログで使う(フォント無指定)と
文字が大きくて不恰好だし、
かといって安易にフォント指定すると
そのフォントがユーザーのWindowsに入ってなかったら
オブジェクトの位置までずれてしまうし・・・・
MS UI GothicとかTahomaがいいかなと思うんだけど、
これって95/98/2000共通でしょーか?
それか、もしダイアログで、例えばスタティックテキストやチェックボックスの文字の
フォントサイズだけ変更する方法があれば一番うれしいんだけど。
知ってる人居たら教えてください。

536 名前:デフォルトの名無しさん :2001/05/11(金) 16:48
WM_SETFONT

537 名前:デフォルトの名無しさん :2001/05/11(金) 16:48
>535
フォントを変える必要に迫られたことがないので無指定。
>大きくて不格好
というのはセンスの問題以前の環境の問題があると思われ。

どうしても変えるなら、rcファイルの中見てみれ。

538 名前:535 :2001/05/11(金) 17:45
とりあえずrcファイル読んでみました。これわ勉強になる〜!
結局MS UI Gothic使って、なんか問題あったら
WM_SETFONT使ってみることにします。
ありがとうございます!

539 名前:デフォルトの名無しさん :2001/05/12(土) 15:12
まだ初歩なんですが、2桁以上の整数をscanfではなく
getcharで入力させるにはどうしたらいいんでしょうか?

540 名前:デフォルトの名無しさん :2001/05/12(土) 15:25
最適化済みのものをデバッグするのはどうしたらいいんでしょう?
オプションの指定ではじかれてしまう

541 名前:デフォルトの名無しさん :2001/05/12(土) 15:43
>>540
ソースデバッグは無理でわ。
関数単位で BP あてたり、スタックトレース程度。

*.dbg 作っておくと最適化したバイナリでもデバッグできるが、
VisualStudio では簡単に作る方法は無かったと思う。

そういう点では統合環境は不自由で不便。使いにくい。

542 名前:デフォルトの名無しさん :2001/05/12(土) 15:51
ありゃそーなんですか
じゃ噂に聞く、リリースビルドにしたら動かなくなった
なんてヤツは原因追求が大変なんですね

543 名前:デフォルトの名無しさん :2001/05/12(土) 16:21
VC++6.0で2文字以上の文字列を記録する型を教えてくだサイ。。
charだと一文字しかダメですの。

544 名前:デフォルトの名無しさん :2001/05/12(土) 16:23
>>543 うむむ、Cわかってますか?
とりあえず、string だけど、用法注意

545 名前:デフォルトの名無しさん :2001/05/12(土) 16:25
ゴメン、教えてくれてありがと〜。
今から本読んでみるよ

546 名前:541 :2001/05/12(土) 17:18
>>542
そうそ、ありがち。
デバッグ用の printf 入れたら落ちなくなっちゃった…なんて。

そーゆーときは大抵、ポインタまわり。メモリ壊してる系の...。

547 名前:デフォルトの名無しさん :2001/05/12(土) 17:58
>>543
char *s="koredeiinndakke?";
あれ?これでダメだっけ?
間違ってたらごめん

548 名前:BitBltってなんかかっこいいよね :2001/05/12(土) 18:16
Bitmapを上下逆さまにして(180度回転ね)表示したいんだけど
方法はないでしょうか?API見たけど、どうもなさそう。。。
しょうがないから自分でメモリー上で反転させないといけないのかなぁ。。

549 名前:デフォルトの名無しさん :2001/05/12(土) 19:38
Win32API(SDK)で
エディットボックスの最後にテキストを挿入(追加)した場合
カーソルの位置も最後尾に移ってしまって、表示もテキストの最後に
移動してしまいます。
エディットボックスの表示とカーソル位置をそのまま維持し
テキストを末尾に追加するにはどうしたら良いですか?

550 名前:543 :2001/05/12(土) 19:40
>>547
どうも、アリガト
試してみます

551 名前:fuck :2001/05/12(土) 19:59
>>548
ビットマップのヘッダーの縦の長さ(具体的には0x16〜のDWORD値)
の符号を反転させれば上下逆さになりますね。まったくお勧めしませんけど。
SetMapModeで専用のデバイスコンテキストについて座標の取り方を
変更してもできそうですね。まったくお勧めしませんが。

552 名前:BitBltってなんかかっこいいよね :2001/05/12(土) 20:35
Fine, Ass Hole! わかったよ。
左上隅(x1, y1) 右下隅(x2, y2)
pDC->StretchBlt(x1, y2, width, -height, &mdc, 0, 0, width, height, SRCCOPY);

ホントにアリガト。このfuck野郎!

553 名前:名無しさん :2001/05/12(土) 23:27
age

554 名前:名無しさん :2001/05/12(土) 23:28
age

555 名前:デフォルトの名無しさん :2001/05/13(日) 02:11
くだらない質問ですが、
if(a=b!=0){...}が、bが0の時に実行されるのは何故ですか?

556 名前:デフォルトの名無しさん :2001/05/13(日) 02:48
a=b が先に評価されてるからだろ 代入は真を返すよ

557 名前:デフォルトの名無しさん :2001/05/13(日) 02:56
大嘘かいちゃった。実行されないぞ
int i,j;
j = 0;
if(i=j!=0){} }

558 名前:デフォルトの名無しさん :2001/05/13(日) 03:05
>>555
あなたの勘違い

559 名前:デフォルトの名無しさん :2001/05/13(日) 03:11
>>558
>あなたの勘違い
そうともいえないゾ!
aがこんなクラスのインスタンスだったらどうする?
class A {
public:
bool operator=(int b) { return true;}
};

560 名前:デフォルトの名無しさん :2001/05/13(日) 03:32
bがfloatだとか

561 名前:デフォルトの名無しさん :2001/05/13(日) 05:29
>>560
ダメ
0がfloatにプロモートされるだけ

562 名前:デフォルトの名無しさん :2001/05/13(日) 05:32
プロモート ってなんですか?

563 名前:デフォルトの名無しさん :2001/05/13(日) 11:08
入力された数字以下の素数を表示するプログラムなんですが、
int main(){
int i,j;
printf("数字を入力してください\n");
scanf("%d",&a);
for(i=2;i<=a;i++){
for(j=2;j<=i;j++){
if(i%j==0){
break;
}
}
if(i==j){
printf("%d",i);
}
}
return 0;
}
とした時にこのscanfをgetcharにかえてプログラムを
作らないといけないんですが、どうすればいいんでしょうか?
ちなみに3行でできるらしいです。

564 名前:563 :2001/05/13(日) 11:11
二行目のintはint i,j,a;です。すいません。

565 名前:デフォルトの名無しさん :2001/05/13(日) 12:17
>>563
素数とぜんぜん関係ねーだろーが。

566 名前:デフォルトの名無しさん :2001/05/13(日) 12:45
>>556-561
そうですよね、実行されるわけありませんよね。
何故だ、何故だ? あ〜わかんなくなってきた。
どっかに別の原因があるって事ですよね。探してみます。
(でもウォッチではaもbも0なんだよなあ…VCのバグ?)

567 名前:厨房と言いたきゃ勝手にしろ :2001/05/13(日) 16:16
TurboCでDOS用ロックマンを作ったんだよ。
文化祭用に。
何故ならVCの理解がわしの頭じゃできなかった。

・・・・・・・・別に。ひとりごとですよ。

VC難しすぎ。

568 名前:デフォルトの名無しさん :2001/05/14(月) 13:06
厨房ですいません。
CDocument::Seriallize()で
CBitmapオブジェクトに読み込んだ
画像を保存したい時ってどうやるんでしょうか。
以下ではだめですよね。

void CTestDoc::Serialize(CArchive& ar)
{
if (ar.IsStoring())
{
// TODO: この位置に保存用のコードを追加してください。
ar >> m_bmPicture; // ←CBitmapオブジェクト
}
else
{
// TODO: この位置に読み込み用のコードを追加してください。
ar << m_bmPicture;
}
}

569 名前:デフォルトの名無しさん :2001/05/14(月) 13:22
とりあえず << と >> が逆じゃないか?

570 名前:デフォルトの名無しさん :2001/05/14(月) 15:48
CDocument::Seriallize()で
CBitmapオブジェクトに読み込んだ
画像を保存したい時ってどうやるんでしょうか。
以下ではだめですよね。

void CTestDoc::Serialize(CArchive& ar)
{
if (ar.IsStoring())
{
// TODO: この位置に保存用のコードを追加してください。
ar << m_bmPicture; // ←CBitmapオブジェクト
}
else
{
// TODO: この位置に読み込み用のコードを追加してください。
ar >> m_bmPicture;
}
}

571 名前:デフォルトの名無しさん :2001/05/14(月) 20:06
spy++って何が面白いんですか?

572 名前:デフォルトの名無しさん :2001/05/14(月) 20:40
>>571
をぃをぃ、そんなことマジで聞いてんの? ハッカーの必需品だろ?

美人のねーちゃんの衣服越しに中身が覗けるところに決まってんだろっ!
APIMON なんか、もっとすごいんだから。もぅ、グフフもんだね、あれは。

573 名前:571 :2001/05/14(月) 20:46
ウインドウに送信されるメッセージがを覗き見るのが嬉しいんですか。l

574 名前:デフォルトの名無しさん :2001/05/14(月) 22:22
>>570
ファイルとしての保管方法自体は、
www.codeguru.comあたりにサンプルがあったような
気がするよ。CBitmapにはアーカイブストリームへ
出力するためのオペレータは実装されてないから
ファイルI/Oを自分でかくか、CBitmapの派生クラスで
<<と>>をオーバーライドせよ。

575 名前:デフォルトの名無しさん :2001/05/14(月) 23:13
MFC使うとWinMainないけど省略してるだけ?
コンパイラが自動的に付け加えるってことでいいんですか?

576 名前:デフォルトの名無しさん :2001/05/14(月) 23:28
>>575
そ。省略されてる。実体はライブラリの中にある。

MS-Linker は /subsystem:windows のとき、/entry:WinMainCRTStartup が
指定されたものと見なし、リンカはそれを解決することから仕事を始める。

まず渡された *.obj を探していき、なければ *.lib を引き渡された順、もしくは
見つかった順に探していく。MS-Linker はこんなかんじ。

でも棒国のリンカは OMF リンカなので少し違う。

スタートアップルーチンをアセンブルするときに、オブジェクトに
「ここにエントリポイントがあるよ」って埋め込んじゃう。
だから BC++ のリンカにはエントリポイントを指定するオプションがない。

どぅお、わかった?

577 名前:デフォルトの名無しさん :2001/05/14(月) 23:51
だから何でSPY++が面白いんだよっ!!!

578 名前:デフォルトの名無しさん :2001/05/15(火) 00:19
>>576
微妙に違う

579 名前:デフォルトの名無しさん :2001/05/15(火) 00:30
ていうかSPY++の話題なんて今まで一回も聞いたことなかったよ。

580 名前:名無し :2001/05/15(火) 00:48
フリーソフト作りたいんだけど、
作ったプログラムをどうやってフリーソフト化(?)
するか教えてください。

フリーソフトのソースってどこにあるの?????????

581 名前:デフォルトの名無しさん :2001/05/15(火) 00:53
>>580
フリーソフトの意味
間違えてると思う…

582 名前:OP :2001/05/15(火) 00:56
はじめまして。単発スレを立ててしまいましたが
ここで新たに質問させていただきます。
壁にぶちあたってます・・・
他でも質問したのですが解答がなくて・・・。
今回はActiveXで、LabelとEditとButtonのついている
Form型のOCXを作成しているのですが、ViewFormに
貼り付けて動作させようとしたところ、
エラーが発生して落ちてしまいました・・・。
見てみると貼り付けたコンポーネントの
ハンドルがとれていませんでした。
ViewFormの追加の仕方がわるいのでしょうか?
ViewFormを追加して作成したOCXのプロジェクトを
http://203.174.72.112/santa-p/VC++/
にて公開していますので、もしよければ
ダウンロードしてソースを見て
ご指導願えないでしょうか?
また、DLではVC++のソース一式がDLされます。
決してウイルス等ではありませんが、
DLは気が引けるという方もおられると思うので
PG内容をまとめたら説明したいと思います。
ただ時間の制限があり、説明が下手なのと、
説明したら長くなりそうで
実際のソースを見ていただいた方がいいかなと
思いましてDL方式を取らせて頂きました。
P.S.
ViewFormを追加して作成する前には
ActiveXのStaticフォームにAPIでボタン等を
内部的に作成して画面を作りましたがボタンを押下する
イベントをどのように表すのかわからなく
挫折してしまいました。もしこの方法でボタンの
押下処理方法がわかる方がいれば御教授お願い致します。
色々試行錯誤しているのですが、これ以外に
こんな方法でできるというものがあればどうぞ
教えて下さい。お願い致します。。。

開発言語:VC++ 6.0
OS:Windows2000
VC++のMFC ActiveX ControlWizard
http://203.174.72.112/santa-p/VC++/にある
OCXのプロジェクトはaasamp01.LZHというファイルです。
よろしくお願い致します。

583 名前:OP :2001/05/15(火) 00:58
すみません。省略されてしまいましたので
一応再度書きました。
P.S.
ViewFormを追加して作成する前には
ActiveXのStaticフォームにAPIでボタン等を
内部的に作成して画面を作りましたがボタンを押下する
イベントをどのように表すのかわからなく
挫折してしまいました。もしこの方法でボタンの
押下処理方法がわかる方がいれば御教授お願い致します。
色々試行錯誤しているのですが、これ以外に
こんな方法でできるというものがあればどうぞ
教えて下さい。お願い致します。。。

開発言語:VC++ 6.0
OS:Windows2000
VC++のMFC ActiveX ControlWizard
http://203.174.72.112/santa-p/VC++/にある
OCXのプロジェクトはaasamp01.LZHというファイルです。
よろしくお願い致します。

584 名前:デフォルトの名無しさん :2001/05/15(火) 01:25
>>577
おまえ、なにムキになってんの?
SPY++ にうらみでもあんの?
それとも、自分も「グフフ」したいわけ? (藁
あぁ〜?

585 名前:デフォルトの名無しさん :2001/05/15(火) 03:01
>フリーソフト作りたいんだけど、
>作ったプログラムをどうやってフリーソフト化(?)
>するか教えてください。

今なら楽なのは自分でwwwサイト立てる
(気がねとか面倒はこれが一番少ないかな)か
vectorみたいなFREEソフト集めてる所
(のうち悪質じゃないところ)に登録するか。

FREEが無料の意味だと思うなら、
そのとき「これは無料だぜ」と書き添えればいいだけだし、
FREEが自由の意味だと思うなら、
そのときコンパイル済みバイナリだけじゃなく
ソースも添えればいいだけ。「好きに使えや」の一言も添えれば尚ヨシ。

日本じゃ著作権はモノ作れば自ずとつくそうなので、
深く考えなくてもこれだけで「フリーソフトを作れる」
とは言えるのでわないかと。

>フリーソフトのソースってどこにあるの?????????

どこって…
あなたが作ったソフトなら、
ソースはあなたの計算機のDiskにしか有りません。
他のこの世のドコでもなくあなたのDiskにだけ。

逆にいうと、自分のDiskが飛んだり家が火事に
なったりしてソース消失すると悔しいんで
バックアップ取りたいわけだが、
他人様のHDDにバックアップさせたいと思ったら
FREE(自由のほう)ソフトとして公開しちまうのはお得だ(w
場合によってはこれが一番安いかも(w
更に運がよければ、無料で友達が出来たり添削してもらえたり
敵が出来たり(w)するぞ。

586 名前:OP :2001/05/15(火) 10:48
>>582, >>583です。
Viewを追加するVC++でのActiveX作成方法をまとめました。
といっても作成手順の参考にさせて頂いた文章そのままですが。。。
1. CMyFormView の作成
1.1 リソースを作成
ResouceView/Dialog/右クリック/挿入で IDD_FORMVIEW を挿入
1.2 CMyFormView の作成
IDD_FORMVIEW が表示された状態で、Ctrl-W を押して、CFormView を
基底クラスとした CMyFormView を作成

2. CMyFormView の修正
2.1 コンストラクタ/デストラクタが protected になっているので public に
変更
2.2 CFormView::Create(...) も protected なので、次のソースを追加
---
public:
BOOL Create(LPCTSTR lpszClassName, LPCTSTR lpszWindowName,
DWORD dwRequestedStyle, const RECT& rect, CWnd* pParentWnd, UINT nID,
CCreateContext* pContext)
{
return CFormView::Create(lpszClassName, lpszWindowName, dwRequestedStyle,
rect, pParentWnd, nID, pContext);
}
---
2.3 CMyFormView::PostNcDestroy() をオーバーライドして処理をコメントに
する(delete this 動作の禁止)

****CMyControl.cppに追加したFORMVIEWのヘッダーをインクルードする。

587 名前:OP :2001/05/15(火) 10:49
つづき
3. CMyControl への CMyFormView の追加
3.1 次の行を CMyControl のヘッダーに追加

CMyFormView m_MyForm;

3.2 次のコードを追加(WM_CREATE, WM_SIZE)
# ClassWizard 使ってください。

int CMyControl::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (COleControl::OnCreate(lpCreateStruct) == -1)
return -1;
m_MyForm.Create(NULL, NULL, AFX_WS_DEFAULT_VIEW,
CRect(0,0,0,0), this, 1/* means ID 適当 */, NULL);
return 0;
}

void CMyControl::OnSize(UINT nType, int cx, int cy)
{
COleControl::OnSize(nType, cx, cy);
if (m_MyForm.m_hWnd != NULL)
m_MyForm.MoveWindow(CRect(0, 0, cx, cy), TRUE);

588 名前:OP :2001/05/15(火) 10:49
このようにしてView追加をしたActiveXを作成したのですが、確かにViewは
追加されるのですがそのViewの上に置いたコンポーネント(ButtonやEdit等)
のハンドルが取れずGetWindowText等の処理ができなく困っています。
何か手順がおかしいのでしょうか?
また、CMyControl 上に直接置く方法も考えましたがFormがあるわけではないので
どのように追加したらいいのかがわかりませんでした。
APIで画面を作成してもみましたがAPIで作成したボタンの押下処理をどこで判断するのか
これまたわからず挫折しました。。。
こちらの方法でもわかるという方がいたら御教授よろしくお願い致します。
また、この方法以外でも画面タイプのOCXの作成方法があるという方は、
作成手順、方法を教えて下さい。
どうぞよろしくお願い致します。

589 名前:デフォルトの名無しさん :2001/05/15(火) 11:24
CFileDialogでデフォルトで開いているディレクトリの位置
を指定するにはどうしたらいいでしょう?
なんか、毎回開くたびにワークスペースがあるディレクトリに初期化
されてしまうので…。

590 名前:OP :2001/05/15(火) 11:29
VC++ 6.0で開発中ソースをたった一行コメントにしたら
こんなエラーでちゃったんですけど。。。
どうすれば修復できるのでしょうか?
コメントもとに戻してもエラーは出たまんまです。
さっきまできちんとコンパイル通っていたのに・・・
mfcs42d.lib(dllmodul.obj) : error LNK2005: _DllMain@12 はすでに MSVCRTD.lib(dllmain.obj) で定義されています
mfcs42d.lib(dllmodul.obj) : warning LNK4006: _DllMain@12 は MSVCRTD.lib(dllmain.obj) で定義されています; 2 つ目以降の定義は無視されます
ライブラリ Debug/NMA03.lib とオブジェクト Debug/NMA03.exp を作成中
Debug/NMA03.ocx : fatal error LNK1169: 1 つ以上の複数回定義されているシンボルが見つかりました
link.exe の実行エラー

591 名前:デフォルトの名無しさん :2001/05/15(火) 11:49
>>589

CFileDialog::m_ofnをいじる。
OPENFILENAME構造体の内容はMSDNで調べれ。

592 名前:589 :2001/05/15(火) 12:50
>>591
自己レスですが
::SetCurrentDirectory()
でOKでした。

593 名前:デフォルトの名無しさん :2001/05/15(火) 16:19
>584
してえ!今すぐ何が面白いのか教えろ。

594 名前:デフォルトの名無しさん :2001/05/16(水) 01:45
MSDNのお気に入りって、他に持ってく時、どこ持ってけばいいの?

595 名前:デフォルトの名無しさん :2001/05/16(水) 11:35
VC++でMAME32のコンパイルってどうやったら出来ますか
色々調べたんだけどC++Builderのやりかたしか見つからなかったです

596 名前:デフォルトの名無しさん :2001/05/16(水) 11:53
>>594
ひとつで良いなら、開いておいて、移動から現在のURLをゲットすればOK。
まとめたやつは
C:\WINDOWS\Application Data\Microsoft\HTML Help\hh.dat
みたい。

597 名前:デフォルトの名無しさん :2001/05/16(水) 13:21
>>596
多謝です!

598 名前:デフォルトの名無しさん :2001/05/17(木) 00:27
>>593
う〜んと、一言で説明するのは難しいなぁ...。
説明しても、おまえには面白くもなんともないかも知れんぞ。
第一、ここじゃあ、スレ違い。

あるスレにちょこっと書いとくから、ソノ気があるなら探せ。

599 名前:デフォルトの名無しさん :2001/05/17(木) 01:54
無い。どこにも無いぞ。

600 名前:デフォルトの名無しさん :2001/05/17(木) 02:47
>>598
えっちねた板にある書き込みのことか?(w

601 名前:ななし :2001/05/17(木) 07:49
PCカードのA/D変換を使ったアプリケーションを
作ろうと思いますが、PCカードに関して、
A/D変換に関しての有益な情報を
お願いします。

602 名前:でふぉるとノ名無シサン :2001/05/17(木) 15:37
>>593,599

SPYをgooの英和辞典で調べると「偵察」となっている。
派生で、SPYHOLEというものがあって意味は「のぞき穴」。
で、SPY++は何をするものかというと、
Windowsをはじめとするソフトウエアの「穴」を探すツールで、
「グフフ」とできるかどうかは、「のそき穴」の先が何かによるでしょう。

603 名前:デフォルトの名無しさん :2001/05/17(木) 15:51
ファイルを開くときの参照で出てくるあのウインドウって
何かの関数やマクロで使えるんでしょうか?
生WindowsAPIで使いたいのですが、よかったらどなたか教えてください。
お願いします

604 名前:デフォルトの名無しさん :2001/05/17(木) 17:56
>>603
はい。

605 名前:でふぉるとノ名無シサン :2001/05/17(木) 18:51
>>603
↓ここに見て
http://www.venus.dti.ne.jp/~takatomo/win32/getopenfilename01.html

>>593
上のページを開いて[NEXT→]を押して。
SPY++を使った例があるから

606 名前:デフォルトの名無しさん :2001/05/17(木) 18:56
Win2000とかWinMeタイプの「ファイルを開く」
(左側にマイコンピュータとかデスクトップとかあるやつ)
はどうやって開くんでしょうか?

607 名前:デフォルトの名無しさん :2001/05/17(木) 19:09
OPENFILENAME open_file_name;
memset(&open_file_name, 0, sizeof(open_file_name));
open_file_name.lStructSize = sizeof(open_file_name);
GetOpenFileName(&open_file_name);

608 名前:デフォルトの名無しさん :2001/05/18(金) 03:20
WM_APPについて質問です。

アプリケーションでローカルなメッセージを定義したいときにはWM_APPを使えと
いうことは各種の資料を読んで理解したのですが、googleでWM_APPを検索して
出てきたサンプルソースコードは大抵「WM_APP+100」というように、100を加えて
いるのです。

これには何か理由があるんですかね??

609 名前:デフォルトの名無しさん :2001/05/18(金) 12:23
>>611
ない。

610 名前:デフォルトの名無しさん :2001/05/18(金) 12:47
>>609
611 って、だれ?

↓おまえか? こたえが↑になるように、ちゃんと質問しろよ。 (藁

611 名前:611 :2001/05/18(金) 12:55
動的リンクされるMFC60.DLLのリビジョンを調べて動作を分けるために簡単な方法はありますか?

612 名前:610 :2001/05/18(金) 14:16
>>611
よしっ、ごーかぁーくっ!! (爆
確かに簡単な方法は「ない」。 >>609

613 名前:デフォルトの名無しさん :2001/05/18(金) 15:44
何か時間の流れがおかしくなってるよ、ここ(藁

614 名前:611!=609 :2001/05/18(金) 16:35
MFC60じゃなくてMFC42だわな…ネタが中途半端になってしまった。宇津出汁脳。

615 名前::2001/05/18(金) 16:50
現在WinSDKにてC言語でゲームつくりしてます。
MFCに移行しようとおもいのですが、この場合、使用言語はC++でないと
いけないのでしょうか?MFC + C言語はだめなのでしょうか?

616 名前:デフォルトの名無しさん :2001/05/18(金) 17:02
いいんじゃない?自分でいじる範囲はCで書けば。
ただ、MFC自体がC++だし、触らないわけにはいかないと思うけど。

既にSDKレベルでゲーム作れてるんなら
無理にMFCなんか触らなくてもいいじゃん。いいことないよ。
MFCじゃないと出来ないことなんて何も無いんだから。

617 名前:デフォルトの名無しさん :2001/05/18(金) 20:21
VC6でゲーム作ってるんですが、
よくMSのソフトで「Build 2560」とかでるじゃないですか。
なんとなくカッコイイんで自分のプログラムでもビルドするたびに
カウントアップするようなのを付けたいんですが、
これってVC6の統合環境での機能としてあるんでしょうか?

__DATE__とかみたいに自動で定義してくれるといいんですが。

618 名前:デフォルトの名無しさん :2001/05/19(土) 01:03
>>617
BCB ならビルド番号を自動でカウントアップしてくれるけど、
VC なら VBS でガリガリ作ってやる必要がある。
MS のどっかにその VBS があったと思うぞ。

619 名前:デフォルトの名無しさん :2001/05/21(月) 04:37
VC++っていうよりはDevStadioの質問になるかもしれないんですが、自分の使っているVC++の環境を
他のマシンに移すときってみなさんどうしていますか?
キーの設定とか、ウィンドウ配置だとか、ツールバーだとか・・・

特にキー設定を移す方法がわからなくて、レジストリ等散々探してみたんですがこれというものを
見つけられませんでした。

620 名前:デフォルトの名無しさん :2001/05/21(月) 11:51
>>619
探し方が悪い
レジストリにもろにあるぞ

621 名前:デフォルトの名無しさん :2001/05/25(金) 02:37
Win2k環境でVC++6.0を使ってるんですけど
C:\WINNT\Temp\no.datの場所のファイルを
読み込みたいんですが
warning C4129: 'W' :
エスケープ シーケンスとして正しく認識されませんでした。
って表示されてしまいます。
で、C:\\WINNT\\Temp\\no.datに変えてみて
実行してみたらちゃんと読み込めず
デバックエラーっていうダイアログが出てきてもう
どうすることもできません。
誰か解決方法わかりますか?

622 名前:デフォルトの名無しさん :2001/05/25(金) 03:24
>>621
オープンはできたが621のヘタレコードでクラーシュしているだけだと思われ。
デバッガ使えよ。

623 名前:デフォルトの名無しさん :2001/05/25(金) 03:54
WINNTディレクトリへのアクセス権が無いとか

624 名前:621 :2001/05/25(金) 04:12
if(file == NULL){
printf("ファイルオープン失敗\n") ;
exit(1) ;
}
これ付けてみたらファイルオープン失敗って
でちゃいます・・・。
ちゃんと読み込めてないんでしょうね。
ちゃんとアクセス権もありますけど無理っぽいです。
もうしんどくなってきた、ちょっと逝ってきます。

625 名前:デフォルトの名無しさん :2001/05/25(金) 05:10
libpng.libを使いpngファイルを読み込もうとしてるのですが
プロジェクトのC++タグ、コード生成を「マルチスレッド(デバッグ)」
にすると問題が無いのですが、「マルチスレッド」にすると動かないんです。
しかもF5で実行すると「マルチスレッド」であっても問題がでません。

メモリ確保の関係でこけてる気がするのですが、デバッグモード(!=デバッグバージョン)
だと動いてしまうので確認もできず途方に暮れています。
もし何かご存知の方、いらっしゃいましたらアドバイスお願い致します。

626 名前:625 :2001/05/25(金) 07:28
古いライブラリに替えた最初の一回だけ動いたり…分からない

質問をかえて、ctrl+F5で実行した場合とF5で実行した場合とでは、
何が違ってくるのかだけでも、よろしければ教えて下さい

何かdefineでもされてるのでしょうか

627 名前:デフォルトの名無しさん :2001/05/25(金) 10:28
>>625 私も知りたいのであげておきます。

628 名前:デフォルトの名無しさん :2001/05/25(金) 14:08
ダイアログベース+エディットボックスで以下のようなプログラムを作りたいんですけど
どなたか教えて下さい。
1.画像ファイルを読み込む(jpeg,tif,bmp等種類を問わずに)
2.エディットボックスに入れた文字をその画像の上に載せる
3.その画像をダイアログに貼り付ける

629 名前:デフォルトの名無しさん :2001/05/25(金) 14:12
>>628
何を教えて欲しいのか教えてくれ。

630 名前:デフォルトの名無しさん :2001/05/25(金) 14:17
1〜3のやり方が分からないんです。

631 名前:デフォルトの名無しさん :2001/05/25(金) 14:25
1.どんな画像ファイルでもDIB形式に変換できるCOMを持ってくる。もしくは自分で書く。
2.メモリDCに1で読んだDIBを張り付け、GDIで文字を上書き
3.あらかじめビットマップコントロールをダイアログに張っておいて、そこに2でできたDIBをBitBltする。

いじょ。

632 名前:U-N :2001/05/25(金) 14:27
CPictureHolder

633 名前:デフォルトの名無しさん :2001/05/25(金) 14:30
>>631
そのCOMはどこにあるんでしょか?

634 名前:デフォルトの名無しさん :2001/05/25(金) 14:32
1.買う
2.拾う
3.書く

635 名前:デフォルトの名無しさん :2001/05/25(金) 14:36
>>634
書きますので教えて下さい。
どういう風に書けばいいんでしょうか?

636 名前:デフォルトの名無しさん :2001/05/25(金) 14:41
1.ファイルを開く
2.データを読む
3.展開する

637 名前:デフォルトの名無しさん :2001/05/25(金) 14:43
>>636
取りあえず1のコードから教えて下さい。

638 名前:デフォルトの名無しさん :2001/05/25(金) 14:46
それくらい自分で調べていただこう。
ヘルプにも書いてあるし付属のサンプルだってある。
チュートリアルにも書いてあるよ。

639 名前:デフォルトの名無しさん :2001/05/25(金) 14:52
>>638
すいません。
そうですね、CFileDialog 使えば良いんですよね。
2.のデータの読み込みってどうやれば良いんですか?

640 名前:デフォルトの名無しさん :2001/05/25(金) 14:55
それくらい自分で調べていただこう。
ヘルプにも書いてあるし付属のサンプルだってある。
チュートリアルにも書いてあるよ。

641 名前:デフォルトの名無しさん :2001/05/25(金) 15:03
>>639
普通に CFile::Read でいいでしょう

642 名前:デフォルトの名無しさん :2001/05/25(金) 15:10
>>640
えっと確認なんですけど、CFile::Readを使うの?違いますよね?

643 名前:デフォルトの名無しさん :2001/05/25(金) 15:11
それくらい自分で(以下略)

644 名前:デフォルトの名無しさん :2001/05/25(金) 15:11
>>641
アウチ!
使えばいいのか。
3.展開するってのはどうすれば良いの?

645 名前:デフォルトの名無しさん :2001/05/25(金) 15:16
読み込むフォーマットによる。
なにがしかの圧縮がかかっていれば展開する。
それぞれのフォーマットでどうデータが格納されてるかは自分で調べれ。
たいてい展開するコードが公開されてるよ。

ていうか2chをリロードしてるヒマがあったら手を動かせ。
ヘルプ読め。webを検索しろ。

646 名前:デフォルトの名無しさん :2001/05/25(金) 15:16
AppWizardでSDIで作成されたものにスプリットウインドーで分割しました。

CMainFrame >> CSplitterWnd >> CView
これを、次のようにしたいのですが、
CMainFrame >> CSplitterWns >> COtherFrame >> CView
終了したときにエラーになってしまいます。(WINFRM.cppの829行)
OnCreateClientでCCreateContexをいじってみたりしましたが、駄目でした。

この場合、どのようにすればいいのでしょうか?

647 名前:625 :2001/05/26(土) 05:17
なんとも情けないことにメモリ確保のチェックミスでした。
F5やマルチスレッド(デバッグ)で実行した場合は、たまたま
必ずチェックを通ってしまうという現象が起きていたみたいです。
つまらない質問をしてしまい、大変申し訳ありませんでした。
>>627
同じような所でお悩みのようですが、原因はたぶん別のことだと思います。
私のはマヌケすぎな理由だったので。何か力になれると良いのですが…。

648 名前:デフォルトの名無しさん :2001/05/26(土) 19:12
ソースウィンドウの色変えたい。
背景色とか。
どーすればいいの?

649 名前:SAGE :2001/05/26(土) 21:57
ツール(T)オプション(O)書式背景(B)

650 名前:デフォルトの名無しさん :2001/05/27(日) 06:18
 騙し騙し、STLを使うようになったのですが、
カベに当たってしまいました。ソースが汚いですが、見てやって下さい

----------------------------------------
#include<stdio.h>
#pragma warning( disable : 4786 )
#include <vector>
#include <map>

typedef struct{
int aaa;
char *bbb;
} T_CCC;

vector<map<int,T_CCC>::iterator> m_vec;

void procs()
{
vector<map<int,T_CCC>::iterator> p;

p = m_vec.begin();
for( ; p != m_vec.end() ; p++ )
{
printf( "%d", p.second.aaa ); // ←このコードがエラーになります
}
}
----------------------------------------

 mapで管理しているもののうち、一部のパターンに乗るものだけを
別途リスト化したいと思い、書いたコードです。
多分、こんな方法を使わなくても、色々な良い方法があると思うのですが、
多重化しなければ成らなくなった時の例題ソースにもしたいので、
解決できると有り難いです。
コンパイラは"MS-VC++6.0pro"で、(関係無いですが)MFC非使用です。

651 名前:650 :2001/05/27(日) 06:20
スペースを半角で書いていたので、全部飛んでしまいました。
さらに見難くなってしまってすみません m( _ _ )m

652 名前:デフォルトの名無しさん :2001/05/27(日) 07:54
>>650
一応こんな風に解釈してみました。外してるかな?

void procs()
{
    vector<map<int,T_CCC>::iterator>::iterator p;

    p = m_vec.begin();
    for( ; p != m_vec.end() ; p++ )
    {
        printf( "%d", (*p)->second.aaa );
    }
}
main(){
    T_CCC a = { 5, "a" };
    T_CCC b = { 8, "b" };
    T_CCC c = { 3, "c" };

    //a,b,cをmapで管理している
    map< int, T_CCC > _map;
    _map[ a.aaa ] = a;
    _map[ b.aaa ] = b;
    _map[ c.aaa ] = c;

    //a,bを一部のパターンに乗るとして別に管理
    m_vec.resize(2);
    m_vec[0] = _map.find( a.aaa );
    m_vec[1] = _map.find( b.aaa );

    procs();
}
このやり方、正直回りくどくしちゃってるだけの気もします(^-^;

653 名前:652 :2001/05/27(日) 09:11
回線切ってから気づいた。_mapにコピーしといて管理もなにもないですね。
すいませんが適当に読み替えといてください。
あとvector<map<int,T_CCC>::iterator>::iterator pには御注意をば。

うーん、mapで実体を持つなら上のもありですが、そうじゃないなら
vector< T_CCC* >m_vecの方が良いと思います。

654 名前:650 :2001/05/27(日) 10:14
>>652

 解釈は微妙に違ってましたが(^^;
エラーは完全に回避することが出来ました。
徹夜明けだったものですから(言い訳です)、カッコ付けるのを試してませんでした。
というか、”試す”なんて書いている時点でダメプログラマですね(爆)

 mapの方には500件程度のデータがあり、
vectorに入れなければ成らないのは10件程度で、
mapのキー以外で検索しなければならないものでしたので、
こういう形にすることになってしまいました。

 まだSTLの本を全部読み終わって居ないので何とも言えないのですが、
"反復子"と"ポインタ"っていうのは、元アセンブラプログラマから見ると、
同じに見えてしまっていまして、現在vectorのほうに"*"を付けてませんでした。
この処理は、今後バグを生む事は分かっているのですが、どういう結果になるか
興味があるので、結果を知ることが出来るまで、このままにしようと思っています。
(一応、(mapは位置が保証されるとの事なので)mapに実体を持っています。)

 ただ、この処理自体が、スレッドで、1秒間に30回ほど実行されるものなので、
ほかの怖いバグ(クリティカルなもの等)に悩まされることだろうと思います。(^^;

 ということで、速い回答を頂き、感謝します。
私も、色々な質問に回答が出来るくらい、精進しなければ・・・(^^;;

655 名前:不定形ウィンドウ :2001/05/29(火) 18:00
はじめてMFCアプリつくってるのですが、
ダイアログベースで作成したアプリそのものを、
SetWindowRgnをつかって不定形ウィンドウにしたいのですが
どのように適用すればよいでしょうか?
教えてください

656 名前:momo :2001/05/29(火) 18:09
質問の仕方がわからず、同じことを単独スレで建ててしまいました(汗)
重複してしまうのですがこちらでも質問させて頂きます。
プログラム中からアクセス権を変更するにはどうしたらよいのでしょうか?

2ch初心者でして、もしご質問手順に間違いがありましたら、合わせてお教え願います。

宜しくお願いします。

657 名前:デフォルトの名無しさん :2001/05/29(火) 18:20
>>656
まず2ちゃんガイドをよ〜〜〜〜〜〜〜っく読んで、初心者板で1ヶ月修行してこい。

658 名前:デフォルトの名無しさん :2001/05/29(火) 21:09
>>657
なんで?
質問スレで質問して何が悪いの?

659 名前:無責任な名無しさん :2001/05/29(火) 22:07
VCってMACのソフトウェア開発できるんですか?ヘッダファイル中の
#if !defined(_WIN32) && !defined(_MAC)
なんていうのを見かけるたび気になるのですが…

660 名前:デフォルトの名無しさん :2001/05/30(水) 22:59
現在VC++5.0LearningEditionでSTLを使って組んでいまして
VC付属のやSGI、STLportなどいろいろなSTLを試してみたんですが
どれも理不尽に近い不具合があって、うまくいきません。
中には、VC++5.0SP3を組み込めば直るというものもあるんですがLEなんで
それも無理だし・・
VC++5.0LEで問題なく使えるSTLって何かないでしょうか?
あったら教えて欲しいです。
それともVC++5.0LEには見切りをつけて、VC++6.0に買い換えた方がいいでしょうか?

661 名前:デフォルトの名無しさん :2001/05/30(水) 23:07
>>660
VC6(pro以降)を買うのが良いかと。
でも初心者が学習用に使うにはお金がもったいないから、
とりあえずgccとかBCCとかタダで手に入るの使えば?
身を持って感じてると思うけど、
個人で製品買っちゃうとVerUpの度に付き合うのは苦痛だよ。
(VC6は結構寿命長かったけどね)

662 名前:デフォルトの名無しさん :2001/05/30(水) 23:29
>>659
MAC用のOfficeとかIEとか作るときにでもMSが
内部で使ったのかと。
ここでふと思ったんだが、ということはMACにも
WIN32 APIが移植(?)されてる、ってことなのかな?

663 名前:RIP_MAPIRO :2001/05/30(水) 23:30
>>660
もしかして、fiend operatorうんぬん のことかな。

VC6 pro sp5 を仕事で使ってる。

664 名前:デフォルトの名無しさん :2001/05/30(水) 23:43
いつのまにやらsp5ですか。

665 名前:660 :2001/05/31(木) 00:04
>>661
プ、プロ版っすか!?スタンダートじゃよろしくないですかね?
8万はキツイっす・・。
BCCはDirectXと相性が気になって今まで避けてたんですが
手元にあるので使ってみようと思います。
ありがとうございました。

>>663
それかどうかはわからないんですが、
VC版は、コンテナに積むオブジェクトは、<二項演算子などが使えなきゃ駄目、
SGI版は、イテレーターのoperator->()が使用できない、
STLport版は、リバースイテレーターのoperator->()定義でerror C2102
になるなどです。

666 名前:にお :2001/05/31(木) 00:15
今、以下のようなHDDへのアクセスの速度を測定するプログラムを仕事で作っています。
環境はWin98,VisualStudio6sp2E(Enterprise Edition)です。

測定の方法が少々特殊なのですが、
1. 10MBのデータを書き込む
2. 1分待つ
3. 1で書き込んだでーたを読み込む
4. 1分待つ
5. 以上を480回(ほぼ8時間)繰り返して時間を測定する

このような動きをするプログラムを作って、
うちの会社で販売しているソフトがインストールされている場合と
されていない場合の速度差を比較したいのです。

で、一応プログラムは出来たのですが、
書き込み時はいいのですが、読み込み時はディスクキャッシュを読んでしまい、
HDDへアクセスしてくれません。
ディスクキャッシュを使わないで、
HDDから読み込んでくれるようにする簡単な方法はないでしょうか?

ちなみに、Windowsのスワップファイルのサイズをほぼ0にしたところ、
Windows自体がすごく遅くなってしまい、論外でした。

667 名前:デフォルトの名無しさん :2001/05/31(木) 00:19
複数のファイル使えば>666

668 名前:RIP_MAPIRO :2001/05/31(木) 00:28
>>666
当てずっぽな回答かもしれないけど
適当なメモリを確保して解放する処理をかませてやれば
ディスクキャッシュを事実上無効にできそうな気がするが。
例:
int* lpInt = new int[HeavyNumber];
for(int i=0;i<HeavyNumbe;i++) lpInt[i] = i;
delete []lpInt;

669 名前:にお :2001/05/31(木) 00:41
ご回答ありがとうございます。
ちなみに、スワップファイルのサイズ -> でぃすくきゃっしゅのサイズ
の誤りでした。仮想メモリを小さくしてどうするねん。
>>667
240回読み込みテストを行うので、240個もファイルを作らないといけません。
しかも、どの読み込みテスト時にもキャッシュが使われないという
保証がいまいち得られないのが、ちょっと...
>>668
なるほど。でも、確保したメモリがスワップされてしまうのでは...

670 名前:RIP_MAPIRO :2001/05/31(木) 00:57
>>669
>確保したメモリがスワップされてしまうのでは
それが目的だと思うが。

GlobalMemoryStatusでHeavyNumberの値を調節して1分待つ間に
ディスクキャッシュを事実上無効にする処理を終了すれば良いのでは。

671 名前:デフォルトの名無しさん :2001/05/31(木) 01:02
しかし、作ってるソフトってHDDのアクセス高速化ソフトなんだよね。
Windowsのキャッシュを使ってると恩恵受けられないようなソフトに何の意味が。
それに、そんな特殊環境で得られたデータを使って宣伝されるのかと思うと恐ろしい。

で、なんて会社のなんてソフト?

672 名前:デフォルトの名無しさん :2001/05/31(木) 01:09
おもいっきし捏造ですよね。(w

673 名前:デフォルトの名無しさん :2001/05/31(木) 11:13
HDDへの高速化ってどうやるんですか?

674 名前:デフォルトの名無しさん :2001/05/31(木) 11:16
VCの_Tと_TEXTと同じように使っていいのでしょうか
_Tは対応しているときはwchar_tで_TEXTはunicodeにおきかえられる
とMSDNに書いてあったんですが、実質的にはwchar_t == unicodeと
考えていいのでしょうか?
_Tと_TEXTを混同して使ったときに問題が起こるケースがあるとしたら
どんなときでしょうか。
よろしかったら教えてください。

675 名前:デフォルトの名無しさん :2001/05/31(木) 13:44
VC++では、wchar_t に入るのは UTF-16の文字。_Tは_TEXTの省略形。
それ以前に、将来UNICODEアプリを作るために・・・・みたいなアホな動機の
ためにいちいち_Tつけるのか?
_T"text"とかじゃなくて、ふつーに "text"ってやれば。

676 名前:デフォルトの名無しさん :2001/05/31(木) 16:09
>>675
NT系でもcharで問題ないのでしょうか?
そこらへんがよくわからないのでとにかく_Tをつけたり、
TCHARを使っているんですが

677 名前:デフォルトの名無しさん :2001/05/31(木) 16:51
>>676
NTでもXxxA系のAPI実装されてるから動くが、
ネイティブじゃないので微妙に遅いらしい。

678 名前:デフォルトの名無しさん :2001/05/31(木) 18:47
>>677
返答ありがとうございます
NT系では_Tとしといたほうが無難ということでしょうか

679 名前:デフォルトの名無しさん :2001/06/01(金) 01:06
CListBoxを作成(Create)する時
ダイアログに貼り付けたいときは
OnInitDialog()
に記述するのは分かったけど、
ActiveXコントロールに貼り付けたい場合ってどうするんですか?
OnCreateしか思い浮かばない。。。

680 名前:デフォルトの名無しさん :2001/06/01(金) 01:08
貼り付けたいって、貼り付ければそれで終わりジャン

681 名前:680 :2001/06/01(金) 01:15
>>679
ごめん
>>ActiveXコントロールに貼り付けたい
これはちょっとわかんないや

682 名前:デフォルトの名無しさん :2001/06/01(金) 01:26
OnCreate で良いと思うけど。

683 名前:デフォルトの名無しさん :2001/06/01(金) 01:32
structとtypedefってどう違うのだろう?
同じように思えるんだけど・・・。

684 名前:デフォルトの名無しさん :2001/06/01(金) 01:38
>>683
どの辺が???
ぜんぜん違うけど・・・・・

685 名前:デフォルトの名無しさん :2001/06/01(金) 01:40
683はコピペ

686 名前:デフォルトの名無しさん :2001/06/01(金) 19:33
>>678
NT用と9X用の2種類の実行ファイルを別々にリリースすんのか?

687 名前:デフォルトの名無しさん :2001/06/01(金) 21:46
HDへのアクセスを早くするプログラミングってどんなんですか

688 名前:にお :2001/06/01(金) 22:03
>>671 など
HDDのアクセスを速くするソフトを作っているのではありません。

データのアクセスにからむ常駐ソフトを作っているのです。

>>672
別に捏造はしませんよ。実験内容は、そのままユーザに伝えます。


ちなみに、ディスクキャッシュを使わずに、HDDへアクセスする方法はわかりました。
CreateFileの関数で、FILE_FLAG_NO_BUFFERINGフラグを指定すればOKでした。
ちょっとした、条件が絡むので少々面倒でしたが。

それでは、ご回答していただいた方ありがとうございました!

689 名前:デフォルトの名無しさん :2001/06/01(金) 22:30
>>688
キャッシュ使わずにアクセスするのにかかる時間を
使うこと自体捏造ではないのですか

690 名前:デフォルトの名無しさん :2001/06/01(金) 22:33
なんに使うソフトかは知らないけど、
ほぼ滅多に存在しない条件でのデータに
なんの価値があるのでしょうか

>クライアントを納得させる資料
そうか

691 名前:689 :2001/06/01(金) 22:41
>>690
なーる
一般向けアプリにしてはお粗末過ぎるもんね

692 名前:デフォルトの名無しさん :2001/06/01(金) 22:45
ここって半分くらいはシロートなの?
学生みたいな雰囲気のレスがあるな

693 名前:デフォルトの名無しさん :2001/06/01(金) 23:40
クラスの中のクラスからそのコンテナクラスを参照するには
どうすればいいんですか?

694 名前:デフォルトの名無しさん :2001/06/02(土) 00:09
>>693
そのクラスにコンテナクラスインスタンスの参照渡しとけばいいじゃん。

695 名前:デフォルトの名無しさん :2001/06/02(土) 00:13
>>692
シロートや学生ってそんなに悪いことなのかねぇ…。
あんただって知らない分野逝ったらシロートでしょ?

つーか、そんな事言うのは年寄りの証拠だね。

あ、俺は学生じゃないよ。下っ端だけど(藁

696 名前:デフォルトの名無しさん :2001/06/02(土) 00:23
「カントン」ってなんですか?

697 名前:デフォルトの名無しさん :2001/06/02(土) 00:32
VCを使ったデータベースプログラムなるものを勉強したいのですが
参考になる書籍が見つかりません。
どなたか道を示してもらえませんか。
お願いします

698 名前:デフォルトの名無しさん :2001/06/02(土) 03:22
>>695
別に言わんでも下っ端だって分か

699 名前:デフォルトの名無しさん :2001/06/02(土) 04:49
例えば"ABC"という文字列を、何らかのエフェクトを
かけて(たとえばだんだん明るく)表示したいと思ってます。

GDIでできるのか、あるいはDirectXやOpenGLを使った方が
いいか迷っています。

ゲームではないです。どれを使ったらいいでしょうか?

700 名前:デフォルトの名無しさん :2001/06/02(土) 04:52
きり番get!

701 名前:デフォルトの名無しさん :2001/06/02(土) 04:58
>>699
ゲームじゃないならGDIでいいんじゃない?
問題なく作れるよ。ただ、パレット使えない画面モード
(16bit以降)はグラデ書き換えだけでも遅くなるから、
あんまり大きい画像には向かないと思う。
(DirectXとかだと、その辺をビデオカード側のハードウェア機能で
代替してくれる可能性があるかもね。)

702 名前:デフォルトの名無しさん :2001/06/02(土) 05:03
ひとつだけ言えるのはDirectXだろうがGDIだろうが
だんだん明るくしてーとかのフィルタは自分で書かなきゃいけないってこと。
3Dのライティングでどうこうすればできるのかもしれないけど、
それはきっとGDIでチマチマ書くよりずっとずっと大変。

703 名前:699 :2001/06/02(土) 05:32
>>701,702
早速のレスありがとうございます。
GDIでやってみようと思います。

704 名前:この業界から逃出した男 :2001/06/02(土) 20:26
>>699
{
static int i = 0 ;
HDC hDC = GetDC( hWnd );
SetBkMode( hDC , TRANSPARENT );
SetTextColor( hDC , RGB( i , i, i ) );
TextOut( hDC , 0 , 0 , "宇津だ死のう" );
ReleaseDC( hWnd , hDC );
i++;
if( i >= 255 ) i = 255;
}

これをタイマー呼出しとかする毎呼出してごらん。
とか言ってみるテスト。

705 名前:699 :2001/06/03(日) 07:00
>>704
そうです。やりたかたったのは、こんな感じのやつです。
どーもありがとうございます。

706 名前:デフォルトの名無しさん :2001/06/03(日) 11:14
>>704
やっぱりそうするよね

>問題なく作れるよ。ただ、パレット使えない画面モード
>(16bit以降)はグラデ書き換えだけでも遅くなるから、
とか
>だんだん明るくしてーとかのフィルタは自分で書かなきゃいけないってこと。
たかが文字の色を変えるだけで、なんでそんな回りくどいことをするんだ
発想硬すぎ

707 名前:この業界から逃出した男 :2001/06/03(日) 11:43
これだからオールドタイプは。(藁
まあ、確かに昔は16bitカラーでの処理とか重かったですけどね。
ゲームではない、つまり60fps出なくて良いからもっと楽々出来るし。

708 名前:デフォルトの名無しさん :2001/06/03(日) 11:43
>>706
なんでそうなる? 701が言ってるのって、GDIなら>>704みたいのを
自分で書く必要があるぞって言うまさにそのことじゃないのか?

709 名前:この業界から逃出した男 :2001/06/03(日) 11:49
>>708
だから、GDIに画面モード、画面の色数は関係ないと言う事。
「ただ〜」から始まる言葉が全然見当違いな事を逝っているって事でしょ?

いや、違うか、GDIで画面モードが関係すると言えば…
GetPixel とか使えって言ってるのか!?

710 名前:デフォルトの名無しさん :2001/06/03(日) 14:41
GDIでパレットを使っても、結局近似色で塗られるだけ。
だから速度にパレット云々は関係ない。
DirectDrawでやるならパレットの意味もあるが。
どちらにしてもテキストの色を変えるだけなら、根本的に的外れな話だ。

711 名前:この業界から逃出した男 :2001/06/03(日) 21:10
GDIでも、ディスプレーモードを変えてシステムパレットを弄る事は出来るけどね。

712 名前:デフォルトの名無しさん :2001/06/03(日) 23:57
よく、ウインドウのメニューでヘルプだけ右によってるのがあるんですが、
あれってどうやってるんですか?

713 名前:デフォルトの名無しさん :2001/06/04(月) 00:39
MFT_・・・

714 名前:デフォルトの名無しさん :2001/06/04(月) 01:41
COMポートが存在するかどうか調べるにはどうしたらいいでしょう?
全部開いて、開けたのが存在するデバイス?

715 名前:デフォルトの名無しさん :2001/06/04(月) 01:57
>>714
レジストリを当たれ。
HKEY_LOCALMACHINEの下のどっか。

716 名前:デフォルトの名無しさん :2001/06/04(月) 10:47
>>715
レジストリを見てみたんだけど、実際に今あるかどうかの
判断が分からなかったので、開けるかどうかで試してみました。

ところが、CreateFileで開いたのですが、COM10以降が開けないみたいです。
これって、どうしたら良いんでしょう?
カードH"は間違いなくCOM13で動いているのですが・・・

717 名前:デフォルトの名無しさん :2001/06/04(月) 12:54
\\.\COM10 とかそんな風に開け>>716

718 名前:714=716 :2001/06/04(月) 15:20
>>717
できました!さんきゅ〜です。

719 名前:デフォルトの名無しさん :2001/06/04(月) 15:40
CMapStringToObのオブジェクトサイズを知るにはどうしたらよいのでしょうか?
sizeofで得られるサイズは管理領域ですか?

720 名前:デフォルトの名無しさん :2001/06/04(月) 18:01
CAsyncSocket または CSocket をメインのダイアログとは違うスレッドで作成しようとすると。
Createで死んじゃいます。

詳しく書くと、メインのダイアログからCWinThreadから派生させたクラスを作り、
CreateThreadまたはAfxBeginThreadでメインとは違うスレッドを作成します。
そのスレッドからCSocketの親になるウインドウを作成します。
で、そのウインドウから CSocketを作成しcreateを実行すると死にます。
スレッドを実行させないと問題なく動作するのですが・・・・。

CAsyncSocket または CSocket が メインとは別スレッド上では動作しないなんて話はないと思うのですが・・・・

同様なことで詰まった方や、何かご存じの方がいらっしゃいましたらレスよろしくお願いします。

721 名前:デフォルトの名無しさん :2001/06/05(火) 01:08
わーいバグみっけヽ(´ー`)ノ
#include<vector>
#include<algorithm>
#include<string>
int main(){
std::vector<std::string> v;
std::find(v.begin(), v.end(), "");
return 0;
}

cl -GX -Ox -Ob2 bug.cpp
Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 12.00.8804 for 80x86
Copyright (C) Microsoft Corp 1984-1998. All rights reserved.

bug.cpp
bug.cpp(8) : fatal error C1001: 内部コンパイラ エラー
(;´Д`)

722 名前:720 :2001/06/05(火) 17:43
解決しました。ナレッジベースに載ってたし。
鬱だ。

723 名前:デフォルトの名無しさん :2001/06/07(木) 02:09
クリップボードが変更された時に反応させるにはどうしたらよいのでしょう?
幾つかページを見て試したけど意味不明で、できたソフトも死にまくり…

724 名前:デフォルトの名無しさん :2001/06/07(木) 02:58
>>721
cl.exe 13.00.9030(VC7 in .NETβ1) ならコンパイルできた。
まぁ、バグですな。

725 名前:デフォルトの名無しさん :2001/06/07(木) 10:01
がいしゅつかなぁ・・・・

ダイアログベースのアプリでどこにもフォーカスを当ててない状況で
リターンキーを押すとアプリが終了してしまいます。
これはなぜ?

726 名前:SAGE :2001/06/07(木) 10:15
>>723
SetClipboardViewer でウインドウを登録したら、
変更のたびに WM_DRAWCLIPBOARD が送られる。

>>725
コレかな?
http://piza.2ch.net/test/read.cgi?bbs=tech&key=989902845&st=85&to=89&nofirst=true

727 名前:725 :2001/06/07(木) 12:05
>>726
それだ、さんきゅ〜

728 名前:デフォルトの名無しさん :2001/06/08(金) 09:52
VC6.0のassertマクロですが
#define assert(exp) (void)( (exp) || (_assert(#exp, __FILE__, __LINE__), 0) )
これって思いっきりバグじゃないですか?
(exp) && (assert ...
こうならないといけないと思うのですが。
どっちにしろ、式が0でもassertしちゃうじゃないっすか、これだと

729 名前:デフォルトの名無しさん :2001/06/08(金) 10:10
#define assert(exp) ((exp)? (void)0 : _assert(#exp, __FILE__, __LINE__))


730 名前:728 :2001/06/08(金) 11:40
>>729
いや、それはわかりますが、
あえて論理演算でやろうとすると・・・ってことで。
あと、_assertと(void)0は逆ですよね

731 名前:デフォルトの名無しさん :2001/06/08(金) 12:16
>>728
「バグじゃないですか?」とか言う前に、自分で何を確かめたのか言ってみれ。
確かめてないでしょ

732 名前:728 :2001/06/08(金) 12:20
>>731
たしかめたよー
おめーこそちゃんとたしかめろよー

733 名前:デフォルトの名無しさん :2001/06/08(金) 12:22
>>731
ふむ。では、「なにを」「どうやって」たしかめて、728の結論(=assertマクロが
仕様を満たしていない)に達したのかプレゼンしておくれ。
10行くらいのテストプログラムを書いてくれればいいんじゃないかな。

734 名前:デフォルトの名無しさん :2001/06/08(金) 12:47
>>733
教えて君発見!!

735 名前:デフォルトの名無しさん :2001/06/08(金) 13:12
>>728
ぜんぜんバグって無いよ。
assert()の仕様と式の評価規則をよく考えてごらん。

736 名前:728 :2001/06/08(金) 14:04
>>735
バグってるよー
たしかめてみそ

737 名前:デフォルトの名無しさん :2001/06/08(金) 14:44
>>376
---コード1---
#include "assert.h"
int main(int argc, char* argv[])
{
    assert(!0);
    return 0;
}
---コード2---
#include "assert.h"
int main(int argc, char* argv[])
{
    assert(0);
    return 0;
}

---結果---
1:何も表示されない
2:アサート発生

738 名前:737 :2001/06/08(金) 14:46
×376
○736
誤爆失礼。

>>736
確かめてみたけどバグってないよ。

739 名前:デフォルトの名無しさん :2001/06/08(金) 15:40
普通は「バグってるぞー」と言うやつが
コードを示すんだけどな。
バグって無いことを証明することは不可能なんだから。

740 名前:7誌のプログラマー :2001/06/08(金) 15:47
VisualC++6.0でインターネット上からのデータを取得するにはどうすればよいのでしょうか?
HTMLファイルなど・・・。

741 名前:デフォルトの名無しさん :2001/06/08(金) 15:50
728は氏んだか?
恥かいたからって小学校に乱入すんなよ。

742 名前:デフォルトの名無しさん :2001/06/08(金) 16:05
>>740
ソケット使えば?

743 名前:デフォルトの名無しさん :2001/06/08(金) 16:10
質問です。
クラスのメソッドとして用意したウィンドウプロシージャを
lpfnWndProcに設定する際のコードは
どのように書けばいいのでしょうか?

このメソッドを、
LRESULT CALLBACK Foo::WinProc(HWND hWnd, UINT iMsg, WPARAM wParam, LPARAM lParam);

Fooコンストラクタの中で、
こう設定するとき、なぜか型が合わなくてエラーになってしまう
WNDCLASSEX klass;
klass.lpfnWndProc = (WNDPROC)WinProc;

744 名前:デフォルトの名無しさん :2001/06/08(金) 16:10
>>728
いいことを教えてやろう。
次のコードで、foo()の戻り値が0以外だと、bar()は呼ばれないのだ。

int main()
{
    foo() || bar();
    return 0;
}

745 名前:デフォルトの名無しさん :2001/06/08(金) 16:15
>>743
どうしてもクラスのメソッドにしたかったら、staticメンバにしろ。
class Foo{
public:
    static LRESULT CALLBACK WinProc(...
};

746 名前:743 :2001/06/08(金) 16:35
>>745
ありがとう。staticにしてみたらエラーが出なくなりました。

が、
'Foo::m_bar': スタティックメンバ関数内の不正なデータメンバへの参照です
というエラーが沢山出てきて鬱だ。

普通、ウィンドウプロシージャはクラスの
メソッドにしないほうがいいのでしょうか?

747 名前:デフォルトの名無しさん :2001/06/08(金) 16:40
>>746
もちろんstaticメンバからのメンバ参照はできないので、この場合だと
コンストラクタでウィンドウプロシージャを設定する際に何らかの方法でthis
ポインタを渡す必要がある。
クラスメンバにするかどうかは個人的にはどうでもいいと思うけど、
ウィンドウプロシージャからメンバをアクセスするならやっぱりthisポインタ
は渡さなきゃいけないんで、手間は同じだと思うよ。

748 名前:デフォルトの名無しさん :2001/06/08(金) 16:49
>>728
18分後のレスの時点で気付いていれば・・・
今ごろ全assertの評価式を置換中か(w

>>744
>次のコードで、foo()の戻り値が0以外だと、bar()は呼ばれないのだ。

× 0以外
○ 0でなければ(非0であれば)

細かい事だが

749 名前:740 :2001/06/08(金) 16:50
>>742
使い方を教えてください

750 名前:728 != (732 == 736) :2001/06/08(金) 16:56
激しく勘違いしてました。
assertする条件逆でした。

みなさん、親切にどうもでした。


■過去ログ置き場に戻る■ 1- 前250 次250 最新50
DAT2HTML 0.33f Converted.