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


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

Win32API 質問箱 Build8
1 名前:デフォルトの名無しさん :02/12/27 13:50
スレ立てるまでもない、
   Win32 Application *Programmer* Interface
についての質問はこちらへどうぞ。
やさしいお兄さんたちが答えてくれるかも。
でも、質問する前に検索ぐらいしる!!

過去スレ・参考 >>2-5

2 名前:デフォルトの名無しさん :02/12/27 13:50
過去スレ
Win32API 質問箱 Build7
http://pc3.2ch.net/test/read.cgi/tech/1036654893/
Win32API 質問箱 Build6
http://pc3.2ch.net/test/read.cgi/tech/1032548635/
Win32API 質問箱 Build5
http://pc3.2ch.net/test/read.cgi/tech/1028580373/
Win32API 質問箱 Build4
http://pc3.2ch.net/test/read.cgi/tech/1023361418/
Win32API 質問箱 Build3
http://pc.2ch.net/tech/kako/1006/10067/1006783012.html
Win32API【2】
http://pc.2ch.net/tech/kako/1006/10067/1006783012.html
Win32API 質問箱
http://pc.2ch.net/tech/kako/991/991576947.html

参考
MSDN Online
http://www.microsoft.com/japan/msdn/default.asp
猫でもわかるプログラミング
ttp://www.kumei.ne.jp/c_lang/index.html

3 名前:1 :02/12/27 13:52
>>1
乙ー

