■過去ログ置き場に戻る■ 1- 前250 次250 最新50


[memo] "9999999999_00.html#R20" という感じで、URLの最後に "#RレスNo" を追加すると幸せになれます。

Win32API質問箱 Build31
501 名前:デフォルトの名無しさん :2005/05/15(日) 18:45:11
だがそれがいい

502 名前:デフォルトの名無しさん :2005/05/15(日) 20:08:30
sinunayomajide!

503 名前:デフォルトの名無しさん :2005/05/15(日) 20:21:01
>>498,499
標準が 3d6 なんだから激高だろ。


504 名前:デフォルトの名無しさん :2005/05/15(日) 22:46:03
もうダイスから離れろ。

505 名前:デフォルトの名無しさん :2005/05/15(日) 23:53:10
winiqcfg.exe


506 名前:473 :2005/05/15(日) 23:56:07
>486
レスサンクス
早速試してみましたが駄目でした

507 名前:デフォルトの名無しさん :2005/05/16(月) 00:37:11
MessageBox関数には
printf("%d",i);
みたいに引数を渡すことは出来ないのでしょうか?

508 名前:デフォルトの名無しさん :2005/05/16(月) 00:40:02
CString tmp; tmp.Format("%d", i); MessageBox(tmp);

509 名前:デフォルトの名無しさん :2005/05/16(月) 00:41:14
MessageBox関数は無理。

自分で作ってもわけないよ。こんなやつ
ttp://www14.big.or.jp/~ken1/tech/tech20.html


510 名前:デフォルトの名無しさん :2005/05/16(月) 00:44:21
>>509
どうもありがとうございます。
さっそく続きを作っていこうと思います。

511 名前:デフォルトの名無しさん :2005/05/16(月) 01:54:21
sprintfをすっとばすのかい・・・

512 名前:デフォルトの名無しさん :2005/05/16(月) 02:31:58
>>495
グラハム数くらいです

513 名前:デフォルトの名無しさん :2005/05/16(月) 14:11:28
string形で宣言と同時にサイズだけ指定することってできますか?

514 名前:513 :2005/05/16(月) 14:13:04
形じゃなくて型だった

515 名前:デフォルトの名無しさん :2005/05/16(月) 14:14:59
>>513
スレ違い

516 名前:513 :2005/05/16(月) 14:25:47
>>515
ほんとだ!
C++だった。すいませんでした。

517 名前:デフォルトの名無しさん :2005/05/16(月) 20:18:32
APIで手書きしてるとプロシジャ間で値の受け渡しとかしたいとき
どうしてもグローバルが多くなるんですけど、
皆さんはどうやって解決してますか。

518 名前:デフォルトの名無しさん :2005/05/16(月) 20:22:31
>>517
コールバックデータに入れるだろ、普通。

519 名前:デフォルトの名無しさん :2005/05/16(月) 20:40:33
>>518
是非とももう少し詳しく解説お願いします。

520 名前:デフォルトの名無しさん :2005/05/16(月) 20:43:08
>>519
つまり、受け渡したいデータを構造体にまとめて、
関数の引数に渡すってことだ。それだけだ。

521 名前:デフォルトの名無しさん :2005/05/16(月) 20:45:23
>>520
解りやすっ
別人だけどありがとうございました。

522 名前:デフォルトの名無しさん :2005/05/16(月) 20:53:49
どうやって入れますか?

523 名前:デフォルトの名無しさん :2005/05/16(月) 20:55:29
そういやlparamとかを
構造体のポインタに型変換してよく使ってるもんなー

524 名前:デフォルトの名無しさん :2005/05/16(月) 20:56:28
LPARAMはx64でもポインタが入るんだっけ?

525 名前:デフォルトの名無しさん :2005/05/16(月) 21:03:03
LPARAMはそもそもそのための引数だからな

526 名前:デフォルトの名無しさん :2005/05/16(月) 21:23:10
64bit環境でのWin32 APIを使用したプログラミングってどうなるんだろう。
とくに、ポインタ関係。
64bitのプログラムは、64bit用の新しいAPIを使うのかな

527 名前:デフォルトの名無しさん :2005/05/16(月) 21:43:00
普通に考えてそうなんじゃね?
今でも残ってる16bit版みたいに互換性が必要なヤツ以外は

528 名前:デフォルトの名無しさん :2005/05/16(月) 21:47:08
>>526
適切に作ればソースはそのままでいけることになっている。

W/LPARAMは64ビット化されていて、それぞれUINT_PTR/LONG_PTRからのtypedefになっている。
その〜_PTRってのはポインタと同じサイズの整数型、つまりWin64では64ビットになる。
DWORD_PTRなんてわけわからんものもあるが。

一部のAPIはそれに対応した版が追加されている。(SetWindowLongPtrなど)

529 名前:デフォルトの名無しさん :2005/05/16(月) 21:52:15
Win32の定義から考えると、変更をしてないならDWORD_PTR = LONG_PTRじゃね?

530 名前:526 :2005/05/16(月) 22:02:38
あ……64bit環境でwin32って変だな。
64bitのWindowsのAPIを利用したプログラミングと言ったほうがいいのかな。

32bitのバイナリはエミュで走らせるからいいとして、
64bitはtypedefを変えているからソースはそのままでコンパイルしなおすだけで動くというわけですか。


でも、本当に完全に、「適切」に書いている人ってどれぐらいいるんだろう。
ポインタが4バイトで、int型も4バイトってのが前提なソースを書いている人もかなり居そうなんだけど。
typedefされて、さらに何重にもdefineされているあの変数名をそのまま使っていない人もかなりいそうな気がする。

531 名前:デフォルトの名無しさん :2005/05/16(月) 22:15:36
>>529
Win32ではDWORD_PTRはunsigined long _w64からのtypedefdeで、ULONG_PTRもそこからtypedefされている。
わけわからんって書いたのはDWORDは32ビットということ(x86では)なんだから、
DWORDと名乗る型に32ビットではないものがあるというのがわけわからんと言いたかったから。

>>530
これがすべてを物語っている。
SetWindowLong の検索結果のうち 日本語のページ 約 2,980 件
SetWindowLongPtr の検索結果のうち 日本語のページ 約 44 件

ちなみにVCではint/longは4バイトのまま。long/LONGをsigned DWORDとして使っているから永遠に(I)LP64へは移れないだろうな。

532 名前:デフォルトの名無しさん :2005/05/16(月) 22:22:13
>>531
そんなこと言ったって、Win32のDWORDは現にunsigned longのtypedefなんだしさ・・・
DWORDは32bitと決まってるならunsigned longのtypedefはおかしいんじゃ?
あれ?longって規定は32bitだっけ・・・?

533 名前:デフォルトの名無しさん :2005/05/16(月) 22:31:47
>>532
それはVCやその他Win16/32用コンパイラが(unsigned )longを32bitにしていたのを利用しただけ。
Cができたときからstdint.hがあれば間違いなくtypedef uint32_t DWORD;になっていただろう(と信じたい)。

