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


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

Win32API質問箱 Build50
751 名前:デフォルトの名無しさん :2007/03/13(火) 19:13:36
>>749
っ #define

でも、複数人で開発する時にこれをしたら吊ってもらう

752 名前:749 :2007/03/13(火) 19:17:50
>>751
そうじゃなくて、受け取ったメッセージを表示するプログラムなんですが
メッセージIDで表示しても、なんのメッセージかわからないんで文字列名称に変換したいんです。

753 名前:デフォルトの名無しさん :2007/03/13(火) 19:24:27
>>749
grep "#define WM_" winuser.h | awk 'printf "{%s, \"%s\"}\n", $2, $2'
後は検索できるように構造体およびリスト作成

754 名前:749 :2007/03/13(火) 19:26:38
>>753
結局は手作業で変換するしかないってことでしょうか?
結構誰でも思いつきそうな機能なのでそんなAPIないかな〜と思ったんですが

755 名前:デフォルトの名無しさん :2007/03/13(火) 19:32:41
そういうAPIもあるけど教えない。言わない。書かない。

756 名前:デフォルトの名無しさん :2007/03/13(火) 19:41:24
どうやら態度が気に入らないと言ってるらしいぞ

757 名前:デフォルトの名無しさん :2007/03/13(火) 19:49:22
質問です。

タスクマネージャの様に各プロセスのメモリ使用量やGDIオブジェクトを知りたいのですが
どうやれば良いんですか?

758 名前:デフォルトの名無しさん :2007/03/13(火) 19:49:36
今から755のご機嫌をとるスレになります

759 名前:デフォルトの名無しさん :2007/03/13(火) 19:53:06
>755のご機嫌を取るAPI教えてください

760 名前:デフォルトの名無しさん :2007/03/13(火) 19:56:10
TerminateProcess

761 名前:749 :2007/03/13(火) 20:01:37
自己解決しました。
>>755にカチンときたので教えません。
バーカ!

762 名前:デフォルトの名無しさん :2007/03/13(火) 20:02:50
>>758
流れ読むの面倒くさいから聞いちゃう。
>>755は何に対して発言しているのですか?

763 名前:デフォルトの名無しさん :2007/03/13(火) 20:11:25
>>753
文字列化演算子でいいんじゃね? スレ違いだけど

764 名前:デフォルトの名無しさん :2007/03/13(火) 21:16:06
ファイルパスとして妥当であるかを調べるAPIってありませんか?

765 名前:デフォルトの名無しさん :2007/03/13(火) 21:26:33
PathGetCharTypeでぐるぐる回す?

766 名前:デフォルトの名無しさん :2007/03/13(火) 21:45:59
Vista時代になったらDirect3Dとかも覚えないと
もうWindowsプログラマとして食べていけないんだろうか
GDIは全部エミュレーションになって激遅らしいじゃん
既存のGUI業務アプリの全Direct3D化なんて言われたら
自殺するしかない

767 名前:デフォルトの名無しさん :2007/03/13(火) 21:46:47
糞ビスタ

768 名前:デフォルトの名無しさん :2007/03/13(火) 21:48:20
きっと適当なラッパーが登場して万事おk

769 名前:デフォルトの名無しさん :2007/03/13(火) 21:50:26
CUIアプリしか作らない俺には縁のない話だぜ

770 名前:デフォルトの名無しさん :2007/03/13(火) 21:52:33
>>766
それほど深刻じゃないみたいよ。
ヒマみて.NET Framework 3.0にでも手をだすたら?

771 名前:デフォルトの名無しさん :2007/03/13(火) 21:54:49
>>766
http://www.microsoft.com/japan/msdn/windowsvista/top10/

こっからしらべていってみ

772 名前:デフォルトの名無しさん :2007/03/13(火) 21:58:19
WPFとXNAの相性が悪すぎるのがなぁ・・・

773 名前:デフォルトの名無しさん :2007/03/13(火) 22:03:20
WinFXの話題があがったから、ここの住民に聞くけど。
Microsoft Expressionって、元はクリーチャハウスのアレなのか?

こいつが、Flashキラー?
どんな経緯なんだよ!!

774 名前:デフォルトの名無しさん :2007/03/13(火) 22:46:43
パフォーマンスチューニングなんて飾りです
顧客には#ifdef切り替えてるだけなのが判らんのですよ

775 名前:デフォルトの名無しさん :2007/03/13(火) 22:47:19
ごばく だぜ

776 名前:デフォルトの名無しさん :2007/03/14(水) 00:20:27
低レベルな質問で申し訳ありませんが・・・
CreateWindowEx でウィンドウ表示をするとき、HINSTANCEで本物を渡すのをズボラして
NULLを渡しても問題ないんでしょうか?

HINSTANCEは、関数が要求するときに渡すためだけにある数合わせ程度の引数でしかない、
とそういう認識をしているのですが(本当はアプリを区別するためみたいだけど)
試しにCreateWindowExでNULLを入れてみたらウィンドウ自体はちゃんと出てしまったものですから
デフォルト値としてゼロを与えるようなコードを書いちゃってもいいものかと悩んでしまいまして・・・

777 名前:デフォルトの名無しさん :2007/03/14(水) 00:26:24
>>776
問題ありです
悩む暇があったら
HANDLE GetCurrentProcess(VOID)
を使って下さい

778 名前:デフォルトの名無しさん :2007/03/14(水) 00:27:35
わかりました。ありがとうございます

779 名前:デフォルトの名無しさん :2007/03/14(水) 00:29:55
え?なんでGetCurrentProcessなわけ?

780 名前:デフォルトの名無しさん :2007/03/14(水) 00:36:16
hInstance
Windows 95/98:ウィンドウに関連付けられたモジュールのインスタンスハンドルを指定します。
Windows NT/2000:このパラメータは無視されます。



781 名前:デフォルトの名無しさん :2007/03/14(水) 00:41:16
>>779
楽だから

782 名前:デフォルトの名無しさん :2007/03/14(水) 00:48:06
俺はGetWindowLong派

783 名前:デフォルトの名無しさん :2007/03/14(水) 00:48:55
むしろstatic HINSTANCE hInstanceとLPCREATESTRUCTでだなwwwwww

784 名前:デフォルトの名無しさん :2007/03/14(水) 00:49:48
>>782
ニワトリが先か卵が先かってやつだなw

785 名前:デフォルトの名無しさん :2007/03/14(水) 00:52:26
オレの場合、どっかのサンプルコードにあった
GetModuleHandle
使ってるけど、これってまずい?

786 名前:デフォルトの名無しさん :2007/03/14(水) 00:52:42
楽だからってプロセスハンドル渡すのはどうなのか

787 名前:デフォルトの名無しさん :2007/03/14(水) 00:53:32
プロセスハンドルとインスタンスハンドルってまったく別アドレスに格納されてるんじゃ枚か?

788 名前:デフォルトの名無しさん :2007/03/14(水) 00:57:01
int main(){
printf("%x\n", GetCurrentProcess());
printf("%x\n", GetModuleHandle(NULL));
}

ffffffff
400000

789 名前:デフォルトの名無しさん :2007/03/14(水) 00:57:45
>>777 は間違ってるよね?
GetModuleHandle に NULL 渡すのがいいよね?

790 名前:デフォルトの名無しさん :2007/03/14(水) 01:58:18
LoadIcon で試してみた
GetCurrentProcess() 失敗
GetModuleHandle(NULL) 成功

引数が無視される場合は関係ないが
どっちにしても GetModuleHandle(NULL)
にしておけば問題ないと思った

791 名前:デフォルトの名無しさん :2007/03/14(水) 01:59:30
GetCurrentProcessとGetCurrentThreadが返すのは擬似ハンドルだよ。

