- 1 名前:デフォルトの名無しさん mailto:sage [2007/11/10(土) 22:39:56 ]
- スレ立てるまでもない、Win32APIのついての質問はこちらへどうぞ。
やさしいお兄さんやお姉さんたちが答えてくれるかも。 過去スレ、関連リンクは>>2-5くらい。 ■注意 ・質問する前にMSDNライブラリやPlatformSDK、Google等で検索しましょう。 ・日本語版MSDN Online Libraryは不完全です。英語版(msdn2.microsoft.com/library/)の利用推奨。 ・APIフックなど高度な事をしたい場合はできるだけAdvenced Windowsを読みましょう。 ・言語特有の問題やIDE、MFCやVCLなどの質問はそれぞれの言語や開発環境スレで
- 730 名前:デフォルトの名無しさん mailto:sage [2007/11/29(木) 16:38:34 ]
- >開放したところにNULLいれるように書き直すと、バグが良く見つかる。
嘘だろ
- 731 名前:デフォルトの名無しさん mailto:sage [2007/11/29(木) 16:47:32 ]
- >>727
APIスレだろうが最適化スレだろうが関係ない 何万回、何百万回も使うならif文一つだろうが気にするべき ジャンプ1回で済ますかpush、call、popを使うかで大違い
- 732 名前:デフォルトの名無しさん mailto:sage [2007/11/29(木) 16:48:24 ]
- >>728
少なからず理解者がいてくれたようでうれしい >>730 嘘だと思える君の環境がすごくうらやましい 世の中には信じられないことをする人が多いのです。 また、C++に対応してるんだかしてないんだかわからない しょぼい環境も多いのです。
- 733 名前:デフォルトの名無しさん mailto:sage [2007/11/29(木) 16:52:09 ]
- >>732
開放したところにNULLいれてバグるなら NULLいれなくてもバグるだろ
- 734 名前:デフォルトの名無しさん mailto:sage [2007/11/29(木) 16:53:41 ]
- >>732
お前が低能だって事は分かった
- 735 名前:デフォルトの名無しさん mailto:sage [2007/11/29(木) 17:02:35 ]
- >>727
そんなことで例外発生させてどうすんだよ NULLなら処理を跳ばしてくれれば良いだけなのに
- 736 名前:デフォルトの名無しさん mailto:sage [2007/11/29(木) 17:05:47 ]
- >>733
NULLいれなくてもバグってるんだけどそれは発見されない、 NULLいれたらそのバグが発見されやすい、ってことだろ
- 737 名前:デフォルトの名無しさん mailto:sage [2007/11/29(木) 17:08:32 ]
- >>736
元々バグってんのか NULL代入関係ないじゃん
- 738 名前:デフォルトの名無しさん mailto:sage [2007/11/29(木) 17:10:49 ]
- ここはAPIスレだったよね?
特定の言語の話はスレ違い
- 739 名前:デフォルトの名無しさん mailto:sage [2007/11/29(木) 17:11:40 ]
- ガベコレのある言語を使いましょう
でこの話題は終了 ↓はい次
- 740 名前:デフォルトの名無しさん mailto:sage [2007/11/29(木) 17:14:53 ]
- 空気読まずに
ポインタのアドレス使ったリスト管理なんかだと freeのあとNULL入れるのは必要になってくるけどな
- 741 名前:デフォルトの名無しさん mailto:sage [2007/11/29(木) 17:16:09 ]
- haskellお勧め
- 742 名前:デフォルトの名無しさん mailto:sage [2007/11/29(木) 17:21:43 ]
- 質問なのですが、
SetLayeredWindowAttributesを使わずにウインドウのある色の部分だけ透明にすることはできるのでしょうか?
- 743 名前:デフォルトの名無しさん mailto:sage [2007/11/29(木) 17:22:31 ]
- SetWindowRgn
- 744 名前:デフォルトの名無しさん mailto:sage [2007/11/29(木) 17:31:33 ]
- >>727
> 開放したところにNULLいれるように書き直すと、バグが良く見つかる。 ワロタ
- 745 名前:デフォルトの名無しさん [2007/11/29(木) 18:14:14 ]
- 結局
if( p != NULL ) { free(p); p = NULL; } でFA?
- 746 名前:デフォルトの名無しさん mailto:sage [2007/11/29(木) 18:15:12 ]
- どうでもいいです
- 747 名前:デフォルトの名無しさん mailto:sage [2007/11/29(木) 19:04:14 ]
- >>745
>>696-698
- 748 名前:デフォルトの名無しさん mailto:sage [2007/11/29(木) 19:11:42 ]
- ぬるぽ
- 749 名前:デフォルトの名無しさん mailto:sage [2007/11/29(木) 19:12:49 ]
- if(_x_){ _x_->Release(); _x_ = NULL; }
- 750 名前:デフォルトの名無しさん mailto:sage [2007/11/29(木) 19:21:24 ]
- スマートポインタ使えよ糞共
- 751 名前:デフォルトの名無しさん mailto:sage [2007/11/29(木) 19:25:54 ]
- templateって方の種類分容量増えるんだろ
define でいいじゃん
- 752 名前:デフォルトの名無しさん mailto:sage [2007/11/29(木) 19:27:28 ]
- >>751
- 753 名前:デフォルトの名無しさん mailto:sage [2007/11/29(木) 19:32:49 ]
- >>751
確かに環境によってはtemplate禁止にせざるを得ないこともある。 が、さすがにtemplateの機能をdefineだけじゃ無理だと思う。
- 754 名前:デフォルトの名無しさん mailto:sage [2007/11/29(木) 19:44:57 ]
- 本当の初心者質問ですみません。
ウインドウを作成するところで詰まってしまいました。 ビルドは成功するのですが、実行するとウインドウが表示されず、CPUが100%になります。 どこがおかしいでしょうか? 環境 WindowsXPsp2 Visual Studio2005 ソース kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5360.txt
- 755 名前:デフォルトの名無しさん mailto:sage [2007/11/29(木) 19:48:39 ]
- ウィンドウクラスの登録が抜けている
- 756 名前:デフォルトの名無しさん mailto:sage [2007/11/29(木) 19:55:50 ]
- >>854
PeekMessageなんか使うから100%になるんだ、GetMessage使え。 まずは猫でも分かる〜を読むべし。
- 757 名前:デフォルトの名無しさん mailto:sage [2007/11/29(木) 19:58:51 ]
- >>752
- 758 名前:デフォルトの名無しさん mailto:sage [2007/11/29(木) 20:02:59 ]
- >>717
>>727 COMのプログラミングすると 生成者が放置で 参照者が片付ける みたいな感覚に染まってしまう
- 759 名前:デフォルトの名無しさん mailto:sage [2007/11/29(木) 20:07:30 ]
- >>725
それ意味なくね? 訂正が間違ってる
- 760 名前:デフォルトの名無しさん mailto:sage [2007/11/29(木) 20:59:53 ]
- InvalidateRectで無効化された領域を取得するにはどうすればよいのでしょうか?
質問の背景としては、スクロールバーを動かしたとき、画面のビットマップをBitBltで 移動させることでスクロールされるようにしています。ところが、転送元の領域が 無効化された状態であった時、その領域が転送後にも再描画されず、不正な状態のままに なってしまっています。そこで、転送前に無効化されていた領域を転送後の座標系で 無効化しなおすことでこの問題を解決したいと思っているのですが。 よろしくお願いします。
- 761 名前:デフォルトの名無しさん mailto:sage [2007/11/29(木) 21:03:32 ]
- >>751
組み込みスレならともかく、Win32 APIスレで言う話か? メモリ数百MiB-数GiB、CPU数百MHz-数GHzな環境で禁止にする必要などない。
- 762 名前:デフォルトの名無しさん mailto:sage [2007/11/29(木) 21:07:40 ]
- >>760
GetClipBox PAINTSTRUCT::rcPaint
- 763 名前:デフォルトの名無しさん mailto:sage [2007/11/29(木) 21:08:29 ]
- GetUpdateRect
だけど。 ふつうはScrollWindowExが良きに計らってくれるんじゃないのかなー。
- 764 名前:760 mailto:sage [2007/11/29(木) 21:16:46 ]
- >>763
おわっと、こんな関数があるとは知りませんでした。 まだ試してないですが、これを使えば万事うまくいきそうですね。 どうもありがとうございます。 >>762 どうもありがとうございます。
- 765 名前:デフォルトの名無しさん mailto:sage [2007/11/29(木) 22:32:51 ]
- >>759
どこが?
- 766 名前:デフォルトの名無しさん mailto:sage [2007/11/29(木) 23:00:00 ]
- もう引っ張るなよ
- 767 名前:デフォルトの名無しさん mailto:sage [2007/11/29(木) 23:03:31 ]
- 別にfreeの話しを引っ張るつもりはない
しかし突っ込まずにはいられないだろ
- 768 名前:デフォルトの名無しさん mailto:sage [2007/11/29(木) 23:04:35 ]
- 「あえていうなら、Win32APIスレでfreeの話をする辺りが。」
ってことで納得してくれよ(w
- 769 名前:デフォルトの名無しさん mailto:sage [2007/11/29(木) 23:05:44 ]
- だからfreeは関係ないと
- 770 名前:デフォルトの名無しさん mailto:sage [2007/11/29(木) 23:07:43 ]
- >>759 = >>766
- 771 名前:デフォルトの名無しさん mailto:sage [2007/11/29(木) 23:10:46 ]
- freeは本質とはあまり関係ないんだからとりあえず黙っとこうぜ。
荒らしたいというなら別だが。
- 772 名前:デフォルトの名無しさん mailto:sage [2007/11/29(木) 23:13:29 ]
- >>771
>>769 コードの話しだろ
- 773 名前:デフォルトの名無しさん mailto:sage [2007/11/29(木) 23:15:15 ]
- 馬鹿しか居ないな
- 774 名前:デフォルトの名無しさん mailto:sage [2007/11/29(木) 23:18:55 ]
- 以上をまとめると、HeapDestroy万歳ってことですね。
- 775 名前:デフォルトの名無しさん mailto:sage [2007/11/29(木) 23:25:40 ]
- >>772
>>725はあってるよ どの道すれ違い消えろ
- 776 名前:デフォルトの名無しさん mailto:sage [2007/11/30(金) 00:12:10 ]
- 昨日はサウンド関係で荒れて今日はfreeで荒れるのか
明日は何の話題で荒れるのかな〜?
- 777 名前:デフォルトの名無しさん mailto:sage [2007/11/30(金) 00:18:14 ]
- 1:int *p;とint* p;
2:sizeof( char ) 3:インデント 好きなのを選べ
- 778 名前:デフォルトの名無しさん mailto:sage [2007/11/30(金) 00:24:36 ]
- >>777
1 と 3 はコード整形ツールで抹殺されるから 2 しかない!
- 779 名前:デフォルトの名無しさん mailto:sage [2007/11/30(金) 00:35:00 ]
- ウィンドウのシステムバーの青い部分をドラッグしたときにくるメッセージって何ですか?
WM_ENTER/EXITMENULOOPは左上のボタンで出るメニューのメッセージっぽいのですが…
- 780 名前:デフォルトの名無しさん mailto:sage [2007/11/30(金) 00:47:13 ]
- WM_SYSCOMMAND
WM_WINDOWPOSCHANGING WM_WINDOWPOSCHANGED WM_MOVING WM_MOVE
- 781 名前:デフォルトの名無しさん mailto:sage [2007/11/30(金) 00:47:54 ]
- >>778
Win32API的にsizeof (TCHAR)を使うので、このスレでは2すら話題にならない。
- 782 名前:デフォルトの名無しさん mailto:sage [2007/11/30(金) 00:48:14 ]
- 結局見つけました
WM_ENTER/EXITSIZEMOVEでした。 お騒がせしました
- 783 名前:デフォルトの名無しさん mailto:sage [2007/11/30(金) 00:52:10 ]
- CHARとかWCHARとかTCHARとか型がありすぎてわけわかんね
文字列に関してはワールドワイドなUnicodeに対応してるWCHARだけつかってればいいってこと?
- 784 名前:デフォルトの名無しさん mailto:sage [2007/11/30(金) 00:52:46 ]
- いまさらハンガリアン記法でひとつ。
- 785 名前:デフォルトの名無しさん mailto:sage [2007/11/30(金) 00:55:32 ]
- もうNT系しか相手にしないなら、VC8みたいにいきなりUNICODE定義しといて
WCHARしか使わないという手はある。 外部入出力で結局charが要るのと、 文字列リテラルにL付け忘れることがあるのと UNCODE特有の嫌らしい概念が出てくるのが 今ひとつだけど。
- 786 名前:デフォルトの名無しさん mailto:sage [2007/11/30(金) 01:09:11 ]
- 数は少ないがANSI版しか用意されていない糞APIもあるけどな
- 787 名前:デフォルトの名無しさん mailto:sage [2007/11/30(金) 01:09:58 ]
- >外部入出力で結局charが要るのと
このときのcharで使う文字コードは何がよいのでしょうか? UTF-8? mbcs?
- 788 名前:デフォルトの名無しさん mailto:sage [2007/11/30(金) 01:11:29 ]
- 外部次第だろ
- 789 名前:デフォルトの名無しさん mailto:sage [2007/11/30(金) 01:20:54 ]
- 質問ですが、画面の解像度が変化したときに受け取るイベントというのは何なのでしょうか?
- 790 名前:デフォルトの名無しさん mailto:sage [2007/11/30(金) 01:22:36 ]
- あるよ
ググればすぐ出てくる
- 791 名前:デフォルトの名無しさん [2007/11/30(金) 02:10:24 ]
- ココ見てると、みんな同じような問題で悩んでんだなってチョット思うな。
特にDIBSectionとかDIBとかDDBとか 、答えられる香具師があんまりいないんだな。 DIBセクションはDIB?をれともDDB?
- 792 名前:デフォルトの名無しさん mailto:sage [2007/11/30(金) 02:10:38 ]
- WM_KAIZOUDOHENKA
- 793 名前:デフォルトの名無しさん mailto:sage [2007/11/30(金) 02:17:17 ]
- >>791
DIBセクションはDIBセクションだろw CreateDIBSection によって作成された HBITMAP 互換のGDIオブジェクト。 GetObject すると DIBSection が帰る。
- 794 名前:デフォルトの名無しさん mailto:sage [2007/11/30(金) 02:30:32 ]
- >791
答え待ってないでProgramming Windows下巻読めよ
- 795 名前:デフォルトの名無しさん mailto:sage [2007/11/30(金) 03:25:30 ]
- MSのドキュメント読めばわかる程度のことは答えんな。
調べる事が下手糞だといつまでたってもスキルは上がらんぞ。
- 796 名前:デフォルトの名無しさん [2007/11/30(金) 03:37:08 ]
- DIBSection = DIB の部分
つまりDIBの一部分ってことでFA
- 797 名前:デフォルトの名無しさん mailto:sage [2007/11/30(金) 03:45:56 ]
- >>796
>>791のようなDIBとDDBの区別すらついてない人間にはその説明では不十分だ 結局はMSDN読め、に尽きるが
- 798 名前:デフォルトの名無しさん [2007/11/30(金) 04:17:46 ]
- 香具師なんて使ってる奴久しぶりにみたwww
- 799 名前:デフォルトの名無しさん mailto:sage [2007/11/30(金) 05:54:26 ]
- その内「w
- 800 名前:デフォルトの名無しさん mailto:sage [2007/11/30(金) 05:55:07 ]
- 失敗。
まぁいいや。 800ゲッツ!
- 801 名前:デフォルトの名無しさん mailto:sage [2007/11/30(金) 07:15:09 ]
- >>786
そりゃWin16との互換専用だったりして Unicode版用意してまで延命させる必要がそもそもない
- 802 名前:デフォルトの名無しさん mailto:sage [2007/11/30(金) 07:32:23 ]
- GetProcAddressはー?
- 803 名前:デフォルトの名無しさん mailto:sage [2007/11/30(金) 08:35:46 ]
- DLLの仕様でシンボルにANSI文字列しか使えないから
- 804 名前:デフォルトの名無しさん mailto:sage [2007/11/30(金) 08:41:01 ]
- 切れちゃった
DLLの仕様でシンボルにANSI文字列しか使えないからANSIでないと意味がない 無理してUNICODEにしてもANSIに変換してオーバーヘッドが出るだけ
- 805 名前:デフォルトの名無しさん mailto:sage [2007/11/30(金) 10:16:43 ]
- ATLのW2Aとかの文字列変換マクロを使えるなら、オーバーヘッドは最小になるよ。
自分の場合、内部はUNICODEで処理するなぁ。
- 806 名前:デフォルトの名無しさん mailto:sage [2007/11/30(金) 11:06:06 ]
- CreateWindowで作ったウィンドウの子コントロールのフォントを変更したい場合
親ウィンドウに合わせて自動で全ての子のフォントを変更することはできないのでしょうか それともこういった処理は自分で書く必要があるんでしょうか
- 807 名前:デフォルトの名無しさん mailto:sage [2007/11/30(金) 11:42:00 ]
- もちろん、自分でやらないと駄目。
自動で勝手にフォント変更されたら、コントロール毎にフォントを変えることが できないではないか。
- 808 名前:デフォルトの名無しさん mailto:sage [2007/11/30(金) 12:48:46 ]
- >>801
違うよImageHlpだよ ま、こんなモン使う機会あまりないけどな
- 809 名前:デフォルトの名無しさん mailto:sage [2007/11/30(金) 12:55:46 ]
- >>807
やはりそうなんですか ありがとうございました
- 810 名前:デフォルトの名無しさん mailto:sage [2007/11/30(金) 13:44:40 ]
- >>808
Platform SDKを良く読んだほうが良い
- 811 名前:デフォルトの名無しさん mailto:sage [2007/11/30(金) 14:10:35 ]
- >>810
よく読むべきなのはお前な BindImage ReBaseImage ImageLoad > All ImageHlp functions, such as this one, are single threaded. 今時こんな設計の糞API揃いだが
- 812 名前:デフォルトの名無しさん mailto:sage [2007/11/30(金) 14:15:58 ]
- >>811
なんだそれNT時代のAPIじゃないのか?w
- 813 名前:デフォルトの名無しさん mailto:sage [2007/11/30(金) 14:47:24 ]
- そうはいうがな
Windows1.0時代からあるAPIだってUnicode対応・マルチスレッド対応だぞ
- 814 名前:デフォルトの名無しさん mailto:sage [2007/11/30(金) 14:48:03 ]
- 1.0は言い過ぎか?
今でも使われる古参のAPIってどのあたりからあるんだろ
- 815 名前:デフォルトの名無しさん mailto:sage [2007/11/30(金) 16:24:22 ]
- >>813
それだって、最初からそうだったのではなく、 Win32化されたときからじゃないか。 >>814 Win16はわからないけど、CreateWindowとか有名な関数をMSDNライブラリで引くと、 大体Minimum operating systemsがWindows 95, Windows NT 3.1になっている。
- 816 名前:デフォルトの名無しさん mailto:sage [2007/11/30(金) 18:33:37 ]
- >>815
CreateWindowはWin16時代からある
- 817 名前:デフォルトの名無しさん mailto:sage [2007/11/30(金) 18:36:26 ]
- そりゃまあ、WinMainからRegisterClassしてCretateWindowしての
一連の基本のやつは昔からあるけどよー
- 818 名前:デフォルトの名無しさん mailto:sage [2007/11/30(金) 19:02:10 ]
- マウスキャプチャ状態にある
コモンコントロールのマウスの移動を関知するには どうすればいいのでしょうか? タブをドラッグアンドドロップで移動させたいのですが 親にWM_MOUSEMOVEが飛んできません…
- 819 名前:デフォルトの名無しさん mailto:sage [2007/11/30(金) 19:11:50 ]
- キャプチャしたウィンドウに飛んでこないか?
- 820 名前:デフォルトの名無しさん mailto:sage [2007/11/30(金) 19:17:04 ]
- >>819
もしやサブクラス化意外に道はないのでしょうか? 通知メッセージを用意しといてくれてもいいのに… ゲイツめぇ
- 821 名前:デフォルトの名無しさん mailto:sage [2007/11/30(金) 19:24:10 ]
- だからぁ
SetCapture( hwnd );で hwndに飛んでこないかと?
- 822 名前:デフォルトの名無しさん mailto:sage [2007/11/30(金) 19:34:01 ]
- >>821
キャプチャ事態は自分で行っている訳ではなくて コモンコントロールがNM_CLICKに併せて行ってくれているようで 離したときにくるNM_RELEASEDCAPTUREまでの間に MOVEを拾えないかと思ったのです。
- 823 名前:デフォルトの名無しさん mailto:sage [2007/11/30(金) 19:36:36 ]
- >>822
そりゃサブクラス化するべきなんじゃね?
- 824 名前:デフォルトの名無しさん mailto:sage [2007/11/30(金) 19:38:55 ]
- タブコントロールがSetCaptureして、マウスキャプチャ状態にしてるんだけど、
その状態でWM_MOUSEMOVE相当のメッセージを親Windowで取得したい。 ってこと?
- 825 名前:デフォルトの名無しさん mailto:sage [2007/11/30(金) 19:41:36 ]
- NM_CLICKでコモンコントロールはキャプチャしないだろ
それにSetCaptureすればいいだろが
- 826 名前:デフォルトの名無しさん mailto:sage [2007/11/30(金) 19:46:00 ]
- spyで確認したけどキャプチャしてない
そもそもその手のドラッグアンドドロップは自分でマウスキャプチャして実装するもの
- 827 名前:デフォルトの名無しさん mailto:sage [2007/11/30(金) 19:54:01 ]
- WM_LBUTTONDOWN
If the user is clicking a button, the control redraws the button to give a sunken appearance and captures the mouse. ってMSDNに書いてあるから、ボタンの場合(TCS_BUTTONS style)はキャプチャしているんでしょ?
- 828 名前:デフォルトの名無しさん mailto:sage [2007/11/30(金) 20:00:29 ]
- >>827
なるほど、だからキャプチャしてたんですね。 親で改めてキャプチャするかサブクラス化してみようと思います。 どうもありがとうございました。
- 829 名前:デフォルトの名無しさん mailto:sage [2007/11/30(金) 20:01:37 ]
- TCS_BUTTONSスタイルまで確認してなかったわ
- 830 名前:デフォルトの名無しさん mailto:sage [2007/11/30(金) 20:35:39 ]
- >>814
俺はWTERMの人が書いた本でWindowsプログラミングの勉強をしたが それがたしかWindows1.0用の本で、ほとんどそのまま3.1で通用したよ。 3.1から95もAPIはほとんど一緒だから、GetMessageとかのAPIは ずっと変わってないと思う。
|

|