トップページ⇒tech
1001コメント311KB

Win32API 質問箱 Build8

レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさんNGNG
スレ立てるまでもない、
   Win32 Application *Programmer* Interface
についての質問はこちらへどうぞ。
やさしいお兄さんたちが答えてくれるかも。
でも、質問する前に検索ぐらいしる!!

過去スレ・参考 >>2-5
0002デフォルトの名無しさんNGNG
過去スレ
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
00031NGNG
>>1
乙ー
0004かおりん祭 ◇VqKAORinK6NGNG
   ∋oノハヽo∈ / ̄ ̄ ̄ ̄ ̄ ̄ ̄
     从o゚ー゚从< 新スレおめでとうございま−す♪
   = ⊂   )   \_______
   = (__/"(__) トテテテ
0005デフォルトの名無しさんNGNG
>>1 >>4
乙CurrySummer(w
0006デフォルトの名無しさんNGNG
沢村は出入り禁止だ!!
0007デフォルトの名無しさんNGNG
スタートメニューとかお気に入りの項目って
右クリックしたときと左クリックしたときで挙動が違うよね。
あれをやりたいんだけど

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

どうしたらいい?


0008デフォルトの名無しさんNGNG
age
0009デフォルトの名無しさんNGNG
>>7
ここだけの話、奴らはメニューのフリをした独自ウィンドウなんだ。
ナイショダヨ
0010デフォルトの名無しさんNGNG
>>9

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

サンプルはどっかにありませんか?
0011デフォルトの名無しさんNGNG
>>7
WM_COMMANDとWM_CONTEXTMENUを処理してやれば?
0012デフォルトの名無しさんNGNG
>7
> メニューのフリをした独自ウィンドウ
なんだが、不完全に似たことをするなら
> TPM_LEFTBUTTON | TPM_RIGHTBUTTON
から TPM_RIGHTBUTTON を外して
かわりに WM_MENURBUTTONUP を処理する。
0013デフォルトの名無しさんNGNG
スタートメニューは隠れAPIがあるんじゃ。
0014タスクバーのリサイズ方法NGNG
タスクバーのハンドルをFindWindowで取得して
MoveWindowでリサイズしようとしても出来ませんでした。

どなたかご教授いただけないでしょうか。
0015タスクバーのリサイズ方法NGNG
追伸:
タスクバーのスタートボタンなどはMoveWindowsでウィンドウサイズを
変更できるんです。
なぜタスクバーだけうまくいかないんでしょうか・・・。
0016デフォルトの名無しさんNGNG
携帯からだけど
ソースあげてみ

ハンドル取得するところと、ウィンドウサイズ変えるところ
0017デフォルトの名無しさんNGNG
> 携帯からだけど

わざわざ・・・
0018タスクバーのリサイズ方法NGNG
HWND hTaskbar = FindWindowEx(NULL, NULL, "Shell_TrayWnd", "");
MoveWindow(hTaskbar, x, y, cx, cy, TRUE);

携帯からとは・・・。
筋金入りの2ちゃんねらーですな。
よろしくお願いします。
0019gn355my0NGNG
んで hTaskbar の中身は確認したのか?
0020タスクバーのリサイズ方法NGNG
タスクバーのハンドルをFindWindowで取得して
MoveWindowでリサイズしようとしても出来ませんでした。

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

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

HWND hTaskbar = FindWindowEx(NULL, NULL, "Shell_TrayWnd", "");
MoveWindow(hTaskbar, x, y, cx, cy, TRUE);
0021デフォルトの名無しさんNGNG
実際 MoveWindow でリサイズできないウィンドウってのは作れるわけだし
ウィンドウのサイズの変更はウィンドウ側で制御できるんだから
タスクバーがそのようにしているんでないの?
002220NGNG
> 実際 MoveWindow でリサイズできないウィンドウってのは作れるわけだし
それは知りませんでした。
つまり無理だということですか・・・。
もうちょっと足掻いて駄目だったら諦めます・・・。
0023名無し@沢村NGNG
>>20
無理じゃないよ。実際windowsのタスクバーはリサイズできるわけだし…。
もっと研究してごらん?
0024デフォルトの名無しさんNGNG
さっき携帯から書いた筋金入り(重症の方が的確だな)だけど、出来た。
SetWindowPos(hTaskbar,NULL,100,100,500,500,SWP_NOZORDER|SWP_NOSENDCHANGING);

なんでこんな事をしたいのかはしらないが
0025デフォルトの名無しさんNGNG
名無し@沢村は無視で。
プログラミングしたこともないのにあれこれ突っ込むヒキコモリです。
0026デフォルトの名無しさんNGNG
メニューをフローティングツールバーのように移動できるようにする方法ないですか?
一応、猫で分かる〜のサイトは見たのですが、あれと違うアプローチの仕方ってないでしょうか?
0027デフォルトの名無しさんNGNG
>>26
C+APIでだったら地道に実装するしかないかと。

というか質問の意味を質問させて欲しい。
メニューをフローティングツールバーのように移動、というのを
もうすこし具体的に頼みます
002820NGNG
>>24
おおおっ!!
ありがとうございます。早速試させて頂きます。
実は横長画面のノートでタスクバーを横においてるんですが
なぜかシャットダウンのたびにタスクバーの幅が短くなってしまって
対策プログラムを作ろうと思ってたんです。
002926NGNG
>>27
メニューバーを、レバーコントロールみたいに、ドラッグしながら移動可能にしたいんですよ。
メニューバーってのは、文字だけの「ファイル(F) 編集(E)・・・」とかいうあれです。
0030デフォルトの名無しさんNGNG
>>29
環境は?C+APIですか?なら自分で実装するしかないです。
猫、のアプローチってどんな方法?
003126NGNG
>>30
C+Win32APIです。

猫でも分かる〜はhttp://www.kumei.ne.jp/c_lang/sdk4/sdk_311.htm
ここから説明されてるんですけど、かなり実装が面倒っぽいので
もっとスマートな方法があるんじゃないかと思って。
0032デフォルトの名無しさんNGNG
文字を表示させる関数(TextOutとか)はどれが一番使いやすいのですか?
0033デフォルトの名無しさんNGNG
>>31
いや〜面倒だと思うよ。MFCを使えばある程度簡単に実装できるだろうと思うけれど。
俺の直感では、やはりRebarを使ってなんとかやろうと思うだろうけど、
それだと猫氏のページと同じ方法だし、もしかしたら1から作る方が楽かもしれない。

シェブロンを出さなくていい&フローティング無しならば、wtlを使う方法があるが・・・
これは激簡単だけれど、ATL(C++)のかなりの理解が必要となるから、自信があるなら紹介します。
0034デフォルトの名無しさんNGNG
>>32
場合によりけりです。俺は何も考えずに表示するだけでよければ迷わずMessageBoxです。
0035名無し@沢村NGNG
>>34
俺はMessageBoxをデバッグに使ってるね。
自作のDebug関数の中に入れて、どんな型の引数でも表示できるようにオーバーロードしてるよ。
003626NGNG
>>33
やっぱり面倒ですか。
IEとかその他のアプリでも当たり前のように使われてるので
そういうAPIがあると期待してたのですが。
ATLやWTLは、今回は使いたくないので、なんとかAPIでやってみます。
ありがとうございました。
003734NGNG
>>35
あなたのことは聞いてません。
0038デフォルトの名無しさんNGNG
>>36
ちなみにRebarを使う方法はIEの存在が前提になると思います。多分。
0039デフォルトの名無しさんNGNG
>>37
かまうなって、喜ぶから。
0040デフォルトの名無しさんNGNG
物理メモリのみを確保したいんですが、どうすればいいのでしょうか?
0041デフォルトの名無しさんNGNG
>>40
VirtualLockを使えばできます。これ以上の説明も必要?
0042デフォルトの名無しさんNGNG
MSDNちょっとみてきます。
できればもうちょっと説明していただけるとうれしいです。
0043ルート大芝NGNG
Win98で、C:\にあるファイルとフォルダのパスを列挙する
プログラムを作りたいんだけど、MSDNのFindFirstFileの説明で

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

って書いてあるけど、FindFirstFile("C:\\*", &f);は
FindFirstFileが失敗します。どうしたらいいの?
0044ルート大芝NGNG
すまんこ、FindFirstFile("C:\\*", &f);は失敗しませんでした。
0045デフォルトの名無しさんNGNG
>>42
説明はいいんだけれど、解らないことを具体的に聞いてね。
解りづらい部分だと思うから、解らないところを絞ってほしい。
0046デフォルトの名無しさんNGNG
メモリーはnewでしか確保したことなくてnew以外のWinのメモリ確保の
仕方すらまだわかってません。
で、ちょっとさがしたらVirtualAllocを使ってVirtualLockでスワップ不可にして
物理メモリに確保でよろしいのでしょうか?
0047デフォルトの名無しさんNGNG
>>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"クォータが不足しているため、要求されたサービスを完了できません。"
になる。
0048デフォルトの名無しさんNGNG
>>47
丁寧にサンプルまでつけていただきどうもです。
ここまでしていただければよくわかります。
フリーな物理メモリは取れるようですから、
それを見た上で適量を確保すればいいっぽいですね。
OS入れなおしたばっかなんで今はできないですが、晩にでもやって報告に来ます。

ファイル解析で時間かかるんで、物理メモリのみの確保だとかなり速くなるんで楽しみです。
0049デフォルトの名無しさんNGNG
CDの挿入を検出し, かつautorunの実行の可否をプログラムから制御するには
どうしたらよいのでしょうか。
何かメッセージが飛んでくるとかいうのをどこかで読んだ気がするんですが。
0050デフォルトの名無しさんNGNG
>>49
俺が知っているのはレジストリのNoDriveTypeAutoRunだけだが…
そんなメッセージがあるのかな?
0051デフォルトの名無しさんNGNG
>>49
捕まえるとしたら
WM_DEVICECHANGE
DBT_DEVICEARRIVAL
あたりかな?
005249NGNG
IQueryCancelAutoPlayで制御できるみたいです。XP限定ですが。
0053質問NGNG
ReBarコントロールで、XPライクなLUNAインターフェースを実現するには、どうすればいいですか?

自分で勉強をしようと思いますので、マイクロソフトのMSDN内に、LUNAインターフェースに関する技術文書はありますか?
0054デフォルトの名無しさんNGNG
検索すればいいじゃん。
0055質問NGNG
>>54
そうか・・・。
あまり詳しい人はいないのか。
0056デフォルトの名無しさんNGNG
>>55
文献探しも勉強のウチ・・・
0057デフォルトの名無しさんNGNG
>>53
LUNAインターフェースとはなんぞや?
0058デフォルトの名無しさんNGNG
>>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
0059デフォルトの名無しさん NGNG
SetStretchBltModeのHALHTONEの原理はどうなっているの?
色の平均化とかSDKには書いていたけど、どんなふうに平均化しているの?

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




0060デフォルトの名無しさんNGNG
>>59
激しく意味不明
0061デフォルトの名無しさんNGNG
>>60
ちったぁオツム使えや。
0062デフォルトの名無しさんNGNG
>>60
いや、だからさぁ、これを使った後に、StretchBltを使って拡大縮小する場合、
ビットマップが比較的に汚くならないでしょ?

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

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




0063デフォルトの名無しさんNGNG
>>62
詳しく説明してくれてthx。最初HALHTONEで検索してて意味不明だった(恥
世の中に、それに関してどんな処理があるのかすら解らないです。スマソ。
ここで解決しなければ、ゲーム制作技術板に行くと詳しい人がいるかもしれません。
0064デフォルトの名無しさんNGNG
>>59
↑ペゾルドを読んだことがこいつの自慢らしい。
0065デフォルトの名無しさんNGNG
>>64
その程度は調べた、という風に解釈してやろうじゃないか。煽りは別板で
0066デフォルトの名無しさんNGNG
StretchBltで具体的にどう補間されるかってビデオカード次第だった気もするが。
いまだとテクスチャの補間と一緒にバイリニアとかトライリニアとかでやってんじゃない?
0067デフォルトの名無しさんNGNG
>>66
そういえば、GetDeviceCapsにRC_STRETCHBLTという項目があるしね。
0068質問NGNG
今、猫さんのホームページを見ながらWin32APIの勉強をしています。
http://www.kumei.ne.jp/c_lang/

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

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

どこにプラットフォームSDKがあるかご存知の方はいませんか?
このままではプログラム開発が進まなくて困ってます。
0069デフォルトの名無しさんNGNG
>>68
http://www.microsoft.com/msdownload/platformsdk/sdkupdate/
0070デフォルトの名無しさんNGNG
Win32APIのみでフレームウィンドウを使うにはどうすればいいの?
既出だったらごめん。(というか、多分既出)
0071デフォルトの名無しさんNGNG
そんぐらい検索すれ
0072質問NGNG
>>69
ありました。CoreSDKをダウンロードしてますが・・・

・・・これを見て、ウツになりました。
「Download size: 176.9 MB」
0073デフォルトの名無しさんNGNG
>>72
MSDNに付いてくるからなぁ。
MSに連絡すると、多分郵便で送って貰えるとは思うけど
0074デフォルトの名無しさんNGNG
>>70
1を読め。猫に行け。
007559NGNG
意見くれた方、ありがとうございます。

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

0076デフォルトの名無しさんNGNG
 Sendinput関数をつかって他のアプリにキー送信をしたいのですが、いい例が見つかりませ
ん。keybd_event関数は使えるのですが、マイクロソフトを閲覧するとSendinput推奨とあった
ものですから。よいものがありましたらお示しください。
0077デフォルトの名無しさんNGNG
SendInputとはまたマイナーなAPIを。
これって、一連の入力を記録する部分は自分で作らなきゃ駄目ですよね?>どなたか詳しい人

>>76
他のアプリにキー送信をしたいだけなら、sendMessageでWM_KEYDOWN等を送ればいいのでは?
SendInputでは特定のアプリに送るのには甚だしく適していません。any questions?
007876NGNG
>>77
 マイナーなんですか? 検索してもなかなか出てこない理由が分かりました。
keybd_eventを使っていたのはALT+Ctrl+○○もできるためだったのですが、
マイクロソフトのサイトで調べているとSendinput推奨とあったものですから。
sendinputだとキー入力の割り込みが発生しない等のメリットがあるようですね。
引き続きよろしくお願いします。
0079デフォルトの名無しさんNGNG
> 推奨

必須ではない。
0080質問NGNG
今、猫さんのホームページを見ながら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#を買ったほうがいいのでしょうか?

0081デフォルトの名無しさんNGNG
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
0082名無し@沢村NGNG
>>80
C#でやろうとすると、勉強し直しだよ。
0083質問NGNG
>>81
なるほど。私のVisualC++6に入っているcommctrl.hには、その2つ「BTNS_AUTOSIZE・I_IMAGENONE 」がないですね。
新しいcommctrl.hを入れないと駄目と言うことですね。

探してみます。
(てか、猫さんのHPの言うとおり、SDKをインストールしたんだけどなぁ・・・)
0084質問NGNG
>>82
C++.NETと言う商品があったのですね。
てか、C/C++/C#が同梱されているかと思って。
0085デフォルトの名無しさんNGNG
>>84
Comctl32.dllが5.81以降なら
#define BTNS_AUTOSIZE 0x0010
#define I_IMAGENONE (-2)
を自分で定義する。

ソースの頭の方にでも書いておく。
0086質問NGNG
新しいcommctrl.hが見つかりました。

E:\Microsoft SDK\include\CommCtrl.h

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

初心者ですいませんでした。
0087質問NGNG
ははは(笑い)

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

これで、XPライクなインターフェース開発が進みます。
ありがとうございました。みなさま。
0088デフォルトの名無しさんNGNG
>>87
インクルードファイルの参照先を変更and/or追加するのが、普通だと思われ。
0089デフォルトの名無しさんNGNG
俺はVC6でSDKをインストールしたら自動的にパスが追加されたけどな。
0090質問NGNG
>>89
たぶん、VisualStudioのインストール先ディスクパスが「C:\Program Files」でないと駄目なのでは?
私は、Eドライブに重要なアプリを入れているので。
0091デフォルトの名無しさんNGNG
>>90
C ドライブに空き容量が少ないとか、整理のためとか、そういう理由ならわかる
けど、「重要なアプリを」 という分け方に意味はあるのか?
いずれにせよ OS があぼーんしたら再インストールする羽目になるのに。
0092デフォルトの名無しさんNGNG
スクリーンセーバーを以下のようにして起動しています。

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

ただ、これですと、2000/NTでパスワードによる保護にチェックされていても
パスワード入力のダイアログが表示されず、そのまま操作可能な状態に戻ってしまいます。
何か他に良い方法はないでしょうか?
0093デフォルトの名無しさんNGNG
>>90
自動的じゃなくてスタートメニューに追加される
Register PSDK Directories with Visual Studio
を実行したらだった。たぶん。
0094デフォルトの名無しさんNGNG
_beginthread使おうと思って、libcmt.libとmsvcrt.libをリンクし
#include <process.h>して、プロジェクトの設定でも
マルチスレッドにしたのですが

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

とエラーが出てしまいます。
何か解決法はありませんか?
0095デフォルトの名無しさんNGNG
>>94
プロジェクトの設定が間違っているんだろう。
DebugとRelease両方とも変えた?
0096デフォルトの名無しさんNGNG
>libcmt.libとmsvcrt.libをリンクし
激しく矛盾の悪寒・・・
0097質問NGNG
コモンコントロールに関する情報が少なくてこまってます。
本屋にも行ったのですが、まったく関連する本がないですね。

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

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

できれば、位置情報の設定、そしてウィンドウを閉じる前にそのREBARの位置情報を保存し、再びウィンドウを開くときには、その保存された位置情報を元に、再現するアプリケーションにしたいです。
どうすればいいのでしょうか?
0098デフォルトの名無しさんNGNG
ToolTipを意図的に表示したいのですがどうやればいいのでしょうか?
WindowsXPとか、タスクトレイに表示されたりするから(ハードウェアの取り外しとかのメッセージ)
できるとは思うのですが解りません。
0099デフォルトの名無しさんNGNG
>>97
普通に出来ると思ったんだが。

>>98
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/shellcc/platform/commctls/tooltip/usingtooltips.asp
010098NGNG
>>99
みたけどどれだかわかんないです。。
TTM_TRACKACTIVATEあたり???
0101デフォルトの名無しさんNGNG
おまえら今日ぐらいはやさしく教えてやれよ
0102デフォルトの名無しさんNGNG
くれよ、だろ プ
0103デフォルトの名無しさんNGNG
>>102
あなたのような人でも幸せになる権利を持っています。
来年があなたにとってよい年でありますように。
0104デフォルトの名無しさんNGNG
うふっ、なんだも聞いてね。
0105デフォルトの名無しさんNGNG
>>100
あのページを読んで解らないならもうどうしようもない。諦めろ
010698NGNG
表示はされるようになりました。
Tooltipじゃなくて、個々のオブジェクトにTTM_TRACKACTIVATEを送ってしまっていました。
ところが表示されたのはよいのですが自動的に消えてくれないのです。
表示されっぱなし。
自分で消す処理を入れるしかないのでしょうか?
0107デフォルトの名無しさんNGNG
◆◇◆◇◆最新情報◆◇◆◇◆
http://yahooo.s2.x-beat.com/linkvp/linkvp.html
0108デフォルトの名無しさんNGNG
フレームウィンドウの大きさを
クライアント領域があるサイズになるように、
設定したいんだがどうすればいい?
GetClientRectはあるが、SetClientRectはない
0109デフォルトの名無しさんNGNG
自分で取得するしかない。
0110デフォルトの名無しさんNGNG
>>108
(GetWindowRect - GetClientRect) + (設定したいRect)

で逝ける。
0111bloomNGNG


http://www.agemasukudasai.com/bloom/
0112gn355my0NGNG
AdjustWindowRectEx() じゃダメなんだっけ?
0113デフォルトの名無しさんNGNG
メニューが折り返すとだめぽ
0114デフォルトの名無しさんNGNG
>>113
それは110の方法を使っても駄目なんじゃないかな?

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

というか110の方法は思いつかなかった。いつもGetSystemMetrics使ってたよ。thx>110
0115デフォルトの名無しさんNGNG
どっかのスレの過去ログでそれぞれの方法の長短について
議論してたような
0116デフォルトの名無しさんNGNG
>>115
GetSystemMetricsと、GetWindowRect-GetClientRectの話?
0117斉藤NGNG
質問

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

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

デフォルトでは、一列に、複数のrebarが表示される形になります。
0118デフォルトの名無しさんNGNG
>>117
書いたソースを簡単にアプしてくれない?
0119斉藤NGNG
簡単に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);
0120斉藤NGNG
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);
0121斉藤NGNG
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);
0122斉藤NGNG
わからないなー。

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

今のままでは、一列に、3つのツールバーが重なる形で表示される。
0123デフォルトの名無しさんNGNG
>>122
1. レバーコントロールを作成。
2. ツールバーの親をレバーコントロールにして作成。
3. REBARBANDINFO構造体のfStyleに
RBBS_BREAKを指定してRB_INSERTBANDを送る。
4. 2-3を繰り返す。
0124斉藤NGNG
>>123

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