792 名前:デフォルトの名無しさん :2007/03/14(水) 02:22:09
そもそもいまごろ9xまでサポートしなければならないのか?

793 名前:デフォルトの名無しさん :2007/03/14(水) 05:03:01
業務用アプリなら仕方がないのかもね
個人向けなら普通に切り捨てるけど、
そもそもサポートが打ち切られた9xが入ったPCを
ネットに繋げてるだけでもはや公害だし

794 名前:デフォルトの名無しさん :2007/03/14(水) 05:14:36
しばらく前に、中小企業のエンドユーザのとこに行ったら
9Xが現役で動いていて、自分がずーと前に携わったPGの
ショートカット(その会社とは無関係な製品)がデスクトップ
に張ってあって、涙が出そうになったことある。

795 名前:デフォルトの名無しさん :2007/03/14(水) 08:19:34
>>794
会社の導入コスト/教育費...etcの償却やいろいろあるからねー
手間ではあるし。

796 名前:デフォルトの名無しさん :2007/03/14(水) 08:27:51
>>785
それは問題ない。Win32のモジュールハンドルとインスタンスハンドルは等価。
普通はWinMainのあの引数にもGetModuleHandle(0)の戻り値が渡されている。

797 名前:デフォルトの名無しさん :2007/03/14(水) 08:44:16
>>796
素でしらんかった

798 名前:デフォルトの名無しさん :2007/03/14(水) 08:46:53
ってことは、わざわざグローバルとかに hInst って置かなくても
常に GetModuleHandle(NULL) 呼び出しとけばおk?
まさかそんなとこが、クリティカルにパフォーマンス落とすこともないだろうし

799 名前:デフォルトの名無しさん :2007/03/14(水) 08:51:23
DLLを作る場合に問題が出る。

800 名前:デフォルトの名無しさん :2007/03/14(水) 08:59:15
あー全くその通りでした
ありがとうございます

801 名前:デフォルトの名無しさん :2007/03/14(水) 09:11:56
>>794
今年に入って、Win3.1上で動いてるAccessアプリのメンテをする羽目になったぞ。
データを持ち帰ろうとして、ファイルのコピーのやりかたを思い出せず、お客さんに教えてもらったぞ。

802 名前:デフォルトの名無しさん :2007/03/14(水) 16:05:12
>>801
vm 上で動作してるんなら別だけど
Win3.1 のデータを持って帰るのって大変そう…

フロッピーだったりしてね

803 名前:デフォルトの名無しさん :2007/03/14(水) 18:53:36
>>802
用紙とかw

804 名前:デフォルトの名無しさん :2007/03/14(水) 18:55:58
ファイルのコピーって紙のファイルだったのかーーー!!!

805 名前:デフォルトの名無しさん :2007/03/14(水) 18:58:47
プログラムマネージャーはエクスプローラーみたいに見えて
ランチャーでしかないからな
ファイルマネージャーを起動しなくちゃw

806 名前:デフォルトの名無しさん :2007/03/14(水) 19:37:53
DOS窓叩いた方が早いな

807 名前:デフォルトの名無しさん :2007/03/14(水) 19:46:37
そしてlsと叩いてエラーが返ってくる

808 名前:デフォルトの名無しさん :2007/03/14(水) 20:09:49
お前らいくらなんでもバカにしすぎだwww

809 名前:デフォルトの名無しさん :2007/03/14(水) 20:58:37
Visual C++ 2005 Express Edition ダウソしたんですが、
templete.obj : error LNK2001: 外部シンボル "__imp__DefWindowProcW@16" は未解決です。
WinAPI使おうとするとエラーが出ます。何でですか?

810 名前:デフォルトの名無しさん :2007/03/14(水) 21:02:17
Platform SDKかWindows SDK入れろ。
その上でリンカにuser32.libを読み込ませろ。

811 名前:デフォルトの名無しさん :2007/03/14(水) 21:06:59
>>809がMSの手順どおりのセットアップしてないから
http://www.microsoft.com/japan/msdn/vstudio/express/visualc/usingpsdk/

今回のみ当座の問題として解決するなら
#pragma comment(lib, "user32.libウンコ")
をソースに

812 名前:デフォルトの名無しさん :2007/03/15(木) 00:53:43
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3750.txt
上の打ち込んだソース中で、WndProc中のWM_SETFOCUSの処理でSetFocus関数によってidFocusのIDを持つウィンドウにフォーカスが移るから
WM_SETFOCUSは二度と送られないと思ったのですが、MessageBoxのあるところにブレークポイントを置くと半永久的にメッセージが送られ続けるのですが、何故ですか?

813 名前:デフォルトの名無しさん :2007/03/15(木) 01:21:51
ブレークポイントでストップしたときにアクティブになるウィンドウは何かね。

814 名前: ◆ohD6m3l5jg :2007/03/15(木) 01:51:56
すみませんWindows板から誘導されてきました。

動的リンクの実装について答えられる方に質問です。

バカみたいな疑問で恐縮ですが、あるDLLが、同じDLL内にある関数(もちろんEXPORTED)を呼ぶ時
LoadLiblary + GetProcAddress を使ったとします(そんな必然性はない事は承知)。

こういうバカコードを実行したら、Windowsは内部的な動作としては、
指定のDLLは(呼び側自身であるわけで)既にロード済みだから、LoadLiblaryは何もせず、
ハンドルだけ返し、GetProcAddressは おとなしく目的の関数のポインタ返してくれるだけで、
ロードのオーバヘッドはかからないように実装されてるんでしょうか?

実際動かしてみたのですが、エラーにはなりませんでした。


815 名前:デフォルトの名無しさん :2007/03/15(木) 02:19:29
>>814
その場合、LoadLibrary はそのDLLのリファレンスカウントをインクリメントする。

816 名前:デフォルトの名無しさん :2007/03/15(木) 02:22:17
>>814
>LoadLiblaryは何もせず、ハンドルだけ返し
Yes。但し気をつけなきゃいけないのは同一プロセスに既にマッピングされてるDLLをLoadLibrary()しても
参照カウントは増えるのでLoadLibrary()した回数分だけFreeLibrary()しないといけない

>GetProcAddressは おとなしく目的の関数のポインタ返してくれるだけで
>ロードのオーバヘッドはかからないように実装されてるんでしょうか?
こっちはNo。GetProcAddressは自プロセスにマッピングされてるDLLのハンドルから
関数名(あるいは序数)に相当する関数のアドレスをDLLのエクスポートセクションから走査する。
だから単純に関数を呼び出すのとLoadLibrary()+GetProcAddress()を使ったのでは
オーバーヘッドに差が出る。と思う(実際やった事ないので絶対とは言えない)。


817 名前:デフォルトの名無しさん :2007/03/15(木) 03:33:58
>>816
静的インポートしても
エクスポートセクションの走査がプロセスの起動時間に埋め込まれるだけでっしゃろ?

818 名前:デフォルトの名無しさん :2007/03/15(木) 04:09:47
>>817
静的にDLLをインポートして、EXEからDLLの関数を呼び出す場合は
もちろん内部でLoadLibraryとGetProcAddress呼んでるけど
>>814が聞きたいのはDLLから自身の関数をGetProcAddress経由で呼んだらって話だと思う。
GetProcAddress経由は>>816の通りだけどDLLから自身の関数を参照する時は
>>814みたいな特殊な事しない限り普通に参照できるものだと思ってる(EXEが自身の関数を参照するのと同じ話)。

あれ、もしかして俺ひどい勘違いしてる?もう寝たほうがいいな。

