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


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

Win32API質問箱 Build20
751 名前:デフォルトの名無しさん :04/07/16 14:58
サイズ変更/移動中って、システム内部のローカルなメッセージループに
いるんじゃないのか?

752 名前:729 :04/07/16 15:09
>>750
GetMessageで取ってきてCallWindowProcで直接呼び、WM_SIZNGとWM_MOVINGはretun TRUEとし
DefWindowProcを呼ばないようにしたのですがだめでした

>>751
しかしながらspy++はサイズ変更中や移動中であってもWM_MOUSEMOVEを検出できているのですが
ローカルなメッセージループにフックのようなものを仕掛けているのでしょうか?

753 名前:デフォルトの名無しさん :04/07/16 15:15
DLLはparagma dataを使わないで変数をプロセスと共有するにはプロはどうやるのですか?

754 名前:デフォルトの名無しさん :04/07/16 16:23
別プロセス?
それならファイルマッピング

755 名前:デフォルトの名無しさん :04/07/16 16:25
同プロセスです

756 名前:デフォルトの名無しさん :04/07/16 16:41
JoyAdapterのような、キーボード入力等を他の入力にするプログラムを作っているのですが、
非アクティブ状態のプログラムでどうやってキーの入力を受け取れるのでしょうか?

757 名前:デフォルトの名無しさん :04/07/16 16:42
DLLフックに決まってるだろ

758 名前:デフォルトの名無しさん :04/07/16 16:43
>>755
普通にアドレス渡せ

759 名前:デフォルトの名無しさん :04/07/16 16:49
>>758
例えばDLLの中の変数をDLLメインで宣言定義して、その変数のポインターを
DLLメインの戻り値でWINメインに渡して使うということですか?
それともそれ以外に便利な方法ありますか?

760 名前:デフォルトの名無しさん :04/07/16 17:07
//dll.cpp
int var;

int* getvar()
{ return &var; }


//exe.cpp
int* pvar = getvar();

761 名前:デフォルトの名無しさん :04/07/16 17:12
よくわからんけど、__declspec(dllexport)、__declspec(dllimport)は
使っちゃいけない話になっているのか?

762 名前:デフォルトの名無しさん :04/07/16 17:18
素直に __declspec(dllexport) でいいじゃん。

763 名前:デフォルトの名無しさん :04/07/16 17:22
//dll
struct vars { /* 色々 */ };
vars* init() { return (vars*)malloc(sizeof(vars)); }
void func(vars* p) { /*色々*/ }
void term(vars* p) { free(p); }

//exe
vars* p = init();
func(p);
term(p);

とか。


764 名前:デフォルトの名無しさん :04/07/16 17:31
>>760 761 762 763
やっぱDLLの中の変数はグローバル変数じゃないと駄目にきまってますよね?

765 名前:デフォルトの名無しさん :04/07/16 17:33
オート変数はどうやっても無理だが。

766 名前:デフォルトの名無しさん :04/07/16 17:39
staticでもっておく。うげぇっ。

767 名前:デフォルトの名無しさん :04/07/16 18:03
__declspec(dllexport)、__declspec(dllimport)でどうやってデーターを共有するんですか?
これはDLLの関数がDLLにあることをコンパイラに知らせる命令ですよね?

768 名前:デフォルトの名無しさん :04/07/16 18:14
関数だけじゃねーよ
ちょっとは調べてみないんですかそうですか。

769 名前:デフォルトの名無しさん :04/07/16 18:15
>>767
それが気に入らないんなら、DEFファイルに書いて
変数のエクスポートでも出来ると思うが。

770 名前:デフォルトの名無しさん :04/07/16 18:19
変数もエクスポートできるんですか?
dll
__declspec(dllexport)int a=3;
exe
__declspec(dllinport)int a;
のように使えるとはしりませんでした
しらべてみて分からなかったらまた聞くと思います
いろいろ質問ありがとうございました

771 名前:教えてください :04/07/16 19:04
MCICreateWnd()で作ったウィンドウの親ウィンドウ内での表示座標を
変える方法はないでしょうか??
どーしても動画と同じウィンドウ内にアレコレ表示したいので
動画を再生する領域をちょっとずらすか親ウィンドウ内に他のものを表示
する空間を空けたりしたいのですが
どうすりゃいいのか途方にくれとりまする助けてえ

772 名前:デフォルトの名無しさん :04/07/16 19:16
HBITMAPをファイルに保存する場合は、どのようにしたらよいのでしょうか?

773 名前:デフォルトの名無しさん :04/07/16 19:41
そろそろ埋めるよ

774 名前:デフォルトの名無しさん :04/07/16 20:15
>>773
に釣られて、梅。

775 名前:デフォルトの名無しさん :04/07/16 20:29
HDCをファイルに保存したのですが、読みこもうとしてもうまくいきません。
どうしてくれますか。

