[表示 : 全て 最新50 1-99 101- 201- 301- 2chのread.cgiへ]
Update time : 09/26 11:03 / Filesize : 81 KB / Number-of Response : 377
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

Win32API質問箱 Build67



1 名前:デフォルトの名無しさん mailto:sage [2008/06/08(日) 22:20:46 ]
スレ立てるまでもない、Win32APIのついての質問はこちらへどうぞ。
やさしいお兄さんやお姉さんたちが答えてくれるかも。

過去スレ、関連リンクは>>2-10くらい。

■注意
・質問する前にMSDNライブラリやPlatformSDK、Google等で検索しましょう。
・日本語版MSDN Online Libraryは不完全です。英語版(msdn2.microsoft.com/library/)の利用推奨。
・APIフックなど高度な事をしたい場合はできるだけAdvenced Windowsを読みましょう。
・言語特有の問題やIDE、MFCやVCLなどの質問はそれぞれの言語や開発環境スレで

- Win32API質問箱 wiki
wiki.livedoor.jp/program1/d/FrontPage

Win32API質問箱 Build66
pc11.2ch.net/test/read.cgi/tech/1210775622/

166 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 21:02:18 ]
動的に追加したリストボックスをDestroyWindow()する時に予めLB_RESETCONTENTする必要はありますか?

167 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 21:14:24 ]
>>166
deleteする時に予めデストラクタを呼んでおく必要はありますか?
って聞いてるようなモンだぞ

168 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 21:26:55 ]
>>167
DestroyWindow()するだけで良いのですね。
ありがとうございました。

169 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 21:52:18 ]
スレ違いのような気もするけど、気にせず教えてください。

kbdacc とか 秀Caps のようなキーリピートの高速化ってどうやって実現してるんでしょうか?
SystemParametersInfo で設定できる値よりずっと速くできるようですが。


170 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 22:15:27 ]
>>165
自プロセスへのフックは簡単だと思うけど‥‥他プロセスやグローバルフックになると共有メモリとかの処理が必要になってくるけど

171 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 22:17:16 ]
>>169
気にせず教えてください…?頭わいてんのか?

172 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 22:29:33 ]
お忙しい中すみませんが、気にせず教えてください。

173 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 22:33:16 ]
教えを乞う言葉じゃない気がしますが、気にせず教えてください。

174 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 22:54:35 ]
>>169
ずっと速くできるようですが気にせず設定してください



175 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 23:12:31 ]
流れがおかしいようですが気にせず質問してください

176 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 23:15:39 ]
ツールバーの表示位置を変えたいのですが、どのようにすればいいですか?

177 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 23:21:10 ]
movewindow

178 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 00:14:46 ]
>>177
レスありがとうございます。
後一つわからないことがありまして、
ツールバーの高さを変えるにはどうすればいいですか?

179 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 00:15:13 ]
>>177
APIの大文字小文字は区別されます。嘘を書くのをやめましょう。

180 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 00:16:35 ]
>>178
ボタンを大きくする

181 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 00:28:58 ]
>>180
ありがとうございます。
御礼に私の集めた女子高生画像10枚ほどぅpしようと思うのですが

182 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 00:33:42 ]
>>181
早く汁
ttp://www.uploda.org/

183 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 01:00:03 ]
>>181-182
偽者&自作自演乙

184 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 01:10:32 ]
↑はずれ



185 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 01:13:02 ]
mbup.net/p.php?p=44502.jpg
mbup.net/p.php?p=44503.jpg
こんな感じのでよいでしょうか?

186 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 01:36:20 ]
訳:かまってほしいな

187 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 02:35:45 ]
>>186
かまってほしいです。
実のところMoveWindowでツールバーの移動が出来ませんでした。

188 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 02:55:07 ]
自プロセスのUIスレッドのIDを取得したいのですが、方法はありますかね?

189 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 03:12:29 ]
>>188
ググッたらその辺のサンプルは、見つかると思うよ

190 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 05:09:14 ]
ツールバー移動出来ない……
クローズボタンなんかだと移動出来てるぽいから出来ると思うのですが…

191 名前:デフォルトの名無しさん [2008/06/13(金) 10:24:01 ]
Windows Media Playerの埋め込みについて質問させてください。

親ウィンドウ(レイヤードウィンドウ)にメディアプレイヤーを埋め込んでいるのですが、
WS_EX_Layeredで親ウィンドウを生成し、SetLayeredWindowAttributesで透明度を設定すると、
メディアプレイヤーの動画部分が黒く表示されます(再生はされているみたいです)
親ウィンドウを動かしてみると、一瞬だけ動画が表示され、動かすのをやめるとまた消えてしまいます。
これはどういった原因があるでしょうか。
親ウィンドウをレイヤードウィンドウにしなかった場合は、そのまま表示されます。

192 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 11:24:59 ]
WS_CLIPCHILDRENとかその辺?

193 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 11:28:43 ]
タブのグレイ表示ってできないんですか?

194 名前:デフォルトの名無しさん [2008/06/13(金) 13:57:22 ]
>>190
>>190
>>190
>>190
>>190
>>190
>>190



195 名前:デフォルトの名無しさん [2008/06/13(金) 14:12:25 ]
聞きたいのは、何故ツールバーをMoveWindowで移動出来ないのか
です。