819 名前:デフォルトの名無しさん :2007/03/15(木) 04:15:34
> あるDLLが、同じDLL内にある関数(もちろんEXPORTED)を呼ぶ時
って確かに書いてるね
ごめん見逃してた

820 名前:デフォルトの名無しさん :2007/03/15(木) 08:43:04
814の場合もそうだが、既に読み込まれていることがわかっていて、
一時的にハンドルを使いたい(まだFreeLibraryされないことがわかっている)場合は、
GetModuleHandleが便利。

LoadLibraryだと参照カウントがインクリメントされるが、
GetModuleHandleなら参照カウントはインクリメントされない。



821 名前:デフォルトの名無しさん :2007/03/15(木) 10:26:02
どうしてオブジェクト指向なwin32apiのプログラムがないですか

822 名前:デフォルトの名無しさん :2007/03/15(木) 11:02:36
つ【.NET】

823 名前:デフォルトの名無しさん :2007/03/15(木) 11:27:15
>>815-820の皆さんどうも有難うございました。

824 名前:デフォルトの名無しさん :2007/03/15(木) 11:27:32
Win32API はオブジェクト指向だ。
オブジェクトはハンドルという形にはなっているけども

825 名前:デフォルトの名無しさん :2007/03/15(木) 11:48:57
あの長ったらしいハンガリアン記法は何とかなりませんか

826 名前:デフォルトの名無しさん :2007/03/15(木) 12:14:40
825を変化させるほうがよほど堅実的だな

827 名前:デフォルトの名無しさん :2007/03/15(木) 12:57:19
>>810-811
サンクスです。動きましたー

828 名前:デフォルトの名無しさん :2007/03/15(木) 18:30:24
環境:WinXP、VisualStudio.NET2005
スクロールバーについて質問です。

editControlHandle_ = CreateWindow(L"EDIT",L""
,WS_CHILD|WS_VSCROLL|WS_VISIBLE|ES_AUTOVSCROLL|ES_MULTILINE|ES_READONLY
,0,0,640,480,WindowHandle(),0,ApplicationInstance(),NULL);

こんな感じでエディットコントロールを作った後

SetWindowText(editControlHandle_, output.c_str());

でそこにテキストを転送しています。
新しいテキストほど下に下に追加されていく、という形にしているので
スクロールバーは常にマックスの状態に保ち、常に一番下の行を表示したいと思っています。

SCROLLINFO si;
ZeroMemory(&si,sizeof(SCROLLINFO));
si.cbSize = sizeof(SCROLLINFO);
si.fMask = SIF_ALL;
GetScrollInfo(editControlHandle_,SB_VERT,&si);
si.nPos = si.nMax;
SetScrollInfo(editControlHandle_,SB_VERT,&si,true);

試しにこのコードで実行してみたところ、スクロールバーは確かに一番下にいくんですが
肝心のエディットコントロールがそれに追随せず、ずっと一番上の行が表示されています。
どこを直せばいいでしょうか・・・

829 名前:デフォルトの名無しさん :2007/03/15(木) 18:37:22
EM_SETSEL

830 名前:デフォルトの名無しさん :2007/03/15(木) 20:51:31
ぐぐったり晩飯食べたりしながら悶々としてやっと終わりました

SendMessage(editControlHandle_, EM_SETSEL, MAKELONG(0xffff,0xffff)-1,MAKELONG(0xffff,0xffff));
SendMessage(editControlHandle_, EM_REPLACESEL, -1,(LPARAM)newLog.c_str());
SendMessage(editControlHandle_, EM_REPLACESEL, -1,(LPARAM)L"\r\n");

大半のコードを上の三行に書き換えてやっと解決。ヒントくれた>>829ありがとう

831 名前:デフォルトの名無しさん :2007/03/16(金) 03:10:25
ウィンドウメッセージのパラメータについて質問です。
例えばWM_MOVEメッセージのLParamはシフト演算によってy座標が、
ビット演算によってx座標が取得できます。
なぜこのような演算でxやyの座標が取得できるのでしょうか。
シフト演算やビット演算そのものは分かるのですが、どうしてこのような演算でxやyの値が分かるのでしょうか。
とても初歩的な質問ですが、ご回答願えると幸いです。

832 名前:デフォルトの名無しさん :2007/03/16(金) 03:15:09
下位16ビットにX座標、上位16ビットにY座標が入ってるから。

下位16ビットが1、それ以外が0をlParamとの論理積で下位16ビットのみを取り出し、
lParamを右に16ビットシフトすれば上位16ビットのみが取り出せる。

833 名前:デフォルトの名無しさん :2007/03/16(金) 03:21:57
>>831
lparamは32ビットのデータ。
一つの変数に2つのデータ(xy座標)を入れる為に16ビットに区切ってデータを入れてる。

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
|                                ||                                       |
|←          y座標データ     .      →||←              x座標データ              →|
こんな感じ。

834 名前:デフォルトの名無しさん :2007/03/16(金) 05:11:07
bit演算分かってたらその逆を考えるっていう自然な手順で結論できそうなものだが…
まぁあれだ、慣れみたいなものが必要かもね

835 名前:デフォルトの名無しさん :2007/03/16(金) 07:30:25
HIWORD(x)
LOWORD(x)
でええやん

836 名前:デフォルトの名無しさん :2007/03/16(金) 07:35:08
GET_X_LPARAM()とGET_Y_LPARAM()を使わないと、
マイナスの値とか渡ってきたときが痛い目に遭う。

837 名前:デフォルトの名無しさん :2007/03/16(金) 07:49:14
EDITコントロールやRICHEDITコントロールにペーストできる限界値ってありますか?
OSはWindows XPです。

838 名前:837 :2007/03/16(金) 07:53:56
メモ帳には長い文字列もペーストできるのに、
自前のダイアログのEDITやリッチエディットにはペーストできない・・・

839 名前:デフォルトの名無しさん :2007/03/16(金) 08:00:50
>>838
エディットは上限を指定出来るじゃん。
CEdit::SetLimitText

840 名前:デフォルトの名無しさん :2007/03/16(金) 08:04:29
>>839
それはWinAPIじゃない

841 名前:デフォルトの名無しさん :2007/03/16(金) 08:07:04
ありがとう。

やらないか?

842 名前:デフォルトの名無しさん :2007/03/16(金) 08:17:35
最大4MBまで

843 名前:デフォルトの名無しさん :2007/03/16(金) 08:19:03
>>836
いや、ちゃんと動作分かってたら痛い目見ないからw
その2つのマクロも結局LOWORD&HIWORDですよと

844 名前:デフォルトの名無しさん :2007/03/16(金) 08:38:54
メモ帳はエディットコントロールのメモリを直接いじってるから
コントロールの上限こえても大丈夫ぽい

845 名前:デフォルトの名無しさん :2007/03/16(金) 09:20:31
"c:\\test.txt"といった文字列を渡して
自前のアプリからExplorerと同じコンテキストメニュー(できれば1・2個メニューを追加して)を表示させる方法を教えてください。

846 名前:デフォルトの名無しさん :2007/03/16(金) 10:14:26
>>845
エスパーすぎるわ。
GetSystemMenuとかの話?

847 名前:デフォルトの名無しさん :2007/03/16(金) 10:23:36
IContextMenu2,3?

848 名前:デフォルトの名無しさん :2007/03/16(金) 11:55:42
ウィンドウ内で右クリックしたとき、[Aを編集する] とか [Bを編集する] とか
そういう項を含んだ右クリックメニューが出てくるようにしたいのではなかろうか。

俺、このエスパー検定準一級に受かったら結婚するんだ

849 名前:デフォルトの名無しさん :2007/03/16(金) 12:00:19
エスパーエスパーって
普通に理解できる質問だと思うんだが・・・?
回答はできないが(゚Д゚)

