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


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

Win32API質問箱 Build28
751 名前:677 :05/03/02 05:02:19
思うに
>>736 == >>730 == >>729 == >>718 == >>707 == >>706 == >>701 == >>693 == >>684 == >>663

752 名前:デフォルトの名無しさん :05/03/02 05:04:40
>>750
RickEdit
ってなんでしょう?

753 名前:デフォルトの名無しさん :05/03/02 05:17:40
リックエディット知らないの?ドムの一種だよ、ドム

754 名前:750 :05/03/02 05:23:40
>>752>>753
すみません、間違えました。RichEditですorz。

755 名前:750 :05/03/02 06:05:26
バージョンアップ版のRICHEDIT_CLASSだと、その重いのが
改善されているようなので、そちらでやってみたいと思います。
失礼します。

756 名前:デフォルトの名無しさん :05/03/02 07:06:50
>>751
この手の書き込みする奴に聞きたいんだけど、
「だから何?」

757 名前:デフォルトの名無しさん :05/03/02 07:08:16
msvcrtでの実装では、LOCALEがC以外のとき、
towlowerがとっても遅いのでそれに引きずられて
wcsicmpも遅くなる。何せ、かたやテーブル参照、方や
LCMapString呼び出しだから。

758 名前:717 :05/03/02 07:18:39
>>727
Spyで調べて、スタイルをそのとおりにしましたが、
できませんでした。

誰か、解決法をご存知な方はいらっしゃいますか?
私の今必死にグーグルなどで調べています。

759 名前:デフォルトの名無しさん :05/03/02 07:21:27
WM_NCACTIVATE?

760 名前:デフォルトの名無しさん :05/03/02 07:39:45
リアルタイムにネットワークの転送量を表示したいのですが、
式はどうなるのでしょうか?
dwInOctets
dwInUcastPkts
dwInNUcastPkts
は表示できるのですが、Octetsは通信してない時も値が入ってますし・・
どうかよろしくお願いします。


761 名前:717 :05/03/02 07:56:37
>>759
ありがとうございました。

もう一点ですが、アクティブ化されるウィンドウ(タイトルバーの色がアクティブ色になる)は、デフォルトでは必ずひとつですが、
2つ以上のウィンドウをアクティブ表示したいのですが、その方法をご存知でしょうか?
この辺の資料が少なすぎて、手探り状態です。

よろしくお願いいたします。

762 名前:デフォルトの名無しさん :05/03/02 08:55:25
>>660
調べてみます。
ありがとうございました!
レス遅くなってすいません。

763 名前:デフォルトの名無しさん :05/03/02 09:29:54
>>760
API GetIfEntryのMIB_IFROW構造体のことだと書かないとスレを移しても回答はないと思いますよ。

764 名前:デフォルトの名無しさん :05/03/02 09:32:45
>>763
すいません。誰かが探してくれているみたいです。

765 名前:デフォルトの名無しさん :05/03/02 09:41:28
エディトコントロール上でなく、普通のstaticウィンドウなどで、
漢字変換を実装したいのですが、ひらがなを引数に渡すと、
それに対応する漢字が得られるAPIがありましたら教えてください。

766 名前:デフォルトの名無しさん :05/03/02 10:14:14
複数候補があったときにどんな漢字にするかはどうやって決める?


767 名前:765 :05/03/02 10:25:58
>>766
自作のウィンドウを出して、そこに得た漢字をずらっと並べて、
数が10個を超えた場合は、スクロール処理させる感じで、
そこで選んだ漢字を戻り値にして、元のウィンドウに表示させる感じです。

768 名前:デフォルトの名無しさん :05/03/02 10:30:40
第278章 IMEの操作 その1
第279章 IMEの操作 その2
第280章 IMEの操作 その3
第281章 IMEの操作 その4
第282章 IMEの操作 その5
第283章 IMEの操作 その6
http://www.kumei.ne.jp/c_lang/index_sdk3.html

769 名前:765 :05/03/02 10:36:53
>>768
ありがとうございます。やってみたいと思います。

770 名前:765 :05/03/02 10:56:36
たぶん探していたのはEnumRegisterWordProcですかね。
もう少し深く調べたいと思います。
お答えいただいた方、どうもありがとうございました。

771 名前:デフォルトの名無しさん :05/03/02 12:18:54
>>669
あんたの作るプログラムがすべてのように語られてもねぇ w

772 名前:デフォルトの名無しさん :05/03/02 12:51:25
誤爆?

773 名前:デフォルトの名無しさん :05/03/02 13:41:39
質問です。

Windows2000/XP系で、キーボードの低レベル割り込み
(9x系で言うとVxD)ってありますか?
また、Windows2000/XPに対してVxDでの割り込み(無理?)
できませんでしょうか?



774 名前:デフォルトの名無しさん :05/03/02 13:55:08
そういう質問をするときは、目的を書いて手段を聞いた方がいいと思うぞ。

775 名前:デフォルトの名無しさん :05/03/02 15:13:05
ウィンドウクラスに登録されているアイコンを取り出す(Get)場合、
どの関数を使うんですか?

776 名前:デフォルトの名無しさん :05/03/02 15:27:29
wincore.cppを見たいけど、どこのディレクトリにあるんだい?

777 名前:デフォルトの名無しさん :05/03/02 15:28:56
>>775
GetClassLongPtr

778 名前:デフォルトの名無しさん :05/03/02 16:10:13
>>776
MFCのことならスレ違い

779 名前:デフォルトの名無しさん :05/03/02 16:20:49
拡張子に関連付けられているアイコンを取得するにはどうすればいいのでしょうか?

780 名前:デフォルトの名無しさん :05/03/02 16:37:24
>>779
ExtractAssociatedIcon

781 名前:デフォルトの名無しさん :05/03/02 16:38:17
>>779
「アイコン 拡張子 取得 API」とかでググればすぐにわかるのに。

782 名前:779 :05/03/02 16:42:42
>>780
d

783 名前:デフォルトの名無しさん :05/03/02 16:53:32
画像付きで
http://www.geocities.jp/ayana_city/window.jpg

表示されている2つのウィンドウを両方とも「タイトルバー部分のアクティブ表示」にしたいのですが、
どうすればいいのでしょうか?


784 名前:デフォルトの名無しさん :05/03/02 17:25:06
>>776
C:\Program Files\CBuilder6\Source\Mfc

785 名前:デフォルトの名無しさん :05/03/02 17:34:19
wm_mousewheel使うと定義されてないってなるんだけどどうすりゃ使えるんだ?

786 名前:デフォルトの名無しさん :05/03/02 18:15:41
>783
なんでそんなことしたいの?
フォーカスがどこにあるのか混乱するじゃん。

787 名前:783 :05/03/02 18:21:35
>>786
ご返答助かります。

通常のウィンドウは、通常どおり、一つのウィンドウ(トップにある)だけアクティブにすればいいのですが、
ツールウィンドウは、常にアクティブにするような仕様にしたいのです。
フォットショップとかも、ツールウィンドウは常にアクティブ(タイトルバーの色もアクティブ)ですよね。

