07/03/31 11:15:05
自アプリのwebbrowserコントロール内でユーザが文字列を選択し、
コンテキストメニューから「コピー」を選んだとき、
クリップボードに書き込まれる前になんらかのイベントを
捕捉することはできますでしょうか?
おねがいします。
332:デフォルトの名無しさん
07/03/31 17:04:43
>>331
ヒント:DDK
333:デフォルトの名無しさん
07/03/31 17:35:32
ヒント:DDR
334:デフォルトの名無しさん
07/03/31 17:38:25
ヒント:DDR2
335:デフォルトの名無しさん
07/03/31 17:46:45
ヒント:DDRMAX
336:デフォルトの名無しさん
07/03/31 17:48:55
EDORAM SIMM
337:デフォルトの名無しさん
07/03/31 18:04:40
EROIM ESSAIM
338:デフォルトの名無しさん
07/03/31 18:49:05
┏┳┳┓ ハイ. ┏┳┳┓
┏┫┃┃┃ 雑談は ┃┃┃┣┓
┃┃┃┃┣┓ ここまで.┏┫┃┃┃┃
┃ ┃┃┏━━┓┃┃ ┃
┃ 雑談 ┣┫ . ・∀・ ┣┫. STOP!┃
┗━━┛┗┳━┳┛┗━━┛
┏┻┓┃
┏━┛ ┣┻┓
┗━━┫ ┗━┓
┗━━┛
339:316
07/03/31 22:49:05
共有のメモリでリードライトポインタを制御するって意見が多いですね。
パイプにしとけば別プロセスにしたときにも使えるかなってのはあるんですが。。。
速度低下ってのは言葉足らずで、メイン処理を一定周期で
回したいのでログが多くなった瞬間にメイン処理が
待たされるのを避けたいという意味です。
最悪、ログのバッファオーバーフローもあり得るってことで。
340:デフォルトの名無しさん
07/03/31 22:55:04
ソケットにしておけば別マシンからでも使えるぞ。
341:デフォルトの名無しさん
07/03/31 23:38:49
DLLの中からCreateWindowでウィンドウを表示できますか?
でもってその場合hInstanceにはHMODULEを渡すですか?
342:デフォルトの名無しさん
07/03/31 23:56:00
>>341
出来る。それでおk。つーか試した方が早くね?
343:デフォルトの名無しさん
07/03/31 23:57:42
ありがと
344:デフォルトの名無しさん
07/04/01 00:15:48
しつもんがあります。
かなり大量のメモリ確保したいのですがGlobalLockは最高何個まで
メモリ確保できますか?上限とかありますか?メモリが許す限り
無制限でしょうか?
よろしくお願いします。
345:デフォルトの名無しさん
07/04/01 00:18:24
ヒント32ビットOS
346:デフォルトの名無しさん
07/04/01 00:24:18
2^32個ということですね
ありがとうございました
347:デフォルトの名無しさん
07/04/01 00:27:19
ポインタやハンドルは4バイトだから
それを記録する変数のために(2^32)*4を引くのを忘れるなよ。
348:デフォルトの名無しさん
07/04/01 00:31:26
SysListView32で「キーボードカーソル」
の現在位置の取得及び設定はどうやるのですか?
ウィンドウの中で点線で囲まれていて、
Ctrl + 上下キーで移動する部分です。
349:デフォルトの名無しさん
07/04/01 00:54:39
>>344>>346
Win32では、基本的にリニアアドレス空間の半分をシステムが持っているので、
実際にユーザが使えるのは理論上2^31Byte、つまり2GiB。
ただしNT系ではリンク時の/LARGEADDRESSAWAREと
boot.iniの/3GBオプションにより、3GiBまで広がる。
/LARGEADDRESSAWARE付けた32ビットEXEをWin64で動かしたら4GiBまでいけるという話もある。
実際にはそこからEXE/DLL、つまりコードやリソース、
それにスタックなどの分も差し引かれるのでもう少し減る。
勿論空き仮想メモリの量が実際的な上限。
ところで1度に1MiB以上の確保するときにはVirtualAllocが推奨されている。
URLリンク(msdn.microsoft.com)
URLリンク(msdn.microsoft.com)
350:デフォルトの名無しさん
07/04/01 01:06:56
GiBってなんだ
351:デフォルトの名無しさん
07/04/01 01:13:44
>>350
URLリンク(hwb.ecc.u-tokyo.ac.jp)
352:デフォルトの名無しさん
07/04/01 02:13:53
MiBはあちこちで記憶を消して回るやつらのことだろ
353:デフォルトの名無しさん
07/04/01 04:11:05
>>352
DELIVER THE GALAXY OR EARTH WILL BE DESTROYED.
SORRY!
354:デフォルトの名無しさん
07/04/01 04:13:49
ウィルスミスカコイイ
355:デフォルトの名無しさん
07/04/01 05:05:59
virus miss?
356:デフォルトの名無しさん
07/04/01 08:44:47
32ビットでもWindows Server 2003 R2 Datacenterなら128GBまでOK。
Windows 2000 Datacenter Serverでも64GB
357:デフォルトの名無しさん
07/04/01 09:03:57
知識としては良いのかも知れんが
本当に2GBのメモリを要求するようなプログラムは
設計から間違ってる気がする
358:デフォルトの名無しさん
07/04/01 10:38:31
科学計算やるソフトなら本当に2GBまで使ったりするけどね~
359:デフォルトの名無しさん
07/04/01 10:54:45
32bitのWindowsでやるようなことじゃないな。
360:デフォルトの名無しさん
07/04/01 11:00:23
>>331
IHTML*Events::oncopy()
書き込み前か書き込み後かは知らん
361:デフォルトの名無しさん
07/04/01 11:10:13
>>356
1プロセスは4GBまでだろ
362:デフォルトの名無しさん
07/04/01 11:11:01
タスクトレイのアイコンはウィンドウがないと作れないの?
363:デフォルトの名無しさん
07/04/01 11:21:29
>>361
志村、AWE、AWE
>>362
ウィンドウがないとタスクトレイメッセージが受け取れない
364:デフォルトの名無しさん
07/04/01 11:21:46
>>361
AWEとか抜け道はあるだろ。
365:デフォルトの名無しさん
07/04/01 11:25:33
>>359
修士論文ならそれでもなんとかなる@理論化学
366:デフォルトの名無しさん
07/04/01 12:42:14
>>362
っ コールバック関数
367:デフォルトの名無しさん
07/04/01 13:38:48
Shell_NotifyIconにもNOTIFYICONDATAにも
コールバック関数を指定する所は見当たらんが
368:デフォルトの名無しさん
07/04/01 14:27:23
プロフィールなどに
Microsoft MVP for Windows SDK
とか書いてる人がいるんですが、どう言う意味なんでしょうか?
369:デフォルトの名無しさん
07/04/01 14:29:41
MVPって(藁) コピペ2回目
スレリンク(tech板)
370:デフォルトの名無しさん
07/04/01 16:24:12
しっ、見ちゃいけません
371:デフォルトの名無しさん
07/04/01 18:05:11
クライアント領域の更新にInvalidateRect(hWnd,NULL,TRUE);を使っているのですが画面がちらつきまくります。
他に良い方法はないでしょうか?
372:デフォルトの名無しさん
07/04/01 18:12:03
InvalidateRect(hWnd,NULL,FALSE);
373:デフォルトの名無しさん
07/04/01 18:23:08
>>372
ありがとうございます。
マシにはなりましたが書き直す量が多くなって間隔が短くなるとどうしてもちらつくもんですね……
374:デフォルトの名無しさん
07/04/01 18:39:51
>>373
背景を消す
新しいのを書く
これを繰り返すからちらつくんだよ。
WM_ERASEBKGNDが呼ばれているなら何もせずreturnする。
ダブルバッファリングをつかう。
方法は検索すれば見つかると思う。
要するにメモリ上で背景や絵を描画して
その完成させた絵をウィンドウに描画する。
375:デフォルトの名無しさん
07/04/01 21:36:17
カスタムリソースのPNGをHBITMAPで読み出してBITMAPと同じように扱うにはどうすればいいのでしょうか?
PNG GDI+ libpng カスタムリソース等であらかたググってみましたが理解できませんでした。
URLリンク(hp.vector.co.jp)
も試してみましたがlibpng.libに変な部分があるという旨のエラーが出て(bcc32)コンパイルできませんでした。
うぐぅ
376:デフォルトの名無しさん
07/04/01 21:45:22
全然確認してないけど後者はマングリの問題な気がする
377:デフォルトの名無しさん
07/04/01 21:50:16
>>375
エラーはコピペしろ。エスパーに期待するな。
だけど俺も>>376に一票。
そのlibpngもbccでビルドしたのか?
378:デフォルトの名無しさん
07/04/01 21:59:06
Error: 'C:\PROGRAM FILES\BORLAND\BCC55\LIB\LIBPNG.LIB' contains invalid OMF record, type 0x21 (possibly COFF)
です。すいません。
ビルドは説明通りVC++EEでやりました。それがいかんのですね。
bccならどうコンパイルしていいのかがわからなかったもので。
379:デフォルトの名無しさん
07/04/01 22:00:48
>>378
っ coff2omf.exe
380:デフォルトの名無しさん
07/04/01 22:04:12
逆にお前が書くプログラムもVC++でコンパイルすればいい。
381:デフォルトの名無しさん
07/04/01 22:13:13
>>379
コンパイルはうまくいったみたいなのでこれから実際にloadpngが使えるか試してみます。
>>380
猫で始めたんですがVC++の使い方がよくわからないんですよね。
PSDKのインストールまではやってみたんですがコンパイルもエラーでまくるし……
382:デフォルトの名無しさん
07/04/01 22:23:59
プログラム→Visual C++ 2005 Express Edition→Visual Studio Tools→Visual Studio 2005 コマンド プロンプト
コンパイラのコマンド名はbcc32ではなく、VC++ではcl。これでVC++コンパイラが使える。
コンパイラオプションも色々違うが、MSDN2を見てくれ。
383:デフォルトの名無しさん
07/04/01 22:26:56
連投すいません。
プログラム内で hBmpBackGround = LoadPng("./images/background.png"); 記述したところ
Error: 外部シンボル '_png_create_read_struct' が未解決(D:\MY DOCUMENTS\VISUAL STUDIO 2005\PROJECTS\****.OBJ が参照)
などのエラーが16個出ました。
そのままloadpng.cppをコンパイルすると
警告 W8017 loadpng.cpp 1: マクロ 'STRICT' の重複定義
エラー E2109 loadpng.cpp 123: 許されない型(関数 LoadPng(const string &) )
エラー E2108 loadpng.cpp 124: typedef 'png_color' の使い方が間違っている(関数 LoadPng(const string &) )
とかforループの行に対して
警告 W8008 ****.cpp 432: 条件が常に真(関数 ***() )
が出るので1、4、11行目はコメントアウトしています。
他の必要なファイルは***.cppと同じディレクトリです。画像は./images/以下にあります。
384:デフォルトの名無しさん
07/04/01 22:29:28
>>382
bcc32もVisual Studio 2005 コマンド プロンプトから動かしているんですが、
C:\Program Files\Microsoft Visual Studio 8\VC\INCLUDE\windows.h(28) : warning C4068: 不明なプラグマがありました。
C:\Program Files\Microsoft Visual Studio 8\VC\INCLUDE\windows.h(200) : fatal error C1083: include ファイルを開けません。'windef.h': No such file or directory
というエラーが出てコンパイルできないので仕方なくbccを使ってます……
385:デフォルトの名無しさん
07/04/01 22:44:11
英語だからって条件反射でエラー文読むの拒否してないか?
386:デフォルトの名無しさん
07/04/01 22:47:03
>>385
ではなくて、自分の作ったファイルならともかくVCの用意してるファイルでのエラーなんかどう対処すればいいんだ……
ってのとマイクロソフトへの不信感から勝手にお手上げしてる感じですね……
387:デフォルトの名無しさん
07/04/01 22:48:08
はあ?
388:デフォルトの名無しさん
07/04/01 22:51:08
面白くなってまいりました
389:デフォルトの名無しさん
07/04/01 22:55:06
>>384
なぜbcc32でVCのインクルードフォルダが現れる?
390:デフォルトの名無しさん
07/04/01 22:56:27
1つめは対処法がわからないのでとりあえず置いておいて、
2つめに関してはPSDKのincludeにあったものをVCのディレクトリにコピーしました。
とりあえずC1083になるファイルは全部コピーしたのですが
C:\Program Files\Microsoft Visual Studio 8\VC\INCLUDE\xlocale(326) : warning C4530: C++ 例外処理を使
っていますが、アンワインド セマンティクスは有効にはなりません。/EHsc を指定してください。
d:\my documents\visual studio 2005\projects\nyaopuyo\loadpng.cpp(121) : error C2664: 'memset' : 1 番
目の引数を 'std::_Vector_iterator<_Ty,_Alloc>' から 'void *' に変換できません。(新しい機能 ; ヘルプ
を参照)
with
[
_Ty=png_color,
_Alloc=std::allocator<png_color>
]
この変換を実行可能なユーザー定義変換演算子がないか、または演算子を呼び出せません。
等のエラーが多数出ます。
391:デフォルトの名無しさん
07/04/01 22:57:19
>>389
あ、それはVC++コマンドからclでコンパイルしたときのものです。
392:デフォルトの名無しさん
07/04/01 23:01:03
>>384
> bcc32もVisual Studio 2005 コマンド プロンプトから動かしているんですが
エラーメッセージの内容から言って、それはVC++のclコンパイラが出しているものだ。
bcc32じゃない。
それにしても、clがwindows.hを読んでunknown pragmaとか、
windef.hが無いだとか、明らかにおかしい状態になっているな。
インストールミスかなにかじゃないのかな。あるいはウィルスにでも
食い荒らされたか。
393:デフォルトの名無しさん
07/04/01 23:02:40
>>390
C4530はエラーではなくワーニングだが(それぐらいは区別しろ、頼むから)
clに-GXオプションを与えればよい。
2番目はあんたのユーザコードloadpng.cppの問題だろ。
394:デフォルトの名無しさん
07/04/01 23:07:32
>>390
>memset(vPalette.begin(), 0, nPal * sizeof png_color);
こんなことをやっている糞コードのようだな。
こんなコードはドブに捨ててしまえ……と言いたいところだが、とりあえず
vPalette.begin -> &vPalette[0]
とでも書き換えるんだな。
395:デフォルトの名無しさん
07/04/01 23:10:41
>>390
コピーする必要は無い。
単にPlatfrom SDKのIncludeフォルダをインクルードディレクトリに追加すれば十分だ。
396:デフォルトの名無しさん
07/04/01 23:11:39
>>393
-GXよりも警告メッセージのとおり/EHscがお勧め。
VC++ 8からGXは推奨しないというような警告が出るようになったはず。
397:デフォルトの名無しさん
07/04/01 23:15:04
コンパイルが通ったら今度は「うまく動きません。どうすればいいんでしょうか?」と長いソースを張り付ける予感。
しかし、画像のロードとセーブだけならもっと簡単なライブラリがあるんだけどなw
398:デフォルトの名無しさん
07/04/01 23:15:27
>>390
2番目のはイテレータとポインタをごっちゃにしているのが悪い。
イテレータ⊇ポインタだが、逆は成り立たない。
std::vector<png_color> v;というのがあったとしたら、
vの先頭要素へのポインタは&v[0]で取得できる。
memsetを使わずに、std::fill使えとか、vectorのメンバでどうにかしろとも言えるが。
399:デフォルトの名無しさん
07/04/01 23:19:10
みなさんありがとうございます。+゚:。(つД`)*.゚。
>>392
自分でincludeディレクトリいじったことはもちろん無いし、ウィルスも恐らく無かったので
インストールミスなんでしょうかね……
>>393>>396
仰る通りで申し訳ないです。/EHscでコンパイルを試みました。
>>394
3箇所書き換えたらエラーが
loadpng.cpp(121) : error C2064: 0 引数を取り込む関数には評価されません。
に変わりました。
>>395
そうだと思ったんですがその方法を調べるとまた時間がかかりそうだったのでその場しのぎの苦肉の策ということで……
400:デフォルトの名無しさん
07/04/01 23:23:15
>カスタムリソースのPNGをHBITMAPで読み出してBITMAPと同じように扱うにはどうすればいいのでしょうか?
>PNG GDI+ libpng カスタムリソース等であらかたググってみましたが理解できませんでした。
この質問を自分もしたかったので、成り行きに注目していたんだが。。。
401:デフォルトの名無しさん
07/04/01 23:26:04
>>399
vPalette.begin() -> &vPalette[0]
↑
かっこぬけてはるみたいやね。
もう一つも同じ要領。
402:394
07/04/01 23:26:07
>>399
悪い悪い、
&vPalette[0]()にしちゃったのか?
正しくは、
vPalette.begin() -> &vPalette[0]
だ。
403:デフォルトの名無しさん
07/04/01 23:31:35
コンパイルはできてオブジェクトファイルまでは作成できました。
ライブラリが見あたらないと出たのでSDKから根こそぎコピーしました。
MSVCRT.lib(MSVCR80.dll) : error LNK2005: _abort は既に LIBCMT.lib(abort.obj) で定義されています。
LINK : warning LNK4098: defaultlib 'MSVCRT' は他のライブラリの使用と競合しています。/NODEFAULTLIB:library を使用してください。
error LNK2019: 未解決の外部シンボル __imp__ReleaseDC@8 が関数 "struct HBITMAP__ * __cdecl LoadPng(中略) で参照されました。
等のエラー、警告が山ほど出てきました……
根こそぎコピーがマズかったのでしょうか。
404:デフォルトの名無しさん
07/04/01 23:32:24
memset(&vPalette, 0, nPal * sizeof png_color);
もしこう書いているのであれば、単にvPalette.resize(nPal)で十分なはず。
png_colorはどうせただのPODな構造体だろ。
デフォルト初期化と0クリアは同じような結果になるはず。
405:デフォルトの名無しさん
07/04/01 23:35:23
>>400
いやはや実は俺もなんだ・・・
406:デフォルトの名無しさん
07/04/01 23:36:17
もう働きたくない
407:デフォルトの名無しさん
07/04/01 23:43:26
つうか>>375のリンク先のLoadPng()って、ファイルからロードする仕様じゃん。
カスタムリソースをロードしたいんじゃなかったの?
つうかVC++持ってるんなら素直にCImage使えやってのは禁句か。
GDI+が対応してるフォーマット(PNGを含む)は全対応だし、リソースからの
ロードも出来るぞ。
atlimage.hな。
408:デフォルトの名無しさん
07/04/01 23:44:39
Express EditionにはATLないだろ。
409:デフォルトの名無しさん
07/04/01 23:47:30
ああ、Express Editionか。これは失礼。
410:375
07/04/01 23:53:23
>>407
カスタムからロードしたかったんですが、できるかどうかわからなかったのでとりあえずやってみようって感じです。
で、できないんですか……残念です。
VC++はウィンドウ表示するだけのプログラムすらコンパイルできなかったので(↑でコンパイルまでは解決)bccに乗り換えてました。
本格的にやりたいので製品版も買おうと思うんですが、製品版も今のような調子だったりしないか怖くて手が出ません。
あと、EEでも猫の本とだいぶ違っているし(猫のが古いんだと思いますが)、C++はまだ始めたてだったりするのでそれも手が出ない理由です。
ちなみに製品版買うならVisual Studio 2005 Standard Edition(Academic Edition)ですかね?
やりたいことはWINAPI(将来的にはDirectXでも)でゲーム制作です。
411:デフォルトの名無しさん
07/04/01 23:54:54
libpngはPNG_SETJMP_NOT_SUPPORTEDを指定してビルドしない限り、
longjmp()でエラーレポートを行う。
>>375のコードはsetjmp()を呼んでいないようだから、多分全く
エラーに対応していないな。
もっとマシなコードを探せ。
setjmp(), longjmp()である以上、デストラクタは実行されないから、
その区間でvectorなんぞを使うのは論外だ。
ま、CreateDIBSection, png_create_read_structあたりのキーワードで
google codesearchでもすれば、色々引っかかるだろ。
412:デフォルトの名無しさん
07/04/01 23:58:56
>>410
> 本格的にやりたいので製品版も買おうと思うんですが、製品版も今のような
> 調子だったりしないか怖くて手が出ません。
PlatformSDKはEnterprise Editionではそもそも付属してなくて自分で別途
インストール&環境設定しなきゃいけないからな。
あんたがインストールにミスったってだけの話だろ。
Visual Studioの品質の問題じゃない。
あんたに問題解決能力がないだけの話。それは、どんな製品を使おうが変わらないよ。
413:348
07/04/02 00:02:25
おながいします・・・orz
414:デフォルトの名無しさん
07/04/02 00:04:50
>>411
VC++ならSEHとの絡みでsetjmp/longjmpでも自動変数のデストラクタが呼ばれるはず
415:デフォルトの名無しさん
07/04/02 00:05:28
お前らスルー汁
416:デフォルトの名無しさん
07/04/02 00:06:03
ていうかもう、API全然関係ないなwww
417:デフォルトの名無しさん
07/04/02 00:06:38
>>414
へぇ。それはいいことを聞いた。教えてくれてありがとう。
ま、それに依存したコードは書く気になれないが……
418:デフォルトの名無しさん
07/04/02 00:07:01
何だこのスレの伸び具合は
419:375
07/04/02 00:08:05
>>411
ちょっくら頑張ってきます( `・ω・´)
>>412
了解、明日にでもVCとSDK再インスコしまつ。
>>416
サーセンwww
420:デフォルトの名無しさん
07/04/02 00:12:50
Platform SDKよりもWindows SDKのほうがお勧め。
スタートメニューの中にVS 2005への設定を行うショートカットがある。
それを実行するだけで、VSコマンドプロンプトからもIDEからも
インクルードパスの設定を含めWindows SDKを使用できる状態になる。
421:デフォルトの名無しさん
07/04/02 00:19:56
開発環境すらちゃんと構築できないような奴には無理ということで
422:デフォルトの名無しさん
07/04/02 00:25:05
>>413
取りあえず LVM_ 以下の全メッセージを調べてみろ。話はそれからだ。
423:デフォルトの名無しさん
07/04/02 00:25:22
初心者叩きはその辺にしておいて結局のところこれは誰もわからんのだね?
>カスタムリソースのPNGをHBITMAPで読み出してBITMAPと同じように扱うにはどうすればいいのでしょうか?
424:デフォルトの名無しさん
07/04/02 00:29:04
普通にLoadResourceで読んでBITMAPに変換すれば
425:デフォルトの名無しさん
07/04/02 00:33:19
EE使ってるちょちんちゃだから、PNGのリソースは妄想に過ぎないに1000ペリカ
と思ったら今日は四月馬鹿じゃんw
426:デフォルトの名無しさん
07/04/02 00:54:53
もう四月馬鹿は終了している件
427:デフォルトの名無しさん
07/04/02 00:55:13
>>423
リソースをバイナリデータとして読み取り、それをストリーム化、
Gdiplus::BitmapのIStream*を受け取るコンストラクタへ渡す。
そしてメンバのGetHBITMAPでビットマップハンドルを得る。
これでいい?
428:デフォルトの名無しさん
07/04/02 01:01:58
UpdateLayeredWindowでウィンドウを透明化させると黒色が完全透明扱いに
なっちゃうんだけどどうやったらSetLayeredWindowAttributeと同じような処理にできるかな
429:デフォルトの名無しさん
07/04/02 01:13:59
黒でもアルファ値は255にする
430:デフォルトの名無しさん
07/04/02 01:38:46
>>427
横やりでなんですが僕も気になるので実装を詳しく書いて頂けると助かります。
431:デフォルトの名無しさん
07/04/02 01:45:04
>>430
詳しくも何も、書いてあることそのままやればいいだけじゃないのか?
432:デフォルトの名無しさん
07/04/02 01:49:10
さっきから「僕も気になる」って人が多い件
433:デフォルトの名無しさん
07/04/02 01:49:14
GDI+を使うんならPNGのローディングの面倒はGDI+が見てくれる。
>>427そのままでいいはずよ。
434:デフォルトの名無しさん
07/04/02 02:01:09
Bitmap::Bitmap(HINSTANCE,WCHAR*)
使えるか知らんがこんなコンストラクタもあるみたいだ
435:デフォルトの名無しさん
07/04/02 02:39:41
TreeViewのExpandをキャンセルするにはどうしたらいいんでしょうか?
436:デフォルトの名無しさん
07/04/02 02:48:06
僕も気になってるので完全なソースコードをください
437:デフォルトの名無しさん
07/04/02 02:50:12
僕も絶対に気になります。
ソースコードお願いしますこれは絶対に必要ですね。
438:432
07/04/02 03:10:06
すまない。俺が悪かったwww
439:432
07/04/02 03:15:06
>>435
ツリーが展開される直前に親ウィンドウに
TVN_ITEMEXPANDINGが通知されるからそれを引っ掛ける
440:デフォルトの名無しさん
07/04/02 05:18:15
僕も「僕も気になります」が大杉て気になります
441:デフォルトの名無しさん
07/04/02 07:05:30
質問スレで言うのもなんだけど、>>427のレスだけでコードが書けない奴って真性のバカだろ。
442:デフォルトの名無しさん
07/04/02 07:12:51
確実に言えるのは書けなかったとしたらもはやこのスレで扱う内容ではない
443:428
07/04/02 08:24:22
>>429
SetPixelで0x00ffffffは白が表示されて0xffffffffだと透明になるから
アルファ値は読んでるみたいなんだけど、
0x00000000でも透明になっちゃうんだよ
444:デフォルトの名無しさん
07/04/02 11:37:15
>>439
ありがとうございました。
もうひとつお願いしたいんですが、
イメージインデックスを変える方法はどうしたらいいんでしょうか。
445:439
07/04/02 11:47:50
>>444
イメージリスト作ってLVM_SETIMAGELISTでSendする
446:デフォルトの名無しさん
07/04/02 11:50:33
間違えたTVM_だった
447:デフォルトの名無しさん
07/04/02 12:16:19
URLリンク(msdn2.microsoft.com)
448:デフォルトの名無しさん
07/04/02 12:26:55
猫でも分かる~でWin32プログラミングの基礎は分かりますか?
449:デフォルトの名無しさん
07/04/02 12:30:27
猫のWin32は言っちゃ悪いけどひどいコーディングしてると思う
メニューのとこ見たら右クリックごとにメニューの生成と破棄繰り返してたよ。
450:デフォルトの名無しさん
07/04/02 12:36:43
オブジェクト指向的でいいじゃん
451:デフォルトの名無しさん
07/04/02 12:37:27
>>449
そうですか・・・
本を買う金がないので、400章まであるサンプルを一つ一つ手打ちで勉強してるんですが、
ところどころ非効率なコードが書いてあるということですね。注意して読みます。
ありがとうございました。
452:デフォルトの名無しさん
07/04/02 12:38:09
方法論を学ぶ所であってコードを学ぶ所ではないと意識しておけばおk
453:デフォルトの名無しさん
07/04/02 13:25:27
効率に限らず、独学の初心者的な泥臭いコードが多い
あれは教科書ではなくノートだと考えろ
丸写しすると他人の変な癖まで取り込むことになる
454:デフォルトの名無しさん
07/04/02 13:31:01
反面教師なんだよ。
455:デフォルトの名無しさん
07/04/02 13:36:47
ついでに思うのは果たして400章までやる必要があるかどうか?
応用って言葉の意味が無いよな
456:デフォルトの名無しさん
07/04/02 13:39:28
必要な動作を追うには、再利用性を考えて効率的に使えるように書かれたコードよりも見やすい。
STLやboostのコードを逐次追うような状態を想像してみると分かりやすいだろう。
457:デフォルトの名無しさん
07/04/02 14:14:27
まぁでもなーーーーんもわかんない人にはわかりやすいとは思う。
俺も猫からプログラミング入ったクチだし。数年前の話だけど。
458:デフォルトの名無しさん
07/04/02 15:21:10
猫は雰囲気だけ掴んで詳細はMSDNって感じだな。
459:デフォルトの名無しさん
07/04/02 16:20:28
猫とMSDNの間に差ありすぎだろ
460:デフォルトの名無しさん
07/04/02 17:18:33
猫を含めたWEBサイトだけで窓プログラミングを覚えた
(正確にはMFCの本を1冊だけ買ったけど)俺でも
猫のコードを「あまり良くない」と思えるぐらいには成長した
結局>>452と>>456だと思う
461:デフォルトの名無しさん
07/04/02 17:41:54
猫はほとんど見ないで解説サイトだけで勉強したけど
猫のコードが何故よくないのかわからない俺もいますよ
まだまだ勉強不足ってことだろうか・・・
462:デフォルトの名無しさん
07/04/02 18:13:38
猫のコードは普通に醜いし
処理過程も追いにくいと思うぞ
窓初心者ならこっちのほうがお勧め
URLリンク(wisdom.sakura.ne.jp)
トピック毎のサンプルが短いから
C言語の知識なくても解説見て丸写ししてるうちに分かるはず
ちょっとバグってる所もあるけど猫ほどじゃないし
463:デフォルトの名無しさん
07/04/02 18:22:46
後学のために質問なんだけど、
GDI+とか他のライブラリ使わないで、
PNGの画像ファイルをDCに描画する方法って、
どうやればいいのか、解説してるところあったら教えてほしい。
464:デフォルトの名無しさん
07/04/02 18:30:43
libpngでテンポラリメモリ上に展開したのち、SetDIBitsToDeviceとか
DIBSectionのメモリ上に展開してBitBltとか。
OleLoadPictureしてRenderとか。
465:デフォルトの名無しさん
07/04/02 18:37:11
windowを必要としないソフトでメッセージだけを受け取られますか?
466:デフォルトの名無しさん
07/04/02 18:37:59
投げる側がPostThreadMessage使うなら、ウインドウは要らない。
467:デフォルトの名無しさん
07/04/02 18:41:35
libpngが既に外部ライブラリだと思うんだけど
そういうことでなくて?
468:デフォルトの名無しさん
07/04/02 18:42:51
>>465
エスパー回答するとシステムトレイ上のアイコンからWM_COMMANDを投げたりできる
でもこれは厳密にはWindowを作ってることと一緒
469:デフォルトの名無しさん
07/04/02 19:15:47
>windowを必要としないソフトでメッセージだけを受け取られますか?
Windowを作らずに、Windowメッセージだけを取れるか?という意味?
例えばタイマーとか
470:デフォルトの名無しさん
07/04/02 19:46:29
>>463
URLリンク(www.w3.org)
ここに詳しく書いてある。
ライブラリを使うのが嫌なら自前で実装しろ。
>>465
必用としなくても見えないウインドウを生成すればいいだけ。
知恵が足りない。
471:デフォルトの名無しさん
07/04/02 20:05:02
ダイアログに文字を表示する方法でリソースに
LTEXT "URLリンク(hogehoge)
と書けば表示されるのですが、ということは、SetDlgItemTextは
なんのために存在するのでしょうか??
472:デフォルトの名無しさん
07/04/02 20:05:34
"が抜けていました
LTEXT "URLリンク(hogehoge)です
473:デフォルトの名無しさん
07/04/02 20:08:42
他のコントロールを変更するときに使う。
もちろん、LTEXTも変更できるので、位置だけ取って、あとから必要に応じて書いたり
474:デフォルトの名無しさん
07/04/02 20:08:53
何でもかんでも静的に決まると思ったら大間違いだ
475:デフォルトの名無しさん
07/04/02 20:10:20
俺はlibpngとlibjpegとlibtiffを使って相互にフォーマット変換できるクラスを作った。
もちろん、DIBに変換できるのは言うまでもない。
いや、ただそれだけなんだけど。
476:デフォルトの名無しさん
07/04/02 20:13:35
>>473
他のコントロールを変更するとは、どういう意味なんでしょ??
477:デフォルトの名無しさん
07/04/02 20:15:12
ボタンならボタンに表示されてる文字列が変わる。
というかSetDlgItemTextを何だと思ってたんだ。
478:デフォルトの名無しさん
07/04/02 21:39:45
動的に変えたい場合
479:デフォルトの名無しさん
07/04/02 21:51:29
逆に考えるんだ
OSもダイアログテンプレートのLTEXTの文字列を読んで
SetDlgItemTextを呼び出してるのだと
480:デフォルトの名無しさん
07/04/02 22:35:56
>>470 thx. やってみる。
481:デフォルトの名無しさん
07/04/02 22:52:25
CreateDialogを使用してダイアログを表示したいのですが戻り値がNULL、GetLastErrorの値が1812
になり表示できません。
ボタンを押したときに表示したいのでメッセージループに下のように埋め込んでいるのですが。
(ShowWindowとUpdateWindowは省略しています)
case WM_COMMAND:
hDlgWnd =(ghInst, MAKEINTRESOURCE(IDD_DIALOG1), ghWndKihon, (DLGPROC)MyDlgProc);
なにか、こうじゃないの?的な物でもいいのでヒントください。
482:デフォルトの名無しさん
07/04/02 22:54:46
肝心の「CreateDialog」が抜けていますがコピペミスなのでw気にしないでくださいw
483:デフォルトの名無しさん
07/04/02 23:02:49
エラーコード1812の意味を調べりゃ一目瞭然
484:デフォルトの名無しさん
07/04/02 23:04:59
481ではないしついでに聞こうとも思っていないが、
調べてみたらなるほど一目瞭然だな。
485:デフォルトの名無しさん
07/04/02 23:11:32
Error Lookupで見ると「指定されたイメージ ファイルはリソース セクションを含んでいません。 」。
ごめん、馬鹿なんです。resource.hの中に手動で何か追加するとか、そんな感じなの?
486:デフォルトの名無しさん
07/04/02 23:16:25
EXEの中にダイアログのデータが入っていないということ。
EXE内にリソースを入れるようなことをしたか?
487:デフォルトの名無しさん
07/04/02 23:31:35
>>486
おお!VCにScript1.rcを追加したら表示されまいた!
ありがとー!
また来ますノシ
488:デフォルトの名無しさん
07/04/02 23:34:58
低脳の悪寒
489:デフォルトの名無しさん
07/04/02 23:40:12
GetLastErrorの値まで調べておきながらエラーメッセージを調べないって何なんだ・・。
490:デフォルトの名無しさん
07/04/02 23:42:36
>>487
二度と来なくていい
491:471
07/04/03 00:04:38
>>474
>>477
>>478
>>479
ありがとうございます
静的な場合はリソースに記述
動的な場合はSetDlgItemTextで記述
という感じに考えます
492:デフォルトの名無しさん
07/04/03 01:51:54
>>443
アルファ値って255が不透明のはずだったけど
493:デフォルトの名無しさん
07/04/03 02:32:04
VCのリソースエディッタでダイアログをデザイン、ラジオボタンを並べました。
グループボックス内に配置し2グループに分けたのですが
どうも両グループ同一と認識いされているようで、2個同時にオンにできません。
同時に2個オンにするにはどうすればいいのでしょうか?
494:デフォルトの名無しさん
07/04/03 02:40:07
各グループで先頭のタブオーダーを持つラジオボタンのグループプロパティをTRUEにする
495:デフォルトの名無しさん
07/04/03 02:50:36
>>494
出来ました。夜分にサンクス。
496:デフォルトの名無しさん
07/04/03 08:27:36
>>493
ラジオ1 ラジオ2 ラジオ3 で1塊、ラジオ4 ラジオ5 ラジオ6 で1塊 として
(レイアウト - タブオーダー で順序そろえてから)
「ラジオ1」 と 「ラジオ4」 のプロパティ グループ にチェック
それ以外のラジオのプロパティ グループ はアンチェック
これで望みの動作になると思われ
497:デフォルトの名無しさん
07/04/03 09:20:12
Vistaの検索を自分のプログラムから利用するための
情報へのポインタはないでしょうか?
498:デフォルトの名無しさん
07/04/03 09:32:21
はい。
499:デフォルトの名無しさん
07/04/03 11:54:20
>>492
そういえばそうだ
ますますわかんなくなってきた
500:デフォルトの名無しさん
07/04/03 12:00:45
ストリーミング放送(livedoorのネットラジオ)を録音するのに良い方法はないでしょうか?
放送をダウンロードするのではなくて、現在再生中の放送を録音するみたいなAPIとか無いものでしょうか?
ちなみに当方VB6です。
501:デフォルトの名無しさん
07/04/03 12:59:26
>>499
RGBQUAD の rgbReserved が 0 デフォルトなんだよね…
1-alpha と alpha がごっちゃごちゃだわ
502:デフォルトの名無しさん
07/04/03 13:28:06
>>500
せめてもう少しマトモな書き方ができないものか
503:デフォルトの名無しさん
07/04/03 13:52:26
LivedoorStreamingRecording()
504:デフォルトの名無しさん
07/04/03 14:01:01
>>500
物理的にライン出力と入力を線でつないで録音するといいよ。
505:デフォルトの名無しさん
07/04/03 15:08:08
>>503
探したじゃないかw
506:デフォルトの名無しさん
07/04/03 19:28:29
プログラム中で生成したカラーのビットマップをマウスカーソルに
設定するにはどうしたらいいでしょうか? マウス用のリソースを
用意せずにリアルタイムにマウスカーソルを書き換えたいのです。
507:デフォルトの名無しさん
07/04/03 19:54:33
win32APIの勉強し始めたばかりのオレが答えてみる
マウス表示を消してマウス位置を調べてそこにBMPを描画すればいいんじゃね?
508:デフォルトの名無しさん
07/04/03 19:56:48
CreateCursorしといて、WM_CURSORとかでSetCursorでなくて?
システムグローバルに書き換えたい、というなら話は別だが
509:デフォルトの名無しさん
07/04/03 20:17:44
よろしくお願いしまっす。
SetForeGroundWindow等でもフォアグラウンドになったりしない
ウィンドウってできないんでしょうか。
現在はWS_EX_NOACTIVATEをつけて、
WM_MOUSEACTIVATEにMA_NOACTIVATEANDEATを返すようにして
普通ではアクティブ化しないようになっています
具体的にはツールチップのようなウィンドウを
マウ筋の「スクロールを監視」に引っ掛からないようにしたいんですが。
当該ウィンドウ上でホイールを回転させると
アクティブ化しないまでも他のウィンドウのフォーカスを奪ってしまうんです
510:デフォルトの名無しさん
07/04/03 20:30:48
制御したい動作のはフォアグラウンド化なのか、アクティブ化なのか、フォーカス持ちなのか。
511:509
07/04/03 21:02:37
どうも。言葉が曖昧ですんません
現在アクティブなウィンドウが非アクティブにならなきゃいいんです。。
つまりアクティブ化しないように出来ませんかってことで
512:506
07/04/03 21:02:43
>>508
CreateCursorを調べてみましたが、モノクロのビットマップカーソルは
作成できるようです。今回はカラー(24bit以上か、せめて16bit以上)
のマウスカーソルを作りたいのです。
システムグローバルではなくて、自アプリのカーソルのみです。
>>507
その方法だと、自アプリの縁を少しはみ出した状態で(ホットスポットが
自アプリ内)、クライアント領域の外にマウスが描画されないです。
513:506
07/04/03 21:11:20
カラーのマウスカーソルに関しては、CreateIconIndirectっていうのを
見つけました。
514:デフォルトの名無しさん
07/04/03 21:40:59
>>512
URLリンク(msdn2.microsoft.com)
515:デフォルトの名無しさん
07/04/03 23:23:11
Response & Balance 2600cc Dohc Engine Twin Turbo
516:デフォルトの名無しさん
07/04/04 01:19:05
>>511
違う方法になるけどWS_EX_TRANSPARENTは駄目?
517:509
07/04/04 02:20:26
>>516
ありがとうございます。
マウスホイールが透過するようになりました
が、クリックも透過してしまいます。
なんか情報後出しになってしまいましたが。
518:517
07/04/04 02:36:46
>>517
WM_COMMANDを監視してマウ筋から送られてくるコマンド(message)に対して
return値をごにょごにょする
519:デフォルトの名無しさん
07/04/04 06:46:10
>>509
WM_WINDOWPOSCHANGINGでSWP_NOACTIVATEを強制的に立てる
520:デフォルトの名無しさん
07/04/04 09:52:27
マウスフックを使用したプログラムを作成しているのですが、
システムフックが上手く機能しません。以下の事例と全く同じ現象です。
URLリンク(rararahp.cool.ne.jp)
他のプログラムのソースを参考にしたいので、何かあれば教えて下さい。
お願いします。<(_ _)>
521:デフォルトの名無しさん
07/04/04 10:32:21
>>520
その先読んでみたけど仕様を勘違いしているただの間抜けにしか見えないんだが
522:デフォルトの名無しさん
07/04/04 11:56:15
ウィンドウ上にボタンを配置し、クリックで新しいウィンドウを表示するプログラムを作成しています。
クリックで呼び出される側は WM_DESTROY メッセージが来たときに
SendMessage(hWnd, WM_CLOSE, 0, 0L);
として終了しています。
で、質問なのですがクリックで表示するウィンドウのCreateWindowで取得したハンドルは
クローズしなくてもリークしませんか?
しないといけない場合、どこですればいいのでしょうか?
523:デフォルトの名無しさん
07/04/04 14:50:19
親ウィンドウが破壊されるとき、
子ウィンドウも一緒に破壊される。
524:デフォルトの名無しさん
07/04/04 17:07:22
rand()の代替ルーチンがあったら教えてください
525:デフォルトの名無しさん
07/04/04 17:17:03
CryptGenRandom
再現性で問題が出るかもしれないが。
526:デフォルトの名無しさん
07/04/04 17:17:12
Win32APIにはないから自分で作れ。
527:デフォルトの名無しさん
07/04/04 17:19:42
まあ2000以降は仕様上プロセスが終了したら基本的にオブジェクトは何も残らんけどな
528:デフォルトの名無しさん
07/04/04 23:19:10
URLリンク(r.tabelog.com)
お○んこ画像
529:デフォルトの名無しさん
07/04/04 23:51:00
お○んこ!しかも無修正!!
530:デフォルトの名無しさん
07/04/04 23:51:07
>>528
うひょ~、よだれが出てくるぜ
531:デフォルトの名無しさん
07/04/04 23:55:44
>>528
もう我慢できない
532:デフォルトの名無しさん
07/04/05 00:00:44
>>528
綺麗に処理してあるな
533:デフォルトの名無しさん
07/04/05 00:04:27
こんやのおかずにちょうどいい。くれ。
534:デフォルトの名無しさん
07/04/05 00:11:10
俺、今がちょうどこういうのが欲しくなる時間なんだ
535:デフォルトの名無しさん
07/04/05 00:11:34
>>527
終了したプロセスへのハンドルをつかんでい00る、別プロセスがあるかもしれない。
536:デフォルトの名無しさん
07/04/05 01:22:33
> つかんでい00る
00ってなんじゃらほい
537:デフォルトの名無しさん
07/04/05 02:19:39
パーマン絵描き歌を思いだした
538:デフォルトの名無しさん
07/04/05 09:51:06
ここ何スレだよw
539:デフォルトの名無しさん
07/04/05 11:19:22
プロセスの実行時間を計るのはどうしたらいいんでしょうか?
実時間じゃなくてプロセスの一部の処理に使ったユーザー時間のようなもの
が欲しいです。
PDHとやらを使うのかと思ったんですがよく分かりません。
540:デフォルトの名無しさん
07/04/05 12:15:38
>>539
timeGetTimeの差分じゃダメ?
541:デフォルトの名無しさん
07/04/05 12:20:28
GetProcessTimesじゃらめぇ?
542:デフォルトの名無しさん
07/04/05 12:49:32
>>539
>実時間じゃなくてプロセスの一部の処理に使ったユーザー時間のようなもの
>が欲しいです。
ここを詳しく。
処理に費やした時間を計測したいのか?
543:デフォルトの名無しさん
07/04/05 12:58:29
CPU時間でしょ。
>>541でおk
544:539
07/04/05 13:24:19
>>542
そうです。Unixのtimeの結果のようなものを計算したいんです。
GetProcessTimesを使ってみます。ありがとうございました。
545:デフォルトの名無しさん
07/04/05 13:46:06
モジュール内で抜けるまでどれくらい時間がかかてtるのかを計測したいなら
GetTickCountでいいような希ガス
546:デフォルトの名無しさん
07/04/05 16:01:50
すいませんWin32API入門の第72章リソースで詰まってしまいました
BorlandC++にBCCFormを入れてます
EDGEで32×32のtest.bmpを作って、アイコンとして読み込みたいんですが
LoadIcon()は分かるんですが、そこに至るまでが???で
宜しくお願いします
547:デフォルトの名無しさん
07/04/05 17:00:16
>>546
「メニュー」→「プロジェクト」→「プロジェクトに追加」
ファイルの種類を「リソースファイル (*rc)」にして、作成したrcファイルを指定する。
これだけで、後はその例通りに行けるよ。
548:デフォルトの名無しさん
07/04/05 18:21:32
>>547
レスありがとうございます
でもどうやらどつぼにはまったようで、さっぱり分かりません
.RES拡張子のファイルがないので
リソースコンパイラがよく分かってないようです
549:デフォルトの名無しさん
07/04/05 18:25:35
BorlandC++なら自前で .res にコンパイルしなくても
コンパイラが自動でやってくれる。
550:デフォルトの名無しさん
07/04/05 18:45:41
FILETIME構造体の
DWORD dwLowDateTimeと DWORD dwHighDateTime
の各ビットの意味教えてください。
年と月と日と時間が何ビットに書かれているかわかりません。
551:デフォルトの名無しさん
07/04/05 18:53:36
>>546
ビットマップファイルとアイコンファイルは別物なので
まずbmp→icoの形式変換から始めなはれ
>>550
ここがそのまんま役に立ちそう
URLリンク(wisdom.sakura.ne.jp)
552:デフォルトの名無しさん
07/04/05 18:54:25
直接ビット見たことないな
553:デフォルトの名無しさん
07/04/05 18:54:52
>>550
URLリンク(msdn2.microsoft.com)
1601年1月1日 (UTC)からの100ナノ秒単位での経過時間。
1つの64ビット整数だと見なせばよい(実際にそう扱うならアラインメントに注意)。
そういうわけでどこのビットが年とか月とかそういう性質のものではない。
だから素直にFileTimeToSystemTimeでも使っていなさい。
554:デフォルトの名無しさん
07/04/05 19:17:29
素直にfiletimetosystemtime使ったほうが早そうですね
こちらで検討してみます。
ありがとうございました
555:デフォルトの名無しさん
07/04/05 19:25:07
Notepadのように、フォームの領域一杯にEDITを表示してフォームのサイズ変更に追従させたい。
ドットネットで言う
textBox1.Dock = DockStyle.Fill;
をやりたいのですが
これってCreateWindow時にウィンドウスタイルのようなもので設定するとばかり思っていたのですが
そのような設定が見あたりません。
もしかしてウィンドウプロシージャのWM_SIZEのところで、自分でEDITのサイズを変更しないといけないんでしょうか?
556:デフォルトの名無しさん
07/04/05 19:28:14
そのまんまサイズ渡してやるだけ
557:デフォルトの名無しさん
07/04/05 19:42:20
>>549 >>541
レスありがとう
EDGEに.icon保存形式があったのでそれにしました
色々弄ってみて最後にBCCデベロッパーのDOSアイコン(コマンド実行)から
brc32 test.rc main.exe と入力したら
何とかmain.exeのアイコンだけ変えることができました
exe起動後のウィンドウタイトルバーの横のアイコンが変わらないので
また弄ってみます
558:デフォルトの名無しさん
07/04/05 19:45:32
>>557
それはウィンドウクラスのアイコンを設定すればいい
559:デフォルトの名無しさん
07/04/05 19:49:08
>>556
できました。
覚悟はしていたが本当に全部で自分でやらないといけないんだな・・。
560:デフォルトの名無しさん
07/04/05 19:55:08
>>558
この部分のことですよね? winc.hIcon = LoadIcon();
一応LoadIcon(hInstance, TEXT("KITTY") );とやってるんですがならないので
初めからやり直してみます
561:デフォルトの名無しさん
07/04/05 20:21:26
>>140
URLリンク(www.codeproject.com)
562:アイコンで聞いた者
07/04/05 21:02:27
何とか上手くやれるようになりました!
何度も聞いて申し訳なかったです
レスしてくれたみなさんありがとうございました
563:デフォルトの名無しさん
07/04/05 23:18:48
>>561
すげえw
564:デフォルトの名無しさん
07/04/06 04:31:37
デモ落としてみたけど根性ありすぎwww
565:デフォルトの名無しさん
07/04/06 10:09:34
>>561
これWin32APIで作られてるのか!?
566:デフォルトの名無しさん
07/04/06 10:13:48
>>561
軽く漏らした
567:デフォルトの名無しさん
07/04/06 11:01:24
>>565
思いっきりWTLって書いてあるじゃねえか
568:デフォルトの名無しさん
07/04/06 19:05:55
mcisend
569:デフォルトの名無しさん
07/04/06 19:10:36
VC++とplatformSDKで
mcisendcommad()でデバイスを開くときに
MCI_OPEN_PARMS構造体を使う場合でデバイスタイプにMPEGVideoを指定する事は出来るんでしょうか?
mmsystem.hにはMCI_DEVTYPE_SEQUENCERまでしか定義されてないようですが…
570:デフォルトの名無しさん
07/04/06 21:05:13
64ビット環境では___asmが使えないってのは本当なの?
571:は@c178.016.c3-net.ne.jp ◆cplnFO9T0I
07/04/06 21:30:33 BE:90784692-2BP(1000)
リストビューを使うためにLV_COLUMN構造体を定義しようとしても「定義されていない識別子です」と突っぱねられます。
VC.net20003を使っているのですが、どうすればいいでしょう。
前に痛い目を見たので#define WIN32_LEAN_AND_MEANはカットしているんですがね....
572:デフォルトの名無しさん
07/04/06 21:30:39
>>570
スレ違い
573:デフォルトの名無しさん
07/04/06 21:35:36
UNIXでの ls -a -r に相当するコードが知りたいです。
隠しファイル等を含む全てのファイルを再帰的に取得する方法を教えてください。
574:デフォルトの名無しさん
07/04/06 21:37:21
>>573
っ FindFirstFile
っ FindNextFile
っ FindClose
575:デフォルトの名無しさん
07/04/06 21:38:24
UNIX系のファイルシステムに、そもそも隠しファイルという概念など無い。
lsが勝手にフィルターしているだけ。
576:デフォルトの名無しさん
07/04/07 02:09:16
>>575
それを隠しファイルというんじゃないのか
WinだってExplorerが勝手にフィルターしてるだけだし
577:デフォルトの名無しさん
07/04/07 02:18:42
Win(というかFATとNTFS)にはファイル属性に隠しファイルビットがあるだろ
つーか質問はWindows上で隠しファイルを含めて検索する方法じゃないのか?
もう回答出てるけど
578:デフォルトの名無しさん
07/04/07 02:26:51
VC2005でダイアログボックスを作りたいのですが、どうやって作ったらいいのかわかりません。
VC2003だったらリソースの追加でできたのですがorz
ググッてみましたがわかりませんでしたので、教えてもらえると助かります。
579:デフォルトの名無しさん
07/04/07 02:56:36
>>578
Express Editionにはリソースエディタは付属しないので作れない。
別途にリソースエディタを用意するべし。
580:デフォルトの名無しさん
07/04/07 03:04:14
リソースエディタとはなんですか?
リソースの作り方すらわからない(´・ω・`)
581:デフォルトの名無しさん
07/04/07 03:07:18
これだからVCはオススメできない。
とりあえず、今までに作ったプロジェクトの拡張子が.rcの奴をテキストエディタで開け
582:デフォルトの名無しさん
07/04/07 03:12:15
開きましたー!!
583:デフォルトの名無しさん
07/04/07 03:13:34
>>580
2003で作ったときには開発環境でダイアログボックスを作れたでしょ?
あれは内部的にリソースエディタと呼ばれるツールを呼び出してただけなの
んでExpress Editionではその機能が削除されてるので作ることができない。
作ることができないといってもVCの開発環境で作ることができないだけで
リソースをプログラムから読み込むといったことは可能なので
フリーソフトのリソースエディタでダイアログを作るしかない、ってこと
584:デフォルトの名無しさん
07/04/07 03:20:29
>>583
親切にありがとう。
585:デフォルトの名無しさん
07/04/07 07:52:10
リソースって言っても二種類の意味で使われてない?
バイナリで書かれたリソースとテキストで書かれたのリソース
どう呼び分ければいいんだろう??
586:デフォルトの名無しさん
07/04/07 07:52:42
「書かれたリソース」の間違い
587:デフォルトの名無しさん
07/04/07 08:17:00
っ「リソーススクリプト」
588:デフォルトの名無しさん
07/04/07 08:19:44
リソース
├フォーマットがテキストの
└フォーマットがバイナリの
589:デフォルトの名無しさん
07/04/07 09:02:01
コンパイル済みリソースがバイナリリソース。
590:デフォルトの名無しさん
07/04/07 17:13:30
テキストのリソースファイル(.rcファイル)+バイナリ(画像など)を
リソースコンパイラでコンパイルして .res ファイルをつくり
リンカで EXEにバインドする。直接.resを編集するツールもある。
591:デフォルトの名無しさん
07/04/07 21:12:44
僕ハッカー
592:デフォルトの名無しさん
07/04/07 21:15:17
僕バッカー
593:デフォルトの名無しさん
07/04/07 21:17:57
バカバッカー
594:デフォルトの名無しさん
07/04/07 21:18:00
バカばっかー
595:デフォルトの名無しさん
07/04/07 21:57:10
けこん
596:デフォルトの名無しさん
07/04/08 02:15:51
winAPIでテキストエディタに文字列を書き込んで保存したいのですが、どのようにしたらよいですか?
VC使って組んでいます。
597:デフォルトの名無しさん
07/04/08 02:18:20
意味が分からんな
外部のテキストエディタに文字を送り込むのか?
自前でテキストエディタを作るのか?
…単にテキストエディタじゃなくてテキストファイルってオチか?
598:デフォルトの名無しさん
07/04/08 04:21:34
普通にfopen、fwrite?
599:デフォルトの名無しさん
07/04/08 07:55:34
他のアプリケーションのウインドウの座標と大きさを取得するにはどうすれば良いですか?
また、座標と大きさを指定するにはどうすれば良いですか?
600:デフォルトの名無しさん
07/04/08 08:00:51
GetWindowRect
MoveWindow
プロセス跨いで使えたかはシラネ
春 の 香 り 乙 !
601:デフォルトの名無しさん
07/04/08 08:51:32
>>600
ありがとうございました
602:596
07/04/08 10:28:48
>>597
テキストファイルの間違いでしたw
603:デフォルトの名無しさん
07/04/08 13:44:29
マウスフックについての質問です。MOUSEHOOKSTRUCT構造体の内容を
フックプロシージャから他のウィンドウプロシージャへ渡したいのですが、
上手くいきません。フックプロシージャのコードは次の通りです。
LRESULT CALLBACK HookProc(int nCode,WPARAM wp,LPARAM lp)
{
COPYDATASTRUCT cds;
if (nCode < 0) CallNextHookEx(hHook,nCode,wp,lp);
cds.dwData = wp;
cds.cbData = sizeof(MOUSEHOOKSTRUCT);
cds.lpData = (PMOUSEHOOKSTRUCT)lp;
SendMessage(hWnd,WM_COPYDATA,NULL,(LPARAM)&cds);
return CallNextHookEx(hHook,nCode,wp,lp);
}
間違いがあれば指摘して下さい。又、参考になるソースがあれば教えて下さい。
お願いします。<(_ _)>
604:デフォルトの名無しさん
07/04/08 13:54:02
相手が別プロセスなら自メモリ領域のポインタを渡しても無意味。
相手のメモリ内に領域を確保してそのポインタを渡す。
605:デフォルトの名無しさん
07/04/08 14:12:44
Windows XPでのCPU使用率の取得方法を教えてください
606:603
07/04/08 14:19:45
>>604
そのためにWM_COPYDATAメッセージを使用しています。ファイルマッピングオブジェクトの
内容を参照するので、メモリを共有する必要は無いと思ったのですが。
URLリンク(yokohama.cool.ne.jp)
607:デフォルトの名無しさん
07/04/08 14:22:09
>>603
その中だとhWndが一番怪しい。
SendMessageするときにhWndにちゃんとした値が入ってる?
608:603
07/04/08 14:36:11
問題ありません。
「猫でもわかる」の162章のように、フックプロシージャ内での処理には成功しました。
609:デフォルトの名無しさん
07/04/08 14:49:03
そもそもうまくいかないって何が巧くいってないんだ?
WM_COPYDATA が hWnd の WindowProc に来ないのか、来た WM_COPYDATA からデータが取れないのか
610:603
07/04/08 15:00:54
>>609
WM_COPYDATAメッセージは届くのですが、COPYDATASTRUCT構造体の内容の参照が上手くいきません。
フックは次のようにセットしています。
#define EXPORT __declspec (dllexport)
#pragma data_seg(".shared")
static HHOOK hHook = NULL;
static HWND hWnd = NULL;
#pragma data_seg()
EXPORT HHOOK SetHook(const HWND hCaller)
{
hWnd = hCaller;
hHook = SetWindowsHookEx(WH_MOUSE,(HOOKPROC)HookProc,hInst,0);
return hHook;
}
ウィンドウプロシージャでは次のように処理しています。
case WM_COPYDATA:
if (((PCOPYDATASTRUCT)lp)->dwData == WM_NCLBUTTONDOWN) {
pmhs = (PMOUSEHOOKSTRUCT)lp;
if (pmhs->wHitTestCode == HTCAPTION) {
SetWindowText(pmhs->hwnd,"猫でもわかるフック");
}
}
break;
611:デフォルトの名無しさん
07/04/08 15:22:04
>>610
> pmhs = (PMOUSEHOOKSTRUCT)lp;
pmhs = (PMOUSEHOOKSTRUCT)((PCOPYDATASTRUCT)lp)->lpData;
だろ常識的に考えて
612:603
07/04/08 15:38:41
>>611
すみません。ウィンドウプロシージャの処理を訂正します。(^_^;)
PCOPYDATASTRUCT pcds;
PMOUSEHOOKSTRUCT pmhs;
case WM_COPYDATA:
pcds = (PCOPYDATASTRUCT)lp;
pmhs = (PMOUSEHOOKSTRUCT)(pcds->lpData);
if (pcds->dwData == WM_NCLBUTTONDOWN) {
if (pmhs->wHitTestCode == HTCAPTION) {
SetWindowText(pmhs->hwnd,"猫でもわかるフック");
}
}
break;
ローカルフックには成功したのですが、グローバルフックに失敗します。
613:デフォルトの名無しさん
07/04/08 16:03:20
SetWindowText が気になって仕方ないが、
WindowProc 内での pcds->dwData とか pmhs->wHitTestCode とかはどうなんだ?
正しい値を示してるのか?
614:603
07/04/08 16:46:12
他のアプリケーションにフックDLLがロードされていることは確認できたのですが、
COPYDATASTRUCT構造体の内容が空のようです。
615:デフォルトの名無しさん
07/04/08 18:41:35
URLリンク(msdn.microsoft.com)
> ほかのプロセス内のコントロールのテキストを設定するには、SetWindowText 関数を
> 呼び出すのではなく、直接 WM_SETTEXT メッセージを送ります。
何でフックがうまくいってないと思い込めるんだかさっぱり分からん。
明らかに間違ってたソースも「訂正します」の一言で済まされるし。
616:603
07/04/08 18:54:38
あたながたが思いのほか低スキルだったのでがっかりしています。
2ちゃんもたいしたことないですね。
617:デフォルトの名無しさん
07/04/08 18:56:30
↓真603による「616は私ではありません」というレス
618:デフォルトの名無しさん
07/04/08 18:56:33
615は無視かよ
619:603
07/04/08 19:50:46
>>615
SendMessage(pmhs->hwnd,WM_SETTEXT,0,(LPARAM)"猫でもわかるフック");
としたのですが、ウィンドウタイトルは変更されません。
間違ったソースを掲載したことについては深くお詫びします。大変申し訳ありませんでした。
620:デフォルトの名無しさん
07/04/08 20:43:43
>>619
dll.defに
SECTIONS
.shared SHARED READ WRITE
が有るか確認するとか
char sz[100];
wsprintf(sz, "pmhs->hwnd:%p ", pmhs->hwnd);
SetWindowText(hWndExe, sz);
として様子を見るとか
621:デフォルトの名無しさん
07/04/08 23:19:23
うまくいかないときには何がおきてるのかを見極めて原因究明。
期待通りにいくかいかないかだけを判断してたらいつまでたってもなおらん
622:デフォルトの名無しさん
07/04/09 00:44:15
デバッガ使ってないのかね?
1ステップずつ確認すれば、問題点はすぐに分かると思うが。
623:デフォルトの名無しさん
07/04/09 00:47:43
フックプロシージャのステップ実行なんて出来るの?
624:デフォルトの名無しさん
07/04/09 01:14:11
フック先のプロセスにアタッチしろ。
625:デフォルトの名無しさん
07/04/09 10:09:06
別にデバッガ使わなくてもログをファイルに書き出せばいいだけだし
626:603
07/04/09 10:33:11
>>620-624 レスありがとうございます。
>>620 モジュール定義ファイルは作成済みです。内容は次の通りです。
LIBRARY hook
SECTIONS
.shared READ WRITE SHARED
EXPORTS
HookProc @1
ResetHook @2
SetHook @3
pmhs->hwndの値をウィンドウプロシージャ内で出力したところ、
ローカルフックでは00060AA2でした。グローバルフックでは何も出力されませんでした。
グローバルフックではWM_COPYDATAメッセージが届いていないようです。(^_^;)
>>622 デバッガは使用していません。OutputDebugStringを使って変数の値をトレースしています。
>>623 プロセス間を跨いだデバッグ作業はどのように行うのでしょうか?
>>624 明示的にアタッチする方法があるのですか?
>>621 今までの状況を整理してみました。
・ローカルフックには成功し、グローバルフックには失敗する。
・ローカルフックの場合、フックDLLがロードされ、WM_COPYDATAメッセージが届く。
・グローバルフックの場合、フックDLLはロードされるが、WM_COPYDATAメッセージは届かない。
627:デフォルトの名無しさん
07/04/09 11:00:13
WindowsXPの[ユーザのログオフ]-[ユーザー切替]-[指定したユーザーのログオン]
という作業をプログラムから操作したいんですけど可能でしょうか?
可能なら使用するAPIを教えて頂けないでしょうか?
628:デフォルトの名無しさん
07/04/09 11:05:12
不可
629:627
07/04/09 11:11:17
やっぱりですね
即レスありがとうございました。
630:デフォルトの名無しさん
07/04/09 11:31:48
>>627
Ginaで何とかなるでしょ。Ginaでぐぐってみたら?
631:デフォルトの名無しさん
07/04/09 11:40:23
>>627
レジストリに自動ログオンの設定を書き込んで再起動
632:デフォルトの名無しさん
07/04/09 11:58:25
>>626
プロセスにアタッチするのははDLLをデバッグする場合の基本操作なんだが、
そんな当たり前のことを自分で調べられないのか?
633:デフォルトの名無しさん
07/04/09 14:27:57
グローバルフック成功してないんじゃね?
634:デフォルトの名無しさん
07/04/09 15:14:14
Windowsで標準入力や出力がリダイレクトされてるかどうか知る方法を教えてください。
635:デフォルトの名無しさん
07/04/09 15:56:31
現在VS2005を使っているのですが、作成してるネイティブアプリのVisualStyleを切るにはどの様な方法がよろしいでしょうか?
よろしくお願い致します。
636:デフォルトの名無しさん
07/04/09 16:28:21
まにふぇすとぶっこわす
637:デフォルトの名無しさん
07/04/09 17:01:54
むしろバージョン5のcomctl32.dllを使うようにマニフェスト書け
638:デフォルトの名無しさん
07/04/09 17:27:19
>>626
コードを一から書いたら、グローバルフックでもタイトルバーが変わった。
期待した動作にならなかったら、一から作り直すのも手かと。
つか、サンプルコードのコピペはおすすめできない。
639:デフォルトの名無しさん
07/04/09 18:06:07
>>636-637
レスありがとうございます。
というか何か勘違いしてました。。
VS2005では勝手に有効になると思ってましたがならないんですね・・・
この前作ったときはなってたような・・・気のせいか・・・orz
640:デフォルトの名無しさん
07/04/10 00:34:29
ツリービューのノードのアイコンを一つだけ変える場合って
どうすればええすか?
Expandしたら広がったフォルダを表示とか。
641:デフォルトの名無しさん
07/04/10 08:34:36
TVM_SETIMAGELIST で ImageList セット
TVM_SETITEM での fMask に TVIF_IMAGE|TVIF_SELECTEDIMAGE なり TVIF_STATE なり...
642:デフォルトの名無しさん
07/04/10 12:49:04
USBリムーバブルハードディスクのデバイス識別子?(USB\Vid_04xx&Pid_10xx)とかから
割り当てられている論理ディスクのボリューム名を取得したいのですが
どの辺を参照したらいいでしょうか。
「管理ツール」→「ディスクの管理」で下側ビューの左側「ディスクn」を右クリックしてプロパティを表示させて、
「ボリューム」プロパティーシートの下側リストビューに表示されているものが欲しいです。
643:デフォルトの名無しさん
07/04/10 16:50:17
SetMenuContextHelpIdに渡す「ヘルプコンテキスト識別子」ってなんなんですか?
「ヘルプコンテキスト」ってリソースで用意するんでしょうか?
それってどのような物で,どうやって作るんでしょうか?
644:デフォルトの名無しさん
07/04/10 18:08:33
Win32API を使って、DLL 中のダイアログリソースの PUSHBUTTON の文字列を取得することはできますでしょうか?
FindResource -> LoadResource -> LockResource まではできましたが、文字列の取得が分からない。
645:デフォルトの名無しさん
07/04/10 18:31:28
自分で解析
646:デフォルトの名無しさん
07/04/10 21:03:23
>>643のレスで思ったのだが、そーいや、2005からののヘルプはどうなんお?
昔は、HTML Help Workshopとかゴリゴリ作ったが?
URLリンク(msdn.microsoft.com)
ここでいいっけ?
それとも、暗黙でツールが入ってるのかな?
647:デフォルトの名無しさん
07/04/10 21:10:22
ゲームプログラムで質問ですwin32apiの関数を使うよりdirectxを使った方が画像の描画は早いですか
648:デフォルトの名無しさん
07/04/10 21:18:57
>>647
ちなみに、何系ゲーム?
649:デフォルトの名無しさん
07/04/10 21:30:43
シューティング系ゲームです。既にwin32apiで作ったのですが画面のスクロール速度を一定以上にあげるとフレームスキップが起こるです。
650:648
07/04/10 21:38:04
>>649
画面更新に速度を要求するなら、
DirectXなんじゃね?
DirectX~系の別スレがよろしいかと・・・
651:デフォルトの名無しさん
07/04/10 22:52:12
>>644
MSDN に PEFILE.cpp というサンプルがあって、.exe/.dll の先頭から
.rsrc section を割りだし、section 内のテーブルを追い掛けると、
個々の rsrc leaf に行き付ける例があったと思う。
dialog template の構造は MSDN に説明があった。
ただ、これらを取り出したり、差し替えたりするのに、ファイルとして
開く際、使用中だと開けないことがある。開く際の属性を指定すると
可能なのかも知れないが。
652:デフォルトの名無しさん
07/04/10 23:30:31
>651
いや、メモリに一度読み込めば問題なし。
昔、ダイナミックにダイアログリソース作ったときはそうやったよ。
653:デフォルトの名無しさん
07/04/10 23:36:48
GetCommandLine関数を利用する場合、
みんあは〝や空白の分割とかどしてる?
思いつき関数作ったけど、意見求む。
654:653
07/04/10 23:38:46
前半
DWORD OrderCommandLine(LPTSTR lpBuffer, LPDWORD lpcchBuffer)
{
DWORD i, dwLen, dwPos, dwCnt, dwDiv;
TCHAR tcChr;
TCHAR szCmd[0xFFFF];
TCHAR szDmy[0xFFFF];
int fDQ;
LPTSTR lpszCur;
/* 初期化 */
::lstrcpy(szCmd, ::GetCommandLine());
dwLen = (DWORD)::lstrlen(szCmd);
szCmd[dwLen++] = _T('\0');
/* 捜査 */
for (i = 0, dwPos = dwDiv = 0, fDQ = 0, lpszCur = szCmd; i < dwLen; i++, lpszCur++){
tcChr = *lpszCur;
if (tcChr == _T('\"')){
fDQ = !fDQ;
}else
if ((!fDQ) && (tcChr == _T(' '))){
tcChr = _T('\0');
}
szDmy[dwPos++] = tcChr;
if (tcChr == _T('\0')){
dwDiv++;
}
}
szDmy[dwPos++] = _T('\0');
655:653
07/04/10 23:39:39
後半
/* 整理 */
dwCnt = 0;
if (dwDiv > 0){
for (i = 0, dwPos = 0, lpszCur = szDmy; i < dwDiv; i++, lpszCur++){
dwLen = (DWORD)::lstrlen(lpszCur);
if (dwLen > 0){
::lstrcpy(&szCmd[dwPos++], lpszCur);
lpszCur += (dwLen);
dwPos += (dwLen -1);
szCmd[dwPos++] = _T('\0');
dwCnt++;
}
}
szCmd[dwPos++] = _T('\0');
}
/* 結果 */
if (lpcchBuffer){
if (*lpcchBuffer >= dwPos){
*lpcchBuffer = dwPos;
if (lpBuffer){
::CopyMemory(lpBuffer, szCmd, dwPos * sizeof(TCHAR));
}
}
}
return dwCnt;
}
656:653
07/04/10 23:42:59
DWORD OrderCommandLine(LPTSTR lpBuffer, LPDWORD lpcchBuffer)の
LPTSTR lpBufferはバッファ
LPDWORD lpcchBufferはlpBufferのサイズ(文字単位)の入った変数のポインタ
んでOrderCommandLineは分割した数を返す。
どっかおかしいとこない?
657:デフォルトの名無しさん
07/04/10 23:48:04
自作せずにCommandLineToArgvWを使ったほうが楽なのでは?
658:653
07/04/11 00:01:57
>>657
CommandLineToArgvW関数はしりませんですた... orz
調査してみますね。
659:デフォルトの名無しさん
07/04/11 00:07:01
main関数のargc, argvは駄目なの?
main関数から始まるけどコンソールプログラムでないというのは変わっているかもしれないけど。
660:デフォルトの名無しさん
07/04/11 00:13:42
boostにコマンドライン解析があった希ガス
661:デフォルトの名無しさん
07/04/11 00:25:19
>>659
WinMain関数のLPSTR lpszCmdLine問題があったので、
片手間で作成してみました。
そりゃ、_tmain関数みたいなのが、一番いいですが。
>>660
URLリンク(www.boost.org)ですよね?
ここも見てみます。
662:デフォルトの名無しさん
07/04/11 00:25:41
__argv,__argcとかいうのもあったような
663:デフォルトの名無しさん
07/04/11 00:43:11
Googleからも出てる。
URLリンク(code.google.com)
664:デフォルトの名無しさん
07/04/11 03:12:11
CommandLineToArgvW以外はスレ違いじゃね?
>>661
_tWinMain
VC++以外や、VC++でもバージョンによっては存在しないみたいだが
その場合はGetCommandLineW
つーかCommandLineToArgvWは_tmainが存在しなかったバージョンのVC++で
GetCommandLineWと組み合わせて使うために提供されていた(だからW版しかない)ので
665:653
07/04/11 08:17:09
>>664
情報ありがとうございます。
へー_tWinMain関数ってあるんですかー。
特に変な意識して、関数作る必要もなかったのかな?
一回、整理して考え直してみます。
皆様ありがとうございました
666:デフォルトの名無しさん
07/04/11 08:55:12
>>644
不可視でダイアログ開いて、GetDlgItemText()したら?
667:デフォルトの名無しさん
07/04/11 11:33:08
CSV(カンマテキスト)を分割するAPIを教えてください
668:デフォルトの名無しさん
07/04/11 11:59:02
ない
669:デフォルトの名無しさん
07/04/11 12:55:54
ウィンドウズの起動時間(timeGetTimeやGetTickCountで返される数値)を変更する方法ありますか?
DirectShow辺りが怪しいので
デバッグで24日間放置した状態にしたいのです
670:デフォルトの名無しさん
07/04/11 13:05:35
>>669
hookして、好きな値返すとか?
671:デフォルトの名無しさん
07/04/11 13:13:31
>>668
ADO等で出来なくもない気もするが
672:デフォルトの名無しさん
07/04/11 13:45:05
猫でもわかる・・の第10章タイマーで、コーディングして実行したところ、
一応動くのですが、文字列が再描画されず、字が重なったようになって
しまいます。この場合、うまく表示するにはどうしたらよいでしょうか?
よろしくお願いします。
673:デフォルトの名無しさん
07/04/11 13:56:55
大学院レベルの猫にしかわからないってことだね
674:672
07/04/11 13:57:59
↑で質問したものです。
InvalidateRect(hWnd, NULL, FALSE);
こいつを
InvalidateRect(hWnd, NULL, TRUE);にしたらなおった。
でも載ってるのは最初のほうですよね。
なんかほかに方法があるのかなぁ
675:デフォルトの名無しさん
07/04/11 14:01:28
つ SetBkMode
676:672
07/04/11 14:04:28
>>675
実装済みです
677:デフォルトの名無しさん
07/04/11 14:14:29
前と同じ幅の文字で上書きしてないとか
678:デフォルトの名無しさん
07/04/11 14:33:38
>>676
TRANSPARENT で描画、リクエストをInvalidateRect(...FALSE) にしてたら
672 のように多重の重ね書きになるわけだが?
まぁ、OPAQUEにしたところで、文字列の実描画長が短くなったら
なんらかの方法で背景色で消すコードを書くはめにはなるがね
679:デフォルトの名無しさん
07/04/11 14:34:58
fillrect
680:デフォルトの名無しさん
07/04/11 14:41:57
ExtTextoutを結構多用したなあ
681:デフォルトの名無しさん
07/04/11 16:34:21
質問です。
親のウインドウとは独立した子ウインドウで、親よりは必ず前面に。
ただし他のアプリのウインドウがより前面にある時は(親ともども)きちんとそのウインドウの背面に。
というウインドウをCreateWindowExで簡単に作ることはできないでしょうか。
・子ウインドウは、親ウインドウの中に存在するわけではない(つまりWS_CHILDではない?)
お絵かきツールのパレットウインドウなんかがこんな感じ。
・WS_EX_TOPMOSTにすると、他のアプリのウィンドウよりも前にきてしまう
682:デフォルトの名無しさん
07/04/11 16:45:13
殆ど自分で答え言っているような気がす…
親をオーナーにして (WS_CHILD と排他な)WS_POPUP で作れば良いんじゃない?
683:デフォルトの名無しさん
07/04/11 16:46:37
>>681
WS_POPUPとWS_EX_TOOLWINDOWつけてみたらどう?
684:デフォルトの名無しさん
07/04/11 16:51:40
>>681
URLリンク(msdn.microsoft.com)
>A window can own, or be owned by, another window. An owned window always appears in front of its owner window,
>is hidden when its owner window is minimized, and is destroyed when its owner window is destroyed.
685:デフォルトの名無しさん
07/04/11 16:56:53
URLリンク(msdn.microsoft.com)
Owned Windowsのところをよく読め
686:デフォルトの名無しさん
07/04/11 17:00:46
日本語でおk
687:デフォルトの名無しさん
07/04/11 17:12:48
アドバイスありがとうございます。
とりあえずWS_CHILDとWS_POPUPは共存できないようです。
D-Pixedのツールウインドウが同じ実装になっていたのを思い出し、Spy++で覗いてみました。
>>683さんの言うとおりのオプションを使っていましたが、それが原因で望んだ挙動をしているわけではないようです。
とりあえず下記を、親と子両方に入れてやったところ上手く狙った挙動ができているようです。
なので問題ないといえばないのですが、より上手い方法があれば教えていただけると幸いです。
if (WA_INACTIVE != wParam)
{
::SetWindowLong(hChildWnd, GWL_EXSTYLE, WS_EX_TOOLWINDOW | WS_EX_TOPMOST);
::SetWindowPos(hChildWnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE | SWP_NOACTIVATE);
}
else
{
::SetWindowLong(hChildWnd, GWL_EXSTYLE, WS_EX_TOOLWINDOW);
::SetWindowPos(hChildWnd, hParentWnd, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE | SWP_NOACTIVATE);
::SetWindowPos(hParentWnd, hChildWnd, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE | SWP_NOACTIVATE);
}
688:デフォルトの名無しさん
07/04/11 17:13:57
他アプリウィンドウ - オーナー - ポップアップ - (最前面) で
他アプリウィンドウをタスクバーのクリックでアクティブにすると、
オーナー - 他アプリウィンドウ - ポップアップ - (最前面)
ってなることがあるんだよなあ。
Alt+Tabだと発生しないけど、なんだかなあと思う。
689:デフォルトの名無しさん
07/04/11 17:25:44
>>687
共存できないとわざわざ書いたのはなぜ?
もしかして>>682を誤解してる?
690:デフォルトの名無しさん
07/04/11 17:29:41
>>687
>より上手い方法があれば教えていただけると幸いです。
そういうウィンドウはOwned Windowと言います。>>685のリンク先を読んでください。
691:デフォルトの名無しさん
07/04/11 17:29:47
…なぜに SetWindowLog & SetWindowPos なんだ?
CreateWindowEx でのスタイル指定で解決できるのに…
ターゲットの窓が他プロセスの持ち物なのか?
692:デフォルトの名無しさん
07/04/11 17:32:35
>>689-691
すいません、682さんを誤読した上に、685さんのレスとレスがすれ違いました。
WS_POPUPとは、親ウインドウを持つウインドウのことだったのですね。
正直、オーバーラップウインドウと、ポップアップウインドウの区別がわからず
今ググっていて682さんの文章に対する誤読に気づきました。
685さんのリンク先を実践してみます
693:デフォルトの名無しさん
07/04/11 17:50:25
解決できました。
WS_POPUPの解説である「ポップアップウインドウを作成する」の「ポップアップウインドウをはなんぞや?
という知識が無かったのが問題でした。
ポップアップウインドウそのものが、私の望んでいたもののようです。
WM_ACTIVEなどをまったく使わずWS_POPUPを指定しただけで解決できました。
ありがとうございました。
694:デフォルトの名無しさん
07/04/12 00:43:50
DOS窓で、CreateWindowてどうやるの?
メッセージループとか。
695:デフォルトの名無しさん
07/04/12 00:53:29
どうやってやるも何も普通に出来るだろ。
いったい何を言っているんだ?
696:デフォルトの名無しさん
07/04/12 01:40:30
>>694
日本語でおk
697:デフォルトの名無しさん
07/04/12 03:17:19
ソースコードを読んで勉強したいのですが、C言語 + Win32 API で書かれたオープンソースのアプリケーションでお薦めって何かありますか?
実践的なコードの書き方を勉強したいので、お手本になりそうなアプリがあったら教えてください。
また逆に、「このソフトの書き方は真似するな」的なのもあれば教えて頂けると有り難いです。
宜しくお願いします。
698:デフォルトの名無しさん
07/04/12 04:13:51
> お薦めって何かありますか
猫でもわかる
> このソフトの書き方は真似するな
猫でもわかる
699:デフォルトの名無しさん
07/04/12 04:16:14
>>698
禿道と言わざるを得ない
700:デフォルトの名無しさん
07/04/12 07:39:02
あまりにも禿同杉てワラタw
701:デフォルトの名無しさん
07/04/12 08:18:22
ヒントにはなるが真似は出来ない
702:デフォルトの名無しさん
07/04/12 09:19:39
左右分割ウインドウをMFCを使わずに作っているのですが、相談させてください。
まず、ウインドウ全体を親ウインドウとします。
子ウインドウとして
「左側用にWS_THICKFRAMEを使ったウインドウをちょっと大きめに作って配置」
「右側に余り部分の大きさ分のウインドウ」
を貼り付けて実現しています。
左側用のウインドウの大きさが変化するたびに、右側のウインドウの大きさも変更されるようにしています。
ただ、WS_THICKFRAMEは角の近くだと「マウスドラッグで縦横の大きさを変えられる」モードになってしまいます。
まず「横の大きさしか変えられないウインドウ」は作れないのでしょうか?
それをさせないために今は「上下に大きめに作る」ようにしているのですが(角付近を触れないように)、ウインドウはデスクトップウインドウのサイズより大きくは作れないようです(?)。
そのため親ウインドウをデスクトップ画面並に大きくされてしまうと困ってしまいます。
何か対策はありませんでしょうか?
左右ができれば、上下はその応用で作成可能だと思います。
703:デフォルトの名無しさん
07/04/12 09:30:11
>>702
左右の境界に少し隙間を開け、そこをドラッグすると左右に大きさが変わるようにする。
というようにMFCはなってたと思う。
704:デフォルトの名無しさん
07/04/12 09:47:03
>>703
なるほど。つまり自前でドラッグシステムを作っているわけですね。
WS_THICKFRAMEを使った方法も、この斜め問題さえ解決すれば実用に耐えるのですが…。
とはいうものの、WM_SIZEを捕まえて上下の大きさが変更されたら強制的に元に戻す処理は入れています。
ただそれは格好悪いもので、もし良い方法があればと思って相談しにきました。
705:デフォルトの名無しさん
07/04/12 10:44:16
WM_GETMINMAXINFO捕まえたらどうだろう
MFCしか使ってないんで良く分からないけど
706:デフォルトの名無しさん
07/04/12 11:34:55
>>705
できました!
まったく知らないWMでした。ありがとうございます。
これで
tagMINMAXINFO *p = (tagMINMAXINFO*)lParam;
p->ptMaxTrackSize.y += 128;
としてやることで、デスクトップサイズよりでかいウインドウを作ることに成功。
期待通り動作できるようになりました。
707:デフォルトの名無しさん
07/04/12 11:48:53
>>702,706
WM_NCHITTESTを捕まえてDefWindowProc()が
HTTOP,HTBOTTOM,HTTOPLEFT,HTTOPRIGHT,HTBOTTOMLEFT,HTBOTTOMRIGHTのときだけ
もみ消してしまう方がいいのでは?
708:デフォルトの名無しさん
07/04/12 11:53:52
スクリーンショットを撮るAPIってありますか
709:デフォルトの名無しさん
07/04/12 12:00:33
>>707
ウィンドウの四隅(スプリットバーの端っこ)が使えなくなるんでお薦めできない
それで無効になる領域って結構大きいし
710:デフォルトの名無しさん
07/04/12 12:02:23
>>708
GetDC
711:デフォルトの名無しさん
07/04/12 12:29:16
>>709
言われてみれば確かに…。16*16ほどか。
なら、座標計算して嘘の値を返すなんてのはどう?
例えば、DefWindowProc()がHTBOTTOMRIGHTの場合で
マウスが右の方にあるときはHTRIGHTを返し、下の方にあるときは0を返すとか。
712:デフォルトの名無しさん
07/04/12 12:35:13
>>710
その答えで>>708が報われる事は絶対に無いだろう
713:デフォルトの名無しさん
07/04/12 12:36:19
>>707
そこまでするぐらいなら普通に>>706でいいと思うんだが…
まあどっちみちWM_NCHITTESTは使うんだけど。
例えば左右に動くスプリットバーがあったとして、
その端っこにポインタを合わせたら斜め向いたカーソルが出るんじゃ
格好がつかないんで
HTTOPLEFTを受け取ったらHTLEFTを返す、みたいなことをする
714:デフォルトの名無しさん
07/04/12 12:37:31
なんかアンカー間違えたり誤読したりで嫌になってきた
715:デフォルトの名無しさん
07/04/12 12:40:03
適当にぐぐったらすぐサンプルコードが見つかったんで、ついで。
>>708
URLリンク(www13.plala.or.jp)
716:デフォルトの名無しさん
07/04/12 13:10:09
>>713
斜め向いたカーソルがでないように、上下64ドットずつ大きいウインドウを作りました
717:デフォルトの名無しさん
07/04/12 17:35:48
普通は自前で全部やるものだよ。作り直したほうがいい。
718:デフォルトの名無しさん
07/04/12 18:12:40
>>717
______ _ _| ̄|_ _ _
|____ | | | 口口 |_ _| \\ | | __ __ __
/ / | | | | _  ̄ ___ | | |__| _| |_| |_
/ / | | _ | | _| |_ |___| | | |_ _ _\
| | | \_/ / / / /。 _| | | ___ .| |.|__|/ /
\\ \ /  ̄ \/ | | |___| |__|  ̄
 ̄  ̄ ̄  ̄
719:デフォルトの名無しさん
07/04/12 18:30:06
>>702
Splitterなんて死ぬほどサンプルあるよ
URLリンク(www.codeguru.com)
君の場合は、手を抜こうとして逆に面倒なことになってる気がする。
素直にフルスクラッチした方が楽だと思うよ。
720:デフォルトの名無しさん
07/04/12 21:06:03
WTLのスプリッタのソースが見やすいと思われ
721:デフォルトの名無しさん
07/04/12 21:58:22
すみません
いまコンソールのC言語のプログラムを
WinMainで始まるプログラムでも使えるようにしようとしている
のですがエラーがでてしまいコンパイルできません
エラーの内容はunsigned char*をchar*に変換できません等のものなのですが
なんとかソースを書き換えずにコンパイルできるようにできないものでしょうか?
722:デフォルトの名無しさん
07/04/12 22:04:32
え、キャストしちゃいけないの?
723:デフォルトの名無しさん
07/04/12 22:10:59
キャストすると1000ヶ所以上あってどうにもならない感じです
724:デフォルトの名無しさん
07/04/12 22:12:58
BCCにするんだ
725:デフォルトの名無しさん
07/04/12 22:14:49
置換使えないのかい
726:デフォルトの名無しさん
07/04/12 22:18:07
1000箇所ぐらいなら1時間で何とかなると思うが・・・
というかSuletiGay
727:デフォルトの名無しさん
07/04/12 22:20:01
置換も使えなさそうです
文字列の型にunsigned char*を使っているのが問題のようで
置換をしようにもどうにも絞れません
728:デフォルトの名無しさん
07/04/12 22:23:39
#define unsigned
729:デフォルトの名無しさん
07/04/12 22:29:26
charをデフォルトでunsignedとみなすコンパイルオプションがなかったっけ?
730:デフォルトの名無しさん
07/04/12 22:29:47
VCには存在するな
731:デフォルトの名無しさん
07/04/12 23:05:42
unsigned char*からchar*へ変換できないなんて、
単にWindowsプログラムのほうではC++としてコンパイルしているだけだと思う。
Cなら(警告は出るだろうが)エラーにならずにコンパイルできるはず。
732:デフォルトの名無しさん
07/04/12 23:21:58
コンパイルオプション/Jでは配列のunsignedchar*がchar*に変換できないらしく
だめでした情報ありがとうございます
733:デフォルトの名無しさん
07/04/12 23:26:48
とりあえず F4 でエラー行に飛べることを知ってるだけで
効率はかなり変わると思うよ
F4 → カーソル移動 → Ctrl+V → (以下ループ)
734:デフォルトの名無しさん
07/04/12 23:27:36
ごめん、VC 限定ね… VC スレと勘違いした
735:デフォルトの名無しさん
07/04/12 23:52:06
いえ、ありがとうございます
ですが元のソースはいじるわけにはいかないんですよ
ちょっと勝手に書き換えるとまずい事情がありまして
736:デフォルトの名無しさん
07/04/12 23:59:12
WinMainから始まろうと、mainから始まろうと、
同じCのソースコードであることに変わりはない。
片方でコンパイルできたものが、もう片方でコンパイルできないなんて、
(argc/argcやmainそのものに依存している場合などを除いて)有り得ない。
>>731は試した?
737:デフォルトの名無しさん
07/04/13 00:00:18
>>735
そういうことってよくあるよね。
あ~邪魔臭いコードでもいじれない。
738:デフォルトの名無しさん
07/04/13 00:22:56
>>735
Cでは警告は出ないようだ。
こんな感じでC++とCのコードは混ぜることが出来る。
extern "C" {
#include "古いコード.h"
}
cl 新しいコード.cpp 古いコード.c
739:デフォルトの名無しさん
07/04/13 01:03:16
とりあえず古いソースのヘッダをincludeしている箇所を
extern "C"{}で囲ってみましたが効果ないっぽいです
情報ありがとうございます
740:デフォルトの名無しさん
07/04/13 01:18:34
>>739
意味わかってないだろ
741:デフォルトの名無しさん
07/04/13 01:26:44
IDEから使うと /TP がデフォになってるな。
これをはずせば拡張子に応じたコンパイルをしてくれるが、
プリコンパイルヘッダーやら他のところで引っ掛かりが出てるよ。
混ぜるのはこいつのレベルじゃ無理かもしれんね。
742:デフォルトの名無しさん
07/04/13 09:35:23
文字列に付けるszってなんですか?
743:デフォルトの名無しさん
07/04/13 09:39:19
Win32APIでは構造体のサイズを取得してそのサイズを構造体にセットするというのをよく使いますが、
何故このようなやり方をするのでしょうか?
744:デフォルトの名無しさん
07/04/13 09:42:10
>>742
ハンガリアン記法
745:デフォルトの名無しさん
07/04/13 09:43:57
>>743
バージョンが上がって仕様が変わって構造体の内容が変わっても
互換性を維持するため。
746:デフォルトの名無しさん
07/04/13 10:06:09
まじ?
747:デフォルトの名無しさん
07/04/13 10:09:16
>>742
zero(\0)終端string(文字列)の略
748:デフォルトの名無しさん
07/04/13 10:36:38
nsはなんですか?
749:デフォルトの名無しさん
07/04/13 10:46:51
>>748
質問まとめてしろよ
750:デフォルトの名無しさん
07/04/13 12:01:00
>>746
>745のことならマジ。
751:デフォルトの名無しさん
07/04/13 13:47:56
ちょっと思うんだけど、
ファイルパス長ってMAX_PATHバイト?MAX_PATH文字数?
MAX_PATHバイトだったら、マルチバイト文字で半分になるんだけどいいの?
それとも、
#define MAX_PATH_NAME (MAX_PATH * (2 / sizeof(TCHAR)))
な事すんの?
752:デフォルトの名無しさん
07/04/13 13:50:14
文字数でもバイト長でもMAX_PATH以上のファイルパスって普通に存在するからMAX_PATH自体あまり意味無いような・・・
753:751
07/04/13 13:50:49
補足
TCHAR szFile[MAX_PATH_NAME + 1];
とつかうとして
754:デフォルトの名無しさん
07/04/13 13:57:06
まあDOS/Windows 3.1時代の遺物なんで
755:751
07/04/13 14:01:31
>>752
CreateFileの説明の通り
In the ANSI version of this function,
the name is limited to MAX_PATH characters.To extend this limit to 32,767 wide characters,
call the Unicode version of the function and prepend "\\?\" to the path.
For more information, see Naming a File.
ワイド文字で32767文字って事は、65534バイト宣言しとけばいいの?
ちょいもったいない気が・・・
756:デフォルトの名無しさん
07/04/13 14:19:59
必要に応じて動的に確保すればいいんじゃないの?
どうしても固定長にしたいわけ?
757:デフォルトの名無しさん
07/04/13 14:24:08
OPENFILENAME の戻り用の器は MAX_APTH 使った固定長だな。
758:751
07/04/13 14:36:11
>>756
固定長にしたい理由というわけじゃありませんが、
明確な理由があれば、それに準じたいと思っています。
もちろん、実用的な側面でも判断しますが
759:デフォルトの名無しさん
07/04/13 15:23:35
ぐだぐだ言ってないで実用的な面でどうなるか
試してみろよ。
FAT32,NTFS,共有ドライブで長い名前のファイル名作るくらいできないの?
760:デフォルトの名無しさん
07/04/13 17:02:48
文字数でもバイト長でもMAX_PATH以上のファイルパスって普通に存在するから
文字数でもバイト長でもMAX_PATH以上のファイルパスって普通に存在するから
文字数でもバイト長でもMAX_PATH以上のファイルパスって普通に存在するから
文字数でもバイト長でもMAX_PATH以上のファイルパスって普通に存在するから
文字数でもバイト長でもMAX_PATH以上のファイルパスって普通に存在するから
文字数でもバイト長でもMAX_PATH以上のファイルパスって普通に存在するから
文字数でもバイト長でもMAX_PATH以上のファイルパスって普通に存在するから
文字数でもバイト長でもMAX_PATH以上のファイルパスって普通に存在するから
文字数でもバイト長でもMAX_PATH以上のファイルパスって普通に存在するから
文字数でもバイト長でもMAX_PATH以上のファイルパスって普通に存在するから
文字数でもバイト長でもMAX_PATH以上のファイルパスって普通に存在するから
文字数でもバイト長でもMAX_PATH以上のファイルパスって普通に存在するから
文字数でもバイト長でもMAX_PATH以上のファイルパスって普通に存在するから
文字数でもバイト長でもMAX_PATH以上のファイルパスって普通に存在するから
文字数でもバイト長でもMAX_PATH以上のファイルパスって普通に存在するから
文字数でもバイト長でもMAX_PATH以上のファイルパスって普通に存在するから
文字数でもバイト長でもMAX_PATH以上のファイルパスって普通に存在するから
文字数でもバイト長でもMAX_PATH以上のファイルパスって普通に存在するから
文字数でもバイト長でもMAX_PATH以上のファイルパスって普通に存在するから
文字数でもバイト長でもMAX_PATH以上のファイルパスって普通に存在するから
文字数でもバイト長でもMAX_PATH以上のファイルパスって普通に存在するから
文字数でもバイト長でもMAX_PATH以上のファイルパスって普通に存在するから
文字数でもバイト長でもMAX_PATH以上のファイルパスって普通に存在するから
文字数でもバイト長でもMAX_PATH以上のファイルパスって普通に存在するから
文字数でもバイト長でもMAX_PATH以上のファイルパスって普通に存在するから
文字数でもバイト長でもMAX_PATH以上のファイルパスって普通に存在するから
文字数でもバイト長でもMAX_PATH以上のファイルパスって普通に存在するから
761:デフォルトの名無しさん
07/04/13 17:07:47
>>760
うるさいばか
762:デフォルトの名無しさん
07/04/13 17:12:13
>>758
9x系OSでANSI版のAPIつかってみなはれ
ちなみにMSでは、MAX_PATHは文字数としてあつかっとるよ
稀にMS社内でも開発者が混乱してしもて、
大穴あけてしもうたこともあるけどね
763:デフォルトの名無しさん
07/04/13 17:13:42
まったく1文字1Byteの連中はこれだから・・
764:デフォルトの名無しさん
07/04/13 17:25:11
>>763
初心者にこのスレは不向きですよppp
765:デフォルトの名無しさん
07/04/13 17:26:38
>>751
これ以上はスレ違い
APIではなくコーディングの話なら
Cスレに行け
766:デフォルトの名無しさん
07/04/13 17:35:44
>>764
欧米の方ですか?
767:デフォルトの名無しさん
07/04/13 17:47:03
いいえ東亜です。
768:デフォルトの名無しさん
07/04/13 17:52:25
>>763
いや、ワイドキャラクタでも1文字2バイトじゃ済まないはずなんだが。
サロゲートペアとかあると4バイトになる。
あれ、Win32APIってUCS-2のままだったっけ?
まぁサロゲートペア対応しても、そもそも文字の定義ってなに?ってなるし。
769:デフォルトの名無しさん
07/04/13 18:14:56
ファイルの更新日時を変更するAPIを教えてください
770:デフォルトの名無しさん
07/04/13 18:23:11
GetFileTime
771:デフォルトの名無しさん
07/04/13 18:26:48
Sじゃねーのか
772:デフォルトの名無しさん
07/04/13 18:28:36
お前さん頭いいな。
773:デフォルトの名無しさん
07/04/13 18:36:47
Mですから
774:デフォルトの名無しさん
07/04/13 18:42:44
>>768
ビル・G
数種類の奇妙な文字で文章を書く、親愛なる日本人の皆さん。
私はアルファベット26文字で美しい詩的な文章を綴り、人々を感嘆させるビル・Gである。
ユニコードとは何か。簡単に言えば、あらゆるプラットフォームで様々な言語を共通に扱えるようにするための統一的なコード体系のことだ。
もっと簡単に言おう。アルファベット以外の野蛮な絵文字を使ってコミュニケートする第三世界の人間に対する、心からの配慮だ。
今までも手を焼いてきた。2バイトコードの各国語対応も、少しは楽になるのだけどね。
君たちの国でも、ユニコードの問題が盛んに議論されているようだね。
日本や中国や台湾で使っている漢字コードやフォント違うって?
それは君たちが今までに勝手な文字を作りすぎてきたツケに過ぎないよ。
また、『固有の文化』という言葉で語られる微妙な差異に関する議論は、
私にはちょうど「靴下は右足から履かなければならない」
「いや、左足から履くのが伝統だ」と言い争いをしているようにしか聞こえない。そんなことはどうでもいいじゃないか!