850 名前:デフォルトの名無しさん :2007/03/16(金) 12:10:05
ESPktkr

851 名前:デフォルトの名無しさん :2007/03/16(金) 12:22:07
一行目と2行目の関連というか動作がわからないところがエスパー加減なんだと思う

852 名前:デフォルトの名無しさん :2007/03/16(金) 12:33:11
cドライブルートの中のtest.txtのIShellFolderとITEMIDLISTからIContextMenuを取得
IContextMenu::QueryContextMenuでメニュー項目を新規に作成したメニューに追加
独自項目を追加後普通にメニュー表示
選ばれたのが独自項目ではなければIContextMenu::InvokeCommand
じゃないの?
超能力がいるか?

853 名前:デフォルトの名無しさん :2007/03/16(金) 12:37:22
>>852
それで何を説明した気になってるんだ?
てか誰もファイルの実体をどーのこーの何て書いてない
飽くまで"c:\\test,txt"という文字列だ

854 名前:デフォルトの名無しさん :2007/03/16(金) 12:57:40
>>853
マジで言ってるの?
それはエスパー云々以前に「対話能力がない」ってレベルだと思うぞw

855 名前:デフォルトの名無しさん :2007/03/16(金) 13:00:40
"c:\\test.txt"ではなく、"c:\\test,txt"であるところが重要。


856 名前:デフォルトの名無しさん :2007/03/16(金) 13:37:58
>>853はうんこ


857 名前:デフォルトの名無しさん :2007/03/16(金) 13:38:59
>>855
フォルダか拡張子付いてないファイルだろ。それは重要ではない

858 名前:デフォルトの名無しさん :2007/03/16(金) 14:26:22
質問者が、現時点でどのくらいできるのかわからない

説明メンドクセ

859 名前:デフォルトの名無しさん :2007/03/16(金) 17:14:47
> COMがわかりません
と読めた

860 名前:デフォルトの名無しさん :2007/03/16(金) 17:17:24
アンカー抜けてた
>>853

861 名前:デフォルトの名無しさん :2007/03/16(金) 18:46:41
>>830
OpenJane の一番下のログ(  (・∀・)カンリョウ!! )のように、
Client高さを1行に絞りきることがあるなら
前置で CRLF し、末尾にはCRLF置かないほうが良いよ。

 SendMessage(handle, EM_SETSEL, -1, -1);
 if (GetWindowTextLenght(handle)) {
  SendMessage(handle, EM_REPLACESEL, -1,(LPARAM)_T("\r\n"));
 }
 SendMessage(handle, EM_REPLACESEL, -1,(LPARAM)log-string);

862 名前:デフォルトの名無しさん :2007/03/16(金) 20:44:29
開いたコンソールにメニューを追加したく、

AllocConsole();
hwConsole = GetConsoleWindow();
HMENU hmConsole = GetSystemMenu(hwConsole, FALSE);
AppendMenu(hmConsole, MF_STRING, IDM_TEST, "Test");
hMsg = SetWindowsHookEx(WH_GETMESSAGE, (HOOKPROC)GetMessageProc,
     NULL, GetWindowThreadProcessId(hwConsole, NULL));

みたいなコードを書いてみたのですが、メニューの Test を選んでも、
さっぱり GetMessageProc にメッセージが来ません。
どこが間違っているのでしょうか?

863 名前:デフォルトの名無しさん :2007/03/16(金) 21:35:09
>>843
んなこと言い出したらLOWORD&HIWORDだって結局はキャストじゃん

864 名前:デフォルトの名無しさん :2007/03/16(金) 21:38:47
ウィンドウのサイズを変更するときに縦にしか変更できなくする方法ってどうやればいいですか?

865 名前:デフォルトの名無しさん :2007/03/16(金) 21:40:50
>>864
WM_GETMINMAXINFO

866 名前:デフォルトの名無しさん :2007/03/16(金) 21:51:03
>>865
ありがとうございます

867 名前:デフォルトの名無しさん :2007/03/16(金) 23:10:12
>>862
AllocConsoleで作ったコンソールは、別プロセスの別スレッドなんじゃないの?
サブクラス化も駄目なはず。
ReadConsoleInputはイベントは取れてもIDM_TESTまでは拾えないはず。
ってことで、あとはDLL作って潜り込ますしかないんじゃない?

868 名前:デフォルトの名無しさん :2007/03/16(金) 23:53:11
>>867
SetWinEventHookでイベント捕まえるしか手がないと思うんだがどうよ

869 名前:デフォルトの名無しさん :2007/03/17(土) 00:14:35
MSAAの関数か

870 名前:デフォルトの名無しさん :2007/03/17(土) 01:05:39
>>832-836
丁寧な回答をありがとうございます。
よく分かりました。

871 名前:デフォルトの名無しさん :2007/03/17(土) 01:09:33
>>868 やってみました。
AllocConsole();
hwConsole = GetConsoleWindow();
idConsoleThread = GetWindowThreadProcessId(hwConsole, &idConsoleProcess),
hEventHook = SetWinEventHook(EVENT_SYSTEM_MENUSTART, EVENT_OBJECT_FOCUS,
      NULL, WinEventProc, 0, idConsoleThread,
      WINEVENT_OUTOFCONTEXT);

これだと WinEventProc にイベントが飛びません。
thread id 指定のかわりに process id を指定しても駄目でした。
両方とも 0 にしてグルーバルフックにすると動きますが、さすがにそれはどうかと……。
うーん、なんで thread id を指定すると駄目なんだろう。

872 名前:デフォルトの名無しさん :2007/03/17(土) 01:56:31
>>871
idConsoleThread = GetWindowThreadProcessId(hwConsole, &idConsoleProcess),

最後の,は;だろうが、
どっちにしろAllocConsoleしたコンソールのスレッドIDは、この方法では取得できない

873 名前:デフォルトの名無しさん :2007/03/17(土) 01:57:14
コンソールウィンドウって仮想マシンだったよな
あれは結構別物だと思ってたんだけど、ただのウィンドウなの?

874 名前:872 :2007/03/17(土) 02:04:36
>>871
さらに、コンソールの本当のスレッドは、idConsoleProcessの下にはない
だからSetWinEventHookでプロセスIDとしてidConsoleProcessを指定しても、
コンソールの本当のスレッドまでフックが届かない

コンソールの本当のスレッドIDを取得する方法は俺も知らん
Global HookしてプロセスIDでチェックするしかない気がするな

875 名前:デフォルトの名無しさん :2007/03/17(土) 02:34:23
>>874
ありがとうございます。あとはイベントを捕まえればいいのですが、
EVENT_OBJECT_INVOKEDってVistaオンリー・・・

EVENT_OBJECT_FOCUSとかで地道に捕まえるしかないっぽいですね。
そのうえ取得できるのは定義したメニューのIDM_TESTじゃなくて、上からの順番だけ・・・
もう泣きそうです。

876 名前:デフォルトの名無しさん :2007/03/17(土) 02:41:13
コンソールウィンドウってCSRP(csrss)の持ち物だったっけ?

877 名前:デフォルトの名無しさん :2007/03/17(土) 03:06:33
>>875
だめだ、簡易編集オンになってて範囲指定中だと、
発生したイベントがブロッキングされてしまいました・・・
もう泣いてもいいですか。

878 名前:デフォルトの名無しさん :2007/03/17(土) 03:13:28
>>876
だな、そのあたりからスレッドID探せるかもしれんな

879 名前:デフォルトの名無しさん :2007/03/17(土) 03:23:29
こういう時こそデバッガの出番じゃね?
追ってけばそのうちわかる気がしね?
じゃあ任せた。

