Win32API 質問箱 Build8
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
NGNGWin32 Application *Programmer* Interface
についての質問はこちらへどうぞ。
やさしいお兄さんたちが答えてくれるかも。
でも、質問する前に検索ぐらいしる!!
過去スレ・参考 >>2-5
0002デフォルトの名無しさん
NGNGWin32API 質問箱 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
0004かおりん祭 ◇VqKAORinK6
NGNG从o゚ー゚从< 新スレおめでとうございま−す♪
= ⊂ ) \_______
= (__/"(__) トテテテ
0005デフォルトの名無しさん
NGNG乙CurrySummer(w
0006デフォルトの名無しさん
NGNG0007デフォルトの名無しさん
NGNG右クリックしたときと左クリックしたときで挙動が違うよね。
あれをやりたいんだけど
TrackPopupMenuで
TPM_LEFTBUTTON | TPM_RIGHTBUTTON
を指定したときに
親ウィンドウにWM_COMMANDが送られてくるんだけど、
これが右クリックか左クリックか分からない。
どうしたらいい?
0008デフォルトの名無しさん
NGNG0009デフォルトの名無しさん
NGNGここだけの話、奴らはメニューのフリをした独自ウィンドウなんだ。
ナイショダヨ
0010デフォルトの名無しさん
NGNGえっ!自分で作れってこと?
サンプルはどっかにありませんか?
0011デフォルトの名無しさん
NGNGWM_COMMANDとWM_CONTEXTMENUを処理してやれば?
0012デフォルトの名無しさん
NGNG> メニューのフリをした独自ウィンドウ
なんだが、不完全に似たことをするなら
> TPM_LEFTBUTTON | TPM_RIGHTBUTTON
から TPM_RIGHTBUTTON を外して
かわりに WM_MENURBUTTONUP を処理する。
0013デフォルトの名無しさん
NGNG0014タスクバーのリサイズ方法
NGNGMoveWindowでリサイズしようとしても出来ませんでした。
どなたかご教授いただけないでしょうか。
0015タスクバーのリサイズ方法
NGNGタスクバーのスタートボタンなどはMoveWindowsでウィンドウサイズを
変更できるんです。
なぜタスクバーだけうまくいかないんでしょうか・・・。
0016デフォルトの名無しさん
NGNGソースあげてみ
ハンドル取得するところと、ウィンドウサイズ変えるところ
0017デフォルトの名無しさん
NGNGわざわざ・・・
0018タスクバーのリサイズ方法
NGNGMoveWindow(hTaskbar, x, y, cx, cy, TRUE);
携帯からとは・・・。
筋金入りの2ちゃんねらーですな。
よろしくお願いします。
0019gn355my0
NGNG0020タスクバーのリサイズ方法
NGNGMoveWindowでリサイズしようとしても出来ませんでした。
タスクバーのスタートボタンなどはMoveWindowsでウィンドウサイズを
変更できるんです。
なぜタスクバーだけうまくいかないんでしょうか・・・。
どなたかご教授いただけないでしょうか。
HWND hTaskbar = FindWindowEx(NULL, NULL, "Shell_TrayWnd", "");
MoveWindow(hTaskbar, x, y, cx, cy, TRUE);
0021デフォルトの名無しさん
NGNGウィンドウのサイズの変更はウィンドウ側で制御できるんだから
タスクバーがそのようにしているんでないの?
002220
NGNGそれは知りませんでした。
つまり無理だということですか・・・。
もうちょっと足掻いて駄目だったら諦めます・・・。
0023名無し@沢村
NGNG無理じゃないよ。実際windowsのタスクバーはリサイズできるわけだし…。
もっと研究してごらん?
0024デフォルトの名無しさん
NGNGSetWindowPos(hTaskbar,NULL,100,100,500,500,SWP_NOZORDER|SWP_NOSENDCHANGING);
なんでこんな事をしたいのかはしらないが
0025デフォルトの名無しさん
NGNGプログラミングしたこともないのにあれこれ突っ込むヒキコモリです。
0026デフォルトの名無しさん
NGNG一応、猫で分かる〜のサイトは見たのですが、あれと違うアプローチの仕方ってないでしょうか?
0027デフォルトの名無しさん
NGNGC+APIでだったら地道に実装するしかないかと。
というか質問の意味を質問させて欲しい。
メニューをフローティングツールバーのように移動、というのを
もうすこし具体的に頼みます
002820
NGNGおおおっ!!
ありがとうございます。早速試させて頂きます。
実は横長画面のノートでタスクバーを横においてるんですが
なぜかシャットダウンのたびにタスクバーの幅が短くなってしまって
対策プログラムを作ろうと思ってたんです。
002926
NGNGメニューバーを、レバーコントロールみたいに、ドラッグしながら移動可能にしたいんですよ。
メニューバーってのは、文字だけの「ファイル(F) 編集(E)・・・」とかいうあれです。
0030デフォルトの名無しさん
NGNG環境は?C+APIですか?なら自分で実装するしかないです。
猫、のアプローチってどんな方法?
003126
NGNGC+Win32APIです。
猫でも分かる〜はhttp://www.kumei.ne.jp/c_lang/sdk4/sdk_311.htm
ここから説明されてるんですけど、かなり実装が面倒っぽいので
もっとスマートな方法があるんじゃないかと思って。
0032デフォルトの名無しさん
NGNG0033デフォルトの名無しさん
NGNGいや〜面倒だと思うよ。MFCを使えばある程度簡単に実装できるだろうと思うけれど。
俺の直感では、やはりRebarを使ってなんとかやろうと思うだろうけど、
それだと猫氏のページと同じ方法だし、もしかしたら1から作る方が楽かもしれない。
シェブロンを出さなくていい&フローティング無しならば、wtlを使う方法があるが・・・
これは激簡単だけれど、ATL(C++)のかなりの理解が必要となるから、自信があるなら紹介します。
0034デフォルトの名無しさん
NGNG場合によりけりです。俺は何も考えずに表示するだけでよければ迷わずMessageBoxです。
0035名無し@沢村
NGNG俺はMessageBoxをデバッグに使ってるね。
自作のDebug関数の中に入れて、どんな型の引数でも表示できるようにオーバーロードしてるよ。
003626
NGNGやっぱり面倒ですか。
IEとかその他のアプリでも当たり前のように使われてるので
そういうAPIがあると期待してたのですが。
ATLやWTLは、今回は使いたくないので、なんとかAPIでやってみます。
ありがとうございました。
0038デフォルトの名無しさん
NGNGちなみにRebarを使う方法はIEの存在が前提になると思います。多分。
0039デフォルトの名無しさん
NGNGかまうなって、喜ぶから。
0040デフォルトの名無しさん
NGNG0041デフォルトの名無しさん
NGNGVirtualLockを使えばできます。これ以上の説明も必要?
0042デフォルトの名無しさん
NGNGできればもうちょっと説明していただけるとうれしいです。
0043ルート大芝
NGNGプログラムを作りたいんだけど、MSDNのFindFirstFileの説明で
ルートディレクトリ内のファイルを検索するには、この関数で "C:\*"
のようなファイル名を指定し、引き続き GetFileAttributes 関数を
使ってルートディレクトリ内を検索してください。
って書いてあるけど、FindFirstFile("C:\\*", &f);は
FindFirstFileが失敗します。どうしたらいいの?
0044ルート大芝
NGNG0045デフォルトの名無しさん
NGNG説明はいいんだけれど、解らないことを具体的に聞いてね。
解りづらい部分だと思うから、解らないところを絞ってほしい。
0046デフォルトの名無しさん
NGNG仕方すらまだわかってません。
で、ちょっとさがしたらVirtualAllocを使ってVirtualLockでスワップ不可にして
物理メモリに確保でよろしいのでしょうか?
0047デフォルトの名無しさん
NGNG特に難しい話ではないです。ロックしたいアドレスを指定すればいいだけ。
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丁寧にサンプルまでつけていただきどうもです。
ここまでしていただければよくわかります。
フリーな物理メモリは取れるようですから、
それを見た上で適量を確保すればいいっぽいですね。
OS入れなおしたばっかなんで今はできないですが、晩にでもやって報告に来ます。
ファイル解析で時間かかるんで、物理メモリのみの確保だとかなり速くなるんで楽しみです。
0049デフォルトの名無しさん
NGNGどうしたらよいのでしょうか。
何かメッセージが飛んでくるとかいうのをどこかで読んだ気がするんですが。
0050デフォルトの名無しさん
NGNG俺が知っているのはレジストリのNoDriveTypeAutoRunだけだが…
そんなメッセージがあるのかな?
0051デフォルトの名無しさん
NGNG捕まえるとしたら
WM_DEVICECHANGE
DBT_DEVICEARRIVAL
あたりかな?
005249
NGNG0053質問
NGNG自分で勉強をしようと思いますので、マイクロソフトのMSDN内に、LUNAインターフェースに関する技術文書はありますか?
0054デフォルトの名無しさん
NGNG0055質問
NGNGそうか・・・。
あまり詳しい人はいないのか。
0056デフォルトの名無しさん
NGNG文献探しも勉強のウチ・・・
0057デフォルトの名無しさん
NGNGLUNAインターフェースとはなんぞや?
0058デフォルトの名無しさん
NGNGWM_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色の平均化とかSDKには書いていたけど、どんなふうに平均化しているの?
ペゾルドの本でもチラッとしか書いてなかったよ。
0060デフォルトの名無しさん
NGNG激しく意味不明
0061デフォルトの名無しさん
NGNGちったぁオツム使えや。
0062デフォルトの名無しさん
NGNGいや、だからさぁ、これを使った後に、StretchBltを使って拡大縮小する場合、
ビットマップが比較的に汚くならないでしょ?
このHALFTONEってどういうことをやっているのかなって思ったわけね。
だから、SetStretchBltModeでHALFTONEを指定して、StretchBltした
場合の内部の処理を知りたいんでした。
0063デフォルトの名無しさん
NGNG詳しく説明してくれてthx。最初HALHTONEで検索してて意味不明だった(恥
世の中に、それに関してどんな処理があるのかすら解らないです。スマソ。
ここで解決しなければ、ゲーム制作技術板に行くと詳しい人がいるかもしれません。
0064デフォルトの名無しさん
NGNG↑ペゾルドを読んだことがこいつの自慢らしい。
0065デフォルトの名無しさん
NGNGその程度は調べた、という風に解釈してやろうじゃないか。煽りは別板で
0066デフォルトの名無しさん
NGNGいまだとテクスチャの補間と一緒にバイリニアとかトライリニアとかでやってんじゃない?
0067デフォルトの名無しさん
NGNGそういえば、GetDeviceCapsにRC_STRETCHBLTという項目があるしね。
0068質問
NGNGhttp://www.kumei.ne.jp/c_lang/
で、今困っていまして・・・。
猫さんのHPの一部を抜粋↓
「dllのバージョンは5.81以降が必要です。
IE5.0以降がインストールされていれば大丈夫です。
また、生のVC++6.0ではコンパイルできません。
SPをインストールしてもヘッダファイルやライブラリは更新されないので、マイクロソフトのページなどからプラットフォームSDKを更新する必要があります。」
そのプラットフォームSDKを探しているのですが、マイクロソフトのHP内で見つかりません。
MSDNの中とかも探しているんですが・・。
どこにプラットフォームSDKがあるかご存知の方はいませんか?
このままではプログラム開発が進まなくて困ってます。
0070デフォルトの名無しさん
NGNG既出だったらごめん。(というか、多分既出)
0071デフォルトの名無しさん
NGNG0072質問
NGNGありました。CoreSDKをダウンロードしてますが・・・
・・・これを見て、ウツになりました。
「Download size: 176.9 MB」
0073デフォルトの名無しさん
NGNGMSDNに付いてくるからなぁ。
MSに連絡すると、多分郵便で送って貰えるとは思うけど
0074デフォルトの名無しさん
NGNG1を読め。猫に行け。
007559
NGNG>>66の「バイリニアとかトライリニア」を参考にして考えてみます。
0076デフォルトの名無しさん
NGNGん。keybd_event関数は使えるのですが、マイクロソフトを閲覧するとSendinput推奨とあった
ものですから。よいものがありましたらお示しください。
0077デフォルトの名無しさん
NGNGこれって、一連の入力を記録する部分は自分で作らなきゃ駄目ですよね?>どなたか詳しい人
>>76
他のアプリにキー送信をしたいだけなら、sendMessageでWM_KEYDOWN等を送ればいいのでは?
SendInputでは特定のアプリに送るのには甚だしく適していません。any questions?
007876
NGNGマイナーなんですか? 検索してもなかなか出てこない理由が分かりました。
keybd_eventを使っていたのはALT+Ctrl+○○もできるためだったのですが、
マイクロソフトのサイトで調べているとSendinput推奨とあったものですから。
sendinputだとキー入力の割り込みが発生しない等のメリットがあるようですね。
引き続きよろしくお願いします。
0079デフォルトの名無しさん
NGNG必須ではない。
0080質問
NGNGhttp://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#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
0083質問
NGNGなるほど。私のVisualC++6に入っているcommctrl.hには、その2つ「BTNS_AUTOSIZE・I_IMAGENONE 」がないですね。
新しいcommctrl.hを入れないと駄目と言うことですね。
探してみます。
(てか、猫さんのHPの言うとおり、SDKをインストールしたんだけどなぁ・・・)
0084質問
NGNGC++.NETと言う商品があったのですね。
てか、C/C++/C#が同梱されているかと思って。
0085デフォルトの名無しさん
NGNGComctl32.dllが5.81以降なら
#define BTNS_AUTOSIZE 0x0010
#define I_IMAGENONE (-2)
を自分で定義する。
ソースの頭の方にでも書いておく。
0086質問
NGNGE:\Microsoft SDK\include\CommCtrl.h
自分でコピペをしないと駄目なんですねw
自動的に更新してくれるのかと思ってまして・・・。
初心者ですいませんでした。
0087質問
NGNGVC++6の「E:\Microsoft Visual Studio\VC98\Include」フォルダの内容を、新しい2002年バージョンに変えたところ、
見事コンパイルができました。
これで、XPライクなインターフェース開発が進みます。
ありがとうございました。みなさま。
0088デフォルトの名無しさん
NGNGインクルードファイルの参照先を変更and/or追加するのが、普通だと思われ。
0089デフォルトの名無しさん
NGNG0090質問
NGNGたぶん、VisualStudioのインストール先ディスクパスが「C:\Program Files」でないと駄目なのでは?
私は、Eドライブに重要なアプリを入れているので。
0091デフォルトの名無しさん
NGNGC ドライブに空き容量が少ないとか、整理のためとか、そういう理由ならわかる
けど、「重要なアプリを」 という分け方に意味はあるのか?
いずれにせよ OS があぼーんしたら再インストールする羽目になるのに。
0092デフォルトの名無しさん
NGNGSendMessage(GetDesktopWindow( ), WM_SYSCOMMAND, SC_SCREENSAVE, 0);
ただ、これですと、2000/NTでパスワードによる保護にチェックされていても
パスワード入力のダイアログが表示されず、そのまま操作可能な状態に戻ってしまいます。
何か他に良い方法はないでしょうか?
0093デフォルトの名無しさん
NGNG自動的じゃなくてスタートメニューに追加される
Register PSDK Directories with Visual Studio
を実行したらだった。たぶん。
0094デフォルトの名無しさん
NGNG#include <process.h>して、プロジェクトの設定でも
マルチスレッドにしたのですが
error LNK2001: 外部シンボル "_ThreadAccept" は未解決です
fatal error LNK1120: 外部参照 1 が未解決です。
とエラーが出てしまいます。
何か解決法はありませんか?
0095デフォルトの名無しさん
NGNGプロジェクトの設定が間違っているんだろう。
DebugとRelease両方とも変えた?
0096デフォルトの名無しさん
NGNG激しく矛盾の悪寒・・・
0097質問
NGNG本屋にも行ったのですが、まったく関連する本がないですね。
REBARで質問ですが、たとえば、IEを開くとウィンドウの上部にREBARが当然表示されてますよね。
そのREBARというのは、はじめからその配置と言うのが固定化されてますが、
REBARの位置情報を設定するにはどうすればいいのでしょうか?
私も同じくREBARを配置してみましたが、ばらばらに配置されるだけで、順番良く配置されません。
できれば、位置情報の設定、そしてウィンドウを閉じる前にそのREBARの位置情報を保存し、再びウィンドウを開くときには、その保存された位置情報を元に、再現するアプリケーションにしたいです。
どうすればいいのでしょうか?
0098デフォルトの名無しさん
NGNGWindowsXPとか、タスクトレイに表示されたりするから(ハードウェアの取り外しとかのメッセージ)
できるとは思うのですが解りません。
0099デフォルトの名無しさん
NGNG普通に出来ると思ったんだが。
>>98
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/shellcc/platform/commctls/tooltip/usingtooltips.asp
010098
NGNGみたけどどれだかわかんないです。。
TTM_TRACKACTIVATEあたり???
0101デフォルトの名無しさん
NGNG■ このスレッドは過去ログ倉庫に格納されています