Win32API質問箱 Build31
レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん
2005/04/29(金) 17:09:54やさしいお兄さんたちが答えてくれるかも。
∧_∧
( ´∀`) < ぬるぽ
過去スレ、関連リンクは>>3くらい。
■注意
・質問する前にMSDNライブラリやPlatformSDK、Google等で検索しましょう
・日本語版MSDN Online Libraryは不完全です。英語版(http://msdn.microsoft.com)の利用推奨
・APIフックなど高度な事をしたい場合はできるだけAdvenced Windowsを読みましょう
・言語特有の問題やIDE、MFCやVCLなどの質問はそれぞれの言語や開発環境スレで
0002デフォルトの名無しさん
2005/04/29(金) 17:10:04と ) | |
Y /ノ 人
/ ) < >__∧∩
_/し' //. V`Д´)/
(_フ彡 / ←>>1
0003デフォルトの名無しさん
2005/04/29(金) 17:10:24Build30: http://pc8.2ch.net/test/read.cgi/tech/1112345886/
Build29: ttp://pc8.2ch.net/test/read.cgi/tech/1110281860/
Build28:ttp://pc5.2ch.net/test/read.cgi/tech/1108199304/
Build27:ttp://pc5.2ch.net/test/read.cgi/tech/1106103119/
Build26:ttp://pc5.2ch.net/test/read.cgi/tech/1104109858/
Build25:ttp://pc5.2ch.net/test/read.cgi/tech/1101393155/
Build24:ttp://pc5.2ch.net/test/read.cgi/tech/1098967135/
Build23:ttp://pc5.2ch.net/test/read.cgi/tech/1095534704/
Build22:ttp://pc5.2ch.net/test/read.cgi/tech/1092524669/
Build21:ttp://pc5.2ch.net/test/read.cgi/tech/1090422324/
Build20:ttp://pc5.2ch.net/test/read.cgi/tech/1088140233/
Build19:ttp://pc5.2ch.net/test/read.cgi/tech/1084697545/
Build18:ttp://pc5.2ch.net/test/read.cgi/tech/1081702990/
Build17:ttp://pc5.2ch.net/test/read.cgi/tech/1077470361/
Build16:ttp://pc2.2ch.net/test/read.cgi/tech/1073830065/★
Build15:ttp://pc2.2ch.net/test/read.cgi/tech/1069339866/★
Build14:ttp://pc5.2ch.net/tech/kako/1065/10653/1065328397.html
Build13:ttp://pc5.2ch.net/tech/kako/1059/10595/1059549320.html
Build12:ttp://pc5.2ch.net/tech/kako/1056/10560/1056033645.html
Build11:ttp://pc5.2ch.net/tech/kako/1052/10526/1052651750.html
Build10:ttp://pc5.2ch.net/tech/kako/1047/10478/1047819779.html
Build9:ttp://pc5.2ch.net/tech/kako/1044/10449/1044929160.html
Build8:ttp://pc5.2ch.net/tech/kako/1040/10409/1040964626.html
Build7:ttp://pc3.2ch.net/tech/kako/1036/10366/1036654893.html
Build6:ttp://pc3.2ch.net/tech/kako/1032/10325/1032548635.html
Build5:ttp://pc3.2ch.net/tech/kako/1028/10285/1028580373.html
Build4:ttp://pc3.2ch.net/tech/kako/1023/10233/1023361418.html
Build3:ttp://pc.2ch.net/tech/kako/1017/10170/1017072275.html
Build2:ttp://pc.2ch.net/tech/kako/1006/10067/1006783012.html
Build1:ttp://pc.2ch.net/tech/kako/991/991576947.html
(★は「いやーごめんなさい。」に巻き込まれた模様
0004デフォルトの名無しさん
2005/04/29(金) 17:13:16http://www.microsoft.com/japan/msdn/
- 猫でもわかるプログラミング
http://www.kumei.ne.jp/c_lang/
- Platform SDK Update
http://www.microsoft.com/msdownload/platformsdk/sdkupdate/
http://www.google.com/
Win32 API入門
http://wisdom.sakura.ne.jp/system/winapi/
Win32 プログラミング入門
http://www7.plala.or.jp/keny01/windows/win32/
Win32 SDK Programming
http://usr_vogel.at.infoseek.co.jp/Win32SDK/
■書籍
Advanced Windows
http://www.amazon.co.jp/exec/obidos/ASIN/4756138055
0005デフォルトの名無しさん
2005/04/29(金) 17:14:390006デフォルトの名無しさん
2005/04/29(金) 17:35:21ワロタ
0007デフォルトの名無しさん
2005/04/29(金) 17:56:0710 秒かよ
0008デフォルトの名無しさん
2005/04/29(金) 18:06:30これはテンプレ入りだな。
0009デフォルトの名無しさん
2005/04/30(土) 00:54:040010前スレ796
2005/04/30(土) 05:04:12ご紹介のページを参考に、ReadProcessMemory()で、ゲームの、デフォルト?セグメントにはアクセスできましたが・・・
アク禁のエリアが所々あって、適当なアドレスでアクセスしようとするとすぐ不正な処理エラーが出ます。
それと、やはりプログラムが取得したセグメントは一般には一つではないですよね・・・
やはりOSのメモリ管理情報からこうした情報を取得しなければならない、と思いますが・・・
色々実験したところ、プログラムの起動直後には、レジスタFSに、何かの管理情報が書いてあるセグメントがセットされているようですが・・・自分のじゃないので簡単にはとれないし・・・
0011デフォルトの名無しさん
2005/04/30(土) 05:47:30だからして俺はXPが出たあとでもMEを使ってる時代があった
NT系は堅い
0012デフォルトの名無しさん
2005/04/30(土) 09:20:55だろ。相手にすることないよ。
0013前スレ796
2005/04/30(土) 10:43:11??前スレでも別に普通に相手されてましたが???
0014デフォルトの名無しさん
2005/04/30(土) 10:49:14シャアウェアをインストロールしたらレジスターが
書き換えられてディスクトップがぐちゃぐちゃになって、
エキスプローラでホルダーをクィックしても動かなく
なってしまいました。どうすればレジスターを修復で
きますか? ソフトはWindous95で機種はBMWの
アクティバです。接続環境はフレッシュISBNです。
ヤッホーやゴーグルなどの検索で調べても解らないので
ツーチャンネルの皆様、ご指導よろしくお願いします。
0015デフォルトの名無しさん
2005/04/30(土) 10:54:26まず、お前自身のスピードを3倍にするところから始めるんだ。
0016デフォルトの名無しさん
2005/04/30(土) 10:55:520017デフォルトの名無しさん
2005/04/30(土) 11:22:48だから、ゲームのチートツール作りならこんなところで質問してないでゲ製に引っ込んでろって。
つーか、前スレ使い切れよ。
0018デフォルトの名無しさん
2005/04/30(土) 12:54:300019デフォルトの名無しさん
2005/04/30(土) 13:16:39ネタ?
0020デフォルトの名無しさん
2005/04/30(土) 13:33:00明らかにネタ。本人は否定するだろうが。
0021デフォルトの名無しさん
2005/04/30(土) 19:26:250022デフォルトの名無しさん
2005/04/30(土) 19:44:090023デフォルトの名無しさん
2005/04/30(土) 19:49:290024デフォルトの名無しさん
2005/04/30(土) 19:56:33あるじゃん
0025デフォルトの名無しさん
2005/04/30(土) 20:14:30http://members.at.infoseek.co.jp/zzyyb/hack/winhack.html#Env
002622
2005/04/30(土) 20:39:02でもできることはできるっぽいんでやってみます。
0027デフォルトの名無しさん
2005/04/30(土) 20:48:41002822
2005/04/30(土) 20:56:470029デフォルトの名無しさん
2005/04/30(土) 21:57:28出来ないわけがない。
0030デフォルトの名無しさん
2005/04/30(土) 22:23:58Ctrl+Rで右揃えになったり、Ctrl+Vで違う書式のテキストが張り付いたりして気持ち悪い。
リッチエディット(2.0)のすべてのキーボードショートカットを無効にするのってどうしたらいい?
0031デフォルトの名無しさん
2005/04/30(土) 22:43:260032デフォルトの名無しさん
2005/04/30(土) 22:43:49GetEnvironmentStrings一発で取れますよ。
>>10
俺も普通に相手してあげるよ。
ReadProcessMemory()でOK。
APIがダメなのではなく、お前さんの使い方が悪いんじゃないかな。
まぁその質問の仕方では、相手にされにくいわな。
0033デフォルトの名無しさん
2005/05/01(日) 00:39:410034デフォルトの名無しさん
2005/05/01(日) 04:54:18使っているDLL(tar32.dll)に直接コマンドを送ったあと、
そのDLLは「結果を標準出力に出力している」、というのですが、
どこかに書き込んでいる様子は見えても
CUIでないせいで何もおきず、 " > "をつけてみたり"
SETSTDHANDLEを使って標準出力をファイルに変えてみても
取り出せませんでした。何か取り出す方法がありましたら
アドバイスお願いします。
0035デフォルトの名無しさん
2005/05/01(日) 05:01:48{
return WinMain(GetModuleHandle(NULL), 0, "", 0);
}
0036デフォルトの名無しさん
2005/05/01(日) 05:56:41tar32.dllが標準出力に出力?何か勘違いしてないか?
0037デフォルトの名無しさん
2005/05/01(日) 06:09:21ファイルを個別出力させるときに他のDLLと違ってファイルへの出力がなくて
標準出力への展開(-p オプション)だけになってしまうみたいで
http://openlab.jp/tsuneo/soft/tar32_1/old/tar32_1/SDK/TAR32SDK.TXT
http://openlab.jp/tsuneo/soft/tar32_2/tar32_2/sdk/Tar_cmd.txt
これしか-pオプションに関する説明がないし
APIにも無いのでDLLの標準出力をファイルハンドルにあわせるしか
ないかと思ったんですが それもダメで・・
0038デフォルトの名無しさん
2005/05/01(日) 07:53:36-xだけ指定すればファイルへ出力してくれそうに読めるが。
0039デフォルトの名無しさん
2005/05/01(日) 09:12:14> -p
> アーカイブ中のファイルを標準出力(バッファ)に展開します。
これ、実際にはTar() の最後の引数で指定したメモリに出力される。
0040デフォルトの名無しさん
2005/05/01(日) 15:31:30CreateFile()やSetFilePointer()等を使って、標準関数のfgets()のような
一行読み込みをする関数を作っているのですが、なかなかうまくいきません。
よければヒントだけでも教えてくれませんか?
環境は
OS : Windows2000
コンパイラ : VC6
です。
0041デフォルトの名無しさん
2005/05/01(日) 15:41:40004240
2005/05/01(日) 15:51:19while文でSetFilePointer()を使って一つずつポインタを進めていきながら、
ReadFile()で1バイトずつ文字を読み込んでいくような感じで書いているのですが
どうも上手くいきません。
0043デフォルトの名無しさん
2005/05/01(日) 15:53:560045デフォルトの名無しさん
2005/05/01(日) 16:02:01http://www.google.co.jp/search?num=50&hl=ja&c2coff=1&q=Read.c+ReadFile+_osfhnd+Microsoft+Corporation.+All+rights+reserved&btnG=Google+%E6%A4%9C%E7%B4%A2&lr=
0046デフォルトの名無しさん
2005/05/01(日) 16:02:490047デフォルトの名無しさん
2005/05/01(日) 18:23:31ありがとうございます。
-xだけだと指定に関係なく全ファイル展開になります。
>これ、実際にはTar() の最後の引数で指定したメモリに出力される。
Tar()の最終引数がDWORD dwSizeでバッファのサイズの値なんですが
これにメモリのポインタを入れればよいのでしょうか?
0048デフォルトの名無しさん
2005/05/01(日) 18:47:41ここの人が詳しいかと思いまして
パラメータをレジストリに保存してダイアログで設定するようなアプリを作ったとき
常にレジストリを読むわけにはいきませんし
読み込みと書き込みの両方を考えて
メモリ上のパラメータとレジストリの値とはどのタイミングで同期をとるもんなんでしょう?
0049デフォルトの名無しさん
2005/05/01(日) 18:50:070050デフォルトの名無しさん
2005/05/01(日) 18:59:34005148
2005/05/01(日) 19:02:19・起動時とダイアログを開いたときに読み込み
・終了時とダイアログを閉じたときに書き込み
・読み込み時にレジストリが見つからなかったときは
メモリのパラメータをデフォルトの値にして
書き込み時を待って反映させる
としようと思います。
005210
2005/05/01(日) 19:04:23どうもです。チートツールってほどのものじゃない個人的なものなんですが・・・
以前に埋めに入っているスレで質問して誰も答えてくれなかったことがあるんで・・・
もちろんReadProcessMemory()は正常に動いてるのだとは思いますが・・・
4Gのアドレスのうち、全部があるはずはないですよね・・・
たしかにコード近辺、スタック近辺とあとよくわからないシステムエリア?近辺は読み取れるんですが、大方は読み取ろうとすると不正な処理ダイアログが出ます。
自分の領域ならばLDT読むとかいろいろ方法はあるとは思うんですが、他プログラムの領域なんで・・・
あと質問の仕方のまずい所を・・・?
>>33
私でしょうか?
__envp調べて見ます。
>>18
私のことですよね?
やはりその前に何の変数が何に使われているのか確認しないといけないので・・・
0053デフォルトの名無しさん
2005/05/01(日) 19:06:06Advanced Windows読め
0054デフォルトの名無しさん
2005/05/01(日) 19:29:03複数起動を仕様としたアプリ?
そうでないなら複数起動は制限しとくようにしたほうがいい気がするよ
0055デフォルトの名無しさん
2005/05/01(日) 19:52:03複数プロセスのアプリからロードされるプラグインDLL
なんですよ
005632
2005/05/01(日) 20:13:48やろうとしていることが嫌われていることもあるが、それ以前に質問の仕方が悪い。
過去ログを見て、回答をもらえている質問者と、そうでない質問者の違いを見て、
何がいけないのか察してくれ。
それが面倒だったら、ここで質問するよりも、
チートツール作ってる人達のWebサイト見たほうが早い気がするよ。
0057デフォルトの名無しさん
2005/05/01(日) 20:41:58共有メモリを利用するという手はどうよ?
最初にプロセスにアタッチされたときにロードして、
すべてのプロセスから参照されなくなったときに保存すると。
0058デフォルトの名無しさん
2005/05/01(日) 20:48:35PEヘッダを見ればいいんだよ。
そしたらメモリ配置は全部わかる。
仕様はこのあたりが詳しい。
http://www.interq.or.jp/chubu/r6/reasm/PE_FORMAT/intro.html
0059デフォルトの名無しさん
2005/05/01(日) 20:50:56いいかもしれないけど、そんなにクリティカルな情報でもないので
できたらやってみます
ところでDLLってプロセスのメモリ空間ごとにコピーされるんですよね
0060デフォルトの名無しさん
2005/05/01(日) 20:54:560061デフォルトの名無しさん
2005/05/02(月) 00:19:44すまん。後ろから2番目だわ。
でも-xで指定ファイルの解凍ができるが。
006252
2005/05/02(月) 00:29:13ふつうの人はお金にも時間にも限界がありますから・・・
私もできたら本屋で売っている面白そうな本、全部買いたいですよ・・・
結局何が悪かったのかよくわからなかったのですが、とにかく悪いということなのでここで聞くのはあきらめます。皆さんどうもありがとうございました。
>>58
おお!これですね。わかりました。早速熟読を・・・
あとは動的に取得されたセグメントの情報ですね・・・
一応ググってはいるんですが、英語のばかりひっかかるんで・・・もちろん英語でも読んではいるんですが、???という感じで・・・
あと途中退場して本当に申し訳ありません・・・
ご容赦下さい・・・
0063デフォルトの名無しさん
2005/05/02(月) 00:42:16仮令個人使用だろうとチートツールはチートツール。
それが只のマナー違反か犯罪になるかはゲームの種類と体制によるが。
そうである以上、まとまった情報が得られないことくらいすぐに判ると思うが。
そうでなくとも、教えて君は一般的に嫌われる。
まぁ、「半年ROMしてから書き込め」という板もあるくらいだ。空気は読もうな。
0064デフォルトの名無しさん
2005/05/02(月) 01:14:100065デフォルトの名無しさん
2005/05/02(月) 04:37:470066デフォルトの名無しさん
2005/05/02(月) 06:28:04ステータスバーをつける。
0067デフォルトの名無しさん
2005/05/02(月) 07:10:18つhttp://www.kumei.ne.jp/c_lang/sdk/sdk_57.htm
0068デフォルトの名無しさん
2005/05/02(月) 08:04:3232ビットではDLLはプロセス間で独立してると思っていいですよ。
(昔はDLLを使ったプロセス間通信なんてアホな話もありましたが。)
DLLでプロセス間でまったく同じメモリ内容になる部分は、
OSが自動的に見えないところで共有してくれています。
これを意識する必要は、メモリ & ディスクキャッシュの節約という面以外ではないです。
>>62
開き直るなよ。
お金にも時間にも限界がある人が回答してるんだよ。
だから質問の仕方が悪いと相手にされないの。
質問がド下手な人の相手をすると、お金と時間が無駄になるし、
そもそも回答してくれる人の手間を極力省くために、
自分の時間をいくらでも注ぎ込む気構えがないのは、失礼でしょ。
だから相手にされないの。
0069デフォルトの名無しさん
2005/05/02(月) 10:51:09DLL作るときってベースアドレスずらしてる?
重ならないように設定するのめんどいんだけど・・・
あと、重ならないことで実際どんな効果があるのかしらん
0070デフォルトの名無しさん
2005/05/02(月) 12:10:10ttp://software.nikkeibp.co.jp/software/download/down02.html
Windowsのメモリー管理を理解する のサンプルを見てVirtualQueryEx使うとか
>>69
ベースアドレスが重なると別のアドレスにロードすることになり、再配置処理が必要になる。
アドレスがずれると複数プロセスでのDLL読み取り専用領域の共有もできなくなるらしい。
ちなみにDelphi/BCCでexeを作るときはStripRelocで再配置情報を削除した方が良い
間違ってたらスマン
0071デフォルトの名無しさん
2005/05/02(月) 15:13:54をONにして適当なウィンドウをぐりぐりドラッグすると
再描画されずに白いゴミが残ることがあるんだけど
へぼいマシンなんだからウィンドウの内容を表示するオプションOFFにシル
って対応だけでいいのかな?
BitBltで絵を張っている位なんだがこっちがミスしてるのかな・・
0072デフォルトの名無しさん
2005/05/02(月) 16:58:52FillRectを使い、第三引数でGetStockObject(**_BLUSH)とやっているのですが、
GRAYは暗く、LTGRAYは明るく、HOLLOWはうまく表示されず、同じ色が出せません。
いい方法がありましたら、教えてください。
007372
2005/05/02(月) 17:08:45GRAY_BRUSH、LTGRAY_BRUSH共にボタンの色より濃くなってしまいます。
当然BLACK_BRUSH、DKGRAY_BRUSH、WHITE_BRUSHも違う色です。
0074デフォルトの名無しさん
2005/05/02(月) 17:14:59::CreateSolidBrush(RGB(255,255,255)) でブラシ作って
::FillRect したらどうかな。
そのブラシは後でDeleteObject する
0075デフォルトの名無しさん
2005/05/02(月) 17:19:34CreateSolidBrush(GetSysColor(COLOR_BTNFACE))
じゃないのか?
007672
2005/05/02(月) 17:25:03ありがとうございます。似た方法はやっていました。
ペイントソフトでボタンの色を調べて、その色で塗りつぶしたのですが、
微妙に色が違ってしまいました。デスクトップの色数とかが原因かもしれません。
>>75
ありがとうございます。同じ色を表示できました。
0077デフォルトの名無しさん
2005/05/02(月) 18:49:350078デフォルトの名無しさん
2005/05/02(月) 19:03:540079デフォルトの名無しさん
2005/05/02(月) 19:09:120080デフォルトの名無しさん
2005/05/02(月) 23:00:40作りたいのですが、どのように作ればいいのでしょうか?
まったく検討もつきません、どなたかアドバイスよろしくお願いします。
0081デフォルトの名無しさん
2005/05/02(月) 23:35:41タイマーで円を描くようにマウスポインタの位置を変更していけばいいだけじゃないの?
0082デフォルトの名無しさん
2005/05/02(月) 23:37:12>>4にあるURLからひたすら探せ
0083デフォルトの名無しさん
2005/05/02(月) 23:40:320084デフォルトの名無しさん
2005/05/02(月) 23:57:42レスありがとうございましたっ!
そして>>83さん、結構探したつもりだったんですけど、
助かりました、本当に。感謝!
0085デフォルトの名無しさん
2005/05/03(火) 01:08:43初歩として2台のPC間でファイルの送受信を行うプログラムを作ろうと思いました。
WINAPIに必要な関数は用意してありますか?
0086デフォルトの名無しさん
2005/05/03(火) 01:20:500087デフォルトの名無しさん
2005/05/03(火) 02:11:53[winapi, ネットワーク]や[ファイルの送受信, winsock2]
等で検索してみたのですが欲しい情報が見つかりませんでした。
それでこちらで質問させてもらいましたが、もうちっとgoogleを漁ってみます。
失礼しました。
0088デフォルトの名無しさん
2005/05/03(火) 09:23:540089デフォルトの名無しさん
2005/05/03(火) 11:08:430090デフォルトの名無しさん
2005/05/03(火) 12:28:28目的としてはファイルを送信する側が
自分が持っているファイルの一覧を受信者に送信、
受信者は一覧を見て欲しいファイル名を送信、
送信者は指定されたファイルを送信する。
こんな感じのことがしたいので最初はエラーとか全く考えずに
ある決まったファイルを送受信したいなと思ったんです。
んでもって、やりたいことが決まっても
どんな関数を使えば良いのかよく分からないので質問しました。
0091デフォルトの名無しさん
2005/05/03(火) 12:39:020092デフォルトの名無しさん
2005/05/03(火) 13:03:12データの出元や最終的な出力先がファイルというところは、
ネットワークプログラミングとは関係ない。
winsockって分かってるなら、それで普通にデータの送受信を
すればいいじゃん。
そうじゃなくて、FTPクライアントを作りたいだったらwininetあたりで。
0093デフォルトの名無しさん
2005/05/03(火) 19:23:59(キーボードで操作できる)カーソルを
あらかじめ特定の項目に移動させたいのですが
そういうことはできますか?
0094デフォルトの名無しさん
2005/05/03(火) 19:50:11プログラミングのスパイスって本に君の希望する内容が書いてある。
0095デフォルトの名無しさん
2005/05/03(火) 20:11:03プロトコルについて勉強汁。
ちなみに、君の希望するものは FTP。
RFC FTP で検索汁。
0096デフォルトの名無しさん
2005/05/03(火) 20:31:500097デフォルトの名無しさん
2005/05/03(火) 20:41:390098デフォルトの名無しさん
2005/05/03(火) 21:06:01MessageBoxを出して本当に終了するかどうかを促す実装をしているのですが、
それだけのプログラムをクラスとか一切使わず作るとうまくいくのですが、
自前のウィンドウプロシージャクラスを使うとメッセージボックスは表示されません。
しかし、エンターキーを押すと、デフォルトのOKが押されて終了してくれます。
クラスの中では、WM_CLOSEメッセージの時にはOnClose関数に飛ぶようにしているだけで、
特に変なことはしてないつもりです。
検索してみても分からなかったので、ここで質問させてもらいました。
同じような現象になったことある方や、意見がある方は回答をお願いします。
条件が曖昧ですがよろしくお願いします。
環境:Visual C++.NET 2003, WinXP(SP1)
0099デフォルトの名無しさん
2005/05/03(火) 21:28:38ソース晒してみ
010098
2005/05/03(火) 21:30:42どうやら、ウィンドウ(メインのウィンドウ)が表示されている間に
メッセージボックスを出そうとすると表示されないということが分かりました。
WM_CREATEではうまくいきますが、WM_LBUTTONDOWN等ではうまくいきません。
010198
2005/05/03(火) 21:33:30ウィンドウプロシージャ関数
switch(msg)
{
case WM_CLOSE:
return OnClose();
・・・他のメッセージ処理
メインウィンドウのOnClose関数
ウィンドウプロシージャの基本クラスの関数をオーバライドしてます
{
if(MessageBox(m_hwnd, "Really?", "", MB_YESNO) == IDYES)
DestroyWindow(m_hwnd);
return 0;
}
どのくらい晒せばいいか分かりませんが、
とりあえずかかわってるとこだけ書いてみました。
0102デフォルトの名無しさん
2005/05/03(火) 21:37:14全部晒したほうがいいんでない?
0103デフォルトの名無しさん
2005/05/03(火) 21:51:16TCHARがcharの時もwchar_tの時も上手くいく方法はどのようなものがありますか?
0104デフォルトの名無しさん
2005/05/03(火) 22:10:14変換したらいいんでないですかね?
0105デフォルトの名無しさん
2005/05/03(火) 22:30:13ATLのCT2Wとか
0106デフォルトの名無しさん
2005/05/04(水) 00:05:49GUIを扱うメインスレッドと、長い処理を行うワーカースレッドがありまして、
あるウィンドウに対して送信するときにクリティカルセクションを使って
排他をしようと考えています。
状態遷移を考えているうちに疑問に思ったのですが、
・ワーカースレッドで、クリティカルセクションをロックしてる最中に
メインスレッドにSendMessageすると、どうなるでしょうか?
メインスレッドに処理が移った瞬間デッドロックするのでしょうか。
0107デフォルトの名無しさん
2005/05/04(水) 00:07:53#ifdef でやってみます。
0108デフォルトの名無しさん
2005/05/04(水) 00:09:08あるウィンドウは、メインスレッドのダイアログ上に存在します。
単なるエディットボックスです。
0109デフォルトの名無しさん
2005/05/04(水) 00:09:41メインスレッドがそのクリティカルセクションをロックしようとしなければ大丈夫。
0110デフォルトの名無しさん
2005/05/04(水) 00:22:48外からインスタンスハンドルと「特定のID」を引数として引っ張ってこれるようにしたいのですが
どうしたらいいですか?
0111デフォルトの名無しさん
2005/05/04(水) 00:31:27いや、今の設計では、メインスレッド側もロックしようとします。
やっぱダメかな・・・
ボタンを押したりしたときにそのウィンドウにテキストを出力する時とか。
ちゃんとクリティカルセクションのlock/unlockはしてますが。
0112デフォルトの名無しさん
2005/05/04(水) 00:35:49メインスレッドへSendMessageは正当なのかということなのですが、
なんか試した限りではうまく動かないみたいです。
クリティカルセクションのコードを外せば動くんですが。
ああもう寝よ・・・
0113デフォルトの名無しさん
2005/05/04(水) 00:40:38別のスレッドからのSendMessageって、スタックから見るとかなり
ややこしいことになってるみたいなんで、バグの温床のような気がします。
SendMessageを使わない別の通信手段を考えることにします。
0114デフォルトの名無しさん
2005/05/04(水) 00:45:390115デフォルトの名無しさん
2005/05/04(水) 01:14:45データをバッファリングすることにして、
そのデータをクリティカルセクションのロック対象とする。
ワーカスレッドは、バッファを更新したらWM_USER+nの適当なメッセージを
PostMessageでGUIを持つメインスレッドへ通知し、
GUIメインスレッドは通知を受けたらコントロールを更新してバッファをクリアする、
というフローに変更。
これでメッセージループが正常に回るようになりました。
気持ち悪い部分が消えて良かった・・・
0116デフォルトの名無しさん
2005/05/04(水) 01:22:060117デフォルトの名無しさん
2005/05/04(水) 03:05:58同期的に処理しなくていいなら、最初からPostMessageにしとけ、っていう気もするけど、
ロックの都合で変えるのは、どうかと思う。
基本的には、クリティカルセクション内でSendMessageするのは、よくない。
SendMessageのように、いつ返ってくるのかわからないような処理を、
排他状態で行うのは、パフォーマンス的にもよろしくないし、なんか気持ち悪い。
(気持ち悪いのは、デッドロックしやすいからよくない、ということだと思うのだけど、
デッドロックするような設計なら、長かろうが複雑だろうが、ダメなものはダメだなぁ。)
もしかして、ロック対象のオブジェクトを、SendMessageで誰かに触らせようとしているの?
だとしたら、それはロックの使い方を間違っているよ。
ロックしている = 自分以外に触らせない
ということだから。
渡す側は、オブジェクトに触れる前にロック。オブジェクトに触れ終わったらアンロック。
渡された側も、オブジェクトに触れる前にロック。オブジェクトに触れ終わったらアンロック。
ロックしないで触るコードがあれば直すべし。
SendMessageする時や、メッセージキューから受けとる時は、ロックしていない状態でいいよ。
0118117
2005/05/04(水) 03:10:23> SendMessageする時や、メッセージキューから受けとる時は、ロックしていない状態でいいよ。
SendMessageすることや、メッセージキューから受けとること自体は、
オブジェクトのハンドルやポインタは扱うかもしれないけれども、
オブジェクトの中身には触れないことなので、ロックが不要なのです。
もちろん、
そのハンドルやポインタ自体がロック対象のオブジェクトというのであれば、
ロックしなくてはいけませんが、そんなロック対象のものを直接SendMessageで渡してはいけません。
必ず、一段噛まさないと。
0119デフォルトの名無しさん
2005/05/04(水) 03:15:520120デフォルトの名無しさん
2005/05/04(水) 05:25:05上記のようにでぇりーとした、みにまいずなアイコンを再び
使えるようにしたいのですがどうすればいいのでぇすくわぁ
0121デフォルトの名無しさん
2005/05/04(水) 08:36:16わかってりゃ、最初の質問だって出なかったろ。
0122デフォルトの名無しさん
2005/05/04(水) 15:16:380123デフォルトの名無しさん
2005/05/04(水) 17:41:50したいんですけど、送信するにはどんな関数を使えばいいんですか?
そういうのは存在するんでしょうか? 優しい方教えてくださいm(_ _)m
0124デフォルトの名無しさん
2005/05/04(水) 17:52:45要件の不足。
詳細述べよ。
0125デフォルトの名無しさん
2005/05/04(水) 17:55:00優しい方教えてくださいm(_ _)m
0126デフォルトの名無しさん
2005/05/04(水) 17:59:34フォームに文字を入力せずに、自分で作成したプログラムから
特定の文字を送信するにはどうすればいいのかなぁ、って思っただけです。
0127デフォルトの名無しさん
2005/05/04(水) 18:08:30とりあえずスレ違い。
HTTP 関連のお勉強から始めれ。
0128デフォルトの名無しさん
2005/05/04(水) 18:09:20スレ違い、氏ね
0129デフォルトの名無しさん
2005/05/04(水) 18:12:570130デフォルトの名無しさん
2005/05/04(水) 20:21:20死ね
は?あと
お望みならぶち殺したろか?
とかは?
0131デフォルトの名無しさん
2005/05/04(水) 20:23:04ぐらいで
0132デフォルトの名無しさん
2005/05/04(水) 21:27:450133デフォルトの名無しさん
2005/05/04(水) 21:34:45一番最後に出たメッセージボックスのOKボタンを押したら、全ての
メッセージボックスが閉じてくれるジョークプログラムを作ろうと思うのですが、
どのようにすればよいでしょか?
0134デフォルトの名無しさん
2005/05/04(水) 21:39:290135デフォルトの名無しさん
2005/05/04(水) 21:51:21普通に組めるだろ
アフォか
0136デフォルトの名無しさん
2005/05/04(水) 22:02:41#include <windows.h>
#include <time.h>
LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
int WINAPI WinMain(HINSTANCE hinst, HINSTANCE, LPSTR, int )
{HWND hwnd[999];MSG msg;WNDCLASS unkoClass;int i,j=0,k=0;srand(clock());
{unkoClass.style = CS_HREDRAW | CS_VREDRAW;unkoClass.lpfnWndProc = WndProc;unkoClass.cbClsExtra = 0;
unkoClass.cbWndExtra = 0;unkoClass.hInstance = hinst;unkoClass.hIcon = NULL;unkoClass.hCursor = LoadCursor(NULL, IDC_ARROW);
unkoClass.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);unkoClass.lpszMenuName = NULL;unkoClass.lpszClassName = "うんこ";
if( !RegisterClass(&unkoClass) ) return 0;}for(i=0; i<999; i++){j=rand()%1000+1;k=rand()%1000+1;
hwnd[i] = CreateWindow( unkoClass.lpszClassName,"うんこ",WS_OVERLAPPEDWINDOW,j,k,200,200,NULL,NULL,hinst,NULL);
ShowWindow(hwnd[i], SW_SHOW );}if(IDNO == MessageBox(*hwnd,"うんこおk?","うんこ", MB_YESNO )){ }
else {SendMessage(*hwnd, WM_CLOSE, 0, 0);}while( GetMessage(&msg, NULL, 0, 0) ){TranslateMessage(&msg);DispatchMessage(&msg);}
return 0;}LRESULT CALLBACK WndProc(HWND hwnd, UINT imsg, WPARAM wp, LPARAM lp){
switch(imsg){case WM_DESTROY:PostQuitMessage(0);break;default:return DefWindowProc(hwnd, imsg, wp, lp);}return 0;}
///////////////////////////////////////////////////////////////////////////////////////
0137デフォルトの名無しさん
2005/05/04(水) 22:10:58作ってみた
0138デフォルトの名無しさん
2005/05/04(水) 22:53:280139デフォルトの名無しさん
2005/05/05(木) 00:37:13項目のヘッダを押すとそのカラムについてソートされるようにしたいんですが、
項目のヘッダが押されたというのは、何のメッセージを捕まえればよいですか?
0140デフォルトの名無しさん
2005/05/05(木) 00:38:46すいません。
0141デフォルトの名無しさん
2005/05/05(木) 00:40:27リストビューの任意の項目で、
右クリックしたらポップアップメニューを出したいのですが、
何のメッセージを捕まえればよいですか?
0142デフォルトの名無しさん
2005/05/05(木) 00:45:19すいません。
0143デフォルトの名無しさん
2005/05/05(木) 00:50:05おぉ、最高っす!
参考にさせていただきます!
0144デフォルトの名無しさん
2005/05/05(木) 00:55:25WH_CBT と WH_SHELL とどちらを使うほうがよいでしょうか?
0145デフォルトの名無しさん
2005/05/05(木) 00:58:40すいません。
0146デフォルトの名無しさん
2005/05/05(木) 01:02:20WH_CBT と WH_SHELL とどちらを使うほうがよいでしょうか?
0147デフォルトの名無しさん
2005/05/05(木) 01:04:550148デフォルトの名無しさん
2005/05/05(木) 01:06:42右クリックしたらポップアップメニューを出したいのですが、
何のメッセージを捕まえればよいですか?
0149デフォルトの名無しさん
2005/05/05(木) 01:17:07-<二:彡――
0150デフォルトの名無しさん
2005/05/05(木) 01:47:32リストビューで項目ヘッダの淵をダブルクリックすると
横幅がトリムされますが、これをプログラム側から行うには
何のメッセージ送ればよいですか?
0151デフォルトの名無しさん
2005/05/05(木) 02:04:10LVM_SETCOLUMNWIDTH メッセージでカラムの幅を
LVSCW_AUTOSIZE(アイテムのテキストの幅に合わせる) 又は
LVSCW_AUTOSIZE_USEHEADER(カラムのテキストの幅に合わせる) にする。
0152デフォルトの名無しさん
2005/05/05(木) 02:11:12ありがとうございました。
できました。
0153デフォルトの名無しさん
2005/05/05(木) 02:13:30あまり多くないほうがいいのでしょうか?
具体的には、
キーボードを模したコントロール用パネルを作るときに、
各キーがそれぞれパネル上の一つの子ウィンドウという作り方は
推奨されない作り方なのでしょうか?
0154デフォルトの名無しさん
2005/05/05(木) 02:19:070155デフォルトの名無しさん
2005/05/05(木) 02:20:43ってか、ボタンもテキストボックスもスタティックテキストもウィンドウなんだけどな
0156デフォルトの名無しさん
2005/05/05(木) 02:27:48今は平気なんじゃないかなあ。
と言ってる俺は300-500並べるやつを作らなくてはならないんだが、これはやばそうだな・・・
0157デフォルトの名無しさん
2005/05/05(木) 02:35:210158デフォルトの名無しさん
2005/05/05(木) 02:39:01あれ?昔ボタンで作られたキーボードの窓があった様な・・
誰が使うんだ?って代物だったけど。
Win95の頃かな。
0159153
2005/05/05(木) 03:13:25そう! その通り!
私は、ボタンをいっぱい使う
アプリケーションが作りたかったのです。
多くのボタンを持ったアプリケーションが懸命に動作する姿は、
私をも感動させるものがあるでしょう。
0160↑
2005/05/05(木) 03:31:460161デフォルトの名無しさん
2005/05/05(木) 04:24:48下手に出ておればいい気に
なりおって! 氏ね!
0162デフォルトの名無しさん
2005/05/05(木) 07:47:54付属のソフトウェアキーボードのことか?
0163デフォルトの名無しさん
2005/05/05(木) 17:14:49LoadImageでIMAGE_ICON,16,16指定でアイコンハンドル(HICON)を読んで
タスクアイコンに設定したいのですが、
Windows2000用ではICOファイルから16色のテーブルを読み込みたいのですが、
指定する方法を教えてください
0164デフォルトの名無しさん
2005/05/05(木) 23:43:190165デフォルトの名無しさん
2005/05/05(木) 23:52:39http://www.vector.co.jp/soft/win95/amuse/se201729.html?g
これ使ってみそ 的はずれてるかもしらんが・・・
0166デフォルトの名無しさん
2005/05/06(金) 11:20:29ミュートとか音量設定とか
0167デフォルトの名無しさん
2005/05/06(金) 11:23:440168デフォルトの名無しさん
2005/05/06(金) 12:51:51プロシージャBに何か値を渡すにはどうしたらいいでしょうか。
例えばダイアログAのチェックボックスの選択状況によって、
ダイアログBの初期状態を変化させるなどしたい場合です。
今はグローバル変数に持たせて渡しているのですが、あまり多用したくないです。
0169デフォルトの名無しさん
2005/05/06(金) 13:19:080170デフォルトの名無しさん
2005/05/06(金) 13:20:02DialogBoxParam
0171デフォルトの名無しさん
2005/05/06(金) 13:35:58THX
>>169
ウィンドウのクラス化めんどくさいんだもの。
SDKのみで懇切丁寧にクラス化の手順と仕組みが載ってる本とかないですかねー
Webに多少資料があるけど余りよく理解できない。
0172デフォルトの名無しさん
2005/05/06(金) 14:09:500173デフォルトの名無しさん
2005/05/06(金) 14:20:050174デフォルトの名無しさん
2005/05/06(金) 14:24:41質問者には当然のように問題点を詳細に書くよう要求するんだから
回答者だって答えるならば少なくとも意味が伝わるように書いてくれ。
0175デフォルトの名無しさん
2005/05/06(金) 14:26:180176デフォルトの名無しさん
2005/05/06(金) 14:26:370177デフォルトの名無しさん
2005/05/06(金) 14:27:33キチガイ氏ねキチガイ氏ねキチガイ氏ねキチガイ氏ねキチガイ氏ねキチガイ氏ね
キチガイ氏ねキチガイ氏ねキチガイ氏ねキチガイ氏ねキチガイ氏ねキチガイ氏ね
キチガイ氏ねキチガイ氏ねキチガイ氏ねキチガイ氏ねキチガイ氏ねキチガイ氏ね
0178デフォルトの名無しさん
2005/05/06(金) 14:27:460179デフォルトの名無しさん
2005/05/06(金) 14:28:150180デフォルトの名無しさん
2005/05/06(金) 14:29:50キチガイ氏ねキチガイ氏ねキチガイ氏ねキチガイ氏ねキチガイ氏ねキチガイ氏ね
キチガイ氏ねキチガイ氏ねキチガイ氏ねキチガイ氏ねキチガイ氏ねキチガイ氏ね
キチガイ氏ねキチガイ氏ねキチガイ氏ねキチガイ氏ねキチガイ氏ねキチガイ氏ね
0182デフォルトの名無しさん
2005/05/06(金) 14:52:51気に入らない質問が聞きたくなかったら回答しないことだよ
0183デフォルトの名無しさん
2005/05/06(金) 15:07:49ろmもいるだろうに。俺とか
0184デフォルトの名無しさん
2005/05/06(金) 15:16:500185デフォルトの名無しさん
2005/05/06(金) 15:23:130186184
2005/05/06(金) 15:24:59質問が悪かったですかね orz
どうすればわかりますか?
0187デフォルトの名無しさん
2005/05/06(金) 15:31:30気にいらない質問が見たくなかったらロムらないことだよ
0188デフォルトの名無しさん
2005/05/06(金) 15:34:05クラス化する以外にどうしろと。
0189デフォルトの名無しさん
2005/05/06(金) 15:43:550190デフォルトの名無しさん
2005/05/06(金) 15:58:28が顔文字に見えてきた
0191デフォルトの名無しさん
2005/05/06(金) 16:00:50GetDriveType
0192デフォルトの名無しさん
2005/05/06(金) 17:13:280193デフォルトの名無しさん
2005/05/06(金) 17:14:21サブクラス化された子ダイアログから
親ダイアログの変数を参照するにはどうすればいいのでしょうか?
0194デフォルトの名無しさん
2005/05/06(金) 17:33:460195デフォルトの名無しさん
2005/05/06(金) 17:52:38とりあえずGetParent()で親のウィンドウハンドルが手に入れられる。
0196193
2005/05/06(金) 18:05:37子ダイアログであるエディットボックスのウインドウプロシージャ内から
その親であるダイアログ内で使われている変数の値を参照したいのです。
>>195
ウィンドウハンドルを使えばいいのでしょうか。
少し調べてみます。
お二人ともレスありがとうございました。
0197デフォルトの名無しさん
2005/05/06(金) 18:12:25そりゃ直接は無理。
0198デフォルトの名無しさん
2005/05/06(金) 19:09:01ダイアログクラスのメンバ変数か?
0199デフォルトの名無しさん
2005/05/06(金) 19:28:50クラス化する以外に。
0200デフォルトの名無しさん
2005/05/06(金) 19:31:43これの事ではなかろか
0201デフォルトの名無しさん
2005/05/06(金) 19:53:25168の質問内容に対し、
クラス化する以外でMVCをどう実現するのだという事。
0202デフォルトの名無しさん
2005/05/06(金) 19:57:440203デフォルトの名無しさん
2005/05/06(金) 20:03:350204名前は開発中のものです。
2005/05/06(金) 22:56:15>>169と>>172の意味を誰か説明して下さい。
気になって寝れません。
0205デフォルトの名無しさん
2005/05/06(金) 23:05:49WinMain関数のメッセージループを
HDC hdc = GetDC(hwnd);
while(GetMessage(&msg, NULL, 0, 0)) {
TextOut(hdc, 0, 0, TEXT("test"), 4);
DispatchMessage(&msg);
TranslateMessage(&msg);
}
このように書いた状態でメッセージボックスを表示させると
文字とメッセージボックスが重なったときに文字が消えてしまいました。
これを文字が消えないようにするにはどうすればいいのでしょうか?
よろしくお願いします。
0206デフォルトの名無しさん
2005/05/06(金) 23:09:100207デフォルトの名無しさん
2005/05/06(金) 23:13:43WM_PAINT内にTextOutを移す。
0208デフォルトの名無しさん
2005/05/06(金) 23:33:320209205
2005/05/07(土) 00:30:13ご解答ありがとうございます。
>>207
WM_PAINT内ではうまくいくのですがどうしてもループの中でやりたいときは何か手はあるのでしょうか?
>>208
やってみましたが表示されなくなってしまいました。
0210デフォルトの名無しさん
2005/05/07(土) 00:38:21>WM_PAINT内ではうまくいくのですがどうしてもループの中でやりたいときは何か手はあるのでしょうか?
メッセージボックスをモードレスなダイアログでモーダルに見せかけるようにすればできないことはないが
面倒だし君のスキルでは多分無理だ。
つか、なんでそんなことがしたいの?
0211デフォルトの名無しさん
2005/05/07(土) 00:38:28_, ._
( ゚ Д゚) ?
0212デフォルトの名無しさん
2005/05/07(土) 00:39:15自分で再描画処理を作れ
0213デフォルトの名無しさん
2005/05/07(土) 01:23:36>WM_PAINT内ではうまくいくのですがどうしてもループの中でやりたいときは何か手はあるのでしょうか?
汎用的な手は無いと思う。
DialogBox関数でダイアログを作成した場合、ダイアログを閉じるまで、DialogBox関数から
帰ってこない。=君が作ったメッセージループもGetMessage関数で止まってる。
Windowsの構造上無理。
0214デフォルトの名無しさん
2005/05/07(土) 06:51:42コンパイルしようとしたらエラー出まくりな上に
最初からCDに入ってる実行ファイル郡は全て
「このコンピュータでは扱えないファイル形式です」だとよ(プゲラチョフwwwwwwwなめすぎwwwwwww意味分からんwwwwwww互換性ないから使えないってことか?wwwwwwwwこれがジェフリーの集大成なのか?wwwwwwwwwwwwww
0215デフォルトの名無しさん
2005/05/07(土) 07:34:37__ __/ / | ┌─┼` _ _|_
/ ─ / / \ ○ | / | |┐ | | / |
__/ _/ / \ | / レ / レ  ̄ / |
/\___/ヽ
/'''''' '''''':::::::\
. |(●), 、(●)、.:| +
| ,,ノ(、_, )ヽ、,, .::::|
. | `-=ニ=- ' .:::::::| +
\ `ニニ´ .:::::/ +
,,.....イ.ヽヽ、ニ__ ーーノ゙-、.
: | '; \_ _ノ.| ヽ i
| \/゙\ /\| i |
> ヽ. V | ||
0216デフォルトの名無しさん
2005/05/07(土) 07:34:490217デフォルトの名無しさん
2005/05/07(土) 07:50:50スクロールバーが出ているときに
スクロールバーがでないようにMoveWindowでサイズを変更したいのですが、
適切なサイズを計算するにはどうしたらよいですか?
0218デフォルトの名無しさん
2005/05/07(土) 08:00:04バカが知ったかしてみたかったんじゃねーの。
0219デフォルトの名無しさん
2005/05/07(土) 08:28:34GetClientRectでリストビューのサイズ取得してそのサイズにあわせてMoveWindow
0220デフォルトの名無しさん
2005/05/07(土) 09:05:43ちょっと質問を誤解されているようです。
GetClientRectの引数は親ウィンドウのつもりだったのかリストビューのつもりだったのか
わかりませんが、
リストビューそのもののサイズを
内側のスクロールバーがでなくなるように変えたいのです。
リストビューにGetClientRectしても、現在のサイズが返るだけでした。
0221デフォルトの名無しさん
2005/05/07(土) 09:10:58ループ内でInvalidateRect()とUpdateWindow()を呼べばいい。
0222デフォルトの名無しさん
2005/05/07(土) 09:24:50言ってる意味がわかりません
0223デフォルトの名無しさん
2005/05/07(土) 09:35:22こんな意味じゃなかろうか↓
例えば、項目の文字列がかなり横長のに、ウィンドウの幅が50ピクセルくらいだと、
クライアント領域内に水平スクロールバーが表示されるってことかな?
人間だったら手動でビューの幅を広げるけど、
そのための十分なサイズを計測する方法を聞いているのだと思われ。
0224デフォルトの名無しさん
2005/05/07(土) 10:02:330225デフォルトの名無しさん
2005/05/07(土) 10:08:39超能力ありがとうございます!
超能力で質問にも答えていただけますか?
一応、GetScrollInfoでリストビュースクロールバーの情報を得て
nMaxとnMinをとって8ぐらい足すとうまくいくようなんですが
0226デフォルトの名無しさん
2005/05/07(土) 10:17:45アイテムを挿入するたびにウィンドウの大きさが変わってしまうのか。
最初から表示したいものが決まってて、要素の数や幅が不変なのであれば
リストビューの属性をスクロールしない設定にしとけばいいんじゃね。
そういう設定項目あるよ。
0227デフォルトの名無しさん
2005/05/07(土) 10:34:30サイズを変更するのは初期化時のみで
あとはユーザーのリサイズにあわせます
表示したいものはデータによって変わりますので幅も変わります
糞挙動ということはないです
0228223
2005/05/07(土) 10:49:28226は漏れじゃないぞよ。念のため。
各カラムのサイズを調べればよさげ?
ってかリストビューもあんまり使ったことないし、
徹夜明けの頭で適当に答えてるだけなので責任はもてない。
もっとマシなやつに聞いてくれ。寝る。
0229デフォルトの名無しさん
2005/05/07(土) 11:13:470230デフォルトの名無しさん
2005/05/07(土) 11:16:15縦を気にしてたらきりがないからな
0231デフォルトの名無しさん
2005/05/07(土) 11:34:40>糞挙動ということはないです
どう考えても糞。
0232デフォルトの名無しさん
2005/05/07(土) 11:54:340233デフォルトの名無しさん
2005/05/07(土) 12:02:44どうにでもなるやん。
0234デフォルトの名無しさん
2005/05/07(土) 12:48:32これはマルチモニタシステム上では「仮想スクリーン座標」に変換するものと
考えていいんですか?
自力でテストできたらいいんですが、生憎ディスプレイがひとつしかないので
0235デフォルトの名無しさん
2005/05/07(土) 13:03:18そして画面下を割るわけですね
つーか、わざわざ少しずつ広げるくらいなら最初から全画面表示しときゃいいじゃん
0236デフォルトの名無しさん
2005/05/07(土) 14:09:230237デフォルトの名無しさん
2005/05/07(土) 15:12:560238デフォルトの名無しさん
2005/05/07(土) 15:16:500239デフォルトの名無しさん
2005/05/07(土) 16:38:07GetScrollRange あたりを調べてみて
GetSystemMetrics の幅や高さを足したら?
親ウィンドウも連鎖的にでかくなるのか?
0240デフォルトの名無しさん
2005/05/07(土) 16:49:36>>207のようにWM_PAINT内に移した上で、ループ内にInvalidateRect(hwnd,NULL,TRUE)とUpdateWindow(hwnd)でダメ?
0241デフォルトの名無しさん
2005/05/07(土) 16:52:580242デフォルトの名無しさん
2005/05/07(土) 16:55:28できたことある
0243デフォルトの名無しさん
2005/05/07(土) 16:57:29ウインドウハンドルからって何?
ウインドウハンドルにフォントが関連付けられてる?
0244デフォルトの名無しさん
2005/05/07(土) 17:04:29HDCからHFONTを取得する方法きぼんぬ。
HDCはHWNDから簡単に取得できるしHFONTからLOGFONTも可能だし。
0245デフォルトの名無しさん
2005/05/07(土) 17:06:060246デフォルトの名無しさん
2005/05/07(土) 17:07:240247デフォルトの名無しさん
2005/05/07(土) 17:07:350248デフォルトの名無しさん
2005/05/07(土) 17:08:45ありがとうございます。
デバイスコンテキスト関係は知識が浅いのでもう少し勉強します。
0249デフォルトの名無しさん
2005/05/07(土) 17:09:09WM_GETFONT
0250デフォルトの名無しさん
2005/05/07(土) 17:11:04ありがとうございます。
それを試してみます。
>>247
その都度取得と開放を繰り返すので問題ないと思います。
0251232
2005/05/07(土) 17:20:02顧客からの要求で、「ダイアログが画面内に収まらないなら画面縦一杯に出してListCtrlにスクロールバーを出せ。
さもなくば、適切なサイズにListCtrlをあわせてスクロールバーは出すな。
ただし、ダイアログのサイズは自由に変えられるようにしろ」なんてのがあったりするわけだがね。
#あ、説明不足で誤解されそうな悪寒。
0252デフォルトの名無しさん
2005/05/07(土) 17:38:140253デフォルトの名無しさん
2005/05/07(土) 18:56:17ファイル名を一字一字比較して、末尾まで一致するファイルへのポインタを返す
という仕様になっていると思うのですが・・・間違ってないでしょうか?
0254デフォルトの名無しさん
2005/05/07(土) 19:00:31っ
うはっwwwwwwっwうはっwwwっwwwwwwwwwwww
wwwwwwっうぇ
wwwwwwwwwwww
wおkwww
wwwwwwおkwww
0255デフォルトの名無しさん
2005/05/07(土) 19:01:22指定されたフォルダから指定されたファイルを検索するWindowsの標準関数
の名前を書いてくれなきゃわからない。
0256デフォルトの名無しさん
2005/05/07(土) 20:09:12その方法でうまくいきました。
どうもです。
>>252
無能で悪かったな。
0257デフォルトの名無しさん
2005/05/07(土) 20:15:570258デフォルトの名無しさん
2005/05/07(土) 20:16:56山田ウイルス
0259デフォルトの名無しさん
2005/05/07(土) 20:36:24ファイルへのポインタ?
0260デフォルトの名無しさん
2005/05/07(土) 22:07:33ワイルドカードがあるからそう単純ではないと思う。
0261デフォルトの名無しさん
2005/05/07(土) 22:29:05ワイルドカードは内部でPathMatchSpecを呼んでるだけだろ。
0262デフォルトの名無しさん
2005/05/07(土) 22:39:10グローバルなフックプロシージャからTrackPopupMenu使ってみたけど親ウィンドウ以外では表示されません。
なんか方法ありますか?
0263デフォルトの名無しさん
2005/05/07(土) 22:50:190264デフォルトの名無しさん
2005/05/07(土) 22:56:450265デフォルトの名無しさん
2005/05/07(土) 23:00:39Cの構造体ってコンパイラによってメンバが
4バイトの境界にそろえられてしまったりすると思うんですけど、
Windowsビットマップをそのまま読み込んで表示しようとした時に
読み込んだバッファに構造体のポインタをそのまま当てはめて使っているサンプルを
見かけるのですが問題ないのでしょうか
手持ちのbccではオプションに色々指定してもちゃんと1バイト区切りになっていましたが
そういう取り決めになっていたりするんでしょうか
0266デフォルトの名無しさん
2005/05/07(土) 23:10:270267デフォルトの名無しさん
2005/05/07(土) 23:19:49構造体の定義で
struct {
char a;
int b;
};
なんていう馬鹿なことしなければ大概大丈夫。
0268デフォルトの名無しさん
2005/05/07(土) 23:30:25普通はBITMAPFILEHEADERの定義の前に
#pragma pack(2)
とか入ってるから大丈夫よ。
まあメンバごとに読んだ方が行儀がいいのは確かだけど。
0269265
2005/05/07(土) 23:32:37お話を聞く限り大丈夫そうなので構造体使って画像読み込む関数つくってみます
ありがとうございました!
0270デフォルトの名無しさん
2005/05/07(土) 23:34:53BITMAPFILEHEADERとかBITMAPINFO、INFOHEADERとかRGBQUADとかのような、
パディングされたら困るやつは、ちゃんと定義のとこでパディングされないように細工してある
0271デフォルトの名無しさん
2005/05/07(土) 23:52:14MSDNのmixer〜のあたりを読めば書いてあります。
マイクはMIXERLINE_COMPONENTTYPE_SRC_MICROPHONEでmixerGetLineInfo。
0272デフォルトの名無しさん
2005/05/08(日) 00:22:52ビットマップの実際のビットデータ部は、画像の横幅によってはスキャンラインごとに、
ラインの最後にパディングが有るから、ビットマップファイルを触るときはそこに注意だな
0273265
2005/05/08(日) 00:28:51レスありがとうございます
きちんと対策がしてあるものなのですね
データ部の4byte境界は横幅とビットカウントから1ラインのバイト数出す
関数作って対応済みです(`・ω・´) シャキーン
いろいろ心配していただいてありがとうございました
0274デフォルトの名無しさん
2005/05/08(日) 00:56:53その対策というのが>>268
0275デフォルトの名無しさん
2005/05/08(日) 00:57:46#include <windows.h>
HANDLE hFile;
・・・・・・・・・・・・
int WINAPI WinMain(HINSTANCE hInstance , HINSTANCE hPrevInstance ,
PSTR lpCmdLine , int nCmdShow) {
HWND hwnd;
MSG msg;
WNDCLASS winc;
hFile = CreateFile(lpCmdLine , GENERIC_READ , FILE_SHARE_READ , NULL ,
OPEN_EXISTING , FILE_ATTRIBUTE_NORMAL , NULL);
if (hFile == INVALID_HANDLE_VALUE) {
MessageBox(NULL , TEXT("ファイルが開けません") , NULL , MB_OK);
return -1;
}
(以下略)
をコンパイルして実行したら、存在するファイル名をコマンド引数に指定しても
「ファイルが開けません」のエラーメッセージが出てしまいます。
当方の開発環境は、
OS:Windows XP
コンパイラ: lcc-win32 Ver3.8
です。
どなたか問題点を教えて下さい。お願いしますm(_ _)m
0276デフォルトの名無しさん
2005/05/08(日) 01:03:26CreateFileに渡しているlpCmdLineに何が入っているか確認してみようとは思わん?
0277デフォルトの名無しさん
2005/05/08(日) 01:33:09ダイアログボックスには何度も表示しましたが、改めてコンソールに出力してみると、
276さんに言われるまで見落としていたのですが、lpCmdLine に入っていたのは
C:\Document and Settings\・・・・\filename.txt
ではなくて、
"C:\Document and Settings\・・・・\filename.txt"
↑ ↑
文字列そのものの両端にダブルクォーテーションがある
ということに気づきました。
気づかない方がヴァカなのかも知れませんが、(私にとって)これは盲点でした。
でも、その一言のお陰で解決しました。どうも有難うございましたm(_ _)m感謝感謝
0278デフォルトの名無しさん
2005/05/08(日) 02:41:52ちなみにD:\とかだとダブルクォーテーションが排卵よ
0279デフォルトの名無しさん
2005/05/08(日) 03:23:070280デフォルトの名無しさん
2005/05/08(日) 03:24:340281デフォルトの名無しさん
2005/05/08(日) 03:59:090282デフォルトの名無しさん
2005/05/08(日) 04:18:38D:\・・・ でもダブルクォーテーション入りました(当方の環境では D ドライブは CD-ROM)。
こちらの環境が Windows XP だからなのか、それとも lcc-win32 のためなんでしょうか・・・・・・
0283デフォルトの名無しさん
2005/05/08(日) 06:19:390284デフォルトの名無しさん
2005/05/08(日) 06:54:03"を含むパス名って存在しないんだっけ?
パーサを書こうにも仕様がわからんとね。
0285デフォルトの名無しさん
2005/05/08(日) 07:31:04仕様がわからんとねとか言う前に、自分でファイル名つけてみろよ
0286デフォルトの名無しさん
2005/05/08(日) 07:31:210287デフォルトの名無しさん
2005/05/08(日) 07:46:140288デフォルトの名無しさん
2005/05/08(日) 08:53:310289デフォルトの名無しさん
2005/05/08(日) 11:00:010290デフォルトの名無しさん
2005/05/08(日) 11:12:03天然記念物だな
0291デフォルトの名無しさん
2005/05/08(日) 11:41:22某コンピューター系大企業の生産現場では、製品チェック用のノーマルWin95PCが現役だったよ。
工場とかには結構な数あるんじゃないかな?
0292デフォルトの名無しさん
2005/05/08(日) 11:50:330293デフォルトの名無しさん
2005/05/08(日) 11:51:37製品チェック用のマシンにどこの馬の骨とも知らんヤツの作ったアプリ入れるんかい
0294デフォルトの名無しさん
2005/05/08(日) 13:03:460295234
2005/05/08(日) 14:59:050296デフォルトの名無しさん
2005/05/08(日) 15:58:27とりあえず俺はしらね
0297デフォルトの名無しさん
2005/05/08(日) 16:21:16たとえば、1024幅が2台あってプライマリを左にすれば、 0 - 2047 の範囲になる
0298デフォルトの名無しさん
2005/05/08(日) 17:07:380299デフォルトの名無しさん
2005/05/08(日) 17:33:52ひっくり返るほどスレ違いすぎ。
0300デフォルトの名無しさん
2005/05/08(日) 18:46:41えっ、ダライアスだよ。
0301234
2005/05/08(日) 20:19:46ありがとうございます。
仮想スクリーンてのはこのあたりの文章を参照しました。
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/gdi/monitor_7hym.asp
0302デフォルトの名無しさん
2005/05/08(日) 21:31:20セミコロン(;)つきのファイル名って存在しますか?
0303デフォルトの名無しさん
2005/05/08(日) 21:37:520304デフォルトの名無しさん
2005/05/08(日) 21:42:12セミコロンをファイル名リストの区切りにしようとしてたんだけど、
破綻しちゃった。
おススメの区切り文字ってありますか?
0305デフォルトの名無しさん
2005/05/08(日) 21:51:20タブ文字でも改行でも
0306デフォルトの名無しさん
2005/05/08(日) 21:52:21MFCのCFileDialogでやってるように縦簿'|'はどう?
0307306
2005/05/08(日) 21:53:350308デフォルトの名無しさん
2005/05/08(日) 21:58:03普通にセミコロンでいいじゃんか。
環境変数のパス名とかの区切りだし
0309デフォルトの名無しさん
2005/05/08(日) 22:02:29'\0'
0310デフォルトの名無しさん
2005/05/08(日) 22:06:10ありがとうございました!
0311デフォルトの名無しさん
2005/05/08(日) 23:05:500312デフォルトの名無しさん
2005/05/08(日) 23:31:17その時点で使ってない子ウィンドウは、どのようにしておくのが推奨されていますか?
毎回、使う度にCreate と Destroyを繰り返すのはシステムに負荷が掛かるのでしょうか?
一応、作成しておいて、ただ見えなくしておくだけの方がいいのでしょうか?
0313デフォルトの名無しさん
2005/05/08(日) 23:32:27好きにしろ
0314デフォルトの名無しさん
2005/05/08(日) 23:44:28TPOに応じて方法を使い分けるべきかと。
少数の複雑なウインドウなら隠蔽するだけのほうがいいと思うが、多数のボタンやエディトボックスなら使うたびにCreateとDestroyを繰り返したほうがいい。
一つのプログラムに二つの方法を混在させると開放し忘れでリークするということもあるだろうからどちらかに統一するのがベター。
0315デフォルトの名無しさん
2005/05/09(月) 00:11:27マナーの良いプログラミングを心掛けていきたいと思っています。
0316デフォルトの名無しさん
2005/05/09(月) 00:15:47ウィンドウのアクティブ/非アクティブを変えても WM_ACTIVE が捕捉できません。
全く同じコードで WM_LBUTTONDBLCLK などのメッセージは捕捉できるのですが
WM_ACTIVE は何か特別扱いになっているのでしょうか?
0317デフォルトの名無しさん
2005/05/09(月) 00:44:41フォルダ名を""で括ればok
0318デフォルトの名無しさん
2005/05/09(月) 00:57:320319デフォルトの名無しさん
2005/05/09(月) 01:08:14WM_ACTIVEはsendされるメッセージ。
WH_GETMESSAGEはpostされたメッセージしか捕らえられない。
0320デフォルトの名無しさん
2005/05/09(月) 01:51:38なるほど。ありがとう御座います。
WH_CALLWNDPROC でフックできました。
0321デフォルトの名無しさん
2005/05/09(月) 03:41:12や
ReadDirectoryChangesW()
のように、ディレクトリごとではなく、ファイルごとに変更を知る方法はありませんか?
一つのファイルを複数のプロセスが共有で開いて読み書きしている時に、
他の誰かが書きこんだことを知りたいので、書き込まれた位置までわかるとありがたいのですが。
0322デフォルトの名無しさん
2005/05/09(月) 04:07:200323デフォルトの名無しさん
2005/05/09(月) 04:27:120324デフォルトの名無しさん
2005/05/09(月) 05:43:250325デフォルトの名無しさん
2005/05/09(月) 07:18:57PROCESSENTRY32 unko;
と宣言してるのですが
「'PROCESSENTRY32' : 識別名を宣言するのに、型が指定されていません」
とエラーがでます。解決方法を教えてください
0326デフォルトの名無しさん
2005/05/09(月) 08:44:110327デフォルトの名無しさん
2005/05/09(月) 08:47:080328デフォルトの名無しさん
2005/05/09(月) 09:03:47既にやってる
0329デフォルトの名無しさん
2005/05/09(月) 09:13:09うぇwwwっうぇwwwwwwwwwwwwっwwwっうぇ
うはっwwwwwwwwwwwwwwwうはっwww
うぇwwwっwおkwwwっwwwwwwwwwwwww
0330デフォルトの名無しさん
2005/05/09(月) 09:13:12「CreateToolHelp32Snapshot' : 定義されていない識別子」って出ます。原因と解決方法を教えてください
0331330
2005/05/09(月) 09:17:510332デフォルトの名無しさん
2005/05/09(月) 09:41:32>>328を書いた以上、経過を説明してくれないかな
0333330
2005/05/09(月) 10:18:540334デフォルトの名無しさん
2005/05/09(月) 10:28:52...ENTRY... に「出るもの」の名前は後任者が勘違いしやすい。ここはもっと
ピタッとする名前があるのにしないのはまずいな。
0335デフォルトの名無しさん
2005/05/09(月) 11:34:350336デフォルトの名無しさん
2005/05/09(月) 16:00:17いやいや、その変数をEntryするのかもしれんぞ。
#どこにかは知らんが。
0337デフォルトの名無しさん
2005/05/09(月) 16:46:460338デフォルトの名無しさん
2005/05/09(月) 16:49:330339デフォルトの名無しさん
2005/05/09(月) 17:05:29詳しく
0340デフォルトの名無しさん
2005/05/09(月) 17:17:22http://www.google.co.jp/
0341デフォルトの名無しさん
2005/05/09(月) 17:45:05あの続きのコードを見たくなった。日経の小説も気になってんだけど。
0342デフォルトの名無しさん
2005/05/09(月) 18:06:47知らないならレスしないで下さい。ウザイだけです、消えてください
0343デフォルトの名無しさん
2005/05/09(月) 18:08:010344デフォルトの名無しさん
2005/05/09(月) 18:14:450345デフォルトの名無しさん
2005/05/09(月) 18:20:42素直にアウトプロセスCOMみたいなRPCな仕掛けを挟んだら?
0346デフォルトの名無しさん
2005/05/09(月) 19:37:000347デフォルトの名無しさん
2005/05/09(月) 21:09:50ただたんにテキストをかえるだけではだめなようです。
そのコンボボックスのハンドルはわかっています。
wm_Settext文字を変更することはできたのですが内部的には確定されていないのか結果が反映されないのです
0348デフォルトの名無しさん
NGNGCB_ADDSTRINGで文字列を追加して、帰ってきたインデックスをCB_SETCURSELで選択。
0350デフォルトの名無しさん
2005/05/10(火) 10:32:06あとPROCESSENTRY32構造体のメンバth32ProcessIDにはProcess32Nextなどで最後に得たプロセスIDが格納されるのですか?
0351デフォルトの名無しさん
2005/05/10(火) 10:49:53ファイル単位で監視っていうのは無かったと思う。
0352デフォルトの名無しさん
2005/05/10(火) 10:58:45ディレクトリの変更がきたら自分で調べりゃいいだろ
0353デフォルトの名無しさん
2005/05/10(火) 10:59:490354デフォルトの名無しさん
2005/05/10(火) 12:20:28ありがとうございます
しかしそれでは目的のテキスト(CB_SETCURSELでセットしたインデックスのテキスト)は一瞬表示されますが
それが選択状態にはならず元にもどってしまいます
なにかいい方法はないでしょうか
0355デフォルトの名無しさん
2005/05/10(火) 12:30:30>>353を晒し上げ(´,_ゝ`)
0356デフォルトの名無しさん
2005/05/10(火) 12:40:49他のイベントで変な事してるんじゃないのか?
0357デフォルトの名無しさん
2005/05/10(火) 12:45:30新規で試しにワードパッドのフォントを変えるものを作ってみましたが
同様でした。
コードは
SendMessage((HWND)コンボボックスのハンドル,CB_SETCURSEL,77,0);
念のためそのコンボボックスの親ウィンドウに
SendMessage((HWND)親ウィンドウのハンドル, WM_COMMAND,MAKEWPARAM(165, CBN_SELCHANGE),(LPARAM)(HWND)コンボボックスのハンドル);
と送ってみましたがそれでもダメでした
0358デフォルトの名無しさん
2005/05/10(火) 12:48:32>新規で試しにワードパッドのフォントを変えるもの
新規で作って検証するなら、
ウィンドウにコンボボックスのみを貼り付けて、
そのコンボボックスに CB_SETCURSEL を送るだけじゃないのか?
って言うか、外部プロセスのコンボボックスを変えようとしている?
0359デフォルトの名無しさん
2005/05/10(火) 12:50:060360デフォルトの名無しさん
2005/05/10(火) 12:51:080361デフォルトの名無しさん
2005/05/11(水) 01:28:05Win32において
Destoryを実行した場合
Destoryを実行されたWindowが一番最後にうけとるメッセージはなんなのでしょうか?
WM_NCDESTROYが最後でいいのでしょうか?
私的ライブラリでGUIをクラスライブラリ化したのですが
ウィンドウが破棄されたタイミングで自身のインスタンスにたいして
delete thisを行いたいのです。
MFCのほうではPostNcDestroyなるメソッドがあるっぽいのですが・・・
Win32オンリーの場合はどのように対処したらよいのでしょうか?
0362デフォルトの名無しさん
2005/05/11(水) 01:30:290363デフォルトの名無しさん
2005/05/11(水) 01:53:31それで良いと思う。気になるならMFCのソースを見てコードをまねれ。
0364デフォルトの名無しさん
2005/05/11(水) 06:52:22その後のWM_QUITはウィンドウプロシージャでは受け取らない
よって、NCDESTROYが最後にウィンドウが受け取るメッセージ
0365349
2005/05/11(水) 09:55:50ありがとう。
無駄に重くなるけど、ディレクトリごと監視します。
>>350
ReadProcessMemoryの返り値はBOOLですよ。
0が返ってきたら、GetLastError()してエラーコードを見ましょうよ。
0366デフォルトの名無しさん
2005/05/11(水) 11:59:41あぁ?失敗したらヌルポが返るんだよデブ。もう原因わかったからどっか行っていいよ
0367デフォルトの名無しさん
2005/05/11(水) 12:09:09「ヌルポ」がcatchできないんですが^^
0368デフォルトの名無しさん
2005/05/11(水) 13:30:36まあしねよぶた
0369デフォルトの名無しさん
2005/05/11(水) 14:28:27汚いんですが(ゴミが入るようなかんじ)、フリーか何かで代用のAPIないでしょうか?
教えてください
0370デフォルトの名無しさん
2005/05/11(水) 14:31:15キタ━━━━(゚∀゚)━━━━ッ!!
0371デフォルトの名無しさん
2005/05/11(水) 14:36:43SetStretchBltMode はどのモードでやった?
0372デフォルトの名無しさん
2005/05/11(水) 15:28:24つ[DirectX]
0373デフォルトの名無しさん
2005/05/11(水) 15:35:070374デフォルトの名無しさん
2005/05/11(水) 16:14:070375デフォルトの名無しさん
2005/05/11(水) 16:22:290376デフォルトの名無しさん
2005/05/11(水) 16:57:48フォルダの中のファイルの監視をしたいのですが
下のコードを実行して c:\test フォルダ内のファイルの内容を変更すると
メッセージボックスが二回表示されてしまいます。
変更は一回しかしていないのに二回でてしまうのですが
ここまでコードを短くしても出るので行き詰まってしまいました
二回検知してしまう動作が正しいのでしょうか?
どこかおかしくて二回出てしまうのならばご指摘お願いします。
HANDLE hFind = FindFirstChangeNotification( "C:\\test\0", FALSE, FILE_NOTIFY_CHANGE_SIZE );
if( hFind == INVALID_HANDLE_VALUE )
return;
while( 1 )
{
DWORD ret = WaitForSingleObject( hFind , INFINITE );
if( ret == WAIT_OBJECT_0 )
{
MessageBox( NULL, "TEST", "Changed!", MB_OK );
if( FindNextChangeNotification( hFind ) == 0 )
return;
}
}
FindCloseChangeNotification( hFind );
0377デフォルトの名無しさん
2005/05/11(水) 17:54:36変更手段によるかと。
例えばエディタの場合、一時ファイルを作ったりするから一回の変更と思っても
複数回ファイル操作が行なわれているかも。
実際、fopen(..., "w")を行なうと空のファイルができるのでこの段階で一回、
fclose()でバッファフラッシュが起きて一回、都合2回通知されることは実験で確認した。
0378デフォルトの名無しさん
2005/05/11(水) 18:02:26何でファイルを変更しているのか知らないけど、多くのソフトはファイルを一度
0 サイズにクリアしてから改めて書き込む (CreateFile() で CREATE_ALWAYS を
指定したり、fopen() で "w" を指定していたりなど) ので、
1. 0 クリアで 1 回
2. データの書き込みで 1 回
の合計 2 回、変更が検知される。
(試しに 0 バイトのデータを保存してみること)
さらに、ディスクキャッシュサイズごとに書き込むので、そのたびに
変更が検知される可能性もある。
0379376
2005/05/11(水) 18:40:25>>378
そういうことだったのですか!よく分かりました。
ファイルが変更されたあとフォルダのサイズが変わる?ので二回きている
とか色々考えていました
ちなみにファイルはテイストファイルでnotepadで書き換えていました
でも二回くるのはどうしようもないですね
ちょっと厄介になってきましたが
上手く一回だけ処理できるよう試行錯誤してみます
ありがとうございました
0380デフォルトの名無しさん
2005/05/11(水) 18:54:060381デフォルトの名無しさん
2005/05/11(水) 18:57:14箸が転がっても笑う人?
0382デフォルトの名無しさん
2005/05/11(水) 18:59:37いやそれはさすがに 笑う
0383デフォルトの名無しさん
2005/05/11(水) 19:11:280384デフォルトの名無しさん
2005/05/11(水) 19:17:41( ゚∀゚)彡 ワラタ!!ワラタ!!
⊂彡
0385デフォルトの名無しさん
2005/05/11(水) 19:18:550386デフォルトの名無しさん
2005/05/11(水) 20:12:21WAVEファイルを自前で解析するしか方法はありませんか?
WAVE ファイルを解析するための API はないのでしょうか?
0387デフォルトの名無しさん
2005/05/11(水) 20:17:270388デフォルトの名無しさん
2005/05/11(水) 20:33:090389デフォルトの名無しさん
2005/05/11(水) 20:35:59標準のwavファイルならヘッダを取り除けば、あとは生のPCMデータのはずだけど。
低レベル再生したいのなら、>>387のWaveOut系APIでも使えば良い。
再生中に、サンプルデータも自由に処理できるしね。
高レベルAPIでいいなら、PlaySound()やsoundPlaySound()で。
0390デフォルトの名無しさん
2005/05/11(水) 20:43:59ところでMCIってまだあるのかな。
考えたら5年ぐらいマルチメディア刑API触ってないや
0391デフォルトの名無しさん
2005/05/11(水) 20:47:12waveファイルってRIFF形式だった気がするんだが。
mmio〜系のAPIで操作できる・・・はず
0392デフォルトの名無しさん
2005/05/11(水) 20:48:47> 標準のwavファイルならヘッダを取り除けば、あとは生のPCMデータのはずだけど。
PCMとは限らないんだけど。。。
0393デフォルトの名無しさん
2005/05/11(水) 20:52:55もちろん残ってる。Win95の頃と実装は変わってるようだけど。
0394デフォルトの名無しさん
2005/05/11(水) 22:19:33作るのが面倒臭かったらこんなの使ってみたら?
Wave File Library(Windows95/98/Me/プログラミング)
ttp://www.vector.co.jp/soft/win95/prog/se214677.html
0395デフォルトの名無しさん
2005/05/11(水) 22:25:02いやしかし、既成ライブラリに頼るというのはこの場合正解だよ。
WavOutは使いやすいとは言い難いしな。
0396デフォルトの名無しさん
2005/05/12(木) 01:11:31ピクチャーコントロールの更新されるタイミングが分からず困ってます。
DirectXの描画特有の問題かとも思ったのでDXスレで伺ったのですが、
なかなかレス頂けないみたいなのでこちらにも失礼します。
まずはアプリ起動時にDXで適当な矩形でも表示してみようと、
WM_INITDIALOGで矩形描画関数を呼んでみたのですが、
一瞬描画されたあと、ピクチャーコントロールの色で塗りつぶされてしまうようでした。
なので、WM_PAINT内でも同じように描画関数を呼んで見たのですが相変らず
起動時に矩形を表示してくれません。
(というかピクチャーコントロールの描画で消されているような感じ。)
WM_LBUTTONDOWN内などで描画すればきちんと表示されるのですが、
WM_MOVE内で呼んだ時などは、一度目の移動では表示されず、
二度目以降の移動では表示されるという、よく分からない挙動になっています。
どうしたらいいのでしょうか?
環境はW2k、VC6、DX9.0bです。よろしくお願いします。
0397デフォルトの名無しさん
2005/05/12(木) 01:58:25まずはDirectX描画域の背景を描画しない設定にする。
ダイアログのスタイルにWS_CLIPCHILDRENを適用、
コントロール側のWM_ERASEBKGNDで0以外の値を返す
これでちらつき・上書きは消えるはず。
0398デフォルトの名無しさん
2005/05/12(木) 02:18:11例えば、コマンドラインから notepad を起動したとき、
C:\>notepad[改行]
C:\>
(notepad が開く)
となりますが、自作のプログラムでは
C:\>hogehoge[改行]
(hogehoge が終了するまで待機状態)
となってしまいます。
これを解決するにはどうすればよろしいのでしょうか?
0399デフォルトの名無しさん
2005/05/12(木) 02:23:26コンソールアプリでビルドしてないか?
0400398
2005/05/12(木) 02:28:36C:\>lcc hogehoge.c
C:\>lcclnk hogehoge.obj
というふうに実行ファイルを作成しています。
それとも、この環境では >>398 の問題を解決することは出来ないのでしょうか?
0401デフォルトの名無しさん
2005/05/12(木) 02:46:14C:\ > fiber.exe hoge.c
ってすれば
「.c」拡張子のファイルをクリックした時に起動するプログラムがそのファイルを開いて
シェルにも処理がもどる。
0402デフォルトの名無しさん
2005/05/12(木) 02:54:22それは「Win32API」の話ではなく、特定の処理系の話なのでスレ違い
0403398
2005/05/12(木) 02:58:49エディタのことではなくて、自分で作成(コンパイル)した Win32API プログラムを実行したときに、
そのプログラムが実行したままシェルにも処理が戻るようなプログラムを作りたいのです。
C:\>lcc hogehoge.c
C:\>lcclnk hogehoge.obj
C:\>hogehoge
C:\>
(hogehoge.exe は実行されたまま)
となるような hogehoge.c を作りたいのですが、どうすればよろしいのでしょうか?
プロセスやスレッドについて調べてみても、どうもうまく行きません。
0404デフォルトの名無しさん
2005/05/12(木) 02:59:280405398
2005/05/12(木) 03:13:58そんな関数があったんですね。
どうもありがとうございました!!m(_ _)m感謝感謝
0406396
2005/05/12(木) 03:38:07ありがとうございます。
>まずはDirectX描画域の背景を描画しない設定にする。
>コントロール側のWM_ERASEBKGNDで0以外の値を返す
この二つの意味は同じでしょうか?別の事を指してますか?とりあえず
DirectXで描画したいのはダイアログ内に配置したピクチャーコントロールなのですが、
これをサブクラス化してその自前プロシジャ内に
case WM_ERASEBKGND:
return 1;
と追加してみたのですが、変わりませんでした。
>ダイアログのスタイルにWS_CLIPCHILDRENを適用、
これはピクチャコントロールが乗ってる親ダイアログのプロパティで設定しても変わりませんでしたし、
ピクチャコントロール自体にSetWindowLongでWS_CLOPCHILDRENを設定してみても変わりませんでした。
0407デフォルトの名無しさん
2005/05/12(木) 03:47:08http://ex10.2ch.net/test/read.cgi/news4vip/1115834824/
0408デフォルトの名無しさん
2005/05/12(木) 04:03:08今の状態だとエクスプローラから実行するとコンソールが開くんでないかい。
それで構わないのならFreeConsoleでも使ってればいいんだけど、
そうじゃないのなら、lcclnkのマニュアルをよく読んどけ。
0409デフォルトの名無しさん
2005/05/12(木) 05:37:12そもそもWindowsプログラミングの
0410デフォルトの名無しさん
2005/05/12(木) 06:34:19何をしたいのかによるけど、
通知を何度受けるかわからない
という前提で作ったほうがいいですよ。
また通知を受けるたびに処理をしてたら重くなるので、
通知を受けたら、変更があったということだけ覚えておき、
それに対するアクションはその場ではしないほうがいいです。
もし通知に対してアクションをしたいのであれば、
1秒くらい待ってからやったほうがいいかも。
0411デフォルトの名無しさん
2005/05/12(木) 10:40:440412デフォルトの名無しさん
2005/05/12(木) 11:18:490413デフォルトの名無しさん
2005/05/12(木) 12:26:40URLからホスト名などを抜き出すAPIはありますか?
0414デフォルトの名無しさん
2005/05/12(木) 12:31:00使ったことは無いけど、
>文字列が正当なURLであるかどうかを確かめるAPI
::UrlIs()にURLIS_URLを渡して確認する。
>URLからホスト名などを抜き出すAPI
::UrlGetPart()にURL_PART_HOSTNAMEを渡して切り出す
0415デフォルトの名無しさん
2005/05/12(木) 14:58:39できました。
ありがとうございます。
#shlwapi.dllには、自前で書くこともできるけど、面倒くさいから書きたくない処理をする関数がたくさんある気がする。
0416デフォルトの名無しさん
2005/05/12(木) 16:22:36レジストリを使うアプリが嫌われる理由は何?
0417デフォルトの名無しさん
2005/05/12(木) 16:42:40インストールしたフォルダを削除しても消えないからね。
まあそれが利点でもあるんだけど。
0418デフォルトの名無しさん
2005/05/12(木) 17:03:32Win9xの場合はそれが原因で不安定になることがあった。
もういい加減過去の話だが。
0419デフォルトの名無しさん
2005/05/12(木) 17:08:540420デフォルトの名無しさん
2005/05/12(木) 17:41:010421デフォルトの名無しさん
2005/05/12(木) 18:15:16自分ちのマシンならどこでもいいが・・・
0422デフォルトの名無しさん
2005/05/12(木) 19:53:111つのフォルダごとコピー・移動・削除
では済まなくなるので、レジストリと大差ないんだよね。
その割には、メリットがない。
EXEと同じフォルダにINIファイルを置くのは、
シングルユーザ当たり前のDOS時代の悪い慣習を引きずってると思う。
レジストリにすれば、ファイルのインストール先を気にしなくていいし、
レジストリをバックアップすれば、一括して設定をバックアップできるよね。
0423デフォルトの名無しさん
2005/05/12(木) 20:06:10ユーザーのフォルダの取得って何を使えばよいですか?
ユーザー毎の設定を\Documents and Settingsの奥深くにある
フォルダに置きたい。
0424デフォルトの名無しさん
2005/05/12(木) 20:10:22初心者の発想だね
0425デフォルトの名無しさん
2005/05/12(木) 20:17:34GetEnviromentVariableで環境変数HOMEPATHを取得
USERPROFILEでもいい
0426デフォルトの名無しさん
2005/05/12(木) 20:23:180427デフォルトの名無しさん
2005/05/12(木) 20:37:49ありがとう。
0428デフォルトの名無しさん
2005/05/12(木) 20:41:310429デフォルトの名無しさん
2005/05/12(木) 20:42:21商用とかシェアウェアにとっては
0430デフォルトの名無しさん
2005/05/12(木) 20:56:28ttp://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/jpdnw2kcli/htm/AppSpecDesk5.asp
SHGetFolderPath() を使ったやり方が書いてある。
こっちの方が MS の推奨ということか?
0431デフォルトの名無しさん
2005/05/12(木) 22:14:00それがMS推薦っぽいね。
0432デフォルトの名無しさん
2005/05/12(木) 23:35:080433デフォルトの名無しさん
2005/05/13(金) 00:29:19レジストリのサイズは消せば小さくなると思うけど・・・
VS.NETをインストール中に、一時的にものすごく大きくなるけど、インストール終わると減るし。
>>424
他に良い方法があれば教えてください。
1つのINIファイルの中にユーザごとに設定を書くと、
一人の設定を他所に移すのが難しくなるよね。
ユーザ別にINIファイルを分けると、
ユーザ名が変わったときにファイル名を変更しないといけない。
ユーザ名の代わりにSIDを使うと、他所のドメインやPCに移したら困るし。
0434デフォルトの名無しさん
2005/05/13(金) 00:52:58キーや値を削除してもサイズが減らない、それがWINDOWSのレジストリ
0435デフォルトの名無しさん
2005/05/13(金) 00:55:480436デフォルトの名無しさん
2005/05/13(金) 01:39:36詳しく
0437デフォルトの名無しさん
2005/05/13(金) 01:42:170438デフォルトの名無しさん
2005/05/13(金) 01:50:05新ウィンドウズが出てるんだろ。
XPももう過去の物だろw
0439デフォルトの名無しさん
2005/05/13(金) 04:05:29SendMessageやPeekmessageでは矢印や
ABYXに相当するボタンの情報を送っても無反応です。
(F1や1等ゲームというよりSnesの機能に相当するものは動きます。)
(例えばキーボードのAにSnesのAを割り当ててSendMessage送っても効果なし)
なんかこれ解消するAPIないっすか?
0440デフォルトの名無しさん
2005/05/13(金) 04:47:210441デフォルトの名無しさん
2005/05/13(金) 04:54:380442439
2005/05/13(金) 05:37:470443デフォルトの名無しさん
2005/05/13(金) 05:56:070444439
2005/05/13(金) 06:14:58MSいってみます
0445439
2005/05/13(金) 12:56:46キタ*・゜゚・*:.。..。.:*・゜(゚∀゚)゚・*:.。. .。.:*・゜゚・*!!!!!
後世の為に置き去りメモ
SendInputを使う為にstdafx.hの中に
#define _WIN32_WINNT 0x0501
#define WINVER 0x0501
を宣言。呼び出したい場所で
UINT ret;
INPUT tt;
tt.ki.wVk=0x41;
tt.ki.dwFlags=0;
tt.ki.time=0;
tt.type=INPUT_KEYBOARD;
ret=SendInput(1,&tt,sizeof(INPUT));
押しっぱになるのでdwFlagsで適度に補正してやる必要あり。
0446デフォルトの名無しさん
2005/05/13(金) 13:43:200447デフォルトの名無しさん
2005/05/13(金) 15:23:29プロセスIDのベースアドレス
この時点で、何か間違ってるよ。
いったい何がしたいの?
0448デフォルトの名無しさん
2005/05/13(金) 16:10:32readprocessで戻ってきたハンドルのベースアドレスだよタコ。ほんとお前みたいカスがくると気分悪くなるぜ。
お前のせいでまたこんなレスしてしまった俺は結局自分で解決するハメになると。ほんとうぜぇ・・・
0449デフォルトの名無しさん
2005/05/13(金) 16:17:250450デフォルトの名無しさん
2005/05/13(金) 16:18:10プロセスID→プロセスハンドルにはOpenProcess()がある。
0451デフォルトの名無しさん
2005/05/13(金) 16:26:000452デフォルトの名無しさん
2005/05/13(金) 16:27:23―――┴┴┴┴┴―――――、
/.  ̄ ̄ ̄//. ̄ ̄| || ̄ ̄ ̄||| ̄ || __________
/. ∧// ∧ ∧|.|| ||| || /
[/____(゚_//[ ].゚Д゚,,) ||___||| || < >>448,451を迎えに来ました
||_. * _|_| ̄ ̄ ∪|.|. .|ヽ. _|| \__________
lO|o―o|O゜.|二二 東|.|京 精神 .病院 ||
| ∈口∋ ̄_l__l⌒l_|_____|_l⌒l_||
 ̄ ̄`ー' ̄ `ー' `ー' `ー'
0453デフォルトの名無しさん
2005/05/13(金) 16:52:25お前がやりたいこと次第。
0454デフォルトの名無しさん
2005/05/13(金) 17:03:080455デフォルトの名無しさん
2005/05/13(金) 17:10:11ごめんよ、おれもわかんねーや
0456デフォルトの名無しさん
2005/05/13(金) 17:57:30http://www.microsoft.com/japan/msdn/subscriptions/resources/additionalincident.aspx
http://www.microsoft.com/japan/msdn/subscriptions/resources/support.aspx
0457デフォルトの名無しさん
2005/05/14(土) 01:12:530458デフォルトの名無しさん
2005/05/14(土) 04:00:39ほんと使えねーなー
0459デフォルトの名無しさん
2005/05/14(土) 04:10:02矩形を描画しようとしているのですが、全く表示されません。
TextOutしてみても何も文字が表示されません。
どこがおかしい部分があるでしょうか?
何か他の部分で、ここがあやしそう、などありましたら教えてください。
hdc=GetDC(hWnd);//hWnd=GetDlgItemで取得したボタンのハンドル
hPen=CreatePen(PS_SOLID,1,RGB(r,g,b));//rgbは適当な値が入ってる
hBrush=CreateSolidBrush(RGB(r,g,b));
SelectObject(hdc,hPen);
SelectObject(hdc,hBrush);
Rectangle(hdc,0,0,100,100);
TextOut(hdc,0,0,"iii",3);
0460459
2005/05/14(土) 04:22:41WM_INITDIALOG内でやってたのでダメだったようです。
0461459
2005/05/14(土) 05:02:09今までデバイスコンテキストの取得はGetDCを使ってたのですが、
GeginPaintとかいうのを使った方がいいらしいので書き換えました。
ですが、ダイアログ起動時に四角形は描画されるものの、ボタン自体が描画されません。
ボタンの部分を押してみるとボタンは出現するのですが、
今度は四角形が消えてしまいます。どうしたらよいのでしょうか。
//ダイアログのプロシジャ内
case WM_PAINT:
DrawRect(GetDlgItem(hWnd,IDC_BUTTON),100,100,0);
return FALSE;
//矩形描画関数
void DrawRect(HWND hWnd,int r,int g, int b){
PAINTSTRUCT paint;
HDC hdc;
HBRUSH hBrush;
RECT rct;
GetClientRect(hWnd,&rct);//hWnd はボタンのハンドル
hdc=BeginPaint(hWnd,&paint);
hBrush=CreateSolidBrush(RGB(r,g,b));
SelectObject(hdc,hBrush);
Rectangle(hdc,4,4,rct.right-5,rct.bottom-5);
EndPaint(hWnd,&paint);
ReleaseDC(hWnd,hdc);
DeleteObject(hBrush);
}
0462デフォルトの名無しさん
2005/05/14(土) 06:47:52ほんとここの無知どもはウザイよね。
おまえの気持ちはよくわかる。
特に>>449の馬鹿は、わかんねーのに答えるからレベル低下してるってのが
どうやら理解できないらしい。
というわけだから、わかるおれが答えてあげよう。
全部説明するとなると大変なのでかいつまんで言うと、
まずプロセスといっても中で実行されてるのはスレッドという単位だ。
つまりプロセスで実際に動いているスレッドを特定する必要がある。
これはいろんな方法があるので別途AdvancedWindows読むなり
すればわかる。PSAPIとかでググるのもいいかも。
スレッドを特定するまでできたら、そのスレッドに対して一旦
SuspendThreadなりで停止させ、GetThreadContextを呼ぶ。
すると現在の正確なEIPが得られる。
EIPが得られたら、そのアドレスからこんどはプロセスに
割り当てられているメモリのベースアドレスを特定する。
メモリのチェインをたどっていけばEIPの範囲に収まる
ブロックが見つかるはず。
それが質問のベースアドレスということになる。
まあPSAPIを使わなくても、たとえば普通のアプリなら
0x400000以降がベースアドレスだとか決め打ちされてる。
もちろんこの辺を細工しているアプリもある。
これの特定はプロセスにロードされているコードセクションの
PEヘッダ部分を見るのが手っ取り早い。
一番早いのは、そのプロセスに侵入してしまうという方法。
この辺のやり方の詳細を知りたいなら、やっぱり
AdvancedWindowsを読んどくのが良い。
0463デフォルトの名無しさん
2005/05/14(土) 07:13:03プロセス・スレッド周りの質問は説明しようとすると長くなるからね。
こんな糞スレだと、その説明が正確とも限らないし。
とりあえずやり方だけでも知っとけば道は開ける。
やっぱあの本の存在は偉大なんだよなあ。
ちなみにAdWinにはPEヘッダの読み方は載ってないので、
その辺はWebか何かで調べるしかない。
pe formatかなんかでぐぐれば出てくる。
PEヘッダの構造を理解するのにはかなり時間がかかると思うけど、
プロセスを解析する近道はPEヘッダなので、この辺はぜひ調べて欲しい。
0464459
2005/05/14(土) 08:41:54簡略化してUPしました。ソースとVC6のリソースが入ってます。
おかしい所を指摘していただけると助かります。
ダイアログ内にボタンが二つあります。
起動時にボタンの上に白い四角が表示されるのが理想なのですが、
なぜかボタン自体が描画されません。
ボタンを押すと色選択ダイアログが開き、
選択した色の四角がボタンの上に表示されるようにしたいです。
ですが、このサンプルではなぜか、一方のボタンで色を選択すると
もう一方のボタンの上の四角が消えてしまいます。
常に表示されているようにしたいです。
よろしくお願いします。
ttp://gamdev.org/up/img/2660.zip
0465デフォルトの名無しさん
2005/05/14(土) 08:50:44ボタンはダイアログの子ウィンドウ。
WM_PAINTが来たのはダイアログであって、ボタン(子ウィンドウ)に来たわけではない。
だからそのコードは不正。
で、そういうことがしたければオーナードローしなさい。
0466デフォルトの名無しさん
2005/05/14(土) 08:53:32>おかしい所を指摘
あんたの頭。
以下解説を書こうとしたら>465に先を越されたので割愛。
0467デフォルトの名無しさん
2005/05/14(土) 12:05:12オーナードローの他に、サブクラス化すると言う手もある。
どちらも詳細はググルか ttp://www.kumei.ne.jp/c_lang/ 辺りを探せ。
0468デフォルトの名無しさん
2005/05/14(土) 12:11:23> うるせぇカスだなぁ。わかんねぇならでしゃばんなよボケが。
人に文句つける前に、自分の日本語を見直せよ。
[ >>446より ]
> プロセスIDのベースアドレスを求めるには
・プロセスID
プロセスを一意に識別するための識別子
識別子にベースアドレスなどない。
君の質問は、
「整数値 1 のベースアドレスを求めるにはどうすればよいか?」
などと言っているのと大差ない。
日本語は正しく使え。
0469デフォルトの名無しさん
2005/05/14(土) 12:48:59ありがとうございます。
>>468
カスは黙っとけ(プw
0470デフォルトの名無しさん
2005/05/14(土) 12:59:53ウィンドウを何よりも最前面に表示するにはどうすればいいのでしょうか?
DirectDraw等で全画面+最前面になってる物のさらに上に表示したいです
普通に最前面にしただけでは無理でした orz
0471459
2005/05/14(土) 13:09:56サブクラス化はボタン一個ずつに対してプロシジャ作るのが面倒くさいからやめました。
ボタンを押したらColorChooserダイアログを出して色を選択し、
ボタン上の四角に反映させたかったのですが、
押された後ではボタンのイベントは発生しないので、
オーナードローでは次に押すまで色が反映されないのでダメでした。
結局、消極的な方法で妥協しました。ありがとうございました。
0472デフォルトの名無しさん
2005/05/14(土) 13:28:520473デフォルトの名無しさん
2005/05/14(土) 13:51:58�@ウインドウ作成してアクティブな状態にする
�Aマウスでウインドウ外をクリックして非アクティブにする
�Bタイマーで定期的に ShowWindow や SetForegroundWindow などを呼ぶ
�Aと�Bを繰り返すと、一回目は最前面にウインドウが表示されるのに、2回目以降は最前面に表示されません。
どうすれば最前面に表示することが出来るのでしょうか?
よろしくお願いします。
0474デフォルトの名無しさん
2005/05/14(土) 14:04:12CreateWindowEx(WS_EX_TOPMOST, ...
>>470のような高度な要求をしなければこれでいい。
SetForegroundWindow()は2000/XPで挙動が変更されたはず。
0475470
2005/05/14(土) 14:24:43まえゲームで全画面+最前面なものをしてたときに、
なんかの拍子で、最前面表示してた後ろのWinampがゲーム画面内にずっと表示されたままになったので
なにかほかに方法があるのかなと思ったのです orz
#Winampは再生中の時間もちゃんと表示され操作も可能でした
0476デフォルトの名無しさん
2005/05/14(土) 15:18:29ttp://saw.minidns.net/software/index.html#soft09
こーゆーの使うとかじゃ駄目か?
0478デフォルトの名無しさん
2005/05/14(土) 19:22:54DirectDrawSurfaceはGDIのクリッピング領域に従わないと思うから
ちゃんと描画されない気がするけど
0479デフォルトの名無しさん
2005/05/14(土) 19:30:280480デフォルトの名無しさん
2005/05/14(土) 21:57:59> ボタンを押したらColorChooserダイアログを出して色を選択し、
> ボタン上の四角に反映させたかったのですが、
そういうボタンならサクラエディタなるオープンソースのテキストエディタに
あるからソースを参照にしてみるのはどうかな?
ちなみにサクラエディタではオーナードローで描画してるよ。
> 押された後ではボタンのイベントは発生しないので、
> オーナードローでは次に押すまで色が反映されないのでダメでした。
これはどこかソースがまずいんじゃない?
オーナードローは大した手間ではないし、コントロール上で自分の
好きなように描画する定石なんで知ってて損は無いよ。
あと、
> サブクラス化はボタン一個ずつに対してプロシジャ作るのが面倒くさいからやめました。
こいつは実装次第でどうにでもできる。
0481デフォルトの名無しさん
2005/05/14(土) 22:53:41自力で使いこなせないようなレベルの低い香具師って、
ろくでもないことをやろうとしている人間の屑だろうな。
どうせゲームのチートツールやウィルス等の怪しげなものを作ろうとしてるんだろ?
いいかげんウザイので、答えを教えてやる。
VirtualQuery()だ。
もうこのスレに出てくるなよ。
0482デフォルトの名無しさん
2005/05/15(日) 09:49:47カスが必死にググッてその様かwwwwwそんなもん質問する前から知ってますがwwwwwwwいい加減カスは黙ってチンポでも弄ってろwwwww
0483デフォルトの名無しさん
2005/05/15(日) 09:53:030484デフォルトの名無しさん
2005/05/15(日) 10:51:410485473
2005/05/15(日) 11:02:32レスサンクス
早速試してみましたが駄目でした
0486デフォルトの名無しさん
2005/05/15(日) 11:15:18SetWindowPosでHWND_TOPMOS指定したら?
0487デフォルトの名無しさん
2005/05/15(日) 12:04:330488デフォルトの名無しさん
2005/05/15(日) 12:48:460489デフォルトの名無しさん
2005/05/15(日) 12:52:490490デフォルトの名無しさん
2005/05/15(日) 13:00:500491デフォルトの名無しさん
2005/05/15(日) 13:05:41プログラムなんかやめたほうがいいよ
0492デフォルトの名無しさん
2005/05/15(日) 13:28:360493デフォルトの名無しさん
2005/05/15(日) 13:57:40腕組みながらあの自信に満ち溢れた顔なんかとくに。
0494デフォルトの名無しさん
2005/05/15(日) 15:11:360495デフォルトの名無しさん
2005/05/15(日) 15:18:03IQいくつ?
0496デフォルトの名無しさん
2005/05/15(日) 15:25:090497デフォルトの名無しさん
2005/05/15(日) 15:43:310498デフォルトの名無しさん
2005/05/15(日) 16:13:140499デフォルトの名無しさん
2005/05/15(日) 17:56:000500デフォルトの名無しさん
2005/05/15(日) 18:00:550501デフォルトの名無しさん
2005/05/15(日) 18:45:110502デフォルトの名無しさん
2005/05/15(日) 20:08:300503デフォルトの名無しさん
2005/05/15(日) 20:21:01標準が 3d6 なんだから激高だろ。
0504デフォルトの名無しさん
2005/05/15(日) 22:46:030505デフォルトの名無しさん
2005/05/15(日) 23:53:100506473
2005/05/15(日) 23:56:07レスサンクス
早速試してみましたが駄目でした
0507デフォルトの名無しさん
2005/05/16(月) 00:37:11printf("%d",i);
みたいに引数を渡すことは出来ないのでしょうか?
0508デフォルトの名無しさん
2005/05/16(月) 00:40:020509デフォルトの名無しさん
2005/05/16(月) 00:41:14自分で作ってもわけないよ。こんなやつ
ttp://www14.big.or.jp/~ken1/tech/tech20.html
0510デフォルトの名無しさん
2005/05/16(月) 00:44:21どうもありがとうございます。
さっそく続きを作っていこうと思います。
0511デフォルトの名無しさん
2005/05/16(月) 01:54:210512デフォルトの名無しさん
2005/05/16(月) 02:31:58グラハム数くらいです
0513デフォルトの名無しさん
2005/05/16(月) 14:11:280514513
2005/05/16(月) 14:13:040515デフォルトの名無しさん
2005/05/16(月) 14:14:59スレ違い
0517デフォルトの名無しさん
2005/05/16(月) 20:18:32どうしてもグローバルが多くなるんですけど、
皆さんはどうやって解決してますか。
0518デフォルトの名無しさん
2005/05/16(月) 20:22:31コールバックデータに入れるだろ、普通。
0519デフォルトの名無しさん
2005/05/16(月) 20:40:33是非とももう少し詳しく解説お願いします。
0520デフォルトの名無しさん
2005/05/16(月) 20:43:08つまり、受け渡したいデータを構造体にまとめて、
関数の引数に渡すってことだ。それだけだ。
0521デフォルトの名無しさん
2005/05/16(月) 20:45:23解りやすっ
別人だけどありがとうございました。
0522デフォルトの名無しさん
2005/05/16(月) 20:53:490523デフォルトの名無しさん
2005/05/16(月) 20:55:29構造体のポインタに型変換してよく使ってるもんなー
0524デフォルトの名無しさん
2005/05/16(月) 20:56:280525デフォルトの名無しさん
2005/05/16(月) 21:03:030526デフォルトの名無しさん
2005/05/16(月) 21:23:10とくに、ポインタ関係。
64bitのプログラムは、64bit用の新しいAPIを使うのかな
0527デフォルトの名無しさん
2005/05/16(月) 21:43:00今でも残ってる16bit版みたいに互換性が必要なヤツ以外は
0528デフォルトの名無しさん
2005/05/16(月) 21:47:08適切に作ればソースはそのままでいけることになっている。
W/LPARAMは64ビット化されていて、それぞれUINT_PTR/LONG_PTRからのtypedefになっている。
その〜_PTRってのはポインタと同じサイズの整数型、つまりWin64では64ビットになる。
DWORD_PTRなんてわけわからんものもあるが。
一部のAPIはそれに対応した版が追加されている。(SetWindowLongPtrなど)
0529デフォルトの名無しさん
2005/05/16(月) 21:52:150530526
2005/05/16(月) 22:02:3864bitのWindowsのAPIを利用したプログラミングと言ったほうがいいのかな。
32bitのバイナリはエミュで走らせるからいいとして、
64bitはtypedefを変えているからソースはそのままでコンパイルしなおすだけで動くというわけですか。
でも、本当に完全に、「適切」に書いている人ってどれぐらいいるんだろう。
ポインタが4バイトで、int型も4バイトってのが前提なソースを書いている人もかなり居そうなんだけど。
typedefされて、さらに何重にもdefineされているあの変数名をそのまま使っていない人もかなりいそうな気がする。
0531デフォルトの名無しさん
2005/05/16(月) 22:15:36Win32ではDWORD_PTRはunsigined long _w64からのtypedefdeで、ULONG_PTRもそこからtypedefされている。
わけわからんって書いたのはDWORDは32ビットということ(x86では)なんだから、
DWORDと名乗る型に32ビットではないものがあるというのがわけわからんと言いたかったから。
>>530
これがすべてを物語っている。
SetWindowLong の検索結果のうち 日本語のページ 約 2,980 件
SetWindowLongPtr の検索結果のうち 日本語のページ 約 44 件
ちなみにVCではint/longは4バイトのまま。long/LONGをsigned DWORDとして使っているから永遠に(I)LP64へは移れないだろうな。
0532デフォルトの名無しさん
2005/05/16(月) 22:22:13そんなこと言ったって、Win32のDWORDは現にunsigned longのtypedefなんだしさ・・・
DWORDは32bitと決まってるならunsigned longのtypedefはおかしいんじゃ?
あれ?longって規定は32bitだっけ・・・?
0533デフォルトの名無しさん
2005/05/16(月) 22:31:47それはVCやその他Win16/32用コンパイラが(unsigned )longを32bitにしていたのを利用しただけ。
Cができたときからstdint.hがあれば間違いなくtypedef uint32_t DWORD;になっていただろう(と信じたい)。
ちなみにC/C++の規格を見るとlongは32ビット以上が必要と言える。
0534デフォルトの名無しさん
2005/05/16(月) 22:36:06ウィンドウをクリックしたまま、そのウィンドウを出て、
別のウィンドウに移るとWM_MOUSEMOVEやWM_LBUTTONUPが
飛んでこなくなるんですけどなんでですか?
初めにWM_LBUTTONDOWNでセットしたグローバル変数にも
参照できなくなります。
誰か教えてくださいmm(__)mm
0535デフォルトの名無しさん
2005/05/16(月) 22:59:44フックプロシージャは DLL 内に置いてあるか?
あと、DLL の場合 #pragma data_seg("shared") に包んでやらないと
プロセスごとにグローバル変数の実態も変わるからな。
0536534
2005/05/16(月) 23:02:19>フックプロシージャは DLL 内に置いてあるか?
もちろん置いてます。
>あと、DLL の場合 #pragma data_seg("shared") に包んでやらないと
>プロセスごとにグローバル変数の実態も変わるからな。
まさにそんな感じです。ちょっと調べてみます。
またわからないことあったら教えてください。
0537デフォルトの名無しさん
2005/05/17(火) 00:01:37親ウィンドウにスタティックコントロールを子ウィンドウとして置き、ここに目的の描画処理を行っています。
で、この子ウィンドウのスクロールバーが上手く動きません。
具体的には
1.ウィンドウにSetFocusしない限りWM_VSCROLL/WM_HSCROLLが来ない
2.スクロールバーをドラッグしてもWM_VSCROLL/WM_HSCROLLが来ない
3.それどころかドラッグしてもポインタが動かない
4.にも関わらず、スクロールバー上での右クリックメニューからのスクロールは可能
1は大体諦めて、SetFocusした後はスクロールするんだからと妥協しましたが・・・。
2〜4がいまひとつ納得いきません。
子ウィンドウ上でドラッグなどしつつ届くメッセージをチェックしたところ、WM_NCHITTESTくらいしか来ていません。
WM_NCHITTESTを拾って、スクロールバー上の座標ならHTVSCROLL/HTHSCROLLを返すようにしてみましたが、効果なし。
使用しているのがスタティックコントロールだというのが主要因かとは思いますが、こちらも別件で問題が発生して頓挫しています。
(ResisterClassExしたクラスでCreateWindowExが失敗する)
よい打開策はありませんでしょうか?
一応、別にスクロールバーコントロールを作成するという案はありますが、修正箇所が多くて二の足を踏んでいます。
これしかない、というのであれば別コントロール案を採用します・・・。
0538デフォルトの名無しさん
2005/05/17(火) 00:26:25なんのための64ビットだよ?
0539デフォルトの名無しさん
2005/05/17(火) 00:33:552Gオンメモリで読み込みなんてそのうち当たり前になってくるかも。
0540526
2005/05/17(火) 00:34:44int型のサイズを変えて既存のソースを動かせなくするより、
64bitのintは__int64型にするなどとしてしまったほうが都合がいいのでは?
0541デフォルトの名無しさん
2005/05/17(火) 01:30:48あのころは16bit->32bitだったが・・・
0542デフォルトの名無しさん
2005/05/17(火) 01:47:34デフォルトでは64ビットにしておけよ。
なんでクソソースに合わせなきゃならんのだよ?
できの悪いほうに合わせるなんてまるで日本の教育だな。
0543デフォルトの名無しさん
2005/05/17(火) 02:01:25それよりも short 16bit、int 32bit、long 64bit の方が
型の意味的にも綺麗なんだけどなぁ。
0544デフォルトの名無しさん
2005/05/17(火) 02:28:34俺らに当たってもどうしようもなかろ?
0545デフォルトの名無しさん
2005/05/17(火) 07:08:06::SHGetFileInfo( Ext, NULL, &shfInfo,
sizeof(SHFILEINFO), SHGFI_USEFILEATTRIBUTES | SHGFI_ICON | SHGFI_SMALLICON );
で関連づけられているアイコンを取得しようとしています。ワードのファイルの場合"*.doc"でうまくいきますが、
エクスプローラのフォルダやドライブのアイコンを取得したい場合どのようにすればよいのでしょうか?
Shell32.DLLから決めうちで取得してもよいのですが、将来OSの仕様が変わったときが心配です。
0546デフォルトの名無しさん
2005/05/17(火) 09:58:24★初心者にVisual C++を教えるスレ★ Part19
http://pc8.2ch.net/test/read.cgi/tech/1116209988/35
> ドライブ名をすべて列挙するにはどうしたらよいのでしょうか?
GetLogicalDrives
GetLogicalDriveStrings
どちらでも好きなほうをどうぞ。
0547デフォルトの名無しさん
2005/05/17(火) 14:19:16ヒープ領域って1アプリ(?)辺り、如何ほど頂けるのでしょうか?
最後に、VCでのmalloc = HeapAllocと考えてよろしでしょうか?
0548デフォルトの名無しさん
2005/05/17(火) 15:49:23大雑把に言うと
VirtualAllocはプロセスのメモリ空間から直接メモリを割り当てる。だからオーバーヘッドがでかい。
HeapAllocは一旦独自のヒープをVirtualAllocで確保し、そこから必要なだけ切り出してくる。
だからこまごまとしたメモリ(数MBまで)の確保にはHeapAllocが、広大なメモリの確保にはVirtualAllocが適している。
0549デフォルトの名無しさん
2005/05/17(火) 15:54:24VC持ってるなら、mallocのソースもあると思うから読んでみるよろし
0550デフォルトの名無しさん
2005/05/17(火) 16:05:430551547
2005/05/17(火) 16:21:53どうも
0552デフォルトの名無しさん
2005/05/17(火) 16:40:530553デフォルトの名無しさん
2005/05/17(火) 16:42:400554デフォルトの名無しさん
2005/05/17(火) 18:31:510555デフォルトの名無しさん
2005/05/17(火) 18:33:030556デフォルトの名無しさん
2005/05/17(火) 18:37:540557デフォルトの名無しさん
2005/05/17(火) 20:22:28大
||
ω
0558デフォルトの名無しさん
2005/05/17(火) 20:37:06適当なこと言うなよ。
VirtualAllocとHeapAllocではメモリをどこから持ってくるかが違う。
ただしHeapAllocでデフォルトヒープのみを使う場合は
GlobalAllocやLocalAllocしても同じ。
0559デフォルトの名無しさん
2005/05/17(火) 21:16:38「AdvancedWindows読め」
0560デフォルトの名無しさん
2005/05/17(火) 21:19:03>If dwMaximumSize is zero, the heap is growable. The heap's size is
>limited only by available memory. Requests to allocate blocks larger
>than 0x7FFF8 bytes do not automatically fail; the system calls the
>VirtualAlloc function to obtain the memory needed for such large blocks.
0561デフォルトの名無しさん
2005/05/17(火) 21:44:020562デフォルトの名無しさん
2005/05/17(火) 22:00:48それぐらい凄い本。
本来MSDNに含まれるべきだが商売汚いM$は絶対そんなことしない。
0563デフォルトの名無しさん
2005/05/17(火) 22:13:32ProgramingWindows2000とか。
0564デフォルトの名無しさん
2005/05/17(火) 22:23:21乞食臭い
0565デフォルトの名無しさん
2005/05/17(火) 22:39:20UNIX板やLinux板でその発言してみろ
泣いて向かってくるぞ
0566デフォルトの名無しさん
2005/05/17(火) 22:42:150567デフォルトの名無しさん
2005/05/17(火) 23:01:07VirtualAllocとHeapAllocを
MSDNライブラリで引いてみりゃ、
その違いはすぐにわかるでしょ。
0568デフォルトの名無しさん
2005/05/18(水) 00:22:04TextOut()って文字列ですよね?
一文字だけ描画する場合もこの関数を使うんでしょうか?
0569デフォルトの名無しさん
2005/05/18(水) 00:23:060570537
2005/05/18(水) 00:30:39やっぱそれしかないのかな・・・_| ̄|○
0571デフォルトの名無しさん
2005/05/18(水) 00:36:11状況がよくわからん。IDは-1じゃないよな?
CreateWindowExの失敗も追及してみないか
0572537
2005/05/18(水) 00:53:45レスありがとう。
IDって何を指してますでしょうか?
SetScrollInfoのウィンドウハンドル?(そんな訳ないか
根本的な対策という意味ではCreateWindowExの失敗を追った方がよいかも知れません。
2つまとめて質問するのは失礼かつ分かりにくいかと思って、スクロールバーに絞った所存です。
必要ならば、ResisterClassExとCreateWindowExの処理部分を晒します。
0573568
2005/05/18(水) 01:07:28お返事ありがとうございます。
TextOut()の4番目の引数(文字列のポインタを指定するところ)に
char型の変数のアドレスを渡すのってありですか?
実行してみたら普通に動いたんですけど、このやりかたで問題ないのでしょうか?
それとも文字をchar[]かstring型の変数に代入してからやったほうが良いのでしょうか?
0574デフォルトの名無しさん
2005/05/18(水) 01:26:06文字列長に-1を指定してないなら、charのアドレスを渡すのもアリ。
0575デフォルトの名無しさん
2005/05/18(水) 01:28:06文字列長に-1を指定してないなら、charのアドレスを渡すのもアリ。
0576568
2005/05/18(水) 01:57:31お返事ありがとうございます。
文字列長に-1を指定するなんてこと普通ないと思うんですけど、
何か特別な意味が有るんでしょうか?
0577デフォルトの名無しさん
2005/05/18(水) 02:15:300578デフォルトの名無しさん
2005/05/18(水) 02:41:14DWORD_PTRは「DWORDもポインタも格納可能な型」ってことだから
sizeof(DWORD_PTR) >= max(sizeof(DWORD), sizeof(LPVOID))ならなんでもいい。
0579568
2005/05/18(水) 02:49:34すいません、どういうことかわからないんですけど。
もしかして文字列長に-1を指定すると自動的に文字列長を計算してくれるとか?
でも試しに文字列のポインタと-1を指定して実行してみたんですけど、
何も表示されなかったんですけど。
どういうことなんでしょうか?
0580567
2005/05/18(水) 03:01:57DrawText()関数では文字列長に-1を指定すると文字列長を自動的に計算してくれるみたいです。
TextOut()関数ではそれは無いみたいです。(たぶん)
0581デフォルトの名無しさん
2005/05/18(水) 07:42:59だからそれが気に入らないんだ。
0582デフォルトの名無しさん
2005/05/18(水) 10:32:10この際、君の好き嫌いは気にしちゃいられない
0583デフォルトの名無しさん
2005/05/18(水) 12:58:220584デフォルトの名無しさん
2005/05/18(水) 13:21:38先ずはその意味不明な日本語の解説をしてください。
0585デフォルトの名無しさん
2005/05/18(水) 13:28:460586デフォルトの名無しさん
2005/05/18(水) 13:28:59GetFileTimeして得られたFILETIMEを、FileTimeToSystemTimeで
SYSTEMTIMEに変換すればOK。
ただし、FATファイルシステムでは、タイムスタンプをローカルタイムで
持っているため、タイムゾーンの設定が間違っていた場合には、
GetFileTimeがそもそも誤った結果を返す。
このため、FATファイルシステムにおいては
>時差の設定の影響されないファイルのタイムスタンプの取得方法
は存在しない。
0587デフォルトの名無しさん
2005/05/18(水) 13:29:080588デフォルトの名無しさん
2005/05/18(水) 13:34:50「時差の設定の」「影響されないファイルのタイムスタンプの」取得方法かと思ったよ。
0589デフォルトの名無しさん
2005/05/18(水) 13:35:22ありがとう
>>587
子ね
0590デフォルトの名無しさん
2005/05/18(水) 13:56:230591デフォルトの名無しさん
2005/05/18(水) 14:02:01未設定です
0592デフォルトの名無しさん
2005/05/18(水) 14:05:350593590
2005/05/18(水) 14:08:27_tznameは使うなって事か‥‥
0594デフォルトの名無しさん
2005/05/18(水) 14:33:56Delete592()
0595デフォルトの名無しさん
2005/05/18(水) 14:44:390596デフォルトの名無しさん
2005/05/18(水) 14:50:22サーバにUIDLコマンドを投げれ
0597デフォルトの名無しさん
2005/05/18(水) 15:31:55無効にすることは可能ですか?
可能ならどうすれば…
0598デフォルトの名無しさん
2005/05/18(水) 15:35:59言ってくれないとわからんw
0599デフォルトの名無しさん
2005/05/18(水) 15:49:170600デフォルトの名無しさん
2005/05/18(水) 15:52:220601デフォルトの名無しさん
2005/05/18(水) 15:55:140602デフォルトの名無しさん
2005/05/18(水) 15:56:00時刻かなんかでメッセージ受けるの?
0603デフォルトの名無しさん
2005/05/18(水) 15:56:320604デフォルトの名無しさん
2005/05/18(水) 16:03:210605デフォルトの名無しさん
2005/05/18(水) 16:03:58マシンの制御がBIOSのACPI側に移行してるだろうから、
OS側ましてや、アプリケーションなんかではどうのこうのは出来ないはず。
スタンバイの場合はメモリには給電されてるから復帰が早いってだけじゃなかったっけ?
0606デフォルトの名無しさん
2005/05/18(水) 16:07:400607597
2005/05/18(水) 16:08:00マウスのホイールでスクロールしたときに、
ホイールクルクル止めても、行が多いとスクロールし続けてるのを何とかしたい…
RichEdit1 です
OSとか関係あるん?
xp,p43G,512M,ti4200
0608デフォルトの名無しさん
2005/05/18(水) 16:23:27寝てる本人にはどうしようもない。
0609デフォルトの名無しさん
2005/05/18(水) 16:24:13SetWaitableTimer
0610デフォルトの名無しさん
2005/05/18(水) 16:27:31ネタかと思ったら本当にあった。すげー
0611デフォルトの名無しさん
2005/05/18(水) 16:29:080612デフォルトの名無しさん
2005/05/18(水) 16:31:14スタンバイに入ってしまったらどうしようもないもんな
0613デフォルトの名無しさん
2005/05/18(水) 16:32:16は?まか?
0614デフォルトの名無しさん
2005/05/18(水) 16:32:210615デフォルトの名無しさん
2005/05/18(水) 16:34:550616デフォルトの名無しさん
2005/05/18(水) 16:35:430617デフォルトの名無しさん
2005/05/18(水) 16:38:360618デフォルトの名無しさん
2005/05/18(水) 17:36:07原因はコントロールの改行挿入が完了しないままEM_REPLACESELでTab挿入をしてることにあるみたいです。
エンターが押された後にコントロール内での処理が終わってから来るメッセージはありますか?
0619デフォルトの名無しさん
2005/05/18(水) 18:16:340620デフォルトの名無しさん
2005/05/18(水) 18:18:030621デフォルトの名無しさん
2005/05/18(水) 18:22:26BROWSINFO構造体のlpfnメンバにコールバック関数を設定して
コールバックの方で、BFFM_INITIALIZEの時にCreateWindowで自前で作れ
0622デフォルトの名無しさん
2005/05/18(水) 18:25:030623デフォルトの名無しさん
2005/05/18(水) 19:27:18サブクラス化
0624デフォルトの名無しさん
2005/05/18(水) 20:29:410625デフォルトの名無しさん
2005/05/18(水) 21:02:320626デフォルトの名無しさん
2005/05/18(水) 23:46:40hage
0627デフォルトの名無しさん
2005/05/19(木) 08:31:40金
0628デフォルトの名無しさん
2005/05/19(木) 09:18:390629デフォルトの名無しさん
2005/05/19(木) 09:26:020630デフォルトの名無しさん
2005/05/19(木) 10:19:28>スタンバイから復帰させる方法を教えてください
タスクスケジューラを設定しておくか、
WakeOnLANで起こしてもらうか、
手で電源ボタン押す。
0631630
2005/05/19(木) 17:28:030632デフォルトの名無しさん
2005/05/19(木) 17:30:500633630
2005/05/19(木) 17:51:320634デフォルトの名無しさん
2005/05/19(木) 18:03:270635デフォルトの名無しさん
2005/05/19(木) 18:16:490636デフォルトの名無しさん
2005/05/19(木) 18:24:360637デフォルトの名無しさん
2005/05/19(木) 18:57:590638デフォルトの名無しさん
2005/05/19(木) 18:59:120639デフォルトの名無しさん
2005/05/19(木) 19:03:09GetListBoxIndex()
0640デフォルトの名無しさん
2005/05/19(木) 19:45:12http://www.google.co.jp/search?hl=ja&c2coff=1&q=GetListBoxIndex
0641デフォルトの名無しさん
2005/05/19(木) 19:52:52リソースファイル(resource.rc)に
MYICON ICON DISCARDABLE "icon.ico"
MYICON2 ICON DISCARDABLE "icon2.ico"
などと書いて、プログラム中で MYICON と MYICON2 を切り替えようとしてもうまく行きません。
というより、どうやら最初の1つ(MYICON)しか認識されないようです。
どうすればよろしいのでしょうか?
0642デフォルトの名無しさん
2005/05/19(木) 20:16:050643デフォルトの名無しさん
2005/05/19(木) 20:16:28というのは具体的にどういう実装なのか
>うまく行きません。
とは、どういう期待に対する、不満足な結果なのか
を明らかにしないのは釣り。
0644デフォルトの名無しさん
2005/05/19(木) 21:12:310645デフォルトの名無しさん
2005/05/19(木) 21:23:490646デフォルトの名無しさん
2005/05/19(木) 21:38:47�dクス
0647641
2005/05/20(金) 07:15:57タスクトレイにアイコンを表示するには、
NOTIFYICONDATA n_mid;
m_nid.cbSize = sizeof(NOTIFYICONDATA);
m_nid.hWnd = hWnd;
m_nid.uID = TRAY_ID;
m_nid.uFlags = NIF_ICON | NIF_MESSAGE | NIF_TIP;
m_nid.uCallbackMessage = WM_TRAY;
m_nid.hIcon = LoadIcon(NULL, MAKEINTRESOURCE(IDI_EXCLAMATION));// ここではシステムの「!」マーク
lstrcpy(m_nid.szTip, TEXT("Tip Message"));
Shell_NotifyIcon(NIM_ADD, &m_nid);
変更するには、
m_nid.hIcon = LoadIcon(NULL, MAKEINTRESOURCE(IDI_QUESTION));// ここではシステムの「?」マーク
Shell_NotifyIcon(NIM_MODIFY, &n_mid);
などとすればよいことまでは分かるのですが、
自分で書いたリソースファイルの中に2つ以上定義したはずのアイコンが1つしか使えないのです。
自分で作成したアイコンを2つ以上使うにはどうすればよいのか、どなたか教えてください。お願いします。
0648デフォルトの名無しさん
2005/05/20(金) 07:49:070649デフォルトの名無しさん
2005/05/20(金) 10:22:31少なくとも、こちらで書いた中にそれを組み込んでも
普通に切り替わる。
>>647が書いてない部分に何か原因がありそう
0650537
2005/05/20(金) 11:36:07SCROLLBARクラスに変更したら、外観が他のウィンドウと異なることが発覚。
結局CreateWindowExの失敗を追及しようかと思うようになりますた。
ちなみに失敗するのはこんなコードです。
WNDCLASSEX wc;
wc.cbSize = sizeof(WNDCLASSEX);
wc.style = NULL;
wc.lpfnWndProc = RightWndProc;
wc.cbClsExtra = 0;
wc.cbWndExtra = 0;
wc.hInstance = hInst;
wc.hCursor = LoadCursor(NULL,IDC_ARROW);
wc.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);
wc.lpszMenuName = NULL;
wc.lpszClassName = (LPCTSTR)RWINDOWCLASS;
wc.hIconSm = NULL;
wc.hIcon = NULL;
RegisterClassEx(&wc);
hWnd = CreateWindowEx(WS_EX_CLIENTEDGE,
(LPCTSTR)RWINDOWCLASS,
"",
WS_CHILD | WS_VISIBLE | WS_BORDER,
log_rect.log_pos_x,//左ウィンドウ補正
log_rect.log_pos_y,
log_rect.log_width,//幅
log_rect.log_height,//高さ
hWndSuper,
(HMENU)ID_LOGVIEW,
hInst,NULL);
改行が多いと怒られたので分割します。
0651537
2005/05/20(金) 11:36:59RWINDOWCLASSにはヘッダでクラス名のテキストを定義してあります。
このコードで起きる現象。
・RegisterClassExは成功する。
・CreateWindowExがNULLリターンするが、GetLastErrorで取得するエラーは
「この操作を正しく終了しました。」
ちなみにRegsterClassExをコメントアウトすると
「ウィンドウクラスが見つかりません。」
となるので、クラス登録は成功していると考えられます。
WH_CBTフックもしてません。
ウィンドウプロシジャでWM_CREATEやWM_NCCREATEも処理していません。
ということで、原因をつかみかねております。
すいません助けて下さい・・・ 。・゚・(ノД`)・゚・。
0652537
2005/05/20(金) 11:40:41このCreateWindowExですが、クラスを"STATIC"に変えるだけで普通に動きます。
//STATICコントロールにした状態で作り込みしていましたので・・・
0653デフォルトの名無しさん
2005/05/20(金) 11:44:00発生するイベントを作りたいのですが、
その番号を配列文字列の数値に割り当てたいのです。
そのやり方を教えてください。
0654デフォルトの名無しさん
2005/05/20(金) 11:52:55その RightWndProc の WM_CREATE で何かやってる?
0655654
2005/05/20(金) 11:54:25WM_CREATE が来るかどうかは調べられる?
0656537
2005/05/20(金) 12:01:42ありがとうございます。
デバッガでトラップしてみたところ、WM_CREATEが来ていないように見えます。
ただ、CreateWindowExのエラーが出る前に、RightWndProcが2回呼ばれていました。
そのメッセージを見ると・・・
1回目:WM_NCCREATE
2回目:WM_NCDESTROY
アレ?これはもしかして・・・。
ちょっとRightWndProcを見直してみます。
ちゃんとDefWndProcしてないかも・・・。
0657デフォルトの名無しさん
2005/05/20(金) 12:01:59CS_OWNDC か CS_PARENTDC のどちらかをセットするとどうなりますか。
0659537
2005/05/20(金) 12:14:37親ウィンドウのWM_CREATE処理で
CreateWindowExするモジュールの呼び出し→SetWindowLongでサブクラス化
とやっているのが気になったので、RightWndProcのCallWindowProcをDefWindowProcに変更。
変化なし orz
0660537
2005/05/20(金) 12:57:54解決しました。
RegsterClassExの一部を変更しました。
wc.lpfnWndProc = DefWindowProc;
サブクラス化のSetWindowLongが後で走る訳ですから、クラス登録ではDefWindowProc
を登録しておけば済む話だったんですね・・・。
WM_NCCREATE→WM_CREATEとならずに
WM_NCCREATE→WM_NCDESTROYとなっていたのが重大なヒントになりました。
ありがとうございました。
0661デフォルトの名無しさん
2005/05/20(金) 15:57:38>リストボックスの全てのアイテムはインデックスとして管理されます
>最上段のアイテムのインデックスを 0 として、1ずつ増えていきます
>選択されているアイテムや、削除などの操作もインデックスで指定するので
>文字配列と照らし合わせるような処理には非常に便利です
となっていますが、
どうやって選択されたインデックスをint型変数に取得すればいいのでしょうか?
お願いします。
0662デフォルトの名無しさん
2005/05/20(金) 16:04:55そこに LB_GETCURSEL を使うって書いてあるじゃんか
0663デフォルトの名無しさん
2005/05/20(金) 16:12:13でもintにキャストできません
0664デフォルトの名無しさん
2005/05/20(金) 16:14:400665663
2005/05/20(金) 16:17:55これじゃダメですか?(ダメだったけど)
0666デフォルトの名無しさん
2005/05/20(金) 16:32:55どういう値を期待してどんな値が返ってきたの?
それで問題なく取得できるはずだけど。
ListCtrlじゃなくて、ListBoxだよね?
0667663
2005/05/20(金) 16:49:33ありがとうございます。
どうやら違うところで手違いがあったようです。
後は何とかなりそうです
0668663
2005/05/20(金) 17:01:47strcpy(name[0] ,buf[i][0]);
とか文字列に埋め込むと、なぜかフリーズしてしまうorz
0669デフォルトの名無しさん
2005/05/20(金) 17:03:22strcpy(name, buf[i]) ではないのか
0670663
2005/05/20(金) 17:22:10static char name[2][1024];
nameもbufも多次元変数です。
実のところソースは汚すぎなんで。。。
0671663
2005/05/20(金) 17:34:040672デフォルトの名無しさん
2005/05/20(金) 17:37:360673デフォルトの名無しさん
2005/05/20(金) 18:36:25後は i の値とか。
つか、ここに来たからには嘘でも lstrcpy を使え。
0674デフォルトの名無しさん
2005/05/20(金) 18:40:490675デフォルトの名無しさん
2005/05/20(金) 18:41:40マルチスレッドでshell namespaceを使い、zipの中身を列挙したいのです。
4Mと40Mのzipファイルを用意し、以下のソースを実行したところ(長くてすみません)、
STAの待ち行列に入っているような挙動になりました。
これを回避したいのです。
ちなみにエクスプローラだと、あるエクスプローラで40Mのzipを
開こうとしつつも、別のエクスプローラで4Mのzipを開けます。
0676デフォルトの名無しさん
2005/05/20(金) 18:42:08#include <stdio.h>
#include <process.h>
#include <shlobj.h>
#pragma comment(lib, "shell32.lib")
void f(void* p) {
int i = (int)p;
::OleInitialize(NULL);
wchar_t* name = (i%2==0) ? L"D:\\4M.zip" : L"D:\\40M.zip";
LPITEMIDLIST idl = ::ILCreateFromPathW(name);
LPSHELLFOLDER desk, sf; LPENUMIDLIST el; HRESULT hr;
hr = ::SHGetDesktopFolder(&desk);
hr = desk->BindToObject(idl, 0, IID_IShellFolder, (LPVOID*)&sf);
printf("start %d\n", i);
hr = sf->EnumObjects(NULL, SHCONTF_NONFOLDERS, &el);
printf("end %d %x\n", i, hr);
sf->Release();
desk->Release();
CoTaskMemFree(idl);
::OleUninitialize();
_endthread();}
int main(int argc, char* argv[]) {
HANDLE hs[10];
for (int i=0; i < 10; i++) hs[i] = (HANDLE)_beginthread(f, 0, (void*)i);
::WaitForMultipleObjects(10, hs, TRUE, INFINITE);
char buf[256];
gets(buf);
return 0;}
0677デフォルトの名無しさん
2005/05/20(金) 19:40:38> ちなみにエクスプローラだと、あるエクスプローラで40Mのzipを
> 開こうとしつつも、別のエクスプローラで4Mのzipを開けます。
この場合は、マルチスレッドではなくマルチプロセスになるから、
比べる意味がないのはわかってる?
0678デフォルトの名無しさん
2005/05/20(金) 19:48:12エクスプローラはマルチプロセスでしたっけ?
複数のエクスプローラを立ち上げると
explorer.exeのスレッドが増えるだけだと思いますが?
0680デフォルトの名無しさん
2005/05/20(金) 23:25:58そういうチェックボタンあったから、
たぶんマルチプロセスにもできるんだよ
0681デフォルトの名無しさん
2005/05/21(土) 00:46:32エクスプローラはマルチプロセスではないだろ?
0682デフォルトの名無しさん
2005/05/21(土) 00:56:50フォルダオプションの「別のプロセスでフォルダウィンドウを開く」なら、タスクバーその他を管理するプロセスとフォルダウィンドウを管理するプロセスを分けるってだけじゃないか?
0683デフォルトの名無しさん
2005/05/21(土) 01:31:21どうやって回避する?
0684デフォルトの名無しさん
2005/05/21(土) 01:32:58> 画面全体がバグる
> 画面全体がバグる
> 画面全体がバグる
> 画面全体がバグる
0685デフォルトの名無しさん
2005/05/21(土) 01:35:39ちゃんと初期化したいんですが、
仕様って後悔されてませんにょ
0686683
2005/05/21(土) 01:36:09ウィンドウとか全部真っ白になるけどそのプログラムを止めて再描画させるようにすれば直る。
0687デフォルトの名無しさん
2005/05/21(土) 01:38:17日本語を話せるようになってから、また来てくれ
0688デフォルトの名無しさん
2005/05/21(土) 07:31:41Timerの間隔は?
0689デフォルトの名無しさん
2005/05/21(土) 08:35:42VCをインストールしたディレクトリの中にスタートアップルーチンのソースもある。
0690663
2005/05/21(土) 08:50:22うおおおお。それだ!
ありがとうございます。
丸二日悩み続けていました。
0691デフォルトの名無しさん
2005/05/21(土) 09:01:16ロードしただけで自動的に初期化されないか?
そのためにDLL_*_ATTACHがあるんだから
0692デフォルトの名無しさん
2005/05/21(土) 12:46:090695デフォルトの名無しさん
2005/05/21(土) 13:57:32時間が長いんでないの?
0696デフォルトの名無しさん
2005/05/21(土) 14:00:070697デフォルトの名無しさん
2005/05/21(土) 16:42:24直接ファイルを読み込む方法を教えてください。
0698デフォルトの名無しさん
2005/05/21(土) 16:52:40http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/jpwinui/html/_win32_loadimage.asp
LR_LOADFROMFILE
0699デフォルトの名無しさん
2005/05/21(土) 17:16:33�dクス
0700デフォルトの名無しさん
2005/05/22(日) 00:48:57なんか違う気がするんだが・・・
0701デフォルトの名無しさん
2005/05/22(日) 01:11:02じゃ、答えはReadFile()とでも言いたいのかい?
0702デフォルトの名無しさん
2005/05/22(日) 01:49:270703デフォルトの名無しさん
2005/05/22(日) 07:06:410704デフォルトの名無しさん
2005/05/22(日) 07:45:03GetFileVersionInfo
0705デフォルトの名無しさん
2005/05/22(日) 14:38:55が発生したとき、例外ハンドリング時に動的にスタックを広げる(再マップする)ことは
可能でしょうか?
というか、可能だった気がするのですが、肝心の方法を忘れてしまいました。
どなたかご存知でしたらご教授願います。
0706デフォルトの名無しさん
2005/05/22(日) 16:11:060707デフォルトの名無しさん
2005/05/22(日) 19:06:37どうすればいいでしょうか?
0708デフォルトの名無しさん
2005/05/22(日) 19:11:320709デフォルトの名無しさん
2005/05/22(日) 19:19:59ありが�d
0710デフォルトの名無しさん
2005/05/22(日) 22:21:50Bitmapを左にスクロールさせたいのですが、
何か良い方法ないでしょうか?
ワーク用のビットマップを用意して、そちらにコピーして
また戻す、ってので一応できるのですが、
なんか無駄なので。。。
Google等でスクロールAPIを探したのですが、
見つけられませんでした。
(最初VC初心者スレに書いたのですが、こちらの方が適切っぽいので移動してきました)
0711デフォルトの名無しさん
2005/05/22(日) 22:29:01BitBlt2回でよくね?
0712デフォルトの名無しさん
2005/05/22(日) 22:35:28ScrollDCでスクロールさせて、更新領域だけBitBltでBitmapの範囲を指定して
Bltすればいいんでねえの?
0714デフォルトの名無しさん
2005/05/22(日) 22:37:570715デフォルトの名無しさん
2005/05/22(日) 22:43:230716711
2005/05/22(日) 22:53:08�@�A�B
�A�B�@
�B�@�A
ってしたいのかとオモタ
0717710
2005/05/22(日) 22:54:32ScrollWindowは何故かうまくいきませんでしたが、
(ダイアログに直接描画してるのがまずい?)
ScrollDCでBitmapをスクロールするとうまくいきました。
ただ、800*20の領域を10msecに1pixel動かしてる
だけなんですが、ちらつき気味です。。。
もう少し調査します。
ありがとう。
0718デフォルトの名無しさん
2005/05/22(日) 23:00:35・GetDC()よりはWM_PAINTのほうがちらつき(というかティアリング)が少ない
・頻繁に描画を繰りかえす場合はWM_ERASEBKGNDに注意
0719デフォルトの名無しさん
2005/05/22(日) 23:04:290720デフォルトの名無しさん
2005/05/22(日) 23:08:11WM_ERASEBKGND 動いてるんじゃない?
0721710
2005/05/22(日) 23:14:13return TRUE;
入れただけで、スムーズになりました。
問題なしです、助かりました!
0722デフォルトの名無しさん
2005/05/22(日) 23:42:110723デフォルトの名無しさん
2005/05/23(月) 00:18:400724デフォルトの名無しさん
2005/05/23(月) 02:56:19ファイル・フォルダの関連付けられているアイコンを
「任意のアイコンインデックス」かつ「任意のサイズ」で取得したいのですが、
何か良い方法はありますでしょうか?
16x16 や 32x32 などなら、ExtractIconEx なり SHGetFileInfo などで
いくらでも取得できるようなのですが、
24x24 や 48x48 のアイコンを取得する方法は見つかりませんでした。
もうかれこれ半日程google先生とお付き合いしています… orz
実行ファイルやアイコンファイル・DLLなどのリソースの場合はアイコンインデックスを有効にして、
それ以外の、普通のファイルやフォルダなどは、アイコンインデックスは無効で良いのです。
また、取得するのは HICON でも HIMAGELIST でも構いません。
ぜひ、ご教授ください。m(_ _)m
0725デフォルトの名無しさん
2005/05/23(月) 04:00:07GetSelectionでもらうのはHTREEITEMなのですがlParamを見るにはTV_ITEM
じゃないとだめなんです。
HTREEITEM <=> TV_ITEM
の結びつきってどうやって調べるのでしょうか?
COMMCTRL.hとかMSDN見てたけどなかなか出てこないorz
0726デフォルトの名無しさん
2005/05/23(月) 04:10:53PrivateExtractIcons
>>725
TVM_GETITEM
0727デフォルトの名無しさん
2005/05/23(月) 04:33:03これの方がいいな。
0728デフォルトの名無しさん
2005/05/23(月) 04:42:30ありがとう。
TVITEMにHTREEITEMをいれて呼ぶのね…
0729デフォルトの名無しさん
2005/05/23(月) 09:35:350730デフォルトの名無しさん
2005/05/23(月) 09:54:00どうも数が増えてくるともっさりしてきました。機能的にも物足りなく…。
3Dではプリミティブを描画するために、DirectXやOpenGLの様な有名なライブラリがありますが、
2Dでは、直線や曲線を描画するための、これは、というライブラリは無いのでしょうか。
それともWin32APIで十分だから、作る必要が無いのでしょうか。
0731デフォルトの名無しさん
2005/05/23(月) 10:02:08DirectX
0732730
2005/05/23(月) 10:29:58ありがとうございます。しかし欲しいのは2D用ベクタグラフィックライブラリでして。
DirectXがベースな分には構わないのですが、DirectXだけだと、曲線部分を自作しないとで。
要DirectXという2Dフリーソフトはほとんど無いし、やっぱりAPIで十分なんですかね。
0733デフォルトの名無しさん
2005/05/23(月) 11:05:49(ついでに音楽や入力系も)
サポートしているだろうが。
0734デフォルトの名無しさん
2005/05/23(月) 11:24:40処理の仕方が悪いに1票。
まさかWM_PAINT毎にGDIで描いてる訳じゃないよな?ないよな?
0735デフォルトの名無しさん
2005/05/23(月) 11:34:49WM_PAINTではBitBltしてるだけに決まってるじゃないか・・・たぶん
0736デフォルトの名無しさん
2005/05/23(月) 11:38:10WM_PAINTではPlayEnhMetaFileしてるに100ペリカ
0738デフォルトの名無しさん
2005/05/23(月) 12:07:09見事にスルーされているが
0739デフォルトの名無しさん
2005/05/23(月) 13:11:240740デフォルトの名無しさん
2005/05/23(月) 13:13:43wsprintf
0741デフォルトの名無しさん
2005/05/23(月) 13:40:470742デフォルトの名無しさん
2005/05/23(月) 13:51:25APIならFormatMessageだが、
それよりもsprintf使え
0743デフォルトの名無しさん
2005/05/23(月) 13:53:30どうやって記述します?
0744デフォルトの名無しさん
2005/05/23(月) 14:06:13知らないのはもぐり
0745デフォルトの名無しさん
2005/05/23(月) 14:09:59そんくらいヘルプ見れや
0746デフォルトの名無しさん
2005/05/23(月) 14:17:17HEXじゃなくて普通の数値できる?
12,345
みたいなの、
0747デフォルトの名無しさん
2005/05/23(月) 14:21:19ひょっとしてロケール設定反映した桁区切り付き文字列出したいのか?
0748デフォルトの名無しさん
2005/05/23(月) 14:27:03これは失礼しました。
普通の数値(10進数)を3桁のカンマで区切りたいということです
まあwsprintfやsprintfでは出来ないってわかってんだけどね。
0749デフォルトの名無しさん
2005/05/23(月) 14:32:27出来るぞ?
0750デフォルトの名無しさん
2005/05/23(月) 14:37:55まじですか?
ひょっとしてFormatMessageとか使ったりします?
う〜ん、これでも結構いろいろ探したんだけどなあ・・
0751デフォルトの名無しさん
2005/05/23(月) 21:59:43透過させて、システムカラーが表示されるようにしたいんだが。
0752デフォルトの名無しさん
2005/05/23(月) 22:42:49一旦文字列に変換してから、GetNumberFormat()
0753デフォルトの名無しさん
2005/05/23(月) 23:03:01???
0754751
2005/05/23(月) 23:29:54いや、ユーザーがウィンドウの色を変えたりした場合に、
ツールバーの自作アイコンの背景が、その色にならないので、
どうしたもんかなあ、と。何かやり方がおかしいのかな。
0755デフォルトの名無しさん
2005/05/23(月) 23:30:570756751
2005/05/23(月) 23:47:07ttp://www.kumei.ne.jp/c_lang/sdk/sdk_61.htm
の通りやったとしても、
ビットマップの背景は灰色で塗っちゃってるから、
灰色のままにならない?
0757デフォルトの名無しさん
2005/05/24(火) 00:37:000758デフォルトの名無しさん
2005/05/24(火) 07:40:300759デフォルトの名無しさん
2005/05/24(火) 09:09:240760デフォルトの名無しさん
2005/05/24(火) 11:06:420761デフォルトの名無しさん
2005/05/24(火) 11:13:170762デフォルトの名無しさん
2005/05/24(火) 11:16:29SHFileOperation
0763デフォルトの名無しさん
2005/05/24(火) 11:39:36鬼あり
0764デフォルトの名無しさん
2005/05/24(火) 12:02:570765デフォルトの名無しさん
2005/05/24(火) 12:12:360766デフォルトの名無しさん
2005/05/24(火) 12:22:380767デフォルトの名無しさん
2005/05/24(火) 12:38:13実行中のスクリーンセーバーを強制停止させるプログラムを書いているのですが
HDESKhScrDesk;
// ScreensaverDesktopを開く
if(!(hScrDesk = OpenDesktop("screen-saver",0,FALSE,DESKTOP_READOBJECTS | DESKTOP_WRITEOBJECTS)))
{
// Error処理
}
の部分でDesktopハンドルが取得できなくて困っています。GetLastError()の戻り値は
ERROR_FILE_NOT_FOUNDが返ってきています。
また、上記のコードのテストを行なう際にスクリーンセーバーを起動させてから数秒後に
上記コードが実行されるようにテストプログラムを作って確認しているのでスクリーン
セーバーが実行されていないということはないと思います……アドバイスをお願いします
0768デフォルトの名無しさん
2005/05/24(火) 12:38:32GetSysColor や GetSysColorBrush 使う
WM_SYSCOLORCHANGE で変更タイミングはわかる
0769デフォルトの名無しさん
2005/05/24(火) 14:14:450770デフォルトの名無しさん
2005/05/24(火) 14:58:040771デフォルトの名無しさん
2005/05/24(火) 15:08:410772デフォルトの名無しさん
2005/05/24(火) 15:12:420773デフォルトの名無しさん
2005/05/24(火) 15:18:56削除できるファイルと出来ないファイルの違いがよくわからないですが、
0774デフォルトの名無しさん
2005/05/24(火) 15:31:48AllocConsole();
0775デフォルトの名無しさん
2005/05/24(火) 15:36:41WinMainから始まるアプリなら、mainの中でWinMainを呼ぶようにすればいい。
AllocConsole()を呼ぶ必要も無く、printf()やstd::coutがそのまま使える。
0776デフォルトの名無しさん
2005/05/24(火) 15:38:53よく読めよこの磐梯が!
0777デフォルトの名無しさん
2005/05/24(火) 15:39:01_tmain
>>772-773
GetLastError→FormatMessageをやってみろ
エラーメッセージ見れば多少理由の推測くらいはできよう?
0778デフォルトの名無しさん
2005/05/24(火) 15:41:28VC++ならツールのエラーールックアップ(バージョンによるが)で
数字入れてみりゃいい。
6は無効なハンドル
0779デフォルトの名無しさん
2005/05/24(火) 15:42:52いやコードがわかってるから内容もわかってるんだけど、なぜこのエラーが出るかwからんのよ
削除できるファイルとできないファイルの違いがwからん
0780デフォルトの名無しさん
2005/05/24(火) 15:46:390781デフォルトの名無しさん
2005/05/24(火) 15:48:000782デフォルトの名無しさん
2005/05/24(火) 15:53:31SHFileOperation()のエラーはGetLastError()でエラーの種類を取得できるのか?
0783デフォルトの名無しさん
2005/05/24(火) 16:06:16いやなってないよ
>>782
ヘルプにはGetLastErrorでエラー返すって書いてないね
つかファイル名を1文字けずってやってみたら削除できないファイルも削除された
なにこれSHFileOperationのバグかなあ
0784デフォルトの名無しさん
2005/05/24(火) 16:09:260785デフォルトの名無しさん
2005/05/24(火) 16:20:420786デフォルトの名無しさん
2005/05/24(火) 16:23:060787デフォルトの名無しさん
2005/05/24(火) 16:25:18そういうバカなミスだろう。
憶測だけど。
0788デフォルトの名無しさん
2005/05/24(火) 16:26:02検討違いだったらゴメン
削除するファイルのパスだけど、ちゃんとNULL2つ付けてる?
0789788
2005/05/24(火) 16:26:360790デフォルトの名無しさん
2005/05/24(火) 16:33:17つーか、NULLって書くなや。混乱の元だがね。
0791デフォルトの名無しさん
2005/05/24(火) 16:35:200792デフォルトの名無しさん
2005/05/24(火) 16:38:20どっかにそう書いてあるの? 私の見たMSDNには
>Address of a buffer to specify one or more source file names. Multiple names must be null-separated. The list of names must be double null-terminated.
と書いてあるのだが。
0793デフォルトの名無しさん
2005/05/24(火) 16:40:220794デフォルトの名無しさん
2005/05/24(火) 16:44:02ありがとうございます。
>>775,777
DLLの場合は>>774のような方法ですか?
0795デフォルトの名無しさん
2005/05/24(火) 16:45:52あ?
・NULLで区切られた
・NULLで終わった
って書いてあるじゃねーか
0796767
2005/05/24(火) 16:48:02自己レスです。
あれから調べたところ、OpenDesktop()でscreen-saverDesktopHandleを
取ってくる方法はNT4までしか使えないということが判りました
SystemParametersInfo(SPI_GETSCREENSAVERRUNNING,...)とSetCursorPos()で
とりあえず目的は果たせたので、当面はこれで良いことにします
0797デフォルトの名無しさん
2005/05/24(火) 17:00:09NULLとnullを区別できないなら逝ってくれ。
0798デフォルトの名無しさん
2005/05/24(火) 17:00:38http://msdn.microsoft.com/library/en-us/shellcc/platform/shell/reference/structures/shfileopstruct.asp
>Each file name must be terminated by a single NULL character.
>An additional NULL character must be appended to the end of
>the final name to indicate the end of pFrom.
0799792
2005/05/24(火) 17:02:480800デフォルトの名無しさん
2005/05/24(火) 17:03:20(´m`*)ウププ
0801デフォルトの名無しさん
2005/05/24(火) 17:04:09ガッ
0802デフォルトの名無しさん
2005/05/24(火) 17:08:01レスるのはいいけどまずは国語の勉強してからレスしてくださいね
0803デフォルトの名無しさん
2005/05/24(火) 17:09:43?
0804デフォルトの名無しさん
2005/05/24(火) 17:11:39>787の何が問題なの?
>>800
>792が引用したのはnull-terminatedなのに>795はNULLで終わったとしているから、
>797は指摘したんでしょ。
0805デフォルトの名無しさん
2005/05/24(火) 17:19:100806デフォルトの名無しさん
2005/05/24(火) 18:08:02で、null-terminatedの日本語訳は?
っていうか、日本語版MSDNのAPIとかで、LPCTSTRとかの引数の説明に
はっきりと「NULL で終わる文字列へのポインタを指定します。」とか書いてあるんだけどね・・・
0808デフォルトの名無しさん
2005/05/24(火) 18:13:120809デフォルトの名無しさん
2005/05/24(火) 18:15:26下記の情報を参考にしたのですが
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winui/winui/windowsuserinterface/userinput/mouseinput/mouseinputreference/mouseinputmessages/wm_xbuttondown.asp
よくわかりません。
教えていただけないでしょうか?
0810デフォルトの名無しさん
2005/05/24(火) 18:15:560811デフォルトの名無しさん
2005/05/24(火) 18:32:15それだと、null tarminateじゃないとな
0812デフォルトの名無しさん
2005/05/24(火) 18:33:180813デフォルトの名無しさん
2005/05/24(火) 18:40:27>The list of names must be double null-terminated.
それぞれの名前は「null-separated」せよ
そのリストは「double null-terminated」せよ
(最後はダブル)
>Each file name must be terminated by a single NULL character.
>An additional NULL character must be appended to the end of
>the final name to indicate the end of pFrom.
各ファイル名は「single NULL character」でターミネートせよ
pFromの終りを示すために「An additional NULL character」を
最後のファイル名に追加せよ
(各ファイルはシングル)
0814デフォルトの名無しさん
2005/05/24(火) 18:42:470815デフォルトの名無しさん
2005/05/24(火) 18:44:40NULLとnullの違いってなんだね。
0816デフォルトの名無しさん
2005/05/24(火) 18:46:280817デフォルトの名無しさん
2005/05/24(火) 18:50:490818804
2005/05/24(火) 18:51:01null-terminatedの訳として、「nullで終わる」ではいけない?
直訳するなら「nullでターミネート(終端)された」でしょうけどそれは冗長でしょ。
#つーか、反論するならミススペリングしなさんな。
0819デフォルトの名無しさん
2005/05/24(火) 18:52:24WM_XBUTTONDBLCLK じゃなくて?
0820デフォルトの名無しさん
2005/05/24(火) 19:25:42冗長だからといって過去形を現在形にするのはいかがなものか
0821デフォルトの名無しさん
2005/05/24(火) 19:33:010822デフォルトの名無しさん
2005/05/24(火) 19:34:13翻訳の段階で情報が落ちるのは常だ。
0823デフォルトの名無しさん
2005/05/24(火) 19:38:080824デフォルトの名無しさん
2005/05/24(火) 20:16:320825デフォルトの名無しさん
2005/05/24(火) 21:19:43MessageBox(0,"NULLとnullは同じです","結果",MB_OK);
else
MessageBox(0,"NULLとnullは違います","結果",MB_OK);
こうすればNULLとnullは同じだということになるけど?
0826デフォルトの名無しさん
2005/05/24(火) 21:23:540827デフォルトの名無しさん
2005/05/24(火) 21:25:320828デフォルトの名無しさん
2005/05/24(火) 21:38:38MessageBox(0,"NULLとnullは同じです","結果",MB_OK);
else
MessageBox(0,"NULLとnullは違います","結果",MB_OK);
でもこうすればやっぱりNULLとnullは違う
0829デフォルトの名無しさん
2005/05/24(火) 21:46:28賢い漏れらは '\0' を使っておけば面倒な論争もガッも不要。
0831デフォルトの名無しさん
2005/05/24(火) 22:02:330832デフォルトの名無しさん
2005/05/24(火) 22:25:470833デフォルトの名無しさん
2005/05/24(火) 22:31:10英語読めない奴がプログラマやるな。
0834デフォルトの名無しさん
2005/05/24(火) 22:33:390835デフォルトの名無しさん
2005/05/24(火) 22:36:22そういう意味ではなくて、英語の方のMSDNも読めない輩が(ry
0836デフォルトの名無しさん
2005/05/24(火) 23:05:540837デフォルトの名無しさん
2005/05/24(火) 23:15:590838デフォルトの名無しさん
2005/05/24(火) 23:20:160839デフォルトの名無しさん
2005/05/24(火) 23:55:150840デフォルトの名無しさん
2005/05/25(水) 00:16:070841デフォルトの名無しさん
2005/05/25(水) 00:35:120842デフォルトの名無しさん
2005/05/25(水) 01:18:17方法(MAKEINTRESOURCEを使う)と文字列をセットする方法の二つがある
そうですが、後者の方法がわかりません。どの文字列をセットすれば
いいんですか?
0843デフォルトの名無しさん
2005/05/25(水) 01:22:35リソースのIDに文字列入れた時、その文字列
エディタ上では""でくくられてるからわかる
0844デフォルトの名無しさん
2005/05/25(水) 01:34:35サンクスです。でも、リソースエディタでメニューを選択していろいろ探しても""で囲まれた
文字列が見つかりません。resource.rc をテキスト形式で見ても、"ファイル"とか"編集"とか
の文字列はありますが、他にそれらしい文字列がありません。自分で文字列を割り当てるんで
すか?
0845デフォルトの名無しさん
2005/05/25(水) 01:35:49そうだよ
自分でいれるときは、ID_XXXを消して、"の入力からやってみそ
0846デフォルトの名無しさん
2005/05/25(水) 01:37:210847デフォルトの名無しさん
2005/05/25(水) 01:52:40よくわからないので教えて下さい。
0848デフォルトの名無しさん
2005/05/25(水) 02:18:330850デフォルトの名無しさん
2005/05/25(水) 04:37:36それとも handle to 〜 ですか ?
ポインタやリファレンスは to、配列は of ですよね。
pointer to 〜
reference to 〜
array of 〜
0851デフォルトの名無しさん
2005/05/25(水) 08:14:33EditBoxにフォーカスがある状態でタブキーが押されたのを検知したいと思っています。
しかしWM_KEYDOWNにVK_TABが来ませんで…
素のままでも、無駄は承知で試しにサブクラス化しても同様です。
リソースのEditBoxに対しサブクラス化した場合は、ちゃんとVK_TABが取れるのですが…。
何か条件がありましたら教えて頂けないでしょうか。WS_GROUP、WS_TABSTOP指定の有無辺りは試しました。
0852デフォルトの名無しさん
2005/05/25(水) 09:15:39↑
この記述を見かけたんですけど、
これは何をやっているんでしょうか?
ただのRGB(32, 128, 64) とは違うんですか?
0853デフォルトの名無しさん
2005/05/25(水) 09:35:18それはただの間違いかと
0854851
2005/05/25(水) 09:38:32無事(サブクラス化無しで)取得できました。
WS_GROUP、WS_TABSTOPも無しでOKでした。スレ汚し失礼。
0855デフォルトの名無しさん
2005/05/25(水) 09:43:51普通に来るけどなあ・・・
WM_GETDLGCODE で何かしてる?
0856855
2005/05/25(水) 09:44:240858亀
2005/05/25(水) 10:48:570859デフォルトの名無しさん
2005/05/25(水) 10:56:13Win32APIで?
なんか勘違いしてるよ
0860亀
2005/05/25(水) 10:59:210861デフォルトの名無しさん
2005/05/25(水) 11:00:28それじゃ、Delphiスレ池
0862亀
2005/05/25(水) 11:02:030863デフォルトの名無しさん
2005/05/25(水) 11:30:350864デフォルトの名無しさん
2005/05/25(水) 11:49:500865デフォルトの名無しさん
2005/05/25(水) 13:45:250866デフォルトの名無しさん
2005/05/25(水) 13:57:23ハンドルはof
それぞれ言葉の意味合いを考えればわかるだろう?
0867デフォルトの名無しさん
2005/05/25(水) 16:59:35エラー時に自滅するスレッドを作ってそのスレッドが起動完了したか、エラーかを判断し
3回リトライするプログラムを書きました。
成功判断はイベントで、失敗判断はスレッドの終了で判定させようと思い、
m_pThread->PostThreadMessage(WM_APP_READY, 0, 0);
で初期化実行させた後に
hWait[0] = m_evtInit;
hWait[1] = m_pThread->m_hThread;
switch ( WaitForMultipleObjects(2, hWait, FALSE, INFINITE) ) {
:
:
}
としました。
1回だけなら思ったとおりに動くのですが、この処理にリトライ処理を加えようとして、
WAIT_OBJECT_0 + 1の場合はスレッドのオブジェクトをdeleteした上で再度スレッド
を作成し、判定処理を行おうとしたのですが、PostThreadMessageのメッセージが
処理される前にWaitForMultipleObjectsのWAIT_OBJECT_0 + 1になってしまいます。
WaitForMultipleObjectsの使い方、間違ってますか?
0868867
2005/05/25(水) 17:02:28for ( INT retry = 0 ; retry < 3 && rsts != TRUE ; retry ++ ) {
if ( m_pThread == NULL ) {
// スレッドをサスペンドモードで作成します
m_pThread = (CThreadClass*)AfxBeginThread(RUNTIME_CLASS(CThreadClass),0,0,CREATE_SUSPENDED,NULL);
m_pThread->m_bAutoDelete = FALSE;
m_pThread->m_pWnd = this;
m_evtInit = m_pThread->m_evtInit;
m_pThread->ResumeThread();
}
m_pThread->PostThreadMessage(WM_APP_READY, 0, 0);
hWait[0] = m_evtInit;
hWait[1] = m_pThread->m_hThread;
switch ( WaitForMultipleObjects(2, hWait, FALSE, INFINITE) ) {
case WAIT_OBJECT_0 :
rsts = TRUE;
break;
case WAIT_OBJECT_0 + 1:
delete m_pThread;
MessageBox("初期化失敗");
m_pThread = NULL;
break;
}
}
0869デフォルトの名無しさん
2005/05/25(水) 20:52:58使用環境はVC++ Win32 非MFC。
ListView内のアイテムを選択すると選択アイテム部分がコンボボックスになり
入力またはアイテム選択後に普通のListViewアイテムにもどる。
というような事をしているツール(VSなどでも)をよく見かけますが
これはどのように実現すればよいのでしょうか?
コモンコントロール固有のスタイルをみてみましたがそれらしい物もみつかりませんでした。
0870デフォルトの名無しさん
2005/05/25(水) 21:18:49クリックのタイミングに合わせて
表示しているのです。
0871デフォルトの名無しさん
2005/05/25(水) 21:50:441 hWnd = FindWindow("Hoge" , NULL);
2 if (hWnd) {
3 GetWindowThreadProcessId (hWnd, &dwPID);
4 hProc = OpenProcess(PROCESS_ALL_ACCESS, FALSE, dwPID);
5 }
上記のような例の4行目で、OpenProcessを失敗させるには、どのようにウインドウを作成すれば
よいのでしょうか?
0872デフォルトの名無しさん
2005/05/25(水) 22:49:55Windowを作ったプロセスを作るときのCreateProcessの引数psaProcessでありったけの制限をかけてやればよい。
0873デフォルトの名無しさん
2005/05/26(木) 01:05:22http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winui/winui/windowsuserinterface/windowing/windowclasses/windowclassreference/windowclassstructures/wndclass.asp
0874デフォルトの名無しさん
2005/05/26(木) 09:05:360875デフォルトの名無しさん
2005/05/26(木) 09:33:430876デフォルトの名無しさん
2005/05/26(木) 10:22:27http://www.google.com/search?hl=ja&ie=Shift_JIS&oe=Shift_JIS&q=%22handle+of%22+site%3Amsdn.microsoft.com&btnG=Google+%8C%9F%8D%F5&lr=
どっちかつうとtoじゃ
0877デフォルトの名無しさん
2005/05/26(木) 14:38:370878デフォルトの名無しさん
2005/05/26(木) 14:50:22このスレ的には、
SetStretchBltModeでHALFTONEを指定する
0879デフォルトの名無しさん
2005/05/26(木) 15:26:15このLMとは何のことなんでしょうか?
I_BrowserDebugTrace
I_NetLogonControl2
NetAccessCheck
もっといっぱいありますがこのようなAPIが載っています。
0880デフォルトの名無しさん
2005/05/26(木) 15:27:330881デフォルトの名無しさん
2005/05/26(木) 15:35:24WM_TIMERがきたときにメッセージボックスを表示させてみたら、
大量のメッセージボックスが表示されてしまったのですが。
0882デフォルトの名無しさん
2005/05/26(木) 15:58:11メッセージが来たときにOSが自動的に呼び出してるから重複呼び出しされる。
別にWM_TIMERに限ったことではない。
0883デフォルトの名無しさん
2005/05/26(木) 15:58:490884デフォルトの名無しさん
2005/05/26(木) 16:29:060886デフォルトの名無しさん
2005/05/26(木) 16:50:480887デフォルトの名無しさん
2005/05/26(木) 18:07:46SendMessageでは送れない。
InvalidateRectを実行しないと送信されない。
なんでだろう?
0888デフォルトの名無しさん
2005/05/26(木) 18:10:11それは違うだろ。
MessageBoxは内部でDialogBox関数を呼び出してるだけと思われ。
0889デフォルトの名無しさん
2005/05/26(木) 18:20:29表示が一番時間がかかるから、なるべく後回しにして
少ない回数で済まそうという仕組み
今作ったらもうちょっと大雑把になるのかなぁ
0890デフォルトの名無しさん
2005/05/26(木) 18:27:25そのDialogBoxは内部でメッセージループが回ってる
0891デフォルトの名無しさん
2005/05/26(木) 18:57:07>今作ったらもうちょっと大雑把になるのかなぁ
Longhornのことかい?
0892デフォルトの名無しさん
2005/05/26(木) 20:09:070893デフォルトの名無しさん
2005/05/26(木) 20:19:350894デフォルトの名無しさん
2005/05/26(木) 20:51:260895デフォルトの名無しさん
2005/05/26(木) 20:59:04一般的にどのような方法が使われていますか?
0896デフォルトの名無しさん
2005/05/26(木) 21:34:360897デフォルトの名無しさん
2005/05/26(木) 22:06:430898デフォルトの名無しさん
2005/05/26(木) 22:07:590899デフォルトの名無しさん
2005/05/26(木) 22:08:060900デフォルトの名無しさん
2005/05/26(木) 22:11:270901デフォルトの名無しさん
2005/05/26(木) 22:12:490902デフォルトの名無しさん
2005/05/26(木) 22:15:170903デフォルトの名無しさん
2005/05/26(木) 22:25:030904デフォルトの名無しさん
2005/05/26(木) 22:52:220905デフォルトの名無しさん
2005/05/26(木) 23:01:450906デフォルトの名無しさん
2005/05/26(木) 23:41:530907デフォルトの名無しさん
2005/05/26(木) 23:44:42MSDNライブラリ = マニュアル・資料
0908デフォルトの名無しさん
2005/05/26(木) 23:53:470909デフォルトの名無しさん
2005/05/26(木) 23:58:070910デフォルトの名無しさん
2005/05/26(木) 23:58:26ということは Visual C++ == Platform SDK ですか?
0911デフォルトの名無しさん
2005/05/27(金) 00:06:48SDK ツール+ライブラリ+ドキュメント+サンプルコード
じゃないかなあ・・・
0912デフォルトの名無しさん
2005/05/27(金) 00:09:03MSDNライブラリ = マニュアル、資料
IDE(開発環境本体)とコンパイラの類は入ってない。
0913デフォルトの名無しさん
2005/05/27(金) 00:13:46方法があるでしょうか。
char buf[1024];
wsprintf(buf, "%d", (int)variable);
MessageBox(0, buf, "", MB_OK);
これだといちいち面倒くさくて。。。
0914デフォルトの名無しさん
2005/05/27(金) 00:16:37>>509
0915デフォルトの名無しさん
2005/05/27(金) 00:17:460916デフォルトの名無しさん
2005/05/27(金) 00:19:00いちいち、メッセージボックスが出るのが嫌なら、OutputDebugString
文字列バッファを宣言して、
wsprintfするのがメンドイなら>>509あたりを参考に関数にしる
0918デフォルトの名無しさん
2005/05/27(金) 00:26:140919デフォルトの名無しさん
2005/05/27(金) 00:29:28いちいちヘッダをインクルードしなくちゃならないし。。。
それに自作ライブラリを管理するのも大変だし。
0920デフォルトの名無しさん
2005/05/27(金) 00:31:56これでOKか?
0921デフォルトの名無しさん
2005/05/27(金) 00:32:26生産性と保守性を上げる為の小さな自前ライブラリを維持するのくらい、
いちいちコード記述する面倒に比べれば最終的に小さなものになるでしょ。
こういうのって、プログラム組む時にセンスとして現れるよな。
めんどくささを如何にしてプラス方向に転化させるかって。
0922デフォルトの名無しさん
2005/05/27(金) 00:37:41VC++もってます。いちいちブレークポイントを設定してデバッガ
を起動するのも面倒くさいです。それにデバッガは嫌いです。
「なんとかかんとか.dllの中はトレースできない」とかいう
メッセージが出てくるので。
>>921
いや、いい方法がないなら仕方ないです。面倒くさくても我慢します。
0923デフォルトの名無しさん
2005/05/27(金) 00:39:250924デフォルトの名無しさん
2005/05/27(金) 00:40:260925デフォルトの名無しさん
2005/05/27(金) 00:40:380926デフォルトの名無しさん
2005/05/27(金) 01:32:17>VC++もってます。いちいちブレークポイントを設定してデバッガ
>を起動するのも面倒くさいです。それにデバッガは嫌いです。
>「なんとかかんとか.dllの中はトレースできない」とかいう
>メッセージが出てくるので。
いちいちメッセージボックスが出てきてOKボタン押すのも面倒くさいです。
特に何度も回るループの中に書いてしまった日には後悔しきりです。
むしろ適当なログファイルを C:\debug.txt に吐かせるとか、
イベントログ(orシステムログ)に経過を出力させる方がスマートですよ。
0927デフォルトの名無しさん
2005/05/27(金) 01:36:32いい加減にしてください!
0928デフォルトの名無しさん
2005/05/27(金) 01:39:390929デフォルトの名無しさん
2005/05/27(金) 01:39:510930デフォルトの名無しさん
2005/05/27(金) 05:10:220931デフォルトの名無しさん
2005/05/27(金) 11:05:08吐かなくなった。最近の win update はいろいろやってくれる。
0932デフォルトの名無しさん
2005/05/27(金) 11:19:54ExtractIcon の第3引数に-1
0933デフォルトの名無しさん
2005/05/27(金) 12:09:40アフォだなー
syslog は tail -f で見るに決まってる醤
0934デフォルトの名無しさん
2005/05/27(金) 12:12:030935デフォルトの名無しさん
2005/05/27(金) 14:42:39それをプログラム側から行おうとしているのですがうまくいきません。
レジストリの値を書き換えて再起動した後、手動で右のCtrlを押しながら
ScrollLockを2回押すときちんと実行されます。しかし以下のように記述して
実行しても何も起こりません。
-------------------------------------------------
Keybd_event(VK_RCONTROL, 0, 0, 0);
Keybd_event(VK_SCROLL, 0, 0, 0);
Keybd_event(VK_SCROLL, 0, KEYEVENTF_KEYUP, 0);
Keybd_event(VK_SCROLL, 0, 0, 0);
Keybd_event(VK_SCROLL, 0, KEYEVENTF_KEYUP, 0);
Keybd_event(VK_RCONTROL, 0, KEYEVENTF_KEYUP, 0);
-------------------------------------------------
キーはきちんと押せているみたいなのですが。。
原因と改善策を希望します。よろしくお願い致します。
0936デフォルトの名無しさん
2005/05/27(金) 15:36:330937デフォルトの名無しさん
2005/05/27(金) 15:38:280938デフォルトの名無しさん
2005/05/27(金) 16:11:41MSはその機能はドライバがキーを受け取らないと駄目って言ってるから、keybd_eventじゃ無理な気ガス
0939デフォルトの名無しさん
2005/05/27(金) 16:17:45マジ?
俺もDr.ワトソンは重宝してるのに・・・。
まぁDr.ワトソンでログを拾うことすらできない香具師が多くなってきたから、
Dr.ワトソン相当の機能を自前のEXEに持たせてしまってるよ。
0940デフォルトの名無しさん
2005/05/28(土) 06:22:54ウインドウのメッセージループってどういう風に書くのが確実なんでしょうか?
要求としては、メッセージループの空き時間にOnIdle()という関数を実行したいと考えています。
そこで、理想的な動作として、以下のソースを記述しました。(ホントはネットで拾った。汗
しかし、動作は理想的なのですが、これではウインドウが消えた後もメッセージループを抜けることはありませんでした。
どういう記述をすれば理想的な動作を両立できますか?
int CWindow::MsgLoop(){
MSG msg;
int Ret;
while (1) { // メインループ
if (PeekMessage (&msg,m_hWnd,0,0,PM_NOREMOVE)) {
Ret=GetMessage (&msg,m_hWnd,0,0) ;// メッセージ処理
if (Ret == 0 ) break;
if (Ret == -1 ) break;
TranslateMessage(&msg);
DispatchMessage(&msg);
}else{
OnIdle(); //独自の処理
}
}
return msg.wParam;
}
0941デフォルトの名無しさん
2005/05/28(土) 06:46:200942デフォルトの名無しさん
2005/05/28(土) 07:04:15MSG msg;
int Ret;
while (1) { // メインループ
if (PeekMessage (&msg,m_hWnd,0,0,PM_REMOVE)) {
if( msg.message == WM_QUIT )
break;
TranslateMessage(&msg);
DispatchMessage(&msg);
}else{
OnIdle(); //独自の処理
}
}
return msg.wParam;
}
0943デフォルトの名無しさん
2005/05/28(土) 07:15:29レスthx!
早速試してみます。
0944デフォルトの名無しさん
2005/05/28(土) 07:56:40コンボボックスの右矢印をクリックすることで、リスト上のメニューが表示されるが、
そのメニューにサブメニューとかをつけることは出来ますか?
つまり通常のメニューで使われているようなものを表示させることはできますか?
0945デフォルトの名無しさん
2005/05/28(土) 08:20:30> Ret=GetMessage (&msg,m_hWnd,0,0) ;// メッセージ処理
なんで m_hWnd のメッセージだけ受けてるんだ?
これが NULL だったら WM_QUIT 受けれるのに…
0946デフォルトの名無しさん
2005/05/28(土) 08:29:04な!そんなカラクリが!?
WM_QUITがこなくて困ってたところでした。
ふぁああああああっく。(TT
レスThx。できました。
0947942
2005/05/28(土) 08:29:21でもまぁ、>>940のじゃWM_QUIT受けても意味無いけどな
ってわけで>>943
↓こっちでやってくれ
int CWindow::MsgLoop(){
MSG msg;
while (1) { // メインループ
if (PeekMessage (NULL, 0, 0, PM_REMOVE)) {
if( msg.message == WM_QUIT )
break;
TranslateMessage(&msg);
DispatchMessage(&msg);
}else{
OnIdle(); //独自の処理
}
}
return msg.wParam;
}
0948デフォルトの名無しさん
2005/05/28(土) 08:43:59どのAPIを使えばいいですか?
0949デフォルトの名無しさん
2005/05/28(土) 08:48:15レスThx!
余談ですが、
これ(ttp://techtips.belution.com/ja/vc/0009/)を参考にして汎用ウインドウクラスをつくってるんです。
MFCに依存したくないんでこういう形態をとってます。(そもそもMFC使ったことないし。
で回答をいただいた結果、ウインドウ1個はできるようになりました。
あとは複数に対応するだけです。感謝。
0950デフォルトの名無しさん
2005/05/28(土) 08:56:580952デフォルトの名無しさん
2005/05/28(土) 09:21:32複数のウィンドウ?
複数ウィンドウ作るならその数だけそのクラスのインスタンスを作るだけだが?
0953デフォルトの名無しさん
2005/05/28(土) 10:12:29エディットボックスの全ての文字色を変更するのはわかったのですが、特定の文字列だけ変更したい場合にはどのようにすればいいのでしょうか?
ご教授お願いします
0954デフォルトの名無しさん
2005/05/28(土) 10:21:33エディとボックスにそんな高度なことを求めてはならない。
0955デフォルトの名無しさん
2005/05/28(土) 11:36:410956デフォルトの名無しさん
2005/05/28(土) 12:08:48自分専用のクリップボードフォーマットの番号をOSから頂いたんですが、
この情報はレジストリに登録されるのでしょうか?
それとも、一時的なもので、再起動してRegisterClipboardFormatすると
再度割り当てが行われるものなのでしょうか?
(極力レジストリは汚したくないもので・・・)
0957デフォルトの名無しさん
2005/05/28(土) 14:39:16WNDCLASSEX wc;
として、
wc.cbSize = sizeof(WNDCLASSEX);/* 型を指定 */
wc.cbSize = sizeof(wc);/* 変数名を指定 */
の2つは、どちらにしておいたほうがいいのでしょうか。
0958デフォルトの名無しさん
2005/05/28(土) 14:45:05やめといたほうがいいよ
0959デフォルトの名無しさん
2005/05/28(土) 15:06:19どっちでも一緒だが、俺は型名指定して使ってるな。
0960デフォルトの名無しさん
2005/05/28(土) 15:09:05変数名にしておけば、構造体が拡張されて、もし名前が変わっても大丈夫。
もし型名にしていると、変更し忘れのミスが発生する恐れがある。
型名にしておけば、うっかりポインタをsizeofしてしまうミスを防げる。
0961デフォルトの名無しさん
2005/05/28(土) 15:23:460962デフォルトの名無しさん
2005/05/28(土) 15:24:420963デフォルトの名無しさん
2005/05/28(土) 15:29:31このスレの常識だね。
0964デフォルトの名無しさん
2005/05/28(土) 15:30:51ありがとうございました。
0965デフォルトの名無しさん
2005/05/28(土) 15:31:10わりと常識だね
0966デフォルトの名無しさん
2005/05/28(土) 15:33:54ありがとうございました。
0967デフォルトの名無しさん
2005/05/28(土) 15:34:29ありがとうございました。
0968デフォルトの名無しさん
2005/05/28(土) 15:51:030969デフォルトの名無しさん
2005/05/28(土) 15:52:080970デフォルトの名無しさん
2005/05/28(土) 15:57:050971デフォルトの名無しさん
2005/05/28(土) 15:58:050972デフォルトの名無しさん
2005/05/28(土) 15:58:57たぶんExtra
どれもこれも元になったExの付かない関数がある。
0973デフォルトの名無しさん
2005/05/28(土) 16:00:100974デフォルトの名無しさん
2005/05/28(土) 16:00:230975デフォルトの名無しさん
2005/05/28(土) 16:03:11SMのSか。
0976デフォルトの名無しさん
2005/05/28(土) 16:29:190977デフォルトの名無しさん
2005/05/28(土) 16:35:14Exはその記念
0978デフォルトの名無しさん
2005/05/28(土) 16:37:030979デフォルトの名無しさん
2005/05/28(土) 16:37:440980デフォルトの名無しさん
2005/05/28(土) 16:39:230981デフォルトの名無しさん
2005/05/28(土) 16:41:380982デフォルトの名無しさん
2005/05/28(土) 16:44:230983デフォルトの名無しさん
2005/05/28(土) 16:54:06USBのヤシと、IEEE1394のヤシが知りたいです。
0984デフォルトの名無しさん
2005/05/28(土) 17:01:450985デフォルトの名無しさん
2005/05/28(土) 17:16:55>873 名前:デフォルトの名無しさん[sage] 投稿日:2005/05/28(土) 16:24:05
>VC6で最新でなくていいんですが、新しい目のプラットフォームSDKを使いたいんですけど
>どこかで入手できないものでしょうか?shell32.lib(shguid.obj)でエラーが出るのが致命的なんです。
lib.exeを使ってデバッグ情報を消してやればいいのでしょうか?
0986デフォルトの名無しさん
2005/05/28(土) 17:32:520987デフォルトの名無しさん
2005/05/28(土) 17:35:25SDKなら↓からもってこれないか
http://msdn.microsoft.com/downloads/
0988デフォルトの名無しさん
2005/05/28(土) 17:38:02>>973も言っているがExtendedだと思う
根拠は引数のdwExStyleの説明がextended window styleだから、というくらいだが
Extraじゃ拡張ってより、オプションって感じになっちゃうしなぁ
0989デフォルトの名無しさん
2005/05/28(土) 17:44:16現在、VC6を使うとプラットフォームSDKに含まれる複数のライブラリでリンクエラーが出ます。
>fatal error LNK1103: デバッグ情報が壊れています; モジュールを再コンパイルしてください
これを解決するには、対応PSDKを導入するか、デバッグ情報を完全に削除するしかないと考えました。
解決手段の候補として下の二つがありましてどちらかの手段を取りたいのですが、
1.2003年の年末あたりのPSDKをどこかから入手する
2.互換性のないデバッグ情報は削除する
1は過去バージョンの入手方法が分かりません。
2はlink.exe dumpbin.exe lib.exeのオプションとMSDNのドキュメント見ましたがデバッグ情報の削除のやり方は分かりませんでした。
どちらかのやり方で解決したいのですが、方法を存知の方はいらっしゃいませんか?
2001年ごろのPSDKのバックアップならあるのですが、これの導入は最終手段にしたいのです。
0990デフォルトの名無しさん
2005/05/28(土) 18:07:070991デフォルトの名無しさん
2005/05/28(土) 18:16:47観測しようと試みましたが、
> 指定のウィンドウはスパイできません。Windows は、このウィンドウの
> メッセージ ストリームへアクセスすることを許可しません。
とエラーが表示されてしまいます。
何とかして見る方法はないものでしょうか。
0992デフォルトの名無しさん
2005/05/28(土) 18:21:44http://pc8.2ch.net/test/read.cgi/tech/1117271829/
0993デフォルトの名無しさん
2005/05/28(土) 19:39:06DRIVE_FIXEDの方が多いよ。
0994デフォルトの名無しさん
2005/05/28(土) 22:30:040995デフォルトの名無しさん
2005/05/28(土) 22:30:450996デフォルトの名無しさん
2005/05/28(土) 22:34:01http://pc8.2ch.net/test/read.cgi/tech/1057225723/
0997デフォルトの名無しさん
2005/05/28(土) 22:34:190998デフォルトの名無しさん
2005/05/28(土) 22:34:55「愚問ですね、さっさと1000万持って帰りたいくらいですよ」
「すごい自信だ! ……では問題。『次の漫画のうち、アメリカで実写版の映画が放映されるのはどれ?A、北斗の拳 B、ジョジョの奇妙な冒険C、ドラゴンボール D、魁! 男塾』」
「………っ!」
明らかに動揺を隠せない回答者田中。
「時間はたーっぷりあります。ライフラインも3つ残っている。」
そう話しているが、みのの表情は「さっさと答えろ」と言わんばかりの顔をしている。答えは勿論Cだ、Cなのだが……。
「……ええと、Cです、ね。はい」
「ファイナルアンサー?」
ここでファイナルアンサーと言ってしまえばどんなに気が楽なのか。次の問題に進み、当然私はその問題も楽に答える事が出来るだろう。
が! ここでジョジョが出てきた以上! 触れん訳にはいかんだろうッ!
「…ふ…ぞ…ート……も…ほど…ヒー」
なにやら呟く田中。
「……え!?」
「るえる…ハ…ト つきる…ど…ト」
「え? なんと?」
「震えるぞハート! 燃え尽きる程ヒィート!」
「え? え?」
「答えはC! だが俺はあえてこう言おう! 映画になる期待と希望を込めてBと!」
「ファ……ファイナルアンサー?」
「ファイナルアンサーッ! そしてお前は『残念、正解はCのドラゴンボール』と言うッ!」
「…………………………残念ッ! 正解はCのドランボール! ハッ!」
バー( ´-`)ーン
「アリー・ヴェデルチ!(さよならだ!)」
感涙を流すみの。そして惜しみない拍手と湧く会場。決して語られる事の無いミリオネアがそこにあったという……。
0999デフォルトの名無しさん
2005/05/28(土) 22:36:13しかし裳前らは神だな(ワロタ
藻俺様のようなツーチャン歴が長いDONに歯向かうとどうなるか分かってるんだろうな罠?
初心消防車があんまり接着してると、いい加減ブラクル貼るぞテスト。
直リンも出来ない初心者は家具氏だなと一時間マジスレするぞ(vy
まあツーシャネラはこのくらいのスレが送信できて当たり前だ。
こんなことも出来ない家具氏は回線で首切って寝たら釣るぞ(糞
ピュ.ー ( ^^ ) <これからも僕を応援してくださいね(^^)。
=〔~∪ ̄ ̄〕
= ◎――◎ 山崎渉
10011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。