880 名前:デフォルトの名無しさん :2007/03/17(土) 06:04:33
スレッドID分かっても、大して意味ないよ。複数のコンソールが同一のスレッドで動くから。
イベント処理プロシジャの中でHWNDとか見てどこから飛んで来たのか判断する必要は同じ。

しかしMSAAって日本語の資料少ないな。

881 名前:デフォルトの名無しさん :2007/03/17(土) 16:47:10
Jane Doe Styleのスレッド一覧を表示するようなウィンドウってどうやって作るんですか?

882 名前:デフォルトの名無しさん :2007/03/17(土) 16:50:20
ソース公開されてなかったか?

883 名前:yyy :2007/03/17(土) 16:58:39
はじめまして。
http://amaznode.fladdict.net/

のような、amazonのAPIを使ったものを
作りたいのですがFlashのみで開発できるものなのでしょうか?
初歩的な質問で申し訳ありません。
分かる方がいましたら、アドバイスを頂けると助かります。

884 名前:デフォルトの名無しさん :2007/03/17(土) 17:00:25
このクマクマに「スレタイを読め」と言って通じるだろうか

885 名前:デフォルトの名無しさん :2007/03/17(土) 17:02:45
>>883
激しく板違い

886 名前:デフォルトの名無しさん :2007/03/17(土) 17:21:55
>>883
しかもマルチかよ。
http://pc11.2ch.net/test/read.cgi/tech/1131627583/72

887 名前:デフォルトの名無しさん :2007/03/17(土) 18:44:00
>>884
たぶん「API」という言葉にしか目が行っていないのだろう

888 名前:デフォルトの名無しさん :2007/03/17(土) 19:19:12
もしかするAPIという言葉が理解できてないのかも知れない

889 名前:デフォルトの名無しさん :2007/03/17(土) 19:29:04
和んだ

890 名前:デフォルトの名無しさん :2007/03/17(土) 19:44:41
わんだ?

891 名前:デフォルトの名無しさん :2007/03/17(土) 20:02:06
早大レイプ部の和んださんって今何やってるの?

892 名前:デフォルトの名無しさん :2007/03/17(土) 20:18:39
かずんだ?

893 名前:デフォルトの名無しさん :2007/03/17(土) 20:46:34
>>883
質問自体が論外だが、
このスレでの関連性を問うなら、これぐらい?

http://www.microsoft.com/japan/products/expression/default.mspx

894 名前:デフォルトの名無しさん :2007/03/17(土) 21:58:23
>>883
あれはな、よく聞けよ?
APIじゃなくてamazon web service。 わかったか?
amazon web serviceかAWSで検索してこい。

895 名前:デフォルトの名無しさん :2007/03/17(土) 21:58:25
>>881
リストビュー

896 名前:デフォルトの名無しさん :2007/03/17(土) 22:04:24
>>882
>>895
遅ればせながらありがとうございました

897 名前:デフォルトの名無しさん :2007/03/18(日) 00:51:53
WindowsSDKとMFCの違いを教えてください。

898 名前:897 :2007/03/18(日) 00:56:29
VCで提供しているクラスライブラリを使わず開発するって事なのかな

以下それについての疑問

@MFCを使わず開発する上での利点
AMFCとSDKの開発効率はどちらが上か?
B同じ技量のプログラマがそれぞれMFC、SDKで組んだ場合の実行速度に違いはあるのか?

以上3つの疑問点があります。

899 名前:デフォルトの名無しさん :2007/03/18(日) 01:07:16
実際に自分でやってみて確認するのが一番。

900 名前:デフォルトの名無しさん :2007/03/18(日) 01:10:09
ケースバイケースとしか言いようがない気が・・・

MFCはSDKを使い慣れた人のためのもの、というのは覚えておいたほうがいいと思う

901 名前:デフォルトの名無しさん :2007/03/18(日) 01:15:29
場合によりけりだな。

軽く触る程度ならMFCで。今後使い回すつもりなら
いずれどっちも学ぶ必要があるからお好きな方から。

902 名前:デフォルトの名無しさん :2007/03/18(日) 01:16:45
俺は最近はSDKのが好きかもしれん。
心の迷いだろうから、WTLでも触ってフレームワークの奴隷に戻るつもりだが。

903 名前:デフォルトの名無しさん :2007/03/18(日) 01:24:52
@MFC側はXerox Perkが論じたフレームワークが主モデルであり、
Windows SDK群の一握りしかラッパー化されていない。
利点については割愛。

A一般的なGUI操作が前提ならば、MFCベースが優勢。
しかし、@で述べたとおりMFCのクラス群だけではカバーできない部分もあり、
所々でSDKの関数を利用する。

B何の実行速度?MFCにはオーバーヘッドが大きいクラスが多々あるが?

904 名前:897 :2007/03/18(日) 01:29:53
>>899-903
なるほど。
要するに幅広く応用するのであればSDKに精通していた方が有利なわけですね

905 名前:左を見ろ→&&rrlo;鹿馬、だ右はちっこ     &&rlro;」 :2007/03/18(日) 01:31:17
 

906 名前:デフォルトの名無しさん :2007/03/18(日) 01:31:33
>>904
もう一つ付け加えておくとSDKベースでの開発だとVC以外のコンパイラ(例えばBCC)
でも通るMFCはVCコンパイラじゃないと無理

907 名前:デフォルトの名無しさん :2007/03/18(日) 01:39:20
警告やクエッションといったシステムのアイコンを取得したいのですが、
LoadIconだと32x32しかとれないですよね。
16x16を取る方法はないのでしょうか。

908 名前:デフォルトの名無しさん :2007/03/18(日) 01:40:47
LoadImage


909 名前:デフォルトの名無しさん :2007/03/18(日) 02:06:47
>>908
LoadImageでOEMイメージを取得するということですか?
下記のようにしてみましたが、
「指定されたリソースの種類がイメージファイルに見つかりません。」と取得できませんでした。
どこか間違っています?

HANDLE h =
::LoadImage(NULL, MAKEINTRESOURCE(OIC_WARNING), IMAGE_ICON, 0, 0, LR_DEFAULTSIZE);



910 名前:デフォルトの名無しさん :2007/03/18(日) 02:15:17
LR_SHARDを付けたらいけました、すみません。
けどアイコンは縮小されたような汚いのしか取れなかったです。。

HANDLE h =
::LoadImage(NULL, MAKEINTRESOURCE(OIC_WARNING), IMAGE_ICON, 0, 0, LR_DEFAULTSIZE | LR_SHARD);

911 名前:デフォルトの名無しさん :2007/03/18(日) 02:23:33
> 縮小されたような
LR_DEFAULTSIZEを指定したらそりゃ32x32に縮小されるだろ
> 汚いのしか
LR_CREATEDIBSECTION付けろ
つーかMSDN嫁

912 名前:デフォルトの名無しさん :2007/03/18(日) 02:33:17
>>911
IMAGE_ICONを指定した場合はLR_CREATEDIBSECTIONなんて関係ないが・・・。
お前さんもMSDN嫁。

913 名前:デフォルトの名無しさん :2007/03/18(日) 02:34:20
肝心のMSDNへのリンクがない件について

914 名前:デフォルトの名無しさん :2007/03/18(日) 02:45:11
>>913
MSDNくらい自分で検索できるだろ・・・。
http://msdn.microsoft.com/library/ja/jpwinui/html/_win32_loadimage.asp
http://msdn.microsoft.com/library/en-us/winui/winui/windowsuserinterface/resources/introductiontoresources/resourcereference/resourcefunctions/loadimage.asp