「RBBS_BREAK 0x00000001 改行」って、ツールバーのエリア自体を「改行」すると言うことだったんですね・・・。
・・・・。
助かりました。すいませんでした。初歩的な質問で・・・・。
0125デフォルトの名無しさんNGNG
タスクバーみたいなウィンドウを作成・表示して
他のウィンドウの最大化領域サイズ
(SystemParametersInfo(SPI_GETWORKAREA・・・)を
設定したいんですが、どんな方法があるでしょうか?
0126デフォルトの名無しさんNGNG
>>125
質問の意味が分からない。具体的には??
0127125NGNG
タスクバーのプロパティで「自動的に隠す」に
チェックを入れている状態と入れていない状態では、
ウィンドウを最大化した時のウィンドウサイズが違いますよね。

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

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

すいませんが、お願いします。
0129名無し@沢村NGNG
>>128
SetFont()
0130デフォルトの名無しさんNGNG
LOGFONT lf;
HFONT hFont;
lf.lfHeight = ...
(他のメンバも初期化)
hFont = CreateFontIndirect (&lf);
SendMessage (hComboBox, WM_SETFONT, (WPARAM)hFont, 0);
0131デフォルトの名無しさんNGNG
>>125
AppBarでぐぐれ
0132125NGNG
>>131
何とかなりそうです。
ありがとうございました。
0133名無し@沢村NGNG
ここは、Win32APIスレだったね。
>>129は間違い。
0134名無し@沢村NGNG
>>129>>133
俺の名を語るな。
0135デフォルトの名無しさんNGNG
本物はsageないから騙る奴は覚えとくように
0136名無し@沢村 ◆n4lY0MbBKY NGNG
お前がな
0137デフォルトの名無しさんNGNG
名前なんて飾りだよ。
0138名無し@沢村NGNG
本物はsageないから騙る奴は覚えとくように
0139斉藤NGNG
>>130
ありがとうございます。
その方法で、文字の大きさは変更できましたが・・・、

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

・・・・・・、コモンコントロールって、複雑ですよね。ウツ・・・。
0140斉藤NGNG
これじゃ、まずいですかね。

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 ゴシック");
0141斉藤NGNG
では、みなさん、ありがとうございました。
いろいろ質問に答えてもらって。

後は自分で勉強しようと思います。
では。
0142デフォルトの名無しさんNGNG
>>140-141
フォントサイズの指定方法が間違ってる。

http://www.microsoft.com/japan/developer/library/jpgdipf/_win32_createfont.htm
0143デフォルトの名無しさんNGNG
本物はトリップも使わないし
つーか使わなかったからこそ騙られまくってるんだろうが
0144斉藤NGNG
わからないことがあるのですが、

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に変わっていた。
0145斉藤NGNG
いやー。rebarはむずかしい。

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

さてと、そろそろ買い物行こうっと・・・。
0146名無し@沢村NGNG
俺はビットマップに拡張子.exeを付けて保存しなおし、プログラムとして実行させようとしたが、「これは有効なwindowsプログラムではありません」というエラーが出てしまった。
普通のビットマップをwindowsプログラムとして実行させるには最低限何を付け加えたらいいですか?
教えてくだされ〜♪
0147デフォルトの名無しさんNGNG
>>146
最低限も糞もなにがしたいんだ?
0148名無し@沢村NGNG
>>147
いや、ビットマップがペイントなどのプログラムを通さずに自力で画像を表示してくれないかなと思って実験したらダメだったのよ…。
0149デフォルトの名無しさんNGNG
>>148
ネタか
0150デフォルトの名無しさんNGNG
>>146 >>148
ワラタ
0151CopyPasteNGNG
108 名前:デフォルトの名無しさん :03/01/02 13:38
>>107
沢村は有名な嘘つきなので、信用しないように(笑
ヤツにプログラミングの話しても、「リアルな答え」は返ってきません。
MSX時代からコンピュータに触れてはいるようだけど、
ずっとゲーム(エロゲー含む)しかやってないので、スキルはありません。
0152デフォルトの名無しさんNGNG
おまえらいつになったら沢村へのレスをやめるんだ
0153デフォルトの名無しさんNGNG
おれはレスしねえよ。
0154デフォルトの名無しさんNGNG
あまり高機能ではないデバッガを作りたいんですが、
プロセスの適切な位置にBreakPointを入れたり、
ほかさまざまなデバッグ関係の動作を行うAPI郡には
どのようなものがありますか?
0155デフォルトの名無しさんNGNG
>>154
もっと沢村風に書け
0156名無し@沢村フィルタNGNG
皆々様方〜、あまり高機能ではないデバッガを作りたいんですが、
プロセスの適切な位置にBreakPointを入れたり、
ほかさまざまなデバッグ関係の動作を行うAPI郡には
どのようなものがありますか?教えてくだされ〜♪
0157デフォルトの名無しさんNGNG
>>155
沢村じゃない(怒
具体的には、CPUが今まさに(そのスレッドで)実行している・していた命令を
得たいのだが・・・
0158デフォルトの名無しさんNGNG
>>154
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/debug/base/creating_a_basic_debugger.asp
とか読むと良いと思われ。
0159デフォルトの名無しさんNGNG
>>158
情報ありがとう。でもそこは読んだけれど、その項目で行うデバッグは、
基本的にクライアントプロセスが何かのメッセージを投げた場合に
それをキャッチする話しか載っていない。

能動的にメモリにBreakPointをかける等の話は載っていない
0160デフォルトの名無しさんNGNG
SDKで印刷プレビューを作るにはどうしたらいいでしょうか?
ネットやVC6についていたサンプルソースなどをあさってみたのですが
よく分かりませんでした。

ここのサンプルを見ろ!とかありましたらお願いします。
0161デフォルトの名無しさんNGNG
ようはハック死体って事か。
0162デフォルトの名無しさんNGNG
>>161
純粋にハックしたいだけなら既存のものつかったほうが早い気もするけど

俺もデバッガーがどういう風に動いてんのか知りたいから
ちょっとみて見たけどDebugBreakつかうのかな?
どうやって任意の場所に埋め込むかわかんないけど
0163デフォルトの名無しさんNGNG
クラックしたいのではなく(というかクラックなら普通にVisualStudio使ってできるし)
現在特定のスレッドで動いているコードをリアルタイムに表示するソフトウェアとか
面白そうだなと思い、そのための資料探しに奔走しています。

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

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

全命令捕まえる気なら、スレッドをシングルステップ実行モードにしてしまって
EXCEPTION_SINGLE_STEP をキャッチするとか。
0165デフォルトの名無しさんNGNG
>>164
int3hを入れるのは実装可能ですね。スマートではないけど。
シングルステップ実行モードにするのが一番素直そうな気がします。
そちら方面から調べてみよう、ありがとう。

しかしそれにしても、ブレークポイントを設定する命令があるはずですけどね。
0166デフォルトの名無しさんNGNG
XP限定だがDebugBreakProcessでいつでもどこでも
強制的にブレークを発生させることができる。
他のOSだとSuspendThread→GetThreadContextでPCを取得→
WriteProcessMemoryでPCの位置にint 3を埋め込み→
ResumeThreadとか自力でやるしかない。
ただし9xではKERNEL32.DLL内のコードを実行中にこれを
やっても効かなかったり以後のOSの動作が不安定になったりする。
0167デフォルトの名無しさんNGNG
ってWin9xではKERNEL32のコードはもともとWriteProcessMemoryで
書き換え不可だ
SuspendThread→SetThreadContextでPCをDebugBreakの
先頭に移動→ResumeThreadってやった場合の話だった。
0168デフォルトの名無しさんNGNG
エディットボックスで、現在エディットボックスに表示されてるテキストの
先頭のセル位置を取得する方法ありませんか?
0169デフォルトの名無しさんNGNG
>>168
先頭のセル位置って?
0170168NGNG
>>169
現在エディットボックス内に表示されていて、見える部分の
最初の文字の位置です。
0171デフォルトの名無しさんNGNG
EM_***系のメッセージからめれば可能
適当に探せ
0172sageNGNG
フォントについて、ワシにも教えてくんろ。
厨房みたいな質問で恐縮じゃが...

テキストを横書きや縦書きで斜体で表示したいんじゃが、
横書きの斜体はLOGFONTのlfItalicでいいが、縦書きでは
斜体を右肩下がりじゃなく、左肩下がりの斜体にしたい。
どこをどう いじくれば いいんじゃろうか?
0173デフォルトの名無しさんNGNG
回転させればいいんじゃないの
0174デフォルトの名無しさんNGNG
lfEscapementメンバとlfOrientationメンバを調べてみそ
9xとNTで意味が違ってたりするから気をつけて
0175デフォルトの名無しさんNGNG
回転って、どこをどう回転させる? 年寄りにも分かる
ように教えてくんろ。

OUTLINETEXTMETRICにotmItalicAngleってのがあるが、
あれは取得だけで、設定はできないよな...何か
いい方法はないもんか。
0176デフォルトの名無しさんNGNG
escapementとかorientationでぐぐってみろと続けようかと
思ったけど記憶力に自信がないからやめといたら174に
書かれますた
0177デフォルトの名無しさんNGNG
ご返答ありがたし。

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

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

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

どなた様か、助けると思って、具体的な数値を教えて
くんなまし。
0178デフォルトの名無しさんNGNG
italicは使わないでescapementで回転させろって言ってんだよ
横書きだって左に傾いたイタリックなんか出せないだろ
頭膿んでるのか?
0179172NGNG
夜遅くまでご苦労さんです。

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

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

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

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

(字幕合成ツールを作っとるんじゃが、何故に日本語字幕の
縦書き斜体はWindowsとは逆に傾斜してるのか不思議じゃ。
それともWindowsが変則的なのか?)
0180デフォルトの名無しさんNGNG
日本語フォントの標準的な「斜体」の概念は知らないけどさ、
イタリックが手書き文字を模したものとすると、日本語
フォントの縦書き斜体は Windows の標準的なイタリック
とは逆方向に傾斜、つまり、右肩上がり斜体であるべき
かなって気もするね。だから縦書きに限ると Windows の
ほうが「変則的」かも。でもさ、漢字とアルファベットの
混在するテキストを合理的に斜体にするにするためには、
縦書きでも、この傾斜方向しか選択の余地がなかったっ
てのも事実だよ。ほんじゃ、がんばって。
0181デフォルトの名無しさんNGNG
ラスタ単位で1ピクセルずつシフト。後に回転でどうか。
0182デフォルトの名無しさんNGNG
>>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);
0183182NGNG
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);
0184デフォルトの名無しさんNGNG
>>182

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

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

テストプログラムで試してみても、XFORMを
変えると、いろんな変形が可能だな。
感謝感謝です。
0185デフォルトの名無しさんNGNG
すいません、どなたか、WIN32API.TXTの誤植の少ない物のありか、知りませんか?
今はVB6付属のを使ってるんですが、誤植でハマった…。

#微妙にスレ違いかな?
0186デフォルトの名無しさんNGNG
すいません、質問です。
MM_WOM_OPENメッセージはいつ発生するんでしょうか?
0187デフォルトの名無しさんNGNG
>>185
MSDNには加入してるか?
0188初心者・マジ質問NGNG
マジ質問です。

この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上に「コンボボックス」を追加するやり方がわかりません。
0189デフォルトの名無しさんNGNG
>>188
それはたぶんMFCで言うところのダイアログバーみたいのを使ってると思われ。
Rebarでやるんなら、Rebarにのせるウインドウをモードレスダイアログにすれば
いいかと。
(同じバンド上のボタンをフラットにしたいとかならオーナードローしないといけないと思う)
0190デフォルトの名無しさんNGNG
>>188
コンボボックスをRebarの子として作って、RB_INSERTBANDをSendMessageすればいいだけ
と思うのだが。つーか、MSDNのRebarの最初のページ見た?
0191デフォルトの名無しさんNGNG
The MM_WOM_OPEN message is sent to a window when the given waveform-audio output device is opened.

0192名無し@沢村NGNG
>>188
ヌヒよ、ツールバーのセパレータは幅を指定できるから
広い幅のセパレータを作ってその上にコンボボックスを
貼り付けなさい。
IEのツールバーはこの方法でないと無理。
0193188 初心者・マジ質問NGNG
みなさん、ご返答ありがとうございます。

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

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

>>192
ほほーう。
セパレータというのは、幅が指定できるのですか。
それは知らなかったです。
これも家に帰ってから、実際にやってみようと思います。
0194デフォルトの名無しさんNGNG
test
0195デフォルトの名無しさんNGNG
「優先するオーディオデバイス」ってプログラム上で触れないでしょうか
現在レジストリを書き換えることで行っていますが
スマートなやり方があればお教えください
0196デフォルトの名無しさんNGNG
DVD-ROM内の全ファイルは、CreateFile() でオープン可能。
だが、いくつかは、ReadFile() するとエラーになる。
(おそらく、コンテンツ保護のたぐいだと思うので、それはOK)

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

ReadFile() を使わずに CreateFileMapping() を使った場合に、事前に map
領域が確かに読めるかどうかの検査をしたいのですが、可能でしょうか?
(Virtualなんとか、の類で可能なのかな?)
0197デフォルトの名無しさんNGNG
IsBadReadPtr
または__try〜__exceptで囲む
0198デフォルトの名無しさんNGNG
そのメモリアクセスするところをtry..catchとかで守っておけばええやん。
Win32Api的には、構造化例外が飛んできたら、NGって事で。
VC++なら、catch(...)で捕まえられたはず
0199デフォルトの名無しさんNGNG
IsBadReadPtr・・・なるほど。試してみます。
ただ、MapViewOfFile を MAP_READ指定で呼んで OK が返っているから、
仮想メモリとしてのアクセス属性には、READ権はあるかも。

構造化例外・・・NT系でなくても使えるんですね。
なんか、95系はダメかと勘違いしてました。
これだったら、確実そうですね。
0200デフォルトの名無しさんNGNG
>>195
デバイスIDを指定すれば?
0201デフォルトの名無しさんNGNG
>>200
IDを指定してデバイスごとに操作することはできるんですが、
優先デバイスを切り替えることができないのです
0202デフォルトの名無しさんNGNG
>>201
それはWAVE_MAPPERで開きたいってコト?
そりゃムリ。少なくともWindowsでは。
0203デフォルトの名無しさんNGNG
>>199
IsBadReadPtrも内部で構造化例外使ってるよ
0204デフォルトの名無しさんNGNG
>>193
沢村が嫌いなことに異議は全くないが
今回に限りその態度はちょっと外れてるぜ
質問に来てるんだろ?
0205デフォルトの名無しさんNGNG
>>201
「サウンドとマルチメディア」コントロールパネルの
代替品を作ってるのでもない限り
プログラムが勝手に優先デバイスを書き換えるなってこった
0206デフォルトの名無しさんNGNG
>>204
沢村はデタラメしか教えないから
回答者として居座られたむしろ迷惑だ
0207デフォルトの名無しさんNGNG
>>203

え?
Win32API(?)のソースって公開されてるの??
0208デフォルトの名無しさんNGNG
>>206
おまえ2chのポリシー知らんのか?
0209デフォルトの名無しさんNGNG
>>208
コテハンで馴れ合う奴は逝ってよし
0210デフォルトの名無しさんNGNG
>>207
解析本がある
0211デフォルトの名無しさんNGNG
>>209
聞く耳持たない者を説得してるほどヒマじゃない
0212デフォルトの名無しさんNGNG
というか、沢村は、マルチで質問して、マルチに応答を
展開して、結局「解決しなかった」とかいいはなった記憶が
強烈すぎる
0213デフォルトの名無しさんNGNG
この沢村の思うがままのスレ展開はどうしたことだ
0214デフォルトの名無しさんNGNG
   【沢村に反応してしまった人】         【沢村を放置、徹底無視を貫き通した人】

    , ・´.......... . .   ...... "" '' - ..,_  .               \ │ /
  ./::::::::::::::::::::::::/ /:::::::::::::::ヘ::::::::::::::ヽ                  ./ ̄\    ∩  ∧∧
. と. ,,i::::::::::::::::::::::/ /::::::::r(::::..ン::::::::::/ .        ∩ ∧ ∧∩ ─( ゚ ∀ ゚ )─  \ ( ゚∀゚ )へ
<´ _;;;::::::::::::::::::::::し:::::::::::`(:::::ヘ::::::::::::\        ヽ( ゚∀゚ )/   .\_/     |    /(ソ
    ''ヽ::::::;;;;;::::::::::::::::::::::::::::..ン:::::::;;;::-'''         |   〈..   / │ \    |   |
    ⊂;;;;;;,.:::::::.--- ー  '''' '    .        / /\_)            / /\」
                               ""                ""
   沢村と一緒に、アクセス規制!            優良コテハンとして、表彰!
0215デフォルトの名無しさんNGNG
でも>>192の回答が最も的確な気がするけど。
0216デフォルトの名無しさんNGNG
>>214
なんで名無しがコテハンとして表彰なんだよ
0217デフォルトの名無しさんNGNG
MessageBox()をデスクトップの中央でなく、自分のWindowの中央に
表示したいのですが、どうすればいいのでしょうか?

MFCのAfxMessageBox()では中央にでるので、デバッガでソースを
追っかけてみたのですが親Windowをがりがり捜している?だけのようで
なぜ中央にでるのか分かりませんでした。
0218デフォルトの名無しさんNGNG
フックを使ってるんじゃなかったっけ?
0219デフォルトの名無しさんNGNG
>>217

MFC のは、自前で用意した MessageBox風のウィンドウじゃないの?
0220デフォルトの名無しさんNGNG
>>217
HWNDが貰えないからMoveWindow()もSetWindowLong()もSendMessage()もだめ
だいいちMessageBox()から返ってきた時点でダイアログは存在していない

漏れ的にはあんなの糞

ちょっとでも別の機能が欲しければ独自のダイアログボックスをつくるのが早っしょ
WM_INITDIALOGでGetParent()とMoveWindow()ね
0221gn355my0NGNG
MessageBoxIndirect() じゃダメなのか?
0222デフォルトの名無しさんNGNG
>>217
というか
 ::MessageBox( HWND hWnd ,  ...
の hWnd を指定したら、ウィンドウ中央に表示されたんだけど?
0223217NGNG
>>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だとデスクトップ中央に出るのですが。

フックとかちょっと特殊なことをしているのでしょうか。
フックを少し調べてみます。ありがとうございました。
0224IP記録実験NGNG
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を提出することがある。
0225デフォルトの名無しさんNGNG
漢ならあえて晒す。
0226デフォルトの名無しさんNGNG
口びるマロ
0227デフォルトの名無しさんNGNG
>>317-318
来ないと言うやつは又来るが、さようならと言った次のレスにもうコピペする奴は珍しい。
0228デフォルトの名無しさんNGNG

マルチバイト文字列をワイド文字列に変換するとき、
C標準関数の mbtowc を使うのと、Win32API の MultiByteToWideChar の
どちらを使うのが一般的でしょう?
0229デフォルトの名無しさんNGNG
APIスレだからMultiByteToWideCharと答えておこう
0230デフォルトの名無しさんNGNG
ウワァーン ( `Д´)=○)3゚)∵
0231デフォルトの名無しさんNGNG
>>229 漏れも。
どうしてもmbtowc使うならsetlocaleを忘れるなよ。
0232228NGNG
>>229 >>231
ありがとー。

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

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

↑のようなヘルパ関数をつくろうと思っているんだけど、
CodePage や、フラグの設定を固定したい場合は、どの設定が一番無難ですか?
経験豊かな人、誰かご教授願います。
0233デフォルトの名無しさんNGNG
======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
────────────────────────────
0234231NGNG
>>232
何も考えないならとりあえず
MultiByteToWideChar(CP_ACP, 0, ...)
WideCharToMultiByte(CP_ACP, 0, ...)
でいいんじゃないの?
まずはそれからだ
0235228NGNG
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 でもいいかなという気になりました。
0236デフォルトの名無しさんNGNG
>>792
はぁ?
0237デフォルトの名無しさんNGNG
おい!おまいら!

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

のアンケートで5を選びませんか? 目標50%
0238デフォルトの名無しさんNGNG
つまらないね。

トリップだってさ
全然ボツ。
0239デフォルトの名無しさんNGNG
IPとってる板

qb : 2ch批判要望 削除議論 削除要請 削除整理
live2 : ニュース速報
tmp : ニュース極東 ちくり裏事情 政治思想 Download
    厨房! 人権問題 バカニュース 薬・違法
    ゴーマニズム ロビー 最悪 少年犯罪
    違反の潰し方 ペット苦手 なんでもあり 学歴
0240デフォルトの名無しさんNGNG
普通に見れるけど・・・俺が変なのか・・
0241デフォルトの名無しさんNGNG
最高裁への上告は認められなくなったから、これで事実上判決確定だよ。
逆転も何もないって。
勢いで上告なんかしても一発で上告却下(門前払い)だよ。

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

ようするに上告しても今の制度では100%無駄。
これで完全終了ってことか。
0242デフォルトの名無しさんNGNG
全然関係ない書き込みがあちこちに多発してるみたいだけど、
これって、何が原因なの?
0243デフォルトの名無しさんNGNG
根拠があって正しい情報だとしても
当事者が都合悪ければ誹謗中傷だわな

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

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

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

そういうのが無くなってしまう、もしくは減ってしまうというのは悲しい
0245デフォルトの名無しさんNGNG
>>242
祭り気取りなんだろ
IP取るのは管理者の勝手だが
スレ違いのレスを垂れ流されるのは邪魔でかなわん。
0246OFNトースターNGNG
OPENFILENAMEなら俺に聞け
ってほどOPENFILENAMEに詳しい人いませんか?
0247デフォルトの名無しさんNGNG
>>242
すでに批判要望板の荒らし報告にあがってるな