196 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 15:19:53 ]
最近、いろいろなサイトでTEXT("aaa");見たいなの見かけますが
文字型charには代入できなくなったのですか?新しい型?

197 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 15:21:14 ]
意味不明

198 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 15:27:26 ]
TEXT("aaa")とか_T("aaa")は、ユニコード対応だったけか?
ググれば、その辺はすぐ見つかるよー

199 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 15:28:16 ]
最近のVC++はデフォがUnicode版API使うようにマクロ定義さてるんじゃなかったっけ?
2003で止まってるから知らんが。

200 名前:デフォルトの名無しさん [2008/06/13(金) 15:39:25 ]
WM_KEYUPでwParamと数値を比較すると警告メッセージがでるのですが
wParamをintでキャストするような方法でいいのでしょうか

201 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 15:40:25 ]
おk

202 名前:デフォルトの名無しさん [2008/06/13(金) 15:41:20 ]
>>201
秒殺レスさんくす

203 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 16:05:45 ]
>>191
WMPが動画をオーバーレイで表示してるなら、不思議な挙動ではないな。
ビデオオーバーレイは画面上のビデオ表示領域にあるピクセルが特定の色だった場合に、そのピクセルに動画を表示する。
よって半透明にした結果、そのピクセルの色が変わってしまえば動画が表示されなくてもおかしくはない

204 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 16:20:56 ]
なかなか深い読みだな



205 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 16:27:34 ]
>>203
アプリの背景色をその色にすると面白い事になるよね

206 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 16:32:23 ]
自己解決しちゃったぜ!!?
気分がいいので
今から写メを20枚ぅpしてやんよ!!!

207 名前:デフォルトの名無しさん [2008/06/13(金) 16:50:01 ]
mbup.net/d/44545.jpg
mbup.net/d/44547.jpg
mbup.net/d/44549.jpg
mbup.net/d/44552.jpg
mbup.net/d/44554.jpg

208 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 16:54:40 ]
基地外が沸いてるな

209 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 17:53:16 ]
>>191
WMPでオーバーレイを使わない設定にすれば見えなくなることはなくなるけど、透けないしちらつくんだよな。

210 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 20:52:48 ]
ツールチップをCreateWindowEx()してTOOLINFO構造体のlpszTextにLPSTR_TEXTCALLBACKを指定した後、

case WM_NOTIFY:
switch (((LPNMHDR)lp)->code)
{
case TTN_NEEDTEXT:
LPTOOLTIPTEXT ptt = (LPTOOLTIPTEXT)lp;
lstrcpy(ptt->lpszText, 表示するテキスト);
break;

default:
return FALSE;
}

とすると、数十字程度の場合は正常に動作しますが、300文字等文字数を増やすとデバッグ実行時でもエラーが出ずに突然落ちてしまいます。
原因は何でしょうか。
因みにTTM_UPDATETIPTEXTでは正常に動作しました。

>>196
所謂TCHAR型だから、プロパティでマルチバイトを選択すればchar、Unicodeを選べばwchar_tとコンパイラは解釈する。

211 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 21:18:19 ]
TTN_NEEDTEXT 通知メッセージを処理する場合は、表示する文字列を次のいずれかの方法で指定します。

szText メンバで指定したバッファにテキストをコピーする。

テキストが入っているバッファのアドレスを lpszText メンバにコピーする。

文字列リソースの識別子を lpszText メンバにコピーし、そのリソースが入っているインスタンスのハンドルを hinst メンバにコピーする。

MSDNくらいちゃんと確認汁

212 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 21:24:54 ]
>>210
バッファオーバーラン

今時そんなバグを平気で出しちゃうCプログラマは
偉そうにTCHAR型の講釈している場合じゃないよ

213 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 21:25:28 ]
俺も>>211 が正解な気がする

214 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 21:31:45 ]
タスクの切り替え(アクティブウィンドウを切り替える)のをエミュレートしたいんですけどどうすればいいですかね?

ある条件を満たしたとき、(タスクバーの)(右)隣のウィンドウに切り替えたいんですけど。

Alt+Tabのキーボードエミュレートだと、直前のやつにしか切り替え不可ですよね・・?
Tabの押す回数をうまく制御すればいいんですかね?
他にもっとスマートな方法ありますか??

あと、上記のような不特定多数のタスクがある状況で動くものと、
特定の(例えばWMPとか、決まったアプリをアクティブにする)をアクティブにするものも知りたいです。
ちなみにC++(VC2008ExpressEdition)です。
ご教授のほどお願いします。



215 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 21:36:05 ]
>>214
FindWindow
GetWindowThreadProcessId
SetActiveWindow
SetForegroundWindow

216 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 21:36:28 ]
>>210
80文字分しかないバッファに300文字コピーしたら
バッファオーバーランするに決まってるだろ。

217 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 22:08:45 ]
(誰が決めたのだろう・・・?)

218 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 22:09:50 ]


219 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 22:11:45 ]
そいやXPのPowerToyのAlt+TAB乗っ取りプログラムはWS_EX_TOOLWINDOWとかマスクしてなくてPhotoshopとか起動してるとかなり格好悪いことになるんだよな。

220 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 22:31:36 ]
>>215
単純明快かつわかりやすい回答、ありがとうございます。

221 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 22:34:57 ]
どういたしまして

222 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 22:39:30 ]
>>221
騙りウザイ