776 名前:デフォルトの名無しさん :04/07/16 20:44
>>775
( ´,_ゝ`)プッと嘲笑って差し上げます。

777 名前:デフォルトの名無しさん :04/07/16 21:11
windows.h とiostreamなどの標準ライブラリーは一緒に使うのは普通ですか?

778 名前:デフォルトの名無しさん :04/07/16 21:12
>>771
MoveWindow ではダメですかそうですか。

779 名前:デフォルトの名無しさん :04/07/16 22:09
>>777
問題ないはず

780 名前:デフォルトの名無しさん :04/07/16 22:15
windows.h とiostreamなどの標準ライブラリーは、どちらを先にインクルードしたらいいんですか?

781 名前:デフォルトの名無しさん :04/07/16 22:18
windows.hは最初に

782 名前:デフォルトの名無しさん :04/07/16 22:18
どっちでもいい。
順番が問題になるのはwindows特有のヘッダのみ。
例えば
×
#include <hidsdi.h>
#include <windows.h>


#include <windows.h>
#include <hidsdi.h>

のように。

783 名前:デフォルトの名無しさん :04/07/16 22:19
stringは便利そうですよね

784 名前:デフォルトの名無しさん :04/07/17 04:05
724です。

>>725
やっぱ、Cでは普通のメモリ確保はmallocで決まりですよね。

メモリ確保の他にも、WIN32とランタイムルーチンで対応する関数がある場合に、
好んでWIN32を使う人がいますが、理由を聞くとAPI直接呼んだほうが
効率がいいからということをいいます。これってどこまでほんとうなんでしょうか。

fopenの代わりにCreateFileとか使ってると私は、なんで?と思ってしまうのですが。





785 名前:デフォルトの名無しさん :04/07/17 04:06
>>784
普通はHeapAllocする

786 名前:デフォルトの名無しさん :04/07/17 04:27
現実に有意な差があるかといわれれば無いが、fopenにしたところで最終的にはCreateFileなんかを呼んでいる訳で、かすかであれ効率がいいのは事実ではあるな。


787 名前:デフォルトの名無しさん :04/07/17 04:38
メモリはランタイムがブロックのプールをしている可能性もあるから
ネイティブ呼び出しが早いとは限らない。

788 名前:デフォルトの名無しさん :04/07/17 06:17
ファイル読込もfopenがバッファリングしてますな。

789 名前:デフォルトの名無しさん :04/07/17 06:25
プールも結局失敗するならやらないほうが効率よかったりもするが。

790 名前:デフォルトの名無しさん :04/07/17 09:40
>740
DirectInput

791 名前:デフォルトの名無しさん :04/07/17 10:46
>>784
コンソールプログラムのことを言ってんのか?
おまいは、Windowsプログラマーじゃないだろ。
COMとか、書いたことないのか。C runtime使いたくないんだよ。

Windowsプログラムなら、Win32APIを使うのが普通だろ。

792 名前:デフォルトの名無しさん :04/07/17 10:54
Cライブラリ=コンソール環境ではない。
Cライブラリを使わないスタイルを否定はしないが、無根拠にそれが普通とかいうと蹴飛ばすぞ。

そういえば、CライブラリのMS固有関数って、このスレの範疇?

793 名前:デフォルトの名無しさん :04/07/17 10:58
>>791は厨房プログラマー

794 名前:デフォルトの名無しさん :04/07/17 11:05
>>791
こちらへどうぞ
http://pc5.2ch.net/test/read.cgi/tech/1085915001/

795 名前:デフォルトの名無しさん :04/07/17 11:06
C++ライブラリーのほうがいいのにCライブラリーをあえて使うわけはなぜですか?

796 名前:デフォルトの名無しさん :04/07/17 11:06
釣れた!

797 名前:デフォルトの名無しさん :04/07/17 11:15
>>795
C++のも、Cランタイムライブラリに含まれているわけですが・・・

798 名前:デフォルトの名無しさん :04/07/17 12:00
最近、面白いのが多いね

799 名前:デフォルトの名無しさん :04/07/17 12:04
>>797
Cはprintf() c++はcoutを使う

800 名前:デフォルトの名無しさん :04/07/17 12:07
>>799
そういう意味じゃないって・・・

801 名前:デフォルトの名無しさん :04/07/17 12:17
グローバルフックのプロシジャーはグローバルフックをしておけば
本体で別のことしてる間も勝手に実行されるマルチスレッドみたいなものですよね?

802 名前:デフォルトの名無しさん :04/07/17 12:21
ポップアップメニューの文字の高さを変更するにはどうしたらいいの?

803 名前:デフォルトの名無しさん :04/07/17 12:24
>>800
というか>795に意味が含まれてないから誰もコメントできないかと

804 名前:デフォルトの名無しさん :04/07/17 12:39
グローバルフックは結局DLLのインスタンスハンドルだけを取得すれば
winmainの中でもグローバルフックできるんですか?

805 名前:デフォルトの名無しさん :04/07/17 12:59
>>801
グローバルフックの場合は本体とフックプロシージャのスレッドは異なるが、
そもそも各スレッドの存在するプロセス空間自体が違うので、
マルチスレッドというよりはマルチプロセスというほうが近い。

>>804
必要な情報さえ集まるのであれば、フックを仕掛けるの自体はどこででも。

806 名前:デフォルトの名無しさん :04/07/17 14:11
コントロールキー押したまま文字キーを押したことをウインドプロシジャーで処理するにはどうやりますか?

807 名前:デフォルトの名無しさん :04/07/17 14:53
GetKeyStateか、よくわかった

808 名前:デフォルトの名無しさん :04/07/17 15:53
APPのコードをライブラリ化。
長文ソース簡略化で作業時間、効率を削減。

基本的なWin32システムを支援します。

>>807 GetAsyncKeyStateもちゃんと乗ってまうs!!!

最強のACライブラリー
ttp://www.geocities.jp/osoftjp


809 名前:デフォルトの名無しさん :04/07/17 15:58
おい、まだ腐ったJavaScript破棄してないのかよ。ダサダサで無駄に敵を増やすだけだってのが分からないのか?

810 名前:デフォルトの名無しさん :04/07/17 16:23
効率を削減。効率を削減。効率を削減。効率を削減。

811 名前:デフォルトの名無しさん :04/07/17 20:38
>>809
うむ。自分としては、
猫プロ、創プロみたいな、ただソースのページに飛ぶシンプルなのがいい。

812 名前:デフォルトの名無しさん :04/07/17 23:24
GetAsyncKeyStateもちゃんと乗ってまうs!!!

813 名前:デフォルトの名無しさん :04/07/17 23:39
のってマウス

814 名前:デフォルトの名無しさん :04/07/18 00:06
APPのコードをライブラリ化。
長文ソース簡略化で作業時間、効率を増幅。

基本的なWin32システムを支援します。

>>807 GetAsyncKeyStateもちゃんと乗ってまうs!!!

最強のACライブラリー
ttp://www.geocities.jp/osoftjp


815 名前:デフォルトの名無しさん :04/07/18 00:30
作業時間を増幅すんのか。おじちゃん嬉しくて差し戻しちゃうよ!

816 名前:デフォルトの名無しさん :04/07/18 01:19

あまりにもしつこいので見てみたよ。

結論:使い物にならないクズ。

817 名前:デフォルトの名無しさん :04/07/18 02:25
>>814
あぼーんし辛いからコテ使ってくれないかな?

818 名前:デフォルトの名無しさん :04/07/18 02:28
URIであぼーんしろよ

819 名前:デフォルトの名無しさん :04/07/18 08:34
どうしてもWM_LBUTTONDOWNがきた時点でヒットテストとかをしてキャプションをドラッグしてるように
みせかけたいのですがどうしたらよいでしょうか
WM_LBUTTONDOWNがきたらSendMessage(hwnd,WM_NCLBUTTONDOWN,HTCAPTION,screenpos)としてるのですが
うまくいきません

820 名前:デフォルトの名無しさん :04/07/18 08:41
>>819
ttp://www2.wbs.ne.jp/~shingo/programming/vc/vc_tips002.htm

821 名前:819 :04/07/18 09:00
>>820
WM_NCHITTESTでは適当にHTOBJECTとかでも返して
WM_NCMOUSEMOVE,WM_NCLBUTTONDOWN,WM_MOUSEMOVE,WM_LBUTTONDOWNなどで対応したいのです

WM_NCHITTESTでHTOBJECTを返すと、とりあえずノンクライアント領域と判断されるらしく
WM_NCMOUSEMOVE,WM_NCLBUTTONDOWNなどのノンクライアント領域用メッセージが送られてきてそこで独自の
ヒットテストをおこなっているのですが、それだとボタンコントロールが押された、離されたなどの
処理がされなくなってしまいました.そこでWM_NCHITTESTでHTCLIENT以外だったらHTOBJECTを返し
HTCLIENTだったら素直にHTCLIENTを返すようにしました.そうすると今度はHTCLIENTだった場合に
WM_MOUSEMOVE,WM_LBUTTONDOWNなどのクライアント領域用メッセージが送られてきた時点ヒットテストなどをしなければ
HTCAPTIONだのHTTOPだのと偽れなくなってしまい、このような質問をさせていただきました
非常に文章がわかりずらくなってしまってすいません

822 名前:デフォルトの名無しさん :04/07/18 09:26
>>819
>キャプションをドラッグしてるように
と書かれているので、別にキャプションを右クリックして出てくるメニューは必要ない?

もしそうであるなら
WM_LBUTTONDOWNの時にGetCapture(hwnd)でマウスをキャプチャーして
WM_LBUTTONUPされた時にReleaseCaptureしてMoveWindowなどで移動するといいんじゃないかな

823 名前:デフォルトの名無しさん :04/07/18 10:21
質問です。
少し大きめのアイコン(24×24ぐらい)が表示されるツールバーを作りたいのですがよく分かりません。

IDB_STD_SMALL_COLORをつかって標準ビットマップを使う方法は分かったのですが、
自分で用意した画像を使ったその方法が分かりません。

どなたか教えてください。
(ちなみにツールバーを作る時はCreateWindowExを使っています)

824 名前:デフォルトの名無しさん :04/07/18 10:33
CryptAPIで証明書ストアに関する説明が載っている
日本語サイトってないでしょうか?

825 名前:デフォルトの名無しさん :04/07/18 10:51
>>824
英語嫁ばいいじゃん。

826 名前:デフォルトの名無しさん :04/07/18 10:54
>>823
LoadBitmapとか?

827 名前:デフォルトの名無しさん :04/07/18 11:01
>>823
>自分で用意した画像を使ったその方法が分かりません、というのは、
ビットマップの大きさを指定する方法がわからないのか、
ビットマップを読み込む方法がわからないのか、
何がわからないのかわからないのか、
そもそも何がわからないんだ。

828 名前:823 :04/07/18 11:01
いや画像の表示は出来てます。

問題はボタンが自分が指定したいサイズより小さいことです。
だからその指定方法を教えて欲しいです。

829 名前:823 :04/07/18 11:18
あ・・・TB_SETBITMAPSIZEを送ったら出来ました。
お騒がせしてすいませんでした(汗

830 名前:デフォルトの名無しさん :04/07/18 12:47
>>829
よかったよかった
おめでとう

831 名前:819 :04/07/18 13:04
>>822
すみません
今後HTSYSMENU,HTMINBUTTON,HTMAXBUTTON,HTCLOSEなどのヒットテストにも対応したいと
考えているので、SendMessageなどでメッセージを送るなどして具体的な処理はシステムにお任せみたい
な感じでお願いします.

832 名前:デフォルトの名無しさん :04/07/18 13:12
APIの質問とはちょっと違うかもしれませんが
MSDNでPSDKをDownloadした後
フォルダ削除したら
UnInstallは出来たのですが
ReInstall出来なくなってしまいました
どうすればいいでしょうか?

833 名前:デフォルトの名無しさん :04/07/18 13:14
>>832
質問する場所が違いそうなので
こちらで質問するといいと思います

VisualStudio.NET(MSDN Deluxe) Part13
http://pc5.2ch.net/test/read.cgi/tech/1083995297/

834 名前:デフォルトの名無しさん :04/07/18 13:15
>>819>>831
なんでそうする必要があるのかかいた方がいいよ。
もっと簡単な実現方法があるかも試練から。

835 名前:デフォルトの名無しさん :04/07/18 13:17
>>832
間違えた、こっちかもしれない
スレが落ちてるからageて質問してみてくれ

MSDNサブスクライバ【トラブル解決スレ】
http://pc5.2ch.net/test/read.cgi/tech/1081505326/


836 名前:デフォルトの名無しさん :04/07/18 13:18
>>831
元々普通にウィンドウを作成すれば
HTSYSMENU,HTMINBUTTON,HTMAXBUTTON,HTCLOSEなどのヒットテストには対応してるので
具体的な処理はシステムにまかされてます

837 名前:デフォルトの名無しさん :04/07/18 13:28
>>835
誘導ありがとうございます

838 名前:デフォルトの名無しさん :04/07/18 14:07
>>836
メニューとかエッジとか付いてない窓作って自前でその辺を描画するとかそんな用途なんでは無かろうか。
まぁ、834への解答次第か。

839 名前:819 :04/07/18 14:13
>>834
GUIライブラリみたいな物を作ろうとしていて将来的にはクロスプラットフォームなものにしたいと
思っています.既存のクロスプラットフォームGUIライブラリ代表としてfox toolkitをすこし調べたのですが
HitTestに対応するものがないように思えます.ここから勝手な想像なのですが、XウィンドウシステムでHitTestなど
の処理をするのはかなり面倒だからHitTestがないと推測しました.
そのような処理のむずかしいものをひとつのイベントとして定義するより引数として渡すほうが
いいと判断しました.
具体的には
struct mouse_eventargs:base_eventargs
{ unsigned int button,hittest; long x,y; };
こんな感じのものを参照渡しでユーザー定義のコールバック関数に渡しその中で
ユーザーがhittestにキャプションや最大化ボタンやサイズ変更境界などを表す定数を
代入して偽るみたいな感じなのですがWM_NCMOUSEMOVEなどのノンクライアント領域用と
WM_MOUSEMOVEなどのクライアント領域用のメッセージは同じコールバック関数onMousemoveを
呼び出す形になっています.そこでクライアント領域用のメッセージでもヒットテストなどを
してやることが必要になってしまいました

>>836
そのはずなのですが819のようにデフォルトのHitTestがHTCLIENTと判定しWM_LBUTTONDOWNが送られ
てきたところでSendMessage(hwnd,WM_NCLBUTTONDOWN,HTCAPTION,screenpos)としてもキャプションを
操作してることにはなってくれませんでした

840 名前:デフォルトの名無しさん :04/07/18 14:21
まさかお前は>>814か?

841 名前:デフォルトの名無しさん :04/07/18 14:23
CreateWindow関数の第一引数ってシステムクラスを使うときのためにあるって認識でいいですか?

842 名前:デフォルトの名無しさん :04/07/18 14:27
あ、RegisterClassで登録したWNDCLASSEX 構造体のlpszClassNameを読み出すためにもあるんですよね?

843 名前:デフォルトの名無しさん :04/07/18 14:33
SendMessage(hwnd,WM_NCLBUTTONDOWN,HTCAPTION,screenpos)


SendMessage(hwnd, WM_NCHITTEST, HTCAPTION, screenpos)じゃだめ?


844 名前:デフォルトの名無しさん :04/07/18 14:34
>>841-842
RegisterClassで登録したウィンドウクラスを使うためには第一引数で同じ文字列を入れなくてはいけないってこと

845 名前:デフォルトの名無しさん :04/07/18 14:44
>>844
グラシアス

846 名前:デフォルトの名無しさん :04/07/18 14:48
>>841
間違ってはいないが限定しすぎ。
本来的には、似た機能のウィンドウを複数作る時に手間を省くためにある。

WindowClassはウィンドウの型紙で、CreateWindowは型紙を元にウィンドウを作る。
BUTTONあたりはシステムで型紙用意してくれているのでそれ使ってCreateWindowすればいいし、
1から自分でウィンドウ作るなら自作のWindowClassをRegisterClassで登録してCreateWindowする。
システム製でも自作でも、型紙部分は一度登録しておけば何度も使いまわせる。

C++知ってるなら、WindowClassは文字通りウィンドウのクラスで、
CreateWindowはそのクラスのインスタンスを作るもの、と思えば分かりやすいかも。
(この場合のインスタンスはHINSTANCEとは別の概念だから間違うなよ)

847 名前:デフォルトの名無しさん :04/07/18 14:52
>>846
メルシー

848 名前:819 :04/07/18 15:49
できたーーーwwヘ√レvv〜(゚∀゚)─wwヘ√レvv〜─ !!
>>840
ちがいますよ(w
>>843
WM_LBUTTONDOWNがきたら
CallWindowProc(c->defwndproc, c->handle, WM_MOUSEACTIVATE, 0, MAKELPARAM(HTCAPTION,WM_LBUTTONDOWN));
としたらできました.
レスしてくださった皆さんありがとうございました

849 名前:819 :04/07/18 16:06
っとおもったら
case WM_NCHITEST:
   return HTCAPTION;
を消し忘れてただけでした.............

850 名前:デフォルトの名無しさん :04/07/18 16:10
>>849
>>820

851 名前:デフォルトの名無しさん :04/07/18 17:15
ダイアログベースのアプリケーションで、
仮想キーコードを文字として表示したいのですが、
どうやって変換すれば良いのでしょうか?

852 名前:デフォルトの名無しさん :04/07/18 18:27
>>851
sprintfで文字列に変換して表示すれば?

853 名前:デフォルトの名無しさん :04/07/18 18:37
0-9、A-Zなら仮想キーコード=ASCIIコード、そのまま
じゃなきゃMapVirtualKey

それ以外のキーを文字で表示したくて
LPARAMが使えるならGetKeyNameText
駄目なら自分でマップ

854 名前:デフォルトの名無しさん :04/07/18 18:45
lParam の何ビット目が1か0なのかを調べないといけない場合どうやるんですか?

855 名前:デフォルトの名無しさん :04/07/18 18:58
>>854
&

856 名前:デフォルトの名無しさん :04/07/18 18:59
>>855
もうちょっとヒントください
お願いします

857 名前:デフォルトの名無しさん :04/07/18 19:02
>>856
&で解らないならC言語を一からやり直すべき
やってないならCをやるべき

858 名前:デフォルトの名無しさん :04/07/18 19:12
>>857
Cもアセンブラもやったけど分かりません
教えてください

859 名前:デフォルトの名無しさん :04/07/18 19:13
そんなエサで(ry

860 名前:デフォルトの名無しさん :04/07/18 19:17
>>854

bool isNbitOn(unsigned lParam, unsigned n)
{
return (lParam >> n) & 1;
}


861 名前:デフォルトの名無しさん :04/07/18 19:22
>>860
Nビット右にシフトして一番下のビット以外を0にするということですね
僕の考えでは0000100000みたいな2進数が使えないから出来ないと思ってましたが
そういう頭のいいやり方があったんですね

862 名前:デフォルトの名無しさん :04/07/18 19:28
オーナードローをサポートしてないコントロールの描画をカスタマイズしたくて
サブクラス化してWM_PAINTを乗っ取りたいのですが、
このときコントロールを描かせるためCallWindowProcで元のwndprocを呼び出した後
BeginPaint等をしても、当然更新領域が空なので描画可能なHDCが取得できません。
このばあい、GetDCして独自の絵を上書きするのが正しいのでしょうか?

863 名前:デフォルトの名無しさん :04/07/18 19:31
>>861
いや、0000100000(何ちゅービット数だ)を作りたいだけなら 1 << 5 でいいんだけどね。
ビットチェックの場合は0/1にした方がboolとして扱えるから。

864 名前:851 :04/07/18 19:40
>>853
できました!
ありがとうございます

865 名前:デフォルトの名無しさん :04/07/18 19:40
>861 お前の頭が悪いだけだ。

866 名前:デフォルトの名無しさん :04/07/18 19:47
>>863
それも頭のいい考え方ですね
あとすこしで電卓もって10進数に変換するところでした

867 名前:デフォルトの名無しさん :04/07/18 20:38
・タスクマネージャなど、プロセスのメモリ使用量が見られるものを用意。
・VC++を使ってテンプレートよりWindowsの標準的なアプリケーションを作成
・そのままビルドして実行

実行直後のメモリ使用量は4MB程度で、最小化すると300KB程度まで減少、
再度表示させると1.2MB程度になってるわけで、こいつはなぜでつか?

868 名前:デフォルトの名無しさん :04/07/18 20:47
最小化されたアプリはページアウトされるから

869 名前:デフォルトの名無しさん :04/07/18 23:20
>>867
「仮想メモリサイズ」を表示させてみれ。

870 名前:デフォルトの名無しさん :04/07/19 00:23
コールバックが沢山あるのですが、

LRESULT CALLBACK Age( HWND ...
LRESULT CALLBACK Sage( HWND ...
LRESULT CALLBACK Hoge( HWND ...

typedef LRESULT CALLBACK ( *HogePtr )( HWND, UINT, WPARAM, LPARAM );
const HogePtr HogeHagePtr[ ] = {
Age, Sage, Hoge,
}

のように関数ポインタにしようとするとエラーが出てしまいます。
どうすればいいんでしょうか?

871 名前:デフォルトの名無しさん :04/07/19 00:26
>>870
typedef LRESULT (CALLBACK *HogePtr )( HWND, UINT, WPARAM, LPARAM );
の間違いじゃね?


872 名前:870 :04/07/19 00:52
>>871
CALLBACKは括弧の中でしたか・・・勉強になりました。サンクス。

873 名前:デフォルトの名無しさん :04/07/19 02:14
SHGetFileInfoで取得したアイコンのハンドルはDestroyIconで破棄するべきでしょうか?
いろいろなサイトを見てみると破棄しろという記述を見ますが個人的にはしてはいけないような気がします。
理由は、MSDNに書いて有るSHGetFileInfoのSHGFI_ICONの説明で
> Retrieve the handle to the icon that represents the file and the index of the icon within the system image list.
とある為です。
システムイメージリストのアイコンなら削除してはいけないと思うのですが。

874 名前:デフォルトの名無しさん :04/07/19 02:40
>>873
報告ごくろう。
下がってよいぞ。

875 名前:デフォルトの名無しさん :04/07/19 02:57
>>873
すべき。つーかしろ。

こうも書いてあるが。
>The handle is copied to the hIcon member ・・・
このコピーは単なるコピーじゃなくてCopyIcon/CopyImageのコピー。
それにDestroyIconしろって下の方にあるし。

876 名前:デフォルトの名無しさん :04/07/19 03:04
>>875
あー、MSのサイトには確かにそう書いて有りますね。
もってるMSDNは古いのか書いてませんでした。
Thx.

877 名前:デフォルトの名無しさん :04/07/19 03:11
しっかし、
> The handle is copied to the hIcon member of the structure specified by psfi,
> and the index is copied to the iIcon member.
前者のcopiedと後者のcopiedの意味が違うなんて罠だ。普通、わからんぞ。

878 名前:デフォルトの名無しさん :04/07/19 03:22
>>862
wParam == NULL なら BeginPaint で HDC を取得
SaveDC
CallWindowProc で元の WndProc を呼ぶ (wParam に HDC を入れる)
RestoreDC
追加の描画をする
EndPaint (BeginPaint を呼んだ場合)
return

879 名前:デフォルトの名無しさん :04/07/19 11:58
ネットワークを経由して他のパソコンの共有フォルダに
ファイルの作成とライトをしようとしています。
APIを使って実現するにはどうしたらいいですか?。


880 名前:デフォルトの名無しさん :04/07/19 12:06
"作成と書き込み","クリエイトとライト"のどちらかに統一しる

881 名前:デフォルトの名無しさん :04/07/19 12:13
クリエイトでおねがいします。

882 名前:デフォルトの名無しさん :04/07/19 12:33
それならCreateとWriteのほがいいと思う
ライトって見たら電気を思い出す低級魔術師でした

883 名前:デフォルトの名無しさん :04/07/19 13:17
通信網を経由して他の端末の共有・・・
フォルダって何だ?

884 名前:デフォルトの名無しさん :04/07/19 13:23
>>879
WNetAddConnection()
WNetAddConnection2()
WNetAddConnection3()
とか?そういう話じゃない?

885 名前:デフォルトの名無しさん :04/07/19 13:33
>>879
CreateFile("\\\\コンピュータ名\\共有フォルダ名\\残りのパス"ってできない?

886 名前:デフォルトの名無しさん :04/07/19 14:28
通常、フォントの幅(lfHeight)は0を指定すると思いますが
選択用のDCを作らずに幅を取得、または計算する方法ないでしょうか?

887 名前:デフォルトの名無しさん :04/07/19 14:45
無い

888 名前:デフォルトの名無しさん :04/07/19 14:58
ttfでも読んで解析すりゃええやん。

889 名前:デフォルトの名無しさん :04/07/19 15:08
その解析方法を聞いてるんだろ

890 名前:デフォルトの名無しさん :04/07/19 15:09
質問者がその態度じゃ誰も解答してもらえませんよ
穏やかにいきませう

891 名前:デフォルトの名無しさん :04/07/19 15:11
>>888
ださいですね

892 名前:デフォルトの名無しさん :04/07/19 15:19
質問がダサイ以上回答がダサくなるのは必定。

893 名前:デフォルトの名無しさん :04/07/19 15:20
文字列の幅のサイズを測るAPIってなかったっけ?
あれはHDC必要なんか

894 名前:デフォルトの名無しさん :04/07/19 15:26
BOOL GetTextExtentPoint32(
HDC hdc, // handle to DC
LPCTSTR lpString, // text string
int cbString, // characters in string
LPSIZE lpSize // string size
);

895 名前:デフォルトの名無しさん :04/07/19 15:27
解決?

896 名前:デフォルトの名無しさん :04/07/19 15:28
>>895

> HDC hdc, // handle to DC
だから、解決してないでしょ

897 名前:デフォルトの名無しさん :04/07/19 15:30
Win32APIスレに質問してるんだし
HDCは使える環境であると仮定されてるんだし
HDC使えばいいんじゃね?

何か使えない理由でも?

898 名前:デフォルトの名無しさん :04/07/19 15:31
>>893
文字幅じゃなくて、lfWidthに指定する幅を取得したいんですよ。
TEXTMETRICのtmAveCharWidthだと思うのですが。
lfWidth=0で作成したときとの比がWidth:Height=2:1のフォントを作成したいから、どうしても幅を取得したいわけです。
使いもしないオブジェクト(選択用DC、基準フォント)を作るのはどうも気が進まないので。

899 名前:デフォルトの名無しさん :04/07/19 15:32
ぼくわホントクラスをつくて各インスタスごとにホントのハンドルと
互換ヂーシーのハンドルをもつようにしてす、

900 名前:デフォルトの名無しさん :04/07/19 15:33
886=898で、他の人は関係ありません。
って言っても、この流れは止まらないか。

901 名前:デフォルトの名無しさん :04/07/19 15:33
チャーリィ(あるじゃーn(ry)登場

902 名前:デフォルトの名無しさん :04/07/19 15:34
>>898
くりえいとのときに固定ぴっちを指定するのはだめなんですか

903 名前:デフォルトの名無しさん :04/07/19 15:54
このすれわなぜとまているのですか。

904 名前:デフォルトの名無しさん :04/07/19 16:06
>>902の質問に答えてくれないからじゃないかな

905 名前:879 :04/07/19 16:07
>>879です。

>>884>>885 レスありがとうございます。
今日は休日なので試せないので明日やってみます。


906 名前:デフォルトの名無しさん :04/07/19 16:30
>>898
何がやりたいのかさっぱりわからん。

lfWidthが0だとフォントの都合のいい幅にしかならんから、
フォント次第では永遠にW:H=2:1になることなどありえんし、
第一可変幅フォントはどうするんだ? 固定ピッチしか考えてないのか?

説明不足すぎ。

907 名前:デフォルトの名無しさん :04/07/19 16:48
>>906
全角:半角が2対1ではないです。
基準フォントと比較して幅が2倍になるってことなんですが、うまく説明できてませんでしたか。

基準フォント MS UI Gothic lfHeight=-n, lfWidth=0 で作ったフォントのサイズを Width=w, Height=h とすると、
作成したいフォントのサイズは Width=2w, Height=1hとしたいわけです。
固定ピッチでもプロポーショナルでも単純に横幅2倍のフォントを得たいのです。


908 名前:デフォルトの名無しさん :04/07/19 16:50
もっとシンプルに

>lfWidthが0だとフォントの都合のいい幅にしかならんから

この都合のいい幅の2倍の幅が欲しいのです。

909 名前:デフォルトの名無しさん :04/07/19 17:02
何?横倍角文字でも表示したいの?

910 名前:デフォルトの名無しさん :04/07/19 17:12
>>909
ちょっと違いますが、そんな感じです。

基準の絵を横2倍に伸張したのでは解像度が低くなるので、
フォント作成の時点で横2倍のフォントが欲しいのです。

911 名前:デフォルトの名無しさん :04/07/19 17:30
>>910
基準フォントって何?

アプリ起動時からDCに割り当ててあるフォントの話なら、普通にGetDCして幅取ればいい。
これに関しては他に方法はないだろ、DC以外情報持ってないんだから。
(それとも、GetDCしたくないがために、システム設定からフォント情報拾ってくる手間をかけるつもり?)

ただこの仮説だと、
> 使いもしないオブジェクト(選択用DC、基準フォント)を作るのはどうも気が進まないので
の部分が意味不明になる。幅取るだけならSelectFontの必要がないから。

自分で「基準として」設定したフォントなら、って、このケースはありえないよな。
自分で知ってるはずなんだから。

ますますわけがわからん。最初っから、省略なしで、説明しなおしてくれ。

912 名前:デフォルトの名無しさん :04/07/19 18:12
>>911
lfWidth=0でCreateFontをした結果得られる最適な幅を持つフォントを基準フォントとします。
この基準フォントは、任意に選択可能であるものと思ってください。>>911で言う、自分で
「基準として」設定したフォントです。

で今回の質問ですが、この基準フォントの横倍角のフォントを作成したいのですが、
lfWidthに指定する値をどうやって求めればいいのですか?

その際、基準フォント自身は一切使われる事が無いので実体はありません。



>自分で知ってるはずなんだから。

知らないから、それを得る手段を探しているのです。

913 名前:デフォルトの名無しさん :04/07/19 18:15
SetWindowsHookEXの引数のWH_KEYBOARD_LLがwindows.hはincludeしてあるのに使えません
なぜ使えないのですか?
教えてください


914 名前:デフォルトの名無しさん :04/07/19 18:16
ターゲットバージョン未指定じゃないのか、と脊髄反射

915 名前:デフォルトの名無しさん :04/07/19 18:17
(>>912の続き)

LOGFONT lf;
CHOOSEFONT cf = { sizeof(CHOOSEFONT), 0, GetDC(0), &lf, 0, CF_SCREENFONTS };
::ChooseFont(&cf);
lf.lfWidth = ???;
::CreateFontIndirect(&lf);

倍角フォントを作成するために、
???でするべき事を教えてください。


916 名前:デフォルトの名無しさん :04/07/19 18:20
そーいえば2000とかじゃないと使えないとマイクロソフトにかいてありました
どうやってターゲットバージョンをしていしますか、おしえてください

917 名前:デフォルトの名無しさん :04/07/19 18:23
#define WINVER 0x500←2000
#define WINVER 0x501←XP
#define WINVER 0x502←2003Sv(?)

918 名前:デフォルトの名無しさん :04/07/19 18:24
#define WINVER 0x500
をwindows.hの前に定義するでいいんですよね
ありがとうございました

919 名前:デフォルトの名無しさん :04/07/19 18:25
>>915
実際にフォントを作ってDCに選択しない限り、
何のフォントがマップされるかわからないし
平均幅だって知りようがないと思うよ。
ダメ元でEnumFontFamiliesでもしてみれば?

920 名前:デフォルトの名無しさん :04/07/19 18:25
実際はNTシリーズなら全部対応してるんで、
#define WINNT
でいいのかもしれない(未確認)

921 名前:デフォルトの名無しさん :04/07/19 18:37
>>919
作成した時点だけではなく、デバイスコンテキストに選択した時点で
使用されるフォントの本当の実体が決定されるって言う事ですか?

922 名前:デフォルトの名無しさん :04/07/19 18:42
>>921
そう。

SelectFontしてDCに選択させるまで、フォントの「本当の」幅を得る方法はない。
なぜなら、CreateFontで作成するのはデバイスに独立した論理フォント、仮のフォントだから。
論理フォントをDCで選択することではじめてDCと物理フォントが結びつき、
その時点ではじめて物理フォントの幅が得られる。

物理フォントがどういうものになるかは、選択するデバイスの特性に依存する。
今のビデオカードのようなラスタデバイスなら論理フォントに近い属性のものになりうるが、
(これは極端だが)昔のキャラクタ端末のようなものなら論理フォントでどう指定しようと
物理フォントは特定の特性しか持ち得ない。
逆に、ベクトルプロッタなら「本当に」論理デバイスに忠実な描画ができる(かもしれない)。

こういうさまざまなデバイスを統一的に扱うことを前提としてGDIは設計されているので、
論理オブジェクトでできることはいろいろ制限がある。
GetDeviceCapsでも眺めれば、そんな歴史の遺物の一端がみられるよ。

923 名前:デフォルトの名無しさん :04/07/19 19:56
>>883 ( ´,_ゝ`)プッ・・