ちなみにC/C++の規格を見るとlongは32ビット以上が必要と言える。

534 名前:デフォルトの名無しさん :2005/05/16(月) 22:36:06
マウスフックです。教えてください。

ウィンドウをクリックしたまま、そのウィンドウを出て、
別のウィンドウに移るとWM_MOUSEMOVEやWM_LBUTTONUPが
飛んでこなくなるんですけどなんでですか?
初めにWM_LBUTTONDOWNでセットしたグローバル変数にも
参照できなくなります。

誰か教えてくださいmm(__)mm

535 名前:デフォルトの名無しさん :2005/05/16(月) 22:59:44
>>534
フックプロシージャは DLL 内に置いてあるか?
あと、DLL の場合 #pragma data_seg("shared") に包んでやらないと
プロセスごとにグローバル変数の実態も変わるからな。

536 名前:534 :2005/05/16(月) 23:02:19
返事ありです。

>フックプロシージャは DLL 内に置いてあるか?
もちろん置いてます。
>あと、DLL の場合 #pragma data_seg("shared") に包んでやらないと
>プロセスごとにグローバル変数の実態も変わるからな。
まさにそんな感じです。ちょっと調べてみます。

またわからないことあったら教えてください。

537 名前:デフォルトの名無しさん :2005/05/17(火) 00:01:37
すいません、教えて下さい。

親ウィンドウにスタティックコントロールを子ウィンドウとして置き、ここに目的の描画処理を行っています。
で、この子ウィンドウのスクロールバーが上手く動きません。
具体的には
1.ウィンドウにSetFocusしない限りWM_VSCROLL/WM_HSCROLLが来ない
2.スクロールバーをドラッグしてもWM_VSCROLL/WM_HSCROLLが来ない
3.それどころかドラッグしてもポインタが動かない
4.にも関わらず、スクロールバー上での右クリックメニューからのスクロールは可能

1は大体諦めて、SetFocusした後はスクロールするんだからと妥協しましたが・・・。
2〜4がいまひとつ納得いきません。

子ウィンドウ上でドラッグなどしつつ届くメッセージをチェックしたところ、WM_NCHITTESTくらいしか来ていません。
WM_NCHITTESTを拾って、スクロールバー上の座標ならHTVSCROLL/HTHSCROLLを返すようにしてみましたが、効果なし。

使用しているのがスタティックコントロールだというのが主要因かとは思いますが、こちらも別件で問題が発生して頓挫しています。
(ResisterClassExしたクラスでCreateWindowExが失敗する)
よい打開策はありませんでしょうか?
一応、別にスクロールバーコントロールを作成するという案はありますが、修正箇所が多くて二の足を踏んでいます。
これしかない、というのであれば別コントロール案を採用します・・・。

538 名前:デフォルトの名無しさん :2005/05/17(火) 00:26:25
int が64ビットじゃないなんて
なんのための64ビットだよ?


539 名前:デフォルトの名無しさん :2005/05/17(火) 00:33:55
もちろんメモリマップを広げるためでしょ。
2Gオンメモリで読み込みなんてそのうち当たり前になってくるかも。

540 名前:526 :2005/05/17(火) 00:34:44
sizeof(int) == 4と決め付けた既存のソースが多いからじゃないのかな。
int型のサイズを変えて既存のソースを動かせなくするより、
64bitのintは__int64型にするなどとしてしまったほうが都合がいいのでは?

541 名前:デフォルトの名無しさん :2005/05/17(火) 01:30:48
数年前に同じような話の展開を見たことがあるな・・・
あのころは16bit->32bitだったが・・・

542 名前:デフォルトの名無しさん :2005/05/17(火) 01:47:34
そんなのコンパイルオプションで32ビットにできるようにすればいいだろうに。
デフォルトでは64ビットにしておけよ。
なんでクソソースに合わせなきゃならんのだよ?
できの悪いほうに合わせるなんてまるで日本の教育だな。


543 名前:デフォルトの名無しさん :2005/05/17(火) 02:01:25
int は 32bit の方が良いな。
それよりも short 16bit、int 32bit、long 64bit の方が
型の意味的にも綺麗なんだけどなぁ。




544 名前:デフォルトの名無しさん :2005/05/17(火) 02:28:34
>>542
俺らに当たってもどうしようもなかろ?


545 名前:デフォルトの名無しさん :2005/05/17(火) 07:08:06
    SHFILEINFO shfInfo;
    ::SHGetFileInfo( Ext, NULL, &shfInfo,
                     sizeof(SHFILEINFO), SHGFI_USEFILEATTRIBUTES | SHGFI_ICON | SHGFI_SMALLICON );
で関連づけられているアイコンを取得しようとしています。ワードのファイルの場合"*.doc"でうまくいきますが、
エクスプローラのフォルダやドライブのアイコンを取得したい場合どのようにすればよいのでしょうか?
Shell32.DLLから決めうちで取得してもよいのですが、将来OSの仕様が変わったときが心配です。

546 名前:デフォルトの名無しさん :2005/05/17(火) 09:58:24
お一人様ご案内〜

★初心者にVisual C++を教えるスレ★ Part19
http://pc8.2ch.net/test/read.cgi/tech/1116209988/35
> ドライブ名をすべて列挙するにはどうしたらよいのでしょうか?

GetLogicalDrives
GetLogicalDriveStrings
どちらでも好きなほうをどうぞ。

547 名前:デフォルトの名無しさん :2005/05/17(火) 14:19:16
HeapAllocとVirtualAllocの違いというか、長所ってどんなんでしょうか?
ヒープ領域って1アプリ(?)辺り、如何ほど頂けるのでしょうか?
最後に、VCでのmalloc = HeapAllocと考えてよろしでしょうか?

548 名前:デフォルトの名無しさん :2005/05/17(火) 15:49:23
>>547
大雑把に言うと
VirtualAllocはプロセスのメモリ空間から直接メモリを割り当てる。だからオーバーヘッドがでかい。
HeapAllocは一旦独自のヒープをVirtualAllocで確保し、そこから必要なだけ切り出してくる。

だからこまごまとしたメモリ(数MBまで)の確保にはHeapAllocが、広大なメモリの確保にはVirtualAllocが適している。

549 名前:デフォルトの名無しさん :2005/05/17(火) 15:54:24
>>547
VC持ってるなら、mallocのソースもあると思うから読んでみるよろし

550 名前:デフォルトの名無しさん :2005/05/17(火) 16:05:43
今Virtualとか関係無くなってないか?

551 名前:547 :2005/05/17(火) 16:21:53
勉強になりました
どうも

552 名前:デフォルトの名無しさん :2005/05/17(火) 16:40:53
時代はパーシャル

553 名前:デフォルトの名無しさん :2005/05/17(火) 16:42:40
健さんハッケソ

554 名前:デフォルトの名無しさん :2005/05/17(火) 18:31:51
文太さんじゃねーのか?

555 名前:デフォルトの名無しさん :2005/05/17(火) 18:33:03
ソーダッタ