それに、ツールウィンドウは常にトップに位置するものですが、
このツールウィンドウが非アクティブになると、右上の閉じるボタン×が使えなくなり、

 ・トップに表示されているのに非アクティブ表示なのは不自然
 ・トップに表示されているのに、閉じるボタン×が使えない

ということになるので、
ツールウィンドウだけ常にアクティブ表示としたいのです。(タイトルバーの色がアクティブということです。)

グーグルで調べていますが、なかなかHitしません。
誰かご存知な方がいらっしゃいましたら、教えていただけないでしょうか。


788 名前:デフォルトの名無しさん :05/03/02 18:28:52
NCPAINTで自分で塗るのが早いんじゃないの。

789 名前:787 :05/03/02 19:17:30
>>788
そうします。
自分でツールバーを模擬します。

そうするしか方法がないみたいです。
というより、Excelのツールバーを見て、ツールバー部分を独自に描画してるのを気づきました。 orz

790 名前:デフォルトの名無しさん :05/03/02 19:19:53
>>783
WM_NCACTIVATEを投げるの。

791 名前:663 :05/03/02 21:15:07
DIALOG出してる時にmessageでWM_CHARが受けれないんだけど何か方法ありませんか?

792 名前:デフォルトの名無しさん :05/03/02 21:59:36
サブクラス化

793 名前:デフォルトの名無しさん :05/03/02 22:09:31
>>785
_WIN32_WINNTを0x400以上あるいは_WIN32_WINDOWSを0x410以上と定義してからwindows.hをインクルードすれば良い。
前者はNT4以降、後者だとWin98以降で追加されているAPIなどが使用可能になる。WM_MOUSEWHEELもその「など」のうち。

794 名前:デフォルトの名無しさん :05/03/02 22:43:17
ある一点(スクリーン座標)に対してマウスクリックメッセージを送る時に、
そこが非クライアント領域だった場合、どのウィンドウハンドルに対して
どんなメッセージと座標で送信すればいいんですか?
その点が非クライアント領域かどうかは WM_NCHITTEST を送って調べています。

795 名前:787 :05/03/02 23:21:50
>>790
ありがとうございます。
WM_NCACTIVATEを投げて、
DefWindowProc(hWnd, message, 1, lParam);でアクティブ化したらできました。

ただ、タイトルバーはアクティブ表示になったのですが、
右端の閉じるボタン×が反応しなくなりました。
×ボタンを押しても、ウィンドウが閉じないのです。
見た目はアクティブ化されていますが、実際は非アクティブ化されたものでしょうから、
SetActivateWindowでアクティブ化をしましたが、×ボタンはマウスクリックに反応しません。
これはなぜなのでしょうか?

796 名前:デフォルトの名無しさん :05/03/02 23:24:35
>>760

797 名前:787 795 :05/03/02 23:32:29
画像で説明しますとこうなります。
http://www.geocities.jp/ayana_city/window2.JPG

SHOWされている3つのウィンドウ全て、×ボタンに反応させたいのです。
なぜか、WS_EX_TOOLWINDOWの2つの×ボタンが反応しません。

798 名前:デフォルトの名無しさん :05/03/03 00:45:29
いつも安直に聞いて気が引けるのですが、
rich edit control の version を調べる API にありますでしょうか。
winXP では、問題ないみたいだけど、win98 では EM_GETPARAFORMAT
が失敗します。
winXP で、default での line spacing が間延びしているのをなんとか
したいと思っているところです。(wordpad も間延びしていると思って
います。)

799 名前:デフォルトの名無しさん :05/03/03 01:25:39
あのさあ、
OSのバージョンの問題とは思わないのかよ。

800 名前:デフォルトの名無しさん :05/03/03 01:28:28
DrawIconExでアイコンを描画したのですが、
VisualStudioで作成したアイコンを滑らかにしたような表示になるんですよね。
綺麗にみえるんですが、
そういう滑らかにする表現をしないで、ドットのまま描画させる方法ってありますか?

801 名前:デフォルトの名無しさん :05/03/03 02:33:47
サイズがあってないんだろうな

802 名前:デフォルトの名無しさん :05/03/03 02:44:24
>>800
48×48、32×32、24×24、16×16
をそれぞれ16色・256色・16777216色で全てアイコンファイルに組み込む。
ただし、16777216色版は必ずしも必要ない。

803 名前:デフォルトの名無しさん :05/03/03 03:50:17
>>798
クラス名とOSのバージョンで判断するんだったと思うが。
http://abfan.active.client.jp/024.html
リッチエディットは、新しいバージョンだと使えない機能なんかもあってややこしい。
各バージョンごとの機能の違いを書いたページがあったけど、URL忘れた。



804 名前:798 :05/03/03 09:49:02
>>799, >>803 レス感謝。
>>クラス名とOSのバージョンで判断するんだった...
そうと思っていましたが、win98 の Windows フォルダ見たら、
riched.dll  v? ファイルバージン 4.0 257,440 バイト
riched20.dll v3.0 ファイルバージン 5.30.... 431,133 バイト
riched32.dll v? ファイルバージョン 4.00.... 197,392 バイト
があるので、EN_GETPARAFORMAT で PARAFORMAT2 が使えるのではと
期待しました。しかし失敗。バージョンが確認できて 2.0 未満なら
EM_GETPARAFORMAT を止めようかと思った次第。
  win98 では、2.0 に行かないんなら、上の dll はなんなんだろう
  って思ってしまった。
  line spacing では、ぐぐると、うまく行かない Q&A があったりする。


805 名前:804 :05/03/03 11:17:34
7行目の EN_... は EM_... の間違い。失礼。

806 名前:デフォルトの名無しさん :05/03/03 14:45:41
>>793
_WIN32_WINDOWSを0x410以上と定義って意味わかんないんだけど

807 名前:デフォルトの名無しさん :05/03/03 15:41:27
>>806
#define _WIN32_WINDOWS 0x410
#include <windows.h>

808 名前:デフォルトの名無しさん :05/03/03 16:28:39
デバイスコンテキスト上での文字列の長さを知りたいのですが、
どの関数を使えばいいのでしょうか。

宜しくお願いします。

809 名前:デフォルトの名無しさん :05/03/03 16:40:28
strlen

810 名前:デフォルトの名無しさん :05/03/03 16:40:55
IEの右クリックで出るメニューの拡張ってどうやるんでしょうか
参考になるサイトがあったら教えてください

お願いします

811 名前:デフォルトの名無しさん :05/03/03 16:44:54
>>808
意味不明

812 名前:デフォルトの名無しさん :05/03/03 16:50:28
>>810
HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\MenuExt以下を弄くる
http://support.microsoft.com/?scid=kb;ja;177241

813 名前:デフォルトの名無しさん :05/03/03 16:58:31
>>807
余裕で同じエラーでるんだけど

814 名前:813 :05/03/03 17:00:08
インクルードの前に#define持ってきたらできた

815 名前:810 :05/03/03 17:00:54
>>812
ありがとうございました
見てみます

…聞いてみるもんだなあ

816 名前:808 :05/03/03 17:50:17
文字列の長さがしりたいです。
文字列数(strlen)ではありません。

