1 名前:デフォルトの名無しさん [2009/08/02(日) 00:20:49 ] スレ立てるまでもない、Win32APIのついての質問はこちらへどうぞ。 やさしいお兄さんやお姉さんたちが答えてくれるかも。 「知らないならレスしないで下さい。ウザイだけです。 」なんて言わないでねっ! 過去スレ、関連リンクは>>2-10 くらい。 ■注意 ・質問する前にMSDNライブラリやPlatformSDK、Google等で検索しましょう。 ・日本語版MSDN Online Libraryは不完全です。英語版( msdn.microsoft.com/en-us/library/ )の利用推奨。 ・APIフックなど高度な事をしたい場合はできるだけAdvenced Windowsを読みましょう。 ・言語特有の問題やIDE、MFCやVCLなどの質問はそれぞれの言語や開発環境スレで - Win32API質問箱 wiki wiki.livedoor.jp/program1/d/FrontPage Win32API質問箱 Build80 pc12.2ch.net/test/read.cgi/tech/1244057140/l50
116 名前:デフォルトの名無しさん mailto:sage [2009/08/06(木) 18:15:32 ] つーかfopenも最終的にはCreateFileを呼んでるんだから当然だろ >>111 こいつバカじゃねーの?
117 名前:デフォルトの名無しさん [2009/08/06(木) 19:23:44 ] fopen で開いたファイル(FILE*)にランダムアクセスする際にfseekでは 32bit幅しか考慮されていないので、2Gの範囲しかアクセスできないと言う 点について、>>111 がちょびっとだけカスってる。 #まあ、そもそも fopen の仕様を決めているのはC言語ではないけどね…。 fopen が CreateFile呼んでるから当然使えるってのは、標準関数の仕様と 比べてどうかと言う方向からみるべきなので、短絡的な意見だとは思うが。
118 名前:デフォルトの名無しさん mailto:sage [2009/08/06(木) 20:16:53 ] SEEK_CURを使って2GBずつ進んでいくってのは無理?
119 名前:デフォルトの名無しさん mailto:sage [2009/08/06(木) 20:21:26 ] 規格上はその辺り何も規定されてないので処理系に依存する。
120 名前:デフォルトの名無しさん mailto:sage [2009/08/06(木) 20:39:15 ] >>118 VC2008だと、0x7FFFFFFFより後への移動はエラーになって返ってくる。 関数内で、SetFilePointerを上位32ビットを指定せずに呼んでいる為に、 オフセット位置の範囲に制限がかけられている所為だな。
121 名前:デフォルトの名無しさん mailto:sage [2009/08/06(木) 20:46:08 ] 使えねー
122 名前:デフォルトの名無しさん mailto:sage [2009/08/06(木) 21:25:26 ] つーか、CreateFileをラップしたクラスを作っとけばいいだろ・・・ そもそもクロスプラットフォーム開発してる訳でもなけりゃわざわざfopenなんて使う理由が無い
123 名前:デフォルトの名無しさん mailto:sage [2009/08/06(木) 21:49:47 ] そもそもクロスプラットフォーム開発してる訳でもなけりゃわざわざfopenなんて使う理由が無い(キリッ
124 名前:デフォルトの名無しさん mailto:sage [2009/08/06(木) 21:54:12 ] そもそもクロスプラットフォーム開発してる訳でもなけりゃわざわざfopenなんて使う理由が無い(ヌルポ
125 名前:デフォルトの名無しさん mailto:sage [2009/08/06(木) 21:57:04 ] >>124 がっ
126 名前:デフォルトの名無しさん mailto:sage [2009/08/06(木) 22:10:06 ] fopen (笑)
127 名前:デフォルトの名無しさん mailto:sage [2009/08/06(木) 22:12:36 ] C言語 (笑)
128 名前:デフォルトの名無しさん [2009/08/06(木) 22:16:42 ] 今時マルチスレッドや巨大ファイルの扱いが規格外なプログラミング言語なんてゴミ
129 名前:デフォルトの名無しさん mailto:sage [2009/08/06(木) 22:16:44 ] ヌルポ (笑)
130 名前:デフォルトの名無しさん mailto:sage [2009/08/06(木) 23:04:30 ] 今時ポインタがあるプログラミング言語なんてゴミ
131 名前:デフォルトの名無しさん mailto:sage [2009/08/06(木) 23:11:25 ] と思ってるお前がゴミ
132 名前:デフォルトの名無しさん mailto:sage [2009/08/06(木) 23:22:58 ] ふぉぺん
133 名前:デフォルトの名無しさん mailto:sage [2009/08/06(木) 23:26:21 ] その辺にしとけ
134 名前:デフォルトの名無しさん mailto:sage [2009/08/06(木) 23:39:51 ] 何を?
135 名前:デフォルトの名無しさん [2009/08/07(金) 00:43:08 ] ネットワークディレクトリをsamba(smb)共有させる場合、 IEのURL打ち込み欄で \\hostname.com で、、このあとアカウントとパスワードを入力するダイアログが表示され 進めるとネットワークディレクトリがマウントできますが、 (Vistaの場合、レジストリを変更してセキュリティポリシーの書き換え必要) この一連の流れをC++/MFCの環境で記述してマウントさせたいのです。 具体的にどういうAPIを使えばよいか、どういうサイトを参照すればよいか など教えていただけますでしょうか。 よろしくお願いします。
136 名前:デフォルトの名無しさん mailto:sage [2009/08/07(金) 00:53:01 ] >>135 msdn.microsoft.com/ja-jp/library/default.aspx
137 名前:デフォルトの名無しさん mailto:sage [2009/08/07(金) 03:59:35 ] マウントといったら、WNetAddConnection2しか思いつかん
138 名前:デフォルトの名無しさん mailto:sage [2009/08/07(金) 06:05:30 ] それでいい。WebDAV のフォルダもマウントできるし。
139 名前:デフォルトの名無しさん mailto:sage [2009/08/07(金) 11:42:31 ] >>99 なんか微妙に誤解があるような気が…… ウィンドウプロシージャをメッセージ経由で実行する場合は、 必ずウィンドウを作成したスレッドで実行されるのがwindowsの仕様です。 その場合は、このスレッドがSleepさせられているため、SendMessageで デッドロックするわけです。
140 名前:デフォルトの名無しさん mailto:sage [2009/08/07(金) 12:17:19 ] スレッド間でSendし合うからだろ
141 名前:デフォルトの名無しさん mailto:sage [2009/08/07(金) 14:29:26 ] sendし合うのは問題ない。 別スレッドにSendMessageして、send先から返ってくるのを待ってる間は 別スレッドからのSendMessageを受け付ける事ができる。
142 名前:デフォルトの名無しさん mailto:sage [2009/08/07(金) 14:58:05 ] 色んなスレッドからキューに積むだけなら可能 だが、sendされた側がメッセージループでキューを喰い実行してくれないと 呼び出し側はブロックされっぱなしで SendMessage から戻ってこれない
143 名前:デフォルトの名無しさん [2009/08/07(金) 15:14:37 ] 141のがあってると思う。 SendMessageから戻って来ない間も、別スレッドからのSendMessageには 即呼び出される。殆ど相手のコンテキストで動いてる感じ。 SendMessageなら戻ってくるまでは他のメッセージが来ないので安心、 と言うことではない。
144 名前:デフォルトの名無しさん mailto:sage [2009/08/07(金) 15:19:14 ] ここのバカ共はReplyMessageも知らんのか
145 名前:デフォルトの名無しさん [2009/08/07(金) 15:45:30 ] ReplyMessage関係あんの?
146 名前:デフォルトの名無しさん mailto:sage [2009/08/07(金) 16:08:31 ] コモンコントロールのウィンドウデータ、端的に言うとGWLP_USERDATAの領域にSetWindowLongPtrで アプリケーション側の値を設定しているコードがあったんですけど、これって有効なんでしょうか。 ずっとコントロール側が使ってるものと思い込んでいたのですが。。。
147 名前:デフォルトの名無しさん mailto:sage [2009/08/07(金) 16:58:33 ] MSDNくらい読めよ低脳 msdn.microsoft.com/ja-jp/library/cc411204.aspx
148 名前:デフォルトの名無しさん mailto:sage [2009/08/07(金) 17:05:07 ] 低脳はお前の方だろ
149 名前:デフォルトの名無しさん mailto:sage [2009/08/07(金) 17:08:04 ] いやアナタです
150 名前:デフォルトの名無しさん mailto:sage [2009/08/07(金) 17:09:51 ] いや、俺だ!
151 名前:デフォルトの名無しさん mailto:sage [2009/08/07(金) 17:20:31 ] マジで!?
152 名前:146 mailto:sage [2009/08/07(金) 17:58:31 ] タブコントロールとかだと各タブ要素のデータがウィンドウごとに確保されますけど、 GWLP_USERDATAとは全く別の領域に確保されてるんでしょうか。 コモンコントロールをspy++で見ると、ウィンドウバイトが割り当てられていて それがコントロールが使っているものなのか、アプリケーションに任せているのか僕では判断できません。 コモンコントロールのクラスが定義済みなので、MSの配慮としてアプリケーション用に確保されているのかと 考えてしまいますが、明記されてる記事を見つけることができませんでした。
153 名前:デフォルトの名無しさん mailto:sage [2009/08/07(金) 18:04:44 ] >GWLP_USERDATA >ウィンドウに関連付けられた値を設定します。 >この 32 ビット値は、<<<<ウィンドウを作成したアプリケーションで使用する目的で>>>>各ウィンドウが持っているものです。 >この値の初期値は 0 です。 この程度の日本語の解釈もできないの? あんた小学生? 馬鹿なの? 死ねよ
154 名前:デフォルトの名無しさん mailto:sage [2009/08/07(金) 18:06:03 ] おちつけちゃ〜ん
155 名前:146 mailto:sage [2009/08/07(金) 18:08:25 ] 普通のウィンドウの拡張と同じように、コモンコントロールも後付で作られたクラスなので、 そのアプリケーション用というのが、本当に自作アプリケーションのためなのか、 コモンコントロールの拡張用なのかよくわかりません。 言葉どおり受け取るならそういうことなんですが。。。
156 名前:デフォルトの名無しさん mailto:sage [2009/08/07(金) 18:11:57 ] コモンコントールは拡張ウィンドウメモリを使っていてGWLP_USERDATAは使ってないはず。 でもサードパーティ製のコントロール等はGWLP_USERDATAを使ってる物もある。 Spy++で見れば分かる。 いずれにしろ自作コントロール以外ではプロパティリストを使う方が安全。
157 名前:デフォルトの名無しさん mailto:sage [2009/08/07(金) 18:19:05 ] ま、サブクラスする時はSetWindowSubclass()でいいから GWLP_USERDATAの使い道なんてほとんど無いけどな
158 名前:デフォルトの名無しさん [2009/08/07(金) 18:38:07 ] スレッドの中で自分で作った関数を呼びまくってるんですが その関数内でオート変数を使ってるんですが メモリリークとか大丈夫なんですかね?
159 名前:デフォルトの名無しさん mailto:sage [2009/08/07(金) 18:42:10 ] Win32APIになんか関係あるん?
160 名前:デフォルトの名無しさん [2009/08/07(金) 18:47:19 ] いやごめんなさいくずまったくかんけいないですがごみきいてみたかったんですよ
161 名前:デフォルトの名無しさん mailto:sage [2009/08/07(金) 19:29:53 ] いつの間にかWindows 7 SDKがRMTに
162 名前:デフォルトの名無しさん mailto:sage [2009/08/07(金) 19:32:20 ] アドレス忘れた www.microsoft.com/downloads/details.aspx?displaylang=en&FamilyID=71deb800-c591-4f97-a900-bea146e4fae1
163 名前:デフォルトの名無しさん mailto:sage [2009/08/07(金) 19:34:42 ] RMTじゃリアルマネートレードだろ
164 名前:デフォルトの名無しさん mailto:sage [2009/08/07(金) 19:56:01 ] いつの間にかWindows 7 SKDがRTMに これでいい?
165 名前:デフォルトの名無しさん mailto:sage [2009/08/07(金) 19:58:14 ] >>163-164 RTM じゃリアルタイムマネーだろ!
166 名前:デフォルトの名無しさん mailto:sage [2009/08/07(金) 20:00:09 ] いつの間にかWindows 7 SDKがATMに
167 名前:デフォルトの名無しさん mailto:sage [2009/08/07(金) 20:11:40 ] それじゃオートメーテッドテラーマシーンだろ
168 名前:デフォルトの名無しさん mailto:sage [2009/08/07(金) 22:31:42 ] もうだめだこのスレ
169 名前:デフォルトの名無しさん mailto:sage [2009/08/07(金) 22:37:46 ] dumpbin /DEPENDENTS みたいに依存するDLL名って、Win32APIではどのように取得するんでしょうか
170 名前:デフォルトの名無しさん mailto:sage [2009/08/07(金) 22:58:48 ] API レベルで用意してるのかなぁ? PEフォーマットの仕様ははっきりしてるし、 依存DLL名だけ調べるくらいならそんなに難しくないよ。 PEフォーマットについてかなりわかりやすく解説したページが以前はあったんだけど、 今は消滅しちゃってるな。 まぁ、マイクロソフトのページに行けばキッチリした仕様書が入手できる。
171 名前:デフォルトの名無しさん mailto:sage [2009/08/07(金) 23:25:37 ] 解説も何も、PEフォーマットなんてせいぜいRVAがウザい程度でしょ それもimagehlp.dllのAPIを使えば簡単だし
172 名前:デフォルトの名無しさん mailto:sage [2009/08/07(金) 23:34:12 ] >>157 それって、Xp以降専用になるんじゃ…… まあ、それも時代か。
173 名前:デフォルトの名無しさん mailto:sage [2009/08/07(金) 23:36:35 ] 2000ってそろそろサポ切れるよな
174 名前:デフォルトの名無しさん mailto:sage [2009/08/08(土) 00:06:36 ] >>170- ImageDirectoryEntryToDataEx使ってそれっぽいのとれたんですけど、RVAからVAの変換でミスg・・・ よくわかんねー
175 名前:デフォルトの名無しさん mailto:sage [2009/08/08(土) 00:52:59 ] >>172 MSDNにはXP以降と書かれてるけど実際には2000でも使える。
176 名前:デフォルトの名無しさん mailto:sage [2009/08/08(土) 08:04:08 ] Windows7 SDK のISOイメージは、まだx86版しか上がってないのか。 今までと違って、x64環境にはx64用のイメージが必要なのに気付かなかったぜ。
177 名前:デフォルトの名無しさん mailto:sage [2009/08/08(土) 09:41:58 ] >>176 試してないけど、ファイルはあるみたい。 download.microsoft.com/download/2/E/9/2E911956-F90F-4BFB-8231-E292A7B6F287/GRMSDKX_EN_DVD.iso
178 名前:135 [2009/08/08(土) 16:14:41 ] >>135 のものですが、>>137 さんありがとうございます。 その方法で試みていますが、うまくいきません。 具体的には、 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ドライブに割り当てられません。 何が原因でマウントされないのでしょうか? マウントされたボリュームが表示されるようにしたいのですが、 どうすればよいか教えてください。 よろしくお願いします。
179 名前:デフォルトの名無しさん mailto:sage [2009/08/08(土) 17:59:47 ] >>177 サンクス。ハッシュも一致していたし、それでOKみたいだ。
180 名前:デフォルトの名無しさん mailto:sage [2009/08/08(土) 18:00:32 ] lpRemoteNameにホスト名だけを指定しているのがまずいような 多分\\\\hostname.com\\folderのようにするはず で、folderは共有されていなければならなかったはず
181 名前:デフォルトの名無しさん mailto:sage [2009/08/08(土) 22:49:32 ] 7で目覚まし動かん
182 名前:デフォルトの名無しさん mailto:sage [2009/08/08(土) 23:01:41 ] 相変わらずSDKでけぇなー .NETとかイラネーし別ファイルにしてくれよ・・・
183 名前:デフォルトの名無しさん mailto:sage [2009/08/08(土) 23:04:10 ] 別ファイルにしたら誰も使ってくれなくなるだろ… VC++ しか使わないのに VB も VC# もついてくるのは抱合せ販売では? とか思ったけど、いまの Visual Studio って、過去のVisual C++単体と同じくらいの金額なんだよな。
184 名前:デフォルトの名無しさん mailto:sage [2009/08/08(土) 23:09:40 ] それを言ったら昔はSDKやDDKだって有償だったでしょうに
185 名前:デフォルトの名無しさん mailto:sage [2009/08/08(土) 23:11:47 ] 無料で何でも揃う割にクリエイティブなティーンが少ない件
186 名前:デフォルトの名無しさん mailto:sage [2009/08/08(土) 23:33:24 ] >>182 ウェブセットアップ版ではだめですか?
187 名前:デフォルトの名無しさん mailto:sage [2009/08/08(土) 23:40:10 ] >>186 > 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 うぜーーーーーーーーー
188 名前:デフォルトの名無しさん mailto:sage [2009/08/09(日) 00:43:32 ] いいかげんMINMAXマクロ定義するのやめてほしい
189 名前:デフォルトの名無しさん mailto:sage [2009/08/09(日) 01:06:45 ] 今更やめられないのは少し考えれば判るだろ
190 名前:デフォルトの名無しさん mailto:sage [2009/08/09(日) 01:22:41 ] NOMINMAXで我慢してください。
191 名前:デフォルトの名無しさん mailto:sage [2009/08/09(日) 01:33:08 ] 事情はわかってるがそういう上塗りでのごまかしにはウンザリなんだよ。 ちょっとグチらせてくれや。
192 名前:デフォルトの名無しさん mailto:sage [2009/08/09(日) 01:34:28 ] #include <cstdlib> #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> だけで万事解決
193 名前:デフォルトの名無しさん mailto:sage [2009/08/10(月) 13:12:16 ] LEAN AND MEANもdefineしようぜ
194 名前:デフォルトの名無しさん mailto:sage [2009/08/10(月) 13:42:19 ] windef.hだけインクルードしようとするとコンパイルエラーになるんだがなんでだろう
195 名前:デフォルトの名無しさん mailto:sage [2009/08/10(月) 14:25:22 ] >>193 ソレつけるとかえって#includeの行数が増える事になるし面倒じゃね? 今時の計算機ならコンパイル時間の短縮にほとんど貢献しなさそう
196 名前:デフォルトの名無しさん mailto:sage [2009/08/11(火) 10:43:43 ] メニューを作る際、リソースファイルなどで、「INACTIVE」を指定すると、 選択できない項目にすることができますが、 これを、アプリケーションからInsertMenuItem関数などで動的に追加するときに 適用することはできないでしょうか? InsertMenuItem関数で使用するMENUITEMUINFO構造体を見ても、 該当するような項目は見当たりませんでした。 よろしくお願いします。 m(_ _)m
197 名前:デフォルトの名無しさん mailto:sage [2009/08/11(火) 10:56:45 ] fState = MFS_DISABLED
198 名前:デフォルトの名無しさん mailto:sage [2009/08/11(火) 11:11:44 ] MFS_DISABLED だとグレーアウトした選択不可 グレーアウトなしの選択不可は MF_DISABLED っぽいが… # リソースで作ったメニューを GetMenuItemInfo で fState 取得したら 2 だった # 2 相当のマクロを winuser.h で探すと… MFS_xxx は存在しないっぽい
199 名前:196 mailto:sage [2009/08/11(火) 11:15:57 ] >>197 >>198 ありがとうございましたぁ!! 。゜( ゜´∀`゜)゜。
200 名前:デフォルトの名無しさん mailto:sage [2009/08/11(火) 15:33:56 ] MF_DISABLEDはdeprecatedなんだろ そもそもグレーアウトしないのに選択できないなんてUIとしておかしいし キーボード操作だと選択できないのが分からない
201 名前:デフォルトの名無しさん mailto:sage [2009/08/11(火) 21:24:00 ] 教えてください。レバーコントロールの勉強中です。 レバーコントロールの背景についてです。 エクスプローラみたいにグラデーションのかかった背景にするには どうしたらできるんですか? 背景としてビットマップを指定できるのは分かったんですけど、 エクスプローラの場合、ウィンドウのサイズを変えると、 背景のグラデーションも動的に変わるようにしたいんです。
202 名前:デフォルトの名無しさん mailto:sage [2009/08/11(火) 21:32:55 ] また肝臓コントロールかよ
203 名前:デフォルトの名無しさん mailto:sage [2009/08/11(火) 21:38:11 ] XPスタイルのコモンコントロールとかなんとかでぐぐれ
204 名前:デフォルトの名無しさん mailto:sage [2009/08/11(火) 21:47:38 ] 最近のVCだと自動でXPスタイルのmanifest付けてくれるんじゃないの?
205 名前:デフォルトの名無しさん mailto:sage [2009/08/11(火) 22:04:11 ] デフォ設定だとマニフェストは埋め込まれる
206 名前:デフォルトの名無しさん mailto:sage [2009/08/11(火) 22:40:13 ] マニフェストは埋め込まれるけど、comctl32のバージョン6を使う指定は自分で追加しないといけない。 その最近のVCだとこんな風にpragmaでも書ける。もちろん、リソースでもリンカオプションでも可能。 #pragma comment(linker,"/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' "\ "version='6.0.0.0' processorArchitecture='*' publicKeyToken='6595b64144ccf1df' language='*'\"")
207 名前:デフォルトの名無しさん mailto:sage [2009/08/11(火) 23:47:01 ] 面倒だなあ #pragma comment(linker,"/manifest:comctlv6") みたいなオプション用意してくれればいいのに
208 名前:デフォルトの名無しさん mailto:sage [2009/08/12(水) 00:19:40 ] >>192 に書いとけばいいよ
209 名前:デフォルトの名無しさん mailto:sage [2009/08/12(水) 02:29:38 ] よく使う割に長いオプションは短縮系的なものが用意されてそうな気はするんだが。 (/nodefaultlib → /nod みたいな) 今度link.exeを逆汗して調べてみるか。 <チラシの裏> cl.exeに/Bzか/Bdをつけてコンパイるとc1.dllやc2.dllに渡してるコマンドラインが見れる。 </チラシの裏>
210 名前:デフォルトの名無しさん mailto:sage [2009/08/12(水) 12:27:53 ] >>209 マニュアル見ろよ。
211 名前:201 mailto:sage [2009/08/12(水) 12:34:05 ] XPスタイルというものだったんですね。 マニフェストのおかげで実現できました。 ありがとうございました。
212 名前:デフォルトの名無しさん mailto:sage [2009/08/12(水) 14:02:13 ] WM_NCPAINTで(HRGN)wParamからGetDCEx取得したHDCを使って描画すると、 思った位置に描画できないのですが、どうしてなんでしょうか。 ttp://msdn.microsoft.com/en-us/library/dd145212%28VS.85%29.aspx ここの0x10000を足すやり方でhdcを求めてFillRgnで塗りつぶすと、 クライアント領域にずれ込んでウィンドウフレームの形に塗りつぶされてしまいます・・・
213 名前:デフォルトの名無しさん mailto:sage [2009/08/12(水) 17:46:56 ] >>210 マニュアルに載ってないオプションが大量にあるのを知らないのか 平和な奴だな
214 名前:デフォルトの名無しさん mailto:sage [2009/08/12(水) 18:06:50 ] 煽るな
215 名前:デフォルトの名無しさん mailto:sage [2009/08/12(水) 18:54:54 ] ごめんなさい
216 名前:デフォルトの名無しさん mailto:sage [2009/08/12(水) 19:32:00 ] >>213 あるだろうな。 それがどうした。 公開してないのをむやみに使うんじゃないよ。