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


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

VisualC++相談室 4
751 名前:デフォルトの名無しさん :01/11/20 06:09
>>747
APIヘルプには生APIで載っているよ。


752 名前:デフォルトの名無しさん :01/11/20 07:17
ウィンドウプログラムが終了する場合必ずWM_DESTROYが送られますか?
強制終了させたりページ違反で落としてみましたがどうやらWM_DESTROYが送られてから終了しているようです。
「ウィンドウズの終了」を行った場合は送られないらしいですが、それ以外の場合(単一のプログラムが何らかの理由で終了する場合)は必ずWM_DESTROYが送られてくると思っていいですか?

753 名前:デフォルトの名無しさん :01/11/20 07:25
>>752
while(GetMessage(&msg, NULL, 0, 0)){
TranslateMessage(&msg);
DispatchMessage(&msg);
if(なんか) break;
}
こんな場合でも送られる?

754 名前:デフォルトの名無しさん :01/11/20 07:38
>>752
たんに終了時に必ず実行させたい処理があるだけなら、__finallyを使うとえぇよ。

755 名前:デフォルトの名無しさん :01/11/20 08:57
>>750
ハンドルを CloseHandle するまでは大丈夫です

756 名前:デフォルトの名無しさん :01/11/20 12:01
5つの整数を入力して、例えば、2.4.2.3.1の場合
 *
 * *
****
*****
のようの表示するように書くプログラミングの問題がわかりません。
これの横バージョンはできたのですが・・・
配列を使ってやるらしいですが考えてもわからないので、返答マジで頼みます。

757 名前:  :01/11/20 12:16
>>756
左上が原点になるからややこしく感じるのだろう。
配列の中から最大値を見つけてY軸の上限を算出。
その最大値を初期値とする変数をデクリメントさせて、
描画の条件とする。

758 名前:デフォルトの名無しさん :01/11/20 12:21
>>756
その場合に限って言えば、5×4の配列を仮想VRAMとして値を設定したあと
1行ずつスキャンして表示。一般化は自分で考えれ。

759 名前:デフォルトの名無しさん :01/11/20 12:45
ずれてるのによく分かるな

760 名前:デフォルトの名無しさん :01/11/20 17:24
質問です。

あるアドレスの領域を、参照したり書き込んだりしているコードを
ピックアップすることは可能でしょうか?
また、VCでは出来なくても何かツールがあればできそうでしょうか?

教えてください。

761 名前:デフォルトの名無しさん :01/11/20 18:15
>>760
windbg.exe

762 名前:デフォルトの名無しさん :01/11/20 18:15
>>760
デバッガで停止条件に特定アドレスの変更とか設定できたと思ったが
そういう事をいってるのか?
HeapWalkerみたいなことをいってるのか?

763 名前:デフォルトの名無しさん :01/11/20 18:17
>>761
検索が完了しましたが、何も見つかりませんでした。

764 名前:デフォルトの名無しさん :01/11/20 18:23
>>762
そういうことをいってます。VCでできるのでしょうか・・・?

765 名前:デフォルトの名無しさん :01/11/20 18:23
>>763
SDKツールをすべてインストールしなさい。

766 名前:デフォルトの名無しさん :01/11/20 18:51
>>764 できる。
VCのヘルプ見れ

767 名前:デフォルトの名無しさん :01/11/20 22:07
windows.hって
#include <windef.h>
#include <winbase.h>
#include <wingdi.h>
#include <winuser.h>
・・・
ってな感じで、他のヘッダーインクルードしまくってるけど
どういう目的で使えばいいの

よく使うヘッダー盛り合わせみたいに、面倒な場合に使うの?
これインクルードすると、コンパイル時間が長くなったりする?

768 名前:デフォルトの名無しさん :01/11/20 22:19
普通はwindows.hだけでよい。
足りないと言われたらはじめて追加のインクルードファイルを取り込みなさい。

蛇足だけどwindowsx.hはいれとくと便利だよ。

769 名前:デフォルトの名無しさん :01/11/20 23:57
>>767
<windef.h> とかは個別に include せず <windows.h> だけ読み込むのが普通。読み込むヘッダを
減らしたい場合には WIN32_LEAN_AND_MEAN を定義しておく。

> これインクルードすると、コンパイル時間が長くなったりする?
<windows.h> はプリコンパイルしておく (StdAfx.h に書いておく) のがお勧め。

770 名前:デフォルトの名無しさん :01/11/21 01:14
>>768
windowsx.hは便利だけど、中身見ないと使い方が分からないよね。

771 名前:デフォルトの名無しさん :01/11/21 02:37
中身見て覚えろ

772 名前:デフォルトの名無しさん :01/11/21 02:44
>>768
C++ の場合には WTL いれて <atlmisc.h> とかも便利。

773 名前:デフォルトの名無しさん :01/11/21 14:21
Windowsのカレントディレクトリは、プロセスごとに持っているものでしょうか?
アプリケーション実行中に、他のアプリケーションがカレントディレクトリを変更しても、
既に起動してあるプロセスへは影響ありませんか?

774 名前:デフォルトの名無しさん :01/11/21 14:22
age

775 名前:デフォルトの名無しさん :01/11/21 14:38
>>773
カレントディレクトリは、プロセスごとに別々だと思う。
というか、実験すればいいじゃん。

776 名前:デフォルトの名無しさん :01/11/21 18:17
>>773
もちろんカレントディレクトリは別々だけども、カレントディレクトリ=EXEのある
ディレクトリという仮定は成り立たないから、iniファイルなんかはフルパスで扱う
のがWindowsの常識。