223 名前:デフォルトの名無しさん [2008/06/13(金) 22:40:53 ]
>>192
>>203
>>209
埋め込んだメディアプレイヤーを透明にするということは難しいということですね。。
別の方向で検討します。
レスありがとうございました。

224 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 22:45:30 ]
どういたしまして



225 名前:214 mailto:sage [2008/06/13(金) 22:48:41 ]
すいません、また質問させてください。
>>215でプロセスIDを習得する意味は何でしょうか?

226 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 22:49:29 ]
習得?

227 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 22:54:07 ]
取得、です。

228 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 22:55:29 ]
同じプロセスで動いてるやつを飛ばすとか?

229 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 23:10:01 ]
>>225
> 例えばWMPとか、決まったアプリをアクティブにする
とあったので、特定のアプリをアクティブにするならプロセスIDから逆引きすればいいよってこと。

230 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 23:43:22 ]
GDIのPolygon関数は、与えられた引数によっては交差した図形を描くのですが、
どんな引数を与えられても交差しない図形を描くことは出来ないのでしょうか。

231 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 23:56:05 ]
>>230
交差しない順で自分で頂点を並べればいいだろう。
ちょっと考えれば、順不同で与えられた頂点から、辺が交差しない図形は
一意で求まらないことくらい分かりそうなもんだが。

232 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 23:56:42 ]
そんなAPIがあることを初めて知った。。。

質問の意味はよくわからんが、細かく制御したいなら自分でやれば。

233 名前:デフォルトの名無しさん mailto:sage [2008/06/14(土) 00:10:18 ]
分からないならレスしないでください

234 名前:デフォルトの名無しさん mailto:sage [2008/06/14(土) 00:22:14 ]
>>191のやつをVista DWM有効下で動かすとどうなるんだろうと気になった。



235 名前:デフォルトの名無しさん mailto:sage [2008/06/14(土) 00:29:56 ]
オーバーレイは使えないが、動画は表示され、ちらつきも無くなって万々歳と予想

236 名前:デフォルトの名無しさん mailto:sage [2008/06/14(土) 00:36:56 ]
それってXPで出力をVMR9にしたのと同じような状況じゃねーの?

237 名前:デフォルトの名無しさん mailto:sage [2008/06/14(土) 00:46:13 ]
個人的に、レイヤードウィンドウとDWMの違いがハッキリしないんだけど。
レイヤードウィンドウでもWM_PAINTがほとんど飛んでこなくなるし、DirectXベースっぽいし。

思うに、レイヤードウィンドウがDX7だったのに対してDWMがDX9になっただけな気がする。
もちろん色々と変わってるだろうけど(GDIをソフトレンダラ化とか)、DWMでやってる事って
半分ぐらいはWindows2000で既に実現できていたんじゃないのかなぁ。

238 名前:214 mailto:sage [2008/06/14(土) 01:21:17 ]
あーできません助けてください!

「今アクティブなウィンドウ(アプリ)の、“タスクバーにおける(右)隣”のウィンドウへアクティブを移す」を実現したいのですが、
要はこれって「タスクバーでいうと隣」のウィンドウのハンドルを取得、それを使ってアクティブにすればいいんですよね?

だけど「タスクバーで隣」っていうのをどう条件設定すればよいのかわからず・・・。タスクバーを右に右に推移(+右端だったら左端に動くように)させたいのですが・・。

なんかヒントください!

239 名前:デフォルトの名無しさん mailto:sage [2008/06/14(土) 01:25:08 ]
>>238
タスクバーをフックする


そして次のバージョンのWindowsで死亡

240 名前:デフォルトの名無しさん mailto:sage [2008/06/14(土) 08:27:48 ]
fprintf等でUTF-8 LF形式で出力したいのですが、どうしてもできません。
どうかご教授おねがいします


FILE* fp;
_tfopen_s( &fp, _T("hoge.txt"), _T("w,ccs=UTF-8"));
fseek(fp, 0, SEEK_SET );
_ftprintf_s( fp, _T("hogehoge"));
_setmode( _fileno( fp ), _O_BINARY );
_ftprintf_s( fp, _T("\n"));
_setmode( _fileno( fp ), _O_TEXT );
_ftprintf_s( fp, _T("あいうえお"));
fclose(fp);

MSDN見る限りではこう作れってかいてあるのですが、どうも_setmodeの挙動がおかしいようで...

241 名前:デフォルトの名無しさん mailto:sage [2008/06/14(土) 09:14:00 ]
どうせccs=UTF-8なんてVC++限定なんだから、
自分でメモリ上にUTF-8, LF改行のデータを作って、
ただのバイナリモードで一気に書きこんだらどうかと思う。

というかスレ違い。

242 名前:デフォルトの名無しさん mailto:sage [2008/06/14(土) 10:13:39 ]
>>240
_setmode( _fileno( fp ), _O_U8TEXT);

243 名前:デフォルトの名無しさん mailto:sage [2008/06/14(土) 10:53:27 ]
リッチエディットの背景に画像を表示したいのですが方法はあるのでしょうか?
ググってみても背景色の変更はあるのですが背景に画像を埋め込む方法は見つかりません。


244 名前:デフォルトの名無しさん mailto:sage [2008/06/14(土) 10:57:51 ]
>>243
無理。IEコンポーネントでも使え



245 名前:243 mailto:sage [2008/06/14(土) 11:01:49 ]
やっぱりそうですか・・・。ありがとうございます。