556 名前:デフォルトの名無しさん :2005/05/17(火) 18:37:54
朝日ソーラじゃけん

557 名前:デフォルトの名無しさん :2005/05/17(火) 20:22:28
○<天ーん!

||
ω


558 名前:デフォルトの名無しさん :2005/05/17(火) 20:37:06
>>550
適当なこと言うなよ。
VirtualAllocとHeapAllocではメモリをどこから持ってくるかが違う。
ただしHeapAllocでデフォルトヒープのみを使う場合は
GlobalAllocやLocalAllocしても同じ。

559 名前:デフォルトの名無しさん :2005/05/17(火) 21:16:38
さあ今日もこの合言葉で締めましょう。

「AdvancedWindows読め」

560 名前:デフォルトの名無しさん :2005/05/17(火) 21:19:03
HeapCreateの解説
>If dwMaximumSize is zero, the heap is growable. The heap's size is
>limited only by available memory. Requests to allocate blocks larger
>than 0x7FFF8 bytes do not automatically fail; the system calls the
>VirtualAlloc function to obtain the memory needed for such large blocks.

561 名前:デフォルトの名無しさん :2005/05/17(火) 21:44:02
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dngenlib/html/msdn_heapmm.asp

562 名前:デフォルトの名無しさん :2005/05/17(火) 22:00:48
AdvancedWindowsの存在がなかったらWindowsプログラミング挫折してたかも。
それぐらい凄い本。 
本来MSDNに含まれるべきだが商売汚いM$は絶対そんなことしない。

563 名前:デフォルトの名無しさん :2005/05/17(火) 22:13:32
MicrosoftPressのJeffreyRichter著の本は他のもオススメできると思う。
ProgramingWindows2000とか。

564 名前:デフォルトの名無しさん :2005/05/17(火) 22:23:21
>>562
乞食臭い

565 名前:デフォルトの名無しさん :2005/05/17(火) 22:39:20
>>564
UNIX板やLinux板でその発言してみろ
泣いて向かってくるぞ

566 名前:デフォルトの名無しさん :2005/05/17(火) 22:42:15
WindowsAPI

567 名前:デフォルトの名無しさん :2005/05/17(火) 23:01:07
AdvancedWindowsは読んだことないけどな・・・。

VirtualAllocとHeapAllocを
MSDNライブラリで引いてみりゃ、
その違いはすぐにわかるでしょ。

568 名前:デフォルトの名無しさん :2005/05/18(水) 00:22:04
文字を一文字だけ描画するための関数ってありますか?
TextOut()って文字列ですよね?
一文字だけ描画する場合もこの関数を使うんでしょうか?

569 名前:デフォルトの名無しさん :2005/05/18(水) 00:23:06
そうだね

570 名前:537 :2005/05/18(水) 00:30:39
この見事なスルーっぷりは、スクロールバーコントロールを使えという無言のアドバイスですかね。
やっぱそれしかないのかな・・・_| ̄|○

571 名前:デフォルトの名無しさん :2005/05/18(水) 00:36:11
>>570
状況がよくわからん。IDは-1じゃないよな?
CreateWindowExの失敗も追及してみないか

