[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2chのread.cgiへ]
Update time : 07/09 05:34 / Filesize : 231 KB / Number-of Response : 1002
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


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

Win32API質問箱 Build59



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は
ずっと変わってないと思う。






[ 続きを読む ] / [ 携帯版 ]

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

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