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


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

Win32API質問箱 Build35
751 名前:デフォルトの名無しさん :2005/10/02(日) 16:27:58
>>749
つまりは、排他フルスクリーンでないアプリケーション全てってことになるな。

752 名前:673 :2005/10/02(日) 16:37:43
>>677

レスありがとうございます。
自前ですか・・・。頑張ってみます。

753 名前:デフォルトの名無しさん :2005/10/02(日) 17:17:53
>>728
何か勘違いしているようだが、GDIは元々ハードウェア支援がある。
S3全盛期の頃はビデオカードの機能といえば、GDIのアクセラレーションだった。
DDBなんて面倒な方式を使っているのは、そのためでもあるんだし。

754 名前:デフォルトの名無しさん :2005/10/02(日) 17:22:16
スレ違いと知りつつ言ってみるが、UNIXのX Window Systemで
ハードウェアアクセラレーションをオフにすると、2D描画も
非常に遅い。2D描画もVGAチップの恩恵を受けてる。

755 名前:デフォルトの名無しさん :2005/10/02(日) 18:12:08
そもそもOSが違う
帰れ

756 名前:デフォルトの名無しさん :2005/10/02(日) 18:43:49
んじゃディスプレイのプロパティ>設定タブ>詳細ボタン>トラブルシュートタブ>アクセラレートOFFにしてみれ

757 名前:デフォルトの名無しさん :2005/10/02(日) 18:46:14
こりゃ遅い

758 名前:デフォルトの名無しさん :2005/10/02(日) 19:34:05
>>756
m9(^д^)PGYAAAAAAAAAA

759 名前:デフォルトの名無しさん :2005/10/02(日) 20:52:04
>>753
S3とか懐かしい・・・初めて買ったマシンが864だったよ。
メモリなくてDOSでしか使ってなかったけど。

>>756試してみたが、あんまり遅くならんな。

セーフモードで起動したxpはウィンドウがうねるのが見えてたが、
標準VGAドライバはアクセラレーション全部OFFなのかな?

760 名前:デフォルトの名無しさん :2005/10/02(日) 21:11:42
XPのセーフモードで、高解像度になるなら、それはVESA BIOSを使ってるわけで、
解像度の変更と、フラットメモリアクセスくらいしか提供されない。

761 名前:デフォルトの名無しさん :2005/10/03(月) 00:31:35
あるWindowの子Windowをスクロールさせる処理を作っているんだけど、SetWindowEx()に
SW_SCROLLCHILDを指定すると表示がちらつく。
メッセージを追いかけてみると、WM_ERASEBKGNDが送られている。
Windowの表示位置が変わるとシステムがWM_ERASEBKGNDを送ってしまうらしいんだが、
これを抑止する方法知ってたら教えて。

762 名前:デフォルトの名無しさん :2005/10/03(月) 00:33:18
>761
> あるWindowの子Windowをスクロールさせる処理を作っているんだけど、SetWindowEx()に
> SW_SCROLLCHILDを指定すると表示がちらつく。
すまん。間違えた、
ScrollWindowEx()にSW_SCROLLCHILDRENを指定すると
だった。

763 名前:デフォルトの名無しさん :2005/10/03(月) 00:53:31
子WindowのクラスのCS_HREDRAWとCS_VREDRAWはもちろんオフだよね?

764 名前:デフォルトの名無しさん :2005/10/03(月) 00:57:25
>763
CS_HREADRAW,CS_VREDRAWは指定してないです。hbrBackgroundにもNULLを入れてます。


765 名前:デフォルトの名無しさん :2005/10/03(月) 04:36:44
質問です。あるアプリのラッパDLL内で
親アプリのウィンドウハンドルに関連付けてAVISaveOptionsを呼んだら
http://rerere.servebeer.com/src/up20317.jpg
こんな感じにデフォルトでウィンドウが画像ベース?になってしまい
特定のコーデックの設定画面が切れてしまいます。
そこで試しにDLL内でDLLのインスタンスを使ってCreateWindowExをして
空のウィンドウAを作り、そのウィンドウハンドルに関連付けて
AVISaveOptionsを呼んでみたのですが、変わらず↑のような画面が出てきてしまいます
(ShowWindowでウィンドウAを出して見たところ、画像ベースでない普通のウィンドウでした)
おそらく親アプリが事前に何か悪さしてるのであろうと考えているのですが、
MSDN内を探したりgoogle先生に聞いてみたりしましたが、解決法を見つけることができませんでした。
↑のように作ったウィンドウを自動で画像ベースにするようなAPIは存在するのでしょうか?


766 名前:デフォルトの名無しさん :2005/10/03(月) 06:43:01
>>761
WM_ERASEBKGNDでぐぐれ

767 名前:デフォルトの名無しさん :2005/10/03(月) 06:52:54
>>765
さっぱりわからないが勘で答えてさしあげよう
それはテーマってやつでテーマをOFFにすれば解決だね。

768 名前:デフォルトの名無しさん :2005/10/03(月) 15:41:49
test

769 名前:デフォルトの名無しさん :2005/10/03(月) 16:03:58
すいません、質問です。

http://aploda.com/dl.php?mode=pass&file_id=0000034649

↑のプログラムは左を押したら vk_left が増えて
その結果を表示するものです。
しかし、作成した「意味無し」ボタンをクリックした後ふたたび左を押すと
なぜか入力を受け付けなくなってしまいます。

わかりにくい文章で申し訳ありませんが、
どなかたお願いします。

770 名前:デフォルトの名無しさん :2005/10/03(月) 16:51:02
フォーカスがボタンにいってるから
試しに他のウィンドウクリックして戻ってから左押してみて。

771 名前:769 :2005/10/03(月) 17:18:50
>>770さん、どうもありがとうございます。
一度ほかのウィンドウに行ってから戻ってくるとキー入力復活しました!

でも毎回この操作をやるわけにもいかないし、
キーボードとボタンの併用は相性悪いんでしょうか・・

フォーカスでググったら
::SetForegroundWindow(hWnd);
って関数が見つかったので色んなところで呼んでみたのですが、
どうもうまくいきませんでした。

ボタンの処理が終わった後、フォーカス?をボタンから離す方法はありませんか?
連続質問ですみませんが、どうかお願いします m(__)m

772 名前:デフォルトの名無しさん :2005/10/03(月) 17:25:16
フォーカス移動させるのもいいけど
ボタンのサブクラス化したら?

773 名前:デフォルトの名無しさん :2005/10/03(月) 17:43:22
>>617ですが、マスク画像を半透明に描画したいのです。
どうすればいいでしょうか?
ラスタオペレーションで何とかなりませんか?

774 名前:デフォルトの名無しさん :2005/10/03(月) 17:43:37
なりません

775 名前:デフォルトの名無しさん :2005/10/03(月) 17:52:51
>>773
半透明用のマスク作って、ANDとかXORのROPをかければいいんじゃない?