572 名前:537 :2005/05/18(水) 00:53:45
>>571
レスありがとう。
IDって何を指してますでしょうか?
SetScrollInfoのウィンドウハンドル?(そんな訳ないか

根本的な対策という意味ではCreateWindowExの失敗を追った方がよいかも知れません。
2つまとめて質問するのは失礼かつ分かりにくいかと思って、スクロールバーに絞った所存です。
必要ならば、ResisterClassExとCreateWindowExの処理部分を晒します。

573 名前:568 :2005/05/18(水) 01:07:28
>>569
お返事ありがとうございます。


TextOut()の4番目の引数(文字列のポインタを指定するところ)に
char型の変数のアドレスを渡すのってありですか?
実行してみたら普通に動いたんですけど、このやりかたで問題ないのでしょうか?
それとも文字をchar[]かstring型の変数に代入してからやったほうが良いのでしょうか?

574 名前:デフォルトの名無しさん :2005/05/18(水) 01:26:06
>>573
文字列長に-1を指定してないなら、charのアドレスを渡すのもアリ。


575 名前:デフォルトの名無しさん :2005/05/18(水) 01:28:06
>>573
文字列長に-1を指定してないなら、charのアドレスを渡すのもアリ。


576 名前:568 :2005/05/18(水) 01:57:31
>>575
お返事ありがとうございます。

文字列長に-1を指定するなんてこと普通ないと思うんですけど、
何か特別な意味が有るんでしょうか?

577 名前:デフォルトの名無しさん :2005/05/18(水) 02:15:30
文字数をいちいち意識しなくてすむ。

578 名前:デフォルトの名無しさん :2005/05/18(水) 02:41:14
>>528
DWORD_PTRは「DWORDもポインタも格納可能な型」ってことだから
sizeof(DWORD_PTR) >= max(sizeof(DWORD), sizeof(LPVOID))ならなんでもいい。

579 名前:568 :2005/05/18(水) 02:49:34
>>577
すいません、どういうことかわからないんですけど。
もしかして文字列長に-1を指定すると自動的に文字列長を計算してくれるとか?
でも試しに文字列のポインタと-1を指定して実行してみたんですけど、
何も表示されなかったんですけど。
どういうことなんでしょうか?

580 名前:567 :2005/05/18(水) 03:01:57
わかりました(たぶん)
DrawText()関数では文字列長に-1を指定すると文字列長を自動的に計算してくれるみたいです。
TextOut()関数ではそれは無いみたいです。(たぶん)

581 名前:デフォルトの名無しさん :2005/05/18(水) 07:42:59
>>578
だからそれが気に入らないんだ。

582 名前:デフォルトの名無しさん :2005/05/18(水) 10:32:10
>>581
この際、君の好き嫌いは気にしちゃいられない

583 名前:デフォルトの名無しさん :2005/05/18(水) 12:58:22
時差の設定の影響されないファイルのタイムスタンプの取得方法を教えてください。

584 名前:デフォルトの名無しさん :2005/05/18(水) 13:21:38
>>583
先ずはその意味不明な日本語の解説をしてください。

585 名前:デフォルトの名無しさん :2005/05/18(水) 13:28:46
日本で取得してもアメリカで取得しても同じ値を得たいのです

586 名前:デフォルトの名無しさん :2005/05/18(水) 13:28:59
>>582
GetFileTimeして得られたFILETIMEを、FileTimeToSystemTimeで
SYSTEMTIMEに変換すればOK。

ただし、FATファイルシステムでは、タイムスタンプをローカルタイムで
持っているため、タイムゾーンの設定が間違っていた場合には、
GetFileTimeがそもそも誤った結果を返す。

このため、FATファイルシステムにおいては
>時差の設定の影響されないファイルのタイムスタンプの取得方法
は存在しない。

587 名前:デフォルトの名無しさん :2005/05/18(水) 13:29:08
無理


588 名前:デフォルトの名無しさん :2005/05/18(水) 13:34:50
漏れはまた、
「時差の設定の」「影響されないファイルのタイムスタンプの」取得方法かと思ったよ。


589 名前:デフォルトの名無しさん :2005/05/18(水) 13:35:22
>>586
ありがとう
>>587
子ね

590 名前:デフォルトの名無しさん :2005/05/18(水) 13:56:23
環境変数TZについてですが日本語Windowsの場合未設定になっていますが他国語版Windowsでは設定されてるのでしょうか?


591 名前:デフォルトの名無しさん :2005/05/18(水) 14:02:01
>>590
未設定です

592 名前:デフォルトの名無しさん :2005/05/18(水) 14:05:35
お前等をアレするAPIを教えてください

593 名前:590 :2005/05/18(水) 14:08:27
⊂(。Д。⊂⌒`つダンダッテー

_tznameは使うなって事か‥‥

594 名前:デフォルトの名無しさん :2005/05/18(水) 14:33:56
>>592
Delete592()


595 名前:デフォルトの名無しさん :2005/05/18(水) 14:44:39
メールのUIDLを取得する方法を教えてください

596 名前:デフォルトの名無しさん :2005/05/18(水) 14:50:22
>>595
サーバにUIDLコマンドを投げれ

597 名前:デフォルトの名無しさん :2005/05/18(水) 15:31:55
リッチエディットのスムーズなスクロールを、
無効にすることは可能ですか?
可能ならどうすれば…

598 名前:デフォルトの名無しさん :2005/05/18(水) 15:35:59
今のOSバージョンとCPUメモリ、グラフィックスドライバを
言ってくれないとわからんw

599 名前:デフォルトの名無しさん :2005/05/18(水) 15:49:17
スタンバイから復帰させる方法を教えてください

600 名前:デフォルトの名無しさん :2005/05/18(水) 15:52:22
電源ボタンを押す

601 名前:デフォルトの名無しさん :2005/05/18(水) 15:55:14
スタンバイからプログラムで復帰させる方法を教えてください 

602 名前:デフォルトの名無しさん :2005/05/18(水) 15:56:00
スタンバイ状態でプログラム動くの?
時刻かなんかでメッセージ受けるの?

603 名前:デフォルトの名無しさん :2005/05/18(水) 15:56:32
スタンバイから復帰させる方法を教えろつってんだろ!!

604 名前:デフォルトの名無しさん :2005/05/18(水) 16:03:21
テメーシネヨ、できないのはできない

605 名前:デフォルトの名無しさん :2005/05/18(水) 16:03:58
スタンバイ状態にしろ、休止状態にしろ、
マシンの制御がBIOSのACPI側に移行してるだろうから、
OS側ましてや、アプリケーションなんかではどうのこうのは出来ないはず。

スタンバイの場合はメモリには給電されてるから復帰が早いってだけじゃなかったっけ?

606 名前:デフォルトの名無しさん :2005/05/18(水) 16:07:40
スタンバイから復帰させる方法を教えてください

607 名前:597 :2005/05/18(水) 16:08:00
スムーズなスクロールというより・・・
マウスのホイールでスクロールしたときに、
ホイールクルクル止めても、行が多いとスクロールし続けてるのを何とかしたい…
RichEdit1 です

OSとか関係あるん?
xp,p43G,512M,ti4200

608 名前:デフォルトの名無しさん :2005/05/18(水) 16:23:27
寝てる人に目覚まし鳴らすスイッチを持たせるようなもんだな >スタンバイから復帰
寝てる本人にはどうしようもない。

609 名前:デフォルトの名無しさん :2005/05/18(水) 16:24:13
>>599-606
SetWaitableTimer

610 名前:デフォルトの名無しさん :2005/05/18(水) 16:27:31
>>609
ネタかと思ったら本当にあった。すげー

611 名前:デフォルトの名無しさん :2005/05/18(水) 16:29:08
口ばっかだな

612 名前:デフォルトの名無しさん :2005/05/18(水) 16:31:14
元の質問の答えには使えないな
スタンバイに入ってしまったらどうしようもないもんな

613 名前:デフォルトの名無しさん :2005/05/18(水) 16:32:16
>>612
は?まか?

614 名前:デフォルトの名無しさん :2005/05/18(水) 16:32:21
うわー…

615 名前:デフォルトの名無しさん :2005/05/18(水) 16:34:55
寝る前に目覚ましをセットするようなものか

616 名前:デフォルトの名無しさん :2005/05/18(水) 16:35:43
スタンバイから復帰させる方法を教えてください

617 名前:デフォルトの名無しさん :2005/05/18(水) 16:38:36
それは、確かな外殻団体を作れ!

618 名前:デフォルトの名無しさん :2005/05/18(水) 17:36:07
RichEditにオートインデント機能を持たせようとENM_KEYEVENTSを設定し、WM_KEYDOWNのVK_RETURNが来たところでTabや半角スペースを入れるようにしましたがうまくいきません。
原因はコントロールの改行挿入が完了しないままEM_REPLACESELでTab挿入をしてることにあるみたいです。
エンターが押された後にコントロール内での処理が終わってから来るメッセージはありますか?

619 名前:デフォルトの名無しさん :2005/05/18(水) 18:16:34
SHBrowseForFolderにチェックボックスを付ける方法を教えてくださ

620 名前:デフォルトの名無しさん :2005/05/18(水) 18:18:03
無理

621 名前:デフォルトの名無しさん :2005/05/18(水) 18:22:26
>>619
BROWSINFO構造体のlpfnメンバにコールバック関数を設定して
コールバックの方で、BFFM_INITIALIZEの時にCreateWindowで自前で作れ

622 名前:デフォルトの名無しさん :2005/05/18(水) 18:25:03
CreateWindowで作ってやるよハゲ!

623 名前:デフォルトの名無しさん :2005/05/18(水) 19:27:18
>>618
サブクラス化

624 名前:デフォルトの名無しさん :2005/05/18(水) 20:29:41
俺を女子高生のサブクラス化にさせる方法を教えてください

625 名前:デフォルトの名無しさん :2005/05/18(水) 21:02:32
難しい日本語つかうね。

626 名前:デフォルトの名無しさん :2005/05/18(水) 23:46:40
>>620
hage

627 名前:デフォルトの名無しさん :2005/05/19(木) 08:31:40
>>624


628 名前:デフォルトの名無しさん :2005/05/19(木) 09:18:39
プリンタにインストールされているフォント一覧を取得する方法を教えてください

629 名前:デフォルトの名無しさん :2005/05/19(木) 09:26:02
EnumFontsでどうかなぁ

630 名前:デフォルトの名無しさん :2005/05/19(木) 10:19:28
>>616
>スタンバイから復帰させる方法を教えてください
タスクスケジューラを設定しておくか、
WakeOnLANで起こしてもらうか、
手で電源ボタン押す。

631 名前:630 :2005/05/19(木) 17:28:03
何この静けさ?

632 名前:デフォルトの名無しさん :2005/05/19(木) 17:30:50
静かでいいじゃない。

633 名前:630 :2005/05/19(木) 17:51:32
そだな

634 名前:デフォルトの名無しさん :2005/05/19(木) 18:03:27
Sleep

635 名前:デフォルトの名無しさん :2005/05/19(木) 18:16:49
質問者のその後が無いからなあ

636 名前:デフォルトの名無しさん :2005/05/19(木) 18:24:36
MessageLoop

637 名前:デフォルトの名無しさん :2005/05/19(木) 18:57:59
リストボックスのインデックスを取得する方法を教えてください。

638 名前:デフォルトの名無しさん :2005/05/19(木) 18:59:12
じゃなかった。説明たりね。スマソ

639 名前:デフォルトの名無しさん :2005/05/19(木) 19:03:09
>>637
GetListBoxIndex()

640 名前:デフォルトの名無しさん :2005/05/19(木) 19:45:12
>>637-639
http://www.google.co.jp/search?hl=ja&c2coff=1&q=GetListBoxIndex

641 名前:デフォルトの名無しさん :2005/05/19(木) 19:52:52
アイコンリソースについての質問です。

リソースファイル(resource.rc)に

MYICON ICON DISCARDABLE "icon.ico"
MYICON2 ICON DISCARDABLE "icon2.ico"

などと書いて、プログラム中で MYICON と MYICON2 を切り替えようとしてもうまく行きません。
というより、どうやら最初の1つ(MYICON)しか認識されないようです。
どうすればよろしいのでしょうか?

642 名前:デフォルトの名無しさん :2005/05/19(木) 20:16:05
どうやってどうなったのか書かない奴はネタと判定します。

643 名前:デフォルトの名無しさん :2005/05/19(木) 20:16:28
>プログラム中で MYICON と MYICON2 を切り替えようと
というのは具体的にどういう実装なのか

>うまく行きません。
とは、どういう期待に対する、不満足な結果なのか

を明らかにしないのは釣り。

644 名前:デフォルトの名無しさん :2005/05/19(木) 21:12:31
MessageBoxで使われてるフォントは何でしょうか?

645 名前:デフォルトの名無しさん :2005/05/19(木) 21:23:49
画面のプロパティで設定しているフォント

646 名前:デフォルトの名無しさん :2005/05/19(木) 21:38:47
>>645
dクス

647 名前:641 :2005/05/20(金) 07:15:57
具体的には、タスクトレイに表示したアイコンを動かしたいのです。
タスクトレイにアイコンを表示するには、

NOTIFYICONDATA n_mid;

m_nid.cbSize = sizeof(NOTIFYICONDATA);
m_nid.hWnd = hWnd;
m_nid.uID = TRAY_ID;
m_nid.uFlags = NIF_ICON | NIF_MESSAGE | NIF_TIP;
m_nid.uCallbackMessage = WM_TRAY;
m_nid.hIcon = LoadIcon(NULL, MAKEINTRESOURCE(IDI_EXCLAMATION));// ここではシステムの「!」マーク
lstrcpy(m_nid.szTip, TEXT("Tip Message"));
Shell_NotifyIcon(NIM_ADD, &m_nid);

変更するには、

m_nid.hIcon = LoadIcon(NULL, MAKEINTRESOURCE(IDI_QUESTION));// ここではシステムの「?」マーク
Shell_NotifyIcon(NIM_MODIFY, &n_mid);

などとすればよいことまでは分かるのですが、
自分で書いたリソースファイルの中に2つ以上定義したはずのアイコンが1つしか使えないのです。
自分で作成したアイコンを2つ以上使うにはどうすればよいのか、どなたか教えてください。お願いします。

648 名前:デフォルトの名無しさん :2005/05/20(金) 07:49:07
ImageList

649 名前:デフォルトの名無しさん :2005/05/20(金) 10:22:31
>>647
少なくとも、こちらで書いた中にそれを組み込んでも
普通に切り替わる。
>>647が書いてない部分に何か原因がありそう

650 名前:537 :2005/05/20(金) 11:36:07
質問者のその後って、漏れのことかも・・・(⊃ω⊂)
SCROLLBARクラスに変更したら、外観が他のウィンドウと異なることが発覚。
結局CreateWindowExの失敗を追及しようかと思うようになりますた。
ちなみに失敗するのはこんなコードです。

WNDCLASSEX wc;

wc.cbSize = sizeof(WNDCLASSEX);
wc.style = NULL;
wc.lpfnWndProc = RightWndProc;
wc.cbClsExtra = 0;
wc.cbWndExtra = 0;
wc.hInstance = hInst;
wc.hCursor = LoadCursor(NULL,IDC_ARROW);
wc.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);
wc.lpszMenuName = NULL;
wc.lpszClassName = (LPCTSTR)RWINDOWCLASS;
wc.hIconSm = NULL;
wc.hIcon = NULL;
RegisterClassEx(&wc);
hWnd = CreateWindowEx(WS_EX_CLIENTEDGE,
(LPCTSTR)RWINDOWCLASS,
"",
WS_CHILD | WS_VISIBLE | WS_BORDER,
log_rect.log_pos_x,//左ウィンドウ補正
log_rect.log_pos_y,
log_rect.log_width,//幅
log_rect.log_height,//高さ
hWndSuper,
(HMENU)ID_LOGVIEW,
hInst,NULL);
改行が多いと怒られたので分割します。

651 名前:537 :2005/05/20(金) 11:36:59
>>650の続き

RWINDOWCLASSにはヘッダでクラス名のテキストを定義してあります。

このコードで起きる現象。
・RegisterClassExは成功する。
・CreateWindowExがNULLリターンするが、GetLastErrorで取得するエラーは
 「この操作を正しく終了しました。」
 ちなみにRegsterClassExをコメントアウトすると
 「ウィンドウクラスが見つかりません。」
 となるので、クラス登録は成功していると考えられます。

WH_CBTフックもしてません。
ウィンドウプロシジャでWM_CREATEやWM_NCCREATEも処理していません。
ということで、原因をつかみかねております。
すいません助けて下さい・・・ 。・゚・(ノД`)・゚・。

652 名前:537 :2005/05/20(金) 11:40:41
すいませんもうひとつ書き忘れました。
このCreateWindowExですが、クラスを"STATIC"に変えるだけで普通に動きます。

//STATICコントロールにした状態で作り込みしていましたので・・・

653 名前:デフォルトの名無しさん :2005/05/20(金) 11:44:00
リストボックスでクリックされた項目の番号によって判別し、
発生するイベントを作りたいのですが、
その番号を配列文字列の数値に割り当てたいのです。
そのやり方を教えてください。

654 名前:デフォルトの名無しさん :2005/05/20(金) 11:52:55
>>652
その RightWndProc の WM_CREATE で何かやってる?

655 名前:654 :2005/05/20(金) 11:54:25
ああ、何もやってないってか。
WM_CREATE が来るかどうかは調べられる?

656 名前:537 :2005/05/20(金) 12:01:42
>>655
ありがとうございます。
デバッガでトラップしてみたところ、WM_CREATEが来ていないように見えます。
ただ、CreateWindowExのエラーが出る前に、RightWndProcが2回呼ばれていました。
そのメッセージを見ると・・・
1回目:WM_NCCREATE
2回目:WM_NCDESTROY

アレ?これはもしかして・・・。
ちょっとRightWndProcを見直してみます。
ちゃんとDefWndProcしてないかも・・・。

657 名前:デフォルトの名無しさん :2005/05/20(金) 12:01:59
>>651
CS_OWNDC か CS_PARENTDC のどちらかをセットするとどうなりますか。

658 名前:537 :2005/05/20(金) 12:05:52
>>657
ありがとうございます。
両方のパターンを試してみましたが、現象に変化なしです。

659 名前:537 :2005/05/20(金) 12:14:37
>>656その後

親ウィンドウのWM_CREATE処理で
CreateWindowExするモジュールの呼び出し→SetWindowLongでサブクラス化
とやっているのが気になったので、RightWndProcのCallWindowProcをDefWindowProcに変更。
変化なし orz


660 名前:537 :2005/05/20(金) 12:57:54
たびたびすみません。
解決しました。

RegsterClassExの一部を変更しました。

wc.lpfnWndProc = DefWindowProc;

サブクラス化のSetWindowLongが後で走る訳ですから、クラス登録ではDefWindowProc
を登録しておけば済む話だったんですね・・・。
WM_NCCREATE→WM_CREATEとならずに
WM_NCCREATE→WM_NCDESTROYとなっていたのが重大なヒントになりました。
ありがとうございました。

661 名前:デフォルトの名無しさん :2005/05/20(金) 15:57:38
ttp://wisdom.sakura.ne.jp/system/winapi/win32/win68.html
>リストボックスの全てのアイテムはインデックスとして管理されます
>最上段のアイテムのインデックスを 0 として、1ずつ増えていきます
>選択されているアイテムや、削除などの操作もインデックスで指定するので
>文字配列と照らし合わせるような処理には非常に便利です

となっていますが、
どうやって選択されたインデックスをint型変数に取得すればいいのでしょうか?
お願いします。

662 名前:デフォルトの名無しさん :2005/05/20(金) 16:04:55
>>661
そこに LB_GETCURSEL を使うって書いてあるじゃんか

663 名前:デフォルトの名無しさん :2005/05/20(金) 16:12:13
>662
でもintにキャストできません

664 名前:デフォルトの名無しさん :2005/05/20(金) 16:14:40
は?やってみたのかよ

665 名前:663 :2005/05/20(金) 16:17:55
i=(int)SendMessage(list , LB_GETCURSEL , 0 , 0);
これじゃダメですか?(ダメだったけど)

666 名前:デフォルトの名無しさん :2005/05/20(金) 16:32:55
>>665
どういう値を期待してどんな値が返ってきたの?
それで問題なく取得できるはずだけど。
ListCtrlじゃなくて、ListBoxだよね?

667 名前:663 :2005/05/20(金) 16:49:33
>666
ありがとうございます。
どうやら違うところで手違いがあったようです。
後は何とかなりそうです

668 名前:663 :2005/05/20(金) 17:01:47
ああ、何とかならない。。。
strcpy(name[0] ,buf[i][0]);
とか文字列に埋め込むと、なぜかフリーズしてしまうorz

669 名前:デフォルトの名無しさん :2005/05/20(金) 17:03:22
ほかが見えないとわからんが、、
strcpy(name, buf[i]) ではないのか

670 名前:663 :2005/05/20(金) 17:22:10
static char buf[256][256][1024];
static char name[2][1024];
nameもbufも多次元変数です。
実のところソースは汚すぎなんで。。。

671 名前:663 :2005/05/20(金) 17:34:04
もういいや。吊ってくる

672 名前:デフォルトの名無しさん :2005/05/20(金) 17:37:36
64MBの配列か・・・いいけどね、ベツニ

673 名前:デフォルトの名無しさん :2005/05/20(金) 18:36:25
>>668
後は i の値とか。
つか、ここに来たからには嘘でも lstrcpy を使え。

674 名前:デフォルトの名無しさん :2005/05/20(金) 18:40:49
GETCURSELは非選択だとLB_ERR(-1)返るから注意な

675 名前:デフォルトの名無しさん :2005/05/20(金) 18:41:40
質問させてください。昨日から悩んでいるのですが、解決できません。
マルチスレッドでshell namespaceを使い、zipの中身を列挙したいのです。
4Mと40Mのzipファイルを用意し、以下のソースを実行したところ(長くてすみません)、
STAの待ち行列に入っているような挙動になりました。
これを回避したいのです。

ちなみにエクスプローラだと、あるエクスプローラで40Mのzipを
開こうとしつつも、別のエクスプローラで4Mのzipを開けます。


676 名前:デフォルトの名無しさん :2005/05/20(金) 18:42:08
#include <windows.h>
#include <stdio.h>
#include <process.h>
#include <shlobj.h>
#pragma comment(lib, "shell32.lib")
void f(void* p) {
int i = (int)p;
::OleInitialize(NULL);
wchar_t* name = (i%2==0) ? L"D:\\4M.zip" : L"D:\\40M.zip";
LPITEMIDLIST idl = ::ILCreateFromPathW(name);
LPSHELLFOLDER desk, sf; LPENUMIDLIST el; HRESULT hr;
hr = ::SHGetDesktopFolder(&desk);
hr = desk->BindToObject(idl, 0, IID_IShellFolder, (LPVOID*)&sf);
printf("start %d\n", i);
hr = sf->EnumObjects(NULL, SHCONTF_NONFOLDERS, &el);
printf("end %d %x\n", i, hr);
sf->Release();
desk->Release();
CoTaskMemFree(idl);
::OleUninitialize();
_endthread();}
int main(int argc, char* argv[]) {
HANDLE hs[10];
for (int i=0; i < 10; i++) hs[i] = (HANDLE)_beginthread(f, 0, (void*)i);
::WaitForMultipleObjects(10, hs, TRUE, INFINITE);
char buf[256];
gets(buf);
return 0;}


677 名前:デフォルトの名無しさん :2005/05/20(金) 19:40:38
>>675
> ちなみにエクスプローラだと、あるエクスプローラで40Mのzipを
> 開こうとしつつも、別のエクスプローラで4Mのzipを開けます。

この場合は、マルチスレッドではなくマルチプロセスになるから、
比べる意味がないのはわかってる?


678 名前:デフォルトの名無しさん :2005/05/20(金) 19:48:12
>>677
エクスプローラはマルチプロセスでしたっけ?
複数のエクスプローラを立ち上げると
explorer.exeのスレッドが増えるだけだと思いますが?

679 名前:678 :2005/05/20(金) 19:52:28
>>677
すみません。678で馬鹿なこと書きました。

680 名前:デフォルトの名無しさん :2005/05/20(金) 23:25:58
>>678
そういうチェックボタンあったから、
たぶんマルチプロセスにもできるんだよ

681 名前:デフォルトの名無しさん :2005/05/21(土) 00:46:32
>>678,679
エクスプローラはマルチプロセスではないだろ?


682 名前:デフォルトの名無しさん :2005/05/21(土) 00:56:50
>>680
フォルダオプションの「別のプロセスでフォルダウィンドウを開く」なら、タスクバーその他を管理するプロセスとフォルダウィンドウを管理するプロセスを分けるってだけじゃないか?

683 名前:デフォルトの名無しさん :2005/05/21(土) 01:31:21
WM_TIMERでInvalidateRgnするとタイミングの問題なのかたまに画面全体がバグるんだけど
どうやって回避する?

684 名前:デフォルトの名無しさん :2005/05/21(土) 01:32:58
> 画面全体がバグる
> 画面全体がバグる
> 画面全体がバグる
> 画面全体がバグる
> 画面全体がバグる

685 名前:デフォルトの名無しさん :2005/05/21(土) 01:35:39
動的にmsvcrt.dllを呼び出してアプリケーション側で
ちゃんと初期化したいんですが、
仕様って後悔されてませんにょ

686 名前:683 :2005/05/21(土) 01:36:09
なんていうか、画面全体が更新領域に設定されるのかすごいちらつく
ウィンドウとか全部真っ白になるけどそのプログラムを止めて再描画させるようにすれば直る。

687 名前:デフォルトの名無しさん :2005/05/21(土) 01:38:17
>>685
日本語を話せるようになってから、また来てくれ

688 名前:デフォルトの名無しさん :2005/05/21(土) 07:31:41
>>686
Timerの間隔は?

689 名前:デフォルトの名無しさん :2005/05/21(土) 08:35:42
>>685
VCをインストールしたディレクトリの中にスタートアップルーチンのソースもある。

690 名前:663 :2005/05/21(土) 08:50:22
>674
うおおおお。それだ!
ありがとうございます。
丸二日悩み続けていました。

691 名前:デフォルトの名無しさん :2005/05/21(土) 09:01:16
>>685
ロードしただけで自動的に初期化されないか?
そのためにDLL_*_ATTACHがあるんだから

692 名前:デフォルトの名無しさん :2005/05/21(土) 12:46:09
仕様、というか、MSVCRTはソースがVCに附属してるだろ。

693 名前:683 :2005/05/21(土) 13:18:10
>>688
500ミリ秒です。

694 名前:デフォルトの名無しさん :2005/05/21(土) 13:50:49
>>693
>>684

695 名前:デフォルトの名無しさん :2005/05/21(土) 13:57:32
WM_ERASEBKGNDの発行から、WM_PAINTが処理されるまでの
時間が長いんでないの?

696 名前:デフォルトの名無しさん :2005/05/21(土) 14:00:07
WM_ERASEBKGNDで対象の領域をValidateしてDefault処理

697 名前:デフォルトの名無しさん :2005/05/21(土) 16:42:24
ビットマップをリソースから読み込まずに
直接ファイルを読み込む方法を教えてください。

698 名前:デフォルトの名無しさん :2005/05/21(土) 16:52:40
>>697
http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/jpwinui/html/_win32_loadimage.asp
LR_LOADFROMFILE

699 名前:デフォルトの名無しさん :2005/05/21(土) 17:16:33
>698
dクス

700 名前:デフォルトの名無しさん :2005/05/22(日) 00:48:57
質問の趣旨はそれでいいのか?
なんか違う気がするんだが・・・

701 名前:デフォルトの名無しさん :2005/05/22(日) 01:11:02
>>700
じゃ、答えはReadFile()とでも言いたいのかい?

702 名前:デフォルトの名無しさん :2005/05/22(日) 01:49:27
いや、、、質問者が再訪しなければ問題は無い。

703 名前:デフォルトの名無しさん :2005/05/22(日) 07:06:41
実行ファイルのプロパティのバージョン情報を取得する方法を教えてください

704 名前:デフォルトの名無しさん :2005/05/22(日) 07:45:03
>>703
GetFileVersionInfo

705 名前:デフォルトの名無しさん :2005/05/22(日) 14:38:55
スタックオーバーフロー例外(EXCEPTION_STACK_OVERFLOW)
が発生したとき、例外ハンドリング時に動的にスタックを広げる(再マップする)ことは
可能でしょうか?
というか、可能だった気がするのですが、肝心の方法を忘れてしまいました。
どなたかご存知でしたらご教授願います。

706 名前:デフォルトの名無しさん :2005/05/22(日) 16:11:06
すいません勘違いしてました。

707 名前:デフォルトの名無しさん :2005/05/22(日) 19:06:37
リストボックスを一時的に選択できない状態にしたいのですが、
どうすればいいでしょうか?

708 名前:デフォルトの名無しさん :2005/05/22(日) 19:11:32
EnableWnidow

709 名前:デフォルトの名無しさん :2005/05/22(日) 19:19:59
>708
ありがd

710 名前:デフォルトの名無しさん :2005/05/22(日) 22:21:50
SDKでBitmapをBitBltで描画しています。
Bitmapを左にスクロールさせたいのですが、
何か良い方法ないでしょうか?
ワーク用のビットマップを用意して、そちらにコピーして
また戻す、ってので一応できるのですが、
なんか無駄なので。。。

Google等でスクロールAPIを探したのですが、
見つけられませんでした。

(最初VC初心者スレに書いたのですが、こちらの方が適切っぽいので移動してきました)


711 名前:デフォルトの名無しさん :2005/05/22(日) 22:29:01
画像自体がケツと頭がつながっててループ可なら
BitBlt2回でよくね?

712 名前:デフォルトの名無しさん :2005/05/22(日) 22:35:28
表示されているイメージならScrollWindowやScrollDCでスクロールすると思うけど。
ScrollDCでスクロールさせて、更新領域だけBitBltでBitmapの範囲を指定して
Bltすればいいんでねえの?


713 名前:710 :2005/05/22(日) 22:37:34
>>711
2回でどうするのかよく分からないのですが、
スクロール後は右の空きスペースに新たな
描画を行います。(ループではないです)

714 名前:デフォルトの名無しさん :2005/05/22(日) 22:37:57
戻す必要は無いでしょ

715 名前:デフォルトの名無しさん :2005/05/22(日) 22:43:23
nWidthとnXSrcをずらしていくだけじゃだめのなか?

716 名前:711 :2005/05/22(日) 22:53:08
単に

@AB

AB@

B@A

ってしたいのかとオモタ

717 名前:710 :2005/05/22(日) 22:54:32
>>712
ScrollWindowは何故かうまくいきませんでしたが、
(ダイアログに直接描画してるのがまずい?)
ScrollDCでBitmapをスクロールするとうまくいきました。

ただ、800*20の領域を10msecに1pixel動かしてる
だけなんですが、ちらつき気味です。。。
もう少し調査します。

ありがとう。


718 名前:デフォルトの名無しさん :2005/05/22(日) 23:00:35
基本的には
・GetDC()よりはWM_PAINTのほうがちらつき(というかティアリング)が少ない
・頻繁に描画を繰りかえす場合はWM_ERASEBKGNDに注意

719 名前:デフォルトの名無しさん :2005/05/22(日) 23:04:29
ビットマップで埋め尽くすならバックグラウンド描く必要ないしな

720 名前:デフォルトの名無しさん :2005/05/22(日) 23:08:11
ダイアログだとうまくいかんだろう。
WM_ERASEBKGND 動いてるんじゃない?


721 名前:710 :2005/05/22(日) 23:14:13
case WM_ERASEBKGND:
return TRUE;

入れただけで、スムーズになりました。
問題なしです、助かりました!


722 名前:デフォルトの名無しさん :2005/05/22(日) 23:42:11
ウィンドウクラスの背景ブラシをNULLにすればいいのに

723 名前:デフォルトの名無しさん :2005/05/23(月) 00:18:40
べつにどっちでもいい

724 名前:デフォルトの名無しさん :2005/05/23(月) 02:56:19
指定パスの、実行ファイルのアイコンや、
ファイル・フォルダの関連付けられているアイコンを
「任意のアイコンインデックス」かつ「任意のサイズ」で取得したいのですが、
何か良い方法はありますでしょうか?

16x16 や 32x32 などなら、ExtractIconEx なり SHGetFileInfo などで
いくらでも取得できるようなのですが、
24x24 や 48x48 のアイコンを取得する方法は見つかりませんでした。
もうかれこれ半日程google先生とお付き合いしています… orz

実行ファイルやアイコンファイル・DLLなどのリソースの場合はアイコンインデックスを有効にして、
それ以外の、普通のファイルやフォルダなどは、アイコンインデックスは無効で良いのです。
また、取得するのは HICON でも HIMAGELIST でも構いません。

ぜひ、ご教授ください。m(_ _)m

725 名前:デフォルトの名無しさん :2005/05/23(月) 04:00:07
TREEVIEWコントロールで選択されているアイテムのlParamが知りたいのですが、
GetSelectionでもらうのはHTREEITEMなのですがlParamを見るにはTV_ITEM
じゃないとだめなんです。
HTREEITEM <=> TV_ITEM
の結びつきってどうやって調べるのでしょうか?

COMMCTRL.hとかMSDN見てたけどなかなか出てこないorz


726 名前:デフォルトの名無しさん :2005/05/23(月) 04:10:53
>>724
PrivateExtractIcons

>>725
TVM_GETITEM

727 名前:デフォルトの名無しさん :2005/05/23(月) 04:33:03
IExtractIcon
これの方がいいな。

728 名前:デフォルトの名無しさん :2005/05/23(月) 04:42:30
>>726
ありがとう。
TVITEMにHTREEITEMをいれて呼ぶのね…

729 名前:デフォルトの名無しさん :2005/05/23(月) 09:35:35
wininetでwebdavに接続する方法を教えてください

730 名前:デフォルトの名無しさん :2005/05/23(月) 09:54:00
APIを使って今まで直線や曲線を描画していたのですが、
どうも数が増えてくるともっさりしてきました。機能的にも物足りなく…。

3Dではプリミティブを描画するために、DirectXやOpenGLの様な有名なライブラリがありますが、
2Dでは、直線や曲線を描画するための、これは、というライブラリは無いのでしょうか。
それともWin32APIで十分だから、作る必要が無いのでしょうか。

731 名前:デフォルトの名無しさん :2005/05/23(月) 10:02:08
>>730
DirectX

732 名前:730 :2005/05/23(月) 10:29:58
>>731
ありがとうございます。しかし欲しいのは2D用ベクタグラフィックライブラリでして。
DirectXがベースな分には構わないのですが、DirectXだけだと、曲線部分を自作しないとで。
要DirectXという2Dフリーソフトはほとんど無いし、やっぱりAPIで十分なんですかね。

733 名前:デフォルトの名無しさん :2005/05/23(月) 11:05:49
DirectXはOpenGLと違って2Dも
(ついでに音楽や入力系も)
サポートしているだろうが。

734 名前:デフォルトの名無しさん :2005/05/23(月) 11:24:40
>>730
処理の仕方が悪いに1票。

まさかWM_PAINT毎にGDIで描いてる訳じゃないよな?ないよな?

735 名前:デフォルトの名無しさん :2005/05/23(月) 11:34:49
ビットマップ用意して、メモリDC使ってそこに書きこんで
WM_PAINTではBitBltしてるだけに決まってるじゃないか・・・たぶん

736 名前:デフォルトの名無しさん :2005/05/23(月) 11:38:10
CreateEnhMetaFileでhDC用意して、そこに書き込んで、
WM_PAINTではPlayEnhMetaFileしてるに100ペリカ

737 名前:730 :2005/05/23(月) 11:43:47
>>734-735
お付き合いどうもです。ごくごく普通にクリップしながらダブルバッファリングでやってます。
となると、こんなものなのかな…

738 名前:デフォルトの名無しさん :2005/05/23(月) 12:07:09
733から知ったかぶり臭を感じるのは俺だけか

見事にスルーされているが

739 名前:デフォルトの名無しさん :2005/05/23(月) 13:11:24
##,###,####って感じで書式を指定して数値を文字列に変換するAPIを教えてください

740 名前:デフォルトの名無しさん :2005/05/23(月) 13:13:43
>>739
wsprintf

741 名前:デフォルトの名無しさん :2005/05/23(月) 13:40:47
おいおい

742 名前:デフォルトの名無しさん :2005/05/23(月) 13:51:25
>>739
APIならFormatMessageだが、
それよりもsprintf使え

743 名前:デフォルトの名無しさん :2005/05/23(月) 13:53:30
あれ?sprintfでできたっけ?
どうやって記述します?

744 名前:デフォルトの名無しさん :2005/05/23(月) 14:06:13
wsprintfは普通に使うだろ
知らないのはもぐり

745 名前:デフォルトの名無しさん :2005/05/23(月) 14:09:59
>>743
そんくらいヘルプ見れや


746 名前:デフォルトの名無しさん :2005/05/23(月) 14:17:17
いやヘルプみたんだけどよくわからなかった
HEXじゃなくて普通の数値できる?
12,345
みたいなの、

747 名前:デフォルトの名無しさん :2005/05/23(月) 14:21:19
>>739の書き方が悪い。
ひょっとしてロケール設定反映した桁区切り付き文字列出したいのか?

748 名前:デフォルトの名無しさん :2005/05/23(月) 14:27:03
>>747
これは失礼しました。
普通の数値(10進数)を3桁のカンマで区切りたいということです
まあwsprintfやsprintfでは出来ないってわかってんだけどね。

749 名前:デフォルトの名無しさん :2005/05/23(月) 14:32:27
>>748
出来るぞ?

750 名前:デフォルトの名無しさん :2005/05/23(月) 14:37:55
>>749
まじですか?
ひょっとしてFormatMessageとか使ったりします?
う〜ん、これでも結構いろいろ探したんだけどなあ・・


■過去ログ置き場に戻る■ 1- 前250 次250 最新50
DAT2HTML 0.33f Converted.