924 名前:デフォルトの名無しさん :04/07/19 19:59
Borland C/C++、WindowsXPです。

ISHELLFOLDER型のポインタのLPSHELLFOLDERで
EnumObjectを使いたいのですが

LPSHELLFOLDER *lpShellFolder;
SHGetDesktopFolder(&lpShellFolder);
lpShellFolder->lpVtbl->EnumObject (lpShellFolder,hwnd,
SHCONTF_FOLDERS | SHCONTF_NONFOLDER | SHCONTF_INCLUDEHIDDEN, &lpEnumIdList);

となってますが
エラー E2316 ex.cpp 129: 'lpVtbl' は 'IShellFolder' のメンバーではない(関数 __stdcall WndProc(HWND__ *,unsigned int,unsigned int,long) )
と返されてしまいます。
始めにshlobj.hをインクルードしてるので、shlobj.hの中身を読んで見ましたが
思わしき関数を見つける事が出来ませんでした。

Borland C/C++の場合はなんと言う名前なのでしょうか?

925 名前:デフォルトの名無しさん :04/07/19 20:17
>>924
C++なら直接lpShellFolder->EnumObjectで行けるんじゃないの?

926 名前:デフォルトの名無しさん :04/07/19 20:44
>>925
エラー E2316 ex.cpp 129: 'EnumObject' は 'IShellFolder' のメンバーではない(関数__stdcall WndProc(HWND__ *,unsigned int,unsigned int,long) )
と返されてしまいました
どうやら違うみたいです

