- 1 名前:デフォルトの名無しさん mailto:sage [2008/02/04(月) 02:40:03 ]
- スレ立てるまでもない、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 【前スレ】 61 ttp://pc11.2ch.net/test/read.cgi/tech/1199514664/
- 487 名前:デフォルトの名無しさん mailto:sage [2008/02/16(土) 19:33:47 ]
- MessageBoxで処理をぶった切りまくったらポインタが大変なことになった。
- 488 名前:デフォルトの名無しさん mailto:sage [2008/02/16(土) 19:53:11 ]
- ビットマップを表示するところとか、もうここでは書きたくない。
- 489 名前:デフォルトの名無しさん mailto:sage [2008/02/16(土) 19:55:42 ]
- >>486
日本語でおk
- 490 名前:デフォルトの名無しさん mailto:sage [2008/02/16(土) 20:28:09 ]
- (´・ω・`)しらんがな
- 491 名前:デフォルトの名無しさん mailto:sage [2008/02/16(土) 21:43:45 ]
- > 俺は、それを流すんだが、その状況が可笑しくなってきちゃうんだがw
誰かこれを日本語に翻訳してくれ
- 492 名前:459 mailto:sage [2008/02/16(土) 21:46:57 ]
- >>462
ありがとうございます。それを使ってみることにします。
- 493 名前:431 mailto:sage [2008/02/17(日) 00:23:27 ]
- >>434
>>435 >>439 有難うございます。 また来ます。
- 494 名前:デフォルトの名無しさん [2008/02/17(日) 00:47:01 ]
- >>491
俺は、 「kitty on your lap」 この言葉を見てもいつも気にせずスルーして次の文にいくんだが、 毎回やるこの自分の行動に可笑しくなってきちゃうんだww
- 495 名前:デフォルトの名無しさん [2008/02/17(日) 02:09:22 ]
- MSTask.h にこういう文があるんだけど、interfaceキーワードって何ですか?
K&Rにも載ってないです。 interface ITaskScheduler { CONST_VTBL struct ITaskSchedulerVtbl *lpVtbl; };
- 496 名前:デフォルトの名無しさん mailto:sage [2008/02/17(日) 02:20:32 ]
- #define interface struct
- 497 名前:デフォルトの名無しさん mailto:sage [2008/02/17(日) 02:50:52 ]
- 素直にC++使ったほうが楽だよ
- 498 名前:デフォルトの名無しさん mailto:sage [2008/02/17(日) 02:54:29 ]
- C++しらねーんだYO!
- 499 名前:デフォルトの名無しさん mailto:sage [2008/02/17(日) 03:11:26 ]
- >>498
( ・∀・)人(・∀・ )ナカーマ!!
- 500 名前:デフォルトの名無しさん mailto:sage [2008/02/17(日) 03:38:29 ]
- 素直にC++習得したほうが楽だよ
- 501 名前:デフォルトの名無しさん mailto:sage [2008/02/17(日) 04:34:13 ]
- つーかCでCOMとか在り得ねー
lpVtblとか第一引数とか&IID_〜とかめんどいしC++でスマートポインタ使わないとやってられん
- 502 名前:デフォルトの名無しさん mailto:sage [2008/02/17(日) 04:49:19 ]
- C で COM なんて C++ 勉強するより難しいと思う。
- 503 名前:デフォルトの名無しさん mailto:sage [2008/02/17(日) 05:19:02 ]
- COMが世に出た当初はC全盛だったけどな
- 504 名前:デフォルトの名無しさん mailto:sage [2008/02/17(日) 05:36:47 ]
- そしてCOMの世界で死ぬ。小一時間死ぬ。手始めにアパートメントモデルで死ぬ。
- 505 名前:デフォルトの名無しさん mailto:sage [2008/02/17(日) 05:38:21 ]
- COMって1997年か。C全盛だったか?
- 506 名前:デフォルトの名無しさん mailto:sage [2008/02/17(日) 05:41:48 ]
- COM で結局オブジェクト指向を勉強するくらいなら
C++ から入った方がマシ。
- 507 名前:デフォルトの名無しさん mailto:sage [2008/02/17(日) 10:21:40 ]
- >>505
COMという言葉を前面に打ち出すようになったのはその頃からかもしれないけど、 技術的にはWindows 3.1までには出たはずのOLE2から始まったといっていいはず。。
- 508 名前:デフォルトの名無しさん mailto:sage [2008/02/17(日) 12:41:31 ]
- ハンドルって何ですか?
- 509 名前:デフォルトの名無しさん mailto:sage [2008/02/17(日) 12:43:26 ]
- FILE*のような、よくわからない何か。
- 510 名前:デフォルトの名無しさん mailto:sage [2008/02/17(日) 12:48:13 ]
- 何らかの操作を行うときに必用になる識別子
- 511 名前:デフォルトの名無しさん mailto:sage [2008/02/17(日) 13:12:06 ]
- char s[100];
sprintf(s,"%d",GetLastError()); MessageBox(NULL, s , NULL , MB_OK ); GetLastErrorを確認するには上のような書き方ですか?
- 512 名前:デフォルトの名無しさん mailto:sage [2008/02/17(日) 13:14:22 ]
- それもいいけど、FormatMessageを使うと番号に対応するメッセージが得られる。
- 513 名前:デフォルトの名無しさん mailto:sage [2008/02/17(日) 13:38:24 ]
- ハンドル=ポインタだと思っている
- 514 名前:デフォルトの名無しさん mailto:sage [2008/02/17(日) 14:22:15 ]
- >>511
wsprintf使え
- 515 名前:デフォルトの名無しさん mailto:sage [2008/02/17(日) 14:23:25 ]
- だったらcharもTCHARへ変えないと。
- 516 名前:デフォルトの名無しさん mailto:sage [2008/02/17(日) 14:33:37 ]
- >>515
wsprintfってchar*使えなかったの?
- 517 名前:デフォルトの名無しさん mailto:sage [2008/02/17(日) 14:42:48 ]
- つかえるのはwsprintfA
- 518 名前:デフォルトの名無しさん mailto:sage [2008/02/17(日) 14:58:53 ]
- このスレでAとかWとかそんなレベルの話はやめようぜ
- 519 名前:デフォルトの名無しさん mailto:sage [2008/02/17(日) 15:49:38 ]
- >>517
へぇ・・・ 俺BCCだから関係ないや
- 520 名前:デフォルトの名無しさん mailto:sage [2008/02/17(日) 15:51:37 ]
- >>518
このスレだからやるんじゃないか 他所でやられるほうがウザい
- 521 名前:デフォルトの名無しさん mailto:sage [2008/02/17(日) 15:56:37 ]
- >>518
大して難しい話でもないだろ charだと一文字1バイト、TCHARだと一文字2バイトってだけの話じゃないか
- 522 名前:デフォルトの名無しさん mailto:sage [2008/02/17(日) 16:05:25 ]
- >>519
BCCでも、Win32 APIを直接使うなら関係ある話だろ?
- 523 名前:デフォルトの名無しさん mailto:sage [2008/02/17(日) 16:07:58 ]
- >>521
なにいってんだ? TCHARは1バイトかもしんないぞ。
- 524 名前:デフォルトの名無しさん mailto:sage [2008/02/17(日) 16:16:39 ]
- テーチャラは、チャラー型かヲチャラーテー型の切り替え用マクーロだろ
- 525 名前:デフォルトの名無しさん mailto:sage [2008/02/17(日) 16:17:20 ]
- てーちゃらてーちゃら
- 526 名前:デフォルトの名無しさん mailto:sage [2008/02/17(日) 16:23:40 ]
- ブチャラーテイに見えた
- 527 名前:デフォルトの名無しさん [2008/02/17(日) 16:37:35 ]
- 質問です。
タイトルバー以外のところをドラッグしてウィンドウを動かすために、WM_NCHITTEST で、 return DefWindowProc() == HTCLOSE ? HTCLOSE : HTCAPTION; ってやってるウィンドウで、ドラッグし終わったときを捉えたいのだけどどのイベントが飛んでくるのか判りません。 WM_LBUTTONUP と WM_NCLBUTTONUP かなーとか思って捕捉のためのイベントハンドラを作ったのだけど、 捕捉できず、Spy++ で何が飛んでくるのか確かめようと思ったらシステム全体が落ちてしまいます。 どなたか教えてください。 開発環境は VC2008EE + SDK + ATL/WTL で、VS2005proの include ディレクトリも include しています。
- 528 名前:デフォルトの名無しさん mailto:sage [2008/02/17(日) 16:59:37 ]
- >>527
WM_MOVEじゃダメ?
- 529 名前:デフォルトの名無しさん [2008/02/17(日) 18:06:57 ]
- CoCreateInstance関数がちゃんと動いてくれません><
どうしてか理由が分からないです。 error C2115: 'function' : 互換性のない型が含まれています。 warning C4024: 'CoCreateInstance' : の型が 1 の仮引数および実引数と異なります。 error C2115: 'function' : 互換性のない型が含まれています。 warning C4024: 'CoCreateInstance' : の型が 4 の仮引数および実引数と異なります。 となります。 #include <windows.h> #include <mstask.h> HRESULT hr ITaskScheduler *pITS; hr = CoCreateInstance(CLSID_CTaskScheduler, NULL, CLSCTX_INPROC_SERVER, IID_ITaskScheduler, (void **) &pITS); どこかおかしいところがありますか?
- 530 名前:デフォルトの名無しさん [2008/02/17(日) 18:07:36 ]
- CoCreateInstanceの前に
CoInitialize(NULL); があります。忘れました><
- 531 名前:デフォルトの名無しさん mailto:sage [2008/02/17(日) 18:08:13 ]
- WM_EXITSIZEMOVEとか?
- 532 名前:デフォルトの名無しさん mailto:sage [2008/02/17(日) 18:08:50 ]
- >>529
CとC++の違い
- 533 名前:デフォルトの名無しさん mailto:sage [2008/02/17(日) 18:12:48 ]
- >>529
まずは、REFCLSIDとREFIIDの定義確認。
- 534 名前:デフォルトの名無しさん mailto:sage [2008/02/17(日) 18:19:00 ]
- >>529
CTaskScheuler 用のヘッダファイルインクルードして無いじゃん。
- 535 名前:デフォルトの名無しさん mailto:sage [2008/02/17(日) 18:28:46 ]
- >>527
Spy++使わなくても自分のWndProcなんだから、どんなイベントが飛んでくるか分かるっしょ。 DebugConsoleに吐きまくれ。
- 536 名前:デフォルトの名無しさん mailto:sage [2008/02/17(日) 18:59:34 ]
- 拡張子をcppに変えればいいだけなのにね
- 537 名前:デフォルトの名無しさん mailto:sage [2008/02/17(日) 20:51:08 ]
- ここは敢えて ->lpVtbl->
- 538 名前:527 [2008/02/17(日) 21:49:19 ]
- WM_EXITSIZEMOVE でいけましたー。ありがとうございました。
ところで、UINT uMsg の値から WM_〜 とかに変換してくれるライブラリとかありませんか? 変換がしんどかったのでw
- 539 名前:デフォルトの名無しさん mailto:sage [2008/02/17(日) 21:59:55 ]
- 変換も何もそのまんまだろ
- 540 名前:デフォルトの名無しさん [2008/02/17(日) 22:03:55 ]
- あ、欲しいのは文字列です
- 541 名前:デフォルトの名無しさん mailto:sage [2008/02/17(日) 22:05:53 ]
- WM_ のあるヘッダからテーブルを生成するプログラムを書いた気がする。
- 542 名前:デフォルトの名無しさん mailto:sage [2008/02/17(日) 22:13:08 ]
- 文字列にしたいってことでしょ
- 543 名前:デフォルトの名無しさん mailto:sage [2008/02/17(日) 22:15:16 ]
- だから文字列テーブルを作るんだよ
- 544 名前:デフォルトの名無しさん mailto:sage [2008/02/17(日) 22:37:50 ]
- ラップされて、電子レンジに入れられてしまった子猫の事かと思ってたんだが違ったのか・・・。
- 545 名前:デフォルトの名無しさん mailto:sage [2008/02/17(日) 22:40:28 ]
- >>544
まだその話してたんかいw
- 546 名前:デフォルトの名無しさん mailto:sage [2008/02/17(日) 23:36:41 ]
- VC++のデバッガならウォッチ式にuMsg,wmとか書いてWM_が表示できた気がする
- 547 名前:デフォルトの名無しさん mailto:sage [2008/02/18(月) 00:16:11 ]
- >>546
試してみたらほんとだった。 素直に感謝します。
- 548 名前:デフォルトの名無しさん [2008/02/18(月) 00:21:23 ]
- FindItem関連で質問があります。
仮想リストビューである文字列と文字列が一致した場合、アイテムを削除する処理を作ろうと思ってます。 lvfi.flags = LVFI_STRING; lvfi.psz = "ab"; int nItem = ListView_FindItem(cListView.hListReserve, -1, &lvfi); ListView_DeleteItem(cListView.hListReserve, nItem); 現在、一致する場合もしない場合もnItemには0しか戻ってきません。 仮想リストビューでは、ListView_FindItemは使えないのでしょうか? 回答よろしくお願いします。 環境はVC.NET + SDKです
- 549 名前:デフォルトの名無しさん mailto:sage [2008/02/18(月) 00:26:01 ]
- コントロール側がデータを持っていたら、そもそも仮想の意味がないだろ。
- 550 名前:デフォルトの名無しさん mailto:sage [2008/02/18(月) 01:33:20 ]
- アプリケーションを作成したのですが、
CPU使用率が高いです Orz どこが悪いのでしょうか?
- 551 名前:デフォルトの名無しさん mailto:sage [2008/02/18(月) 01:46:25 ]
- お前の脳みそ
- 552 名前:デフォルトの名無しさん mailto:sage [2008/02/18(月) 07:49:23 ]
- >>550
ループしてる場所にSleepを入れる
- 553 名前:デフォルトの名無しさん mailto:sage [2008/02/18(月) 11:07:41 ]
- なあなあ
CreateWindowExした直後にSetClipboardViewerするとウィンドウ無効で失敗するんだけどなんで? もちろんCreateWindowExは成功してる ちなみに CreateWindowExとSetClipboardViewerの間にSendMessage(hWnd,WM_NULL,0,0);挟んだら動いた MSDNにも何も書いてないんだけど… ttp://msdn2.microsoft.com/en-us/library/ms649052.aspx
- 554 名前:デフォルトの名無しさん mailto:sage [2008/02/18(月) 11:11:00 ]
- >>553
UpdateWindowは?
- 555 名前:デフォルトの名無しさん mailto:sage [2008/02/18(月) 12:23:23 ]
- WM_CREATEくるまで駄目とか。
- 556 名前:デフォルトの名無しさん mailto:sage [2008/02/18(月) 13:29:54 ]
- いや、CreateWindowExから戻ったときは、
既にWM_CREATEからの応答も帰ってきた後。
- 557 名前:デフォルトの名無しさん mailto:sage [2008/02/18(月) 13:36:57 ]
- メッセージループまで行ってないうちにってことか。
SendMessage挟んだら動いたのはたまたまかもなあ
- 558 名前:デフォルトの名無しさん mailto:sage [2008/02/18(月) 13:49:16 ]
- >>555
CreateWindowEx→WindowProc(WM_CREATE)→SetClipboardViewerになるからそれはない WM_CREATE内でSetClipboardViewer呼んでるってんなら話は別だが
- 559 名前:デフォルトの名無しさん mailto:sage [2008/02/18(月) 15:19:47 ]
- WM_CHANGECBCHAINやWM_DRAWCLIPBOARDを正しく処理してないんじゃないの?
ここ見る限りだとSetClipboardViewerの返値にSendMessageしてるみたいだけど。 ttp://msdn2.microsoft.com/en-us/library/ms649016.aspx
- 560 名前:デフォルトの名無しさん mailto:sage [2008/02/18(月) 15:23:15 ]
- 質問です
TextOut等で描画する文字の下にドロップシャドウを描画したいのですが、何か良い方法はありますか? やはり、自分でシャドウを作らないといけないでしょうか? 宜しくお願いします
- 561 名前:デフォルトの名無しさん mailto:sage [2008/02/18(月) 15:25:26 ]
- 数ドットほど右下にTextOutで灰色か黒の文字を描いておけば影に見えないこともない
- 562 名前:デフォルトの名無しさん mailto:sage [2008/02/18(月) 15:27:47 ]
- DrawShadowText
- 563 名前:デフォルトの名無しさん mailto:sage [2008/02/18(月) 16:12:50 ]
- VistaならDrawThemeTextにあった気がする
- 564 名前:デフォルトの名無しさん mailto:sage [2008/02/18(月) 16:48:01 ]
- スレ違いかな?
縁取り文字の一番気持ちいい実装ってどんなの? 8方向に1pxずつずらした白文字、最後にまんなかに黒文字ってやってるんだけど ちょっと馬鹿っぽい。。
- 565 名前:デフォルトの名無しさん mailto:sage [2008/02/18(月) 17:21:39 ]
- >>561
>>562 >>563 それらを参考にもう一度調べてみますね 情報ありがとうございました
- 566 名前:デフォルトの名無しさん mailto:sage [2008/02/18(月) 17:35:47 ]
- >>564
BeginPath→DrawText→EndPath→PathToRegion→FrameRgn
- 567 名前:デフォルトの名無しさん mailto:sage [2008/02/18(月) 20:01:37 ]
- PathとかRegionだと12ptくらいの小さい文字はつぶれるな
- 568 名前:デフォルトの名無しさん mailto:sage [2008/02/18(月) 21:44:41 ]
- >>564
あらかじめ表示させたいフォントをビットマプとして保存しといて BitBlt・・ あんま変なAPI使うと古いOSで動かなかったりするんで。
- 569 名前:デフォルトの名無しさん mailto:sage [2008/02/18(月) 21:54:14 ]
- 便乗で質問だけど、このスレ的にはどのOSから切り捨てるのが主流?
さすがにXPより前はサポートしません とかはないだろうけど 9x系とNT4.0はもういいかなとか個人的には思ってる
- 570 名前:デフォルトの名無しさん mailto:sage [2008/02/18(月) 21:57:47 ]
- Vista x64より前
- 571 名前:デフォルトの名無しさん mailto:sage [2008/02/18(月) 21:58:28 ]
- 9x捨てるならウニコードにしたほうがパフォーマンスはよくなるのかな?
- 572 名前:デフォルトの名無しさん mailto:sage [2008/02/18(月) 22:02:41 ]
- 2000から切り捨てるとかなり楽
- 573 名前:デフォルトの名無しさん mailto:sage [2008/02/18(月) 22:29:43 ]
- 俺は2000以降をサポるようにしてる。WINVERの指定も0x0500。
なぜなら、俺の環境では2000が現役だから・・・
- 574 名前:デフォルトの名無しさん mailto:sage [2008/02/18(月) 22:30:54 ]
- サボると読んで混乱するおいら。
- 575 名前:デフォルトの名無しさん mailto:sage [2008/02/18(月) 22:33:44 ]
- 古いWindowsでも動かしたいと思うときで、
IE4.01以上など各種アップデートを施したWindows 95/NT4ということにしている。
- 576 名前:デフォルトの名無しさん mailto:sage [2008/02/18(月) 22:40:13 ]
- 2000より前なんて俺の中では存在しない
98以前はネットに繋ぐなカス
- 577 名前:デフォルトの名無しさん mailto:sage [2008/02/18(月) 22:42:10 ]
- コンパイラはまさかVC6?
- 578 名前:デフォルトの名無しさん mailto:sage [2008/02/18(月) 22:53:08 ]
- >>571
実測して差が出るかどうかはわからないけど、理屈の上では変換のコストがなくなるので若干良くなる wchar_tにするとboostがイミフなエラー出したりすることもあるけど。。。
- 579 名前:デフォルトの名無しさん mailto:sage [2008/02/18(月) 23:39:35 ]
- W<->A変換速度についてはダンゴさんの意見を聞きたいところだ
- 580 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 02:52:14 ]
- >>577
VC6現役で使ってるが何か?
- 581 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 02:54:44 ]
- VS2005 で素直にダイアログのフォントを使っています。
9x は切り捨て
- 582 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 03:01:39 ]
- 暮れに突如DLLラッパー書きたくなって2008Express落としたが重すぎ。
VC6探し出してインスコした。 これアカデミック版なんだよなー、歳は食いたくねぇ。
- 583 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 09:11:20 ]
- msdn2.microsoft.com/en-us/library/
しばらく前から検索すると503になるんだが、俺だけか? 左のツリーからは目的のページには行けるんだが、検索できないと面倒でしかたない。
- 584 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 10:31:57 ]
- GetGlyphOutlineの使い方に関する質問です
www7a.biglobe.ne.jp/~lshen/EternalWindows/Graphics/Bitmap/Bitmap14.html ここのサイトのソースで アンチエイリアスを施すフォントにFW_BOLDを指定すると、 このソースではlp[0] = (GetBValue(cr))で例外が発生して、 アプリケーションが落ちてしまいます このソースに手を加えなければ正常に動く様です どの辺りが悪いのでしょうか? よろしくお願いします。
- 585 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 10:39:30 ]
- CreateFont(32, 0, 0, 0, 0,
を CreateFont(32, 0, 0, 0, FW_BOLD, にしたってこと? 落ちないけどなー
- 586 名前:デフォルトの名無しさん [2008/02/19(火) 10:44:04 ]
- 教えてください
GetDesktopWindowでハンドルとって GetDCで デスクトップの画像 取得しているんですが ログイン画面を取るときには たしかモニターの選択か なにかしければならないんですよね? 昔何かで観て、必要になったんだけど 見つからない・・・・ よろしくお願いします
- 587 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 11:46:12 ]
- ウィンドウステーション?
|

|