- 1 名前:デフォルトの名無しさん [2007/04/18(水) 01:54:51 ]
- スレ立てるまでもない、Win32APIのついての質問はこちらへどうぞ。
やさしいお兄さんやお姉さんたちが答えてくれるかも。 過去スレ、関連リンクは>>2-5くらい。 ■注意 ・質問する前にMSDNライブラリやPlatformSDK、Google等で検索しましょう。 ・日本語版MSDN Online Libraryは不完全です。英語版(msdn.microsoft.com/library/)の利用推奨。 ・APIフックなど高度な事をしたい場合はできるだけAdvenced Windowsを読みましょう。 ・言語特有の問題やIDE、MFCやVCLなどの質問はそれぞれの言語や開発環境スレで
- 331 名前:デフォルトの名無しさん mailto:sage [2007/04/26(木) 11:24:47 ]
- >>327
>>325
- 332 名前:316 mailto:sage [2007/04/26(木) 11:26:43 ]
- ラジャー>>329
やってみます。あ、でもプリンタ使えるの昼から。 ゴメンナサイ>>330 実体はこれです。 ↓ procedure TBitmapPrinter.StretchDrawDIB(Canvas: TCanvas; r: TRect); var OldMode: Integer; // StretchMode のセーブ begin OldMode := SetStretchBltMode(Canvas.Handle, COLORONCOLOR); StretchDIBits(Canvas.Handle, r.Left, r.Top, r.Right - r.Left, r.Bottom - r.Top, 0, 0, BitmapInfo^.bmiHeader.biWidth, BitmapInfo^.bmiHeader.biHeight, ImagePtr, BitmapInfo^, DIB_RGB_COLORS, SRCCOPY); SetStretchBltMode(Canvas.Handle, OldMode); end;
- 333 名前:デフォルトの名無しさん [2007/04/26(木) 11:29:35 ]
- >>331
すみません、見落としてました・・・ >>325 ありがとうございます。 それでちゃんとできました。
- 334 名前:デフォルトの名無しさん mailto:sage [2007/04/26(木) 12:16:27 ]
- >>333
WaitForInputIdleはコンソール不可なので注意ね。
- 335 名前:316 mailto:sage [2007/04/26(木) 12:21:16 ]
- つまり、
>OldMode := SetStretchBltMode(Canvas.Handle, COLORONCOLOR); を、 COLONCOLORから変えればよいんだ。 BLACKONWHITEとWHITEONBLACKって何で2つもあるよ。。。
- 336 名前:デフォルトの名無しさん mailto:sage [2007/04/26(木) 12:25:35 ]
- >>335
>BLACKONWHITEとWHITEONBLACKって何で2つもあるよ。。。 ANDとORの違い。
- 337 名前:デフォルトの名無しさん mailto:sage [2007/04/26(木) 12:26:51 ]
- >ANDとORの違い。
普通の印刷ではどちらを使うんですか?
- 338 名前:デフォルトの名無しさん mailto:sage [2007/04/26(木) 12:32:03 ]
- >>337
普通の印刷はどうかしりませんが、 BLACKONWHITEは 0 & 1 = 0で黒が残る WHITEONBLACKは 0 | 1 = 1で白が残る ただそれだけ。
- 339 名前:デフォルトの名無しさん mailto:sage [2007/04/26(木) 12:37:49 ]
- まあ両方やってみればわかる
モノクロビットマップにStrechBltして画面表示してみるのもいいかもな
- 340 名前:デフォルトの名無しさん [2007/04/26(木) 13:21:11 ]
- >>334
了解しました! ありがとうございます!!
- 341 名前:デフォルトの名無しさん [2007/04/26(木) 15:39:58 ]
- あるウィンドウを親として、新たに作った子ウィンドウを貼り付けたい(親側をドラッグすると、子ウィンドウもそれに追随するような)のですが、どのように実装したらよいかアドバイスいただけませんでしょうか。
よろしくお願いいたします。
- 342 名前:デフォルトの名無しさん mailto:sage [2007/04/26(木) 15:41:52 ]
- CreateWindowでWS_CHILD
- 343 名前:316 mailto:sage [2007/04/26(木) 16:22:55 ]
- SetStretchBltModeは関係無いみたいです。
真っ黒に出たり、ちゃんと出たり、不安定。
- 344 名前:316 mailto:sage [2007/04/26(木) 16:53:35 ]
- 連続印刷した場合に、真っ黒になります。
- 345 名前:316 mailto:sage [2007/04/26(木) 16:57:43 ]
- 連続投稿すみません。
自アプリが印刷した結果がWinのスプールにまだ残っているかどうか、判断する方法はありますか?
- 346 名前:デフォルトの名無しさん mailto:sage [2007/04/26(木) 17:18:50 ]
- 具体的にそうなるコードを出してみては
そもそも真っ黒になるのはプログラムが悪いんだから
- 347 名前:316 mailto:sage [2007/04/26(木) 17:30:29 ]
- 自己解決しました、お騒がせしてすみません。
- 348 名前:316 mailto:sage [2007/04/26(木) 18:30:21 ]
- 347は偽者です。
コードは332です。
- 349 名前:デフォルトの名無しさん mailto:sage [2007/04/26(木) 18:46:54 ]
- >>348
>>332には、印刷時のページ更新とかないだろ
- 350 名前:デフォルトの名無しさん mailto:sage [2007/04/26(木) 19:51:02 ]
- StartPageしたあとに毎回SetStretchBltModeしてない
とかいう落ちか?
- 351 名前:デフォルトの名無しさん mailto:sage [2007/04/26(木) 22:30:22 ]
- いままでの流れ。
>>あーや ・質問 ビットマップを印刷する処理で カラープリンタ→出力おk 白黒プリンタ→真っ黒画面 なんで? >>324 → あーや プリンタのDCに直接StretchBltした時、真っ黒出力経験あり。 キャッシュDCを作成してStretchBlt→BitBltの提案。 >>326 → あーや GetDeviceCapsでプリンタ能力も調べろと提案。 >>あーや >>324の方法でカラーはおk。白黒プリンターはやっぱりダメ。 >>326のいうGetDeviceCapsに初耳。 >>329 → あーや 白≒黒より、StrechBltModeの設定を推測。 >>330 → あーや GetDeviceCapsのRC_STRETCHBLTフラグの意味を教える。
- 352 名前:デフォルトの名無しさん mailto:sage [2007/04/26(木) 22:30:53 ]
- (つづき)
>>あーや → 329 昼飯はトンカツ定食にしようか悩みつつ返信。 >>あーや → 330 GetDeviceCapsを理解。 お昼だけにソースをさらしてみる。 >>あーや SetStretchBltModeのBLACKONWHITEとWHITEONBLACK気付く。 なお、ここで返信した336,338,339は、実は奇遇にも同じ町内。 >>あーや とりあえず、カラープリンタ、白黒プリンタ出力おkっぽいが、 連続印刷した場合、白黒プリンタがやっぱりダメ。 なぜか、StrechBltModeは関係ないと断定。 そして、あーやの興味はスプールへ・・・ >>あーや → 347 少しカチンと来る。 >>349-350 解答発表?
- 353 名前:デフォルトの名無しさん mailto:sage [2007/04/27(金) 01:55:35 ]
- ダイアログボックスを作って、初期のフォーカスをダイアログボックス内のエディットコントロールに
SetForcusで配置したいのですが、ダイアログボックス内のエディットコントロールのハンドルが 分からないので出来ません。というよりも、ダイアログボックス内のウィンドウにはどのように ハンドルをつければいいのでしょうか?
- 354 名前:デフォルトの名無しさん mailto:sage [2007/04/27(金) 02:14:25 ]
- GetDlgItem
- 355 名前:デフォルトの名無しさん mailto:sage [2007/04/27(金) 02:21:49 ]
- ダイアログベースでBS_DEFPUSHBUTTONを指定すると
「Enter」を押した時、ボタンを押下できるけど普通にリソースを 使わず(CreateWindow等)で作成したボタンに対して「Enter」は反応を 示さないんだけど。これはどうやって解決すればいいんでしょうか? 因みに「Enter」に反応するのはIDOKでそれ使ってもいいんですが、 できれば自分が指定したコントロールIDに変更できればいいなと思って 探してDM_SETDEFIDなるものを発見してSendMessage使って試したんだけど やっぱりうまくいかなかった。これはダイアログにしか通用しないのかな。 因みにSendMessageはこんな感じ(WM_CREATE内で使ってる) SendMessage(hWnd, DM_SETDEFID, (WPARAM)ID_CONTROL, 0L);
- 356 名前:デフォルトの名無しさん mailto:sage [2007/04/27(金) 03:20:26 ]
- >>354
ありがとうございました。無事フォーカス設定することができました。 しかし、エディットコントロールにフォーカスを持っていったら何故か ボタンをクリックしても動作しないようになりました(Enterキーでは動作する)。 フォーカス外すと普通にボタンの機能は復活します。これは何が原因なのでしょうか?
- 357 名前:デフォルトの名無しさん [2007/04/27(金) 08:01:56 ]
- 付箋紙ソフトのように、たくさんのウィンドウを表示してもタスクバーに何も表示されないようにするには
どうしたらいいのでしょうか?
- 358 名前:デフォルトの名無しさん mailto:sage [2007/04/27(金) 08:03:22 ]
- >>356
Enterキー以外の処理(else側)はスルーしてるんじゃないの?
- 359 名前:デフォルトの名無しさん mailto:sage [2007/04/27(金) 08:05:06 ]
- >>357
いろいろ手法はあるけど? 統括管理ソフトを、時計横のタスクバーに駐在させるとか・・・ 想定するターゲットを詳しく
- 360 名前:デフォルトの名無しさん mailto:sage [2007/04/27(金) 08:07:38 ]
- >>357
っ不可視の親Window っWS_POPUP
- 361 名前:デフォルトの名無しさん mailto:sage [2007/04/27(金) 08:12:02 ]
- >>359ー360
試してみます!
- 362 名前:デフォルトの名無しさん mailto:sage [2007/04/27(金) 08:29:07 ]
- >>355
IsDialogMessageは?
- 363 名前:355 mailto:sage [2007/04/27(金) 12:23:56 ]
- >>362
ダイアログでの作成じゃない場合(メインウィンドウ)の 時どうやってダイアログと同じように実現すればいいのかを知りたい。
- 364 名前:デフォルトの名無しさん mailto:sage [2007/04/27(金) 12:41:48 ]
- ウィンドウプロシージャでEnterキーをトラップすりゃいいんじゃねぇの?
- 365 名前:355 mailto:sage [2007/04/27(金) 12:43:36 ]
- やっぱそれしかないのかな。
IDOKはデフォルトでEnter拾ってくるから そのIDOKの設定を別IDに変更できるんじゃないかと思ってたんだが
- 366 名前:355 mailto:sage [2007/04/27(金) 12:44:47 ]
- 因みにDM_GETDEFIDやDM_GETDEFIDはダイアログプロシージャにしか
意味無いんだよね?普通にメインウィンドウでやっても何の効果もなかったから
- 367 名前:デフォルトの名無しさん [2007/04/27(金) 14:03:22 ]
- 342さんレスありがとうございます。
>342 CreateWindowでWS_CHILD 試してみたんですが、うまくいかず色々調べていたら、 親のウィンドウの拡張アトリビュートに「WS_EX_LAYERED」が立ってました、 このフラグを消すと正しく動くことからこのフラグが問題かと思うのですが、 「WS_EX_LAYERED」が立ってるウィンドウに対し「WS_CHILD」のような子ウィンドウを作ることは出来ませんでしょうか 重ね重ね申し訳ございませんが、よろしくお願いいたします。
- 368 名前:デフォルトの名無しさん [2007/04/27(金) 16:49:28 ]
- 仕様書嫁
- 369 名前:デフォルトの名無しさん mailto:sage [2007/04/27(金) 16:58:05 ]
- そもそも正しく動く、動かないとはどういうことか
- 370 名前:316 mailto:sage [2007/04/27(金) 17:13:14 ]
- PCのメモリを1ギガにしたら解決しました。
フォトプリンタってのは、普通のプリンタよりメモリを食うものなんでしょうか。 それからStrechBltModeは無意味というか無関係ですね。 プリンタドライバも流石にStrechBltModeが間違っててもエラーを起こさないようにしてんじゃないですか? >>>あーや → 347 > 少しカチンと来る。 ↑ だから347はニセモノです。
- 371 名前:デフォルトの名無しさん mailto:sage [2007/04/27(金) 17:15:51 ]
- ニセモノが出るって事は、キミのやりとりに問題があるってことだよ
- 372 名前:デフォルトの名無しさん [2007/04/27(金) 18:12:50 ]
- 質問があります。
UNICODE版のプログラムを作成していますが、 部分的にANSI版のAPIを使用したい箇所があります。 それで関数名の後に直接”CreateWindowA”みたいにAとかWを付けると ANSI UNICODEの呼び出しの切り替えができるようなことが本に書かれて いるのですが、直接Aをつけても関数がみつからないとコンパイラから エラーがでます。 教えてください。よろしくお願いします。
- 373 名前:372 [2007/04/27(金) 18:17:30 ]
- includeファイルの位置変更したら解決しました.
アホな質問してすみませんでした
- 374 名前:デフォルトの名無しさん mailto:sage [2007/04/27(金) 18:27:18 ]
- >>363
IsDialogMessageは、ダイアログでない普通のウィンドウも対象にできる。
- 375 名前:デフォルトの名無しさん mailto:sage [2007/04/27(金) 20:10:24 ]
- >>370
>PCのメモリを1ギガにしたら解決しました。 その場しのぎとしてはセーフだが、 調査したほうが良いよ。 ドライバのver upで能力差とか、 ソースのメモリDC解放してないとか、 どっかで使いまわしているとか、 BitBltを使った初期化(WHITENESS、BLACKNESS)とか ビットマップをダンプしてみるとか・・・
- 376 名前:371 mailto:sage [2007/04/27(金) 21:54:30 ]
-
- 377 名前:デフォルトの名無しさん mailto:sage [2007/04/27(金) 23:30:08 ]
- WH_KEYBOARD_LLはコマンドプロンプトに通用するですか?
- 378 名前:デフォルトの名無しさん mailto:sage [2007/04/28(土) 00:40:51 ]
- >>377
cmd.exeでDOS窓を開いたときの動作の話なら、通用した(今試した)
- 379 名前:デフォルトの名無しさん mailto:sage [2007/04/28(土) 08:10:27 ]
- とん
- 380 名前:デフォルトの名無しさん mailto:sage [2007/04/28(土) 08:26:04 ]
- こつ
- 381 名前:デフォルトの名無しさん mailto:sage [2007/04/28(土) 11:09:22 ]
- フォルダのデフォルトのアイコンって取得できますか?
- 382 名前:デフォルトの名無しさん mailto:sage [2007/04/28(土) 11:10:15 ]
- はい
- 383 名前:デフォルトの名無しさん mailto:sage [2007/04/28(土) 11:23:52 ]
- >>382
教えてくれよん
- 384 名前:デフォルトの名無しさん mailto:sage [2007/04/28(土) 11:30:47 ]
- >>381みたいな聞き方をするからBOOLで返されちゃうんだよ
- 385 名前:デフォルトの名無しさん mailto:sage [2007/04/28(土) 11:44:05 ]
- >>381に対する一番正確な答えになっているしな。
- 386 名前:デフォルトの名無しさん mailto:sage [2007/04/28(土) 12:14:18 ]
- 自己解決したような気がします
SHGetFileInfo と SHGFI_SYSICONINDEXあたりすか
- 387 名前:デフォルトの名無しさん mailto:sage [2007/04/28(土) 12:43:05 ]
- >>372
CreateWindowはCreateWindowExのマクロに過ぎないので CreateWindowExAにする必要がある
- 388 名前:デフォルトの名無しさん mailto:sage [2007/04/28(土) 13:06:45 ]
- >>381に便乗質問だけど
SHGetFileInfo に空文字渡すとフォルダのアイコンが返ってくるけど、 これでいいんですか?
- 389 名前:デフォルトの名無しさん mailto:sage [2007/04/28(土) 16:07:46 ]
- おまえらほんと捻くれてるよな
- 390 名前:デフォルトの名無しさん mailto:sage [2007/04/28(土) 16:16:36 ]
- 必要な戻り値の型推論ができないだけ
- 391 名前:デフォルトの名無しさん mailto:sage [2007/04/28(土) 16:25:28 ]
- GetMessageの戻り値みたいに融通効かせてください><
- 392 名前:デフォルトの名無しさん mailto:sage [2007/04/28(土) 18:08:30 ]
- キャストしろ
- 393 名前:デフォルトの名無しさん mailto:sage [2007/04/28(土) 18:34:01 ]
- 僕を神にしてください
- 394 名前:デフォルトの名無しさん mailto:sage [2007/04/28(土) 19:57:54 ]
- キャストしろ
- 395 名前:デフォルトの名無しさん mailto:sage [2007/04/28(土) 20:02:55 ]
- delete[]すればいんじゃね?
- 396 名前:デフォルトの名無しさん mailto:sage [2007/04/28(土) 20:06:27 ]
- 洞窟の出口で秘宝を奪うべく待ってればいいと思うよ
- 397 名前:デフォルトの名無しさん mailto:sage [2007/04/28(土) 20:18:21 ]
- APIもせめて同じような定数は列挙型に纏めるとかしたらすっきりするんじゃないの?
- 398 名前:デフォルトの名無しさん mailto:sage [2007/04/28(土) 20:25:50 ]
- SDKとAPIを混同するな
- 399 名前:デフォルトの名無しさん mailto:sage [2007/04/28(土) 20:41:09 ]
- 397の文脈ではAPIでもいいと俺は思う。
関数なんかだけではなく、それを呼び出すために必要な定数や型もひっくるめてAPIと言うのだと思う。
- 400 名前:デフォルトの名無しさん mailto:sage [2007/04/28(土) 20:47:12 ]
- 勝手な定義を脳内で作って知ったかするのはやめておけ。
- 401 名前:デフォルトの名無しさん mailto:sage [2007/04/28(土) 20:51:55 ]
- ApplicationPrigramInterfaceと
SoftwareDevelopmentKit の違いがわかりません先生
- 402 名前:デフォルトの名無しさん mailto:sage [2007/04/28(土) 20:54:31 ]
- ヘッダファイル自体やライブラリや関連ツールなどがSDK
ヘッダファイルやタイプライブラリなどで定義されている内容がAPI だと思っていたが実際のところ正しい定義なんて考えたこともなかったな
- 403 名前:デフォルトの名無しさん mailto:sage [2007/04/28(土) 21:04:06 ]
- そもそもどこまでがAPIなんて誰もそんなことを定義していない。
C/C++以外からAPIを利用する場合は列挙型も何も存在しないし、 変なところで勝手に決めてしまうと他の言語から使うときに、 API以外の何か謎な物を使っていることになってしまう。
- 404 名前:デフォルトの名無しさん mailto:sage [2007/04/28(土) 21:06:31 ]
- 他の言語であらかじめされている定義が無いということね。
- 405 名前:デフォルトの名無しさん mailto:sage [2007/04/28(土) 21:24:56 ]
- あれだ、web系のアホが紛れ込んでるのかもしれん。
「APIと言えばwebサービスのインタフェースを指すようになった」 らしいぞ。
- 406 名前:デフォルトの名無しさん mailto:sage [2007/04/28(土) 21:42:36 ]
- 整数も渡せるだろ
- 407 名前:デフォルトの名無しさん mailto:sage [2007/04/28(土) 21:52:13 ]
- JAVAのinterfaceには定数(もどき)を定義できるし、定数を含めて問題あるまい。
というか既に定数無いか?
- 408 名前:デフォルトの名無しさん mailto:sage [2007/04/28(土) 21:57:42 ]
- >>401
Prigram
- 409 名前:デフォルトの名無しさん mailto:sage [2007/04/28(土) 22:14:08 ]
- 何か美味そう
- 410 名前:デフォルトの名無しさん mailto:sage [2007/04/28(土) 23:19:52 ]
- 画面に表示しないプログラムを作りたいのですが
時計の横にアイコンを登録することは出来ますか?
- 411 名前:デフォルトの名無しさん mailto:sage [2007/04/28(土) 23:26:49 ]
- >>410
できる。
- 412 名前:デフォルトの名無しさん mailto:sage [2007/04/28(土) 23:27:08 ]
- タスクバー?
可能です。
- 413 名前:デフォルトの名無しさん mailto:sage [2007/04/28(土) 23:33:31 ]
- GT-Rは5台持ってますよ
R32がVspecIIのガンメタとNISMOの白 R33がVspecのシルバー R34がMspecのホワイトとVspecII Nurのベイサイドブルー
- 414 名前:デフォルトの名無しさん mailto:sage [2007/04/28(土) 23:39:56 ]
- ま、俺のGTOには敵わないだろうけどな。
- 415 名前:デフォルトの名無しさん mailto:sage [2007/04/29(日) 01:51:20 ]
- NAだけどな。
- 416 名前:デフォルトの名無しさん mailto:sage [2007/04/29(日) 13:28:15 ]
- >>411
だからなんでみんな戻り値がboolなんだよw
- 417 名前:デフォルトの名無しさん mailto:sage [2007/04/29(日) 13:31:21 ]
- 出来るって分かれば自分で調べるだろ
- 418 名前:デフォルトの名無しさん mailto:sage [2007/04/29(日) 13:55:07 ]
- S_OKだけなら猿でも返せる
- 419 名前:デフォルトの名無しさん mailto:sage [2007/04/29(日) 14:00:51 ]
- >>410
メインウィンドウを非表示で作ればいい。 あとはタスクトレイ アイコンとかでググれ。
- 420 名前:デフォルトの名無しさん mailto:sage [2007/04/29(日) 14:02:41 ]
- なんかこの質問・回答にデジャヴを感じる
- 421 名前:デフォルトの名無しさん mailto:sage [2007/04/29(日) 14:06:05 ]
- 間欠泉のようなもんだから
- 422 名前:デフォルトの名無しさん mailto:sage [2007/04/29(日) 16:00:03 ]
- Shell_NotifyIconだったっけか
- 423 名前:422 mailto:sage [2007/04/29(日) 16:02:09 ]
- かすかな記憶を頼りに書いてみて調べてみたらビンゴだった
俺の記憶力もまだ捨てたもんじゃないな
- 424 名前:デフォルトの名無しさん mailto:sage [2007/04/29(日) 19:47:52 ]
- ワレのドタマカチ割って脳みそストローでチューチュー吸うたろか!
- 425 名前:デフォルトの名無しさん mailto:sage [2007/04/29(日) 19:53:13 ]
- 自分の頭を割るというのもなかなか豪儀だな
- 426 名前:デフォルトの名無しさん mailto:sage [2007/04/29(日) 19:55:41 ]
- なめとんかいわれ
- 427 名前:デフォルトの名無しさん mailto:sage [2007/04/29(日) 19:58:29 ]
- 貝割れ大根を嘗めているのか。あれは舌にピリッと来るよな。
しかし倒置法とはなかなか巧みじゃないか。
- 428 名前:デフォルトの名無しさん mailto:sage [2007/04/29(日) 20:15:36 ]
- じょんだらりん
- 429 名前:デフォルトの名無しさん [2007/04/29(日) 20:18:33 ]
- これをUNICODEビルドしたときにメッセージボックスに化けないで表示するには
どうしたらいいでしょうか? XP, VC6です。 HANDLE hFile; TCHAR buf[10]; DWORD dwSize; hFile = CreateFile( _T("C:\\aaa.txt"), GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL); ReadFile(hFile, buf, 3, &dwSize, NULL); CloseHandle(hFile); buf[3] = _T('\0'); MessageBox(NULL, buf, _T(""), MB_OK);
- 430 名前:デフォルトの名無しさん mailto:sage [2007/04/29(日) 20:21:13 ]
- MultiByteToWideChar
- 431 名前:429 mailto:sage [2007/04/29(日) 20:21:39 ]
- テキストファイルはSJISで中身は abc と入っているだけです。
|

|