927 名前:デフォルトの名無しさん :04/07/19 20:50
>>924 EnumObjectじゃなくてEnumObjectsだが。

928 名前:デフォルトの名無しさん :04/07/19 20:53
>>927
>エラー E2227 ex.cpp 132: __stdcall IShellFolder::EnumObjects(HWND__ *,unsigned long,IEnumIDList * *)
>の呼び出しに余分なパラメータがある(関数 __stdcall WndProc(HWND__ *,unsigned int,unsigned int,long) )
というエラーに進展しました
あとは自力で何とかしてみようと思います

929 名前:デフォルトの名無しさん :04/07/19 20:54
お礼言うの忘れましてすみません。
有難うございました。

930 名前:デフォルトの名無しさん :04/07/19 21:04
ついでにエラーも出ないようなったので報告
lpShellFolder->EnumObjects (hwnd,
SHCONTF_FOLDERS | SHCONTF_NONFOLDERS | SHCONTF_INCLUDEHIDDEN,
&lpEnum);

としました

931 名前:デフォルトの名無しさん :04/07/20 12:28
Eventがシグナルか非シグナルかを調べるにはどうやればいいですか?

932 名前:デフォルトの名無しさん :04/07/20 12:34
>>931
WaitForSingleObject(event, 0);

933 名前:デフォルトの名無しさん :04/07/20 12:51
>>932
ありがとうございました