DCにSelectされているGDIOBJCTの状態での文字列の長さを知りたいです。

817 名前:デフォルトの名無しさん :05/03/03 17:53:38
はあ。
strlenじゃないとすると、GetTextExtentPoint32かな。

818 名前:デフォルトの名無しさん :05/03/03 18:30:10
長さじゃなくて、幅と言うべきかと。

819 名前:デフォルトの名無しさん :05/03/03 19:54:40
>>818
俺の感じてた違和感はそれだったのかー

820 名前:デフォルトの名無しさん :05/03/03 19:57:19
>>81
馬鹿か?黙っていればいいものを、それか、もっと別の面白いことでボケなさい

821 名前:デフォルトの名無しさん :05/03/03 20:00:28
>>818
文字列をGDIOBJECTとしてDCにSelectできるようなWindowsが出るまで
待ってくだちい。おながいします。

822 名前:デフォルトの名無しさん :05/03/03 20:10:44
Windows Server 2003 family / _WIN32_WINNT>=0x0502 
Windows XP / _WIN32_WINNT>=0x0501 
Windows 2000 / _WIN32_WINNT>=0x0500 
Windows NT 4.0 / _WIN32_WINNT>=0x0400 
Windows Me / _WIN32_WINDOWS=0x0490 
Windows 98 / _WIN32_WINDOWS>=0x0410 
Internet Explorer 6.0 / _WIN32_IE>=0x0600 
Internet Explorer 5.01, 5.5 / _WIN32_IE>=0x0501 
Internet Explorer 5.0, 5.0a, 5.0b / _WIN32_IE>=0x0500 
Internet Explorer 4.01 / _WIN32_IE>=0x0401 
Internet Explorer 4.0 / _WIN32_IE>=0x0400 
Internet Explorer 3.0, 3.01, 3.02 / _WIN32_IE>=0x0300 


823 名前:デフォルトの名無しさん :05/03/03 21:54:31
>>816
DrawTextもDT_CALCRECTでRECTで戻してくれるぞ。確か。

824 名前:デフォルトの名無しさん :05/03/03 21:55:44
Internet Explorer 5.5 / _WIN32_IE>=0x0501
詐欺だな

825 名前:デフォルトの名無しさん :05/03/03 22:08:09
ttp://homepage3.nifty.com/aokura/tips/trouble.html
そういやこれ見て#define _WIN32_WINNT 0にする技を思いついたことを思い出した。

826 名前:デフォルトの名無しさん :05/03/03 22:19:16
Windowsプログラミングができると尊敬されますか?

827 名前:デフォルトの名無しさん :05/03/03 22:29:10
いんや

828 名前:デフォルトの名無しさん :05/03/04 00:42:03
むしろ奴隷にされる

829 名前:デフォルトの名無しさん :05/03/04 00:46:04
奴隷はいやだ!
奴隷はいやだ!
奴隷はいやだ!

830 名前:デフォルトの名無しさん :05/03/04 00:53:42
文字列が、Windowsのファイル名として適当なものであるかを判定する関数ってあるでしょうか?

hoge("filename.cpp");  //true
hoge("text");       //true
hoge(".");         //「.」一文字はファイル名にならないのでfalse
hoge("2005\\03\\05");  //「\」をファイル名に使うことはできないのでfalse

こんなことができないかなと・・・

831 名前:デフォルトの名無しさん :05/03/04 02:17:30
>>830
CreateFile

832 名前:デフォルトの名無しさん :05/03/04 03:27:12
質問です。次の手順でコンボボックスを操作するものとします。(Windows XP)
 (1) 「ドロップダウン」でコンボボックスを作成
 (2) 1つ以上のアイテムを追加 (例:"Windows")
 (3) 追加したアイテムのうちの1つと同じ文字列を先頭から一部だけ入力 (例:"Win")
 (4) MoveWindow() もしくは SetWindowPos() でコンボボックスのサイズを変更
このようにすると、フォーカスの有無にかかわらず勝手に "Windows" が選択され、
表示されてしまいます。"Win" を表示したままサイズを変更する方法をご存知の方が
いらっしゃいましたら、どうか教えてください。よろしくお願いします。

833 名前:デフォルトの名無しさん :05/03/04 07:13:15
>>828
理由言ってみ?

834 名前:デフォルトの名無しさん :05/03/04 10:17:32
ふと疑問に思ったんだけど、文字コードを1byteしか使わない国(アメリカ等)の
ファイル名に0x81〜0x9Fや0xE0〜0xFFが使われてる事ってあるのかな?


835 名前:デフォルトの名無しさん :05/03/04 10:52:23
昔はそう言うコードを持ったファイル名のファイルを埋め込むツールがあって困った。

836 名前:デフォルトの名無しさん :05/03/04 10:52:57
いかん、メール欄は気にしないでくれ。

837 名前:デフォルトの名無しさん :05/03/04 11:03:47
>>834
あるよ。
ウムラウトとかね。

838 名前:デフォルトの名無しさん :05/03/04 12:09:16
>>830
#define hoge(name) strpbrk(name, "\\/:*?\"<>|")

839 名前:デフォルトの名無しさん :05/03/04 12:50:55
>>830
前に調べたこと歩けど、APIでは用意されてないはず。
書いてあるの以外にも、ファイルの長さチェックやCOM1とかの予約名もあって結構複雑で。

>>838
例の3つ目に書いてある
>hoge(".");         //「.」一文字はファイル名にならないのでfalse
でいきなり駄目だと思うけど。

840 名前:デフォルトの名無しさん :05/03/04 13:30:03
実際にファイルを作ってみて、成功したらOKってことで……。

841 名前:デフォルトの名無しさん :05/03/04 13:36:26
>>838
一部の漢字を使用したファイル名も使えなくなるね。

842 名前:デフォルトの名無しさん :05/03/04 13:47:34
>>841
そのメル欄は>>170からそのまんまなんでつか?

843 名前:デフォルトの名無しさん :05/03/04 14:05:45
ファイル名なんて、ファイルシステムによって違うじゃん。

844 名前:デフォルトの名無しさん :05/03/04 14:08:14
NTFSはUTF-16だっけ?

845 名前:841 :05/03/04 14:32:04
しまった、またやったか。

846 名前:デフォルトの名無しさん :05/03/04 15:59:49
>>834
アメリカなんかのソフトでReadMeとかに突然、半角のゥやョが出てきて何かと思ったら、
欧文フォントにすると©や®になるなんてことはしょっちゅう。これはファイル名じゃないけど。

847 名前:デフォルトの名無しさん :05/03/04 17:02:52
Photoshopィ

848 名前:838 :05/03/04 17:25:28
>>839 >>841
うぬぬぬ…
定義済みファイル名は置いといて、
  #define hoge(name) (! _mbspbrk(name, "\\/:*?\"<>|") && (*name != '.' || *(name + 1) != '\0'))
これでどうだっっ

849 名前:デフォルトの名無しさん :05/03/04 17:38:04
>>848
無駄な足掻きを。
".."もダメだし、nameが""だったらname[1]はやっちゃダメだろう。