915 名前:デフォルトの名無しさん :2007/03/18(日) 02:56:12
>>907-914
その流れはワロタwwwwwwwwwwwww

916 名前:デフォルトの名無しさん :2007/03/18(日) 03:00:13
ネタなら笑えるが社会人になってマジでやるやつがいる件

917 名前:デフォルトの名無しさん :2007/03/18(日) 03:01:08
まあ「ちゃんと読んでます」って応える人間が多いこと多いこと・・・

918 名前:デフォルトの名無しさん :2007/03/18(日) 03:04:29
MSDN読んでます。
910はサイズにGetSystemMetrics(SM_CXSMICON)を指定してLR_DEFAULTSIZEを付けていました。
LR_CREATEDIBSECTIONつけてLR_DEFAULTSIZE外しても、
サイズ0でLR_DEFAULTSIZEでも同じでした。

プログラムのアイコンとかだと綺麗に出るんですが、
警告とかはギザギザで縮小したような?感じになっています。


919 名前:デフォルトの名無しさん :2007/03/18(日) 03:07:28
警告のアイコンってそもそも16x16が存在しないんじゃね?

920 名前:デフォルトの名無しさん :2007/03/18(日) 03:19:42
いまどき作った人が他界したようなMFCを使うなんざきちがい沙汰ですが。

921 名前:デフォルトの名無しさん :2007/03/18(日) 03:23:18
>>920

922 名前:デフォルトの名無しさん :2007/03/18(日) 03:50:14
>>919
イベントビューアとかで使っているので聞いてみたのですが、ないのかもしれませんね。
諦めて適当なのを組み込んで済ませます。お世話になりました。

923 名前:デフォルトの名無しさん :2007/03/18(日) 11:34:15
MFCのソースはapiの使い方のサンプル集として使える。
MFCをまったく使わない場合でも

924 名前:デフォルトの名無しさん :2007/03/18(日) 15:51:11
みんな、Vistaの新APIどう使ってる?
vc2005eeとplatformSDKをダウンロードしたんだけど、
VistaのAPIとかヘッダーファイルに定義されてないやん・・・。
platformSDKはwindowsSDKに変わったとかどっかで聞いたんだけど、
こっちをインストールしないといけないわけ?


925 名前:デフォルトの名無しさん :2007/03/18(日) 15:55:41
>>924
そういうこと。
全てLoadLibaryで明示的リンクをする、
ドキュメントはオンラインのMSDNライブラリを見るにしても、
構造体や定数の定義なんかはSDKのヘッダが見れないと不便だろ。

Windows SDKはPlatform SDKの後継だから、
Platform SDKをインストールせず初めからWindows SDKを入れて構わなかったのに。

926 名前:デフォルトの名無しさん :2007/03/18(日) 16:00:27
Windowd SDKだと.NET Framework 3.0 SDKが統合されてる関係か
Windows 2000がサポートされなくなった罠

927 名前:デフォルトの名無しさん :2007/03/18(日) 17:32:24
> Windows 2000がサポートされなくなった

Win2kで動作しなくなるということ?

928 名前:デフォルトの名無しさん :2007/03/18(日) 17:52:26
今のPlatformSDKだって、前のバージョンのOSであるNT4では完全には動作しないような・・・
違ったっけ

929 名前:デフォルトの名無しさん :2007/03/18(日) 18:26:25
SDKが動くもなにもSDKは動く物じゃないだろうが

930 名前:デフォルトの名無しさん :2007/03/18(日) 18:44:16
インストールに弾かれるのか?

931 名前:デフォルトの名無しさん :2007/03/18(日) 19:42:02
なんで実行環境と開発環境が分けて考えられないんだ?

932 名前:デフォルトの名無しさん :2007/03/18(日) 20:29:21
ターゲットとしてWin2kがサポートされなくなったってこと。
実際にはWinXPあたりをターゲットに選んで注意深く組めば動くだろうけど

933 名前:デフォルトの名無しさん :2007/03/18(日) 20:52:42
うーんと・・・.NETクライアントが
.NETフレームワークのバージョン情報を取得する方法というのは
どのようなものなのでしょうか?

予想1: レジストリ
予想2: 特定のDLLのバージョン取得関数
予想3: Microsoft.NET\Framework内のフォルダの名前

スレ違いで怒られたら申し訳ございません。

934 名前:デフォルトの名無しさん :2007/03/18(日) 20:59:41
発想が逆
クライアントの側がバージョンを指定するんだよ
スレ違いだからこれ以上のコメントがあったら.NETのスレでよろしく

935 名前:933 :2007/03/18(日) 23:14:08
申し訳ございませんでした。
.NETスレで何も無かったのでマルチしてしまいました。
どうもありがとうございました。

936 名前:デフォルトの名無しさん :2007/03/19(月) 04:04:37
【ネガティブ派遣根性チェック】

3つ以上、思い当たる点があればアナタの性格はひん曲がっており、ネガティブ負け組人生を歩んでいます。

□派遣先の人事権のある社員の意見はたとえ間違っていてもマンセーする
□派遣先から「いつまでもここで仕事してくださいね(安い金でw)」と言われて嬉しい
□自社で仕事なんてできるわけがない
□派遣労働の問題点の話題が出ると感情剥き出しにして反論する
□派遣労働の問題を指摘する人は嫌いだ
□派遣先には仕事だけでなくプライベートについてもグイグイ引っ張って欲しい
□奢ってくれる派遣先正社員を尊敬する
□自分の月額金額を知らないのは当然だ、単金を聞いてはいけない
□派遣先正社員より自分の生涯収入が低いのは当然だ
□派遣先に尻尾を振り、いつまでも派遣を続けることが大切だ


937 名前:デフォルトの名無しさん :2007/03/19(月) 17:19:12
VC2005,MFCでデフォルトのままUnicodeベースでビルドをしているのですが、
WritePrivateProfileString()で文字列を書き出すと、
INIファイルの中身がUnicodeになっていません。
Unicode専用の文字を入れると??になっています。
MSDNの記述ではWritePrivateProfileStringW()が呼ばれるはずなんですけど、
なにか設定が足りないのでしょうか?

938 名前:デフォルトの名無しさん :2007/03/19(月) 17:22:19
WritePrivateProfileStringWなどはマルチバイト文字列と変換して読み書きする仕様だったはず。
A版で書いてW版で読んだりなんてことができるようにと聞いた覚えがある。

939 名前:デフォルトの名無しさん :2007/03/19(月) 17:25:38
>>938
ということは、Unicode専用文字はINIファイルには記録できないということなのでしょうか?
エディットボックスで入力される文字をINIファイルで扱いたいのですが。

940 名前:デフォルトの名無しさん :2007/03/19(月) 17:30:05
Unicodeでないとダメな理由があるの?

941 名前:デフォルトの名無しさん :2007/03/19(月) 17:37:03
逆にWritePrivateProfileStringWでないとダメな理由があるの?
自分で読み書きすればいいだけ。

942 名前:デフォルトの名無しさん :2007/03/19(月) 17:45:20
ダイアログで入力された情報をINIファイルに記録しておきたいんですが、
Unicodeアプリである以上、Unicode文字が入力されることもあるので、
それらの入力をINIファイルに保存できないのは痛いなと思いまして。
アプリ内で参照するファイル名とかにUnicodeを使われていたら、
それらのファイル名情報もINIファイルでは保存できないということ…?

943 名前:デフォルトの名無しさん :2007/03/19(月) 17:47:52
WritePrivateProfileStructを使えばいいじゃないか。