934 名前:デフォルトの名無しさん :04/07/20 15:17
SetEvent()をグローバルフックプロシジャーの中でやっても
プログラムの中のWaitForSingleObject(event,INFINITE)が止まったままです
event handleをDLLに渡して使ってます
わかりません教えてください

935 名前:デフォルトの名無しさん :04/07/20 15:23
>>934
Handle は作成したプロセスでのみ有効なので、作成したプロセスの PID を共有しておいて、
フックされたそれぞれのプロセスで DuplicateHandle して、当該プロセスで有効なハンドルを
得る必要があります。

936 名前:デフォルトの名無しさん :04/07/20 15:25
>>935
はい、やってみます
ありがとうございました

937 名前:デフォルトの名無しさん :04/07/20 16:52
>>934=931?
ようするに同期とりたい訳でしょ?
だったらウィンドウメッセージを使うと吉。

938 名前:デフォルトの名無しさん :04/07/20 17:44
windows2000以降ならウインドウの透明化が簡単にできるらしいのですが、
98でも透明化することはできますか?

939 名前:デフォルトの名無しさん :04/07/20 17:46
HBITMAPを使って、ビットマップのあるピクセルの
RGBを得るにはどうすればよいのでしょうか?

940 名前:デフォルトの名無しさん :04/07/20 17:50
FindFirstChangeNotificationでは、
監視するファイルの拡張子を指定できませんか?

