Win32API質問箱 Build36
レス数が1000を超えています。これ以上書き込みはできません。
0001東トルキスタンと言ってみるテスト
2005/10/10(月) 22:35:30やさしいお兄さんたちが答えてくれるかも。
∧_∧
( ´∀`) < 0x23
過去スレ、関連リンクは>>2-5くらい。
■注意
・質問する前にMSDNライブラリやPlatformSDK、Google等で検索しましょう
・日本語版MSDN Online Libraryは不完全です。英語版(http://msdn.microsoft.com)の利用推奨
・APIフックなど高度な事をしたい場合はできるだけAdvencedWindowsを読みましょう
・言語特有の問題やIDE、MFCやVCLなどの質問はそれぞれの言語や開発環境スレで
-前スレ
Build35:http://pc8.2ch.net/test/read.cgi/tech/1125850096/l50
0002デフォルトの名無しさん
2005/10/10(月) 22:40:430003デフォルトの名無しさん
2005/10/10(月) 22:49:2035 ttp://pc8.2ch.net/test/read.cgi/tech/1125850096/
34 ttp://pc8.2ch.net/test/read.cgi/tech/1122723009/
33 ttp://pc8.2ch.net/test/read.cgi/tech/1120153520/
0004デフォルトの名無しさん
2005/10/10(月) 22:50:0931 ttp://pc8.2ch.net/test/read.cgi/tech/1114762194/
30 ttp://pc8.2ch.net/test/read.cgi/tech/1112345886/
29 ttp://pc8.2ch.net/test/read.cgi/tech/1110281860/
28 ttp://pc5.2ch.net/test/read.cgi/tech/1108199304/
27 ttp://pc5.2ch.net/test/read.cgi/tech/1106103119/
26 ttp://pc5.2ch.net/test/read.cgi/tech/1104109858/
25 ttp://pc5.2ch.net/test/read.cgi/tech/1101393155/
24 ttp://pc5.2ch.net/test/read.cgi/tech/1098967135/
23 ttp://pc5.2ch.net/test/read.cgi/tech/1095534704/
22 ttp://pc5.2ch.net/test/read.cgi/tech/1092524669/
21 ttp://pc5.2ch.net/test/read.cgi/tech/1090422324/
20 ttp://pc5.2ch.net/test/read.cgi/tech/1088140233/
19 ttp://pc5.2ch.net/test/read.cgi/tech/1084697545/
18 ttp://pc5.2ch.net/test/read.cgi/tech/1081702990/
17 ttp://pc5.2ch.net/test/read.cgi/tech/1077470361/
16 ttp://pc2.2ch.net/test/read.cgi/tech/1073830065/★
15 ttp://pc2.2ch.net/test/read.cgi/tech/1069339866/★
14 ttp://pc5.2ch.net/tech/kako/1065/10653/1065328397.html
13 ttp://pc5.2ch.net/tech/kako/1059/10595/1059549320.html
12 ttp://pc5.2ch.net/tech/kako/1056/10560/1056033645.html
11 ttp://pc5.2ch.net/tech/kako/1052/10526/1052651750.html
10 ttp://pc5.2ch.net/tech/kako/1047/10478/1047819779.html
9 ttp://pc5.2ch.net/tech/kako/1044/10449/1044929160.html
8 ttp://pc5.2ch.net/tech/kako/1040/10409/1040964626.html
7 ttp://pc3.2ch.net/tech/kako/1036/10366/1036654893.html
6 ttp://pc3.2ch.net/tech/kako/1032/10325/1032548635.html
5 ttp://pc3.2ch.net/tech/kako/1028/10285/1028580373.html
4 ttp://pc3.2ch.net/tech/kako/1023/10233/1023361418.html
3 ttp://pc.2ch.net/tech/kako/1017/10170/1017072275.html
2 ttp://pc.2ch.net/tech/kako/1006/10067/1006783012.html
1 ttp://pc.2ch.net/tech/kako/991/991576947.html
0005デフォルトの名無しさん
2005/10/10(月) 22:51: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/
- WindowsR Server 2003 SP1 Platform SDK Full Download
http://www.microsoft.com/downloads/details.aspx?familyid=EBA0128F-A770-45F1-86F3-7AB010B398A3&displaylang=en
http://www.microsoft.com/msdownload/platformsdk/sdkupdate/XPSP2FULLInstall.htm
http://www.microsoft.com/msdownload/platformsdk/sdkupdate/psdk-full.htm
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
-おまけ
dat落ちしている過去スレが見れるかも。Build19が見たい人、余裕のある人は●でも買ってやってくれ。
http://makimo.to/cgi-bin/search/search.cgi?q=Win32API&andor=AND&sf=2&H=&view=table&shw=&D=tech
0006デフォルトの名無しさん
2005/10/10(月) 23:32:14otu
0007デフォルトの名無しさん
2005/10/10(月) 23:34:10暇な奴はミラー作ってくれよな
0008デフォルトの名無しさん
2005/10/10(月) 23:40:39こっち使え
0009デフォルトの名無しさん
2005/10/11(火) 00:40:08えらい力技だな
0010デフォルトの名無しさん
2005/10/11(火) 00:41:33DirectX以外の方法で、ほぼ正確に1/60毎にコールバック関数を呼ぶAPIはありますか?
いろいろ試してみたのですが、マルチメディアタイマーを使用すると、1/60秒から少しずれてしまい(整数msの分解能のため)
1/60秒での処理ができません。
これだとfpsに直すと62fps(16msの場合)になりますよね?
これをほぼ正確に60fpsにしたい場合、何か方法はないでしょうか
0011デフォルトの名無しさん
2005/10/11(火) 00:43:59QueryPerformanceCounter
0012デフォルトの名無しさん
2005/10/11(火) 01:39:560013デフォルトの名無しさん
2005/10/11(火) 02:14:300014デフォルトの名無しさん
2005/10/11(火) 02:38:31いくつかのゲームでは、なぜかキーストロークを送ることができません。
どうすればいいのでしょうか?
0015デフォルトの名無しさん
2005/10/11(火) 03:36:15升ツール作りたいならゲ製板にでも逝け。
0016デフォルトの名無しさん
2005/10/11(火) 03:41:53http://game9.2ch.net/gameurawaza/
>>15
廊下に立ってろ
0017デフォルトの名無しさん
2005/10/11(火) 05:00:010018デフォルトの名無しさん
2005/10/11(火) 09:45:24そこの色情報を取り出すAPIとかないでしょうか?
0019デフォルトの名無しさん
2005/10/11(火) 10:02:150020デフォルトの名無しさん
2005/10/11(火) 10:06:04別WindowHandleのマウスポイントの色もとりたいのです。
後、窓枠とかの色も取得したいので、出力されている色すべて取れないでしょうか?
0021デフォルトの名無しさん
2005/10/11(火) 10:21:080022デフォルトの名無しさん
2005/10/11(火) 10:53:57hWnd=0でいけるのですねすいません。
ありがとうございます。
0023デフォルトの名無しさん
2005/10/11(火) 11:26:22Unregistしてから色々な処理をした後に非アクティブ化してから
再びRegistして入力を待つ…といった事をやっています。
が、2回目のRegisterHotkey後にキーボードを叩いても反応がありません。
確認したのは
・2回目のRegistは成功した(返り値確認)
・2回目のRegist以降はWM_HOTKEYメッセージすら届いていない
という事なんですが、RegisterHotkeyが成功してるのに
メッセージが通知されないというので悩んでます。
思い当たる原因など何かないでしょうか。
0024デフォルトの名無しさん
2005/10/11(火) 16:31:16作成しています。
その中で、リストビューの自前描画を行おうと試み、クライアント領域に関しては
オーナードローで実現できたのですが、スクロールバーはオーナードローでも
手の届かない領域です。
そこで、スクロールバー部は非クライアント領域の描画で無理やりしてるのですが、
この描画の直前に、一瞬だけコモンコントロールがデフォルトで描画している
素のスクロールバーが表示されてしまいます。
これを避けるためには、WM_SETREDRAW では効果はなく、
唯一 LockWindowUpdate だけが描画を抑制することができるようなのですが、
どうやらこの API にはバグがあるらしく、デスクトップ上の全てのウィンドウに対し
WM_PAINT が送信されるというとんでもない自体が発生してしまいます・・・
(しかも、タイミングによっては起きたり起きなかったり)。
似た症例のアーティクルを検索してみたのですが、どれも決定的な解決法はないようで・・・
ttp://pullup.net/technical.html
ttp://www.adras.com/BUG-in-LockWindowUpdate-UnlockWindowUpdate.t288-27.html
ttp://groups-beta.google.com/group/borland.public.delphi.nativeapi/browse_frm/thread/4b212ed3eb974c59
もしも似たような経験がある方がいらっしゃいましたらご助言頂けませんでしょうか。
よろしくおねがいいたします。
0025デフォルトの名無しさん
2005/10/11(火) 16:45:47002624
2005/10/11(火) 16:58:31完全自前も少しは考えたのですが・・・
SYSLISTVIEW32 が実装している領域計算などの機能はかなり多く
(言い換えれば自作するにはかなりの機能をエミュレートする必要がある)、
さらにもともとコモンコントロールに対し実装していたコードからの
移植性も高いということで上記の方法を採用しました。
0027デフォルトの名無しさん
2005/10/11(火) 17:08:50regsvr32でcomの登録についてなんですが、
regsrv32 hoge.dll
自分のマシンでは、これで登録できるんですが、ほかのマシンにもっていくとエラーが発生し登録出来ません、
「hoge.dll」で使用してるコンポーネントやDLLが不足している為だと思うんですが、
具体的に、どのコンポーネント/DLLで失敗してるか見つける方法はありませんでしょうか?
よろしくお願いします。
0028デフォルトの名無しさん
2005/10/11(火) 17:44:59でもってビルドオプションにATL_MIN_CRTが定義されて無かったりとか。
エラーメッセージも環境も何も書いてないので、わかりまへん。
さらにスレ違いだとおもいます。
002924
2005/10/11(火) 17:45:52もしも開発環境がインストールされていれば、
dumpbin または Dependency Walker で依存している DLL が確認することが
可能かと思われます。
参考になりますでしょうか。
0030デフォルトの名無しさん
2005/10/11(火) 18:16:57変更しようとしているのですが、
[ ほげ ]
↓
SetWindowText(Edit , TEXT("はげ")) ;
↓
[ ほげはげ ]
のように、それまで入っていた文字に追加される形になってしまいます。
猫等のサイトで色々と調べてみると、
特にエディットコントロール内の文字列を
削除する手続き等は取っていないようにしか見えないのですが、
こういった文字列を削除する関数やメッセージはありますか?
ちなみにSETSEL→CLEARでも消えてくれません…
0031デフォルトの名無しさん
2005/10/11(火) 18:27:130032デフォルトの名無しさん
2005/10/11(火) 19:44:390033デフォルトの名無しさん
2005/10/11(火) 21:20:56構文エラーが出てしまいます。
どうしてなんでしょうか。
0034デフォルトの名無しさん
2005/10/11(火) 21:27:290035デフォルトの名無しさん
2005/10/11(火) 21:39:15構文が間違ってるから
0036デフォルトの名無しさん
2005/10/11(火) 21:40:31ちゃんとしたコンパイラを使ってるんなら構文エラーなんだろうなw
真剣に質問したいのならもう少し詳しく(関数名やエラー内容など)書いた方が‥‥釣りだと思われますよ?
とりあえず、その関数付近のソースを書いてみたら?
0037デフォルトの名無しさん
2005/10/11(火) 21:47:13釣りのつもりはないのですが...。
void name(HTREEITEM hTree);
といった関数を宣言してもエラーになります。
TC_ITEMとかでもなりました。
0038デフォルトの名無しさん
2005/10/11(火) 22:01:20ツリービューもコモンコントロールだからcommctrl.hをインクルードしてcomctl32.libを
プロジェクトに加えないといけないよ?
0039デフォルトの名無しさん
2005/10/11(火) 22:02:14俺らはエスパーじゃねぇんだよ
0040デフォルトの名無しさん
2005/10/11(火) 22:15:350041デフォルトの名無しさん
2005/10/11(火) 22:27:24人間に自分の考えを伝えられないのに、
機械に伝える事なんて出来ない。
0042デフォルトの名無しさん
2005/10/11(火) 22:34:35ヤダ
0044デフォルトの名無しさん
2005/10/11(火) 23:05:44この無限ループの処理自体はアプリ終了まで続けたいのですが、このまま終了してしまうとこの部分でメモリリークが起きてしまいます。
そこで、アプリ終了時にwhile文を抜ける方法(メッセージなど)があったら教えていただきたいです。
0045デフォルトの名無しさん
2005/10/11(火) 23:10:48マルチスレッド? シングルスレッド?
シングルスレッドだとwhileを抜けない限りは強制終了しかないわけなんだが…
0046デフォルトの名無しさん
2005/10/11(火) 23:11:040047デフォルトの名無しさん
2005/10/11(火) 23:40:03WM_NCPAINTのwParam
0048デフォルトの名無しさん
2005/10/11(火) 23:44:08終了すれば全部解放されるからループ内でメモリ使用量が
どんどん増えたりしてなければ気にすることはない
0049デフォルトの名無しさん
2005/10/11(火) 23:44:11005044
2005/10/12(水) 00:04:03どうもありがとうございます。
しかし、
while(1){
}
とやっただけでもデバッガがメモリリークを検出してしまいます。
これは問題ないのでしょうか?
0051デフォルトの名無しさん
2005/10/12(水) 00:10:29> デバッガがメモリリークを検出してしまいます
それ、何てデバッガ?
0052デフォルトの名無しさん
2005/10/12(水) 00:13:070054デフォルトの名無しさん
2005/10/12(水) 00:19:19何を持ってメモリリークと言ってるんだ?
そもそも、メモリリークの意味判ってるのか?
0055デフォルトの名無しさん
2005/10/12(水) 00:20:37ttp://pc8.2ch.net/test/read.cgi/tech/1127737437/660
0056デフォルトの名無しさん
2005/10/12(水) 00:23:52>>41
0057エスパー魔美
2005/10/12(水) 05:41:340058デフォルトの名無しさん
2005/10/12(水) 06:23:500059デフォルトの名無しさん
2005/10/12(水) 09:32:07ファイル(サブディレクトリの中のファイルも含む)の新規作成や上書き保存を
検出するソフトを作ろうとしているのですが, ファイル数やディレクトリの深さが
大きくなるほど時間がかかってしまいます.
見つけたディレクトリにかったぱしからFindFirstChangeNotificationを仕掛けるという方法も考えたのですが
ちょっとかっこよくない気がします
フィルタドライバ的なものでしかできないのでしょうか?(もちろんドライバを書く技量は持ってません...)
一発で更新されたファイル名のパスを教えてくれるAPIはありませんか?
0060デフォルトの名無しさん
2005/10/12(水) 18:47:04いいえ。
0061デフォルトの名無しさん
2005/10/12(水) 18:59:55ディレクトリで発生した変更を記述した情報を返します
0062デフォルトの名無しさん
2005/10/12(水) 19:20:17メモリリークはおいといて・・・
アプリ終了時にループを打ち切るようにすればいいじゃないか。
その無限ループの中で、
アプリ終了したいよフラグを定期的にチェックして、
フラグが立っていたら、ループを抜けて、後片づけをして、
アプリ終了してもいいよフラグを立てる。
メインスレッドでは、
アプリ終了したいよフラグを立てて、
アプリ終了してもいいよフラグが立つのを待ってから終了する。
ただし、
アプリ終了してもいいよフラグについては、
単にvolatileなbool変数でやると、ダサすぎるので、
適切なロックオブジェクトを使ったほうがいいでしょう。
0063デフォルトの名無しさん
2005/10/12(水) 20:27:33>>45
0064デフォルトの名無しさん
2005/10/12(水) 21:11:510065デフォルトの名無しさん
2005/10/12(水) 21:32:020066デフォルトの名無しさん
2005/10/12(水) 23:10:470x24の間違いなら>>2
0067デフォルトの名無しさん
2005/10/12(水) 23:18:490068デフォルトの名無しさん
2005/10/12(水) 23:45:50SwitchToThread()関数を使おうとしていますが使えません(外部参照が未解決になる)。
winbase.hはincludeしていますし、kernel32.libもリンクしました。
何がまずいのでしょうか。初歩的なことを見落としているように思うのですが・・・
0069デフォルトの名無しさん
2005/10/12(水) 23:56:07コンパイルオプションの問題、又はWINVERの定義の問題。
WINVERの他にも似たようなマクロが有ったような気がするけど思い出せない。
0070デフォルトの名無しさん
2005/10/12(水) 23:59:16MSDNにはこんなことが書いてある。
Windows NT: バージョン 4.0 以降を使います。
Windows: サポートされていません。
というわけでWindows.hのインクルードの前に#define _WIN32_WINNT 0x400とでも書く必要がある。
(Windows.hの中でWinbase.hはインクルードされるのでWinbase.hは自分でインクルードする必要はない)
もちろんこんなことをすると9xを捨てることになる。
捨てたくなければ今回はSleep(0);が代わりになる。
007168
2005/10/13(木) 00:19:06_WIN32_WINNTを定義してませんでした。
Windows.hじゃなくてWinbase.hをincludeしてました。
いま手元に環境がないので明日にでも試してみます。ありがとうございました。
0072デフォルトの名無しさん
2005/10/13(木) 01:14:17//検証用コード
for (;;)
{
if (GetAsyncKeyState(VK_PAUSE) & (1 << (sizeof(SHORT) * 8 -1)))
_putts(_T("PAUSE!")) ;
}
PAUSEキーをいくら押し下げようとも、連打しようとも、まったく反応がありません。
しかし、PAUSEキーを押した後に、何か別のキーを押すと、一回だけPAUSE!と表示されます。
キーボードが壊れているのかと思い、いくつかのキーボードで試しましたが、まったく同じ結果になります。
PAUSE以外のキーに変えると、押し下げた瞬間に大量にPAUSE!と表示されるんですが……。
WindowsはPAUSEキーだけ、なにか特別な処理でもしているのでしょうか?
0073デフォルトの名無しさん
2005/10/13(木) 01:50:460074デフォルトの名無しさん
2005/10/13(木) 02:11:03Pauseキーだろ?
007573
2005/10/13(木) 03:54:01というのは機能であり仕様なんだってば。
0076デフォルトの名無しさん
2005/10/13(木) 06:33:39オプション /A と /B で hoge.exe を起動する為に
c:\hoge.exe /A /B
としてあるのですが、
エクスプローラーからファイルをこのショートカットに
ドラッグ&ドロップした時に、
c:\hoge.exe /A /B FileName
の様に hoge を起動したいのですが、
c:\hoge.exe FileName
としかならなくて困ってます。
どうにかなりませんか?
0077デフォルトの名無しさん
2005/10/13(木) 06:38:10特に何もしなくてもオプションは無視されないんだが
環境は?
0079デフォルトの名無しさん
2005/10/13(木) 07:37:29無限ループにfor(;;)なんてキモ過ぎ
0080デフォルトの名無しさん
2005/10/13(木) 08:24:22スレ違いじゃないのか……。
強引にAPIに持って行くと、
話を聞くとそれはおそらく、Win95の場合、そうなるようなので、
解決策としては専用のランチャーを作るべきだ。
それをするには、具体的にはたとえばCreateProcess()を云々……
0081デフォルトの名無しさん
2005/10/13(木) 09:46:05とあるアプリケーションが
system();
などで別のアプリケーションを呼び出すということは多々あるかと思います。
この呼び出しをフックして、どういう呼び出しをしているのか知りたいのですがキーフックのようにAPIは用意されていますでしょうか?
具体的に申し上げますと、
携帯アプリ開発エミュレータで「プロジェクト管理アプリ」が「実行アプリ」を呼んでいます。
ですがこの「プロジェクト管理アプリ」が遅いのなんの…。
実行アプリだけ呼び出してやりたいのですが、一体どんな引数などを渡しているのか分からないのです。
0082デフォルトの名無しさん
2005/10/13(木) 09:50:38CreateProcessなりsystemなりのAPIにブレークポイントを仕掛け、引数を見た方が早いと思う。
0083デフォルトの名無しさん
2005/10/13(木) 10:08:06なるほど。確かにその通りですね。
試してみます。
ありがとうございました。
0084デフォルトの名無しさん
2005/10/13(木) 11:01:04あきらめるしかない
0085デフォルトの名無しさん
2005/10/13(木) 11:03:020086デフォルトの名無しさん
2005/10/13(木) 15:00:41プロジェクト管理アプリをOllydbgでトレースしようとしたら固まってしまいました。
javaアプリなので、javaにいわゆるトレース対策がされていたのだと思います。
結局APIフックを作ってしまいました(;´Д`)
0087sage
2005/10/13(木) 17:06:250088デフォルトの名無しさん
2005/10/13(木) 21:29:10おぶりが〜ど!
0089デフォルトの名無しさん
2005/10/14(金) 04:41:48自動的に閉じるメッセージボックスを表示するAPIって無いですか?
0090デフォルトの名無しさん
2005/10/14(金) 06:19:14009176
2005/10/14(金) 06:48:12プログラムでなんとか出来ないかと思ってここで質問しました。
パラメータがファイル名のみの時は別処理にします。
ありがとうございました。
0092デフォルトの名無しさん
2005/10/14(金) 10:28:24GetWindowTextしてWindowの文字を取ってくる。
後(再起動)ほど
FindWindowで先ほどのWindow文字を入れたら
返りが0になるのですが、FindWindowでHWNDを取得するためにはどの文字を取ればよいのでしょうか?
0093デフォルトの名無しさん
2005/10/14(金) 11:08:11009493
2005/10/14(金) 11:15:40それかボタンコントロールとかのキャプションを取得してるとかだな
親ウィンドウたどってGetWindowTextするといい
0095デフォルトの名無しさん
2005/10/14(金) 11:16:43WindowFromPointで取得したウィンドウが子ウィンドウとか?
0096デフォルトの名無しさん
2005/10/14(金) 11:27:41FindWindowにtextを入れる場所をまちがっていました。
FindWindow(a, NULL);×
0097デフォルトの名無しさん
2005/10/14(金) 11:29:52再起動前の取得文字列をどう保存して、再起動後にどう復元してる?
保存・復元の方法がおかしくて、Findしてる文字列が間違ってる可能性も考えられるぞ。
0098デフォルトの名無しさん
2005/10/14(金) 11:30:50なに、そのオチ・・・
0099デフォルトの名無しさん
2005/10/14(金) 11:33:16本気でスマソ
0100デフォルトの名無しさん
2005/10/14(金) 11:41:070101デフォルトの名無しさん
2005/10/14(金) 13:18:09猫や
ttp://www.kab-studio.biz/Programing/Codian/index.html
ttp://www.doumo.jp/aon-java/jsp/postgretips/tips.jsp?tips=79
などを見てもいまいち理解できなかったのですが、
SendMessageでマウス制御する方法(別途用意するものなど)を教えてもらえないでしょうか、
それと、Hookの中身は、SendMessage等と同じDll内に記述しても問題ないのでしょうか、
VC++を使っています。
0102デフォルトの名無しさん
2005/10/14(金) 13:26:02何がしたいのかはっきり書いてくれんかね。
何がしたいのか、それじゃよくわからんが。
システム全体のマウスメッセージをフックしたいだけ?
それならフックDLL作って、
DLLからフックしたメッセージを利用するアプリケーションに
何らかの方法で通知すればいいとおもうけど。
あと、マウスメッセージなんかはかなりの頻度で飛んでくるはずだから、
DLL内でフックしたメッセージを利用する処理をダラダラ書くと、
良いこと無いと思うけど。
0103デフォルトの名無しさん
2005/10/14(金) 14:31:16マウスの動きをマクロ化したいのですが、
できれば、指定したアプリケーションにマウスの動きを通知するだけで、
実際のマウスカーソルとは独立させて動かすことはできるのでしょうか、
寝マクロ君やUWSC的な動きをさせたいと思っています。
その上で、マウスカーソルとは切り離した動きができないかと思っています。
0104デフォルトの名無しさん
2005/10/14(金) 15:05:080105デフォルトの名無しさん
2005/10/14(金) 15:08:250106デフォルトの名無しさん
2005/10/14(金) 15:15:45たぶん。
0107デフォルトの名無しさん
2005/10/14(金) 15:31:29ArcとかPolyBezierとか
0108デフォルトの名無しさん
2005/10/14(金) 15:43:410109デフォルトの名無しさん
2005/10/14(金) 15:44:49マウスメッセージはキャプチャして置いてマクロ化して保存。
↓
マクロ実行で、ターゲットアプリケーションにのみ保存したマウスメッセージを投げる。
キャプチャ時と実行時でのマウス座標をどうするかとか、
考慮しなきゃいけない部分がありそうだけど、
上記のまま十分実装出来そうな気はするけど。
0110デフォルトの名無しさん
2005/10/14(金) 15:52:50GetLastError()で調べるとコード1564「メッセージは同期した操作とのみ使用できます」のエラーのようです。
下記URLの通り予めメッセージキューは作成してあります。
メッセージを受け取るスレッドにてPeekMessage()は正常終了しています。
スレッドですからタイミングの問題とかあるんでしょうか。
いろいろ試してみましたがよく分からずお手上げ状態です。
誰か詳しい方いましたらご教示願います。
↓
http://www5a.biglobe.ne.jp/~crab/winsdk/PostThreadMessage.html
0111デフォルトの名無しさん
2005/10/14(金) 16:06:40忘れてましたが、環境はWin2000(SP4) + Visual Studio 6.0(SP6)です。
0112デフォルトの名無しさん
2005/10/14(金) 16:07:591564なんてエラーコードあったっけな・・・?
手元の環境では、FormatMessageしてもエラーになるんだが
0113デフォルトの名無しさん
2005/10/14(金) 16:09:040114デフォルトの名無しさん
2005/10/14(金) 16:21:58> 113
失礼しました。1159です。
0115デフォルトの名無しさん
2005/10/14(金) 16:29:09>MSDN日本語版では、PostThreadMessage()の使用上の注意として「ポストされるスレッドでメッセージキューが作成されている必要がある」と記載されていますが、
>具体的な作成方法までは記載されいません。
↑この件だけど、AttachThreadInput 側に書いてある… で、
スレッドのメッセージキューは、スレッドが Win32 USER 関数または Win32 GDI 関数の 1 つを初めて呼び出したときにシステムによって作成されます。
なので、PostThreadMessage される側のスレッドエントリの先頭で(PeekMessage のループの前に) 適当なAPI呼べばどうだろう?
0116デフォルトの名無しさん
2005/10/14(金) 16:51:38WM_USERより低いシステムメッセージ投げてない?
WM_CREATEとか投げると、そのエラー出るよ
0118デフォルトの名無しさん
2005/10/14(金) 17:01:43というかPeekMessageで読み出せるのに、メッセージキューが作られていないってどういう状況だ?
0119デフォルトの名無しさん
2005/10/14(金) 17:04:35まさかPeekMessageの戻り値じゃねぇよな
0120デフォルトの名無しさん
2005/10/14(金) 17:05:18いくらなんでも PeekMessage() 1発呼んで終わりなスレッド ってことないもんな。
0121デフォルトの名無しさん
2005/10/14(金) 18:14:46これでいいのでしょうか?
ret = PostThreadMessage(threadId[no], WM_USER + no, 0, 0);
> 120
スレッドの先頭でPeekMessage()をループさせるようにしました。
116,120のようにしたら、何とかうまく行ったみたいです。
ただ、この様に修正しなくとも時々うまく行く場合もありました。
よく分かりませんが、取り合えずこれで様子を見てみます。
ありがとうございました。
0122デフォルトの名無しさん
2005/10/14(金) 21:50:13>Win32 SDK Programming
>http://usr_vogel.at.infoseek.co.jp/Win32SDK/
死んでるから次スレでは外した方がいい。
流れぶった切ってゴメソ
0123デフォルトの名無しさん
2005/10/15(土) 08:15:18既存のシリアル通信プログラムがあります。
その通信プログラムを変更せずに、
外部から通信をフックしてモニタリングする方法(関数)なんてあるんでしょうか?
やっぱり、モニタ機を通信ケーブル間に入れるのが一般ですかね?
0124デフォルトの名無しさん
2005/10/15(土) 08:19:44モニタリング機能載せた仮想シリアルポートのドライバ作って通信プログラムを仮想ポートに接続させとくとか
0125デフォルトの名無しさん
2005/10/15(土) 08:23:53(ベクターとかにシェアウェアでいくつかあった希ガス)
APIレベルで解決するなら、
COMポートの通信に使用しているAPIをフックすれば
モニタできる・・・んだろうか?
0126デフォルトの名無しさん
2005/10/15(土) 12:15:24ををを!
例えばドライバを作るとして・・・・・
・・・・・何のSDKを調べりゃいいんですかね?
やっぱDDK辺りを?
0127デフォルトの名無しさん
2005/10/15(土) 12:43:34DDKだろね
ttp://www.sysinternals.com/utilities/portmon.html
↑にヒントぽいのがあるぞ
まぁ、モニタそのものもあるんだが…w
0128デフォルトの名無しさん
2005/10/15(土) 15:41:01判断する方法ってありますでしょうか?
WindowFromPoint()する場合そこがタイトルバーかどうかの
判断方法はどのようにしておこなえばよいのでしょうか?
教えてエロ人!
0129デフォルトの名無しさん
2005/10/15(土) 15:46:59後半WM_NCHITTESTを送信する
0130デフォルトの名無しさん
2005/10/15(土) 15:47:340131デフォルトの名無しさん
2005/10/15(土) 15:48:39閉じるメッセージを送って閉じなければタイトルバー
閉じればウィンドウ
0132デフォルトの名無しさん
2005/10/15(土) 16:39:37バカだこいつ・・・
0133デフォルトの名無しさん
2005/10/15(土) 17:14:510134デフォルトの名無しさん
2005/10/15(土) 17:49:39ありがとうございます。
調べてみます!
0135デフォルトの名無しさん
2005/10/15(土) 19:03:31それでもやはり、回線モニタは用意した方がいいぞ。
#仕事なら言うまでもないことだが。
0136デフォルトの名無しさん
2005/10/15(土) 20:19:45バカだこいつ・・・
0137デフォルトの名無しさん
2005/10/15(土) 20:24:46デスクトップ上のアクティブウインドウに別のプログラムから
キー入力を行うにはどうすればよいのでしょうか。
WIN APIとMFCをごっちゃで使っています。
HWND wh = ::GetForegroundWindow();
::SendMessage(wh, WM_CHAR, 'a', 0);
として、メモ帳をアクティブにしても何も表示されません。
0138デフォルトの名無しさん
2005/10/15(土) 20:25:170139デフォルトの名無しさん
2005/10/15(土) 20:30:29それ以前に、指定したウィンドウが子ウィンドウにメッセージを転送してくれるとは限らないし、
SendMessage()系統のAPIでメッセージをトップウィンドウに送信しても無駄だと思う。
0140デフォルトの名無しさん
2005/10/15(土) 20:46:38なんで?
0141デフォルトの名無しさん
2005/10/15(土) 20:53:26ヒント:メール欄
0142デフォルトの名無しさん
2005/10/15(土) 21:23:16sageがヒント?
あなたキティ?
0143デフォルトの名無しさん
2005/10/15(土) 21:26:180144デフォルトの名無しさん
2005/10/15(土) 21:29:19kernel32.dll を全部スルーするスケルトンどっかにないかな
そしたら、必要な所だけにコード書いて、そいつを実行ファイルと同じフォルダに入れるだけで
アレやコレや出来るのにって事。
いや、簡単なのは判ってるけど、ただ面倒なんだよね
0145デフォルトの名無しさん
2005/10/15(土) 21:45:06お前の人生っていつもそんな感じだよな
0146デフォルトの名無しさん
2005/10/15(土) 21:48:23メモ帳の場合は、メモ帳のウィンドウにあるEDITにキーイベントを送らないといけません。
アプリケーションごとにフォーカスがどの子ウィンドウににあるか意識したくないのであれば
keybd_event()使った方がよいでしょう。
> HWND wh = ::GetForegroundWindow();
ここで正しくメモ帳のウィンドウハンドルが取れているかどうかも確認した方が。
0147137
2005/10/15(土) 22:35:44::keybd_event('A', 0, KEYEVENTF_KEYUP, 0);
で入力できました。答えてくれた方々ありがとうございます。
0148デフォルトの名無しさん
2005/10/15(土) 22:39:38これ似てるなw
0149デフォルトの名無しさん
2005/10/15(土) 22:47:190150デフォルトの名無しさん
2005/10/15(土) 23:24:19探せばいくつも出てくると思うよ。
俺は任意のDLLを媒介するDLLのソースを自動生成するツールを、どっかで見たよ。
0151デフォルトの名無しさん
2005/10/15(土) 23:27:08EWのデフォルトの文字の大きさ、フォントが好きではないので自分で
設定したいと思ったのですが、変更する方法を教えていただけませんか?
0152デフォルトの名無しさん
2005/10/15(土) 23:29:310153デフォルトの名無しさん
2005/10/15(土) 23:30:46>任意のDLLを媒介するDLL
そうか アセンブラで書いて、必要な関数以外、 中身は JMP 命令 にすればいいんだ!
0154デフォルトの名無しさん
2005/10/15(土) 23:36:02DLLフックしちゃダメなの?
0155デフォルトの名無しさん
2005/10/15(土) 23:48:32ファックしたらつかまるぞ
0156デフォルトの名無しさん
2005/10/16(日) 00:10:070157デフォルトの名無しさん
2005/10/16(日) 00:54:08メッセージのイベントって拾えるのでしょうか。
要はソケットとメッセージのイベント両方を待ち受けしたいのですが
他にいい方法があれば誰か詳しい方ご教示願います。
他にWaitForMultipleObjects()などもありますが今ひとつ使い方が
よく分かりません。よろしくお願いします。
0158デフォルトの名無しさん
2005/10/16(日) 00:57:58お前さんもWaitForMultipleObjectsしていなさいな。
0159デフォルトの名無しさん
2005/10/16(日) 00:59:20MsgWaitForMultipleObjects()
とかじゃなくてか?
0160デフォルトの名無しさん
2005/10/16(日) 02:31:41listexpだな
0161デフォルトの名無しさん
2005/10/16(日) 05:00:40そんな面倒なことしなくても、DLLがエクスポートしている関数に
フックを仕掛けることができる。
これなら書かなければいけないコードは、フックする関数の分だけでいい。
>>153
そんなアナタにはnaked関数がおすすめ。
0162デフォルトの名無しさん
2005/10/16(日) 09:00:49クラスに WC_TABCONTROL を指定してタブコントロールを作ったんですが、
タブ上で右クリックされたことを検出するにはどうしたらよいでしょうか?
0163デフォルトの名無しさん
2005/10/16(日) 15:51:08ルートのウィンドウにCreateWindwoで貼り付けた"BUTTON"コントロールの、
文字色を設定したい場合はOwnerDrawというやつしか手段はないもんでしょうか?
フォントはWM_SETFONTで変わるけど色が…。
そもそもSetWindowTextで文字を出力するのが間違い?
でもHDC取得してTextOutじゃ何も表示されないし。
識者の方々、御指南求みます。
0164163
2005/10/16(日) 15:55:41×Windwo
○Window
うぃんどぅお。_| ̄|○ il||li
0165デフォルトの名無しさん
2005/10/16(日) 15:58:26他にも方法はあるが、OwnerDrawでやるのが無難。
0166163
2005/10/16(日) 16:02:25識者殿、サンクス。
猫WinとAPIリファレンスで修行中です。
これからOwnerDrawってやつの使い方を探す旅にいってきま。
目指せWinXPの電卓みたいなボタン。
0167デフォルトの名無しさん
2005/10/16(日) 18:15:17XPの電卓みたいなボタンでいいならマニフェストを書くだけだぞ。
XP以外のOSでもああいうボタンにしたいならけっこう手間だけど
0168デフォルトの名無しさん
2005/10/16(日) 18:20:075ボタンマウスの戻ると進むボタンに対して、アクセラレータキーを割り当てたいのですが、
どのようにすれば割り当てられますか?
環境は、VC.net 2003です。
0169163, 166
2005/10/16(日) 18:25:46XP限定なら、マニフェストでもできるですか。
OwnerDrawを使うと、98だら2000だらでも文字色が変えられるってことですな。
ん〜OwnerDrawは、この先どのみち避けて通れない道っぽいので、
今回は習作だし、"けっこうな手間"をかけてみることにしまつ。
Manifestも手段の一つとして覚えておきま。サンクス。
0170デフォルトの名無しさん
2005/10/16(日) 18:29:10VC6のMSDN読むとWM_CTLCOLORBTNでできそうに見えるんだけど、
実際はできないんだよなあ。後の版でこっそり訂正入れてやがるの。
0171163
2005/10/16(日) 19:13:17できそうに見えたので、散々やってみましたが、
できなかったので聞いてみた次第です。(w
BM_SETTEXTCOLOR とか、あってもよさそなもんですが…。
0172デフォルトの名無しさん
2005/10/16(日) 22:03:290173デフォルトの名無しさん
2005/10/16(日) 22:15:170174デフォルトの名無しさん
2005/10/16(日) 22:15:320175デフォルトの名無しさん
2005/10/16(日) 22:32:280176172
2005/10/16(日) 23:18:04若さが足りません?
0177デフォルトの名無しさん
2005/10/16(日) 23:19:39足りない足りない。
もー全然足りないね。
どのくらい足りないかというと15年くらい。
とっくに腐ってるよ。
0179デフォルトの名無しさん
2005/10/16(日) 23:23:16俺が在籍してた大学には白髪のおじいさんもいたよ。現役大学生で。
ある意味若いがw
0180172
2005/10/16(日) 23:29:26私、今年還暦を迎えたのですがあなたの好みは45〜ですか?
それなら従姉妹のいいのがいるので紹介しますから
質問に答えてもらえません?
大丈夫です、貞操は守っているそうですから。
0182デフォルトの名無しさん
2005/10/17(月) 00:14:520183デフォルトの名無しさん
2005/10/17(月) 02:48:550184デフォルトの名無しさん
2005/10/17(月) 08:30:31まさか別のプログラムにハンドル渡すとかバカなこと考えてるんじゃねぇだろうな・・・
0185デフォルトの名無しさん
2005/10/17(月) 08:33:010186デフォルトの名無しさん
2005/10/17(月) 09:07:54キーボードイベントはスキャンコードを使用して実現できたのですが・・・・
0187デフォルトの名無しさん
2005/10/17(月) 16:47:050188デフォルトの名無しさん
2005/10/17(月) 19:43:18> 別のプログラムにハンドル渡すとかバカなこと
いちおうWindowsでは可能だし、そのための仕掛けもある。
でも普通はやらない。
0189デフォルトの名無しさん
2005/10/17(月) 20:20:210190デフォルトの名無しさん
2005/10/17(月) 20:48:20NtQueryObject
0191デフォルトの名無しさん
2005/10/17(月) 20:50:16>>183
この辺参考に。
http://www.codeproject.com/debug/cdbntsd5.asp
0192183
2005/10/17(月) 21:22:48アプリ側がもつのが嫌なだけです.
NtQueryObjectはドキュメント化されてないAPIのようで
ちょっと調べてみます. ありがとうございました
0193デフォルトの名無しさん
2005/10/17(月) 21:25:13どこかにサンプルコードとか公開されてませんでしょうか?、情報ありましたらよろしくお願いします。
0194デフォルトの名無しさん
2005/10/17(月) 21:31:38これじゃダメなの?
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winui/winui/windowsuserinterface/userinput/mouseinput/mouseinputreference/mouseinputfunctions/trackmouseevent.asp
0195デフォルトの名無しさん
2005/10/17(月) 21:33:49(゚д゚;)・・・・
0196デフォルトの名無しさん
2005/10/17(月) 22:11:450197デフォルトの名無しさん
2005/10/17(月) 22:17:000198デフォルトの名無しさん
2005/10/17(月) 22:21:230199デフォルトの名無しさん
2005/10/17(月) 22:28:500200デフォルトの名無しさん
2005/10/17(月) 22:43:52ハンドルを他プロセスに渡したいときとか
0202デフォルトの名無しさん
2005/10/17(月) 22:48:41まったく無関係
0203デフォルトの名無しさん
2005/10/17(月) 22:49:02GetFileInformationByHandleなんかからも想像できると思うが、
HANDLE->ファイル名をOSが持っているとは限らん。
0204デフォルトの名無しさん
2005/10/17(月) 22:50:540205デフォルトの名無しさん
2005/10/17(月) 23:37:50そーか?
データを二重持ちしないのは正規化の基本だべ
0206デフォルトの名無しさん
2005/10/18(火) 00:16:42そもそも、元々存在ものを正規化するとは、どういう了見よ?
と言う話だろ?
0207206
2005/10/18(火) 00:17:58〇存在しないものを
ヌケタ…orz
0208デフォルトの名無しさん
2005/10/18(火) 00:34:04ファイル名、というモノは存在するだろ。
0209デフォルトの名無しさん
2005/10/18(火) 02:48:48そういった場合のHANDLEとファイル名の対応ってのは曖昧になる。
たぶん、OS内ではファイルシステム上での識別子(UNIXでいうi-node番号)と、
HANDLEの対応表はもってるけど、それが、何というファイル名で参照されたのかは、
管理してないんじゃないかと思う。
0210デフォルトの名無しさん
2005/10/18(火) 03:05:45「それ」がいま、なんと言うファイル名なのか、はわかりそうなものだけど。
そういえば、sysinternalsのProcess Explorerは、
プロセスが開いているファイルハンドルと、ファイルパスを見ることができるけど、
あれはどうやっているんだろう。
0211デフォルトの名無しさん
2005/10/18(火) 03:14:10ハンドルには、全てのプロセスで共通に使えるものと
自分のプロセスでしか使えないもの(擬似ハンドル)があるのよ。
擬似ハンドルは実は定数で、どのプロセスで取得しても同じ値が返ってくる。
DuplicateHandleを使うと、擬似ハンドルを本物のハンドルに変換できる。
0212デフォルトの名無しさん
2005/10/18(火) 03:50:35「ちょっと前」はわかっても、「いま」は、わからない。
ファイル名の変更をロックでもしない限り、取得した後も変っていないことは誰も保証できない。
0213デフォルトの名無しさん
2005/10/18(火) 07:27:34ファイルコピーするときはコピー元とコピー先を完璧にロックしてから
始めなきゃ信頼できないわけだがWindows Server 2003以外には
そもそもそのための機構(ボリュームのシャドウコピーとか)すらないし
ファイルの保存ダイアログの上書き確認とか、答えてる間に状態が
変わってるとか超ありそうなもんだが誰も気にしてないし。
近似で十分なことなんていくらでもあるもんだよ。
ちなみにProcess Explorerとかで取れるのは「開いたときになんという
パスを使ったか」だと思われ(そうじゃないとハードリンクを持ってるファイルとか
決定のしようがないし)
0214デフォルトの名無しさん
2005/10/18(火) 07:30:180215デフォルトの名無しさん
2005/10/18(火) 08:10:10GetModuleFileNameはファイル名を求めるためより、
実行ファイルの有るディレクトリのフルパスを求めるのに使われる方が多いからな
EXE実行中のディレクトリは名前変更不可だ
0216193
2005/10/18(火) 10:46:37イイ!
多謝多謝!
助かりました。
0217デフォルトの名無しさん
2005/10/18(火) 10:49:050218デフォルトの名無しさん
2005/10/18(火) 11:38:14不定と考えてプログラムを組むべき
0219デフォルトの名無しさん
2005/10/18(火) 11:46:13Cのライブラリみたいにベンダー毎に実装の仕方を任せてるものでも無いのに不定でたまるか
>>217
全ての同じ名前のウィンドウの中で、最も前面にあるウィンドウのハンドルが返る
あと、同じ名前のウィンドウでも、それが子ウィンドウの場合は検索対象にならないのは知ってるよな?
0221デフォルトの名無しさん
2005/10/18(火) 11:49:200222デフォルトの名無しさん
2005/10/18(火) 11:55:29>>218は、
ドキュメントに書いてない挙動を前提として
プログラムを書くのは良くないってことかと
実際に、ドキュメントに書いてあるかどうかは知らんけど
0223デフォルトの名無しさん
2005/10/18(火) 12:29:560224デフォルトの名無しさん
2005/10/18(火) 12:36:510225デフォルトの名無しさん
2005/10/18(火) 13:03:240226デフォルトの名無しさん
2005/10/18(火) 13:46:11ナニイッテルンデスカ
0227デフォルトの名無しさん
2005/10/18(火) 14:45:59仕様に書いてないから、わからない。
という言うと、
実際に試してみろよ、何でも人に教わろうとするなよ
とかいって怒りだす人が。
そんなこと言ってるんじゃないのよー。
0228デフォルトの名無しさん
2005/10/18(火) 14:51:230229デフォルトの名無しさん
2005/10/18(火) 14:53:040230デフォルトの名無しさん
2005/10/18(火) 14:55:180231デフォルトの名無しさん
2005/10/18(火) 15:43:150232デフォルトの名無しさん
2005/10/18(火) 16:13:13DirectXでまでそんなこと言うような奴は、狂ってるんだろうなw
0233デフォルトの名無しさん
2005/10/18(火) 22:17:26FATだと(Win9xだと?)変更できるな
WINDOWSディレクトリのリネームすらできるという豪快さ
(もちろんリネームした後はまともに動かなくなるが)
0234デフォルトの名無しさん
2005/10/18(火) 22:20:000235215
2005/10/18(火) 22:21:01MSめ、中途半端なことしやがって・・・
0236デフォルトの名無しさん
2005/10/18(火) 22:29:39もちろん終了するまでクラスタは解放されないけど
0237デフォルトの名無しさん
2005/10/18(火) 22:34:54つまりリネームできなくなる原因は「exeがそこで実行されているから」ではなくて
「そこがカレントディレクトリになっているから」(内部的にプロセスはカレントディレクトリ
のハンドルを保持している)
0238デフォルトの名無しさん
2005/10/18(火) 22:40:350239デフォルトの名無しさん
2005/10/18(火) 22:58:21へー。メモリマップドファイルとしてオープンされてるのかと思ってたよ。
0240デフォルトの名無しさん
2005/10/18(火) 23:13:02されてるよ。されてるにもかかわらずリネームできるの。
UNIXじゃ常識だけどWindowsの常識ではびっくりだわな。
0241デフォルトの名無しさん
2005/10/19(水) 03:53:02OSのバージョンが上がったり、サービスパックや修正パッチがあたると、
途端に動作が破綻する糞コードを書く人がいるよねー。
0242デフォルトの名無しさん
2005/10/19(水) 11:58:160243デフォルトの名無しさん
2005/10/19(水) 13:32:230244デフォルトの名無しさん
2005/10/19(水) 13:48:050245デフォルトの名無しさん
2005/10/20(木) 01:16:58「フッ、つまらん釣りだな」と思いつつ、試してみた。
XPHomeSP2でも実行中のEXEをリネーム・移動ができた。
・・・正直驚いた。
0246デフォルトの名無しさん
2005/10/20(木) 07:02:530247デフォルトの名無しさん
2005/10/20(木) 08:19:11ストリームで何かできませんか
0248デフォルトの名無しさん
2005/10/20(木) 10:56:32始点終点を指定してないつもりが指定になってるようです。
完全な円にしたいのですが、どうすれば宜しいでしょうか?
0249デフォルトの名無しさん
2005/10/20(木) 11:09:51始点と終点が同じじゃないと円にならないと思われ。
つーか、指定しないことはできないと思うのだが。
ソース晒して味噌。
0250デフォルトの名無しさん
2005/10/20(木) 11:10:14始点終点をちゃんと指定する
0251デフォルトの名無しさん
2005/10/20(木) 14:09:12どういう方法が一番高速なのでしょうか?
あと、マウスカーソル部分一点のRGB値を表示するようなプログラムだったら、
単純にGetPixel()でも問題ないのでしょうか?
0252251
2005/10/20(木) 14:12:390253デフォルトの名無しさん
2005/10/20(木) 14:16:22あえて回答もらうの否定してるんだろうか
0254デフォルトの名無しさん
2005/10/20(木) 14:16:29GetDC(NULL) した DC (←画面を参照できる) から、StretchBlt するとイイヨ。
0255デフォルトの名無しさん
2005/10/20(木) 15:45:52そんなん高速だなんだってレベルなのか?
…釣りか。
025614
2005/10/20(木) 17:37:17DirectInputを使っているプログラムにもキーストロークを送ることができたのですが、
マウスの操作ができません。
DirectInput使用のプログラムへ、マウスモーションやクリックを送るにはどうすればいいのでしょうか?
0257デフォルトの名無しさん
2005/10/20(木) 18:59:21⊂⌒( ・ω・) ゲームくらい自分でやれよ
`ヽ_っ⌒/⌒c
⌒ ⌒
0258デフォルトの名無しさん
2005/10/20(木) 21:15:230259デフォルトの名無しさん
2005/10/20(木) 21:19:41ありません
0260デフォルトの名無しさん
2005/10/20(木) 21:20:15win32でどのようにやればよいのでしょうか?
お願いします。
0261デフォルトの名無しさん
2005/10/20(木) 21:46:37プロセス一覧を取得して、それらを個別にOpenProcessするまではできました。
ReadProcessMemoryでどこかのアドレスから読み取って構造体を当てれば
いいのかなとか、もっとスマートに取得する方法があるんじゃないかと思うのですが、
この辺の情報が見つからなくて困っています。
0262デフォルトの名無しさん
2005/10/20(木) 22:02:100263デフォルトの名無しさん
2005/10/20(木) 23:03:58副次ストリームがあるじゃない
0264デフォルトの名無しさん
2005/10/20(木) 23:46:28未熟で申し訳ありません、イメージがつかめないのですが、
たとえば起動済みのテキストエディタのコマンドラインを知りたいと思ったら
相手のプロセスに乗り込んでいって何かやるということでしょうか?
向こうでGetCommandLine()やってこちらに通知させる?
そんなことが可能なのでしょうか・・・
勘違いしていたらすみません
0265デフォルトの名無しさん
2005/10/21(金) 02:17:33Simple Mixer Control Wrapper
ttp://www.codeproject.com/audio/alexfmixer.asp
システム音量制御は、上URLのCAlexfMixerクラスを使うと簡単。
0266デフォルトの名無しさん
2005/10/21(金) 05:50:22ストリームの欠点は、ファイルをNTFSから外に出すと、失われること・・・。
それはいいとして、
EXEのファイル名がわからないのに、どうやってストリームをCreateFileしますか?
0267デフォルトの名無しさん
2005/10/21(金) 08:05:45PEBを見るという手もある
0268デフォルトの名無しさん
2005/10/21(金) 12:44:08GetPixel(GetDC(NULL),...)が重い上に遅くて困っています。
もっと早い方法はありませんか?
0269デフォルトの名無しさん
2005/10/21(金) 12:46:27どうでもいいがそのコードだとDC解放できないような希ガス
0270デフォルトの名無しさん
2005/10/21(金) 13:18:48教えてやれよReleaseDC
>>268 MSDN嫁
0272デフォルトの名無しさん
2005/10/21(金) 13:49:04GetTickCountでGetPixelにいくらかかってる?
すぐ帰ってくるけどな。
0273デフォルトの名無しさん
2005/10/21(金) 14:05:163Dのゲームのウインドウの上にカーソルを持っていくと
(3Dのゲーム画面のRGB値を取得しようとすると)
そのゲームのFPSが目に見えて落ちるんです。
0274デフォルトの名無しさん
2005/10/21(金) 14:09:52DirectX部分のDCとってるのか...?。
ならIDirect3DSurface9とか使え。
0275デフォルトの名無しさん
2005/10/21(金) 14:15:38いってらっしゃい
0276デフォルトの名無しさん
2005/10/21(金) 18:15:100278デフォルトの名無しさん
2005/10/21(金) 20:46:44ファイル(F) 編集(E) ・・・
と並んでいますが、 ヘルプ(H)だけ
そいつらと離して、常に右端へ配置したいのです。
常に最大最小化閉ボタンの真下あたりに来るように。
どうすればいいですか?
0279デフォルトの名無しさん
2005/10/21(金) 20:50:420280デフォルトの名無しさん
2005/10/21(金) 20:52:05何かとっかかりとか教えていただけると嬉しいです・・・
メニューとか右端とかで検索してもどうも引っかからなくて・・・
0281デフォルトの名無しさん
2005/10/21(金) 21:01:470282デフォルトの名無しさん
2005/10/21(金) 21:07:570283デフォルトの名無しさん
2005/10/21(金) 21:08:07いうことですよ。
0284デフォルトの名無しさん
2005/10/21(金) 21:10:25今、下のようなコードでCOMポートを開いて通信をしようとしているのですが、WriteFileで送信はできてもReadFileで受信ができません。
しかし、このコードのプログラムを実行する前に一度ハイパーターミナルなどでポートを使用した後だとReadFileで受信ができます。
おそらく初期化の手続きに問題があるとおもうのですが、どこに問題があるのか教えて頂けないでしょうか。よろしくお願いします。
//問題のコード
// PORT OPEN
InitializeCriticalSection( &com->CritSec);
com->Com = CreateFile( port, GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, FILE_FLAG_OVERLAPPED, NULL);
com->Stat = stat;
com->Pc = pc;
sprintf( com->Port, "%s", port);
// イベントハンドラ設定
com->hReadEvent = CreateEvent( 0, TRUE, FALSE, 0);
com->hWriteEvent = CreateEvent( 0, TRUE, FALSE, 0);
//下に続く
0285続き
2005/10/21(金) 21:11:28com->ReadOverLapoed.Offset = 0;
com->ReadOverLapoed.OffsetHigh = 0;
com->ReadOverLapoed.hEvent = com->hReadEvent;
com->WriteOverLapped.Offset = 0;
com->WriteOverLapped.OffsetHigh = 0;
com->WriteOverLapped.hEvent = com->hWriteEvent;
// その他設定
GetCommState( com->Com, &dcb);
dcb.fBinary = 1;
dcb.BaudRate = 9600;
dcb.ByteSize = 8;
dcb.Parity = 0;
dcb.StopBits = 0;
dcb.EofChar = 0x0a;
dcb.EvtChar = 0x0a;
SetCommState( com->Com, &dcb);
0286デフォルトの名無しさん
2005/10/21(金) 21:17:53MF_HELP
>>283
昔はヘルプメニューが右に寄るのって標準的だったんだけどなあ。
0287デフォルトの名無しさん
2005/10/21(金) 21:24:58リソースのメニューなら、メニューのプロパティで「ヘルプ」をチェックするか、
リソースファイルでHELPオプション付ける手もある。
IDC_MAINMENU MENU DISCARDABLE
BEGIN
POPUP "&Help", HELP
(以下略)
0288デフォルトの名無しさん
2005/10/21(金) 21:29:39そんな標準的しらねぇよ?
0289デフォルトの名無しさん
2005/10/21(金) 21:30:26フレームウィンドウのリサイズに伴って位置を移動させる必要があるけど。
0290デフォルトの名無しさん
2005/10/21(金) 21:37:00Win3.1の頃の標準なんてもはやどうでもいい。
0291デフォルトの名無しさん
2005/10/21(金) 21:41:05に準拠したようなヘルプメニューを Windows で実装するためにだけ存在しますた。
普通の MS のプログラムでは Help メニューも右寄せにはなっていなかったはず。
0292デフォルトの名無しさん
2005/10/21(金) 21:42:01ttp://en.wikipedia.org/wiki/Image:Windows_3.0_workspace.png
0294デフォルトの名無しさん
2005/10/21(金) 21:49:17リソースエディタだと「IDを編集できません」ってなってるので何かいつもとは違うやりかたなんだろうなあと。
0295278
2005/10/21(金) 21:52:42色んな知識が身につきました。
そうですよね、ヘルプが右側にあったのって結構昔ですよね。
>>286さんの教えてくれたMF_HELPを使おうと思ってModifyMenuとか調べてたら、
>>287さんの超簡単な方法であっさりできてしまい感激です。
ありがとうございました!
0296デフォルトの名無しさん
2005/10/21(金) 22:01:48リソースエディタでIDを入れる
0297デフォルトの名無しさん
2005/10/21(金) 22:03:22WM_INIMENUPOPUPがくるんじゃなかったっけ?
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winui/winui/windowsuserinterface/userinput/keyboardaccelerators/keyboardacceleratorreference/keyboardacceleratormessages/wm_initmenupopup.asp
0298デフォルトの名無しさん
2005/10/21(金) 22:29:37GetCommTimeouts()の結果を確認せよ。
お勧め設定はBuildCommDCBAndTimeouts()を例えば
BuildCommDCBAndTimeouts("com1: baud=9600 parity=n data=8 stop=1 to=off xon=on "
"odsr=off octs=off dtr=on rts=on idsr=off", & dcb, & timeOut);
のように使う方法。
0299デフォルトの名無しさん
2005/10/21(金) 22:32:22何故失敗するかは知らないけど。
0300268
2005/10/22(土) 00:43:22DirectXはまったく知らないのですががんばってみます。
GetFrontBufferDataで取得して、
IDirect3DSurface9::GetDC()で、後は好きなようにしていいのかな。
0301デフォルトの名無しさん
2005/10/22(土) 02:00:00「ファイル(\036F\037フ)」
こんなアクセスキーをつけていたんだが、日本語のアクセスキーが
使えなくなったのっていつからだっけ? Win95?
0302デフォルトの名無しさん
2005/10/22(土) 05:17:17また、HTMLの画面とかを出さずに単独で出現させることは可能なのでしょうか?
0303デフォルトの名無しさん
2005/10/22(土) 05:34:28世界共通バイナリになってから(Win2k/XP)?
0304デフォルトの名無しさん
2005/10/22(土) 08:39:200305デフォルトの名無しさん
2005/10/22(土) 10:18:47検索ダイアログなら、コモンダイアログでなかったっけ?
0306デフォルトの名無しさん
2005/10/22(土) 14:50:49実際にアプリが使ってたかどうかはともかくとしてOSに機能はあったよ
Win/Vが苦労した点の1つもカナアクセスキーのサポートだったし
0307デフォルトの名無しさん
2005/10/22(土) 15:01:240308デフォルトの名無しさん
2005/10/22(土) 15:05:50POPUP "ウィンドウ(\036W\037ウ)"
{
MENUITEM "カスケード表示(\036C\037カ)\tShift+F5", IDM_CASCADE
MENUITEM "タイル表示(\036T\037タ)\tShift+F4", IDM_TILE
MENUITEM "アイコン再配置(\036I\037サ)", IDM_ARRANGE
}
POPUP "ヘルプ(\036H\037ヘ)"
{
MENUITEM "MDI について(\036A\037ニ)...\tF1", IDM_ABOUT
}
0309デフォルトの名無しさん
2005/10/22(土) 15:17:37コンパネからUIが消えたのは3.1だったかな
でも質問は「使えなくなったのはいつか」なわけで
0310デフォルトの名無しさん
2005/10/22(土) 17:11:040311デフォルトの名無しさん
2005/10/22(土) 17:16:210312デフォルトの名無しさん
2005/10/22(土) 17:26:080313デフォルトの名無しさん
2005/10/22(土) 17:28:02MFCスレか初心者スレへ。そのときはただ「無効」と書かず、どうやったらどうなったか書くように。
0314デフォルトの名無しさん
2005/10/22(土) 19:24:37> 簡単なインストーラを作りたいんですが、どなたか教えてください。
> 実際、やることは簡単で、myapp.exeを指定したフォルダにコピーするだけです。
> で、myapp.exeをインストーラと同じフォルダに入れておけば、myapp.exeを
> いったん読み込んで、指定したフォルダに書き込むプログラムはすぐできます。
> しかし、そうではなくて、インストーラの中にmyapp.exeのデータを埋め込んで
> しまいたいのです。ユーザから見えないように。
> また、インストーラをファイル1つにするために。
> とすると、バイナリのデータファイルの内容を、実行可能ファイル(今の場合、
> インストーラ)にマージさせることなどが可能なのでしょうか?
> そうでないなら、ファイル1つのインストーラはどのようにできているのでしょうか。
> どなたか、教えていただけないでしょうか。
で、リソースがヒントと言われたのですが、よくわかりません。
Visual C++のリソースにもバイナリファイルなどなかったような。
ただ、いずれにしても、私はBCCでやっているので、リソースファイルも手書きになりますが。
どなたかお願い致します。
0315314
2005/10/22(土) 19:26:14できるなら、その方法を教えていただきたいのです。
連投すみません。よろしくお願い致します。
0316デフォルトの名無しさん
2005/10/22(土) 19:29:25ttp://www.sm.rim.or.jp/~shishido/rctest.html
BCCならこの辺読めば分かるだろ。
ついでにVC++のリソース追加ウィザードでもバイナリデータは書き込めるぞ。
0317デフォルトの名無しさん
2005/10/22(土) 19:31:510318314
2005/10/22(土) 19:39:03ものすごく速いレスで驚きました。
ありがとうございます。
そのページ勉強してみます。
0319デフォルトの名無しさん
2005/10/22(土) 19:43:06普通にLVM_GETITEMメッセージを送ってもアドレス空間が違うので、ポインタが無効になってしまう・・・
0320デフォルトの名無しさん
2005/10/22(土) 19:55:51時間の差を求めたり、加算したりしたいんですが、
CompareFileTmeという比較APIはあるのに、差を求めるAPIが見付かりませんでした。
時間同士の差を取得したり加算したりする良い方法は無いでしょうか?
0321デフォルトの名無しさん
2005/10/22(土) 20:04:28自分で関数書けば?
0322デフォルトの名無しさん
2005/10/22(土) 20:05:51VirtualAllocExとか。9x系では別の手段が必要だけど。
0323デフォルトの名無しさん
2005/10/22(土) 20:14:37フックでそのプロセスに忍び込むとか
0324デフォルトの名無しさん
2005/10/22(土) 20:17:37ミリ秒単位の精度が必要ないなら素直に標準関数を使おう。
#そしてそれはスレ違いなのでここでは説明できない。
0325デフォルトの名無しさん
2005/10/22(土) 20:23:43FILETIMEにしてULARGE_INTEGERで計算とか
0326デフォルトの名無しさん
2005/10/22(土) 20:25:52それができたらここに書込みなんてしませんよ。
>>324
標準関数はdouble型が返ってきて気持ち悪いので嫌です。
0327デフォルトの名無しさん
2005/10/22(土) 20:26:38それしかなさそうですね。
ありがとうございました。
0328デフォルトの名無しさん
2005/10/22(土) 20:37:05>標準関数はdouble型が返ってきて気持ち悪いので嫌です。
いや、time_t同士の引き算で充分だろ。
0329デフォルトの名無しさん
2005/10/22(土) 21:01:08>>ttp://www.super-computing.org/sr8000/timer.html
0330デフォルトの名無しさん
2005/10/22(土) 21:36:22どうもありがとうございます。
その線で行ってみます。
0331デフォルトの名無しさん
2005/10/23(日) 00:04:02charの配列として固定で埋め込んで、
そのデータをファイルとして書き出せばいいじゃないか。
0332デフォルトの名無しさん
2005/10/23(日) 00:07:440333デフォルトの名無しさん
2005/10/23(日) 00:11:252chで聞くことに意味を求めることが既に間違っている
0334デフォルトの名無しさん
2005/10/23(日) 00:16:50( ´ _ゝ`)
0335デフォルトの名無しさん
2005/10/23(日) 00:34:472chを神聖視しすぎ
0336デフォルトの名無しさん
2005/10/23(日) 00:59:11どういうのが見えないって意味なのかなー
0337デフォルトの名無しさん
2005/10/23(日) 01:11:33こういう意味なんだろ
0338デフォルトの名無しさん
2005/10/23(日) 01:18:330339デフォルトの名無しさん
2005/10/23(日) 01:55:090340デフォルトの名無しさん
2005/10/23(日) 11:08:25どういった方法があるのでしょうか?
ウィンドウを多重起動するのでFindWindwでは上手く取得できません。
0341デフォルトの名無しさん
2005/10/23(日) 11:13:23HWNDを受け取る初期化関数をDLLが公開するのが簡単。
0342デフォルトの名無しさん
2005/10/23(日) 11:17:18GetProcessIdとGetWindowProcessThreadIdで照合とか‥
別に方法ありそうだけど
0343デフォルトの名無しさん
2005/10/23(日) 11:19:230344340
2005/10/23(日) 12:20:50ws2_32.dllをフックしているので、その方法は厳しいかと思います。
>>342
GetProcessIdをVC++.NETで使おうとすると定義されていない〜となるので
GetProcessIdをMSDNで調べたら、Requires Windows "Longhorn" or Windows XP SP1.
と書いてありました。うちの環境はWindowsXP SP2なのですがそのAPIはもう使えないのでしょうか?
>>343
残念ながら自作じゃないんです。
0345340
2005/10/23(日) 14:33:17>>342さんの書いたことをヒントにいろいろ調べて、
GetCurrentProcessId()とGetWindowThreadProcessId()を使えば出来るということがわかりました。
回答していただいた皆さんありがとうございました。
0346デフォルトの名無しさん
2005/10/23(日) 14:39:46GetParent じゃだめだった?
0347340
2005/10/23(日) 15:08:29これは、子ウィンドウのハンドルを引数に与えないといけないのですが、
子ウィンドウが無いので出来ませんでした。
駄目と思いつつ、hModuleを引数に与えてみましたがやはり無理でした。
0348デフォルトの名無しさん
2005/10/23(日) 15:56:10絶対に出来ないことなのかと聞いてみたい。
他に代替手段があるかもしれないから、なにが
したくて親windowハンドルを取得したくなったのか書いてちょ
0349デフォルトの名無しさん
2005/10/23(日) 15:59:24マクロだとかスクリーンショットだとか。
0350デフォルトの名無しさん
2005/10/23(日) 16:12:43CreateSolidBrushは削除とかないですよね?
あとリージョンも削除しなくていいんですか?
0351デフォルトの名無しさん
2005/10/23(日) 16:23:28「親」ウィンドウを探そうって訳じゃないのだな。
だったら、DLLの関数にメッセージを投げたいウィンドウのハンドルを
パラメータで渡せばいいだけだな。
0352デフォルトの名無しさん
2005/10/23(日) 16:29:06ファイルを削除しようと思い
DeleteFile関数をつかっています。
bool mcc = DeleteFile("ファイル名");
mcc はtrue ですが、削除できていません。
どうしてでしょうか。
後、remove 関数とかも使ってみましたが、
戻り値が0でも削除できていないのです。
0353340
2005/10/23(日) 16:34:02そうするにはSendMessageを行う際にウィンドウハンドルが必要だったんです。
うちの回線が不安定で時々接続が切れるので、
そうなったら自動で再接続をするってツールが必要なので作りました。
他に方法ってあるんですかねぇ。
p.s.
縦読みすると「ウそうそ」とか書いてありますが本文とは関係ありません。
0354デフォルトの名無しさん
2005/10/23(日) 16:39:29ツール作る以外に方法はあると思う
0355デフォルトの名無しさん
2005/10/23(日) 16:39:34そのファイルエクスプローラで消せる?
0356デフォルトの名無しさん
2005/10/23(日) 16:41:570357340
2005/10/23(日) 16:48:15接続が切れるのはソフトウェアのほうなんです。
そっちには自動再接続などの設定項目が無かったんで、
自作ツールで強引に繋いでしまおうと思ったんです。
0358デフォルトの名無しさん
2005/10/23(日) 17:09:11削除しなきゃダメだよ
0359デフォルトの名無しさん
2005/10/23(日) 17:21:04マジですか!
それは戻り値を取ってDeleteObject()に渡すんでしょうか?
0360デフォルトの名無しさん
2005/10/23(日) 17:52:19システムに渡してしまうから必要ないとかそう言う話ではない?
SetWindowRgnとか、WNDCLASS::hbrBackgroundとか。
0361350
2005/10/23(日) 18:13:25そのへんよく分かってなかったので
もう一回勉強しなおしてきます。ありがとうございました!
0363デフォルトの名無しさん
2005/10/23(日) 20:57:17ファイル名をフルパスにしていなくて、カレントがあさってにあるってオチか?
0364デフォルトの名無しさん
2005/10/23(日) 21:06:54いいえ違うんです。
カレントフォルダーを収得して、
フルパスにしてるのです。
0365デフォルトの名無しさん
2005/10/23(日) 21:10:14#define WIN32_WINNT 0x502
が必要なんじゃないの?
0366デフォルトの名無しさん
2005/10/23(日) 21:10:41どうでもいいけど、カレントフォルダーを収得とか、日本語おかしいな
0367デフォルトの名無しさん
2005/10/23(日) 21:12:19ただ、そのファイルからデータを収得して、
閉じた。経緯はあるので、多分それが原因のような気がしてきました。
それ以外の何のつながりもないファイルなら、削除できましたので、
0368デフォルトの名無しさん
2005/10/23(日) 21:14:15GetCurrentDirectoryでパスを収得して、ファイル名と引っ付けています。
0369デフォルトの名無しさん
2005/10/23(日) 21:19:340370デフォルトの名無しさん
2005/10/23(日) 21:24:20その収得が、日本語おかしいって言っとんねん
で、ほんとにちゃんと閉じてんの?
CloseHandleしてる?
してるんなら、読み込んだりしたとか関係無い
0371デフォルトの名無しさん
2005/10/23(日) 21:27:080372デフォルトの名無しさん
2005/10/23(日) 21:36:010373デフォルトの名無しさん
2005/10/23(日) 23:21:17取得ですか。
fstream で、データを取り入れているのですが、
closeで閉じていますが、タイミングを外して、削除させることにしました。
皆様ありがとうございました。
0374デフォルトの名無しさん
2005/10/23(日) 23:28:300375デフォルトの名無しさん
2005/10/23(日) 23:50:21読み込みに使っていますが、だめなのでしょうか。
0376デフォルトの名無しさん
2005/10/23(日) 23:59:48少なくともfstreamが握っている間はファイルを削除できないと思われる。
それとも374は単に読み込むだけならifstreamを使えと言いたいだけかもしれないが。
0377デフォルトの名無しさん
2005/10/24(月) 01:12:55なんで他のプロセス空間にDLLを忍び込ませる程度の知識があって
そこで悩むのかが俺には分からない。
そもそも普通は順番が逆な気もするが。
(ウィンドウハンドルからターゲットのプロセスを探す)
ウィンドウ作成より先に読み込まれるような方法でDLLを仕込むなら、
WM_CREATEをフックするとかした方がスマートかと。
0378デフォルトの名無しさん
2005/10/24(月) 08:15:37ちょっと問題のコード出して見ろよ
0379デフォルトの名無しさん
2005/10/24(月) 08:19:21スレ違いだ。掘り下げるならほかでやれ。
0380デフォルトの名無しさん
2005/10/24(月) 08:52:080381デフォルトの名無しさん
2005/10/24(月) 11:21:27皆様いろいろとすみません。
fstream ifstreamもう少し詳しく調べてみること私にとって必須です。
しかし、callback関数の部分で、最後に書き込みもしていましたから、
結局ofstream もつかっていました。
細かくまとめて、ソースコードあげることも考えましたが、
いろいろとご迷惑をおかけすることとなりそうですので、
それでは、皆様ありがとうございました。
0383デフォルトの名無しさん
2005/10/24(月) 16:30:35ファイル共有はC/C++の仕様ではなくOS依存の仕様なので、
それを使うにはOS依存の非標準関数を呼び出す必要がある。
fstream ff;
int fd = _sopen(,,,);
ff.attach(fd);
0384デフォルトの名無しさん
2005/10/24(月) 17:29:240385デフォルトの名無しさん
2005/10/24(月) 17:30:25YES
0386デフォルトの名無しさん
2005/10/24(月) 17:32:39まあでもパイプ以外にも方法は色々とある。
プロセス間通信でぐぐれば。
0387デフォルトの名無しさん
2005/10/24(月) 18:08:33ImmSetCompositionString()で編集文字列に"m"をセットした後に
'a'を打鍵によって入力して"ま"としたいのですが、
続けて入力を行っても"mあ"となってしまいます。
キーボードイベントで解決しようと思ったんですが
処理が遅れて、ある程度早い入力を行うと
"まっちゃ"となるべきが"あmっちゃ"、"あtmちゃ"となったりしてダメでした。
0388デフォルトの名無しさん
2005/10/24(月) 18:34:410389デフォルトの名無しさん
2005/10/24(月) 18:36:030390デフォルトの名無しさん
2005/10/24(月) 20:41:50>>383さんありがとうございます。
詳しく書いてない私が悪いのですが、
includeしているのは、<fstream>のほうなのです。
ファイル操作について、調べていると、いろいろあって、
何を使っていいのか分からず、fstream をつかいました。
だから、もう少し詳しく調べないといけないのですが・・
がんばっていろいろ勉強します。
ありがとうございました。
0391デフォルトの名無しさん
2005/10/25(火) 02:01:48その初期化(項目の追加)をしたい場合はどうしたら良いのでしょうか?
ネットだとCreateWindowExで作成しているものしか見つからなくて
WM_CREATEがきた時にやっているので方法がわかりません
0392デフォルトの名無しさん
2005/10/25(火) 02:18:010393デフォルトの名無しさん
2005/10/25(火) 09:10:400394デフォルトの名無しさん
2005/10/25(火) 10:45:52で、質問は何だ?
0395デフォルトの名無しさん
2005/10/25(火) 11:14:25CreateFileが理想。WinSock邪魔。
0396デフォルトの名無しさん
2005/10/25(火) 11:24:230397395
2005/10/25(火) 12:01:30いやぁ、それがな、IrDAでリザーブしているCOMポートはどうやらIrCOMM用らしいんだ。
IrCOMMはドライバとして組み込まれているんだが、基本的にユーザには隠蔽されているんだよ。
(Win9xでは隠蔽されていなかった気がするけど)
まあ、IrCOMMはIrSocketを使ったエミュレーションサービスだから結局WinSockもどき中間層が入って、
鬱陶しいことこの上ないけどね。
そしてirmonを止めてもDiscoveryは続いているんで、カーネルがデバイスを貸してくれない・・・。
因みに、やりたいことってのは、空間に任意のデータを投げたいだけで、
それが実現できれば何を使ってもとくに気にしない。
どうにかならんかね。
0398デフォルトの名無しさん
2005/10/25(火) 12:19:55その問題を回避するようなドライバが引っかかるなー
ttp://www.ircomm2k.de/
ttp://resolution.extendedsystems.com/ESIde/Produkte/Virtueller+Com-Port+Treiber/default.htm
つまるところ、自力でやるならドライバを自作するってことになるかも
0399395
2005/10/25(火) 12:26:13まあ、irda.sysの下にフィルタドライバでも作って、Read/Write出来るようにしてみるよ。
かなーり実験要素が強いけどな。
ありがとねー。
0400デフォルトの名無しさん
2005/10/25(火) 13:55:180401デフォルトの名無しさん
2005/10/25(火) 14:38:24すいません、言葉足らずでした。
ImmSetCompositionString()を用いて
その後に続く打鍵と組み合わせてローマ字入力を成立させるには
どうすればいいのか、という質問です。
0402デフォルトの名無しさん
2005/10/25(火) 15:01:43ハンドルリーク、メモリリークしてしまう。
これって何処に質問したらいいんだろ?ココでいいのかな?
ダメなら誘導してくれまいか。
0403デフォルトの名無しさん
2005/10/25(火) 15:17:37http://www.microsoft.com/japan/msdn/subscriptions/resources/MSDNIncident.aspx
0404402
2005/10/25(火) 15:29:44::CoInitialize(NULL);
_RecordsetPtr m_pRecordset; // Recordsetオブジェクト
_ConnectionPtr m_pConnect; // Connectionオブジェクト
_CommandPtr m_pCommand; // Commandオブジェクト
// ADOオブジェクトの生成
m_pConnect.CreateInstance(__uuidof(Connection));
m_pCommand.CreateInstance(__uuidof(Command));
m_pRecordset.CreateInstance(__uuidof(Recordset));
// データベースへの接続
if(FAILED( m_pConnect->Open(L"Provider=OraOLEDB.Oracle;Data Source=ORACLE_OLETEST",L"TESTUSER", L"TESTUSER", adOpenUnspecified))) return FALSE;
// SQLの設定
CString strSQL = "SELECT B.NAME A.BIN_DATA from TBL_CMN_MASTER A, TBL_CMN_LAWDATA B where B.ID = 'TEST' AND B.ID = A.ID";
m_pCommand->ActiveConnection = m_pConnect;
m_pCommand->CommandText = _bstr_t((LPSTR)strSQL);
m_pRecordset->PutRefSource(m_pCommand);
// レコードセットの取得
_variant_t vNull; // VARIANT型のNULLとして使う
vNull.vt = VT_ERROR;
vNull.scode = DISP_E_PARAMNOTFOUND;
m_pRecordset->CursorType = adOpenKeyset;
hr = m_pRecordset->Open(vNull, vNull, adOpenKeyset, adLockOptimistic, adCmdUnknown);
if( m_pRecordset->RecordCount == -1 ) return FALSE;
// 先頭レコードへ移動し、フィールドの値を取得
m_pRecordset->MoveFirst();
_variant_t vString = m_pRecordset->GetCollect(_variant_t("NAME"));
m_pConnect->Close();
m_pConnect.Release();
m_pCommand.Release();
if( adStateOpen == m_pRecordset->State ) m_pRecordset->Close();
m_pRecordset.Release();
::CoUninitialize();
0405デフォルトの名無しさん
2005/10/25(火) 15:31:57うは、インシデント使えってか。
とりあえず、悪いのがADODBかOracleのOLEDBか俺のコードか切り分けたいんでお願いします。
0406デフォルトの名無しさん
2005/10/25(火) 20:17:59あとどうやってリークを確認した?
0407デフォルトの名無しさん
2005/10/25(火) 20:26:27m_pConnect->Close()後にm_pRecordset->Close()は順番逆のような
0408デフォルトの名無しさん
2005/10/25(火) 20:29:18あたりまえだけど。
>>402
MDAC 2.1 以降では ADO とかってデフォルトでコネクションプーリング
してるという話もあるから、それがメモリリークに見えてるだけでは?
0409デフォルトの名無しさん
2005/10/25(火) 23:42:15ユーザがウィンドウズをロックしてたら退席中、という判断をしたいんですが。
0410デフォルトの名無しさん
2005/10/25(火) 23:42:48人間が手作業でReleaseを呼ぶコードを書くとミスをしてリークするから、
ATLとかがやっているように、軽くクラスでラップして自動的に呼ぶようにすべし、ってことでしょ。
>>408
Releaseを呼ばずにCoUninitializeするのは、とっても行儀が悪いよ。
OSが勝手にReleaseを呼んでくれると思ったら大間違い。
もしアウトプロセスなら、参照カウントが減らないまま残ってしまうよ。
で、いうとおり、各種リソースがプーリングされてたりするので、
リソースのリークは、たくさんループさせて様子をみないと判別が難しい。
0411デフォルトの名無しさん
2005/10/25(火) 23:45:07ある。
0412デフォルトの名無しさん
2005/10/25(火) 23:46:31あるんすかー
教えて…いただけません?
0413デフォルトの名無しさん
2005/10/26(水) 00:34:59> To determine whether the workstation is locked, test whether your window is visible.
とか書いてる。知らんけど。
0414デフォルトの名無しさん
2005/10/26(水) 00:46:24おおなるほど。
サービスアプリケーションにするつもりなんで、visibleかどうかで判断はできないかも。
というか↓を使えばいいのでは!
> use the WTSRegisterSessionNotification function to register to receive
> WM_WTSSESSION_CHANGE messages.
ありがとうございました。なんとかなりそうな気がしてきました。
0415デフォルトの名無しさん
2005/10/26(水) 01:31:00サービスだったらRegisterServiceCtrlHandlerEx使って、HandlerExで
dwControlがSERVICE_CONTROL_SESSIONCHANGEかどうかを調べる。
パラーメータとかは↓見て
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dllproc/base/handlerex.asp
0416デフォルトの名無しさん
2005/10/26(水) 02:16:58わー、ありがとうございます。やってみます。
0417402
2005/10/26(水) 10:01:10>>406
タスクマネージャのプロセスタブを開いて数十回>>404のコードを実行してから10分放置して、
メモリ使用量と、ハンドルの数を確認したら、両方増えていた。
特にハンドルは1回実行すると2個増える。
で、Oracleの掲示板で、接続の度にコネクション作成&使用後に消去を繰り返すと、
メモリリークするっていう書き込みを見つけたので、今朝自作のコネクションプーリングを
組み込んでテストしてみた。
結果、なんとハンドルリークは無くなった。
メモリリークはもうちょっと動かさないとわかんないけど、良くなったけどまだ増えてるような...
>>407
まったくその通りだね。指摘ありがとう!
>>408
404のコードを10秒スリープ付でループで実行して、数時間放って置くとハンドル、メモリとも
ものすごく増えてます。だからリークしてる、と思う。
>>410
えええ!ADODBはデフォルトでプーリングしてますか。
それにさらに自作のプーリングつけるのってなんか間抜けだな...
てことで、ADODB+OracleOLEDB(9.0.2)はコネクション作成&消去を繰り返すとリークすると思う。
それとSQLServerでDB作ってODBC経由で>>404のコードをテストしてみたら、リークしませんでした。
0418デフォルトの名無しさん
2005/10/26(水) 11:44:220419デフォルトの名無しさん
2005/10/26(水) 13:53:18いくらなんでもこの結論はちょっと……
このあたりは確認済なのでしょうか。
- COMオブジェクトを作るだけでDBに接続しない場合
- 別のOLEDBプロバイダを使った場合
JET、SQLServer、etc
- CoInitialize〜CoUninitializeを繰り返すのではなく、COMの初期化・後片付けは1回だけにして
その中を繰り返し実行する(繰り返し呼ぶのが良くない場合を考慮)
>それとSQLServerでDB作ってODBC経由
なぜわざわざODBC経由なのでしょうか。こっちもOLEDBプロバイダを使わないと正確な
比較にはならないと思います。
0420402
2005/10/26(水) 17:23:55言葉が足らなくて申し訳なかったのですが、
ADODB+OracleODBCも試しましたが同様にリークしました。
SQLServerへのOLEDBでの接続は、やり方がちょっとわからなかったので試してません。
あー、COMオブジェクトの作成だけ繰り返すとかもやりましたがもちろん問題なし。
悪いところがADODBかOracleのOLEDBか俺のコードか切り分けたかったので、
俺的にはとりあえずコードじゃないんじゃないかって感じでもうOKです。
これ以上別のプロバイダを試すのは、時間的に余裕が無いので、
ちょっと結論が飛躍したのは勘弁してください。
ちゅか、俺的決め付けの結論なんか書かなきゃ良かった^^;
0421419
2005/10/26(水) 18:14:56ふーん、まあOracleの場合はOLEDBよりoo4oの方がいいという噂も聞いたことがあるので、
OLEDBプロバイダはよろしくないのかもしれませんね。
別DBへの接続文字列に関しては、udlファイルを使うのが楽ではないかと思います。
・中身が空、拡張子がudlのファイル(hoge.udlとか)を適当に作る
・ダブルクリックすると設定画面が出る
・設定する
・udlファイルの中身をのぞく
・(゚Д゚)ウマー
0422デフォルトの名無しさん
2005/10/26(水) 20:43:50別のキーBが押された時、処理Bを実行するプログラムで
仮にキーA、キーBをそれぞれZ、Xとした場合
// WM_CHARで
if(wParam=='z'){
処理A;
}
if(wParam=='x'){
処理B;
}
のようにしているのですが、zとxを同時に長押しした場合、
長押ししている間、処理Aと処理Bを共に実行するようにするには
どうすれば良いのでしょうか。
0423デフォルトの名無しさん
2005/10/26(水) 20:52:330424デフォルトの名無しさん
2005/10/26(水) 21:15:10判定はできなくても処理さえ同時に実行できれば良いのですが
何か方法はないものでしょうか
0425デフォルトの名無しさん
2005/10/26(水) 21:20:160426デフォルトの名無しさん
2005/10/26(水) 22:48:03それは嘘。
キーのmakeとbreakのメッセージを受け取り、
自前で押下状態かどうかを管理すればいい。
Zをmake
Xをmake
ずっと続く
Xをbreak
Zをbreak
とかいうふうにメッセージが来るからさ。
0427デフォルトの名無しさん
2005/10/26(水) 22:52:31つーのは前提として知ってるよな?
0428デフォルトの名無しさん
2005/10/26(水) 23:05:040429デフォルトの名無しさん
2005/10/26(水) 23:11:460430デフォルトの名無しさん
2005/10/26(水) 23:22:49/:::::::::::::::::::::::::::::::ヽ /::::::::::::::::::::::::::::::::::ヽ
/::::::::::::::::::::::::::::::::::::::::::l l::::::::::::::::::::::::::::::::::::::::::l
l::::::::::::::::::::::::::::::::::::::::::::::l l::::::::::::::::::::::::::::::::::::::::::::l
l:::::::::::::::::::::::::::::::::::::::::::::/_,.......-;,==-...ヽ::::::::::::::::::::::::::::::::::::::::l
l:::::::::::::::::::::::::::::::::::::::::/:::::::/ `ヽ::::::::::::::::::::::::::::::::::::::/
ヽ::::::::::::::::::::::::::::::/:::::::::/ / ̄ ヽ/⌒ヽ:::::::::::::::::/
ヽ、:::::::::::::_/::::::::::::/ / ⌒ ヽ¬−'´
 ̄ /:::::::::::::::::l l:|
l::::::::::::::::::l l:l
l::::::::::::::::::l <●> l:l
l::;, -ー 、::l 、<●> .l:l
/ ヽ l::l
l _ ( ○ ,:○),, ∠く
l _ l
ヽ ヽ ./
\ \、 __,-'ニニニヽ /
ヽ 、 . ヾニ二ン" /
ヽ: : : ./
| |
ヽ\ /
l `ー-::、_ ,,.'|
0431デフォルトの名無しさん
2005/10/26(水) 23:26:17/::::::::::::::::::::ヽ、 /:::::::::::::::::::::::ヽ
/:::::::::::::::::::::::::::::::ヽ /::::::::::::::::::::::::::::::::::ヽ
/::::::::::::::::::::::::::::::::::::::::::l l::::::::::::::::::::::::::::::::::::::::::l
l::::::::::::::::::::::::::::::::::::::::::::::l l::::::::::::::::::::::::::::::::::::::::::::l
l:::::::::::::::::::::::::::::::::::::::::::::/_,.......-;,==-...ヽ::::::::::::::::::::::::::::::::::::::::l
l:::::::::::::::::::::::::::::::::::::::::/:::::::/ `ヽ::::::::::::::::::::::::::::::::::::::/
ヽ::::::::::::::::::::::::::::::/:::::::::/ / ̄ ヽ/⌒ヽ:::::::::::::::::/
ヽ、:::::::::::::_/::::::::::::/ / ⌒ ヽ¬−'´
 ̄ /:::::::::::::::::l ,,,,,,, ノ ヽ,,,,, l:|
l::::::::::::::::::l '''""" """'' l:l
l::::::::::::::::::l -=・=‐, =・=- l:l
l::;, -ー 、::l "''''" | "''''" l:l
/ ヽ ヽ l::l
l _ ^-^ ∠く
l _ l
ヽ ヽ -====- ./
\ \、 "'''''''" ./
ヽ 、 . /
0432デフォルトの名無しさん
2005/10/26(水) 23:28:27;;;;;;;;;;i´ `i;;;;;::::
;;;;;;;;┌' <●>'ヘ;;:
;;;;;;;;;)ュ, o) ,r(;;;
:;;;;;;;;;> ∋/ヾ;;;;;;;
;;;:,チ''゛ :`::::::':': ゙゙Y;;;;::::
::;;;;y'´ , `{;;;;;:::::
::;;;.(, ″ '(;;;::
;;;;;:`,ll'-�=@ ll |:::
::::| ゙;,_ ,: ゙ i;;;;,,,,,,,,,
:::::i :::: .'-、;;;;;;;;;;;:::::
;;;;;;;;ハ i::::: ....::::'' `'<;;;;;::::
::;;;;;.ハ '(i|||||lllllllliiii=''′ .,};;;;''''
_,,,,,lllllllシ ,,illllllllll″ ,__,,,,,,,,,iiillllllllllllll)
.(lllllllllllll、,,,ィ'illlllllllllllli, ゙lllllllllllllllll!゙゙゙゙゙゙
`”゙゙゙゙゙゙llllllllllllllllllllllュ,,j'lllll゙
ヴァカだリャ。
マた来テュのか。
0433デフォルトの名無しさん
2005/10/26(水) 23:30:020434デフォルトの名無しさん
2005/10/27(木) 01:03:17今の所やっているのは、メモリ確保系、Bitblt、SetTimerなど、
やっていないのは、GetDC、ReleaseDCなどです。
0435デフォルトの名無しさん
2005/10/27(木) 01:06:20好きにしろ
0436デフォルトの名無しさん
2005/10/27(木) 01:50:540437デフォルトの名無しさん
2005/10/27(木) 05:12:42てありますか?(.NET なら DateTime.Parse でいけそうなんですが...)
0438デフォルトの名無しさん
2005/10/27(木) 06:49:110439デフォルトの名無しさん
2005/10/27(木) 10:09:25http://home.hiroshima-u.ac.jp/c-program/sdk/archive/rtl.zip
0440デフォルトの名無しさん
2005/10/27(木) 19:15:59きっと違うことを聞きたいんだろうな。日本語って難しいね★
0441デフォルトの名無しさん
2005/10/27(木) 19:46:070442デフォルトの名無しさん
2005/10/27(木) 21:41:26直接調べる関数はありますか?
CRgn に頂点を渡してから PtInRegion で調べる方法もありますが何か無駄な気がします。
0443デフォルトの名無しさん
2005/10/27(木) 21:45:44ない
0444デフォルトの名無しさん
2005/10/27(木) 21:53:180446デフォルトの名無しさん
2005/10/27(木) 22:08:24俺の場合、たしかに一部の関数は引数がおかしくない限り必ず正しい結果を返すと信じて、エラーチェックをしていない。
ただ、GetDC()など処理の開始として行う関数は必ずエラーチェックを行う。
0447デフォルトの名無しさん
2005/10/27(木) 23:24:34あるボタンを押すと、あるウィンドウ内の図形が全て削除される。
というようなことをしたいのですが、どうしたらよいのでしょうか?
0448デフォルトの名無しさん
2005/10/27(木) 23:26:150449デフォルトの名無しさん
2005/10/27(木) 23:38:50背景色で塗りつぶすではまずいの? UNDO とかしたいのかな。
0450デフォルトの名無しさん
2005/10/27(木) 23:39:220451434
2005/10/28(金) 00:20:13GetDCなどをチェックせず、Bitbltだけチェックするのは、
GetDCなどでエラーが出れば、Bitbltでもエラーが
出てくれるのではないかという考えからでした。
裏ビットマップに描くとか、Bitblt系の一連の動作は、
前後のメモリ確保、初期化、開放とか量が多いので、
楽をしていました。
ご指摘通りちゃんとチェックしたいと思います。
0452デフォルトの名無しさん
2005/10/28(金) 00:25:220453デフォルトの名無しさん
2005/10/28(金) 00:51:13じゃあ背景色で塗りつぶしたらいいじゃない。
丸や三角が描画できてるんなら簡単だろ。
0454デフォルトの名無しさん
2005/10/28(金) 02:53:530455デフォルトの名無しさん
2005/10/28(金) 03:10:100456デフォルトの名無しさん
2005/10/28(金) 06:37:360457デフォルトの名無しさん
2005/10/28(金) 08:02:540458デフォルトの名無しさん
2005/10/28(金) 10:26:19比較的有名なCodeProjectのCxImageクラスと比較してもGDI+が圧倒的に優位。
ファイルフォーマット変換時の実行速度・圧縮効率もGDI+の方が上。TIFFも標準サポートしている。
0459デフォルトの名無しさん
2005/10/28(金) 10:28:53いくら調べても5ボタンマウスの左右の押されている状態を取得するサンプルが見当たらないのですが、
どなたか知ってらっしゃる方いらっしゃいましたら教えていただけませんでしょうか
0460デフォルトの名無しさん
2005/10/28(金) 10:33:53VK_XBUTTON1, VK_XBUTTON2あたりがそれっぽいけど、
実際5ボタンマウス持ってないからわからん。
0461デフォルトの名無しさん
2005/10/28(金) 11:05:510462デフォルトの名無しさん
2005/10/28(金) 11:12:18http://pc.watch.impress.co.jp/docs/2005/1007/logicool.htm
0463デフォルトの名無しさん
2005/10/28(金) 11:17:340464デフォルトの名無しさん
2005/10/28(金) 12:57:530465459
2005/10/28(金) 14:51:360467デフォルトの名無しさん
2005/10/28(金) 19:21:30わかったら答えてるわヴォケ・゚・(ノД`)・゚・
0468デフォルトの名無しさん
2005/10/28(金) 19:32:02mplayer用にボタン4,5を使えるようにするパッチとかで使ってるから
たぶん使えるんだろう。
0469デフォルトの名無しさん
2005/10/28(金) 19:35:45GetSystemMetrics( SM_CMOUSEBUTTONS ) でマウスボタンの数が取得出来る
で、
GetKeyboardState(pbKeyState)
のデータをダンプしてみてはどう?
0470デフォルトの名無しさん
2005/10/28(金) 21:24:01GDI+に関してなんですが
Gdiplus::Graphics objGraphics(hdc);//描画オブジェクト
Gdiplus::Image objBgImage(_TEXT("bg.png"), FALSE);//BG
Gdiplus::Image objFgImage(_TEXT("test.png"), FALSE);//FG
Gdiplus::RectF rcSrc(0.0f, 0.0f, 320.0f, 420.0f);
Gdiplus::RectF rcDst(160.0f, 60.0f, 320.0f, 420.0f);
Gdiplus::ImageAttributes objAttr();//ImageAttributes
objGraphics.DrawImage(&objBgImage, 0, 0, objBgImage.GetWidth(), objBgImage.GetHeight());
objGraphics.DrawImage(&objFgImage, rcDst, rcSrc, Gdiplus::UnitPixel, &objAttr);
こんな感じで呼び出そうとすると、2つ目のDrawImageが
DrawImage(Image*, RectF&, RectF&, Unit, ImageAttributes*)でなくてはいけないのに
DrawImage(Image*, REAL, REAL, REAL, REAL)と解釈されて、
RectFからREALへ変換できませんとエラーが出て困っています
どうにかして解消できませんでしょうか?
0471デフォルトの名無しさん
2005/10/28(金) 21:53:040472470
2005/10/28(金) 22:08:000473デフォルトの名無しさん
2005/10/28(金) 22:28:42DrawImage(Image*, const RectF&, REAL, REAL, REAL, REAL, Unit, ImageAttributes* 〜)
DrawImage(Image*, const RectF&)
しか無いよ。
0474デフォルトの名無しさん
2005/10/28(金) 22:34:11PSDKのドキュメント。
>>473 の様に実際にヘッダに当たって確認すべし。
0475407
2005/10/28(金) 22:39:32早とちりですみません・・・
MSDNのあのテキストはいったい・・・
0476デフォルトの名無しさん
2005/10/28(金) 22:44:31微妙に違うし、なかなか苦労しますぜ。
0477デフォルトの名無しさん
2005/10/29(土) 01:44:31してくれんだ?英語を読むのは苦手だよ・゚・(ノД`)・゚・
0478デフォルトの名無しさん
2005/10/29(土) 01:50:040479デフォルトの名無しさん
2005/10/29(土) 02:05:000480デフォルトの名無しさん
2005/10/29(土) 03:00:380481デフォルトの名無しさん
2005/10/29(土) 08:29:25日本語訳に期待するのはやめた方がいい。
意味不明な日本語訳がある場合、大抵は元ソースも意味不明だ。
茶を濁すようなピントのボケた文章は、日本語だけでなく英語圏にも存在する。
あきらめろ。
0482デフォルトの名無しさん
2005/10/29(土) 09:14:24そうでもない
0483デフォルトの名無しさん
2005/10/29(土) 09:56:46君は、数学の教科書が英語で書いてあったら判りにくいけど、
日本語で書いてさえあれば全て理解できるのだね。
凄いね、いつも100点とれるね。
0484デフォルトの名無しさん
2005/10/29(土) 10:40:53試験で満点取るのは難しい話でもない。
理論的な部分となると別だが。
0485デフォルトの名無しさん
2005/10/29(土) 10:50:41気の毒だが、君が数学と思い込んでいたのは算数であって数学ではない。
大学に上がってつまづく数学科の学生もいるが、
この点が理解できずに脳内で高校数学を算数として最適化したツケが大学生になって露見したのだといえる。
君は、英語ベースの弁護士試験は難しいが、日本語なら簡単なのだと錯覚するタイプの人間だろう。
理解できない理由を言語に求める愚を犯すべきでない。単に、君が馬鹿なだけだ。
0486デフォルトの名無しさん
2005/10/29(土) 11:04:30ワラタ
ちなみに躓くは「つまづく」じゃなくて「つまずく」が本則だ。
0487デフォルトの名無しさん
2005/10/29(土) 12:03:32>>483は何故いきなり数学とか言い出したのだろう。
0488デフォルトの名無しさん
2005/10/29(土) 12:24:28483は単に喩えとして出しただけだと思うが。
0489デフォルトの名無しさん
2005/10/29(土) 12:32:01忘れて困ってるんだが。。
0490デフォルトの名無しさん
2005/10/29(土) 12:36:550491デフォルトの名無しさん
2005/10/29(土) 12:38:240492デフォルトの名無しさん
2005/10/29(土) 12:40:40ms-help://MS.PSDK.1033/winui/winui/windowsuserinterface/windowing/windows/windowreference/windowmacros/hibyte.htm
0493デフォルトの名無しさん
2005/10/29(土) 12:46:18ありがと。おかげで思い出せました。
でもどうして変数をBYTEサイズにしなくちゃいけないんだろう。。暗号は難しい・・。
0494デフォルトの名無しさん
2005/10/29(土) 14:13:26たとえばGetDiskFreeSpaceの引数lpRootPathNameの説明。
■2001年10月やVS.NET2003添付の日本語版
一方、"C:" のようなドライブ指定の最後に円記号を付けることはできません。
■2001年10月英語版
However, a drive specification such as "C:" must have a trailing backslash.
■VS.NET2003添付の英語版
Furthermore, a drive specification must have a trailing backslash (for example, C:\).
0495デフォルトの名無しさん
2005/10/29(土) 14:43:50> ドライブがドライブ文字で、UNC パスではない場合、
> ドライブ文字とコロンの後にバックスラッシュを不可する。
> これは Windows 95 と 98 の制限である。
これも変だな。不可→付加じゃね?
0496デフォルトの名無しさん
2005/10/29(土) 16:19:14つーか何で482のレスが483になるのか意味不明。
どこをどう読んだら英語だと分からないけど日本語なら分かるって意味になるんだか
(むしろ日本語だと分からなくても原文を読むと分かる場合があるという意味で
書いたのに)
0497デフォルトの名無しさん
2005/10/29(土) 16:34:500498デフォルトの名無しさん
2005/10/29(土) 16:50:55「分からない」とはどういう意味なのか。
実際のAPI挙動と日本語文書が違っていた場合は、
少なくとも日本語文書の意味が分からない状態ではない。
日本語文書を理解したうえで記述の間違いに気づくことができた、
あるいは、英語オリジナルとの相違に気づくことができた状態であり、
断じて「分からない」状態ではない。
現実には、日本語が分かりにくく、英語が分かりやすいという状況は少ない。
多くの場合、明瞭な英語文章は日本語訳されても明瞭さを保つものだ。
混乱の原因の多くは、専門用語をカタカナかアルファベットで表記されるべきものが、
翻訳の過程でまんまと日本語文章に紛れ込んでしまった場合だろう。
しかし、この種の混乱は、第三者が文章を読んだ時に普通に発生してしまうものであり、
英文読解の時だけ専門用語と一般語を混同せずに理解できる、などという高度な芸当は成しがたい。
これは、ネイティブ連中であっても同様だ。
しばしば、MSプログラマは重要な事柄に、見分けの付きにくいアバウトな名称をつける癖がある。
Windows、Office、Word、Money、.NET。・・・枚挙に暇がない。
他にもactiveという単語の解釈の仕方に混乱が生じる。
日本人だけでなくネイティブからも怨嗟の対象となっているのだ。
0499デフォルトの名無しさん
2005/10/29(土) 17:00:50翻訳者がアホの場合は考慮していないのか?
0500デフォルトの名無しさん
2005/10/29(土) 17:03:17>ソフト1本あたり約2千円がライセンス料として任天堂の懐に転がり込んだ。
>もちろんカセット生産に掛かる料金は別途に請求された。
>
>さらにカセットの生産スケジュールや、発売日の決定権も任天堂が持っていたので
>気に入らないメーカーのソフトは、マスターと前払いさせた製造費用を預かったまま
>生産ラインに乗せずに数ヶ月ほど放置したり、意に沿わないメーカーのソフト発売日
>を他メーカーの売れ戦ソフトと同じ日にしたりと、それは見事な殿様商売ぶりだった。
>
>CD-ROMを採用すると、ソフトの生産をソニーかビクターに完全委託するしか選択肢
>がなくなるため、上記の殿様商売が続けられなくなる。
>
>それこそが、任天堂が意地でもCD-ROMを採用しなかった本当の理由だ。
>だが大容量化の波は止まらず、CD-ROMに対抗できる記録メディアも現れなかった
>ため、N64でもROMカセット方式を引き続き採用せざるを得なくなる。
>
>その間にもPSの快進撃は止まらず、今や任天堂の据え置き型ゲーム機は世界中の
>市場から、忘れられた存在となってしまった。
まで読んだ
0501デフォルトの名無しさん
2005/10/29(土) 17:06:030502デフォルトの名無しさん
2005/10/29(土) 21:42:100503デフォルトの名無しさん
2005/10/29(土) 21:46:44HWND wapp = ::CreateWindow(
clsName,0,WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,
0,0,::GetModuleHandle(0),0);
HWND wpop = ::CreateWindow(
clsName,0,0/*WS_POPUP*/,
CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,
0/*wapp*/,0,::GetModuleHandle(0),0);
::SetWindowLong(wpop,GWL_STYLE,WS_POPUP); // API-a
::SetParent(wpop,wapp); // API-b
::SetWindowPos(wpop,0,100,100,300,200,SWP_FRAMECHANGED|SWP_NOACTIVATE|SWP_NOZORDER);
::ShowWindow(wpop,SW_SHOW);
::ShowWindow(wapp,SW_SHOW);
・・・メッセージループ・・・
2番目のCreateWindowでコメントアウトして0にしている部分を
補う形でSetWindowLongとSetParentを使ってwpopを設定したいのですが、
ポップアップウィンドウにならずにチャイルド
(親ウィンドウでクリップされる)ウィンドウになってしまいます。
つまり、このままコンパイルした場合と、2番目のCreateWindowの
コメントアウト部分を復帰してAPI-a、API-bを削除した場合とで
wpopのスタイルが違ってしまいます。
どこが悪いのでしょうか?
というのも、とある都合で先にウィンドウを作って
後からその親ウィンドウと位置、スタイルを設定するという
必要に迫られ、書いてみましたがうまくいきませんでした。
詳しい方ご教授お願いします。
0504デフォルトの名無しさん
2005/10/29(土) 21:52:23CreateWindowの引数に親ウィンドウのハンドルを指定できないのか?
0505デフォルトの名無しさん
2005/10/29(土) 22:48:35SetWindowPosのヘルプに書いてあるやり方と、指定してるフラグがちがくないか?
0506デフォルトの名無しさん
2005/10/30(日) 01:56:16SetWindowLong()の部分、それだとウィンドウスタイルがWS_POPUPのみになるよ?
スタイルを変更する場合は
SetWindowLong(wpop, GWL_STYLE, GetWindowLong(wpop, GWL_STYLE) | WS_POPUP) みたいに
現在のスタイルを取得して、それを改変するのが一般的。
0507デフォルトの名無しさん
2005/10/30(日) 03:29:20アメリカの会社がそんなことするわけないだろ
0508デフォルトの名無しさん
2005/10/30(日) 05:49:060509デフォルトの名無しさん
2005/10/30(日) 07:31:23それだと、既に設定されてる別のフレームスタイルと競合しねぇ?
0510503
2005/10/30(日) 08:56:35親ウィンドウとオーナーウィンドウっていう2種類があって
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winui/winui/windowsuserinterface/windowing/windows/windowfeatures.asp
の
「Owned Windows」
の部分を読むと
After creating an owned window, an application cannot
transfer ownership of the window to another window.
って書いてありました・・・(;´д`)
最初に指定するしかないっぽいですね・・・・
意外と柔軟性ないのね(´・ω・`)
そんな訳で自己解決しました
どうもお騒がせして失礼しました〜
0511デフォルトの名無しさん
2005/10/30(日) 13:22:38http://www.microsoft.com/japan/msdn/thisweek/vbxp/vbxp1.asp
ここにあるグループボックス直下に配したオプションボタン真っ黒現象は、
ルート→グループボックス→何か→ラジオボタン
とか1クッション入れる以外の回避方法はないのでしょうか?
これだとすごく泥臭い対処な気がするんですが、
なにか他に定番のやり方みたいなのがあれば、ご教示くださいまし。
0512デフォルトの名無しさん
2005/10/31(月) 00:23:41http://www.winapi-database.com/
VBだぁ?と構えてしまったが、、
C/C++の構文も乗ってる。
分類が分かりやすくてすぐ見つけられるので
正直、MSDNより使える。
0513デフォルトの名無しさん
2005/10/31(月) 02:41:41逆引き(目的から検索)は便利かもしれませんね(ちょっと量が少ないけど)。
ただそれ以外はMSDN Libraryとは比較にならないような……
MSDN Libraryが使いにくいって言っている人は、Web上のMSDN Libraryでも
参照しているんじゃないかと思ってしまう。
0514デフォルトの名無しさん
2005/10/31(月) 02:50:43重い、無駄に重い
しかも直訳
0515デフォルトの名無しさん
2005/10/31(月) 05:53:100516デフォルトの名無しさん
2005/10/31(月) 09:02:26回転する方法ありましたっけ?
0517デフォルトの名無しさん
2005/10/31(月) 09:16:530518デフォルトの名無しさん
2005/10/31(月) 19:06:30印刷を横向きでしたいのですが。
PAINTSTRUCT ps;
PRINTDLG pd;
DOCINFO dci;
pd.lStructSize=sizeof(pd);
pd.hwndOwner=hwnd;
pd.hDevMode=NULL;
pd.hDevNames=NULL;
pd.Flags=PD_RETURNDC|PD_HIDEPRINTTOFILE;
pd.nFromPage=1;
pd.nToPage=1;
pd.nMinPage=1;
pd.nMaxPage=1;
pd.nCopies=1;
memset(&dci,0,sizeof(DOCINFO));
dci.cbSize = sizeof(DOCINFO);
dci.lpszDocName = "moji";
if(!PrintDlg(&pd)) return;
//以下横に設定しているのですが、ここでは遅すぎるようです。
LPDEVMODE dm = (LPDEVMODE)GlobalLock(pd.hDevMode);//
if(dm)//
{//
dm->dmOrientation = DMORIENT_LANDSCAPE; // ポートレイト
GlobalUnlock(pd.hDevMode);//
}//
デフォルトのプリンタの設定を変更するには、どうすればよいのでしょうか。
よろしくお願いいたします。
0519dmFieldsもセットしろよゴルァ
2005/10/31(月) 19:32:540520デフォルトの名無しさん
2005/10/31(月) 23:46:33BMPはLoadImageで取得できるんですけどそのJPEG版みたいなみたいな奴です。
現在の開発環境は
Borland C++ Compiler 5.5.1とメモ帳だけです。
よって、MFCとかは使えません。
誰か、貧乏な私に知恵を授けて下さい...
0521デフォルトの名無しさん
2005/10/31(月) 23:52:20413 名前:デフォルトの名無しさん[sage] 投稿日:2005/10/31(月) 23:05:12
無料のbcc55を使っています。ものすごく基本的な質問なんですけど
JPEGを読み込みたいんですけど<jpeg.hpp>が見つからないし、それによりTJPEGImageが使えません。
VC++の<gdiplus.h>も無いです。
JPEGを読み込む為には、BCBかVC++を買うしか無いのでしょうか?
貧乏人はおとなしくLoadImageでBMPでも読み込んでろという事でしょうか?
0522デフォルトの名無しさん
2005/10/31(月) 23:54:09素直に「無い」って教えてやれよ。
GDI+かIEコンポーネントでも使いなさい。
0523デフォルトの名無しさん
2005/11/01(火) 00:01:390524デフォルトの名無しさん
2005/11/01(火) 00:09:47良い機会だから、自分で実装しても面白いよw
参考書
ttp://www.amazon.co.jp/exec/obidos/ASIN/4797330457/
0525デフォルトの名無しさん
2005/11/01(火) 00:11:55「どお、裏山でしょ?」ってのが>>521 を筆頭としたお方たちの
唯一の心の拠り所なんだから、例え心貧しい自己満足でも、
少なくとも1人(ご自分ね)は満足して幸せになってるんだから
誰も幸せにならないよりは、多分ましなんだろうと思うよ。
>>520
どうしても只でということなら>>522 の言う様にGDI+かIEコンポー
ネント、後はどれくらい手間が掛かるかは別としてGnuWin32にも
あるJpegのライブラリをなんとか使えるようにするとか。
susieのプラグインを使えるようにするとか。
もっと柔軟に考えて行けば、道は開けると思うよ。
0526デフォルトの名無しさん
2005/11/01(火) 00:59:110527デフォルトの名無しさん
2005/11/01(火) 02:25:430528デフォルトの名無しさん
2005/11/01(火) 02:32:060529デフォルトの名無しさん
2005/11/01(火) 11:33:47CreateFile
0530デフォルトの名無しさん
2005/11/01(火) 11:47:39成功しないで、やっと通ったと思ったら、PrinterProperties() で、ユーティリティの
画面しか出てきません。一応ぐぐったのですが、応えに行きつきません。
PrinterProperties() は不適なのでしょうか。
もしそうなら win98 用はこのままで winXP は PrintDlg() かなあと思案中です。
0531デフォルトの名無しさん
2005/11/01(火) 12:41:28不十分。
>>520
CreateFile()してReadFile()
0532デフォルトの名無しさん
2005/11/01(火) 12:55:59悪いが、「何をしたい」のかさっぱりわからん。
0533520
2005/11/01(火) 12:57:02BCBスレでの質問は適切なスレではないと勝手に判断し、こちらのスレで再質問したのですが、
誘導を待たずに別スレで同様な質問をして、マルチに見えてしまったのなら申し訳ありません。
私の質問の仕方が未熟なせいでスレを荒らしてしまったことに関しては謝ります。
それにも関わらず、回答を沢山頂きありがとうございました。
<olectl.h>中にOleLoadPicture*系のAPIらしきものを発見したのでこいつで頑張ってみます。
どうもありがとうございました。
0534530
2005/11/01(火) 15:38:59どうも。
プロパティを出すと、他のアプリでは、基本設定とかページ設定とかのタブで
いろいろ設定できるダイアログが出てきます。「ユーティリティ」とは最後の
タブで出てくる画面です。PropertySheet 仕様のダイアログが出てくるはず
ですが、最後の sheet しか出て来ないということです。
0535デフォルトの名無しさん
2005/11/01(火) 16:18:36自分はATLを使ってるんで、IDEでの開発環境ではATLTRACEでログ出力をしてデバックしてるんですが、、
ReleaseビルドでIDE環境が無い状態で(ほかのマシンにインストールした状態)デバックというか、挙動を確認したいのですが、
何かいい方法はありませんでしょうか、Release後のデバックや挙動追跡などテクニックなど伝授してください。
0536デフォルトの名無しさん
2005/11/01(火) 16:32:450537デフォルトの名無しさん
2005/11/01(火) 16:37:12それってPrintDlg使えばいいだけじゃねーのか
あるプリンタ特定の物出したいなら、DocumentProperties/DM_PROMPT
0538デフォルトの名無しさん
2005/11/01(火) 16:41:34バグがありそうな部分でログ吐かせりゃいいんじゃない?
0539デフォルトの名無しさん
2005/11/01(火) 16:43:21>>532
0540デフォルトの名無しさん
2005/11/01(火) 16:45:09>>507
0541デフォルトの名無しさん
2005/11/01(火) 17:30:53OutputDebugString() → DbgView.exe(http://www.sysinternals.com/Utilities/DebugView.html)
0542535
2005/11/01(火) 19:45:23参考になりました。
>541
http://www.sysinternals.com/Utilities/DebugView.html
これよさげですね、早速試してみます。
ありがとうございました。
0543デフォルトの名無しさん
2005/11/01(火) 20:58:200544デフォルトの名無しさん
2005/11/01(火) 21:43:050545デフォルトの名無しさん
2005/11/01(火) 21:58:580546534=530
2005/11/01(火) 22:05:46PrintDlg() にしました。
win98 で通ってましたから、winXP で初めてプリンタ繋いでびっくりしました。
0547デフォルトの名無しさん
2005/11/01(火) 22:08:020548デフォルトの名無しさん
2005/11/01(火) 22:57:06WindowsからしてみたらEXEがDebugビルドで作られたかどうかなんて区別のしようがない。
0549デフォルトの名無しさん
2005/11/01(火) 23:12:210550デフォルトの名無しさん
2005/11/02(水) 01:13:12Releaseビルドでは無に置換されるようなマクロ使ったりしてないのか? って意味でしょ
0551デフォルトの名無しさん
2005/11/02(水) 02:15:26氏んでいいよ、ドアホ
0552デフォルトの名無しさん
2005/11/02(水) 05:07:280553デフォルトの名無しさん
2005/11/02(水) 07:59:310554デフォルトの名無しさん
2005/11/02(水) 17:55:26つ ギコナビ
他にも、各種メディアプレイヤーでDRM保護されたメディアを開くとデバッグログを吐く。
0555デフォルトの名無しさん
2005/11/03(木) 12:38:42必要とする画面にエディットコントロールを作成したくて以下のようなコードを書いたのですが
マウスを動かすとInvalidateRect()が発生するためエディットボックスが点滅してしまいます。
この点滅を防ぐ方法が何かあれば教えていただけないでしょうか…。
void DrawScreen(HWND hWnd, POINT p_mouse) {
/*
メモリDCを用いたダブルバッファリングを使用した描画処理
背景の描画とマウスカーソルの座標の表示
*/
static HWND hwndEdit = CreateWindow("EDIT", NULL,
WS_CHILD | WS_VISIBLE | WS_BORDER | ES_LEFT,
0, 40, 200, 22, hWnd, NULL, hInst, NULL);
}
0556デフォルトの名無しさん
2005/11/03(木) 12:40:300557デフォルトの名無しさん
2005/11/03(木) 12:56:220558デフォルトの名無しさん
2005/11/03(木) 13:02:30とりあえずWM_CREATEにエディット作成は移動してみました。が、依然点滅は直らないです…。
マウスの移動に対してInvalidateRectを呼ぶのをやめてTimerで画面を更新するように変更したら
大分ましにはなったのですが、よくみると点滅してるのがわかります。
0559デフォルトの名無しさん
2005/11/03(木) 13:09:47よく考えたら画面全体を毎回更新する必要はないですね…orz
0560デフォルトの名無しさん
2005/11/03(木) 13:48:080561デフォルトの名無しさん
2005/11/03(木) 15:17:34static
0562デフォルトの名無しさん
2005/11/03(木) 16:14:41(゚д゚;).o(・・・・・・・・・・・・・・・・)
0563デフォルトの名無しさん
2005/11/03(木) 16:15:290564デフォルトの名無しさん
2005/11/03(木) 17:17:52ネトゲやチャットで使ってる奴多いけど何か伝わってると思ってるのかね
0565デフォルトの名無しさん
2005/11/03(木) 17:21:320566デフォルトの名無しさん
2005/11/03(木) 17:26:38…じゃなくて...だけどな。
三点リーダーを中黒で代用しちゃう奴は(ry
0567デフォルトの名無しさん
2005/11/03(木) 18:16:020568デフォルトの名無しさん
2005/11/03(木) 18:27:060569デフォルトの名無しさん
2005/11/03(木) 18:28:360570デフォルトの名無しさん
2005/11/03(木) 18:40:59static int i = 0;
としても初期化されるのは初回だけに見えたから
static HWND hwnd = CreateWindow();としてもCreateWindow()が呼ばれるのは
初回だけだと思ってたよ
勘違いに気づかせてくれてどうもありがとう。
0571デフォルトの名無しさん
2005/11/03(木) 18:46:140573デフォルトの名無しさん
2005/11/03(木) 18:50:220574デフォルトの名無しさん
2005/11/03(木) 18:50:470575デフォルトの名無しさん
2005/11/03(木) 18:55:34問題なく動いてるように見えて実は見えないところでなんか変なことになってるのかな、と…
0576デフォルトの名無しさん
2005/11/03(木) 19:03:480577デフォルトの名無しさん
2005/11/03(木) 19:11:530578デフォルトの名無しさん
2005/11/03(木) 19:13:010579デフォルトの名無しさん
2005/11/03(木) 19:17:240580デフォルトの名無しさん
2005/11/03(木) 19:40:54x++;
static HWND hwndedit = CreateWindow(); //x, y座標とheight, widthをxに設定
↑のコードをDraw()の中に入れてみた。
xの値はDraw()が呼ばれるたびに増えたけどエディットコントロールには変化が無かった。
毎回作成されているなら大きさと位置が変化するはずだよね?
0581デフォルトの名無しさん
2005/11/03(木) 19:59:00>>519さんありがとうございます。
ヒントを参考にさせていたできましたが、
よくわからずに、DocumentProperties を使いましたが、
変更できません。下記にコードを載せますが、長くて申し訳ありません。
DEVMODE *lpDM,*pDev;//
char szPrnName[256],szTemp[256];//
HANDLE hPrn;//
DWORD dwNeeded;//
HGLOBAL hMem;//
PRINTDLG pd;
DOCINFO dci;
LPSTR lpszDocName = "titile";
pd.lStructSize=sizeof(pd);
pd.hwndOwner=hwnd;
pd.hDevMode=NULL;
pd.hDevNames=NULL;
pd.Flags=PD_RETURNDC|PD_HIDEPRINTTOFILE;
pd.nFromPage=1;
pd.nToPage=1;
pd.nMinPage=1;
pd.nMaxPage=1;
pd.nCopies=1;
memset(&dci,0,sizeof(DOCINFO));
dci.cbSize = sizeof(DOCINFO);
dci.lpszDocName = lpszDocName;
0582デフォルトの名無しさん
2005/11/03(木) 19:59:37if(!PrintDlg(&pd)) return;
lpDM = (DEVMODE *)GlobalLock(pd.hDevMode);
if(lpDM == NULL) return;
strcpy(szPrnName,(LPSTR)(lpDM->dmDeviceName));
if(OpenPrinter(szPrnName,&hPrn,NULL)==0){
GlobalUnlock(pd.hDevMode );
GlobalFree(pd.hDevMode);
return;
}
HANDLE hPrn;
//バッファーサイズ取得
dwNeeded = DocumentProperties(hwnd,hPrn,szPrnName,NULL,NULL,0);
hMem = GlobalAlloc(GHND,dwNeeded);
if(hMem == NULL){
ClosePrinter(hPrn);
GlobalUnlock(pd.hDevMode );
GlobalFree(pd.hDevMode );
return;
}
pDev = (DEVMODE *)GlobalLock(hMem);
if(pDev == NULL){
GlobalFree(hMem);
ClosePrinter(hPrn);
GlobalUnlock(pd.hDevMode );
GlobalFree(pd.hDevMode );
return;
}
0583デフォルトの名無しさん
2005/11/03(木) 20:00:11if(DocumentProperties(hwnd,hPrn,szPrnName,pDev,NULL,DM_OUT_BUFFER)<0){
GlobalFree(hMem);
ClosePrinter(hPrn);
GlobalUnlock(pd.hDevMode );
GlobalFree(pd.hDevMode );
return;
}
if(pDev->dmFields & DM_ORIENTATION){
pDev->dmOrientation == DMORIENT_LANDSCAPE;
}
//3回目のDocumentPropertiesの呼び出しでの、引数がよく分からなかったのですが、
if(DocumentProperties(hwnd,hPrn,szPrnName,pDev,pDev,DM_OUT_BUFFER | DM_IN_BUFFER)<0){
return;
}
//グラフィック書き出し・・
GlobalUnlock(hMem);//
GlobalUnlock(pd.hDevMode );//
if(GlobalFree(pd.hDevMode ) !=NULL){//
return;//
}//
0584デフォルトの名無しさん
2005/11/03(木) 21:27:26int foo(){
static int i = printf("hello\n");
return i;
}
int main(){
printf("%d\n", foo());
printf("%d\n", foo());
printf("%d\n", foo());
}
結果
hello
6
6
6
0585デフォルトの名無しさん
2005/11/03(木) 21:29:38iをstaticにする意味を教えてくれ
0586デフォルトの名無しさん
2005/11/03(木) 21:32:37>>555-
0587デフォルトの名無しさん
2005/11/03(木) 21:36:44>>555-
とは何も関係がないように見えるが…
0588デフォルトの名無しさん
2005/11/03(木) 21:38:44foo()を3回呼んでるけどhelloは一回しか出力されないってのが言いたかったのか
0589デフォルトの名無しさん
2005/11/03(木) 21:48:13static にする意味は、iの値を持ってるてるってことですが、
その適用範囲となると、難しいかなと思います。
ここが、win32質問板なので、いいますと
下手に、callback関数で使っていると、大変なことになりました。
0590デフォルトの名無しさん
2005/11/03(木) 21:59:520591デフォルトの名無しさん
2005/11/03(木) 22:02:190592デフォルトの名無しさん
2005/11/03(木) 22:04:27はいはい、悪かったよ
>>589の2行目の翻訳を誰かお願い
でいいか?
0593デフォルトの名無しさん
2005/11/03(木) 22:11:300594デフォルトの名無しさん
2005/11/03(木) 22:21:340595デフォルトの名無しさん
2005/11/03(木) 22:29:51特殊なキーの入力の判定はどうやったらできる?
0596デフォルトの名無しさん
2005/11/03(木) 22:31:56まあどうでもいいことだしな、ほっとくとしよう。
0597デフォルトの名無しさん
2005/11/03(木) 22:32:31アクセラレータ
0598デフォルトの名無しさん
2005/11/03(木) 22:36:06GetKeyState
0599デフォルトの名無しさん
2005/11/03(木) 22:37:14サンクス
0600デフォルトの名無しさん
2005/11/03(木) 22:56:49LineTo関数や、polyline関数で線を引いているのでしょうか?
0601デフォルトの名無しさん
2005/11/03(木) 23:23:11その通り
0602デフォルトの名無しさん
2005/11/03(木) 23:27:26.NETでのReaderWriterLockと同じことがしたいです。
Win32には用意されていないのでしょうか?
0603デフォルトの名無しさん
2005/11/03(木) 23:32:22クリティカルセクションあたりで実装する
0604デフォルトの名無しさん
2005/11/03(木) 23:33:40自作しかないですか。頑張ってみます。
0605デフォルトの名無しさん
2005/11/03(木) 23:34:55レス有難うございます。
0606デフォルトの名無しさん
2005/11/04(金) 00:59:05「レス番号585の方へ、」じゃないのか?
自作自演だって言いたいの?
0607デフォルトの名無しさん
2005/11/04(金) 01:04:03つ「レス番585(について)ですが」
0608デフォルトの名無しさん
2005/11/04(金) 01:12:54さらに翻訳が必要な翻訳ってどうよ
0609デフォルトの名無しさん
2005/11/04(金) 10:38:55とりあえず、ウインドウの拡張スタイルでWS_EX_TOOLWINDOWとWS_EX_TRANSPARENT立ててみたんですが、
WinXPでは非表示になるものの、Win2Kでは表示されてしまいました。
よろしくお願いします。
0610デフォルトの名無しさん
2005/11/04(金) 10:57:19WS_VISIBLE
0611デフォルトの名無しさん
2005/11/04(金) 10:57:59WS_VISIBLEを立てないでウィンドウ作ればいいだけのような・・・
0612デフォルトの名無しさん
2005/11/04(金) 11:36:080613デフォルトの名無しさん
2005/11/04(金) 12:13:09WS_VISIBLE指定しない限り・・・
0614デフォルトの名無しさん
2005/11/04(金) 13:36:17原因わかる人います?
〜.exになってしまう…
0615デフォルトの名無しさん
2005/11/04(金) 13:37:390616デフォルトの名無しさん
2005/11/04(金) 13:40:54名前の表示に長さ制限がある。
0617デフォルトの名無しさん
2005/11/04(金) 13:46:150618デフォルトの名無しさん
2005/11/04(金) 14:49:060619デフォルトの名無しさん
2005/11/04(金) 14:55:270620デフォルトの名無しさん
2005/11/04(金) 14:57:30できる
0621デフォルトの名無しさん
2005/11/04(金) 15:00:10ロジックか解説サイト教えて欲しいお。
0622デフォルトの名無しさん
2005/11/04(金) 15:06:00実行ファイルの名前リネームして一文字にしたら表示されたのでそうかも、
と一瞬思ったんですが、色々試してみると長い名前でも表示されてたりするので違うようです。
プロセス名は結構適当に登録されてるのかもしれません。
0623デフォルトの名無しさん
2005/11/04(金) 15:17:20GetPrivateProfileSectionすれば?
0624デフォルトの名無しさん
2005/11/04(金) 15:59:28今は各ページ共通の WM_DESTROY でフラグを設けて1回だけ呼ばれるようにしているのですが、
どうももっとスマートな方法があるような気がするので…。
0625デフォルトの名無しさん
2005/11/04(金) 16:50:34等幅フォントじゃないから文字によって長さは変わる。
0626デフォルトの名無しさん
2005/11/04(金) 18:19:10よいAPIはないでしょうか?
それともインストールしなくては、使えないものでしょうか。
SDLttfのように自前で読むしかないですか?
0627デフォルトの名無しさん
2005/11/04(金) 18:19:400628デフォルトの名無しさん
2005/11/04(金) 18:36:41して、使用して、
RemoveFontResource
0629デフォルトの名無しさん
2005/11/04(金) 19:51:580630デフォルトの名無しさん
2005/11/04(金) 22:51:21タイトルバーを入れるとその分サイズが引かれてしまって描写できる範囲のサイズが小さくなってしまうのですが、
タイトルバーの大きさを計算してサイズにプラスして設定する以外にこの問題の解決方法はありませんか?
0631デフォルトの名無しさん
2005/11/04(金) 22:53:450632デフォルトの名無しさん
2005/11/04(金) 22:54:15XPとその他のWinじゃ非クライアント領域のサイズが違うから、
定数で計算せずに、CreateWindowした後に外枠のサイズ出してリサイズするのが普通
0633デフォルトの名無しさん
2005/11/04(金) 22:55:10一旦不可視で作成して、GetClientRect と GetWindowRect で得られた
矩形の幅と高さの差を元に SetWindowRect で調整するという方法もあるし、
Microsoftを信用して AdjustWindowRect 使うって手もある。
0634デフォルトの名無しさん
2005/11/04(金) 22:56:420635デフォルトの名無しさん
2005/11/04(金) 23:07:31普通はAdjustWindowRectを使う。
メニューが複数行になる場合は自分で調節が必要。
0636630
2005/11/05(土) 01:06:380637デフォルトの名無しさん
2005/11/05(土) 09:12:170638デフォルトの名無しさん
2005/11/05(土) 09:39:43ウィンドウのスタイルは、極力最初に指定した方がいいんだがな
0639デフォルトの名無しさん
2005/11/05(土) 09:53:51>ウィンドウのスタイルは、極力最初に指定した方がいいんだがな
聞いたことないな。何か根拠とかあるの?
0640デフォルトの名無しさん
2005/11/05(土) 09:56:250641デフォルトの名無しさん
2005/11/05(土) 10:00:280642デフォルトの名無しさん
2005/11/05(土) 10:04:55曖昧な表現は一切必要ないし一切認めない。
0643デフォルトの名無しさん
2005/11/05(土) 10:10:25自虐乙
0644デフォルトの名無しさん
2005/11/05(土) 10:11:00SetWindowLong(edit,GWL_STYLE,WS_CHILD|WS_VISIBLE|WS_BORDER|ES_LEFT|ES_AUTOHSCROLL|ES_READONLY);
だとうまくいきません。どこが悪かったのでしょうか
0645デフォルトの名無しさん
2005/11/05(土) 10:40:46スタイルの変更だと言うから何かと思えば、
その手のコントロールの状態変更はほとんどがSendMessageでできるぞ
手始めにSendMessage & EM_SETREADONLYを調べるがよい
0646デフォルトの名無しさん
2005/11/05(土) 11:06:01質問ばかりになるのですがEM_SETREADONLYの反対に当たるメッセージは何なのでしょうか
0647デフォルトの名無しさん
2005/11/05(土) 11:10:32ttp://forums.belution.com/ja/vc/000/138/15.shtml
0648デフォルトの名無しさん
2005/11/05(土) 11:17:02EM_SETREADONLYを調べろと書いたのにその質問か・・・
EM_SETREADONLYの説明にもろ書いてあるというに・・・
0649デフォルトの名無しさん
2005/11/05(土) 11:47:49自分なりに必死に探したのですが、プロセスを列挙する方法しかわかりませんでした。
ここを参考にしました
ttp://66.102.7.104/search?q=cache:oQM6g_R7PHUJ:ruffnex.oc.to/kenji/text/dll_inj/
0650デフォルトの名無しさん
2005/11/05(土) 11:52:28非表示のウィンドウとか所有されているウィンドウとか
WM_EX_TOOLWINDOWスタイルが設定されているウィンドウを除外する。
WM_EX_APPWINDOWスタイルが設定されているウィンドウは
所有されていても追加する。
キーワードは与えてやったからあとはぐぐって調べろ
0651649
2005/11/05(土) 14:24:35ありがとうございます、とても助かりました。
0652デフォルトの名無しさん
2005/11/05(土) 15:12:160653デフォルトの名無しさん
2005/11/05(土) 21:43:40できました。
CreateDCを使ってなかったことが原因でした。
失礼しました。
0654デフォルトの名無しさん
2005/11/05(土) 22:09:19ところが、トップレベルウィンドウのサイズ変更はフックできるのですが、子ウィンドウはフックできません。
Spy++で見てみると子ウィンドウにもWM_SIZEは飛んでるのですが。
どうすれば子ウィンドウのフックができるのでしょうか?
0655デフォルトの名無しさん
2005/11/06(日) 11:33:520656デフォルトの名無しさん
2005/11/06(日) 11:47:11そんなことを言ってくるお前の方がかっこいいよ。
0657デフォルトの名無しさん
2005/11/06(日) 13:41:21とある他人様のアプリケーションで、タイマーが使われており、物凄い勢いでWM_TIMERが呼ばれているようなのです。
それが原因で非常に重く(おそらくWM_TIMER無いで描画を行っている)、これを軽減したいと考えました。
はっきりいってそんなに頻繁に描画しなくても問題ないので、WM_TIMERを2回に1回無視するようにフックしようと考え、DLLを作成し
SetWindowsHookEx(WH_GETMESSAGE, (略));
を行いWM_TIMERをとるのには成功しました。
ですがWH_GETMESSAGEはWH_MOUSEと違って
「こっちでフック処理したんで、元のアプリケーションではその処理しないでね」のreturn TRUEが通用しないようなのです。
何か良い知恵はございませんでしょうか。
0658デフォルトの名無しさん
2005/11/06(日) 14:00:48製作者に聞けば?
0659デフォルトの名無しさん
2005/11/06(日) 14:01:41推測で書くけれど、一回SetTimer呼べば、あとはデーモンというかメッセージループでTimerが走り、OnTimerが呼ばれるから、
すなはち、おそらくは、描画ハンドラから呼んでやってると思うけれど、1回だけ呼ばせればいい。
おそらく一般的には、フラグをstaticで作って、例えば、フラグが0ならif内でSetTimerした後、同じif内でフラグを1にして、以後2度とOnDrawからSetTimer呼ばれないようにする、これでもTimer一個が走り続けている。
おそらくは、その状態は、Timerの実体が何個も作られて、違うタイミングでものスゴッ呼ばれている。
もし、他から、Timer呼ばれているなら、引数のTimerIDをそれぞれ変える必要がある。
見当違いだったらすみません。
0660訂正
2005/11/06(日) 14:03:03つい、MFCで書いてしまった。
0661デフォルトの名無しさん
2005/11/06(日) 14:15:42そりゃ自作の場合の話でねーかい?
どうやってWM_TIMERを奪い取るかという質問だと思うんだが…
0662デフォルトの名無しさん
2005/11/06(日) 14:37:01WM_NULL を返すのじゃだめ?
0663デフォルトの名無しさん
2005/11/06(日) 14:46:50>>658さん
確かに一番手っ取り早いでしょうね。でも今回は無理ということで
>>659さん
ちょっと私の求めているのとは違うようです。>>661さんのおっしゃるとおり、WM_TIMERを独占したいのです
>>662さん
returnで返す値は0、もしくはCallNextHookExの返り値と決まっているようです。
WH_MOUSEのようにWH_TIMERがあればよかったのですが…。
0664デフォルトの名無しさん
2005/11/06(日) 15:01:48662が言ってるのはメッセージをWM_NULLにすり替えろってことだろ
0665デフォルトの名無しさん
2005/11/06(日) 15:28:06ぜんぜんアプローチが違うんだけど、
こちらでもう一度SetTimer呼んでタイマー上書きするとか
0666デフォルトの名無しさん
2005/11/06(日) 16:00:45摩り替える、というのはどういう意味合いでしょうか。物知らずですいません。
フックしたProcでCallNextHookExする以上、フックされる側には必ずWM_TIMERが届いてしまいます。
WH_MOUSEでのフックではreturn TRUE;することでフックされる側にWM_RBUTTONDOWNなどを届かなくすることができるので、
無効にしつつSendMessageでWM_LBUTTONDOWNを送ってやることで
「右クリックしたのに左クリックの動作」
なんていうメッセージのすり替えもできたのですが…。
>>665さん
それはとてもおもしろいアプローチです。
早速試してみます。
0667デフォルトの名無しさん
2005/11/06(日) 16:15:40ShowWindowでそれらしき定数があると思ってましたがないようですが
0668デフォルトの名無しさん
2005/11/06(日) 16:18:53まで読んだ
0669662
2005/11/06(日) 16:30:00言葉足らずでスマソ。つまり、フックプロシージャの中で、
((LPMSG)lParam)->message = WM_NULL;
などとやってメッセージ番号を上書きするってこと。
WM_NULL のドキュメントも参照。
0670デフォルトの名無しさん
2005/11/06(日) 16:31:35なかなか面白いアプローチで、うまくいきました。ありがとうございました。
>>667
Shell_NotifyIcon でググってみてください。
詳しいページが上のほうに出ますよ。
0671デフォルトの名無しさん
2005/11/06(日) 16:34:50なんと。それもまた素晴らしいアプローチですね。
MSDNライブラリの方にWM_NULLが無かったため、自分で定義したのかと思ってしまいました。
ぐぐって見たところ、確かにそういうアプローチを発見しました。
しかしなんというか…。危険な技ですね。
WM_CREATEあたりをWM_NULLに摩り替えるようにフックしたら、まったくウインドウが作れないウイルスみたいなものですね…。
0672デフォルトの名無しさん
2005/11/06(日) 16:41:29ttp://msdn.microsoft.com/library/default.asp?url=/library/en-us/winui/winui/windowsuserinterface/windowing/windows/windowreference/windowmessages/wm_null.asp
ちゃんとあるぞ。英語版見たか?
日本語版は抜けてるし、たまに誤訳もあるからお勧めしない
0673デフォルトの名無しさん
2005/11/06(日) 16:49:26すいません、もろに日本語版(ローカルにインストールするやつ)を見てました。
考えてみればVS6.0買った時一緒にセットしたものですから、だいぶ古いですね。ついつい…。
0674デフォルトの名無しさん
2005/11/06(日) 16:58:15ローカル版のMSDNでもちゃんと引っかかるはずだが
手持ちの2003年の奴で試したが引っかかった
0675デフォルトの名無しさん
2005/11/06(日) 17:04:54ゲームを作る際、こっちのほうが楽だろうと
CreateProcessでゲーム用スレッドを作り、WinMainから始まる方はメッセージ処理だけ行わせるようにしました。
ところがゲーム用スレッドが異常にCPUパワーを食います。
原因はゲーム用スレッドの
ThreadMain(){
while(!bEnd)
{
if(前の処理から16ミリ秒経過していなかったら){
continue;
}
ゲームメイン
}
}
というポーリングでしょう。
Sleepを入れれば解決しそうですが、Sleep(1)ですら必ずしも1ミリ秒丁度待つとは限らない以上、精度的にダメです。
こういう場合どうするのが常道ですか?
0676デフォルトの名無しさん
2005/11/06(日) 17:05:34case WM_CLOSE:
if (IDYES == MessageBox(hWnd, "終了?", "終了確認", MB_YESNO | MB_ICONQUESTION)) {
SendMessage(hWnd, WM_DESTROY, NULL, NULL);
}
break;
としたのですがこれだとメッセージボックスが出ている間にウィンドウを切り替えると
新しく別の終了確認メッセージボックスが出てきてしまいます。
これを防ぎたいのですが既にメッセージボックスが存在するかどうかを調べることは出来ますか?
0677デフォルトの名無しさん
2005/11/06(日) 17:14:48スリープを入れるかウェイタブルタイマ使え。
というか本当にそんな精度が必要なのか?
それならWindowsなんか使わず自前でOSから作れよ。
0678デフォルトの名無しさん
2005/11/06(日) 17:16:12while()
{
Sleep(1);
time = timeGetTime();
if (time < time_before + 16)
continue;
time_before = time;
}
0679デフォルトの名無しさん
2005/11/06(日) 17:18:40「ウィンドウを切り替えると」の意味がよくわからないけど、
case WM_CLOSE: の直前の break; を忘れているとか。
あと、WM_DESTROY は送信しちゃだめぽ。DestroyWindow() しないと。
0680デフォルトの名無しさん
2005/11/06(日) 17:24:51あー、すみません。ウィンドウを切り替えるとってのは
ウィンドウを非アクティブにしてからもう一度アクティブにするとってことです。
WM_DESTROYは送っちゃ駄目なんですね。DestroyWindow()に直しました。
指摘ありがとうございます。
0682デフォルトの名無しさん
2005/11/06(日) 18:38:44exchange, express, extra?
0683デフォルトの名無しさん
2005/11/06(日) 18:39:520684デフォルトの名無しさん
2005/11/06(日) 18:50:48>>683 thanks!
0685デフォルトの名無しさん
2005/11/06(日) 18:51:28そのアプリが重いことがどういう弊害を起こしているのかにもよるが、
そのアプリをCreateProcess()する起動用アプリを作り、そこからSetPriorityClass()
で、そのアプリのプロセスプライオリティを下げたら?
0686デフォルトの名無しさん
2005/11/06(日) 19:01:55Extended
0687デフォルトの名無しさん
2005/11/06(日) 19:37:14普通×押した時ならWM_SYSCOMMANDでSC_CLOSEトラップするだろ
0689デフォルトの名無しさん
2005/11/06(日) 21:55:01そんな動作をするフリーソフトなんかが既にありそうな気がする。
0690652
2005/11/06(日) 22:05:520691デフォルトの名無しさん
2005/11/06(日) 22:13:22はっはっはっはっはっはっは
0692mp3
2005/11/07(月) 00:38:49wavファイルと違い、上手くいきません。再生方法の詳細が分かる方はいませ
んでしょうか?MCI_OPEN_PARMS構造体のlpstrDeviceTypeの指定など、具体的な
情報が助かります。
0693mp3
2005/11/07(月) 00:39:41wavファイルと違い、上手くいきません。再生方法の詳細が分かる方はいませ
んでしょうか?MCI_OPEN_PARMS構造体のlpstrDeviceTypeの指定など、具体的な
情報が助かります。
0694mp3
2005/11/07(月) 00:45:23wavファイルと違い、上手くいきません。再生方法の詳細が分かる方はいませ
んでしょうか?MCI_OPEN_PARMS構造体のlpstrDeviceTypeの指定など、具体的な
情報が助かります。
0695デフォルトの名無しさん
2005/11/07(月) 00:46:050696デフォルトの名無しさん
2005/11/07(月) 13:18:520697デフォルトの名無しさん
2005/11/07(月) 19:32:05Win32オンリー非MFCです。
スタティックコントロールに文字列を表示しているのですが
CreateWindowする際のウィンドウスタイルで
SS_WHITEFRAME
SS_BLACKFRAME
SS_GRAYFRAME
SS_SUNKEN
SS_ETCHEDFRAME
のいずれかを指定すると文字列が表示されなくなっていまします。
これらを指定した状態で文字列を表示するにはどのようにしたらよいでしょうか?
0698デフォルトの名無しさん
2005/11/07(月) 19:38:33他のはスタイルというよりスタティックの種類なので、無理。
0699デフォルトの名無しさん
2005/11/07(月) 19:52:44のみ指定して
SetWindowTextしても文字列は出ませんでした・・・。
0700デフォルトの名無しさん
2005/11/07(月) 19:57:390701デフォルトの名無しさん
2005/11/08(火) 01:44:490702デフォルトの名無しさん
2005/11/08(火) 01:46:400703デフォルトの名無しさん
2005/11/08(火) 01:47:230704デフォルトの名無しさん
2005/11/08(火) 01:58:240705デフォルトの名無しさん
2005/11/08(火) 06:12:29リソースにCLASSで自作クラスを設定してそれを登録しているのですが、
このダイアログのプロシージャの戻り値はLRESULT型でしょうかBOOL型なのでしょうか?
また、分岐処理の最後にDefDlgProcを置くべきなのでしょうか?
その場合、WM_DESTROYを捕まえるんじゃなくて例えばWM_CLOSEでDestroyWindowなのでしょうか?
どうも通常のウィンドウプロシージャとこんがらがってしまって…
0706デフォルトの名無しさん
2005/11/08(火) 08:46:03プロシージャの戻り値はMSDNにバッチリ記載されとろうが
プロシージャ内の処理の仕方も全部書いてある
でおまいさん、WM_DESTROYでDestroyWindowはダイアログじゃなくともダメよ?
0707デフォルトの名無しさん
2005/11/08(火) 10:45:09LRESULT型
DefDlgProc() を置くのが普通
WM_CLOSE 内で DestroyWindow() が普通
0708デフォルトの名無しさん
2005/11/08(火) 11:07:37それに関して解説してるサイト知りませんか?
検索してもあまり出てこなかったので
0709デフォルトの名無しさん
2005/11/08(火) 11:19:43MFCのCSplitterWnd相当の機能か?
あれはライブラリレベルで実装されてる機能なんでAPIにはそんなものはない。
0710デフォルトの名無しさん
2005/11/08(火) 11:26:170711デフォルトの名無しさん
2005/11/08(火) 11:37:45モードレスダイアログなら、WM_CLOSE で不可視化だけしといて
Destroy しないというやり方もあると思う。
場合によるけど、常にウィンドウ持っておいた方が何かとラクできることもある。
0712デフォルトの名無しさん
2005/11/08(火) 12:45:33大嘘書くなよ
0713デフォルトの名無しさん
2005/11/08(火) 13:36:06どうか >>705 の2行目を穴が開くまで見つめてから出直してきてください
0714デフォルトの名無しさん
2005/11/08(火) 14:52:150715705
2005/11/08(火) 14:52:37ありがとうございます!
わたくしの脳みそではMSDNの解説に混乱してしまいまして…
ウィンドウ持っておくというのはいいですね、ちょっとやってみます!
0716デフォルトの名無しさん
2005/11/08(火) 23:42:410717デフォルトの名無しさん
2005/11/08(火) 23:46:080718デフォルトの名無しさん
2005/11/09(水) 00:02:26何?その隠し関数。
つーか、英語わかんないんすよ。
つーか、プラットフォームSDK入れろよチンコって言われたですよ。
つーか、具体的にはCreateWindowExのhMenuに突っ込む値がほしいだけなんですよ。
0719デフォルトの名無しさん
2005/11/09(水) 00:20:250720デフォルトの名無しさん
2005/11/09(水) 00:39:150721デフォルトの名無しさん
2005/11/09(水) 00:58:09だってWindowsの内部で重複しちゃ駄目ならWindowsが管理してそうなもんじゃん。
って単純に考えただけ。
今の俺のアプリはUINTの限界でアボーンw(まあ、そんなことはないだろうけどねw)
0722デフォルトの名無しさん
2005/11/09(水) 01:13:50誰がそんなこと言ってるの?
0723デフォルトの名無しさん
2005/11/09(水) 02:58:440724デフォルトの名無しさん
2005/11/09(水) 07:08:31ああ、同じ親をもつ子ウィンドウ同士で重複しちゃ駄目なだけって厳密なこといいたいの?
それでも面倒なレベルは変わらないんだけど・・・。
0725デフォルトの名無しさん
2005/11/09(水) 07:29:400726デフォルトの名無しさん
2005/11/09(水) 07:41:5240億もウインドウ造るんか……
0727デフォルトの名無しさん
2005/11/09(水) 08:01:56どう考えても先にリソースとかアプリケーションヒープのほうが不足しそうだが
0728デフォルトの名無しさん
2005/11/09(水) 08:25:070729デフォルトの名無しさん
2005/11/09(水) 09:21:33メニューのIDは、複数のウィンドウや他のアプリケーションと重複すると、
正常に動作しないので、IDをマイクロソフトが一元管理している。
IDを取得するには、MSDNに入会し、送付されてくるSDKに含まれている
ツールGetMenuId.exeを用いてマイクロソフトにメニューIDの交付を申請する。
MSDN の入会は
http://www.msj.co.jp/msdn/
参照。
MSDNに加入せずにメニューが使用したい場合は、CreateWindowEx()の
hMenuにはNULLを指定しておき、メニューの描画やマウスクリックの取得、
その他の操作をすべて自前で記述する必要有り。
0730デフォルトの名無しさん
2005/11/09(水) 10:13:24おまいはやさしいな。
0731デフォルトの名無しさん
2005/11/09(水) 10:22:370732デフォルトの名無しさん
2005/11/09(水) 13:43:190733デフォルトの名無しさん
2005/11/09(水) 13:51:30そこにアドレスを書き込むようにすればいい
0734デフォルトの名無しさん
2005/11/09(水) 14:06:01Rebar
http://msdn.microsoft.com/library/en-us/shellcc/platform/commctls/rebar/rebar.asp
0735デフォルトの名無しさん
2005/11/09(水) 20:57:51BITMAPINFO bi;
BITMAPINFOHEADER& bih = bi.bmiHeader;
bih.biSize = sizeof(BITMAPINFOHEADER);
bih.biWidth = nWidth;
bih.biHeight = -1 * nHeight; //トップダウン方式
bih.biPlanes = 1;
bih.biBitCount = colorbits;
bih.biCompression = BI_RGB;
m_hbmp = ::CreateDIBSection(NULL, &bi, DIB_RGB_COLORS, (void**)&m_lpdwpixel, NULL, 0);
こんな感じでモノクロのビットマップを作成しようとしてるんですが
WINDOWS2000ではきちんと動くのにWINDOWS98では動きません 戻り値のm_hbmpがNULLになってしまいます
どうしてでしょうか?
0736デフォルトの名無しさん
2005/11/09(水) 21:08:25とりあえず、その失敗してる時にGetLastErrorとFormatMessageしてみた?
それだけでももしかしたら原因わかるかもしらんぞ?
あとそれ、biをZeroMemoryかmemsetで0初期化しといた方がいいぜ
0737736
2005/11/09(水) 21:08:460738デフォルトの名無しさん
2005/11/09(水) 21:09:30ちょっと試してみると、95もできないな。
上下逆しかできない飢餓する。
bih.biHeight = nHeight;を試してみたら?
0739デフォルトの名無しさん
2005/11/09(水) 21:18:330740デフォルトの名無しさん
2005/11/09(水) 21:34:480で初期化したらいけました
ありがとうございました^^
0741デフォルトの名無しさん
2005/11/09(水) 22:44:540742デフォルトの名無しさん
2005/11/09(水) 23:09:44プログラムの追加と削除に入っているものとそうでないものでは、どういう違いがあると思いますか?
管理がし易い以外にどういう理由があるのだしょうか?
0743デフォルトの名無しさん
2005/11/09(水) 23:15:020744デフォルトの名無しさん
2005/11/09(水) 23:15:370745デフォルトの名無しさん
2005/11/09(水) 23:23:370746デフォルトの名無しさん
2005/11/09(水) 23:26:08ようこそ、素晴らしきAPIワールドへ
0747デフォルトの名無しさん
2005/11/09(水) 23:27:33え?何と比べて?
MFCと比べてるなら大差ないどころかむしろこっちのが楽だと思うが。
0748デフォルトの名無しさん
2005/11/09(水) 23:28:220749デフォルトの名無しさん
2005/11/09(水) 23:28:26あのイベントを自作のアプリで拾う事は可能でしょうか?
その場合、どういう風にやれば良いでしょうか?
(もしスレ違いでしたらどこで聞くべきですか?)
0750デフォルトの名無しさん
2005/11/09(水) 23:33:02MFCなんて呪いじゃん。
あのウンコなフレームワークのおかげで1つのソースにこんもりウンコテンコ盛り状態になってる現場って多いぞ。
0751デフォルトの名無しさん
2005/11/09(水) 23:35:370752デフォルトの名無しさん
2005/11/09(水) 23:37:000753デフォルトの名無しさん
2005/11/09(水) 23:39:260754デフォルトの名無しさん
2005/11/09(水) 23:39:28Delphiまんせー
0755デフォルトの名無しさん
2005/11/09(水) 23:42:040756デフォルトの名無しさん
2005/11/09(水) 23:42:31色々なコントロールに対するメッセージを一個一個調べるのが大変。
まだ慣れてないだけかもしれないけど。
0757デフォルトの名無しさん
2005/11/09(水) 23:46:060758デフォルトの名無しさん
2005/11/09(水) 23:47:56WM_DEVICECHANGEでいいのかな?
0759デフォルトの名無しさん
2005/11/09(水) 23:49:18それだけじゃん。
まあ、MDI(ってか、複数ドキュメントのアプリの形式ってこれであってるっけ?)のアプリケーション作るときなら楽チンだけど、
実際、MDIって使い道がVCかペイントツールぐらいしかないよねw
大抵のもんはSDI+ツールウィンドウで足りるわけで。
ところでMFCでツールウィンドウでどうやって作ったっけ?
なんか苦労した覚えがある(もう、触ってねーけど)
0760デフォルトの名無しさん
2005/11/09(水) 23:49:44回避が妥当。
0761デフォルトの名無しさん
2005/11/09(水) 23:50:060762デフォルトの名無しさん
2005/11/09(水) 23:50:260763デフォルトの名無しさん
2005/11/09(水) 23:54:10おお、そんな感じだった希ガス。
よく考えるとWin32APIでもそうかw
でも、MFCだと苦労した覚えあるなぁ・・・
0764デフォルトの名無しさん
2005/11/10(木) 00:02:28アフォですか?w
0765デフォルトの名無しさん
2005/11/10(木) 00:03:090766デフォルトの名無しさん
2005/11/10(木) 00:04:360767デフォルトの名無しさん
2005/11/10(木) 00:05:170768デフォルトの名無しさん
2005/11/10(木) 00:05:48俺もそれには同意
0769デフォルトの名無しさん
2005/11/10(木) 00:06:480770デフォルトの名無しさん
2005/11/10(木) 00:06:51何やねんそれw
0771デフォルトの名無しさん
2005/11/10(木) 00:07:090773デフォルトの名無しさん
2005/11/10(木) 00:07:490774デフォルトの名無しさん
2005/11/10(木) 00:09:59それには同意
0775デフォルトの名無しさん
2005/11/10(木) 00:10:470776デフォルトの名無しさん
2005/11/10(木) 00:16:07ありがとう。おかげで俺もうこのスレ、只ただ傍観するだけにしようと決心がつきました。
0777デフォルトの名無しさん
2005/11/10(木) 00:16:30レジストリなんて便所の落書きといっしょだ。
足跡残していって!
ブログの掲示板ぐらいのものだと思っていい。
0778デフォルトの名無しさん
2005/11/10(木) 00:17:18きめぇ
0779デフォルトの名無しさん
2005/11/10(木) 00:17:580780デフォルトの名無しさん
2005/11/10(木) 00:19:240781デフォルトの名無しさん
2005/11/10(木) 00:19:250782デフォルトの名無しさん
2005/11/10(木) 00:20:410783デフォルトの名無しさん
2005/11/10(木) 00:20:560784デフォルトの名無しさん
2005/11/10(木) 00:22:09ツールバーの縦のサイズを変更するにはどうすればいいですか。
無視しないで(^^;)
0785デフォルトの名無しさん
2005/11/10(木) 00:22:37ちょっ、おまっ!まてっ、まてよっ!
0786デフォルトの名無しさん
2005/11/10(木) 00:24:11Win32APIの極意を伝授してやろう。
で き な い こ と は や ら な い
and
む ず か し い こ と は さ け る
OK?
0787デフォルトの名無しさん
2005/11/10(木) 00:24:370788デフォルトの名無しさん
2005/11/10(木) 00:26:210789デフォルトの名無しさん
2005/11/10(木) 00:27:2839。
フィーバーおめ
0790788
2005/11/10(木) 00:27:540791デフォルトの名無しさん
2005/11/10(木) 00:27:57だってさ。
普通にウィンドウのサイズ変える方法でできないから質問してんだろ?
それって、ツールバーつくった奴が変えられないようにわざわざなんかしてやがるんだから、
無理にどうにかしようって発想がおかしいんだよ。
0792デフォルトの名無しさん
2005/11/10(木) 00:29:040793デフォルトの名無しさん
2005/11/10(木) 00:31:210794デフォルトの名無しさん
2005/11/10(木) 00:34:570795デフォルトの名無しさん
2005/11/10(木) 03:00:17画面のプロパティーで変更できる。
0796デフォルトの名無しさん
2005/11/10(木) 04:17:11最近新しいSDKをインストール、設定をして使い始めたのですが
インテリセンスがうまく働かない関数がいくつかあります。
これはマクロとして実装されているということでしょうか?
一例としては、FlashWindow関数では引数リストが表示されますが、
FlashWindowEx関数では表示されません。(使えることは使えますが)
自分で調べてみたところ、
「If you are using Visual C++ 6.0, it is recommended that you upgrade
because the import libraries included with this release of the Platform SDK
have a different format than that used by Visual C++ 6.0. 」
という記述をReleaseNoteの中に見つけました。
インポートライブラリの役割って何ですか?
どうしてインテリセンスが効いたり効かなかったりなんでしょう
環境は
Windows XP, Visual C++6.0, Win2003 SP1 Server SDK(一番最近のものをダウンロードしました)
です。
0797デフォルトの名無しさん
2005/11/10(木) 04:34:460798デフォルトの名無しさん
2005/11/10(木) 05:13:09インテリセンスのことは良く分からんが、そのrelease noteの言葉は
文字通りで、VC++6.0はそのリリースのPlatform SDKに対応しとらん
(インポートライブラリの形式が違うから使えない)ということだ。
2003年にリリースされたSDKがVC++6.0で利用可能な最終バージョン
じゃなかったかな。
インポートライブラリってのは、C/C++からDLLを利用するときにリンクする
スタブみたいなもの。スタティックリンクライブラリ同様に(実行時ではなく)
コンパイル/リンク時にリンクを行うが、実体はあくまでDLLの側にあって、
スタブの役割はDLLを実行時に適切にロードして、必要な関数のアドレスを取得し、
実際の処理はDLL側に委譲することにある。
それらの仕事を自前で実装するならインポートライブラリは不要だが、
標準的なシステムDLLに対していちいちそうしたことをやるのは面倒だから、
インポートライブラリを使うのが普通。
0799デフォルトの名無しさん
2005/11/10(木) 05:18:260800デフォルトの名無しさん
2005/11/10(木) 05:18:590801デフォルトの名無しさん
2005/11/10(木) 07:18:40もうすぐVC8 Expが無料で(ry
0802デフォルトの名無しさん
2005/11/10(木) 08:56:04コンパイラだけ取り替えたいなぁ。
>>796
インテリセンスに限れば、ヘッダを読んでるだけだよ。
VC6の場合、ネストされてたりすると限界があるのよ。
試しにヘッダだけプロジェクトに組み込んでみるといいよ。
ってこのスレかよ。
0803デフォルトの名無しさん
2005/11/10(木) 10:27:38.rc ファイル
IDR_MAINFRAME TOOLBAR DISCARDABLE 16, 15
の16がボタン一個の幅、15が高さ
0804デフォルトの名無しさん
2005/11/10(木) 10:32:26FindWindow()で探す。
>>758
WM_DEVICECHANGEはドライバのインストールが終わったあとくるのでは?(未確認)
0805デフォルトの名無しさん
2005/11/10(木) 10:48:18コンパイラの「/o?」についてなんですが、/o1 /o2などオプティマイズ掛けるとプログラムが正しく動かなくなってしまうんですが、
何方か情報ありましたらお願いします。
0806デフォルトの名無しさん
2005/11/10(木) 11:05:39このような質問に回答するのは非常に難しいと思うぞ
0807デフォルトの名無しさん
2005/11/10(木) 11:09:27最適化をかけると動かなくなる場合、
たいていソースにバグがあって、たまたま動いてただけ
0808デフォルトの名無しさん
2005/11/10(木) 11:25:41違うバージョンのVCか別のコンパイラで作られたライブラリにリンクしてる
0809デフォルトの名無しさん
2005/11/10(木) 11:31:14コンパイラのバグの可能性が2%ってとこか?
最適化するとデバッガの機能がかなり制限されるから大変だけど、
printfデバッグでも使って頑張れ。
どっちにしろ、このスレは明らかにスレ違いだな。
VSかVC++のスレで聞いたら?たぶん回答は得られないが。
0810デフォルトの名無しさん
2005/11/10(木) 11:39:170811デフォルトの名無しさん
2005/11/10(木) 11:51:53適当なスレって何だ?
ココの方が余程不適当なスレですよ?
VCのスレあるのに、自分初心者じゃないから初心者スレには行きたくないか?
0812デフォルトの名無しさん
2005/11/10(木) 12:27:360813デフォルトの名無しさん
2005/11/10(木) 13:16:150814デフォルトの名無しさん
2005/11/10(木) 13:21:17コンパイル結果のアセンブラ出力も見ずにコンパイラバグ疑うのはキチガイ。
0815デフォルトの名無しさん
2005/11/10(木) 18:24:060816デフォルトの名無しさん
2005/11/10(木) 18:42:28この手のバグの場合printfを入れただけで問題が起きなくなることもあって
大変だけどな。まずソースコードを机上でもディスプレイ上でもいいから
じっと眺めてみるのがいいか
0817デフォルトの名無しさん
2005/11/10(木) 20:48:42正しく動かないとは?
Exceptionになるのか、機能的に違った動作をするのか?
私も、>>807 と同意見。
最適化してもステップ動作とかはできるから、どこでおかしくなっているのか
究明すべし。これは最適化してようがしてまいが同じ。
0818デフォルトの名無しさん
2005/11/10(木) 20:53:38バッファをauto変数で宣言する場所では、最低限バッファの0バイト目にヌルをセットするべし。
最適化すると、他で使われて遺棄されたバッファがそのままバッファメモリに流用されるので。
BYTE buffer[256] = {0};
もしくは、
BYTE buffer[256];
buffer[0]=0;
0819デフォルトの名無しさん
2005/11/10(木) 20:56:070820デフォルトの名無しさん
2005/11/10(木) 20:57:000821デフォルトの名無しさん
2005/11/10(木) 20:57:540822デフォルトの名無しさん
2005/11/10(木) 21:04:06上は、バッファ全域が0になるわけで、下とは意味が違うのだが。
0823デフォルトの名無しさん
2005/11/10(木) 21:05:100824デフォルトの名無しさん
2005/11/10(木) 22:06:22ついているのに、お礼の一言もないなあ・・・
0825デフォルトの名無しさん
2005/11/10(木) 22:09:220826デフォルトの名無しさん
2005/11/10(木) 22:23:55それよか適用結果を貼り付けることを礼儀としようぜ。
0827デフォルトの名無しさん
2005/11/10(木) 22:35:250828デフォルトの名無しさん
2005/11/10(木) 22:39:26ここじゃ大部分の奴等が俺と同じ意見だと思うぜ。
このレスに俺はなんの魅力も感じない。
>遅レスですが、レスありがとうございました。
>その方法でやってみます。
で、音信不通・・・
馬鹿じゃねぇの。
性根から腐ってるとしかいいようがない。
このレスいらねぇから結果を反映させろよって感じ。
0829デフォルトの名無しさん
2005/11/10(木) 22:47:05俺も同意なんだけどさ、ルール作ったところで守る奴はいないだろ。特に音信不通になるようなタイプの人間は。
0830デフォルトの名無しさん
2005/11/10(木) 22:51:05そういう空気があるってところだけでいいんだよ。
そうすりゃたまに誰かがいうでしょ。
直る奴は直る。
これだけでいい。
0831デフォルトの名無しさん
2005/11/10(木) 22:59:160832デフォルトの名無しさん
2005/11/10(木) 23:14:11遅レスですが、レスありがとうございました。
その方法でやってみます。
0833デフォルトの名無しさん
2005/11/11(金) 00:38:49タスクマネージャーに出てくるようなものでお願いします。
0834デフォルトの名無しさん
2005/11/11(金) 00:58:00遅レスですが、レスありがとうございました。
その方法でやってみます。
0835デフォルトの名無しさん
2005/11/11(金) 01:02:20早レスですが、レスありがとうございます。
その方法でやってみます。
0836デフォルトの名無しさん
2005/11/11(金) 01:05:06早漏ですが、レスありがとうございました。
その方法でやってみます。
0837デフォルトの名無しさん
2005/11/11(金) 01:07:530838デフォルトの名無しさん
2005/11/11(金) 01:27:01存在するのか?
0839デフォルトの名無しさん
2005/11/11(金) 01:29:390840デフォルトの名無しさん
2005/11/11(金) 01:31:490841デフォルトの名無しさん
2005/11/11(金) 01:40:24町の本屋より、大学内の本屋の方がいい希ガス
0842デフォルトの名無しさん
2005/11/11(金) 01:54:490843デフォルトの名無しさん
2005/11/11(金) 02:35:13PRINTDLGの使用後の後処理は
hDevMode,hDevNames → GlobalFree
hDC → DeleteDC
であってますか?
0844デフォルトの名無しさん
2005/11/11(金) 04:48:360845デフォルトの名無しさん
2005/11/11(金) 04:53:110846デフォルトの名無しさん
2005/11/11(金) 06:26:31俺は軽い気持ちでオンラインで買ったら、分厚い本でびびったw
0847デフォルトの名無しさん
2005/11/11(金) 07:41:12俺の学校の図書館にある。
分厚いので借りて帰るには少々面倒だが。
0848デフォルトの名無しさん
2005/11/11(金) 10:26:37GetProcessMemoryInfo()
そのまんまの名前でんがな・・・・
0849デフォルトの名無しさん
2005/11/11(金) 10:31:160850デフォルトの名無しさん
2005/11/11(金) 10:43:54レスの最後に付けとかはったら、ええんとちゃうのん?
0851デフォルトの名無しさん
2005/11/11(金) 10:48:320852デフォルトの名無しさん
2005/11/11(金) 11:45:350853デフォルトの名無しさん
2005/11/11(金) 12:48:570854デフォルトの名無しさん
2005/11/11(金) 21:06:01http://live14.2ch.net/test/read.cgi/wildplus/1131706707/
0855デフォルトの名無しさん
2005/11/11(金) 21:42:12ふつうにwindows.hインクルードしてウィンドウを表示させただけで、
タスクマネージャで見るとメモリを4532KBも食ってるんだがなんで?
ちなみに最小化するとなぜかメモリ使用量が1000KBに減り、元に戻すと1800KBになる。
0856デフォルトの名無しさん
2005/11/11(金) 21:46:15どんなコード書いてるのか知らんし
0857デフォルトの名無しさん
2005/11/11(金) 21:49:320858デフォルトの名無しさん
2005/11/11(金) 21:52:400859デフォルトの名無しさん
2005/11/11(金) 22:09:100860デフォルトの名無しさん
2005/11/11(金) 22:15:47DCの描画状態がシンプルな白地であろうが複雑な画像であろうが同じサイズ確保される。
0861デフォルトの名無しさん
2005/11/11(金) 22:29:040862デフォルトの名無しさん
2005/11/11(金) 23:22:56HWND hWnd;
HINSTANCE hInst;
LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM);
BOOL CreateMainWindow();
LRESULT CALLBACK WndProc(HWND tWnd,UINT msg,WPARAM wp,LPARAM lp)
{
switch(msg)
{
case WM_DESTROY:
PostQuitMessage(0);
break;
default:
return DefWindowProc(tWnd,msg,wp,lp);
}
return 0;
}
1/3
0863デフォルトの名無しさん
2005/11/11(金) 23:25:50LPSTR lpszCmdLine,int nCmdShow)
{
MSG msg;
hInst = hInstance;
if(!CreateMainWindow())
{
MessageBox(NULL,"初期化エラー","testWindow",MB_ICONHAND);
return 2;
}
ShowWindow(hWnd,nCmdShow);
UpdateWindow(hWnd);
while(GetMessage(&msg,NULL,0,0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return (int)msg.wParam;
}
2/3
0864デフォルトの名無しさん
2005/11/11(金) 23:26:49BOOL CreateMainWindow()
{
WNDCLASSEX wc;
wc.cbSize = sizeof(WNDCLASSEX);
wc.cbClsExtra = 0;
wc.cbWndExtra = 0;
wc.style = CS_HREDRAW | CS_VREDRAW;
wc.lpfnWndProc = WndProc;
wc.lpszClassName = "testClass";
wc.lpszMenuName = NULL;
wc.hInstance = hInst;
wc.hIcon = NULL;
wc.hIconSm = NULL;
wc.hCursor = LoadCursor(NULL,IDC_ARROW);
wc.hbrBackground = GetSysColorBrush(COLOR_WINDOW);
if(!RegisterClassEx(&wc))
return FALSE;
hWnd = CreateWindowEx(0,"testClass","testWindow",
WS_OVERLAPPEDWINDOW,CW_USEDEFAULT,CW_USEDEFAULT,240,120,NULL,NULL,hInst,NULL);
if(!hWnd)
return FALSE;
return TRUE;
}
3/3
言い忘れたけど855のソースね。
0865デフォルトの名無しさん
2005/11/11(金) 23:27:49Windowsなんてそんなもんだよ。困る?
0866デフォルトの名無しさん
2005/11/11(金) 23:27:52/ ´_ゝ`)すいません、ちょっと通りますよ・・・
| /
| /| |
// | |
U .U
0867デフォルトの名無しさん
2005/11/11(金) 23:33:11#include <windows.h>
してみたら?
0868デフォルトの名無しさん
2005/11/11(金) 23:40:590869デフォルトの名無しさん
2005/11/11(金) 23:53:450870デフォルトの名無しさん
2005/11/11(金) 23:57:530871デフォルトの名無しさん
2005/11/12(土) 00:05:33スワップアウトして見かけのメモリ使用量が減ったのかなとか思ったりするんだが、
本当のところは知らね。って書いてたら既に書かれてたか。
ちなみに、
ImmDisableIME(-1);
ってするとメモリ使用量が大幅に減る。IMEを必要としないプログラム限定の技だが。
ついでにWin95では使えないが・・・もう気にする必要はないか。
0872デフォルトの名無しさん
2005/11/12(土) 00:08:240873デフォルトの名無しさん
2005/11/12(土) 00:17:03広い世の中には、メモリリークだけじゃなく、ハンドルリークも存在する。
0874デフォルトの名無しさん
2005/11/12(土) 00:39:51起動速度は微妙じゃないかな。
バインドで時間食うし。
0875デフォルトの名無しさん
2005/11/12(土) 00:47:55いや、それが意外とそうでもないよ。 確認したのはWindows2000での話だけどね。
バインドが問題だというなら、そもそもSHELL32.DLLやらUSER32.DLLをロードする、
あらゆるモジュールに問題が生じるはずだよ。
XPだと別の起動最適化がかかるから、効率がどうなるかわからない。
0876デフォルトの名無しさん
2005/11/12(土) 00:50:490878デフォルトの名無しさん
2005/11/12(土) 00:59:56> そもそもSHELL32.DLLやらUSER32.DLLを
だから微妙と言ったんだけれども。
デカクなったPEの読み込みと大量のバインドのどちらが重くなるかは
大本のプログラムの大きさによると思うよ。
元より外部のライブラリにあまり頼らない設計してたら、どっちにしろ
最終的なサイズは大きくは変わらないからね。
Load-Timeじゃなくて全部Run-Timeでやるんなら起動だけは速いかな。
0879デフォルトの名無しさん
2005/11/12(土) 01:02:09なるほど、そういう意味の「微妙」だったか。失礼しました。
0880デフォルトの名無しさん
2005/11/12(土) 01:02:58いえいえ。
0881デフォルトの名無しさん
2005/11/12(土) 02:19:490882デフォルトの名無しさん
2005/11/12(土) 03:36:20ボタンをビジュアルスタイルで設定してる概観にするのはどうすればいいのか
0883デフォルトの名無しさん
2005/11/12(土) 04:53:190884デフォルトの名無しさん
2005/11/12(土) 22:42:26どうしても分からなくなったのでどうか教えてください。
以下の関数を使ってファイルから1行読み出しをしているのですが、
なぜか文字化けは入るわ、strcatは無視されるわで散々な結果です。
staticで変数宣言すると直るのですが、その理由も分からず……
どうかよろしくお願いします。
int fileRead(char* fileStr,HANDLE hFile)
{
char cache=0x00;
char fileData[255];
DWORD wReadSize;
while(cache == '\n')
{
ReadFile(hFile , &cache , 1 , &wReadSize , NULL);
if(wReadSize == 0) break;
strcat(fileData,&cache);
}
strcpy(fileStr,fileData);
0885デフォルトの名無しさん
2005/11/12(土) 22:45:37fileDataを初期化しないとイケナイ。
0886デフォルトの名無しさん
2005/11/12(土) 22:49:040887デフォルトの名無しさん
2005/11/12(土) 22:57:10バグが…5つ…かな。
0888デフォルトの名無しさん
2005/11/12(土) 22:58:340889デフォルトの名無しさん
2005/11/12(土) 23:06:54DWebBrowserEvent2::DownloadCompleteなのですが、
引数が無いので、どのデータがダウンロード終了したのか特定できません。
DocumentCompleteの場合は、FRAME/IFRAMEやページ本体のダウンロード時にしか発生しません。
ページ内の特定の画像のダウンロード終了を検出するにはどうしたら良いのでしょうか?
0890デフォルトの名無しさん
2005/11/12(土) 23:45:520891デフォルトの名無しさん
2005/11/12(土) 23:46:35アプリが内部でウィンドウを強制終了させたい場合はどういうAPIを使えば
よいですか?
0892デフォルトの名無しさん
2005/11/12(土) 23:50:130893デフォルトの名無しさん
2005/11/12(土) 23:59:49ステータスバー作ってみたら下みたいなのになるのですが、
上みたいなステータスバーを作るにはどうすればいいのでしょうか
0894デフォルトの名無しさん
2005/11/13(日) 00:00:32自前で作れ。
0895デフォルトの名無しさん
2005/11/13(日) 00:04:09jpgにしろよ
重いな
0896デフォルトの名無しさん
2005/11/13(日) 00:07:37どうやってですか
>>895
はじめgifにしたんですが使い物にならないくらい画質悪くなったんでそのままbmpにしました
windows付属のペイントです
0897デフォルトの名無しさん
2005/11/13(日) 00:08:51お前プログラミング以前の問題だよ
0898デフォルトの名無しさん
2005/11/13(日) 00:13:08PostMessage(hWnd, WM_CLOSE, 0, 0);
0899デフォルトの名無しさん
2005/11/13(日) 00:18:21知らないのなら黙っていて下さいよ
0900デフォルトの名無しさん
2005/11/13(日) 00:21:380901デフォルトの名無しさん
2005/11/13(日) 00:22:210902デフォルトの名無しさん
2005/11/13(日) 00:30:110903デフォルトの名無しさん
2005/11/13(日) 00:32:390904デフォルトの名無しさん
2005/11/13(日) 00:35:100905デフォルトの名無しさん
2005/11/13(日) 00:36:590906デフォルトの名無しさん
2005/11/13(日) 00:37:48こうしたんだよ(^o^)
0907デフォルトの名無しさん
2005/11/13(日) 00:38:17回答できない低学歴は消えろ(^o^)
0908デフォルトの名無しさん
2005/11/13(日) 00:38:50本当に頭が悪いやつらだなw
0909デフォルトの名無しさん
2005/11/13(日) 00:39:400910デフォルトの名無しさん
2005/11/13(日) 00:40:240911デフォルトの名無しさん
2005/11/13(日) 00:40:54そんなにすごいなら自分で解決しなさいなw
0912デフォルトの名無しさん
2005/11/13(日) 00:41:24どんな環境だよw
0913デフォルトの名無しさん
2005/11/13(日) 00:41:37少し我慢しろよ(^o^)
0914デフォルトの名無しさん
2005/11/13(日) 00:41:59自分でそういうコントロールを作る。
0915デフォルトの名無しさん
2005/11/13(日) 00:42:14さっさと教えろや(^o^)
0916みずき ◆WnmizUKIg6
NGNG0917デフォルトの名無しさん
2005/11/13(日) 00:42:470918デフォルトの名無しさん
2005/11/13(日) 00:42:55しらねーよ。
場所によんじゃねーの。
もう、かれこれ10分ぐらいリロードしたりしてるけど
いっこうに落ちてこないねw
0919デフォルトの名無しさん
2005/11/13(日) 00:43:22上のステータスバーはIEのものなのですが、それの製作者も自分で作ったのですか
あとfire foxも同じかんじのステータスバーなのですが
0920デフォルトの名無しさん
2005/11/13(日) 00:46:060921デフォルトの名無しさん
2005/11/13(日) 00:46:050922デフォルトの名無しさん
2005/11/13(日) 00:46:17ざこい奴らだな
0923デフォルトの名無しさん
2005/11/13(日) 00:47:42明らかに違うだろ
めがね掛けろよ
0924デフォルトの名無しさん
2005/11/13(日) 00:48:380925デフォルトの名無しさん
2005/11/13(日) 00:50:49ったくつかえねーやつらだ
0926デフォルトの名無しさん
2005/11/13(日) 00:53:27やっと画像が落ちてきたけど違いが全くわかんねw
0927デフォルトの名無しさん
2005/11/13(日) 00:54:13下の方はカクカクしてるだろ
0928デフォルトの名無しさん
2005/11/13(日) 00:55:330929デフォルトの名無しさん
2005/11/13(日) 00:56:28駄目だよ
0930デフォルトの名無しさん
2005/11/13(日) 01:17:550931デフォルトの名無しさん
2005/11/13(日) 01:24:02下のステータスバーはフチ付きなんだよ(しかもなんか鮮やか)
上のステータスバーはフチないんだよ(単色っぽい)
まったく
0932デフォルトの名無しさん
2005/11/13(日) 01:24:44上のステータスバーはフチないんだよ (なんか鮮やか)
のミスです(^o^)
0933デフォルトの名無しさん
2005/11/13(日) 01:25:09した時に出る警告ウィンドウをユーザーアプリから消す(又は不可
視化する)って出来ますか?
0934デフォルトの名無しさん
2005/11/13(日) 01:27:420935デフォルトの名無しさん
2005/11/13(日) 01:28:120936デフォルトの名無しさん
2005/11/13(日) 01:33:00違う違う
下の方はねずみ色っぽいフチが付いてるだろ
でも上の方はグラデーションだろ
0937デフォルトの名無しさん
2005/11/13(日) 01:33:420938デフォルトの名無しさん
2005/11/13(日) 01:45:01SetErrorMode(SEM_FAILCRITICALERRORS);
0939デフォルトの名無しさん
2005/11/13(日) 02:53:09少し時間を置いたら色々と考え違いが思い当たったので、それを直しつつ
ぼちぼちやっていきます。
スレ汚し失礼しました。
0940デフォルトの名無しさん
2005/11/13(日) 04:01:18char cache=0x00;
ここが問題。これを大きさが2以上の配列にしないと駄目。
0941デフォルトの名無しさん
2005/11/13(日) 09:15:34そこでPNGですよ。
0942デフォルトの名無しさん
2005/11/13(日) 09:23:13jpgは写真には向いてるけど
図形や文字に使うとにじんで汚くなる。
こいうのはgifやpngを使うのが常識
0943デフォルトの名無しさん
2005/11/13(日) 09:57:23それにしても、下らんことで次スレが近づいたな
0944デフォルトの名無しさん
2005/11/13(日) 09:59:45でもgifは使えないでしょ?
0945デフォルトの名無しさん
2005/11/13(日) 10:01:010946デフォルトの名無しさん
2005/11/13(日) 10:07:590947デフォルトの名無しさん
2005/11/13(日) 10:13:560948デフォルトの名無しさん
2005/11/13(日) 10:40:310949デフォルトの名無しさん
2005/11/13(日) 10:46:370950デフォルトの名無しさん
2005/11/13(日) 11:14:210951デフォルトの名無しさん
2005/11/13(日) 11:22:39今度はスルーされなくて良かったね^^
0952デフォルトの名無しさん
2005/11/13(日) 12:31:000953デフォルトの名無しさん
2005/11/13(日) 13:26:13スルーされたかったのに妄想厨に絡まれたんだよヽ(`Д´)ノ
どうせ2chの書き込みは全部漏れの自作自演だよヽ(`Д´)ノ
0954デフォルトの名無しさん
2005/11/13(日) 13:28:13自演乙
0955デフォルトの名無しさん
2005/11/13(日) 14:28:160956デフォルトの名無しさん
2005/11/13(日) 14:34:010957デフォルトの名無しさん
2005/11/13(日) 16:06:30C++の知識は必要でしょうか?
0958デフォルトの名無しさん
2005/11/13(日) 16:07:070959デフォルトの名無しさん
2005/11/13(日) 16:21:080960957
2005/11/13(日) 16:22:280961デフォルトの名無しさん
2005/11/13(日) 16:37:360962デフォルトの名無しさん
2005/11/13(日) 16:37:390963デフォルトの名無しさん
2005/11/13(日) 16:47:30でも人が作ったものを利用しようと思った時にC++知らないと不便だろ
0964957
2005/11/13(日) 16:49:48日曜プログラマーの延長線進もうとする自分にとっては
微妙なようで・・・
0965デフォルトの名無しさん
2005/11/13(日) 16:51:490966デフォルトの名無しさん
2005/11/13(日) 16:51:56俺はもう素のCなんか書きたかねーが。
0967デフォルトの名無しさん
2005/11/13(日) 16:56:000968デフォルトの名無しさん
2005/11/13(日) 17:20:09Cで書いてた時よりも遙かに楽になった。
0969デフォルトの名無しさん
2005/11/13(日) 17:49:550970デフォルトの名無しさん
2005/11/13(日) 17:52:05GetLastError()は、ERROR_CLIPBOARD_NOT_OPENです。
確かにちゃんとOpneClipboardが成功しているのですが。
EmptyClipboard()やSetClipboardData()はできるようです。
0971デフォルトの名無しさん
2005/11/13(日) 19:17:550972957
2005/11/13(日) 19:19:48本当にありがとうございましたm(_ _)m
0973デフォルトの名無しさん
2005/11/13(日) 19:37:33QueryPerformanceCounter (QueryPerformanceFrequency単位)
GetSystemTimeAsFileTime(0.1µsec単位)
ただし、実際に器の単位で時刻が進むとは限らないはず。
0974デフォルトの名無しさん
2005/11/13(日) 19:45:120975デフォルトの名無しさん
2005/11/13(日) 19:47:032000個のフォルダを列挙するのに8秒ほどかかります。
ローカルでやると、100msくらいなのですが、なぜこれほど
ネットワーク越しは時間が掛かるのでしょうか?
0976デフォルトの名無しさん
2005/11/13(日) 19:48:300977デフォルトの名無しさん
2005/11/13(日) 19:58:16へぇ、timeGetTimeって「現在時刻」だったんだ
0978デフォルトの名無しさん
2005/11/13(日) 20:02:41あとはタイムカウンタの差分を取得しておいた時刻に足せば、
現在時刻になるわけだが。
0979デフォルトの名無しさん
2005/11/13(日) 20:14:54それは別の方法の精度が悪ければいくらタイムカウンタの精度が良くても意味がないだろ。
0980デフォルトの名無しさん
2005/11/13(日) 20:18:05「現在時刻をミリ秒かマイクロ秒単位で取得する関数」なんですか?w
論点違ってんだよ
0981デフォルトの名無しさん
2005/11/13(日) 20:22:030.1µsecであるか、システム起動時からのmsであるかに
そんなに大きな違いはない。
0982デフォルトの名無しさん
2005/11/13(日) 20:35:20中身どうなってんのか俺は知らんけど、
そもそもOS側でのタイマの更新がそう頻繁に行われて無いと思われ。
今、タイマ関数を読んでその値が一体何時に取得した値なのか1ms単位ではわからないんではないか?と予想。
経験だとだいたい20ms単位ぐらいなら文句が無い程度には動く。
0983デフォルトの名無しさん
2005/11/13(日) 20:38:50取得できるとかどっか書いてあったけど?
0984デフォルトの名無しさん
2005/11/13(日) 20:44:11実際と理論は違うのだよ
0985デフォルトの名無しさん
2005/11/13(日) 20:57:05そもそもWindows自体が全てがメッセージで動いてるわけで、
タイマのときだけメッセージ無視して早く動くとも考え難いじゃん。
Windowsってさ、だいたいが、その状態があってそれを取得するのは早いけど
ひとたびハードにアクセスするってーとかなり時間がかかると思うんだがどうだろうか?
だからタイマ取得関数ですぐレスポンスが帰ってくるのはそもそも俺が関数を呼び出す
もっと前に取得しておいたものだと俺は考えるわけだがどうだろうか?
だから時間は関数を呼び出す前からすでにずれていると思うわけよ。
はじめに設定する精度ってのはWindowsがとってくるように
努力しようとする周期(実際にとれているかどうかは問題では無い:まあ、期待値w)であって、
メッセージで動くWindowsにそもそもそんな周期での仕事は無理なんじゃねぇの?
ってのが俺の予想。
0986デフォルトの名無しさん
2005/11/13(日) 20:57:46普段のもっさり感考えるとかなりばらつく気がす
0987デフォルトの名無しさん
2005/11/13(日) 21:00:240988デフォルトの名無しさん
2005/11/13(日) 21:20:100989デフォルトの名無しさん
2005/11/13(日) 21:21:28timeBeginPeriodを使えばGetTickCountの精度まで良くなるそうだ。
0990デフォルトの名無しさん
2005/11/13(日) 21:30:26http://pc8.2ch.net/test/read.cgi/tech/1131884991/l50
0991デフォルトの名無しさん
2005/11/13(日) 21:31:030992デフォルトの名無しさん
2005/11/13(日) 22:01:21割り込む処理もメッセージだったら?
0993デフォルトの名無しさん
2005/11/13(日) 22:03:59>記事の行数が増えてしまうので NT(2000) での結果は割愛しましたが、精度は 10mSec でした。(^_^;
これはなぜか?
って考えないのかな?。
つまり、NT系に当たるXPもこんなもんじゃねーの?
0994デフォルトの名無しさん
2005/11/13(日) 23:22:55もしメッセージだったら精度は悪くなるだろうね。
実際はメッセージじゃないけど。
0995デフォルトの名無しさん
2005/11/13(日) 23:23:33マルチメディアタイマは最優先度のスレッドが生成されそのスレッド内でループする仕様。
Win32APIに割り込みなど存在しない。
0996デフォルトの名無しさん
2005/11/13(日) 23:37:46スレッドならメッセージでやりとりするしかねーじゃん。
0997デフォルトの名無しさん
2005/11/13(日) 23:44:19口調が初心者風でないだけにムカつく。
0998デフォルトの名無しさん
2005/11/13(日) 23:45:38シングルプロセッサのNT系のクロック割り込みが10ms単位らしいから、
タイマーの精度もそれに依存してるって話では。
タイマーのOS内部での動作としては、クロック割り込みがくるたびに、
システム内のカウンターに割り込み間隔分の値を加算していく。
timeGetTime()とかGetTickCount()とかは基本的にこのカウンタを返してるだけだから、
精度はクロック割り込みの設定に依存する。
(基本的にはどのOSでもこのへんの構造は大差ない)
QueryPerformanceCounter()は、クロック割り込みとは別のハードウェアを使ってるから
(使える環境なら)より精度の高いカウンタとして使える。
マルチメディアタイマーは割り込みじゃなくてコールバック。
詳しくは知らないが、>>995みたいなビジーループ回してるんじゃないかな?
0999デフォルトの名無しさん
2005/11/13(日) 23:46:03で、あなたの反論は?
1000デフォルトの名無しさん
2005/11/13(日) 23:47:20〈〈〈 ヽ
〈⊃ }
∩___∩ | |
| ノ ヽ ! !
/ ● ● | /
| ( _●_) ミ/ <こいつら最高にアホ
彡、 |∪| /
/ __ ヽノ /
(___ ̄\ /
(_ノノノ│
∪
10011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。