850 名前:デフォルトの名無しさん :05/03/04 17:44:30
そういや、Win9X限定で、cd ....とかやれるんだよね。

851 名前:デフォルトの名無しさん :05/03/04 17:45:21
>>841
もうそういうハンドルにしなさい。

852 名前:デフォルトの名無しさん :05/03/04 17:49:30
>>850
Win2kでNTFSでもふつーに .. 使えるんですけど。

>>851
やだ。

853 名前:デフォルトの名無しさん :05/03/04 17:52:20
>852
..(親)が出来るのは当然。
...(=..\..)や、
....(=..\..\..)ができると言う話だ。

854 名前:デフォルトの名無しさん :05/03/04 18:31:58
フルパスでファイルを開いた後、相対パスでファイルを開いた時や、
GetOpenFileNameでOFN_NOCHANGEDIRをつけない時などに、
うまく動作しなくなる事があるのですが、これはどういう現象なんでしょうか。

855 名前:デフォルトの名無しさん :05/03/04 18:45:56
カレントディレクトリが変更されたわけです。
特にGetOpenFileNameはねぇ。

856 名前:デフォルトの名無しさん :05/03/04 18:45:56
カレントディレクトリが変わってしまうから。

857 名前:逆アセ初級者 :05/03/04 18:47:06
逆アセンブラのファイルをDLしたのですが、
その後の使い方などよくわかりません。
どうすればいいのでしょうか?
DLしたURL
ttp://flasm.sourceforge.net/

858 名前:デフォルトの名無しさん :05/03/04 18:51:06
>>857
マニュアル嫁スレ違い

859 名前:デフォルトの名無しさん :05/03/04 18:54:59
>>855>>866
おおっ、時間がまったく同じ!
なるほど。ドスでcdでパスを変化させますが、
あれと同じようなことが起こっているんですね。
ありがとうございました。

860 名前:854, 859 :05/03/04 18:56:16
時間が同じでも、レス番が違っていた・・。

861 名前:デフォルトの名無しさん :05/03/04 19:18:45
>>834

半角カタカナの小さい「ゥ」・・・ゥ
著作権を表わす(c)のかわりによく使われる。

862 名前:デフォルトの名無しさん :05/03/04 19:39:59
GetFileTitleの反対で、パスの方を得るWin32APIがありましたら教えてください。

863 名前:デフォルトの名無しさん :05/03/04 19:56:41
GetFullPathName

864 名前:デフォルトの名無しさん :05/03/04 20:22:50
>>863
ありがとうございました。

865 名前:デフォルトの名無しさん :05/03/04 22:06:21
かなり激しく初歩的なことですが
BCCってVBみたいにランタイムみたいなもの必要ないですよね?

866 名前:デフォルトの名無しさん :05/03/04 22:07:29
>>865
氏ね

867 名前:デフォルトの名無しさん :05/03/04 22:19:36
>>865
たぶんkernel32.dllあたりが必須。

868 名前:デフォルトの名無しさん :05/03/04 22:24:35
VBのランタイムもmsvcrt.dllみたいにOS標準であったなら、
こんな差別はなかったかもしれない、ね。

869 名前:デフォルトの名無しさん :05/03/04 23:48:50
猿でも使えるようにするためにはある程度の犠牲はやむえない。

870 名前:デフォルトの名無しさん :05/03/04 23:50:48
Win32APIで小数点の扱い方がよく解らないので質問させていただきます。
FLOAT で変数を宣言したのですが、中の値がずっと0と表示されます。
FLOAT a とし、
CHAR ch;
wsprintf(ch , "a=%f" , a);
TextOut(hdc , 0 , 0 , xh , lstrlen(xh));
(途中を省略しています。)
これで「a=0」と表示されます。
何がおかしい、またはここをこうすればよいなど、教えていただきたいです。

871 名前:デフォルトの名無しさん :05/03/04 23:53:53
>>870
とりあえず、ソースファイルの拡張子を*.cから*.cppに変えてビルドを試してから来い。
Cしか使わないからという短絡的動機で拡張子を*.cにする初心者が多すぎる。

872 名前:デフォルトの名無しさん :05/03/04 23:57:32
>>870
wsprintfの書式指定にfはありません。

873 名前:870 :05/03/05 00:02:03
>>871
.cppにしても同じ状態でした。
>>872
小数を扱えて、それを文字列に代入するにはどうすればよいでしょうか?

874 名前:デフォルトの名無しさん :05/03/05 00:21:46
>>873
どうしてもと言うなら wsprintf(ch,"iTest=%d.%d", (int)a, (int)(a * 1000.0f) % 1000);

875 名前:デフォルトの名無しさん :05/03/05 00:46:21
>CHAR ch;
>wsprintf(ch , "a=%f" , a);
これって間違いだよねぇ?

876 名前:デフォルトの名無しさん :05/03/05 00:56:57
どこでも突っ込み放題だな。

877 名前:デフォルトの名無しさん :05/03/05 00:59:09
>>875
というかコンパイル通らないだろ。それ?

878 名前:デフォルトの名無しさん :05/03/05 01:26:28
WinXPでタスクバーの空のツールバーのサブクラス化しようとしたんだけど、
GetWindowLongとSetWindowLongで「アクセスが拒否されました。」が返ってくるんだけど
何かいい方法無いのかな?

879 名前:デフォルトの名無しさん :05/03/05 02:07:13
要するに、

>これで「a=0」と表示されます。

が嘘な訳で、答える気しない。

880 名前:834 :05/03/05 02:20:59
>>835
>>837
>>846
>>861
遅レスですが、勉強になりますた。
やはり、各言語に対応させるには、その言語分の
バージョンを作らないと駄目なんですね…。