◆スクリプト&コピペ(乱立)荒らし報告スレ27
http://qb.2ch.net/test/read.cgi/accuse/1041678810/
0248デフォルトの名無しさんNGNG
関係ない話してるとスレが死ぬぞ
0249デフォルトの名無しさんNGNG
>>246
何が聞きたいのか、書いてみたら?
0250OFNトースターNGNG
待ってました。
コンパイルして実行してほしいです。
起動時に、名前を付けて保存のダイアログが出ます。
そのままマイドキュメントに保存すると、このプログラムでは
何も保存されないけど、エディットに結果が入ります。
その結果を教えてほしいのです。
0251OFNトースターNGNG
#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;
}
0252OFNトースターNGNG
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) {
0253OFNトースターNGNG
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;
0254OFNトースターNGNG
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);
}

ここまで。
0255OFNトースターNGNG
僕は、ofn.lStructSize = 76; でしか使えません。
ofn.lStructSize = 88; でofnが使える人の結果も知りたいです。
0256デフォルトの名無しさんNGNG
>>255
msdn.microsoft.com/library/default.asp?url=/library/en-us/winui/WinUI/WindowsUserInterface/UserInput/CommonDialogBoxLibrary/CommonDialogBoxReference/CommonDialogBoxStructures/OPENFILENAME.asp
0257デフォルトの名無しさんNGNG
荒らしかと思った…
0258デフォルトの名無しさんNGNG

・・・・・・・それが何か?
0259231NGNG
>>235
ありゃ。確かにCP_ACPみたいだな。嘘ついてスマソ。
VC6以前ではまった気がしたんだが…。
printf("%S", L'あ');
とかできるようになったのかな??
0260256NGNG
>>255
typedef struct tagOFN {
     :
#if (_WIN32_WINNT >= 0x0500)
void * pvReserved;
DWORD dwReserved;
DWORD FlagsEx;
#endif // (_WIN32_WINNT >= 0x0500)
} OPENFILENAME, *LPOPENFILENAME;

なぜ
ofn.lStructSize=sizeof(OPENFILENAME)
としないのか
0261デフォルトの名無しさんNGNG
精神病患者のオナニーサイト
http://www.enjoy.ne.jp/~gokaino1/
0262デフォルトの名無しさんNGNG

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

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

※ の部分には何を書けばいいのか教えてください。
DWORD でいいのかな?
素直に __try 〜 __except( エラータイプ ) で囲むべき?
0263デフォルトの名無しさんNGNG
...
0264デフォルトの名無しさんNGNG
うそだと思われるけど、catch( ... ){ 
0265デフォルトの名無しさんNGNG
_set_se_translator()、なんてな。
0266デフォルトの名無しさんNGNG
そういえば、昔、「あー、複数の例外にいちいちcatchかくの面倒やな〜
よし、とりあえずcatch(...)しとこ。」とかやってたら、そのtryのなかで
Access Violationが発生してたことに気づかなかったことがあったなぁ。
なんで、catchに行くのか理解できなかった覚えがあえる
0267デフォルトの名無しさんNGNG
BackupRead()とBackupWrite()でOwner,DACL,SACLを全部コピーできる、
Robocopy + SCopy + α みたいなミラーリングプログラムを作っているのですが、
ハマっています。 ご存じの方いたら教えてください。

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

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

CreateDirectory()するときだけACLを変更するのも何か違う気がするし...
0268デフォルトの名無しさんNGNG
>>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 )
 {
  (エラー処理)
 }

なんかわからんもんがすっ飛んでくるよりもいいでしょ。
0269デフォルトの名無しさんNGNG
赤信号、皆で渡れば怖くないってやつじゃないか。
0270デフォルトの名無しさんNGNG
つまらなくなるね。
0271デフォルトの名無しさんNGNG
ネタにマジレス北國新聞
0272デフォルトの名無しさんNGNG
 思ってる事をそのまま言ってしまうと行為=無責任発言
ということ。
 正当性がある意見なら、実社会でも言える。
 内部告発なんかも、実社会でも十分可能。
0273デフォルトの名無しさんNGNG
がんがれ
0274デフォルトの名無しさんNGNG
串設立&串解禁きぼん
0275デフォルトの名無しさんNGNG
======2==C==H======================================================

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

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

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

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

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

んじゃ!

────────────────────────Age2ch─
■この書き込みは、Age2chを使って配信されています。
────────────────────────────
Keep your thread alive !
http://pc3.2ch.net/test/read.cgi/software/1041952901/l50
────────────────────────────
0276デフォルトの名無しさんNGNG
NYでログ取ってる方、いらっしゃいますか?
0277デフォルトの名無しさんNGNG
なんとなく分かりました。thx
0278デフォルトの名無しさんNGNG

     ま た  ま さ と  か!

0279デフォルトの名無しさんNGNG
ひろゆきツマンネー!!
0280デフォルトの名無しさんNGNG
288 :ひろゆき ◆3SHRUNYAXA :03/01/08 17:56 ID:rLfxQ17l
>厨房板は本当に閉鎖なのか?
初耳。
0281デフォルトの名無しさんNGNG
うそをうそと
0282デフォルトの名無しさんNGNG
600,000,036…
0283デフォルトの名無しさんNGNG
近藤朋(享年15)
今日午前4時前、幸田駅の線路脇の道路でキャッチボールしていた中学3年生4人組がいた。
ところが、ボールが線路に入った。
幸田駅の線路に、ボールを取りに入った、中学3年生の女子1名が、貨物列車に
ばばばばばピィー―  きゃ〜!  ブァプアあああああああー―――――――ン!!!!!!

0284デフォルトの名無しさんNGNG
ご愛嬌・・・
被害の大きさに差がありそうだけども。
誹謗中傷一番垂れ流しってどこかねぇ?
0285デフォルトの名無しさんNGNG
さあゲームの始まりです

愚鈍な警察諸君

ボクを止めてみたまえ

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

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

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

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

SHOOLL KILLER

学校殺死の酒鬼薔薇
0286デフォルトの名無しさんNGNG
トラックバーにTBM_SETPOSを毎回送りつづけてスライダーを動かしながら、
他のウィンドウにボタン操作のメッセージを送るようにしたいのですが、
この状態だと他のウィンドウへのWM_COMMANDメッセージが送られず、操作できません。
どうすればできるのでしょうか?お願いです。教えて下さい。
0287デフォルトの名無しさんNGNG
すいません。おかしな操作をしてフォーカスを勝手に変えてたのが原因でした。
ちゃんと操作できました。さようなら。
0288デフォルトの名無しさんNGNG
じゃあなぜ今回になって
俺達を見限ったのだ?
0289デフォルトの名無しさんNGNG
ナイスw
0290デフォルトの名無しさんNGNG
sports3フカーツ?
0291デフォルトの名無しさんNGNG
ウィンドウやコントロールのキャプションは SetWindowText で
変更できるけど、メニューのキャプションを変更するには
どうすればいいですか?
(「最近使ったファイル」のようにしたいけど、あれは毎回
メニューを作り直している?)

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

えっ?定数でhMenu取るの?勇者だね君は
0293デフォルトの名無しさんNGNG
>291
とりあえずSetMenuInfoとか書いてみる・・・
0294デフォルトの名無しさんNGNG
ほい
hMenu=GetMenu(hWND);
hMenuPlayThru=CreateMenu();
AppendMenu(hMenuPlayThru,MF_ENABLED|MF_STRING,n,sz);
AppendMenu(hMenu,MF_ENABLED|MF_STRING|MF_POPUP,(UINT)hMenuPlayThru,sz);


0295291NGNG
ガーン変更でしか?作るのかとオモタユ
0296291(本物)NGNG
>>292-295
あ、ありがと〜
AppendMenu と ModifyMenu でできました〜
0297デフォルトの名無しさんNGNG
SPY++みたいに、実行時に任意のウィンドウの情報を得るにはどうすればいいですか?
0298山崎渉NGNG
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
0299デフォルトの名無しさんNGNG
自己解決
マウスキャプチャして
MapWindowPoints と WindowFromPoint
でなんとかなりそうですね。