944 名前:デフォルトの名無しさん :2007/03/19(月) 17:52:48
>>938のような動きをするということは.INIはデフォルトのANSIコードセットを使うというルールになってるんだろう。
どうしてもANSIコードセットに変換できないUNICODE文字を使いたいなら、
HEX文字列に変換して書き出すとか工夫がいりそうだね。

INIは古いレジストリ使えやゴラー
普通のアプリでレジストリ使うな、ApplicationSetting使えゴラー(いまここ)
ユーザーは振り回されて大変じゃのう。

945 名前:デフォルトの名無しさん :2007/03/19(月) 19:01:54
レジストリはまだ推奨事項だろ。レジストリに書けないような大きな連中を
どこに書くかって話でねーの。

946 名前:デフォルトの名無しさん :2007/03/19(月) 19:04:03
違います。

947 名前:デフォルトの名無しさん :2007/03/19(月) 19:06:11
デフォルトはwin.ini使う仕様だからそこにUnicode書かれたら困るし
iniそのものが過去の互換性のためにあるんだろ

948 名前:デフォルトの名無しさん :2007/03/19(月) 19:20:03
Application Settingsなんか.NETしか使えネーじゃん。
それとも何か、アンマネージだと「普通のアプリ」じゃネーとか言うのかこのスレで(w

949 名前:デフォルトの名無しさん :2007/03/19(月) 19:22:17
>Application Settingsなんか.NETしか使えネーじゃん。
( ゚Д゚)・・・

950 名前:デフォルトの名無しさん :2007/03/19(月) 19:29:20
>Application Settingsなんか.NETしか使えネーじゃん。
( ゚ω゚)・・・

951 名前:デフォルトの名無しさん :2007/03/19(月) 19:42:02
何?
RegOpenKeyEx
RegQueryValueEx
くらいのステップでApplication Settingsにさわれる
Win32APIがあるってーの?
まさかIXMLDOMを叩くなんて話じゃねーよな?

952 名前:デフォルトの名無しさん :2007/03/19(月) 20:08:50
UTF-7で書きなさい。

953 名前:デフォルトの名無しさん :2007/03/19(月) 20:44:41
アプリの設定なんてデータ交換に使うわけでもないんだから
好きなフォーマットにしる

954 名前:デフォルトの名無しさん :2007/03/19(月) 20:55:19
つまり、Unicode対応アプリケーションでは
INIファイルを使うなということになるんですかね。

でも、VC2005はデフォルトでUnicode設定になってるのに、
INIファイルにUnicode文字を書き込めないという書き込みが全然出てこないですね。
これらの組み合わせって、そこまで使われていないものなのでしょうか。

955 名前:デフォルトの名無しさん :2007/03/19(月) 21:06:51
エクスプローラやコモンダイアログ(ファイル開くなど)で現在参照してるディレクトリを
変更させることってできますか?

956 名前:デフォルトの名無しさん :2007/03/19(月) 21:15:36
>WritePrivateProfileString
>注意  この関数は、16 ビット Windows ベースのアプリケーションとの互換性を保つ目的でのみ提供されています。
>Win32 ベースのアプリケーションでは、初期化情報をレジストリに格納してください。

MSDNにこう記述があるにもかかわらず、これだけいつまでも使われ続けているAPIも珍しい。
アプリやフォーム間でのデータの受け渡しまでこれ使ってる糞プログラムのメンテをやらされてるから欝だ。

957 名前:デフォルトの名無しさん :2007/03/19(月) 21:15:49
まぁ実際のINIファイルの文字コードがどうなってるかは別として
GetPrivateProfile〜系APIにもちゃんとUNICODE版があるわけだが

958 名前:デフォルトの名無しさん :2007/03/19(月) 21:20:36
>>957
あるっちゃあるが >>938のとおり。

959 名前:デフォルトの名無しさん :2007/03/19(月) 21:22:39
>>954
出来ないとか駄目だとか言う前に工夫をしてみるのも大事だと思うが。

APIがUnicode版だろうと、INIファイルの文字コードはANSI(MS-Kanji)固定だぜ。
URLエンコードとかBASE64とかISHとか好きな符号化方式で変換して格納すれば済むと思うが。

960 名前:デフォルトの名無しさん :2007/03/19(月) 21:23:37
あ、ANSIの何が悪い!

961 名前:デフォルトの名無しさん :2007/03/19(月) 21:27:44
APIの問題ではなく、ファイル仕様の問題、みたいですネ

962 名前:デフォルトの名無しさん :2007/03/19(月) 21:40:53
Unicodeがらみの話で wprintfやwcoutを使ってコンソールに文字を出力すると、
結局ANSIコードに変換してしまうので、途中にUnicodeにしかない文字が入っていると、
その文字以降何も出力されなくなる。
WriteConsoleW以外にUnicode特有の文字をコンソールに出力する手段はないのかな?

963 名前:デフォルトの名無しさん :2007/03/19(月) 21:45:28
>wcout
localeは?ってWIN32APIじゃないな

964 名前:デフォルトの名無しさん :2007/03/19(月) 21:48:59
>>962
無い。
でもBoost.Iostreamsで、ReadConsoleWを呼ぶストリームバッファを作って
wcoutの代わりにするのはいけると思う。

965 名前:デフォルトの名無しさん :2007/03/19(月) 22:11:24
INIファイルをunicodeのBOM付きで予め作成しておくとよいかも?

そうか、↓みたいにUTF-7
[.ShellClassInfo]
IconFile=%USERPROFILE%\デスクトップ\FAQ\FAQ\faq.ico
IconIndex=0
[.ShellClassInfo.A]
IconFile=%USERPROFILE%\デスクトップ\FAQ\FAQ\faq.ico
[.ShellClassInfo.W]
IconFile=+ACU-USERPROFILE+ACUAXDDHMLkwrzDIMMMw1wBc-FAQ+AFw-FAQ+AFw-faq.ico

966 名前:デフォルトの名無しさん :2007/03/19(月) 22:19:22
やっぱりシステムの根っこに書き込みを行うのは抵抗あるんだよなあ
ディレクトリごと削除するだけでアンインストールが完全に終わるINIの方が好き

967 名前:デフォルトの名無しさん :2007/03/19(月) 22:22:49
レジストリなんて設定ファイルに毛の生えたようなのが固まってるだけだよ。たぶん

968 名前:デフォルトの名無しさん :2007/03/19(月) 22:25:27
自分でXMLパーサ書いてそれに記録させてる。
その程度作るのは大した手間じゃないし。

969 名前:デフォルトの名無しさん :2007/03/19(月) 22:35:58
>>962
スレ違いだから詳しくはよそで聞いて欲しいが、VC8はロケール関連にバグがある。

970 名前:デフォルトの名無しさん :2007/03/19(月) 22:43:54
>>964
うむやはりWriteConsoleWしかないですか、iostreamを書くのは俺の力量じゃ無理そうで
WriteConsoleラップした自家製printfでやっときます。
>>963 >>969
ローケルやVC2005のバグの件は了解しています。
これにかかるとUNICODE特有の文字だけでなく2バイト文字が全然でなくなりますから。


971 名前:デフォルトの名無しさん :2007/03/19(月) 22:44:44
そろそろカチンときそうです。

972 名前:デフォルトの名無しさん :2007/03/19(月) 23:02:00
>>954
Using Unicode in INI files
http://www.codeproject.com/file/unicode_ini.asp

965も書いてるけど
既存のUTF-16LEのINIファイルがある場合はそのコードで
無い場合は実行環境(日本語winならCP932)に合わせて保存されるらしいんだよな。
実際やってみると〜W版、〜A版関係なくそうなる。
OSが9x系のときはどうなるか知らないが…


973 名前:デフォルトの名無しさん :2007/03/20(火) 01:07:20
ゲームプログラムで質問です。
StrechBltで2倍に拡大して描画するのと画像サイズを2倍にしてそのまま表示するのとではどちらのほうが描画が早いですか

974 名前:デフォルトの名無しさん :2007/03/20(火) 01:15:13
やってみれ

975 名前:デフォルトの名無しさん :2007/03/20(火) 01:15:43
>>973
こんなところでいつ着くともしれないレスを待つより、自分でやってみた方が
早いと思うよ。

976 名前:デフォルトの名無しさん :2007/03/20(火) 01:25:37
>>972
98SEで試してみた所、UnicodeのINIファイルにANSIで追記された。
NT系でしか働かないのだろうな、その機能は。
Meだけ対応とかだったら嫌だな。

977 名前:デフォルトの名無しさん :2007/03/20(火) 06:59:53
>>956
INIほどじゃないがGetVersion()もよく使う。
9x/NT系の判別をする場合、戻り値の最上位ビットを見ればすむから。
GetVersionEx()はその目的にはちょっとめんどくさい。

978 名前:デフォルトの名無しさん :2007/03/20(火) 07:04:34
VC++についてるsignal.hにはなんでSIGKILLがないの?
signalで9番に関数登録しようとしただけでエラーになるし。

979 名前:デフォルトの名無しさん :2007/03/20(火) 07:15:52
?どっちにしろSIGKILLはキャッチできないじゃん。

980 名前:デフォルトの名無しさん :2007/03/20(火) 07:34:09
>>979
そうなんですか。どうもです。

981 名前:954 :2007/03/20(火) 09:31:36
>>972
なるほどたしかにあらかじめエディタでUnicode形式でファイルを作成し、
それに対してWriteProfileしてみたところ、Unicodeのまま書き込めました。

>>976のおっしゃる情報によると、NT系しか動かないようなので、
厳密にやろうとするとまた考えないといけないのでしょうけど、
今回のものは2000以降限定と言ってしまっても問題無いので、
そうなるとこれでも大丈夫ですよね。

みなさんありがとうございました。

982 名前:デフォルトの名無しさん :2007/03/20(火) 20:44:56
コントロールを作っていて困ったことがあったので質問させて下さい。

WH_GETMESSAGEフックを使って親ウィンドウのメッセージを盗みたいと思ってます。

コントロールはクラス化していて、GetMsgProcでインスタンスへのポインタを使うために、
グローバルなCAtlMapを使って、dwThreadIdとthisを関連づけて保持しています。
またSetWindowsHookExの戻り値もクラスのメンバとして保持してます。

そしてGetMsgProcでは、

MSG *msg = (MSG*)lParam;
CControl *pThis = g_hookMap[GetWindowThreadProcessId(msg->hwnd, NULL)];

このようにポインタを取得して、メッセージによって処理したり、CallNextHookExを呼び出したりしています。

ここで問題がありまして、msg->hwndにNULLが渡されることがあります。
(ちょっと調べた感じだとPostThreadMessageで渡されたメッセージでしょうか)

このときはpThisを使ってフックプロシージャのハンドルを取得できないため、
CallNextHookExを呼び出すことができないので、仕方なくreturn 0;で処理を中断しています。

msg->hwndがNULLでもちゃんとフックプロシージャのハンドルを取得できる
もっと上手いやり方がありましたらお教え下さい。

983 名前:デフォルトの名無しさん :2007/03/20(火) 20:58:44
親ウィンドウをサブクラスかでは駄目なのか?

984 名前:982 :2007/03/20(火) 21:10:27
>>983
サブクラス化も試してみました。

具体的にはWM_CLOSEを取得して確認ダイアログを出したいのですが、他のメッセージは取得できるのに
なぜかWM_CLOSEは取得できないまま終了してしまいました。

そこでフックを試してみたら上手く取得できたので、フックでやろうとしているのですが。。

985 名前:デフォルトの名無しさん :2007/03/20(火) 21:30:10
GetMessageフックはフックを受け取るスレッドのコンテキストで動くから
GetCurrentThreadId()でいいんじゃネーノ

986 名前:デフォルトの名無しさん :2007/03/20(火) 21:44:59
> フックを受け取る
もとい
メッセージを受け取る

987 名前:982 :2007/03/20(火) 22:44:15
>>985,986
おー!できるようになりました。ちゃんといろんなAPIを知っておかないとダメですね。

ありがとうございました!!

988 名前:デフォルトの名無しさん :2007/03/20(火) 23:08:51
次すれまだぁぁあんあん

989 名前:デフォルトの名無しさん :2007/03/21(水) 03:52:22

つ t[茶]

http://pc11.2ch.net/test/read.cgi/tech/1174416295/


990 名前:デフォルトの名無しさん :2007/03/21(水) 14:28:23
つか何度見ても2がおっかしー。
新しいのにはもうないけど。

991 名前:デフォルトの名無しさん :2007/03/21(水) 17:33:48
           /  ̄ ̄ '´ ̄ ̄ヽ、
            ノ/. /二二二ヽヽ  \
        <V/, '/ 人 |  ヽハ夊 、 |
         〃 {_{`ヽ  Vヽノリ| l >" i|
         ハ小l●    ● レ|、 | |
         |│ l⊃ rー- ⊂⊃|ノ |│
        /⌒ヽ.| .ヘ  ヽ ノ   jレ/⌒i !
      \ /:::レ l>,、 __, イァ/   /ノ
.        /:::::/ / ヘ:::|三/::{ヘ、__∧
       `ヽ<     ヾ:∨:::/ヾ:::彡

992 名前:デフォルトの名無しさん :2007/03/21(水) 18:27:52
   _
   /〜ヽ
  (。・-・)< うめてくだちゃい
   ゚し-J゚ 


993 名前:デフォルトの名無しさん :2007/03/21(水) 18:54:32


994 名前:デフォルトの名無しさん :2007/03/21(水) 19:02:46
コソーリ
ttp://wiki.livedoor.jp/program1/
最初に作った人とは違いますが・・・

このスレのファンです
時々質問したまま何も返さないのは私です
どうもすみません

995 名前:デフォルトの名無しさん :2007/03/21(水) 19:24:54
   _
   /〜ヽ
  (。・?・)
   ゚し-J゚ 



996 名前:996 :2007/03/21(水) 19:45:04
自己解決しました。
>>996にカチンときたので教えません。
バーカ!

997 名前:デフォルトの名無しさん :2007/03/21(水) 19:53:14
どう見てもオナニープレイです 本当にお疲れ様でした

998 名前:994 :2007/03/21(水) 19:56:26
ごめんなさい。
これぐらいしかできないのです・・・

999 名前:994 :2007/03/21(水) 20:00:49
評判が悪ければ取り下げますです。

1000 名前:デフォルトの名無しさん :2007/03/21(水) 20:01:35
                / ⌒ヽ 
                /      \ 
              ,.-‐''⌒ヽ   ,.=、  ヽー、 
              ,〃/∠彡ニ\ (.fゃ)  |  j 
            /       ミ彡三ヘ`=´   | | 
         /       ミ彡三∧    j ./ 
           ト ャ''"    ミ彡三∧.   // 
        」i _;''_,    ミ彡'ニミヘ、 〃 
          リ ´ ̄     リ´ f'`ij }/「i| 
         ヽ-         '´/ソ'川|| 
         ヽ一       「彡'川ll.||| 
          T   _   / ´ j||.川|| 
           ` ̄了、     i! 川.川| 
              _」. \    | j| 川|ト、 
        _/ ̄  \  \   '_/./川 ` 
        ̄       `    ̄  ´ 
       ネゴトワ・ネティエ[Negtva Netie] 
       (ルーマニア.1935〜54)  



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