246 名前:デフォルトの名無しさん mailto:sage [2008/06/14(土) 11:24:30 ]
どういたしまして

247 名前:デフォルトの名無しさん [2008/06/14(土) 14:21:30 ]
リッチエディットコントロールで右クリックしても
エディットコントロールと違って何も表示されないんだけど
どうすればいいんでしょか


248 名前:デフォルトの名無しさん mailto:sage [2008/06/14(土) 14:54:24 ]
>>241

間違えてここに書いちゃいました。
C++相談室で聞いてきます。

>>242
実はこれはいろいろためしてたときのソースがそのまま残ってました。
_setmode( _fileno( fp ), _O_U8TEXT);
もすでに試してたけど、なぜかCRLFになるので、ダメでした。


249 名前:デフォルトの名無しさん mailto:sage [2008/06/14(土) 15:10:51 ]
C++相談室もスレ違いだけどな

250 名前:デフォルトの名無しさん mailto:sage [2008/06/14(土) 15:20:35 ]
・スレ違いの質問でも丁寧に答えてくれます。
・かまってちゃんの煽りにもきちんとかまってくれます。

をテンプレに追記汁

251 名前:デフォルトの名無しさん mailto:sage [2008/06/14(土) 15:45:05 ]
CreateThreadで作成したスレッドがサスペンドになるまで待機するような関数はありませんか。
WaitForInputIdleのスレッド版、のようなモノです。

自前でフラグでも立てて調べ続けるしかないのでしょうか。

252 名前:デフォルトの名無しさん mailto:sage [2008/06/14(土) 15:50:57 ]
訳:おしえてほしいな

253 名前:デフォルトの名無しさん mailto:sage [2008/06/14(土) 15:55:11 ]
>>251
サスペンドにする設計はよしたほうがいい。
同期オブジェクトを使うべき。



254 名前:デフォルトの名無しさん mailto:sage [2008/06/14(土) 16:11:46 ]
自前で Win32API のラッパーライブラリ作って使い回してる人どれくらいいます?
windowsx.h みたいなマクロの集合から本格的なクラスライブラリまで含めて。



255 名前:デフォルトの名無しさん mailto:sage [2008/06/14(土) 16:35:10 ]
>>254
自分が使う分はラップしてから使う。


256 名前:デフォルトの名無しさん mailto:sage [2008/06/14(土) 16:53:37 ]
そのコードにsetmodeは要らないと思うが。

257 名前:デフォルトの名無しさん mailto:sage [2008/06/14(土) 16:58:06 ]
>>254
WTLでいいだろ

258 名前:デフォルトの名無しさん mailto:sage [2008/06/14(土) 17:35:31 ]
WTLは糞すぎるんで、
自作の、ATLをラップしたテンプレートクラスライブラリでやってるよ。

259 名前:デフォルトの名無しさん mailto:sage [2008/06/14(土) 17:48:36 ]
VCLで間に合ってます

260 名前:デフォルトの名無しさん mailto:sage [2008/06/14(土) 18:13:08 ]
>>258
どう糞すぎるの?

261 名前:デフォルトの名無しさん mailto:sage [2008/06/14(土) 21:14:18 ]
TCHAR[]な文字列のバイト数はどうやったら求められるのでしょうか

262 名前:デフォルトの名無しさん mailto:sage [2008/06/14(土) 21:15:27 ]
あ、lstrlenでいけるっぽいですね。スレ汚しすみません。

263 名前:デフォルトの名無しさん mailto:sage [2008/06/14(土) 21:32:21 ]
わかってるかもしれんけど、
「バイト数」は lstrlen(str) * sizeof(TCHAR) じゃないと求まらんよ

264 名前:デフォルトの名無しさん mailto:sage [2008/06/14(土) 21:33:36 ]
>>263
おまい、優しいな



265 名前:デフォルトの名無しさん mailto:sage [2008/06/14(土) 21:35:55 ]
strlenとlstrlenて何が違うんだ?ずっとstrlen使ってたんだけぢ

266 名前:デフォルトの名無しさん mailto:sage [2008/06/14(土) 21:36:19 ]
引数の型が違う

267 名前:デフォルトの名無しさん mailto:sage [2008/06/14(土) 21:44:09 ]
やっぱり違いが判らない

lstrlenのLPCTSTRって
strlenのconst char* と同じでしょ?

268 名前:デフォルトの名無しさん mailto:sage [2008/06/14(土) 21:45:39 ]
#define UNICODE

269 名前:デフォルトの名無しさん mailto:sage [2008/06/14(土) 21:49:57 ]
じゃあ
lstrlen=_tcslenなわけ?

270 名前:デフォルトの名無しさん mailto:sage [2008/06/14(土) 21:50:34 ]
>>265
lstrlenはスレ違いじゃないけどstrlenはスレ違い

271 名前:デフォルトの名無しさん mailto:sage [2008/06/14(土) 21:54:04 ]
_tcslenもスレ違い

272 名前:デフォルトの名無しさん mailto:sage [2008/06/14(土) 21:54:16 ]
>>269
lstrlen (lstrlenA, lstrlenW) は Win32API (ダイナミックリンク)
_tcslen (strlen, wstrlen) は C Runtime (スタティックリンク)
この違い重要な