4 名前:かおりん祭 ◇VqKAORinK6 :02/12/27 14:02
   ∋oノハヽo∈ / ̄ ̄ ̄ ̄ ̄ ̄ ̄
     从o゚ー゚从< 新スレおめでとうございま−す♪
   = ⊂   )   \_______
   = (__/"(__) トテテテ

5 名前:デフォルトの名無しさん :02/12/27 15:23
>>1 >>4
乙CurrySummer(w

6 名前:デフォルトの名無しさん :02/12/27 19:45
沢村は出入り禁止だ!!

7 名前:デフォルトの名無しさん :02/12/27 23:24
スタートメニューとかお気に入りの項目って
右クリックしたときと左クリックしたときで挙動が違うよね。
あれをやりたいんだけど

TrackPopupMenuで
TPM_LEFTBUTTON | TPM_RIGHTBUTTON
を指定したときに
親ウィンドウにWM_COMMANDが送られてくるんだけど、
これが右クリックか左クリックか分からない。

どうしたらいい?




8 名前:デフォルトの名無しさん :02/12/27 23:27
age

9 名前:デフォルトの名無しさん :02/12/27 23:31
>>7
ここだけの話、奴らはメニューのフリをした独自ウィンドウなんだ。
ナイショダヨ

10 名前:デフォルトの名無しさん :02/12/27 23:49
>>9

えっ!自分で作れってこと?

サンプルはどっかにありませんか?


11 名前:デフォルトの名無しさん :02/12/28 00:10
>>7
WM_COMMANDとWM_CONTEXTMENUを処理してやれば?

12 名前:デフォルトの名無しさん :02/12/28 00:39
>7
> メニューのフリをした独自ウィンドウ
なんだが、不完全に似たことをするなら
> TPM_LEFTBUTTON | TPM_RIGHTBUTTON
から TPM_RIGHTBUTTON を外して
かわりに WM_MENURBUTTONUP を処理する。


13 名前:デフォルトの名無しさん :02/12/28 02:25
スタートメニューは隠れAPIがあるんじゃ。

14 名前:タスクバーのリサイズ方法 :02/12/28 11:27
タスクバーのハンドルをFindWindowで取得して
MoveWindowでリサイズしようとしても出来ませんでした。

どなたかご教授いただけないでしょうか。


15 名前:タスクバーのリサイズ方法 :02/12/28 11:31
追伸:
タスクバーのスタートボタンなどはMoveWindowsでウィンドウサイズを
変更できるんです。
なぜタスクバーだけうまくいかないんでしょうか・・・。


16 名前:デフォルトの名無しさん :02/12/28 11:48
携帯からだけど
ソースあげてみ

ハンドル取得するところと、ウィンドウサイズ変えるところ

17 名前:デフォルトの名無しさん :02/12/28 12:23
> 携帯からだけど

わざわざ・・・

18 名前:タスクバーのリサイズ方法 :02/12/28 13:29
HWND hTaskbar = FindWindowEx(NULL, NULL, "Shell_TrayWnd", "");
MoveWindow(hTaskbar, x, y, cx, cy, TRUE);

携帯からとは・・・。
筋金入りの2ちゃんねらーですな。
よろしくお願いします。


19 名前:gn355my0 :02/12/28 13:49
んで hTaskbar の中身は確認したのか?

20 名前:タスクバーのリサイズ方法 :02/12/28 14:29
タスクバーのハンドルをFindWindowで取得して
MoveWindowでリサイズしようとしても出来ませんでした。

タスクバーのスタートボタンなどはMoveWindowsでウィンドウサイズを
変更できるんです。
なぜタスクバーだけうまくいかないんでしょうか・・・。

どなたかご教授いただけないでしょうか。

HWND hTaskbar = FindWindowEx(NULL, NULL, "Shell_TrayWnd", "");
MoveWindow(hTaskbar, x, y, cx, cy, TRUE);


21 名前:デフォルトの名無しさん :02/12/28 17:55
実際 MoveWindow でリサイズできないウィンドウってのは作れるわけだし
ウィンドウのサイズの変更はウィンドウ側で制御できるんだから
タスクバーがそのようにしているんでないの?

22 名前:20 :02/12/28 18:35
> 実際 MoveWindow でリサイズできないウィンドウってのは作れるわけだし
それは知りませんでした。
つまり無理だということですか・・・。
もうちょっと足掻いて駄目だったら諦めます・・・。


23 名前:名無し@沢村 :02/12/28 18:40
>>20
無理じゃないよ。実際windowsのタスクバーはリサイズできるわけだし…。
もっと研究してごらん?

24 名前:デフォルトの名無しさん :02/12/28 19:30
さっき携帯から書いた筋金入り(重症の方が的確だな)だけど、出来た。
SetWindowPos(hTaskbar,NULL,100,100,500,500,SWP_NOZORDER|SWP_NOSENDCHANGING);

なんでこんな事をしたいのかはしらないが

25 名前:デフォルトの名無しさん :02/12/28 20:09
名無し@沢村は無視で。
プログラミングしたこともないのにあれこれ突っ込むヒキコモリです。

26 名前:デフォルトの名無しさん :02/12/28 20:23
メニューをフローティングツールバーのように移動できるようにする方法ないですか?
一応、猫で分かる〜のサイトは見たのですが、あれと違うアプローチの仕方ってないでしょうか?

27 名前:デフォルトの名無しさん :02/12/28 20:30
>>26
C+APIでだったら地道に実装するしかないかと。

というか質問の意味を質問させて欲しい。
メニューをフローティングツールバーのように移動、というのを
もうすこし具体的に頼みます

28 名前:20 :02/12/28 20:30
>>24
おおおっ!!
ありがとうございます。早速試させて頂きます。
実は横長画面のノートでタスクバーを横においてるんですが
なぜかシャットダウンのたびにタスクバーの幅が短くなってしまって
対策プログラムを作ろうと思ってたんです。


29 名前:26 :02/12/28 20:47
>>27
メニューバーを、レバーコントロールみたいに、ドラッグしながら移動可能にしたいんですよ。
メニューバーってのは、文字だけの「ファイル(F) 編集(E)・・・」とかいうあれです。

30 名前:デフォルトの名無しさん :02/12/28 21:19
>>29
環境は?C+APIですか?なら自分で実装するしかないです。
猫、のアプローチってどんな方法?

31 名前:26 :02/12/28 21:32
>>30
C+Win32APIです。

猫でも分かる〜はhttp://www.kumei.ne.jp/c_lang/sdk4/sdk_311.htm
ここから説明されてるんですけど、かなり実装が面倒っぽいので
もっとスマートな方法があるんじゃないかと思って。

32 名前:デフォルトの名無しさん :02/12/28 21:41
文字を表示させる関数(TextOutとか)はどれが一番使いやすいのですか?

33 名前:デフォルトの名無しさん :02/12/28 21:59
>>31
いや〜面倒だと思うよ。MFCを使えばある程度簡単に実装できるだろうと思うけれど。
俺の直感では、やはりRebarを使ってなんとかやろうと思うだろうけど、
それだと猫氏のページと同じ方法だし、もしかしたら1から作る方が楽かもしれない。

シェブロンを出さなくていい&フローティング無しならば、wtlを使う方法があるが・・・
これは激簡単だけれど、ATL(C++)のかなりの理解が必要となるから、自信があるなら紹介します。

34 名前:デフォルトの名無しさん :02/12/28 22:01
>>32
場合によりけりです。俺は何も考えずに表示するだけでよければ迷わずMessageBoxです。

35 名前:名無し@沢村 :02/12/28 22:13
>>34
俺はMessageBoxをデバッグに使ってるね。
自作のDebug関数の中に入れて、どんな型の引数でも表示できるようにオーバーロードしてるよ。

36 名前:26 :02/12/28 22:24
>>33
やっぱり面倒ですか。
IEとかその他のアプリでも当たり前のように使われてるので
そういうAPIがあると期待してたのですが。
ATLやWTLは、今回は使いたくないので、なんとかAPIでやってみます。
ありがとうございました。

37 名前:34 :02/12/28 22:24
>>35
あなたのことは聞いてません。

38 名前:デフォルトの名無しさん :02/12/28 22:27
>>36
ちなみにRebarを使う方法はIEの存在が前提になると思います。多分。

39 名前:デフォルトの名無しさん :02/12/28 23:19
>>37
かまうなって、喜ぶから。


40 名前:デフォルトの名無しさん :02/12/29 00:40
物理メモリのみを確保したいんですが、どうすればいいのでしょうか?

41 名前:デフォルトの名無しさん :02/12/29 00:49
>>40
VirtualLockを使えばできます。これ以上の説明も必要?

42 名前:デフォルトの名無しさん :02/12/29 00:54
MSDNちょっとみてきます。
できればもうちょっと説明していただけるとうれしいです。

43 名前:ルート大芝 :02/12/29 01:01
Win98で、C:\にあるファイルとフォルダのパスを列挙する
プログラムを作りたいんだけど、MSDNのFindFirstFileの説明で

ルートディレクトリ内のファイルを検索するには、この関数で "C:\*"
のようなファイル名を指定し、引き続き GetFileAttributes 関数を
使ってルートディレクトリ内を検索してください。

って書いてあるけど、FindFirstFile("C:\\*", &f);は
FindFirstFileが失敗します。どうしたらいいの?

44 名前:ルート大芝 :02/12/29 01:11
すまんこ、FindFirstFile("C:\\*", &f);は失敗しませんでした。

45 名前:デフォルトの名無しさん :02/12/29 01:22
>>42
説明はいいんだけれど、解らないことを具体的に聞いてね。
解りづらい部分だと思うから、解らないところを絞ってほしい。

46 名前:デフォルトの名無しさん :02/12/29 01:41
メモリーはnewでしか確保したことなくてnew以外のWinのメモリ確保の
仕方すらまだわかってません。
で、ちょっとさがしたらVirtualAllocを使ってVirtualLockでスワップ不可にして
物理メモリに確保でよろしいのでしょうか?

47 名前:デフォルトの名無しさん :02/12/29 02:21
>>46
特に難しい話ではないです。ロックしたいアドレスを指定すればいいだけ。

sample:
#include <Windows.h>
#define BUF 300

int main(void){char *p=new char[BUF];
BOOL b;
b=VirtualLock(p,BUF);
if(b==0) MessageBox(0,"","失敗",0);
else VirtualUnlock(p,BUF);
delete p;return 0;}

ここで例えば
b=VirtualLock(p,BUF*1000000);
とやると当然失敗する。
GetLastErrorはその時
1453"クォータが不足しているため、要求されたサービスを完了できません。"
になる。

48 名前:デフォルトの名無しさん :02/12/29 04:32
>>47
丁寧にサンプルまでつけていただきどうもです。
ここまでしていただければよくわかります。
フリーな物理メモリは取れるようですから、
それを見た上で適量を確保すればいいっぽいですね。
OS入れなおしたばっかなんで今はできないですが、晩にでもやって報告に来ます。

ファイル解析で時間かかるんで、物理メモリのみの確保だとかなり速くなるんで楽しみです。

49 名前:デフォルトの名無しさん :02/12/29 07:48
CDの挿入を検出し, かつautorunの実行の可否をプログラムから制御するには
どうしたらよいのでしょうか。
何かメッセージが飛んでくるとかいうのをどこかで読んだ気がするんですが。

50 名前:デフォルトの名無しさん :02/12/29 08:24
>>49
俺が知っているのはレジストリのNoDriveTypeAutoRunだけだが…
そんなメッセージがあるのかな?

51 名前:デフォルトの名無しさん :02/12/29 10:43
>>49
捕まえるとしたら
WM_DEVICECHANGE
DBT_DEVICEARRIVAL
あたりかな?

52 名前:49 :02/12/29 11:36
IQueryCancelAutoPlayで制御できるみたいです。XP限定ですが。

53 名前:質問 :02/12/29 13:05
ReBarコントロールで、XPライクなLUNAインターフェースを実現するには、どうすればいいですか?

自分で勉強をしようと思いますので、マイクロソフトのMSDN内に、LUNAインターフェースに関する技術文書はありますか?

54 名前:デフォルトの名無しさん :02/12/29 13:55
検索すればいいじゃん。

55 名前:質問 :02/12/29 14:07
>>54
そうか・・・。
あまり詳しい人はいないのか。

56 名前:デフォルトの名無しさん :02/12/29 14:43
>>55
文献探しも勉強のウチ・・・

57 名前:デフォルトの名無しさん :02/12/29 15:21
>>53
LUNAインターフェースとはなんぞや?

58 名前:デフォルトの名無しさん :02/12/29 15:28
>>49
WM_DEVICECHANGEを拾えばよい。AUTORUNのキャンセルも出来る。
Autorunを必ず実行させるのは難しい。けど本質ではないので問題詳細は略。

詳細はここ(英文)
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/shellcc/platform/shell/programmersguide/shell_basics/shell_basics_extending/autorun/autoplay_reg.asp


59 名前:デフォルトの名無しさん :02/12/29 18:05
SetStretchBltModeのHALHTONEの原理はどうなっているの?
色の平均化とかSDKには書いていたけど、どんなふうに平均化しているの?

ペゾルドの本でもチラッとしか書いてなかったよ。






60 名前:デフォルトの名無しさん :02/12/29 18:41
>>59
激しく意味不明

61 名前:デフォルトの名無しさん :02/12/29 18:44
>>60
ちったぁオツム使えや。

62 名前:デフォルトの名無しさん :02/12/29 18:49
>>60
いや、だからさぁ、これを使った後に、StretchBltを使って拡大縮小する場合、
ビットマップが比較的に汚くならないでしょ?

このHALFTONEってどういうことをやっているのかなって思ったわけね。

だから、SetStretchBltModeでHALFTONEを指定して、StretchBltした
場合の内部の処理を知りたいんでした。






63 名前:デフォルトの名無しさん :02/12/29 18:58
>>62
詳しく説明してくれてthx。最初HALHTONEで検索してて意味不明だった(恥
世の中に、それに関してどんな処理があるのかすら解らないです。スマソ。
ここで解決しなければ、ゲーム制作技術板に行くと詳しい人がいるかもしれません。

64 名前:デフォルトの名無しさん :02/12/29 18:59
>>59
↑ペゾルドを読んだことがこいつの自慢らしい。


65 名前:デフォルトの名無しさん :02/12/29 19:08
>>64
その程度は調べた、という風に解釈してやろうじゃないか。煽りは別板で

66 名前:デフォルトの名無しさん :02/12/29 19:14
StretchBltで具体的にどう補間されるかってビデオカード次第だった気もするが。
いまだとテクスチャの補間と一緒にバイリニアとかトライリニアとかでやってんじゃない?

67 名前:デフォルトの名無しさん :02/12/29 19:16
>>66
そういえば、GetDeviceCapsにRC_STRETCHBLTという項目があるしね。

68 名前:質問 :02/12/29 20:48
今、猫さんのホームページを見ながらWin32APIの勉強をしています。
http://www.kumei.ne.jp/c_lang/

で、今困っていまして・・・。
猫さんのHPの一部を抜粋↓
「dllのバージョンは5.81以降が必要です。
IE5.0以降がインストールされていれば大丈夫です。
また、生のVC++6.0ではコンパイルできません。
SPをインストールしてもヘッダファイルやライブラリは更新されないので、マイクロソフトのページなどからプラットフォームSDKを更新する必要があります。」

そのプラットフォームSDKを探しているのですが、マイクロソフトのHP内で見つかりません。
MSDNの中とかも探しているんですが・・。

どこにプラットフォームSDKがあるかご存知の方はいませんか?
このままではプログラム開発が進まなくて困ってます。

69 名前:デフォルトの名無しさん :02/12/29 20:59
>>68
http://www.microsoft.com/msdownload/platformsdk/sdkupdate/

70 名前:デフォルトの名無しさん :02/12/29 21:18
Win32APIのみでフレームウィンドウを使うにはどうすればいいの?
既出だったらごめん。(というか、多分既出)

71 名前:デフォルトの名無しさん :02/12/29 21:50
そんぐらい検索すれ

72 名前:質問 :02/12/29 21:52
>>69
ありました。CoreSDKをダウンロードしてますが・・・

・・・これを見て、ウツになりました。
「Download size: 176.9 MB」

73 名前:デフォルトの名無しさん :02/12/29 22:22
>>72
MSDNに付いてくるからなぁ。
MSに連絡すると、多分郵便で送って貰えるとは思うけど

74 名前:デフォルトの名無しさん :02/12/29 22:25
>>70
1を読め。猫に行け。

75 名前:59 :02/12/30 00:16
意見くれた方、ありがとうございます。

>>66の「バイリニアとかトライリニア」を参考にして考えてみます。



76 名前:デフォルトの名無しさん :02/12/30 00:31
 Sendinput関数をつかって他のアプリにキー送信をしたいのですが、いい例が見つかりませ
ん。keybd_event関数は使えるのですが、マイクロソフトを閲覧するとSendinput推奨とあった
ものですから。よいものがありましたらお示しください。

77 名前:デフォルトの名無しさん :02/12/30 00:46
SendInputとはまたマイナーなAPIを。
これって、一連の入力を記録する部分は自分で作らなきゃ駄目ですよね?>どなたか詳しい人

>>76
他のアプリにキー送信をしたいだけなら、sendMessageでWM_KEYDOWN等を送ればいいのでは?
SendInputでは特定のアプリに送るのには甚だしく適していません。any questions?

78 名前:76 :02/12/30 00:52
>>77
 マイナーなんですか? 検索してもなかなか出てこない理由が分かりました。
keybd_eventを使っていたのはALT+Ctrl+○○もできるためだったのですが、
マイクロソフトのサイトで調べているとSendinput推奨とあったものですから。
sendinputだとキー入力の割り込みが発生しない等のメリットがあるようですね。
引き続きよろしくお願いします。

79 名前:デフォルトの名無しさん :02/12/30 01:09
> 推奨

必須ではない。

80 名前:質問 :02/12/30 07:41
今、猫さんのホームページを見ながらWin32APIの勉強をしています。
http://www.kumei.ne.jp/c_lang/
開発環境は、WinXP VisualC++6です。

で、話は変わりまして、rebarにメニューをつけようとしていますが、
コンパイルエラーが出ます。

error C2065: 'I_IMAGENONE' : 定義されていない識別子です。
error C2065: 'BTNS_AUTOSIZE' : 定義されていない識別子です。

この問題は猫さんのHPによると、プラットフォームSDKをインストールすれば、解決すると書いてあるのですが、インストールしてもコンパイルエラーがでます。
やはり、VisualC++6では限界があるのでしょうか?VisualC#を買ったほうがいいのでしょうか?



81 名前:デフォルトの名無しさん :02/12/30 07:58
commctrl.h 参照

#if (_WIN32_IE >= 0x0400)
#define TBSTYLE_AUTOSIZE 0x0010
...

#if (_WIN32_IE >= 0x0500)
#define BTNS_AUTOSIZE TBSTYLE_AUTOSIZE
...

#if (_WIN32_IE >= 0x0501)
#define I_IMAGENONE (-2)
#endif

82 名前:名無し@沢村 :02/12/30 08:16
>>80
C#でやろうとすると、勉強し直しだよ。

83 名前:質問 :02/12/30 08:42
>>81
なるほど。私のVisualC++6に入っているcommctrl.hには、その2つ「BTNS_AUTOSIZE・I_IMAGENONE 」がないですね。
新しいcommctrl.hを入れないと駄目と言うことですね。

探してみます。
(てか、猫さんのHPの言うとおり、SDKをインストールしたんだけどなぁ・・・)

84 名前:質問 :02/12/30 08:45
>>82
C++.NETと言う商品があったのですね。
てか、C/C++/C#が同梱されているかと思って。

85 名前:デフォルトの名無しさん :02/12/30 08:48
>>84
Comctl32.dllが5.81以降なら
#define BTNS_AUTOSIZE 0x0010
#define I_IMAGENONE (-2)
を自分で定義する。

ソースの頭の方にでも書いておく。

86 名前:質問 :02/12/30 08:57
新しいcommctrl.hが見つかりました。

E:\Microsoft SDK\include\CommCtrl.h

自分でコピペをしないと駄目なんですねw
自動的に更新してくれるのかと思ってまして・・・。

初心者ですいませんでした。

87 名前:質問 :02/12/30 09:04
ははは(笑い)

VC++6の「E:\Microsoft Visual Studio\VC98\Include」フォルダの内容を、新しい2002年バージョンに変えたところ、
見事コンパイルができました。

これで、XPライクなインターフェース開発が進みます。
ありがとうございました。みなさま。

88 名前:デフォルトの名無しさん :02/12/30 09:14
>>87
インクルードファイルの参照先を変更and/or追加するのが、普通だと思われ。

89 名前:デフォルトの名無しさん :02/12/30 09:18
俺はVC6でSDKをインストールしたら自動的にパスが追加されたけどな。

90 名前:質問 :02/12/30 09:25
>>89
たぶん、VisualStudioのインストール先ディスクパスが「C:\Program Files」でないと駄目なのでは?
私は、Eドライブに重要なアプリを入れているので。

91 名前:デフォルトの名無しさん :02/12/30 09:54
>>90
C ドライブに空き容量が少ないとか、整理のためとか、そういう理由ならわかる
けど、「重要なアプリを」 という分け方に意味はあるのか?
いずれにせよ OS があぼーんしたら再インストールする羽目になるのに。

92 名前:デフォルトの名無しさん :02/12/30 10:47
スクリーンセーバーを以下のようにして起動しています。

SendMessage(GetDesktopWindow( ), WM_SYSCOMMAND, SC_SCREENSAVE, 0);

ただ、これですと、2000/NTでパスワードによる保護にチェックされていても
パスワード入力のダイアログが表示されず、そのまま操作可能な状態に戻ってしまいます。
何か他に良い方法はないでしょうか?

93 名前:デフォルトの名無しさん :02/12/30 11:16
>>90
自動的じゃなくてスタートメニューに追加される
Register PSDK Directories with Visual Studio
を実行したらだった。たぶん。

94 名前:デフォルトの名無しさん :02/12/30 21:25
_beginthread使おうと思って、libcmt.libとmsvcrt.libをリンクし
#include <process.h>して、プロジェクトの設定でも
マルチスレッドにしたのですが

error LNK2001: 外部シンボル "_ThreadAccept" は未解決です
fatal error LNK1120: 外部参照 1 が未解決です。

とエラーが出てしまいます。
何か解決法はありませんか?

95 名前:デフォルトの名無しさん :02/12/30 23:49
>>94
プロジェクトの設定が間違っているんだろう。
DebugとRelease両方とも変えた?

96 名前:デフォルトの名無しさん :02/12/31 03:01
>libcmt.libとmsvcrt.libをリンクし
激しく矛盾の悪寒・・・

97 名前:質問 :02/12/31 11:33
コモンコントロールに関する情報が少なくてこまってます。
本屋にも行ったのですが、まったく関連する本がないですね。

REBARで質問ですが、たとえば、IEを開くとウィンドウの上部にREBARが当然表示されてますよね。
そのREBARというのは、はじめからその配置と言うのが固定化されてますが、
REBARの位置情報を設定するにはどうすればいいのでしょうか?

私も同じくREBARを配置してみましたが、ばらばらに配置されるだけで、順番良く配置されません。

できれば、位置情報の設定、そしてウィンドウを閉じる前にそのREBARの位置情報を保存し、再びウィンドウを開くときには、その保存された位置情報を元に、再現するアプリケーションにしたいです。
どうすればいいのでしょうか?

98 名前:デフォルトの名無しさん :02/12/31 18:47
ToolTipを意図的に表示したいのですがどうやればいいのでしょうか?
WindowsXPとか、タスクトレイに表示されたりするから(ハードウェアの取り外しとかのメッセージ)
できるとは思うのですが解りません。

99 名前:デフォルトの名無しさん :02/12/31 19:36
>>97
普通に出来ると思ったんだが。

>>98
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/shellcc/platform/commctls/tooltip/usingtooltips.asp

100 名前:98 :02/12/31 20:22
>>99
みたけどどれだかわかんないです。。
TTM_TRACKACTIVATEあたり???

101 名前:デフォルトの名無しさん :02/12/31 20:27
おまえら今日ぐらいはやさしく教えてやれよ

102 名前:デフォルトの名無しさん :02/12/31 20:28
くれよ、だろ プ

103 名前:デフォルトの名無しさん :02/12/31 20:33
>>102
あなたのような人でも幸せになる権利を持っています。
来年があなたにとってよい年でありますように。

104 名前:デフォルトの名無しさん :02/12/31 20:34
うふっ、なんだも聞いてね。

105 名前:デフォルトの名無しさん :02/12/31 20:37
>>100
あのページを読んで解らないならもうどうしようもない。諦めろ

106 名前:98 :02/12/31 21:12
表示はされるようになりました。
Tooltipじゃなくて、個々のオブジェクトにTTM_TRACKACTIVATEを送ってしまっていました。
ところが表示されたのはよいのですが自動的に消えてくれないのです。
表示されっぱなし。
自分で消す処理を入れるしかないのでしょうか?

107 名前:デフォルトの名無しさん :02/12/31 21:15
◆◇◆◇◆最新情報◆◇◆◇◆
http://yahooo.s2.x-beat.com/linkvp/linkvp.html


108 名前:デフォルトの名無しさん :02/12/31 21:47
フレームウィンドウの大きさを
クライアント領域があるサイズになるように、
設定したいんだがどうすればいい?
GetClientRectはあるが、SetClientRectはない


109 名前:デフォルトの名無しさん :02/12/31 21:57
自分で取得するしかない。

110 名前:デフォルトの名無しさん :02/12/31 23:40
>>108
(GetWindowRect - GetClientRect) + (設定したいRect)

で逝ける。

111 名前:bloom :02/12/31 23:45


http://www.agemasukudasai.com/bloom/

112 名前:gn355my0 :02/12/31 23:58
AdjustWindowRectEx() じゃダメなんだっけ?

113 名前:デフォルトの名無しさん :03/01/01 00:39
メニューが折り返すとだめぽ

114 名前:デフォルトの名無しさん :03/01/01 05:10
>>113
それは110の方法を使っても駄目なんじゃないかな?

まず(GetWindowRect - GetClientRect + 設定したいRect)で設定して、
そこで改めてGetClientRectをして、それが設定したいRectと違った場合は
その差分(必ず縦方向になるはず)を改めてSetWindowRectする、といいはず。

というか110の方法は思いつかなかった。いつもGetSystemMetrics使ってたよ。thx>110

115 名前:デフォルトの名無しさん :03/01/01 12:28
どっかのスレの過去ログでそれぞれの方法の長短について
議論してたような

116 名前:デフォルトの名無しさん :03/01/01 13:04
>>115
GetSystemMetricsと、GetWindowRect-GetClientRectの話?

117 名前:斉藤 :03/01/01 13:24
質問

rebarを作る際の、並び方を変えたいときはどうすればいいのですか?

作るrebarを一列ごとに表示させる方法。

デフォルトでは、一列に、複数のrebarが表示される形になります。

118 名前:デフォルトの名無しさん :03/01/01 13:30
>>117
書いたソースを簡単にアプしてくれない?

119 名前:斉藤 :03/01/01 14:19
簡単にUPします。

一つ目rebarの作成。

hWndRebar = CreateWindowEx(
0L,
REBARCLASSNAME,
NULL,
WS_VISIBLE | WS_BORDER | WS_CHILD | WS_CLIPCHILDREN |
WS_CLIPSIBLINGS | CCS_NODIVIDER | CCS_NOPARENTALIGN |
RBS_VARHEIGHT | RBS_BANDBORDERS,
0, 0, r.right, r.bottom,
hWndParent,
(HMENU)ID_REBAR,
hInst,
NULL );

if (!hWndRebar)
return 0;

rbi.cbSize = sizeof(rbi);
rbi.fMask = RBIM_IMAGELIST;
rbi.himl = hIml;
SendMessage(hWndRebar, RB_SETBARINFO, 0L, (LPARAM)&rbi);

120 名前:斉藤 :03/01/01 14:19
2つ目、rebarにコンボボックスを追加
hWndCombo = CreateWindowEx (
0,
"ComboBoxEx32",
TEXT(""),
WS_VISIBLE | WS_CHILD | WS_TABSTOP |
WS_VSCROLL | WS_CLIPCHILDREN | WS_CLIPSIBLINGS | CCS_NORESIZE |
CBS_AUTOHSCROLL | CBS_DROPDOWNLIST,
0,0,
MIN_COMBOCX,
MIN_COMBOCY * NUM_LINKS,
hWndParent,
(HMENU)ID_COMBO,
hInst,
NULL );

SendMessage( hWndCombo, CBEM_SETIMAGELIST, 0L, (LPARAM)hIml);

121 名前:斉藤 :03/01/01 14:23
3つめ、2つめ追加。

REBARBANDINFO rbBand;

hWndToolBar = CreateToolbarEx(hWndParent,
WS_CHILD | TBSTYLE_LIST | TBSTYLE_FLAT | TBSTYLE_TOOLTIPS | WS_CLIPCHILDREN |
WS_CLIPSIBLINGS | CCS_NODIVIDER | CCS_NORESIZE | WS_VISIBLE,
ID_TOOLBAR,
NUM_TBBITMAPS,
(HINSTANCE)hInst,
IDB_TOOLBAR,
(LPCTBBUTTON)&tbButtons,
NUM_TBBUTTONS,
BMP_CX,BMP_CY,
BMP_CX,BMP_CY,
sizeof(TBBUTTON));

rbBand.cbSize = sizeof(REBARBANDINFO);
rbBand.fMask =
RBBIM_CHILD |
RBBIM_CHILDSIZE |
RBBIM_STYLE |
RBBIM_ID ;
rbBand.fStyle = RBBS_NOVERT |
RBBS_CHILDEDGE;
rbBand.hwndChild = hWndToolBar;
rbBand.wID = ID_TOOLBAR;
rbBand.cxMinChild = MIN_TBCX;
rbBand.cyMinChild = MIN_CY;

SendMessage(hWndRebar, RB_INSERTBAND, (UINT) -1, (LPARAM) (LPREBARBANDINFO) &rbBand);

122 名前:斉藤 :03/01/01 14:25
わからないなー。

たとえば、rebarに3つのツールバーを登録したとして、
その表示を、ウィンドウの上部に上から順番良く、「3列」で表示させたいだけなのに。

今のままでは、一列に、3つのツールバーが重なる形で表示される。

123 名前:デフォルトの名無しさん :03/01/01 16:47
>>122
1. レバーコントロールを作成。
2. ツールバーの親をレバーコントロールにして作成。
3. REBARBANDINFO構造体のfStyleに
RBBS_BREAKを指定してRB_INSERTBANDを送る。
4. 2-3を繰り返す。

124 名前:斉藤 :03/01/01 20:07
>>123

ありがとうございます!!!
みごと、3列で表示できました。

「RBBS_BREAK 0x00000001 改行」って、ツールバーのエリア自体を「改行」すると言うことだったんですね・・・。
・・・・。
助かりました。すいませんでした。初歩的な質問で・・・・。

125 名前:デフォルトの名無しさん :03/01/01 21:48
タスクバーみたいなウィンドウを作成・表示して
他のウィンドウの最大化領域サイズ
(SystemParametersInfo(SPI_GETWORKAREA・・・)を
設定したいんですが、どんな方法があるでしょうか?

126 名前:デフォルトの名無しさん :03/01/01 22:30
>>125
質問の意味が分からない。具体的には??

127 名前:125 :03/01/01 22:37
タスクバーのプロパティで「自動的に隠す」に
チェックを入れている状態と入れていない状態では、
ウィンドウを最大化した時のウィンドウサイズが違いますよね。

あれと同じように、さらにもう1本擬似タスクバーみたいな
タスクバーを作成して、最大化時のサイズを制限したいんです。
判りにくいようでしたら申し訳ありません・・・。

128 名前:斉藤 :03/01/01 22:49
すいません。また質問してもいいでしょうか。

rebarにコンボボックス(combo)を追加したんですが、コンボボックスに表示される文字の大きさが12になります。
このコンボボックスに表示される文字のサイズ・種類を変更できるとおもいますが、やり方を教えていただけませんか?

すいませんが、お願いします。

129 名前:名無し@沢村 :03/01/01 22:55
>>128
SetFont()

130 名前:デフォルトの名無しさん :03/01/01 23:01
LOGFONT lf;
HFONT hFont;
lf.lfHeight = ...
(他のメンバも初期化)
hFont = CreateFontIndirect (&lf);
SendMessage (hComboBox, WM_SETFONT, (WPARAM)hFont, 0);

131 名前:デフォルトの名無しさん :03/01/01 23:01
>>125
AppBarでぐぐれ

132 名前:125 :03/01/01 23:09
>>131
何とかなりそうです。
ありがとうございました。

133 名前:名無し@沢村 :03/01/01 23:11
ここは、Win32APIスレだったね。
>>129は間違い。

134 名前:名無し@沢村 :03/01/01 23:26
>>129>>133
俺の名を語るな。

135 名前:デフォルトの名無しさん :03/01/01 23:30
本物はsageないから騙る奴は覚えとくように

136 名前:名無し@沢村 ◆n4lY0MbBKY :03/01/01 23:31
お前がな

137 名前:デフォルトの名無しさん :03/01/01 23:40
名前なんて飾りだよ。

138 名前:名無し@沢村 :03/01/01 23:45
本物はsageないから騙る奴は覚えとくように

139 名前:斉藤 :03/01/02 00:06
>>130
ありがとうございます。
その方法で、文字の大きさは変更できましたが・・・、

SendMessageで文字情報を送ったんですが、今度はコンボボックスとしての機能が働かなくなりました。
いわゆる、右端のボタンをクリックしてもコンボの内容がPOPUPされないのです。

・・・・・・、コモンコントロールって、複雑ですよね。ウツ・・・。

140 名前:斉藤 :03/01/02 00:18
これじゃ、まずいですかね。

hFont = CreateFont(12, //フォント高さ
0, //文字幅
0, //テキストの角度
0, //ベースラインとx軸との角度
FW_REGULAR, //フォントの重さ(太さ)
FALSE, //イタリック体
FALSE, //アンダーライン
FALSE, //打ち消し線
SHIFTJIS_CHARSET, //文字セット
OUT_DEFAULT_PRECIS, //出力精度
CLIP_DEFAULT_PRECIS,//クリッピング精度
DEFAULT_QUALITY, //出力品質
FIXED_PITCH | FF_DONTCARE,//ピッチとファミリー
"MS ゴシック");

141 名前:斉藤 :03/01/02 00:42
では、みなさん、ありがとうございました。
いろいろ質問に答えてもらって。

後は自分で勉強しようと思います。
では。

142 名前:デフォルトの名無しさん :03/01/02 01:04
>>140-141
フォントサイズの指定方法が間違ってる。

http://www.microsoft.com/japan/developer/library/jpgdipf/_win32_createfont.htm

143 名前:デフォルトの名無しさん :03/01/02 05:44
本物はトリップも使わないし
つーか使わなかったからこそ騙られまくってるんだろうが

144 名前:斉藤 :03/01/02 10:22
わからないことがあるのですが、

rebarでコンボボックスを作るとき、コンボボックスの横幅が、勝手に、rebarの横幅に変わります。

例えば、rebarの横幅を800とし、comboの横幅を300として、SendMessageのRB_INSERTBANDを送った直後、comboの横幅をデバッグで調べたところ、なぜか、comboの横幅800に変わっていました。

rebarが自動的にcomboの横幅をrebarの横幅にあわせるように働いたと思われます。
自分が指定した長さにするには、どのような手続きをすればいいのでしょうか?


・rebarを作成する、横幅は800(CreateWindowExそしてSendMessageでRB_SETBARINFOを送る)。
   ↓
・comboボックスを作成する(CreateWindowEx)。
   ↓
・REBARBANDINFOで横幅の初期値を300(rbBand.cx=300)、横幅の最小値を200(rbBand.cxMinChild = 200)。
   ↓
・rebarにcomboボックスを追加(SendMessageでRB_INSERTBANDを送る。)
   ↓
・直後、デバッグでcomboの横幅を調べると、なぜか、800に変わっていた。

145 名前:斉藤 :03/01/02 10:54
いやー。rebarはむずかしい。

とくに、関連書物もないし、情報は基本的なことしか書いてないし。
・・・・。

さてと、そろそろ買い物行こうっと・・・。

146 名前:名無し@沢村 :03/01/02 13:07
俺はビットマップに拡張子.exeを付けて保存しなおし、プログラムとして実行させようとしたが、「これは有効なwindowsプログラムではありません」というエラーが出てしまった。
普通のビットマップをwindowsプログラムとして実行させるには最低限何を付け加えたらいいですか?
教えてくだされ〜♪

147 名前:デフォルトの名無しさん :03/01/02 13:11
>>146
最低限も糞もなにがしたいんだ?

148 名前:名無し@沢村 :03/01/02 13:14
>>147
いや、ビットマップがペイントなどのプログラムを通さずに自力で画像を表示してくれないかなと思って実験したらダメだったのよ…。

149 名前:デフォルトの名無しさん :03/01/02 13:33
>>148
ネタか

150 名前:デフォルトの名無しさん :03/01/02 15:19
>>146 >>148
ワラタ

151 名前:CopyPaste :03/01/02 15:58
108 名前:デフォルトの名無しさん :03/01/02 13:38
>>107
沢村は有名な嘘つきなので、信用しないように(笑
ヤツにプログラミングの話しても、「リアルな答え」は返ってきません。
MSX時代からコンピュータに触れてはいるようだけど、
ずっとゲーム(エロゲー含む)しかやってないので、スキルはありません。

152 名前:デフォルトの名無しさん :03/01/02 19:05
おまえらいつになったら沢村へのレスをやめるんだ

153 名前:デフォルトの名無しさん :03/01/02 20:37
おれはレスしねえよ。

154 名前:デフォルトの名無しさん :03/01/02 22:16
あまり高機能ではないデバッガを作りたいんですが、
プロセスの適切な位置にBreakPointを入れたり、
ほかさまざまなデバッグ関係の動作を行うAPI郡には
どのようなものがありますか?

155 名前:デフォルトの名無しさん :03/01/02 22:20
>>154
もっと沢村風に書け

156 名前:名無し@沢村フィルタ :03/01/02 22:34
皆々様方〜、あまり高機能ではないデバッガを作りたいんですが、
プロセスの適切な位置にBreakPointを入れたり、
ほかさまざまなデバッグ関係の動作を行うAPI郡には
どのようなものがありますか?教えてくだされ〜♪

157 名前:デフォルトの名無しさん :03/01/02 22:34
>>155
沢村じゃない(怒
具体的には、CPUが今まさに(そのスレッドで)実行している・していた命令を
得たいのだが・・・

158 名前:デフォルトの名無しさん :03/01/02 22:34
>>154
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/debug/base/creating_a_basic_debugger.asp
とか読むと良いと思われ。

159 名前:デフォルトの名無しさん :03/01/02 22:37
>>158
情報ありがとう。でもそこは読んだけれど、その項目で行うデバッグは、
基本的にクライアントプロセスが何かのメッセージを投げた場合に
それをキャッチする話しか載っていない。

能動的にメモリにBreakPointをかける等の話は載っていない

160 名前:デフォルトの名無しさん :03/01/03 00:34
SDKで印刷プレビューを作るにはどうしたらいいでしょうか?
ネットやVC6についていたサンプルソースなどをあさってみたのですが
よく分かりませんでした。

ここのサンプルを見ろ!とかありましたらお願いします。

161 名前:デフォルトの名無しさん :03/01/03 01:01
ようはハック死体って事か。

162 名前:デフォルトの名無しさん :03/01/03 01:09
>>161
純粋にハックしたいだけなら既存のものつかったほうが早い気もするけど

俺もデバッガーがどういう風に動いてんのか知りたいから
ちょっとみて見たけどDebugBreakつかうのかな?
どうやって任意の場所に埋め込むかわかんないけど


163 名前:デフォルトの名無しさん :03/01/03 01:57
クラックしたいのではなく(というかクラックなら普通にVisualStudio使ってできるし)
現在特定のスレッドで動いているコードをリアルタイムに表示するソフトウェアとか
面白そうだなと思い、そのための資料探しに奔走しています。

>>162
DebugBreakは、ブレークポイント例外を発生させるAPIです。
デバッグされるソフトウェアで、強制的にブレークで止めたい場合に使います。
他にも、デバッグされたくない市販ソフトなどの場合に裏技的に使用して
一切デバッグできなくする方法もあります。

164 名前:158 :03/01/03 08:39
なるほど。そういうことか。

俺はブレークさせたいところに WriteProcessMemory() で int 3h を
書き込む、という適当な方法で書いたことはあるけど、もっと
ストレートな方法があるのかどうかはわからんや。

全命令捕まえる気なら、スレッドをシングルステップ実行モードにしてしまって
EXCEPTION_SINGLE_STEP をキャッチするとか。

165 名前:デフォルトの名無しさん :03/01/03 13:18
>>164
int3hを入れるのは実装可能ですね。スマートではないけど。
シングルステップ実行モードにするのが一番素直そうな気がします。
そちら方面から調べてみよう、ありがとう。

しかしそれにしても、ブレークポイントを設定する命令があるはずですけどね。

166 名前:デフォルトの名無しさん :03/01/03 14:02
XP限定だがDebugBreakProcessでいつでもどこでも
強制的にブレークを発生させることができる。
他のOSだとSuspendThread→GetThreadContextでPCを取得→
WriteProcessMemoryでPCの位置にint 3を埋め込み→
ResumeThreadとか自力でやるしかない。
ただし9xではKERNEL32.DLL内のコードを実行中にこれを
やっても効かなかったり以後のOSの動作が不安定になったりする。

167 名前:デフォルトの名無しさん :03/01/03 14:07
ってWin9xではKERNEL32のコードはもともとWriteProcessMemoryで
書き換え不可だ
SuspendThread→SetThreadContextでPCをDebugBreakの
先頭に移動→ResumeThreadってやった場合の話だった。

168 名前:デフォルトの名無しさん :03/01/04 15:45
エディットボックスで、現在エディットボックスに表示されてるテキストの
先頭のセル位置を取得する方法ありませんか?

169 名前:デフォルトの名無しさん :03/01/04 16:08
>>168
先頭のセル位置って?

170 名前:168 :03/01/04 16:30
>>169
現在エディットボックス内に表示されていて、見える部分の
最初の文字の位置です。

171 名前:デフォルトの名無しさん :03/01/04 17:08
EM_***系のメッセージからめれば可能
適当に探せ

172 名前:sage :03/01/04 18:11
フォントについて、ワシにも教えてくんろ。
厨房みたいな質問で恐縮じゃが...

テキストを横書きや縦書きで斜体で表示したいんじゃが、
横書きの斜体はLOGFONTのlfItalicでいいが、縦書きでは
斜体を右肩下がりじゃなく、左肩下がりの斜体にしたい。
どこをどう いじくれば いいんじゃろうか?

173 名前:デフォルトの名無しさん :03/01/04 18:19
回転させればいいんじゃないの

174 名前:デフォルトの名無しさん :03/01/04 18:37
lfEscapementメンバとlfOrientationメンバを調べてみそ
9xとNTで意味が違ってたりするから気をつけて

175 名前:デフォルトの名無しさん :03/01/04 18:38
回転って、どこをどう回転させる? 年寄りにも分かる
ように教えてくんろ。

OUTLINETEXTMETRICにotmItalicAngleってのがあるが、
あれは取得だけで、設定はできないよな...何か
いい方法はないもんか。

176 名前:デフォルトの名無しさん :03/01/04 20:27
escapementとかorientationでぐぐってみろと続けようかと
思ったけど記憶力に自信がないからやめといたら174に
書かれますた

177 名前:デフォルトの名無しさん :03/01/04 23:48
ご返答ありがたし。

あれから、テストプログラムでいろいろやってみた。
縦書き斜体ということで、@の付いたフォント、lfItalicは
true、lfOrientationは2700という前提で、lfEscapementを
100単位で0〜3600までやってみたが、すべて右肩下がりの
斜体だった。まあ、lfEscapementって一文字単位で回転させる
だけだから、当然の結果だが。

もしかして、ワシの前提自体が間違っているのか?

念のためにWordを調べると、縦書き斜体は右肩下がりだった。
日本語の縦書き斜体は右肩下がりが一般的なのか?
でも、やっぱ左肩下がりの斜体を実現したい。

どなた様か、助けると思って、具体的な数値を教えて
くんなまし。

178 名前:デフォルトの名無しさん :03/01/05 04:46
italicは使わないでescapementで回転させろって言ってんだよ
横書きだって左に傾いたイタリックなんか出せないだろ
頭膿んでるのか?

179 名前:172 :03/01/05 05:54
夜遅くまでご苦労さんです。

> 頭膿んでるのか?
かもしれん。ここんとこ、斜体のことで頭が爆発寸前じゃ。

> italicは使わないでescapementで回転させろって言ってんだよ
なるほど。でも、これって同じ形のまま回転するだけじゃな。

> 横書きだって左に傾いたイタリックなんか出せないだろ
うーむ。バックスラントのことか。縦書きでも反対側に傾斜
させるのは、通常の方法じゃ、無理だってことか...

DTPソフトだと、斜体の角度を指定できたりするが、やっぱ
スプライン曲線データを取得して、自分で変形するのが吉って
ことか。

(字幕合成ツールを作っとるんじゃが、何故に日本語字幕の
縦書き斜体はWindowsとは逆に傾斜してるのか不思議じゃ。
それともWindowsが変則的なのか?)

180 名前:デフォルトの名無しさん :03/01/05 06:51
日本語フォントの標準的な「斜体」の概念は知らないけどさ、
イタリックが手書き文字を模したものとすると、日本語
フォントの縦書き斜体は Windows の標準的なイタリック
とは逆方向に傾斜、つまり、右肩上がり斜体であるべき
かなって気もするね。だから縦書きに限ると Windows の
ほうが「変則的」かも。でもさ、漢字とアルファベットの
混在するテキストを合理的に斜体にするにするためには、
縦書きでも、この傾斜方向しか選択の余地がなかったっ
てのも事実だよ。ほんじゃ、がんばって。

181 名前:デフォルトの名無しさん :03/01/05 09:39
ラスタ単位で1ピクセルずつシフト。後に回転でどうか。


182 名前:デフォルトの名無しさん :03/01/05 10:07
>>172
ワールド座標で平行四辺形の変形を指定するのはどうよ

HFONT hFont;
const char text[] = "縦書き逆Italic";
LOGFONT lf;
HDC hDC;
XFORM xf, xo;

xf.eM11 = 0.5f;
xf.eM12 = 1;
xf.eM21 = -1;
xf.eM22 = 0;
xf.eDx = 300;
xf.eDy = 0;

GetObject(GetStockObject(SYSTEM_FONT), sizeof lf, &lf);
lf.lfEscapement = -225;
lf.lfOrientation = 900;
hFont = CreateFontIndirect(&lf);

183 名前:182 :03/01/05 10:07
hDC = GetDC(hWnd);
SetGraphicsMode(hDC, GM_ADVANCED);
GetWorldTransform(hDC, &xo);
SetWorldTransform(hDC, &xf);
hFont = (HFONT)SelectObject(hDC, hFont);

TextOut(hDC, 300, 200, text, lstrlen(text));

hFont = (HFONT)SelectObject(hDC, hFont);
SetWorldTransform(hDC, &xo);
SetGraphicsMode(hDC, GM_COMPATIBLE);
ReleaseDC(hWnd, hDC);

DeleteObject(hFont);

184 名前:デフォルトの名無しさん :03/01/06 03:11
>>182

コードまで示してくれて多謝。

実は自分でスプラインを操作しても、最終的に
アンチエイリアス処理まで自前でやるはめに
なりそうで困ってたんだが、これはいいな。

テストプログラムで試してみても、XFORMを
変えると、いろんな変形が可能だな。
感謝感謝です。

185 名前:デフォルトの名無しさん :03/01/06 14:41
すいません、どなたか、WIN32API.TXTの誤植の少ない物のありか、知りませんか?
今はVB6付属のを使ってるんですが、誤植でハマった…。

#微妙にスレ違いかな?

186 名前:デフォルトの名無しさん :03/01/06 15:00
すいません、質問です。
MM_WOM_OPENメッセージはいつ発生するんでしょうか?

187 名前:デフォルトの名無しさん :03/01/06 22:12
>>185
MSDNには加入してるか?

188 名前:初心者・マジ質問 :03/01/07 00:21
マジ質問です。

このGoogleToolbarのように、Rebar上の最初の「Google」ボタンの後に、「コンボボックス」がきたり・・・、
http://toolbar.google.com/intl/ja/toolbar.gif

「Lunascape」の検索Rebar上で、コンボボックスの後に、またコンボボックスを持ってきたり・・・、
http://www.lunascape.jp/images/screenshot3.gif


このように、ボタンやコンボボックスの後に「コンボボックス」を追加するには、どのような処理をすればいいのでしょうか?
もちろんWin32APIを使用するやり方でお願いします。

Rebar上にBandを追加するやり方や、Band上にボタンやセパレーターや文字列を追加するやり方もわかりますが、
同じBand上に「コンボボックス」を追加するやり方がわかりません。

189 名前:デフォルトの名無しさん :03/01/07 00:28
>>188
それはたぶんMFCで言うところのダイアログバーみたいのを使ってると思われ。
Rebarでやるんなら、Rebarにのせるウインドウをモードレスダイアログにすれば
いいかと。
(同じバンド上のボタンをフラットにしたいとかならオーナードローしないといけないと思う)

190 名前:デフォルトの名無しさん :03/01/07 00:55
>>188
コンボボックスをRebarの子として作って、RB_INSERTBANDをSendMessageすればいいだけ
と思うのだが。つーか、MSDNのRebarの最初のページ見た?


191 名前:デフォルトの名無しさん :03/01/07 04:54
The MM_WOM_OPEN message is sent to a window when the given waveform-audio output device is opened.



192 名前:名無し@沢村 :03/01/07 06:07
>>188
ヌヒよ、ツールバーのセパレータは幅を指定できるから
広い幅のセパレータを作ってその上にコンボボックスを
貼り付けなさい。
IEのツールバーはこの方法でないと無理。

193 名前:188 初心者・マジ質問 :03/01/07 12:23
みなさん、ご返答ありがとうございます。

>>189
なるほど、rebar上に「モードレスダイアログ」として「載せている」わけですね。
家に帰ったらやってみます。

>>190
そのやり方はすでに知っています。
その説明は、「rebar上にbandを追加するやり方」ですよね。
そのやり方だと、comboboxが単独のbandとして作られてしまうだけなので意味がないです。
そうではなくて、「band上にcomboboxを追加するやり方」を知りたいのです。

>>192
ほほーう。
セパレータというのは、幅が指定できるのですか。
それは知らなかったです。
これも家に帰ってから、実際にやってみようと思います。

194 名前:デフォルトの名無しさん :03/01/07 12:54
test

195 名前:デフォルトの名無しさん :03/01/07 12:57
「優先するオーディオデバイス」ってプログラム上で触れないでしょうか
現在レジストリを書き換えることで行っていますが
スマートなやり方があればお教えください

196 名前:デフォルトの名無しさん :03/01/07 13:37
DVD-ROM内の全ファイルは、CreateFile() でオープン可能。
だが、いくつかは、ReadFile() するとエラーになる。
(おそらく、コンテンツ保護のたぐいだと思うので、それはOK)

ただ、ReadFile()の代わりに、CreateFileMapping() と MapViewOfFile() を
使うと、エラーにならず、map できたかのように振舞ってしまう。だが、それ
を鵜呑みにして、そこのメモリを読もうとすると、例外が発生し、プロセスが
爆死してしまう。

ReadFile() を使わずに CreateFileMapping() を使った場合に、事前に map
領域が確かに読めるかどうかの検査をしたいのですが、可能でしょうか?
(Virtualなんとか、の類で可能なのかな?)

197 名前:デフォルトの名無しさん :03/01/07 14:15
IsBadReadPtr
または__try〜__exceptで囲む

198 名前:デフォルトの名無しさん :03/01/07 14:15
そのメモリアクセスするところをtry..catchとかで守っておけばええやん。
Win32Api的には、構造化例外が飛んできたら、NGって事で。
VC++なら、catch(...)で捕まえられたはず

199 名前:デフォルトの名無しさん :03/01/07 14:27
IsBadReadPtr・・・なるほど。試してみます。
ただ、MapViewOfFile を MAP_READ指定で呼んで OK が返っているから、
仮想メモリとしてのアクセス属性には、READ権はあるかも。

構造化例外・・・NT系でなくても使えるんですね。
なんか、95系はダメかと勘違いしてました。
これだったら、確実そうですね。

200 名前:デフォルトの名無しさん :03/01/07 15:09
>>195
デバイスIDを指定すれば?

201 名前:デフォルトの名無しさん :03/01/07 15:17
>>200
IDを指定してデバイスごとに操作することはできるんですが、
優先デバイスを切り替えることができないのです

202 名前:デフォルトの名無しさん :03/01/07 15:39
>>201
それはWAVE_MAPPERで開きたいってコト?
そりゃムリ。少なくともWindowsでは。

203 名前:デフォルトの名無しさん :03/01/07 17:44
>>199
IsBadReadPtrも内部で構造化例外使ってるよ

204 名前:デフォルトの名無しさん :03/01/07 17:45
>>193
沢村が嫌いなことに異議は全くないが
今回に限りその態度はちょっと外れてるぜ
質問に来てるんだろ?

205 名前:デフォルトの名無しさん :03/01/07 17:46
>>201
「サウンドとマルチメディア」コントロールパネルの
代替品を作ってるのでもない限り
プログラムが勝手に優先デバイスを書き換えるなってこった

206 名前:デフォルトの名無しさん :03/01/07 17:47
>>204
沢村はデタラメしか教えないから
回答者として居座られたむしろ迷惑だ

207 名前:デフォルトの名無しさん :03/01/07 17:54
>>203

え?
Win32API(?)のソースって公開されてるの??

208 名前:デフォルトの名無しさん :03/01/07 18:09
>>206
おまえ2chのポリシー知らんのか?

209 名前:デフォルトの名無しさん :03/01/07 18:51
>>208
コテハンで馴れ合う奴は逝ってよし

210 名前:デフォルトの名無しさん :03/01/07 18:51
>>207
解析本がある

211 名前:デフォルトの名無しさん :03/01/07 21:37
>>209
聞く耳持たない者を説得してるほどヒマじゃない

212 名前:デフォルトの名無しさん :03/01/07 21:48
というか、沢村は、マルチで質問して、マルチに応答を
展開して、結局「解決しなかった」とかいいはなった記憶が
強烈すぎる

213 名前:デフォルトの名無しさん :03/01/07 22:39
この沢村の思うがままのスレ展開はどうしたことだ

214 名前:デフォルトの名無しさん :03/01/08 00:07
   【沢村に反応してしまった人】         【沢村を放置、徹底無視を貫き通した人】

    , ・´.......... . .   ...... "" '' - ..,_  .               \ │ /
  ./::::::::::::::::::::::::/ /:::::::::::::::ヘ::::::::::::::ヽ                  ./ ̄\    ∩  ∧∧
. と. ,,i::::::::::::::::::::::/ /::::::::r(::::..ン::::::::::/ .        ∩ ∧ ∧∩ ─( ゚ ∀ ゚ )─  \ ( ゚∀゚ )へ
<´ _;;;::::::::::::::::::::::し:::::::::::`(:::::ヘ::::::::::::\        ヽ( ゚∀゚ )/   .\_/     |    /(ソ
    ''ヽ::::::;;;;;::::::::::::::::::::::::::::..ン:::::::;;;::-'''         |   〈..   / │ \    |   |
    ⊂;;;;;;,.:::::::.--- ー  '''' '    .        / /\_)            / /\」
                               ""                ""
   沢村と一緒に、アクセス規制!            優良コテハンとして、表彰!

215 名前:デフォルトの名無しさん :03/01/08 01:00
でも>>192の回答が最も的確な気がするけど。

216 名前:デフォルトの名無しさん :03/01/08 06:47
>>214
なんで名無しがコテハンとして表彰なんだよ

217 名前:デフォルトの名無しさん :03/01/08 07:30
MessageBox()をデスクトップの中央でなく、自分のWindowの中央に
表示したいのですが、どうすればいいのでしょうか?

MFCのAfxMessageBox()では中央にでるので、デバッガでソースを
追っかけてみたのですが親Windowをがりがり捜している?だけのようで
なぜ中央にでるのか分かりませんでした。

218 名前:デフォルトの名無しさん :03/01/08 12:26
フックを使ってるんじゃなかったっけ?

219 名前:デフォルトの名無しさん :03/01/08 15:13
>>217

MFC のは、自前で用意した MessageBox風のウィンドウじゃないの?

220 名前:デフォルトの名無しさん :03/01/08 15:18
>>217
HWNDが貰えないからMoveWindow()もSetWindowLong()もSendMessage()もだめ
だいいちMessageBox()から返ってきた時点でダイアログは存在していない

漏れ的にはあんなの糞

ちょっとでも別の機能が欲しければ独自のダイアログボックスをつくるのが早っしょ
WM_INITDIALOGでGetParent()とMoveWindow()ね

221 名前:gn355my0 :03/01/08 15:46
MessageBoxIndirect() じゃダメなのか?

222 名前:デフォルトの名無しさん :03/01/08 16:31
>>217
というか
 ::MessageBox( HWND hWnd ,  ...
の hWnd を指定したら、ウィンドウ中央に表示されたんだけど?

223 名前:217 :03/01/08 17:42
>>218
表示される前にWM_CREATEとかを捕まえて動かしているのでしょうか?
フックはよく知らないのでさっぱりです。
>>219
MFCのソースを見る限り最後に::MessageBox()を呼んではいるのですが。
>>220
やはり自前ですか・・・
>>221
MSGBOXPARAMSに値を設定してやってみましたが変わりませんでした。
>>222
MFCの中で
HWND hWnd = AfxGetMainWnd()->GetSafeHwnd();// テスト
// AfxMessageBox( "やっほー", MB_OK, 0 );
::MessageBox(hWnd, "やっほー", "test",MB_OK );
//::MessageBox(NULL, "やっほー", "test",MB_OK );
とやると自分のWindowの中央に出ました。NULLだと出ませんでした。
SDKのサンプルの中にあるMessageBoxだとデスクトップ中央に出るのですが。

フックとかちょっと特殊なことをしているのでしょうか。
フックを少し調べてみます。ありがとうございました。

224 名前:IP記録実験 :03/01/08 21:32
IP記録実験
http://qb.2ch.net/test/read.cgi/accuse/1042013605/

1 名前:ひろゆき ◆3SHRUNYAXA @どうやら管理人 ★ 投稿日:03/01/08 17:13 ID:???
そんなわけで、qbサーバでIPの記録実験をはじめましたー。

27 名前:心得をよく読みましょう 投稿日:03/01/08 17:20 ID:yL/kYdMc
SETTING.TXT管轄でないということは全鯖導入を視野に、か?

38 名前:ひろゆき ◆3SHRUNYAXA 投稿日:03/01/08 17:22 ID:rLfxQ17l
>>27
鋭いです。

73 名前:ひろゆき ◆3SHRUNYAXA 投稿日:03/01/08 17:27 ID:rLfxQ17l
>ところで、IPが抜かれて何か今までと変わることってあるのでしょうか?
・今までより、サーバが重くなる。
・裁判所や警察からの照会があった場合にはIPを提出することがある。

225 名前:デフォルトの名無しさん :03/01/09 02:37
漢ならあえて晒す。

226 名前:デフォルトの名無しさん :03/01/09 03:20
口びるマロ

227 名前:デフォルトの名無しさん :03/01/09 04:03
>>317-318
来ないと言うやつは又来るが、さようならと言った次のレスにもうコピペする奴は珍しい。

228 名前:デフォルトの名無しさん :03/01/09 09:04

マルチバイト文字列をワイド文字列に変換するとき、
C標準関数の mbtowc を使うのと、Win32API の MultiByteToWideChar の
どちらを使うのが一般的でしょう?

229 名前:デフォルトの名無しさん :03/01/09 11:16
APIスレだからMultiByteToWideCharと答えておこう

230 名前:デフォルトの名無しさん :03/01/09 12:06
ウワァーン ( `Д´)=○)3゚)∵

231 名前:デフォルトの名無しさん :03/01/09 13:04
>>229 漏れも。
どうしてもmbtowc使うならsetlocaleを忘れるなよ。

232 名前:228 :03/01/09 15:22
>>229 >>231
ありがとー。

ところで、MultiByteToWideChar や、WideCharToMultiByte をラップした、

 std::wstring mbstr_to_wstr( const std::string& source );
 std::string  wstr_to_mbstr( const std::wstring& source );

↑のようなヘルパ関数をつくろうと思っているんだけど、
CodePage や、フラグの設定を固定したい場合は、どの設定が一番無難ですか?
経験豊かな人、誰かご教授願います。

233 名前:デフォルトの名無しさん :03/01/09 18:23
======2==C==H======================================================

         2ちゃんねるのお勧めな話題と
     ネットでの面白い出来事を配送したいと思ってます。。。

===============================読者数: 138720人 発行日:2003/1/9

年末年始ボケがそろそろ収まり始めた今日このごろのひろゆきです。

そんなわけで、年末に予告したIP記録ですが実験を開始しています。

「2ちゃんねる20030107」
こんな感じで各掲示板の最下部に日付が入ってるんですが、
20030107以降になってるところはログ記録実験中ですー。

んじゃ!

────────────────────────Age2ch─
■この書き込みは、Age2chを使って配信されています。
────────────────────────────
Keep your thread alive !
http://pc3.2ch.net/test/read.cgi/software/1041952901/l50
────────────────────────────

234 名前:231 :03/01/09 18:49
>>232
何も考えないならとりあえず
MultiByteToWideChar(CP_ACP, 0, ...)
WideCharToMultiByte(CP_ACP, 0, ...)
でいいんじゃないの?
まずはそれからだ

235 名前:228 :03/01/09 19:18
VC++.NET の CRT の実装(mbtowc.c とか) を見てみました。
以下レポート

mbtowc は その内部で、MultiByteToWideChar を呼び出しています。
しかも マルチスレッド対応でした。( _MTスイッチで指定 )

問題の CodePage は、 setlocale で指定するようだけど、
"C"ロケールを設定すると、CP_ACP にセットされるみたい。
VCで作成したアプリはデフォで "C"ロケールに設定されるらしいので(未確認)、
結局 mbtowc は、↓とほぼ同じになると。
::MultiByteToWideChar( CP_ACP, MB_PRECOMPOSED | MB_ERR_INVALID_CHARS ... );

嘘言ってたらゴメンナサイ.

>>231
ありがとう。
でも、とりあえず mbtowc でもいいかなという気になりました。

236 名前:デフォルトの名無しさん :03/01/10 00:10
>>792
はぁ?

237 名前:デフォルトの名無しさん :03/01/10 08:59
おい!おまいら!

ttp://dailynews.yahoo.co.jp/fc/computer/2channel/

のアンケートで5を選びませんか? 目標50%

238 名前:デフォルトの名無しさん :03/01/10 10:21
つまらないね。

トリップだってさ
全然ボツ。

239 名前:デフォルトの名無しさん :03/01/10 10:58
IPとってる板

qb : 2ch批判要望 削除議論 削除要請 削除整理
live2 : ニュース速報
tmp : ニュース極東 ちくり裏事情 政治思想 Download
    厨房! 人権問題 バカニュース 薬・違法
    ゴーマニズム ロビー 最悪 少年犯罪
    違反の潰し方 ペット苦手 なんでもあり 学歴


240 名前:デフォルトの名無しさん :03/01/10 11:28
普通に見れるけど・・・俺が変なのか・・

241 名前:デフォルトの名無しさん :03/01/10 12:16
最高裁への上告は認められなくなったから、これで事実上判決確定だよ。
逆転も何もないって。
勢いで上告なんかしても一発で上告却下(門前払い)だよ。

二審も一審を支持。これに対して上告しようにも、
刑事訴訟と同様、自由に上告できるってもんでもないのです。
民事訴訟法312条 (上告の理由) 1項
「上告は、判決に憲法の解釈の誤りがあること
その他憲法の違反があることを理由とするときに、することができる。」
http://www.m-net.ne.jp/~doba/goto/hon.htm

ようするに上告しても今の制度では100%無駄。
これで完全終了ってことか。


242 名前:デフォルトの名無しさん :03/01/10 12:22
全然関係ない書き込みがあちこちに多発してるみたいだけど、
これって、何が原因なの?

243 名前:デフォルトの名無しさん :03/01/10 12:36
根拠があって正しい情報だとしても
当事者が都合悪ければ誹謗中傷だわな

どうなっとんだ

244 名前:デフォルトの名無しさん :03/01/10 12:44
>>904
>壊れやすいって新聞に投書するなり
まず1に、俺はそういうことを自分が主張したいのではなく
そういう情報を集めたいのだ。もちろん自分が書くこともあるだろうけど。

新聞はリアルタイムで会話ができない。
しかも載るか載らないかもわからない。

掲示板だと数多くの人の体験談やらなにやらがたくさん集まり
使っている人のナマの声が聞ける。それを信じるか信じないかはその人しだい。
しかし、途中で誰の手が加えられたわけでもなく
また、誰かによって省かれた部分がない意見というのは貴重だ。
書き込まれた瞬間に、自由な質問ができるのも魅力だ。

そういうのが無くなってしまう、もしくは減ってしまうというのは悲しい

245 名前:デフォルトの名無しさん :03/01/10 13:05
>>242
祭り気取りなんだろ
IP取るのは管理者の勝手だが
スレ違いのレスを垂れ流されるのは邪魔でかなわん。


246 名前:OFNトースター :03/01/10 13:51
OPENFILENAMEなら俺に聞け
ってほどOPENFILENAMEに詳しい人いませんか?

247 名前:デフォルトの名無しさん :03/01/10 13:52
>>242
すでに批判要望板の荒らし報告にあがってるな

◆スクリプト&コピペ(乱立)荒らし報告スレ27
http://qb.2ch.net/test/read.cgi/accuse/1041678810/

248 名前:デフォルトの名無しさん :03/01/10 13:55
関係ない話してるとスレが死ぬぞ

249 名前:デフォルトの名無しさん :03/01/10 14:02
>>246
何が聞きたいのか、書いてみたら?

250 名前:OFNトースター :03/01/10 14:13
待ってました。
コンパイルして実行してほしいです。
起動時に、名前を付けて保存のダイアログが出ます。
そのままマイドキュメントに保存すると、このプログラムでは
何も保存されないけど、エディットに結果が入ります。
その結果を教えてほしいのです。


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