しかし今まで色々調べてたのに、質問してすぐ見つかるとは・・・。
板汚しすまそ。
0300300getNGNG
     ∧∧   )      (´⌒(´
  ⊂(゚Д゚⊂⌒`つ≡≡≡(´⌒;;;≡≡≡
        ̄ ̄  (´⌒(´⌒;;
      ズザーーーーーッ
0301山崎渉NGNG
(^^)
0302デフォルトの名無しさんNGNG
ツリービューの新スタイルのTVS_FULLROWSELECTって
VisualC++5.0じゃビルドできませんか?
DLLのバージョンは5.81なので大丈夫だと思うんですが
未定義ですってエラーが出てしまいます。
0303デフォルトの名無しさんNGNG
簡単な二重起動防止を過去ログ参考にMutexで実装しようと思ってますが
二重起動を防止するときに、先に起動していたプログラムへ任意のイベントなどを
SendMessageなどで送ることはできないでしょうか?
同じプログラムが起動されたら先に起動していたプログラムにある動作をさせたいのですが。
もしかして、ウインドウハンドル捕まえて、それ宛にメッセージ送るだけ?
0304デフォルトの名無しさんNGNG
>>303
Mutexにこだわらないなら、FindWindowで二重起動防止。
ウィンドウクラス名が重複している場合は使えんが・・・

ウィンドウクラス名に依存するのが嫌なら、名前付きイベントを使うのも良いかと
0305デフォルトの名無しさんNGNG
>>303 サンプルコード山のように書かれてるよ。探せ。
0306デフォルトの名無しさんNGNG
DHCぐらいしか知らん
0307デフォルトの名無しさんNGNG
>>303
ウィンドウ持つのが嫌ならスレッドメッセージというのもあるけども。
0308デフォルトの名無しさんNGNG
>>302
できる。
ヘッダファイルだけそろえてやればいい。
もしくはその定数を自分で定義してやってもオケ。
たしかBCC5.5.1とかには入ってるはずなので、落として差し替える!
0309デフォルトの名無しさんNGNG
Win32コンソールアプリでコンソールにCGを表示させることは無理ですか?
いや、AAじゃなくてな。
0310デフォルトの名無しさんNGNG
コンソールにグラフィック表示機能があれば可能だろうけど
聞いたこと無いねえ
0311デフォルトの名無しさんNGNG
コンソールを直訳すれば操作卓だから UI は規定されないのだろうが、
一般にコンソールと言ったら CUI が常じゃないか?
0312デフォルトの名無しさんNGNG
まあ、どうしてもと言うなら GetConsoleWindow() でウィンドウハンドル取って、
あとは煮るなり焼くなり犯すなり。
0313デフォルトの名無しさんNGNG
char FindPath[256];
strcpy(FindPath, "c:\\*");
hFind=FindFirstFile(FindPath, &FData);
ここで FindPath[0]=0;としても
この後のFindNextFileに影響無しで良いですか?
0314デフォルトの名無しさんNGNG
GetConsoleWindow()
 Windows NT/2000/XP: Included in Windows 2000 and later.
 Windows 95/98/Me: Unsupported.

とか書いてあるけどナー。
0315デフォルトの名無しさんNGNG
>>313
多分無いと思うけど、何なら試してみたら?
0316デフォルトの名無しさんNGNG
んなもん質問実験してる暇にもうひとつバッファ作ればいいだろ。
0317デフォルトの名無しさんNGNG
コンパネの画面でウィンドウのタイトルバーの色や選択色などを設定するけど
あそこで設定したものってどうやってプログラムから取得するの?
現状としては選択色が取得したいんですが。
0318313NGNG
>>315
試した。
ちゃんと動くっぽいけど本当に大丈夫か知りたくて・・
0319デフォルトの名無しさんNGNG
>>317
GetSysColor()では不満か?
0320デフォルトの名無しさんNGNG
カーソルがメニューの外に移動したかどうかを知る方法を調べています。
メニューを表示してカーソルをメニューの外に移動させると、
アイテムが一つも選択されていない状態ができます。
このことを教えてくれるメッセージなどありますでしょうか。
御存知の方いらっしゃいましたら、どうかよろしくお願いいたします。
0321デフォルトの名無しさんNGNG
関数ImmNotifyIMEが、
WindowsXP環境だけ失敗するのですが、
何かご存知の方居りませんか?
0322デフォルトの名無しさんNGNG
Win32の勉強始めたばかりなんですが一般的な学習法ってなんでつか?
Petzold本に出てるようなファンクションをかたっぱしから試してどう動くかを学ぶとか?
ちなみに目標は自家製の本格的なテキストエディタ作成でつ。
0323デフォルトの名無しさんNGNG
・Petzoldのサンプルを少し改造してはその結果を確認
・大学ノートを用意し,憶えたことを必ずメモする
・糞使いづらいMSDNの調べ方に慣れる

以上を繰り返せばテキストエディタは53行で書ける
0324デフォルトの名無しさんNGNG
ファイル名
名無しさん.txtが、名無し~1.txt であるとき、
名無しさん.txtを名無し~1.txtにリネームするには、どーやったらできますか?
MoveFile("名無しさん.txt", "名無しさ~1.txt");
ってしても成功して、そのまんまなんですけど。
0325デフォルトの名無しさんNGNG
両方同じファイル名なんじゃないの。ロングとショートの。
0326デフォルトの名無しさんNGNG
>>325
そうなんですけど、ロングをショートにしたいんです。
0327デフォルトの名無しさんNGNG
>>326
意図が不明だけど一回nanasi.txtを中継すれば良いんじゃないの。
0328デフォルトの名無しさんNGNG
>>318
一般にWin32APIはハンドル作った時点で情報のコピーを
作るからユーザー側で用意したバッファは壊してOK
>>321
詳細なテキストサービス…でぐぐってもオフにする方法しか
出てこないな。たぶんその関係だとは思うんだが
0329デフォルトの名無しさんNGNG
>>327
9xだとトンネリングというOSの余計なお世話のせいで
それでもうまくいかない可能性がある
0330デフォルトの名無しさんNGNG
>>327
すみません。それだと、nanasi.txtが既に存在しているかも
チェックしないとならないんですね。それがめんどいのです。
TempFileでも中継することにしますか。
うーん。なんかないものか。
0331デフォルトの名無しさんNGNG
>>329
え?じゃ、>>330もだめか。
0332317NGNG
>>319
おお!そうだシステムカラーだ。
ググろうにもキーワードが思いうかばんかった。恥ずかしい。
0333デフォルトの名無しさんNGNG
エクスプローラで >>324 と同じ事をすると成功するな。
何をしているんだ?
0334デフォルトの名無しさんNGNG
隠しAPIを使ってる
0335デフォルトの名無しさんNGNG
>>334
根拠きぼんぬ
0336デフォルトの名無しさんNGNG
GetShortPathName?
0337デフォルトの名無しさんNGNG
>>336
得たいという話じゃなくて、設定したいという話だったと思う。
0338324NGNG
renコマンドや、moveコマンドでも出来ませんでした。
ですが、名無しさん.TXTの、
.TXTを小文字にしてやると、成功することが分かりました。
昔、Explorerでもたしか、そんな仕様があったような。。。
全部小文字だと、頭だけ大文字にされたりとか。

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

そりゃあ表示上だけの話じゃなかったっすか?
0340デフォルトの名無しさんNGNG
windowsx.hってみんな使ってないの?
Cls_OnCreateとかそんなの。
0341324NGNG
うーん。また、問題が。。。
cFilename=名無しさん
cAlternateFileName=名無し~1
であるとき、
cFileNameを、名無し~1 に、リネームできないのは、そういう仕様でしょうか?
0342デフォルトの名無しさんNGNG
#include<winnt.h>

int main()
{
return 0;
}

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

Borland C++ 5.6を使っています。
0343デフォルトの名無しさんNGNG
>>342
あなたは Windows.h を持っていますか?
0344デフォルトの名無しさんNGNG
>>341
Windows2000SP1ではエクスプローラのリネームでもそうなるので、仕様と思ふ。
ところで誰かCSPDK使ったことある人います?
0345デフォルトの名無しさんNGNG
XPならSetFileShortNameで短い名前を付け替えればできそうな予感
2000以前でもNtSetInformationFileでコソーリできたりしないかな
0346デフォルトの名無しさんNGNG
う、SetFileShortNameはバックアップ特権が必要なのか
関係ないけど今MSDNみたら
> Requirements
> Server: Included in Windows Windows Server 2003 2003.
になっててワラタ
もう少し落ち着いて直せと
0347デフォルトの名無しさんNGNG
>>346
>> Server: Included in Windows Windows Server 2003 2003.
>になっててワラタ

typoでなくXMLパーサのバグ(動的にそのダブリが表示されてる)
かモナー
0348デフォルトの名無しさんNGNG
>>341 最悪、一旦違うファイル名にすれば...
0349デフォルトの名無しさんNGNG
MSDNライブラリって再配布OKなんだからMSも最新版をWeb閲覧だけでなく
ダウンロード可能にしてくれればいいのに。
0350デフォルトの名無しさんNGNG
>>349
容量どれだけあると思ってんだ?
0351デフォルトの名無しさんNGNG
Suscriber Downloadでダウンロードできるよ
有料だけど
0352デフォルトの名無しさんNGNG
あれ?Platform SDKについてくるやつは?
0353デフォルトの名無しさんNGNG
リッチエディットコントロールにチェックボックスを表示する事って
できますか?文字しか駄目なんでしょうか?
0354デフォルトの名無しさんNGNG
悪いことは云わんから、IEコンポーネントにしとけ。
0355山崎渉NGNG
(^^)
0356デフォルトの名無しさんNGNG
>>348
それは問題ありと上のほうであったが。
0357デフォルトの名無しさんNGNG
>>330 >>356
「名無しさん」を LFNで「名無し~1」に変える時だって、
LFNで「名無し~1」のファイルがすでにあったら失敗から、
結局存在チェックはしないといけない罠
0358デフォルトの名無しさんNGNG
「名無し~1」は決してLFNにならないのでは
まあ言いたいことはわかるけど
0359デフォルトの名無しさんNGNG
つーかその場合は単にERROR_ALREADY_EXISTSで失敗するから
事前のチェックはいらないのでは
0360デフォルトの名無しさんNGNG
メッセージボックスをフックして、時限式に閉じる機能を付けたい
んですが、フックの仕方がわかりません。
平たく言うと、MessageBoxで表示されたダイアログのHWNDを
取得したいんですが、上手いやり方があったら教えてください。

0361デフォルトの名無しさんNGNG
Winにはシンボリックリンクやハードリンクってないですか?
ショートカットみたいなインチキなのじゃなくて。
0362デフォルトの名無しさんNGNG
>>360
そんなこと考えるならダイアログ作れよ・・・
0363デフォルトの名無しさんNGNG
>>361
2000以降にはハードリンクはあったはず。
0364>>362NGNG
ポップアップで画面外にウィンドウ作って
そいつを親ウィンドウに指定して
時間がきたら親を消すってどうよ?
0365360NGNG
>>362
メッセージボックスって、メッセージの内容によって大きさが伸縮する
じゃないですか。あれを自動でやって欲しいという狙いがあったんです。
逆に伸縮ダイアログが簡単に作れればそっちでもいいんですけどね。
メッセージボックスと同じ動作をするダイアログの作り方でもいいです。
0366デフォルトの名無しさんNGNG
>>365
GetTextExtentPoint32() でメッセージのサイズ調べて、それに合わせてリサイズ
すればいいだけでは?
つーか、メッセージボックス捕まえた後に何をするおつもりで?
0367360NGNG
それぐらい読み取れませんか?
0368デフォルトの名無しさんNGNG
時限式のMessageBoxならMSDNにサンプルがあったはずだが・・・
0369デフォルトの名無しさんNGNG
http://www.boreas.dti.ne.jp/~keitarou/2ch.html
        アプロダワッショイ!!
     \\  動画専用ワッショイ!! //
 +   + \\ 抜けるぞワッショイ!!/+
                            +
.   +   /■\  /■\  /■\  +
      ( ´∀`∩(´∀`∩)( ´ー`)
 +  (( (つ   ノ(つ  丿(つ  つ ))  +
       ヽ  ( ノ ( ノ  ) ) )
       (_)し' し(_) (_)_)
0370デフォルトの名無しさんNGNG
>>363
裏技的だが、実は2000以前でもテープバックアップAPIでNTFS上にハードリンク作れたりする。
0371デフォルトの名無しさんNGNG
ソフトからAPI等を使用して関連付けする方法を教えて下さい。
0372デフォルトの名無しさんNGNG
フォルダを選択する、SHBrowseForFolder関数で出てくるダイアログに
「フォルダの新規作成」ボタンがついてるのをよく見かけるのですが、
なんという関数を使えばいいのでしょうか?
0373デフォルトの名無しさんNGNG
>>370
2000 の機能じゃなくて、NTFS の機能だからだろ。
0374デフォルトの名無しさんNGNG
>>367
| GetTextExtentPoint32() でメッセージのサイズ調べて、それに合わせてリサイズ
| すればいいだけでは?

に対する答えが

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

ですか?
0375デフォルトの名無しさんNGNG
>>372
コールバックを使って、自前で作ってるんじゃないの?
0376デフォルトの名無しさんNGNG
>>373
POSIXサブシステムが作ったハードリンクもバックアップ/リストア
できなくちゃならないからな
0377デフォルトの名無しさんNGNG
>>361
シンボリックリンク相当のものとしては
フォルダにジャンクションというものが張れるけど
ファイルには張れない。
0378デフォルトの名無しさんNGNG
>>374
そうですが何か?
0379デフォルトの名無しさんNGNG
>>378
何だと思います?
0380デフォルトの名無しさんNGNG
>>378
何があるでしょうね(^^)
0381デフォルトの名無しさんNGNG
>>379
何があるかな?
0382デフォルトの名無しさんNGNG
>>378
さあ一人で考えよう。
0383デフォルトの名無しさんNGNG
               _∧_∧
            / ̄ ( ´∀`)⌒\
       __    /  _|     |   |                ,,,,,,,,,,,,,
       ヽヽ   /  /  \    |   |           ,,,,,,,iiiiillllll!!!!!!!lllllliiiii,,,,,,,
        \\|  |____|   .|   |           .,llll゙゙゙゙゙        ゙゙゙゙゙lllll,
         \/  \       |   |           .|!!!!,,,,,,,,       ,,,,,,,,,!!!!|
         | ヽ_「\      |   |、         |  ゙゙゙゙!!!!llllliiiiiiiiiilllll!!!!゙゙゙゙ .| 
         |    \ \――、. |   | ヽ         .|     .゙゙゙゙゙゙゙゙゙゙     |
         |   / \ "-、,  `|  |  ヽ       |               |
      _/   /    "-, "' (_  ヽ  ヽ      .|               |
     /    __ノ      "'m__`\ヽ_,,,, ヽ      |               |
     `ー― ̄          ヽ、__`/ー_,,,, ゙゙゙゙!!!!!!!lllllllliii|               |
                        \゙゙゙゙゙゙゙!!!!!lllllllliiiii|               |
                          \   ヽ   |               |
                           ヽ   \  |               |
                            |     \.|               |
                            `ヽ、,,_ノ|               |
                                  ゙゙!!!,,,,,,,,       ,,,,,,,,,!!!゙゙
                                       ゙゙゙゙!!!!llllliiiiiiiiiilllll!!!!゙゙゙゙
                                ブチッ!! /.// ・l|∵ ヽ\  ←>>378-382
0384デフォルトの名無しさんNGNG
任意のようなデスクトップアクセサリを作りたいんですが、
BMPの形のウィンドウを作る方法ありませんか?

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

当方VC6.0、98SEです
0385デフォルトの名無しさんNGNG
>>360
非可視のダイアログをつくる
↓
それを親にしてMessageBox
↓
タイマーで時間経過後、ダイアログを破棄

親のダイアログが破棄されれば、MessageBoxも消える。
ただし、MessageBoxを表示する前に、ダイアログを画面中央にセンタリングしておく。
0386デフォルトの名無しさんNGNG
あれれ?MessageBoxを呼んだ時点で、
ダイアログプロシージャの処理は回らなくなると思うが、
どうやって、タイマーで時間経過をはかって、ダイアログを
破棄するのかナ? マルチスレッド?
0387385NGNG
すまん、俺は MFCの CDialog 派生で実装しました(;´Д`)
0388デフォルトの名無しさんNGNG
>>あれれ?MessageBoxを呼んだ時点で、
>>ダイアログプロシージャの処理は回らなくなると思うが、

モーダルループが回ってるので、WM_TIMER は大丈夫
0389デフォルトの名無しさんNGNG
タイマーメッセージで、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;
0390デフォルトの名無しさんNGNG
>>384
> SetWindowRgnで無理矢理出来なくもないがかなり強引というか
9xではそのかなり強引な方法しかない
伺かもそうやってる
リージョンがメッシュ状になってない限り
CreatePolyPolygonRgnが一番高速
0391デフォルトの名無しさんNGNG
GDI でウィンドウにグラフィックを描画するアプリケーションを作っています。
CreateCompatibleBitmap でオフスクリーンバッファを作成して描画しているのですが、
ウィンドウのサイズが変更されたとき、このバッファはどうすべきなのでしょうか。
自分では、例えばウィンドウが拡大されたら新しく作り直す、とか
ウィンドウが小さくなったときは放っておいて必要な部分だけ使う、とか考えたのですが…
こういった処理のセオリーのようなものがありましたらご教授ください。
0392360 ◆FeMIy5OMp2 NGNG
>>367は偽者です。お気になさらずに。

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


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


>>374 >>378-383
すいません、何か気に障ること言いましたか?
0393360 ◆FeMIy5OMp2 NGNG
>>385-389
有難うございます。
難しそうですが、意味は判りました。
試してみます。
0394デフォルトの名無しさんNGNG
ツリービューの項目が左クリックされた場合と左ダブルクリックされたのを
知るにはどうしたら良いですか?
右クリックはWM_CONTEXTMENUを捕まえてHitTestで判定すると分かったんですけど
左クリック関係がわかりません。
0395デフォルトの名無しさんNGNG
>>391
作ろうとしているアプリケーションによる

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

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

ウインドウを大きくしたときにビットマップもサイズを大きくするって
ソフトを洩れは知らん
0396デフォルトの名無しさんNGNG
>>394
WM_LBUTTONDOWN
0397391NGNG
>>395
ありがとうございます。参考になりました。
いろいろ試して最適なの方法を考えてみることにします。
0398デフォルトの名無しさんNGNG
>>372
BIF_NEWDIALOGSTYLE
0399デフォルトの名無しさんNGNG
>390
そういえばCreatePolyPolygonRgnのことを忘れてました
サンクス
0400デフォルトの名無しさんNGNG
>>395
画面に表示されない分までオフスクリーンに確保するのは
メモリの無駄ってことで実際のウィンドウサイズ分しか
オフスクリーンを用意しないアプリがあるんだよ。
その分リサイズの処理が重くなるわけだが
0401デフォルトの名無しさんNGNG
Windows2000の「別のユーザーとして実行」をプログラムから実行するにはどうしたら
よいのでしょうか?
「伺か」のsetup.exeのようなAdminで実行させるようなプログラムを作りたいのです。
0402デフォルトの名無しさんNGNG
>>401
ファイル名をsetup.exeにすれば勝手にやってくれる
0403TECHNGNG
>>401
RUNAS はダメ?
http://www.microsoft.com/windows2000/ja/professional/help/RUNAS.HTM
0404デフォルトの名無しさんNGNG
>>402
あ、本当だ・・・でもファイル名を変えたくはないのです。

>>403
コマンドプロンプトでrunasではなくて、ダイアログを出すにはどうすれば良いでしょうか?
ユーザーにそのまま実行を続けるかどうかをGUIで選択させたいと思っています。
0405デフォルトの名無しさんNGNG
>>404 RUNAS を実行したらパスを聞いてくると思うが?
0406デフォルトの名無しさんNGNG
>>405
いや、だからそれは404にも書いてますがコマンドプロンプトなんで、GUIでやりたいなと。
Shift+右クリックの「別のユーザーとして実行」で表示されるダイアログを出す方法が
あったら教えていただきたいのです。
0407TECHNGNG
>>404
ゴメンナサイ。

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

が使えるけど、 ダメなんだろうなあ
0408デフォルトの名無しさんNGNG
んー、あれ相当のダイアログを自分で作らないとダメみたいですねぇ・・・
0409デフォルトの名無しさんNGNG
>>404
CreateProcessAsUser()ではいかんのか?
ttp://www.microsoft.com/japan/developer/library/jpwinpf/_win32_createprocessasuser.htm
0410デフォルトの名無しさんNGNG
>>409
それで「別のユーザーとして実行」ダイアログが表示できるわけじゃないですよね?
だから自分でそれ相当のダイアログを作らなきゃならないようですね、というのが
>>408なわけでして。

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

ショートカットファイルのプロパティには「別のユーザーとして実行」という
チェックボックスがあって簡単に表示してくれるのに・・・ガクリ
0411デフォルトの名無しさんNGNG
>>409
そっちだといろいろ特権が必要になるからつらい
そんな特権持たせる操作を要求できるなら
はじめからAdministratorでログインしろですむし
NT4ならこれかな
http://pc3.2ch.net/test/read.cgi/win/1024782123/l50
0412デフォルトの名無しさんNGNG
タブコントロールで、タブを最後尾に追加するにはどうしたら良いですか?
TabCtrl_InsertItemだと、インデックスを指定しなければなりませんが
今いくつタブがあるか分からない状態で、最後尾(右側)にタブを追加したいのです。
0413デフォルトの名無しさんNGNG
TabCtrl_GetItemCountで数えればいいだろ
0414QuestionNGNG
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されないのかわかりません。
0415デフォルトの名無しさんNGNG
_WIN32_WINNTマクロの値は、作成するプログラムのターゲットOSの
選択をするためのものであって、ビルド環境には依存しません。

明示的に#defineしましょう。
0416QuestionNGNG
>>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」と認識されているのでしょうか?
0417デフォルトの名無しさんNGNG
> 私のXPでプログラムを作成するとエラーが起こらないと思うのですが。

根本的に勘違いしてる。415を読み直せ。
0418QuestionNGNG
自分でdefineするしかないのですね。
0419デフォルトの名無しさんNGNG
error LNK2001: 外部シンボル "__imp__OpenThemeData@8" は未解決です
error LNK2001: 外部シンボル "__imp__CloseThemeData@4" は未解決です

このエラーが出た場合、どのファイルをリンクすればいいのでしょうか?
0420419NGNG
UxTheme.lib でした。解決。
失礼しました。
0421デフォルトの名無しさんNGNG
ウィンドウリージョンの設定についてお聞きします。(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の領域が表示されると思ったのですが、表示されません。
どのように解決したらいいでしょうか?
0422ひょっとこNGNG
コントロールパネルで画面のプロパティー内でデザインを変更しても、自分の作ったアプリケーションのコモンコントロールの背景色が変わりません。

例えば、配色を「アイスカラー」から「ピクニック」に変更しても、コントロールの背景色がアイスカラーのままなのです。
ここでは、どのような処理をすればいいのでしょうか?
0423デフォルトの名無しさんNGNG
>>421
プッ
0424デフォルトの名無しさんNGNG
http://www6.ocn.ne.jp/~endou/index2.html
     ★YAHOOOプロフィール★
0425デフォルトの名無しさんNGNG
>>422
レバーとかツールバーの色ってことでしょ?
その色ってシステムが自動的に変えてくれるでしょ?
0426ひょっとこNGNG
コンパネの画面内のデザインを変更しますよね。
変更したら当然「文字の大きさ・デザイン・配色」などのスタイルが変わるわけですよね。
そのスタイル情報を取り出すにはどのAPIを使えばいいのでしょうか?

そのスタイル情報を自分のアプリのrebarに反映させたい。
0427ひょっとこNGNG
コンパネ内にあるデザインを変更したら、ということです。

なぜか、自分のアプリケーションに新しく設定したデザインが反映されない。
0428421NGNG
>>423
解決しました。ありがとう。
0429デフォルトの名無しさんNGNG
>>426
ウィンドウメッセージで飛んでくるYO
0430デフォルトの名無しさんNGNG
428はどうせ偽者だからいちおうマジレスしとこう。
ここも強制IDにならないかねえ
>>421
SetWindowRgnに渡したリージョン(default_rgn)
は使いまわし不可。SetWindowRgnする前にコピーを作れ。
0431デフォルトの名無しさんNGNG
VB6(SP5) 対象OSはXP or Meでし。

IE(関連付けされたブラウザ)をプログラムからShellExecuteで呼び出して、
インターネット上のウェブページを表示したりする一種のマクロ言語の
インタプリタもどき作ってるんですが、どうしてもそのウィンドウの「表示完了」が
わからないといけないのですが、どのように表示状態を取得すればいいのか、
見当つきません。表示状態をつかみたいIEは自分で起動したウィンドウ、及びそこから派生するウィンドウです。
よろしくなのら!
0432名無し@沢村NGNG
>>431
ヌヒよ、DWebBrowserEvents::NavigateComplete()について調べれ。
どうやってVBで使うかは知らんよ。
0433602NGNG
>>429
ウィンドウメッセージとして飛んでくるのはわかりますが。
それをrebarに反映する方法がわかりません。

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

「WINXP」+「VC++6」でステータスバーを表示するアプリを作り、表示した後、コンパネの画面のデザインで配色を変えても、その自作アプリのステータスバーだけが配色が変わらないのは。
なぜだろうか?
0435デフォルトの名無しさんNGNG
WM_CTLCOLORか何か
0436602NGNG
しかも、実験的に作成したもので、
猫さんのHPにあるソースを丸々コピーして貼り付けてビルドしただけだから、
私のソース記入間違いでもない。

おかしいな?
0437602NGNG
WMメッセージ(WM_SYSCOLORCHANGE)は来るのですが、それを反映させる方法がわかりません。
まさか、こんな問題が出るとは思わなかった。

システム側で処理してくれるものだと思いましたから。
0438431NGNG
>>432
Javaは一応書けますが、RADをインスコすんのが面倒で鬱
どうしよう・・・
0439421NGNG
>>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);
}
0440デフォルトの名無しさんNGNG
SetWindowRgnに渡したリージョンは削除しちゃだめ。
つーか少しはMSDN読め。
0441デフォルトの名無しさんNGNG
>>434
WM_SYSCOLORCHANGEか何かをリレーしてやる必要がある。
0442デフォルトの名無しさんNGNG
SetWindowDQN ってなんですか
0443名無し@沢村NGNG
>>442
ha ha ha
0444602NGNG
>>441
詳細なプログラム記述方法を知ってますか?
ものすごく困ってます。

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

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

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

たとえば、デフォルト(例・98SE)では「ボタン」の色は「灰色」ですよね。
これを手動で「赤」に変える方法。
0445デフォルトの名無しさんNGNG
>>444
XP でmanifest使用の場合はだめみたい。
該当コントロールだけは従来タイプにしないと厳しそう。(カスタムドローすら無視されます)

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

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

オーナードローを使えばいいのでしょうかね。
0447602NGNG
私が思うに、RebarとStatusbarにシステムカラーが変わったと言うことが連絡されていないから、こういう現象が起こると思っているのですが・・・。
なぜほかのコントロール(Button/Combo/Menu/Popupなどなど・・・)に対しては送って、「RebarとStatusbar」だけ送らないのかが疑問???
ふぅ、格闘が続く・・・。
0448デフォルトの名無しさんNGNG
>>446
なんか間違えていない? *.exe.manifestを消してみると何の処理をしなくても自動的に色が変わりますが…

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

0449602NGNG
>>448
うん、けしましたよ、それを。

私の環境がおかしいのか・・・。
0450602NGNG
いろいろな他者作成のアプリを立ち上げてみましたが、やはり私のアプリだけが色が変わらない。
・・・・。
0451602NGNG
私のプログラムミスではないですね。
猫さんのHPにあるソースを完全にコピペしてビルドしたら、やはり同じ問題が出ましたね。
・・・・。
VC++を再インストールしたほうがいいのか?
それとも、SPのバージョンが古いからかな?
VC++6とSP5では駄目ですかね。
0452デフォルトの名無しさんNGNG
>>450
他者作成のアプリというのはmanifestを使っていないだけでしょう。
エクスプローラだってステータスバーの色は変わりません。
rcにmanifestを入れてません?
0453602NGNG
>>452
rcからマニフェストは消してます(涙)

というか、新規にマニフェスト無しで作成しても問題が起こるのです・・・。
俺の環境上だけの問題かよ・・・。(涙)
0454デフォルトの名無しさんNGNG
>>453
レバーの握る部分(?)はポチポチ(manifest使用時)になっています?
それともただの線(manifest未使用時)になっています?
0455602NGNG
>>454
ただの線です。IE5仕様ですよ。

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

嗚呼、休みが終わる・・・。問題が解決しないまま・・・。(涙)
0456602NGNG
MSDNから提供されるSDKサンプルをビルドして確かめてみたら、
やはり画面の配色を変えても「Toolbar/Statusbar」だけが変わらないですね。

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

VC++6とXP・PROではうまくアプリケーションが作られないみたいです。
VC.NETを購入しようと思います。
0457デフォルトの名無しさんNGNG
>>456
そんなことはない。うちもXP Pro でVC6使ってます。
0458602NGNG
>>457
Rebarを作成した際、画面の配色を変えてもアプリにきちんと反映されますか?
0459602NGNG
寝よ・・・。
0460デフォルトの名無しさんNGNG
>>458
manifest無効ならば、反映されます。
ところで、アプリを再起動したときはきちんと反映されるの?
0461602NGNG
>>460
ええ、再起動したら反映されます。
ただ即反応してくれないから困ってます。

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

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

ちなみに、VC++は別のパーティションに入れています。
Cドライブ→WindowsXP OfficeXP
Eドライブ→VisualC++6 PlatformSDK
0462デフォルトの名無しさんNGNG
タスクトレイにあるハードウェアの取り外しなんですが、
これをAPIから呼び出すことってできるのでしょうか?
0463デフォルトの名無しさんNGNG
> タスクトレイにあるハードウェアの取り外しなんですが
ねーよ。
0464デフォルトの名無しさんNGNG
>>444
SendMessage(hwndStatusBar, WM_SYSCOLORCHANGE, 0, 0L);
MSDNのコモンコントロールの章にもこうしろって書いてあるはずだけど
0465デフォルトの名無しさんNGNG
つーかWM_SYSCOLORCHANGEの説明にそのものズバリが書かれてるし。
だから少しはMSDNを読めと。
0466462NGNG
え、あるんですけど・・・
0467デフォルトの名無しさんNGNG
PCカードもUSB機器もIEEE1394機器も使ってなきゃないだろ
0468462NGNG
まぁ確かにそうですが・・・
0469602NGNG
今、会社の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の各バンドに対しても投げましたが、無反応でした。
0470デフォルトの名無しさんNGNG
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
0471デフォルトの名無しさんNGNG
> MSDNから配布されているソースにそのような問題があるはずは無いですからね。

この認識は改めたほうが良い
0472デフォルトの名無しさんNGNG
>>469
単にお前の環境が腐ってるだけだろ
>>471
まあ自分のミスより先に疑うよりは健全な認識だな
0473デフォルトの名無しさんNGNG
現在実行中の、ほかのプロセスに読み込まれている
DLLの名前と開始位置を取得するにはどのAPIを使えばいいですか?

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

メモリの内容を直接読み込むだけなら
GetWindowThreadProcessId
OpenProcess
ReadProcessMemory
でできましたが、その先にいけません。
よろしくおねがします。
0474デフォルトの名無しさんNGNG
>>469
>今日家に帰ったら、Win2000を別パーティションにインストールしてみます。
いままでこれをしていなかったとでも?
だったら忠告しておく
別パーティションではなく別PCにすれ
ビルドの度に電源から立ち上げを2回ずつなんて非能率かつ危険だし,
動作確認を開発環境でやっても本番環境と条件が違ったら意味がない
シリアルポート越しのデバッグ手段がせっかくあるのに勿体ない

>>471
御意

>>472
腐ってるのはお前の視野
0475デフォルトの名無しさんNGNG
別PC? 家に二台以上あるの? ははは。オタク。
0476デフォルトの名無しさんNGNG
さすがにInitCommonControlsExのミスではないですよね?

>>473
WinNT系ならPSAPI.DLL
Win95以降orWin2000以降ならTool Help
両方に対応しておくと良いと思います
0477デフォルトの名無しさんNGNG
>>474
あんたと同じことを言ってるつもりなんだが
何が腐ってるんだよ
0478デフォルトの名無しさんNGNG
linuxのstrace相当の動作(APIのモニタ)をするソフトを作るには、
どういったAPIを使えばいいのでしょうか?
また、単なるアプリケーションで可能なのか、dll 作成が必須、または、
driver 作成が必須、などもわかりましたらお願いします。
ターゲット環境は、2K、XPですが、98,ME でも使えるとなお有難いです。
0479デフォルトの名無しさんNGNG
>>478
こんなソフト作りたいの? 頑張って。
http://www.rohitab.com/apimonitor/
0480デフォルトの名無しさんNGNG
ファイルを作成するときに、その階層までのフォルダが無かったら
フォルダも自動作成するようなAPIありませんか?
CreateFileじゃフォルダは作成されませんでした。
0481デフォルトの名無しさんNGNG
MakeSureDirectoryPathExists
0482デフォルトの名無しさんNGNG
>>480
フォルダ作ってからファイル作れば?
0483デフォルトの名無しさんNGNG
>>481
そのAPIは知ってますけど、ファイルは作成できないですよね?

>>482
CreateDirectory・・・
WriteFile・・・
って事ですか?
これって毎回CreateDirectoryするの無駄じゃないですか?
0484デフォルトの名無しさんNGNG

SAPI(Microsoft Speach API)やってる人いる?
ViaVoiceやらLaLaVoiceやら、MSのSDKやら触ったのだけど
いまいちよくわからない。
SAPIってそもそも各ベンダがDLLにして提供するもので、それを
レジストリから調べて使うものなのか?
SDK入れるとコンパネに音声のアイコンが出るけど、MSがこれらの
APIをラッピングするDLLをだしてて、それを使うものなのか?
あと、ActiveXもMSが透過的につかうためのCOMを作ってくれてるのか?
知ってたらおしえてください。 おながいします。
0485デフォルトの名無しさんNGNG
>>483
すでにディレクトリがあれば作成に失敗するんだから同じことじゃん
0486デフォルトの名無しさんNGNG
MakeSureDirectoryPathExistsやってからファイル作れよ。
0487名無し@沢村NGNG
ヌヒ等には、SHCreateDirectoryEx()もあるということを教えてやろう。
動作環境には要注意だが。
0488デフォルトの名無しさんNGNG
>>475
アマグラマさん?
他の人たちの家にあるのは貸与マシンかも知れないよw
0489デフォルトの名無しさんNGNG
メッセージが何時来るのか、何で取るべきなのかわからないのですが、決まりや定石ってないですか?
エディットボックスはキルフォーカスがいいとかそんなのです。
0490デフォルトの名無しさんNGNG
>>489
お前の日本が理解できないのだが?

それと、メッセージがいつ来るかなんて誰にも分からん。
0491602NGNG
今、別PCにWinXPPROとVC++6をクリーンインストールして、Rebarのついたアプリを作成したところ、「画面の配色更新」には対応できませんでしたね。

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

VC++.NET買ってこ。
0492デフォルトの名無しさんNGNG
相性で済ませてしまうあたりが不安だ
0493デフォルトの名無しさんNGNG
>>490
僕の日本は国旗の丸が紫色です。えへへ。
0494デフォルトの名無しさんNGNG
>>491
VS.NETを買うこと自体は良いのですが、とりあえずPlatformSDKアップデートを先に


0495デフォルトの名無しさんNGNG
次スレのテンプレにはこれをちゃんと入れといてくれよ
http://www.microsoft.com/msdownload/platformsdk/sdkupdate/default.htm?p=/msdownload/platformsdk/sdkupdate/psdk-full.htm
0496名無し@沢村NGNG
>>475
ヌヒにはリモートデバッガという便利なものの存在を教えてやろう。
0497デフォルトの名無しさんNGNG
「別のユーザーとして実行」ダイアログにはデフォルトでAdministratorのアカウント名と
ドメイン名が入力されていますが、これらの文字列はどのように取得すればよいのでしょうか?
自分の環境(Win2000)ではデフォルトがユーザー名はAdministrator(Adminのアカウント名は変更していません)
、ドメイン名はGetComputerNameで取得できる名前(環境はワークグループLANです)に
設定されています。
0498602NGNG
>>494
PlatformSDKなら入れてあります。
入れた状態で、ビルドしても同じ現象が起きたのです。

♪なんでだろう??

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

またまたとりあえずVC++6で踏ん張ろう。
0499デフォルトの名無しさんNGNG
>>498
つられ覚悟で。
なんでそこまでこだわるのがわからん。
直接マイクロソフトに家。
0500602NGNG
ただ、考えられる原因は、

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

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

うーん、コモンコントロール関連はなかなか手ごわいな・・・。
(WinSockのほうが簡単だった・・・)
0501デフォルトの名無しさんNGNG
>>500
インクルードファイルのほうも新しいものを参照するようにしてあるのか?
0502デフォルトの名無しさんNGNG
IEでも対応できていないことを無理やりやろうとすると、
逆に互換性が失われるのでは?
これからMSはなにやるかわからんぞ。
0503602NGNG
>>601
しています。

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

VisualC++6内の「include」フォルダ内を新しいもの(PlatformSDKのinclude)に変えた。
0504デフォルトの名無しさんNGNG
カード・ワーズのゲームエディターのようなTABをメニューの下に
つけるしかたを教えてください。
0505デフォルトの名無しさんNGNG
DLできるPlatformSDKとVC++のincludeのディレクトリ構成ってちがくない?
そのまま上書きはまずいんちゃう?
0506デフォルトの名無しさんNGNG
普通はIDEのインクルードパスの設定でPlatform SDKのほうを優先するように変えたり、
環境変数いじったりで対応するよな。

あとWINVERその他のマクロが適切に設定されていない可能性もあるか。
0507デフォルトの名無しさんNGNG
バウンダリ文字列を作るAPIなんて公開されているのでしょうか?
↓こんなの
boundary="=_NextPart_000_001A_01C016CF.64AA5620"

IE も Outlook も同じフォーマットなので API であるのかな?と
0508デフォルトの名無しさんNGNG
後ろ8byteは Uuidっぽいが。
0509デフォルトの名無しさんNGNG
マシンに一意なIDを取るAPIってありますか?
0510デフォルトの名無しさんNGNG
吹き出しみたいな形のツールチップを作る方法を教えてください。
0511デフォルトの名無しさんNGNG
>>509
完全ではないが、MACアドレス。
0512デフォルトの名無しさんNGNG
>>509
どの範囲で?
時間とか?
0513デフォルトの名無しさんNGNG
リストビューのフォーカスの点線を実線にしたり色をつけたりしたいのですが、
どうしたらできるでしょうか。
0514デフォルトの名無しさんNGNG
>>511
できれば NIC非装備のマシンでも使用したいんですが

>>512
イメージ的には、UNIXのhostid的なものです。
コントロールパネル→システムに出てくる、ごちゃごちゃした
IDっぽいのは、それとして使えるのかな?
0515デフォルトの名無しさんNGNG
>>514
cpuidとか?
0516デフォルトの名無しさんNGNG
>>514
GetCurrentHwProfile() の HW_PROFILE_INFO.szHwProfileGuid なんかは?

>コントロールパネル→システムに出てくる、ごちゃごちゃしたID
は違法コピーが無い世の中なら使用可
0517デフォルトの名無しさんNGNG
>>476
アリガト!(´▽`)
0518497NGNG
あのぉ・・・>>497ですけど放置ですか・・・
0519デフォルトの名無しさんNGNG
>>509
初回だけCoCreateGuid()した値をレジストリにとっといて
2回目以後はそれを再使用ってのは却下か?
0520デフォルトの名無しさんNGNG
>>516
いいかもしれないですね。

>>519
hostidの代替としては、ユーザが任意に変更しにくい値がいいんですが...
0521デフォルトの名無しさんNGNG
>>520
任意に変更ってregeditで変更できてはまずいってことか?
0522デフォルトの名無しさんNGNG
特定のアプリケーションが送受信しているパケットデータを
横取りして閲覧と改竄をしたいのですが、

Winsockを使いこめばそのようなことはできますか?
それともDDKを手に入れてガシガシガシやらないとできないですか?
0523デフォルトの名無しさんNGNG
はっきりとRagnarokOnlineといいなさい
0524デフォルトの名無しさんNGNG
>>522
libpcap
0525デフォルトの名無しさんNGNG
>>522

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

一時的な hack で良いなら、通信先を hosts ファイルで 127.0.0.1 に
変更しちゃって、本来の接続先との間で proxy として動作するプログラム
書くのが簡単だと思う。
0526デフォルトの名無しさんNGNG
その手のネットワーク系のプログラムを書くなら、Windows 捨てて UNIX に行った
方が早いと思うぞ。

FreeBSD で作ったルータを挟んで、そこで divert (4) 噛ますとか。
0527デフォルトの名無しさんNGNG
BSD厨ここにも発見(・∀・)
0528522NGNG
ttttttttttttttttttttttttthx!
明日(今日か)、本屋に行き詳しく調べます。

>>523
自分と他人を重ねないでね☆
0529デフォルトの名無しさんNGNG
図星のようだな
0530デフォルトの名無しさんNGNG
厨です。質問していい?
0531名無し@沢村NGNG
>>526
ヌヒよ、そういうレスのことを一般的に「的はずれ」って言うんだよ。
0532デフォルトの名無しさんNGNG
CreateCompatibleDCで作ったメモリーDCが
不要になったとき、元々あったBITMAPをメモリーDC戻さないで
DeleteDCしても動くのですがやっぱり悪いですか?
0533デフォルトの名無しさんNGNG
>>532

Win98 や Me などで、使うたびにだんだんリソースが減っていっても
構わないなら、それでも別に良い(めったに使わないツールとか)。
0534デフォルトの名無しさんNGNG
>>533
厨です。すばやいレスありがとう。
0535デフォルトの名無しさんNGNG
>>527
どうした、何か BSD に恨みでもあるのか?

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

divert (4) は、そのあたりの処理をユーザ層に切り出してるから開発は楽だぞ。
0536デフォルトの名無しさんNGNG
ま、熱くなる前にスレタイ見ろってこった
0537デフォルトの名無しさんNGNG
それを言ったら、標準 API だと無理、で終わりだろう。
0538522NGNG
糸口さえつかめればなんでもいいけど。

ただ、いまBSDに手をつける気力は無いので、
今回はスルーしつつ、記憶にはとどめます。
0539デフォルトの名無しさんNGNG
BSDなんかやるくらいならLinuxやるよ(藁
0540デフォルトの名無しさんNGNG
>>539
BSDにはどういったイメージをお持ちで?
0541デフォルトの名無しさんNGNG
>>540
OS X みたいなもの
0542デフォルトの名無しさんNGNG
>>541
ネタレスカコイイ!
0543デフォルトの名無しさんNGNG
Windowsで親プロセスの環境変数を変更する方法ってありましたっけ?
0544デフォルトの名無しさんNGNG
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Session Manager\Environment
に環境変数書いて、 WM_SETTINGCHANGE を投げれば、
親プロセスの環境変数「も」変更できるだろう。
0545デフォルトの名無しさんNGNG
>>543
SetWindowsHookExでDLLを侵入させてSetEnvironmentVariable

0546デフォルトの名無しさんNGNG
>543
親がウインドウもってなかったら?
0547デフォルトの名無しさんNGNG
>>546
ハァ?
0548デフォルトの名無しさんNGNG
>>545 544?
PostThreadMessage
0549デフォルトの名無しさんNGNG
って自分も間違っているし
x>>545
o>>547
0550デフォルトの名無しさんNGNG
>>548
相手がメッセージループ回してくれなきゃ
Postしてもキューにたまるだけで意味ない。
0551デフォルトの名無しさんNGNG
WM_SETTINGCHANGE 投げても既に起動しているプロセスの環境変数は変わらんよ。
0552デフォルトの名無しさんNGNG
つーかUSER32.DLLの関数を一度も呼び出していないスレッドは
そもそもキューが存在しないのでPostできない。
0553デフォルトの名無しさんNGNG
レスくれた人ありがと。返事送れてすんまそん。

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

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

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

DLLを侵入させるってのがやったこと無いからよく分からない。
どっかにサンプルないかな〜。
0554デフォルトの名無しさんNGNG
552 のような状態では、フックも通用しないのでは?
0555602NGNG
原因がわからないので、ソース・画像を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の色が「アイスカラー」に変わらないのでしょうか?
0556602NGNG
実験用として今、猫さんのHPのソースを参考しています。
0557デフォルトの名無しさんNGNG
>>555
CreateMyStatus関数の(HMENU)ID_STATUSをNULLにする
0558デフォルトの名無しさんNGNG
> DLLを侵入させるってのがやったこと無いからよく分からない。
> どっかにサンプルないかな〜。
kageのソース
0559デフォルトの名無しさんNGNG
タブコントロールで、右クリックでタブを選択できるようにするには
どうしたらいいですか?
0560デフォルトの名無しさんNGNG
>>559
左ボタンが壊れた?
0561デフォルトの名無しさんNGNG
>>559
右クリックした時にその下のタブを選択させる。
0562デフォルトの名無しさんNGNG
>>560
いえ、違いますけど・・・。

>>561
カーソルの下にあるタブを判定するにはどうしたら良いですか?
TabCtrl_GetCurSelだと、右クリック時のカーソルの下にあるタブじゃなくて
選択されてるタブしか判別できないのですが・・・。
0563デフォルトの名無しさんNGNG
>>562
TCM_HITTESTを送る
0564山崎渉NGNG
(^^)
0565602NGNG
やはり、誰も原因がわからないようだ。
私がプログラムミスでないことは確かなようだ。
0566デフォルトの名無しさんNGNG
>>565
>>557でも駄目なのですか?

0567602NGNG
>>566
ええ、だめです。

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

私だけの問題ではなさそうだ。
0568602NGNG
ちくしょう・・・ドットネット買うしかないのか・・・。
0569デフォルトの名無しさんNGNG
んー、それがXP以外では問題がでないようならmanifest.xmlかなんかで解決するかもな。
XP持ってないんでどうとも言えんが。
0570602NGNG
>>569
マニフェストはすでに確かめてあり、だめでした。

・・・わからん。。。
ほかの人で同じような不具合はないのかな?
0571デフォルトの名無しさんNGNG
> 私がプログラムミスでないことは確かなようだ。

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

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

よろしくお願いします。

// SHIORI-0 //
0573デフォルトの名無しさんNGNG
WinampのPlug-inはClassで成り立っているのですよね?
あのように、動的にクラスを読み込んで利用するにはどうすればいいのでしょうか?
0574デフォルトの名無しさんNGNG
>>572
ASPIしか使ったことがないから知りませんが、検索したらでてきました
ttp://www.geocities.co.jp/Hollywood/4205/doc/spti.html
DDKが必要らしいです
0575デフォルトの名無しさんNGNG
>>573
どの言語で作るつもりか知らんけど
C++なら仮想クラスを自分のプログラムで定義して、
DLLはそれの派生クラスを作成する
あとはDLL側にそのクラスのインスタンスを作成する関数を作って
LoadLibrary/GetProcAddressでその関数を呼び出す
返って来たインスタンスを通して全ての処理を行えばいい
0576572NGNG
>>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みたいなツール、どこかに転がってないですか?
0577デフォルトの名無しさんNGNG
>>576
その質問はスレ違いですが
>>576のwrapperDLLのファイル名をwnsapi32.dllにすれば
>>572等に既存のASPIソフトが使えるのでは?
0578572NGNG
>>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
0579デフォルトの名無しさんNGNG
>>567
>>555のソースをビルドして試してみたけど確かに色が変わらないねえ。
でも自作のアプリではちゃんと色が変わった。よって
> 私がプログラムミス
であることは
> 確かなようだ。
申し訳ないが自作アプリとどこが違うのかまではわからない。
0580デフォルトの名無しさんNGNG
となると、あやしいのは
SendMessage(hStatus, SB_SIMPLE, TRUE, 0L);
のあたりでしょうか?
いずれにしろ.NETでは解決しないでしょうね
0581デフォルトの名無しさんNGNG
>>580
自作アプリではCreateWindowEx+SB_SIMPLEの代わりに
CreateStatusWindowを使ってたんでそうしてみたが変わらなかった。
いったい何が違うんだ。まじでわからん…
0582602NGNG
>>579
早起きしました。

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

INITCOMMONCONTROLSEX sex;

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

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

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

0583デフォルトの名無しさんNGNG
XPのバグ(というか仕様変更)だったら泣くな.…
0584デフォルトの名無しさんNGNG
WM_KEYDOWNでは、キーを押されたときのshiftキーの状態はわからないですよね。
キーが押されたときのshiftキーの状態を知るにはどうしたらいいんでしょうか。
0585デフォルトの名無しさんNGNG
>>584
WM_KEYDOWN処理中に GetKeyboardState で全仮想キーの状態を取得するとか……
0586デフォルトの名無しさんNGNG
>>584
::GetKeyState
0587デフォルトの名無しさんNGNG
>>585-586
それってWM_KEYDOWNを受け取ったタイミングの状態であって、
WM_KEYDOWNが発生する原因となったキーが押されたときの状態じゃないですよね。
0588デフォルトの名無しさんNGNG
>>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.
とも書いてるなあ。どっちが本当だよおい
0589デフォルトの名無しさんNGNG
あー入力メッセージが生成されたときの状態を読み取るから
メッセージを読み出すたびに状態が変化すると考えれば
とくに矛盾しないか。
つーわけでGetKeyStateで問題ないと思うが
0590デフォルトの名無しさんNGNG
>>587
キーが押されたときのだよ。ヘルプぐらい読んでくれ。
あとトレースするとかすればわかる。
ハードウエア的な現在の状態を知る方法はまた別の方法だから。
0591デフォルトの名無しさんNGNG
キーボードが2つ以上接続されている環境があったとして、
どちらのキーボードのキーが押されたのか判断する方法はあるのでしょうか? 

 
0592デフォルトの名無しさんNGNG
スプリットウィンドウの右上とかにバッテンで閉じるのを作りたいんですが、
簡単な方法がありましたら是非教えて下さい。お願いします。
0593デフォルトの名無しさんNGNG
>>592
bitblt
0594デフォルトの名無しさんNGNG
印刷関係でちょっと不可解な現象が発生してるんです。

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

 char buf[256];

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

 char buf[184];

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

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

ちなみにOSはWinME、コンパイラはVC6です。
さらにちなみにその他のOS(98、98SE、2000、XP)では
問題なく印刷が開始されます。
0595デフォルトの名無しさんNGNG
>>594
>char buf[184];
>にすると正しく印刷が開始されるのです。
たまたま印刷されてるだけだと思われ。"\0"とか抜けてない?
0596デフォルトの名無しさんNGNG
>>594
EndDocまで行わないと、印刷を始めるかどうかはドライバ次第だったような。
0597デフォルトの名無しさんNGNG
>>594
GetLastError()で調べれ。
0598594NGNG
ちょっと試してきました。
とりあえず buf がらみの処理は変数宣言も含めて削除してみますた。
すると。確かに印刷される。やっぱりどこかでつぶしてる?
それではと、途中に

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

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

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

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

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

何か見落としてるかもしれないので他にもヒントありましたらお願いします。
0599594NGNG
すいません。読み返してみてちょっと補足。説明が中途半端な気がしたので。
結論から言えば、

 /* ↓この処理を通らないと印刷される */
 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 させてもらっていいですか?
0600デフォルトの名無しさんNGNG
余裕で600ゲット
0601デフォルトの名無しさんNGNG
600ゲトー

   ∧∧   (⌒
 ⊂(゚Д゚⊂⌒つ(≡
    ズサー (⌒
0602デフォルトの名無しさんNGNG
それではと、途中に

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

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


・・・初期化してないcharの配列をを渡してた?
0603594NGNG
さらに突き詰めてみました。先ほどの処理をさらに簡略化して

 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 のアドレスを渡すとダメなようです。
何かどこかで聞いたことあるような。。。
0604594NGNG
引っ張ってしまってスマソン。もう少しおつきあいいただければ幸いです。
さらに続けて(if は省略します)

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

○。

お、そゆこと?

と思って元の処理に戻して、先頭で定義してた
char buf[256];
を
char *buf = GlobalAlloc(GPTR, 256);
にしてみますた。

ダメでした。。。ショボン
0605デフォルトの名無しさんNGNG
http://banana.fruitmail.net/cgi/introduce_jump1.cgi?1363289
0606デフォルトの名無しさんNGNG
>>604
HGLOBAL GlobalAlloc(
UINT uFlags, // 割り当ての属性
SIZE_T dwBytes // 割り当てたいバイト数
);

根本的に使い方間違ってる。 
0607594NGNG
え?今って GPTR でポインタ返せないの?
0608デフォルトの名無しさんNGNG
返せるよ。
0609デフォルトの名無しさんNGNG
子ウィンドウとして作成したリストコントロールを
要らなくなった時点で、DestroyWindow(hList);で破棄しようとしたのですが
サブクラス化したリストコントロールのプロシージャのWM_DESTROYで
PostQuitMessage(0);とすると、親ウインドウも一緒に閉じてしまいます。
PostQuitMessage(0)しなくても、リストコントロールはきちんと破棄されたと
思って良いのでしょうか?
0610594NGNG
うーん、謎です。。。
メモリまわりっぽいのは確かだと思うんですけどねぇ。
LintTo() や、即値渡しの TextOut() だけにすると問題なく描画できますので。。。

他のOSではたまたま動くけど、
Meでは注意しないとダメな処理ってありましたっけ?
0611デフォルトの名無しさんNGNG
PostQuitMessageは最後のウィンドウとか
メインウィンドウが閉じたときにだけ呼び出すものだよ
なんでWM_DESTROYのデフォルト処理で自動的に
呼び出されないのか考えれ
0612デフォルトの名無しさんNGNG
>575
インスタンスを作成する関数を作って返す
とありますが、どのような形で返せばいいのでしょうか?
0613デフォルトの名無しさんNGNG
>>612
ポインツァー?
0614デフォルトの名無しさんNGNG
変数形です。
0615594NGNG
ちょっと気付いて試してみたらどうやらOKっぽかったので
それのような気がするんですが、

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

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

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

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

 di.cbSize = sizeof(di);
 ZeroMemory(&di, sizeof(di));  // この行を追加
 di.lpszDocName = lpszDocName;
 di.lpszOutput = NULL;
0616デフォルトの名無しさんNGNG
>>615
しむらcbSize--!書き間違えかも知れんけど。
0617デフォルトの名無しさんNGNG
>>615
静的変数やGlobalAlloc(GPTRの場合は基本的に0初期化されているから必要ない

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

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

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

大変お騒がせ致しました。
0619デフォルトの名無しさんNGNG
>>618
cbSize==0になってるよ
0620594NGNG
>>619
ごめん、まだわかってない。

あれ?

DOCINFO di;

di.cbSize = sizeof(di);

で間違ってる?そこじゃない?
0621デフォルトの名無しさんNGNG
その後ZeroMemoryしている
0622デフォルトの名無しさんNGNG
>>620
いや順番がこうじゃないとだめじゃん?
 ZeroMemory(&di, sizeof(di));  // この行を追加
 di.cbSize = sizeof(di);
 di.lpszDocName = lpszDocName;
 di.lpszOutput = NULL;
0623594NGNG
あ。。。あぅ。。。あぅぅ。。。。。

面目ないっ m(_ _)m

みんな、いい香具師だなぁ。好きだぜ、みんな!じゃー逝ってくる!
0624デフォルトの名無しさんNGNG
>>575
インスタンスを作成する関数を作って返す
とありますが、どのような形でポインタを返せばいいのでしょうか?
0625602NGNG
やはり、誰もわからないみたいですね。
致命的なバグか?
0626デフォルトの名無しさんNGNG
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; }

それだけ。
0627デフォルトの名無しさんNGNG
>>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; }

0628デフォルトの名無しさんNGNG
ほう、何も継承しないのか
0629デフォルトの名無しさんNGNG
?
public ですか?
継承ですね。はぁ。
0630デフォルトの名無しさんNGNG
COMのようでCOMじゃない
0631デフォルトの名無しさんNGNG
はぁ。何かつかめた気が。
でも、
IBeeper*CreateBeepInterface() { return new CBeeper; }
DeleteBeepInterface(IBeeper*p){ delete p; }
が解りません。
どういう意味でしょうか?
0632572NGNG
>>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 //
0633デフォルトの名無しさんNGNG
CBeeperのクラス名やら実装やらをIBeeper利用者に見えなくするのでは?
0634デフォルトの名無しさんNGNG
626=629=631
(・∀・)ジサクジエーン
0635デフォルトの名無しさんNGNG
自作自演の使い方を激しく間違っている634萌え
0636デフォルトの名無しさんNGNG
>>633
そういう意味なんですか。
CreateBeepInterfaceというのはどこから出てきたのですか?
0637デフォルトの名無しさんNGNG
>>636
"COM"だとか"インターフェースと実装の分離"で調べれ。

それから、スレ違いなのでここでやるのはよせ。
0638デフォルトの名無しさんNGNG
ウインドウがGetOpenFileNameやGetSaveFileNameで開かれた
ダイアログかどうかを調べたいのですが、
その方法がわからず困っています。

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

何か良い方法はないでしょうか?
よろしくお願いします。
0639デフォルトの名無しさんNGNG
>>625
誰のバグだよ
どうでもいいがそのハンドル紛らわしいからやめてくれ
0640デフォルトの名無しさんNGNG
>>638
そのウィンドウに属する子ウィンドウの種類やテキストから強引に……w
0641575NGNG
なんか、反応が無いもんで昨日は寝ちゃったよ

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

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

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

ちなみにここで出てきた名前は全て君が勝手に名前を付けても良い。
> どこから出てきたのですか?
とかそう言うレベルの話じゃない、君が決めていいんだよ。
0642デフォルトの名無しさんNGNG
>>641
解説するだけ無駄な気がしないでもない
0643デフォルトの名無しさんNGNG
>>640
やっぱり、それしかないですかぁ。

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

どうもありがとうございました。
0644デフォルトの名無しさんNGNG
>>641
>仮想クラス
C++用語なら抽象クラス
COM用語ではインターフェース

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

>COMの話じゃないって
まあ確かに
COMの話のできそこないだ
0645644NGNG
>ソースを公開。
ヘッダな
そういう説明が必要な相手は激しく誤解するぞ
0646デフォルトの名無しさんNGNG
そういう重箱の隅をつつくようなセコい突っ込み、おじさんは嫌いだな
0647デフォルトの名無しさんNGNG
>>644-645
IBeep のように純粋仮想関数だけで形成されてるクラスならヘッダだけで良いけど
実装を含む場合はソースも公開してやるかlibファイルを作って公開してやる必要があると思うんで、
とりあえずヘッダ、とだけ言うとヘッダだけ公開しそうなんで。

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

だれか、ソースをください。参考になる。
0649デフォルトの名無しさんNGNG
汎用的な実装についてはCOMを眺めたほうがいいんじゃない
特定用途ならGetProcAddressで充分だと思うけど
0650デフォルトの名無しさんNGNG
16進数文字列を数値に変換する関数ってなかったっけか?
普通のCのライブラリにはないようだけど。
あったらスマソ。
0651デフォルトの名無しさんNGNG
>>650
sscanf(a,"%x",&b);

って感じ?
0652デフォルトの名無しさんNGNG
>>650
strtol
0653名無し@沢村NGNG
>>650
sscanf()

さあ、謝れ。
0654デフォルトの名無しさんNGNG
>>653
二代目沢村として兄者を恥ずかしく思うよ。
0655650NGNG
ぐぇ、そんな関数あったんだ。
scanf()は知ってたけど、標準入力からだしなぁと思って。
10年戦士なのに、意外なところに穴があるもんだ。
なにはともあれサンクスコ(´・∀・`)
0656デフォルトの名無しさんNGNG
リストビューで特定の項目のテキストの色を変えたいのですがどうすればよいですか?
ListView_SetTextColorを使ったら全てのテキストの色が変わってしまいました。
0657デフォルトの名無しさんNGNG
OwnerDraw
0658デフォルトの名無しさんNGNG
>>646
>ネタ、板とは関係の無い話題はご遠慮ください。
↑↑
もう一度言う
C++用語なら抽象クラス
COM用語ではインターフェース

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


>>647
クラス名のプリフィックスをIとCにしながら
Iで始まるクラスに実装を含めるのはWin32では沢村かお前だけ
0659デフォルトの名無しさんNGNG
リストビューで2番目以降の項目にアイコンを表示するにはどうしたら良いですか?
最初のカラムにしかアイコンが表示されないのですが。
0660デフォルトの名無しさんNGNG
カスタムドローするよろし
0661646NGNG
>>658
そういう重箱の隅をつつくようなセコい突っ込み、おじさんは嫌いだな
0662デフォルトの名無しさんNGNG
>>661
必死だな(藁
0663デフォルトの名無しさんNGNG
PGにバグを放置する権利はない
0664663NGNG
名乗るのを忘れた
洩れは662だ
0665デフォルトの名無しさんNGNG
リストビューのフォーカスの点線を実線にしたり色をつけたりしたいのですが、
どうしたらできるでしょうか。
0666602NGNG
誰もわからないようだな(汗
0667デフォルトの名無しさんNGNG
>>665
自分で書く
WM_DRAWITEMとか捕まえられなかったっけ

>>666
666ゲットを機に粘着さんは消えてくださいませ。
0668デフォルトの名無しさんNGNG
>>666
つーかてめーは、全スレから延々とRebar関係の質問してるだろ。
いい加減にしろよ。
0669デフォルトの名無しさんNGNG
>>666
誰もわかりません。
ですからもうこないでください。
0670デフォルトの名無しさんNGNG
>>666は神!
http://news2.2ch.net/test/read.cgi/newsplus/1043111900/600-
0671602NGNG
何で消えなきゃいけないんだよヴォケども
0672デフォルトの名無しさんNGNG
   ∧∧     ┌──────────
  ( ´ー`)   < てりめーだヴァカ
   \ <     └───/|──────
    \.\______//
      \       /
       ∪∪ ̄∪∪
教えて君にあるまじき無礼な発言(ex.>>618)
未定義動作の意味を激しく誤解(ex.>>598)
>>623から>>625への痛すぎる言動の変化
マルチやめろって顰蹙を無視した結果と思われ

おまえ沢村並み
0673デフォルトの名無しさんNGNG
むしろ沢村のほうがマシに思える
0674デフォルトの名無しさんNGNG
なんかこのバカ、ずっと同じ質問繰り返してないか?
コテハン変えて何度も質問したり。
最初はまともな態度だったから許容してたが、最近態度がでかくなってきた。
0675デフォルトの名無しさんNGNG
本当にmanifest確認したのかなぁ
よし6.0.0.0 Ok!とかいってそうだ
0676デフォルトの名無しさんNGNG
>>674
このスレの>>53あたりからずっとこいつだな。
最初から舐めた態度だが。>>55とかな。
0677デフォルトの名無しさんNGNG
整数演算関係のAPI関数って

Int32xTo64
Int64ShllMod32
Int64ShraMod32
Int64ShrlMod32
MulDiv
UInt32x32To64

以外に無いですか???
知っていたら教えて欲しいでごわすの東北人。
0678名無し@沢村NGNG
>>677
MSDNを見れば分かる話だから、教えてあげないよ。ヌヒよ。
0679デフォルトの名無しさんNGNG
>>677
APIはMulDiv(KERNEL32)のみ
他はマクロ
0680デフォルトの名無しさんNGNG
ドライブ文字の割り当てられていないCD-ROMで
メディアの入れ替えを検出するにはどのように
すればよいのでしょうか?

よろしくお願いします。
0681デフォルトの名無しさんNGNG
>>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に入るとエラーが出ます。
どうすればよいのでしょう?
0682デフォルトの名無しさんNGNG
>>681
エラーメッセージくらい書いてください。
0683デフォルトの名無しさんNGNG
>>681
> GetData *gsf = (GetData*)::GetProcAddress(hDllInstance, "GetData");
おいおい…

GetProcAddress() が返すのは「GetData 関数へのポインタ」だろ。GetData を
実行した結果じゃなくて。
0684デフォルトの名無しさんNGNG
GetData gsf = (GetData)::GetProcAddress(hDllInstance, "GetData");

こうじゃないの?
0685デフォルトの名無しさんNGNG
> typedef CFormat * __stdcall GetData();

こんなんだっけ?
0686デフォルトの名無しさんNGNG
>>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 を
実行した結果じゃなくて。
0687デフォルトの名無しさんNGNG
>>683
痛すぎ(激藁
0688デフォルトの名無しさんNGNG
>>685
関数ポインタへの typedef にしたいなら、括弧の位置が違うような。

typedef CFormat (*__stdcall GetData)();
0689688NGNG
* 一個抜けてた。

typedef CFormat* (*__stdcall GetData)();
0690デフォルトの名無しさんNGNG
そうだよねえ
0691デフォルトの名無しさんNGNG
こーでねえ?
typedef CFormat * ((__stdcall *)GetData)()
0692デフォルトの名無しさんNGNG
最近 win32api の勉強を始めた者です。
WinMain の中の変数etc.を
ウィンドウプロシジャに引き渡すには
外部変数にするしかないんでしょうか?
消防質問ですみません。

0693デフォルトの名無しさんNGNG
>>692
ヒープ上に領域を確保した上で、その領域へのポインタを SetWindowLong()
するとか。
0694デフォルトの名無しさんNGNG
>>693
ありがとうございます。
SetWindowLong()とか知らないので調べに
逝ってきます。
0695デフォルトの名無しさんNGNG
>>641
昨日の話に反応するけど
> 使い終わったら DeleteBeepInterface で削除するのをお忘れなく。
これ、仮想デストラクタでよろしく済ませるってのは無しなん?
0696デフォルトの名無しさんNGNG
COMを知らない奴はこれだから・・・
0697デフォルトの名無しさんNGNG
>>696
具体的な問題点か、情報へのポインタぷりーず。

俺は COM で Detele* 用意しているのは、単に C からも呼び出せるようにするため
かと思ってた。
0698デフォルトの名無しさんNGNG
>>695
よろしく済ませるならスマートポインタでは?
0699デフォルトの名無しさんNGNG
>>698
いや、そういう話では…
0700デフォルトの名無しさんNGNG
>697
DLL(plugin)のnew,deleteと
本体のnew,deleteが同じという保証がない。
DLLでnewするなら、DLLでdeleteしないと死亡の恐れがある
0701デフォルトの名無しさんNGNG
Create/Deleteを明示的によぶことで、
実装側で実体をnewで確保しようがmallocで確保しようが、
グローバル変数領域に自前で確保していようが、
利用側には影響しない。

もっと具体的にいうと、
実装側と利用側がVC++を使っていたとして、
コンパイルオプションが、片方はLIBC使用、他方はMSVCRT使用
だとしても、問題が起こらない。
通常はこれらをまたいでヒープをやり取りすると、おかしくなる。
0702695NGNG
>>700
納得。
0703デフォルトの名無しさんNGNG
684以降のレスはなに?
602氏の方がはるかにマシに見えるのだが
0704デフォルトの名無しさんNGNG
気にせず、サクッと黙殺しとけ。どうせ害はない。
0705684=685NGNG
>>703
漏れが何かまずい事を書いたか?
0706デフォルトの名無しさんNGNG
ちょっとお尋ね申し上げますが、
Acrobat SDK を SDK だけで使う例とかを
紹介しているサイトってないでしょうか?

てゆーかスレタイの Win32API って !MFC って意味だよね?
それともやっぱスレ違い?
0707デフォルトの名無しさんNGNG
一応VCとは限らんと言っておく<Win32API
0708デフォルトの名無しさんNGNG
SendMessageCallbackって、他のスレッドからだと動かなかったりします?
ドキュメント見ると問題なさげではあるのですが、現に動かない…
Win2kです。
0709デフォルトの名無しさんNGNG
>>707
MFC=VCか。おめでてぇな。と釣り糸を垂らしてみる。
0710デフォルトの名無しさんNGNG
>>708
あなたのクソコードに問題があるのでは?見せてみて。
0711579NGNG
自作アプリをいろいろいじってみた結果
ウィンドウからツールバーを外したらなぜかステータスバーの色が
変わらなくなった。ツールバーを付けたらまた変わるようになった。
いくらステータスバーだけのサンプルをいじくっても分からないわけだ
0712デフォルトの名無しさんNGNG
>>711
602か?
XPではCOLOR_BTNFACEではなくCOLOR_MENUBARのほうに影響されるのかも
0713579NGNG
>>712
別人。Win95だとWM_SYSCOLORCHANGEを転送してやる
必要があったけどXPでは関係なさげ。確かにバグっぽいなこれ
0714デフォルトの名無しさんNGNG
是非 MS にバグレポート出してくれ。
0715デフォルトの名無しさんNGNG
てすと
0716708NGNG
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だと相手のウィンドウ関数を書き換えずに済むから)
0717デフォルトの名無しさんNGNG
ぎゃっはっははははははははっはあはっはあはっははははははははっはあはっはあ
はっははははははははっはあはっはあはっははははははははっはあはっはあはっははははははははっはあはっは
はははははっはははhはっははははははははっはあはっはあははははっはははははあはh
はははっはっははっははははははははっはあはっはあはははははははあははは
0718デフォルトの名無しさんNGNG
>>716
http://www.microsoft.com/JAPAN/developer/library/jpuipf/_win32_sendmessagecallback.htm
SendMessageCallback 関数を呼び出したスレッドが、GetMessage、PeekMessage、WaitMessage
のいずれかの関数を呼び出した場合にのみ、このコールバック関数が呼び出されます。

とあるが。
0719デフォルトの名無しさんNGNG
SetTimerしてるのにタイマコールバックが呼ばれません
↓
DispatchMessageしていますか?
系の罠か。
本当にプリエンプトしてほしいなら素直にスレッド作れ。
0720708NGNG
がーん…使えねえ…。
718さんありがとう。英語ドキュメントを斜め読みしただけでした。読めてなかった。シクシク。
0721デフォルトの名無しさんNGNG
まぁ、普通に考えて同一スレッドで非同期にコールバック関数が呼ばれるタイミングって
Windows側に制御が渡ってる状況しかないんだから、当然といえば当然なんだが。
0722デフォルトの名無しさんNGNG
ちょっと勉強してみたいんだけど、どっかに
VC++ か BCC 用の ping のソース落ちてないかな?
0723名無し@沢村NGNG
>>722
ヌヒよ、たぶん落ちてるんじゃないか。
0724デフォルトの名無しさんNGNG
VCかSDKのサンプルの中にpingなかったけ。
0725デフォルトの名無しさんNGNG
「ICMP.DLL サンプル」とかやるとわらわら出てくるな。
0726デフォルトの名無しさんNGNG
>>722
サンプル: Raw ソケット版 ping
tp://www.kt.rim.or.jp/~ksk/wskfaq-ja/examples/rawping.html
0727722NGNG
>>725
>>726
大変いいヒントいただきました。どうもありがとうございました。
0728602NGNG
皆さん、お久しぶりです。
余り質問をしすぎて、迷惑をおかけしまして、すいませんでした。
というより、Rebar関係は、バージョンアップの激しい部分ですので、何か不具合が多いのですよ。
苦労しています。

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


あと、
「「「671 名前:602 投稿日:2003/01/26(日) 04:34
何で消えなきゃいけないんだよヴォケども」」」
↑
これは、私の書き込みではないですよ。
偽者ですか、ID制を導入してみてはどうですか?
0729デフォルトの名無しさんNGNG
何でてめえなんかの為にID制を導入しなきゃいけないんだよヴォケ
0730デフォルトの名無しさんNGNG
>>728
たのむからもう来ないでくれ。
あと、貴様ごときにID導入するほど価値はない。
0731名無し@沢村NGNG
>>728
ヌヒよ、キャップを付けなさい。
0732602NGNG
あれ?怒ってるなww

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

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

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

私みたいなプログラム初心者もいるのですから。初めて日が浅いのですよ。
0733デフォルトの名無しさんNGNG
怒ってるのはID導入のことについてだろ。
基本的な読解力ないから嫌われるんだよ。
0734602NGNG
ただ、プログラミングは面白いですね。
初めて2ヶ月目なので、これからどんどん勉強していこうと思います。

あと、>>729さんと、>>730さんは、ひどいことを言いますね。
なにも悪いことをしてないのに。
しかも、午後2時前後の書き込みですか。
お仕事はしてないのですか?
0735デフォルトの名無しさんNGNG
>>732
君はプログラミングの勉強の前に、まず質問の仕方から覚えるといい。
0736602NGNG
貴様ごときにID導入するほど価値はない。
↑
貴様ごときってw
この発言が、「怒ってるのはID導入のことについてだろ。」だとは思わないな。

うーん、こんなにガラの悪い人が多いとは・・・。
がっかりですね。
まぁ、プログラムをする人でも、性格の悪い人は山ほどいるでしょうけどねw
0737602NGNG
ああ、なるほど。
「わかる人がいないみたいだな。」というのが、貴方達のプライドに傷がついたわけですね。

これのほかに、失礼な書き込みはしてないですよ。
これぐらいで怒るようでは、まともな社会生活はできないと思いますが。
0738602NGNG
時間がないので寝よ。
どっちにしろ、Win2000で開発を再開したので問題なく進んでいます。
0739デフォルトの名無しさんNGNG
>>728
671 で困ってる人はあんた以外に一人も居ないよ。
あんたの心証だけで何でいきなり ID 導入という話になるの?

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

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

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

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


↑ で、自分で言うのもなんだけど、どこを縦読みすればいいんだ?
0740デフォルトの名無しさんNGNG


愚民ども、しずまれぇ〜
0741602NGNG
>>739
ああ、勘違いしてますね。
ただ、わかる人がいるのかな?と聞いただけです。
わからないのなら、それでもかまわないのですから。

それを、いきなり「自分で調べろ!」だとか、わかっている内容を「MSDNを見ろよ」とか、なにか攻撃的ですね。
まぁ、どうでもいいですけど。
問題は自分で解決しましたので。
0742デフォルトの名無しさんNGNG
602 の中の人も可哀想だな。
0743デフォルトの名無しさんNGNG
>>741
あぁあぁ。消えろ。もうここにいる用は無いだろ。
もう二度とくんな。2ちゃんねるから出て行け。
0744デフォルトの名無しさんNGNG
>>741
もう一度聞くけど、そういう発言をすることによって、何を達成したいの?
どういう目的があるの?
0745602NGNG
プ
0746デフォルトの名無しさんNGNG
>>744
もうどうでもいいだろ。粘着だな。お前。
0747デフォルトの名無しさんNGNG
何? 祭り? ワショーイ
0748デフォルトの名無しさんNGNG
>>602はまだ寝ていないに全部。
0749デフォルトの名無しさんNGNG
>>747
あおるな。はげ。
0750デフォルトの名無しさんNGNG
ぶはは
煽られてるよ602が(w
ここにいる奴らはヒッキーの集まりだから気にするな(w
これで安心したろ(w
0751602NGNG
安心しますた(プ
0752デフォルトの名無しさんNGNG
VB なんですが、

Private Type EVENTLOGRECORD
  (中略)
End Type
Private Declare Function OpenEventLog Lib ...
Private Declare Function ReadEventLog Lib ...
Private Declare Function CloseEventLog Lib ...

Public Sub main()
Dim hwnd As Long
Dim pbuf As EVENTLOGRECORD
Dim bufAddr As Long
Dim BufSize As Long
Dim ReadBytes As Long
Dim NextSize As Long
Dim Ret as Boolean
hwnd = OpenEventLog("PC名", "Application")
BufSize = 1
Ret = ReadEventLog(hwnd, 4, 0, pbuf, BufSize, ReadBytes, NextSize)  ここ!

(中略)

Ret = CloseEventLog(hwnd)
End Sub

(ここ!)の点でエラーが出るんですが
どこがおかしいですか?
0753752NGNG
エラーはパラメータエラー(87)です。
GetNumberOfEventLogRecordsを使った場合
イベントの個数は取れていますので
hwndはうまく取れているはずですが...
0754デフォルトの名無しさんNGNG
>>752
VBは使ったことがないけど
最後の二つのパラメータはAddressOfしてやる必要があるかもしれない
0755754NGNG
AddressOfではなくByRefか
0756デフォルトの名無しさんNGNG
>>753
ReadEventLogのDeclareを省略しないでちゃんと書け。
0757デフォルトの名無しさんNGNG
>>755 ByValかVarPtrかもよ。
0758753NGNG
>>756
宣言部はAPIビューアで作りました。


Private Declare Function OpenEventLog Lib "advapi32.dll" Alias
"OpenEventLogA" (ByVal lpUNCServerName As String, ByVal lpSourceName As String) As Long

Private Declare Function ReadEventLog Lib "advapi32.dll" Alias
"ReadEventLogA" (ByVal hEventLog As Long, ByVal dwReadFlags As Long, ByVal
dwRecordOffset As Long, ByRef lpBuffer As EVENTLOGRECORD, ByVal
nNumberOfBytesToRead As Long, ByRef pnBytesRead As Long, ByRef
pnMinNumberOfBytesNeeded As Long) As Long

Private Declare Function CloseEventLog Lib "advapi32.dll" (ByVal hEventLog As Long) As Long
0759デフォルトの名無しさんNGNG
BufSizeが1では小さすぎる
0760デフォルトの名無しさんNGNG
>>759
まずは、バッファサイズ不足エラーを起こして
pnMinNumberOfBytesNeeded
の値をBufSizeにセットしなおして
再度ReadEventLogを行うと思ってるんですが。

それなのにパラメータエラーを起こしちゃって...
0761759NGNG
2番目のパラメータが4ではまずいようです
EVENTLOG_SEQUENTIAL_READ (=1)
EVENTLOG_SEEK_READ (=2)
のうち一つを含む事とあります
EVENTLOG_FORWARDS_READ (=4)
だけでは不正です
0762デフォルトの名無しさんNGNG
>>752
本筋とは関係無いけど、何で hwnd?
0763753NGNG
>>761
あっ、そういうことでしたか。
読み違えてました。
http://www.microsoft.com/japan/developer/library/jpwinpf/_win32_ReadEventLog.htm
あす、会社で試してみます。
ありがとうございました。
明日、結果を報告します。(明日の晩までこのスレあるかな...)


>>762
どっかのサンプルをコピペしただけなんで、
理由を聞かれてもちょっと...
とりあえず動くようになれば
社内の標準化に則って書きなおすんで
あまり気にしてなかったです。
やっぱ、ちょっとは気にしたほうがいいですねえ。
0764デフォルトの名無しさんNGNG
>>761
そういえば、
EVENTLOG_SEQUENTIAL_READ (=1)
で試したときもダメだったような気がしますが...
自信が無いので明日確認してきます。
0765デフォルトの名無しさんNGNG
あるフォルダの中に、ファイルが入ったり、消されたりしたら、そのことを
取得したいのですが、どうしたらできるでしょうか。
エクスプローラは他のプロセスでファイルが変更されると、
すぐに表示を更新(F5ではない)しています。あれと同じことをしたいのです。
どうかよろしくおねがいします。
0766デフォルトの名無しさんNGNG
>>765
FindFirstChangeNotification() のあたり
0767デフォルトの名無しさんNGNG
>>763
とりあえず動く、程度ではいざバグが出たときにどこを直していいか判らなくなる可能性大
0768763NGNG
訂正
「とりあえず」→「ちゃんと」
0769デフォルトの名無しさんNGNG
>>768
プログラムをしっかりしろという事ではなく、書いてる人間が自分が何をして
いるか把握せよという事では?
0770デフォルトの名無しさんNGNG
>>766
ありがとうございます。\(>▽<)/
助かりました。
0771名無し@沢村NGNG
>>766
ヌヒよ、NT系ならReadDirectoryChangesW()のほうが詳細な情報を取れるぞ。
あとWin2k以降ならSHChangeNotifyRegister()というのもある。
0772549NGNG
完全無視されてるところを見るとやっぱ単に煽りにきてただけなのね。
0773579NGNG
名前間違えた
0774デフォルトの名無しさんNGNG
>>771
SHChangeNotifyRegister?
解説をお願いできないでしょうか?
0775名無し@沢村NGNG
>>774
http://www.pcquest.com/content/coding/102070301.asp
0776774NGNG
>>775
THX!
・・・やはり英語しか無いですか(--;
時間かけて読むしか無いっすね。
0777602 ◆hOJBbTlYfs NGNG
こんちはーす。

Rebarの件ですけど、解決しました!(涙)
BYE。
0778デフォルトの名無しさんNGNG
>>777
BYE。
0779579NGNG
結局何が問題だったんだろう
0780デフォルトの名無しさんNGNG
言うに言えない単純ミスじゃ
0781デフォルトの名無しさんNGNG
>>779
BYE。
0782753NGNG
>>761
イベントログの読み込みの件
うまくいきました。

ただ...メモリ例外が出まくり...
VBでメモリ管理しないといけないのか...
変数宣言とメソッド実行する位置を入れ替えたりすると
収まったりして大変です。
0783デフォルトの名無しさんNGNG
あばよReBarでカモフラージュした単なるキリ番ゲッター

>ALL
888をブロックしたらオモロイかもな
0784↓の830(not 829)NGNG
http://pc2.2ch.net/test/read.cgi/tech/1041879465/829-

spy++のプロセス表示やProcessViewerがいつのまにか
おかしくなっている人います?
俺だけかと思ったらそうでもないみたいだし。
0785デフォルトの名無しさんNGNG
ReBarの不具合対策スレを立てればいいと思う。
0786デフォルトの名無しさんNGNG
>>682
デバッグエラーなんです。
return new CWavApp;
でエラーが起こっているみたいで。
Delete以前の部分の問題なんです。


0787デフォルトの名無しさんNGNG
>>786
じゃぁCWavAppでエラーが起こってるんでしょ
GetProcのソースを提示しても意味なくない?
0788デフォルトの名無しさんNGNG
>>787
そうだとは思うのですが、
CWavAppは何もないクラスなんです。
コンストラクタにMessageBoxがあるくらいで。
0789デフォルトの名無しさんNGNG
>>788
コンストラクタにMesssageBoxって……それはギャグですか?
何も考えてないんだね。
0790デフォルトの名無しさんNGNG
>>789
確かに珍しいケースではあるが
CWavApp::CWavApp()
{
  ::MessageBox(NULL, "アヒャヒャヒャ", "(゚∀゚)", MB_OK);
}
とかじゃねーだろ、いくら何でも

ユーザに起因するエラーならあり得なくもないぜ
0791bccのグラフィックNGNG
#include <windows.h>
#include <stdio.h>
#include <conio.h>
int Locate(HANDLE hOut, int x, int y)
{
COORD dwPos;
dwPos.X = (SHORT)x;
dwPos.Y = (SHORT)y;

if (SetConsoleCursorPosition(hOut, dwPos) == 0)
return -1;
else
return 0;
}
int main()
{
HANDLE hStdout;
int i;
hStdout = GetStdHandle(STD_OUTPUT_HANDLE);
for(i=0;i<=10;i++){
Locate(hStdout, 10, 5+i);
printf(" C program ");
}
return 0;
}
0792bccのグラフィックNGNG
791、なんかあっちこっちを、めぐりめぐって
適当に合体させてつくりました。
こういう使い方ってありなんでしょうか(^^;
作った本人が一番理解してないという、、、
コンソールアプリとして動くグラフィックがほしくて
やっています。
0793デフォルトの名無しさんNGNG
>>792
似たようなのN88BASICとかDOS時代によく書いたよ。

\x1b[32mとかで色が変わるぞ。と。
0794bccのグラフィックNGNG
いや、エスケープシーケンス使えるんならつかうんですけど
2000以上だと使えなくて、それで、こんな事やってるんです。
bccだとgdiとかないみたいだし、、どうすればいいのか
わかんなくて
0795デフォルトの名無しさんNGNG
>>794
> bccだとgdiとかないみたいだし
そんなことはない。
0796bccのグラフィックNGNG
え あるんですか、5.1であるんですか
0797bccのグラフィックNGNG
dos/Vなんですけど、初期化とかわからなくて
gdiの初期化って初期化って初期化って初期化って
0798bccのグラフィックNGNG
画面消去とカーソル移動だけでも
せめて
0799デフォルトの名無しさんNGNG
    _, ._
  ( ゚ Д゚)
  ( つ旦O
  と_)_)

    _, ._
  ( ゚ Д゚)
  ( つ O
  と_)_) 旧 ガシャ
0800デフォルトの名無しさんNGNG
>>798
ANSI.SYSを入れておいて、ANSIエスケープシーケンスで制御しる!
画面消去は ESC '[' 'K' …だったかな?
カーソル移動は ESC '[' 'A' …とか。
詳しく知りたけりゃあ、ググってみれ。
0801デフォルトの名無しさんNGNG
>>796
5.1 ではなく 5.5.1 じゃねーのか?

>>800
> ANSI.SYSを入れておいて、ANSIエスケープシーケンスで制御しる!
Windows 2000 だと動かんがな。
0802名無し@沢村NGNG
ヌヒ等よ、テキストエディターだが、一度に何バイトの文字まで使って大丈夫なの?
一度に5万文字くらい表示したいんだが、大丈夫?
一度に5万文字いっぺんにコピペしたりするときエラー出ない?
0803名無し@沢村NGNG
>>802
ヌヒよ、くだらない質問は避けよう。
0804デフォルトの名無しさんNGNG
>>802
たずねるときの沢村はそんなのじゃない。
0805デフォルトの名無しさんNGNG
WS_SIZEBOX や WS_THICKFRAME を指定していない Window で
ユーザによるウィンドウサイズ変更をサポートする方法はありませんか?
WM_NCHITTEST で HTLEFT などを指定しても無効なようです。
0806デフォルトの名無しさんNGNG
>>805
素直に WS_THICKFRAME 指定すりゃいいじゃん……
0807デフォルトの名無しさんNGNG
ANSI.SYS + 2000はちゃんと動きます。
ぐぐりましょう。
0808805NGNG
>>806
ウィンドウの境界は自前で描画しているので、
WS_THICKFRAME したくないんです・・・
そういう挙動をしているアプリも割と見かけるとは思うのですが、
どのように実現しているのやら。
0809デフォルトの名無しさんNGNG
>>792
SetConsoleCursorPositionの引数は本当はコンソールスクリーンバッファの
ハンドルが必要なんだが、791のソースで動いてるの?
0810bccのグラフィックNGNG
動いております。。>791
bcc5.5 win98
0811デフォルトの名無しさんNGNG
コンソールじゃなくてファイルにリダイレクトさせた場合はコントロールシーケンスとかが
書き込まれてるんだろうが?
0812bccのグラフィックNGNG
すいません811は何をいわれているのでしょうか(^^;
0813デフォルトの名無しさんNGNG
>>808
WM_LBUTTONDOWNでSetCapture
WM_MOUSEMOVEでSetWindowPos
WM_LBUTTONUPでReleaseCapture
ではだめか?
こっちで動作確認してないが
0814デフォルトの名無しさんNGNG
>>797
Windowsじゃなくて
DOS/VでもGDIってあったの?
ていうかWindowsの方が画像扱うなら楽じゃないの?
0815デフォルトの名無しさんNGNG
>>814
いつのbccよ?
5.5ってWin32以外のバイナリ吐けるの?

って言うかお前の提示したコードは思いっきりWindowsだ。
0816デフォルトの名無しさんNGNG
DOS/V の V は VIDEO の V
0817デフォルトの名無しさんNGNG
>>816
違う
0818デフォルトの名無しさんNGNG
バイリンガル。
0819デフォルトの名無しさんNGNG
>>817
違うの?
Visual? Void? Virtual?
0820デフォルトの名無しさんNGNG
Vector
0821デフォルトの名無しさんNGNG
>>818
DOS/B ワラ
0822デフォルトの名無しさんNGNG
Virgin
0823デフォルトの名無しさんNGNG
DOS/V
ドス/ヴァジャイナ
0824デフォルトの名無しさんNGNG
DOS VGA
でビデオだと思ってたけど
正解はなんなの?
0825デフォルトの名無しさんNGNG
正式な説明はないそうで・・・
http://forum.nifty.com/fpcu/words/dosv.htm
0826gn355my0NGNG
あれ?V-TextのVだったんじゃなかったっけ?
0827デフォルトの名無しさんNGNG
>>826
じゃあVってなんだよ。

・・・30行計画?
0828ホゲ ◆k2kPA91QO. NGNG
ドスブイのブイは
0829デフォルトの名無しさんNGNG
ビデオモードを使ったドスなんだから
ビデオでいいじゃんよ
0830gn355my0NGNG
>>827
うん、variable-text の略だったように思うけど。。。
まぁどっちゃにしてもスレ違いなので話を戻すと

>>813
そりはダメっぽいぞ。
>>805 で近いとこまで行ってると思うけどナー
0831デフォルトの名無しさんNGNG
ピーシードースーV(ファイブ)にー全てをかけてー
0832デフォルトの名無しさんNGNG
ボルテースーVの〜正義を込めて〜
0833デフォルトの名無しさんNGNG
>>831
わかりにくいぞ。
0834デフォルトの名無しさんNGNG
ビデオボードの情報を調べるのってどうするの
ボードの名前とかビデオメモリ容量とか
0835デフォルトの名無しさんNGNG
ボルテスはファイブだろ
ブイならコンバトラー
コンバインするけど納期じゃないぞ
0836デフォルトの名無しさんNGNG
>>835
みんな知らないって。奴隷獸問題で再放送されないから。
0837デフォルトの名無しさんNGNG
>>807
16ビットアプリだけな。
Win32アプリには効果なし。
0838デフォルトの名無しさんNGNG
ハンドルの種類をしらべるAPIがあったと思うんですが、なんでしたっけ?
0839デフォルトの名無しさんNGNG
SetPixelVってなんで
あんなに遅いの?
0840デフォルトの名無しさんNGNG
>>839
APIオーバーヘッドだろうね。
0841デフォルトの名無しさんNGNG
SetPixelVだけで
全ての描画をやろうとしたら
アホみたいに遅くなったよ…
166MHz!の高速CPUなのにさぁ
0842デフォルトの名無しさんNGNG
>>841
最後のエクスクラメーションマークは一体なんだ?
0843名無し@沢村NGNG
>>842
ヌヒよ、それはPentium!!!を表しているのだよ。
0844デフォルトの名無しさんNGNG
>>842
階乗? そりゃ速いな。
0845デフォルトの名無しさんNGNG
DIBセクションをオフスクリーンにして直接点打って
適当なタイミングでBitBltしる
0846デフォルトの名無しさんNGNG
VFWもWin32だけどサポートされなくなるそうですが
これらで書かれているアプリはなにで書き直すのがいいですか?
0847デフォルトの名無しさんNGNG
>>846
DirectShow
0848デフォルトの名無しさんNGNG
>>847
ありがとう。やっぱりそうか。
DirectShowはVFWドライバとWDMドライバの両刀つかいって本当ですか?
Type-IのaviファイルはVFWで扱えないけどDirectShowなら扱えるってあってますか?
0849デフォルトの名無しさんNGNG
> DirectShowなら扱える

そういうフィルタがあれば扱える。
DShowはそういうもの。
0850デフォルトの名無しさんNGNG
>>849
そうでしたか。どうもありがとう。ではでは。
0851デフォルトの名無しさんNGNG
>>849
codecじゃなくて?
0852デフォルトの名無しさんNGNG
VCMのCODECを使って画像をデコードするフィルタ(ラッパ)などがある
0853デフォルトの名無しさんNGNG
DirectShowのコンポーネントの単位はフィルタ。
0854デフォルトの名無しさんNGNG
>>846
そうなればDrawDibDraw()なんかも使えなくなるのですか?
0855デフォルトの名無しさんNGNG
ラッパってトランペットの事ですか?
0856デフォルトの名無しさんNGNG
ラッパー1発ぶっぱなせー♪
0857デフォルトの名無しさんNGNG
(-_-)?
0858デフォルトの名無しさんNGNG
サランラップの方だよ。とマジレス。

1 2 3〜を待たずに32小説の旅の始まり
0859デフォルトの名無しさんNGNG
Display *OpenDisplay(???);
の引数ってなんだったっけ?
NULLでいいんだっけか?
0860デフォルトの名無しさんNGNG
>>859
Win32か?
0861デフォルトの名無しさんNGNG
Win32だよ
0862デフォルトの名無しさんNGNG
Xだろ?
0863デフォルトの名無しさんNGNG
XならXOpenDisplayでしょ
0864デフォルトの名無しさんNGNG
>>860
Win64 でした。逝ってきます。
0865デフォルトの名無しさんNGNG
Nin64はどうよ?
0866846NGNG
>>854
サポートされなくなるらしいというのは私が聞いたハナシで定かではないです。
その後の調べでは「古いアプリケーションの為にVfWは今後もサポートされるが、拡張はない」ということらしいです
ではでは
0867デフォルトの名無しさんNGNG
dllからdllを読み込んでいるexeファイルの名前を取得するには
どうすればいいですか?
GetModuleFileNameはヽゝ゚ -゚νダメナノネ・・・
0868デフォルトの名無しさんNGNG
GetModuleFileName(0)でいけるけど?
0869デフォルトの名無しさんNGNG
VC++初心者ですが、VC++の新規作成でプロジェクト選択の時に
「Win32Application」とあって、このスレはこの環境での
プログラミングを考えていると思いますが・・・。
実際にはWin32applicationでは何をやるんですか?
0870デフォルトの名無しさんNGNG
>>869
メッセージループを回す
0871デフォルトの名無しさんNGNG
>>870
この限りではない。
0872869NGNG
すいません。
出来れば「人に寄るだろうけど、大体はこういう目的で利用する」
というようなことを書いていただけると有難いです。
0873デフォルトの名無しさんNGNG
>>868
(|| ゜Д゜)ガーン!!
見逃してました。ありがとう〜。
0874デフォルトの名無しさんNGNG
>>869
何するって、それを決めるのはお前だろうが。

今まで見た中でもっともくだらんネタだな。
0875869NGNG
>>874
死ね
0876デフォルトの名無しさんNGNG
軽はずみな発言をしたばっかりに死ななくてはならなくなった>>874

次回「本当に死ぬよ?」にエンジェラインジェラ〜♪
0877デフォルトの名無しさんNGNG
>>869
VCのバージョンは?
6の場合は
Win32 Application -> GUI用(大抵こっち,Hello worldで100行くらい)
Win32 Console Application -> CUI用(俗にDOS窓)
.NETの場合はウイザードに「どっちだ」と聞かれる
0878877NGNG
>>875
教えて君が挑発に乗っててどうする
無礼者は何も教えて貰えなくなるぞ

今回,答えたのはゲロ甘だったが
それは874がものすごいDQNだった
お陰ってことを忘れるな
0879869NGNG
>>877
有難うございます。

ハローワールドに100行ですか・・・・・・・・・・・・・・・。
マジでビックリです。。。。。。
0880デフォルトの名無しさんNGNG
test
0881デフォルトの名無しさんNGNG
3.3はもう普通に使える。なかなかいいかも。
というわけでネタなしのから揚げスマソ。
0882デフォルトの名無しさんNGNG
IEコンポを使い倒すのに参考になる書籍はありますか?
英語苦手なんで日本語のやつで
0883デフォルトの名無しさんNGNG
http://www.ebarafoods.com/games/games.html
焼き肉ゲーム
かなりシュールだw

0884デフォルトの名無しさんNGNG
市ね、マルチポスト野郎
0885デフォルトの名無しさんNGNG
DirectShow
0886デフォルトの名無しさんNGNG
>>868
おじさんは君の童貞がどうしても欲しい
0887デフォルトの名無しさんNGNG
人生に憑かれますた
0888602 ◆hOJBbTlYfs NGNG
♪お久しブリブリ
コモンコントロールの勉強は進んでますよ。
相変わらずRebarは複雑ですね。
てへっ。
BYE!
0889デフォルトの名無しさんNGNG
>>888
BYE。
0890デフォルトの名無しさんNGNG
>>788
extern "C" __declspec(dllexport) int GetClassObject(CTst** pOut)
{
CDtestApp* p = new CDtestApp;
*pOut = (CTst*)p;
return 2;
}
DLLの関数をとしてみたのですが、3行目 new -のところでデバッグエラーです。
どうすれば解決するでしょうか?
0891デフォルトの名無しさんNGNG
エラーの内容(ry
0892デフォルトの名無しさんNGNG
>>891
いえ、Debug Errorです。
実行中に、メッセージボックスがでてきて…。
LibraryDocumentをみろと。
0893デフォルトの名無しさんNGNG
>>892
LibraryDocumentをみろと。
0894デフォルトの名無しさんNGNG
エラーメッセージの指示に従えない香具師が他人の意見を受け容れられるとは思えないな。
0895デフォルトの名無しさんNGNG
>>894
解決方法は知らんが、それはちがうだろ。
0896デフォルトの名無しさんNGNG
CDtestApp::CDtestApp(??)
が有っても
CDtestApp::CDtestApp()
が無いとか。

CDtestApp::CDtestApp()
が有っても public でないとか。
0897デフォルトの名無しさんNGNG
スレとあんまり関係ないかもしれませんが
studio.netからの新しいヘルプファイルありますけど
そのファイルを開くソフトがダウンロードできるところありませんか?
ファイルはあるのに開くソフトがないのです
ヘルプだけ使いたくてプラットフォームSDKとかのヘルプファイルだけ使いたいのです
プラットフォームSDKに付いているヘルプを見るファイルを単体だけで使いたいのです
ヘルプだけが読みたいのです
他の物は何もいりません
ハードディスクの残りもあとわずかです
0898デフォルトの名無しさんNGNG
>>897
全く関係ないですね。
0899デフォルトの名無しさんNGNG
>>869
コンストラクタはデフォルトですので問題はありませんし、
デフォルトですから、Publicなのです。
0900デフォルトの名無しさんNGNG
>>899
誤爆?
0901デフォルトの名無しさんNGNG
896へのレスなんだろうな。

ちなみにクラスのメンバのデフォルトはprivateなんだが……
なにがデフォルトなんだろう。
0902デフォルトの名無しさんNGNG
class A
{
  A();
};

A は private。
つまり、

class A
{
private:
  A();
};

と書いたものと同じ。

コンパイルでエラーが出てないという事の方に疑問を感じるのだが。
0903デフォルトの名無しさんNGNG
実行時にエラーでるんだから何がしかの例外投げられてるんだと思うが。
0904デフォルトの名無しさんNGNG
デフォルトってのはMFCAppWizardのスケルトンのデフォルトって意味で
(それならpublic)、DLLからMFCアプリを構築しようとかそんなことを
考えてるような気がしないでもない
0905602 ◆hOJBbTlYfs NGNG
ご存知なら、・・・・。
Rebarのボタンのサイズ変更はどうのようにすればいいのでしょうか?
標準では、16ピクセルですよね、サイズが。
0906デフォルトの名無しさんNGNG
>>905
BYE
0907デフォルトの名無しさんNGNG
  Dim s As SHFILEINFO
  Call SHGetFileInfo(fname, 0, s, Len(s), SMALL_ICON)
  hb = GetStockObject(BLACK_BRUSH)
  Call DrawIconEx(g.hdc, x, y, s.hicon, 0, 0, 0, hb, DI_NORMAL)

版違いだったらすみません。

アイコンを、重ねあわせで表示したいのですが、これだと周りが
塗りつぶされてしまいます。ブラシを適当に変えてみましたが、
普通はどうやっているのでしょうか??
0908デフォルトの名無しさんNGNG
キーボード入力を横取りするグローバルフックプロシージャを作っていて、
フックを仕掛ける関数をフックプロシージャのあるDLLに置こうと考えて
います。

で、SetWindowsHookEx() に渡すインスタンスハンドルを DllMain() の
引数から得るわけですが、googleで見つかったサンプルコードをいくつか
見ると、取得したインスタンスハンドルを格納するグローバル変数を
sharedなセグメントに置くものとそうでないものとあります。

インスタンスハンドルを格納する変数はsharedセグメントに置くべきなのか、
別にそこまでする必要はない、一体どっちが正しいんでしょう?
0909デフォルトの名無しさんNGNG
>>908
shareしたほうがいいと思う。
0910デフォルトの名無しさんNGNG
>>907
ブラシはNULLでいいと思うんだけど。
0911907NGNG
上のコードは間違いです。
NULL_BRUSH (= 5)
でやっているのですが、重ね合わせにならないのです。
どうしたらいいのでしょう。
0912759NGNG
>>907
関係ないかもしれないけどDI_DEFAULTSIZEは?
0913907NGNG
NULL_BRUSH (= 5)
ではなくて、0を指定したら、うまくいきました。
DrawIconEx(g.hdc, x, y, s.IconNo, 0, 0, 0, 0, DI_NORMAL)
お騒がせしました。そしてどうもありがとう!!
0914デフォルトの名無しさんNGNG
>>900
どういうことですか?
0915908NGNG
>>909
どうもです。

で、さらに調べてみたところsharedにしないといけないのはフックハンドルで
あって、DLLインスタンスハンドルは別にsharedでなくても構わないようです。
確かにフックハンドルはsharedにしないと、他プロセスからフックプロシージャが
呼ばれたときに格納したフックハンドルが見えないし・・・

で、もう一つ質問なんですが、グローバルフックプロシージャが他プロセスから
最初に呼ばれる際、フックプロシージャがあるDLLの DllMain() は呼ばれるんでしょうか?
0916デフォルトの名無しさんNGNG
CallNextHookExに使うだけだったら、フックハンドルもsharedにする必要は無し。
DllMainは呼ばれる。
0917デフォルトの名無しさんNGNG
>>914

902 と 904 を読んでおきたまえ。
で、お前は 890 なのかい?
0918デフォルトの名無しさんNGNG
>>916
>CallNextHookExに使うだけだったら、フックハンドルもsharedにする必要は無し。
なぜ?
フックハンドルを渡さなくても一応は動くけど
他のフックが正常動作しなくなるよ
0919デフォルトの名無しさんNGNG
別スレッドに構造化例外をなげるAPIを教えてください。
0920デフォルトの名無しさんNGNG
>>919
SetThreadContextとか駆使してPCをRaiseExceptionのエントリに設定する。
ただしWin9xでは制限あり
0921デフォルトの名無しさんNGNG
>>906
ワラタ
0922デフォルトの名無しさんNGNG
>>906
(・∀・)イイ!!
0923デフォルトの名無しさんNGNG
>>905
バーヤ
0924908NGNG
>>916 >>918
遅くなりましたがありがとうございます。

とりあえずまとめると、

・DLL上のフックプロシージャが他プロセスから最初に呼ばれる際は DllMain() が呼ばれる
・フックハンドルはsharedにする必要がある
 (CallNextHookEX() には正しいフックハンドルを渡す必要がある)

ってことでいいんでしょうか?
0925厨房教えて糞NGNG
HTTP経由で自作アプリからエクスプローラへドラッグ&ドロップしたいと考えています。
以下にそのものずばり書いてあったのですが、
具体的にどうするのか皆目見当が付きません。

http://forums.belution.com/ja/vc/000/060/08.shtml
> ファイルの場合は、CFSTR_FILEDESCRIPTORを用い、
> CFSTR_FILECONTENTSを遅延レンダリングすることで、
> ドロップ後にサーバよりGETしてくることは可能
(ここで問題として挙がっているフォルダのケースは想定していません)

なにとぞお知恵を拝借いただければ幸いです。
0926デフォルトの名無しさんNGNG
漏れのAPIはすっごく大きんだぞ!
0927デフォルトの名無しさんNGNG
>>925
何を聞きたいのか皆目見当がつきません。
何言ってるのかわからないなら何言ってるのかわかるように勉強してください。
自力で。
0928デフォルトの名無しさんNGNG
>>926
それはすごい。
0929デフォルトの名無しさんNGNG
スクロールバーの隣に配置されるコントロールを作っています。
コントロールの高さはスクロールバー高さに合わせているのですが
いったん表示した後に画面のプロパティでスクロールバーの高さを変更されると、
コントロールとスクロールバーの高さにズレが生じてしまいます。
画面のプロパティが変更されたことを知るにはどうすればよいのでしょうか?
0930デフォルトの名無しさんNGNG
>>929
WM_SETTINGCHANGE
0931厨房教えて糞NGNG
>>927
お聞きしたいのは
> CFSTR_FILEDESCRIPTORを用い、 CFSTR_FILECONTENTSを遅延レンダリングする
方法です。
HTTPがどうのという部分は単体では出来るので、とりあえず関係なくて、
ファイルとして存在しないメモリ内のデータを(たとえばBYTE data[256])
エクスプローラに対してドラッグ&ドロップして実体化させたいのです。

CFSTR_FILEDESCRIPTORをExplorerに認識させることはできましたが、
CFSTR_FILECONTENTSをどうやって引き渡すのか分かりません。
ClipSpyで見てもCFSTR_FILECONTENTSは<Data unavailable>になっていて、
どうセットしてやれば良いのか分からない状態です。

色々と探しましたがどうもピンと来る説明が見付かりません。
↓は逆の「エクスプローラ→自作アプリ」の説明しか書いてないです。
http://www.codeproject.com/useritems/explorerdragdrop.asp

↓みたいなものがあれば理想なんですが、もう手に入らないです。
http://web.archive.org/web/20010702184003/http://www2.nkansai.ne.jp/users/yoshiki/vc/DnD.html
0932デフォルトの名無しさんNGNG
ウィンドウの移動が画面でのドラッグによるものか、
APIによるものかを区別するいい方法はないでしょうか?

ウィンドウを配置できる位置を制限したいと思っているのですが、
WM_MOVEを受け取った時不正な位置の場合SetWindowPosで
位置修正を行うようにすると、そのSetWindowPosのため、
またWM_MOVEが発生してしまいます。

今のところ、SetWIndowPosを使用する直前にフラグをたてることで
移動がドラッグによるものかAPIによるものか判断してますが、
なんだかすっきりしません。他にいい方法があれば教えてください。

あと、WinampやSCMPXはドラッグしている間もウィンドウの中が
描画されますが、ああいうのはどうすれば実現できるでしょうか?
0933デフォルトの名無しさんNGNG
WM_SIZEのときに位置変更してもダメ?
0934デフォルトの名無しさんNGNG
>>932
「すっきりしない」以外に問題がなければそれでいいんじゃないの?
0935デフォルトの名無しさんNGNG
すっきりしないのは大問題
0936デフォルトの名無しさんNGNG
WM_MOVINGとWM_SIZINGとWM_WINDOWPOSCHANGINGですっきり?
0937932NGNG
ウィンドウ移動がドラッグによるものか否かは
WM_EXITSIZEMOVEで判断できることがわかりました
(APIでの移動では発生しない)
ありがとうございました。
0938名無し@沢村NGNG
皆々様方〜教えてくださらんか、皆々様方〜♪
それはエディットだが、windowsの改行コードは\r\nのはずだが、
SendmessageのWM_SETTEXTで文字列といっしょに改行コードを送っても改行されんのよ。
どうしてかわかりますか?
またタブの\tはちゃんとタブになるんだが、タブの幅が気にくわんので、もっと短くしたいのだが、どうすればいい?
教えてはくださらんか〜、皆々様方〜♪
0939デフォルトの名無しさんNGNG
おまえ何様のつもりだよ〜♪
0940デフォルトの名無しさんNGNG
沢村様でしょ〜♪
0941デフォルトの名無しさんNGNG
うわ、これは本物の沢村だ・・・(;´Д`)
0942デフォルトの名無しさんNGNG
>>938
0x0a,0x0dをちゃんとおくてるのか?
TAB>Edit_SetTabStopマクロ
0943デフォルトの名無しさんNGNG
ES_MULTILINE
0944デフォルトの名無しさんNGNG
>930
ありがとうございます。
ウィンドウサイズが変更された時のステータスバーやツールバーの再調整と同じように
WM_SETTINGCHANGE を受信した親ウィンドウがサイズの調整を指示するメッセージをコントロールへ送るようにしました。
おかげさまで問題が解決しました。
ありがとうございました。
0945デフォルトの名無しさんNGNG
>>950
次スレおねがい
0946デフォルトの名無しさんNGNG
Windows95付属のFontView.exeをLoadLibraryした後、FreeLibraryすると
必ずFreeLibraryでページ違反エラーが起きてしまいます。
エラーの詳細にはMFC30.DLLが示されているのですが、これはMFC30.dllの
バグなのでしょうか?
ちなみにWindows2000にWindows95のfontview.exeをコピーして同様の事を
したところ、前述のエラーは起きませんでした。
Windows2000にはMFC30.dllが無いのでやはりこのdllが問題なのかとも思うのですが…
他のOS(98/Me/NT/XP)は無いので他のOSでの動作は確認できないのですが、
これはWindows95だけで起こる問題なのでしょうか?
もしそうならばこのエラーを回避するにはどうすればよいでしょうか?
開発環境はVC6+SP5です。
0947デフォルトの名無しさんNGNG
>>946
FontView.exeをLoadLibraryするとなんか便利なAPIが呼び出せるようになったりするんですか?
0948デフォルトの名無しさんNGNG
>>947
いや、FontViewをロードしても便利なことは無いです。
ユーザが任意のモジュールをLoadLibraryできるソフトを作っているのですが、
このFontViewのようにロードはできても解放でエラーが出てしまうような
ファイルをユーザが指定しまうと困るので、回避方法が知りたいのです。
0949デフォルトの名無しさんNGNG
自分の知らないモジュールのバグは、さすがに回避できねえんでねえの?

無理矢理やるなら、FreeLibraryするとバグってしまうライブラリの
ファイル名を覚えておいて、FreeLibraryを禁止するとか。
0950デフォルトの名無しさんNGNG
やだ。
0951名無し@沢村NGNG
>>942
すまん、\r\nを送っても改行されない件だが、解決した。
ちょっとした勘違いで、文字列を送るたびにその文字列の最後に\r\nを入れたつもりが、
全部の文字列の最後にしか入ってなかったわけだ。
これはちょっとしたミステイクというやつよ。
それはそうと、タブの\tはちゃんとタブになるんだが、タブの幅が気にくわんので、もっと短くしたいのだが、どうすればいい?
教えてはくださらんかな、ヌヒよ?
0952デフォルトの名無しさんNGNG
>>951
>>942にも書いてあるがEM_SETTABSTOPS
    ☆ チン  〃  Λ_Λ   / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
      ヽ ___\(\・∀・) <  MIDIプレーヤーまだー?
          \_/⊂ ⊂_ )   \_____________
0953デフォルトの名無しさんNGNG
>>948
__try〜__exceptで囲むとか。
Win2000でエラーが出ないのは単にロードに失敗してるだけだと思うぞ
(NT系ではexeはリソース取得の目的でしかロードできない)
0954デフォルトの名無しさんNGNG
>>953
>NT系ではexeはリソース取得の目的でしかロードできない
じゃあGetProcAddrを呼び出すまでは合法では?
0955デフォルトの名無しさんNGNG
>>953
例外ハンドラも試してみましたがハンドラが呼ばれませんでした。
__try{
FreeLibrary(hINST); // ここでエラー
}__except(EXCEPTION_EXECUTE_HANDLER){
// 呼ばれない
}

また、Win2000では
HINSTANCE hINST = LoadLibrary("fontview.exe");
if(hINST != NULL){
// デバッグしたところこのブロックに入ることを確認済み
FreeLibrary(hINST);
}
としているのでロードはできていると思います。
0956デフォルトの名無しさんNGNG
用途が限定されるがLoadLibraryExを使うという手もある

0957デフォルトの名無しさんNGNG
【不幸のレス】

このレスを見た人間は十三日以内に死にます。

※あなたに訪れる死を回避する方法が一つだけあります。
それはこのコピペを一時間以内に7つ、別のスレに貼り付ける事です
0958デフォルトの名無しさんNGNG
↓これの TCHAR バージョンは有りますか?
wctomb(char *, wchar_t);
wcstombs(char *, const wchar_t *, size_t);

こういう感じで。
_tctomb(char *, TCHAR);
_tcstombs(char *, const TCHAR *, size_t);

もしも無くて良い代物でしたら代替案を御教授下さい
0959デフォルトの名無しさんNGNG
>>956
それだとGetProcAddressできないんで・・・
0960デフォルトの名無しさんNGNG
>>958
WideCharToMultiByte
0961デフォルトの名無しさんNGNG
>>960
WideCharToMultiByte に TCHAR を渡しても大丈夫なのでしょうか。
wchar_t ではなく char のとき困るような気がします。
(↑もちろんこの時は無変換です)

int WideCharToMultiByte(
UINT CodePage, // コードページ
DWORD dwFlags, // 処理速度とマッピング方法を決定するフラグ
LPCWSTR lpWideCharStr, // ワイド文字列のアドレス
int cchWideChar, // ワイド文字列の文字数
LPSTR lpMultiByteStr, // 新しい文字列を受け取るバッファのアドレス
int cchMultiByte, // 新しい文字列を受け取るバッファのサイズ
LPCSTR lpDefaultChar, // マップできない文字の既定値のアドレス
LPBOOL lpUsedDefaultChar // 既定の文字を使ったときにセットするフラグのアドレス
);


何に使うかといいますと、今回は std::fstream のファイル名指定に
char、wchar_t の両方が渡されても大丈夫という関数なのです。
↓こんな感じです。

void FileOpen( LPCTSTR filename )
{
char buffer[MAX_PATH];
_tcstomb( buffer, filename, MAX_PATH );
std::ofstream ofs( buffer );
.........
}
0962デフォルトの名無しさんNGNG
>>958
TCHAR == char の環境だと、そもそも文字コード変換の意味がないと思うが…
(単なるコピーだよな)
0963デフォルトの名無しさんNGNG
>>962
その単なるコピーになる時と、wide->multi 変換が必要な時で同じコードを共有したいのです。
0964デフォルトの名無しさんNGNG
そもそもTCHAR自体_UNICODEマクロと_MBSマクロでコンパイル時に切り替えているだけなんだが

0965デフォルトの名無しさんNGNG
自分で
_tctomb(char *, TCHAR);
_tcstombs(char *, const TCHAR *, size_t);
を作ってその中でマクロでコードの切り換えするのが普通じゃ?
0966デフォルトの名無しさんNGNG
>>964
_MBCS でコードしたい時と _UNICODE でコードしたい時で
同じ関数を使えたら資源の有効利用になると考えました。
0967デフォルトの名無しさんNGNG
>>963
FileOpen() の内部で #ifdef で切り分ければ?

もちろん _tcstomb() 自体を #ifdef _UNICODE で切り替えることも可能だが、
ムダに文字列コピーが発生するからお奨めはしない。
0968デフォルトの名無しさんNGNG
同じ関数ですか。
0969デフォルトの名無しさんNGNG
>>966
自分で#ifdefとか使って切り替えれば?
その部分だけを別ファイルなりにしておけば、本体のコード自体は見かけ上変わらない。
0970デフォルトの名無しさんNGNG
デタッチされないDLLを作るにはどうしたら良いですか?

いま、DLLの中でスレッドを起動しているのですが、

放っておくと「DLLがデタッチされてしまうがスレッドが動いている」という状態になって

ハングしてしまいます。

スレッドは動かしつづけたいのでDLLがデタッチされないようにしたいのですが。
0971デフォルトの名無しさんNGNG
自分をLoadLibraryすればいいんじゃない
0972デフォルトの名無しさんNGNG
>971
ありがとうございます。やってみたら望んだ通りになりました。
0973958NGNG
マクロで何とかしようと思います。アドバイスを戴きまして、
まことに有難う御座いました。
0974デフォルトの名無しさんNGNG
mallocとGlobalAllocの違いって何?
0975デフォルトの名無しさんNGNG
>>974
mallocっへ内部的にはHeapAllocだっけ?
0976デフォルトの名無しさんNGNG
>>975
処理系(というかランタイム)依存

mallocは一般的にはVirtualAlloc等で確保した大きなブロックをランタイムライブラリがさらに分割管理している。
HeapAllocはmallocとほぼ同じようなことをシステム側がやってくれる。mallocと比べて速度が少々劣る可能性が高い。
GlobalAllocは大きなブロックをそのままうけとる。Win16との互換性の関係で少々余分な処理が入る。

小さい領域を頻繁に確保、開放したい場合はmalloc
確保領域をグループ化して一気に開放したい場合はHeapCreate->HeapAlloc->HeapDestroy
HGLOBALを要求するAPIを使いたい場合はGlobalAlloc
仮想メモリ空間を厳密に管理したい場合はVirtualAlloc
0977デフォルトの名無しさんNGNG
>>931
>CFSTR_FILECONTENTSをどうやって引き渡すのか分かりません。
IStream を使うという話ではないの?

>ClipSpyで見てもCFSTR_FILECONTENTSは<Data unavailable>になっていて、
IStreamを使っている(遅延される)から表示のしようがないだけでしょう。
0978デフォルトの名無しさんNGNG
> スレッドは動かしつづけたいのでDLLがデタッチされないようにしたいのですが。
そんなことしてたら、下手するとゾンビるぞ。 >>970



・・・ちゃんと忠告したからな。あとは知らんぞ。
0979デフォルトの名無しさんNGNG
FreeLibraryAndExitThreadだな
0980デフォルトの名無しさんNGNG
976より975の方がわかってるな
だいいちVirtualAllocは「厳密」などという曖昧な理由では使わない
974よ,それは例えばGMEM_MOVEABLEだ
0981名無し@沢村NGNG
>>952
タブを設定しようと思い、SendMessage(hEdit,EM_SETTABSTOPS,1,1);としたところプログラム開始エラーが出てしまいました。
SendMessage(hEdit,EM_SETTABSTOPS,1,1);をSendMessage(hEdit,EM_SETTABSTOPS,0,1);に直すとエラーは出ないので、3番目の引数がくせものと思うのだが、
EM_SETTABSTOPSの使い方を教えてはくだされんか〜♪


0982デフォルトの名無しさんNGNG
ヘルプも読まない主義かよ
0983デフォルトの名無しさんNGNG
>>982
読みません。
知りません。
0984デフォルトの名無しさんNGNG
>>983
死のうか。 
0985名無し@沢村NGNG
皆々様方〜EM_SETTABSTOPSの使い方がわかったぞよ〜♪
最初SendMessage(hEdit,EM_SETTABSTOPS,1,1);としたところエラーが出たのでビックリしたが、
その後の調べでは、4番目の引数にエラーの原因があったのよ。
4番目の引数をDWORD型にしてその後int型にキャストしなおすとちゃんとなることがわかったのよ。
皆々様方〜これは私にとって1大発見であるのだよ!!!
0986名無し@沢村NGNG
皆々様方〜、タブの幅の設定の仕方はわかったが、これはタブキーをうったとき、
その間隔でタブが出るのだが、普通に文字をうって、その列にきたとき自然にタブが挿入されるようにするにはどうすればいい?
皆々様方〜教えてくだされ〜♪
0987名無し@沢村NGNG
つまりあらかじめ列にタブを設定しておいて文字がその列になったとき、
自然にタブの間隔があくようにするということだが、どうすればいいですかな?
皆々様方〜教えてくだされ〜♪
0988デフォルトの名無しさんNGNG
いかん. . .
誰だ本物の沢村を召還したのは
0989デフォルトの名無しさんNGNG
意図がイマイチ汲み取れないが、例えばスペース4つをタブに置換したいということか…?
0990デフォルトの名無しさんNGNG
とりあえず放置せよとの命令が下った。
0991デフォルトの名無しさんNGNG
次スレはどこ?
0992デフォルトの名無しさんNGNG
次スレ
Win32 Aplicationプログラミング
http://pc2.2ch.net/test/read.cgi/tech/1044267746/
【MS自ら】APIの正しい使い方教えろ【ガセネタ】
http://pc2.2ch.net/test/read.cgi/tech/1044378059/
0993デフォルトの名無しさんNGNG
>沢村
ゲーム製作技術板を荒らすな
0994デフォルトの名無しさんNGNG
Windows Programing for C/C++(Not MFC)
http://pc2.2ch.net/test/read.cgi/tech/1018239290/l50
0995デフォルトの名無しさんNGNG
オレも FB1.02 だけど問題ないけど。(Win2000)
エラーが出たときのSQLステートメントは?
とりあえず isql で以下でテストしてみるとか。
 select extract(year from cast('now' as date)) from rdb$database;
0996デフォルトの名無しさんNGNG
って前に同じ発言が…… 逝ったきます。

あと、できれば他の言語でも開発できるようにインタフェースを公開して欲しいっす。
0997デフォルトの名無しさんNGNG
確率と確立を区別できない坊が多いな。
あと定跡と定石
それと香具師と家具師
0998デフォルトの名無しさんNGNG
じゃ「ばばぬき」キボンヌ
0999602 ◆hOJBbTlYfs NGNG
RebarRebarリバニタ炒め。
おいちー。

BYE!
1000デフォルトの名無しさんNGNG
999で止まるスレってのもスゴイね。
10011001Over 1000Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。