941 名前:デフォルトの名無しさん :04/07/20 18:30
>>938
Windows 2000 でできるようになった方法は、Windows 98 では使えない。
みーたんは知らん。

>>939
できる。

>>940
API を見ればわかる通り、できない。


942 名前:デフォルトの名無しさん :04/07/20 18:31
>>938 APIの機能としては存在しない。自分でガリガリコード書く必要あり。
>>939 適当なDCにSelectBitmapしてGetPixelとか。
>>940 できない。NT系のみだがReadDirectoryChangesWでごそごそやる手はある。

943 名前:デフォルトの名無しさん :04/07/20 18:41
FindFirstChangeNotificationで拡張子指定は難しいですか。

では、ある程度の時間間隔でマージされたイベントを受信したいのですが、可能ですか?

944 名前:デフォルトの名無しさん :04/07/20 18:47
可能だよ。自分で適当にイベント無視すりゃいい。

945 名前:デフォルトの名無しさん :04/07/20 20:07
>>938
http://www.ksky.ne.jp/~seahorse/libgw/
例えばこんな外部のライブラリに頼るか、自分で実現するかしかない。

946 名前:938 :04/07/20 20:11
お答えありがとうございました

947 名前:デフォルトの名無しさん :04/07/20 21:15
mouse_event以外の方法で強制的にマウスをクリックさせたりする方法は無いでしょうか?

948 名前:デフォルトの名無しさん :04/07/20 21:18
いま、ちょっとしたいたずらをするプログラムを書いています。
やりたい事は、

いきなりメモ帳が起動される。←これはできた。

自動的に"むだむだむだむだ"と入力され、変換される。うまくいけば"無駄無駄無駄無駄"になる。←これができない。



メモ帳のEDITコントロールにWM_KEYDOWNとWM_KEYUPを送ってみました。
たしかにメッセージが送られていることを、spy++を使って確認したのですが、なぜか文字が入力されません。
WM_SETTEXTという手もあるんですが、一文字一文字入力されていったほうがインパクトがあると思うのです。
一文字づつ文字を増やしてコピーというのも、変換の動作が出来ませんし

keybd_event()だと、アクティブでないといけないし、

どなたか方法を知りませんか?

949 名前:デフォルトの名無しさん :04/07/20 21:32
>>948
WM_TIMER
「むだむだ」の上に「無駄無駄」を上書き

950 名前:デフォルトの名無しさん :04/07/20 21:40
そーゆーいたずらプログラムは、自分で考えないと意味がない。
出来ないなら、いますぐやめろ。

951 名前:948 :04/07/20 21:41
>>949
それ以前に、半角英数字すら入力できないのですが。

↓こんな感じです。aと入力したいのですが……

#define CHAR_A 0x41

SendMessage(notepadHwnd, WM_KEYDOWN, (WPARAM)CHAR_A, NULL);
SendMessage(notepadHwnd, WM_UP, (WPARAM)CHAR_A, NULL);

952 名前:デフォルトの名無しさん :04/07/20 22:05
>>951
遊びみたいだからズバリは言わないでおくけど、Spy++でメモ帳をよーく見てみよう。

953 名前:948 :04/07/20 22:05
× WM_UP
○ WM_KEYUP

954 名前:デフォルトの名無しさん :04/07/20 22:10
>>951
面倒くさいことしなくても(WPARAM)'A'でいいだろ

955 名前:948 :04/07/20 22:11
>>952
もっと、ズバリと手取り足取り教えてください。
頭が悪いのでspy++見てもわかりません。

956 名前:948 ◆e.MQo98ta. :04/07/20 22:14
>>955
偽者

>>952
やってみます。

957 名前:デフォルトの名無しさん :04/07/20 22:39
SendInputとか使わないの?

958 名前:デフォルトの名無しさん :04/07/21 00:49
誰か頭悪い漏れに教えて下され。
16bitカラーのスクリーンをキャプチャした時、BITMAPINFO::bmiColors にセットすべき、
3つのDWORD値はどうやって取得すれば良いのですか。


959 名前:デフォルトの名無しさん :04/07/21 01:04
>>935
名前付きイベント作ったほうが簡単じゃね?

960 名前:デフォルトの名無しさん :04/07/21 02:20
>>958
キャプチャって何? スクリーンのDCからBitBltしてきた物? キャプチャライブラリの出力?
bmiColorsは3つのDWORD値などではないが、いったい何をセットする気だ?
そもそもそのHBITMAPは何なのだ? キャプチャの結果? それともそのコピー先?

俺も頭悪いから、おまえさんが何をしたいのかさっぱりわからん。

961 名前:デフォルトの名無しさん :04/07/21 02:29
bmiColorsに三つっていったら、BI_BITFIELDSの事だろうと想像は付くが。
そんなマンドくせーフォーマット使うよか、24bitで受けた方が話は早いと思う。

962 名前:デフォルトの名無しさん :04/07/21 09:52
>>958
試してないけど、ドキュメントには、

BYTE bmiBuffer[ sizeof(BITMAPINFO) + sizeof(RGBQUAD)*3];
BITMAPINFO* pBMI = (BITMAPINFO*) bmiBuffer;
ZeroMemory(pBMI, sizeof(bmiBuffer));
HDC hdc = GetDC(NULL);
GetDIBits(hdc, (HBITMAP) GetCurrentObject(hdc, OBJ_BITMAP),
 0, 100, NULL, pBMI, DIB_RGB_COLORS); // 0と100は適当

とかすれば BITMAPINFO を得られるようなことが書いてある。


963 名前:デフォルトの名無しさん :04/07/21 12:43
VirtualAllocができない。
VirtualAlloc(NULL,512000000,MEM_RESERVE | MEM_COMMIT,PAGE_READWRITE);
メモリー3G、XP−SP1でできない
NT−SP6ならOKだ。誰か助けてくれ!

964 名前:デフォルトの名無しさん :04/07/21 14:59
>>963
512MB近くの連続領域は運が良くないと取れないと思うぞ。

32bit Windows ではユーザプロセスは標準では 2GB の仮想空間しか持
てない。その中に不連続に exe や DLL がマップされる。

Windows 2000 以降だったら、3GB モードを使えば確保できる確率は上
がるかも。


965 名前:デフォルトの名無しさん :04/07/21 16:10
ウインドウの外枠を透明にすることってできますか?

子ウインドウの枠を消していろいろやりたいんですが・・・

966 名前:デフォルトの名無しさん :04/07/21 16:12
WS_POPUP

967 名前:デフォルトの名無しさん :04/07/21 16:24
>>966
ありがとです

968 名前:デフォルトの名無しさん :04/07/21 16:29
EnumWindowsで取ったウインドーハンドルから
そのウインドーがどのプロセスのものか調べるにはどうやればできますか?
教えてください

969 名前:デフォルトの名無しさん :04/07/21 16:32
タイトルバーに付いてるシステムボタン(クローズとか)を、
完全に無反応にすることって可能でしょうか?
(ボタンが機能する状態と、無反応の状態を切り替えたい)

押しても閉じない状態まではできるんですが、それでも
ボタンを押したままの状態だと制御がWINMAINに戻ってこなくて・・・
メイン部分を別スレッドにするとかしないとダメ?


970 名前:デフォルトの名無しさん :04/07/21 16:34
GetSystemMenuして、SC_CLOSEを無効化

971 名前:デフォルトの名無しさん :04/07/21 16:36
>>969
disableにするのはダメなの?

972 名前:デフォルトの名無しさん :04/07/21 16:56
>>963
脇道にそれるけど512MB=512*1024*1024だからそれだとちょっと足りない。

973 名前:デフォルトの名無しさん :04/07/21 17:09
>>970 >>971
ボタンをdisableやgrayedにして機能しなくすることはできたんですが、
これだとボタンの上でクリック(ドラッグ)すると、放すまで制御が
WINMAINに戻ってこないんですよね。
ボタン押されてもMAINのコードが止まらないようにしたいんですよ。

974 名前:デフォルトの名無しさん :04/07/21 17:35
WM_NCHITTESTかな?

975 名前:948 ◆e.MQo98ta. :04/07/21 17:38
できた……。

>>968
GetWindowThreadProcessId()


976 名前:デフォルトの名無しさん :04/07/21 17:44
>>975
ウインドーハンドルからプログラムのEXEファイルの名前が知りたいのです
それをやるにはどうやりますか?

977 名前:デフォルトの名無しさん :04/07/21 18:01
GetModuleFileNameのような気がしたのでやってみます
違ってたらおしえてください

978 名前:デフォルトの名無しさん :04/07/21 18:03
>976
MSのKBにまんまその回答があったなぁ。
GetModuleFileNameはローカルプロセス専用だった気がする。

979 名前:デフォルトの名無しさん :04/07/21 18:05
>>977
それはモジュールハンドルやインスタンスハンドルを引数に取るんでウィンドウハンドルは無理です。

980 名前:デフォルトの名無しさん :04/07/21 18:08
?

981 名前:デフォルトの名無しさん :04/07/21 18:28
やっぱりGetWindowThreadProcessId()してOpenProcessしてEnumProcessModulesしてGetModuleFileNameExのような気がしてきた

982 名前:デフォルトの名無しさん :04/07/21 21:35
キーボードの左キー(VK_LEFT)を押しながら、
'Z'キーを押した時っていうのはどう表現すればいいですか?
可能なのでしょうか

983 名前:デフォルトの名無しさん :04/07/21 21:43
SendMessageとPostMessageってどう違うの?
呼び出し側に制御をすぐに返すのとそうでないのはわかりますけど
それだけの違いではないですよね?

984 名前:デフォルトの名無しさん :04/07/21 22:03
大雑把に言うと、
Sendはその内部で直にウインドウプロシージャを呼び出し、
Postはメッセージをキューに入れるだけで、そのうちGetMessageなどで処理されるのを期待する。
と、俺はこんな感じに捉えているのだが。

985 名前:デフォルトの名無しさん :04/07/21 22:22
>>982
表現はできているじゃないか。

状態を取得したいなら GetKeyboardStatusとかそんなAPIがあった気がする。

986 名前:デフォルトの名無しさん :04/07/21 22:34
>>985
WM_KEYDOWN内でGetAsyncKeyState()関数の組合せで出来ました。
ありがとう。

987 名前:デフォルトの名無しさん :04/07/21 22:59
>>984
それって>>983を言い換えただけジャン


988 名前:デフォルトの名無しさん :04/07/21 23:00
>>987
のび太のくせに生意気だぞ

989 名前:デフォルトの名無しさん :04/07/21 23:05
>>986
惜しい、その場合はGetKeyStateだ。

990 名前:デフォルトの名無しさん :04/07/21 23:23
>>987
その違いが理解できないなら使い分ける必要は無い。
非同期と動機の違いで、
同期のSendMessageは戻り値を受け取る事が出来、
非同期のPostMessageは、優先順位に応じて最適なタイミングでの処理が期待できる。

991 名前:デフォルトの名無しさん :04/07/21 23:28
いくつか質問させて下さい。

1.ウィンドウを移動できないようにするにはどうすればいいか?
 WM_MOVING等のイベント拾って無視しても無駄でした。

2.ウィンドウシェードをやりたいのですが、その方法は?
 ウィンドウサイズを0にしたりボーダー+キャプションの高さに
 しても無理でした。

よろしくお願いします。


992 名前:デフォルトの名無しさん :04/07/21 23:47
次スレ立ててきてくれたら教える

993 名前:991 :04/07/22 00:07
建てますた。よろしくお願いします。

Win32API質問箱 Build21
http://pc5.2ch.net/test/read.cgi/tech/1090422324/

994 名前:デフォルトの名無しさん :04/07/22 00:32
>>991
1.WM_WINDOWPOSCHANGING
2.WM_WINDOWPOSCHANGING/WM_GETMINMAXINFOで妙なことしてなければ普通にサイズ変更するだけ。

995 名前:デフォルトの名無しさん :04/07/22 00:40
埋め

996 名前:デフォルトの名無しさん :04/07/22 00:41
生め

997 名前:デフォルトの名無しさん :04/07/22 00:43
生き

998 名前:デフォルトの名無しさん :04/07/22 01:28
998

999 名前:デフォルトの名無しさん :04/07/22 01:33
今だ!999ゲットォォォォ!!
 ̄ ̄ ̄ ̄ ̄∨ ̄ ̄ ̄       (´´
     ∧∧   )      (´⌒(´
  ⊂(゚Д゚⊂⌒`つ≡≡≡(´⌒;;;≡≡≡
        ̄ ̄  (´⌒(´⌒;;
      ズザーーーーーッ

1000 名前:デフォルトの名無しさん :04/07/22 01:34
やたー


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