5ちゃんねる ★スマホ版★ ■掲示板に戻る■ 全部 1- 最新50  

■ このスレッドは過去ログ倉庫に格納されています

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
待ってました。
コンパイルして実行してほしいです。
起動時に、名前を付けて保存のダイアログが出ます。
そのままマイドキュメントに保存すると、このプログラムでは
何も保存されないけど、エディットに結果が入ります。
その結果を教えてほしいのです。

251 :OFNトースター:03/01/10 14:14
#include <windows.h>

LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);

int WINAPI WinMain(HINSTANCE hInst, HINSTANCE, PSTR, int) {
MSG msg;
WNDCLASSEX c;

c.cbSize = sizeof(WNDCLASSEX);
c.style = c.cbClsExtra = c.cbWndExtra = 0;
c.lpfnWndProc = WndProc;
c.hInstance = hInst;
c.hIcon= LoadIcon(NULL, IDI_APPLICATION);
c.hCursor = LoadCursor(NULL, IDC_ARROW);
c.hbrBackground= (HBRUSH)GetStockObject(WHITE_BRUSH);
c.lpszMenuName = NULL;
c.lpszClassName= "test";
c.hIconSm = NULL;

if (!RegisterClassEx(&c)) return 1;

CreateWindow(
"test", "TEST",WS_OVERLAPPEDWINDOW | WS_VISIBLE, CW_USEDEFAULT, CW_USEDEFAULT, 500, 100, NULL, NULL, hInst, NULL);

while(GetMessage(&msg, NULL, 0, 0)){
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return msg.wParam;
}

252 :OFNトースター:03/01/10 14:15
LRESULT CALLBACK WndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam) {
OPENFILENAME ofn;
TCHAR strFile[MAX_PATH] = "default";
char buf[MAX_PATH];
static HWND hEdit;
static WORD w = 1234;

switch (msg) {

253 :OFNトースター:03/01/10 14:16
case WM_CREATE:
hEdit = CreateWindow(
"EDIT", "", WS_CHILD | WS_VISIBLE | WS_BORDER | ES_AUTOHSCROLL, 0, 0, 490, 22, hWnd, 0, ((LPCREATESTRUCT)(lParam))->hInstance, NULL);

memset(&ofn, 0, sizeof(OPENFILENAME));
ofn.lStructSize = 76;
ofn.hwndOwner = hWnd;
ofn.lpstrFilter = "DOC\0*.doc\0HTML\0*.html\0\0";
ofn.nFilterIndex = 0;
ofn.lpstrFile = strFile;
ofn.nMaxFile = MAX_PATH;
ofn.nFileOffset = w;
ofn.Flags = OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT;

254 :OFNトースター:03/01/10 14:16
GetSaveFileName(&ofn);
wsprintf(buf, "strFile = %s, nFileOffset = %d", strFile, w);
SetWindowText(hEdit, buf);
break;
case WM_DESTROY:
PostQuitMessage(0);
break;
}
return DefWindowProc(hWnd, msg, wParam, lParam);
}

ここまで。

255 :OFNトースター:03/01/10 14:19
僕は、ofn.lStructSize = 76; でしか使えません。
ofn.lStructSize = 88; でofnが使える人の結果も知りたいです。

256 :デフォルトの名無しさん:03/01/10 14:24
>>255
msdn.microsoft.com/library/default.asp?url=/library/en-us/winui/WinUI/WindowsUserInterface/UserInput/CommonDialogBoxLibrary/CommonDialogBoxReference/CommonDialogBoxStructures/OPENFILENAME.asp


257 :デフォルトの名無しさん:03/01/10 14:24
荒らしかと思った…


258 :デフォルトの名無しさん:03/01/10 14:54

・・・・・・・それが何か?

259 :231:03/01/10 15:05
>>235
ありゃ。確かにCP_ACPみたいだな。嘘ついてスマソ。
VC6以前ではまった気がしたんだが…。
printf("%S", L'あ');
とかできるようになったのかな??


260 :256:03/01/10 15:23
>>255
typedef struct tagOFN {
     :
#if (_WIN32_WINNT >= 0x0500)
void * pvReserved;
DWORD dwReserved;
DWORD FlagsEx;
#endif // (_WIN32_WINNT >= 0x0500)
} OPENFILENAME, *LPOPENFILENAME;

なぜ
ofn.lStructSize=sizeof(OPENFILENAME)
としないのか


261 :デフォルトの名無しさん:03/01/10 16:22
精神病患者のオナニーサイト
http://www.enjoy.ne.jp/~gokaino1/

262 :デフォルトの名無しさん:03/01/10 17:21

ちょっと聞きたいんだけど、
Win32API の構造化例外を、C++ でハンドリングするとき、

try{ ::InitializeCriticalSection( &cs ); } // 構造化例外を投げる可能性のあるAPI関数
catch( ※ ){ ... }

※ の部分には何を書けばいいのか教えてください。
DWORD でいいのかな?
素直に __try 〜 __except( エラータイプ ) で囲むべき?

263 :デフォルトの名無しさん:03/01/10 17:36
...