1つのアプリで多言語対応…ってファイルを
扱う時点で無理って事ですか(;´Д`)

もし、やるとしたらOSの国コード調べて分岐とか…?


881 名前:デフォルトの名無しさん :05/03/05 04:09:46
CHAR ch;

882 名前:デフォルトの名無しさん :05/03/05 04:11:28
>>878
AdvancedWindowsでプロセスとスレッドについて勉強して出直して来い。

883 名前:デフォルトの名無しさん :05/03/05 04:39:54
マウスホイールメッセージをグローバルフックするのに
DLL で SetWindowsHookEx(WH_GETMESSAGE, ...) して、
WM_MOUSEWHEEL が来たら処理しているのですが、
以下の状況ではメッセージが送られてきません。

1.コンソールウィンドウがアクティブなとき
2.最小化ウィンドウがアクティブなとき(Alt+ESC使用時など)

上記の状況でもホイールメッセージを取得できる方法を知りませんか?


884 名前:デフォルトの名無しさん :05/03/05 05:30:22
WH_MOUSE_LL

885 名前:883 :05/03/05 11:46:56
>>884
素早いレスどうもです。
確かに WH_MOUSE_LL を使用する方法で試したら解決しました。
でもこの方法は NT系でしか使えないのが難点ですね…。
ひとまずはこれでやってみることにします。
ありがとうございました。


886 名前:デフォルトの名無しさん :05/03/05 13:28:32
XPなんかのパスワード入力ボックスはどうやって実現したら良いでしょうか。
あの「●●●」って表示されるやつです。

887 名前:デフォルトの名無しさん :05/03/05 13:53:39
とりあえずファイル名の規則について
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/fileio/base/naming_a_file.asp

>880
Windows 上なら UNICODE 使っとけ、になるんじゃないの?

888 名前:デフォルトの名無しさん :05/03/05 14:07:44
こんにちは

HeapAllocで作ったメモリのサイズを調べる関数は何でしょう?
char* cp=HeapAlloc( 〜 )

cp <−このポインタのデータサイズを知りたい

889 名前:デフォルトの名無しさん :05/03/05 14:10:45
HeapSize

890 名前:デフォルトの名無しさん :05/03/05 14:14:28
>>886
ttp://msdn.microsoft.com/library/default.asp?url=/library/en-us/shellcc/platform/commctls/editcontrols/editcontrolreference/editcontrolstyles.asp

891 名前:888 :05/03/05 14:37:16
>>889
ありがとうございました。

892 名前:デフォルトの名無しさん :05/03/05 15:34:11
>>891
MSDNでHeapAllocを見ればSee Alsoに「HeapSize」って入ってるんだか
ら、自分で調べられるようになろうな。



893 名前:デフォルトの名無しさん :05/03/05 16:13:50
>>892
君、的はずしまくってるんだけど。
多分コメントしようがないと思うぞ。
はずしすぎてて。

894 名前:デフォルトの名無しさん :05/03/05 17:17:19
GlobalAllocやHeapAllocで、動的にメモリ配置をした場合、
なぜか例外が多発するんです。

文字列の長さを、Setする文字列にあわせて動的にサイズ変更をしたいのですが、
例外が多発します。
この問題はどのようにすればクリアー(解決)できるのでしょうか。

895 名前:デフォルトの名無しさん :05/03/05 17:20:22
>>894
「クリアー(解決)」



なんでこういう余計なことするの?理由書いてみ?

896 名前:デフォルトの名無しさん :05/03/05 17:22:34
クリアーと入力した直後に、(消去)と思われないようにするために、(解決)とつき加えました。

897 名前:デフォルトの名無しさん :05/03/05 17:27:48
そんなもん「つき加え」なくても「クリアー」を削除して改めて「解決」と書けばいいじゃん。
まぁ、ソース晒すのが一番の近道だね。

898 名前:894 :05/03/05 17:39:22
#include "stdafx.h"
#include "Memory.h"

CMemory::CMemory(){
//hProcess=HeapCreate(HEAP_GENERATE_EXCEPTIONS,128,64000);
}

CMemory::~CMemory(){
Release();
}

void CMemory::Allocate(SIZE_T size){
pVoid=(char*)HeapAlloc(GetProcessHeap(),HEAP_GENERATE_EXCEPTIONS|HEAP_ZERO_MEMORY,size);
}

void CMemory::ReAllocate(SIZE_T size){
pVoid=(char*)HeapReAlloc(GetProcessHeap(),HEAP_GENERATE_EXCEPTIONS,pVoid,size);
}

char* CMemory::Get(){
return (char *)pVoid;
}


899 名前:デフォルトの名無しさん :05/03/05 17:39:39

unsigned long CMemory::GetSize(){
unsigned long ret;
ret=(unsigned long)HeapSize(GetProcessHeap(),HEAP_NO_SERIALIZE,(void*)pVoid);

return ret;
}

void CMemory::CopyMemory(CMemory* pSrcMem){
//
long size=pSrcMem->GetSize();
ReAllocate(size);

//
int c;
char* pDstMem=Get();
char* pSrcMem2=pSrcMem->Get();

for(c=0;c<size;c++){
*pDstMem=*pSrcMem2;
pDstMem++;
pSrcMem2++;
}
}

void CMemory::Release(){
HeapFree(GetProcessHeap(),0,(void*)pVoid);
}

900 名前:894 :05/03/05 17:42:36
↓HeapAlloc
void CMemory::Allocate(SIZE_T size)
↓HeapReAlloc
void CMemory::ReAllocate(SIZE_T size)
↓char*にキャストして返り値
char* CMemory::Get()
↓サイズを得る
unsigned long CMemory::GetSize()
↓複製
void CMemory::CopyMemory(CMemory* pSrcMem)
↓解放
void CMemory::Release()


今年からプログラミングを始めた大学生です。
なにぶん、初心者でわからない点が多いのでアドバイスいただけたらうれしいです。

901 名前:デフォルトの名無しさん :05/03/05 17:46:25
>>894
メモリ確保失敗してるのに文字列をコピーしてるとか
ポインタとハンドル混同してるとか
確保した領域よりデカい文字列入れてるとか
そんなとこだろ

902 名前:デフォルトの名無しさん :05/03/05 17:48:02
>>896
アホの上塗りか。素直に「アホだから」ってかいときゃいいんだよ。

>>897
まさにその通り。アホのフォローは大変だな。

903 名前:デフォルトの名無しさん :05/03/05 18:10:04
>>902
ha ha ha
質問者より3ヶ月早くプログラミングを始めただけで上級者気取りか。
おめでてーな。

904 名前:デフォルトの名無しさん :05/03/05 18:38:31
>>903
技術以前の問題ですが。

それすらも分からないのに勝手に入ってこないでください。

905 名前:デフォルトの名無しさん :05/03/05 21:29:40
LVCOLUMNのpszTextにはconst char *を渡しても良いですか?
リストコントロールが自分で作ったバッファにコピーして、それを使ってくれるの?


906 名前:デフォルトの名無しさん :05/03/05 21:35:29
>>903
期間は関係ない。理解度の問題。
10年やってもアフォはアフォ。

907 名前:デフォルトの名無しさん :05/03/05 21:41:52
>>905
いいよ

908 名前:デフォルトの名無しさん :05/03/05 21:43:07
>>894
終端null分を確保していないに3000バッファ

909 名前:デフォルトの名無しさん :05/03/05 22:13:11
>>906
こらこら、君も理解できてないのに分かったようなレスを
しないように。

910 名前:デフォルトの名無しさん :05/03/05 23:37:42
>>907
サンキュー

911 名前:デフォルトの名無しさん :05/03/05 23:42:46
ファイルを作成するときに与えられたパスが存在しない場合、
「なんちゃらフォルダを作成します」とか表示してファイルを作成できるAPIはありますか?


912 名前:デフォルトの名無しさん :05/03/05 23:44:13
フォルダを作成するつってるのに、ファイルを作成するんですか?
おかしなAPIですね。

913 名前:デフォルトの名無しさん :05/03/05 23:46:40
それいただき。

914 名前:デフォルトの名無しさん :05/03/05 23:56:26
ファイルを作成するときに、そのパスが存在していない場合、
そのことをユーザーに確認するダイアログを表示し、
OKを押下された場合にフォルダを作成して、
そこにファイルを作成できるAPIはありますか?


915 名前:デフォルトの名無しさん :05/03/05 23:58:55
>>914
そんなもんはない。
CreateDirectory
MessageBox
この辺使って自分で作れ。


916 名前:デフォルトの名無しさん :05/03/06 00:12:01
そのうち、「〜なソフトを作れるAPIはありますか?」という質問が…

917 名前:デフォルトの名無しさん :05/03/06 00:18:57
CPhotoshopクラスの使い方を教えてください^^

918 名前:デフォルトの名無しさん :05/03/06 00:27:18
>>915
そうします。ありがとう。

919 名前:デフォルトの名無しさん :05/03/06 00:29:20
>>917

CPhotoshop ps;
for(;;)
 sell(ps.clone());


920 名前:デフォルトの名無しさん :05/03/06 00:31:51
通報しますた

921 名前:abobe :05/03/06 00:40:33
僕は何も悪いことはしていませんよ

922 名前:デフォルトの名無しさん :05/03/06 00:48:06
CreateNamedPipe()について、
第2引数にFILE_FLAG_OVERLAPPEDフラグを指定しない事と
第3引数にPIPE_WAITフラグを指定する事は同じ意味でしょうか?
同期モード、オーバーラップモード、ブロッキングモード、非ブロッキングモードの
意味を理解するのに混乱してしまっています。

923 名前:デフォルトの名無しさん :05/03/06 00:48:40
>>915
普通はSHCreateDirectoryEx()でしょ。

924 名前:デフォルトの名無しさん :05/03/06 00:54:09
>>923
Minimum operating systems Windows 2000, Windows Millennium Edition
だしなぁ・・・

925 名前:デフォルトの名無しさん :05/03/06 01:07:34
シャアウェアを作るAPIはありますか?

926 名前:デフォルトの名無しさん :05/03/06 01:18:19
赤く塗っとけ。

927 名前:デフォルトの名無しさん :05/03/06 01:33:33
>>919
sellのtargetを指定してないな。
エラーを吐くぞ

928 名前:デフォルトの名無しさん :05/03/06 04:48:36
>>923,924
対話ダイアログはないけど
MakeSureDirectoryPathExists()とか。

929 名前:デフォルトの名無しさん :05/03/06 06:08:13
>>912
Windows使ったことないのか?というか質問の意図が分かってなさそう。

930 名前:デフォルトの名無しさん :05/03/06 08:25:31
興味で質問するんですが、

あるファイルを開いているプロセスを調べたり、
あるプロセスが開いているファイルハンドルを調べたりするってどうやるんですか?

要するにこういうことなんですが
ttp://www.sysinternals.com/ntw2k/freeware/procexp.shtml

931 名前:デフォルトの名無しさん :05/03/06 10:19:36
>>930
興味本位での質問はNGです。

932 名前:デフォルトの名無しさん :05/03/06 10:43:04
朝からすいません。

フォントを作る際、
       int fontsize=12;
       LOGFONT logfont;
memset(&logfont, NULL, sizeof(logfont));
logfont.lfHeight = fontsize;
logfont.lfWeight = FW_NORMAL;
logfont.lfCharSet = SHIFTJIS_CHARSET;
logfont.lfOutPrecision = OUT_DEFAULT_PRECIS;
logfont.lfClipPrecision = CLIP_DEFAULT_PRECIS;
logfont.lfQuality = DEFAULT_QUALITY;
logfont.lfPitchAndFamily = FIXED_PITCH;
strcpy(logfont.lfFaceName, "MS ゴシック");

と、フォントのサイズをint fontsize=12;としたのですが、MS-メモ帳と比べてフォントサイズの大きさに違いがあるんですけども、
何か修正しなければならないことはあるのでしょか?
MS−メモ帳と同じ大きさにしたいんです。

933 名前:デフォルトの名無しさん :05/03/06 11:11:41
>>932
たしかメモ帳の初期値はFixedSysの14ポイント。

934 名前:932 :05/03/06 11:17:16
>>933
ええ、メモ帳のフォントのサイズも「12」と合わせた上で比較したのですが、大きさが異なるんです。
私の知識不足からくるものということはわかってますが、
どこに修正を加えればいいのでしょうか?

935 名前:デフォルトの名無しさん :05/03/06 11:39:29
>932
メモ帳のフォントで使われている単位は「ポイント」
それに対して、LOGPONTのlfHeightは「ピクセル」
12センチと12インチを比べても一致しないのと同じこと。
相互変換にはGetDeviceCaps()を使うけど、定番の処理なので検索すればすぐ見つかる。


936 名前:932 :05/03/06 12:09:03
>>935
解決しました。
ありがとうございます。

937 名前:デフォルトの名無しさん :05/03/06 13:19:56
>>930
> あるファイルを開いているプロセスを調べたり、
> あるプロセスが開いているファイルハンドルを調べたりするってどうやるんですか?

使ったこと無いけど、NTネイティブAPIをつかえばできると思う。
ZwQuerySystemInformationとかそのあたり。

http://www.pearsoned.co.jp/washo/win/wa_win49-j.html
http://www.amazon.co.jp/exec/obidos/ASIN/4891001917/250-4347431-2972203

938 名前:デフォルトの名無しさん :05/03/06 22:23:51
Win32 VC++のサンプルにあった、Spyプログラムを動かしています。
IE6の各種イベント(ボタンをおしたりメニューを選択したり)はフックできますが
(WM_COMMANDがフックされる)、例えばFireFoxのイベントは取得できません
(例えばメニュー選択中にMENU_SELECTは発生しない)。

Beckyのイベントはフックで来ますが、Netscape7.1のイベントは取得できません。

すべてのイベントを取得するにはどうしたらよいでしょう?


939 名前:デフォルトの名無しさん :05/03/06 22:32:35
FirefoxのメニューはそもそもWindowsのメニューコントロール使ってないんだろ。

940 名前:デフォルトの名無しさん :05/03/06 22:35:31
オープンソースなんだから

941 名前:デフォルトの名無しさん :05/03/06 23:31:45
メニューコントロールって何よ

942 名前:デフォルトの名無しさん :05/03/06 23:42:28
WinXPで
InitializeCriticalSectionAndSpinCountを使おうと思ってコンパイルしたら
error C3861: 識別子は、引数依存の照合を使用しても見つかりません。
と言われて、仕方ないんで#define _WIN32_WINNT 0x0501と書いたらとりあえずエラーは出なくなったんだけど、
これでいいのかな?それとも何か別の正しい方法があるのかな

943 名前:デフォルトの名無しさん :05/03/07 00:02:10
AdvancedWindows(ry

944 名前:デフォルトの名無しさん :05/03/07 08:27:10
ウィンドウクラス定義するときの背景ブラシを

wc.hbrBackground = CreateSolidBrush(RGB(0, 0, 0));

ってした場合ってこのブラシ破棄しないとダメぽ?


あと、BCCとVCとかBCBとかの総合環境ってのはどのくらい違うのでせうか・・。


945 名前:デフォルトの名無しさん :05/03/07 09:14:00
>>942
その手の定義が必要なものは見たまま、
使用するOSがそのバージョン以上であることを要求するからだよ。
デフォルトの状況だと昔のバージョンのOSでも動く関数しか使えない状態になってる。

仮に
_WIN32_WINNT 0x0501
を定義しないと使えないのであれば、その関数はWinXP以上の環境でないと使えない関数ということになる。
(NT4.0・2000等では動かない)

InitializeCriticalSectionAndSpinCountの説明見ると
 Windows NT 4.0 SP3 以降
 Windows 98 以降
となっているのでもう少し定義Verをさげられるんじゃまいかな?
面倒なのでその辺は自分でしらべておくれ。

946 名前:デフォルトの名無しさん :05/03/07 09:19:09
>>944
UnregisterClass時にシステムが破棄するから自分で破棄しちゃだめぽ と書いてある。

自前でUnregisterClass呼ばなくてもプロセス終了時にUnregisterClassされるはずなので
普通にアプリ作る場合はUnregisterClassも呼ばないかな、あんまり。


947 名前:デフォルトの名無しさん :05/03/07 13:45:09
質問です。
GetCurrentThreadで返されたハンドルを他のスレッドに渡して使わせるには、
DuplicateHandleしないといけないんですよね?

948 名前:デフォルトの名無しさん :05/03/07 13:54:24
え、プロセス間で共有するときに使うんじゃないの?

949 名前:デフォルトの名無しさん :05/03/07 14:12:16
>>947
その場合DuplicateHandle必須。
GetCurrentThreadが返す擬似ハンドルは、他のスレッドからは使えないと思った方がいい。

>あるスレッドがこの関数を使って、自分自身を表す擬似ハンドルを作成しても、
>他のスレッドは最初のスレッドを参照する目的ではその擬似ハンドルを利用
>できません。擬似ハンドルは常に、その擬似ハンドルを使っているスレッド自
>身と解釈されます。
http://www.microsoft.com/japan/msdn/library/ja/jpdllpro/html/_win32_getcurrentthread.asp?frame=true

950 名前:デフォルトの名無しさん :05/03/07 15:11:05
#include <io.h>
#include <stdio.h>

void main( void )
{
intold ;
FILE *fp;

old = dup( 1 ) ;
fp = fopen( "data", "w" ) ;
_dup2( _fileno( fp ), 1 ) ;
puts( "この行はファイル 'data' に出力されます。\r\n" );
printf("hoge\n") ;
fflush( stdout );
_dup2( old, 1 ) ;
printf( "foo" ) ;
fclose( fp );
getchar() ;//ここのgetcharが、fooより先に表示されてしまうのは、なぜなんですか?
}
誰か分かる人いますか?

951 名前:あら :05/03/07 15:15:38
ウィルス送ってきて〜 お願い




952 名前:デフォルトの名無しさん :05/03/07 15:16:33
どこら辺がwin32apiなのやら

953 名前:デフォルトの名無しさん :05/03/07 15:44:25
質問ですが、
GetDC(m_hWnd)
したあと、必ずReleaseDCをしなければならないと決まりがありますが、
特にReleaseDCをしなくても、エラーは出ません。

これはGetDCをするたびに、メモリ領域が作成され、
終了後、すぐにReleaseで削除しないといけないということなのでしょうか?

GetDCを呼び出す回数が多いので、いちいちReleaseDCを呼び出すのが難です。

954 名前:デフォルトの名無しさん :05/03/07 15:50:02
>>953
Use MFC.

955 名前:デフォルトの名無しさん :05/03/07 15:50:58
>>950
「getcharが表示される」とはどういう意味?
それから、スレ違い。

956 名前:デフォルトの名無しさん :05/03/07 15:52:44
>>953
WTLについてるCDCとかCPaintDCがお勧め

957 名前:デフォルトの名無しさん :05/03/07 16:23:10
>>953
文字列表示関数、ビットマップ表示関数などを作って、引数の指定によっては、
関数の中で、Get〜Releaseを行うみたいな事をすればいい。

958 名前:デフォルトの名無しさん :05/03/07 16:25:23
WM_CREATEでGetDCしてWM_DESTROYでReleaseDCすりゃいいよ。

959 名前:デフォルトの名無しさん :05/03/07 16:50:38
CreateProcessして出来たプログラムから、
呼び出し元のウィンドウハンドルを得る方法を教えてください。

呼び出し先への引数で、ウィンドウクラス名、ウィンドウタイトル名を渡して、
呼び出し先でFindWindowという方法は思いついたのですが、
ウィンドウクラスが渡せない状況の時はどうすればいいでしょうか。

960 名前:デフォルトの名無しさん :05/03/07 16:56:14
>>959
ウィンドウクラス名、ウィンドウタイトル名が渡せるのなら
ウィンドウハンドルを直接渡せばいいじゃない。

961 名前:959 :05/03/07 17:04:19
>>960
すいません。ウィンドウハンドルも渡せません。

例えば、一般のテキストエディタからプログラムを呼び出し、
その引数にテキストエディタ名(.exe)、編集中の.txtを渡して、
呼び出し元の方でなんかやる見たいな事がしたいんです。

962 名前:959 :05/03/07 17:06:19
>>961
間違えました。呼び出し先でなんかやるです。
編集中の.txtは、ファイル名の事です。

963 名前:デフォルトの名無しさん :05/03/07 17:14:20
>>961
ウィンドウハンドル渡せない理由が無いが?

964 名前:959 :05/03/07 17:24:56
>>963
JmEditor2というテキストエディタからプログラムを呼び出したくて、
ツール実行という機能があるので、それで呼び出します。

ファイル名は、当然知っているので簡単に渡せますが、
ウィンドウクラス名、ウィンドウハンドル名は、
JmEditor2の中にアクセスできない状況(ユーザーとして使う状況)では、
分からないと思うのですが。

965 名前:デフォルトの名無しさん :05/03/07 17:35:40
ウィンドウクラス名、ウィンドウタイトルのみっでは同名クラス同タイトルの別ウィンドウが存在しうるので一意の同定は不可能。


966 名前:デフォルトの名無しさん :05/03/07 17:39:51
JmEditor2側にそういう仕組みが無いならFindWindow等で調べるしかない。

967 名前:959 :05/03/07 18:04:48
>>965>>966
そうですよね。%fとかで、ファイル名は簡単に分かるんですが、
ウィンドウクラス名、ウィンドウハンドルも渡す機能が欲しいです。

所で、テキストエディタから、別のテキストエディタを呼び出して、
その引数に現在編集している.txtのファイル名を渡すと、
(EcoNote.exe(フルパス一時ファイル名) → JmEditor.exe)
呼び出し先で編集して、呼び出し元の.txtも変わる見たいな事が
出来る事が分かったんですけど、これはどういう感じで行っているのでしょうか。

ファイル名しか渡していなく、僕の状況と同じだと思うんですが、
こちらはアクセスして処理できています。

968 名前:デフォルトの名無しさん :05/03/07 18:21:16
>>967
FindFirstChangeNotificationで監視していて
変更されたら再読み込みしてるとか?

969 名前:959 :05/03/07 18:29:18
>>968
そのキーワードで調べてみます。
お答えくださった皆様、どうもありがとうございました。
うまくやるやり方が分かった時は、ご報告させていただきます。

970 名前:デフォルトの名無しさん :05/03/07 23:07:22
えと、質問です。

RubyでWinInet.dllを使おうとしているのですが、なんだかうまくいきません。
いかんせん、RubyでWin32APIを使うのは初めてなので、試行錯誤の連続ですが。

このサイトのVB用コードを参考に、翻訳+αしてみました。
ttp://www.geocities.co.jp/SilkRoad/4511/vb/wininet.htm

これがソースです。汚くてすいません;;
ttp://www.freewebz.com/pme_jp/inetlib.rb

このファイルを外部ライブラリとしてrequireした後、
(変数)=GetHttpData("(URL)")と呼び出します。

しかし、irbでやってみたところ、なぜか予期しない"1"を返してきます。
なぜでしょ?

971 名前:970 :05/03/07 23:11:56
あ、それから「socketライブラリ使えばできるじゃないか」ってツッコミはなしの方向でw

972 名前:デフォルトの名無しさん :05/03/07 23:20:13
それはWin32APIの質問じゃなくてRubyの質問なんじゃないのか

973 名前:デフォルトの名無しさん :05/03/08 00:13:08
>>946
ありがとうございました

974 名前:デフォルトの名無しさん :05/03/08 00:37:46
リストビューコントロールについて2つ質問させてください。

一つ目はカラムの数を知ることができるマクロ(メッセージ)についてです。
ListView_GetColumnCountみたいなマクロがあれば一番なんですが、ないみたいなので
今のところListView_GetColumnでカラムのインデックスを0から増やしていって
FALSEが返るまで呼び出すことで数えています。
ただ、このやり方でホントに常に正しく数えられるのかどうか分からないし、
いまいちスマートさに欠けるやり方なのでよりよい取得方法があれば教えてください。


二つ目はListView_GetColumnWidthについてです。MSDNを見ると・・・

If you use the returned string width as the column width in a call to the ListView_SetColumnWidth macro,
the string will be truncated. To retrieve the column width that can contain the string without truncating it,
you must add padding to the returned string width.

となっていて、カラム幅を適切に設定したいならpaddingを足せとのことですが、このpaddingの値を適切に
取得する方法が分かりません。

以上です。どなたかご存知の方がいればよろしくお願いします。

975 名前:974 :05/03/08 00:40:49
すみません。二つ目の質問のマクロは
ListView_GetColumnWidth
じゃなくて
ListView_GetStringWidth
でした。
英文もこっちのマクロの説明です。

あ、あとあげ忘れてた。

976 名前:デフォルトの名無しさん :05/03/08 00:45:00
>>959
ちょっとよく分からないで書いてる部分もあるけど、
親プロセスを取得することは可能みたい。
というわけで、FindWindowしたウィンドウが親プロセスの
ウィンドウかどうかを確かめるなどの方法で、確実に起動元の
ウィンドウを特定することは可能だと思う。

親プロセス取得は、
- Retrieving the parent of a process (WinNT)
ttp://www.codeguru.com/Cpp/W-P/win32/article.php/c1437/
- class Win32_Process
http://msdn.microsoft.com/library/en-us/wmisdk/wmi/win32_process.asp
※ ParentProcessIdというメンバ
あたりを見てみました。

977 名前:デフォルトの名無しさん :05/03/08 01:31:51
>>974
一つ目はListView_GetHeaderしてHeader_GetItemCountかな。

978 名前:974 :05/03/08 02:12:18
>>977
どうもです。一個目のほうはうまくいきました。

二つ目は今のところ適当に10pixelほど足してごまかしています。
カラム間の境界部分をダブルクリックするのをエミュレートすれば勝手に幅を整えてくれるとも
考えたのですが、なんか余計に泥臭くなってしまいそうでいまいちです。

Windows内部ではこの幅の調整の処理をうまく行えているということは
何か方法があるとは思うのですが・・・


979 名前:デフォルトの名無しさん :05/03/08 02:24:31
単純にカラム幅をアイテム幅に合わせたいなら
ListView_SetColumnWidthをLVSCW_AUTOSIZEでかな。

980 名前:974 :05/03/08 02:43:55
>>979
ガ━━(゚Д゚;)━━━ン!!
・・・今までの苦労はいったいorz

何はともあれ、どうもありがとうございました。

981 名前:959 :05/03/08 07:47:57
>>976
ありがとうございます。やってみます。

982 名前:デフォルトの名無しさん :05/03/08 09:40:48
WMIでワークグループ取得ってどこでやるんでしょうか?
Win32_NetworkAdapter
Win32_NetworkAdapterConfiguration
Win32_NetworkAdapterSetting
を使ってみたのですが、該当項目が見当たらなくて。
取得不可能??


983 名前:デフォルトの名無しさん :05/03/08 10:07:56
>>982
Win32_ComputerSystemのDomainじゃダメ?

984 名前:デフォルトの名無しさん :05/03/08 10:59:30
>>983
とれました!
ネットワークと違うところに格納されているとは盲点でした。
ありがとうございました。

985 名前:デフォルトの名無しさん :05/03/08 12:09:36
WNDClASSで決まっているスタイルを変更する方法を教えてください。


986 名前:デフォルトの名無しさん :05/03/08 12:28:48
>>985
SetClassLongPtr 関数を使え。

987 名前:985 :05/03/08 12:40:51
できました、ありがとうございました。


988 名前:デフォルトの名無しさん :05/03/08 12:47:09
window messageをアプリケーションに送るツールありませんか?

989 名前:デフォルトの名無しさん :05/03/08 13:02:00
>>988
そのくらい自分で書け

990 名前:デフォルトの名無しさん :05/03/08 13:13:02
SendMessage(otherAppHWnd, WM_APP, wParam, lParam);

991 名前:デフォルトの名無しさん :05/03/08 15:44:34
次スレまだー?

992 名前:デフォルトの名無しさん :05/03/08 19:24:41
【AdvancedWindows】Win32API質問箱 39【読め】

993 名前:デフォルトの名無しさん :05/03/08 20:28:51
39かよっ!

994 名前:デフォルトの名無しさん :05/03/08 20:36:32
【AdvancedWindows】Win32API質問箱 29【読め】


995 名前:デフォルトの名無しさん :05/03/08 20:40:46
Win32API質問箱 Build29
http://pc5.2ch.net/test/read.cgi/tech/1110281860/

996 名前:デフォルトの名無しさん :05/03/08 20:48:51


997 名前:デフォルトの名無しさん :05/03/08 20:57:42


998 名前:デフォルトの名無しさん :05/03/08 21:03:59
      ((
       ) )
     ノ           /^l'"'"~/^i'ツ'ッ.,
    ((  ((        ヾ          ヾ    モフー・・・
     )    ) 丿   ミ ´ ∀ `      彡
    (( (   ノノ     ッ       _    ミ 
     ∴∵ >>      (´彡,.     (,,_,ノ  _,,.ヽ 
   //》||ヾミ\        "'"'゙''""''''゙""´

999 名前:デフォルトの名無しさん :05/03/08 21:13:47
ume-

1000 名前:デフォルトの名無しさん :05/03/08 21:17:30
このスレ終了。続きは次スレ。


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