273 名前:デフォルトの名無しさん mailto:sage [2008/06/14(土) 21:56:17 ]
> C Runtime (スタティックリンク)
馬鹿は黙っててね

274 名前:デフォルトの名無しさん mailto:sage [2008/06/14(土) 21:58:20 ]
>>272
CRTもダイナミックリンクできるが?

つーか基本的にwsprintfとかlstrlenとかWin16でメモリが厳しくてCRTなんか使ってられるかって時代の遺物なんだから気にするな。使うな。



275 名前:デフォルトの名無しさん mailto:sage [2008/06/14(土) 22:06:41 ]
Win32API はスタティックリンクできないが
C Runtime は普通スタティックリンクで使うので間違ってはいない

276 名前:デフォルトの名無しさん mailto:sage [2008/06/14(土) 22:09:08 ]
>>275
VC8はダイナミックリンクがデフォ設定になってたなぁ


277 名前:272 mailto:sage [2008/06/14(土) 22:34:54 ]
>>276
あ、確かにデフォルトで /MD (msvcr80.dll) になってるわ
普段 cl.exe とか nmake.exe とかでやってるから libcmt.lib が当たり前だと思ってた

あと誰もつっこんでくれないけど wstrlen じゃなくて wcslen
また多分 strlen ぐらいならコンパイラがインライン展開してくれると思う

278 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 00:23:16 ]
msvcrt.dllはKnownDLLsだから、これを使うならCRTもWin32APIみたいな物じゃね
まーそのせいで最近のVC++はmsvcrt.dllが使用できないが

279 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 01:08:48 ]
リストボックスに横スクロールバーを追加したのですが、項目の文字列の幅を正確に取得出来ないのか全ての文字が表示される所までスクロール出来ません。

GetTextExtentPoint32()は

> デバイスの中には、通常のセル配列に文字を配置しないデバイス(すなわちカーニングを実行するデバイス)もあるため、文字列内の個々の文字のサイズの総計と文字列全体のサイズとが一致しないことがあります。

の解説から等幅しか正しく計算出来ないようですが、プロポーショナルフォントで正しく計算する方法はないのでしょうか。
※これとは別に垂直スクロールバー分のGetSystemMetrics(SM_CXVSCROLL)は足しています。

280 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 01:18:08 ]
その説明は関係ないだろ
(もし1文字分ずつ別々に測って足してったら正しい結果は出ないよって意味だ)
ちゃんとDCにフォントを選択したか?

281 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 01:32:32 ]
>>280
誤解を解いてくれてありがとうございます。

> DCにフォントを選択したか
選択したら、未選択の時より短くなってしまいました。

追加したコード

HFONT hFont = CreateFont(-MulDiv(9, GetDeviceCaps(hDC, LOGPIXELSY), 72), 0, 0, 0, 400, 0, 0, 0, DEFAULT_CHARSET, OUT_OUTLINE_PRECIS, CLIP_DEFAULT_PRECIS, ANTIALIASED_QUALITY, VARIABLE_PITCH, L"MS UI Gothic");
SelectObject(hDC, hFont);



DeleteObject(hFont);

282 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 02:50:21 ]
>>281
それはリストボックスと同じフォントか?
というかWM_GETFONTでフォントもらえ

283 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 11:24:09 ]
>>282
遅レスすみません。
リストボックスのフォント(ダイアログのフォントと同じ)はMS UI Gothic 9ptですが、WM_GETFONTで取得したフォントは何故かArialの12pt(?)になっていました。
更にウィンドウ上の文字もそれに変わって表示が滅茶苦茶に…。
勿論Arialなんて何処にも使用していません。

何処に原因があるのか解らないので一度Win32APIから離れて.NETでGraphicsオブジェクトを作りMeasureString()で幅を取得してHorizontalExtentプロパティに設定したら、こちらは上手くいきました。

結局の所、正しいフォントが選択されていない事が最大の原因でしょうか。
そうだとしたら何故フォントが正しく取得出来ないのでしょうか。

284 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 13:08:11 ]
>>282
もらえるのはHFONTだが、それがArialだってのはどうやって調べた
(というか調べる必要があった)んだ? DCにハンドル選択するだけなのに。
本当にArialとやらだったら、取得に失敗してシステムフォントが返ってるんだろ。

他のウィンドウのフォントが崩れたのは、
このスレにコード念写できる人はおらんから確かなことは言えんが
おおかたもらったフォントをDeleteObjectでもしたんでないの。



285 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 13:24:08 ]
> それがArialだってのはどうやって調べた
ウィンドウに表示される文字で判別しました。

> もらったフォントをDeleteObjectでも〜
思い切りしていました…。
削除する事でフォントは正常に戻りましたが、やはり文字列の最後までスクロール出来ません。
文字コードは全てワイド文字で処理していますが、これが関係しているのでしょうか。

286 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 13:48:23 ]
> ウィンドウに表示される文字
それほど信頼できん調べ方はないだろうがw
フォントリンクとかでぐぐっとけよ

287 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 13:52:08 ]
>>285
あなたにWin32APIは無理です。
諦めて.NETを使いましょう。いい時代になりましたね。

288 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 01:30:35 ]
>>285
>ウィンドウに表示される文字で判別しました。
フォント名がほしいなら GetTextFace() とか使ってくれ

とりあえず GetTextExtentPoint32() のリファレンス読み直すとか、
DrawText() に DT_CALCRECT 渡すなどの方法で代用するとか