264 :デフォルトの名無しさん:03/01/10 18:12
うそだと思われるけど、catch( ... ){ 

265 :デフォルトの名無しさん:03/01/10 18:17
_set_se_translator()、なんてな。

266 :デフォルトの名無しさん:03/01/10 18:33
そういえば、昔、「あー、複数の例外にいちいちcatchかくの面倒やな〜
よし、とりあえずcatch(...)しとこ。」とかやってたら、そのtryのなかで
Access Violationが発生してたことに気づかなかったことがあったなぁ。
なんで、catchに行くのか理解できなかった覚えがあえる

267 :デフォルトの名無しさん:03/01/10 22:21
BackupRead()とBackupWrite()でOwner,DACL,SACLを全部コピーできる、
Robocopy + SCopy + α みたいなミラーリングプログラムを作っているのですが、
ハマっています。 ご存じの方いたら教えてください。

SE_RESTORE_NAME特権を有効にすると、BackupWrite()で書込み権を持っていない
ディレクトリにファイルを書き戻せますが、書き込み権の無いディレクトリ中に
サブディレクトリを掘るにはどうしたらいいのでしょうか?

どうも、ディレクトリをBackupWrite()する場合、CreateDirectory()してから
BackupWrite()で属性情報だけ書き戻すしかないみたいですが、
CreateDirectory()はERROR_ACCESS_DENIEDになってしまいます。

CreateDirectory()するときだけACLを変更するのも何か違う気がするし...


268 :デフォルトの名無しさん:03/01/10 22:22
>>262
_set_se_translator と、マクロを使ったほうがいいのでは…?

struct structured_exception; // Win32API構造化例外クラス

// 例外送出関数と、初期化関数
void trans_st_except( UINT e, EXCEPTION_POINTERS* pe ){
 throw structured_exception( e, pe );
}
// main か WinMain のアタマで呼び出す
void init_structued_exception_hander(){ _set_se_translate( trans_st_except ); }

// マクロ expr には例外を送るような式とか関数を入れると
#define SE_TEST( expr ) \
 __try{ (expr); } \
 __finally{}

使用例
 try{ SE_TEST( ::InitializeCriticalSection( &cs ) ) }
 catch( structured_exception& se )
 {
  (エラー処理)
 }

なんかわからんもんがすっ飛んでくるよりもいいでしょ。

269 :デフォルトの名無しさん:03/01/10 22:38
赤信号、皆で渡れば怖くないってやつじゃないか。

270 :デフォルトの名無しさん:03/01/10 22:46
つまらなくなるね。


271 :デフォルトの名無しさん:03/01/11 00:05
ネタにマジレス北國新聞

272 :デフォルトの名無しさん:03/01/11 00:12
 思ってる事をそのまま言ってしまうと行為=無責任発言
ということ。
 正当性がある意見なら、実社会でも言える。
 内部告発なんかも、実社会でも十分可能。

273 :デフォルトの名無しさん:03/01/11 09:35
がんがれ

274 :デフォルトの名無しさん:03/01/11 09:36
串設立&串解禁きぼん

275 :デフォルトの名無しさん:03/01/11 10:09
======2==C==H======================================================

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

===============================読者数: 139038人 発行日:2003/1/10

なにやら、連日メルマガだしてるひろゆきです。

そんなわけで、ログ記録実験ですが、いちいちサーバ指定するのが面倒なので、
全部のサーバに入れてみました。

重くなって落ちたりしてもご愛嬌ってことで。。。

んじゃ!

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

276 :デフォルトの名無しさん:03/01/11 11:32
NYでログ取ってる方、いらっしゃいますか?

277 :デフォルトの名無しさん:03/01/11 12:35
なんとなく分かりました。thx

278 :デフォルトの名無しさん:03/01/11 13:06

     ま た  ま さ と  か!



279 :デフォルトの名無しさん:03/01/11 15:55
ひろゆきツマンネー!!

280 :デフォルトの名無しさん:03/01/11 16:00
288 :ひろゆき ◆3SHRUNYAXA :03/01/08 17:56 ID:rLfxQ17l
>厨房板は本当に閉鎖なのか?
初耳。


281 :デフォルトの名無しさん:03/01/12 00:01
うそをうそと

282 :デフォルトの名無しさん:03/01/12 00:12
600,000,036…

283 :デフォルトの名無しさん:03/01/12 02:49
近藤朋(享年15)
今日午前4時前、幸田駅の線路脇の道路でキャッチボールしていた中学3年生4人組がいた。
ところが、ボールが線路に入った。
幸田駅の線路に、ボールを取りに入った、中学3年生の女子1名が、貨物列車に
ばばばばばピィー―  きゃ〜!  ブァプアあああああああー―――――――ン!!!!!!



284 :デフォルトの名無しさん:03/01/12 02:54
ご愛嬌・・・
被害の大きさに差がありそうだけども。
誹謗中傷一番垂れ流しってどこかねぇ?

285 :デフォルトの名無しさん:03/01/12 10:21
さあゲームの始まりです

愚鈍な警察諸君

ボクを止めてみたまえ

ボクは殺しが愉快でたまらない

人の死が見たくて見たくてしょうがない

汚い野菜共には死の制裁を

積年の大怨に流血の裁きを

SHOOLL KILLER

学校殺死の酒鬼薔薇

286 :デフォルトの名無しさん:03/01/12 16:19
トラックバーにTBM_SETPOSを毎回送りつづけてスライダーを動かしながら、
他のウィンドウにボタン操作のメッセージを送るようにしたいのですが、
この状態だと他のウィンドウへのWM_COMMANDメッセージが送られず、操作できません。
どうすればできるのでしょうか?お願いです。教えて下さい。

287 :デフォルトの名無しさん:03/01/12 17:45
すいません。おかしな操作をしてフォーカスを勝手に変えてたのが原因でした。
ちゃんと操作できました。さようなら。

288 :デフォルトの名無しさん:03/01/12 20:36
じゃあなぜ今回になって
俺達を見限ったのだ?

289 :デフォルトの名無しさん:03/01/12 20:40
ナイスw

290 :デフォルトの名無しさん:03/01/12 20:49
sports3フカーツ?

291 :デフォルトの名無しさん:03/01/13 01:17
ウィンドウやコントロールのキャプションは SetWindowText で
変更できるけど、メニューのキャプションを変更するには
どうすればいいですか?
(「最近使ったファイル」のようにしたいけど、あれは毎回
メニューを作り直している?)

それとアクティブでなくなると消えてしまうウィンドウ
(メニューやポップアップ)をスパイで捕まえる方法があったら
教えてくらはい


292 :デフォルトの名無しさん:03/01/13 01:21
>それとアクティブでなくなると消えてしまうウィンドウ
>(メニューやポップアップ)をスパイで捕まえる方法があったら
>教えてくらはい

えっ?定数でhMenu取るの?勇者だね君は

293 :デフォルトの名無しさん:03/01/13 01:28
>291
とりあえずSetMenuInfoとか書いてみる・・・

294 :デフォルトの名無しさん:03/01/13 01:28
ほい
hMenu=GetMenu(hWND);
hMenuPlayThru=CreateMenu();
AppendMenu(hMenuPlayThru,MF_ENABLED|MF_STRING,n,sz);
AppendMenu(hMenu,MF_ENABLED|MF_STRING|MF_POPUP,(UINT)hMenuPlayThru,sz);




295 :291:03/01/13 01:30
ガーン変更でしか?作るのかとオモタユ

296 :291(本物):03/01/13 01:48
>>292-295
あ、ありがと〜
AppendMenu と ModifyMenu でできました〜


297 :デフォルトの名無しさん:03/01/13 08:21
SPY++みたいに、実行時に任意のウィンドウの情報を得るにはどうすればいいですか?

298 :山崎渉:03/01/13 08:29
218.145.25.77:80
218.145.25.14:80
50.51.32.202.ts.2iij.net:80
cache146.156ce.scvmaxonline.com.sg:8080
cache50.156ce.scvmaxonline.com.sg:8080
12.119.64.42:80
ce590-gdl01.terra.net.mx:80
seton03.terra.net.mx:80
218.65.110.14:80
ce590-gdl02.terra.net.mx:80

299 :デフォルトの名無しさん:03/01/13 08:51
自己解決
マウスキャプチャして
MapWindowPoints と WindowFromPoint
でなんとかなりそうですね。

しかし今まで色々調べてたのに、質問してすぐ見つかるとは・・・。
板汚しすまそ。

300 :300get:03/01/13 11:57
     ∧∧   )      (´⌒(´
  ⊂(゚Д゚⊂⌒`つ≡≡≡(´⌒;;;≡≡≡
        ̄ ̄  (´⌒(´⌒;;
      ズザーーーーーッ


301 :山崎渉:03/01/13 18:24
(^^)

302 :デフォルトの名無しさん:03/01/13 19:43
ツリービューの新スタイルのTVS_FULLROWSELECTって
VisualC++5.0じゃビルドできませんか?
DLLのバージョンは5.81なので大丈夫だと思うんですが
未定義ですってエラーが出てしまいます。

303 :デフォルトの名無しさん:03/01/13 19:44
簡単な二重起動防止を過去ログ参考にMutexで実装しようと思ってますが
二重起動を防止するときに、先に起動していたプログラムへ任意のイベントなどを
SendMessageなどで送ることはできないでしょうか?
同じプログラムが起動されたら先に起動していたプログラムにある動作をさせたいのですが。
もしかして、ウインドウハンドル捕まえて、それ宛にメッセージ送るだけ?

304 :デフォルトの名無しさん:03/01/13 20:29
>>303
Mutexにこだわらないなら、FindWindowで二重起動防止。
ウィンドウクラス名が重複している場合は使えんが・・・

ウィンドウクラス名に依存するのが嫌なら、名前付きイベントを使うのも良いかと

305 :デフォルトの名無しさん:03/01/13 20:55
>>303 サンプルコード山のように書かれてるよ。探せ。

306 :デフォルトの名無しさん:03/01/13 22:07
DHCぐらいしか知らん

307 :デフォルトの名無しさん:03/01/13 23:14
>>303
ウィンドウ持つのが嫌ならスレッドメッセージというのもあるけども。

308 :デフォルトの名無しさん:03/01/14 00:17
>>302
できる。
ヘッダファイルだけそろえてやればいい。
もしくはその定数を自分で定義してやってもオケ。
たしかBCC5.5.1とかには入ってるはずなので、落として差し替える!

309 :デフォルトの名無しさん:03/01/14 01:30
Win32コンソールアプリでコンソールにCGを表示させることは無理ですか?
いや、AAじゃなくてな。

310 :デフォルトの名無しさん:03/01/14 01:37
コンソールにグラフィック表示機能があれば可能だろうけど
聞いたこと無いねえ

311 :デフォルトの名無しさん:03/01/14 01:44
コンソールを直訳すれば操作卓だから UI は規定されないのだろうが、
一般にコンソールと言ったら CUI が常じゃないか?

312 :デフォルトの名無しさん:03/01/14 01:46
まあ、どうしてもと言うなら GetConsoleWindow() でウィンドウハンドル取って、
あとは煮るなり焼くなり犯すなり。

313 :デフォルトの名無しさん:03/01/14 01:46
char FindPath[256];
strcpy(FindPath, "c:\\*");
hFind=FindFirstFile(FindPath, &FData);
ここで FindPath[0]=0;としても
この後のFindNextFileに影響無しで良いですか?

314 :デフォルトの名無しさん:03/01/14 01:47
GetConsoleWindow()
 Windows NT/2000/XP: Included in Windows 2000 and later.
 Windows 95/98/Me: Unsupported.

とか書いてあるけどナー。

315 :デフォルトの名無しさん:03/01/14 01:48
>>313
多分無いと思うけど、何なら試してみたら?

316 :デフォルトの名無しさん:03/01/14 01:51
んなもん質問実験してる暇にもうひとつバッファ作ればいいだろ。

317 :デフォルトの名無しさん:03/01/14 01:51
コンパネの画面でウィンドウのタイトルバーの色や選択色などを設定するけど
あそこで設定したものってどうやってプログラムから取得するの?
現状としては選択色が取得したいんですが。

318 :313:03/01/14 01:51
>>315
試した。
ちゃんと動くっぽいけど本当に大丈夫か知りたくて・・

319 :デフォルトの名無しさん:03/01/14 01:59
>>317
GetSysColor()では不満か?


320 :デフォルトの名無しさん:03/01/14 06:04
カーソルがメニューの外に移動したかどうかを知る方法を調べています。
メニューを表示してカーソルをメニューの外に移動させると、
アイテムが一つも選択されていない状態ができます。
このことを教えてくれるメッセージなどありますでしょうか。
御存知の方いらっしゃいましたら、どうかよろしくお願いいたします。


321 :デフォルトの名無しさん:03/01/14 12:46
関数ImmNotifyIMEが、
WindowsXP環境だけ失敗するのですが、
何かご存知の方居りませんか?

322 :デフォルトの名無しさん:03/01/14 18:15
Win32の勉強始めたばかりなんですが一般的な学習法ってなんでつか?
Petzold本に出てるようなファンクションをかたっぱしから試してどう動くかを学ぶとか?
ちなみに目標は自家製の本格的なテキストエディタ作成でつ。

323 :デフォルトの名無しさん:03/01/14 21:41
・Petzoldのサンプルを少し改造してはその結果を確認
・大学ノートを用意し,憶えたことを必ずメモする
・糞使いづらいMSDNの調べ方に慣れる

以上を繰り返せばテキストエディタは53行で書ける

324 :デフォルトの名無しさん:03/01/14 21:52
ファイル名
名無しさん.txtが、名無し~1.txt であるとき、
名無しさん.txtを名無し~1.txtにリネームするには、どーやったらできますか?
MoveFile("名無しさん.txt", "名無しさ~1.txt");
ってしても成功して、そのまんまなんですけど。


325 :デフォルトの名無しさん:03/01/14 21:54
両方同じファイル名なんじゃないの。ロングとショートの。

326 :デフォルトの名無しさん:03/01/14 21:55
>>325
そうなんですけど、ロングをショートにしたいんです。

327 :デフォルトの名無しさん:03/01/14 21:57
>>326
意図が不明だけど一回nanasi.txtを中継すれば良いんじゃないの。

328 :デフォルトの名無しさん:03/01/14 21:59
>>318
一般にWin32APIはハンドル作った時点で情報のコピーを
作るからユーザー側で用意したバッファは壊してOK
>>321
詳細なテキストサービス…でぐぐってもオフにする方法しか
出てこないな。たぶんその関係だとは思うんだが

329 :デフォルトの名無しさん:03/01/14 22:00
>>327
9xだとトンネリングというOSの余計なお世話のせいで
それでもうまくいかない可能性がある

330 :デフォルトの名無しさん:03/01/14 22:00
>>327
すみません。それだと、nanasi.txtが既に存在しているかも
チェックしないとならないんですね。それがめんどいのです。
TempFileでも中継することにしますか。
うーん。なんかないものか。

331 :デフォルトの名無しさん:03/01/14 22:01
>>329
え?じゃ、>>330もだめか。

332 :317:03/01/14 23:11
>>319
おお!そうだシステムカラーだ。
ググろうにもキーワードが思いうかばんかった。恥ずかしい。

333 :デフォルトの名無しさん:03/01/15 00:08
エクスプローラで >>324 と同じ事をすると成功するな。
何をしているんだ?

334 :デフォルトの名無しさん:03/01/15 00:11
隠しAPIを使ってる

335 :デフォルトの名無しさん:03/01/15 00:41
>>334
根拠きぼんぬ

336 :デフォルトの名無しさん:03/01/15 00:44
GetShortPathName?

337 :デフォルトの名無しさん:03/01/15 01:10
>>336
得たいという話じゃなくて、設定したいという話だったと思う。

338 :324:03/01/15 01:43
renコマンドや、moveコマンドでも出来ませんでした。
ですが、名無しさん.TXTの、
.TXTを小文字にしてやると、成功することが分かりました。
昔、Explorerでもたしか、そんな仕様があったような。。。
全部小文字だと、頭だけ大文字にされたりとか。



339 :デフォルトの名無しさん:03/01/15 01:55
> 昔、Explorerでもたしか、そんな仕様があったような。。。
> 全部小文字だと、頭だけ大文字にされたりとか。

そりゃあ表示上だけの話じゃなかったっすか?

340 :デフォルトの名無しさん:03/01/15 09:56
windowsx.hってみんな使ってないの?
Cls_OnCreateとかそんなの。

341 :324:03/01/15 11:23
うーん。また、問題が。。。
cFilename=名無しさん
cAlternateFileName=名無し~1
であるとき、
cFileNameを、名無し~1 に、リネームできないのは、そういう仕様でしょうか?


342 :デフォルトの名無しさん:03/01/15 13:15
#include<winnt.h>

int main()
{
return 0;
}

というプログラムを実行すると、winnt.hに複数エラーが出るのですが、
他にincludeしなければいけないファイルがあるのでしょうか?

Borland C++ 5.6を使っています。

343 :デフォルトの名無しさん:03/01/15 13:22
>>342
あなたは Windows.h を持っていますか?

344 :デフォルトの名無しさん:03/01/15 13:22
>>341
Windows2000SP1ではエクスプローラのリネームでもそうなるので、仕様と思ふ。
ところで誰かCSPDK使ったことある人います?

345 :デフォルトの名無しさん:03/01/15 13:30
XPならSetFileShortNameで短い名前を付け替えればできそうな予感
2000以前でもNtSetInformationFileでコソーリできたりしないかな

346 :デフォルトの名無しさん:03/01/15 13:48
う、SetFileShortNameはバックアップ特権が必要なのか
関係ないけど今MSDNみたら
> Requirements
> Server: Included in Windows Windows Server 2003 2003.
になっててワラタ
もう少し落ち着いて直せと

347 :デフォルトの名無しさん:03/01/15 14:20
>>346
>> Server: Included in Windows Windows Server 2003 2003.
>になっててワラタ

typoでなくXMLパーサのバグ(動的にそのダブリが表示されてる)
かモナー

348 :デフォルトの名無しさん:03/01/15 15:18
>>341 最悪、一旦違うファイル名にすれば...

349 :デフォルトの名無しさん:03/01/15 16:45
MSDNライブラリって再配布OKなんだからMSも最新版をWeb閲覧だけでなく
ダウンロード可能にしてくれればいいのに。

350 :デフォルトの名無しさん:03/01/15 16:49
>>349
容量どれだけあると思ってんだ?

351 :デフォルトの名無しさん:03/01/15 17:01
Suscriber Downloadでダウンロードできるよ
有料だけど

352 :デフォルトの名無しさん:03/01/15 17:12
あれ?Platform SDKについてくるやつは?

353 :デフォルトの名無しさん:03/01/15 17:20
リッチエディットコントロールにチェックボックスを表示する事って
できますか?文字しか駄目なんでしょうか?

354 :デフォルトの名無しさん:03/01/15 17:26
悪いことは云わんから、IEコンポーネントにしとけ。

355 :山崎渉:03/01/15 17:45
(^^)

356 :デフォルトの名無しさん:03/01/15 17:54
>>348
それは問題ありと上のほうであったが。

357 :デフォルトの名無しさん:03/01/15 20:08
>>330 >>356
「名無しさん」を LFNで「名無し~1」に変える時だって、
LFNで「名無し~1」のファイルがすでにあったら失敗から、
結局存在チェックはしないといけない罠


358 :デフォルトの名無しさん:03/01/15 21:54
「名無し~1」は決してLFNにならないのでは
まあ言いたいことはわかるけど

359 :デフォルトの名無しさん:03/01/15 21:55
つーかその場合は単にERROR_ALREADY_EXISTSで失敗するから
事前のチェックはいらないのでは

360 :デフォルトの名無しさん:03/01/15 21:56
メッセージボックスをフックして、時限式に閉じる機能を付けたい
んですが、フックの仕方がわかりません。
平たく言うと、MessageBoxで表示されたダイアログのHWNDを
取得したいんですが、上手いやり方があったら教えてください。



361 :デフォルトの名無しさん:03/01/15 23:42
Winにはシンボリックリンクやハードリンクってないですか?
ショートカットみたいなインチキなのじゃなくて。

362 :デフォルトの名無しさん:03/01/15 23:44
>>360
そんなこと考えるならダイアログ作れよ・・・


363 :デフォルトの名無しさん:03/01/15 23:47
>>361
2000以降にはハードリンクはあったはず。

364 :>>362:03/01/16 03:23
ポップアップで画面外にウィンドウ作って
そいつを親ウィンドウに指定して
時間がきたら親を消すってどうよ?

365 :360:03/01/16 07:59
>>362
メッセージボックスって、メッセージの内容によって大きさが伸縮する
じゃないですか。あれを自動でやって欲しいという狙いがあったんです。
逆に伸縮ダイアログが簡単に作れればそっちでもいいんですけどね。
メッセージボックスと同じ動作をするダイアログの作り方でもいいです。

366 :デフォルトの名無しさん:03/01/16 08:13
>>365
GetTextExtentPoint32() でメッセージのサイズ調べて、それに合わせてリサイズ
すればいいだけでは?
つーか、メッセージボックス捕まえた後に何をするおつもりで?

367 :360:03/01/16 08:20
それぐらい読み取れませんか?

368 :デフォルトの名無しさん:03/01/16 08:25
時限式のMessageBoxならMSDNにサンプルがあったはずだが・・・

369 :デフォルトの名無しさん:03/01/16 08:29
http://www.boreas.dti.ne.jp/~keitarou/2ch.html
        アプロダワッショイ!!
     \\  動画専用ワッショイ!! //
 +   + \\ 抜けるぞワッショイ!!/+
                            +
.   +   /■\  /■\  /■\  +
      ( ´∀`∩(´∀`∩)( ´ー`)
 +  (( (つ   ノ(つ  丿(つ  つ ))  +
       ヽ  ( ノ ( ノ  ) ) )
       (_)し' し(_) (_)_)


370 :デフォルトの名無しさん:03/01/16 09:46
>>363
裏技的だが、実は2000以前でもテープバックアップAPIでNTFS上にハードリンク作れたりする。

371 :デフォルトの名無しさん:03/01/16 10:13
ソフトからAPI等を使用して関連付けする方法を教えて下さい。

372 :デフォルトの名無しさん:03/01/16 10:23
フォルダを選択する、SHBrowseForFolder関数で出てくるダイアログに
「フォルダの新規作成」ボタンがついてるのをよく見かけるのですが、
なんという関数を使えばいいのでしょうか?

373 :デフォルトの名無しさん:03/01/16 11:34
>>370
2000 の機能じゃなくて、NTFS の機能だからだろ。

374 :デフォルトの名無しさん:03/01/16 11:35
>>367
| GetTextExtentPoint32() でメッセージのサイズ調べて、それに合わせてリサイズ
| すればいいだけでは?

に対する答えが

> それぐらい読み取れませんか?

ですか?

375 :デフォルトの名無しさん:03/01/16 11:40
>>372
コールバックを使って、自前で作ってるんじゃないの?

376 :デフォルトの名無しさん:03/01/16 11:42
>>373
POSIXサブシステムが作ったハードリンクもバックアップ/リストア
できなくちゃならないからな

377 :デフォルトの名無しさん:03/01/16 11:43
>>361
シンボリックリンク相当のものとしては
フォルダにジャンクションというものが張れるけど
ファイルには張れない。

378 :デフォルトの名無しさん:03/01/16 11:46
>>374
そうですが何か?

379 :デフォルトの名無しさん:03/01/16 11:56
>>378
何だと思います?

380 :デフォルトの名無しさん:03/01/16 11:57
>>378
何があるでしょうね(^^)

381 :デフォルトの名無しさん:03/01/16 11:58
>>379
何があるかな?

382 :デフォルトの名無しさん:03/01/16 11:58
>>378
さあ一人で考えよう。

383 :デフォルトの名無しさん:03/01/16 12:04
               _∧_∧
            / ̄ ( ´∀`)⌒\
       __    /  _|     |   |                ,,,,,,,,,,,,,
       ヽヽ   /  /  \    |   |           ,,,,,,,iiiiillllll!!!!!!!lllllliiiii,,,,,,,
        \\|  |____|   .|   |           .,llll゙゙゙゙゙        ゙゙゙゙゙lllll,
         \/  \       |   |           .|!!!!,,,,,,,,       ,,,,,,,,,!!!!|
         | ヽ_「\      |   |、         |  ゙゙゙゙!!!!llllliiiiiiiiiilllll!!!!゙゙゙゙ .| 
         |    \ \――、. |   | ヽ         .|     .゙゙゙゙゙゙゙゙゙゙     |
         |   / \ "-、,  `|  |  ヽ       |               |
      _/   /    "-, "' (_  ヽ  ヽ      .|               |
     /    __ノ      "'m__`\ヽ_,,,, ヽ      |               |
     `ー― ̄          ヽ、__`/ー_,,,, ゙゙゙゙!!!!!!!lllllllliii|               |
                        \゙゙゙゙゙゙゙!!!!!lllllllliiiii|               |
                          \   ヽ   |               |
                           ヽ   \  |               |
                            |     \.|               |
                            `ヽ、,,_ノ|               |
                                  ゙゙!!!,,,,,,,,       ,,,,,,,,,!!!゙゙
                                       ゙゙゙゙!!!!llllliiiiiiiiiilllll!!!!゙゙゙゙
                                ブチッ!! /.// ・l|∵ ヽ\  ←>>378-382

384 :デフォルトの名無しさん:03/01/16 13:25
任意のようなデスクトップアクセサリを作りたいんですが、
BMPの形のウィンドウを作る方法ありませんか?

9x系なのでSetLayeredWindowAttributesは使えないし
CreateDCでデスクトップのHDCを獲得して描画しようものなら死ぬし
SetWindowRgnで無理矢理出来なくもないがかなり強引というか
そもそも移動する時出る四角い枠からして
任意はこの方法は使ってないと思われるし

当方VC6.0、98SEです


385 :デフォルトの名無しさん:03/01/16 13:58
>>360
非可視のダイアログをつくる

それを親にしてMessageBox

タイマーで時間経過後、ダイアログを破棄

親のダイアログが破棄されれば、MessageBoxも消える。
ただし、MessageBoxを表示する前に、ダイアログを画面中央にセンタリングしておく。

386 :デフォルトの名無しさん:03/01/16 14:03
あれれ?MessageBoxを呼んだ時点で、
ダイアログプロシージャの処理は回らなくなると思うが、
どうやって、タイマーで時間経過をはかって、ダイアログを
破棄するのかナ? マルチスレッド?

387 :385:03/01/16 14:08
すまん、俺は MFCの CDialog 派生で実装しました(;´Д`)

388 :デフォルトの名無しさん:03/01/16 15:34
>>あれれ?MessageBoxを呼んだ時点で、
>>ダイアログプロシージャの処理は回らなくなると思うが、

モーダルループが回ってるので、WM_TIMER は大丈夫


389 :デフォルトの名無しさん:03/01/16 16:30
タイマーメッセージで、MessageBox() のウィンドウハンドルを取得する
1)EnumThreadWindows をつかって、このスレッド内のトップレベル
ウィンドウを列挙
2)コールバック関数で GetWindow でオーナーハンドルが設定した
ものと一致したらそれが目的のダイアログのハンドル(テキスト一致
の方がいいかも)

以下の Delphi のコード例では、見つかったら EndDialog() で閉じる

procedure TForm1.Button1Click(Sender: TObject);
begin
Timer1.Interval := 3000;//3秒後
Timer1.Enabled := true;//タイマスタート
MessageBox(Handle,'Test desu','TEST',MB_OK or MB_ICONEXCLAMATION);
end;

function EnumThreadWndProc(hWindow: HWND; lData: LPARAM):BOOL; stdcall;
begin
result := true;
if GetWindow(hWindow,GW_OWNER) = Form1.Handle then begin
EndDialog(hWindow,IDCANCEL);//閉じる
result := false;
end;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
Timer1.Enabled := false;//タイマストップ
EnumThreadWindows(GetCurrentThreadId,@EnumThreadWndProc,0);
end;


390 :デフォルトの名無しさん:03/01/16 17:35
>>384
> SetWindowRgnで無理矢理出来なくもないがかなり強引というか
9xではそのかなり強引な方法しかない
伺かもそうやってる
リージョンがメッシュ状になってない限り
CreatePolyPolygonRgnが一番高速

391 :デフォルトの名無しさん:03/01/16 19:12
GDI でウィンドウにグラフィックを描画するアプリケーションを作っています。
CreateCompatibleBitmap でオフスクリーンバッファを作成して描画しているのですが、
ウィンドウのサイズが変更されたとき、このバッファはどうすべきなのでしょうか。
自分では、例えばウィンドウが拡大されたら新しく作り直す、とか
ウィンドウが小さくなったときは放っておいて必要な部分だけ使う、とか考えたのですが…
こういった処理のセオリーのようなものがありましたらご教授ください。

392 :360 ◆FeMIy5OMp2 :03/01/16 21:00
>>367は偽者です。お気になさらずに。

>>366
GetTextExtentPoint32は行の降り返しを面倒見てくれるでしょうか?


>>368
ありがとうございます。捜してみます。


>>374 >>378-383
すいません、何か気に障ること言いましたか?


393 :360 ◆FeMIy5OMp2 :03/01/16 21:04
>>385-389
有難うございます。
難しそうですが、意味は判りました。
試してみます。

394 :デフォルトの名無しさん:03/01/16 21:33
ツリービューの項目が左クリックされた場合と左ダブルクリックされたのを
知るにはどうしたら良いですか?
右クリックはWM_CONTEXTMENUを捕まえてHitTestで判定すると分かったんですけど
左クリック関係がわかりません。

395 :デフォルトの名無しさん:03/01/16 21:39
>>391
作ろうとしているアプリケーションによる

例えば,エロ画像鑑賞用ビットマップブラウザなら
ウインドウを大きくすれば画像拡大ってことで
StretchBlt()かSetMapMode()のMM_ISOTROPICあたり

ドッター仕様のビットマップエディタなら
子ウインドウでクライアント作ってスクロールバーでずらすとか

ウインドウを大きくしたときにビットマップもサイズを大きくするって
ソフトを洩れは知らん

396 :デフォルトの名無しさん:03/01/16 21:40
>>394
WM_LBUTTONDOWN

397 :391:03/01/16 21:46
>>395
ありがとうございます。参考になりました。
いろいろ試して最適なの方法を考えてみることにします。

398 :デフォルトの名無しさん:03/01/16 23:51
>>372
BIF_NEWDIALOGSTYLE

399 :デフォルトの名無しさん:03/01/17 00:20
>390
そういえばCreatePolyPolygonRgnのことを忘れてました
サンクス

400 :デフォルトの名無しさん:03/01/17 09:11
>>395
画面に表示されない分までオフスクリーンに確保するのは
メモリの無駄ってことで実際のウィンドウサイズ分しか
オフスクリーンを用意しないアプリがあるんだよ。
その分リサイズの処理が重くなるわけだが

401 :デフォルトの名無しさん:03/01/17 16:57
Windows2000の「別のユーザーとして実行」をプログラムから実行するにはどうしたら
よいのでしょうか?
「伺か」のsetup.exeのようなAdminで実行させるようなプログラムを作りたいのです。

402 :デフォルトの名無しさん:03/01/17 17:16
>>401
ファイル名をsetup.exeにすれば勝手にやってくれる

403 :TECH:03/01/17 17:32
>>401
RUNAS はダメ?
http://www.microsoft.com/windows2000/ja/professional/help/RUNAS.HTM

404 :デフォルトの名無しさん:03/01/17 18:04
>>402
あ、本当だ・・・でもファイル名を変えたくはないのです。

>>403
コマンドプロンプトでrunasではなくて、ダイアログを出すにはどうすれば良いでしょうか?
ユーザーにそのまま実行を続けるかどうかをGUIで選択させたいと思っています。

405 :デフォルトの名無しさん:03/01/17 18:40
>>404 RUNAS を実行したらパスを聞いてくると思うが?

406 :デフォルトの名無しさん:03/01/17 18:47
>>405
いや、だからそれは404にも書いてますがコマンドプロンプトなんで、GUIでやりたいなと。
Shift+右クリックの「別のユーザーとして実行」で表示されるダイアログを出す方法が
あったら教えていただきたいのです。

407 :TECH:03/01/17 19:24
>>404
ゴメンナサイ。

自分でダイアログを作るなら
http://www.microsoft.com/japan/developer/library/jpwinpf/_win32_createprocesswithlogonw.htm

が使えるけど、 ダメなんだろうなあ


408 :デフォルトの名無しさん:03/01/17 20:04
んー、あれ相当のダイアログを自分で作らないとダメみたいですねぇ・・・


409 :デフォルトの名無しさん:03/01/17 21:24
>>404
CreateProcessAsUser()ではいかんのか?
ttp://www.microsoft.com/japan/developer/library/jpwinpf/_win32_createprocessasuser.htm

410 :デフォルトの名無しさん:03/01/17 23:42
>>409
それで「別のユーザーとして実行」ダイアログが表示できるわけじゃないですよね?
だから自分でそれ相当のダイアログを作らなきゃならないようですね、というのが
>>408なわけでして。

>>407>>409で提示されたAPIとrunasあたりを検索すると
http://www.codeguru.com/misc/RunUser.html
のようなGUI Runasのサンプルがでてきましたが、
あのダイアログ自体を出すAPIや方法が見つからなかったので
ダイアログ自作しかないのかなぁと思っています。

ショートカットファイルのプロパティには「別のユーザーとして実行」という
チェックボックスがあって簡単に表示してくれるのに・・・ガクリ

411 :デフォルトの名無しさん:03/01/18 10:59
>>409
そっちだといろいろ特権が必要になるからつらい
そんな特権持たせる操作を要求できるなら
はじめからAdministratorでログインしろですむし
NT4ならこれかな
http://pc3.2ch.net/test/read.cgi/win/1024782123/l50

412 :デフォルトの名無しさん:03/01/18 11:00
タブコントロールで、タブを最後尾に追加するにはどうしたら良いですか?
TabCtrl_InsertItemだと、インデックスを指定しなければなりませんが
今いくつタブがあるか分からない状態で、最後尾(右側)にタブを追加したいのです。

413 :デフォルトの名無しさん:03/01/18 11:29
TabCtrl_GetItemCountで数えればいいだろ

414 :Question:03/01/18 14:33
VC++ ver6内で「WM_THEMECHANGED」を宣言すると、
「error C2065: 'WM_THEMECHANGED' : 定義されていない識別子です。」と表示されます。

WINUSER.H内には
 #if(_WIN32_WINNT >= 0x0501)
 #define WM_THEMECHANGED 0x031A
 #endif /* _WIN32_WINNT >= 0x0501 */
と宣言されてますし、今開発に使用しているOSもXPです。(Ver 5.1.2600 Service Pack 1)

なぜdefineされないのかわかりません。

415 :デフォルトの名無しさん:03/01/18 14:36
_WIN32_WINNTマクロの値は、作成するプログラムのターゲットOSの
選択をするためのものであって、ビルド環境には依存しません。

明示的に#defineしましょう。

416 :Question:03/01/18 14:47
>>415
WINUSER.H内の#if(_WIN32_WINNT >= 0x0501)だと、私のXPでプログラムを作成するとエラーが起こらないと思うのですが。
なぜエラーが起こるのかがわかりません。

ほかの、
 #if(WINVER >= 0x0400)
 #define WM_PRINT 0x0317
 #define WM_PRINTCLIENT 0x0318
 #endif /* WINVER >= 0x0400 */
だと、問題ないですよね。WM_PAINTはエラーなく使えるわけですから。

私のOSが「_WIN32_WINNT < 0x0501」と認識されているのでしょうか?

417 :デフォルトの名無しさん:03/01/18 14:51
> 私のXPでプログラムを作成するとエラーが起こらないと思うのですが。

根本的に勘違いしてる。415を読み直せ。

418 :Question:03/01/18 14:52
自分でdefineするしかないのですね。

419 :デフォルトの名無しさん:03/01/18 15:38
error LNK2001: 外部シンボル "__imp__OpenThemeData@8" は未解決です
error LNK2001: 外部シンボル "__imp__CloseThemeData@4" は未解決です

このエラーが出た場合、どのファイルをリンクすればいいのでしょうか?

420 :419:03/01/18 15:39
UxTheme.lib でした。解決。
失礼しました。

421 :デフォルトの名無しさん:03/01/18 15:48
ウィンドウリージョンの設定についてお聞きします。(BCB5使用)

フォームにデフォルトの領域を設定します。
HRGN default_rgn;
__fastcall TForm1::TForm1(TComponent* Owner):TForm(Owner)
{
default_rgn=CreateRectRgn(0,0,100,100);
SetWindowRgn(Handle,default_rgn,true);
}
次に、あるボタンを押すと領域が広がるので、その部分を追加したいとします。
void __fastcall TForm1::Open1Click(TObject *Sender)
{
HRGN dest_rgn,add_rgn;
add_rgn=CreateRectRgn(0,0,200,50);
CombineRgn(dest_rgn,default_rgn,add_rgn,RGN_OR);
SetWindowRgn(Handle,dest_rgn,true);
}
これでdefault_rgn+add_rgnの領域が表示されると思ったのですが、表示されません。
どのように解決したらいいでしょうか?

422 :ひょっとこ:03/01/18 15:55
コントロールパネルで画面のプロパティー内でデザインを変更しても、自分の作ったアプリケーションのコモンコントロールの背景色が変わりません。

例えば、配色を「アイスカラー」から「ピクニック」に変更しても、コントロールの背景色がアイスカラーのままなのです。
ここでは、どのような処理をすればいいのでしょうか?

423 :デフォルトの名無しさん:03/01/18 16:02
>>421
プッ

424 :デフォルトの名無しさん:03/01/18 16:08
http://www6.ocn.ne.jp/~endou/index2.html
     ★YAHOOOプロフィール★


425 :デフォルトの名無しさん:03/01/18 17:24
>>422
レバーとかツールバーの色ってことでしょ?
その色ってシステムが自動的に変えてくれるでしょ?

426 :ひょっとこ:03/01/18 18:23
コンパネの画面内のデザインを変更しますよね。
変更したら当然「文字の大きさ・デザイン・配色」などのスタイルが変わるわけですよね。
そのスタイル情報を取り出すにはどのAPIを使えばいいのでしょうか?

そのスタイル情報を自分のアプリのrebarに反映させたい。

427 :ひょっとこ:03/01/18 18:26
コンパネ内にあるデザインを変更したら、ということです。

なぜか、自分のアプリケーションに新しく設定したデザインが反映されない。

428 :421:03/01/18 19:13
>>423
解決しました。ありがとう。

429 :デフォルトの名無しさん:03/01/18 20:49
>>426
ウィンドウメッセージで飛んでくるYO

430 :デフォルトの名無しさん:03/01/18 22:20
428はどうせ偽者だからいちおうマジレスしとこう。
ここも強制IDにならないかねえ
>>421
SetWindowRgnに渡したリージョン(default_rgn)
は使いまわし不可。SetWindowRgnする前にコピーを作れ。

431 :デフォルトの名無しさん:03/01/18 22:47
VB6(SP5) 対象OSはXP or Meでし。

IE(関連付けされたブラウザ)をプログラムからShellExecuteで呼び出して、
インターネット上のウェブページを表示したりする一種のマクロ言語の
インタプリタもどき作ってるんですが、どうしてもそのウィンドウの「表示完了」が
わからないといけないのですが、どのように表示状態を取得すればいいのか、
見当つきません。表示状態をつかみたいIEは自分で起動したウィンドウ、及びそこから派生するウィンドウです。
よろしくなのら!


432 :名無し@沢村:03/01/18 23:30
>>431
ヌヒよ、DWebBrowserEvents::NavigateComplete()について調べれ。
どうやってVBで使うかは知らんよ。

433 :602:03/01/18 23:55
>>429
ウィンドウメッセージとして飛んでくるのはわかりますが。
それをrebarに反映する方法がわかりません。

ほかのコントロールは反映されますが、rebarとstatusbarだけが反映されないのです。
何か特殊な処理をしなければならないのでしょうか?

434 :602:03/01/19 00:34
私だけかな?

「WINXP」+「VC++6」でステータスバーを表示するアプリを作り、表示した後、コンパネの画面のデザインで配色を変えても、その自作アプリのステータスバーだけが配色が変わらないのは。
なぜだろうか?

435 :デフォルトの名無しさん:03/01/19 00:35
WM_CTLCOLORか何か

436 :602:03/01/19 00:42
しかも、実験的に作成したもので、
猫さんのHPにあるソースを丸々コピーして貼り付けてビルドしただけだから、
私のソース記入間違いでもない。

おかしいな?

437 :602:03/01/19 00:47
WMメッセージ(WM_SYSCOLORCHANGE)は来るのですが、それを反映させる方法がわかりません。
まさか、こんな問題が出るとは思わなかった。

システム側で処理してくれるものだと思いましたから。


438 :431:03/01/19 00:47
>>432
Javaは一応書けますが、RADをインスコすんのが面倒で鬱
どうしよう・・・

439 :421:03/01/19 00:51
>>430
煽られたので、だめかと思ってました。ありがとうございました。(表示できました。)
ただ、タスクマネージャを見てて気づいたんですが、ボタンを押すたびにメモリ使用量が増える模様。
一応↓のようにはしてみたんですが・・・何か忘れてるのかな・・・
void __fastcall TForm1::Open1Click(TObject *Sender)
{
HRGN dest_rgn,add_rgn;
add_rgn=CreateRectRgn(0,0,200,50);
dest_rgn=CreateRectRgn(0,0,0,0);
CombineRgn(dest_rgn,default_rgn,add_rgn,RGN_OR);
SetWindowRgn(Handle,dest_rgn,true);
DeleteObject(add_rgn);
DeleteObject(dest_rgn);
}

440 :デフォルトの名無しさん:03/01/19 04:44
SetWindowRgnに渡したリージョンは削除しちゃだめ。
つーか少しはMSDN読め。

441 :デフォルトの名無しさん:03/01/19 04:46
>>434
WM_SYSCOLORCHANGEか何かをリレーしてやる必要がある。

442 :デフォルトの名無しさん:03/01/19 07:51
SetWindowDQN ってなんですか

443 :名無し@沢村:03/01/19 12:52
>>442
ha ha ha

444 :602:03/01/19 13:54
>>441
詳細なプログラム記述方法を知ってますか?
ものすごく困ってます。

ほかのコントロールの配色は変わりますが、唯一「RebarとStatusbar」だけが配色が変わらない。

私は、
WM_SYSCOLORCHANGE内でrgb=GetSysColor(COLOR_3DLIGHT );とし、COLORREFを取り出した後、
そのRebar/Statusbarに反映させようとしていますが、その方法がわかりません。

だれかコントロールオブジェクトの配色を変える方法を知っていますか?

たとえば、デフォルト(例・98SE)では「ボタン」の色は「灰色」ですよね。
これを手動で「赤」に変える方法。

445 :デフォルトの名無しさん:03/01/19 14:46
>>444
XP でmanifest使用の場合はだめみたい。
該当コントロールだけは従来タイプにしないと厳しそう。(カスタムドローすら無視されます)



446 :602:03/01/19 15:21
>>445
もちろん「XPビジュアルスタイル」を適用させるのでマニフェストを追加していますが・・・。
マニフェストを使用しないでアプリを作成してみましたが(新規に)、やはり同じ現象・問題が出ますね。

というより、手動でコモンコントロールにシステムカラーを描画する方法があれば自作でプログラムします。
あるはずですが、やり方がいまいちわからないですね。
「WM_SYSCOLORCHANGE」をウィンドウ(Rebar/Statusbar)に対して送っても、全くの無反応です。(涙)

オーナードローを使えばいいのでしょうかね。


447 :602:03/01/19 15:25
私が思うに、RebarとStatusbarにシステムカラーが変わったと言うことが連絡されていないから、こういう現象が起こると思っているのですが・・・。
なぜほかのコントロール(Button/Combo/Menu/Popupなどなど・・・)に対しては送って、「RebarとStatusbar」だけ送らないのかが疑問???
ふぅ、格闘が続く・・・。

448 :デフォルトの名無しさん:03/01/19 15:45
>>446
なんか間違えていない? *.exe.manifestを消してみると何の処理をしなくても自動的に色が変わりますが…

>>447
そういう問題ではないでしょう。新規にアプリを起動した場合でもレバーやステータスバーの色はおかしいですから。
それにボタンだって、コントロールパネルで設定した色にはならないでしょう。



449 :602:03/01/19 15:50
>>448
うん、けしましたよ、それを。

私の環境がおかしいのか・・・。

450 :602:03/01/19 15:54
いろいろな他者作成のアプリを立ち上げてみましたが、やはり私のアプリだけが色が変わらない。
・・・・。

451 :602:03/01/19 16:01
私のプログラムミスではないですね。
猫さんのHPにあるソースを完全にコピペしてビルドしたら、やはり同じ問題が出ましたね。
・・・・。
VC++を再インストールしたほうがいいのか?
それとも、SPのバージョンが古いからかな?
VC++6とSP5では駄目ですかね。

452 :デフォルトの名無しさん:03/01/19 16:02
>>450
他者作成のアプリというのはmanifestを使っていないだけでしょう。
エクスプローラだってステータスバーの色は変わりません。
rcにmanifestを入れてません?


453 :602:03/01/19 17:18
>>452
rcからマニフェストは消してます(涙)

というか、新規にマニフェスト無しで作成しても問題が起こるのです・・・。
俺の環境上だけの問題かよ・・・。(涙)

454 :デフォルトの名無しさん:03/01/19 17:38
>>453
レバーの握る部分(?)はポチポチ(manifest使用時)になっています?
それともただの線(manifest未使用時)になっています?

455 :602:03/01/19 18:18
>>454
ただの線です。IE5仕様ですよ。

XP・PROで問題が起こるのは「REBARとSTATUSBAR」だけです。

嗚呼、休みが終わる・・・。問題が解決しないまま・・・。(涙)

456 :602:03/01/19 20:43
MSDNから提供されるSDKサンプルをビルドして確かめてみたら、
やはり画面の配色を変えても「Toolbar/Statusbar」だけが変わらないですね。

どうやら仕様のようです。それか不具合か。

VC++6とXP・PROではうまくアプリケーションが作られないみたいです。
VC.NETを購入しようと思います。

457 :デフォルトの名無しさん:03/01/19 21:21
>>456
そんなことはない。うちもXP Pro でVC6使ってます。


458 :602:03/01/19 21:35
>>457
Rebarを作成した際、画面の配色を変えてもアプリにきちんと反映されますか?

459 :602:03/01/19 21:42
寝よ・・・。

460 :デフォルトの名無しさん:03/01/19 21:52
>>458
manifest無効ならば、反映されます。
ところで、アプリを再起動したときはきちんと反映されるの?


461 :602:03/01/19 22:13
>>460
ええ、再起動したら反映されます。
ただ即反応してくれないから困ってます。

マニフェストも無効です。

というより、MSDNで配布されているサンプルを私の環境でビルドしたら、同じ問題が出ました。
私の環境が問題あるようです。

ちなみに、VC++は別のパーティションに入れています。
Cドライブ→WindowsXP OfficeXP
Eドライブ→VisualC++6 PlatformSDK

462 :デフォルトの名無しさん:03/01/19 22:24
タスクトレイにあるハードウェアの取り外しなんですが、
これをAPIから呼び出すことってできるのでしょうか?

463 :デフォルトの名無しさん:03/01/19 22:25
> タスクトレイにあるハードウェアの取り外しなんですが
ねーよ。

464 :デフォルトの名無しさん:03/01/19 23:13
>>444
SendMessage(hwndStatusBar, WM_SYSCOLORCHANGE, 0, 0L);
MSDNのコモンコントロールの章にもこうしろって書いてあるはずだけど

465 :デフォルトの名無しさん:03/01/19 23:14
つーかWM_SYSCOLORCHANGEの説明にそのものズバリが書かれてるし。
だから少しはMSDNを読めと。

466 :462:03/01/20 07:41
え、あるんですけど・・・

467 :デフォルトの名無しさん:03/01/20 08:53
PCカードもUSB機器もIEEE1394機器も使ってなきゃないだろ

468 :462:03/01/20 09:14
まぁ確かにそうですが・・・

469 :602:03/01/20 12:11
今、会社のPCから書き込んでいます。

今日、会社のPC(Win2000)で、その問題アプリを立ち上げたところ、なんと・・・、Rebar自体が表示されなくなりました。
いわゆる、家のPC(WinXPPRO)ではRebarは表示されるが、会社のPC(Win2000)ではRebar自体が表示されない。

Statusbarはきちんと表示され、「画面の配色更新」にも対応しました。

やはり、私の家のPCでのビルド環境に何か問題がある可能性大ですね。
事実、MSDNから配布されているサンプルソースを、家のPCでビルドしたら、その「画面の配色更新」ができませんでした。
MSDNから配布されているソースにそのような問題があるはずは無いですからね。

今日家に帰ったら、Win2000を別パーティションにインストールしてみます。


あと、SendMessage(hwndStatusBar, WM_SYSCOLORCHANGE, 0, 0L);ですが、
昨日、Rebarに対してメッセージを投げましたところ、無反応でした。(Statusbarには投げてません)

SendMessage(hRebar, WM_SYSCOLORCHANGE, 0, 0L);→無反応
あと、Rebarの各バンドに対しても投げましたが、無反応でした。

470 :デフォルトの名無しさん:03/01/20 12:18
http://www.rr.iij4u.or.jp/~animb/hooligan_101.zip
http://www.nn.iij4u.or.jp/~zelno/hooligan_102.zip
http://www.pp.iij4u.or.jp/~zit/hooligan_103.zip
http://www.rr.iij4u.or.jp/~dalfeed/hooligan_104.zip
http://www.ss.iij4u.or.jp/~rayanne/hooligan_105.zip
http://www.ff.iij4u.or.jp/~rindam/hooligan_106.zip
http://www.hh.iij4u.or.jp/~migo/hooligan_107.zip
http://www.nn.iij4u.or.jp/~guorivan/hooligan_108.zip
http://www.pp.iij4u.or.jp/~lno/hooligan_109.zip
http://www.ss.iij4u.or.jp/~afiro/hooligan_110zip

471 :デフォルトの名無しさん:03/01/20 16:00
> MSDNから配布されているソースにそのような問題があるはずは無いですからね。

この認識は改めたほうが良い

472 :デフォルトの名無しさん:03/01/20 18:37
>>469
単にお前の環境が腐ってるだけだろ
>>471
まあ自分のミスより先に疑うよりは健全な認識だな

473 :デフォルトの名無しさん:03/01/20 19:58
現在実行中の、ほかのプロセスに読み込まれている
DLLの名前と開始位置を取得するにはどのAPIを使えばいいですか?

VisualStdioやWinDbgのメニューコマンドにあるModule Listの内容を
自前で取得したいのです。

メモリの内容を直接読み込むだけなら
GetWindowThreadProcessId
OpenProcess
ReadProcessMemory
でできましたが、その先にいけません。
よろしくおねがします。

474 :デフォルトの名無しさん:03/01/20 20:11
>>469
>今日家に帰ったら、Win2000を別パーティションにインストールしてみます。
いままでこれをしていなかったとでも?
だったら忠告しておく
別パーティションではなく別PCにすれ
ビルドの度に電源から立ち上げを2回ずつなんて非能率かつ危険だし,
動作確認を開発環境でやっても本番環境と条件が違ったら意味がない
シリアルポート越しのデバッグ手段がせっかくあるのに勿体ない

>>471
御意

>>472
腐ってるのはお前の視野

475 :デフォルトの名無しさん:03/01/20 20:18
別PC? 家に二台以上あるの? ははは。オタク。

476 :デフォルトの名無しさん:03/01/20 20:22
さすがにInitCommonControlsExのミスではないですよね?

>>473
WinNT系ならPSAPI.DLL
Win95以降orWin2000以降ならTool Help
両方に対応しておくと良いと思います


477 :デフォルトの名無しさん:03/01/20 20:31
>>474
あんたと同じことを言ってるつもりなんだが
何が腐ってるんだよ

478 :デフォルトの名無しさん:03/01/20 20:33
linuxのstrace相当の動作(APIのモニタ)をするソフトを作るには、
どういったAPIを使えばいいのでしょうか?
また、単なるアプリケーションで可能なのか、dll 作成が必須、または、
driver 作成が必須、などもわかりましたらお願いします。
ターゲット環境は、2K、XPですが、98,ME でも使えるとなお有難いです。

479 :デフォルトの名無しさん:03/01/20 20:38
>>478
こんなソフト作りたいの? 頑張って。
http://www.rohitab.com/apimonitor/

480 :デフォルトの名無しさん:03/01/20 21:35
ファイルを作成するときに、その階層までのフォルダが無かったら
フォルダも自動作成するようなAPIありませんか?
CreateFileじゃフォルダは作成されませんでした。

481 :デフォルトの名無しさん:03/01/20 21:37
MakeSureDirectoryPathExists

482 :デフォルトの名無しさん:03/01/20 21:38
>>480
フォルダ作ってからファイル作れば?

483 :デフォルトの名無しさん:03/01/20 21:44
>>481
そのAPIは知ってますけど、ファイルは作成できないですよね?

>>482
CreateDirectory・・・
WriteFile・・・
って事ですか?
これって毎回CreateDirectoryするの無駄じゃないですか?

484 :デフォルトの名無しさん:03/01/20 21:46

SAPI(Microsoft Speach API)やってる人いる?
ViaVoiceやらLaLaVoiceやら、MSのSDKやら触ったのだけど
いまいちよくわからない。
SAPIってそもそも各ベンダがDLLにして提供するもので、それを
レジストリから調べて使うものなのか?
SDK入れるとコンパネに音声のアイコンが出るけど、MSがこれらの
APIをラッピングするDLLをだしてて、それを使うものなのか?
あと、ActiveXもMSが透過的につかうためのCOMを作ってくれてるのか?
知ってたらおしえてください。 おながいします。

485 :デフォルトの名無しさん:03/01/20 21:48
>>483
すでにディレクトリがあれば作成に失敗するんだから同じことじゃん

486 :デフォルトの名無しさん:03/01/20 21:48
MakeSureDirectoryPathExistsやってからファイル作れよ。

487 :名無し@沢村:03/01/20 23:43
ヌヒ等には、SHCreateDirectoryEx()もあるということを教えてやろう。
動作環境には要注意だが。

488 :デフォルトの名無しさん:03/01/20 23:45
>>475
アマグラマさん?
他の人たちの家にあるのは貸与マシンかも知れないよw

489 :デフォルトの名無しさん:03/01/21 01:17
メッセージが何時来るのか、何で取るべきなのかわからないのですが、決まりや定石ってないですか?
エディットボックスはキルフォーカスがいいとかそんなのです。

490 :デフォルトの名無しさん:03/01/21 01:23
>>489
お前の日本が理解できないのだが?

それと、メッセージがいつ来るかなんて誰にも分からん。

491 :602:03/01/21 01:25
今、別PCにWinXPPROとVC++6をクリーンインストールして、Rebarのついたアプリを作成したところ、「画面の配色更新」には対応できませんでしたね。

これで、はっきりしました。
明らかに、XPとVC++6とでは相性が悪いということです。

VC++.NET買ってこ。

492 :デフォルトの名無しさん:03/01/21 01:30
相性で済ませてしまうあたりが不安だ

493 :デフォルトの名無しさん:03/01/21 01:34
>>490
僕の日本は国旗の丸が紫色です。えへへ。

494 :デフォルトの名無しさん:03/01/21 01:34
>>491
VS.NETを買うこと自体は良いのですが、とりあえずPlatformSDKアップデートを先に




495 :デフォルトの名無しさん:03/01/21 01:37
次スレのテンプレにはこれをちゃんと入れといてくれよ
http://www.microsoft.com/msdownload/platformsdk/sdkupdate/default.htm?p=/msdownload/platformsdk/sdkupdate/psdk-full.htm

496 :名無し@沢村:03/01/21 02:02
>>475
ヌヒにはリモートデバッガという便利なものの存在を教えてやろう。

497 :デフォルトの名無しさん:03/01/21 09:52
「別のユーザーとして実行」ダイアログにはデフォルトでAdministratorのアカウント名と
ドメイン名が入力されていますが、これらの文字列はどのように取得すればよいのでしょうか?
自分の環境(Win2000)ではデフォルトがユーザー名はAdministrator(Adminのアカウント名は変更していません)
、ドメイン名はGetComputerNameで取得できる名前(環境はワークグループLANです)に
設定されています。

498 :602:03/01/21 12:02
>>494
PlatformSDKなら入れてあります。
入れた状態で、ビルドしても同じ現象が起きたのです。

♪なんでだろう??

とりあえず、今週末(金)までには、解決をしよう。
どこに問題点があるのか。

またまたとりあえずVC++6で踏ん張ろう。

499 :デフォルトの名無しさん:03/01/21 12:21
>>498
つられ覚悟で。
なんでそこまでこだわるのがわからん。
直接マイクロソフトに家。

500 :602:03/01/21 12:29
ただ、考えられる原因は、

●VisualC++6内での設定がおかしい。

ということだと思う。
コモンコントロールを作る際、リンクのライブラリを入れる以外に、何かすることがあるでしょうか?

うーん、コモンコントロール関連はなかなか手ごわいな・・・。
(WinSockのほうが簡単だった・・・)

501 :デフォルトの名無しさん:03/01/21 12:31
>>500
インクルードファイルのほうも新しいものを参照するようにしてあるのか?

502 :デフォルトの名無しさん:03/01/21 12:45
IEでも対応できていないことを無理やりやろうとすると、
逆に互換性が失われるのでは?
これからMSはなにやるかわからんぞ。

503 :602:03/01/21 12:58
>>601
しています。

というより、自分でインクルードファイルを置き換えたんですけどね(コピペで)

VisualC++6内の「include」フォルダ内を新しいもの(PlatformSDKのinclude)に変えた。

504 :デフォルトの名無しさん:03/01/21 13:55
カード・ワーズのゲームエディターのようなTABをメニューの下に
つけるしかたを教えてください。

505 :デフォルトの名無しさん:03/01/21 15:44
DLできるPlatformSDKとVC++のincludeのディレクトリ構成ってちがくない?
そのまま上書きはまずいんちゃう?

506 :デフォルトの名無しさん:03/01/21 16:04
普通はIDEのインクルードパスの設定でPlatform SDKのほうを優先するように変えたり、
環境変数いじったりで対応するよな。

あとWINVERその他のマクロが適切に設定されていない可能性もあるか。

507 :デフォルトの名無しさん:03/01/21 16:21
バウンダリ文字列を作るAPIなんて公開されているのでしょうか?
↓こんなの
boundary="=_NextPart_000_001A_01C016CF.64AA5620"

IE も Outlook も同じフォーマットなので API であるのかな?と


508 :デフォルトの名無しさん:03/01/21 16:56
後ろ8byteは Uuidっぽいが。

509 :デフォルトの名無しさん:03/01/21 17:11
マシンに一意なIDを取るAPIってありますか?

510 :デフォルトの名無しさん:03/01/21 17:14
吹き出しみたいな形のツールチップを作る方法を教えてください。

511 :デフォルトの名無しさん:03/01/21 17:26
>>509
完全ではないが、MACアドレス。

512 :デフォルトの名無しさん:03/01/21 17:45
>>509
どの範囲で?
時間とか?


513 :デフォルトの名無しさん:03/01/21 17:58
リストビューのフォーカスの点線を実線にしたり色をつけたりしたいのですが、
どうしたらできるでしょうか。

514 :デフォルトの名無しさん:03/01/21 18:06
>>511
できれば NIC非装備のマシンでも使用したいんですが

>>512
イメージ的には、UNIXのhostid的なものです。
コントロールパネル→システムに出てくる、ごちゃごちゃした
IDっぽいのは、それとして使えるのかな?

515 :デフォルトの名無しさん:03/01/21 18:10
>>514
cpuidとか?

516 :デフォルトの名無しさん:03/01/21 18:48
>>514
GetCurrentHwProfile() の HW_PROFILE_INFO.szHwProfileGuid なんかは?

>コントロールパネル→システムに出てくる、ごちゃごちゃしたID
は違法コピーが無い世の中なら使用可

517 :デフォルトの名無しさん:03/01/21 19:20
>>476
アリガト!(´▽`)

518 :497:03/01/21 20:08
あのぉ・・・>>497ですけど放置ですか・・・


519 :デフォルトの名無しさん:03/01/21 20:45
>>509
初回だけCoCreateGuid()した値をレジストリにとっといて
2回目以後はそれを再使用ってのは却下か?

520 :デフォルトの名無しさん:03/01/21 20:58
>>516
いいかもしれないですね。

>>519
hostidの代替としては、ユーザが任意に変更しにくい値がいいんですが...

521 :デフォルトの名無しさん:03/01/21 21:49
>>520
任意に変更ってregeditで変更できてはまずいってことか?

522 :デフォルトの名無しさん:03/01/21 23:25
特定のアプリケーションが送受信しているパケットデータを
横取りして閲覧と改竄をしたいのですが、

Winsockを使いこめばそのようなことはできますか?
それともDDKを手に入れてガシガシガシやらないとできないですか?

523 :デフォルトの名無しさん:03/01/21 23:37
はっきりとRagnarokOnlineといいなさい

524 :デフォルトの名無しさん:03/01/21 23:41
>>522
libpcap

525 :デフォルトの名無しさん:03/01/21 23:47
>>522

改組するなら filter driver あたりを書くのが良いと思うけど>WDM詳しい人フォローしちくり
WDM 以前の環境ならカーネルレベルで TDI Hook ね。
閲覧するだけなら libpcap でも良いかもね。

一時的な hack で良いなら、通信先を hosts ファイルで 127.0.0.1 に
変更しちゃって、本来の接続先との間で proxy として動作するプログラム
書くのが簡単だと思う。

526 :デフォルトの名無しさん:03/01/22 00:05
その手のネットワーク系のプログラムを書くなら、Windows 捨てて UNIX に行った
方が早いと思うぞ。

FreeBSD で作ったルータを挟んで、そこで divert (4) 噛ますとか。

527 :デフォルトの名無しさん:03/01/22 00:36
BSD厨ここにも発見(・∀・)

528 :522:03/01/22 00:48
ttttttttttttttttttttttttthx!
明日(今日か)、本屋に行き詳しく調べます。

>>523
自分と他人を重ねないでね☆

529 :デフォルトの名無しさん:03/01/22 01:21
図星のようだな

530 :デフォルトの名無しさん:03/01/22 01:47
厨です。質問していい?

531 :名無し@沢村:03/01/22 01:49
>>526
ヌヒよ、そういうレスのことを一般的に「的はずれ」って言うんだよ。

532 :デフォルトの名無しさん:03/01/22 01:51
CreateCompatibleDCで作ったメモリーDCが
不要になったとき、元々あったBITMAPをメモリーDC戻さないで
DeleteDCしても動くのですがやっぱり悪いですか?

533 :デフォルトの名無しさん:03/01/22 01:55
>>532

Win98 や Me などで、使うたびにだんだんリソースが減っていっても
構わないなら、それでも別に良い(めったに使わないツールとか)。


534 :デフォルトの名無しさん:03/01/22 02:00
>>533
厨です。すばやいレスありがとう。

535 :デフォルトの名無しさん:03/01/22 02:03
>>527
どうした、何か BSD に恨みでもあるのか?

Win32 で IP パケットを低いレイヤーでいじろうとすると、どうしても kernel mode で
動くトコロに手を入れる必要があって難しい。開発中は、自分の書いたコードのバグ
で OS ごと落ちるしな。

divert (4) は、そのあたりの処理をユーザ層に切り出してるから開発は楽だぞ。

536 :デフォルトの名無しさん:03/01/22 02:05
ま、熱くなる前にスレタイ見ろってこった

537 :デフォルトの名無しさん:03/01/22 02:11
それを言ったら、標準 API だと無理、で終わりだろう。

538 :522:03/01/22 02:23
糸口さえつかめればなんでもいいけど。

ただ、いまBSDに手をつける気力は無いので、
今回はスルーしつつ、記憶にはとどめます。

539 :デフォルトの名無しさん:03/01/22 02:39
BSDなんかやるくらいならLinuxやるよ(藁

540 :デフォルトの名無しさん:03/01/22 03:10
>>539
BSDにはどういったイメージをお持ちで?

541 :デフォルトの名無しさん:03/01/22 03:12
>>540
OS X みたいなもの

542 :デフォルトの名無しさん:03/01/22 08:09
>>541
ネタレスカコイイ!

543 :デフォルトの名無しさん:03/01/22 10:31
Windowsで親プロセスの環境変数を変更する方法ってありましたっけ?

544 :デフォルトの名無しさん:03/01/22 14:42
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Session Manager\Environment
に環境変数書いて、 WM_SETTINGCHANGE を投げれば、
親プロセスの環境変数「も」変更できるだろう。

545 :デフォルトの名無しさん:03/01/22 14:50
>>543
SetWindowsHookExでDLLを侵入させてSetEnvironmentVariable



546 :デフォルトの名無しさん:03/01/22 15:23
>543
親がウインドウもってなかったら?

547 :デフォルトの名無しさん:03/01/22 15:29
>>546
ハァ?

548 :デフォルトの名無しさん:03/01/22 15:37
>>545 544?
PostThreadMessage


549 :デフォルトの名無しさん:03/01/22 15:38
って自分も間違っているし
x>>545
o>>547


550 :デフォルトの名無しさん:03/01/22 17:06
>>548
相手がメッセージループ回してくれなきゃ
Postしてもキューにたまるだけで意味ない。

551 :デフォルトの名無しさん:03/01/22 17:48
WM_SETTINGCHANGE 投げても既に起動しているプロセスの環境変数は変わらんよ。

552 :デフォルトの名無しさん:03/01/22 17:53
つーかUSER32.DLLの関数を一度も呼び出していないスレッドは
そもそもキューが存在しないのでPostできない。

553 :デフォルトの名無しさん:03/01/22 21:30
レスくれた人ありがと。返事送れてすんまそん。

>>544
残念それ知ってた。今回やりたいのは親プロセスだけでシステム全体じゃないんだよね。
システム全体の設定を変えるわけだから権限の問題も出てきそうだし、
それに既に起動しているプロセスが変更されるかという疑問もあったし。
でその疑問を先に答えてくれた>>551さんありがと。

>>545
ほう。そんな方法があるのか? でも>>548になんか修正するようなこと書いてあるし、
しかも>>550 >>552でさらに修正するようなこと書いてあるし。

えと、結局>>545の方法で出来るのでしょうか?
それともPostThreadMessage単独で出来るのでしょうか、
SetWindowsHookExとPostThreadMessageを組み合わせるのでしょうか。

DLLを侵入させるってのがやったこと無いからよく分からない。
どっかにサンプルないかな〜。

554 :デフォルトの名無しさん:03/01/23 03:43
552 のような状態では、フックも通用しないのでは?

555 :602:03/01/23 06:39
原因がわからないので、ソース・画像をUPします。

↓ソース(http://www.kumei.ne.jp/c_lang/sdk/sdk_57.htm
http://www.geocities.co.jp/SiliconValley-Oakland/6260/statusbar.rtf
↓ビルドした直後
http://www.geocities.co.jp/SiliconValley-Oakland/6260/pict1.JPG
↓コンパネの画面内「デザインの配色をアイスカラーに変更」した直後
http://www.geocities.co.jp/SiliconValley-Oakland/6260/pict2.JPG

ちなみに、VC++6内の設定は、リンクで「Comctl32.lib」を追加しただけです。
ビルド環境は、WinXP・PRO、VC++6(共に何もいじっていないインストールしたままの状態です)
PlatformSDKはインストールしていません。

なぜStatusbarの色が「アイスカラー」に変わらないのでしょうか?

556 :602:03/01/23 06:40
実験用として今、猫さんのHPのソースを参考しています。

557 :デフォルトの名無しさん:03/01/23 08:57
>>555
CreateMyStatus関数の(HMENU)ID_STATUSをNULLにする


558 :デフォルトの名無しさん:03/01/23 10:49
> DLLを侵入させるってのがやったこと無いからよく分からない。
> どっかにサンプルないかな〜。
kageのソース

559 :デフォルトの名無しさん:03/01/23 18:17
タブコントロールで、右クリックでタブを選択できるようにするには
どうしたらいいですか?

560 :デフォルトの名無しさん:03/01/23 18:19
>>559
左ボタンが壊れた?

561 :デフォルトの名無しさん:03/01/23 18:38
>>559
右クリックした時にその下のタブを選択させる。

562 :デフォルトの名無しさん:03/01/23 18:48
>>560
いえ、違いますけど・・・。

>>561
カーソルの下にあるタブを判定するにはどうしたら良いですか?
TabCtrl_GetCurSelだと、右クリック時のカーソルの下にあるタブじゃなくて
選択されてるタブしか判別できないのですが・・・。

563 :デフォルトの名無しさん:03/01/23 19:10
>>562
TCM_HITTESTを送る

564 :山崎渉:03/01/23 20:00
(^^)

565 :602:03/01/23 20:57
やはり、誰も原因がわからないようだ。
私がプログラムミスでないことは確かなようだ。

566 :デフォルトの名無しさん:03/01/23 21:25
>>565
>>557でも駄目なのですか?



567 :602:03/01/23 21:27
>>566
ええ、だめです。

きちんと初期化はしているので、こんなおかしい不具合がでるはずはないのだが・・・。
ic.dwSize = sizeof(INITCOMMONCONTROLSEX);
ic.dwICC = ICC_COOL_CLASSES|ICC_BAR_CLASSES;
InitCommonControlsEx(&ic);

私だけの問題ではなさそうだ。

568 :602:03/01/23 21:34
ちくしょう・・・ドットネット買うしかないのか・・・。

569 :デフォルトの名無しさん:03/01/23 21:45
んー、それがXP以外では問題がでないようならmanifest.xmlかなんかで解決するかもな。
XP持ってないんでどうとも言えんが。

570 :602:03/01/23 22:01
>>569
マニフェストはすでに確かめてあり、だめでした。

・・・わからん。。。
ほかの人で同じような不具合はないのかな?

571 :デフォルトの名無しさん:03/01/23 23:23
> 私がプログラムミスでないことは確かなようだ。

割るれるな?

572 :デフォルトの名無しさん:03/01/23 23:58
Windows NT4.0/2000以降でASPIを使わずに
SCSIのディスクデバイスを列挙したいのですが、
どうすればいいのでしょうか。
キーワードは「SPTI」らしいのですが、
どんなAPIを使うのか、どんな資料がどこにあるのか、
さっぱり分かりません。

要はこういうソフトの非ASPI版が作りたいのですが。。
http://www.vector.co.jp/soft/win95/hardware/se084939.html

よろしくお願いします。

// SHIORI-0 //

573 :デフォルトの名無しさん:03/01/24 00:12
WinampのPlug-inはClassで成り立っているのですよね?
あのように、動的にクラスを読み込んで利用するにはどうすればいいのでしょうか?


574 :デフォルトの名無しさん:03/01/24 00:15
>>572
ASPIしか使ったことがないから知りませんが、検索したらでてきました
ttp://www.geocities.co.jp/Hollywood/4205/doc/spti.html
DDKが必要らしいです


575 :デフォルトの名無しさん:03/01/24 00:17
>>573
どの言語で作るつもりか知らんけど
C++なら仮想クラスを自分のプログラムで定義して、
DLLはそれの派生クラスを作成する
あとはDLL側にそのクラスのインスタンスを作成する関数を作って
LoadLibrary/GetProcAddressでその関数を呼び出す
返って来たインスタンスを通して全ての処理を行えばいい

576 :572:03/01/24 00:41
>>574さんありがとうございます。

ふと思いついて「wnaspi32.dll spti」でグーゴゥしてみました。

WinASPI32 to SPTI wrapper for WinNT3/4/5
http://f-ts.bias.ne.jp/~azuco/apj/apjf.htm
> SPTIを使ってASPIのファンクションをエミュレート

DLL 関連回答
http://www.snark.co.jp/soft/faq/dll_a.htm
> 単純にNTでSCSIコマンドを発行するだけなら DeviceIoControlでできます。
> DDK の src\storagej\class\spti にサンプルがありますが
> \\.\scsi1: といったデバイスファイルを開いて CDB を送れます。

・・・てか、SPTI以前にASPIのことも分からないので、
むしろ>>572みたいなツール、どこかに転がってないですか?

577 :デフォルトの名無しさん:03/01/24 00:53
>>576
その質問はスレ違いですが
>>576のwrapperDLLのファイル名をwnsapi32.dllにすれば
>>572等に既存のASPIソフトが使えるのでは?


578 :572:03/01/24 01:00
>>577
なるほど! 明日やってみます。

ついでに「wnaspi32.dll spti」に引っかかった英語ページ。
読めないので関係あるのかないのか分からない。。
http://www.experts-exchange.com/Programming/Programming_Platforms/Win_Prog/Q_10351574.html
http://akrip.sourceforge.net/
http://www.onlinepcfix.com/ASPI2.htm

579 :デフォルトの名無しさん:03/01/24 01:19
>>567
>>555のソースをビルドして試してみたけど確かに色が変わらないねえ。
でも自作のアプリではちゃんと色が変わった。よって
> 私がプログラムミス
であることは
> 確かなようだ。
申し訳ないが自作アプリとどこが違うのかまではわからない。


580 :デフォルトの名無しさん:03/01/24 01:24
となると、あやしいのは
SendMessage(hStatus, SB_SIMPLE, TRUE, 0L);
のあたりでしょうか?
いずれにしろ.NETでは解決しないでしょうね


581 :デフォルトの名無しさん:03/01/24 01:46
>>580
自作アプリではCreateWindowEx+SB_SIMPLEの代わりに
CreateStatusWindowを使ってたんでそうしてみたが変わらなかった。
いったい何が違うんだ。まじでわからん…

582 :602:03/01/24 03:33
>>579
早起きしました。

変わらないですよね(涙)
ステータスバーに関してはいろいろな方法で試したのですが、変わりません。
これでも駄目でした。
switch (msg) {
case WM_CREATE:

INITCOMMONCONTROLSEX sex;

sex.dwICC=ICC_BAR_CLASSES;
sex.dwSize=8;
InitCommonControlsEx(&sex);

CreateMyStatus(hWnd, hInst);
・・・・・

これはREBARでも同じ現象(配色が変わらない)が起こるので、何に問題があるのかがいまだに不明・・。



583 :デフォルトの名無しさん:03/01/24 03:49
XPのバグ(というか仕様変更)だったら泣くな.…

584 :デフォルトの名無しさん:03/01/24 04:31
WM_KEYDOWNでは、キーを押されたときのshiftキーの状態はわからないですよね。
キーが押されたときのshiftキーの状態を知るにはどうしたらいいんでしょうか。

585 :デフォルトの名無しさん:03/01/24 04:49
>>584
WM_KEYDOWN処理中に GetKeyboardState で全仮想キーの状態を取得するとか……

586 :デフォルトの名無しさん:03/01/24 05:20
>>584
::GetKeyState

587 :デフォルトの名無しさん:03/01/24 08:21
>>585-586
それってWM_KEYDOWNを受け取ったタイミングの状態であって、
WM_KEYDOWNが発生する原因となったキーが押されたときの状態じゃないですよね。


588 :デフォルトの名無しさん:03/01/24 09:08
>>587
> This function retrieves the state of the key
> when the input message was generated.
と書いてるが。でも
> The key status returned from this function
> changes as a thread reads key messages
> from its message queue.
とも書いてるなあ。どっちが本当だよおい

589 :デフォルトの名無しさん:03/01/24 09:13
あー入力メッセージが生成されたときの状態を読み取るから
メッセージを読み出すたびに状態が変化すると考えれば
とくに矛盾しないか。
つーわけでGetKeyStateで問題ないと思うが

590 :デフォルトの名無しさん:03/01/24 13:57
>>587
キーが押されたときのだよ。ヘルプぐらい読んでくれ。
あとトレースするとかすればわかる。
ハードウエア的な現在の状態を知る方法はまた別の方法だから。

591 :デフォルトの名無しさん:03/01/24 14:17
キーボードが2つ以上接続されている環境があったとして、
どちらのキーボードのキーが押されたのか判断する方法はあるのでしょうか? 

 

592 :デフォルトの名無しさん:03/01/24 14:59
スプリットウィンドウの右上とかにバッテンで閉じるのを作りたいんですが、
簡単な方法がありましたら是非教えて下さい。お願いします。

593 :デフォルトの名無しさん:03/01/24 15:06
>>592
bitblt

594 :デフォルトの名無しさん:03/01/24 15:35
印刷関係でちょっと不可解な現象が発生してるんです。

とあるアプリで StartDoc() とかしても印刷がはじまらないんです。
で、印刷ルーチンが二つありまして(出力形態が二種類あるので)、
片方ではちゃんと印刷開始されるのですが、もう片方はうんともすんともいいません。
これだけだと一方のルーチンの不具合じゃないか、と言われるかもしれません。
確かにそれはそうで、現在調査しているのですが、不可解なのは
関数の中で文字列処理のために

 char buf[256];

しているのですが、これを

 char buf[184];

にすると正しく印刷が開始されるのです。
これが逆ならスタックでも壊してるのかなという気にもなるのですが、
小さい方が動く、というのは聞いたことがありません。

何となくドライバ関係のDLLのアロケート関係のような気もするのですが、
どなたかこのあたりに関して情報お持ちでないでしょうか?

ちなみにOSはWinME、コンパイラはVC6です。
さらにちなみにその他のOS(98、98SE、2000、XP)では
問題なく印刷が開始されます。

595 :デフォルトの名無しさん:03/01/24 15:39
>>594
>char buf[184];
>にすると正しく印刷が開始されるのです。
たまたま印刷されてるだけだと思われ。"\0"とか抜けてない?

596 :デフォルトの名無しさん:03/01/24 15:54
>>594
EndDocまで行わないと、印刷を始めるかどうかはドライバ次第だったような。

597 :デフォルトの名無しさん:03/01/24 16:07
>>594
GetLastError()で調べれ。

598 :594:03/01/24 16:14
ちょっと試してきました。
とりあえず buf がらみの処理は変数宣言も含めて削除してみますた。
すると。確かに印刷される。やっぱりどこかでつぶしてる?
それではと、途中に

 {
  char buf[256];
  *buf = '\0';
  DrawText(pd.hDC, buf, -1, &rc, format);
 }

と入れてみますた。出なくなりました。何で???

>>595
そういうわけで文字列処理部分ではなさそうです。

>>596
あ、ちょっと説明が足りませんでしたが、どの段階で印刷が開始されるかは
よくわかってないまま書きました。まぁ印刷される場合があるということは
処理の流れ自体はあってるだろうということで。

>>597
というかエラーにならないんです。あたかも正常に終わったかのように
印刷されないんです。

何か見落としてるかもしれないので他にもヒントありましたらお願いします。


599 :594:03/01/24 16:17
すいません。読み返してみてちょっと補足。説明が中途半端な気がしたので。
結論から言えば、

 /* ↓この処理を通らないと印刷される */
 if (0) {
  char buf[256];
  *buf = '\0';
  DrawText(pd.hDC, buf, -1, &rc, format);
 }

 /* ↓通ると印刷されない */
 if (1) {
  char buf[256];
  *buf = '\0';
  DrawText(pd.hDC, buf, -1, &rc, format);
 }

ということです。なんでだろーなんでだろー
age させてもらっていいですか?

600 :デフォルトの名無しさん:03/01/24 16:18
余裕で600ゲット

601 :デフォルトの名無しさん:03/01/24 16:24
600ゲトー

   ∧∧   (⌒
 ⊂(゚Д゚⊂⌒つ(≡
    ズサー (⌒


602 :デフォルトの名無しさん:03/01/24 16:26
それではと、途中に

 {
  char buf[256];
  *buf = '\0';
  DrawText(pd.hDC, buf, -1, &rc, format);
 }

と入れてみますた。出なくなりました。何で???


・・・初期化してないcharの配列をを渡してた?

603 :594:03/01/24 16:33
さらに突き詰めてみました。先ほどの処理をさらに簡略化して

 if (1) {
  char buf[256];
  *buf = '\0';
 }

○。

 if (1) {
  char buf[256];
  lstrcpy(buf, "hoge");
 }

×。

 if (1) {
  char buf[256];
  strcpy(buf, "hoge");
 }

○。

どうやらよそ様のDLLの関数に buf のアドレスを渡すとダメなようです。
何かどこかで聞いたことあるような。。。

604 :594:03/01/24 16:38
引っ張ってしまってスマソン。もう少しおつきあいいただければ幸いです。
さらに続けて(if は省略します)

char *buf = GlobalAlloc(GPTR, 256);
lstrcpy(buf, "hoge");
GlobalFree(buf);

○。

お、そゆこと?

と思って元の処理に戻して、先頭で定義してた
char buf[256];

char *buf = GlobalAlloc(GPTR, 256);
にしてみますた。

ダメでした。。。ショボン

605 :デフォルトの名無しさん:03/01/24 16:38
http://banana.fruitmail.net/cgi/introduce_jump1.cgi?1363289

606 :デフォルトの名無しさん:03/01/24 16:44
>>604
HGLOBAL GlobalAlloc(
UINT uFlags, // 割り当ての属性
SIZE_T dwBytes // 割り当てたいバイト数
);

根本的に使い方間違ってる。 

607 :594:03/01/24 16:47
え?今って GPTR でポインタ返せないの?

608 :デフォルトの名無しさん:03/01/24 16:58
返せるよ。

609 :デフォルトの名無しさん:03/01/24 17:31
子ウィンドウとして作成したリストコントロールを
要らなくなった時点で、DestroyWindow(hList);で破棄しようとしたのですが
サブクラス化したリストコントロールのプロシージャのWM_DESTROYで
PostQuitMessage(0);とすると、親ウインドウも一緒に閉じてしまいます。
PostQuitMessage(0)しなくても、リストコントロールはきちんと破棄されたと
思って良いのでしょうか?

610 :594:03/01/24 17:33
うーん、謎です。。。
メモリまわりっぽいのは確かだと思うんですけどねぇ。
LintTo() や、即値渡しの TextOut() だけにすると問題なく描画できますので。。。

他のOSではたまたま動くけど、
Meでは注意しないとダメな処理ってありましたっけ?


611 :デフォルトの名無しさん:03/01/24 17:36
PostQuitMessageは最後のウィンドウとか
メインウィンドウが閉じたときにだけ呼び出すものだよ
なんでWM_DESTROYのデフォルト処理で自動的に
呼び出されないのか考えれ

612 :デフォルトの名無しさん:03/01/24 18:36
>575
インスタンスを作成する関数を作って返す
とありますが、どのような形で返せばいいのでしょうか?

613 :デフォルトの名無しさん:03/01/24 19:18
>>612
ポインツァー?

614 :デフォルトの名無しさん:03/01/24 19:22
変数形です。

615 :594:03/01/24 19:40
ちょっと気付いて試してみたらどうやらOKっぽかったので
それのような気がするんですが、

StartDoc() に渡す DOCINFO 構造体って
やっぱ不要なメンバはゼロクリアしとかないとダメです?

マニュアルにはダメとは書いてないんですけど、そんな感じですよね。。。

巷のサンプルみても、初期化せずに必要なメンバ(lpszDocNameとか)設定してる
だけのものが多いんですが違うのかな?

これだけ↓でとりあえずは動くようになったのですが。

 di.cbSize = sizeof(di);
 ZeroMemory(&di, sizeof(di));  // この行を追加
 di.lpszDocName = lpszDocName;
 di.lpszOutput = NULL;

616 :デフォルトの名無しさん:03/01/24 19:48
>>615
しむらcbSize--!書き間違えかも知れんけど。

617 :デフォルトの名無しさん:03/01/24 19:49
>>615
静的変数やGlobalAlloc(GPTRの場合は基本的に0初期化されているから必要ない

多少なりともプログラムをやっているならどういう場合に初期化が必要かは推測できるはず
メンバが設定されているかいないかをどうやってシステム側が判別するの?


618 :594:03/01/24 19:54
>>616
へ?何か間違ってる?気付いてないかも。

>>617
もう少し言い訳さしてください。

実は。。。昔ながらのやり方でやってたので
DOCINFO のメンバが増えてるの知らなかったんです。。。
印刷するプログラム書いたの久しぶりだったもので。。。

大変お騒がせ致しました。

619 :デフォルトの名無しさん:03/01/24 20:03
>>618
cbSize==0になってるよ

620 :594:03/01/24 20:07
>>619
ごめん、まだわかってない。

あれ?

DOCINFO di;

di.cbSize = sizeof(di);

で間違ってる?そこじゃない?

621 :デフォルトの名無しさん:03/01/24 20:09
その後ZeroMemoryしている


622 :デフォルトの名無しさん:03/01/24 20:11
>>620
いや順番がこうじゃないとだめじゃん?
 ZeroMemory(&di, sizeof(di));  // この行を追加
 di.cbSize = sizeof(di);
 di.lpszDocName = lpszDocName;
 di.lpszOutput = NULL;

623 :594:03/01/24 20:28
あ。。。あぅ。。。あぅぅ。。。。。

面目ないっ m(_ _)m

みんな、いい香具師だなぁ。好きだぜ、みんな!じゃー逝ってくる!

624 :デフォルトの名無しさん:03/01/24 20:29
>>575
インスタンスを作成する関数を作って返す
とありますが、どのような形でポインタを返せばいいのでしょうか?

625 :602:03/01/24 20:46
やはり、誰もわからないみたいですね。
致命的なバグか?

626 :デフォルトの名無しさん:03/01/24 20:48
interface IBeeper { virtual void Beep() = 0; ~IBeeper(){} };
IBeeper*CreateBeepInterface();
DeleteBeepInterface(IBeeper*p);
とでもインターフェースを定義しておき、共通とする。

んで、プラグイン側では、インターフェースを実装する。
class CBeeper : public IBeeper { void Beep() { .... } };
IBeeper*CreateBeepInterface() { return new CBeeper; }
DeleteBeepInterface(IBeeper*p){ delete p; }

それだけ。

627 :デフォルトの名無しさん:03/01/24 21:14
>>626
う〜ん。難し。
interface IBeeper { virtual void Beep() = 0; ~IBeeper(){} };
って、クラスじゃないんですね。。同じですか。
これは、ヘッダーですか?
IBeeper*CreateBeepInterface();
DeleteBeepInterface(IBeeper*p);
これは、何をするかは見当がつくのですが…。

class CBeeper : public IBeeper { void Beep() { .... } };
この*でつながっているのはどういう意味でしょうか?ポインターですか?
IBeeper*CreateBeepInterface() { return new CBeeper; }
DeleteBeepInterface(IBeeper*p){ delete p; }



628 :デフォルトの名無しさん:03/01/24 21:48
ほう、何も継承しないのか

629 :デフォルトの名無しさん:03/01/24 22:02

public ですか?
継承ですね。はぁ。

630 :デフォルトの名無しさん:03/01/24 22:16
COMのようでCOMじゃない

631 :デフォルトの名無しさん:03/01/24 22:19
はぁ。何かつかめた気が。
でも、
IBeeper*CreateBeepInterface() { return new CBeeper; }
DeleteBeepInterface(IBeeper*p){ delete p; }
が解りません。
どういう意味でしょうか?


632 :572:03/01/24 22:49
>>572-578と、ちょっとスレ違いな質問をしていた者ですが、
要求は解決したのでこのスレでご報告します。

まず、
>WinASPI32 to SPTI wrapper for WinNT3/4/5
http://f-ts.bias.ne.jp/~azuco/apj/apjf.htm
このASPTI.DLLをWnASPI32.dllにリネームして
http://www.vector.co.jp/soft/win95/hardware/se084939.html
を実行したのですが、loadできないとエラーが出て使えませんでした。

で、いろいろ探していたらhttp://www.runser.jp/softlib.html
「Device Benchmark Test Program」というツールが見つかりました。
cmd.exeで「devtest.exe scsi」と実行すると、
すべてのSCSIディスクが表示されました。
これで要求は満たしているので解決としますが、
ソースも付いているので勉強していきたいと思います。

ありがとうございました。 // SHIORI-1 //

633 :デフォルトの名無しさん:03/01/24 22:51
CBeeperのクラス名やら実装やらをIBeeper利用者に見えなくするのでは?

634 :デフォルトの名無しさん:03/01/24 23:12
626=629=631
(・∀・)ジサクジエーン

635 :デフォルトの名無しさん:03/01/24 23:19
自作自演の使い方を激しく間違っている634萌え

636 :デフォルトの名無しさん:03/01/24 23:48
>>633
そういう意味なんですか。
CreateBeepInterfaceというのはどこから出てきたのですか?

637 :デフォルトの名無しさん:03/01/24 23:51
>>636
"COM"だとか"インターフェースと実装の分離"で調べれ。

それから、スレ違いなのでここでやるのはよせ。

638 :デフォルトの名無しさん:03/01/25 04:03
ウインドウがGetOpenFileNameやGetSaveFileNameで開かれた
ダイアログかどうかを調べたいのですが、
その方法がわからず困っています。

頼みのウインドウクラスは
他のダイアログと同じ#32700なので使えないし...。

何か良い方法はないでしょうか?
よろしくお願いします。

639 :デフォルトの名無しさん:03/01/25 05:15
>>625
誰のバグだよ
どうでもいいがそのハンドル紛らわしいからやめてくれ

640 :デフォルトの名無しさん:03/01/25 05:19
>>638
そのウィンドウに属する子ウィンドウの種類やテキストから強引に……w

641 :575:03/01/25 05:51
なんか、反応が無いもんで昨日は寝ちゃったよ

>>637
COMの話じゃないって

>>636
そんな事聞いてるようじゃどうせ実装できないけど

最初にインスタンスを返すってのはインスタンスのアドレスを返すって意味ね
自分で IBeep って仮想クラスを作って、ソースを公開。
プラグイン作者は IBeep を継承して独自のクラス CBeep を作成。
同時に CreateBeepInterace と言う名前の関数を定義し、その中で CBeep を作成して返す。
君は GetProcAddress 等を使って CreateBeepInterface を呼び出すことでそのオブジェクトのアドレスを受け取る。
型は IBeep* になっているので、 CBeep の実装を知らなくてもその機能を使うことができる。
通常の多態と同じ。
使い終わったら DeleteBeepInterface で削除するのをお忘れなく。

ちなみにここで出てきた名前は全て君が勝手に名前を付けても良い。
> どこから出てきたのですか?
とかそう言うレベルの話じゃない、君が決めていいんだよ。

642 :デフォルトの名無しさん:03/01/25 06:01
>>641
解説するだけ無駄な気がしないでもない

643 :デフォルトの名無しさん:03/01/25 06:03
>>640
やっぱり、それしかないですかぁ。

コモンコントロールがバージョンアップした時が怖いですが、
判定ミスしたとしても致命的な問題になるようなプログラムではないので
その方法でいこうと思います。

どうもありがとうございました。

644 :デフォルトの名無しさん:03/01/25 06:39
>>641
>仮想クラス
C++用語なら抽象クラス
COM用語ではインターフェース

GetProcAddressを使うならCBeepの実装(特定のDLL)に思いっきり依存

>COMの話じゃないって
まあ確かに
COMの話のできそこないだ

645 :644:03/01/25 06:42
>ソースを公開。
ヘッダな
そういう説明が必要な相手は激しく誤解するぞ

646 :デフォルトの名無しさん:03/01/25 06:51
そういう重箱の隅をつつくようなセコい突っ込み、おじさんは嫌いだな

647 :デフォルトの名無しさん:03/01/25 07:09
>>644-645
IBeep のように純粋仮想関数だけで形成されてるクラスならヘッダだけで良いけど
実装を含む場合はソースも公開してやるかlibファイルを作って公開してやる必要があると思うんで、
とりあえずヘッダ、とだけ言うとヘッダだけ公開しそうなんで。

ところで GetProcAddress を使っても CBeep の実装には依存しないと思うけど、
どうなの?
実際そういう風にプラグインにしてるけど今のところ問題ないし。
メインプログラムとプラグインのコンパイラやオプション設定が違う場合どうなるかは知ったこっちゃないけど。

648 :あやや:03/01/25 11:06
なぜステータスバーの色が変わらないのだろうか?

だれか、ソースをください。参考になる。

649 :デフォルトの名無しさん:03/01/25 11:10
汎用的な実装についてはCOMを眺めたほうがいいんじゃない
特定用途ならGetProcAddressで充分だと思うけど

650 :デフォルトの名無しさん:03/01/25 17:09
16進数文字列を数値に変換する関数ってなかったっけか?
普通のCのライブラリにはないようだけど。
あったらスマソ。

651 :デフォルトの名無しさん:03/01/25 17:11
>>650
sscanf(a,"%x",&b);

って感じ?

652 :デフォルトの名無しさん:03/01/25 17:14
>>650
strtol

653 :名無し@沢村:03/01/25 17:17
>>650
sscanf()

さあ、謝れ。

654 :デフォルトの名無しさん:03/01/25 17:22
>>653
二代目沢村として兄者を恥ずかしく思うよ。

655 :650:03/01/25 17:30
ぐぇ、そんな関数あったんだ。
scanf()は知ってたけど、標準入力からだしなぁと思って。
10年戦士なのに、意外なところに穴があるもんだ。
なにはともあれサンクスコ(´・∀・`)

656 :デフォルトの名無しさん:03/01/25 18:09
リストビューで特定の項目のテキストの色を変えたいのですがどうすればよいですか?
ListView_SetTextColorを使ったら全てのテキストの色が変わってしまいました。


657 :デフォルトの名無しさん:03/01/25 19:08
OwnerDraw

658 :デフォルトの名無しさん:03/01/25 21:11
>>646
>ネタ、板とは関係の無い話題はご遠慮ください。
↑↑
もう一度言う
C++用語なら抽象クラス
COM用語ではインターフェース

アフォは来るなという決まりはない
お前が正当性を主張できるのはそこだけだ


>>647
クラス名のプリフィックスをIとCにしながら
Iで始まるクラスに実装を含めるのはWin32では沢村かお前だけ

659 :デフォルトの名無しさん:03/01/25 23:12
リストビューで2番目以降の項目にアイコンを表示するにはどうしたら良いですか?
最初のカラムにしかアイコンが表示されないのですが。

660 :デフォルトの名無しさん:03/01/25 23:30
カスタムドローするよろし

661 :646:03/01/25 23:41
>>658
そういう重箱の隅をつつくようなセコい突っ込み、おじさんは嫌いだな

662 :デフォルトの名無しさん:03/01/25 23:50
>>661
必死だな(藁

663 :デフォルトの名無しさん:03/01/25 23:52
PGにバグを放置する権利はない

664 :663:03/01/25 23:53
名乗るのを忘れた
洩れは662だ

665 :デフォルトの名無しさん:03/01/25 23:57
リストビューのフォーカスの点線を実線にしたり色をつけたりしたいのですが、
どうしたらできるでしょうか。


666 :602:03/01/26 00:14
誰もわからないようだな(汗

667 :デフォルトの名無しさん:03/01/26 00:22
>>665
自分で書く
WM_DRAWITEMとか捕まえられなかったっけ

>>666
666ゲットを機に粘着さんは消えてくださいませ。

668 :デフォルトの名無しさん:03/01/26 00:25
>>666
つーかてめーは、全スレから延々とRebar関係の質問してるだろ。
いい加減にしろよ。

669 :デフォルトの名無しさん:03/01/26 01:15
>>666
誰もわかりません。
ですからもうこないでください。

670 :デフォルトの名無しさん:03/01/26 01:20
>>666は神!
http://news2.2ch.net/test/read.cgi/newsplus/1043111900/600-

671 :602:03/01/26 04:34
何で消えなきゃいけないんだよヴォケども

672 :デフォルトの名無しさん:03/01/26 08:50
   ∧∧     ┌──────────
  ( ´ー`)   < てりめーだヴァカ
   \ <     └───/|──────
    \.\______//
      \       /
       ∪∪ ̄∪∪
教えて君にあるまじき無礼な発言(ex.>>618)
未定義動作の意味を激しく誤解(ex.>>598)
>>623から>>625への痛すぎる言動の変化
マルチやめろって顰蹙を無視した結果と思われ

おまえ沢村並み

673 :デフォルトの名無しさん:03/01/26 09:10
むしろ沢村のほうがマシに思える

674 :デフォルトの名無しさん:03/01/26 11:12
なんかこのバカ、ずっと同じ質問繰り返してないか?
コテハン変えて何度も質問したり。
最初はまともな態度だったから許容してたが、最近態度がでかくなってきた。

675 :デフォルトの名無しさん:03/01/26 11:32
本当にmanifest確認したのかなぁ
よし6.0.0.0 Ok!とかいってそうだ


676 :デフォルトの名無しさん:03/01/26 11:39
>>674
このスレの>>53あたりからずっとこいつだな。
最初から舐めた態度だが。>>55とかな。

677 :デフォルトの名無しさん:03/01/26 13:12
整数演算関係のAPI関数って

Int32xTo64
Int64ShllMod32
Int64ShraMod32
Int64ShrlMod32
MulDiv
UInt32x32To64

以外に無いですか???
知っていたら教えて欲しいでごわすの東北人。

678 :名無し@沢村:03/01/26 14:13
>>677
MSDNを見れば分かる話だから、教えてあげないよ。ヌヒよ。

679 :デフォルトの名無しさん:03/01/26 14:19
>>677
APIはMulDiv(KERNEL32)のみ
他はマクロ


680 :デフォルトの名無しさん:03/01/26 17:02
ドライブ文字の割り当てられていないCD-ROMで
メディアの入れ替えを検出するにはどのように
すればよいのでしょうか?

よろしくお願いします。

681 :デフォルトの名無しさん:03/01/26 20:30
>>641
typedef CFormat * __stdcall GetData();
HINSTANCE hDllInstance = ::LoadLibrary("dl.dll");
if (hDllInstance != NULL) {
GetData *gsf = (GetData*)::GetProcAddress(hDllInstance, "GetData");
if (gsf != NULL) {
CFormat *cfs;
cfs = gsf();
}
FreeLibrary(hDllInstance);
}
//////////////////
extern "C" __declspec(dllexport) CFormat* __stdcall GetData()
{
return new CApp;
}

このようになったのですが、いざGetProcAddressに入るとエラーが出ます。
どうすればよいのでしょう?


682 :デフォルトの名無しさん:03/01/26 21:15
>>681
エラーメッセージくらい書いてください。

683 :デフォルトの名無しさん:03/01/26 22:43
>>681
> GetData *gsf = (GetData*)::GetProcAddress(hDllInstance, "GetData");
おいおい…

GetProcAddress() が返すのは「GetData 関数へのポインタ」だろ。GetData を
実行した結果じゃなくて。

684 :デフォルトの名無しさん:03/01/26 22:48
GetData gsf = (GetData)::GetProcAddress(hDllInstance, "GetData");

こうじゃないの?

685 :デフォルトの名無しさん:03/01/26 22:49
> typedef CFormat * __stdcall GetData();

こんなんだっけ?

686 :デフォルトの名無しさん:03/01/26 22:53
>>683
GetProcAddress() が返すのは「GetData 関数へのポインタ」だろ。GetData を
実行した結果じゃなくて。
GetProcAddress() が返すのは「GetData 関数へのポインタ」だろ。GetData を
実行した結果じゃなくて。
GetProcAddress() が返すのは「GetData 関数へのポインタ」だろ。GetData を
実行した結果じゃなくて。
GetProcAddress() が返すのは「GetData 関数へのポインタ」だろ。GetData を
実行した結果じゃなくて。
GetProcAddress() が返すのは「GetData 関数へのポインタ」だろ。GetData を
実行した結果じゃなくて。
GetProcAddress() が返すのは「GetData 関数へのポインタ」だろ。GetData を
実行した結果じゃなくて。
GetProcAddress() が返すのは「GetData 関数へのポインタ」だろ。GetData を
実行した結果じゃなくて。
GetProcAddress() が返すのは「GetData 関数へのポインタ」だろ。GetData を
実行した結果じゃなくて。
GetProcAddress() が返すのは「GetData 関数へのポインタ」だろ。GetData を
実行した結果じゃなくて。
GetProcAddress() が返すのは「GetData 関数へのポインタ」だろ。GetData を
実行した結果じゃなくて。


687 :デフォルトの名無しさん:03/01/26 23:08
>>683
痛すぎ(激藁

688 :デフォルトの名無しさん:03/01/26 23:12
>>685
関数ポインタへの typedef にしたいなら、括弧の位置が違うような。

typedef CFormat (*__stdcall GetData)();

689 :688:03/01/26 23:17
* 一個抜けてた。

typedef CFormat* (*__stdcall GetData)();

690 :デフォルトの名無しさん:03/01/26 23:17
そうだよねえ

691 :デフォルトの名無しさん:03/01/26 23:27
こーでねえ?
typedef CFormat * ((__stdcall *)GetData)()

692 :デフォルトの名無しさん:03/01/26 23:28
最近 win32api の勉強を始めた者です。
WinMain の中の変数etc.を
ウィンドウプロシジャに引き渡すには
外部変数にするしかないんでしょうか?
消防質問ですみません。



693 :デフォルトの名無しさん:03/01/26 23:32
>>692
ヒープ上に領域を確保した上で、その領域へのポインタを SetWindowLong()
するとか。

694 :デフォルトの名無しさん:03/01/26 23:38
>>693
ありがとうございます。
SetWindowLong()とか知らないので調べに
逝ってきます。

695 :デフォルトの名無しさん:03/01/26 23:38
>>641
昨日の話に反応するけど
> 使い終わったら DeleteBeepInterface で削除するのをお忘れなく。
これ、仮想デストラクタでよろしく済ませるってのは無しなん?

696 :デフォルトの名無しさん:03/01/26 23:44
COMを知らない奴はこれだから・・・

697 :デフォルトの名無しさん:03/01/26 23:46
>>696
具体的な問題点か、情報へのポインタぷりーず。

俺は COM で Detele* 用意しているのは、単に C からも呼び出せるようにするため
かと思ってた。

698 :デフォルトの名無しさん:03/01/26 23:48
>>695
よろしく済ませるならスマートポインタでは?

699 :デフォルトの名無しさん:03/01/26 23:52
>>698
いや、そういう話では…

700 :デフォルトの名無しさん:03/01/26 23:54
>697
DLL(plugin)のnew,deleteと
本体のnew,deleteが同じという保証がない。
DLLでnewするなら、DLLでdeleteしないと死亡の恐れがある

701 :デフォルトの名無しさん:03/01/26 23:54
Create/Deleteを明示的によぶことで、
実装側で実体をnewで確保しようがmallocで確保しようが、
グローバル変数領域に自前で確保していようが、
利用側には影響しない。

もっと具体的にいうと、
実装側と利用側がVC++を使っていたとして、
コンパイルオプションが、片方はLIBC使用、他方はMSVCRT使用
だとしても、問題が起こらない。
通常はこれらをまたいでヒープをやり取りすると、おかしくなる。

702 :695:03/01/26 23:58
>>700
納得。

703 :デフォルトの名無しさん:03/01/27 00:19
684以降のレスはなに?
602氏の方がはるかにマシに見えるのだが


704 :デフォルトの名無しさん:03/01/27 00:22
気にせず、サクッと黙殺しとけ。どうせ害はない。

705 :684=685:03/01/27 00:50
>>703
漏れが何かまずい事を書いたか?

706 :デフォルトの名無しさん:03/01/27 20:21
ちょっとお尋ね申し上げますが、
Acrobat SDK を SDK だけで使う例とかを
紹介しているサイトってないでしょうか?

てゆーかスレタイの Win32API って !MFC って意味だよね?
それともやっぱスレ違い?

707 :デフォルトの名無しさん:03/01/27 20:34
一応VCとは限らんと言っておく<Win32API

708 :デフォルトの名無しさん:03/01/27 21:07
SendMessageCallbackって、他のスレッドからだと動かなかったりします?
ドキュメント見ると問題なさげではあるのですが、現に動かない…
Win2kです。

709 :デフォルトの名無しさん:03/01/27 21:19
>>707
MFC=VCか。おめでてぇな。と釣り糸を垂らしてみる。

710 :デフォルトの名無しさん:03/01/27 21:20
>>708
あなたのクソコードに問題があるのでは?見せてみて。

711 :579:03/01/27 22:50
自作アプリをいろいろいじってみた結果
ウィンドウからツールバーを外したらなぜかステータスバーの色が
変わらなくなった。ツールバーを付けたらまた変わるようになった。
いくらステータスバーだけのサンプルをいじくっても分からないわけだ

712 :デフォルトの名無しさん:03/01/27 22:57
>>711
602か?
XPではCOLOR_BTNFACEではなくCOLOR_MENUBARのほうに影響されるのかも


713 :579:03/01/27 23:05
>>712
別人。Win95だとWM_SYSCOLORCHANGEを転送してやる
必要があったけどXPでは関係なさげ。確かにバグっぽいなこれ

714 :デフォルトの名無しさん:03/01/28 00:07
是非 MS にバグレポート出してくれ。

715 :デフォルトの名無しさん:03/01/28 00:46
てすと

716 :708:03/01/28 00:48
procedure Callback(Wnd: HWND; Msg: UINT; Data: Pointer; Result: LRESULT); stdcall;
begin
 //何かする
end;

procedure TXXX.METHOD;
begin
 SendMessageCallback(Handle, WM_APP, 0, 0, @Callback, 0);
end;

こんな感じです。
OutputDebugString入れても、他のスレッドから呼んだ時だけCallbackに来てない。
単に、そのままやりたいことをするとデッドロックするので、PostMessage的に使ってるだけなんですが。
(素直にPostMessage使わない理由はSendMessageCallbackだと相手のウィンドウ関数を書き換えずに済むから)

717 :デフォルトの名無しさん:03/01/28 00:53
ぎゃっはっははははははははっはあはっはあはっははははははははっはあはっはあ
はっははははははははっはあはっはあはっははははははははっはあはっはあはっははははははははっはあはっは
はははははっはははhはっははははははははっはあはっはあははははっはははははあはh
はははっはっははっははははははははっはあはっはあはははははははあははは

718 :デフォルトの名無しさん:03/01/28 00:55
>>716
http://www.microsoft.com/JAPAN/developer/library/jpuipf/_win32_sendmessagecallback.htm
SendMessageCallback 関数を呼び出したスレッドが、GetMessage、PeekMessage、WaitMessage
のいずれかの関数を呼び出した場合にのみ、このコールバック関数が呼び出されます。

とあるが。

719 :デフォルトの名無しさん:03/01/28 01:00
SetTimerしてるのにタイマコールバックが呼ばれません

DispatchMessageしていますか?
系の罠か。
本当にプリエンプトしてほしいなら素直にスレッド作れ。

720 :708:03/01/28 01:04
がーん…使えねえ…。
718さんありがとう。英語ドキュメントを斜め読みしただけでした。読めてなかった。シクシク。

721 :デフォルトの名無しさん:03/01/28 01:07
まぁ、普通に考えて同一スレッドで非同期にコールバック関数が呼ばれるタイミングって
Windows側に制御が渡ってる状況しかないんだから、当然といえば当然なんだが。

722 :デフォルトの名無しさん:03/01/28 01:09
ちょっと勉強してみたいんだけど、どっかに
VC++ か BCC 用の ping のソース落ちてないかな?

723 :名無し@沢村:03/01/28 01:14
>>722
ヌヒよ、たぶん落ちてるんじゃないか。

724 :デフォルトの名無しさん:03/01/28 01:18
VCかSDKのサンプルの中にpingなかったけ。

725 :デフォルトの名無しさん:03/01/28 01:23
「ICMP.DLL サンプル」とかやるとわらわら出てくるな。

726 :デフォルトの名無しさん:03/01/28 01:29
>>722
サンプル: Raw ソケット版 ping
tp://www.kt.rim.or.jp/~ksk/wskfaq-ja/examples/rawping.html

727 :722:03/01/28 01:49
>>725
>>726
大変いいヒントいただきました。どうもありがとうございました。

728 :602:03/01/28 12:57
皆さん、お久しぶりです。
余り質問をしすぎて、迷惑をおかけしまして、すいませんでした。
というより、Rebar関係は、バージョンアップの激しい部分ですので、何か不具合が多いのですよ。
苦労しています。

では、いろいろと質問をきいてくれて、ありがとうっす。


あと、
「「「671 名前:602 投稿日:2003/01/26(日) 04:34
何で消えなきゃいけないんだよヴォケども」」」

これは、私の書き込みではないですよ。
偽者ですか、ID制を導入してみてはどうですか?

729 :デフォルトの名無しさん:03/01/28 13:13
何でてめえなんかの為にID制を導入しなきゃいけないんだよヴォケ

730 :デフォルトの名無しさん:03/01/28 14:00
>>728
たのむからもう来ないでくれ。
あと、貴様ごときにID導入するほど価値はない。

731 :名無し@沢村:03/01/28 19:07
>>728
ヌヒよ、キャップを付けなさい。

732 :602:03/01/28 20:21
あれ?怒ってるなww

何か悪いことをしたとは思えないが。
荒らしたわけでもない。
ただ質問をしただけなのにこの態度。
だから、プログラム板っていつも人が少ないんだよw。

プログラムをする奴は基本的に閉鎖的な人が多いからね。
自分の世界以外の者が入ると、追い出すんだよ。
内向的、いや内弁慶、いやいやネット弁慶と表現したほうがいいかも。

要するに、
自分のわかる質問→大歓迎
わからない質問→追放

私みたいなプログラム初心者もいるのですから。初めて日が浅いのですよ。

733 :デフォルトの名無しさん:03/01/28 20:30
怒ってるのはID導入のことについてだろ。
基本的な読解力ないから嫌われるんだよ。

734 :602:03/01/28 20:35
ただ、プログラミングは面白いですね。
初めて2ヶ月目なので、これからどんどん勉強していこうと思います。

あと、>>729さんと、>>730さんは、ひどいことを言いますね。
なにも悪いことをしてないのに。
しかも、午後2時前後の書き込みですか。
お仕事はしてないのですか?

735 :デフォルトの名無しさん:03/01/28 20:38
>>732
君はプログラミングの勉強の前に、まず質問の仕方から覚えるといい。

736 :602:03/01/28 20:41
貴様ごときにID導入するほど価値はない。

貴様ごときってw
この発言が、「怒ってるのはID導入のことについてだろ。」だとは思わないな。

うーん、こんなにガラの悪い人が多いとは・・・。
がっかりですね。
まぁ、プログラムをする人でも、性格の悪い人は山ほどいるでしょうけどねw

737 :602:03/01/28 20:43
ああ、なるほど。
「わかる人がいないみたいだな。」というのが、貴方達のプライドに傷がついたわけですね。

これのほかに、失礼な書き込みはしてないですよ。
これぐらいで怒るようでは、まともな社会生活はできないと思いますが。

738 :602:03/01/28 20:44
時間がないので寝よ。
どっちにしろ、Win2000で開発を再開したので問題なく進んでいます。

739 :デフォルトの名無しさん:03/01/28 20:44
>>728
671 で困ってる人はあんた以外に一人も居ないよ。
あんたの心証だけで何でいきなり ID 導入という話になるの?

>>732
実際に荒れてるんだから、つもりはどうであろうとあんたは荒らしだよ。
ちょっと聞きたいんだけど、そういう発言をすることによって、何を達成したいの?
どういう目的があるの?
ここはグチ垂れるスレじゃないよ。

大体、わからない質問にどう答えろと言うんだ?
みんなで調べろって?
プログラム初心者だから優遇しろって?
初めて日が浅いから多少の無礼は勘弁しろって?

ふざけるな、ここは無料サポートセンターじゃないぞ。
いろんな人の好意と余暇で成り立っているコミュニティだ。
その人達にそっぽを向かせるようなレスを繰り返しておきながら、自分の要求だけは
押しつけるのか?
それが、人にものを頼む態度か?

ここから追い出されようとしてるのは、あんたが 「自分の世界以外の者」 だから
ではなく、あんた自身が人間的に問題あるからだと気付け。


↑ で、自分で言うのもなんだけど、どこを縦読みすればいいんだ?

740 :デフォルトの名無しさん:03/01/28 20:45


愚民ども、しずまれぇ〜


741 :602:03/01/28 20:47
>>739
ああ、勘違いしてますね。
ただ、わかる人がいるのかな?と聞いただけです。
わからないのなら、それでもかまわないのですから。

それを、いきなり「自分で調べろ!」だとか、わかっている内容を「MSDNを見ろよ」とか、なにか攻撃的ですね。
まぁ、どうでもいいですけど。
問題は自分で解決しましたので。

742 :デフォルトの名無しさん:03/01/28 20:49
602 の中の人も可哀想だな。

743 :デフォルトの名無しさん:03/01/28 20:50
>>741
あぁあぁ。消えろ。もうここにいる用は無いだろ。
もう二度とくんな。2ちゃんねるから出て行け。

744 :デフォルトの名無しさん:03/01/28 20:50
>>741
もう一度聞くけど、そういう発言をすることによって、何を達成したいの?
どういう目的があるの?

745 :602:03/01/28 20:50
プ

746 :デフォルトの名無しさん:03/01/28 20:51
>>744
もうどうでもいいだろ。粘着だな。お前。

747 :デフォルトの名無しさん:03/01/28 20:53
何? 祭り? ワショーイ

748 :デフォルトの名無しさん:03/01/28 20:53
ここは一つ、沢村さんに鎮めてもらおうじゃないか

749 :デフォルトの名無しさん:03/01/28 20:54
>>1
> Win32 Application *Programmer* Interface
APIはapplication programming interfaceのことですよ(藁

750 :デフォルトの名無しさん:03/01/28 20:55
>>747
あおんな。氏ね。

192 KB
■ このスレッドは過去ログ倉庫に格納されています

★スマホ版★ 掲示板に戻る 全部 前100 次100 最新50

read.cgi ver 05.04.00 2017/10/04 Walang Kapalit ★
FOX ★ DSO(Dynamic Shared Object)