Win32API質問箱 Build20
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
NGNGただし、最新スレくらいは質問する前に検索してくれ。というかしろ。
過去スレなどのリンクはたぶん>>2-5くらい。
0154150
NGNGhttp://search.acty-net.ne.jp/mfc_search/archive/2000-2/msg02144.html
これを参考にしてみます。
「カラムヘッダ」「API」「ソートアイコン」とかでググってたので見落としてたようです。(;´Д`)
0155デフォルトの名無しさん
NGNGSDK のドキュメントでは LPTHREAD_START_ROUTINE のリターン後、暗黙的に ExitThread が呼ばれるとありますが
何らかの処理中にメインスレッドから ExitThread を呼んだ場合、適切な後始末が行われないのでしょうか。
0156デフォルトの名無しさん
NGNG0157デフォルトの名無しさん
NGNGなるほど問題ないのですか。サンクスです。
因みに CreateThread で作成したスレッドに対してでした。抜けてましたね。すいませんん。
ところで ExitThread て明示的に呼び出す必要があるときってどんな時なんでしょう?
何らかの処理中に ExitThread を呼んだところで直ちにスレッドが終了するわけでは無いし(当たり前ですが)
イマイチ使いどころがわからんのですが…。
0158デフォルトの名無しさん
NGNG大丈夫ッスか?
0159デフォルトの名無しさん
NGNGダメです。
なので、ExitThread()は(余程注意しないと)使えません。
0160デフォルトの名無しさん
NGNG0161デフォルトの名無しさん
NGNG各ウィンドウに対する処理はどのようにして行うものなんでしょうか。
以前は
1 for文をまわしウィンドウを作成する。
その際、外部で宣言したHWND型配列に各ハンドルを代入させる
2 プロシージャで引数として渡されるハンドルと、
ウィンドウ作成時に用意しておいた各HWND配列から内容の同じものを
探して見つける事で多数作られる中のどのウィンドウなのかを判別し
それに応じて異なる処理をする。
この「どのウィンドウを現在扱っているか」をプロシージャ内で判別する方法が
ややこしいし、なんだかきたないので、
スマートな方法があったら教えてください
根本的に間違っていたら正してやってください
おねがいします
0162デフォルトの名無しさん
NGNG0163デフォルトの名無しさん
NGNGSetProp APIを使ってウィンドウハンドルに対して付加情報をむすびつけておくってのはどうよ?
0164デフォルトの名無しさん
NGNGUNICODE で規定されているスクリプトタイプを調べる API はありますか?
0165デフォルトの名無しさん
NGNGfor 分で Create しつつ登録する仕組みだと、WM_CREATE あたりのメッセージが
発生するときにはまだ登録されていなくて不便です。
なので、WM_NCCREATE を受けた段階で、CREATESTRUCT 経由で渡されたウィンドウを
識別する情報 (CreateWindow時に作っておく) と hWnd のマッピングを生成すると良いでしょう。
163 の言うように SetProp で登録しても良いし、std::map に入れたりしておいても良い。
「この「どのウィンドウを現在扱っているか」をプロシージャ内で判別する方法」は
GetProp とか std::map::operator [] 一発だから、別にややこしくはないと思う。
0166デフォルトの名無しさん
NGNGSetPropなりSetWindowLongなりThunkなりでウィンドウに関連付けて終わり。
0167デフォルトの名無しさん
NGNGありがとうございます
今さらで申し訳ないのですがC++は自分は使えなくて
C言語でやっています
SetProp関数など今まで調べていたのですが
基本的な用語すらちゃんと理解できていないみたいで
具体的にどうすればいいかわかりませんでした
hWndのマッピング という言葉もよくわからないのです
ずうずうしいとは思いますが
相当なアホでもわかるように教えてもらえないでしょうか
0168デフォルトの名無しさん
NGNG0169デフォルトの名無しさん
NGNGオブジェクト指向とは関係ない、ただのロジック。
何故C++を使うだけでオブジェクト指向と言いたがるのか、さっぱり理解できない。
0170デフォルトの名無しさん
NGNGマッピングっていうのは、「hWnd から必要な情報への対応表」を作成するということ。
そうして、>>165 の前半でいっているのは、
for (int window_id = 0; window_id < 100; window_id++)
{
my_data_table[window_id].data = hogehoge();
my_data_table[window_id].hWnd = CreateWindow(...);
}
のようにしてしまうと、WM_CREATE の時にはまだ my_data_table[].hWnd が設定されていなくて
不便だから、CREATESTRUCT 経由で(この例だと) window_id を渡して、WM_NCCREATE で
my_data_table[window_id].hWnd = hWnd を実行すると良いよ、っていう話。
0171デフォルトの名無しさん
NGNG自分で調べてどうにかしようって気が無いんだったら、
グローバル変数に入れてって既存の方法使えば?
0172デフォルトの名無しさん
NGNG苦労したんだよ。察してあげな。
0173デフォルトの名無しさん
NGNGJPGを表示させる方法が分かりません・・・
簡単にJPGを扱う方法はありませんか?
0174デフォルトの名無しさん
NGNG0176デフォルトの名無しさん
NGNGあとはOleLoadPictureとかLoadImageとか。
ただしいずれもOSバージョンに制限あり。確認汁。
0177デフォルトの名無しさん
NGNGサンクスです
0178デフォルトの名無しさん
NGNG0179デフォルトの名無しさん
NGNG0180デフォルトの名無しさん
NGNGJPEG用のモジュールが入っているのがIEなんだが、けっこう知らない人がいるのか。
その他、標準コントロールの拡張機能もIEのバージョンに依存する部分が多い。
0181デフォルトの名無しさん
NGNGhttp://pc5.2ch.net/test/read.cgi/tech/1084697545/
>949 名前:デフォルトの名無しさん[sage] 投稿日:04/06/24 19:06
>今までDLLからウインドウを作ろうなんて考えもしなかったんだけど、
>DLLからCreateWindowをするとき、HINSTANCEにはDLLのインスタンスハンドルを指定するのですか?
>それともWinMainのHINSTANCEを指定すればいいのですか?
>NT系だと無視されるようなので、どちらが正しいかってのがちょっと分からないのですが。
催促ですみません、これわかる人いませんか?
0182167
NGNGわかりました!
ありがとうございます
これで外部変数は使わないで済みます。
SetPropの使い方については自分で勉強しながら確認していこうと思います。
>>168
オブジェクト指向ですか。
もうわからない事だらけでやらなきゃいけないこと
山のようにあるっぽいですが、色々調べて勉強してみます
>>171
一応結構長い時間調べたり、にらめっこしたりしてみたのですが
でもわかりませんでした。精進します
みなさんありがとうございました
助かりました。
0183デフォルトの名無しさん
NGNG0184デフォルトの名無しさん
NGNG試したわけじゃないけど、
作ろうとしてるウィンドウがどこにあるリソース(メニューとか)を使うかによるんじゃない?
普通はDLLに使うリソース入れるだろうから、DLLのHINSTANCEだと思うけど。
0185デフォルトの名無しさん
NGNGウィンドウプロシージャの入っているモジュールの hInstance。
0186デフォルトの名無しさん
NGNG0187デフォルトの名無しさん
NGNGレスありがとうございます。
ウインドクラスの場合は>>184で正しいと思うのですが、
CreateWindowの場合、メニューはリソースのIDではなく
メニューハンドルで指定しますよね?
リソースは影響しない気もするのですが、、、。
0188デフォルトの名無しさん
NGNG0189デフォルトの名無しさん
NGNG現状触れる範囲ではNT環境しかないもので、試せないのです。
0190デフォルトの名無しさん
NGNG0191デフォルトの名無しさん
NGNG0192デフォルトの名無しさん
NGNGプログラミングWindowsでは「どっちでも構わんが私はDLLを呼び出した側のインスタンスハンドルを使うことをすすめる」と書いてある。
0193デフォルトの名無しさん
NGNGありがとうございました
0194デフォルトの名無しさん
NGNG今はSetPixelVで点をいっぱい表示したり、
CreateFontで文字サイズを変えたのを1文字を表示する、
方法でやっているのですが、あるなら教えてください。
0195デフォルトの名無しさん
NGNG0197デフォルトの名無しさん
NGNG0199デフォルトの名無しさん
NGNG具体的にはWM_ERASEBKGNDである一部分だけ、再描画を停止したいのですが。
0200デフォルトの名無しさん
NGNG0201デフォルトの名無しさん
NGNG何とかこれを高速化する方法ないでしょうか?
ファイラーとかだとSysListView32のコントロールでも一瞬で表示されてるので、
やりようはあると思うのですが。
0202デフォルトの名無しさん
NGNG0203デフォルトの名無しさん
NGNGあとからSetWindowLongPtrとかやってもだめでした
いまのところ描写とかはうまくいってるのですがボタンであるのにBS_PUSHBUTTONでないと
問題が起きるとこってありますか?
0204デフォルトの名無しさん
NGNGC:\bcc55\Include>grep BS_PUSHBUTTON winuser.h
File winuser.h:
#define BS_PUSHBUTTON 0x00000000L
0205デフォルトの名無しさん
NGNGあ... どうりでふくまれないはずですね
でも電卓とかのボタンをspy++で調べるとBS_PUSHBUTTONがあるのですが
今回作ったプログラムのボタンは、みかけは電卓とかのと一緒なのにふくまれません
なんでだろう...
0206デフォルトの名無しさん
NGNG画像のサムネールや拡大・縮小、なども自作してみたいです。
でもグリッド一つとってもどう実装していいのかさっぱり分かりません。
参考になる本はないですか?
または参考になるソースを入手するにはどうすればいいですか?
0207デフォルトの名無しさん
NGNG02084 ◆MwGQyQRf/o
NGNG0209203.208.86.147
NGNG0210デフォルトの名無しさん
NGNGオーストラリア乙
0211デフォルトの名無しさん
NGNG……楽しんでこいよ。
0212デフォルトの名無しさん
NGNGイベントはキーを押したり、マウスを動かしたり、タイマーの時間が経ったり、
起こった事で、メッセージはそれをOSがプログラムに伝えてくるものかな。
0213デフォルトの名無しさん
NGNGWindowsについてまだ勉強始めたばかりなのですが、
イベント=スレッド間の同期通信
メッセージ=スレッド間の非同期通信
という理解でとりあえずはいいんでしょうか?
0214デフォルトの名無しさん
NGNG全く違う。
イベントってのは、英語の event そのもの。メッセージも message そのもの。
一般名詞であって、そんなに狭い意味を持って使われてるわけじゃない。
Windows の中では、イベントというと
・イベントドリブン型プログラム、という文脈でのイベント。
Windowメッセージのうち、ユーザやシステムから非同期的に発生するもの
WM_LBUTTONDOWN とか。WM_SETFONT などは普通「イベント」とは言わない。
・CreateEvent で作られた同期・排他・待ち合わせ用オブジェクト
・COM オブジェクトからの event sink インターフェイスへの呼び出し。
など諸々。
メッセージは、
・GetMessage や PeekMessage で得られる、ウィンドウメッセージ
・MAPI で転送されるメッセージ
など。
0215デフォルトの名無しさん
NGNGイベント箱にっ
おにぎり おにぎり
チョイと詰めて
あがり コーヒー ゆず さくらっ
0216デフォルトの名無しさん
NGNG今MSDN開けない環境なんでうろおぼえだけど、
リストの更新(追加)時に更新描画をさせないようにするメッセージかなんかがあったはず。
それで描画をOFFにしておけばそこそこ速度が稼げた気がする。
0217デフォルトの名無しさん
NGNGSendMessage(hListView, WM_SETREDRAW, 0, 0);
ここで項目追加
SendMessage(hListView, WM_SETREDRAW, 1, 0);
0218デフォルトの名無しさん
NGNGWIN32APIって何?
0219デフォルトの名無しさん
NGNG32ビット版Windowsが用意している関数群。
Cのライブラリ関数には必要ないけど、Windows用プログラム製作には必要なものが揃っている。
0220デフォルトの名無しさん
NGNG>>3
0221デフォルトの名無しさん
NGNG201じゃないが、いい事を教えてもらった。Thx
0222デフォルトの名無しさん
NGNG必要なくはないだろ。
0223デフォルトの名無しさん
NGNG0224デフォルトの名無しさん
NGNG名古屋出身かよ!
0225デフォルトの名無しさん
NGNG戻り値
関数が WM_QUIT メッセージを受け取って正常に終了する場合は、メッセージの wParam パラメータに格納されている終了コードを返してください。関数がメッセージループに入る前に終了する場合は、0 を返してください。
と書いてあります
しかし、DirectX9のマイクロソフトのサンプルコードには、
// Initialize Direct3D
if( SUCCEEDED( InitD3D( hWnd ) ) )
{
// Show the window
ShowWindow( hWnd, SW_SHOWDEFAULT );
UpdateWindow( hWnd );
// Enter the message loop
MSG msg;
while( GetMessage( &msg, NULL, 0, 0 ) )
{
TranslateMessage( &msg );
DispatchMessage( &msg );
}
}
UnregisterClass( "D3D Tutorial", wc.hInstance );
return 0;
}
と0を返しています
これでもいいのでしょうか?
0226デフォルトの名無しさん
NGNGINTERNET_OPTION_CONTROL_CONNECT_TIMEOUTとか
設定してみたけど反映されてないっぽいのですよ・・
・・どなたかご存知ないでしょうか?
0227デフォルトの名無しさん
NGNG0228デフォルトの名無しさん
NGNGWM_DESTROYでPostQuitMessage(0);なんて決め打ちしていたら別に同じ。
それにWinMain(main)の戻り値はWindowsが使うんじゃなくて、ユーザが使うものなんだけど、
ウィンドウズではまず間違いなく使われていない(それに使う手段がないに等しい)から別にいい。
0229デフォルトの名無しさん
NGNGそうなんですか
プログラム終了時に、0が返ってくるとなにかxpとかがカチンと来るのかなと思っていたのですが、
大丈夫なようですね
0230デフォルトの名無しさん
NGNGあーやっぱりだめですか・・。
非同期APIつーのはこの辺ですかね?
http://support.microsoft.com/default.aspx?scid=kb;EN-US;275046
ちょっと、やってみます。
0231デフォルトの名無しさん
NGNGスタートアップルーチンが使ってるってことはない?
0232デフォルトの名無しさん
NGNG少なくとも俺の経験上は、無い。
0233デフォルトの名無しさん
NGNG1ピクセルの画素値を抜き出すのってどのようにすれば可能でしょうか?
よろしくお願いいたします。
0234Windowsマンセー
NGNGレスありがとうございます。
Advanced Windows 3rdを古本屋で手に入れました。
カーネルオブジェクトという観点から綺麗に書かれていて
これ、とても解り易くて良い本です。
よく読んでから出なおしてきます。
0235デフォルトの名無しさん
NGNG何かオプションでも有りませんでしょうか。
そういうの良く見かけますけど全部自分で区切って登録してるのかな?
0236デフォルトの名無しさん
NGNGカンマ区切りって、桁区切り表示のこと?
なら自分で実装するしかない。
0237デフォルトの名無しさん
NGNG0238235
NGNG桁区切りならGetNumberFormatで出来ますし。
0239デフォルトの名無しさん
NGNGライブラリ化しとくと便利かも
ところで、9xでWNetAddConnection2使ってネットワークドライブに割り当てた
Server2003の共有フォルダ(NTFS)を、
9x側がFATって誤認識することがあったんだが、なんか情報持ってる香具師いないか?
9x系全般で再現、同一セグメントで発生した上クライアントPCの環境には特に縛られてない模様で、
再現手順もトリガもまったくわからん状態で困ってるんだが
ローカルディスクならブートレコード読み損なったときにFATと読み違えることも
あるらしい(見たこと無い)が…?
0240デフォルトの名無しさん
NGNG画面に表示する方法を教えて下さい。
0241デフォルトの名無しさん
NGNG2) ファイルの中身を読み出します(バッファ確保注意)
3) テキストウィンドウを作って2)で読んだ中身を放り込みます
0242デフォルトの名無しさん
NGNGすばやいお答えありがとうございます
0243デフォルトの名無しさん
NGNGネットワークドライブの実際のフォーマットを知ってどうしようっての?
何か意味があるとは思えないが
0244デフォルトの名無しさん
NGNG単にNTFSかFATかで区別しているとヤバいかもしれんね。
ちゃんとAPI叩いてればいいんだろうけど・・・
0245デフォルトの名無しさん
NGNG0246デフォルトの名無しさん
NGNGmapした領域オーバーしたらメモリ保護エラーだろ
0247デフォルトの名無しさん
NGNG>単にNTFSかFATかで区別しているとヤバいかもしれんね。
そりゃ論外すぎる…
0248デフォルトの名無しさん
NGNG0249デフォルトの名無しさん
NGNG>>247
FATと誤認識されたドライブを開いて[新規作成]→[テキストファイル]
…orz
まあ、9xが論外というならそれには激しく同意だが
0250デフォルトの名無しさん
NGNGなにか問題が?
まさか、書込みできないFATを想像してないわけじゃないよね?
0251デフォルトの名無しさん
NGNGひまわりは使える。TTSはしらん。
0252デフォルトの名無しさん
NGNG再現できれば画面さらしてもいいんだが
「"・テキスト"が作成できません。指定されたファイルが見つかりません」とエラーになる。
要は、FATと認識しているにもかかわらず、8.3形式無視した名前付けようとして
勝手にエラーを吐くっぽい
ネットワークドライブ割り当てまでがお仕事で、後は好きに使ってねっつーアプリなんで
こっちとしてはFATだどうだは気にしたくもないわけですが
↑みたいに勘違いしたエラー吐きやがるので
このままではお話になりませんよ、と
■ このスレッドは過去ログ倉庫に格納されています