776 名前:769 :2005/10/03(月) 17:56:04
>>772
サブクラス化でググってみましたけど、
私のレベルでは難しそう (T_T
フォーカス移動は
::SetActiveWindow(hWnd);
関数でも無理でした orz

>>773
私は使ったことありませんが、
::AlphaBlend()関数で半透明になるという噂が。。
嘘情報だったらすみません。
あ、あと、DIB作って貼り付け先画像と合成すれば半透明は可能ですよ。

777 名前:775 :2005/10/03(月) 17:56:57
ちと修正。
・半透明用のマスク→画像とは別の半透明用のビットパターン


778 名前:デフォルトの名無しさん :2005/10/03(月) 17:58:05
SetFocusくらい察知できるようになろーぜ

779 名前:769 :2005/10/03(月) 18:00:51
>>778
キタ*・゜゚・*:.。..。.:*・゜(゚∀゚)゚・*:.。. .。.:*・゜゚・*!!!!!
うあ、できました! 激しく激しく感謝!!

ボタンの終わりに呼んでしまってもいいんですよね。

780 名前:773 :2005/10/03(月) 18:53:43
>>775
BitBlt(hMem , 100 , 10 , 32 , 32 ,
hBkMem , 96 , 0 , SRCAND);
BitBlt(hMem , 100 , 10 , 32 , 32 ,
hBkMem , 64 , 0 , SRCINVERT);
SRCANDの方にはグレーの半透明用のマスクが、
SRCINVERTの方にはその画像が指定してありますが
色が反転してしまってしまいます。
どうすればいいでしょうか?

>>776
AlphaBlend()調べて使ってみましたが、
ラスタオペレーションの設定が分かりません。
半透明になってちょっと感動しましたが、
マスク画像は表示できないのでしょうか?

781 名前:デフォルトの名無しさん :2005/10/03(月) 19:34:52
反転させたいからSRCINVERTにしてんじゃないの?

782 名前:デフォルトの名無しさん :2005/10/03(月) 19:36:41
全力で間違えた。馬鹿な>>781に触らないであげてくださいorz

783 名前:773 :2005/10/03(月) 19:40:49
DirectX(DirectDraw)ならマスク画像を半透明にする事もできますかね?

784 名前:デフォルトの名無しさん :2005/10/03(月) 19:44:11
>>773
だからBitBltでラスタオペレーションじゃ無理だって言ってるだろ
半透明=アルファブレンドしたいんなら、上で出てるAlphaBlend関数だ
んで、AlphaBlendにはラスタオペレーションは無い

DirectDrawはマスク画像など使わない

785 名前:デフォルトの名無しさん :2005/10/03(月) 19:50:14
>>773
>マスク画像は表示できないのでしょうか?

発想の転換というものをしてみましょう
透過処理をするのだから、マスクしたいところをアルファ0で描画すればいいだけだろ?

786 名前:773 :2005/10/03(月) 20:03:29
>>784
分かりました。
率直な回答ありがとうございます。

>>785
つまり1ピクセルずつピクセルビットから
読み込んで表示汁という事ですか?

787 名前:デフォルトの名無しさん :2005/10/03(月) 20:14:24
透過色(抜き色)ではいかんの?

788 名前:773 :2005/10/03(月) 20:21:02
>>787
具体的にどういう事ですか?
くやしく教えてください。お願いします。

789 名前:デフォルトの名無しさん :2005/10/03(月) 20:27:56
>>786
アナタ、32bitBITMAPデータというものを知りませんか
ていうか、アルファブレンドって何かわかってますか

790 名前:773 :2005/10/03(月) 20:36:41
>>789
すみません。AlphaBlendは軽く調べただけで
どういう事ができるのか、どういう機能が備わってるのか
具体的には分かりません。
正直ぐぐっても、丁寧な説明が少なくてよく分からず、最後の引数に
至ってはほとんど何も分かりませんでした。

791 名前:デフォルトの名無しさん :2005/10/03(月) 20:49:00
あれだろ、あたらしいブレンド米の名前だろ?

792 名前:デフォルトの名無しさん :2005/10/03(月) 20:52:36
違う。ネスカフェ・アルファブレンド。

793 名前:デフォルトの名無しさん :2005/10/03(月) 21:07:13
>>790
http://ja.wikipedia.org/wiki/%E3%82%A2%E3%83%AB%E3%83%95%E3%82%A1%E3%83%96%E3%83%AC%E3%83%B3%E3%83%89

794 名前:773 :2005/10/03(月) 21:08:36
空気読めなくて悪いけど
AlphaBlendなら可能って事ですね。
お世話になりました。

795 名前:773 :2005/10/03(月) 21:15:10
>>793
うはwwwwwすみませ。ありがとうございます

796 名前:デフォルトの名無しさん :2005/10/03(月) 22:06:12
>>762
WS_CLIPCHILDRENは?

797 名前:デフォルトの名無しさん :2005/10/04(火) 04:10:50
ああなるほど。背景ブラシがNULLなのにWM_ERASEBKGNDのせいでチラつくって
なんかおかしいと思ってた

798 名前:762 :2005/10/04(火) 19:32:14
>796
WS_CLIPCHILDRENを指定してます。
>797
いや、背景ブラシがNULLなのは親Windowなんですよ。
子WindowにWM_ERASEBKGNDが飛んでいて、子Windowが背景を消去している。
「スクロールして新たに現れた領域」だけを再描画すればよいのに、なぜか子Window全体の
再描画指示がOSから送られてくるので、どうしたもんかと。


799 名前:デフォルトの名無しさん :2005/10/05(水) 00:05:18
>>798
思い出したが昔、子ウィンドウを一緒にスクロールさせるのに、
クライアントの上にもう一枚スクロールサイズと同じ大きさのウィンドウを被せて
その上に子ウィンドウを配置して、
スクロールさせるときは、クライアントに被せたウィンドウをMoveWindowなんかで動かす
と言うことをした覚えがある。
これだと子ウィンドウがちらつくことは無かった筈…なんだがもううろ覚え

800 名前:ハーピィ :2005/10/05(水) 01:32:14
E・∇・ヨノシ <800ゲット♫

801 名前:デフォルトの名無しさん :2005/10/05(水) 08:48:58
>799
なるほど。試してみます。

802 名前:デフォルトの名無しさん :2005/10/05(水) 19:29:23
CreateThread関数(_beginthreadex)なんですけど、
_beginthreadex(NULL,0,thread,NULL,0,&thID);
で、関数に渡すスレッドの引数のパラメータを第4引数に指定するとあるのですが、
どうやって渡せばいいのでしょうか・・

unsigned __stdcall thread(FILE *in);

main(){
FILE *in
_beginthreadex(NULL,0,thread,in,0,&thID);と指定してもエラーを吐いてしまいます('A

803 名前:デフォルトの名無しさん :2005/10/05(水) 19:33:45
>>802
unsigned __stdcall thread(void *in);
にしてみれ

804 名前:デフォルトの名無しさん :2005/10/05(水) 20:07:40
InitializeCriticalSectionAndSpinCount の使い方を教えてください。
スピンカウント?

805 名前:デフォルトの名無しさん :2005/10/05(水) 20:12:50
そんなもん不要
ポーリング最強

806 名前:デフォルトの名無しさん :2005/10/05(水) 21:08:45
>>802
キャストしてしまえばいい。
_beginthreadex(NULL, 0, (unsigned (__stdcall *)(void *))thread, in, 0, &thID);

807 名前:デフォルトの名無しさん :2005/10/05(水) 21:17:48
>>806
キャストを薦めるのはどうかと。
特に>>802のような人には悪影響与えそうだ。

808 名前:デフォルトの名無しさん :2005/10/05(水) 21:22:08
>>802
まぁ、あれだ。
まだマルチスレッド使うのは時期そうしょう(なぜか変換できない)ってことだ。
ちゃんとC勉強してからにしろ、な。

809 名前:デフォルトの名無しさん :2005/10/05(水) 22:49:35
>>808
総称、創傷 他変換できるぞ

810 名前:デフォルトの名無しさん :2005/10/05(水) 22:58:13
>>809
それはネタで言ってるのか?

811 名前:デフォルトの名無しさん :2005/10/05(水) 23:04:45
尚早

812 名前:デフォルトの名無しさん :2005/10/05(水) 23:15:48
ATOKなら「じきそうしょう」でも変換できるけどな。

813 名前:664 :2005/10/05(水) 23:28:11
>>664-722
timeGetTimeが常に同じ値を返す問題ですが、 再現性がありましたので報告いたします。
timeGetTime が返す値は 0xBFE561FD で、 これは timeGetTime の開始アドレスでした。
timeGetDevCaps の TimeCaps.wPeriodMax は 0xBFE56225 で、 timeGetDevCaps の
開始アドレスでした。

再現方法ですが、 先ず、 DirectX と MMTimer を使うアプリと、
MMTimer のみ使うアプリがあるとします。

OS起動後、MMTimer のみを使うアプリを先に一度でも実行すると、
その後どちらのアプリでも timeGetTime は正常なのですが、

DirectX と MMTimer を使うアプリを先に実行すると、
どちらのアプリでも timeGetTime は自身の開始アドレスを返すようになります。

814 名前:デフォルトの名無しさん :2005/10/05(水) 23:42:56
正常な時のtimeGetTimeのアドレスと異常な時のtimeGetTimeのアドレスは同じ?
何かヘンなdll呼んでないかなぁ…
ちなみにdllのロードは静的?動的?

815 名前:デフォルトの名無しさん :2005/10/05(水) 23:47:34
>>810
そう言うのは改めて聞くものではないぞ

816 名前:デフォルトの名無しさん :2005/10/06(木) 01:03:18
>>813
printf("%X", timeGetTime);
じゃねーだろーな?

817 名前:664 :2005/10/06(木) 03:16:16
>>814
アドレスは同じで、DLLは静的ロードです。
読み込んでいるDLLも動いているプロセスも、正常時と異常時で同じでした。

また色々したところ、DirectXを使わなくても異常になりました。
再起動しても異常だったり、正常だったりします。
関数の開始アドレスを返すのは確実なので、これで色々探してみます。


818 名前:デフォルトの名無しさん :2005/10/06(木) 04:18:06
>>803
なるほど渡す型はLPVOIDですから、受け取る側もLPVOIDにしなければならないのですね。
void* inに修正した所、無事受け取れたのですが・・
inはFILE*ですけど、関数に渡す時にはvoid*と表現されてますんで、例えばin=fopen("test.txt","r");
とする場合(FILE*)inとキャストしなければならないのです。

これはもう宿命でしょうね・・

819 名前:デフォルトの名無しさん :2005/10/06(木) 04:51:06
>>818
それは仕方ない。スレッドで受け取る引数は絶対使う型にキャストしないといけない。

820 名前:デフォルトの名無しさん :2005/10/06(木) 07:34:48
>>804
マルチプロセッサじゃないと意味ないばかりかCPUの無駄

821 名前:デフォルトの名無しさん :2005/10/06(木) 08:15:59
>>818
最初にFILE *の変数に代入してしまえばいい。
unsigned __stdcall thread(void *Param)
{
    FILE *in = (FILE *)Param;

822 名前:デフォルトの名無しさん :2005/10/06(木) 08:26:01
>>817
そんな話初めて聞いたから、君のプログラムがしょうもない
間違いをしているのではないかと思うが。

823 名前:デフォルトの名無しさん :2005/10/06(木) 14:02:04
先生_beginthreadexなんですが、、('A`)
MSのヘルプでは・・・
unsigned long _beginthreadex( void *security, unsigned stack_size, unsigned ( __stdcall *start_address )( void * ),
void *arglist, unsigned initflag, unsigned *thrdaddr );
んでarglistに渡す引数のリスト(無い場合はNULL)とあるのですが、
void* arglistというのは抽象過ぎて意味がわかりません。
いろいろ調べて考えて弄ったんですが、やっぱり意味がわかりません('A`)..

これはスレッドに渡す引数は配列にしなさいよーっつーことですか?


824 名前:デフォルトの名無しさん :2005/10/06(木) 14:04:13
すみません、問題も抽象過ぎました
スレッドが扱う関数に複数の引数を渡したいのです

825 名前:デフォルトの名無しさん :2005/10/06(木) 14:06:23
cのmainのargvと同じだろ

826 名前:デフォルトの名無しさん :2005/10/06(木) 14:10:42
構造体にでもまとめて、そのアドレス渡す。

827 名前:デフォルトの名無しさん :2005/10/06(木) 14:15:39
はぁ、構造体で渡しますか..
イマイチスレッドは扱いにくいですね

828 名前:デフォルトの名無しさん :2005/10/06(木) 14:42:45
構造体で渡した方が融通利くと思うが…。
扱いにくいかねえ。

829 名前:デフォルトの名無しさん :2005/10/06(木) 14:56:46
構造体をスタックに置いたりして

830 名前:デフォルトの名無しさん :2005/10/06(木) 14:57:00
別に配列でもいいけどな
まぁ、まとめて渡せってこった

831 名前:デフォルトの名無しさん :2005/10/06(木) 14:57:36
だから引数の「リスト」なんだろ

832 名前:デフォルトの名無しさん :2005/10/06(木) 14:58:23
ホイールマウスのホイールの回転の取得法を教えてください。

833 名前:デフォルトの名無しさん :2005/10/06(木) 14:59:33
arg = 引数
list = リスト

834 名前:デフォルトの名無しさん :2005/10/06(木) 15:04:47
>>832
メッセージがくるからそれを見ろ

835 名前:デフォルトの名無しさん :2005/10/06(木) 15:09:57
>>834
ありがとう


836 名前:デフォルトの名無しさん :2005/10/07(金) 01:15:46
>>820
シングルプロセッサだと無視されるから無駄にはならん。
まあ、最適な回数は、実際に試してみるしか、確実な方法がないのだけれど。

837 名前:デフォルトの名無しさん :2005/10/07(金) 03:20:27
マルチスレッドでVfWを扱いたいのですが
どうもAVIFileInit()が内部的にCOMを使ってるみたいでうまくいきません。
流れ的には

親プログラム開始→AVIFileInit→特定のキーが押されるとスレッドAを作成 →フラグAがOnになるまでループ
 →フラグAがOnになったらスレッドAのハンドルを閉じてAVIStreamWriteでデータを書き込み→全部書き込んだらAVIFileExitして終了

スレッドA開始→AVIFileOpen&AVIFileCreateStreamで書き込む為のストリームを形成
 →AVISaveOptionsで圧縮設定を受け取る→AVIMakeCompressedStreamで圧縮ストリームを作成
 →フラグAをOn→終了

こんな感じなんですが(エラー処理とかは端折ってます)このままだとスレッドAのAVIFileOpenで
CoInitializeは呼び出されてませんと怒られて失敗し、次のAVIFileCreateStreamでエラー起こします。
そこで親プログラムの最初のAVIFileInitをスレッドAの最初に持っていったのですが、
今度は親プログラムのAVIStreamWriteでCoInitializeは(ryと怒られて割と八方塞がりです。

838 名前:デフォルトの名無しさん :2005/10/07(金) 03:37:24
>>837
あー最初俺もそれでハマッタなぁ。
複数のファイルストリームに同時に書き出すの作ってて。
結局VfW関係は専用のスレッドに全ての処理を集めて作ったよ。
全て外部からのシグナルで制御するようにしてた。

その後DirectShowでリライトしたけど、
最初からDirectShow使って置けばよかったと後悔した。

839 名前:デフォルトの名無しさん :2005/10/07(金) 06:26:22
for (iYPos = bmpInfo.bmiHeader.biHeight - 1 ; iYPos >= 0 ; iYPos--) {
 for (iXPos = 0 ; ; iXPos++) {
  if (iXPos > (bmpInfo.bmiHeader.biWidth - 1)) {
   iCount = iLine * WIDTH_BYTE;
   iLine++;
   break;
  }
  if(bPixelBits[iCount + 2] == 0 &&
     bPixelBits[iCount + 1] == 0 &&
     bPixelBits[iCount] == 0)
   iCount += 3;
  else {AlphaBlend( hMem,iXPos , iYPos,1,1,hBkMem,iXPos , iYPos,1,1,bf);
   iCount += 3; }
 }
}
AlphaBlendを使った半透明処理なんですが、
BITMAPを1ピクセルずつ確認して黒なら無視、それ以外ならAlphaBlendで描画
というコードです。
AlphaBlendを何十回と呼び出しているので、動作も遅いと思います。
これ以上早いマスク画像の半透明描画があるなら教えてください。お願いします。

840 名前:デフォルトの名無しさん :2005/10/07(金) 06:59:15
>>837
CoInitializeEx?


841 名前:デフォルトの名無しさん :2005/10/07(金) 07:02:20
>>839
おまえそれ、1ピクセルずつ処理するんならAlphaBlendなんか使う必要無いだろ


842 名前:デフォルトの名無しさん :2005/10/07(金) 08:04:50
すいません、
BitBltで画面をキャプチャーするソフトを作っているのですが、
どうしてもマウスカーソルがキャプチャーされないのです。

どなたかマウスカーソルもキャプチャーする方法をご存知の方いらっしゃいませんでしょうか?


843 名前:デフォルトの名無しさん :2005/10/07(金) 08:48:12
キャプチャ時に現在のカーソル位置と形状取得して自分で描け。

844 名前:デフォルトの名無しさん :2005/10/07(金) 08:51:09
BitBltでマウスもキャプチャーは無理

845 名前:デフォルトの名無しさん :2005/10/07(金) 09:04:08
>>843
それだと使っているアイコンの種類によってはちがうもの書いてしまうこともあるでしょうし、

>>844
BitBltつかっちゃうと無理ってことは、
たとえば操作説明用にマウスカーソル付きで画面キャプチャー撮るソフトって
どうやってやってるのか分かりませんか?


846 名前:デフォルトの名無しさん :2005/10/07(金) 09:14:55
>>845
GetCursor

847 名前:デフォルトの名無しさん :2005/10/07(金) 09:49:14
>>846
それだとCursor関数を使って独自のマウスカーソルを表示していた場合
GetCursorはあくまでもハンドルを返すのでそれと同じものを描画できなくないですか?


848 名前:デフォルトの名無しさん :2005/10/07(金) 10:11:50
>>836
EnterCriticalSection による STATUS_INVALID_HANDLE 例外の
防止にも使えるんじゃない?

849 名前:デフォルトの名無しさん :2005/10/07(金) 10:42:26
Win32 APIのGetPrivateProfileStringについて
質問があります。
GetPrivateProfileStringを続けて2回コールした場合に
GetPrivateProfileStringの最後の引数のファイル名が
勝手に拡張子を除去して引数のファイル名を返却してくるので
2回目のGetPrivateProfileStringのコールでエラーとなってしまいます。

(引数のファイル名は変数にファイル名を格納したものを渡しています。)

GetPrivateProfileStringは引数のファイル名を勝手に拡張子をはずして返す仕様になっているのでしょうか?
Win32 APIの宣言で引数のファイル名はByValになっているのですが。
ご存知のかた解決方法をご教授願います。


850 名前:デフォルトの名無しさん :2005/10/07(金) 10:54:47
>>847
GetCursor()+DrawIconEx()


しのごの言わずに、まずは試してみろ。

851 名前:デフォルトの名無しさん :2005/10/07(金) 10:58:53
> GetPrivateProfileStringは引数のファイル名を勝手に拡張子をはずして返す仕様になっているのでしょうか?

んなわきゃない。LPCTSTRだから、変更しないのが仕様。
変数のサイズが悪いんじゃないか?プログラムを疑え

852 名前:デフォルトの名無しさん :2005/10/07(金) 11:35:36
>>850
DrawIconEx frmAAA.Picture1.hdc, 0, 0, GetCursor, 0, 0, vbNull, 0, 3
これでためしましたがやはりデフォルトのマウスカーソルが表示されるだけでしたね

http://ad-soft.hp.infoseek.co.jp/
ここのHPのマウスもキャプチャーというツールはしっかりキャプチャーできているようですが
APIだけではやはりむずかしいもんなんでしょうかねぇ


853 名前:デフォルトの名無しさん :2005/10/07(金) 12:04:13
>>839
http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/jpgdi/html/_win32_transparentblt.asp
ここらへんにある内容を見直したらいいんじゃないか。

854 名前:デフォルトの名無しさん :2005/10/07(金) 12:29:46
>>852 delphiだけど
ttp://www.woodybells.com/delphi_tips/index.cgi?mode=view&no=5

855 名前:デフォルトの名無しさん :2005/10/07(金) 13:17:56
>>849

>GetPrivateProfileStringの最後の引数のファイル名が
>勝手に拡張子を除去して引数のファイル名を返却してくるので
しません。

>(引数のファイル名は変数にファイル名を格納したものを渡しています。)
ソース晒して味噌。

>>851
VBらしいよ。

856 名前:デフォルトの名無しさん :2005/10/07(金) 13:52:29
>>854
VBに書き直して使ってみたらばっちりできました!!!
助言ありがとうございました^^


857 名前:デフォルトの名無しさん :2005/10/07(金) 15:09:19
ちょっと重い処理中は、WM_MOUSEMOVEの発行が途切れ途切れになりますよね。

そのためWM_MOUSEMOVE時の値を使って何かしていると、
その処理がマウス座標的に「コマ落ち」になってしまい困っています。

これを何て言うかシューティングゲームで言うところの「処理落ち」にしたいのですが、
何か良い方法があったら教えて頂けないでしょうか。

今のところ思いついたのは、途切れ途切れのマウス座標をスプラインにして補間、くらいです。
が、バカなので出来れば複雑な処理は避けたいところです。

858 名前:デフォルトの名無しさん :2005/10/07(金) 15:21:29
重い処理はなるべく別のできれば相対的に優先度の低いスレッドに処理させましょう。

859 名前:デフォルトの名無しさん :2005/10/07(金) 15:23:06
なるほど、別スレッドを使えば良いんですね。早速やってみます。
シンプルかつ有効な回答ありがとうございます。

860 名前:デフォルトの名無しさん :2005/10/07(金) 15:39:09
>>838
うーんやっぱりそれしかないですかね。
VfWはマルチスレッドに対応してないとこでも
もう古臭い技術なのかもしれませんね…


861 名前:デフォルトの名無しさん :2005/10/07(金) 15:57:23
case WM_CLOSE:
 id = MessageBox(hWnd,
  "終了してもよろしいですか",
  "確認",
  MB_YESNO | MB_ICONQUESTION);
 if (id == IDYES) {
  if(!KillTimer(hWnd , 1))
   MessageBox(hWnd , TEXT("Error") , TEXT("KillTimer Error") , MB_OK);
  DestroyWindow(hWnd);
  }
 break;


wsprintf(str , TEXT("gametime %d") , gameTime);
TextOut(hMem , 200 , i*5 , str , lstrlen(str));

終了時のメッセージに"終了してもよろしいですか"とあるのですが
結果はメッセージボックスの本文に"ime 0"と表示されてしまいます。
なぜでしょうか? 教えてください。お願いします。

862 名前:861 :2005/10/07(金) 16:37:34
スマソ。事故解決しますた。
mallocでメモリの確保してなかったぽいです。

863 名前:デフォルトの名無しさん :2005/10/07(金) 16:47:21
タイマー処理にてCreateTimerQueue()やCreateWaitableTimer()を使用したいのですがコンパイル時、リンクエラーとなってしまいます。
下記MSDNを見るとkernel32.libを使用とありますので特にリンクオプションは付けてません。

http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/jpdllpro/html/_win32_CreateTimerQueue.asp

念のため「cl test.c /link kernel32.lib」としてもリンクエラーとなってしまいます。
(コンパイルはCLを直接使ってます)

因みにサーバーの開発ですが、MAX1000スレッド程度のタイマーを同時に
張っても問題ないでしょうか。

当方、Unix屋さんでWindowsは余り経験がありませんので苦労しています。
誰か詳しい方、他にいい方法などあればご教示願います。

環境はWin2000(SP4)、Visual Studio 6.0(SP6)です。



864 名前:デフォルトの名無しさん :2005/10/07(金) 16:50:27
>>863
kernel32.libやらの有るディレクトリにパスは通ってるのか?

865 名前:デフォルトの名無しさん :2005/10/07(金) 16:50:39
>>863
比較的新しいAPIだからPlatform SDKを入れないといけないんジャマイカ。

866 名前:デフォルトの名無しさん :2005/10/07(金) 17:05:46
Platform SDK February 2003までだよな、VC6.0対応は。

867 名前:デフォルトの名無しさん :2005/10/07(金) 18:18:14
少なくとも、CreateTimerQueueはWin2kからのサポートだろ。
#define WINVER 0x500 なり
#define _WIN32_WINNT 0x500 はやってあるんだろうね?

868 名前:デフォルトの名無しさん :2005/10/07(金) 18:20:56
追加
CreateWaitableTimerはNT4.0からのサポート(MSDNより)
こちらは最低限
#define _WIN32_WINNT 0x400 が必要なはず。

869 名前:デフォルトの名無しさん :2005/10/07(金) 18:34:42
キャプチャ野郎は正直な話スパイウェアを作ってんじゃないかとハラハラしている俺がいる。

870 名前:デフォルトの名無しさん :2005/10/07(金) 18:38:36
>867, >868
ありがとうございます。
CreateWaitableTimer()はリンクできましたが、CreateTimerQueue()は駄目でした。
winbase.hを見るとCreateWaitableTimer()はあるのですが、CreateTimerQueue()は
はないみたいです。
もう一度、SDK入れてやってみます。
ちなみに、CreateWaitableTimer()とCreateTimerQueue()の違いって何でしょう?
違いがないならCreateWaitableTimer()でもいいかと。


871 名前:839 :2005/10/07(金) 19:18:04
>>841
1ピクセルずつならアルファ値を指定できる描画処理があるんですか?

872 名前:デフォルトの名無しさん :2005/10/07(金) 19:25:46
>>871
1ピクセルずつ処理するんなら自前で透過処理書いた方が速いだろ、ってこと。
アルファ付きビットマップ使えばAlphaBlend一発だ。

873 名前:デフォルトの名無しさん :2005/10/07(金) 19:37:37
誰か>>863のMAX1000スレッドという部分にツッコミをいれるべきじゃないのか?

874 名前:デフォルトの名無しさん :2005/10/07(金) 19:41:03
スレッド1000個作ろうが個人のかってだろ

875 名前:デフォルトの名無しさん :2005/10/07(金) 19:52:41
それ以前に、ハンドル待機関数の同時待機数が、
MAXIMUM_WAIT_OBJECTS 個に制限されている悪寒。
WaitFor〜()、MsgWaitFor〜()が該当する。
MAXIMUM_WAIT_OBJECTS の定義値は64。

876 名前:839 :2005/10/07(金) 19:58:44
>>872
すみません。言ってることがわけわかめ。
アルファ付きビットマップなんて聞いたことないし、
自前で透過なんていったら1ピクセルずつ判別して描画するくらいしか思いつきません。
AlphaBlendにそんな機能ありました?

877 名前:デフォルトの名無しさん :2005/10/07(金) 19:59:30
>>876
MSDNを100回でいいから読んでくれ

878 名前:デフォルトの名無しさん :2005/10/07(金) 20:21:32
>873
1000スレッドと言うのは適当です。
要はサーバーですからある程度スレッドが上がることになりますが、
MAXどれくらいタイマーを同時に張れるのかが知りたいのです。
システム上制限があるのであれば、APIを使わずに自分でやるとか
他のやり方を検討する必要があるかなと。

自分で出来るのであればそれでも構わないのですが、
他にやり方あれば教えて下さい。




879 名前:デフォルトの名無しさん :2005/10/07(金) 20:31:00
>875
すみません。
WSAWaitForMultipleEvents()も同じく64個の制限なのでしょうか。


880 名前:デフォルトの名無しさん :2005/10/07(金) 20:31:22
>>878
もうMSDN百回読んだのか。早いな。

881 名前:デフォルトの名無しさん :2005/10/07(金) 20:33:06
>>878
>MAXどれくらいタイマーを同時に張れるのかが知りたいのです。

ドキュメントに制約は書かれていない。
したがって、君が人柱になって報告するべき。

882 名前:デフォルトの名無しさん :2005/10/07(金) 20:58:24
>>876
おまえさんそりゃあ、教えてもらおうという態度じゃないべ

わからんならわかるように勉強しなされ
聞いたこと無いって言っても、そりゃ「アナタが聞いたこと無い」だけ
32bitビットマップでグーグル検索してみれ

883 名前:デフォルトの名無しさん :2005/10/07(金) 21:00:38
>>879
今のヘッダは確か、こうなっている

#define WSA_MAXIMUM_WAIT_EVENTS MAXIMUM_WAIT_OBJECTS

884 名前:839 :2005/10/07(金) 21:48:35
>>882
ごめんなさい。リアルで知らんかったです。
今まで苦労してBITMAPINFO構造体とか学んできただけあってか
アルファのあるビットマップが存在するとは思いませんでした。
ありがとうございます。吊ってきます。

885 名前:デフォルトの名無しさん :2005/10/07(金) 22:44:19
>>884
そりゃあおまいさん、疑問を抱く姿勢というものが無いな
BITMAPINFO構造体知ってるんなら、多少疑問が出てきそうなもんだがな
RGBQUADのとこで

886 名前:デフォルトの名無しさん :2005/10/07(金) 22:53:33
とりあえず、879は、WinsockFAQを見た方がいいな。

887 名前:839 :2005/10/07(金) 23:30:01
>>885
え? 間違ってたらごめんなさい。
アルファ値ってRGBQUADのrgbReservedに指定するんですか?
0固定じゃ…くぁwセdrftgyふじこlp;@:「

888 名前:デフォルトの名無しさん :2005/10/07(金) 23:34:58
>>887
頼むからMSDN読んでくれ。
ttp://msdn.microsoft.com/library/en-us/gdi/bitmaps_00h3.asp

889 名前:デフォルトの名無しさん :2005/10/07(金) 23:35:41
>>887
RGBQUADの構成で考えると0固定だがな
実際のビットマップファイルのビットデータ構造見たことないのか?
BITMAPINFOではRGBQUADで書かれてるけど、
実際の構造はRGBTRIPLEで24bit構造
アルファ値加えて32bitにしたら、RGBQUADのReservedに相当する領域しか無いだろう?

890 名前:デフォルトの名無しさん :2005/10/08(土) 00:03:33
CreateWindowEx でつくったウインドウの×ボタンを無効にするにはどうすればよいですか?
dwExStyle や dwStyle で指定できるものなんでしょうか?
それともウインドウをつくった後に、×ボタンへDisableメッセージを送って実現したりするんでしょうか?

891 名前:890 :2005/10/08(土) 00:04:30
ちなみに dwStyle に WS_SYSMENU を指定しないと確かに×ボタンはなくなりますが、
一緒に最大化・最小化ボタンもなくなっちゃうので、これ以外の解決策でお願いします。

892 名前:デフォルトの名無しさん :2005/10/08(土) 00:15:07
>>890
EnableMenuItem( GetSystemMenu( hWnd, FALSE ), SC_CLOSE , MF_BYCOMMAND | MF_GRAYED );
みたいな

893 名前:デフォルトの名無しさん :2005/10/08(土) 00:17:26
>>890
http://www.google.com/search?q=閉じるボタン+無効化
みたいなあ

894 名前:デフォルトの名無しさん :2005/10/08(土) 00:18:37
> それともウインドウをつくった後に、×ボタンへDisableメッセージを送って実現したりするんでしょうか?

いや、システムメニューに EnableMenuItem で Disable する

895 名前:890 :2005/10/08(土) 00:19:54
>>892-894
うほー皆様ありがとうございます。
>>893様のおっしゃる通り、ぐぐればすぐに見つかりましたね。。。
おかげさまで実現できました。ありがとうございました!

896 名前:デフォルトの名無しさん :2005/10/08(土) 05:24:49
http://homepage2.nifty.com/spw/software/hideseek/
こういうツールってどういった仕組みで実現してるんでしょうか?

HideSeekでは、次のデータの表示及び削除が可能です
・OutlookExpressのアカウント情報(メール [POP3・HTTP・ IMAP]・ニュース・ディレクトリサービス)
・Outlookのアカウント情報(同上)
・ダイアルアップ接続(アカウント名・ユーザ名・パスワード・電話番号・デバイス・利用者)
・InternetExplorerの認証パスワード(アドレス・タイトル・ユーザ名・パスワード)
・InternetExplorerのフォーム入力データ(フィールド名・入力文字・アクセス日時)
・InternetExplorerのURL履歴(URL・タイトル)
・InternetExplorerの一時ファイル(ファイル名・サイズ・アクセス日時・アドレス)
・InternetExplorerのクッキー(ドメイン・アクセス日時・サイズ・ユーザ)
・最近使用したファイル及びプログラム

基本的にこういうのってあんまり簡単にゲットできてほしくないんだけど。

897 名前:デフォルトの名無しさん :2005/10/08(土) 05:27:48
APIフックやりたいんだが
AdvencedWindowsのサンプルプログラムXPじゃちゃんと動かねーよ。

898 名前:デフォルトの名無しさん :2005/10/08(土) 05:31:44
"API Hook" でためしにぐぐってみた。
スゲーいっぱい出てきた。

899 名前:デフォルトの名無しさん :2005/10/08(土) 05:36:23
>>こういうツールってどういった仕組みで実現してるんでしょうか?
実現方法をここに書く。そこで見た人間全てが取得方法を知る。

>>基本的にこういうのってあんまり簡単にゲットできてほしくないんだけど。
簡単にゲットされたくないんだろうから、仕組みは書かないほうがいい。

さぁどっち?

900 名前:839 :2005/10/08(土) 07:20:38
>>888-889
ありがとうございます。
しかし、D-Pixedで編集した画像をバイナリエディタで改変したのですが
いくらReservedの値を変えても変化はありませんでした。
なんででしょう? orz。

901 名前:デフォルトの名無しさん :2005/10/08(土) 08:18:50
ダメだこいつ・・・
ファイルの仕様はおろか、使ってるアプリの仕様すら理解してないな

902 名前:デフォルトの名無しさん :2005/10/08(土) 08:31:12
>>901
馬鹿ですみません。
ttp://49uper.com:8080/html/img-s/86709.jpg
ピンクの部分がアルファ値になるという事ですか?

903 名前:デフォルトの名無しさん :2005/10/08(土) 08:33:50
>>902
だからダメだこいつってんだ
ファイルの構造も、アプリの仕様も理解してねぇじゃん
出直してこい

904 名前:デフォルトの名無しさん :2005/10/08(土) 08:34:42
ついでだ、
ビットマップ使うんなら、いくらフリーだからってD-Pixedなんか使うな

905 名前:デフォルトの名無しさん :2005/10/08(土) 08:38:22
鼻血吹いた

906 名前:デフォルトの名無しさん :2005/10/08(土) 08:52:04
まずファイル構造を勉強したほうがいいかと・・・

907 名前:902 :2005/10/08(土) 09:04:13
すみません。お世話になりました。
自分で何とか調べてみます。

908 名前:デフォルトの名無しさん :2005/10/08(土) 09:04:56
>>907
そんなこと言うなよ寂しいじゃないか馬鹿。一回り大きくなって戻ってこいよ。

909 名前:デフォルトの名無しさん :2005/10/08(土) 09:08:37
>>896
IEやOEがやってるのと同じことをしてるだけ

910 名前:デフォルトの名無しさん :2005/10/08(土) 10:02:09
インターフェースを公開している時点でMSにも責任はあると思う

911 名前:デフォルトの名無しさん :2005/10/08(土) 10:07:26
ファイルの構造ってか、基礎だよな。
Windowsをブラックボックス扱いしすぎてるんじゃないか?

912 名前:デフォルトの名無しさん :2005/10/08(土) 10:41:09
>>910
しなけりゃしないで「秘密のAPI云々」と叩かれるし

913 名前:デフォルトの名無しさん :2005/10/08(土) 11:45:47
フォルダを開きたいんですけど、関数とかないのでしょうか?
ググっても出てきません。
WINAPIじゃないのかとも思ったのですが、あれは間違いなくWINAPIですよね。

あの、解凍ツールとかで、解凍したらフォルダのウィンドウが自動で開くじゃないですか。
あんなのをやりたいんです。

914 名前:デフォルトの名無しさん :2005/10/08(土) 11:47:26
>>913
2コンのマイクに向かって「フォルダ開け!!!」と大声で叫ぶとOK

915 名前:デフォルトの名無しさん :2005/10/08(土) 11:49:21
>>913
1.ShellExecute()を使う。
2."explorer.exe <フォルダ名>" でCreateProcess()かsystem()する。
好きな方をどうぞ

916 名前:913 :2005/10/08(土) 12:01:54
>>914
2コンがありません。

>>915
ありがとうございます。
それを調べてやってみます。

917 名前:デフォルトの名無しさん :2005/10/08(土) 15:58:01
>>897
欄外の注意事項もちゃんと読もう。
たしかWin2000の注意だったが、XPも一緒。

918 名前:デフォルトの名無しさん :2005/10/08(土) 18:16:32
>>896
WNetEnumCachedPasswordsとかで検索してみ。
あとは芋づるにでてくる。

919 名前:デフォルトの名無しさん :2005/10/08(土) 19:56:54
>>918
どうもありがとうございました。
・OutlookExpressのアカウント情報(メール [POP3・HTTP・ IMAP]・ニュース・ディレクトリサービス)
・Outlookのアカウント情報(同上)
・InternetExplorerの認証パスワード(アドレス・タイトル・ユーザ名・パスワード)
・InternetExplorerのフォーム入力データ(フィールド名・入力文字・アクセス日時)
の4つは分かりました。
最近使ったファイル、履歴、一時ファイル、クッキーなどは
普通にフォルダ内のファイルを列挙しているだけなのでしょうか?
IEの履歴とかはイマイチ取得方法が分からないのですが。


920 名前:デフォルトの名無しさん :2005/10/08(土) 22:06:53
COM

921 名前:デフォルトの名無しさん :2005/10/09(日) 01:51:51
リストコントロールにエクスプローラ等からD&Dで
アイテムを追加するのをIDropTargetを使って実装してますが
リストコントロールの端の方にドラッグした時リストコントロールを自動でスクロールさせたいです。
そこでDragOverでDROPEFFECT_SCROLL捕まえてやれば出来るかと思いましたが
DROPEFFECT_SCROLLが発生しません。
何が問題なのでしょうか。

922 名前:デフォルトの名無しさん :2005/10/09(日) 08:53:49
しつもん
shellexecute = Win32API.new('shell32.dll','ShellExecuteA',%w(p p p p p i),'i')
shellexecute.call(0, 'open', 'http://www.google.co.jp/', 0, 0, 1)
これはrubyからWEBブラウザーを起動して指定のURLを表示するコードですが、

「p p p p p」
とpが5つも連続している理由がわかりません
なぜでしょうか?おしえてください

923 名前:デフォルトの名無しさん :2005/10/09(日) 09:01:22
>>922
俺はrubyを知らないが、それはおそらく引数の型の指定じゃないかと思う。

924 名前:922 :2005/10/09(日) 09:10:36
>>923
Rubyだからpが5つも並んでるんですか?
Win32APIの側のお約束ですか?

925 名前:デフォルトの名無しさん :2005/10/09(日) 09:39:04
ttp://www.ruby-lang.org/ja/man/index.cgi?cmd=view;name=Win32API
まあこれでも読んでrubyのWin32APIクラスの仕様でも勉強しる。

926 名前:922 :2005/10/09(日) 09:56:17
そもそもクラスというのがよくわかんない。
ネームスペースみたいなもんか?

(1)皇族
(2)華族
(3)武士
(4)職人
(5)証人
(6)農奴

とかあったら、これはクラス?ネームスペース?

それよりも
(a)魔術師
(b)戦士
(c)僧侶
とかあったら、これはクラス?

927 名前:デフォルトの名無しさん :2005/10/09(日) 10:04:21
オブジェクト指向についてはスレ違い

928 名前:デフォルトの名無しさん :2005/10/09(日) 10:15:04
関数付き構造体

929 名前:922 :2005/10/09(日) 10:28:08
>>925
いまみてきました
pはポインタのpみたいです。
ポインタを5つ使ってるということですね

930 名前:デフォルトの名無しさん :2005/10/09(日) 10:33:59
ちょっと聞いてくれ。
今VC、SDKで Win32_Find_dataを勉強してるんだけど、
構造体でnFileSizeLowがあるんだけど、型はDWORDなのに、2GBを超えるファイル作って
実験するとマイナスがつく。DWORDといえば、4Gまでは大丈夫と思ったんだけどどうしてかな。
解決方法、理由が分かる人いますか??教えてくれると助かる。

931 名前:デフォルトの名無しさん :2005/10/09(日) 10:39:24
符号付きintに変換して表示とか間抜けな事してるからじゃねーの?

932 名前:デフォルトの名無しさん :2005/10/09(日) 10:55:44
>>931
漏れもそれを考えたが、型指定(DWORD)にしても結果は同じ。
不思議なんだよ。

933 名前:デフォルトの名無しさん :2005/10/09(日) 10:56:06
>>930
志村〜、unsigned

934 名前:デフォルトの名無しさん :2005/10/09(日) 10:58:13
0x7FFFFFFF 2147483647

935 名前:デフォルトの名無しさん :2005/10/09(日) 11:07:01
>>932
変数の型がsignedだろうとunsignedだろうと、*printfで%d指定するような間抜けなことしたら一緒だぞ?

936 名前:デフォルトの名無しさん :2005/10/09(日) 11:09:01
>>935 さん。さすが。
もろやってました。。それが理由っぽい。。
一度文字列変換かな。。

937 名前:デフォルトの名無しさん :2005/10/09(日) 11:11:54
>>922
おまえにRubyは5年早い

938 名前:デフォルトの名無しさん :2005/10/09(日) 11:12:27
っていうかDWORDにマイナスないから

939 名前:デフォルトの名無しさん :2005/10/09(日) 11:28:27
>>938
うん。わかってたんですよ。。で、おかしい、おかしいって。
どこがまちがってるんだろう・・って。
ほんと、>>935 さんTHX。これで勉強進みます。

940 名前:デフォルトの名無しさん :2005/10/09(日) 11:32:11
つ[%u]

941 名前:デフォルトの名無しさん :2005/10/09(日) 11:46:28
問題は*printfの可変引数は変数の元々の型ではなく書式指定文字列の指定によって解釈されてしまう、という点なんだな。
もうAPIとは全く関係ない話だが。

942 名前:デフォルトの名無しさん :2005/10/09(日) 12:24:32
「printfの可変引数は」ではなく「可変引数は」だろ。


943 名前:デフォルトの名無しさん :2005/10/09(日) 12:38:10
>>942
えーまじー?

944 名前:デフォルトの名無しさん :2005/10/09(日) 12:54:21
書式使わなくて可変個数の引数の場合があるから
>942は大ウソ

945 名前:デフォルトの名無しさん :2005/10/09(日) 12:57:33
>>944
おもろいから本当のことは教えなくてよかったんじゃないかな

946 名前:デフォルトの名無しさん :2005/10/09(日) 13:00:10
自演乙

947 名前:デフォルトの名無しさん :2005/10/09(日) 13:11:21
自演(笑)

948 名前:デフォルトの名無しさん :2005/10/09(日) 14:29:54
>>919
> 履歴、一時ファイル、クッキーなどは
WinInet

949 名前:デフォルトの名無しさん :2005/10/09(日) 14:44:30
クッキー おいしいよクッキー

950 名前:デフォルトの名無しさん :2005/10/09(日) 20:41:31
質問です。
画像に合わせたウィンドウを作りたいと思います。(例:ドラえもんの顔の形をしたウィンドウなど
やり方としては透過色以外の部分をピクセル単位のリージョンで作り、CombineRgn->SetWindowRgnすればいいのでしょうが
他に何かスマートなやり方ありませんでしょうか?
よろしくお願いします。

951 名前:デフォルトの名無しさん :2005/10/09(日) 20:57:19
>>950
UpdateLayeredWindow。Windows2000以降でないと使えんが。

952 名前:950 :2005/10/09(日) 21:17:16
>>951
レスありがとうございます。
API初心者なので気づきませんでした。
さっそくMSDNとにらめっこしつつ試してみます。

953 名前:デフォルトの名無しさん :2005/10/09(日) 21:22:59
エディットボックスのカーソル(マウスカーソルではなく点滅しているカーソル)を変更する関数はありますか?
http://www.uploda.org/file/uporg211475.jpg
この画像の「4」のところにあるような文字と重なっているカーソルに変更したいのですが‥‥

954 名前:デフォルトの名無しさん :2005/10/09(日) 21:25:33
>>953
それはカーソルじゃなくてキャレットって言うんだ

質問に対してはすまん、シラネ

955 名前:デフォルトの名無しさん :2005/10/09(日) 21:29:20
>>954
レスありがとうございます
初めて知りましたorz
キャレットで調べてみます

956 名前:953 :2005/10/09(日) 22:15:38
解決しました。
エディットボックスにフォーカスが移動してきたときに
CreateCaretとShowCaretでキャレットを設定すればいいみたいです

case WM_COMMAND:
switch( HIWORD( wParam ) ) {
case EN_SETFOCUS:
w = 8; h = 15; // キャレットの幅と高さ(適当に指定するか別途GetWH( hwnd )のような関数を作成)
CreateCaret( hwnd, (HBITMAP)0, w, h ); // hwndはエディットボックスのハンドル
ShowCaret( hwnd );
break;
}
break;

>>954さんありがとうございました

957 名前:デフォルトの名無しさん :2005/10/09(日) 22:18:18
頑張れよー

958 名前:デフォルトの名無しさん :2005/10/09(日) 22:29:06
俺も初めて知った

959 名前:デフォルトの名無しさん :2005/10/09(日) 22:51:57
フロッピードライブみたいなリムーバブルディスクを
ローカルドライブに見せかける技って無いんですかね?
GetDriveType()の逆のSetする関数みたいなのがあれば最高なんだけぢ

960 名前:デフォルトの名無しさん :2005/10/09(日) 22:55:29
ない
ていうか、そんなことできるようにする意味がない

961 名前:デフォルトの名無しさん :2005/10/09(日) 23:18:28
ひどいもんだ

962 名前:デフォルトの名無しさん :2005/10/09(日) 23:22:11
意味が無いどころかむしろ非常に危険

963 名前:デフォルトの名無しさん :2005/10/09(日) 23:25:47
だが、それがいい

964 名前:デフォルトの名無しさん :2005/10/09(日) 23:28:55
いいわけないだろ

965 名前:デフォルトの名無しさん :2005/10/09(日) 23:30:42
ローカルではないが似たようなことは出来た。

966 名前:デフォルトの名無しさん :2005/10/09(日) 23:41:56
substでいけるかと思ったらそうでもないんだな

967 名前:デフォルトの名無しさん :2005/10/10(月) 00:58:49
ものすごく初歩的な質問なんですが、GUIプログラムでボタンを押すと処理をするとき、
処理中に固まらないようにCreateThreadでスレッドを生成して処理をするのって
あまり良くないのですか?
どんどんメモリの消費量が増えていくんですが・・・

968 名前:デフォルトの名無しさん :2005/10/10(月) 01:11:43
>>967
作成したスレッドをCloseHandleしてないとか。

969 名前:967 :2005/10/10(月) 01:39:14
>>968
CloseHandleは一応してるんですが、やり方が悪いのかも・・・。
一応タスクマネージャで見る限りではスレッドは終了しています。


970 名前:967 :2005/10/10(月) 01:52:54
case WM_COMMAND:
switch( LOWORD(wParam) ){
case IDOK1://ボタンが押されたときの処理
if((mainThread = CreateThread(NULL, 0,
test_Thread, hDlg, 0, NULL)) == NULL){
MessageBox(hDlg,"スレッドを生成できません","エラー", MB_OK);
break;
}
CloseHandle(mainThread);
}
break;

これじゃ駄目?

971 名前:デフォルトの名無しさん :2005/10/10(月) 02:36:16
>>970
一応言ってみる。
VCでは、_beginthreadexを使わないと、メモリリークが起きる。

Cのライブラリがスレッドごとに、一部のC標準ライブラリに必要なメモリを確保しているから。
CreateThread()を使うと、このメモリを開放するタイミングがわからず、リークする。

他のコンパイラを使っているなら、実装依存だから何ともいえない。

972 名前:デフォルトの名無しさん :2005/10/10(月) 02:47:39
メモリリークするのは使用頻度の低い関数ばかりだけどな

973 名前:デフォルトの名無しさん :2005/10/10(月) 03:50:18
ちなみにVCの場合とMFCの場合ではスレッドの生成方法を変えたほうが良い

974 名前:デフォルトの名無しさん :2005/10/10(月) 05:35:01
>>967
スレッドは使わないほうがいい

975 名前:デフォルトの名無しさん :2005/10/10(月) 05:41:08
PeekMessageでアイドル処理するとか書いといてやれよ

976 名前:デフォルトの名無しさん :2005/10/10(月) 07:53:00
つーかゲームじゃないんだし、
ボタンに対応した処理で固まるってどういう処理だよ
ボタン押して一瞬orしばらく応答無いのは普通だぞ・・・

977 名前:デフォルトの名無しさん :2005/10/10(月) 08:45:42
円周率を一億桁計算でもしてるんじゃないの?
>>967に聞かなきゃ分からないけど

978 名前:デフォルトの名無しさん :2005/10/10(月) 09:39:02
スレッド内でMFCを使う場合は、AfxBeginThread
スレッド内でCランタイムを使う場合は、_beginthread、_beginthreadex又はAfxBeginThread
スレッド内でAPIのみなら、CreateThread、_beginthread、_beginthreadex又はAfxBeginThread

>>967
固まるように感じる程の場合のみスレッドを考えればいい

979 名前:デフォルトの名無しさん :2005/10/10(月) 11:20:50
とりあえずAfxBeginThreadを使っとけば間違いないの?

980 名前:デフォルトの名無しさん :2005/10/10(月) 11:28:19
>>979
このスレ的にはそこまでは要らん。
AfxBeginThreadを使うならMFCスレに行け。

981 名前:デフォルトの名無しさん :2005/10/10(月) 11:36:37
Afx〜って関数はMFCのなのか

982 名前:デフォルトの名無しさん :2005/10/10(月) 11:45:50
タスクマネージャーについての質問です。
当方、Ctl + Alt + del が押されてタスクマネージャーを表示させる前に簡単なユーザ認証を行うダイアログを
表示させるようにしようとしています。
また、そのダイアログを普通のデスクトップにモーダレスで表示させたいのです。

現在、MSgina.dllを使用してdllをつくり、WlxLoggedOnSAS()内でダイアログを表示させています。
その結果、普通のデスクトップでダイアログが表示されず、logonデスクトップで表示されます。

WlxSasNotify()という関数がSASを受信して画面を切り替えているのかと思うのですが・・・。
画面の切り替わる前にダイアログを表示させたいのですが、どなたかこの辺の知識のある方はいますでしょうか。
ご教授ください。
よろしくお願いします。





983 名前:デフォルトの名無しさん :2005/10/10(月) 12:00:54
>>981
かつてのMFCの開発コードがApplicationFrameworkXだから

984 名前:デフォルトの名無しさん :2005/10/10(月) 13:41:34
ボタン1を持つ画面1とボタン2を持つ画面2があって、
それぞれのボタンを押すことで画面1と画面2を切り替える処理は
毎回ボタンを作成・破棄せずに全てのボタンを最初に作成し
必要に応じて表示・非表示とした方が良いのでしょうか?
ここでは画面2つの場合を例にしてますが、実際にはもっとたくさんの画面とボタンがあります。

985 名前:デフォルトの名無しさん :2005/10/10(月) 13:44:32
「たくさん」の程度にもよるけど、10画面くらいなら、表示・非表示でいいと思うけど。

986 名前:デフォルトの名無しさん :2005/10/10(月) 13:51:51
>>985
即レスありがとうございます。それでしたら表示・非表示で行こうと思います。
ありがとうございました。

987 名前:967 :2005/10/10(月) 14:34:31
>>976
>>977
ネットワーク関係のプログラムです。

皆さん助言ありがとうございました。とても参考になりました。

988 名前:デフォルトの名無しさん :2005/10/10(月) 16:09:19
>>982
デスクトップを切り替えてるのはWlxLoggedOnSASじゃないの?
「ようこそ」画面が有効だと画面切り替えなしでタスクマネージャが起動するから
少なくとも方法はあるはず
> モーダレス
モーダルかモードレスのどっちかにしなさい

989 名前:デフォルトの名無しさん :2005/10/10(月) 20:55:17
>>982
ttp://forums.belution.com/ja/vc/000/332/17s.shtml

990 名前:デフォルトの名無しさん :2005/10/10(月) 20:59:54
>>982
http://www.tt.rim.or.jp/~rudyard/torii009.html

991 名前:デフォルトの名無しさん :2005/10/10(月) 21:27:53
>>990
その意見はいちゃもんに近いな。
ニュアンス的にそぐわないとだけ指摘すればいいのに。
思慮が浅いだの背伸びしてるだの、いらんこと言う。

992 名前:デフォルトの名無しさん :2005/10/10(月) 21:29:57
今回の場合は思慮が浅いせいでマルチしたんだろうがな

993 名前:デフォルトの名無しさん :2005/10/10(月) 21:33:08
ご教授願いますって間違いだったのか。普通に使ってたorz

994 名前:デフォルトの名無しさん :2005/10/10(月) 22:15:17
つーか別に意味が通じるならいいだろうが
そもそも語彙なんて変化していく物なんだから

確信犯だって今じゃ誤用したのが普通に使われるだろうに

995 名前:デフォルトの名無しさん :2005/10/10(月) 22:20:36
>>990
ゲーム理論確立者にノーベル賞まで読んだ

996 名前:デフォルトの名無しさん :2005/10/10(月) 22:30:45
1000get-

997 名前:デフォルトの名無しさん :2005/10/10(月) 22:36:51
Win32API質問箱 Build36
http://pc8.2ch.net/test/read.cgi/tech/1128951330/l50

998 名前:デフォルトの名無しさん :2005/10/10(月) 22:37:52
また1がOmoti風味か

>>990
> 本来「教授」とは、学問や技芸などをきっちりと体系立てて教える場面に使われる言葉です

変化云々の前に、ここが恣意的なせいで、説得力がないな

999 名前:デフォルトの名無しさん :2005/10/10(月) 22:38:42
そろそろ1000か

1000 名前:デフォルトの名無しさん :2005/10/10(月) 22:39:38
Win32API質問箱 Build36
http://pc8.2ch.net/test/read.cgi/tech/1128951330/l50

現在中国のウイグル自治区(本来は東トルキスタン)の人々は中国共産党の 
圧政下に苦しんでいます。トルキスタンの人々は中国からの圧政への抵抗 
と独立を主張していますが中国共産党からテロと一方的に断定され現在も 
なお苦しんでいます。 
具体的には 
・強制中絶によって850万人もの赤ちゃんの虐殺 
・核実験によって75万人が放射能で死亡 
・50万人を政治犯として処刑・虐殺 
・エネルギー資源を一方的に搾取 
といった信じられないことをしています。しかしあまり世界では知られていません。 
おなじアジアの一員としてそして人間として中国共産党の蛮行に抗議し、 
世界の人々に知ってもらい、中国共産党に対する非難世論を呼びかけましょう!! 

中国のこの様な政策は近隣諸国の日本や台湾にとっても他人事ではありません。 

詳しくはこちらで↓↓↓↓↓ 
【ウイグル弾圧】VIPPERvs中国 東トルキスタンを救え7
http://ex11.2ch.net/test/read.cgi/news4vip/1128777843/l50
http://www.geocities.jp/saveeastturk/

かつて勇敢な日本兵は戦後インドネシアの独立を助けました。 
いまは東トルキスタンの番です!!


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