289 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 07:54:20 ]
Advanced Windows っていい本ですね
高いけど

290 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 09:13:10 ]
>>288
情報小出しする奴はスルーしとけ

291 名前:デフォルトの名無しさん [2008/06/16(月) 12:13:15 ]
テキストエディタ作りたいんですけど、
どうやって日本語入力するんでしょうか?

292 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 12:17:26 ]
テキストボックスでも貼っとけ

293 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 12:27:58 ]
日本人なら日本語ぐらい入力できるだろ

294 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 12:32:31 ]
msdn.microsoft.com/ja-jp/library/cc422019.aspx



295 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 12:40:26 ]
>>292
すごく・・・
完了しました

296 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 13:15:54 ]
今時Edit貼っただけのテキストエディタなんて需要ゼロだろ

297 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 14:25:39 ]
コンソールで作るんだろ?

298 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 14:29:25 ]
SEDやEDLINのx64コンソール対応版か

299 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 14:56:54 ]
HTREEITEMのハンドルの比較はどのようにやればいいですか?

300 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 15:12:45 ]
==

301 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 15:26:44 ]
冗談抜きで==以外にアイテム同一の比較する方法はない

302 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 15:37:52 ]
>>288
遅レスすみません、DrawText()にDT_CALCRECTを渡す方法で出来ました。

上記方法での取得値 - リストボックスの幅 + 縦スクロールバーの幅

で正確なスクロール幅が算出出来ました。
本当にありがとうございました。

303 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 16:20:15 ]
一瞬>>300が何のレスか分からないw

304 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 17:49:15 ]
Cから呼び出したDLL内でEXCEPTION_ACCESS_VIOLATION (0xc0000005)
が発生した場合、それをC側から補足できますでしょうか?
例外が発生したことを上の関数に返したいのですが
難しいでしょうか?

よろしくお願いいたします。



305 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 17:50:49 ]
VC++なら___try - ___catch(EXCEPTION_EXECUTE_HANDLER)

306 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 17:51:01 ]
___じゃない、__

307 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 18:17:43 ]
>>305
ありがとうございます。
スーパー助かりました。

308 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 19:33:49 ]
コンビニどういたしまして。

309 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 19:43:32 ]
まさか全く関係ない奴が、どういたしましてなんて言ってないよなw

310 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 19:51:31 ]
私には心の分身が居るので彼らがどういたしましてを言っています

311 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 19:54:08 ]
たとえ心が離れていても僕たちはいつもひとつ!

312 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 20:21:42 ]
それ多重人格じゃね?

313 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 21:40:53 ]
このスレには人工無脳が搭載されてるのを知らないのか?
「ありがとうございます」に対して自動で「どういたしまして」と返信して回答者の煩わしさを軽減してくれてるんだよ。

ただあまり賢くないから、たまに暴走して意味不明なレスで荒れたり
「なぜこんな設計にするのか理解できない」→「分からないならレスしないでください」
と煽ったりして荒れる原因になって迷惑な一面もある。

314 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 21:51:45 ]
説明ありがとうございます



315 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 21:53:25 ]
どういたしまして

316 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 22:48:13 ]
質問です。

CreateProcessでメモ帳(notepad.exe)を起動する際に、
ユーザーがCtrlキーを押しながら起動しても最前面にメモ帳を表示させたいのですが、
試行錯誤を繰り返していますが上手くいきません。
ご教授お願いいたします。

317 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 22:49:43 ]
お断りします

318 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 22:51:32 ]
お断りじゃあ仕方ないよな
あきらめろ

319 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 23:26:58 ]
AttachThreadInputとかかね?

320 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 23:30:10 ]
>>243
規制に巻き込まれて遅レスだが
WS_EX_TRANSPARENTスタイルを追加してWM_ERASEBKGNDで背景画像をBitBlt。
ちらつくので親ウィンドウにWS_CLIPCHILDREN追加して
RichEditのカーソル付近の表示がおかしくなるので親ウィンドウのWM_PAINTで
RichEditのUpdateWindow追加でいけると思う。

321 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 23:56:19 ]
>>291
IME対応を何もしなくても、確定した文字列は最悪WM_CHARで1文字ずつ送られてくる (IME-unaware)。
ANSIモードだとShift_JISの2バイト文字も1バイトずつ送られてくる。

それだとあまりにも不便すぎるから、IMM APIを使って取得する。
確定文字列の取得はWM_IME_COMPOSITIONかつlParam & GCS_RESULTSTRのとき。
詳しくはググれ。あと、再変換対応も忘れるな。

現在はIMMからTSFへ移ろうとしているんだが、
IMMでしか使えない変換エンジンの1つにATOKもあるし、
XPまでだと様々な理由でTSFをオフにしたり、そもそもTSFが入っていなかったりするので、
TSFのみの対応のアプリケーションは非現実的。IMMのみかIMM/TSF両対応にすべき。

322 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 00:40:38 ]
> ユーザーがCtrlキーを押しながら起動しても

今頃こんな機能があることを知った

ありがとう2ちゃんねらー

323 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 00:44:18 ]
Ctrlキー押して起動してみたけど
なんもならないぞ

324 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 01:06:34 ]
>>322
マジだ・・・今まで知らんかった



325 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 01:13:50 ]
Shiftを押しながらだと・・・


