★初心者にVisual C++を教えるスレ★ Part20
>>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を
使っている方がいましたらお知恵をお貸しください。
質問、横入りスミマセン。
入力の際、スペースの変換の確定の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
画面(そのプログラムが実行しているウインドウ)を一番手前に呼び出す関数はあるのでしょうか?
>>869 タイマイベント処理でデータ更新して、終わったら再描画イベント発生させせばいいんでない?
再描画はInvalidRect とかつかって。
896 :
893:2005/08/18(木) 02:35:31
897 :
895:2005/08/18(木) 02:36:11
う、更新し忘れて、えらい古いレスしちまった。
質問があります。
メタセコイアで使用している色設定のコントロールのようなものを
自前で作成したいのですが、カーソル位置からRGBにどのようにして
変換しているのかわかりません。
あのような色空間はどのような基準で描画すればいいのでしょうか?
カーソル位置からRGBにどのようにして変換すればいいのでしょうか?
質問させてくださいな。
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)を
指定しないといけないと言うことでしょうか?
>>899 MSDNを見よ。
>また、引数 stack_size に 0 を指定すると、オペレーティング システムはメイン スレッドに対して指定したスタックと同じ値を使用します。
こう書かれている。
>>898 寡聞にしてメタセコイアが何かは知らぬが、
色相環からrgb値を得たいと言うことかな?
それなら戦略は二つ。
・クリックした座標の画素を拾ってrgb値を得る。
・クリックした座標値からrgb値を算出する。
#これ以上の情報が必要なら画像処理スレ向きかな。
>>899 関数呼び出しでもスタックを消費するから、そのサイズだと足りない。
まあ0でも指定しとけ。
こんにちは
_T(" ")とはどういう機能なのでしょうか。
よろしく願います。
HINSTANCE hInstanceというのがありますが、
具体的にどのようなものなのでしょうか。
>>904 HINSTANCEと言う型のhInstanceと言う変数の宣言。
詳細はF1を押してMSDNを見るか「宣言へ移動」を使ってインクルードファイルを見よ。
>>905 ググルで探してみます。
意味を知りたかっただけです。
>>903 Unicodeビルドか否かで L" " か " " になるマクロ。
GetWindowRectだと、スクリーン座標でのウィンドウ位置が得られます、
GetClientRectだと、クライアント座標でのウィンドウ位置が得られますが、left,topは常に0です。
では、子ウィンドウを作成したとして、子ウィンドウが属する親ウィンドウを基準としたleft,topを得たいのですが、どのAPIを使えばいいのでしょうか。
>>908 GetWindowRectしてScreenToClient
910 :
デフォルトの名無しさん:2005/08/19(金) 14:38:44
指定日から、○日後や○ヶ月後の日付を知りたいのですが、
何かいい方法はありますか?
>>910 CTimeクラス、tm構造体、mktime関数あたりを使えばいいと思う。
912 :
910:2005/08/19(金) 16:10:19
>>911 ありがとうございました
それで挑戦してみます
>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が難しくなってくる
ファイルを選択するにはCFileDialogを使いますが、
フォルダを選択したい場合にはどうしたらよいのでしょうか?
ハンドルとステアリングの区別がつかない香具師発見。
>>913 インスタンスハンドルはアプリケーションの、
ウィンドウハンドルはウィンドウの、
独特の数値?(IDみたいなもん?)って事かな?
>918
まぁそんなもんだが、>913はほぼ間違ってるので注意。
921 :
デフォルトの名無しさん:2005/08/20(土) 22:50:54
基本的なことですいません。
VS.NET2003でMFCを使ったりしてウィザードから作成する際、インクルードの書式が'/'でなくて'\'になってしまいます。
'/'にする方法はありますか?
ひょっとしてインスタンスハンドルってアプリの先頭アドレス?
>>922 今はモジュールハンドルと同じ扱いだからそうだよ。
コンソールアプリケーションのmainの引数には
インスタンスハンドルの項がないんだけど、
この実行プロセスがインスタンスハンドルを持ってないってことはないの?
ない
持ってる、という解釈でよろしいのか。
>>924 欲しければGetModuleHandle(0)で手に入る。
DOSプロンプトでUNICODEで表示ってできるんですか?
>>930 表示にUNICODEもなにもないだろう。
MFCでキー入力判断って出来ますか?
あとファイルから読み込んだ文字列を多次元(forで繰り返せる形)にするやり方教えてください
>MFCで(略
できる
>あとファイル(略
元からChar配列だろ
>>981 たぶんのUNICODE文字列をcoutとかprintfとかで表示できるか?
という質問じゃないか?
まあ、答えは無理なので、
UnicodeToAnsiとか使ってコンバートした文字列を表示させましょう。
>>934 printfは%lc, %lsで表示できる。
>>933 ダイアログベースでした説明不足すまそ
多次元はstrcpy使って出来ました。ありがとうございました。
#pragma comment( lib, "test/hoge.lib" ) というように、
自作の static library 専用のフォルダを作って、相対パスで
pragma しても、うまく結合(?)されませんでした。仕方ないので、
絶対パスで指定していますが、そうする他どうしようもないのでしょうか?
"../"は使えない理由があるの?
>>937 VCのディレクトリ設定に親ディレクトリを追加しろ