Win32API質問箱 Build81
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
2009/08/02(日) 00:20:49やさしいお兄さんやお姉さんたちが答えてくれるかも。
「知らないならレスしないで下さい。ウザイだけです。 」なんて言わないでねっ!
過去スレ、関連リンクは>>2-10くらい。
■注意
・質問する前にMSDNライブラリやPlatformSDK、Google等で検索しましょう。
・日本語版MSDN Online Libraryは不完全です。英語版( http://msdn.microsoft.com/en-us/library/ )の利用推奨。
・APIフックなど高度な事をしたい場合はできるだけAdvenced Windowsを読みましょう。
・言語特有の問題やIDE、MFCやVCLなどの質問はそれぞれの言語や開発環境スレで
- Win32API質問箱 wiki
http://wiki.livedoor.jp/program1/d/FrontPage
Win32API質問箱 Build80
http://pc12.2ch.net/test/read.cgi/tech/1244057140/l50
0175デフォルトの名無しさん
2009/08/08(土) 00:52:59MSDNにはXP以降と書かれてるけど実際には2000でも使える。
0176デフォルトの名無しさん
2009/08/08(土) 08:04:08今までと違って、x64環境にはx64用のイメージが必要なのに気付かなかったぜ。
0177デフォルトの名無しさん
2009/08/08(土) 09:41:58試してないけど、ファイルはあるみたい。
http://download.microsoft.com/download/2/E/9/2E911956-F90F-4BFB-8231-E292A7B6F287/GRMSDKX_EN_DVD.iso
0178135
2009/08/08(土) 16:14:41その方法で試みていますが、うまくいきません。
具体的には、
LPNETRESOURCE netResource = new NETRESOURCE();
netResource->dwScope = 0;
netResource->dwType = RESOURCETYPE_DISK;
netResource->dwDisplayType = 0;
netResource->dwUsage = 0;
netResource->lpLocalName = ""; // ネットワークドライブにする場合は"z:"などドライブレター設定
netResource->lpRemoteName = "\\\\hostname.com";
netResource->lpProvider = "";
DWORD err = WNetAddConnection2(netResource, "password", "account", CONNECT_UPDATE_PROFILE);
で、戻り値のerrは0になったのですが、マウントがされません。
netResource->lpLocalName = "Z:";
のようにしても、Zドライブに割り当てられません。
何が原因でマウントされないのでしょうか?
マウントされたボリュームが表示されるようにしたいのですが、
どうすればよいか教えてください。
よろしくお願いします。
0179デフォルトの名無しさん
2009/08/08(土) 17:59:47サンクス。ハッシュも一致していたし、それでOKみたいだ。
0180デフォルトの名無しさん
2009/08/08(土) 18:00:32多分\\\\hostname.com\\folderのようにするはず
で、folderは共有されていなければならなかったはず
0181デフォルトの名無しさん
2009/08/08(土) 22:49:320182デフォルトの名無しさん
2009/08/08(土) 23:01:41.NETとかイラネーし別ファイルにしてくれよ・・・
0183デフォルトの名無しさん
2009/08/08(土) 23:04:10VC++ しか使わないのに VB も VC# もついてくるのは抱合せ販売では?
とか思ったけど、いまの Visual Studio って、過去のVisual C++単体と同じくらいの金額なんだよな。
0184デフォルトの名無しさん
2009/08/08(土) 23:09:400185デフォルトの名無しさん
2009/08/08(土) 23:11:470186デフォルトの名無しさん
2009/08/08(土) 23:33:24ウェブセットアップ版ではだめですか?
0187デフォルトの名無しさん
2009/08/08(土) 23:40:10> Error: Setup determined that the Microsoft .NET Framework 2.0 is not present or could not be detected.
> Navigate to the Microsoft Download Center, search for .NET Framework 2.0 redistributable, and download the version appropriate for your platform
うぜーーーーーーーーー
0188デフォルトの名無しさん
2009/08/09(日) 00:43:320189デフォルトの名無しさん
2009/08/09(日) 01:06:450190デフォルトの名無しさん
2009/08/09(日) 01:22:410191デフォルトの名無しさん
2009/08/09(日) 01:33:08ちょっとグチらせてくれや。
0192デフォルトの名無しさん
2009/08/09(日) 01:34:28#include <limits>
#define NOMINMAX
#include <windows.h>
#include <windowsx.h>
#include <commctrl.h>
#include <shlobj.h>
#include <shlwapi.h>
#define STRSAFE_NO_DEPRECATE
#include <strsafe.h>
#pragma comment(lib, "comctl32.lib")
#pragma comment(lib, "shlwapi.lib")
こういうのをcommon.hみたいな名前で%include%に放り込んでおけば
#include <common.h>
だけで万事解決
0193デフォルトの名無しさん
2009/08/10(月) 13:12:160194デフォルトの名無しさん
2009/08/10(月) 13:42:190195デフォルトの名無しさん
2009/08/10(月) 14:25:22ソレつけるとかえって#includeの行数が増える事になるし面倒じゃね?
今時の計算機ならコンパイル時間の短縮にほとんど貢献しなさそう
0196デフォルトの名無しさん
2009/08/11(火) 10:43:43選択できない項目にすることができますが、
これを、アプリケーションからInsertMenuItem関数などで動的に追加するときに
適用することはできないでしょうか?
InsertMenuItem関数で使用するMENUITEMUINFO構造体を見ても、
該当するような項目は見当たりませんでした。
よろしくお願いします。 m(_ _)m
0197デフォルトの名無しさん
2009/08/11(火) 10:56:450198デフォルトの名無しさん
2009/08/11(火) 11:11:44グレーアウトなしの選択不可は MF_DISABLED っぽいが…
# リソースで作ったメニューを GetMenuItemInfo で fState 取得したら 2 だった
# 2 相当のマクロを winuser.h で探すと… MFS_xxx は存在しないっぽい
0200デフォルトの名無しさん
2009/08/11(火) 15:33:56そもそもグレーアウトしないのに選択できないなんてUIとしておかしいし
キーボード操作だと選択できないのが分からない
0201デフォルトの名無しさん
2009/08/11(火) 21:24:00レバーコントロールの背景についてです。
エクスプローラみたいにグラデーションのかかった背景にするには
どうしたらできるんですか?
背景としてビットマップを指定できるのは分かったんですけど、
エクスプローラの場合、ウィンドウのサイズを変えると、
背景のグラデーションも動的に変わるようにしたいんです。
0202デフォルトの名無しさん
2009/08/11(火) 21:32:550203デフォルトの名無しさん
2009/08/11(火) 21:38:110204デフォルトの名無しさん
2009/08/11(火) 21:47:380205デフォルトの名無しさん
2009/08/11(火) 22:04:110206デフォルトの名無しさん
2009/08/11(火) 22:40:13その最近のVCだとこんな風にpragmaでも書ける。もちろん、リソースでもリンカオプションでも可能。
#pragma comment(linker,"/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' "\
"version='6.0.0.0' processorArchitecture='*' publicKeyToken='6595b64144ccf1df' language='*'\"")
0207デフォルトの名無しさん
2009/08/11(火) 23:47:01#pragma comment(linker,"/manifest:comctlv6")
みたいなオプション用意してくれればいいのに
0208デフォルトの名無しさん
2009/08/12(水) 00:19:400209デフォルトの名無しさん
2009/08/12(水) 02:29:38(/nodefaultlib → /nod みたいな)
今度link.exeを逆汗して調べてみるか。
<チラシの裏>
cl.exeに/Bzか/Bdをつけてコンパイるとc1.dllやc2.dllに渡してるコマンドラインが見れる。
</チラシの裏>
0210デフォルトの名無しさん
2009/08/12(水) 12:27:53マニュアル見ろよ。
0211201
2009/08/12(水) 12:34:05マニフェストのおかげで実現できました。
ありがとうございました。
0212デフォルトの名無しさん
2009/08/12(水) 14:02:13思った位置に描画できないのですが、どうしてなんでしょうか。
ttp://msdn.microsoft.com/en-us/library/dd145212%28VS.85%29.aspx
ここの0x10000を足すやり方でhdcを求めてFillRgnで塗りつぶすと、
クライアント領域にずれ込んでウィンドウフレームの形に塗りつぶされてしまいます・・・
0213デフォルトの名無しさん
2009/08/12(水) 17:46:56マニュアルに載ってないオプションが大量にあるのを知らないのか
平和な奴だな
0214デフォルトの名無しさん
2009/08/12(水) 18:06:500215デフォルトの名無しさん
2009/08/12(水) 18:54:540216デフォルトの名無しさん
2009/08/12(水) 19:32:00あるだろうな。 それがどうした。
公開してないのをむやみに使うんじゃないよ。
0217デフォルトの名無しさん
2009/08/12(水) 21:27:51出て行くのを知る手段はありますか?
0218デフォルトの名無しさん
2009/08/12(水) 21:44:39入ってきたときMOUSEMOVEをキャプチャするとか。
または入ってきたときタイマで確認し始めるとか。
で、出たらどちらも初期化するとか。
いずれにしても自前で処理する必要がある。
0219デフォルトの名無しさん
2009/08/12(水) 21:59:290220デフォルトの名無しさん
2009/08/12(水) 22:07:32入ってきたとき、TrackMouseEvent()実行しないとだめだよね。
0221デフォルトの名無しさん
2009/08/12(水) 22:11:05キャプチャってボタン押さなくてもいけるんですね
それとWM_MOUSELEAVEも知らなかったのでその二つを色々試してやってみようと思います
ありがとう
0222デフォルトの名無しさん
2009/08/13(木) 20:40:36ALT+キーにも反応してしまうのを抑制することは出来ますか
0223デフォルトの名無しさん
2009/08/13(木) 21:55:580224デフォルトの名無しさん
2009/08/13(木) 22:12:02LEAVEの中で座標調べて必要ならEvent設定しなおしてやりましたが
何故キーに反応するのかわからない…
0225デフォルトの名無しさん
2009/08/14(金) 10:53:15ポップアップメニューを選択した時、メッセージの流れは
WM_EXITMENULOOP
WM_COMMAND
の順になるんですが
WM_EXITMENULOOPがくるまえに確実に選択したメッセージは来ないんでしょうか?
0226デフォルトの名無しさん
2009/08/14(金) 20:58:550227デフォルトの名無しさん
2009/08/14(金) 23:00:09ボヤッキー、やっちまいな。
0228デフォルトの名無しさん
2009/08/14(金) 23:01:440229デフォルトの名無しさん
2009/08/14(金) 23:17:19俺はVC6買ったら入ってたから、今もそれ使ってるけど
0230デフォルトの名無しさん
2009/08/15(土) 00:52:420231デフォルトの名無しさん
2009/08/15(土) 01:27:200232デフォルトの名無しさん
2009/08/15(土) 01:32:200233デフォルトの名無しさん
2009/08/15(土) 01:33:160234デフォルトの名無しさん
2009/08/15(土) 01:46:370235231
2009/08/15(土) 01:49:10ネットで落とすってなんか割る感じに聞こえたから
0236デフォルトの名無しさん
2009/08/15(土) 01:52:360237231
2009/08/15(土) 01:57:13expressionじゃspy++付いてこないし
0238デフォルトの名無しさん
2009/08/15(土) 02:05:260239デフォルトの名無しさん
2009/08/15(土) 02:59:21\
∧ニユ/ ̄ヽ
\ ( ´∀/) i
\.\ _(」つ/とl) . | \
;::;::\i\ 匚レ| .〈/ ) | \
。::;;:'\.\ (_,)ー' |_,, -'''"!
^人;:'::;゚:;.\l\ _,,, -''"|_,, -''"|
^^从::;;:。':\.\_,, -''"|_,, -''"| . :|
へ ^へ;;::';;:'\l_,, -''" . | 从^ 〜
^ ^ヘ^人从::;;;:| ,ィ人^. | ^ ^へ^^
〜 ^.へ' ^':レ^从 へ' | 〜 ^
へ ^^ へ 〜人^ ^ へ〜 〜
0240デフォルトの名無しさん
2009/08/15(土) 04:00:000241デフォルトの名無しさん
2009/08/15(土) 06:15:12この馬鹿はmsdnサブスクリプション知らないの?
0242デフォルトの名無しさん
2009/08/15(土) 07:21:18あっても正直ショボいから、自分で作ったほうがいいかもな
0243デフォルトの名無しさん
2009/08/15(土) 08:43:190244デフォルトの名無しさん
2009/08/15(土) 09:13:09探すぐらいなら自分で作ったほうがいいということだ
0245デフォルトの名無しさん
2009/08/15(土) 09:15:410246デフォルトの名無しさん
2009/08/15(土) 09:21:02あるなら教えてくれよ。軽く調べたけど俺は見つけられなかった
後、質問なんだが
マウスフックしてる時に、クリックされたウィンドウがポップアップなら処理しない用にしたいんだが
FindWindow( TEXT("#32768"), NULL )で取得したハンドルと
フックで渡されたハンドルが一致しないんだが、何か良い解決策ないかな?
0247デフォルトの名無しさん
2009/08/15(土) 12:43:14Spy++互換ならWinspectorとか?
高機能かどうかは保証しないけど。
0248デフォルトの名無しさん
2009/08/15(土) 21:07:38お前の調べ方が悪いだけ
0249デフォルトの名無しさん
2009/08/15(土) 21:23:100250デフォルトの名無しさん
2009/08/15(土) 23:36:19>FindWindow( TEXT("#32768"), NULL )
文字列を渡すのが間違いじゃないかな。
MAKEINTATOM(32768)とか。
0251デフォルトの名無しさん
2009/08/16(日) 01:52:59"山田"で検索したのと顔が一致しないんだが、何か良い解決策ないかな?」
「そいつに名前聞けよ」
0252デフォルトの名無しさん
2009/08/16(日) 02:53:09>>246 で書いてある「クリックされたウィンドウがポップアップなら」って条件に当てはまるはずがない
0253デフォルトの名無しさん
2009/08/16(日) 06:50:20#32768でおk?
0254デフォルトの名無しさん
2009/08/16(日) 07:22:47if(GetClassWord(hwnd,GCW_ATOM)==32768){
//メニュー
}
0255デフォルトの名無しさん
2009/08/16(日) 08:46:22単体なら取れるんだけど
MF_POPUPして複数になると、新しく表示されたポップアップメニューしか領域が取れない
0256デフォルトの名無しさん
2009/08/16(日) 10:02:07頭使おうな
0257デフォルトの名無しさん
2009/08/16(日) 10:34:25有難う
#32768の全列挙ってFindWindowEx使う?
一々全ウィンドウを列挙してクラス名を使わないと駄目かな?
0258デフォルトの名無しさん
2009/08/16(日) 11:48:11ウィンドウの判別は>>254でもおk
0259デフォルトの名無しさん
2009/08/16(日) 14:33:51有難うっ
Findで複数32768を取れないか試したけど駄目だった
全列挙してやります
0260デフォルトの名無しさん
2009/08/16(日) 16:10:38BM_SETSTATE時にウィンドウプロシジャを介さずに描画してるからっぽいんですが、これを止める方法ありますか?
BM_SETSTATE時に再描画させると一瞬ちらつくし、オーナードローだとプッシュボタン以外使えないし。。。
0261デフォルトの名無しさん
2009/08/16(日) 16:55:38XP以降かつ、comctl6.0以降を使っていれば、
NM_CUSTOMDRAWが送られてくるから、そこで描画したらどう?
0262デフォルトの名無しさん
2009/08/16(日) 23:02:14いや、ホントうまいって、騙されたと思って食ってみ
最近嫁に内緒で夜にこれ入れて1合だけ炊いて食べてたんだけど、それがバレて早朝ランニングさせられるようになった…
けど今日も頃合いを見計らって炊くつもり^^あー想像しただけで武者震いがw
断っておくけど、俺の嫁は鬼嫁とかそういうのじゃないからな
0263デフォルトの名無しさん
2009/08/16(日) 23:02:550264デフォルトの名無しさん
2009/08/16(日) 23:09:510265デフォルトの名無しさん
2009/08/17(月) 00:37:16メジャー、マイナー以降のバージョンの名称って何かな?
0266デフォルトの名無しさん
2009/08/17(月) 00:50:470267デフォルトの名無しさん
2009/08/17(月) 05:04:37単純にビルドした回数にしては1998とか6000とか狙ったような番号だし
0268デフォルトの名無しさん
2009/08/17(月) 06:59:420269デフォルトの名無しさん
2009/08/17(月) 08:31:540270デフォルトの名無しさん
2009/08/17(月) 13:15:28-子ウィンドウ2(スレッドAの派生スレッドC)
みたいな感じでウィンドウを生成してメッセージ処理させてるんだけど、
子ウィンドウ/スレッドに投げられたメッセージキューを、親ウィンドウ/スレッドに送らないor認識させない方法ってないかな?
親ウィンドウのGet/PeekMessageで、親ウィンドウのハンドルを指定すればいいとか聞いたんだけど
そうするとWM_DESTROYメッセージが送られてきた時点でウィンドウが消滅しててメッセージが取得不能→終了不能になるみたいで。
0271デフォルトの名無しさん
2009/08/17(月) 13:49:56GetMessageでハンドル指定だの気にしなくても親から認識できないのでは
0272デフォルトの名無しさん
2009/08/17(月) 16:03:12設定及び削除ということをやりたいのですが、
(もちろんオプションです)
Winのバージョン違いを吸収するようなAPIはありませんか?
0273デフォルトの名無しさん
2009/08/17(月) 16:06:000274272
2009/08/17(月) 16:13:31.* の位置が
(2k)HKEY_CLASSES_ROOT\
(xp)HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\
と、違うようなのですが・・・
調べが足りないのでしょうか?
■ このスレッドは過去ログ倉庫に格納されています