[表示 : 全て 最新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などの質問はそれぞれの言語や開発環境スレで


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

831 名前:デフォルトの名無しさん mailto:sage [2007/11/30(金) 22:22:09 ]
だってある意味winプログラムの原点だからGetMessageの概念は

832 名前:デフォルトの名無しさん mailto:sage [2007/11/30(金) 22:58:06 ]
イベントドリブンはナムコが考えました

833 名前:デフォルトの名無しさん mailto:sage [2007/11/30(金) 22:58:18 ]
友達がいなくて
携帯メールがGetMessageできない漏れをどうにかしてください

WinSockムズカシス

834 名前:デフォルトの名無しさん [2007/11/30(金) 23:07:00 ]
GlobalAllocで確保されるメモリって、自プロセス内のスタック領域?とかいうところから拾ってきてるの?
ファイル読み込みで、何度かGlobalReAllocを繰り返し呼び出して、再確保を繰り返しやると
18000Byte超えたあたりで、メモリの再確保に失敗する
なんでだろう

835 名前:デフォルトの名無しさん mailto:sage [2007/11/30(金) 23:09:28 ]
>>833
自分で自分のアドレスにPostMessageする

836 名前:デフォルトの名無しさん mailto:sage [2007/11/30(金) 23:10:48 ]
>>834
MSDN嫁よ禿

837 名前:デフォルトの名無しさん [2007/11/30(金) 23:14:37 ]
>>836
英語だからミリだよ

838 名前:デフォルトの名無しさん mailto:sage [2007/11/30(金) 23:19:22 ]
たしかにな

839 名前:デフォルトの名無しさん mailto:sage [2007/11/30(金) 23:28:12 ]
>>837
英語勉強しろよ禿



840 名前:デフォルトの名無しさん mailto:sage [2007/11/30(金) 23:31:14 ]
「Windowsプログラミングの極意」あるいはThe Old New Thingで
いってたけど、今は、メモリ共有のために仕組みがある以外は、
ローカルヒープとあんましかわらない、みたい。

841 名前:デフォルトの名無しさん mailto:sage [2007/11/30(金) 23:42:12 ]
WinXP SP2だと、1Kから1バイトずつ伸ばしても全然失敗しないな……
フラグの指定がおかしいんじゃね?

ちなみに可変長のGlobalヒープが欲しい時は、
CreateStreamOnHGlobal + GetHGlobalFromStream がお勧めだ。

842 名前:デフォルトの名無しさん mailto:sage [2007/11/30(金) 23:43:23 ]
16KBのメモリチャンク云々って話をどっかで見た気がするが忘れた。

843 名前:デフォルトの名無しさん mailto:sage [2007/12/01(土) 00:08:13 ]
同じくWinXP SP2、初期サイズ1KB、増加サイズ1KBずつだと4KBで失敗。GetLastErrorは8。
増加サイズが変わると失敗するサイズも変わる。法則は謎。
GMEM_MOVEABLEすればもちろん失敗しないけど。

844 名前:デフォルトの名無しさん mailto:sage [2007/12/01(土) 00:28:01 ]
ちょっとコード晒せ

845 名前:デフォルトの名無しさん mailto:sage [2007/12/01(土) 00:47:55 ]
>>816
ゲンミツに言うとCreateWindowEx呼んでるだけだったような気もするけど

846 名前:デフォルトの名無しさん mailto:sage [2007/12/01(土) 00:56:31 ]
HeapAlloc/HeapReAllocだとどうなる?

847 名前:デフォルトの名無しさん mailto:sage [2007/12/01(土) 01:38:24 ]
>>845
手元のWin16APIヘルプだと
CreateWindow(2.x)
CreateWindowEx(3.0)
って書いてあった。

848 名前:デフォルトの名無しさん mailto:sage [2007/12/01(土) 02:33:48 ]
取り込んだ画像を任意の角度に回転させるAPIってありますか?

849 名前:デフォルトの名無しさん mailto:sage [2007/12/01(土) 03:11:05 ]
GDI+



850 名前:デフォルトの名無しさん mailto:sage [2007/12/01(土) 06:48:51 ]
>>813
NTの最初のバージョンは3.1だが?
NTじゃないWindows 1.0がマルチスレッドやUnicodeに対応しているわけないし

851 名前:デフォルトの名無しさん mailto:sage [2007/12/01(土) 10:12:50 ]
GlobalReAllocで固定メモリの領域拡大に失敗するのか
まさか単に断片化しているだけというオチじゃなかろうな






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

前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