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


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

Win32API質問箱 Build22
1 名前:デフォルトの名無しさん :04/08/15 08:04
- 過去スレ
Build21:http://pc5.2ch.net/test/read.cgi/tech/1090422324/
Build20:http://pc5.2ch.net/test/read.cgi/tech/1088140233/
Build19:http://pc5.2ch.net/test/read.cgi/tech/1084697545/
Build18:http://pc5.2ch.net/test/read.cgi/tech/1081702990/
Build17:http://pc5.2ch.net/test/read.cgi/tech/1077470361/
Build16:http://pc2.2ch.net/test/read.cgi/tech/1073830065/
Build15:http://pc2.2ch.net/test/read.cgi/tech/1069339866/
Build14:http://pc5.2ch.net/tech/kako/1065/10653/1065328397.html
Build13:http://pc5.2ch.net/tech/kako/1059/10595/1059549320.html
Build12:http://pc5.2ch.net/tech/kako/1056/10560/1056033645.html
Build11:http://pc5.2ch.net/tech/kako/1052/10526/1052651750.html
Build10:http://pc5.2ch.net/tech/kako/1047/10478/1047819779.html
Build9:http://pc5.2ch.net/tech/kako/1044/10449/1044929160.html
Build8:http://pc5.2ch.net/tech/kako/1040/10409/1040964626.html
Build7:http://pc3.2ch.net/tech/kako/1036/10366/1036654893.html
Build6:http://pc3.2ch.net/tech/kako/1032/10325/1032548635.html
Build5:http://pc3.2ch.net/tech/kako/1028/10285/1028580373.html
Build4:http://pc3.2ch.net/tech/kako/1023/10233/1023361418.html
Build3:http://pc.2ch.net/tech/kako/1017/10170/1017072275.html
Build2:http://pc.2ch.net/tech/kako/1006/10067/1006783012.html
Build1:http://pc.2ch.net/tech/kako/991/991576947.html
(★は「いやー ごめんなさい。」に巻き込まれた模様


2 名前:デフォルトの名無しさん :04/08/15 08:06
- MSDN Online
http://www.microsoft.com/japan/msdn/default.asp
- 猫でもわかるプログラミング
http://www.kumei.ne.jp/c_lang/index.html
- Platform SDK Update
http://www.microsoft.com/msdownload/platformsdk/sdkupdate/
- Google
http://www.google.com

Win32 API入門
http://black.sakura.ne.jp/~third/system/winapi/win.html
WIN32 Programming
http://www7.plala.or.jp/keny01/win32/
Win32 SDK Programming
http://usr_vogel.at.infoseek.co.jp/Win32SDK/index.html
WindowsSDK入門
http://kerochan.no-ip.com/vcsdk/letsprog/letsprog-index.htm

3 名前:デフォルトの名無しさん :04/08/15 09:40
ExitWindowsEx(EWX_SHUTDOWN,EWX_FORCE);

4 名前:デフォルトの名無しさん :04/08/15 17:53
右クリックでディレクトリ構造をメニューで出すためにメニュー・サブメニューを動的に多数
つくりたいけど、やはり右クリックのタイミングに全部のメニューを作ってしまわないと
いけないんだろうか?なんか遅くなりそうな気がするんだけど、大丈夫ですか?
経験者アドバイスお願いします。


5 名前:デフォルトの名無しさん :04/08/15 20:25
あらかじめ作っておいたものをキャッシュして持っておけば?

6 名前:デフォルトの名無しさん :04/08/15 23:14
>>4
ポップアップメニューが表示されるときに、そのメニュー以下のメニューを作ればいいと思うけど。

7 名前:デフォルトの名無しさん :04/08/16 02:40
>6 それだ!そうしたい。できるんだ?
で検索するとWM_MENUSELECT メッセージを発見
ありがとう。

8 名前:デフォルトの名無しさん :04/08/16 03:04
あ WM_INITMENUPOPUPか。。まいいや

9 名前: ◆Z0vd5w812U :04/08/16 14:56
ちとウィンドウリージョンについて質問です。
10fpsくらいでフレームごとにウィンドウリージョンを変形させたところ
すごいCPU負荷でした。元のウィンドウサイズは320x320くらいなのですが、
頻繁なリージョン変形をしても負荷を高めない方法ってあるのでしょうか?

10 名前:デフォルトの名無しさん :04/08/16 15:26
>>9
LayeredWindow + αチャネルを使う


11 名前:デフォルトの名無しさん :04/08/16 15:29
>>9
ttp://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/jpdnwui/htm/layer.asp


12 名前:誰にともなく :04/08/16 17:53
ExpandEnv(ry
なんて関数があったのか。はじめて知った

13 名前:デフォルトの名無しさん :04/08/16 17:57
>>12
仕様によるがSHGetSpecialFolderPathもアリだね。

14 名前:デフォルトの名無しさん :04/08/16 18:00
環境変数についてはたしかAdvancedWindowsに書いてるよな

15 名前:デフォルトの名無しさん :04/08/16 18:06
>>12
ついでに誰へともなく書くけど、ExpandEnvironmentStrings はレジストリの
REG_EXPAND_SZ タイプとセットで覚えておくと吉だと思う。型のものは、環境変数が展開されることを期待しているから、
ExpandE略( で展開する必要がある。

16 名前:デフォルトの名無しさん :04/08/16 18:07
>>15
ちゃんと編集してから書き込めよ、漏れ orz

17 名前:デフォルトの名無しさん :04/08/16 18:10
っていうか %SystemRoot% とかって普通にどう処理してるのかとおもた。

18 名前:デフォルトの名無しさん :04/08/16 18:12
リストボックスのLBN_SELCANCELって
MSDNライブラリでは「リスト ボックスの現在の選択項目がキャンセルされたとき。」
に送られると書いてありますが、具体的にどういう操作をした場合ですか?
選択項目が変わる直前に来るかと思っていたのですが、
違うみたいです。

LBN_SELCHANGEだと選択項目が変わったあとに通知されるので、
変わる前の状態が欲しかったのですが、
自分で、記録しておかないとダメですかね?

19 名前:デフォルトの名無しさん :04/08/16 18:25
リストボックス上でボタンダウン
のまま何らかの原因でアクティブウィンドウが切り替わってしまった

てな時

20 名前:18 :04/08/16 18:34
>>19
ありがとうございます。
なるほど、やっぱり自分で管理する部分を作らないとダメですね。

21 名前:デフォルトの名無しさん :04/08/16 18:57
SELCHANGEがあるならSELCHANGINGがないのかな?

22 名前: ◆Z0vd5w812U :04/08/16 19:01
>>10>>11
おおおー、レイヤードウィンドウか。こんな技もあったとは。THANX。
SetLayeredWindowAttributesとUpdateLayeredWindowの組み合わせでできるのね。


23 名前:デフォルトの名無しさん :04/08/16 19:16
>>9 & >>22
OpenGLスレで質問してたひとですか?

24 名前: ◆Z0vd5w812U :04/08/16 19:33
>>23
そうですよ。どうかしましたか?

25 名前:デフォルトの名無しさん :04/08/16 22:24
モニタの省電力モードの実行状態を知るAPIってあるのでしょうか。
省電力モードの設定を知ることや、省電力モードに移行/復帰できるのは探し当てたのですが、実行状態を知るのは見つからなくて

26 名前:デフォルトの名無しさん :04/08/16 23:39
SystemParametersInfoでSPI_GETLOWPOWERACTIVEとかダメ?
試してないけど。

27 名前:デフォルトの名無しさん :04/08/17 00:20
>>26
設定を得ることができるだけのようです

28 名前:デフォルトの名無しさん :04/08/17 00:24
WM_NOTIFY メッセージにおいて、wParam と、NMHDR構造体の idFrom が
違う値で送られてくることってありますか?
もしあるとすれば、例えばどのような場合でしょうか?

29 名前:デフォルトの名無しさん :04/08/17 00:52
>>25
IOCTL_VIDEO_QUERY_DISPLAY_BRIGHTNESS
とかどうだろう?試してないけど。

30 名前:デフォルトの名無しさん :04/08/17 01:00
>>28
つまり、自作のプログラムで違う値が送られてきたことがあった、と?

31 名前:28 :04/08/17 01:14
>>30
いえ、自分で実験してみた限りでは同じ値が送られてくるんですが、WM_NOTIFY の説明によると
「wParam はユニークであることが保証されていないので、idFrom を使うべし」
というようなことが書いてあるので、もしかして何か違いがあるのかなと思いまして…。

32 名前:デフォルトの名無しさん :04/08/17 02:10
違いは、idFormならユニークである事が保証されてるところだろ?

33 名前:デフォルトの名無しさん :04/08/17 02:14
>>32
>>28読め

34 名前:デフォルトの名無しさん :04/08/17 02:20
ずいぶん偉そうな催促だ

35 名前:28 :04/08/17 02:55
>>32
確かに、idFrom の方を使っていれば何の問題もないということになりますが…。
wParam が使えないとすると、はじめから wParam は別の用途に割り当てておけば
よかったわけで…そう考えると本当は何か使い道があるんじゃないかと思いまして。

36 名前:デフォルトの名無しさん :04/08/17 04:44
仮想リストビュー(LVS_OWNERDATA)を使ってテキストだけのレポート(LVS_REPORT)を作成しようとしています。
イメージを表示するつもりがないにもかかわらず、LVN_GETDISPINFOメッセージが
LVITEM構造体のmaskにLVIF_IMAGEがセットされた状態で送られてきてしまいます。
どのように対処するのが最も正当な手段と言えるでしょうか?
 (1) maskのLVIF_IMAGEをセットしないでLVN_GETDISPINFOを送らせる方法があるので、それを使う。
 (2) maskのLVIF_IMAGEを強制的にクリアして応答しても構わない。
 (3) iImageに特殊な値(-1とか)をセットして応答する。
 (4) その他。
いろいろ調べたのですが分かりませんでした。どうかご教示ください。

37 名前:デフォルトの名無しさん :04/08/17 11:40
>>36
>イメージを表示するつもりがないにもかかわらず

ま、イメージを表示するつもりかどうかは誰にも分からないわけだし、表示できるように
マスクがセットされていると考えれば、(2) でいいんじゃないの >試してないけど

38 名前:デフォルトの名無しさん :04/08/17 11:42
const int THREADS_COUNT = 10;
HANDLE start;

unsigned __stdcall proc(void*)
{
::WaitForSingleObject(start, INFINITE);
return 0;
}

int main(int argc, char* argv[])
{
start = ::CreateEvent(NULL, FALSE, FALSE, NULL);
assert( start );
HANDLE threads[THREADS_COUNT] = {0};
int i;

for(i = 0; i < THREADS_COUNT; ++i) {
threads[i] = reinterpret_cast<HANDLE>(_beginthreadex(0, 0, proc, (void*)i, 0, 0));
assert( threads[i] );
}

::Sleep(10000);
for(i = 0; i < THREADS_COUNT; ++i) {
::SetEvent(start);
::Sleep(0); // <---------- ここ
}

for(i = 0; i < THREADS_COUNT; ++i) {
::WaitForSingleObject(threads[i], INFINITE);
::CloseHandle(threads[i]);
}


39 名前:38 :04/08/17 11:49
VC++6.0SP6 Win2k Win32コンソールアプリ

メインはスレッドを10コ作りイベントを10回セットしスレッドの終了を待ち
スレッドはイベントがセットされたら終了するというものです。

正常に10コのスレッドが終了するのですが
コメントの::Sleep(0);を無効にすると1コのスレッドしか終了しません。
スレッド切り替えが起きずにSetEventが10回行われ
結局1回のSetEventと同等になってしまうということなのでしょうか?
これは仕様なのでしょうか?

40 名前:38 :04/08/17 11:59
言い忘れましたが、テストした環境はシングルプロセッサです。

41 名前:デフォルトの名無しさん :04/08/17 12:55
なんか違和感のあるソース・・・何か変なんだけど、わからん。

42 名前:デフォルトの名無しさん :04/08/17 13:07
Sleepが無い場合mainが一回のタイムスライスで10回イベントセットするからだろ。
アホか。

43 名前:デフォルトの名無しさん :04/08/17 13:25
>>42
スレッドの最後にOutpuDebugStringを入れてみたら、確かに1コしか解放されてませんでした。
で、疑問なのですが自動リセットイベントの場合
SetEventは待ちスレッドがあった場合それを解放してイベントを非シグナル状態にする
とMSDNには書いてあります。

上記のプログラムでは待ちスレッドが10コあるため
SetEvent->イベントシグナル->スレッド解放->非シグナル
が10回繰り返されると思ったのですが…
いったいどのタイミングでスレッドは解放されるのでしょうか?

44 名前:デフォルトの名無しさん :04/08/17 13:30
>>43
煽られて感情高ぶってるのはわかるけど、
知ったところで意味のない質問はしない方がいいよ。
プラットホームで変わるかもしれないし。

45 名前:デフォルトの名無しさん :04/08/17 13:32
>>39
>The state of an auto-reset event object remains signaled until a single waiting thread is released,
>at which time the system automatically sets the state to nonsignaled.
- Microsoft Platform SDK Document "SetEvent"

待機中のスレッドが何時リリースされるかについては触れられていないのがポイントっぽいですね。
実際にリリースされるまでの間は、単にイベントがシグナル状態にあるだけで、

>Setting an event that is already set has no effect.
となってしまう。

46 名前:デフォルトの名無しさん :04/08/17 13:35
auto reset event の場合ですけど、

誤>SetEventは待ちスレッドがあった場合それを解放してイベントを非シグナル状態にする
正>SetEventはイベントをシグナル状態にする。待機中のスレッドが一つ開放されるとイベントは自動的に非シグナル状態になる。

待機中のスレッドがリリースされる前に制御は戻ってきますよ。

47 名前:デフォルトの名無しさん :04/08/17 13:41
>>43
>いったいどのタイミングでスレッドは解放されるのでしょうか?
そりゃ、スレッドの待機が解除されたら・・・だろ?

で、スレッドの待機が解除されるには、
そのスレッドが実行されなければいけない

Sleep(0)で明示的にタイムスライスを放棄すれば、
上手く行くんだから明らかだろ?

なんだったら、作成したスレッドの優先度を上げて見たら?

48 名前:デフォルトの名無しさん :04/08/17 14:07
>>29
hDeviceを得るためにCreateFileを使おうと思いましたが
CRTディスプレイに該当するlpFileNameの文字列が分かりません

49 名前:38 :04/08/17 14:20
>>44-47
ありがとうございました。
なぜこの疑問が浮かんだかというと、
ttp://msdn.microsoft.com/library/default.asp?url=/library/en-us/dndllpro/html/msdn_metrsect.asp
のメータードセクションを試しに作ってみて上手くいかず原因をさぐってみたところ

LeaveMeteredSectionの
for (iCount=0; iCount < lReleaseCount ; iCount++)
{
lpMetSect->lpSharedInfo->lThreadsWaiting--;
SetEvent(lpMetSect->hEvent);
}

で必要分スレッドがリリースされてなかったからです。(Sleep(0)を入れて解決しました)


50 名前:38 :04/08/17 14:38
何度も申し訳ない。
>>38 で名前付きイベントを使いメインとスレッドの処理を別プロセスで動かしたところ
Sleep(0)を入れなくてもスレッド10コ分リリースされました。
これはたまたまなんでしょうか…
趣味でWindowsプログラム7年やってますが、同期オブジェクトの扱い方がわからなくなってきました…

51 名前:デフォルトの名無しさん :04/08/17 15:44
”コマンドプロンプト”用のプログラムの標準入出力を
GUI(画面)に表示するプログラムがありますが、
あれはどうやって作るんでしょうか。

52 名前:36 :04/08/17 15:50
>>37
> マスクがセットされていると考えれば、(2) でいいんじゃないの >試してないけど

うちの環境(XP)で (2) が使えることは確認していたのですが、他の環境でもうまくいくとは
限りませんし、(1) の見落としの可能性もあったので一応質問させていただいた次第です。
お返事、どうもありがとうございました。

53 名前:デフォルトの名無しさん :04/08/17 15:51
パイプでぐぐれ

54 名前:デフォルトの名無しさん :04/08/17 17:41
ウインドウサイズ変更出来ないようにするにはどすればいいの?

55 名前:デフォルトの名無しさん :04/08/17 17:53
>>54
WM_GETMINMAXINFOを処理しる

56 名前:デフォルトの名無しさん :04/08/17 17:55
~WS_THICKFRAME

57 名前:デフォルトの名無しさん :04/08/17 18:48
>>54
WS_OVERLAPPED|WS_CAPTION|WS_SYSMENU|WS_MINIMIZEBOX

58 名前:デフォルトの名無しさん :04/08/17 18:58
winampのように動かしながら画面吸着させたいんですが、
WM_MOVINGでparamから位置をもらいながら位置判定して、movewindowしてるんですが、
それだと頻繁に、通常のウィンドウ動かしたときのような点線枠が変な風に(びよ〜んと伸びる)表示されてしまいます。
どうすればWinampみたいな動きが実現できるのでしょうか?


59 名前:デフォルトの名無しさん :04/08/17 19:04
ドラッグ処理を全部自前でやればどうとでもなる。

60 名前:デフォルトの名無しさん :04/08/17 19:04
>>58
WM_WINDOWPOSCHANGING

61 名前:デフォルトの名無しさん :04/08/17 19:35
>>54,57
出来ました。サンクスコ
>>57で簡単に出来たけど>>54の方でやるメリットと言うか
違いって何かあるんですかね。

62 名前:デフォルトの名無しさん :04/08/17 19:56
>>54は質問のようだが

63 名前:デフォルトの名無しさん :04/08/17 20:10
スマヌ
>>55>>57だった

64 名前:デフォルトの名無しさん :04/08/17 20:51
>>55だと縦方向だけ変えたくないとかを柔軟に処理できる
>>57だと枠線がサイズ変更できないウィンドウ標準のものになる
(95以降は区別が付きにくいけど)

65 名前:デフォルトの名無しさん :04/08/17 22:01
>>51
コンソールを開く


66 名前:デフォルトの名無しさん :04/08/17 22:22
WM_MOUSEMOVEにX = LOWORD(lParam);でX座標取得して、
SetCapture()でキャプチャーしてるんですけど、ウインドウの右側はみ出た場合は
数値がそのまま増えていくんですけど、左から出た時は0の左が65535になって左に
行けば行くほど数値が低くなるんですけど、何で65535なんて数値になるんでしょう?

67 名前:デフォルトの名無しさん :04/08/17 22:23
 

68 名前:デフォルトの名無しさん :04/08/17 22:26

「ひろゆき」から「今晩のおかず」までを手広くカバーする巨大掲示板群
             『3ちゃんねる』へようこそ!

                   ▲▲
                  ( ・3・) <見に来てね
                  (|.   .|)   
                   |. ω |       
                   ∪ ∪
           3ちゃんねるイメージキャラクター
              「3チコ (さんちこ)」
          
              http://www.3ch.jp/   

69 名前:デフォルトの名無しさん :04/08/17 22:30
>>66
signed, unsigned について説明してみろ

70 名前:デフォルトの名無しさん :04/08/17 22:34
>>69
signed   符号付き
unsigned  符号無し
ですか?

71 名前:デフォルトの名無しさん :04/08/17 22:42
WORD が無符号整数型だから負数を表現できないんだよ。
いったん short にキャストしてから int なり何なりに代入汁。

72 名前:デフォルトの名無しさん :04/08/17 22:45
>>66
左端から出たら、どんな数値になって欲しいのさ?

73 名前:デフォルトの名無しさん :04/08/17 22:46
WORD型ってのはunsigned shortだから0から65535までしか表せなくて
-1じゃなくて65535になってしまうってことですか。

>>71
どうも有り難うございます。

74 名前:デフォルトの名無しさん :04/08/17 22:49
SetLayeredWindowAttributes使いたいんですが、
windows.hだけではダメなんですか?
いちおう
#define _WIN32_WINNT 0x0500
これもしたんですが、定義されてないとエラーが出てしまいます

75 名前:デフォルトの名無しさん :04/08/17 22:52
つーか専用のマクロあるんだから使え
GET_X_LPARAM

76 名前:デフォルトの名無しさん :04/08/17 23:03
>>74
includeディレクトリをgrepして、無ければPlatformSDKをゲット

77 名前:デフォルトの名無しさん :04/08/17 23:17
PlatformSDKのinclude内のWinUser.h内にみつけましたが、
そのフォルダ、ディレクトリ設定のインクルードファイルの欄にちゃんと入ってます…

78 名前:デフォルトの名無しさん :04/08/17 23:36
>>77
#ifディレクティブに注意

79 名前:デフォルトの名無しさん :04/08/18 01:12
#define _WIN32_WINNT 0x0500
これかいててもダメですね…
検索かけたらみんなこれで解決してるのに…

80 名前:デフォルトの名無しさん :04/08/18 01:21
Platform SDKのinclude・libフォルダ設定を一番上にしたらいけました…

81 名前:デフォルトの名無しさん :04/08/18 01:23
ぬっ殺す

82 名前:デフォルトの名無しさん :04/08/18 10:45
いくら使わせたくないからって
winternl.hのプロトタイプ宣言が間違ってるのってどうよ

83 名前:デフォルトの名無しさん :04/08/18 14:08
レジストリキーの変更をしたいのですが、キーを変更するAPIが見つかりません。
削除して新たに作成するしかないのでしょうか?


84 名前:デフォルトの名無しさん :04/08/18 15:21
ローカルシステムアカウントで実行しているプロセスから、
IEを起動すると最初一回だけ、「インターネット接続ウィザード」が表示されてしまいます。
これを回避したいのですが、どうすればよいでしょうか。
お知恵をお貸しください。


85 名前:C言語初心者 :04/08/18 15:51
ウイルスの作り方を教えてくdさい!!!!

86 名前:デフォルトの名無しさん :04/08/18 16:27
CreateVirusEx()

87 名前:デフォルトの名無しさん :04/08/18 16:41
CreateViruSEX()

88 名前:sage :04/08/18 16:42
>>86-87
ありがとうございます!!!!
でもどうやって使えばいいんですか??
教えてくださいお願いします!!!!

89 名前:デフォルトの名無しさん :04/08/18 16:49
int main()
{
 HSEX sex = CreateViruSEX();
 RunViruSEX(sex, "立ちバック");

 return 0;
}

90 名前:デフォルトの名無しさん :04/08/18 17:50
>>83
RegSetValueEx でいけなかったっけ?

91 名前:デフォルトの名無しさん :04/08/18 17:53
値の変更はできるけど、キーの変更はできないよ。

92 名前:デフォルトの名無しさん :04/08/18 18:20
>>89
RunViruSEXが0をFALSEを返します!!!!
GetLastError()の戻り値は5でした!!!!
何故ですか????

93 名前:C言語初心者 :04/08/18 18:35
>>92
僕のまねをしないでください!!!
なんでみんな真面目に答えてくれないんですか???・

94 名前:デフォルトの名無しさん :04/08/18 18:41
DeleteObject((HGDIOBJ)"C言語初心者");

95 名前:デフォルトの名無しさん :04/08/18 18:43
>>89
main(int) { CreateViruSEX; return } << "立ちバック"
こうですか?わかりません。

96 名前:デフォルトの名無しさん :04/08/18 18:43
>>92

/*
  HPENIS GetPenisHandle(
    LPCTSTR HumanName // 所有者名
  );

  LONG SetPenisLong(
    HPENIS hPenis, // ペニスのハンドル
    int nIndex, // 設定する値のオフセット
    LONG dwNewLong // 新しい値
  );

  HADLITM GetStockItem(
    int fnItem // ストックアイテムのタイプ
  );
*/

SetPenisLong(GetPenisHandle(NULL), SPL_CONDOM, (LONG)(HCONDOM)GetStockItem(WARTY_CONDOM));

97 名前:デフォルトの名無しさん :04/08/18 18:50
>>93
皆が真面目に答えないのはウィルス作成に米国家の専門資格が必要だから。
それで初心者を名乗るお前は絶対持っていないだろうと皆が思っているから。

98 名前:デフォルトの名無しさん :04/08/18 18:51
>>93
真面目に答えて欲しければ、質問を変えた方がいいと思うよ。
誰もウイルス作成の手助けなんかしたくない。スレ違いのような気もするし。

99 名前:デフォルトの名無しさん :04/08/18 19:20
>>97-98
そんなとこで釣られるn(ry

100 名前:デフォルトの名無しさん :04/08/18 19:35
つーかまずローカルルール読め低脳

101 名前:デフォルトの名無しさん :04/08/18 21:33
>>92
おまえ童貞だろ。なら当然FALSEが返る。

102 名前:デフォルトの名無しさん :04/08/18 23:54
質問です.宜しくお願いします!

win32 console で,stdin にインプットがあるかどうかを調べるには
どうすればよいのでしょうか? unix 系の環境での select() 関数の
ようなものを探しています.今のところ _kbhit() を使用していますが,
標準入力がキーボードの時しか上手く働いてくれません...

103 名前:デフォルトの名無しさん :04/08/19 00:22
selectで良いと思いますが・・・

104 名前:デフォルトの名無しさん :04/08/19 00:49
ダイアログボックスの中にテキストボックスがある時、
そのテキストボックスにキーボードフォーカスを移すには
どうすればいいんですか?


105 名前:デフォルトの名無しさん :04/08/19 01:00
雪兎不応粕

106 名前:デフォルトの名無しさん :04/08/19 01:20
ダイアログボックス上ということであれば
WM_NEXTDLGCTLの使用を推奨したい。

107 名前:デフォルトの名無しさん :04/08/19 01:32
>>103
winじゃselectはsocketにしか使えませんが?

108 名前:デフォルトの名無しさん :04/08/19 01:43
質問です。

プログラムから、そのプログラム自身を実行した時の CreateProcess API の
各引数を調べる方法はあるのでしょうか?
その辺を多少調べたけれどわからんかったので教えていただければ嬉しいです。
ヒントとなるキーワードやAPI名でもいいんで教えてくださいエロい人。

109 名前:デフォルトの名無しさん :04/08/19 01:45
>>107
ネタにマジレスするな

110 名前:デフォルトの名無しさん :04/08/19 02:01
>>109ネタ解答は迷惑なので他所でやってください

111 名前:104 :04/08/19 02:23
>>106
普通にGetDlgItemでできましたけどね……。

112 名前:デフォルトの名無しさん :04/08/19 02:35
>>108
CreateProcess索いて、See Alsoをざっと見てみた。
GetCommandLine, GetEnvironmentStrings, GetStarupInfoあたりが使えそうだな。

>>111
ボタンに黒枠が残っても気にしないのならそれで問題ない。

113 名前:デフォルトの名無しさん :04/08/19 02:45
>>102
WaitForSingleObject(GetStdHandle(STD_INPUT_HANDLE), 0)とか?
入力ハンドルがコンソールじゃなかった場合にWaitFor〜していいのかちょっと怪しいが

114 名前:102 :04/08/19 03:27
>>113

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

115 名前:115 :04/08/19 05:16
あるアプリのクライアント領域の描写を右に100ピクセルずらすDLLをつくっているのですがうまくいきません
DLLはプラグインとしてアプリからロード,実行されアプリのWindowProcをSetWindowLongPtrで書き換えて
自分のProcが呼ばれるところまではうまくいきました
実際にずらす処理は
if(msg==WM_PAINT)
{
  HDC hdc = BeginPaint(hwnd, &ps);
  InvalidateRect(hwnd, &ps.rcPaint, ps.fErase);
  SetGraphicsMode(hdc, GM_ADVANCED);
  XFORM xnew, xlast;
  GetWorldTransform(hdc, &xlast);
  xnew.eM11 = 1;xnew.eM12= 0;
  xnew.eM21 = 0;xnew.eM22= 1;
  xnew.eDx = 100;xnew.eDy= 0;
  SetWorldTransform(hdc, &xnew);
  LRESULT result = CallWindowProc(g_DefProc, hwnd, msg, wp, lp);
 
  //ためしに変数helloの文字列を0,0に描写
  TextOut(hdc, 0, 0, hello, wcslen(hello));
  SetWorldTransform(hdc, &xlast);
  SetGraphicsMode(hdc, GM_COMPATIBLE);
  EndPaint(hwnd, &ps);
  return result;
}

116 名前:115 :04/08/19 05:17
だいたいこんな感じのを自分のProcでやっているのですが変数helloの文字は確かに右にずれて描写されるのですが
アプリによってのほうは,今までのままです.原因はSetWorldTransformを適用してるHDCとアプリが実際使ってるHDCが
異なっているためだと思うのですが,ずらす系(?)API(SetWorldTransformとOffsetViewportOrgEx)の両方とも
引数としてHDCをとるため事前にアプリが使用するHDCを固定するかでもしないとなりません.そのようなことは可能ですか?
もしくは,ずらす系APIの引数がHWND版みたいなものはないでしょうか?
長文になってしまい,まことに申し訳ないのですがよろしくおねがいします

117 名前:115 :04/08/19 05:59
BeginPaintとEndPaintを置き換えるやり方を見つけたのですが
ttp://www.fengyuan.com/article/wmprint.html
ちょっと複雑そうなのでSetWorldTransformなどのずらす系APIのHWND版を
教えていただく方向でお願いします.図図しくてすみません

118 名前:デフォルトの名無しさん :04/08/19 06:33
DLL側ではBeginPaintとEndPaintは使わない方がいいんじゃない?
GetDC(hWnd)で取れるよ。


119 名前:115 :04/08/19 06:37
>>118
BeginPaintをGetDCに,EndPaintをReleaseDCに書き換えてみましたがだめでした

120 名前:デフォルトの名無しさん :04/08/19 06:40
ずらしたあとにアプリ側の再描画で元に戻されてるのでは?

121 名前:115 :04/08/19 06:51
>>120
自分のイメージ的にはSetWorldTransform(hdc, &xnew)でかってに右に移動しちゃう行列が
適用されて,その後のSetWorldTransform(hdc, &xlast)がよばれるまでの間に呼び出された
CallWindowProc(g_DefProc, hwnd, msg, wp, lp);によってアプリ側には,ずれてることすらわからないはずみたいな感じなのですが
WM_PAINT以外で元に戻されるということでしょうか?

122 名前:デフォルトの名無しさん :04/08/19 07:07
あらかじめ SetGraphicsMode 関数を呼び出して、指定したデバイスコンテキストのグラフィックスモードを GM_ADVANCED に設定しておかなければ、SetWorldTransform 関数は失敗します。

123 名前:115 :04/08/19 07:14
WM_ERASEBKGNDで送られてくるHDCを引数としてSetWorldTransformを呼び出すことで
アプリ側が描写したものに対しても100ピクセルずらすことができました.OffsetViewportOrgExでも大丈夫でした
 
>>122
いちおう115のソースの5行目で呼び出してます
 
回答していただきました皆様ありがとうございました


124 名前:デフォルトの名無しさん :04/08/19 14:34
Spy++みたいにほかのウィンドウのメッセージを取得したいのですが
どうやればいいのでしょうか?

125 名前:デフォルトの名無しさん :04/08/19 14:45
グローバルフックをインスコ

126 名前:デフォルトの名無しさん :04/08/19 14:55
>>125
こんな便利なものがあるなんて知りませんでした。
ありがとうございした。

127 名前:デフォルトの名無しさん :04/08/19 15:07
C++からWin32API使いたいんだけど、いちいちWrapperクラスなんか作らないとダメかな?

128 名前:デフォルトの名無しさん :04/08/19 15:10
>>127
C++に対する理解が足りないのでは

129 名前:デフォルトの名無しさん :04/08/19 15:11
そうした方が便利なら。

130 名前:127 :04/08/19 15:18
結局MFCやれってことになるのかな?

MFC >>>>>>>>> 自作Win32API wrapper

ってこと?

131 名前:デフォルトの名無しさん :04/08/19 15:26
は?
どこからそういう結論が出るんだヴォケ

132 名前:デフォルトの名無しさん :04/08/19 15:34
まだまだ、残暑が続くからな。
変なやつの相手すんなって。

133 名前:127 :04/08/19 15:40
このスレの住人て民度が低いね。(プ

134 名前:デフォルトの名無しさん :04/08/19 15:51
>>133
民度という用語に対する理解が足りないのでは

それはともかく、C++のソースからでもWin32APIの呼び出しはできるでしょ?
呼び出しをクラスメソッドにするかどうかは設計者であるアナタ次第。
というわけでスレ違い。

135 名前:デフォルトの名無しさん :04/08/19 15:52
近頃どのスレでも>>133みたいなのを見かける。


136 名前:デフォルトの名無しさん :04/08/19 16:06
> 近頃どのスレでも>>133みたいなのを見かける。
自分で作った Thread に>>133みたいなのが居るのを想像してしまった。orz

137 名前:デフォルトの名無しさん :04/08/19 16:22
ウィンドウズOSのコモンツールバー実装方法に疑問を感じる。
実装が自己矛盾に満ちている。

138 名前:デフォルトの名無しさん :04/08/19 16:23
以降、肛門ネタ禁止

139 名前:デフォルトの名無しさん :04/08/19 18:09
                      ''';;';';;'';;;,.,                  ザッ
                       ''';;';'';';''';;'';;;,.,   ザッ
          ザッ            ;;''';;';'';';';;;'';;'';;;
                        ;;'';';';;'';;';'';';';;;'';;'';;;
                        vymyvwymyvymyvy     ザッ
               ザッ     MVvvMvyvMVvvMvyvMVvv、
                   Λ_ヘ^−^Λ_ヘ^−^Λ_ヘ^Λ_ヘ
     ザッ            ヘ__Λ ヘ__Λ ヘ__Λ ヘ__Λ
                __,/ヽ_ /ヽ__,.ヘ /ヽ__,.ヘ _,.ヘ ,.ヘ    ザッ
    /\___/ヽ   /\___ /\___/ヽ _/ヽ /\___/ヽ
   /''''''   '''''':::::::\/''''''   '''/''''''   '''''':::::::\   /''''''   '''''':::::::\
  . |(●),   、(●)、.:|(●),    |(●),   、(●)、.:|、( |(●),   、(●)、.:|
  |   ,,ノ(、_, )ヽ、,, .::::|   ,,ノ(、_, )|   ,,ノ(、_, )ヽ、,, .::::|_, )|   ,,ノ(、_, )ヽ、,, .::::|  / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
.   |   `-=ニ=- ' .:::::::|   `-=ニ= |   `-=ニ=- ' .:::::::|ニ=|   `-=ニ=- ' .:::::::| < ageますよ
   \  `ニニ´  .:::::/\  `ニニ \  `ニニ´  .:::::/ニ´ \  `ニニ´  .:::::/   \_________
   /`ー‐--‐‐―´\ /`ー‐-  /`ー‐--‐‐―´\-‐‐ /`ー‐--‐‐―´\

140 名前:デフォルトの名無しさん :04/08/19 18:51
                      ''';;';';;'';;;,.,                  ザッ
                       ''';;';'';';''';;'';;;,.,   ザッ
          ザッ            ;;''';;';'';';';;;'';;'';;;
                        ;;'';';';;'';;';'';';';;;'';;'';;;
                        vymyvwymyvymyvy     ザッ
               ザッ     MVvvMvyvMVvvMvyvMVvv、
                   Λ_ヘ^−^Λ_ヘ^−^Λ_ヘ^Λ_ヘ
     ザッ            ヘ__Λ ヘ__Λ ヘ__Λ ヘ__Λ
                __,/ヽ_ /ヽ__,.ヘ /ヽ__,.ヘ _,.ヘ ,.ヘ    ザッ
    /\___/ヽ   /\___ /\___/ヽ _/ヽ /\___/ヽ
   /''''''   '''''':::::::\/''''''   '''/''''''   '''''':::::::\   /''''''   '''''':::::::\
  . |(●),   、(●)、.:|(●),    |(●),   、(●)、.:|、( |(●),   、(●)、.:|
  |   ,,ノ(、_, )ヽ、,, .::::|   ,,ノ(、_, )|   ,,ノ(、_, )ヽ、,, .::::|_, )|   ,,ノ(、_, )ヽ、,, .::::|  / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
.   |   `-=ニ=- ' .:::::::|   `-=ニ= |   `-=ニ=- ' .:::::::|ニ=|   `-=ニ=- ' .:::::::| < ageますよ
   \  `ニニ´  .:::::/\  `ニニ \  `ニニ´  .:::::/ニ´ \  `ニニ´  .:::::/   \_________
   /`ー‐--‐‐―´\ /`ー‐-  /`ー‐--‐‐―´\-‐‐ /`ー‐--‐‐―´\

141 名前:デフォルトの名無しさん :04/08/19 19:14

DWORD size;

size = GetFileSize(GetStdHandle(STD_INPUT_HANDLE));



上の方法で標準入力に何バイト溜まっているかを取得できますか?

142 名前:デフォルトの名無しさん :04/08/19 19:18
ぼくの肛門にも何バイトか溜まっているようです

143 名前:デフォルトの名無しさん :04/08/19 19:18
>>141
http://msdn.microsoft.com/library/en-us/fileio/base/getfilesize.asp
> You cannot use the GetFileSize function with a handle of a
> nonseeking device such as a pipe or a communications device.


144 名前:デフォルトの名無しさん :04/08/19 19:23
>>143
読み落としていました。

標準入力に何バイト溜まっているかを取得する方法はありませんか?
全部読まないとわからないのでしょうか?

145 名前:デフォルトの名無しさん :04/08/19 19:29
>>144
>標準入力に何バイト溜まっているかを取得する方法はありませんか?
ありません。

>全部読まないとわからないのでしょうか?
「全部」の意味によりますが、そんな感じです。

146 名前:141 == 144 == 146 :04/08/19 19:31
>>145
thx!

147 名前:デフォルトの名無しさん :04/08/19 19:48
                      ''';;';';;'';;;,.,                  ザッ
                       ''';;';'';';''';;'';;;,.,   ザッ
          ザッ            ;;''';;';'';';';;;'';;'';;;
                        ;;'';';';;'';;';'';';';;;'';;'';;;
                        vymyvwymyvymyvy     ザッ
               ザッ     MVvvMvyvMVvvMvyvMVvv、
                   Λ_ヘ^−^Λ_ヘ^−^Λ_ヘ^Λ_ヘ
     ザッ            ヘ__Λ ヘ__Λ ヘ__Λ ヘ__Λ
                __,/ヽ_ /ヽ__,.ヘ /ヽ__,.ヘ _,.ヘ ,.ヘ    ザッ
    /\___/ヽ   /\___ /\___/ヽ _/ヽ /\___/ヽ
   /''''''   '''''':::::::\/''''''   '''/''''''   '''''':::::::\   /''''''   '''''':::::::\
  . |(●),   、(●)、.:|(●),    |(●),   、(●)、.:|、( |(●),   、(●)、.:|
  |   ,,ノ(、_, )ヽ、,, .::::|   ,,ノ(、_, )|   ,,ノ(、_, )ヽ、,, .::::|_, )|   ,,ノ(、_, )ヽ、,, .::::|  / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
.   |   `-=ニ=- ' .:::::::|   `-=ニ= |   `-=ニ=- ' .:::::::|ニ=|   `-=ニ=- ' .:::::::| < ageますよ
   \  `ニニ´  .:::::/\  `ニニ \  `ニニ´  .:::::/ニ´ \  `ニニ´  .:::::/   \_________
   /`ー‐--‐‐―´\ /`ー‐-  /`ー‐--‐‐―´\-‐‐ /`ー‐--‐‐―´\

148 名前:デフォルトの名無しさん :04/08/19 21:54
                      ''';;';';;'';;;,.,                  ザッ
                       ''';;';'';';''';;'';;;,.,   ザッ
          ザッ            ;;''';;';'';';';;;'';;'';;;
                        ;;'';';';;'';;';'';';';;;'';;'';;;
                        vymyvwymyvymyvy     ザッ
               ザッ     MVvvMvyvMVvvMvyvMVvv、
                   Λ_ヘ^−^Λ_ヘ^−^Λ_ヘ^Λ_ヘ
     ザッ            ヘ__Λ ヘ__Λ ヘ__Λ ヘ__Λ
                __,/ヽ_ /ヽ__,.ヘ /ヽ__,.ヘ _,.ヘ ,.ヘ    ザッ
    /\___/ヽ   /\___ /\___/ヽ _/ヽ /\___/ヽ
   /''''''   '''''':::::::\/''''''   '''/''''''   '''''':::::::\   /''''''   '''''':::::::\
  . |(●),   、(●)、.:|(●),    |(●),   、(●)、.:|、( |(●),   、(●)、.:|
  |   ,,ノ(、_, )ヽ、,, .::::|   ,,ノ(、_, )|   ,,ノ(、_, )ヽ、,, .::::|_, )|   ,,ノ(、_, )ヽ、,, .::::|  / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
.   |   `-=ニ=- ' .:::::::|   `-=ニ= |   `-=ニ=- ' .:::::::|ニ=|   `-=ニ=- ' .:::::::| < ageますよ
   \  `ニニ´  .:::::/\  `ニニ \  `ニニ´  .:::::/ニ´ \  `ニニ´  .:::::/   \_________
   /`ー‐--‐‐―´\ /`ー‐-  /`ー‐--‐‐―´\-‐‐ /`ー‐--‐‐―´\

149 名前:デフォルトの名無しさん :04/08/19 22:18
                      ''';;';';;'';;;,.,                  ザッ
                       ''';;';'';';''';;'';;;,.,   ザッ
          ザッ            ;;''';;';'';';';;;'';;'';;;
                        ;;'';';';;'';;';'';';';;;'';;'';;;
                        vymyvwymyvymyvy     ザッ
               ザッ     MVvvMvyvMVvvMvyvMVvv、
                   Λ_ヘ^−^Λ_ヘ^−^Λ_ヘ^Λ_ヘ
     ザッ            ヘ__Λ ヘ__Λ ヘ__Λ ヘ__Λ
                __,/ヽ_ /ヽ__,.ヘ /ヽ__,.ヘ _,.ヘ ,.ヘ    ザッ
    /\___/ヽ   /\___ /\___/ヽ _/ヽ /\___/ヽ
   /''''''   '''''':::::::\/''''''   '''/''''''   '''''':::::::\   /''''''   '''''':::::::\
  . |(●),   、(●)、.:|(●),    |(●),   、(●)、.:|、( |(●),   、(●)、.:|
  |   ,,ノ(、_, )ヽ、,, .::::|   ,,ノ(、_, )|   ,,ノ(、_, )ヽ、,, .::::|_, )|   ,,ノ(、_, )ヽ、,, .::::|  / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
.   |   `-=ニ=- ' .:::::::|   `-=ニ= |   `-=ニ=- ' .:::::::|ニ=|   `-=ニ=- ' .:::::::| < ageますよ
   \  `ニニ´  .:::::/\  `ニニ \  `ニニ´  .:::::/ニ´ \  `ニニ´  .:::::/   \_________
   /`ー‐--‐‐―´\ /`ー‐-  /`ー‐--‐‐―´\-‐‐ /`ー‐--‐‐―´\

150 名前:デフォルトの名無しさん :04/08/19 22:21
馬鹿127が荒らしてる

151 名前:127 :04/08/19 22:53
>>150
おれじゃねーよヴァカ

152 名前:127 :04/08/19 23:23
                      ''';;';';;'';;;,.,                  ザッ
                       ''';;';'';';''';;'';;;,.,   ザッ
          ザッ            ;;''';;';'';';';;;'';;'';;;
                        ;;'';';';;'';;';'';';';;;'';;'';;;
                        vymyvwymyvymyvy     ザッ
               ザッ     MVvvMvyvMVvvMvyvMVvv、
                   Λ_ヘ^−^Λ_ヘ^−^Λ_ヘ^Λ_ヘ
     ザッ            ヘ__Λ ヘ__Λ ヘ__Λ ヘ__Λ
                __,/ヽ_ /ヽ__,.ヘ /ヽ__,.ヘ _,.ヘ ,.ヘ    ザッ
    /\___/ヽ   /\___ /\___/ヽ _/ヽ /\___/ヽ
   /''''''   '''''':::::::\/''''''   '''/''''''   '''''':::::::\   /''''''   '''''':::::::\
  . |(●),   、(●)、.:|(●),    |(●),   、(●)、.:|、( |(●),   、(●)、.:|
  |   ,,ノ(、_, )ヽ、,, .::::|   ,,ノ(、_, )|   ,,ノ(、_, )ヽ、,, .::::|_, )|   ,,ノ(、_, )ヽ、,, .::::|  / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
.   |   `-=ニ=- ' .:::::::|   `-=ニ= |   `-=ニ=- ' .:::::::|ニ=|   `-=ニ=- ' .:::::::| < sageますよ
   \  `ニニ´  .:::::/\  `ニニ \  `ニニ´  .:::::/ニ´ \  `ニニ´  .:::::/   \_________
   /`ー‐--‐‐―´\ /`ー‐-  /`ー‐--‐‐―´\-‐‐ /`ー‐--‐‐―´\

153 名前:デフォルトの名無しさん :04/08/19 23:37
CreateFileで作成したファイルをメモリマップドファイルを用いずに
行単位で入力する方法を探しています。
C言語のfgetsに相当する関数は無いのでしょうか?
また、自作するにはどうしたらよろしいでしょうか?

154 名前:デフォルトの名無しさん :04/08/19 23:50
>>153
精進が足りんな。
API直叩きにはスキル無さ杉。
まずバッファリングのやり方、勉強汁!
嫌なら素直にランタイム使っとけ。

155 名前:デフォルトの名無しさん :04/08/20 00:38
>>110
なんで俺に言うんだよ。>>103に言えよ。

156 名前:デフォルトの名無しさん :04/08/20 00:47
CreateWindowExで作ったエディットコントロールの…
 ・フォントのサイズ変更、
 ・フォントの種類変更、
 ・フォントの色変更、
 ・背景色変更、
 ・半透明化、
の仕方が分かりません。

リッチエディットまではいかなくてもWindows付属のメモ帳くらい変更したいのですが。

半透明化については、
SetLayeredWindowAttributes関数でできるかと思ったのですが、
ウィンドウ全体の半透明化はできてもエディットコントロールの変更は無理のようです
(エディットコントロールに同じことをするとエディットコントロール自体が消えます)

分かる方よろしくお願いします。

157 名前:デフォルトの名無しさん :04/08/20 01:04
>>156
子ウィンドウはレイヤードウィンドウにできないはず。

158 名前:デフォルトの名無しさん :04/08/20 01:06
WS_CHILD外して貼り付けたいウィンドウにあわせて移動。

159 名前:デフォルトの名無しさん :04/08/20 01:22
XPや2000におけるHTMLでのボタンのような外観にはどうやったらできるんですか?

160 名前:デフォルトの名無しさん :04/08/20 01:46
>>159
そうですか

161 名前:デフォルトの名無しさん :04/08/20 01:55
>>160
カスが

162 名前:デフォルトの名無しさん :04/08/20 01:56
>>160
そうですよ
http://www.microsoft.com/japan/msdn/windows/windowsxp/xptheming.asp

163 名前:156 :04/08/20 02:03
ありがとうございます。

>>157
なるほど、それでできなかったんですね。

>>158
WS_CHILDを外してみましたが
何も変わりませんでした・・・
エディットコントロール作成時に、親ウィンドウのハンドルのところをNULLにもしてみたりしたんですが。

164 名前:デフォルトの名無しさん :04/08/20 06:27
>>163
エディットコントロールと同じ大きさの枠無し窓でも作ればいいんじゃないかな

165 名前:デフォルトの名無しさん :04/08/20 09:19
>>156
今や不評ですが、「猫でもわかる...」に例があったような。
半透明化はやっていませんが、他は、私は猫のお陰でやっています。

166 名前:デフォルトの名無しさん :04/08/20 10:41
ユーザー名とドメイン名からそのユーザーがlogonしているかどうかを
知りたいのですが、そのようなAPIはありませんでしょうか?

現在logonしているユーザーのリストを取得できる関数がないかなと
思っているのですが…


167 名前:デフォルトの名無しさん :04/08/20 11:44
>>156
ボタンをサブクラス化。
バックバッファを作り、WM_PAINTで元のボタンにWM_PRINT送って描画してもらう。
背景と重ね合わせる。

でどお?

168 名前:デフォルトの名無しさん :04/08/20 11:58
>>166
これなんかどう?
ttp://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=8548&forum=6&6

169 名前:デフォルトの名無しさん :04/08/20 12:44
>>156

WM_SETFONT でフォントのセット、背景色は WM_CTLCOLOREDIT への応答で

170 名前:デフォルトの名無しさん :04/08/21 02:32
HWNDに対応したキャレットの幅と高さを調べられるAPIはありますか?

171 名前:デフォルトの名無しさん :04/08/21 12:42
メニューが複数行表示されているか、どうやったら調べられますか?
またウィンドウの幅がどれくらい縮んだらメニューが折り返されるか調べる方法はありませんでしょうか?


172 名前:デフォルトの名無しさん :04/08/21 17:43
現在のタスクバーの高さを一発で求める API はなんでしょうか。
MSDN で探すのは TASKBAR とかでは駄目で、他の用語があるんでしょうか。

173 名前:デフォルトの名無しさん :04/08/21 17:50
タスクマネージャのように
プロセスごとの、ユーザー名、CPU、メモリ使用量を取得するには
どのようにすればよいのでしょうか

174 名前:デフォルトの名無しさん :04/08/21 18:05
>>172
タスクバーが左右に縦に表示されている場合でも"高さ"が欲しいのか?

なんとなくSystemParametersInfo(SPI_GETWORKAREA, ...)とかGetMonitorInfo()で
取得できるワークエリアが必要な気もするが。

175 名前:デフォルトの名無しさん :04/08/21 19:42
>>172
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/shellcc/platform/shell/reference/functions/shappbarmessage.asp

176 名前:デフォルトの名無しさん :04/08/21 22:22
>>173
PSAPI

177 名前:172 :04/08/21 23:47
>>174, >>175
どうもありがとうございます。
高さってのは軽率でした。screen から workarea を引くしかないんですね。

178 名前:デフォルトの名無しさん :04/08/22 07:14
メニューにチェック形式のアイテムをもたせるにはどうすればいいんですか?

179 名前:デフォルトの名無しさん :04/08/22 10:04
ある意味では、すべてのMENUITEMはチェック形式であるといってもいいね。

180 名前:デフォルトの名無しさん :04/08/22 10:23
>>179がなんか言い出したぞ。

181 名前:デフォルトの名無しさん :04/08/22 13:18
>>178
CheckMenuItem()じゃない?

いやまて、そんな単純な質問ではないのか?

182 名前:デフォルトの名無しさん :04/08/22 13:40
>>181
うん。皆、その裏が読めなくて答えられないのだよ。

183 名前:170 :04/08/22 14:53
マダー?

184 名前:デフォルトの名無しさん :04/08/22 15:06
>>183
ざっとみたかんじ、そんなAPIはなさげです

185 名前:デフォルトの名無しさん :04/08/22 15:20
ListView_SortItemsを使ってリストビューをソートしようと思ったのですが、
何故か出来ません。


int CALLBACK CompareFunc(LPARAM lParam1, LPARAM lParam2, LPARAM lParamSort);


この比較関数の引数のlParam1とlParam2の値が、常に0です。
リストビューには数百ぐらいいれているのですが

186 名前:デフォルトの名無しさん :04/08/22 15:34
CreateDIBSectionとmemcpyとかを使ってペイントソフトみたいの作れって言われたんだけどさっぱり分からん!
どこか解説ページとかない?

CreateDIBSectionの意味すら今一分かんないorz

187 名前:デフォルトの名無しさん :04/08/22 15:39


188 名前:デフォルトの名無しさん :04/08/22 15:45
まずググれ

189 名前:デフォルトの名無しさん :04/08/22 15:53
>>186
CreateDIBSectionとmemcpyについて解説してあげてもいいけど、
ペイントソフト作るのってその二つ理解するよりはるかに難易度高いから
そのくらい自分で調べた方が良いよ。

190 名前:デフォルトの名無しさん :04/08/22 16:53
>>185
そのソースさらしてよ、でなきゃ原因はわからんです。

ListView_SortItemsの使い方だったら、ググれば
たくさん出てくる。

191 名前:185 :04/08/22 17:06
猫を参考にしています。

HWND hList;//リストビューのハンドルを入れてあるグローバル変数

int CALLBACK CompareFunc(LPARAM lParam1, LPARAM lParam2, LPARAM lParamSort)
{
  static LV_FINDINFO lvf ;
  static int item1, item2 ;
  static char buf1[512] , buf2[512] ;
  lvf.flags = LVFI_PARAM ;  lvf.lParam = lParam1 ;

  item1 = ListView_FindItem(hList, -1, &lvf) ;
  lvf.lParam = lParam2 ;
  item2 = ListView_FindItem(hList, -1, &lvf) ;
  ListView_GetItemText(hList, item1, (int)lParamSort, buf1, sizeof(buf2));
  ListView_GetItemText(hList, item2, (int)lParamSort, buf2, sizeof(buf2));
  return strcmp(buf1, buf2);
}

呼び出すのはこうやってます。

  NMLISTVIEW pNMlist = (NMLISTVIEW *)lParam ;
  ListView_SortItems(hList, CompareFunc, pNMlist->iSubItem);

リストビューのウインドウハンドル、hListは確かに存在します。
実験的に、ListView_SortItems()の前にIsWindow()をやって確かめました。

192 名前:185 :04/08/22 17:15
すみません。ちょっと行数を調節していたら途中に変な改行が。

それから呼び出すのは
WM_NOTIFYの、リストビューのIDからのメッセージで、
LVN_COLUMNCLICKが来たときにです。

193 名前:デフォルトの名無しさん :04/08/22 17:46
>>191

compare関数が呼び出された時点でlParam1, lParam2共に0なんだから、
その関数をみせられてもわからんですよ。

猫のところのプログラムは動くのだから、そこから手を加えた
ところを探ってみた方がいいんじゃない?アイテムを追加するところとか。


194 名前:デフォルトの名無しさん :04/08/22 17:58
lParamを設定していない落ちとか。

私の場合は必ずアイテム追加するときにlParam設定しておくからなぁ。
#しかもMFC利用。

195 名前:185 :04/08/22 18:45
>>194
LPARAMを設定?

196 名前:デフォルトの名無しさん :04/08/22 19:16
親ウィンドウAとその子ウィンドウBがあり、子ウィンドウBを親ウィンドウAの
キャプションのように扱いたいのですがどうすればいいのでしょうか?
以下のような感じで、子ウィンドウBをドラッグすると親ウィンドウが動くとい
うか…わかりづらくてすいません。
+---------------+
| +-----------+ |
| | 子ウィンドウB |. |
| +-----------+ |
| 親ウィンドウA   |
+---------------+

最初、子ウィンドウBでWM_NCHITTESTで親Aにそのまま流しましたがダメ
でした。
次に子ウィンドウBでWM_NCHITTESTにreturn HTCAPTIONを返し、Bの
WM_WINDOWPOSCHANGINGで親ウィンドウに対しMoveWindowしてみると
一見うまくいってるようですが親とズレてしまったり、親のクライアント領域
外に出られないなどの問題がありました。

要はシステムメニューから移動を選択したのと同じ動作をさせたいのです。
どなたがご教授頂けませんか。


197 名前:デフォルトの名無しさん :04/08/22 19:33
キャプション?

198 名前:デフォルトの名無しさん :04/08/22 21:34
>>196
子ウィンドウでは HTTRANSPARENT を返して、親ウィンドウでは
マウス座標を調べて子ウィンドウの座標内にあれば HTCAPTION を
返すようにしたらどうですか?

199 名前:185 :04/08/22 23:05
自己解決しました。

LVITEM構造体のlParamを設定する必要があるんですね。
比較関数に送られてくるのはその値だったのか。
道理で全部ゼロになっているわけだ。

200 名前:テレパス名無しさん :04/08/22 23:05
>>178
チェックボックスのように自動でチェックする機能はないので、
自分で状態を管理してチェックを付けたり外したりしてください。

201 名前:196 :04/08/22 23:36
>>198
レスが遅くなって申し訳ありません。
子ウィンドウでHTTRANSPARENT(-1)を返し、親ウィンドウで座標をチェックして
HTCAPTIONを返したところ期待通りの動作になりました。
ご教授頂きありがとうございました。


202 名前:デフォルトの名無しさん :04/08/23 02:37
関連づけられたアイコンの小さいサイズを取得する方法はありますか?
ExtractAssociatedIconでは32x32サイズのアイコンしか取得できませんでした。
ExtractIconExだとEXEやDLLの場合は小さいサイズも取得できますが、フォルダ
の小さいアイコンを取得できません。
ぐぐってみたりMSDNをみたりしましたが見つけることができませんでした。


203 名前:デフォルトの名無しさん :04/08/23 08:22
Windows2000でコンピュータ名を変更できるAPIはないでしょうか?

SetComputerNameでは、NetBIOS名しか変わりませんでした。
Win32_ComputerSystemのRenameメソッドはXP以降でしか使えないようです。

204 名前:デフォルトの名無しさん :04/08/23 08:25
そろそろXP専用でも何も文句言われなくなってくる時期

205 名前:デフォルトの名無しさん :04/08/23 08:29
>>202
SHGetFileInfo

206 名前:デフォルトの名無しさん :04/08/23 09:57
>>203
よくわからずに書くけど、SetComputerNameExもダメ?

207 名前:デフォルトの名無しさん :04/08/23 10:42
>>206
ありがとうございます。

Exの方はドキュメントだけ見て、試してませんでした。
SetComputerNameExのComputerNamePhysicalDnsHostnameで上手く行きました。

お騒がせしました。


208 名前:デフォルトの名無しさん :04/08/23 14:29
現在実行中のプロセスから、自分自身が所有しているメモリサイズを知りたいのですが、
そういうふうに使えそうなAPIはないでしょうか?
できれば、スレッドごとのスタックサイズも取れると嬉しいです。
お知恵を拝借させてください。
お願いします。

209 名前:202 :04/08/23 15:35
>>205
ありがとうございます、調べてみます。


210 名前:186 :04/08/23 15:36
>>208
MEMORYSTATUS
GlobalMemoryStatus
で出来ると思います。

>>189
大変亀レスですけど、ペイトソフトといってもただMoveToExとか使わずに直線を引いたりするだけのプログラムでして。
一番重要そうなCreateDIBSectionの使い方と言うか意味の理解い苦しんでます。
hdcを取得するとかしてどうするのかとか…

211 名前:デフォルトの名無しさん :04/08/23 16:00
>>210
ググって一番最初に出てくるページどおりにやればできるんでないの?
某お絵かきソフトの作者のページだが。

212 名前:デフォルトの名無しさん :04/08/23 16:02
>>208
プロセスごとのメモリの情報は NT 系では PSAPI の GetProcessMemoryInfo()
9X 系では、ToolHelp のヒープウォークをする必要があります。

213 名前:デフォルトの名無しさん :04/08/23 16:42
アクセラレータキーってマウスボタンは使えないんですか?
VK_LBUTTONとかVK_RBUTTONなんてものがあるからやってみたのですが、うまくいきません。
ほかの適当なボタンに変えると動きます。

214 名前:デフォルトの名無しさん :04/08/23 17:08
>>208
パフォーマンスモニタ方面のAPI使えば大体のことはできそう。
詳しくは知らんのでMSDNあたってくらさい。

215 名前:デフォルトの名無しさん :04/08/24 00:31
VC++6.0です。
レイヤードウィンドウを使いたくて調べたところ、
SDKをインストールする、とあったのでインストールしてみたんですが相変わらず

'SetLayeredWindowAttributes' : 定義されていない識別子です。

と出ます。
core SDK のインストールだけじゃダメなんでしょうか?

216 名前:デフォルトの名無しさん :04/08/24 00:39
>>215
>>74

217 名前:215 :04/08/24 01:46
まさか同じ質問がスレ上にあったとは・・・
別の単語で検索して引っかからなかったので見落としてしまいました。

でも、まだ解決できません。
オプションからSDKのインクルードとライブラリは
ディレクトリに加えてあるんですけど、全然効果がないです。
何故なのかわかりませんが、他に設定が必要なのでしょうか?

218 名前:デフォルトの名無しさん :04/08/24 02:03
>>217
追加した奴を上の方にしてるか?

219 名前:215 :04/08/24 02:41
>>218
はい、それは書いてあったので試してみました。
でもダメなんです。

そういえば、>>78の意味がわかりませんでした。
調べても何がなにやらで。

普通だったらちゃんと定義されてるって認識するんですよね?

220 名前:デフォルトの名無しさん :04/08/24 02:54
#define _WIN32_WINNT 0x500
#include "windows.h"

こーしろってこと。


221 名前:デフォルトの名無しさん :04/08/24 04:27
>>220
stdafx.hネタと同じくらいメジャーな「初心者泣かせ」かもな(w

222 名前:222 :04/08/24 06:51
IMEの表示をずらしたいのですがうまくいきません.どの段階での表示かといいますと
ちょっとうまく伝えられるか自身がないのですが,メモ帳を立ち上げていただいて
[半角/全角キー]を押していただき[Aキー]を押していただくと[あ]の文字の下に点線が
表示されてる状態になると思うのですが,これをずらしたのです.
実際にずらしたいのはメモ帳なども外部アプリの物ではなく自分でCreateWindowしたEDITの物です

WM_IME_REQUESTで,なおかつWPARAMがIMR_QUERYCHARPOSITIONのときLPARAMはIMECHARPOSITIONという
構造体へのポインタでありまして,それをうめて1を返せばいいみたいなことがmsdnに書いてあるとおもうのですが
英語なので自信がありません.
msdn.microsoft.com/library/en-us/intl/ime_2nu6.asp

ここにソースを貼りました
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1086258254&rm=100

223 名前:222 :04/08/24 08:36
WM_IME_NOTIFYでWPARAMがIMN_SETCOMPOSITIONWINDOWのときに
ImmSetCompositionWindowで無事ずらすことができました

224 名前:デフォルトの名無しさん :04/08/24 12:33
質問です。

VC++6.0にて、
新規作成 -> Win32 Console Application -> 空のプロジェクト
から、ウィンドウ(またはダイアログ)を生成することは可能でしょうか。




225 名前:デフォルトの名無しさん :04/08/24 12:38
>>224
試してみてください

226 名前:224 :04/08/24 12:42
ハーイ

227 名前:デフォルトの名無しさん :04/08/24 12:43
>>224
ぶっちゃけ、可能です。
作り方は自分で調べましょう。
手取り足取り教えられる暇人はいません。

終了

228 名前:224 :04/08/24 12:50
>227 再開
可・不可だけたずねたつもりでしたので、
思わぬ回答、ありがとうございました。



229 名前:215 :04/08/24 12:54
>>220
できました、そうやるのですか。
本当にありがとうございました。

230 名前: ◆Z0vd5w812U :04/08/24 13:25
>>224
オレはいつもconsoleでWin32アプリを作ってる。printfを使いたいから。
リリース時にはWinMain()を呼び出すように切り替えてコンパイル。

で、一つだけ教える。GetModuleHandle(NULL)でアプリケーションのインスタンスハンドルを入手できる。

231 名前:デフォルトの名無しさん :04/08/24 13:33
>>230
OutputDebugString()は許されない環境なのか?

232 名前: ◆Z0vd5w812U :04/08/24 13:43
>>231
コマンドラインでmakefile派だから。IDEを使わないので。


233 名前:デフォルトの名無しさん :04/08/24 13:44
>>231
慣れというものがあるっしょう。
かく言う俺もConsole使ってる。_DEBUG定数でmainとWinMainを切り替えたりして。

234 名前:デフォルトの名無しさん :04/08/24 14:04
>>233
WinMainを使っててもコンパイルオプションでコンソールが出る。
(少なくともMingwとlcc-win32では。)
いちいちWinMainとmainを切りかえるのは面倒じゃないか?

235 名前:デフォルトの名無しさん :04/08/24 15:51
>>232
は?IDE?なんの関係が?

236 名前:デフォルトの名無しさん :04/08/24 16:17
OutputDebugStringって、普通にコンソールに出力出来るのか?

237 名前:デフォルトの名無しさん :04/08/24 16:26
...\Microsoft Platform SDK\Bin\winnt\Dbmon.Exe

238 名前:デフォルトの名無しさん :04/08/24 17:12
>>234
IDE や Makefile 等で、リリース時とデバッグ時でリンカの設定も変えてるのでは?
んでソースの中では _DEBUG 見て main 生かしたり WinMain 生かしたりしてるとか。

239 名前:224 :04/08/24 17:25
>>230-238
有用な情報有難うございます。

今までWindowアプリは食わず嫌いでしたというか
機会がなかったので、食っていくのために少しオベムキョウして見ます。

240 名前: ◆Z0vd5w812U :04/08/24 21:00
>>234>>238
そう。Makefile中でコンパイルオプションとリンクオプションを変えてる。
#ifdefでmainとWinMainを切り替えてる。10行程度だし一回作ってしまえばあとは使い回し。

>>239
深淵なる糞APIの世界へようこそ。ガンガッテ下さい。

241 名前:デフォルトの名無しさん :04/08/24 21:40
質問なんですが
猫でもわかるプログラミングのサイトのWindows SDK編 12章の
リソーススクリプトとヘッダの部分を教えてください。
お願いします。

242 名前:デフォルトの名無しさん :04/08/24 23:11
>>241
先ずはそのサイトの該当ページを飽きるまで読んでください。

243 名前:デフォルトの名無しさん :04/08/24 23:20
読んだのですがどこみていいのか わかりません
システムメニューのリソーススクリプトはのっているのでしょうか
これは12章以降を見るっていうことでしょうか

244 名前:デフォルトの名無しさん :04/08/24 23:31
12章の内容ってシステムメニューいじってるだけやん。
自分で好きなようにダイアログリソース作ってよし。

ついでにおまいらに言っとくが、[閉じる(C) Alt+F4]の下にメニュー追加するやつは頃す。

245 名前:デフォルトの名無しさん :04/08/25 00:38
>>244
タスクバー右クリから閉じようとした時、切なくなるね

246 名前:デフォルトの名無しさん :04/08/25 00:54
>>244
cmd.exeのコトかー!

247 名前:デフォルトの名無しさん :04/08/25 01:12
ひでまるのことかー!

248 名前:デフォルトの名無しさん :04/08/25 01:35
>>244
*.chmファイルとか開いた時とか

249 名前:デフォルトの名無しさん :04/08/25 01:44
バージョン情報が表示されるたびに学習能力のない自分に苛立ち手首を切りたくなります。

250 名前:デフォルトの名無しさん :04/08/25 02:11
特定の外部アプリケーションのEDITウインドウの
ウインドウハンドルを拾うにはどうすればいいですか?


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