■過去ログ置き場に戻る■
1-
前250
次250
最新50
[memo]
"9999999999_00.html#R20"
という感じで、URLの最後に "#R
レスNo
" を追加すると幸せになれます。
Win32API質問箱 Build22
751
名前:
デフォルトの名無しさん
:04/09/11 14:29:10
別でいいよ。
752
名前:
デフォルトの名無しさん
:04/09/11 14:31:49
実際にWin64の質問が増えてからでいいって。
今までほとんど無いんだから今のところ現状維持で。
753
名前:
デフォルトの名無しさん
:04/09/11 14:41:47
ただ単に「WindowsAPI質問箱」にするだけじゃ駄目なん?
754
名前:
デフォルトの名無しさん
:04/09/11 14:49:50
それじゃWinFXも入る予感
755
名前:
デフォルトの名無しさん
:04/09/11 14:58:02
俺の持ってるWindowsプログラミングに関する唯一の本は
パラメータの型としてSIZE_Tとなってるところが、全てDWORDです。
そろそろ新しい版を買えことかな。AdvancedWindows3edです。
756
名前:
デフォルトの名無しさん
:04/09/11 14:58:57
( ´_ゝ`)フーン
757
名前:
デフォルトの名無しさん
:04/09/11 15:25:01
マウスボタンをLR同時押しするとWM_*BUTTON〜メッセージが来ないマウスと、
両方通知されるマウスがある。
ハード依存なのか、それともドライバなのかなぁ。
何か情報ないでしょうか?
758
名前:
デフォルトの名無しさん
:04/09/11 15:26:28
どっちもありうる
759
名前:
757
:04/09/11 15:42:00
ドライバだった。
同時押し時にホイールとして機能するようになってたよorz
760
名前:
デフォルトの名無しさん
:04/09/11 18:29:07
Cのウィンアプリで、コールバックを使わずに組むのはダメなのでしょうか。
以下のプログラムのような感じなのですが。
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1086258254&res=6
うまく言えないのですが、タイトルの時は、タイトルの処理だけに当たり
フィールドの時は、フィールドの処理だけとしたいのです。
普通のやり方だと、グローバル変数、static変数を
使わなければいけない所もでてきてしまいます。
手続き型っぽくしたいのです。
761
名前:
デフォルトの名無しさん
:04/09/11 18:46:09
ウィンアプリはイベントドンブリが基本だから、
注文したカツどんがすぐ出てくるとは限らないぞ
762
名前:
デフォルトの名無しさん
:04/09/11 19:18:46
>>760
ゲーム進行用のスレッドを作ってそこであれこれやるのじゃだめか?
763
名前:
760
:04/09/11 19:35:53
>>761
詳しくお願いします。
>>762
スレッドが難しくて分からないです。
眼で追いやすい手続きっぽいのがいいです。
764
名前:
デフォルトの名無しさん
:04/09/11 19:48:04
>>755
DEPなんて影も形もなかったころから将来PAGE_EXECUTEをサポートする
プロセッサが現れるかもしれないからちゃんとVirtualProtectしておけと
書いてありましたね。
765
名前:
デフォルトの名無しさん
:04/09/11 20:30:50
LR同時押しは依存症
766
名前:
デフォルトの名無しさん
:04/09/11 20:44:48
>>764
あれはいい本だ。ところで
ttp://www.wintellect.com/about/instructors/richter/prog_apps.aspx
に第4版の訂正が載っていて、
「DLL の注入と API フック」の章では
オリジナルでは単に WriteProcessMemory だけだったが、
VirtualProtect で PAGE_EXECUTE_READWRITE を設定しろと書いてある。
この訂正の理由が DEP 関係なら理解できるんだけど
> The sample fails to hooks some applications.
「一部のアプリで失敗する」っていう理由がよく分からない。
同じ環境でも成功するアプリと失敗するアプリがあるの? なんで?
767
名前:
デフォルトの名無しさん
:04/09/11 22:52:46
WS_EX_CLIENTEDGEのスタイルを指定したときの内側の枠の幅はどうやれば取得できるのでしょうか?
EDITとかに好みのフォントを設定した後、最適な高さにリサイズしたいのですが、
GetTextMetricsではフォントグリフの高さしか取得できず、ウインドウをその高さにリサイズすると
当然文字が欠けてしまいます。
768
名前:
デフォルトの名無しさん
:04/09/11 22:57:15
化けるわけないじゃん
769
名前:
デフォルトの名無しさん
:04/09/11 23:34:48
>>767
GetWindowRect()
GetClientRect()
ClientToScreen()
これらを使えばスタイルが変わってもプロシージャの使いまわしが化膿。
770
名前:
デフォルトの名無しさん
:04/09/12 00:19:59
透過転送を使いたいがためだけにイメージリストを使うのってアリですか?
771
名前:
デフォルトの名無しさん
:04/09/12 03:14:14
SendInput関数・INPUT構造体について質問です。
これを使用したいのですが、なぜかコンパイルエラーに
なってしまいます。ヘッダにしっかりと定義の記述があるのですが、
「error C2065: INPUT' : 定義されていない識別子です。」
のようなエラーになってしまいます。user32.libなども、
読み込む設定になっています。
どうすればよいでしょうか?
環境
winxp vc6.0 sp6
772
名前:
デフォルトの名無しさん
:04/09/12 03:40:19
>>771
#if (_WIN32_WINNT > 0x0400)
773
名前:
デフォルトの名無しさん
:04/09/12 03:41:29
>>771
_WIN32_WINNT
774
名前:
773
:04/09/12 03:42:03
すまん、かぶった
775
名前:
デフォルトの名無しさん
:04/09/12 03:55:54
_WIN32_WINNT 0x0500 と定義してあります。
それでも、ダメなようです。
変数の.を打ち込んだときに、リストは出てきます。
(インテリジェンス機能?)
それでも、コンパイルが通らないんです…。
776
名前:
デフォルトの名無しさん
:04/09/12 04:04:43
>>775
ヘッダのインクルードより前に#defineしてるか?
777
名前:
760
:04/09/12 08:49:46
>>760
の書き方はなぜいけないかまだ分かりません。
HandleTitleの所のメッセージチェックの所に、
DispatchMessage(&msg);を書いて、
WndProcにif(game == Title)を条件に、
そのメッセージチェックを書けば同じ処理になると思うのですが。
DispatchMessageが、ただWndProcに行くだけと考えているので
そう書いたのですが、他にも何か処理をしているのでしょうか。
778
名前:
デフォルトの名無しさん
:04/09/12 08:58:47
モードレスダイアログをたくさん開いているとき、
IsDialogMessage(hwnd)をダイアログの数だけ実行するのですか?
それともNULLとかを指定すれば自動ですべてのウインドウに適用されるのでしょうか?
779
名前:
デフォルトの名無しさん
:04/09/12 12:29:53
>>777
世の中にはメッセージキューにたまらないで直接WndProcへ行くメッセージもあるからな。
(つまりGetMessageからじゃ取り出せない)
780
名前:
デフォルトの名無しさん
:04/09/12 12:43:51
>779
に先に簡潔に書かれちゃったけど,どうせ書いたから書き込んじゃえw
>777
きみはゲームで使うウィンドウを作るために RegisterClass(Ex) でウィンドウクラスを登録するだろうから
どうしても WndProc コールバック関数を書く必要がある。
それに上等なゲームなら欠かせないいくつかのメッセージは SendMessage() で送られて来る。
それらはメッセージキューにポストされるものではなく,つまり GetMessage()〜DispatchMessage() を
通過せず直接コールバックを呼ぶもののはず (だよね?少なくとも,今の時点では致命的な間違いではないはず)。
例えば WM_MOUSEACTIVATE,WM_CAPTURECHANGED,WM_ERASEBKGND,それに WM_(QUERY)ENDSESSION。
(他にも SendMessage で送られて来るものは多数)
マルチタスク環境にてユーザに親切なゲームを作りたいなら,これらのメッセージも的確に処理するべき。
781
名前:
デフォルトの名無しさん
:04/09/12 13:06:07
>760
==777
ゲームで使う色々な変数だが,グローバル変数を使うのがいやなら
構造体にまとめて SetWindowLong() で GWL_USERDATA にでも入れておけばいい。
WndProc の中で GetWindowLong() で取り出すんだ。
入れるタイミングは,そうだね,WM_NCCREATE でどうだ。
if (msg == WM_NCCREATE) {
SetWindowLong(hwnd, GWL_USERDATA, (LONG)new GameData());
return 0;
}
破棄するのは WM_DESTROY でもいいだろう。
if (msg == WM_DESTROY) {
GameData *gameData = (GameData *)GetWindowLong(hwnd, GWL_USERDATA);
delete gameData;
SetWindowLong(hwnd, GWL_USERDATA, 0); // 安全のためにな
PostQuitMessage(0);
return 0;
}
GameData が,必ず適切に処分しないといけない特殊なリソースを使っているならば
WM_ENDSESSION でも delete gameData; を忘れてはいけない。
少なくとも WM_DESTROY は送られて来ないからね。
(確か WM_CLOSE すらも送られて来なかったような。。。)
782
名前:
デフォルトの名無しさん
:04/09/12 13:38:37
>>776
神!!!!!!!!
…というより、こんな基本的なことを忘れていたモレは
いったいなんなんだろうかと小一時間。
マジで反省してきます。スレ汚しすいません。
783
名前:
760
:04/09/12 13:52:37
ありがとうございます。
>>779
そうだったのですか。それだと、あのやり方だとダメですね。
>>780
同じく、あの方法だと、より詳しく知っていないと危険ですね。
所で思ったのですが、myProg.lpfnWndProcをTitleの時ならTitleWndProc、
Fieldの時ならFieldWndProcと、ゲームルーチン切り替え時に一緒に変えれば、
コールバック先を変える事が出来るのでしょうか。
それなら、TitleWndProcにタイトルの事だけ書くことが出来、
自分の考えに近いものが出来そうなのですが。
>>781
知らないやり方でした。勉強してみます。
ただ、うまく組めば、キャラクターのHPとかのデータを、
ローカル==autoで置いて置けるので、何か悔しかったもので。
アイテムのデータとかは、グローバル、staticになるので、
その方法が使えそうです。
784
名前:
デフォルトの名無しさん
:04/09/12 14:26:53
MCIを使ってオーディオプレーヤーを作成してますが、
ミュートのプログラムの作り方がよくわかりません。
教えてください
785
名前:
デフォルトの名無しさん
:04/09/12 14:36:27
よく考えるとスレタイの「API質問箱」ってわかりにくいタイトルだよな.
テンプレに「Win32APIとはなんぞや」ぐらい書いてあった方が良いかもね.
このページへの直リンでもいいけど.
http://black.sakura.ne.jp/~third/system/winapi/win1.html
786
名前:
デフォルトの名無しさん
:04/09/12 14:41:31
宣伝はやめてください。
787
名前:
デフォルトの名無しさん
:04/09/12 14:53:56
>>786
リンク張らなければいいだけでしょ
788
名前:
デフォルトの名無しさん
:04/09/12 14:56:29
今、785にリンク貼ったこと自体が宣伝ですね。
789
名前:
デフォルトの名無しさん
:04/09/12 14:57:21
Win32APIが何かわからん奴はそもそもここに来ないだろ。
790
名前:
デフォルトの名無しさん
:04/09/12 15:00:05
>>783
> 所で思ったのですが、myProg.lpfnWndProcをTitleの時ならTitleWndProc、
> Fieldの時ならFieldWndProcと、ゲームルーチン切り替え時に一緒に変えれば、
> コールバック先を変える事が出来るのでしょうか。
SetWindowLongPtr(hwnd, GWLP_WNDPROC, FieldWndProc);でできる。
791
名前:
760
:04/09/12 15:24:57
>>790
ありがとうございます。やってみます。
792
名前:
デフォルトの名無しさん
:04/09/12 17:39:54
>>786
いやなら見なきゃいいだけでしょ。
793
名前:
デフォルトの名無しさん
:04/09/12 18:43:13
Web上のテキストファイルをファイルに保存したいのですが、
URLからメモリに取り込むところがわかりません。
CreateFileもURLでは無理みたいなので、どうしたらいいでしょうか。
794
名前:
デフォルトの名無しさん
:04/09/12 18:46:04
FileMappingを使ってプロセス間通信を行いたいのですが、
テンポラリファイルを作らないでファイルマッピングを行う場合最大サイズを指定しなければなりません。
状況によってこのサイズが極端に変わるのですが、
目いっぱい大きくとって4Gとか指定してもいいのでしょうか。
795
名前:
デフォルトの名無しさん
:04/09/12 19:11:12
>>793
ttp://nienie.com/~masapico/api_sample_inet04_c.html
796
名前:
デフォルトの名無しさん
:04/09/12 19:12:42
>>792
宣伝必死ですね
797
名前:
デフォルトの名無しさん
:04/09/12 23:30:39
リッチエディットコントロールについて質問です。
「文字列」という単語をマウスで前方からゆっくり選択していくと「文」「字列」という風に、
1文字づつ選択されずに一気に2文字や3文字が選択される事がよくあります。
これはリッチエディットのバグ(仕様)なんでしょうか?
それとも何か設定を与えると回避できるものなんでしょうか?
ワードパッドでも確認できます。
798
名前:
デフォルトの名無しさん
:04/09/12 23:36:50
クソ仕様
799
名前:
デフォルトの名無しさん
:04/09/12 23:43:32
>>797
IEでもなるよね。イライラする。
800
名前:
797
:04/09/12 23:48:02
最悪ですね。
エディットコントロールを拡張するか自作するか。
いや、今日はもう寝よう…。
801
名前:
デフォルトの名無しさん
:04/09/12 23:49:55
ワードパッドでは「単語を自動選択」のチェックで動作を変更できるから
方法はありそうな気がする
802
名前:
797
:04/09/12 23:55:46
>>801
そういやMFCのサンプルでワードパッドのソースコードありましたね。
ちとダイヴしてきます。
803
名前:
デフォルトの名無しさん
:04/09/13 00:31:30
ツリービューに LVS_EX_CHECKBOXES オプションを付けてチェックボックスを表示させたのですが
チェックボックスがチェック/解除されたタイミングを知るにはどうすればいいのでしょうか?
WM_NOTIFYにそれらしいメッセージは飛んできませんでした。
WM_NOTIFYのNM_CLICK等を拾って自分で変更があったかを確認してやるしかないのでしょうか?
804
名前:
797
:04/09/13 00:56:20
原因がつかめました。
ECO_AUTOWORDSELECTION
リッチエディットにこのオプションフラグが設定されているとテキスト選択に不具合が出るようです。
フラグが立っているようならばフラグを下げてやればいいですね。
SetOptions(ECOOP_AND, ~(DWORD)ECO_AUTOWORDSELECTION);
>>801
ヒントありがとうございました。
805
名前:
デフォルトの名無しさん
:04/09/13 01:00:38
>>803
http://www.codeproject.com/listctrl/listcheckbox.asp
WM_NOTIFYでLVN_ITEMCHANGEDが通知されるのを捕まえる
806
名前:
803
:04/09/13 01:55:53
>>805
感謝感謝!!
807
名前:
デフォルトの名無しさん
:04/09/13 09:32:00
MCIを使ってオーディオプレーヤーを作成してますが、
ミュートのプログラムの作り方がよくわかりません。
808
名前:
デフォルトの名無しさん
:04/09/13 09:33:40
そうですか
809
名前:
デフォルトの名無しさん
:04/09/13 09:39:35
ワロタ
810
名前:
デフォルトの名無しさん
:04/09/13 10:04:35
スタートメニューの終了オプションや、他のアプリケーションが
スタンバイ移行の要求をした場合に、それを止める方法は無いの
でしょうか?
電源プロパティのアイドルタイマーによるスタンバイ移行は、
SetThreadExecutionStateで止めることができるようですが、
↑のスタンバイ要求は止められないようです。
どなたか教えていただけないでしょうか。
811
名前:
デフォルトの名無しさん
:04/09/13 10:37:53
WM_POWERBROADCASTを処理する
812
名前:
デフォルトの名無しさん
:04/09/13 10:42:23
>>811
ありがとうございます。WM_POWERBROADCASTに関連したMSDNを
見てきてがんがります。
813
名前:
デフォルトの名無しさん
:04/09/13 13:59:03
入力デバイスが接続されたのを関知したいのですが、デバイスインターフェイスGUIDであるところの
GUID_CLASS_INPUTの定義がどこにあるのか判らず、困っています。
誰か教えてください。
814
名前:
デフォルトの名無しさん
:04/09/13 14:09:15
GUID_CLASS_INPUTでIncludeディレクトリをぐぐる
815
名前:
デフォルトの名無しさん
:04/09/13 14:12:54
>>814
その「ぐぐる」の使い方は始めてみた
816
名前:
デフォルトの名無しさん
:04/09/13 14:14:38
grepすると書こうと思ったら反射的に「ぐぐる」になってしまったorz
817
名前:
813
:04/09/13 16:28:57
>814
残念ながら見つかりませんでした。
Webでもググってみたんですが情報が全然ありません(辛うじてDDK関連の情報があるのみ)。
悲しいのでしばらく寝込みます。
818
名前:
デフォルトの名無しさん
:04/09/13 16:45:21
>>817
うん、DDKに入ってるヘッダ(hidclass.h,poclass.h)に定義されてる
819
名前:
デフォルトの名無しさん
:04/09/13 16:49:31
>>813
DDKのhidclass.hにて(゚∀゚)ハケーソ!!
820
名前:
デフォルトの名無しさん
:04/09/13 17:53:21
ウィンドウについてるスクロールバーの端っこの部分(三角が書いてあるところ)
っていつ描画されるんですか?
821
名前:
デフォルトの名無しさん
:04/09/13 17:57:29
描画すべきとき
822
名前:
デフォルトの名無しさん
:04/09/13 18:01:42
もしくは、スクロールバーの端の部分を再描画する方法・APIを教えてください。
SetScrollInfoだと端っこは再描画してくれません。
823
名前:
デフォルトの名無しさん
:04/09/13 18:14:53
>>822
ぜんぜん検証してないテケトーな意見だが、
ウィンドウごと再描画すればいいんじゃね?
824
名前:
813
:04/09/13 19:11:15
>818
,819
ありがとうございます。しかしDDKってWebで配布してないんですよね…
ググったときにヘッダファイルが引っ掛かっていたので、それを使ってみることにします。
825
名前:
デフォルトの名無しさん
:04/09/14 00:12:47
CreateThreadで作ったスレッド内ではCランライム関数を使ってはいけないそうですが、
newや__try __catchやSTLも使えないんでしょうか。
だめな場合wsprintfの1024バイトの壁を破る簡単な方法ってありませんか。
_beginthreadexにするのは他人が作ってる部分なので無理なんです。
826
名前:
デフォルトの名無しさん
:04/09/14 07:56:01
>825
s(n)printfするためだけにもう一個自分で_beginthread(ex)してスレッド作れば?
827
名前:
デフォルトの名無しさん
:04/09/14 09:37:22
>>825
>だめな場合wsprintfの1024バイトの壁を破る簡単な方法ってありませんか。
1行ごとに処理するとかなんとかして、そこを改善した方がヨサゲ・・・
828
名前:
デフォルトの名無しさん
:04/09/14 10:17:49
>>825
CreateThread()を使ってるアフォに_beginthreadex()を使うよう説得する。
CreateThread()と_beginthreadex()は引数の並びが同じなので、変更は楽。
(ただし、スレッドに渡す関数の型が違うのでキャストする必要がある。)
この仕様変更を受け入れるよう、きつく催促することをお薦めする。
829
名前:
デフォルトの名無しさん
:04/09/14 10:28:53
>>825
どうあってもだめな場合は、Shlwapi.hの関数群を使う。
MSDNをStrCpy StrCat などでググってみれ。
ん?それ以前に、wnsprintf()は本当にstdio.hのを使ってるのか?
同じ名前の関数が、Shlwapi.hもあるぞ。確認しる。
これらはIEのコンポーネントの一部だ。
830
名前:
デフォルトの名無しさん
:04/09/14 12:17:23
>>825
スタティック変数が他スレッドからの呼び出しで破壊される等の深刻な問題ではなく、
リソースリークを起こすだけなので気にしないで使っちゃうってのもまぁありかも。
リソースが深刻なほど少ない環境や、長期間連続稼動させてる環境で使用される
のなら考え物ですが。
831
名前:
デフォルトの名無しさん
:04/09/14 12:48:26
頭のゆるい人があらわれた!
832
名前:
デフォルトの名無しさん
:04/09/14 19:38:51
('A`)ヒロシです…
MCIを使ってオーディオプレーヤーを作成してますが、
ミュートのプログラムの作り方がよくわかりません。
('A`)ヒロシです…
833
名前:
デフォルトの名無しさん
:04/09/14 19:59:37
>>832
もうそのネタ飽きた
834
名前:
デフォルトの名無しさん
:04/09/14 20:34:55
MCIでのミュートはボリュームを下げろ。
835
名前:
デフォルトの名無しさん
:04/09/14 20:58:24
>>825
CreateThread でつくったスレッドで使っちゃいけないのは、
Cライブラリ関数の中でも、
内部的にグローバル変数を使用している一部だけ。
sprintf は問題なし。new や try〜catch も使っていい。
それに、たとえ問題になる関数を使っても
>>830
の通りなので、
常駐アプリでもない限り構わないんじゃない?
836
名前:
デフォルトの名無しさん
:04/09/14 21:07:46
>>835
スレッド毎に独立した errno を TLS に割り当てる必要があるから、
実質ほぼ全ての C ライブラリ関数がダメだったと思う。
もちろん処理系次第だけど。
837
名前:
835
:04/09/14 22:22:05
>>836
errno か、確かに言われてみれば…。
なるほど、835は取り下げます。
でもさすがに try〜catch は問題ないよね?
838
名前:
デフォルトの名無しさん
:04/09/14 22:41:24
ダメだって書いてあるんだからtry catchは使うべきではないだろ
__try __exept __finallyで代用するのがいいんじゃないの?
839
名前:
760
:04/09/14 22:49:13
>>760
です。
C+ウィンアプリを、static、グローバル変数を使わず、
手続き型っぽく作りたいと言っていたものです。
以下のプログラムはどうでしょうか。
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1086258254&res=7
>>760
のでは、
>>779-781
で、送られてこないメッセージがある等の
ご指摘を受けたのですが、そういう致命的なエラーはあるでしょうか。
>>783
>>790
のコールバック先を切り替える方法では
うまく出来なく、新しい方法を考えていました。
840
名前:
デフォルトの名無しさん
:04/09/14 22:49:56
OLE DragDropで、アプリケーション内でのドロップと
外部アプリケーションへのドロップで動作を変えたいのですが
この場合って適当なクリップボードフォーマットをでっち上げるのと、
フラグかなんかで場合分けするの、どっちがいいんでしょうか?
841
名前:
825
:04/09/15 01:37:28
皆さんレスありがとうございます。
最初は少しぐらいリークしてもいいかと思ったんですが、呼び出し毎に
新スレッド生成・終了して蓄積されていくのでちゃんと対応することにしました。
スレッド生成元を変えてもらうのは不可能なのが困りものです。
一番変更が少なそうに思いますので、sprintf系については教えていただいた
Shlwapiのを使うことにしてみます。MSDNをちょっと読んだ感じではサービスでも
使えそうですし。
842
名前:
825
:04/09/15 01:46:59
>>841
のつづきです。
__try, __except の使用はOKなのでしょうか?
libcmt.libとかをつけないとリンク時にエラーが出るので、もしかしたら
Cランタイムの一部なのかと不安だったのですが、機能的にはふつうの
ランタイム関数とは趣が異なるので大丈夫なんでしょうか。
C++のtry, catchはlibcmt.libなしでもリンクは通ったのですが、
なんか不安なのでnewやSTLも合わせて使用をやめておきます。
843
名前:
デフォルトの名無しさん
:04/09/15 03:53:21
>839
いろいろ考えるなあきみは (;´Д`) 発想の方向はちょっと間違えているけど、
きみのような人は嫌いじゃない。
たとえば WM_PAINT の時、DefWindowProc で何をやられているか、怖いな。
そのコードだと、WM_PAINT も一度 DefWindowProc を抜けた後に
きみ自身の WM_PAINT 処理を行う事になるよね。
しかし、1度の WM_PAINT で 2 度以上 BeginPaint() をしてはいけない。
さもないと思うようには描画されない。もれは経験済みだw
# いや、DefWindowProc が何をやっているか知らないから、何ともいえないけど。
そもそも、きみのコードはすでに手続き型ではなく
普通の (でも下手に喘いでいる分、滑稽な) イベントドリブンに見える。
そんなきみに漏れが一番すすめるソリューションは、大まかにこんな感じのなんだ。
LRESULT CALLBACK
WndProc (HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) {
if (g_scene == BATTLE) HandleBattle(hwnd, msg, wParam, lParam);
else if (g_scene == SELECT_ITEM) SelectItem(hwnd, msg, wParam, lParam);
return DefWindowProc(hwnd, msg, wParam, lParam);
}
HandleBattle や SelectItem の中身は
>839
のコードからメッセージポンプを外したもの。
あ、HandleBattle から SelectItem を呼び出すんじゃないよ。
代わりに g_scene = SELECT_ITEM; と書く。
844
名前:
デフォルトの名無しさん
:04/09/15 08:11:16
自前のウインドウクラスライブラリで、ダイアログを実装しようとしているのですがうまくいきません。
下のようにすると、ダイアログを閉じたときに、
なぜか親ウインドウが他の関係ないウインドウ(エクスプローラから起動したらエクスプローラウインドウの下、VisualStudioでデバッグするとVisualStudioウインドウの下)に隠れてしまいます。
TopMost属性をもたせてから解除する方法を試しましたが、一瞬ちらつきます。APIのDialogBoxより不自然です。
どうすればいいのでしょうか。
int WND::ShowDialog()
{
EnableWindow(m_hParent,false);
bool m_EndDialog=true;
MSG msg;
while (GetMessage(&msg, NULL, 0, 0) && m_EndDialog == true)
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
Hide();
EnableWindow(m_hParent,true);
return DialogResult;
}
845
名前:
760
:04/09/15 08:52:46
>>840
ありがとうございます。
>WM_PAINT の時、DefWindowProc で何をやられているか、怖いな。
>1
度の WM_PAINT で 2 度以上 BeginPaint() をしてはいけない。
そういえば。逆に、WM_PAINTが来た時、BeginPaint〜EndPaint、
DefWindowProc、両方ともを行なわなかった時も、おかしくなりますよね。
では、以下のはどうでしょうか。
while((getMsgRtn = GetMessage(&msg, NULL, 0, 0)) > 0)
{
TranslateMessage(&msg);
if(msg.message == WM_KEYDOWN && ...)
{
*item = selectItem;
break;
} else if(msg.message == WM_PAINT) {
・・・
} else
DispatchMessage(&msg);
}
>漏れが一番すすめるソリューションは、大まかにこんな感じのなんだ。
こういうタイプのも考えていました。
ただ、これだと、SelectItemに行くとき、HandleBattleのキャラデータが、
ローカルに置いておくと当然分からないから、グローバルでないといけません。
HandleBattleにキャラデータがあり、SelectItemへ行く時、スタックに積んで、
戻り値(参照渡し)でどのアイテムか戻ってくる形にしたいのです。
846
名前:
760
:04/09/15 09:16:08
又は、
>>845
のDispatchMessageに行かないのがダメなら、
以下のならどうでしょう。DispatchMessage(WndProc)に変数(useMessage)を
渡せないから、g_useMessageとグローバル変数を使ってしまいますが。
while((getMsgRtn = GetMessage(&msg, NULL, 0, 0)) > 0)
{
g_useMessage = 0; //まだゲームルーチンでメッセージを使っていない
TranslateMessage(&msg);
if(msg.message == WM_KEYDOWN && ...) {
g_useMessage = WM_KEYDOWN;
*item = selectItem;
break;
} else if(msg.message == WM_PAINT) {
g_useMessage = WM_PAINT;
・・・ }
DispatchMessage(&msg);
}
LRESULT CALLBACK WndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
if(!g_useMessage) return 0;
switch(msg)
{
case WM_DESTROY: PostQuitMessage(0); break;
default: return(DefWindowProc(hWnd, msg, wParam, lParam));
}
return (0L);
}
847
名前:
デフォルトの名無しさん
:04/09/15 09:26:52
>>846
結局普通のWndProcの使い方に近づいていってるなw
なんかゲームのデータ保持しときたいならWindowに持たせときゃいいじゃないか。
邪推だけど、意地でもWindosAPIなんかわかってやるもんかって感じがする。
848
名前:
デフォルトの名無しさん
:04/09/15 09:54:12
最初から読んでないけど、シーン管理クラス作ってループ回すのとどう違うんですか。
849
名前:
760
:04/09/15 10:19:29
>>847
>結局普通のWndProcの使い方に近づいていってるなw
始めのやり方から妥協してきているんですかね。
>ゲームのデータ保持しときたいならWindowに持たせときゃいいじゃないか。
>>781
のやり方に近いですかね。
ただ、Cのコンソールプログラムを長くやってきたせいか、変数のスコープとかに
すごくこだわっていて、使う事がない場所からは、見えないようにしたいのです。
>意地でもWindosAPIなんかわかってやるもんかって感じがする。
確かにそうですね。必要最低限なもの以外(メッセージの部分など)は、
長くやってきたコンソールっぽく書きたいというのがありました。
ただ、逆に言うと、猫、創作プログラミングの町などの一般的な書き方は、
C言語(標準C)のセオリーから大きく離れすぎていると思います。
850
名前:
デフォルトの名無しさん
:04/09/15 10:27:23
>離れすぎていると思います。
どうしてそう思うか説明できますか?
それが出来ないのなら多分あなたの感覚の方がおかしいです。
851
名前:
760
:04/09/15 10:34:04
>>848
C++は殆ど分かりません。ローベルさんの所で少しかじったぐらいです。
ただ、ググってソースを見てみた所、何となくその意味は分かりました。
うまく言えませんが、自分がコンソール風で行こうとしているのに対し、
猫とかの一般の書き方をしつつ、スコープ等も考慮するという感じでしょうか。
852
名前:
760
:04/09/15 10:44:50
>>850
セオリーと大きく書きすぎたほどの事ではないかも知れませんが、
やはりstatic、グローバル変数です。標準Cでは使う事が殆ど無いですから。
一般の書き方だと、使わないと組めないと思いました。
>>845
のやり方が大丈夫なら、ひとつも使わずに組めると思います。
853
名前:
デフォルトの名無しさん
:04/09/15 10:51:36
わからんな。
いや、わかるか。
こんなことする暇がないからC++ができたんだな。
納得したぞ。
854
名前:
デフォルトの名無しさん
:04/09/15 10:56:47
>>852
グローバル・スタティック変数なんて、
Windowsのプログラム書いてても滅多に使わないけどな・・・
普通は構造体を確保して、
そのポインタをSetWindowLongでウィンドウに関連付けるとかじゃね?
>猫、創作プログラミングの町などの一般的な書き方
サンプルはわかりやすくするために、
これらの手順を省いてるだけだと思われ
855
名前:
デフォルトの名無しさん
:04/09/15 10:59:19
>>854
C++ならそうかもしれんが、
Cだと('A`)マンドクセからけっこう使っちゃいそう。
っていうか実際使う。
856
名前:
760
:04/09/15 11:05:33
>>845
のやり方が正しいかまだ分かりませんが、何かためしに作ってみます。
そんな致命的なエラーが出るとは思わないので。
>>853
WinSDKプログラムは、C++で作る事を前提に作られているんですかね。
>>854
>サンプルはわかりやすくするために、
>これらの手順を省いてるだけだと思われ
それもあると思います。
>>855
その通りです。
857
名前:
デフォルトの名無しさん
:04/09/15 11:10:22
エクスプローラのReBarの枠やフォルダツリービューの枠のように
WS_EX_CLIENTEDGEよりもずっと薄いエッジを持ったウインドウを作るにはどうすればいいのですか
858
名前:
844
:04/09/15 11:36:04
サムワンヘルプミー
859
名前:
デフォルトの名無しさん
:04/09/15 11:37:12
ノーバディヘルプユー
860
名前:
デフォルトの名無しさん
:04/09/15 11:53:13
普通にDialogBox使えよ
861
名前:
デフォルトの名無しさん
:04/09/15 12:49:38
>>860
リソースエディタで作ったウインドウではないので、DialogBoxでは駄目なんです。
.NETのクラスライブラリのような感じなんです。
862
名前:
デフォルトの名無しさん
:04/09/15 12:59:22
Hide()は何やってるの?
863
名前:
デフォルトの名無しさん
:04/09/15 12:59:57
>>857
ナントカSTYLE_FLAT
864
名前:
デフォルトの名無しさん
:04/09/15 13:08:11
>>862
ShowWindow(m_hwnd,SW_HIDE);
こうです。m_hwndはダイアログウインドウのハンドルです。
865
名前:
デフォルトの名無しさん
:04/09/15 13:16:02
>>861
だったらDialogBoxIndirect使え。
.NETのクラスライブラリみたいなやつとかどうでもいいことは言うくせに
肝心の関連しそうな周辺コードを一切出さないのは何のつもりだ?
866
名前:
デフォルトの名無しさん
:04/09/15 13:36:59
不謹慎かもしれませんが、教えてください。
もし仮に年号が新たに変わった場合、
GetDateFormatでその新しい年号を取得するためには、
どのようにすれば良いでしょうか?
867
名前:
デフォルトの名無しさん
:04/09/15 13:43:23
>>866
WindowsUpdateするしか無いんじゃないの?
868
名前:
デフォルトの名無しさん
:04/09/15 13:55:29
>>844
Hide() するまえに親を Enable するとどうなります?
869
名前:
デフォルトの名無しさん
:04/09/15 14:01:00
>>864
SetWindowPos(m_hwnd, NULL, 0, 0, 0, 0,
SWP_HIDEWINDOW | SWP_NOACTIVATE |
SWP_NOMOVE | SWP_NOSIZE | SWP_NOZORDER);
870
名前:
デフォルトの名無しさん
:04/09/15 14:06:29
>>865
すみません本当にすみません
>>868
ご助言ありがとうございました
>>869
そうやるとできました。本当にどうもありがとうございました。
871
名前:
◆FIcNi4f8js
:04/09/15 14:09:04
>>859
三人称単数現在のsは?
872
名前:
デフォルトの名無しさん
:04/09/15 15:23:12
すいません、
CreateWindowExでWS_EX_CLIENTEDGE付きのスタティックコントロールを作って
みたのですが、この境界線の幅というのは、どうやって変えれば良いのでしょう
か?
具体的には、もっと細い境界線にしたいのですが、宜しくお願い致します。
873
名前:
デフォルトの名無しさん
:04/09/15 16:12:33
回答を無視して繰り返し質問する奴には教えない
874
名前:
デフォルトの名無しさん
:04/09/15 16:38:24
>>871
その言い方、あなたは抄録か忠一ですね
875
名前:
872
:04/09/15 16:53:40
>>873
数スレ前まで遡ってみましたが、回答らしきものが見当たらなかったので質問
したのですが…
876
名前:
デフォルトの名無しさん
:04/09/15 18:36:14
>>875
>>863
のことじゃない?
877
名前:
デフォルトの名無しさん
:04/09/15 19:06:26
マウスの移動範囲を制限できるAPIがあったと思うのですが
名前が思い出せません。どなたかご存知内でしょうか?
878
名前:
デフォルトの名無しさん
:04/09/15 19:13:51
ClipCursor
879
名前:
デフォルトの名無しさん
:04/09/15 19:47:26
>>877
http://www.google.co.jp/search?q=%E3%83%9E%E3%82%A6%E3%82%B9+%E7%A7%BB%E5%8B%95%E7%AF%84%E5%9B%B2+%E5%88%B6%E9%99%90&hl=ja&lr=lang_ja&ie=UTF-8&oe=UTF-8&sourceid=mozilla-search
880
名前:
デフォルトの名無しさん
:04/09/15 21:56:02
内容的には結局C#じゃなくてWinAPIなので、ここで質問させてもらいますね。
C#から任意のプログラムを最小化したりタスクバーから消したいのですが、
SendMessage(hWnd, Msg, wParam, lParam);をC#で書き直して
こんな感じでmyProcの内容を最小化させることが出来ました。
WindowsAPI.SendMessage(myProc.MainWindowHandle, WindowsAPI.WM_SYSCOMMAND,WindowsAPI.SC_MINIMIZE, -1);
myProcのアイコンをタスクバーからも消したいんですが、そのための関数はどんなものがありますか?
CreateWindowExというのを見つけましたが、これはWindowを作るときのものだから、僕の目的では使えませんよね。
881
名前:
デフォルトの名無しさん
:04/09/15 22:01:01
TerminateProcess
882
名前:
872
:04/09/15 22:12:17
>>876
ええっ
ぐぐることも出来無いようなレスが回答だったんですか…
本当に分からなくて困ってるんですが、もうすこしヒントを頂けませんか?
883
名前:
デフォルトの名無しさん
:04/09/15 22:19:26
VC++三日目の初心者です、APIとMFCの違いも感覚でしか理解していません
いくらでもたたいてくれて結構です
画像を加工して保存がしたいのですが
HDCで保持するのとDIBデータを扱う2つがあるのですが
この2つについての、違いをご教授願いたいのです。
884
名前:
デフォルトの名無しさん
:04/09/15 22:26:04
>>883
DIB も DDB も HDC で管理する点では同じだ。
読み込みは LoadImage でできるが、書き込みは自分で関数書くことになる。
詳しく説明しようとすると、ここにまんまソース晒すことになるんでやめとくが、
キーワード出しとくから、がんばってみな。
BMP形式のファイルは先頭から
BITMAPFILEHEADER 構造体
BITMAPINFOHEADER 構造体
色値の配列(型は色数によって異なる)
という形式になっている。
ファイルの取り扱いはAPIならCreateFile、MFCならSerializeかCFileだ。
885
名前:
デフォルトの名無しさん
:04/09/15 22:44:22
>>880
を要約すると
CreateWindowExにWS_EX_TOOLWINDOWを渡すのは、
外部から操作するのには使えなさそうだから、別の方法を教えてください
ということです。お願いします。
886
名前:
デフォルトの名無しさん
:04/09/15 22:48:14
HideWindow?
887
名前:
デフォルトの名無しさん
:04/09/15 23:17:10
>>885
SetWindowLongで出来るのかどうかオレにはわからない。
あとはアレだな、最小化アイコン専用のウィンドウを
つくって、本物ウィンドウと連携させるとか。
888
名前:
デフォルトの名無しさん
:04/09/15 23:52:15
プロセスを終了することなく親ウィンドウを閉じて作り直すこのって
どうゆう手順になりますか?
889
名前:
デフォルトの名無しさん
:04/09/15 23:55:54
>>888
あなたの定義で、親ウインドウとは?
890
名前:
デフォルトの名無しさん
:04/09/15 23:58:36
>>888
そういうことが出来る造りにしておく。
他プロセスのウィンドウの話なら、基本的に無理。
891
名前:
デフォルトの名無しさん
:04/09/16 00:02:45
>>889
最初に開いたウィンドウのことです。
>>890
自プロセスでやるならどういった準備が必要になるのでしょうか?
892
名前:
デフォルトの名無しさん
:04/09/16 00:08:15
>>891
つまり、あなたのアプリではあらゆるウインドウが全て
WM_DESTROY に対して PostQuitMessage を発行するわけか
893
名前:
デフォルトの名無しさん
:04/09/16 02:01:13
>>882
Googleだけが調べる方法じゃないでしょ。
WS_EX_CLIENTEDGEが定義されているヘッダファイルから、なんとかFLATを
GREPするとか。
894
名前:
デフォルトの名無しさん
:04/09/16 02:33:22
アプリの多重起動を防ぐ為にCreateMutexするところまではわかったんですが
Mutexの名前をシステム内で一意にする方法はありますか?
適当な名前を引数にすると他のアプリと衝突しそうな気がするんですが・・
895
名前:
デフォルトの名無しさん
:04/09/16 02:49:01
GUID使うとかは?
896
名前:
デフォルトの名無しさん
:04/09/16 02:59:41
>>895
みんながそうしているならそれでいいんだがね
897
名前:
デフォルトの名無しさん
:04/09/16 07:18:11
exeへのフルパス
898
名前:
デフォルトの名無しさん
:04/09/16 08:35:07
リストビューについてなんですが、
もしかして隠しカラムを設定できますか?
MSDN見ても書いてないから無理なのかなぁ
LVCOLUMNのcxに0設定して擬似的にするしかありませんね?
899
名前:
デフォルトの名無しさん
:04/09/16 08:42:06
むかつく
900
名前:
デフォルトの名無しさん
:04/09/16 08:44:35
>>897
>>896
901
名前:
デフォルトの名無しさん
:04/09/16 09:01:36
空から星が落ちてきて直撃しそうで怖いんですがどうしましょう?
っていう質問と似てるな。
902
名前:
デフォルトの名無しさん
:04/09/16 09:05:46
゚・(つд`)・゚・
903
名前:
デフォルトの名無しさん
:04/09/16 09:20:21
とりあえず日本語(全角文字)使っとけ、くそども。
「ぬるぽ....」でもなんでもOK。バックスラッシュ以外はすべてOK。
Windowsは内部的には文字列リソースをUnicodeで持つので、
海外のアプリと衝突することはかなり回避できるはずだ。
904
名前:
デフォルトの名無しさん
:04/09/16 09:28:51
>Windowsは内部的には文字列リソースをUnicodeで持つので、
これと
>海外のアプリと衝突することはかなり回避できるはずだ。
これは何の関係があるの?
905
名前:
デフォルトの名無しさん
:04/09/16 09:29:46
というかほんとに適当に16文字くらい使えば衝突しないと思うけど。
何を指定したって確率の問題じゃないですかー。
906
名前:
デフォルトの名無しさん
:04/09/16 09:32:28
完全に回避することができない。たんなる確率の問題だから、星の直撃の心配
と同じ。偶然の一致を避けるような工夫をできるだけするしかない。ながーい文字列
とか、exe のフルパスもかなりいい感じだと思うけどな
907
名前:
デフォルトの名無しさん
:04/09/16 09:43:18
でも、exeのフルパスだとコピーされたら多重起動ができる。
抜け道が簡単に出来ちゃうからダメだと思うよ。
大型アプリなら問題ないかもしれないけど…
908
名前:
デフォルトの名無しさん
:04/09/16 09:48:11
>>907
セキュリティーに関連するような大事なハンドルを
デフォルトSID(=NULL)で作成する時点で駄目駄目でしょ。
親プロセスが全ての重要ハンドルを作成し、
明確に子プロセス以外アクセスできないようにするのが普通だと思う。
909
名前:
デフォルトの名無しさん
:04/09/16 10:09:09
>>908
Mutex作る時に使うオブジェクトの名前が違う事になるから、
違うハンドルを作ってしまうって事では?
これについてはセキュリティ関係ないのでは…?
910
名前:
デフォルトの名無しさん
:04/09/16 10:19:20
>でも、exeのフルパスだとコピーされたら多重起動ができる。
そうだね。VBのだとそういう振る舞いをするんだそうだ。
lihvwdghwelkihvwrhweruhakjabhojwejjw
こういう文字列を使った場合、偶然に一致するアプリがあるかも、って心配は
まぁ、したけりゃしてもいいけどな。
911
名前:
デフォルトの名無しさん
:04/09/16 11:13:42
>>896
>>900
こっちがユニークなら、皆どうだろうと関係ないんじゃない?
912
名前:
デフォルトの名無しさん
:04/09/16 11:16:02
ユニークかどうかはほかが同じことしてないかどうかに関係する
913
名前:
デフォルトの名無しさん
:04/09/16 12:23:41
悪意を持って多重起動の判断を混乱させようとしているのでない限り
「GUIDに見える(けどuuidgenで生成したものではない)文字列」とか
「他のexeのフルパスに見える文字列」
をわざわざ使うとは思えないんだけど
914
名前:
デフォルトの名無しさん
:04/09/16 13:02:06
悪意か善意かは問題ではない。ある演算なり、一定の規則(フルパスやGUIDもこれに入る)
を採用して文字列を取得した場合と、まったくでたらめな文字列の場合、一致する確率が
どっちが低いか、を考えるべき。exe のフルパスの場合は、異なるアプリ間で偶然一致する
のは考えづらいけど、他のディレクトリにコピーされた同じexeが二重起動される。これは
かなり現実的な問題ではある。
915
名前:
デフォルトの名無しさん
:04/09/16 13:06:38
そもそもなんで多重起動を抑止したいのかって理由にもよるだろ。
916
名前:
デフォルトの名無しさん
:04/09/16 13:08:15
二重起動を抑止したい理由と、名前付き Mutex の名前がユニークかどうかは関係ない
917
名前:
デフォルトの名無しさん
:04/09/16 13:09:28
>>892
PostQuitMessageをスローしないだけで済むのですね(^^;
どうもでした。
918
名前:
デフォルトの名無しさん
:04/09/16 14:25:19
>>914
本当にまったくでたらめじゃ確かに一致しない確率は最高だろうけど
自分の別インスタンスとも一致しないから多重起動の判定に使えない。
最低でも多重起動のチェックができる程度の何らかの規則は
導入しなくてはならない。問題はその規則が(他の規則を採用している
かもしれない文字列も含めて)偶然一致する可能性をどれだけ
減らせるか。
919
名前:
デフォルトの名無しさん
:04/09/16 14:39:55
>自分の別インスタンスとも一致しないから多重起動の判定に使えない。
何いってるの?
920
名前:
デフォルトの名無しさん
:04/09/16 14:41:21
>>918
すこしは頭使えよ
921
名前:
デフォルトの名無しさん
:04/09/16 14:42:24
>>918
はGUIDを毎回生成するとでも勘違いしてるんじゃないのか
922
名前:
922
:04/09/16 15:04:56
IHTMLDocument等のHTMLに関わる
インターフェイスを使用しています。
現段階では、ActiveXのWebBrowserから
IHTMLDocumentを取得しているのですが、
ブラウザを介さず、
URLまたはHTMLテキストから
直接IHTMLDocumentを
取得したいのですが、
そのあたりの方法があれば教えて下さい。
923
名前:
デフォルトの名無しさん
:04/09/16 15:08:44
簡単なのは WinInet のAPI使うのだな。ググルといっぱいサンプルが見つかるはず。
924
名前:
デフォルトの名無しさん
:04/09/16 15:09:35
>直接IHTMLDocumentを取得したいのですが、
あっ、勘違い、すまん
925
名前:
デフォルトの名無しさん
:04/09/16 15:13:23
SetTimerで、引数のID所で0、又は既に使われているIDを指定すると、
戻り値で空いているIDが返ってきて、それを使うという事を出来るのでしょうか。
926
名前:
デフォルトの名無しさん
:04/09/16 15:15:58
どこをどう読めばそうゆう解釈が
927
名前:
925
:04/09/16 15:20:07
>>926
ありがとうございます。やっぱできないのですね。
その方法が使えれば、IDをEnumなどに定義しておかなくても、
ちょこっと使いたいときに楽かなと思いまして。
928
名前:
デフォルトの名無しさん
:04/09/16 16:18:12
>>893
うそ教えるな。問題のスタイルはCCS_*だから、標準的なスタイルには用意されてなくて
自前で描画するしかない。
929
名前:
デフォルトの名無しさん
:04/09/16 16:34:31
>>922
mfc スレでちょっと前に (レス720前後) 同じ質問にと答えた記憶あるんだけど、
あれじゃあうまくいかなかった?
930
名前:
デフォルトの名無しさん
:04/09/16 19:26:24
ローカルにあるプロセス間で通信をするのに今はソケットを使っているのですが
帯域がボトルネックになっているので改善方法を探しています。
名前つきパイプやメモリマップドファイルを使うことでパフォーマンスの向上は
のぞめますか?ストリームのようにデータを転送するのでメモリマップドファイル
にする場合は何かの方法で同期を取る必要があると思います。
931
名前:
デフォルトの名無しさん
:04/09/16 19:39:57
そのままにしておいた方が、ポテンシャル高くて後々おいしいような。
932
名前:
デフォルトの名無しさん
:04/09/16 19:49:54
ボトルネックになってるんだったらしゃーないような。
でも、プロセス巻通信がそんなに頻繁に起こるならいっそプロセス統合した方がよくないか?
933
名前:
デフォルトの名無しさん
:04/09/16 21:58:05
.NET Framework 1.1を使うアプリを公開したいのですが、
.NETのCLRがインストールされているか調べるにはどうしたらいいですか?
934
名前:
デフォルトの名無しさん
:04/09/16 22:10:45
>>933
漏れは VS .Net のウィザードで作ったインストーラプロジェクトの
インストーラでチェックしてるけど、API でチェックしたいってこと?
935
名前:
933
:04/09/16 22:51:59
>>934
そうです。
936
名前:
デフォルトの名無しさん
:04/09/16 23:42:33
レジストリを見るんじゃないの
937
名前:
デフォルトの名無しさん
:04/09/17 13:01:15
VC++6.0を使っています。
iphlpapi.hをインクルードしたいのですが
このファイルが無いようです。
どこから拾ってくればよいでしょうか?
938
名前:
デフォルトの名無しさん
:04/09/17 13:07:23
>>937
>>2
939
名前:
デフォルトの名無しさん
:04/09/17 16:20:34
>>934
レジストリ見るプログラムは何で作るの?
CLRに対応してるか確認するプログラムは
CLRを使う.NETじゃ書けないってことなのかな.
.NETって面倒だね.
940
名前:
デフォルトの名無しさん
:04/09/17 16:40:17
…( ゚Д゚)ポカーン
941
名前:
デフォルトの名無しさん
:04/09/17 17:18:58
駐在型ソフトだと、タスクバーから表示を消して、タスクトレイにアイコンを表示していますよね?
これをするにはどうしたら良いですか?
942
名前:
デフォルトの名無しさん
:04/09/17 17:24:33
駐在型?
943
名前:
デフォルトの名無しさん
:04/09/17 17:26:32
ウインドウを消してタスクトレイにアイコンを登録する。
944
名前:
デフォルトの名無しさん
:04/09/17 19:08:21
そのウィンドウの消し方教えてくださいよー ヽ(`Д´)ノ ウワワーン
945
名前:
デフォルトの名無しさん
:04/09/17 19:09:38
DestroyWindow
946
名前:
デフォルトの名無しさん
:04/09/17 19:17:25
ShowWindow
947
名前:
デフォルトの名無しさん
:04/09/17 20:39:07
ウインドウ非表示の方法ぐらい
知っててくださいよー ヽ(`Д´)ノ ウワワーン
948
名前:
デフォルトの名無しさん
:04/09/17 21:10:47
スタートボタンで終了したり、ShowWindow でウィンドウを消したりさせるマイクロソフトが悪い
949
名前:
デフォルトの名無しさん
:04/09/17 21:18:22
馬鹿は何でもMSのせいにするからなぁ w
950
名前:
デフォルトの名無しさん
:04/09/17 21:25:11
なんでもすぐ人のせいにするのは無能の典型
951
名前:
デフォルトの名無しさん
:04/09/17 21:43:15
>>950
勧告陣に言ってくださいw
次スレ〜たてて
952
名前:
テンプレ1
:04/09/18 04:00:01
- 過去スレ
Build22:
http://pc5.2ch.net/test/read.cgi/tech/1092524669/
Build21:
http://pc5.2ch.net/test/read.cgi/tech/1090422324/
Build20:
http://pc5.2ch.net/test/read.cgi/tech/1088140233/
Build19:
http://pc5.2ch.net/test/read.cgi/tech/1084697545/
Build18:
http://pc5.2ch.net/test/read.cgi/tech/1081702990/
Build17:
http://pc5.2ch.net/test/read.cgi/tech/1077470361/
Build16:
http://pc2.2ch.net/test/read.cgi/tech/1073830065/
★
Build15:
http://pc2.2ch.net/test/read.cgi/tech/1069339866/
★
Build14:
http://pc5.2ch.net/tech/kako/1065/10653/1065328397.html
Build13:
http://pc5.2ch.net/tech/kako/1059/10595/1059549320.html
Build12:
http://pc5.2ch.net/tech/kako/1056/10560/1056033645.html
Build11:
http://pc5.2ch.net/tech/kako/1052/10526/1052651750.html
Build10:
http://pc5.2ch.net/tech/kako/1047/10478/1047819779.html
Build9:
http://pc5.2ch.net/tech/kako/1044/10449/1044929160.html
Build8:
http://pc5.2ch.net/tech/kako/1040/10409/1040964626.html
Build7:
http://pc3.2ch.net/tech/kako/1036/10366/1036654893.html
Build6:
http://pc3.2ch.net/tech/kako/1032/10325/1032548635.html
Build5:
http://pc3.2ch.net/tech/kako/1028/10285/1028580373.html
Build4:
http://pc3.2ch.net/tech/kako/1023/10233/1023361418.html
Build3:
http://pc.2ch.net/tech/kako/1017/10170/1017072275.html
Build2:
http://pc.2ch.net/tech/kako/1006/10067/1006783012.html
Build1:
http://pc.2ch.net/tech/kako/991/991576947.html
(★は「いやー ごめんなさい。」に巻き込まれた模様
953
名前:
デフォルトの名無しさん
:04/09/18 11:31:50
難民のあれか・・・。
どこかにミラーが残ってないかな?
954
名前:
デフォルトの名無しさん
:04/09/18 14:14:10
part15のログなら1000まで持ってるが
955
名前:
デフォルトの名無しさん
:04/09/18 14:25:23
part16のログなら1000まで持ってるが
956
名前:
デフォルトの名無しさん
:04/09/18 14:28:06
( ´_ゝ`)フーン
957
名前:
デフォルトの名無しさん
:04/09/18 14:32:39
part22のログなら1002まで持ってるが
958
名前:
デフォルトの名無しさん
:04/09/18 14:38:02
ウィンドウのどの位置にマウスポインタがあるか調べる方法を教えてください。
調べると、GetCursorPosをして、ClientToScreenで変換するとあったのですが、
ウィンドウの位置でなく、ディスプレイの位置のなのか、正しく調べられません。
959
名前:
デフォルトの名無しさん
:04/09/18 14:51:08
>>958
そこはClientToScreenじゃなくてScreenToClientじゃないか。
960
名前:
958
:04/09/18 14:55:48
>>959
ホントだ。逆の方を使っていました。
ありがとうございました。
961
名前:
デフォルトの名無しさん
:04/09/18 15:07:52
自分がつくったステータスバー(CreateStatusBarで作成)は、マウスを
うえにのせてもなにもメッセージをうけとったり、送信したりしないのに、
そのへんのアプリケーションのステータスバーはwm_nchittestを送信した
あとにいろいろやっています。それもどのアプリも大体共通した動作。
(メッセージのやりとりはspy++で見ました)
自分がつくったステータスバーにおいてもこれを実現するためには何を
すればいいのでしょうか?
962
名前:
933
:04/09/18 16:12:05
933です。
%windir%\system32\mscoree.dllのバージョンが1.1以上だったら
.NET Framework1.1がインストールされているされていると考えてよいのでしょうか。
Win32APIな話題からそれていますが、ほかの環境ではどうなのか知りたいのでお願いします。(当方WinXPSP2)
963
名前:
デフォルトの名無しさん
:04/09/18 16:21:39
>>961
サブクラス化しなさいよ
964
名前:
デフォルトの名無しさん
:04/09/18 16:43:36
パート15と16持ってる人いる?
うpってもらえれば、
>>1
のテンプレに追加して書いたり
965
名前:
デフォルトの名無しさん
:04/09/18 16:46:23
そのファイルだけコピーされてたらどうすんの?
966
名前:
デフォルトの名無しさん
:04/09/18 16:47:19
>>964
両方あるけど、Janeのログだから手を加えないとだめだよね?
967
名前:
デフォルトの名無しさん
:04/09/18 16:50:52
>>964
うぷろだにうぷっただけじゃすぐ消えちゃうよ
968
名前:
964
:04/09/18 16:54:10
2ch系のどっかのサイトが、基本的に消さないとかいう方針のうpロダがあったんだけど…
たしか、FLASH系サイトをまとめてるやつ
>>966
HTML化したほうがよさげ。
ttp://tatsu01.at.infoseek.co.jp/
969
名前:
デフォルトの名無しさん
:04/09/18 17:05:08
ほい。
ttp://up.isp.2ch.net/up/87d091951909.zip
当然すぐ繋がらなくなるから、誰か転載よろしく。
970
名前:
964
:04/09/18 17:42:02
15
ttp://saba.haiiro.info/uploader/file/0587.html
16
ttp://saba.haiiro.info/uploader/file/0588.html
使おうと思ってた、with2chはお休み中だった(つд`)
971
名前:
ほんたま
:04/09/18 19:33:36
WideCharToMultiByteを使って、unicodeをsift-jisに変えると、漢字などはちゃんと変換されるんですが、半角英数を変換すると文字化けするんですが…?
みなみなさまがた〜教えてくだされ〜♪
972
名前:
デフォルトの名無しさん
:04/09/18 19:39:20
沢村の新コテか
973
名前:
デフォルトの名無しさん
:04/09/18 19:50:31
文字化けするんですが…?
ってのはどこが質問なのかな
まあ、普通はそんなことにならないので答えようも無いが。
974
名前:
ろろ
:04/09/18 20:34:31
>>971
さん
WideCharToMultiByte のオプションがまずいのではないかな?
どんなふうに呼び出しているの?
975
名前:
デフォルトの名無しさん
:04/09/19 01:28:31
プッシュボタンコントロールの外観を、
テキストではなくBMPにすることはできますでしょうか?
976
名前:
デフォルトの名無しさん
:04/09/19 01:59:23
出来ます。
977
名前:
デフォルトの名無しさん
:04/09/19 02:05:03
>>976
ありがとうございました。頑張ってみます。
978
名前:
ほんたま
:04/09/19 02:11:11
>>975
おみゃ〜よ、オナードローボタンにすればいいよ。
つくりかたは「猫でも…」に書いてあるよ。自分じわかる?
>>974
WideCharToMultiByte(CP_ACP,0,(unsigned short *)pctext,tempsize2,temptext,tpsize2-1,NULL,NULL);
というふうに呼び出しています。
pctextとtemptextはchar型の文字列です。
まずファイルのunicode文字をpctextに1字1字バイナリコピーします。
半角英数の「OK」なら「4F 00 6B 00」というのがその値です。
この時点で、pctextの内容を画面に表示してみると、unicode文字なのにすでに「ok」と表示されます。
でもこれを上のapiを使ってsift-jisに変換してからtemptextを表示すると、何故か「?」と文字化けして表示されるのです。
漢字や半角カタカナを変換する場合はまったく問題ないのですが…?
979
名前:
デフォルトの名無しさん
:04/09/19 02:18:52
S-JISのコードページはCP_ACP?
980
名前:
デフォルトの名無しさん
:04/09/19 02:18:55
そうですか。
981
名前:
デフォルトの名無しさん
:04/09/19 02:38:11
自己解決しました。
982
名前:
ほんたま
:04/09/19 02:38:58
「ok大下容子」という文字列の場合、
変換前のunicode文字列を表示すると「ok'Y・Nケ[P[」になり、
変換後のsift-jisを表示すると「?大下容子」になります。
つまり半角英数は変換前のほうがちゃんと表示され、漢字は変換後にちゃんと表示されます…?
みなみなさまがた〜教えて〜♪
983
名前:
デフォルトの名無しさん
:04/09/19 02:53:41
だから、普通はそんなことにならないから。
というわけで、終了
984
名前:
デフォルトの名無しさん
:04/09/19 02:55:56
>>978
tmpsize2, tpsize2 とかの実際の値はどーなってる?
WideCharToMutiByte() の返り値は?
日本語 Windows なら CP_ACP で問題はないです。
985
名前:
ほんたま
:04/09/19 02:59:54
勘違いでした。
エヘ♥
986
名前:
デフォルトの名無しさん
:04/09/19 03:04:15
他のアプリのボタンを押したいのですが
ツールバーの中にあるボタンのウィンドウハンドルはどうやったら取得できますか?
987
名前:
デフォルトの名無しさん
:04/09/19 03:05:05
wchar_t unitext[] = L"ok大下容子";
std::vector<char> tmp;
tmp.resize(::WideCharToMultiByte(CP_ACP, 0, unitext, -1, NULL, 0, NULL, NULL));
::WideCharToMultiByte(CP_ACP, 0, unitext, -1, &tmp[0], tmp.size(), NULL, NULL);
もんだいねぇけど。
988
名前:
デフォルトの名無しさん
:04/09/19 03:05:35
>>986
ありません
989
名前:
デフォルトの名無しさん
:04/09/19 03:09:49
ないですか
座標で押すのかな
位置が変わったりしないんだろうか
990
名前:
デフォルトの名無しさん
:04/09/19 03:13:11
あります
991
名前:
デフォルトの名無しさん
:04/09/19 03:19:08
>>989
座標からアイテムの情報が分かるから、
それを拾ってツールバーの親にメッセージを投げてやればいい。
992
名前:
デフォルトの名無しさん
:04/09/19 03:23:44
thx
そのやりかたであたってみます
993
名前:
デフォルトの名無しさん
:04/09/19 03:29:55
どうやってテキストを表示していますか?UTF-16LEだと最初の1オクテットには
oとkが含まれているので0x00を無視するような方法で出力してればokって文字列が
最初に見える。
そうじゃないのに「ok'Y・Nケ[P[」っていうのが見えるならファイル読み込みの部分
で「4F 00 6B 00」を「4F 6B」にしちゃってる。
994
名前:
デフォルトの名無しさん
:04/09/19 03:37:32
wifstreamを使ってないとか
ifstreamでバイナリモードにせずに読んでるとか
そんなとこじゃないの
995
名前:
デフォルトの名無しさん
:04/09/19 03:46:45
しかし沢村は相変わらずのズレっぷりだな
996
名前:
デフォルトの名無しさん
:04/09/19 04:00:35
次スレまだ〜?
997
名前:
デフォルトの名無しさん
:04/09/19 04:02:04
まだ
998
名前:
デフォルトの名無しさん
:04/09/19 04:02:20
埋めちゃうよ?
999
名前:
デフォルトの名無しさん
:04/09/19 04:09:06
だめ
1000
名前:
デフォルトの名無しさん
:04/09/19 04:09:35
1000
■過去ログ置き場に戻る■
1-
前250
次250
最新50
DAT2HTML
0.33f Converted.