326 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 01:17:19 ]
shift 最小化して起動
alt  プロパティ

知りませんでした

327 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 01:25:42 ]
すげぇマジだ。
Windowsのプログラマは只者じゃねーな。

328 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 04:20:05 ]
スタートメニューやクイック起動からだと
Ctrl+クリック  バックグラウンドで起動 (メモ帳だけ?)
Shift+クリック メニューが勝手に消えない

Shift+クリックなんて知らなかった。これ結構便利だな。

329 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 10:01:57 ]
> Shift+クリック メニューが勝手に消えない

うおおおお
すげえ、これすげえ
感激した

330 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 10:03:29 ]
感激したので、これからは
WinMainのnCmdShow引数をまじめに処理しようと思う

331 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 10:55:21 ]
で、結局Ctrl押しながら起動でZオーダー最前面にする方法は誰も分からんのか、、、

332 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 11:03:25 ]
便利な機能を殺すのか。
ウィンドウハンドルをどうにか持って来れれば何とかならんか?

333 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 11:58:07 ]
メモ帳のソースコードが公開されていて改修できるなら可能だと思うが、
それが出来ないならちょっと思いつかないな。

334 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 12:09:26 ]
notepad.exeを改造すればいいじゃない
その程度のクラック知識も無い人はWin32APIで開発なんてやめた方がいいと思うよ



335 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 12:10:27 ]
STARTUPINFOに仕込んでてもダメかな…

336 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 12:15:25 ]
流出はしてたかもしれんなw

337 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 12:16:32 ]
別に変な事をしなくてもThreadIDから窓を列挙して前面に移動すればいいだけじゃないか

338 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 12:22:58 ]
実際にやってみれ
多分無理

339 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 12:27:54 ]
メモ帳限定でいいなら
CreateProcess→WaitForInputIdle→ウィンドウ列挙してプロセスIDから該当のメモ帳を探す
→AttachThreadInputでアクティブプロセスのコンテキストを割り当て→SetForegroundWindow
こうかな?

340 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 14:18:04 ]
メモ帳をフックすればいいだろ

341 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 14:31:43 ]
ソレダ!

342 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 14:34:47 ]
んー
Process32FirstとProcess32Nextを使ってNotePad.exeと親のプロセスIDとを取得。
AttachThreadInputでアタッチして制御をもらって、終わったらデタッチ。

ただ、NotePad.exeのウインドウハンドルはどうやって取得するんだろう。
それが出来ればSetActiveWindowなりSetForegroundWindowを呼べるんだが。

343 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 14:41:59 ]
CreateProcess したのに、わざわざそうやってプロセスID取得するの?
EnumWindows()とGetWindowThreadProcessId()を組み合わせて探すのが
バージョン依存しなくていいかも。

344 名前:343 mailto:sage [2008/06/17(火) 14:42:45 ]
下2行はプロセスIDからウィンドウハンドル探す方法ね。



345 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 16:53:06 ]
バージョン依存ってProcess32FirstがNT4で使えないとかそういう事かね?

346 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 16:57:07 ]
メモ帳側が変わるかということじゃね

347 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 19:19:45 ]
変わらねーよw

・タブ対応
・正規表現grep
・構文ハイライト
・ソース折り畳み
ぐらいは対応して欲しいけどな