777 名前:デフォルトの名無しさん :01/11/21 18:35
実験してもそれがWin32の仕様として正しいのか判断できないじゃん。
9x系でMapViewOfFile()が返してくるポインタがプロセス共通だということが
実験で判っても間違った使い方だし。

778 名前:デフォルトの名無しさん :01/11/21 19:11
VisualC++ver6.0ではgraph.hは使えないのですか?

779 名前:デフォルトの名無しさん :01/11/21 19:26
ショートカットで実行したらカレントディレクトリはショートカットがある
場所だよ。それにCreateProcessでも指定できるし

780 名前:773 :01/11/21 19:33
ありがとうございました。
起動時のカレントディレクトリは問題ありません。

ファイラを作っているのですが、ディレクトリエントリ一覧を得るのに、
絶対パスで指定しているのではなく、カレントから一覧を得る仕様にするつもりだったので、
この仕様だと、更新したときに他のアプリによってカレントを変更されると問題があるので、
不安だったから質問しました。

追加で質問ですが、
Dドライブで作業している間は、Cドライブのカレントも保存されているのでしょうか?
実験した限りは問題なさそうですが、心配なので。
自分で保存しておけばいいのかもしれないですが、
なるべくならデフォルトの動作に従わせたいので。

781 名前:デフォルトの名無しさん :01/11/21 19:43
>>779
おいおい、ショートカットに実行するディレクトリの指定があるだろうよ...

782 名前:デフォルトの名無しさん :01/11/21 19:43
>>780
それは大丈夫。

783 名前:デフォルトの名無しさん :01/11/21 19:45
>>777
正確さを求めるなら、ここで聞くのも実験するのも大差ないよ。
実際、「カレントディレクトリがプロセスごとに違う」って、
根拠を示してる人は、いないじゃん。

カレントディレクトリとかフルパスとかの概念を正確に
把握してないような人も回答してるし。

784 名前:デフォルトの名無しさん :01/11/21 19:49
>>780
MS-DOS ではカレントディレクトリはドライブごとにあったけど、
NT では全体でひとつだったと思われ。

だから NT と Win9x/ME で違うんじゃないかな?

785 名前:デフォルトの名無しさん :01/11/21 19:55
>>784
うそつくなよ。

786 名前:デフォルトの名無しさん :01/11/21 20:11
>>783
MSDNのGetCurrentDirectoryにプロセスのカレントディレクトリを返すって書いてあるだろ。
NTの解説書かナニカに、プロセスの持つ情報としてカレントディレクトリも入ってたな。

特にスレッドの〜って、書いてないんだし、プロセスのでいいんでないの?

787 名前:デフォルトの名無しさん :01/11/21 23:31
>>783
> 正確さを求めるなら、ここで聞くのも実験するのも大差ないよ。
そのためのマニュアルなんだけどね。
マニュアルも間違ってたりするのが鬱。

788 名前:某マイナーファイラ作者 :01/11/21 23:45
>>780
> ファイラを作っているのですが、ディレクトリエントリ一覧を得るのに、
ライバル出現の予感。

> Dドライブで作業している間は、Cドライブのカレントも保存されているのでしょうか?
_chdir()で変更してれば大丈夫。
NT系ドライブごとに覚えていないので、環境変数に各ドライブのカレントディレクトリを保持することで再現してる。
カレントディレクトリが \\hoge\hage\voke なんてこともあるしからドライブごとに気にする必要は感じないけど。

789 名前:776 :01/11/22 01:55
>>780
ついでに言うと、コモンダイアログなんか使うと勝手にカレントディレクトリを
変えてくれるので注意。

790 名前:776 :01/11/22 02:43
さらに言うと、意図的にやれば他のプロセスのカレントディレクトリを変えることも
できるけど、そんなことまで気にする必要はないよね。

あと、パス解析はできるだけ自前のルーチンよりも、標準ライブラリとかAPIを使っ
た方がいいよ。フォルダ名に日本語が使えない英語ソフトを使ってムカついた事が
あるなら分かるかと。

791 名前:デフォルトの名無しさん :01/11/22 09:35
現在VC++6にて、常駐型のユーティリティーを作成していますが、
もともとウィンドウを持たないプログラムでした。
ところが、WM_DEVICECHANGEを受け取る必要がでてきまして、これが
上手く受け取れませんでした。
いろいろ調べてみると、どうやらウィンドウだと簡単に受け取れるよ
うなので、試してみるとその通りでした。

そこで質問なのですが、このような場合、
1.表示はさせないウィンドウを作成しそこでメッセージを受け取る
2.他で動いてるウィンドウを適当に一つ狙って、そこにシステムフ
 ックをかける
以上二つの方法を考えたのですが、どちらがよりスマートなのでしょ
うか?

もし他に良い方法があれば、ぜひご教授ください。

792 名前:デフォルトの名無しさん :01/11/22 09:36
DOS窓のコンソールプログラムで
マウスの右クリックで処理を中断したいのですが
どうしたらよいでしょうか?
もしくはコンテキストメニュー表示するにはどうしたらよいでしょうか?
お願いします

793 名前:デフォルトの名無しさん :01/11/22 09:47
>>792

DOS窓でマウスを使うつもりなんだ・・・・

794 名前:デフォルトの名無しさん :01/11/22 09:48
>>792

printf("Ctrl+Cを押せ\n");

じゃだめなの?

795 名前:デフォルトの名無しさん :01/11/22 10:26
>>791

1.は常識として使われてます。

796 名前:デフォルトの名無しさん :01/11/22 10:33
DOS窓でpopd,pushdもどきをやろうとして
_system("cd foo");
とかやってもプログラムが終了すると、もとのディレクトリ
に戻っちゃうんですが、カレントディレクトリを移動して
そのままにするのはどうしたらいいんですか?

797 名前:デフォルトの名無しさん :01/11/22 10:37
>>796

その問題とは関係ないけど、
_system()じゃなくてsystem()にしろよ。

798 名前:791 :01/11/22 10:59
>>795

ではそれでいきます。
これで安心して書けそうです。
ありがとうございました。

799 名前:デフォルトの名無しさん :01/11/22 11:02
>>796

CDとか一部のDOS内部コマンドはプログラムの方でカバーすべし。
CGIでshell作ったとき俺はそうした。

800 名前:  :01/11/22 11:07
>>793

mouse.comとかまだあるんかいな?
なければドライバからコーディングし直し。
あればint86()の使い方くらいは習得してね。
コンテキストは自前で描画。
DOS APIはGUIなんぞ考慮していない。

801 名前:デフォルトの名無しさん :01/11/22 11:20
DOS時代のBorlandのコンパイラは、キャラクタベースで
ウインドウを扱うライブラリがついてたんだけどね。
もう手に入らないかな?

802 名前:796 :01/11/22 11:49
>>799
shell作って内部で完結しろってこと?
ぢつはそれも考えてたんだけど、ヘタレのオイラには
ハードル高すぎ。
nyadosってDOS窓用のシェルがtcshライクで気に入って
使わせてもらってるんだが、pushd, popdがあれば
より便利だろうと思って自作しようとしたのだが。
ソースも付いてるんで改造しようとも思ったのだが
TurboCの独自クラスを使ってるのでVC++,GCCやBorlandC++で
はコンパイルできないしで、どうしようかと。

ちなみに作ろうとしているpushd, popdはテンポラリファイルに
ディレクトリの絶対パスを記録しておくという簡易なものです。

803 名前:796 :01/11/22 11:52
検索してたらこういうのがあったよ

「DOSコールでディレクトリの移動を可能にするプログラム」
http://kuwa.omosiro.com/KGARC2/kgarc.html

804 名前:デフォルトの名無しさん :01/11/22 12:25
>>802
それなら、本物の tcsh 使えば良いのでは? Win32 native, Cygwin 両方あるぞ (native はヒープ管理
まわりでクリティカルなバグがあるから、あまり勧めんが)。

805 名前:796 :01/11/22 12:37
>>804
ありがとう(^^)/
でもね、でもね、それも知ってはいるし(一時期使っても板)のですが
C言語学習の一環として自分で作ることにしたのです。
せっかく教えてくれたのにスマソ〜。

system関数もカレントディレクトリを変更する関数_chgdir
(だったかな?今、別のマシンでアクセスしてて手元にソースが
ないんで正確な関数名は書けないんです)でも
プログラムが動作中は変更できるんですが、終了後には
もとのディレクトリに戻っちゃうんですよねえ。これは
DOSがこういう仕様とあきらめた方がいいかも新米。
簡単にできるなら、それこそ「nyados」でもpushd,popdを
とっくの昔に実装しているだろうし。

#今ネットカフェなんで803のリンク先の圧縮ファイルが
解凍できないんでやんの(自嘲。

806 名前:  :01/11/22 12:51
>>805
仕様だな。
そういえばDOS使ってて終了時にディレクトリ移動してました♪とかはなかった。

こんなバッチファイルは?

popd.bat
@echo off
pop.exe
popdtmp.bat
del popdtmp.bat

で、pop.exeでpoptmp.batにcdコマンドを書けば・・・。

807 名前:796 :01/11/22 13:03
>>806
おお!そんな方法があったとわ!
ありがとうございます。誠にありがとうございます。

808 名前:某マイナーファイラ作者 :01/11/22 13:33
>>806
> そういえばDOS使ってて終了時にディレクトリ移動してました♪とかはなかった。
FDとかって終了時にディレクトリ変えてくれるじゃん。
Win32だとできないのかな。

809 名前:796 :01/11/22 13:40
>>808
自分もDOS時代に使っていたFDのその記憶があったんで
WinのDOS窓でも出来ないかなあ?と、少しあがいてみました。

810 名前:デフォルトの名無しさん :01/11/22 15:33
クラスビューに飛ぶショートカットキーがあれば教えてください。

811 名前:デフォルトの名無しさん :01/11/22 15:41
キーボードマップでActiveWorkspaceWindowを探して見ろ。

812 名前:ふしあなさん :01/11/22 15:42
中が塗りつぶされていない円を描画したいのですが、
標準でそんな関数ありますか?

813 名前:デフォルトの名無しさん :01/11/22 15:46
>>812
SelectObject(hdc, GetStockObject(NULL_BRUSH) )
してから円を書いてみろ。

814 名前:デフォルトの名無しさん :01/11/22 15:46
標準のブラウザ&メーラーを取得するにはどうしたらいいですか?
レジストリを使う気がしますがどのキーを調べたらいいですか?

815 名前:デフォルトの名無しさん :01/11/22 15:46
>>811
どこかの親切な人、ありがとう。

816 名前:デフォルトの名無しさん :01/11/22 15:54
インテリセンスの入力候補のリストって編集できないんですか?
::で出てくるグローバルなやつ。

817 名前:デフォルトの名無しさん :01/11/22 16:19
>>816
ヘッダファイル。

818 名前:816 :01/11/22 16:51
>817
はぁ、そういうわけですか。そりゃそうですな。

例えば、FillMemoryとかが、::で出てこなくて、おかしいなと思ったんですが、
ヘッダを調べると、なんとなく訳が分かりました。

819 名前:デフォルトの名無しさん :01/11/22 16:52
補足情報

以下の記事では、特に MFC アプリケーションを中心として、メモリ リークのデバッグについて論じています。

1997 年 11 月 Pinnacle Publishing 発行、Mike Blasczak 著、『Visual C++ Developer』の「Stunt Debugging: Diagnosing Memory Leaks」
以下の書籍はメモリ リークのデバッグにはまったく関係ありませんが、ホワイトペーパーを書いていて、昔の中国の哲学者の言葉を引用したいと思っている読者には役に立つかもしれません。

孫子著『兵法』、取扱出版社多数。

microsoftの正規のVC++ページなんだけど、この「兵法」
の紹介って、なにかの凄いギャグなのかな・・・・

820 名前:デフォルトの名無しさん :01/11/22 17:55
>>812
Arc

821 名前:デフォルトの名無しさん :01/11/22 18:17
またまた質問なんですけど、DLLでシステムフックをかけてる場合、
メインのプログラムが終了する時にフックを外しに行かなければだめな
ものなのでしょうか?(Winプログラムのお作法的に)
ちなみに、メイン実行中はずっとかけっぱなしにする必要があるのです。

822 名前:デフォルトの名無しさん :01/11/22 21:13
>>792
DOS窓って、DOS用アプリケーションをWinで動かしたいのか、それともただの
Win32コンソールアプリケーションなのかによって全然違うよ。
後者なら、普通のGUIアプリケーションでできる事は何でもできるけど。

823 名前:デフォルトの名無しさん :01/11/23 06:54
ファイルのアイコンを取得するには SHGetFileInfo で出来ますが
拡張子に関連付けられているアイコンはどうやって取得したらいいですか?
具体的なファイル名 c:\readme.txt のようなものは無く単に txt といった拡張子のみでアイコンを取得したいです。

824 名前:デフォルトの名無しさん :01/11/23 06:54
FILETIME や SYSTEMTIME は何年まで正常に扱えますか?
FILETIME は64ビットで1601年から始まるらしいですけど。

825 名前:デフォルトの名無しさん :01/11/23 06:56
リストビューにImageListをセットするとリストビューが破棄されるときにImageListが破棄されてしまいます。
リストビューが破棄されてもImageListが有効な状態にするにはどうしたらいいですか?

826 名前:デフォルトの名無しさん :01/11/23 07:33
>>824
http://www.matsusaka-u.ac.jp/~okumura/linux/y2038.html

827 名前:デフォルトの名無しさん :01/11/23 07:35
>>825
ImageListを切り離してからリストビューを破棄すれば良いのでは?

828 名前:デフォルトの名無しさん :01/11/23 09:45
>>821
「グローバルフック」ですね。
フックをかけたら、あとでちゃんと外しておかないと、
リソースを漏らしちゃう結果になると思います。

ちなみにグローバルフックのかけっぱなしは、あまり感心しません。
よくシステムを不安定にさせる原因になりますから。

829 名前:デフォルトの名無しさん :01/11/23 11:23
>>824
計算してみればすぐわかる
定義は1601年1月1日からの100ナノ秒毎のカウント

830 名前:825 :01/11/23 11:35
リソースエディタで「共有イメージリスト」ってのをチェックしたら破棄されないようになりました。

831 名前:デフォルトの名無しさん :01/11/23 11:59
Cで20桁くらいの整数の計算をしたいのですが
できますか?

832 名前:デフォルトの名無しさん :01/11/23 12:00
#include <Ruby.h>

833 名前:デフォルトの名無しさん :01/11/23 14:02
>>823
レジストリ

834 名前:デフォルトの名無しさん :01/11/23 14:24
>>831
こういうのって出来ないわけはないでしょ。
簡単にやるための方法なら、標準的な方法はない。
環境が何か知らないが多倍長演算のライブラリを探せばいいと思うよ。

835 名前:デフォルトの名無しさん :01/11/23 14:38
>>831
VCなら、__int64 をMSDNで調べてみそ。
一般的なANSI Cならlong long。

836 名前::01/11/23 21:06
MFCなんですが、スケルトン作って実行したときWindowの上のバーにでる文字ってありますよね?
あれ変えたいんですが・・・

project名-無題

のようになってますね、、、はじめ

837 名前:デフォルトの名無しさん :01/11/23 21:15
>>836
CDocument::SetTitle

838 名前::01/11/23 21:37
>>837
あ、ありがとうございます!!できました。

839 名前:デフォルトの名無しさん :01/11/23 22:45
指定された出力ポートにデータを送るのに
_outp、_outpw、_outpdのルーチンがありますが
これはWin9x系のみ動作するみたいですけど
NT系はだめみたいなので、NT系で出力ポートに
データを送る方法はないでしょうか?

840 名前:某マイナーファイラ作者 :01/11/23 23:28
>>839
デバイスドライバを作る。

841 名前:デフォルトの名無しさん :01/11/24 15:44
publicメソッドをinline指定すると
「外部参照 1 が未解決です。」
といわれてしまいます。
privateメソッドや、ヘッダに実装を書けばOKなのですが、
どうしたらpublicメソッドをinline指定しつつビルドできるのでしょうか?

842 名前:デフォルトの名無しさん :01/11/24 16:08
class定義の中にpublicメソッドの定義も入れとけ。

843 名前:デフォルトの名無しさん :01/11/24 16:46
呼び出すところから実装が見えれば、どこに書いてもいいよ。

844 名前:デフォルトの名無しさん :01/11/24 16:48
inline指定が有れば、一緒のヘッダか .inl にでもいれとけばよいか。
hmm

845 名前:デフォルトの名無しさん :01/11/24 18:55
VC++で例外ハンドリングをしたいのですが
「warning C4290: C++ の例外の指定は無視されます。」
という警告がコンパイル時にでます。

ソースコードでは
コンストラクタ() throw (Exception){
if(1)throw new Exception
}
とやっているのですが
コンストラクタは例外を投げられないのでしょうか?

846 名前:841 :01/11/24 19:22
みなさん、ありがとうです。
>>844
それが一番スマートですかね。
ちょっとくらいなら、ヘッダに書いても良いと思うのですが、
大量のコードを記述したくないな、と思ったので。

847 名前:デフォルトの名無しさん :01/11/24 19:46
>>845
例外指定を外せばいい

constructor() {
if(1) throw new Exception;
}

848 名前:  :01/11/24 20:55
日本語のwindowsのメニューのフォントは
MS ゴシックでしょうか?
標準の設定時のフォントの大きさは12ポイントぐらい
ですか?

849 名前:デフォルトの名無しさん :01/11/24 21:07
>>848
Win95/98/NTは「MS Pゴシック」
Win98SE/Me/2000は「MS UI Gothic」
の9ポイントだと思われ(標準では)

850 名前:デフォルトの名無しさん :01/11/24 21:15
>>849
ってゆーか、
要するにどのバージョンの IE がインストールされてるか…じゃなかったっけ?

851 名前:  :01/11/24 21:36
>>849
ありがとうございます。
9ポイントですか、意外と小さいですね。
>>850
IEがフォントを換えてしまうんですか?

852 名前:デフォルトの名無しさん :01/11/24 21:38
>>847
*付け忘れてました

853 名前:デフォルトの名無しさん :01/11/24 21:54
>>848
標準に頼ったコーディングするな。

854 名前:デフォルトの名無しさん :01/11/24 22:04
>>851
画面のプロパティで自由に変えれます。

855 名前:デフォルトの名無しさん :01/11/24 22:06
>>845

> コンストラクタ() throw (Exception){

のような、送出する例外の指定は対応してないから無視しますよ
っていうメッセージです。
何を指定してもどんな例外でも投げれます。

856 名前:初心者一郎 :01/11/24 22:58
MFCのClassWizardのメッセージ一覧に出てこないメッセージを処理する場合
、OnXXXX()内で継承元のOnXXXX()を呼ぶ必要があるかどうか、又自分の書い
たロジックの前で呼ぶのか、後で呼ぶのかは、何で判断すればよろしいのでし
ょうか?
  具体的には
・OnTimerの場合
void CMyDialog::OnTimer(UINT nIDEvent)
{
// TODO: この位置にメッセージ ハンドラ用・・・・
CDialog::OnTimer(nIDEvent);
}
・OnDestroyの場合
void CMyDialog::OnDestroy()
{
CDialog::OnDestroy();
// TODO: この位置にメッセージ ハンドラ用・・・・
}
上記の場合は MFCが自動的に生成する為、何も考えなくて良いが

例えば OnNcHitTestの場合
UINT CMyDialog::OnNcHitTest(CPoint point)
{
自分のロジックの場所?? <--ここに書く?
CMyDialog::OnNcHitTest( point );<--必要、不要 ?
自分のロジックの場所?? <--それともここ?

return xxxx;
}
長くなりましたが宜しくお願い致します。

857 名前:初心者一郎 :01/11/24 23:27
すいません、一番下は以下の間違いです↓
UINT CMyDialog::OnNcHitTest(CPoint point)
{
自分のロジックの場所?? <--ここに書く?
CDialog::OnNcHitTest( point );<--必要、不要 ?
自分のロジックの場所?? <--それともここ?

return xxxx;
}

858 名前:デフォルトの名無しさん :01/11/24 23:28
ファイル名 "00.wav"

簡単に音を鳴らしたいんですけどなんかいいのないでしょうか?

859 名前:デフォルトの名無しさん :01/11/24 23:33
PlaySound("00.wav",NULL,SND_FILENAME);

860 名前:デフォルトの名無しさん :01/11/24 23:34
>>858 mci

861 名前:デフォルトの名無しさん :01/11/24 23:37
>>856
基本的にはどっちでもいい気がする。
一部のメッセージだけ、デフォルトの処理内容を考えてみて
先にどっちを処理した方がいいのか自分で判断。

ヒットテストの場合は、渡された位置の HTxxx を判定するわけだから、
自分で判定できる位置では自分で勝手に判定して、CDialog::OnNcHitTest は呼ぶ必要ない。
自分で判定できない位置、つまりデフォルトの判定処理をさせたい場合は
CDialog::OnNcHitTest を呼んで、その戻り値をそのまま return すれば良い。

862 名前:初心者一郎 :01/11/25 00:05
>>861
なるほど、つまり継承元のロジックを確認して
判断すれば良いと言う事でしょうか?

・OnNcHitTestの場合
_AFXWIN_INLINE UINT CWnd::OnNcHitTest(CPoint)
{ return (UINT)Default(); }
と言う事は呼ぶ必要がない、と判断する。

では OnTimer()の場合、MFCが自動的に
CDialog::OnTimer(nIDEvent);を記述しますが、
特に呼ぶ必要がない、と言う事でしょうか?
_AFXWIN_INLINE void CWnd::OnTimer(UINT)
{ Default(); }
同じく特別な処理をしていないよです。

863 名前:デフォルトの名無しさん :01/11/25 04:47
コンボボックスのプルダウン部分のようなウィンドウはどうやって作ればいいですか?

1.ウィンドウがアクティブにならない。
2.それでいてスクロールバーをいじったり出来る。
3.ウィンドウ以外の領域をクリックすると消える。
4.親ウィンドウからはみ出して表示することも可能

最大の難関は1です。
ポップアップウィンドウで2.3.4は実現できるのですがウィンドウがアクティブになってしまいます。
どうしたらいいですか?

864 名前:デフォルトの名無しさん :01/11/25 07:58
ちょっと急ぎで教えて欲しいのですが、
VisualC++ で 64bit サイズの int 型は定義できるのでしょうか?
ついでに C++ , C 共に可能かどうが分かればありがたいです。

865 名前:デフォルトの名無しさん :01/11/25 08:40
>>862
いや、実際に処理内容を覗くのではなくて(どうせ見えないし)、
デフォルトでどういう処理が行われているのか想像して。

具体的に OnNcHitTest だと、
point がタイトルバーの位置のときは HTCAPTION
point がクライアント領域のときは HTCLIENT
point が最小化ボタンの位置のときは HTREDUCE
というふうに、位置に応じて値が返ってくるはずだ。

このデフォルトの処理を、やらせたいかどうか。で判断。

866 名前:デフォルトの名無しさん :01/11/25 08:41
>>863
ShowWindow(hwnd, SW_SHOWNOACTIVE);

867 名前:デフォルトの名無しさん :01/11/25 08:43
>>864
VC では __int64

C標準では long long int (VC未対応)

C++標準には無い。

868 名前:デフォルトの名無しさん :01/11/25 08:48
>>867
速攻のお返事、ありがとう御座います。
ところで __int64 は C , C++ 両方に使えますでしょうか?
#使えれば、お昼に買いにいける・・・

869 名前:初心者一郎 :01/11/25 09:15
>>865
ああっ、そうゆうことですか!勉強になりま
した。861さん,865さん(同じ方かも)、夜を
またいでの解答ありがとうございました。

870 名前:デフォルトの名無しさん :01/11/25 09:36
>>868
C でも C++ でもだいじょーぶです。
VC6で確認してみました(VC5以下は知らん)。

#買いに行くって VC を・・・?

871 名前:デフォルトの名無しさん :01/11/25 10:42
>>870
どうも有難う御座います、大変助かりました。
#gcc からの移植作業やってまして、
#ボーランドの古いコンパイラだと、できなくて往生してたんです。

872 名前:デフォルトの名無しさん :01/11/25 10:50
Borland コンパイラの最新のはフリーでダウンロードできますが・・・

873 名前:デフォルトの名無しさん :01/11/25 12:52
って言うかそれは,
クラス作って演算子をオーバーロードするだけの話では?
>>864

874 名前:デフォルトの名無しさん :01/11/25 14:31
vcだと
cout<<ios::hex<<int(a);
ってやると上手くいかない・・・
cout<<hex<<int(a);
だと上手くいく
なぜ??

875 名前:デフォルトの名無しさん :01/11/25 14:37
>>872
ついでに、ダウンロードできる Borland C++ Compiler でも __int64, unsigned __int64 は使えますね。
(仕事でプログラム書くなら、デバッガ機能が充実した VC6 買っても良いと思うけど)

876 名前:デフォルトの名無しさん :01/11/25 20:37
かなりどうしようもない質問ですが、、、
VC買ってついて来たMSDNのライブラリCDですが、それの新しいものはどうやって手に入れるんですか?
というかバージョンアップしてる?98年かな?大分前買ったものだから、英語のままとか載ってなかったりするので
ちょっと困る。

877 名前:デフォルトの名無しさん :01/11/26 02:22
MoveMemoryを使うほうがいいのかな
forでループしてコピーするよりも

878 名前:デフォルトの名無しさん :01/11/26 02:27
>>877

なぜmemmove()にしないんだろう・・・
というかコピーするならmemcpy()にしないか?
重なるのが嫌とか?

879 名前:デフォルトの名無しさん :01/11/26 02:34
>>876
MSDNの新しいやつは、MSと契約しないと手に入らないよ。
契約料は、何万もすると思う。たしか。

880 名前:879 :01/11/26 02:36
そういえばMSのサイトでも見れるやつって、CD-ROMで配布されてる
のと、内容違うのかな?
同じだったら、そっちでもいいけど…。

881 名前:デフォルトの名無しさん :01/11/26 02:42
そこそこのネット帯域のある環境なら、MSDN Onlineって手もある。
http://www.microsoft.com/japan/developer/library/default.asp

882 名前:デフォルトの名無しさん :01/11/26 02:55
最近 VC6を買ったが、1年間無料 MSDNライブラリ サブスクリプション
なるものがついてた。無料で、最新版が手に入るよ。

MSDN OnlineもCDと大体同じっぽいけど、構造体の解説とかが無かったり、
リンクが省かれていたりで、突っ込んで調べようとすると、結構辛い。

883 名前:デフォルトの名無しさん :01/11/26 03:11
MSDN Online Jananは、日本語のドキュメントしかない。
ここで見つからなかったら、
http://msdn.microsoft.com/library/

884 名前:デフォルトの名無しさん :01/11/26 04:43
MSDNライブラリ サブスクリプションの無料クーポン使おうと思ってて
箱にしまっておいたら気付いたときには期限切れてた(笑

英語でよければ、Platform SDKの最新版をDLすればSDKの説明は読めるよ。
Onlineのは正直言って使いにくい。

885 名前:デフォルトの名無しさん :01/11/26 07:34
ぐ、、、MSめ、、、、、ライブラリページ検索使えないし
MXで調べてみても、転がってないし。
困った(;´Д`)

886 名前:デフォルトの名無しさん :01/11/26 08:32
>877
転送領域が重ならない限りmemcpyが速度的にベスト
memmoveはインライン展開最適化の対象になってないので常に関数呼び出しになる
(memmoveのソースを見たがごく普通のコードなのでforと大して変わらないはず)
memcpyはリリースビルドではインライン展開最適化の対象になってて
rep movsd+rep movsbにその場で展開されるので速度的に有利
(ちなみにmemsetもrep stosdに展開される)
まぁ特別問題が無いならばVCではmemcpy使えってことだ

887 名前:デフォルトの名無しさん :01/11/26 09:03
>>885
ライブラリページの説明をちゃんと読んだ?


MSDN ライブラリの操作方法
MSDN ライブラリから目的の情報を取得する以下のような方法があります。

左側の目次を使用して、MSDN ライブラリをブラウズする。
MSDN Online サイトの[このサイトの検索] を使用して、特定のキーワードから検索を行う。

888 名前:877 :01/11/26 12:38
貴重な意見ありがとうございます
かなり参考になりました

889 名前:デフォルトの名無しさん :01/11/26 12:57
オブジェクトへのポインタの配列って動的に作れるのでしょうか?
Object** obj=new....
みたいにしたいのですけど

890 名前:お胸おっぱい :01/11/26 13:08
>>889
Object **obj = new (Object *[n]);

または MFC なら CObArray か CObList を使うとか。

891 名前:お胸おっぱい :01/11/26 14:22
スマソ、前後の "(" ")" 要らんわ。

892 名前:889 :01/11/26 14:30
できましたー
ありがとさんです
名前が激しいですな(^^;

893 名前:デフォルトの名無しさん :01/11/26 15:19
初心者です。唐突な質問ですいません。
外部依存関係というフォルダは何なのでしょうか?
また、それはどうすれば作成できるのでしょうか?
お願いします。

894 名前:デフォルトの名無しさん :01/11/26 19:20

標準ヘッダーファイルで

#if(WINVER >= 0x0400)
#define VK_PROCESSKEY 0xE5
#endif /* WINVER >= 0x0400 */

のような記述がありますが 0x0400 ってどのWindowsですか?
95ですか?

余談ですが先日初めて職務質問されました。
7時ごろに人気の少ない道を通っていたら通りかかったパトカーに止められました。
プログラマーって怪しさが表ににじみ出るものですか?

895 名前:デフォルトの名無しさん :01/11/26 20:33
コマンドとかCVARの名前変更して
TSCに引っ掛からないようにビルドし直す方法教えて

896 名前:デフォルトの名無しさん :01/11/26 22:22
少しC言語をやっているものなんですが、
時々ソースコードの中に
"\xxx\xxx\xxx\xxx\xxx\xxx"というような文字列があるのですがこれは
どうすれば普通の文字に戻せるんでしょうか?
例えば"\253\104\114\266"とかなんですが・・・

897 名前:デフォルトの名無しさん :01/11/26 22:41
ォDLカ


898 名前:デフォルトの名無しさん :01/11/26 22:46
コピペしてrubyにでも喰わせろ。
#ruby -e 'print "\253\104"'

899 名前:デフォルトの名無しさん :01/11/26 22:47
ある基底クラスポインタが指すオブジェクトが、
あるクラスを継承しているかどうか調べるには、
どうすればいいのでしょうか?

900 名前:デフォルトの名無しさん :01/11/26 22:53
rtti有効にして、dynamic_cast<あるクラス>(基底クラスポインタ)の返値を見ろ。

901 名前:デフォルトの名無しさん :01/11/26 23:01
ダメだ。コピペしてperlにでも喰わせろ。
#perl -e 'print "\253\104"'

902 名前:デフォルトの名無しさん :01/11/26 23:13
つか、みんなrootで実行デスカ‥‥
あるいは、コメント?

903 名前:896 :01/11/27 00:11
897さんの言う通り変になってしまうんですが単なるアルファベットになるみたいなんです。

904 名前:ひろし :01/11/27 00:34
画像データーベースを作ったかた。デジタルカメラ組み込みのしごとがあります。
但しDirectShow、Twainを使わなければなりません。
また少し変わったSDKで機械語ルーティン集ではありません。あくまで機械語部分はシステムに埋め込まれてしまい各機能の呼び出しタイトルだけが書かれているものです。
ご興味ある方いらっしゃいますか?
マニュアルは今のところ英語です。

905 名前:デフォルトの名無しさん :01/11/27 00:52
>>903
ASCII じゃないだろ。
EBCDC じゃないのか?

906 名前:デフォルトの名無しさん :01/11/27 00:54
UNICODEとか

907 名前:デフォルトの名無しさん :01/11/27 01:01
>>906
アルファベットになる…ってーのを信じるなら、それはない。

908 名前:デフォルトの名無しさん :01/11/27 01:07
ちなみに、そーいうファイル作って秀丸でUNICODE表示すると、
「yhrC」みたいな表示がされるから、
# 正確な表記ではない。よく知らんが、欧州系の装飾付きアルファベット
UNICODEのような気がする。内容の意味は分からんが。

909 名前:デフォルトの名無しさん :01/11/27 11:06
>>893
ワークスペースウィンドウのFileViewの話だよな?
プロジェクトに明示的に追加したヘッダファイル(Header Files の下)以外で
参照しているヘッダファイルがあると、自動的に「外部依存関係」に追加される。
無理して自分で作るものではない。
プロジェクトに含まれるヘッダファイルならきちんと Header Files の下に
移動しておくのが吉。

>>894
NT。詳しくはGetVersionExのヘルプを参照。

910 名前:デフォルトの名無しさん :01/11/27 11:33
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/sdkintro/usage_8xgz.asp

911 名前:デフォルトの名無しさん :01/11/27 12:53
>>909
WINVER 0x0400 だと Windows 95 or NT4.0 です。NT only にしたければ _WIN32_WINNT 使わないと。

詳しくは Platform SDK のドキュメントで [Using the SDK Headers] を検索。

912 名前:たろ :01/11/27 13:04
恥かしい質問でしたらごめんなさい。

VC++にてダイアログベースでプログラムを作っているのですが。
ダイアログ画面を表示する前に、個別のチェック(ファイル有無チェック等)かなんかでNGの時
画面を表示させずに、MSGBOXを表示させてそのまま処理を終了させたいのですが、
どうすればよいのでようか?
ダイアログ画面を表示させたくないのです。

宜しくお願いします

913 名前:デフォルトの名無しさん :01/11/27 13:10
InitInstanceでダイアログを開く前にエラーチェックしろ。

914 名前:たろ :01/11/27 13:13
>>913
ありがとう御座います。

915 名前:デフォルトの名無しさん :01/11/27 13:15
900こえて、黄色信号がでてますので、新スレ作りました。
続きはこちらでどうぞ。
http://pc.2ch.net/test/read.cgi/tech/1006834463/l50

916 名前:初心者 :01/11/28 08:42
非常に初歩的なことですいません。

MFCをやっているのですが、ハンドルというものがでてきて、とりあえずはじめでてきたときに、「IDみたいにとらえて・・・」のような記述があったのでそのようにとらえていたんですが
「メンバ変数にハンドルをもつクラスが・・・・」のような記述を別で見ました。なんのことだか意味がわからなくなってしまいました。。

どういうことなんでしょうか??

917 名前:デフォルトの名無しさん :01/12/04 14:22
>>916
うーん、そのクラスのメンバ変数の中に、ハンドルがあるっていうような
意味だとおもうんだけど、
この場合ハンドルっていうのはクラスの実体のIDみたいなもので、
メンバ変数としてもつことによって外から容易に参照できるようになってるのだと思う

918 名前:デフォルトの名無しさん :01/12/04 18:26
同時にファイルの複数開きたいと考えています。
WinAPIのGetOpenFileName()を用いて複数ファイル名を
取得するにはどのようにすればいいですか?

919 名前:デフォルトの名無しさん :01/12/05 18:15
>918
lpofn->lpstrFile
| For Explorer-style dialog boxes, the directory and file name strings are
| NULL separated, with an extra NULL character after the last file name.

MFCのソース、DLGFILE.CPP の CFileDialog::GetNextPathName あたりも参考に。

920 名前:デフォルトの名無しさん :01/12/07 11:33
DCB構造体の、fAbortOnErrorなんですけど、
Win2000だと設定通り動くんだけどWin98でやったら、TRUEにしても
エラーのときに処理を中断しないんです(FALSEと変わらない)。

同じような人いませんか?どっちでもいいんだけどなんか気持ち悪いです。

921 名前:デフォルトの名無しさん :01/12/31 02:57
1GBを越える画像を印刷するには?
途中で欠けてしまいます。
どうしよう・・・・・

922 名前:デフォルトの名無しさん :01/12/31 02:59
>921
その画像うpして

923 名前:デフォルトの名無しさん :02/01/02 03:23
てかどういう不思議装置で印刷するだろう、、、

924 名前: :02/01/04 22:42
FAQっぽいけど、、、
system("***.exe a.tex b.tex");
みたいなのをDOS窓を出さずにできる方法はないの?

925 名前:sage :02/01/04 22:44
924
sageで。

926 名前:   :02/01/11 22:47
しつもん!

#include "stdafx.h"

#include <stdio.h>
#include <string.h>
class TT{
private:
public:
char *name;
TT(char *_in){
name=new char[strlen(_in)];
strcpy(name,_in);
}
~TT(){
delete name;
}
void getName(char *val){
strcpy(val,name);
}
};

int main(int argc, char* argv[]){
TT *a=new TT("aaaa");
delete a;
return 0;
}


で、デストラクタでnameをdeleteするとデバッグエラーというダイアログが現れますが、
なんでですか?
デリートすることが間違っているということでしょうか?

927 名前:デフォルトの名無しさん :02/01/11 23:04
> name=new char[strlen(_in)];
> strcpy(name,_in);
メモリの書きこみ違反です。

928 名前:デフォルトの名無しさん :02/01/12 00:48
質問です。
Office XPみたいな右クリックメニューはどうやって作ればいいんでしょうか。

929 名前:926 :02/01/12 02:27
>>927
え、、書き込み違反なんですか?
すいませんが、僕には何がまずいのかわかりません。
よろしければ、回避法等、詳しく教えてくださいますか?

930 名前:デフォルトの名無しさん :02/01/12 02:35
delete [] name; と書いてみる。

931 名前:デフォルトの名無しさん :02/01/12 02:47
>>929
'\0' の分が抜けてる。

それと C++ 使うなら std::string 使った方が何かと楽だぞ。

932 名前:デフォルトの名無しさん :02/01/12 02:54
つーか、なんで今ごろ旧スレ age るかなぁ

新スレ> http://pc.2ch.net/test/read.cgi/tech/1006834463/l50


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