Win32API質問箱 Build ..
449:デフォルトの名無しさん
07/04/02 12:30:27
猫のWin32は言っちゃ悪いけどひどいコーディングしてると思う
メニューのとこ見たら右クリックごとにメニューの生成と破棄繰り返してたよ。
450:デフォルトの名無しさん
07/04/02 12:36:43
オブジェクト指向的でいいじゃん
451:デフォルトの名無しさん
07/04/02 12:37:27
>>449
そうですか・・・
本を買う金がないので、400章まであるサンプルを一つ一つ手打ちで勉強してるんですが、
ところどころ非効率なコードが書いてあるということですね。注意して読みます。
ありがとうございました。
452:デフォルトの名無しさん
07/04/02 12:38:09
方法論を学ぶ所であってコードを学ぶ所ではないと意識しておけばおk
453:デフォルトの名無しさん
07/04/02 13:25:27
効率に限らず、独学の初心者的な泥臭いコードが多い
あれは教科書ではなくノートだと考えろ
丸写しすると他人の変な癖まで取り込むことになる
454:デフォルトの名無しさん
07/04/02 13:31:01
反面教師なんだよ。
455:デフォルトの名無しさん
07/04/02 13:36:47
ついでに思うのは果たして400章までやる必要があるかどうか?
応用って言葉の意味が無いよな
456:デフォルトの名無しさん
07/04/02 13:39:28
必要な動作を追うには、再利用性を考えて効率的に使えるように書かれたコードよりも見やすい。
STLやboostのコードを逐次追うような状態を想像してみると分かりやすいだろう。
457:デフォルトの名無しさん
07/04/02 14:14:27
まぁでもなーーーーんもわかんない人にはわかりやすいとは思う。
俺も猫からプログラミング入ったクチだし。数年前の話だけど。
458:デフォルトの名無しさん
07/04/02 15:21:10
猫は雰囲気だけ掴んで詳細はMSDNって感じだな。
459:デフォルトの名無しさん
07/04/02 16:20:28
猫とMSDNの間に差ありすぎだろ
460:デフォルトの名無しさん
07/04/02 17:18:33
猫を含めたWEBサイトだけで窓プログラミングを覚えた
(正確にはMFCの本を1冊だけ買ったけど)俺でも
猫のコードを「あまり良くない」と思えるぐらいには成長した
結局>>452と>>456だと思う
461:デフォルトの名無しさん
07/04/02 17:41:54
猫はほとんど見ないで解説サイトだけで勉強したけど
猫のコードが何故よくないのかわからない俺もいますよ
まだまだ勉強不足ってことだろうか・・・
462:デフォルトの名無しさん
07/04/02 18:13:38
猫のコードは普通に醜いし
処理過程も追いにくいと思うぞ
窓初心者ならこっちのほうがお勧め
URLリンク(wisdom.sakura.ne.jp)
トピック毎のサンプルが短いから
C言語の知識なくても解説見て丸写ししてるうちに分かるはず
ちょっとバグってる所もあるけど猫ほどじゃないし
463:デフォルトの名無しさん
07/04/02 18:22:46
後学のために質問なんだけど、
GDI+とか他のライブラリ使わないで、
PNGの画像ファイルをDCに描画する方法って、
どうやればいいのか、解説してるところあったら教えてほしい。
464:デフォルトの名無しさん
07/04/02 18:30:43
libpngでテンポラリメモリ上に展開したのち、SetDIBitsToDeviceとか
DIBSectionのメモリ上に展開してBitBltとか。
OleLoadPictureしてRenderとか。
465:デフォルトの名無しさん
07/04/02 18:37:11
windowを必要としないソフトでメッセージだけを受け取られますか?
466:デフォルトの名無しさん
07/04/02 18:37:59
投げる側がPostThreadMessage使うなら、ウインドウは要らない。
467:デフォルトの名無しさん
07/04/02 18:41:35
libpngが既に外部ライブラリだと思うんだけど
そういうことでなくて?
468:デフォルトの名無しさん
07/04/02 18:42:51
>>465
エスパー回答するとシステムトレイ上のアイコンからWM_COMMANDを投げたりできる
でもこれは厳密にはWindowを作ってることと一緒
469:デフォルトの名無しさん
07/04/02 19:15:47
>windowを必要としないソフトでメッセージだけを受け取られますか?
Windowを作らずに、Windowメッセージだけを取れるか?という意味?
例えばタイマーとか
470:デフォルトの名無しさん
07/04/02 19:46:29
>>463
URLリンク(www.w3.org)
ここに詳しく書いてある。
ライブラリを使うのが嫌なら自前で実装しろ。
>>465
必用としなくても見えないウインドウを生成すればいいだけ。
知恵が足りない。
471:デフォルトの名無しさん
07/04/02 20:05:02
ダイアログに文字を表示する方法でリソースに
LTEXT "URLリンク(hogehoge)
と書けば表示されるのですが、ということは、SetDlgItemTextは
なんのために存在するのでしょうか??
472:デフォルトの名無しさん
07/04/02 20:05:34
"が抜けていました
LTEXT "URLリンク(hogehoge)です
473:デフォルトの名無しさん
07/04/02 20:08:42
他のコントロールを変更するときに使う。
もちろん、LTEXTも変更できるので、位置だけ取って、あとから必要に応じて書いたり
474:デフォルトの名無しさん
07/04/02 20:08:53
何でもかんでも静的に決まると思ったら大間違いだ
475:デフォルトの名無しさん
07/04/02 20:10:20
俺はlibpngとlibjpegとlibtiffを使って相互にフォーマット変換できるクラスを作った。
もちろん、DIBに変換できるのは言うまでもない。
いや、ただそれだけなんだけど。
476:デフォルトの名無しさん
07/04/02 20:13:35
>>473
他のコントロールを変更するとは、どういう意味なんでしょ??
477:デフォルトの名無しさん
07/04/02 20:15:12
ボタンならボタンに表示されてる文字列が変わる。
というかSetDlgItemTextを何だと思ってたんだ。
478:デフォルトの名無しさん
07/04/02 21:39:45
動的に変えたい場合
479:デフォルトの名無しさん
07/04/02 21:51:29
逆に考えるんだ
OSもダイアログテンプレートのLTEXTの文字列を読んで
SetDlgItemTextを呼び出してるのだと
480:デフォルトの名無しさん
07/04/02 22:35:56
>>470 thx. やってみる。
481:デフォルトの名無しさん
07/04/02 22:52:25
CreateDialogを使用してダイアログを表示したいのですが戻り値がNULL、GetLastErrorの値が1812
になり表示できません。
ボタンを押したときに表示したいのでメッセージループに下のように埋め込んでいるのですが。
(ShowWindowとUpdateWindowは省略しています)
case WM_COMMAND:
hDlgWnd =(ghInst, MAKEINTRESOURCE(IDD_DIALOG1), ghWndKihon, (DLGPROC)MyDlgProc);
なにか、こうじゃないの?的な物でもいいのでヒントください。
482:デフォルトの名無しさん
07/04/02 22:54:46
肝心の「CreateDialog」が抜けていますがコピペミスなのでw気にしないでくださいw
483:デフォルトの名無しさん
07/04/02 23:02:49
エラーコード1812の意味を調べりゃ一目瞭然
484:デフォルトの名無しさん
07/04/02 23:04:59
481ではないしついでに聞こうとも思っていないが、
調べてみたらなるほど一目瞭然だな。
485:デフォルトの名無しさん
07/04/02 23:11:32
Error Lookupで見ると「指定されたイメージ ファイルはリソース セクションを含んでいません。 」。
ごめん、馬鹿なんです。resource.hの中に手動で何か追加するとか、そんな感じなの?
486:デフォルトの名無しさん
07/04/02 23:16:25
EXEの中にダイアログのデータが入っていないということ。
EXE内にリソースを入れるようなことをしたか?
487:デフォルトの名無しさん
07/04/02 23:31:35
>>486
おお!VCにScript1.rcを追加したら表示されまいた!
ありがとー!
また来ますノシ
488:デフォルトの名無しさん
07/04/02 23:34:58
低脳の悪寒
489:デフォルトの名無しさん
07/04/02 23:40:12
GetLastErrorの値まで調べておきながらエラーメッセージを調べないって何なんだ・・。
490:デフォルトの名無しさん
07/04/02 23:42:36
>>487
二度と来なくていい
491:471
07/04/03 00:04:38
>>474
>>477
>>478
>>479
ありがとうございます
静的な場合はリソースに記述
動的な場合はSetDlgItemTextで記述
という感じに考えます
492:デフォルトの名無しさん
07/04/03 01:51:54
>>443
アルファ値って255が不透明のはずだったけど
493:デフォルトの名無しさん
07/04/03 02:32:04
VCのリソースエディッタでダイアログをデザイン、ラジオボタンを並べました。
グループボックス内に配置し2グループに分けたのですが
どうも両グループ同一と認識いされているようで、2個同時にオンにできません。
同時に2個オンにするにはどうすればいいのでしょうか?
494:デフォルトの名無しさん
07/04/03 02:40:07
各グループで先頭のタブオーダーを持つラジオボタンのグループプロパティをTRUEにする
495:デフォルトの名無しさん
07/04/03 02:50:36
>>494
出来ました。夜分にサンクス。
496:デフォルトの名無しさん
07/04/03 08:27:36
>>493
ラジオ1 ラジオ2 ラジオ3 で1塊、ラジオ4 ラジオ5 ラジオ6 で1塊 として
(レイアウト - タブオーダー で順序そろえてから)
「ラジオ1」 と 「ラジオ4」 のプロパティ グループ にチェック
それ以外のラジオのプロパティ グループ はアンチェック
これで望みの動作になると思われ
497:デフォルトの名無しさん
07/04/03 09:20:12
Vistaの検索を自分のプログラムから利用するための
情報へのポインタはないでしょうか?
498:デフォルトの名無しさん
07/04/03 09:32:21
はい。
499:デフォルトの名無しさん
07/04/03 11:54:20
>>492
そういえばそうだ
ますますわかんなくなってきた
500:デフォルトの名無しさん
07/04/03 12:00:45
ストリーミング放送(livedoorのネットラジオ)を録音するのに良い方法はないでしょうか?
放送をダウンロードするのではなくて、現在再生中の放送を録音するみたいなAPIとか無いものでしょうか?
ちなみに当方VB6です。
501:デフォルトの名無しさん
07/04/03 12:59:26
>>499
RGBQUAD の rgbReserved が 0 デフォルトなんだよね…
1-alpha と alpha がごっちゃごちゃだわ
502:デフォルトの名無しさん
07/04/03 13:28:06
>>500
せめてもう少しマトモな書き方ができないものか
503:デフォルトの名無しさん
07/04/03 13:52:26
LivedoorStreamingRecording()
504:デフォルトの名無しさん
07/04/03 14:01:01
>>500
物理的にライン出力と入力を線でつないで録音するといいよ。
505:デフォルトの名無しさん
07/04/03 15:08:08
>>503
探したじゃないかw
506:デフォルトの名無しさん
07/04/03 19:28:29
プログラム中で生成したカラーのビットマップをマウスカーソルに
設定するにはどうしたらいいでしょうか? マウス用のリソースを
用意せずにリアルタイムにマウスカーソルを書き換えたいのです。
507:デフォルトの名無しさん
07/04/03 19:54:33
win32APIの勉強し始めたばかりのオレが答えてみる
マウス表示を消してマウス位置を調べてそこにBMPを描画すればいいんじゃね?
508:デフォルトの名無しさん
07/04/03 19:56:48
CreateCursorしといて、WM_CURSORとかでSetCursorでなくて?
システムグローバルに書き換えたい、というなら話は別だが
509:デフォルトの名無しさん
07/04/03 20:17:44
よろしくお願いしまっす。
SetForeGroundWindow等でもフォアグラウンドになったりしない
ウィンドウってできないんでしょうか。
現在はWS_EX_NOACTIVATEをつけて、
WM_MOUSEACTIVATEにMA_NOACTIVATEANDEATを返すようにして
普通ではアクティブ化しないようになっています
具体的にはツールチップのようなウィンドウを
マウ筋の「スクロールを監視」に引っ掛からないようにしたいんですが。
当該ウィンドウ上でホイールを回転させると
アクティブ化しないまでも他のウィンドウのフォーカスを奪ってしまうんです
510:デフォルトの名無しさん
07/04/03 20:30:48
制御したい動作のはフォアグラウンド化なのか、アクティブ化なのか、フォーカス持ちなのか。
511:509
07/04/03 21:02:37
どうも。言葉が曖昧ですんません
現在アクティブなウィンドウが非アクティブにならなきゃいいんです。。
つまりアクティブ化しないように出来ませんかってことで
512:506
07/04/03 21:02:43
>>508
CreateCursorを調べてみましたが、モノクロのビットマップカーソルは
作成できるようです。今回はカラー(24bit以上か、せめて16bit以上)
のマウスカーソルを作りたいのです。
システムグローバルではなくて、自アプリのカーソルのみです。
>>507
その方法だと、自アプリの縁を少しはみ出した状態で(ホットスポットが
自アプリ内)、クライアント領域の外にマウスが描画されないです。
513:506
07/04/03 21:11:20
カラーのマウスカーソルに関しては、CreateIconIndirectっていうのを
見つけました。
514:デフォルトの名無しさん
07/04/03 21:40:59
>>512
URLリンク(msdn2.microsoft.com)
515:デフォルトの名無しさん
07/04/03 23:23:11
Response & Balance 2600cc Dohc Engine Twin Turbo
516:デフォルトの名無しさん
07/04/04 01:19:05
>>511
違う方法になるけどWS_EX_TRANSPARENTは駄目?
517:509
07/04/04 02:20:26
>>516
ありがとうございます。
マウスホイールが透過するようになりました
が、クリックも透過してしまいます。
なんか情報後出しになってしまいましたが。
518:517
07/04/04 02:36:46
>>517
WM_COMMANDを監視してマウ筋から送られてくるコマンド(message)に対して
return値をごにょごにょする
519:デフォルトの名無しさん
07/04/04 06:46:10
>>509
WM_WINDOWPOSCHANGINGでSWP_NOACTIVATEを強制的に立てる
520:デフォルトの名無しさん
07/04/04 09:52:27
マウスフックを使用したプログラムを作成しているのですが、
システムフックが上手く機能しません。以下の事例と全く同じ現象です。
URLリンク(rararahp.cool.ne.jp)
他のプログラムのソースを参考にしたいので、何かあれば教えて下さい。
お願いします。<(_ _)>
521:デフォルトの名無しさん
07/04/04 10:32:21
>>520
その先読んでみたけど仕様を勘違いしているただの間抜けにしか見えないんだが
522:デフォルトの名無しさん
07/04/04 11:56:15
ウィンドウ上にボタンを配置し、クリックで新しいウィンドウを表示するプログラムを作成しています。
クリックで呼び出される側は WM_DESTROY メッセージが来たときに
SendMessage(hWnd, WM_CLOSE, 0, 0L);
として終了しています。
で、質問なのですがクリックで表示するウィンドウのCreateWindowで取得したハンドルは
クローズしなくてもリークしませんか?
しないといけない場合、どこですればいいのでしょうか?
523:デフォルトの名無しさん
07/04/04 14:50:19
親ウィンドウが破壊されるとき、
子ウィンドウも一緒に破壊される。
524:デフォルトの名無しさん
07/04/04 17:07:22
rand()の代替ルーチンがあったら教えてください
525:デフォルトの名無しさん
07/04/04 17:17:03
CryptGenRandom
再現性で問題が出るかもしれないが。
526:デフォルトの名無しさん
07/04/04 17:17:12
Win32APIにはないから自分で作れ。
527:デフォルトの名無しさん
07/04/04 17:19:42
まあ2000以降は仕様上プロセスが終了したら基本的にオブジェクトは何も残らんけどな
528:デフォルトの名無しさん
07/04/04 23:19:10
URLリンク(r.tabelog.com)
お○んこ画像
529:デフォルトの名無しさん
07/04/04 23:51:00
お○んこ!しかも無修正!!
530:デフォルトの名無しさん
07/04/04 23:51:07
>>528
うひょ〜、よだれが出てくるぜ
531:デフォルトの名無しさん
07/04/04 23:55:44
>>528
もう我慢できない
532:デフォルトの名無しさん
07/04/05 00:00:44
>>528
綺麗に処理してあるな
533:デフォルトの名無しさん
07/04/05 00:04:27
こんやのおかずにちょうどいい。くれ。
534:デフォルトの名無しさん
07/04/05 00:11:10
俺、今がちょうどこういうのが欲しくなる時間なんだ
535:デフォルトの名無しさん
07/04/05 00:11:34
>>527
終了したプロセスへのハンドルをつかんでい00る、別プロセスがあるかもしれない。
536:デフォルトの名無しさん
07/04/05 01:22:33
> つかんでい00る
00ってなんじゃらほい
537:デフォルトの名無しさん
07/04/05 02:19:39
パーマン絵描き歌を思いだした
538:デフォルトの名無しさん
07/04/05 09:51:06
ここ何スレだよw
539:デフォルトの名無しさん
07/04/05 11:19:22
プロセスの実行時間を計るのはどうしたらいいんでしょうか?
実時間じゃなくてプロセスの一部の処理に使ったユーザー時間のようなもの
が欲しいです。
PDHとやらを使うのかと思ったんですがよく分かりません。
540:デフォルトの名無しさん
07/04/05 12:15:38
>>539
timeGetTimeの差分じゃダメ?
541:デフォルトの名無しさん
07/04/05 12:20:28
GetProcessTimesじゃらめぇ?
542:デフォルトの名無しさん
07/04/05 12:49:32
>>539
>実時間じゃなくてプロセスの一部の処理に使ったユーザー時間のようなもの
>が欲しいです。
ここを詳しく。
処理に費やした時間を計測したいのか?
543:デフォルトの名無しさん
07/04/05 12:58:29
CPU時間でしょ。
>>541でおk
544:539
07/04/05 13:24:19
>>542
そうです。Unixのtimeの結果のようなものを計算したいんです。
GetProcessTimesを使ってみます。ありがとうございました。
545:デフォルトの名無しさん
07/04/05 13:46:06
モジュール内で抜けるまでどれくらい時間がかかてtるのかを計測したいなら
GetTickCountでいいような希ガス
546:デフォルトの名無しさん
07/04/05 16:01:50
すいませんWin32API入門の第72章リソースで詰まってしまいました
BorlandC++にBCCFormを入れてます
EDGEで32×32のtest.bmpを作って、アイコンとして読み込みたいんですが
LoadIcon()は分かるんですが、そこに至るまでが???で
宜しくお願いします
547:デフォルトの名無しさん
07/04/05 17:00:16
>>546
「メニュー」→「プロジェクト」→「プロジェクトに追加」
ファイルの種類を「リソースファイル (*rc)」にして、作成したrcファイルを指定する。
これだけで、後はその例通りに行けるよ。
548:デフォルトの名無しさん
07/04/05 18:21:32
>>547
レスありがとうございます
でもどうやらどつぼにはまったようで、さっぱり分かりません
.RES拡張子のファイルがないので
リソースコンパイラがよく分かってないようです
549:デフォルトの名無しさん
07/04/05 18:25:35
BorlandC++なら自前で .res にコンパイルしなくても
コンパイラが自動でやってくれる。
550:デフォルトの名無しさん
07/04/05 18:45:41
FILETIME構造体の
DWORD dwLowDateTimeと DWORD dwHighDateTime
の各ビットの意味教えてください。
年と月と日と時間が何ビットに書かれているかわかりません。
551:デフォルトの名無しさん
07/04/05 18:53:36
>>546
ビットマップファイルとアイコンファイルは別物なので
まずbmp→icoの形式変換から始めなはれ
>>550
ここがそのまんま役に立ちそう
URLリンク(wisdom.sakura.ne.jp)
552:デフォルトの名無しさん
07/04/05 18:54:25
直接ビット見たことないな
553:デフォルトの名無しさん
07/04/05 18:54:52
>>550
URLリンク(msdn2.microsoft.com)
1601年1月1日 (UTC)からの100ナノ秒単位での経過時間。
1つの64ビット整数だと見なせばよい(実際にそう扱うならアラインメントに注意)。
そういうわけでどこのビットが年とか月とかそういう性質のものではない。
だから素直にFileTimeToSystemTimeでも使っていなさい。
554:デフォルトの名無しさん
07/04/05 19:17:29
素直にfiletimetosystemtime使ったほうが早そうですね
こちらで検討してみます。
ありがとうございました
555:デフォルトの名無しさん
07/04/05 19:25:07
Notepadのように、フォームの領域一杯にEDITを表示してフォームのサイズ変更に追従させたい。
ドットネットで言う
textBox1.Dock = DockStyle.Fill;
をやりたいのですが
これってCreateWindow時にウィンドウスタイルのようなもので設定するとばかり思っていたのですが
そのような設定が見あたりません。
もしかしてウィンドウプロシージャのWM_SIZEのところで、自分でEDITのサイズを変更しないといけないんでしょうか?
556:デフォルトの名無しさん
07/04/05 19:28:14
そのまんまサイズ渡してやるだけ
557:デフォルトの名無しさん
07/04/05 19:42:20
>>549 >>541
レスありがとう
EDGEに.icon保存形式があったのでそれにしました
色々弄ってみて最後にBCCデベロッパーのDOSアイコン(コマンド実行)から
brc32 test.rc main.exe と入力したら
何とかmain.exeのアイコンだけ変えることができました
exe起動後のウィンドウタイトルバーの横のアイコンが変わらないので
また弄ってみます
558:デフォルトの名無しさん
07/04/05 19:45:32
>>557
それはウィンドウクラスのアイコンを設定すればいい
559:デフォルトの名無しさん
07/04/05 19:49:08
>>556
できました。
覚悟はしていたが本当に全部で自分でやらないといけないんだな・・。
560:デフォルトの名無しさん
07/04/05 19:55:08
>>558
この部分のことですよね? winc.hIcon = LoadIcon();
一応LoadIcon(hInstance, TEXT("KITTY") );とやってるんですがならないので
初めからやり直してみます
561:デフォルトの名無しさん
07/04/05 20:21:26
>>140
URLリンク(www.codeproject.com)
562:アイコンで聞いた者
07/04/05 21:02:27
何とか上手くやれるようになりました!
何度も聞いて申し訳なかったです
レスしてくれたみなさんありがとうございました
563:デフォルトの名無しさん
07/04/05 23:18:48
>>561
すげえw
564:デフォルトの名無しさん
07/04/06 04:31:37
デモ落としてみたけど根性ありすぎwww
565:デフォルトの名無しさん
07/04/06 10:09:34
>>561
これWin32APIで作られてるのか!?
566:デフォルトの名無しさん
07/04/06 10:13:48
>>561
軽く漏らした
567:デフォルトの名無しさん
07/04/06 11:01:24
>>565
思いっきりWTLって書いてあるじゃねえか
568:デフォルトの名無しさん
07/04/06 19:05:55
mcisend
569:デフォルトの名無しさん
07/04/06 19:10:36
VC++とplatformSDKで
mcisendcommad()でデバイスを開くときに
MCI_OPEN_PARMS構造体を使う場合でデバイスタイプにMPEGVideoを指定する事は出来るんでしょうか?
mmsystem.hにはMCI_DEVTYPE_SEQUENCERまでしか定義されてないようですが…
570:デフォルトの名無しさん
07/04/06 21:05:13
64ビット環境では___asmが使えないってのは本当なの?
571:は@c178.016.c3-net.ne.jp ◆cplnFO9T0I
07/04/06 21:30:33 BE:90784692-2BP(1000)
リストビューを使うためにLV_COLUMN構造体を定義しようとしても「定義されていない識別子です」と突っぱねられます。
VC.net20003を使っているのですが、どうすればいいでしょう。
前に痛い目を見たので#define WIN32_LEAN_AND_MEANはカットしているんですがね....
572:デフォルトの名無しさん
07/04/06 21:30:39
>>570
スレ違い
573:デフォルトの名無しさん
07/04/06 21:35:36
UNIXでの ls -a -r に相当するコードが知りたいです。
隠しファイル等を含む全てのファイルを再帰的に取得する方法を教えてください。
574:デフォルトの名無しさん
07/04/06 21:37:21
>>573
っ FindFirstFile
っ FindNextFile
っ FindClose
575:デフォルトの名無しさん
07/04/06 21:38:24
UNIX系のファイルシステムに、そもそも隠しファイルという概念など無い。
lsが勝手にフィルターしているだけ。
576:デフォルトの名無しさん
07/04/07 02:09:16
>>575
それを隠しファイルというんじゃないのか
WinだってExplorerが勝手にフィルターしてるだけだし
577:デフォルトの名無しさん
07/04/07 02:18:42
Win(というかFATとNTFS)にはファイル属性に隠しファイルビットがあるだろ
つーか質問はWindows上で隠しファイルを含めて検索する方法じゃないのか?
もう回答出てるけど
578:デフォルトの名無しさん
07/04/07 02:26:51
VC2005でダイアログボックスを作りたいのですが、どうやって作ったらいいのかわかりません。
VC2003だったらリソースの追加でできたのですがorz
ググッてみましたがわかりませんでしたので、教えてもらえると助かります。
579:デフォルトの名無しさん
07/04/07 02:56:36
>>578
Express Editionにはリソースエディタは付属しないので作れない。
別途にリソースエディタを用意するべし。
580:デフォルトの名無しさん
07/04/07 03:04:14
リソースエディタとはなんですか?
リソースの作り方すらわからない(´・ω・`)
581:デフォルトの名無しさん
07/04/07 03:07:18
これだからVCはオススメできない。
とりあえず、今までに作ったプロジェクトの拡張子が.rcの奴をテキストエディタで開け
582:デフォルトの名無しさん
07/04/07 03:12:15
開きましたー!!
583:デフォルトの名無しさん
07/04/07 03:13:34
>>580
2003で作ったときには開発環境でダイアログボックスを作れたでしょ?
あれは内部的にリソースエディタと呼ばれるツールを呼び出してただけなの
んでExpress Editionではその機能が削除されてるので作ることができない。
作ることができないといってもVCの開発環境で作ることができないだけで
リソースをプログラムから読み込むといったことは可能なので
フリーソフトのリソースエディタでダイアログを作るしかない、ってこと
584:デフォルトの名無しさん
07/04/07 03:20:29
>>583
親切にありがとう。
585:デフォルトの名無しさん
07/04/07 07:52:10
リソースって言っても二種類の意味で使われてない?
バイナリで書かれたリソースとテキストで書かれたのリソース
どう呼び分ければいいんだろう??
586:デフォルトの名無しさん
07/04/07 07:52:42
「書かれたリソース」の間違い
587:デフォルトの名無しさん
07/04/07 08:17:00
っ「リソーススクリプト」
588:デフォルトの名無しさん
07/04/07 08:19:44
リソース
├フォーマットがテキストの
└フォーマットがバイナリの
589:デフォルトの名無しさん
07/04/07 09:02:01
コンパイル済みリソースがバイナリリソース。
590:デフォルトの名無しさん
07/04/07 17:13:30
テキストのリソースファイル(.rcファイル)+バイナリ(画像など)を
リソースコンパイラでコンパイルして .res ファイルをつくり
リンカで EXEにバインドする。直接.resを編集するツールもある。
591:デフォルトの名無しさん
07/04/07 21:12:44
僕ハッカー
592:デフォルトの名無しさん
07/04/07 21:15:17
僕バッカー
593:デフォルトの名無しさん
07/04/07 21:17:57
バカバッカー
594:デフォルトの名無しさん
07/04/07 21:18:00
バカばっかー
595:デフォルトの名無しさん
07/04/07 21:57:10
けこん
596:デフォルトの名無しさん
07/04/08 02:15:51
winAPIでテキストエディタに文字列を書き込んで保存したいのですが、どのようにしたらよいですか?
VC使って組んでいます。
597:デフォルトの名無しさん
07/04/08 02:18:20
意味が分からんな
外部のテキストエディタに文字を送り込むのか?
自前でテキストエディタを作るのか?
…単にテキストエディタじゃなくてテキストファイルってオチか?
598:デフォルトの名無しさん
07/04/08 04:21:34
普通にfopen、fwrite?
599:デフォルトの名無しさん
07/04/08 07:55:34
他のアプリケーションのウインドウの座標と大きさを取得するにはどうすれば良いですか?
また、座標と大きさを指定するにはどうすれば良いですか?
600:デフォルトの名無しさん
07/04/08 08:00:51
GetWindowRect
MoveWindow
プロセス跨いで使えたかはシラネ
春 の 香 り 乙 !
601:デフォルトの名無しさん
07/04/08 08:51:32
>>600
ありがとうございました
602:596
07/04/08 10:28:48
>>597
テキストファイルの間違いでしたw
603:デフォルトの名無しさん
07/04/08 13:44:29
マウスフックについての質問です。MOUSEHOOKSTRUCT構造体の内容を
フックプロシージャから他のウィンドウプロシージャへ渡したいのですが、
上手くいきません。フックプロシージャのコードは次の通りです。
LRESULT CALLBACK HookProc(int nCode,WPARAM wp,LPARAM lp)
{
COPYDATASTRUCT cds;
if (nCode < 0) CallNextHookEx(hHook,nCode,wp,lp);
cds.dwData = wp;
cds.cbData = sizeof(MOUSEHOOKSTRUCT);
cds.lpData = (PMOUSEHOOKSTRUCT)lp;
SendMessage(hWnd,WM_COPYDATA,NULL,(LPARAM)&cds);
return CallNextHookEx(hHook,nCode,wp,lp);
}
間違いがあれば指摘して下さい。又、参考になるソースがあれば教えて下さい。
お願いします。<(_ _)>
604:デフォルトの名無しさん
07/04/08 13:54:02
相手が別プロセスなら自メモリ領域のポインタを渡しても無意味。
相手のメモリ内に領域を確保してそのポインタを渡す。
605:デフォルトの名無しさん
07/04/08 14:12:44
Windows XPでのCPU使用率の取得方法を教えてください
606:603
07/04/08 14:19:45
>>604
そのためにWM_COPYDATAメッセージを使用しています。ファイルマッピングオブジェクトの
内容を参照するので、メモリを共有する必要は無いと思ったのですが。
URLリンク(yokohama.cool.ne.jp)
607:デフォルトの名無しさん
07/04/08 14:22:09
>>603
その中だとhWndが一番怪しい。
SendMessageするときにhWndにちゃんとした値が入ってる?
608:603
07/04/08 14:36:11
問題ありません。
「猫でもわかる」の162章のように、フックプロシージャ内での処理には成功しました。
609:デフォルトの名無しさん
07/04/08 14:49:03
そもそもうまくいかないって何が巧くいってないんだ?
WM_COPYDATA が hWnd の WindowProc に来ないのか、来た WM_COPYDATA からデータが取れないのか
610:603
07/04/08 15:00:54
>>609
WM_COPYDATAメッセージは届くのですが、COPYDATASTRUCT構造体の内容の参照が上手くいきません。
フックは次のようにセットしています。
#define EXPORT __declspec (dllexport)
#pragma data_seg(".shared")
static HHOOK hHook = NULL;
static HWND hWnd = NULL;
#pragma data_seg()
EXPORT HHOOK SetHook(const HWND hCaller)
{
hWnd = hCaller;
hHook = SetWindowsHookEx(WH_MOUSE,(HOOKPROC)HookProc,hInst,0);
return hHook;
}
ウィンドウプロシージャでは次のように処理しています。
case WM_COPYDATA:
if (((PCOPYDATASTRUCT)lp)->dwData == WM_NCLBUTTONDOWN) {
pmhs = (PMOUSEHOOKSTRUCT)lp;
if (pmhs->wHitTestCode == HTCAPTION) {
SetWindowText(pmhs->hwnd,"猫でもわかるフック");
}
}
break;
611:デフォルトの名無しさん
07/04/08 15:22:04
>>610
> pmhs = (PMOUSEHOOKSTRUCT)lp;
pmhs = (PMOUSEHOOKSTRUCT)((PCOPYDATASTRUCT)lp)->lpData;
だろ常識的に考えて
612:603
07/04/08 15:38:41
>>611
すみません。ウィンドウプロシージャの処理を訂正します。(^_^;)
PCOPYDATASTRUCT pcds;
PMOUSEHOOKSTRUCT pmhs;
case WM_COPYDATA:
pcds = (PCOPYDATASTRUCT)lp;
pmhs = (PMOUSEHOOKSTRUCT)(pcds->lpData);
if (pcds->dwData == WM_NCLBUTTONDOWN) {
if (pmhs->wHitTestCode == HTCAPTION) {
SetWindowText(pmhs->hwnd,"猫でもわかるフック");
}
}
break;
ローカルフックには成功したのですが、グローバルフックに失敗します。
613:デフォルトの名無しさん
07/04/08 16:03:20
SetWindowText が気になって仕方ないが、
WindowProc 内での pcds->dwData とか pmhs->wHitTestCode とかはどうなんだ?
正しい値を示してるのか?
614:603
07/04/08 16:46:12
他のアプリケーションにフックDLLがロードされていることは確認できたのですが、
COPYDATASTRUCT構造体の内容が空のようです。
615:デフォルトの名無しさん
07/04/08 18:41:35
URLリンク(msdn.microsoft.com)
> ほかのプロセス内のコントロールのテキストを設定するには、SetWindowText 関数を
> 呼び出すのではなく、直接 WM_SETTEXT メッセージを送ります。
何でフックがうまくいってないと思い込めるんだかさっぱり分からん。
明らかに間違ってたソースも「訂正します」の一言で済まされるし。
616:603
07/04/08 18:54:38
あたながたが思いのほか低スキルだったのでがっかりしています。
2ちゃんもたいしたことないですね。
617:デフォルトの名無しさん
07/04/08 18:56:30
↓真603による「616は私ではありません」というレス
618:デフォルトの名無しさん
07/04/08 18:56:33
615は無視かよ
619:603
07/04/08 19:50:46
>>615
SendMessage(pmhs->hwnd,WM_SETTEXT,0,(LPARAM)"猫でもわかるフック");
としたのですが、ウィンドウタイトルは変更されません。
間違ったソースを掲載したことについては深くお詫びします。大変申し訳ありませんでした。
620:デフォルトの名無しさん
07/04/08 20:43:43
>>619
dll.defに
SECTIONS
.shared SHARED READ WRITE
が有るか確認するとか
char sz[100];
wsprintf(sz, "pmhs->hwnd:%p ", pmhs->hwnd);
SetWindowText(hWndExe, sz);
として様子を見るとか
621:デフォルトの名無しさん
07/04/08 23:19:23
うまくいかないときには何がおきてるのかを見極めて原因究明。
期待通りにいくかいかないかだけを判断してたらいつまでたってもなおらん
622:デフォルトの名無しさん
07/04/09 00:44:15
デバッガ使ってないのかね?
1ステップずつ確認すれば、問題点はすぐに分かると思うが。
623:デフォルトの名無しさん
07/04/09 00:47:43
フックプロシージャのステップ実行なんて出来るの?
624:デフォルトの名無しさん
07/04/09 01:14:11
フック先のプロセスにアタッチしろ。
625:デフォルトの名無しさん
07/04/09 10:09:06
別にデバッガ使わなくてもログをファイルに書き出せばいいだけだし
626:603
07/04/09 10:33:11
>>620-624 レスありがとうございます。
>>620 モジュール定義ファイルは作成済みです。内容は次の通りです。
LIBRARY hook
SECTIONS
.shared READ WRITE SHARED
EXPORTS
HookProc @1
ResetHook @2
SetHook @3
pmhs->hwndの値をウィンドウプロシージャ内で出力したところ、
ローカルフックでは00060AA2でした。グローバルフックでは何も出力されませんでした。
グローバルフックではWM_COPYDATAメッセージが届いていないようです。(^_^;)
>>622 デバッガは使用していません。OutputDebugStringを使って変数の値をトレースしています。
>>623 プロセス間を跨いだデバッグ作業はどのように行うのでしょうか?
>>624 明示的にアタッチする方法があるのですか?
>>621 今までの状況を整理してみました。
・ローカルフックには成功し、グローバルフックには失敗する。
・ローカルフックの場合、フックDLLがロードされ、WM_COPYDATAメッセージが届く。
・グローバルフックの場合、フックDLLはロードされるが、WM_COPYDATAメッセージは届かない。
627:デフォルトの名無しさん
07/04/09 11:00:13
WindowsXPの[ユーザのログオフ]−[ユーザー切替]−[指定したユーザーのログオン]
という作業をプログラムから操作したいんですけど可能でしょうか?
可能なら使用するAPIを教えて頂けないでしょうか?
628:デフォルトの名無しさん
07/04/09 11:05:12
不可
629:627
07/04/09 11:11:17
やっぱりですね
即レスありがとうございました。
630:デフォルトの名無しさん
07/04/09 11:31:48
>>627
Ginaで何とかなるでしょ。Ginaでぐぐってみたら?
631:デフォルトの名無しさん
07/04/09 11:40:23
>>627
レジストリに自動ログオンの設定を書き込んで再起動
632:デフォルトの名無しさん
07/04/09 11:58:25
>>626
プロセスにアタッチするのははDLLをデバッグする場合の基本操作なんだが、
そんな当たり前のことを自分で調べられないのか?
633:デフォルトの名無しさん
07/04/09 14:27:57
グローバルフック成功してないんじゃね?
634:デフォルトの名無しさん
07/04/09 15:14:14
Windowsで標準入力や出力がリダイレクトされてるかどうか知る方法を教えてください。
635:デフォルトの名無しさん
07/04/09 15:56:31
現在VS2005を使っているのですが、作成してるネイティブアプリのVisualStyleを切るにはどの様な方法がよろしいでしょうか?
よろしくお願い致します。
636:デフォルトの名無しさん
07/04/09 16:28:21
まにふぇすとぶっこわす
637:デフォルトの名無しさん
07/04/09 17:01:54
むしろバージョン5のcomctl32.dllを使うようにマニフェスト書け
638:デフォルトの名無しさん
07/04/09 17:27:19
>>626
コードを一から書いたら、グローバルフックでもタイトルバーが変わった。
期待した動作にならなかったら、一から作り直すのも手かと。
つか、サンプルコードのコピペはおすすめできない。
639:デフォルトの名無しさん
07/04/09 18:06:07
>>636-637
レスありがとうございます。
というか何か勘違いしてました。。
VS2005では勝手に有効になると思ってましたがならないんですね・・・
この前作ったときはなってたような・・・気のせいか・・・orz
640:デフォルトの名無しさん
07/04/10 00:34:29
ツリービューのノードのアイコンを一つだけ変える場合って
どうすればええすか?
Expandしたら広がったフォルダを表示とか。
641:デフォルトの名無しさん
07/04/10 08:34:36
TVM_SETIMAGELIST で ImageList セット
TVM_SETITEM での fMask に TVIF_IMAGE|TVIF_SELECTEDIMAGE なり TVIF_STATE なり...
642:デフォルトの名無しさん
07/04/10 12:49:04
USBリムーバブルハードディスクのデバイス識別子?(USB\Vid_04xx&Pid_10xx)とかから
割り当てられている論理ディスクのボリューム名を取得したいのですが
どの辺を参照したらいいでしょうか。
「管理ツール」→「ディスクの管理」で下側ビューの左側「ディスクn」を右クリックしてプロパティを表示させて、
「ボリューム」プロパティーシートの下側リストビューに表示されているものが欲しいです。
643:デフォルトの名無しさん
07/04/10 16:50:17
SetMenuContextHelpIdに渡す「ヘルプコンテキスト識別子」ってなんなんですか?
「ヘルプコンテキスト」ってリソースで用意するんでしょうか?
それってどのような物で,どうやって作るんでしょうか?
644:デフォルトの名無しさん
07/04/10 18:08:33
Win32API を使って、DLL 中のダイアログリソースの PUSHBUTTON の文字列を取得することはできますでしょうか?
FindResource -> LoadResource -> LockResource まではできましたが、文字列の取得が分からない。
645:デフォルトの名無しさん
07/04/10 18:31:28
自分で解析
646:デフォルトの名無しさん
07/04/10 21:03:23
>>643のレスで思ったのだが、そーいや、2005からののヘルプはどうなんお?
昔は、HTML Help Workshopとかゴリゴリ作ったが?
URLリンク(msdn.microsoft.com)
ここでいいっけ?
それとも、暗黙でツールが入ってるのかな?
647:デフォルトの名無しさん
07/04/10 21:10:22
ゲームプログラムで質問ですwin32apiの関数を使うよりdirectxを使った方が画像の描画は早いですか
648:デフォルトの名無しさん
07/04/10 21:18:57
>>647
ちなみに、何系ゲーム?
649:デフォルトの名無しさん
07/04/10 21:30:43
シューティング系ゲームです。既にwin32apiで作ったのですが画面のスクロール速度を一定以上にあげるとフレームスキップが起こるです。
650:648
07/04/10 21:38:04
>>649
画面更新に速度を要求するなら、
DirectXなんじゃね?
DirectX〜系の別スレがよろしいかと・・・
651:デフォルトの名無しさん
07/04/10 22:52:12
>>644
MSDN に PEFILE.cpp というサンプルがあって、.exe/.dll の先頭から
.rsrc section を割りだし、section 内のテーブルを追い掛けると、
個々の rsrc leaf に行き付ける例があったと思う。
dialog template の構造は MSDN に説明があった。
ただ、これらを取り出したり、差し替えたりするのに、ファイルとして
開く際、使用中だと開けないことがある。開く際の属性を指定すると
可能なのかも知れないが。
652:デフォルトの名無しさん
07/04/10 23:30:31
>651
いや、メモリに一度読み込めば問題なし。
昔、ダイナミックにダイアログリソース作ったときはそうやったよ。
653:デフォルトの名無しさん
07/04/10 23:36:48
GetCommandLine関数を利用する場合、
みんあはや空白の分割とかどしてる?
思いつき関数作ったけど、意見求む。
654:653
07/04/10 23:38:46
前半
DWORD OrderCommandLine(LPTSTR lpBuffer, LPDWORD lpcchBuffer)
{
DWORD i, dwLen, dwPos, dwCnt, dwDiv;
TCHAR tcChr;
TCHAR szCmd[0xFFFF];
TCHAR szDmy[0xFFFF];
int fDQ;
LPTSTR lpszCur;
/* 初期化 */
::lstrcpy(szCmd, ::GetCommandLine());
dwLen = (DWORD)::lstrlen(szCmd);
szCmd[dwLen++] = _T('\0');
/* 捜査 */
for (i = 0, dwPos = dwDiv = 0, fDQ = 0, lpszCur = szCmd; i < dwLen; i++, lpszCur++){
tcChr = *lpszCur;
if (tcChr == _T('\"')){
fDQ = !fDQ;
}else
if ((!fDQ) && (tcChr == _T(' '))){
tcChr = _T('\0');
}
szDmy[dwPos++] = tcChr;
if (tcChr == _T('\0')){
dwDiv++;
}
}
szDmy[dwPos++] = _T('\0');
655:653
07/04/10 23:39:39
後半
/* 整理 */
dwCnt = 0;
if (dwDiv > 0){
for (i = 0, dwPos = 0, lpszCur = szDmy; i < dwDiv; i++, lpszCur++){
dwLen = (DWORD)::lstrlen(lpszCur);
if (dwLen > 0){
::lstrcpy(&szCmd[dwPos++], lpszCur);
lpszCur += (dwLen);
dwPos += (dwLen -1);
szCmd[dwPos++] = _T('\0');
dwCnt++;
}
}
szCmd[dwPos++] = _T('\0');
}
/* 結果 */
if (lpcchBuffer){
if (*lpcchBuffer >= dwPos){
*lpcchBuffer = dwPos;
if (lpBuffer){
::CopyMemory(lpBuffer, szCmd, dwPos * sizeof(TCHAR));
}
}
}
return dwCnt;
}
656:653
07/04/10 23:42:59
DWORD OrderCommandLine(LPTSTR lpBuffer, LPDWORD lpcchBuffer)の
LPTSTR lpBufferはバッファ
LPDWORD lpcchBufferはlpBufferのサイズ(文字単位)の入った変数のポインタ
んでOrderCommandLineは分割した数を返す。
どっかおかしいとこない?
657:デフォルトの名無しさん
07/04/10 23:48:04
自作せずにCommandLineToArgvWを使ったほうが楽なのでは?
658:653
07/04/11 00:01:57
>>657
CommandLineToArgvW関数はしりませんですた... orz
調査してみますね。
659:デフォルトの名無しさん
07/04/11 00:07:01
main関数のargc, argvは駄目なの?
main関数から始まるけどコンソールプログラムでないというのは変わっているかもしれないけど。
660:デフォルトの名無しさん
07/04/11 00:13:42
boostにコマンドライン解析があった希ガス
661:デフォルトの名無しさん
07/04/11 00:25:19
>>659
WinMain関数のLPSTR lpszCmdLine問題があったので、
片手間で作成してみました。
そりゃ、_tmain関数みたいなのが、一番いいですが。
>>660
URLリンク(www.boost.org)ですよね?
ここも見てみます。
662:デフォルトの名無しさん
07/04/11 00:25:41
__argv,__argcとかいうのもあったような
663:デフォルトの名無しさん
07/04/11 00:43:11
Googleからも出てる。
URLリンク(code.google.com)
664:デフォルトの名無しさん
07/04/11 03:12:11
CommandLineToArgvW以外はスレ違いじゃね?
>>661
_tWinMain
VC++以外や、VC++でもバージョンによっては存在しないみたいだが
その場合はGetCommandLineW
つーかCommandLineToArgvWは_tmainが存在しなかったバージョンのVC++で
GetCommandLineWと組み合わせて使うために提供されていた(だからW版しかない)ので
665:653
07/04/11 08:17:09
>>664
情報ありがとうございます。
へー_tWinMain関数ってあるんですかー。
特に変な意識して、関数作る必要もなかったのかな?
一回、整理して考え直してみます。
皆様ありがとうございました
666:デフォルトの名無しさん
07/04/11 08:55:12
>>644
不可視でダイアログ開いて、GetDlgItemText()したら?
667:デフォルトの名無しさん
07/04/11 11:33:08
CSV(カンマテキスト)を分割するAPIを教えてください
668:デフォルトの名無しさん
07/04/11 11:59:02
ない
669:デフォルトの名無しさん
07/04/11 12:55:54
ウィンドウズの起動時間(timeGetTimeやGetTickCountで返される数値)を変更する方法ありますか?
DirectShow辺りが怪しいので
デバッグで24日間放置した状態にしたいのです
670:デフォルトの名無しさん
07/04/11 13:05:35
>>669
hookして、好きな値返すとか?
671:デフォルトの名無しさん
07/04/11 13:13:31
>>668
ADO等で出来なくもない気もするが
672:デフォルトの名無しさん
07/04/11 13:45:05
猫でもわかる・・の第10章タイマーで、コーディングして実行したところ、
一応動くのですが、文字列が再描画されず、字が重なったようになって
しまいます。この場合、うまく表示するにはどうしたらよいでしょうか?
よろしくお願いします。
673:デフォルトの名無しさん
07/04/11 13:56:55
大学院レベルの猫にしかわからないってことだね
674:672
07/04/11 13:57:59
↑で質問したものです。
InvalidateRect(hWnd, NULL, FALSE);
こいつを
InvalidateRect(hWnd, NULL, TRUE);にしたらなおった。
でも載ってるのは最初のほうですよね。
なんかほかに方法があるのかなぁ
675:デフォルトの名無しさん
07/04/11 14:01:28
つ SetBkMode
676:672
07/04/11 14:04:28
>>675
実装済みです
677:デフォルトの名無しさん
07/04/11 14:14:29
前と同じ幅の文字で上書きしてないとか
678:デフォルトの名無しさん
07/04/11 14:33:38
>>676
TRANSPARENT で描画、リクエストをInvalidateRect(...FALSE) にしてたら
672 のように多重の重ね書きになるわけだが?
まぁ、OPAQUEにしたところで、文字列の実描画長が短くなったら
なんらかの方法で背景色で消すコードを書くはめにはなるがね
679:デフォルトの名無しさん
07/04/11 14:34:58
fillrect
680:デフォルトの名無しさん
07/04/11 14:41:57
ExtTextoutを結構多用したなあ
681:デフォルトの名無しさん
07/04/11 16:34:21
質問です。
親のウインドウとは独立した子ウインドウで、親よりは必ず前面に。
ただし他のアプリのウインドウがより前面にある時は(親ともども)きちんとそのウインドウの背面に。
というウインドウをCreateWindowExで簡単に作ることはできないでしょうか。
・子ウインドウは、親ウインドウの中に存在するわけではない(つまりWS_CHILDではない?)
お絵かきツールのパレットウインドウなんかがこんな感じ。
・WS_EX_TOPMOSTにすると、他のアプリのウィンドウよりも前にきてしまう
次ページ最新レス表示スレッドの検索類似スレ一覧話題のニュースおまかせリスト▼オプションを表示暇つぶし2ch
4981日前に更新/230 KB
担当:undef