348 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 19:33:24 ]
そんな高機能なメモ帳なんてメモ帳じゃないやい・゚・(つД`)・゚・

でも、Vistaのメモ帳ではCtrl+Gで行番号指定移動に対応していたりと
結構侮れなかったりもする。

349 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 19:36:52 ]
メモ帳はタブ幅を4に変更可能にしてくれればもう何も言うことはない

350 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 19:45:13 ]
comctl32を設計した馬鹿をひっぱたきたい。

351 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 19:54:15 ]
メモ帳に関連づけてるファイルがなくて試せない俺は負け組

352 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 19:57:05 ]
>>350
つうほうしまたし

353 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 20:18:29 ]
メモ帳というかEditコントロールが貧弱すぎ。
無制限UNDO/REDOやドラッグドロップぐらい標準で対応しろと。
マウス乗せたらボワっと色が変わるようなくだらん機能つけるぐらいなら基本機能を充実させろと。

354 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 20:22:41 ]
そんなもの標準でつけられても、結局は込み入ったことするには不足で、自前で実装することになるのが目に見えてる。



355 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 21:31:19 ]
SetWindowHookEx で、WH_MOUSE を指定し、プライマリスレッドへのローカルフックを
設定しているのですが、MOUSEHOOKSTRUCT.dwExtraInfoは常に0になります。
XBUTTONの番号やホイールの回転量が取れなくて困るのですが、これは仕様なんでしょうか。

356 名前:355 mailto:sage [2008/06/17(火) 21:47:41 ]
すみません。ググったらすぐわかりました。MOUSEHOOKSTRUCTEXを使うべきなんですね。

357 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 21:54:32 ]
Editコントロールを改良してくれるというなら、TSFに対応してほしかった。
ただ、MS-IMEナチュラルインプットがフェードアウト気味で、どうでもいいと思うようになってきたけど。

358 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 21:59:44 ]
時代はATOKです

359 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 22:27:14 ]
SS_BITMAPを指定したスタティックコントロールにStretchBlt()した画像を貼り付ける方法が判りません。

(WM_PAINT以外)
hBmp = (HBITMAP)LoadImage(NULL, L"test.bmp", IMAGE_BITMAP, 640, 480, LR_LOADFROMFILE);
HDC hDC = GetDC(hwnd);
hMemDC = CreateCompatibleDC(hDC);
SelectObject(hMemDC, hBmp);
hBackDC = CreateCompatibleDC(hMemDC);
hBackBmp = CreateCompatibleBitmap(hMemDC, 256, 192);
SelectObject(hBackDC, hBackBmp);
SetStretchBltMode(hBackDC, STRETCH_HALFTONE))
StretchBlt(hBackDC, 0, 0, 256, 192, hMemDC, 0, 0, 640, 480, SRCCOPY);
ReleaseDC(hwnd, hDC);

(WM_PAINT内)
BeginPaint(hwnd, &ps);
SendDlgItemMessage(hwnd, IDC_BITMAP1, STM_SETIMAGE, IMAGE_BITMAP, (LPARAM)hBackBmp);
EndPaint(hwnd, &ps);

このようにしてみましたが、スタティックコントロール上には何も表示されません。
何が原因でしょうか。
※便宜上WM_〜と書いていますが、実際はメッセージクラッカーを使用しています。

360 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 22:42:44 ]
WM_PAINT内

361 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 23:38:47 ]
マインスイーパの(ニコニコマークの)ボタンのようなものを押そうとしているんですが、

HWND hwnd = FindWindow(NULL,TEXT("マインスイーパ"));
POINT pos = {87,27};
int lparam = (pos.y<<16) + pos.x;
PostMessage(hwnd,WM_LBUTTONDOWN,0,lparam);
PostMessage(hwnd,WM_LBUTTONUP,0,lparam);

で押したことにできません。
pos={100,100}とかで下の領域部分は押したことにできます。
調べた感じ、ボタンっぽい部分はハンドルも持ってなさそうなのですが、
どうすれば押せるのでしょうか?

362 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 23:40:11 ]
>>361
F2を押したことにするんじゃだめなの?

363 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 23:43:35 ]
>>362
マインスイーパをプログラムで操作したいというよりは、
ハンドルを持っていないボタンを押したいということなんです。

364 名前:362 mailto:sage [2008/06/17(火) 23:43:36 ]
よく考えたらF2よりメニューのID調べてWM_COMMAND送ったほうが楽かも



365 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 23:46:23 ]
>>363
SendInput

366 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 23:54:28 ]
>>365
やっぱりそれしかないんですかね?
PostMessageでなんとかしたかったけど、SendInputでいってみます。
ありがとうございました。

367 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 00:31:14 ]
「チートのためのSendInput」
という本を書いたら売れますか?

368 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 02:50:24 ]
チート専門ならWin32APIなんかよりAHKでも薦めるかな

369 名前:デフォルトの名無しさん [2008/06/18(水) 13:13:44 ]
すみません、ちょっとお聞きしたいんですが、
CreateFileMappingAの戻り値のHANDLEから
_open_osfhandle()と_fdopen()とで
FILE*を取得することは出来るんでしょうか?
どうもやってみても_open_osfhandle()が-1を返すんですが、
失敗する理由が自分のコーディングミスなのか仕様なのか分からないです。


370 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 14:27:41 ]
そのハンドルは別のものだから使えないよ

371 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 17:25:33 ]
>>360
遅レスすみません、漸く解りました。
ありがとうございます。

(WM_PAINT以外)
hBmp = (HBITMAP)LoadImage(NULL, L"test.bmp", IMAGE_BITMAP, 640, 480, LR_LOADFROMFILE);
HDC hDC = GetDC(hwnd);
hMemDC = CreateCompatibleDC(hDC);
SelectObject(hMemDC, hBmp);
hBackDC = CreateCompatibleDC(hMemDC);
hBackBmp = CreateCompatibleBitmap(hMemDC, 256, 192);
hPrevBmp = SelectObject(hBackDC, hBackBmp);
SetStretchBltMode(hBackDC, STRETCH_HALFTONE))
StretchBlt(hBackDC, 0, 0, 256, 192, hMemDC, 0, 0, 640, 480, SRCCOPY);
ReleaseDC(hwnd, hDC);

(WM_PAINT内)
BeginPaint(hwnd, &ps);
HBITMAP hTempBmp = (HBITMAP)SelectObject(hBackDC, hPrevBmp);
SendDlgItemMessage(hwnd, IDC_BITMAP1, STM_SETIMAGE, (WPARAM)IMAGE_BITMAP, (LPARAM)hBackBmp);
SelectObject(hBackDC, hTempBmp);
EndPaint(hwnd, &ps);

372 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 17:27:16 ]
>>371
そのソースじゃ何も解っていないようだな

373 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 17:28:40 ]
WM_PAINTの度にSTM_SETIMAGEを送る必要はない気がするんだけど、自分の勘違いか?

374 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 17:40:35 ]
てかStretchBlt自体が不要。SS_REALSIZECONTROLでいいじゃん。
それとも、XP未満にも対応する必要でもあるの?



375 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 20:02:36 ]
戦略からコードの細部にいたるまで間違いだらけだな、感動した。
またクライアント領域の人か?基礎からちゃんと勉強しないと話にならんぞ。

376 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 20:40:19 ]
今更Win32の基礎を勉強するなんて馬(ry






[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧](*・∀・)<81KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef