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

このエントリーをはてなブックマークに追加
890デフォルトの名無しさん:2005/08/16(火) 22:54:30
>>889
おお、これは便利ですね。
ありがとうございます。
891デフォルトの名無しさん:2005/08/17(水) 23:37:02
質問なのですが、DevPartner Profilerについてもこのスレでいいのかな?
プログラムのプロファイルを取りたくて上記のものに行き着いたのですが、
プロファイル結果がどうしても表示されないよ。

nativeなプログラムだと思うので
ツール->DevPartner Profileのinstrument managerでnative用の設定をしてビルド、
更にツール->DevPartner Profile->enable profilingでデバッグ無しで開始をやると
「.xxxxxx」(xxxの内容は忘れてしまいました)というファイルはちゃんとできるんですが、
結果が表示されません。
いろいろと調べてみるとプロファイリングしたいプログラムが終了するとプロファイル結果が
ウィンドウに自動で表示されるらしいのですがその結果が出ないということです。
仕方なくソリューションエクスプローラのDevPartner Profilerの項目で
先程生成された.xxxxxxファイルをダブルクリックで開いて見ると中身は空のようでした。

いろいろ設定を変えてみてもどうもうまくいかないのでDevPartner Profilerを
使っている方がいましたらお知恵をお貸しください。
892デフォルトの名無しさん:2005/08/18(木) 01:21:49
質問、横入りスミマセン。
入力の際、スペースの変換の確定のVK_RETURNを取得しない
方法を探しています。

GetWindowLong(hEditBox,GWL_WNDPROC,(LONG)EditProc);
で、エディットボックスのキー操作をフックしています。

EditProc内では
if( wparam==VK_RETURN ) {}内で、文字列を取得しています。
(今のやり方)

初め if( msg==WM_KEYDOWN && wparam==VK_RETURN ) {}で取得を
試みましたが出来ず(WM_KEYDOWNを拾えない)、調べてみると
ダイアログなどでは不適切らしいので、修正しました。
893デフォルトの名無しさん:2005/08/18(木) 02:01:50
画面(そのプログラムが実行しているウインドウ)を一番手前に呼び出す関数はあるのでしょうか?
894デフォルトの名無しさん:2005/08/18(木) 02:21:56
>>893
SetWindowPos
895デフォルトの名無しさん:2005/08/18(木) 02:35:24
>>869
タイマイベント処理でデータ更新して、終わったら再描画イベント発生させせばいいんでない?
再描画はInvalidRect とかつかって。
896893:2005/08/18(木) 02:35:31
>>894
ありがとうございます
897895:2005/08/18(木) 02:36:11
う、更新し忘れて、えらい古いレスしちまった。
898デフォルトの名無しさん:2005/08/18(木) 22:47:18
質問があります。
メタセコイアで使用している色設定のコントロールのようなものを
自前で作成したいのですが、カーソル位置からRGBにどのようにして
変換しているのかわかりません。
あのような色空間はどのような基準で描画すればいいのでしょうか?
カーソル位置からRGBにどのようにして変換すればいいのでしょうか?
899デフォルトの名無しさん:2005/08/18(木) 23:23:30
質問させてくださいな。

uintptr_t _beginthreadex(
void *security,
unsigned stack_size,
unsigned ( __stdcall *start_address )( void * ),
void *arglist,
unsigned initflag,
unsigned *thrdaddr
);

この関数の引数stack_sizeの意味がよく分かりません。
stack_sizeというのはどんな代物なんでしょうか

たとえば、
unsigned __stdcall ThreadFunc(void *arg)
{
int i;
char ss[128];

//色々な処理

_endthreadex( 0 );
return 0;
}

こんな関数があるとすると、_beginthreadexでThreadFunc()を
スレッドとして呼び出したい場合、stack_sizeは(sizeof(int)+sizeof(char)*128)を
指定しないといけないと言うことでしょうか?
900デフォルトの名無しさん:2005/08/18(木) 23:29:21
>>899
MSDNを見よ。
>また、引数 stack_size に 0 を指定すると、オペレーティング システムはメイン スレッドに対して指定したスタックと同じ値を使用します。
こう書かれている。
901デフォルトの名無しさん:2005/08/18(木) 23:32:54
>>898
寡聞にしてメタセコイアが何かは知らぬが、
色相環からrgb値を得たいと言うことかな?
それなら戦略は二つ。
・クリックした座標の画素を拾ってrgb値を得る。
・クリックした座標値からrgb値を算出する。
#これ以上の情報が必要なら画像処理スレ向きかな。
902デフォルトの名無しさん:2005/08/18(木) 23:48:53
>>899
関数呼び出しでもスタックを消費するから、そのサイズだと足りない。
まあ0でも指定しとけ。
903デフォルトの名無しさん:2005/08/19(金) 08:52:01
こんにちは

_T(" ")とはどういう機能なのでしょうか。

よろしく願います。
904デフォルトの名無しさん:2005/08/19(金) 09:14:55
HINSTANCE hInstanceというのがありますが、
具体的にどのようなものなのでしょうか。
905デフォルトの名無しさん:2005/08/19(金) 09:30:57
>>904
HINSTANCEと言う型のhInstanceと言う変数の宣言。
詳細はF1を押してMSDNを見るか「宣言へ移動」を使ってインクルードファイルを見よ。
906デフォルトの名無しさん:2005/08/19(金) 09:44:53
>>905
ググルで探してみます。
意味を知りたかっただけです。
907デフォルトの名無しさん:2005/08/19(金) 10:14:55
>>903
Unicodeビルドか否かで L" " か " " になるマクロ。
908デフォルトの名無しさん:2005/08/19(金) 11:53:33
GetWindowRectだと、スクリーン座標でのウィンドウ位置が得られます、
GetClientRectだと、クライアント座標でのウィンドウ位置が得られますが、left,topは常に0です。

では、子ウィンドウを作成したとして、子ウィンドウが属する親ウィンドウを基準としたleft,topを得たいのですが、どのAPIを使えばいいのでしょうか。
909デフォルトの名無しさん:2005/08/19(金) 12:28:16
>>908
GetWindowRectしてScreenToClient
910デフォルトの名無しさん:2005/08/19(金) 14:38:44
指定日から、○日後や○ヶ月後の日付を知りたいのですが、
何かいい方法はありますか?
911デフォルトの名無しさん:2005/08/19(金) 15:33:32
>>910
CTimeクラス、tm構造体、mktime関数あたりを使えばいいと思う。
912910:2005/08/19(金) 16:10:19
>>911
ありがとうございました
それで挑戦してみます
913デフォルトの名無しさん:2005/08/19(金) 21:29:29
>904
簡単にいうとインスタンスハンドルというハンドル、
もっと砕けていうと、mainが持っているハンドルだよ
非常に荒く言うと、WIN32アプリ(コンソールアプリではない)ではハンドルがないと関数が動かない、ハンドルがないと車動かせないのと一緒
だから、メインウィンドウの初期化であるWNDCLASS(EX)やメインウィンドウ作るCREATEWINDOWはmainからインスタンスハンドルを頂かないと動かない
また、WIN32アプリではHWNDというウィンドウハンドルというのもある(WNDCLASS(EX)でHINSTANCEからCALLBACK関数へ関連付けされる、それと、CREATEWINDOWの戻り値でHINSTANCEから関連付けされる)
これは、メインウィンドウとダイアログとか、2つ以上のウィンドウのハンドルを分けるために存在する
具体的に言うと、メインとダイアログがHWNDハンドル同じ時は、例えばダイアログが開いている間はハンドル奪われて、メインウィンドウは操作できない
逆に、メインとダイアログがHWNDハンドル違うときは、ダイアログが立ち上がっている時でもメインウィンドウを操作できる
MFCになると、これをMODEL(前者)、MODELESS(後者)と言う
MFCにはMODELが標準になっている、そして、MFCではハンドルという概念がほぼ消えている
どういうことかというと、ハンドル分けてってことができないから、MODELESSが難しくなってくる
914デフォルトの名無しさん:2005/08/19(金) 22:22:49
ファイルを選択するにはCFileDialogを使いますが、
フォルダを選択したい場合にはどうしたらよいのでしょうか?

915デフォルトの名無しさん:2005/08/19(金) 22:42:56
>>914
SHBrowseForFolder
916デフォルトの名無しさん:2005/08/19(金) 23:02:05
ハンドルとステアリングの区別がつかない香具師発見。
917デフォルトの名無しさん:2005/08/19(金) 23:33:38
>>915

できました。ありがとう。
918デフォルトの名無しさん:2005/08/20(土) 01:55:05
>>913
インスタンスハンドルはアプリケーションの、
ウィンドウハンドルはウィンドウの、
独特の数値?(IDみたいなもん?)って事かな?
919デフォルトの名無しさん:2005/08/20(土) 02:16:40
>>916 華麗にスルーされてる香具師発見
920デフォルトの名無しさん:2005/08/20(土) 16:29:09
>918
まぁそんなもんだが、>913はほぼ間違ってるので注意。
921デフォルトの名無しさん:2005/08/20(土) 22:50:54
基本的なことですいません。

VS.NET2003でMFCを使ったりしてウィザードから作成する際、インクルードの書式が'/'でなくて'\'になってしまいます。
'/'にする方法はありますか?
922デフォルトの名無しさん:2005/08/20(土) 22:53:12
ひょっとしてインスタンスハンドルってアプリの先頭アドレス?
923デフォルトの名無しさん:2005/08/20(土) 22:58:07
>>922
今はモジュールハンドルと同じ扱いだからそうだよ。
924デフォルトの名無しさん:2005/08/21(日) 03:50:59
コンソールアプリケーションのmainの引数には
インスタンスハンドルの項がないんだけど、
この実行プロセスがインスタンスハンドルを持ってないってことはないの?
925デフォルトの名無しさん:2005/08/21(日) 04:11:27
ない
926デフォルトの名無しさん:2005/08/21(日) 04:18:41
持ってる、という解釈でよろしいのか。
927デフォルトの名無しさん:2005/08/21(日) 07:20:32
>>921
英語フォントを選択する。
928デフォルトの名無しさん:2005/08/21(日) 09:09:43
>>926
うん
929デフォルトの名無しさん:2005/08/21(日) 10:21:32
>>924
欲しければGetModuleHandle(0)で手に入る。
930デフォルトの名無しさん:2005/08/22(月) 01:16:51
DOSプロンプトでUNICODEで表示ってできるんですか?
931デフォルトの名無しさん:2005/08/22(月) 09:12:17
>>930
表示にUNICODEもなにもないだろう。
932デフォルトの名無しさん:2005/08/22(月) 20:08:49
MFCでキー入力判断って出来ますか?

あとファイルから読み込んだ文字列を多次元(forで繰り返せる形)にするやり方教えてください
933デフォルトの名無しさん:2005/08/22(月) 20:13:29
>MFCで(略
できる

>あとファイル(略
元からChar配列だろ
934デフォルトの名無しさん:2005/08/22(月) 21:56:29
>>981
たぶんのUNICODE文字列をcoutとかprintfとかで表示できるか?
という質問じゃないか?
まあ、答えは無理なので、
UnicodeToAnsiとか使ってコンバートした文字列を表示させましょう。
935デフォルトの名無しさん:2005/08/22(月) 22:02:13
>>934
printfは%lc, %lsで表示できる。
936デフォルトの名無しさん:2005/08/22(月) 22:07:32
>>933
ダイアログベースでした説明不足すまそ

多次元はstrcpy使って出来ました。ありがとうございました。
937デフォルトの名無しさん:2005/08/22(月) 22:14:29
#pragma comment( lib, "test/hoge.lib" ) というように、
自作の static library 専用のフォルダを作って、相対パスで
pragma しても、うまく結合(?)されませんでした。仕方ないので、
絶対パスで指定していますが、そうする他どうしようもないのでしょうか?
938デフォルトの名無しさん:2005/08/22(月) 22:31:38
"../"は使えない理由があるの?
939デフォルトの名無しさん
>>937
VCのディレクトリ設定に親ディレクトリを追加しろ