2ちゃんねる ★スマホ版★ ■掲示板に戻る■ 全部 1- 最新50  

■ このスレッドは過去ログ倉庫に格納されています

Win32API 質問箱 Build10

1 :デフォルトの名無しさん:03/03/16 22:02
スレ立てるまでもない、Win32APIについての質問はこちらへどうぞ。
やさしいお兄さんたちが答えてくれるかも。
でも、質問する前に検索ぐらいしる!!
過去スレ・参考は>>2-5

MSDN Online
http://www.microsoft.com/japan/msdn/default.asp
猫でもわかるプログラミング
http://www.kumei.ne.jp/c_lang/index.html

2 :デフォルトの名無しさん:03/03/16 22:03
過去スレ
Win32API 質問箱 Build9
http://pc2.2ch.net/test/read.cgi/tech/1044929160/
Win32API 質問箱 Build8
http://pc2.2ch.net/test/read.cgi/tech/1040964626/
Win32API 質問箱 Build7
http://pc3.2ch.net/test/read.cgi/tech/1036654893/
Win32API 質問箱 Build6
http://pc3.2ch.net/test/read.cgi/tech/1032548635/
Win32API 質問箱 Build5
http://pc3.2ch.net/test/read.cgi/tech/1028580373/
Win32API 質問箱 Build4
http://pc3.2ch.net/test/read.cgi/tech/1023361418/
Win32API 質問箱 Build3
http://pc.2ch.net/tech/kako/1006/10067/1006783012.html
Win32API【2】
http://pc.2ch.net/tech/kako/1006/10067/1006783012.html
Win32API 質問箱
http://pc.2ch.net/tech/kako/991/991576947.html

3 :デフォルトの名無しさん:03/03/16 22:05
otu

4 :デフォルトの名無しさん:03/03/16 22:17
kare

5 :デフォルトの名無しさん:03/03/16 22:21
kano

6 :デフォルトの名無しさん:03/03/16 22:53
乙〜

7 :デフォルトの名無しさん:03/03/16 23:04
おまえら、本気でスレ立てた程度で疲れると思ってるのか?

8 :デフォルトの名無しさん:03/03/16 23:25
(・ε・)社交辞令

9 :デフォルトの名無しさん:03/03/16 23:29
>>7
疲れるよ。

10 :デフォルトの名無しさん:03/03/16 23:58
IMEの使い方を調べているのですが、分からないことがあるので教えてください。
WM_IME_COMPOSITIONメッセージハンドラで以下のようにしているのですが、
入力中の文字が見えなくなります。
一度ウインドウを非アクティブにしてまたアクティブにすると見えるようなのですが。
最後の行をreturn DefWindowProc();にすると、正常に表示されます。
メッセージをデフォルトのプロシージャにスルーしなければいけないのでしょうか
MSDNのWM_IME_COMPOSITIONの説明にはそのように書いてなかったのですが

HIMC imc = ::ImmGetContext(*this);
::ImmReleaseContext(*this, imc);
return 0;


11 :デフォルトの名無しさん:03/03/17 00:09
>>10
この辺は見た?
http://www.kumei.ne.jp/c_lang/sdk3/sdk_281.htm


12 :デフォルトの名無しさん:03/03/17 00:17
見ました。
しかし、EDITをサブクラス化してるので、
EDITの事情でCallWindowProcしてるのかも知れないし、
判断が付かなかったもので。

一見DefWindowProcして正しい結果が出てるので良いのかも知れないけど、
ホントに正しいのか不安なのです

13 :再掲:03/03/17 01:13
ツールバー作っててつまづいてしまってので、助けてください
文字だけのボタンをつけようとすると、

┌─────┬─────┬───
│       .│       .│
│字字字字字│字字字字字│
└─────┴─────┴───

こんな感じで空白が出来てしまうのです。
何かスタイルが足りない、とか教えてください。

14 :デフォルトの名無しさん:03/03/17 01:13
>>9
そういう事は、これぐらい直してから言ってもらおうか。

>>2
過去スレ
Win32API 質問箱 Build9
http://pc2.2ch.net/test/read.cgi/tech/1044929160/
Win32API 質問箱 Build8
http://pc2.2ch.net/tech/kako/1040/10409/1040964626.html
Win32API 質問箱 Build7
http://pc3.2ch.net/tech/kako/1036/10366/1036654893.html
Win32API 質問箱 Build6
http://pc3.2ch.net/tech/kako/1032/10325/1032548635.html
Win32API 質問箱 Build5
http://pc3.2ch.net/tech/kako/1028/10285/1028580373.html
Win32API 質問箱 Build4
http://pc3.2ch.net/tech/kako/1023/10233/1023361418.html
Win32API 質問箱 Build3
http://pc.2ch.net/tech/kako/1006/10067/1006783012.html
Win32API【2】
http://pc.2ch.net/tech/kako/1006/10067/1006783012.html
Win32API 質問箱
http://pc.2ch.net/tech/kako/991/991576947.html

15 :13:03/03/17 01:21
ちなみに、 TBSTYLE_LIST を加えると
┌─────┬─────┬───
│  字字字字│  字字字字│  字字
└─────┴─────┴───
こんな感じになってしまいます。
どなたか助けてください。



あと、↓これ書いたのはわたくしです。新スレで完全無視されるとは思いませんでした。
http://pc2.2ch.net/test/read.cgi/tech/1044929160/872,874

16 :デフォルトの名無しさん:03/03/17 01:52
*TBSTYLE_LIST ボタン イメージの右にボタン テキストが配置されます。

17 :デフォルトの名無しさん:03/03/17 02:52

┌─────┬─────┬───
│字字字字字│字字字字字│
└─────┴─────┴───

「==」は比較演算子


18 :デフォルトの名無しさん:03/03/17 03:19
何度も繰り返さなくたって「==」が比較演算子なのは分かってるよ。
いちいち蒸し返すなバカ。

19 :デフォルトの名無しさん:03/03/17 05:03
>>13
TBBUTTONのiBitmapにI_IMAGENONE(-2)を設定
ただしコモンコントロールv5.81(IE 5.01)以降が必要らしい。

20 :デフォルトの名無しさん:03/03/17 05:50
DLL内でCreateWindowを使うときは、InstanceはDLLのものを指定するのでしょうか?
それとも、呼び出しているexeのものを指定するのでしょうか?

21 :デフォルトの名無しさん:03/03/17 06:00
dll

22 :デフォルトの名無しさん:03/03/17 07:33
>>10
入力中文字表示をIMEで行うならDefWindowProc が要るんじゃなかろうか...
もう見ただろうけどSDKの説明(下記)を見ておもた。

 If the application has created an IME window, it should pass this message to that window.
 The DefWindowProc function processes this message by passing it to the default IME window.
 The IME window processes this message by updating its appearance based on the change flag given.

23 :デフォルトの名無しさん:03/03/17 07:43
>>20
呼出し元

24 :VB房:03/03/17 08:56
ファイルの作成日を取得するAPIってありますでしょうか?

25 :デフォルトの名無しさん:03/03/17 09:45
GetFileTime()

26 :VB房:03/03/17 10:42
>>25
サンクス

27 :デフォルトの名無しさん:03/03/17 18:35
┌─────┬─────┬───
│字字字字字│字字字字字│
└─────┴─────┴───


28 :デフォルトの名無しさん:03/03/17 19:23
>>19様ありがとう。無事に
┌─────┬─────┬───
│字字字字字│字字字字字│字字字
└─────┴─────┴───
となりました。

ただ、TBBUTTON::fsStyle に TBSTYLE_AUTOSIZE が必要なので、
後々同じ事をされる方はお気をつけて使用してください。

29 :デフォルトの名無しさん:03/03/17 19:52
LVS_EX_BORDERSELECT の値って何でしょうか?



30 :デフォルトの名無しさん:03/03/17 20:12
>>22
テキストエディタのソースをみると
やっぱり全てDefWindowProcに処理を渡してるので
それで正しいようですね、ありがとうございました

31 :デフォルトの名無しさん:03/03/17 20:24
>>934 >>936
えっ? 無いですか? とりあえずMSDNから一部コピペ
BOOL DelayedDeleteLockedFile (
LPCTSTR lpFileName // ファイル名
);

対応情報
Windows NT/2000:Windows NT 3.1 以降
Windows 95/98:Windows 95 以降
ヘッダー:Winbase.h 内で宣言、Windows.h をインクルード
インポートライブラリ:Kernel32.lib を使用
Unicode:Windows NT/2000 は Unicode 版と ANSI 版を実装



できません。

32 :デフォルトの名無しさん:03/03/17 20:29
ネタはもういいよ

33 :デフォルトの名無しさん:03/03/17 20:32
>>31
ネタだったの?

34 :デフォルトの名無しさん:03/03/17 20:52
ネタじゃなければmsdnのサイトへのリンクが出せるっしょ

35 :デフォルトの名無しさん:03/03/17 21:37
メール欄見れば一発

36 :デフォルトの名無しさん:03/03/18 02:39
すみません。最近のMSのキーボードに付いているメールを返信のスキャンコードと仮想キーコードを教えて下さい。

37 :デフォルトの名無しさん:03/03/18 03:31
http://members.tripod.co.jp/usr_vogel/main.html
ここ最高っす

38 :デフォルトの名無しさん:03/03/18 03:44
あれってメーカーが用意したドライバでメールソフトを起動するようにドライバ作ってんじゃないの?

39 :デフォルトの名無しさん:03/03/18 04:37
>>36
窓使いの憂鬱(キーバインド変更ツール)の設定ファイル(109.mayu)には
次のような設定が書かれてある。

def key キー名… = スキャンコード…

def key A= 0x1e
def key Mute= E0-0x20 # (Media Player)
def key ALCalculator= E0-0x21 # (N/A) Calculator
def key ACStop= E0-0x68 # (Internet Explorer)
def key ACForward= E0-0x69 # (Internet Explorer)
def key ACBack= E0-0x6a # (Internet Explorer)

40 :デフォルトの名無しさん:03/03/18 19:58
XPとかのボタンの上にマウスを乗せるとボタンが
変化するのがあるけど、今までの関数とどう
違うんですか?

41 :デフォルトの名無しさん:03/03/18 19:59
>>40


42 :40:03/03/18 20:03
>>41
例えばメッセージボックスのボタンでも
マウスをボタンの上に乗せると微妙に
色が変わるじゃん、ところが自分で
MessageBox(NULL............);
と記述しても、2000や98みたいな普通のボタン
なんだよね。

43 :デフォルトの名無しさん:03/03/18 20:06
http://hp.vector.co.jp/authors/VA015850/delphi/tips/etc13.html


とか。

44 :デフォルトの名無しさん:03/03/18 20:06
http://homepage2.nifty.com/sironekochan/windows/luna/luna_1.htm

とか。

45 :デフォルトの名無しさん:03/03/18 20:08
http://kotubunet.hp.infoseek.co.jp/king.htm

46 :デフォルト名無しさん:03/03/18 20:41
CDドライブを開けるコマンド教えてくろ

47 :デフォルトの名無しさん:03/03/18 20:49
mciSendString "set cdaudio door open"

48 :デフォルトの名無しさん:03/03/18 20:56
サンプルコード見せてくんろ

49 :デフォルトの名無しさん:03/03/18 21:53
>>48
検索しなヴォケ そこまで面倒見てられるか

50 :デフォルトの名無しさん:03/03/18 21:59
おまえらバカじゃないのか?ほんと自分は出来る風ですか?
ほんとにバカ、オメーラ、みんな、ネット荒らしとどこが違うんだ!?
ほんとな、おまえらはみんな、ここに来る資格ねーな!!
デフォルトの名無しさんだっけ!!おまえしね!!人が謝ってのに何が
あやしいっておまえみたいのがいるから日本がだめになるんだ!!
分かったバーカ!!もう荒らしでも何でもいいよ!!
オメーラみたいなバカどもにつき合ってもしかたないから!!
あんたらみたいのはもうこのよにもいらない !!

51 :デフォルトの名無しさん:03/03/18 22:00
いや、俺は出来る人ですが?

52 :デフォルトの名無しさん:03/03/18 22:14
おまえら
      に
      な
      ルトの
          て
          ー
          たいな
              の

意味わかんない

53 :デフォルトの名無しさん:03/03/18 23:18
不思議な読み方をするなあ・・・

54 :デフォルトの名無しさん:03/03/18 23:22
>>51
難しい縦読みだねぇ。ぜんぜん分からん。
それ、どっからコピペしてきたの?

55 :デフォルトの名無しさん:03/03/18 23:36
自分のウィンドゥを常にアクティブにしたいのですが
どうすればよいですか?
WM_ACTIVATEを出してもWindows98だとちゃんとアクティブに
なるのですがWindowsXPだとタスクバーが点滅するだけなのです。
よろしくお願い致します。


56 :デフォルトの名無しさん:03/03/19 00:02
>>55
Win2K以後の仕様です
抜け道はありますが
その前に設計意図を理解すべき

ワープロで仕事中にたまたま
や行の文字をタイプした瞬間に
メッセージボックスの飛び出し事故

食らってみればわかるけど
悲しすぎるんだよ

57 :55:03/03/19 01:16
>>56
ありがとうございます。
よろしければ、設計意図と抜け道のヒントを下さい。
お願い。

58 :デフォルトの名無しさん:03/03/19 01:25
>>56は、「〜しますか(y/n)」ってダイアログが突然出現して、有無をいわさずyキーを押してアボーンはまずいだろ…
っていうのが"タスクバーが点滅するだけ"の設計意図と俺は読んだが。


59 :デフォルトの名無しさん:03/03/19 01:36
XPだとフォーカス奪わないで右下にバルーンみたいの出るじゃない。
あれのまねすればいいんじゃないの(ヒント: SWP_NOACTIVATE
SW_SHOWNA)

60 :2:03/03/19 11:03
質問です

MessageBoxでダイアログを表示したいのですが
ダイアログ表示の際に右上のクローズドボックス(ペケボタン)を無効にしたいのですが
うまくいきません、引数もいろいろ調べたのですがそれらしきものも見つからず...

どういうふうにしたら右上のクローズドボックスを無効にできるんでしょうか?
よろしくお願いいたしますm(_ _)m

61 :デフォルトの名無しさん:03/03/19 11:37
>>60
MsgBoxを使わずダイアログを作った方が早道かと。

62 :55:03/03/19 11:57
>>58
>>59
ありがとうございました。

63 :デフォルトの名無しさん:03/03/19 11:58
>>61
そんなたいそうなものじゃないのです
単にメッセージを表示するだけなので...
「エラーがでました」等...

それでやっぱりペケボタン無効化する方法はないのでしょうか?


64 :デフォルトの名無しさん:03/03/19 12:00
>>63
ダイアログ1つ作るのも「そんなたいそうなもの」じゃないけどな

65 :デフォルトの名無しさん:03/03/19 13:22
>>61
あのダイアログに表示されるアイコンはどうやって取得すればいいのですか?

66 :61:03/03/19 13:25
>>63
MessageBoxIndirectならできるかもしれないけど面倒だから確認しない。

>>65
LoadIcon

67 :デフォルトの名無しさん:03/03/19 17:00
フルパスから拡張子のみ取り出すAPIってありませんか?

68 :デフォルトの名無しさん:03/03/19 17:12
SHGetSpecialFolderPath()あたりで取れる、特殊パスについての質問です。

Win98SE+IE5でCSIDL_PROGRAM_FILES_COMMONのパスを取りたい
のですが、何か方法はありますか?

SHGetSpecialFolderPath()はもちろんSHGetSpecialFolderLocation()あたりを
使った方法も試しましたが、駄目でした。

ttp://www001.upp.so-net.ne.jp/yamashita/product/csidlviewer.htm
↑こんなツールがあったんで試しに取得できるかやってみたんですが
これでも取得できず。

せめてCSIDL_PROGRAM_FILESでも取れれば、まだどうにかなるんですが
これも同じ結果。

やっぱり、WinME以降に入ってるVer5系列のshell32.dllが必要なのでしょうか…

69 :デフォルトの名無しさん:03/03/19 17:21
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion
のCommonFilesDirでも参照すれば?


70 :デフォルトの名無しさん:03/03/19 17:54
起動時にショートカットから起動したかどうか判断する方法
ないでしょうか?

71 :デフォルトの名無しさん:03/03/19 17:57
>>70
以前に同じ様な質問があったけど結論は「無い」だったと思う。

どんな理由で知りたいの?

72 :68:03/03/19 18:04
>>69
早速のレスありがとうございます。
とりあえず、組み込んで上手く取得できました。

それにしても、こんな所に記述されてたとは…
これからはレジストリを漁る習慣つけるべきかな

73 :デフォルトの名無しさん:03/03/19 18:53
>>67
rindex(path,'.')

74 :29:03/03/19 19:49
LVS_EX_BORDERSELECT の値をご存じの方いらっしゃいませんか


75 :デフォルトの名無しさん:03/03/19 19:53
>>74
0x00008000

76 :デフォルトの名無しさん:03/03/19 20:19
IEのようにステータスバーにプログレスバーを入れたいのですが、
やりか方がよくわかりません(MFCを使った例はよく見かけるんですが)。
もしご存じの方いらっしゃいましたらヒントでもいいので教えてください。
# オーナードローとか使わなければならないのでしょうか?

77 :デフォルトの名無しさん:03/03/19 23:26
SSL通信をしたいんだけど、目的がhttpsじゃないんです。
SChannelとかいうのをつかえばいいんでしょうか?

もし試してみたかたがおられましたら、ご教授お願いしやす。

78 :デフォルトの名無しさん:03/03/19 23:29
>>73
それで
dir.withdot\nodotfile
の拡張子を切り出したら楽しいことになりそう
というかrindexのどこがWin32なのかと小一時間(ry

79 :デフォルトの名無しさん:03/03/19 23:40
>>67
API は知らん。
VC なら、_splitpath(), _wsplitpath()

80 :デフォルトの名無しさん:03/03/19 23:45
>>76
ツールバーを親としてステータスバーを作る


81 :デフォルトの名無しさん:03/03/20 01:31
>>67 PathFindExtension()

82 :67:03/03/20 11:23
回答くださったみなさんありがとうです。
おかげさまでできました。

83 :デフォルトの名無しさん:03/03/20 16:10
フォルダを指定してそのフォルダ内が空かどうかを調べるAPIってありますか?

84 :デフォルトの名無しさん:03/03/20 17:19
普通に調べればいいじゃん。

85 :83:03/03/20 17:24
>>84
普通っていうのがわからないので困ってます。
今はFindFirstFileとFindNextFileで地道に検索してますけど
例外的なことがあったらいやなので。どうぞよろしくお願いします。

86 :デフォルトの名無しさん:03/03/20 17:36
PathIsDirectoryEmpty

87 :デフォルトの名無しさん:03/03/20 17:37
キー入力を受けるソフトを作っています
WM_KEYDOWNで受け取って、
::GetKeyNameTextにLPARAMを渡して名前を得ているのですが、
NumLockがonでもoffでも"Num 2"などが返り、NumLockの状態が反映されません。

自分で変換テーブルを持っても良いのですが、
Num 0>Ins、Num .>Del と、単純に変換しても
全てのキーボードが同じであるかどうか
調べが付かなかったので、ちょっと迷ってます。

何か良い解決方法無いでしょうか。

88 :83:03/03/20 18:43
>>86
ありがとです。
これってWin98以降なんですよね。まっ、いっか。

89 :29=74:03/03/20 21:47
>75
どうもありがとう


90 :デフォルトの名無しさん:03/03/20 23:45
言語バーの様にタスクバー上に配置できるプログラムを作ろうと思っています。
具体的にはタスクバーにパソコンのバッテリ残量を表示したいのです。
Googleやらで色々調べたのですが、いい方法が見つかりません。
IBMのThinkpadに私の思っているのと全く同じ動作をするバッテリメーターが
付いているのでできないという事はないと思うのですが…。
ご存じの方いらっしゃいましたらご教授頂きたいです。

91 :デフォルトの名無しさん:03/03/20 23:56
>>90
Googleですぐに見つかるサンプルでダメ?
チンコのバッテリメータも同じやり方をしてるはずなんだが。


92 :デフォルトの名無しさん:03/03/21 00:21
>>91
何というキーワードで検索したらヒットしますか?
「タスクバー、ツールバー、AppBar、デスクトップツールバー、バッテリー表示、API」
この辺りの組み合わせで検索してたのですが、見つからなかったんです。

93 :デフォルトの名無しさん:03/03/21 00:25
Shell_NotifyIconでええやろか?

老婆心ながらメニュー出すときはSetForegroundWindowを忘れずに。
これで悩んだ。

94 :デフォルトの名無しさん:03/03/21 00:27
>>93
タスクトレイにアイコンを表示するのではなく、タスクバー上に置きたいのです。
できるかわかりませんが、理想はタスクバー上にクライアント領域を持つ事です。

95 :デフォルトの名無しさん:03/03/21 00:42
仮想フォルダを作れば出来るんじゃないの?

96 :デフォルトの名無しさん:03/03/21 00:48
んじゃあこういう手でどうじゃろか?

タスクバー
FindWindow("Shell_TrayWnd",NULL);

タスクトレイ
FindWindowEx(hwn,0,"TrayNotifyWnd",NULL);

97 :デフォルトの名無しさん:03/03/21 00:49
>>94
IDeskBandかな

98 :デフォルトの名無しさん:03/03/21 01:08
>>96
タスクバーにクライアント領域を持つだけだとどうも難しそうですね。
ありがとうございました。

>>97
まさしくそれが思っていたものっぽいです。
色々資料当たってがんばろうと思います。
ありがとうございました。

99 :デフォルトの名無しさん:03/03/21 01:26
「スワップファイルがあるドライブは何ドライブか」
これを調べるためのAPIはなんでしょうか?


100 :デフォルトの名無しさん:03/03/21 06:26
1Gのファイルを作成する際に、実際に1G書き込まずに先にディスク領域だけ確保するには
どうしたらよいのでしょうか。

101 :デフォルトの名無しさん:03/03/21 06:35
SetFilePointer(Ex)>SetEndOfFile

102 :デフォルトの名無しさん:03/03/21 08:10
LayeredWindowで不透明度0にした場合って
そのぶぶんに穴が空いてしまうのでしょうか?

103 :デフォルトの名無しさん:03/03/21 08:55
>>100
> 実際に1G書き込まずに
NTFSだとセキュリティ上の理由で必ずゼロ埋めされるから不可能

104 :デフォルトの名無しさん:03/03/21 08:58
BSTRを作成するときは必ずSysAllocStringを
使わなくてはならないのでしょうか?
それともBSTRと同じメモリ構造を自分で用意しても
かまわないのでしょうか?

105 :デフォルトの名無しさん:03/03/21 09:09
>不透明度0
ウィンドウが透明になる(=見えなくなる)だけだと思うが

106 :デフォルトの名無しさん:03/03/21 09:17
>>104
作成・廃棄は自分しかやらず、外部には参照しかさせない、
と限定できるならいいんじゃない?
混乱するから俺ならやらないけど・・・

107 :デフォルトの名無しさん:03/03/21 09:19
SetFilePointerってEOF超えた位置に移動してもよかったんだっけ?

108 :デフォルトの名無しさん:03/03/21 09:30
>>105
いつ拾ったのか分からないPNGローダーのサンプルに
αチャンネル付きのPNGを読ませたところ、
完全に透明になっているところをクリックすると
下のウインドウをクリックしたことになってるもので・・・

ソースを見ても、リージョンを弄っているところは皆無で
UpdateLayeredWindowしているだけでした。

気になったのでぐぐってみたら、
http://www.google.co.jp/search?q=cache:Gahrr6rAyeMC:shillest.net/src/view.cgi%3Fpage%3D4%26account%3Dheper+UpdateLayeredWindow&hl=ja&lr=lang_ja&ie=UTF-8
>SetLayeredWindowAttributes(hWnd, cTrans, 0, LWA_COLORKEY);
>だけで塗潰す必要もなく非矩形ウィンドウになるっぽです。。。。=■●_
とあるので、間違いないようなのです。

できれば、穴の空いたウインドウにせずに完全に透明な
部分を含んだウインドウを作りたいんですが・・・

109 :デフォルトの名無しさん:03/03/21 09:30
>>107
出来るよ

110 :デフォルトの名無しさん:03/03/21 10:43
>>107
MSDN: http://www.asia.microsoft.com/japan/developer/library/default.asp?URL=/japan/developer/library/jpwinpf/_win32_setfilepointer.htm

ファイルの終わり(EOF)を超える位置にファイルポインタを設定してもエラーにならないことに注意してください。ただし、SetEndOfFile、WriteFile、WriteFileEx いずれかの関数を呼び出すまでは、ファイルのサイズは増加しません。

111 :名無し@沢村:03/03/21 10:45
>>108
ヌヒよ、穴のあいた部分にWS_EX_TRANSPARENT属性のついた
ポップアップウィンドウを重ねてみてはどうか。

112 :デフォルトの名無しさん:03/03/21 11:07
>>111
ウインドウを移動させると描画内容が破綻する

113 :名無し@沢村:03/03/21 11:27
>>112
ヌヒよ、そんなもんUpdateWindow()で済む話だ

114 :デフォルトの名無しさん:03/03/21 12:12
>>106
IEコンポに書き込む文字列を渡すためだけに
関数内で作成・廃棄するのがアホらしかったんで
あらかじめ長さのフィールドを確保しておけば
無駄なコピーが減らせないかと思って

115 :デフォルトの名無しさん:03/03/21 13:42
>>114
それをどこに置いておくつもりだ……
グローバルにするつもりじゃないだろうな

116 :デフォルトの名無しさん:03/03/21 13:42

ウインドウクラスと実際のウインドウの関係はどうなっているのでしょう?

RegisterClass でウインドウのクラスを定義して、CreateWindow で
実際に作成するわけですが、いままではクラスというのは
Cの構造体(あるいはオブジェクト)の定義であって、実際にインスタンス化
(実体化)するのが CreateWindow なのだと思っていました。
しかしペゾルトを読んで、SetClassLong でウインドウのアイコンを「リアル
タイムに」変更できると書いてあったので、よく分からなくなりました。

SetClassLong と SetWindowLong の両方でウインドウプロシージャの
アドレスを変更できますが、両者にはどこが違うのですか?

実際に、どのようにメモリ確保が行われるのか、どこかに詳しく書いて
ある書籍はないもんでしょうか?



117 :デフォルトの名無しさん:03/03/21 13:56
>>115
すんげえ、的はずれなレスだね。
BSTRを関数に渡す際には、呼び出し側に破棄の責任があるのだよ。

118 :国語が足りない奴:03/03/21 14:10
先生、いま作っているアプリで、
SetTimer()とInvalidateRECT()使って
BMPの動画をやっているんですが、
動画再生中にパソコンのメモリ使用量が
増えていきます。BMPはDLLにリソースとして
埋め込み、アプリ実行はじめにDLLをLaodLibrary()しています。
再描画の度にBMPをLoadBitmap()、
SerectObject()してBitBlt()、そしてDeleteObject()。
最後にアプリ終了時にFreeLibrary()。
この流れで使用メモリ増幅の理由に
なりそうなところはどこですか?


119 :デフォルトの名無しさん:03/03/21 14:30
ノートン

120 :デフォルトの名無しさん:03/03/21 15:13
>>117
そのレスも的を得ているようには思えんがw

121 :デフォルトの名無しさん:03/03/21 15:26
>>118
SerectObjectを1回しかしてないところ、並びに
SelectObjectが出てこないところ。

122 :デフォルトの名無しさん:03/03/21 17:34
とあるフォルダにファイルが作られたりコピーされたことを感知するためには
どのような処理をすればよいでしょうか?
とりあえず1秒ごとにそのフォルダをなめようかと思いましたが
これはあまりに馬鹿っぽいです。エクスプローラからイベントがもらえたら
うれしいのですが。

123 :デフォルトの名無しさん:03/03/21 18:00
>>122
FindFirstChangeNotification

124 :デフォルトの名無しさん:03/03/21 20:17
>>113
自信たっぷりだな。
あんまり自信たっぷりだから信じてやってみたら
やっぱりUpdateWindowじゃだめじゃねーか。
やっぱりおまえは沢村だな

125 :デフォルトの名無しさん:03/03/21 20:28
沢村がハンドル変えたんか
がくがくぶるぶる

126 :122:03/03/21 20:38
>>123
さんくすですー。できますた。できますた。

127 :104:03/03/21 21:47
ぐぐってみたところ
BSTRはプロセス境界をまたいで渡されるかもしれないから
システムによって割り当てられなければならない。
メモリレイアウトが同じなだけではだめ、とのこと。
お騒がせしました。

128 :デフォルトの名無しさん:03/03/21 23:52
>>120
的を得る ?
なんか得するのか ?

129 :デフォルトの名無しさん:03/03/21 23:54
>128
ageるならそんなくだらないつっこみをしないで建設的な意見でも述べたら?(嘲笑激藁

130 :デフォルトの名無しさん:03/03/22 00:00
>>120 = >>129

131 :デフォルトの名無しさん:03/03/22 02:14
こちらで伺うのかが適切かは解りませんが。
一部の(SnapIt!等)で、「エクスプローラのフォルダの余白をダブルクリック」だの
「解像度が変更されたらアイコンの自動再配置」なんて機能が有ります。
この様に、Explorerの挙動を他のアプリから感知するにはどうすればいいのでしょうか?
資料をご紹介頂けるとありがたく思います。

132 :デフォルトの名無しさん:03/03/22 02:21
前者はフック
後者はWM_SETTINGCHANGEかな

133 :デフォルトの名無しさん:03/03/22 02:30
>>132
うーむ何をどうフックすれば余白をWクリックなのか、今の時点ではさっぱり解りませんが
がんがって調べてみまつ!
ありがとうございましたー

134 :デフォルトの名無しさん:03/03/22 02:35
フックじゃねーや、サブクラス化な。
WM_LBUTTONDBLCLKだかを捕まえればいいんじゃね?
勿論、アイテムのダブルクリックとかややこしいことがあるけど
そう言うのを解決して。

135 :デフォルトの名無しさん:03/03/22 03:13
とにかくExplorerの仕様(?)が全然解らないので、鋭意調べ中です!
LVNメッセージを捕まえられれば・・・とかちょっと思ったけど、
捕まえられたとしても余白のメッセージなんて無かった(w

136 :デフォルトの名無しさん:03/03/22 04:28
>>116
どっちもOSが管理している構造体だよ

ウインドウ1枚分の管理情報を格納している制御ブロックが「ウインドウ」
「ウインドウ」を作るときの初期値が「ウインドウクラス」
詳細に入る前の概要説明としてはこんなもんだろ

137 :デフォルトの名無しさん:03/03/22 05:37
>>135
LVM_GETITEMCOUNTを送って0なら余白。

138 :デフォルトの名無しさん:03/03/22 06:18
質問します。

CreateFile を使い、非共有かつ FILE_FLAG_DELETE_ON_CLOSE を指定せずに開い
たファイルを、ハンドルを閉じると同時に削除したいのですが、可能でしょうか?
可能ならその方法も教えて頂きたいのですが。

139 :国語が足りない奴:03/03/22 06:24
>>121
なんでSerectObject()を2回するのですか?
それでするとしたらどこで?

140 :デフォルトの名無しさん:03/03/22 06:41
このスレは
いわゆるプラットフォームSDKを使うということなのでしょうか?
区分けがわからないのでどこで質問すればいいのやら・・・

141 :デフォルトの名無しさん:03/03/22 07:12
>>140
MSDNライブラリで「プラットフォームSDK」に分類されている関数やメッセージの話ならここでいい
COMやMFCが出てくる話なら別スレがある

142 :デフォルトの名無しさん:03/03/22 08:27
>>137
そうするのか!!
一寝入りしたらまた格闘してみまつ。ありがとさんです(;゜Д゜)b

143 :デフォルトの名無しさん:03/03/22 08:42
>>142
あ、137はLVM_GETSELECTEDCOUNTの間違い。

144 :デフォルトの名無しさん:03/03/22 10:39
>>139
あなたは国語ばかりか英語も足りません。

145 :デフォルトの名無しさん:03/03/22 13:58
>>140
ここは「WIN32API」の質問&解答スレです。
WIN16API・WIN64API等やWindowsプログラムに
関するWIN32API絡みでない質問は受け付けません。

WIN16APIの質問&解答スレ
現在無し

WIN64APIの質問&解答スレ
現在無し

Windowsプログラムに関するAPI以外の質問&解答スレ
Windows Programing for C/C++(Not MFC)
http://pc2.2ch.net/test/read.cgi/tech/1018239290/

146 :デフォルトの名無しさん:03/03/22 14:35
Win16はともかくWin64に独立スレが必要とは思えんが
杓子定規すぎ

147 :デフォルトの名無しさん:03/03/22 15:11
>>146
同意
Win16の話をここでするのは漏れ的にはOKだな

148 :デフォルトの名無しさん:03/03/22 15:27
ネタにマジレ(ry

149 :デフォルトの名無しさん:03/03/22 15:57
Win64はないでしょ。その代わり.NETはある意味Win64相当といえるかも。
例えばファイルサイズはlong=int64でintはどのプラットフォームでもサイズ変わらないし。

150 :デフォルトの名無しさん:03/03/22 16:05
> Win64はないでしょ

http://msdn.microsoft.com/theshow/Episode005/default.asp

151 :デフォルトの名無しさん:03/03/22 16:06
>Posted July 14, 2000

152 :デフォルトの名無しさん:03/03/22 17:39
> 例えばファイルサイズはlong=int64でintはどのプラットフォームでもサイズ変わらないし。
IL32ならlong=int32で(Win32)
ILP64ならintは64ビットだと思ったが

153 :デフォルトの名無しさん:03/03/22 17:40
間違った
×IL32ならlong=int32で(Win32)
○IL32ならlong=int32で(Win64)

154 :デフォルトの名無しさん:03/03/22 18:11
>>152
ソースは?

155 :デフォルトの名無しさん:03/03/22 19:05
http://www15.big.or.jp/~kaini/image/img-box/img20030321215209.jpg

156 :デフォルトの名無しさん:03/03/22 22:54
>>155
グロ

157 :デフォルトの名無しさん:03/03/23 06:22
コンソールプログラムにおいて Sleep()で休止中に Ctrl-Cを入力すると、完全に
凍ってしまうんですが、これはどうにかならないのでしょうか?

158 : :03/03/23 10:44
SleepEx() 使え


159 :デフォルトの名無しさん:03/03/23 12:51
自作のコントロールにマウスカーソルをあわせてホイールを
回すと何らかの動作するようにしたいのですが、Spy++で調べても
WM_MOUSEWHEELが送られてこないようです。
どうすればホイールの動きを感知できるでしょうか?

160 :デフォルトの名無しさん:03/03/23 18:19
>>158
SleepExつかっても凍ってしまうのですが。


161 : :03/03/23 22:17
>>160
ごめん、記憶で適当に言っちゃった。でも SleepEx() て割り込み受け付けるために
使うんじゃなかった?

明日検証してみるからちょっとまっててね。
AppWizard で作った Win32コンソールの hello world くらいで再現するよね?


162 :デフォルトの名無しさん:03/03/23 22:47
>>157
どんな環境でそうなるの。98でもXPでもきちんと止まるのですが。


163 :デフォルトの名無しさん:03/03/23 22:58
>>159
WM_MOUSEWHEEL はキーボードフォーカスを持つ
ウインドウに送られるそうだけど、その辺は大丈夫?



164 :デフォルトの名無しさん:03/03/23 23:02
>>157 これでどうだ?
ttp://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-dev/10811

165 :161 :03/03/24 13:27
>>160
ごめん、まじで再現しない。

#include <stdio.h>
#include <Windows.h>

int main(int argc, char* argv[])
{
printf("Hello World!\n");

::Sleep(10000);

return 0;
}
で、コンソールアプリ実行しても、Ctrl+c で止まる。
>>164さんの情報でも解決しない場合は、詳しく環境を教えて。

166 :デフォルトの名無しさん:03/03/24 13:42
160じゃないけど、MFCをサポートするコンソールアプリでやったら例外で落ちた。
一応報告。
ウィザードが吐いたコードの最後に ::Sleep(10000); を追加しただけだが……

Win2000 VC6SP5

167 :165:03/03/24 13:57
>>166
Win32 Console Application を AppWizard で作らせて、
MFCサポートにした。
if () ~ else の最後に ::Sleep(10000); を追加したけど落ちない。

WinXP home VC6SP5


168 :デフォルトの名無しさん:03/03/24 17:22
FindFirstChangeNotificationでフォルダを監視して、その変更通知は受け取ることが
できたのですが、その中で変更のあったファイルのみ列挙するには
どのようにしたらよいでしょうか?

169 :159:03/03/25 00:39
>>163
SetFocusを実行するようにしてみたのですがダメでした。

普通のウィンドウ(WS_OVERLAPPEDWINDOW)で
ホイールの動きを感知できるか試してみたのですが、
Spy++で見る限りWM_MOUSEWHEELが送られているのに、
ウィンドウプロシージャのブレークポイントには止まりません。

WM_MOUSEWHEELがちゃんと定義されていないのかと思い、
case 0x020a:としてみたのですがダメでした。

メッセージループに何か仕掛けが必要なのでしょうか?

170 :デフォルトの名無しさん:03/03/25 09:26
マウスユーティリティにホイールメッセージ奪われて
WM_VSCROLLにすりかえられてたりしない?

171 :168:03/03/25 17:33
やっぱり、無理みたいですね。(´・ω・‘)ショボーン

172 :デフォルトの名無しさん:03/03/25 18:27
>>160
SetErrorModeするとか明示的にsignalハンドラ書くとかはどうよ?

173 :デフォルトの名無しさん:03/03/25 21:48
猫プロのWindows SDK一番最初のプログラムがコンパイルできません

'void *' 型は 'HBRUSH__ *' 型に変換できない(関数 __stdcall WinMain(HINSTANCE__ *,HINSTANCE__ *,char *,int) )

とエラーが出ます
BCCです
早くも挫折の予感です
みなさんこれを乗り越えてきたのでしょうか

174 :デフォルトの名無しさん:03/03/25 22:06
>>173
http://pc2.2ch.net/test/read.cgi/tech/1030493157/733 を見てください

bccだと猫のサンプルはエラーが結構出たような気がするけどがむばれ・・・

175 :デフォルトの名無しさん:03/03/25 23:10
>>173
windowsx.h, GetStockBrush, DeleteBrush 等のキーワードで調べる……は駄目かな?

176 :デフォルトの名無しさん:03/03/25 23:55
>173
C言語の第1章からやれ

177 :デフォルトの名無しさん:03/03/25 23:58
>>173
エラーと言われたソースのファイル名と行番号は認識してるか?
その行で使っている型識別子は1つずつgrepしてみたか?
typedefは見つけたか?

178 :デフォルトの名無しさん:03/03/26 00:08
#define NOSTRICT
…は素人にはお勧めできないからがんばって適切な型の指定に置き換える

179 :173:03/03/26 00:32
>>174のリンク先の方法で解決できました
意味はよくわかりませんでしたが、HBRUSH型にキャストしてやれば良いんですね

>>174>>175>>176>>177>>178
アドバイスありがとう
また明日から頑張れそうです

180 :デフォルトの名無しさん:03/03/26 01:01
>>179
憶えたこと、その場でちゃんとメモっとけよ
そのメモの束が、お前が先輩になった時の財産になるぞ

181 :デフォルトの名無しさん:03/03/26 06:48
http://cos.site.ne.jp/img-box/img20030325172722.jpg

182 :デフォルトの名無しさん:03/03/26 07:07
>>181
おお。

183 :名無し@沢村:03/03/26 08:08
>>124
ははは、昨日会社でソースを確認したらUpdateWindowじゃなかったよ。
正しくはこうだな。

ShowWindow(hWnd, SW_HIDE);
MoveWindow(hWnd, .....);
ShowWindow(hWnd, SW_SHOW);

184 :デフォルトの名無しさん:03/03/26 09:11
>>181
( ●ω●) オトーサン・・・

185 :デフォルトの名無しさん:03/03/26 13:04
>>183
禿しくちらつく。
そんなもん実用にならねぇ

186 :デフォルトの名無しさん:03/03/26 17:42
>>170
WM_VSCROLLにすり替えられていたようです。
Spy++で表示されているのは、送られているメッセージで、
受け取ったメッセージではないんですね?
ありがとうございました。

187 :名無し@沢村:03/03/27 00:40
>>185
ヌヒよ、WS_EX_TRANSPARENT のポップアップウィンドウの話をしているのだぞ。
ユーザには存在していないように見えるウィンドウをいったん非表示にしたところで
ちらつくわけがないだろ。わかったか、ヌヒよ。

188 :デフォルトの名無しさん:03/03/27 00:42
リソース食いそうだね。

189 :デフォルトの名無しさん:03/03/27 00:49
質問です。
PC に PS/2 キーボードと USB キーボード みたいに
キーボードが複数繋がっているとして、
この両者の入力を、どちらのものか識別したりする方法ってないでしょうか?
一応、デバイスマネージャにはデバイスドライバが2つある状態になっています。
多少低レベルな API とかでもいいのですが…
(さすがにデバイスドライバを作るとか、そういうレベルだと厳しいのですが)

識者の方、指揮者の方問わずよろしくおねがいします。

190 :デフォルトの名無しさん:03/03/27 00:58
ウィンドウアプリ(非コンソールアプリ)で、起動後に
GetStdHandleすると返ってくる値がとても変なのですが
なにか関連情報ありませんか?

例えばWindows2000Sp3のExplorerから起動すると、
標準出力ハンドルとして0x00010001が返ってきます。
NULLでもINVALID_HANDLE_VALUEでもない、しかし無効なハンドル。
一方CMD.EXEからstartコマンドを使って起動するとハンドルはNULL
その他、起動方法を変えるといろいろな結果が得られます。

今手元に詳しい結果が無いのですが
WinMain
{
HANDLE hStdOut = GetStdHandle(STD_OUTPUT_HANDLE);
MessageBox(...)
}
とかで簡単に調べられます。なんでしょねこれ。

191 :デフォルトの名無しさん:03/03/27 01:04
>>190
explorerがなにがしかハンドルを渡してるんじゃないのか?

192 :デフォルトの名無しさん:03/03/27 08:52
>>190
GetStdHandle 関数が返すハンドルは、コンソールからの読み取りまたはコンソールへの書き込
みが必要なアプリケーションで利用できます。
(MSDNより)

ウィンドウアプリでは必要ないと思うんだけど。

193 :デフォルトの名無しさん:03/03/27 10:41
>190
CreatePipe()しないと駄目とか

194 :193:03/03/27 12:06
9x系がCreatePipe使えないから違うか…

195 :デフォルトの名無しさん:03/03/27 12:22
>>194
使えるよ
使えないのはCreateNamedPipeのサーバ側

196 :デフォルトの名無しさん:03/03/27 13:28
質問お願いします。VC++6を使っていますが、
newよりもGlobalAllocを使った方が良い場面というのは、どういう場合なんでしょうか

なんとなく、大きいメモリを確保する必要が有るときは
GlobalAllocかなぁ、などと思っているのですが。

197 :デフォルトの名無しさん:03/03/27 13:44
>>196
APIがGMEM_MOVEABLEとかで指定する移動可能メモリを要求してるときぐらい
クリップボード系でGMEM_SHAREを指定するときもあるかも

198 :デフォルトの名無しさん:03/03/27 13:46
クリップボード使う時はGlobalAllocじゃないとね

199 :デフォルトの名無しさん:03/03/27 13:48
おねがいします!
_beginthreadexの戻り値のハンドルをクローズする場所は
たいていWaitForSingleObjectなどでスレッド終了を確認した後で
行われていますが、
スレッド関数内の最後(まだスレッドは終わってない)の所で
CloseHandleして良いものなのでしょうか ?
いちおうCloseHandleは成功はしているけど・・・やばいのかな?

200 :デフォルトの名無しさん:03/03/27 14:17
>>199
WaitForSingleObjectなどでスレッド終了を確認する必要が無い場合は
CloseHandleしてかまわない、WaitFor...使ってる場合にCloseHandleすると
どうなるかしらない。WaitFor...がハンドルの参照カウンタをインクリメント
しているなら大丈夫だが、、、普通どおり終了確認してからCloseHandleする
のが安全だろ。

201 :デフォルトの名無しさん:03/03/27 14:41
ダイアログボックスに描画したグラフィックを消すにはどのようにしたらよいでしょうか?
グラフィックはLineToやPolylineで書いています。

202 :デフォルトの名無しさん:03/03/27 14:45
>>201
InvalidRectとか?

203 :デフォルトの名無しさん:03/03/27 14:56
>>202
即レス、ありがとうございます。
できました。

204 :デフォルトの名無しさん:03/03/27 15:07
>>200
良く分かりました。さんくす。

205 :196:03/03/27 15:11
>>197-198
レスありがとうございます。
良かった、用途はかなり限定されてるんですね。
悩まずに済みそうです。感謝です。

206 :デフォルトの名無しさん:03/03/27 17:03
文字列が数値かどうか判定するAPIってありましたでしょうか?
VBでいうところのIsNumericです。

207 :デフォルトの名無しさん:03/03/27 17:16
>>206
GetStringType, GetStringTypeEx かなぁ?

208 :デフォルトの名無しさん:03/03/27 17:20
>>206
IsCharAlphaNumeric() && !IsCharAlpha()
ではどうか?

209 :デフォルトの名無しさん:03/03/27 22:52
マウスカーソルを指マークにしたいのですがデフォルトではないようです。
みなさんどうやっていますか?

210 :デフォルトの名無しさん:03/03/27 22:58
沢村か?

211 :デフォルトの名無しさん:03/03/27 23:07
IDI_HANDのが気に入らなかったら
自分の手を見ながら描く

212 :デフォルトの名無しさん:03/03/27 23:40
>>211
IDC_HANDですね。ありました。2000以上だったのか。

213 :190:03/03/28 01:27
>>191-195
ありがとうございます。
ウィンドウアプリから子プロセスとしてコンソールアプリを起動する
時に標準出力などを一旦待避しておいて後で
また戻してるだけなので、使わないといえば使わない
ハンドルなんですけどね。
ちょっと気持ち悪かったもので。

214 :デフォルトの名無しさん:03/03/28 11:19
>213
とりあえず猫プロとか見ながら組んでみたけど
SetStdHandle()でエラー返さないからええんでない?

215 :デフォルトの名無しさん:03/03/28 17:57
カーソルがウィンドウの外に出ていったことを
知るにはどうしたらいいのでしょうか?
できればキャプチャーせずに知りたいのですが。

216 :デフォルトの名無しさん:03/03/28 18:02
>>215
キャプチャーするのが一番だと思うんだけど・・・
タイマーで監視するか
透明なウインドウを置いてそこで検出するか

キャプチャーしたくない理由ってなによ?

217 :デフォルトの名無しさん:03/03/28 18:13
用途によってはタイマーで監視する方法も。
例えば、
 プッシュボタンを押したとき → キャプチャー
 フラットなボタンを凸表示するとき → タイマー
みたいに。


218 :デフォルトの名無しさん:03/03/28 18:16
>>217
ウインドウ上でボタン押下したならウインドウからはずれてもMOUSEMOVEが拾えなかったっけ?

219 :デフォルトの名無しさん:03/03/28 18:57
DIB通さずに高速に描画する関数ってどんなのがありますか?
点とか円とか線とか

220 :215:03/03/28 19:37
>>216-217
ありがとうございます。

カーソルが載っているときだけボタンの色を
変えるということをしたかったのです。

カーソルが外に出た瞬間別のボタンの上に
載った場合、キャプチャー解除しても直後は
WM_MOUSEMOVEを拾えないのではないか、
と思ったのですが、実験してみたら拾えました。(汗)
スマソです。

221 :デフォルトの名無しさん:03/03/28 20:35
>>219
点とか円とか線を描くのにDIB以外の手段つーとメタファイルか?
そんなん実測したらええやん

222 :デフォルトの名無しさん:03/03/28 20:44
>>221
GDIと混同してる?

>>219
LineToとかArcとか

223 :221:03/03/28 21:09
>>222
GDI以外の何と混同してると重田?

224 :デフォルトの名無しさん:03/03/28 22:58
>>218
いや気になったのは、キャプチャだとキーボードメッセージもキャプチャしているウィンドウに取られてしまい
マウスがボタンの上に乗っているときにメニューのショートカット(Alt + H でヘルプとか)が使えなくなったりしないかなぁ、と。
アクセラレータやMFCを使っていると何故か大丈夫なのかもしれないけど。

225 :デフォルトの名無しさん:03/03/28 23:01
TrackMouseEvent() は?

226 :デフォルトの名無しさん:03/03/29 20:24
ダイアログボックスの背景の色を指定するにはどうしたらいいでしょう

227 :デフォルトの名無しさん:03/03/29 21:55
>>226
WM_ERASEBKGNDで処理

228 :デフォルトの名無しさん:03/03/29 22:38
http://www15.big.or.jp/~kaini/image/img-box/img20030329222324.gif

229 :デフォルトの名無しさん:03/03/29 22:51
>>228
はいはい面白い面白い

230 :228:03/03/30 01:10
中学の同級生の大ちゃんを思い出させるセリフだな、それ…。
気に食わない事があると良くそのセリフを吐いていたっけ…。
はあ、金返せよ…。

231 :yosoでやってくれ:03/03/30 01:35
少なくとも一方はスレ違いと思われ

232 :デフォルトの名無しさん:03/03/30 16:09
自分以外のプロセスが使っているWindows Common Controls
にアクセスしたいんですけどどうやったらいいんでしょうか?

で、そこに表示されているテキストを読み取りたいんですが?

95系とNT系で違う処理になると思いますがXPで動けば十分です。


233 :デフォルトの名無しさん:03/03/30 16:23
>>232
>そこに表示されているテキストを読み取りたいんですが?

煽られた・・・・

234 :デフォルトの名無しさん:03/03/30 16:47
te

235 :デフォルトの名無しさん:03/03/30 17:20
ボタンを押すと凹みますよね。で、中の文字が右下にずれる。
このずれの量って、GetSystemMetricsか SystemParametersInfoあたりで決まってるんでしょうか?

標準では横方向1px、縦方向1pxのようですが。

236 :デフォルトの名無しさん:03/03/30 17:36
WINAPIじゃないんですけど、
レジストリ操作でフォルダにあたるキーはなんですか。
ファイルならわかるけどフォルダがわかりません。

237 :デフォルトの名無しさん:03/03/30 17:38
>236

意味不明

238 :デフォルトの名無しさん:03/03/30 17:46
猫でも分かるよりさらに超初心者向けのwindowsプログラミングサイトを
教えてください。

239 :デフォルトの名無しさん:03/03/30 17:54
>>238
http://hima-doki.s13.xrea.com/x/_cgi/a-column/data/motties/1036074275.html

240 :デフォルトの名無しさん:03/03/30 17:59
>>238
サルでもわかるWindowsプログラミング
http://life2.2ch.net/test/read.cgi/credit/1041764551/


241 :デフォルトの名無しさん:03/03/30 18:03
>>238
バカは死ね。

242 :デフォルトの名無しさん:03/03/30 22:20
>>235
決まってないと思われ。と言うかボタン作ったヤツが決めてるだけ。

243 :yosoでやってくれ:03/03/30 22:57
>>238
くめい氏がここを見ていることを祈りながら、
どの説明のどこがどのようにわからないのか
その恥のかきついでに、克明に表現しろ

この世のどこかにものすごく奇特な人がいて
おまえの悩みにつきあってくれるかも知れんぞ

244 :デフォルトの名無しさん:03/03/30 22:58
あり、コテハンのままだった(欝だ詩嚢

245 :yosoでやってくれ:03/03/30 22:59
あげ

246 :デフォルトの名無しさん:03/03/31 00:45
>>232
VirtualAllocEx

247 :デフォルトの名無しさん:03/03/31 03:50
>>232
GetWindowText()が使えそうなら使う。(WM_GETTEXTを送るのは×)
無理ならシステムフックを使う。
http://home.att.ne.jp/yellow/hide_n/programming/tips03.html




248 :デフォルトの名無しさん:03/03/31 04:45
>>247
>他のプロセス内のコントロールのテキストを取得するには、GetWindowText 関数を
>呼び出すのではなく、直接 WM_GETTEXT メッセージを送ります。
ってかいてあるよ?



249 :デフォルトの名無しさん:03/03/31 05:04
WM_SETTEXTとWM_GETTEXTはWin16との互換性を保つために、自動的に
メモリマップを介してプロセス間で文字列を共有できる、というようなことを
Advanced Windowsに書いてあった気がするが。

250 :デフォルトの名無しさん:03/03/31 07:10
WM_GETTEXTで読み取れるのはステータスバーくらいだろ

251 :デフォルトの名無しさん:03/03/31 12:14
GetWindowText() って何のためにあるの?
全部 WM_GETTEXT でいいじゃん。

252 :ネタにマジレス:03/03/31 12:27
>>251
GetWindowText
指定されたウィンドウが持つタイトルバーのテキストを取得します。
指定されたウィンドウがコントロールのときは、コントロール内のテキストを取得します。

(中略)

解説
この関数は、指定したウィンドウ (またはコントロール) にWM_GETTEXT メッセージを送ります。
この関数で、他のアプリケーション内のエディットコントロールのテキストを取り出すことはできません。

                                                (MSDNより抜粋)

253 :デフォルトの名無しさん:03/03/31 12:53
>>252
マジにネタレスじゃなくて?

254 :デフォルトの名無しさん:03/03/31 17:05
あるファイルが存在するかどうか調べるAPIってありますか?

255 :デフォルトの名無しさん:03/03/31 17:14
FindFirstFile

256 :デフォルトの名無しさん:03/03/31 17:18
>>254
FileExists

257 :デフォルトの名無しさん:03/03/31 17:22
fileExists
public boolean fileExists (String stgfilename, int flags)
throws IOException;

指定されたファイルが存在するかどうかを調べます。

戻り値 :

ファイルが存在する場合は、true。そうでない場合は、false。

パラメータ 解 説
stgfilename 存在するかどうかを調べるファイルの名前。
flags stgfilename に指定したファイルが検索されるストレージ領域を示す値。STORE_FL_LOCAL フラグおよび STORE_FL_ROAMING フラグのいずれか、またはその両方を指定します。


(MSDNより抜粋)

258 :デフォルトの名無しさん:03/03/31 17:24
>>254
VBならDir関数

259 :デフォルトの名無しさん:03/03/31 17:28
>>258
スレ違い

260 :デフォルトの名無しさん:03/03/31 17:32
>>258がスレ違いなら>>257>>256もスレ違いなわけだが。

261 :デフォルトの名無しさん:03/03/31 17:51
ププ
よっぽど悔しかったんだね

262 :デフォルトの名無しさん:03/03/31 17:56
了解です。fopenですね?

263 :デフォルトの名無しさん:03/03/31 18:10
PathFileExists( )
GetFileAttributes( ) != (DWORD)-1;

じゃねーの?

264 :258:03/03/31 18:30
スレタイはWin32API 質問箱 Build10
言語を指定していない
よって回答も各言語のがあってもいいのでは?


265 :258:03/03/31 18:31
と思ったけどDirだとAPIじゃないからスレ違いでつね
逝って(ry

266 :デフォルトの名無しさん:03/03/31 20:40
>>263
Cライブラリのaccessだったか、その関数呼んでるよね。

267 :デフォルトの名無しさん:03/03/31 21:14
CreateFile()でいいじゃん

268 :デフォルトの名無しさん:03/03/31 22:59
>>267
fopenはfcloseしなきゃいけないから面倒
たいていどのCにもaccessがある

とfujiが言ってたな

269 :デフォルトの名無しさん:03/03/31 23:00
>>268
死んだ方が良い発言だな。

270 :デフォルトの名無しさん:03/03/31 23:23
>>268
唐突に言うならともかく
267に対しては何のフォローにもなってないな

最後の一行はどんなに善意に解釈しても糞以外の何者にもならない
そんなことも自分で調べてないなんてレベル低すぎというより問題外

271 :デフォルトの名無しさん:03/04/01 00:06
>>268
こいつMSDNも規格票も持ってないのか?

272 :デフォルトの名無しさん:03/04/01 00:47
〜と友人が言ってました

これ、自分の無知無能をごまかすときの言い回し。

273 :デフォルトの名無しさん:03/04/01 00:54
匿名なんだからそんなこと気にしなくてもいいのにな。
俺が正しいとばかりに言い切っちゃえば、誰かが突っ込んで訂正するかもしれん。

274 :デフォルトの名無しさん:03/04/01 02:12
友達の友達は皆友達だ

275 :デフォルトの名無しさん:03/04/01 04:27
俺は情報のソースを書いてくれる書き込みは丁寧だと感じるがな。

276 :デフォルトの名無しさん:03/04/01 05:50
GetFileAttributesでいいのに
わざわざCreateFile使うことないじゃん。

277 :デフォルトの名無しさん:03/04/01 05:56
>>275
「友達が言ってた」発言だと思って
ソースだとわからなかったんでしょ

278 :デフォルトの名無しさん:03/04/01 09:32
>>276
GetFileAttributes はそもそも属性を調べるAPIで、たまたま存在確認が
できるだけ。しかも C:\foo.txt がフォルダなのかファイルなのかなどの
判断も必要なので >>263 は間違い。
ファイルの存在は CreateFile(path, 0, OPEN_EXISTING,...) を使うべき。


279 :デフォルトの名無しさん:03/04/01 10:15
>>278
電波は死んでください。

280 :デフォルトの名無しさん:03/04/01 10:25
FindFirstFileでいいじゃねえええかあ

281 :デフォルトの名無しさん:03/04/01 10:45
CreateFile() や FindFirstFile() はそれぞれコストが大きいだろう。

282 :デフォルトの名無しさん:03/04/01 12:29
>>278
CreateFileはそもそもファイルを開くAPIで(ry
> しかも C:\foo.txt がフォルダなのかファイルなのかなどの
> 判断も必要なので >>263 は間違い。
>>254の意図が-eなのか-fなのかもはっきりしないのに
そこまで言い切るのもどうかと思うが-fだったとしても
!(GetFileAttributes() & FILE_ATTRIBUTE_DIRECTORY)
でOK。Cランタイムが間違ってると言い張るなら話は別だが

283 :デフォルトの名無しさん:03/04/01 16:05
コスト
GetFileAttributes << FindFirstFile <<<<<< CreateFile

その上 CreateFileはファイルが開けない場合もとかがからんできて面倒

284 :デフォルトの名無しさん:03/04/01 16:27
>>283
そのためにOPEN_EXISTINGフラグがあると思うのだが。

285 :デフォルトの名無しさん:03/04/01 16:38
>>283
ちゃんとプロファイルした結果か?

Win XP SP1 では、ファイルがある場合もない場合も
GetFileAttributes < CreateFile < FindFirstFile
だったけどな。

ただし、
GetFileAttributesはない場合はある場合に比べて30%くらい遅くなった。
CreateFileは10%強早くなった。FindFirstFileはほぼ変わらなかった。

286 :デフォルトの名無しさん:03/04/01 17:07
http://hogehoge.com/fugefuge/
のようにファイル名を省略したURLから
http://hogehoge.com/fugefuge/index.html
上のように、ファイル名を補完したURLを取得出来るAPIはないのでしょうか?


287 :デフォルトの名無しさん:03/04/01 17:22
>>286
不可能

288 :デフォルトの名無しさん:03/04/01 17:46
>>286
APIの範囲を越えている
鯖サイドの設定によるだ

289 :デフォルトの名無しさん:03/04/01 17:57
>>287,288
そうですか、APIでは出来ないんですね。
ありがとうございました。

290 :デフォルトの名無しさん:03/04/01 23:59
MessageBox()APIについて質問があります。
MFCのメッセージボックスを使うと、引数に渡したHWNDのウィンドウの中央に
メッセージが表示されるようなのですが、SDKのみでこれをやるにはどうすれば
いいのでしょうか?
普通にWindowハンドル渡しただけでは、画面中央にメッセージが表示されてしまいます。


291 :デフォルトの名無しさん:03/04/02 00:35
>>290
それ、俺も昔悩んでMFCのソースを調べたけどよくわからんかった。
MoveWindowで動かしているようでもないし。
一度ここで質問したけど、回答は得られなかったし。
一番ある回答は
「自分でダイアログ作れゴルァ」
だったと思う。

292 :デフォルトの名無しさん:03/04/02 02:12
いずれにせよ、ファイルの存在を調べるためだけにハンドルを開くことになる
CreateFile()やFindFirstFile()をわざわざ呼び出すのは、馬鹿のやることだな。

293 :ぬるぽ男爵 ◆7jriffTro. :03/04/02 05:44
>>291
センターウィンドウじゃ。

294 :デフォルトの名無しさん:03/04/02 08:09
APIバイブルに記載されていないAPIが
いくつかあるようなのですが、
(DragQueryFilesとかExtractIconとか)
漏れを補うのにいい書籍があれば教えてください。

295 :デフォルトの名無しさん:03/04/02 09:02
>>294
書籍じゃないがMSDNライブラリ

296 :デフォルトの名無しさん:03/04/02 10:02
>>294
http://www.runan.net/program/tips/hidden_api.shtml

297 :デフォルトの名無しさん:03/04/02 12:30
便乗で申し訳ないのですが、VisualStudioを買わずにMSDNライブラリを
手に入れる方法ってあるでしょうか?

298 :デフォルトの名無しさん:03/04/02 12:54
>>297
変わった質問ですね。ボーランド派ですか?
「MSDN オペレーティング システム サブスクリプション」をどうぞ。

299 :デフォルトの名無しさん:03/04/02 12:56
>>290
http://pc2.2ch.net/tech/kako/1040/10409/1040964626.html
の217からだけど、フックを使っているらしい。
>>293
MeseageBoxのHWNDが手に入らないと無理なんじゃない?

300 :デフォルトの名無しさん:03/04/02 20:31
具体的なやり方が知りたいけど、
はっきりとした「できない」の証明でも
すっきりするんだけどな〜

301 :デフォルトの名無しさん:03/04/02 20:36
>>298
手元にあるVS6の文書が古くなってしまったもので。
やはりMSDN契約しか無いですか。ありがとうございました。
暫くはSDKの付属文書から差し替えつつ、困ったらMSDNオンラインを引くことにします。


302 :デフォルトの名無しさん:03/04/02 20:44
>>298
誤: オペレーティングシステム サブスクリプション
正: ライブラリ サブスクリプション

303 :デフォルトの名無しさん:03/04/02 22:41
ハンドルを継承するってどういう意味ですか?

304 :デフォルトの名無しさん:03/04/02 23:03
>303
どっかからハンドル持ってくるとか、
持ってきたハンドルにさらに機能くっつけるとか。

広域すぎて何が言いたいのか解らないよ。

305 :デフォルトの名無しさん:03/04/02 23:05
>>303
たとえば、その資源を使う権利を引き継ぐということです。

306 :デフォルトの名無しさん:03/04/03 01:01
>>302
ライブラリサブスクリプションって今でも売ってるのかね。
いちおうMSのサイトには名前があるけど、売ってるサイト見たことないな。

307 :デフォルトの名無しさん:03/04/03 06:04
>>300
MFCのソース読めば

308 :デフォルトの名無しさん:03/04/03 06:57
>>306
http://www.microsoft.com/catalog/display7.asp?subid=36&site=202

MSDN ライブラリ サブスクリプションの製品パッケージは、
2000 年 10 月26 日を持って販売終了とさせていただきます。

309 :デフォルトの名無しさん:03/04/03 11:53
>>308
なにせパッケージ版は店頭に一年以上放置されたりするからな。

310 :デフォルトの名無しさん:03/04/03 12:11
WritePrivateProfileStringの書きこみの後すぐに
CreateFileで開いて読みこんでも内容が変化してないのはなぜ?

311 :デフォルトの名無しさん:03/04/03 12:20
>310
書き込み内容がフラッシュされていないから。

WritePrivateProfileString( NULL, NULL, NULL, ... );
でフラッシュできる

312 :310:03/04/03 12:33
>>311
早速やってみます。これでSleepで時間を置いてから開くみたいな
蛇道な(間違った)方法から開放されそうです。 感謝!

313 :デフォルトの名無しさん:03/04/03 13:31
>>312
WritePrivateProfileXXX 使うこと自体邪道な(間違った)デザインなんだけど。:)

314 :デフォルトの名無しさん:03/04/03 13:52
ini に書きこむならそのAPI関数しかないだろうに

315 :デフォルトの名無しさん:03/04/03 14:00
レジストリが推奨されてるって言いたいだけだろ

316 :デフォルトの名無しさん:03/04/03 14:12
たしかにWritePrivateProfileStringとCreateFileの併用は良くない気もするが


317 :デフォルトの名無しさん:03/04/03 14:16
レジストリ弄るのイヤ〜ン

318 :デフォルトの名無しさん:03/04/03 14:56
MSDNライブラリ全体は要らんからプラットフォームSDKと付属文書キボンヌ・・・

319 :デフォルトの名無しさん:03/04/03 16:29
WM_GETMINMAXINFO でウィンドウサイズを変更出来る大きさを制限出来ますが、
あるウィンドウに対してその制限された大きさを取得するにはどうしたらいいでしょうか?

320 :デフォルトの名無しさん:03/04/03 16:49
>>319
そのメッセージを送って帰ってくる情報で判断ってできないかな?

321 :デフォルトの名無しさん:03/04/03 17:21
W系のAPIが入っているプログラムを作ったら、Win95で開始エラーが出るようになりました。
OSは自分で判定しているのでWin95の時はW系のAPIを使ってはいないのですが、
プログラムに入っているだけで起動できなくなります。
でもNTではW系の方を使う必要があるので、消すことができません。
開始エラーが出ないようにする良い方法はないものでしょうか?


322 :デフォルトの名無しさん:03/04/03 17:35
>>321
API呼出をLoadModule+GetProcAddressに変えてみるとか?


323 :デフォルトの名無しさん:03/04/03 17:39
マウスのキャプチャー中に送られてくるWM_MOUSEMOVEの
カーソル座標の情報なんですけど、xy共にクライアント領域で0を下回るときには8012などの
わけの分からない数値になってしまうのですが、これはどういうことなのでしょうか。

324 :デフォルトの名無しさん:03/04/03 17:48
>>314-317
マジレスすると、MSDNには

注意 この関数は、16 ビット Windows ベースのアプリケーションとの互換性を
保つ目的でのみ提供されています。Win32 ベースのアプリケーションでは、初期化
情報をレジストリに格納してください。

と書いてあるわけで。レジストリに書くのもいやなんだけどね。
(Get|Write)(Private)?ProfileXxx のXML版用意シレ〜。
Microsoft.MSXMLをCoInitializeしてXPath、、、って面倒だし。(w

325 :デフォルトの名無しさん:03/04/03 18:01
>>323
二の補数?@16Bit

326 :デフォルトの名無しさん:03/04/03 18:04
>>321
どうしてもW版を使いたいならMSLUがあるが。
別にNT系だからってW系APIを使わなければいけないということもないが?

327 :デフォルトの名無しさん:03/04/03 18:09
>>326
Win2000にしかないAPIとか使ってるんだろう。
Win95ではその機能をオフにしてるとか。例えばウィンドウの半透明機能。
LoadLibrary+GetProcAddressに一票。

328 :デフォルトの名無しさん:03/04/03 18:10
あ、2000じゃなくてNTって書いてた。ま、いいか。

329 :323:03/04/03 18:24
>>325
うっかりしてました。LOWORD()の戻り値の
WORDが符号無しだって気がつかずに使っていました。

MSDNにGET_X_LPARAMってのが載っていたので、それにしたら正常に動作しました。

330 :デフォルトの名無しさん:03/04/03 19:55
short型にキャストですな

331 :デフォルトの名無しさん:03/04/04 02:08
Drectxを使ってフルスクリーンモードで描写しながら
DialogWindowを表示したいのですが
まったく表示されません。
どのようにすれば表示されるでしょか?


332 :331:03/04/04 02:34
解決しました。
すんまそ。

333 :デフォルトの名無しさん:03/04/04 02:37
>>332
そんなレスよりどう解決したのかのほうが重要だ。

334 :331:03/04/04 03:12
>>333
俺にとっては重要じゃない。

335 :デフォルトの名無しさん:03/04/04 03:16
>>333
http://pc2.2ch.net/test/read.cgi/tech/1018239290/l50
の947以降参照。

336 :デフォルトの名無しさん:03/04/04 07:13
>>334
だったらお前のひとりごとなんかどうでもいいから来るな

337 :デフォルトの名無しさん:03/04/04 08:36
このアホ、C++スレでも聞いてるな

338 :デフォルトの名無しさん:03/04/04 08:38
>>331 はマルチか…

C++相談室 part17
http://pc2.2ch.net/test/read.cgi/tech/1047560042/705

339 :331:03/04/04 10:01
334は私ではありません。

340 :デフォルトの名無しさん:03/04/04 11:58
ダイアログボックス上にピクチャコントロールを貼り付けて
そこにIDI_HAND(システムアイコン)を貼り付けたいのですが。
ダイアログに
switch (uMsg){
case WM_INITDIALOG:
SendMessage(GetDlgItem(hDlg, IDC_STOP), WM_SETICON, TRUE, (LPARAM)LoadIcon(0, MAKEINTRESOURCE(IDI_HAND)));
break;
としても表示してくれません。
なにか足りないでしょうか?


341 :340:03/04/04 13:03
DrawIconでWM_PAINT時に書くことにしました。

342 :デフォルトの名無しさん:03/04/04 13:10
MAKEINTRESOURCE 不要? あと
TRUE を ICON_BIG とか ICON_SMALL に
してみたらどう?

343 :デフォルトの名無しさん:03/04/04 19:26
>>340
スタティックコントロールならSTM_SETICONですぜダンナ

344 :デフォルトの名無しさん:03/04/04 21:05
すみません、オーナーウインドウの外にでられないウインドウって
どうやってつくるのですか?

345 :デフォルトの名無しさん:03/04/04 21:23
>>344 WS_CHILDぉぉぉぉぉぉぉぉぉぉぉ

346 :デフォルトの名無しさん:03/04/04 21:36
ダイアログボックスなどのプロパティで「チャイルド」と指定すると
見えなくなるのですがどうすればよいのですか?

347 :デフォルトの名無しさん:03/04/04 21:39
あの〜スミマセン!!  
MassageBoxの出し方教えて下さい。  
ガッコウの兄貴に指示されました。
コニチワ、マッサージボックスで出せなさいと。
どうすればいい?


348 :デフォルトの名無しさん:03/04/04 21:43
>>347
まったく意味がわからん。

349 :デフォルトの名無しさん:03/04/04 21:45
>>347
マルチかよ


350 :いつでもどこでも太郎さん:03/04/04 21:56
すみません。初心者です。
Win32APIで、一定時間ごとに、画面をキャプチャするなんていうアプリを作れるのでしょうか?

351 :デフォルトの名無しさん:03/04/04 22:03
>>350

>一定時間ごとに
SetTimer

>画面をキャプチャ
GetDC(NULL), CreateCompatibleDC, CreateCompatibleBitmap, SelectObject, BitBlt

これらをググっても意味わからんときは猫(>>1にリンクあり)へ逝くかPetzold本買え

352 :デフォルトの名無しさん:03/04/04 22:05
あ、待て待て
おぬし童・・・いやCくらい知ってるか?

353 :デフォルトの名無しさん:03/04/04 22:20
>>350
またマルチかよ

354 :デフォルトの名無しさん:03/04/04 22:47
起動回数制限ってどうやってやるんですか?

355 :デフォルトの名無しさん:03/04/04 23:21
>>354
起動した回数数えて、10を越えたらすぐ終了するようにする。

356 :デフォルトの名無しさん:03/04/04 23:33
>>344
補足しとくとオーナーじゃなくて親な

357 :デフォルトの名無しさん:03/04/05 00:12
WM_ACTIVATEを受けたときに、クライアント領域を塗りつぶしたら、
ボタンまで塗りつぶされてしまいました。
ボタンが塗りつぶされないようにするには、どうしたらいいのでしょうか?

ちなみにこんな感じのコードを書きました。↓

case WM_ACTIVATE :
 hDC = GetDC( hWnd );
 hBrush = CreateSolidBrush( RGB( 255, 255, 255 ) );
 FillRect( hDC, &rct, hBrush );
 DeleteObject( hBrush );
 ReleaseDC( hWnd, hDC );
 break;

358 :デフォルトの名無しさん:03/04/05 00:41
>>357
ボタンをInvalidateRectするとか

359 :Win32SDK勉強中 ◆T5XFff2FOQ :03/04/05 01:47
スタティックコントロール(スタイルはSS_BITMAP)の
幅と高さがSTM_SETIMAGEで設定したイメージの
幅と高さ(GetWindowRectにて取得)に一致しないのは
仕様でしょうか?

360 :デフォルトの名無しさん:03/04/05 05:17
プラットフォームSDKダウンロード・インストールしてヘルプ読もうとしたら見れません。
いきなりつまずきました。ぐぐってみると、HTML HELP 2.0 なる物が必要とか?
MSDN や VS.NET についてる?らしいですが、そんなものもってません。
SDKのヘルプみるのに、SDK以外が必要なんでしょうか?

361 :360:03/04/05 05:26
インストールしたのはコアSDKで、OSはWindows98MEです。

362 :デフォルトの名無しさん:03/04/05 05:33
入力された文字(キーコード)を、プロシージャ以外で知る方法ってありますか?
GetKeyboardState()などは指定したキーが押されているかどうかを判別するだけのようなのですが、
押されたキーコード自体が知りたいんです。
C言語でいうgetch()みたいな都合の良いものは用意されてないのでしょうか?


363 :デフォルトの名無しさん:03/04/05 05:56
>>357
WS_CLIPCHILDREN

364 :デフォルトの名無しさん:03/04/05 06:30
>>362
KEYBOARDフックで別のプロシージャは駄目か?

365 :デフォルトの名無しさん:03/04/05 07:09
>>358
ValidateRect?

366 :デフォルトの名無しさん:03/04/05 08:03
>>365
InvalidateRect
無効化して再描画させる。

367 :デフォルトの名無しさん:03/04/05 08:40
>>357
親ウィンドウのスタイルに WS_CLIPCHILDREN を指定してみては
>>359
クライアント領域(GetClientRect)のサイズと一致するんではなかろうか

368 :デフォルトの名無しさん:03/04/05 09:45
あの〜すみません
EnumWindowsでMFC製のアプリをうまく拾う方法って何か無いですか?
GetWindowでGW_OWNERセテイすると取得できなくて困ってます。

369 :デフォルトの名無しさん:03/04/05 11:21
>>368
EnumWindowsProcからは
CWnd* pWnd = CWnd::FromHandle(hWnd);
でMFCの関数が使えるようになる
MFCのGetOwnerで取れんようなら
オーナーじゃないって可能性も疑ったほうがよかろう

370 :357:03/04/05 11:36
>>358>>363>>367
うまくいきました。ありがとうございます。
WS_CLIPCHILDRENなんて属性があったんですね。
てっきり、何もなしでもデフォルトで子ウィンドウの
領域は避けてくれるものだと思いこんでいました。

371 :デフォルトの名無しさん:03/04/05 11:38
ハイパーリンクを使用できる関数ってないですか?
リンク先をを文字列で渡したら
そのWEBページをブラウザで開くというやつ。
IE以外のブラウザ使ってる人もいるだろし・・・


372 :デフォルトの名無しさん:03/04/05 11:47
>>371
ShellExecute ?

373 :デフォルトの名無しさん:03/04/05 11:59
>>369
C++Builderユーザーなんで、APIだけで何とかなりませんか?

GetClassName(buff,255);
String ClassName=buff;
if(ClassName.Pos("Afx")==1){
ShowMessage("MFCアプリです");
}else{
GetWindow(hWnd,GW_OWNER);
}

みたいな事してるんですが、これだと、余計な物までチェック
しなきゃなんないし、オーナーかどうかもわからない。


374 :321:03/04/05 12:12
>>372
ShellExecuteでうまくいきました

あと文字列を表示する時に
アンダーラインを付けたい時は
どうすればいいですか

375 :デフォルトの名無しさん:03/04/05 12:16
>>374
LogFont

376 :デフォルトの名無しさん:03/04/05 12:56
>>368
実行時に判別するのは困難と思う。クラス名Afxは必須じゃないし。

377 :368:03/04/05 13:28
ガーン!オーナーを確定することは出来ないんですか。。。
>クラス名Afxは必須じゃない
MFCアプリは複雑ですね。
IsWindowVisibleフィルタリングで何とかしてみます。
ありがとうございました。

378 :376:03/04/05 15:01
>377
あ、確定的な方法は無いんじゃないかって話です。
アプリ中のウィンドウ全てに自前クラス名使うヤツはそうそう居ないだろうから大抵の場合はOKと思いますよ。

379 :デフォルトの名無しさん:03/04/05 15:48
>>373
ちなみにMFCではどうやって「オーナー」にアクセスしてるかつーと

_AFXWIN_INLINE CWnd* CWnd::GetOwner() const
{ return m_hWndOwner != NULL ? CWnd::FromHandle(m_hWndOwner) : GetParent(); }

m_hWndOwnerてのはMFCで定義しているC++データメンバだ

380 :デフォルト名無しさん:03/04/05 17:53
サンプル打って、なんにもしない画面だそうとおもったら、CreateWindow関数
がNULL返してきて画面がでないのですがなぜでしょう?
いきなりつまづいてる私、鬱。

381 :デフォルトの名無しさん:03/04/05 17:54
>380
打ち間違いに1000点。

382 :デフォルト名無しさん:03/04/05 17:58
>>381
打ち間違いなのか?見てくれ
hwnd = CreateWindow( szClassName,
"(´・ω・`)ショボーン",
WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT,
CW_USEDEFAULT,
CW_USEDEFAULT,
CW_USEDEFAULT,
NULL,
NULL,
hInstance,
NULL);
ちなみにszClassNameはchar[]です。

383 :デフォルトの名無しさん:03/04/05 18:04
RegisterClassしてないに一票。

384 :デフォルトの名無しさん:03/04/05 18:04
RegisterClassしてないとか

385 :デフォルトの名無しさん:03/04/05 18:04
「一手」遅かったヨー(;´Д`)

386 :デフォルトの名無しさん:03/04/05 18:10
>>383-385
つーか、RegisterClass してないなんて、どこのサンプルよ。

387 :デフォルトの名無しさん:03/04/05 18:30
>>386
RegisterClass する部分が別ページになってるとか。

388 :デフォルトの名無しさん:03/04/05 20:22
>>380
void GiveMeErrorMessage(){
LPVOID lpMsgBuf;
FormatMessage(
FORMAT_MESSAGE_ALLOCATE_BUFFER |
FORMAT_MESSAGE_FROM_SYSTEM |
FORMAT_MESSAGE_IGNORE_INSERTS,
NULL,
GetLastError(),
MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), // 既定の言語
(LPTSTR) &lpMsgBuf,
0,
NULL
);
// lpMsgBuf 内のすべての挿入シーケンスを処理する。
// ...
// 文字列を表示する。
MessageBox(NULL, (LPCTSTR)lpMsgBuf, "Error", MB_OK | MB_ICONINFORMATION);
// バッファを解放する。
LocalFree(lpMsgBuf);
}
をCreateWindowの後に呼び出す。

389 :デフォルトの名無しさん:03/04/05 21:32
>>373
MFCアプリ←→非MFCアプリの仲介をする
レギュラーDLLかCOMを一発作っとくといいかも

390 :悪魔くん:03/04/06 00:41
変数名の名前を付けることで悩んでます。
RECTを、rc にするべきか rt にするべきか。
似たような変数でダブったりする確率が低い方にしたいと思っています。
経験豊富で少し黒い方、アドバイスをお願いします。

391 :デフォルトの名無しさん:03/04/06 00:52
黒いって何?

迷うようなら、それそのものを現すズバリの名前にしたほうが
後から読むのに楽かもよ。
 RECT gazou_hyouji_ryouiki
とか。

392 :悪魔くん:03/04/06 00:55
画像とは限らないじゃん。
おぬしはまだピンク色。
経験豊富な黒い方、ヘルプミー。

393 :デフォルトの名無しさん:03/04/06 01:01
石炭より黒い俺は xxx_rect とそのまま書いている

394 :悪魔くん:03/04/06 01:04
RECTの4文字は省略しない方がよいのかな?
猫に従ってUINTをmsgにしていて初めてMSG構造体に出会った時、精通した。

395 :デフォルトの名無しさん:03/04/06 01:18
UINT uMsg;

396 :デフォルトの名無しさん:03/04/06 03:03
縦スクロールバーの挙動を確かめるために、
ウィンドウに、TextOutでとりあえず1000段くらい適当な文字列を書いてテストしてみたんです。

縦スクロールバーは、おかげさまで正常に動いたのですが、スクロールつまみを
一気に動かしても、適切な画面が一瞬ででるとこが妙に気になりました。

これって内部では1000段もの文字列をオフスクリーンバッファみたいな領域に
まとまった画像データとして持っているってことですよね?
DIB形式でしたら馬鹿にならないメモリ量だと思うのですが。

一体どこがそんな大量なメモリを管理しているんでしょうか?
あと、その領域をじかにイジる手はないのですか?


397 :デフォルトの名無しさん:03/04/06 03:07
>>392
391の文意は画像に限ってないぞ?
そんな読み方をされるんなら一切例示をしない言い方になるが
390に示されている識別名でダブりかねないようであれば
命名法よりもスコープの使い方を先に憶えたほうがいい
そうすれば394程度のことでいちいち動揺しなくなる
#include<windows.h>で導入されるあらゆる識別名との衝突を避けるには
それらを全て知っている必要があることは認識しているか?
というのは、ある命名則が広く使われている理由を誤解しているように見受けられるのだが

398 :デフォルトの名無しさん:03/04/06 03:13
>>396
君の使っているビデオカードがRADEONかGeForceかはわからんが

まず、TextOutなどのGDIコマンドがどのくらいの速度で実行されているのかを
例えば10万回の実行時間などで実測してみることをすすめる

次に、これと全く同じ実験をリージョンをかけてやってみて
クリッピングが実行時間にどのくらい影響するかを調べてみることをすすめる

何が言いたいかって? やってみればわかる

399 :デフォルトの名無しさん:03/04/06 03:19
>396
> これって内部では1000段もの文字列をオフスクリーンバッファみたいな領域に
> まとまった画像データとして持っているってことですよね?
たかだか1000段程度なら毎回ふつーに再描画してるんでないの?
実際に描画が必要な領域はせいぜいスクリーンサイズ程度だし。
というか、そもそも
> ウィンドウに、TextOutでとりあえず1000段くらい適当な文字列を書いてテストしてみたんです。
このプログラムを書いたは君自身でないの?

400 :デフォルトの名無しさん:03/04/06 03:22
ScrollWindow() だったか、表示されてる部分のイメージだけスクロール
させる API なかったっけか。

401 :デフォルトの名無しさん:03/04/06 04:19
ScrollWindow, ScrollWindowEx, ScrollDC
正直 >>396 の言ってる意味がよくわからん。

402 :デフォルトの名無しさん:03/04/06 12:05
たぶん、WM_PAINTは最初に画面表示した時に一回しか呼ばれないと思ってるんだろう。

403 :デフォルトの名無しさん:03/04/06 15:33
Application.Handleって自分のメインフォームのハンドルを指してるのですか?

404 :デフォルトの名無しさん:03/04/06 15:59
>>290
ダイアログベースMFCプロジェクトですが、
デフォルトの状態でOKボタンのイベントハンドラに、

::MessageBox(m_hWnd, "テスト", "テストキャプション", MB_OK);

これを記述してみましたが、ダイアログの中央に表示されますよ?
これってAPIじゃないんでしょうか?



405 :デフォルトの名無しさん:03/04/06 16:03
>>400
画面をスクロールさせて新しく出てきた部分を無効領域に
する関数でしたね。

406 :!290:03/04/06 16:58
>>404
>SDKのみでこれをやるには...
って書かれているのが目に入らぬか!

407 :デフォルトの名無しさん:03/04/06 17:23
APIだけ呼んでるつもりでもフックでMFCのランタイムが呼ばれてるの

408 :デフォルトの名無しさん:03/04/06 18:09
>>406-407
おー ほんとだ。
MFCってこんなところまで変更しちゃうのか。
ちなみにどうやって変更してるの?

409 :デフォルトの名無しさん:03/04/06 19:06
>>403
VCLのTApplicationハンドルはTFormのハンドルとは別です。

410 :デフォルトの名無しさん:03/04/06 19:23
神にあなたの生き方の HANDLE をゆだねなさい

411 :デフォルトの名無しさん:03/04/06 19:24
>>408
フックで、って書いてるやん
SetWindowsHookExと検索キーワードまで書かないと通じませんか?

412 :デフォルトの名無しさん:03/04/06 19:49
>>411
SetWindowsHookEx() で API フックができるとは初耳だが・・・。

413 :デフォルトの名無しさん:03/04/06 19:51
WM_CREATEとかフックすれば済む話

414 :デフォルトの名無しさん:03/04/06 19:55
つーかそこまでいちいち説明しなくても分かれよ

415 :デフォルトの名無しさん:03/04/06 22:52
>>380
遅レスだけども

メッセージハンドラ中のWM_CREATEの戻り値をちゃんとしないと
NULLでエラーになることがあるよ。MSDN参照

416 :デフォルトの名無しさん:03/04/06 23:58
>>412
坊や、別プロセスのAPIフックをするときはSetWindowsHookEx()を使うんだよ。

417 :デフォルトの名無しさん:03/04/07 00:23
WTLのコンテナ使ってる時にでてくる、
MFCのクソ紛らわしいメンバ関数ガイドを撲滅せよ(#゚Д゚)=3 ムキー

418 :デフォルトの名無しさん:03/04/07 00:26
その前に MFC を撲滅しようぜ。

419 :デフォルトの名無しさん:03/04/07 01:21
Win2000とWin98で、同じパスから PathToRegionでリージョンを作成すると、どう
も結果が違う(作成したリージョンに対して GetRgnBoxをしてみると、結果が1ピ
クセル違う)んですけど、考えられる原因は何でしょうか?

これって、VGAドライバ依存だったりするんでしょうか?


420 :デフォルトの名無しさん:03/04/07 01:29
>>416
だれもAPIフックの話などしていない。
つーかAPIフックのやり方教えて。

421 :デフォルトの名無しさん:03/04/07 01:51
>>420
どぞ。
ttp://codeguru.earthweb.com/system/apihook.html

422 :419:03/04/07 01:52
マッピングモード...っていうヤシかな?

423 :デフォルトの名無しさん:03/04/07 01:57
>>421
日本語で最小限のコードない?

424 :デフォルトの名無しさん:03/04/07 02:04
漏れは420じゃないが、サンクスコ>>421

425 :デフォルトの名無しさん:03/04/07 02:27
ライン引くプログラムで

hPen = CreatePen(PS_SOLID, 1, RGB(0, 255, 0));
hOldPen = SelectObject(hdc, hPen);
MoveToEx(hdc, 0, 0, NULL);
LineTo(hdc, rt.right, rt.bottom);
SelectObject(hdc, hOldPen);
DeleteObject(hPen);

の2行目の部分をコンパイラが「void *型はHPEN_ *型に変換できない」と怒るのですが
どうにかなだめる手はないですか?


426 :デフォルトの名無しさん:03/04/07 02:43
#define NOSTRICT
#include <windows.h>

427 :デフォルトの名無しさん:03/04/07 02:50
hOldPen = static_cast<HPEN>(SelectObject(hdc, hPen));

428 :デフォルトの名無しさん:03/04/07 03:15
static_cast->reinterpret_cast?

429 :425:03/04/07 03:24
>>426,427,428
月曜の朝に速レスどもです。
助かりました。

430 :デフォルトの名無しさん:03/04/07 03:32
>>421
英語の世界は裾野が広くていいなぁ・・・



431 :デフォルトの名無しさん:03/04/07 04:18
最近、APIを勉強し始めて、ああ、これがプログラミングなんだなと思い始めたわけですが、
自分の使いたいAPIの存在知るのが大変ですね

432 :デフォルトの名無しさん:03/04/07 04:22
他のプロセスに属する、あるウインドウに、
特定のメッセージが渡らないようにするには
どうすればいいのでしょうか?
OSはWindows2000Sp3です。

433 :デフォルトの名無しさん:03/04/07 06:27
>>416
MFCが使ってる方法ではないけどな
>>423
kageのソースとか。

434 :デフォルトの名無しさん:03/04/07 07:03
取得したハンドルからファイルパスって取得できますか?

435 :デフォルトの名無しさん:03/04/07 07:09
何のハンドルだよ

436 :デフォルトの名無しさん:03/04/07 07:21
漏れは自分自身(実行されている.exe又は.dll)のフルパスを知る方法を知りたい。
それと、プロセスのハンドルやdllのハンドルからフルパスを知る方法も知りたい。

437 :デフォルトの名無しさん:03/04/07 07:27
自分自身→GetModuleFileName(NULL, ...)
プロセスのハンドル→GetModuleFileNameExかToolhelp32
dllのハンドル→VirtualQuery + GetModuleFileName

438 :436:03/04/07 07:35
どうも。

GetModuleFileNameはフルパスでは無くて、ファイル名だけを返して来たという記憶
が頭の中に何故か入ってました…。何故だろう…。

GetModuleFileName(NULL, ...)をDLL上で実行するとどうなるのでしょうか?まあ、
それは実験すれば良いとして。

序にモジュールハンドルとプロセスハンドルの違いを教えて頂けないでしょうか?基
本的なところなんですが。

439 :デフォルトの名無しさん:03/04/07 09:10
外部プロセスのウインドハンドルを取得し、それをつかって
HDCやそのDCの保持するビットマップをBITMAPINFOの形で得ることはできないですか?


440 :デフォルトの名無しさん:03/04/07 10:30
>>439
書いてる通りに実行したらできる

441 :デフォルトの名無しさん:03/04/07 12:02
>>438
プロセスハンドルは、1 つの実行ジョブ単位 (要するにプロセス) に関連付け
られたハンドル。
プロセスを止める/再開する/強制終了する/終了を待機する/終了コードを得る
等の操作ができる。

モジュールハンドルは、プロセスの処理内容を記述したプログラムファイル (EXE、
DLL 等) 1 つ 1 つに関連付けられたハンドル。
モジュールから API などのエントリを得る/モジュールをアンロードする等の操作
ができる。


で合ってますか?

442 :デフォルトの名無しさん:03/04/07 13:32
GetKeyState()は、指定したキーが押されてるなら負を返し、押されていないのなら
0を返す覚えました。
Caps Lockの判定に if (GetKeyState(VK_CAPITAL) < 0) ではなく
if (GetKeyState(VK_CAPITAL) & 1) != 0)とすると参考書に書かれているのですが
前者の場合では、何が間違っているのでしょうか?
宜しくお願いします。


443 :デフォルトの名無しさん:03/04/07 13:39
http://www.microsoft.com/JAPAN/developer/library/jpuipf/_win32_getkeystate.htm

444 :442:03/04/07 14:09
ctrlが押されていてもCaps Lockが入ってればGetKeyState(VK_CONTROL)の値が
負になるということですか?

445 :442:03/04/07 14:46
最上位と最下位を読み違えてました・・
有難うございました。

446 :デフォルトの名無しさん:03/04/07 15:51
いくつかのエディットコントロールが乗っているダイアログがって
そのダイアログに対してLineToなどで線を引いたりしています。
エディットコントロールに入力されるとLinToなどで引いた線を再描画したくて
InvalidateRect(hDlg, NULL, TRUE);
SendMessage(hDlg, WM_PAINT, 0, 0);
でダイアログを再描画しています。
これでも再描画できますが、ダイアログ全体を再描画してしまうので
ちたついてしまいます。
コントロールは再描画しないでLineToなどで書いた図だけを再描画するには
どうしたらよいでしょうか?

447 :デフォルトの名無しさん:03/04/07 16:02
>>446
InvalidateRgnとかでコントロール以外の領域を再描画させる。
InvalidRectでLineToとかを描画する領域だけを再描画させる。

448 :デフォルトの名無しさん:03/04/07 16:19
>SendMessage(hDlg, WM_PAINT, 0, 0);
これって要るのか?

449 :デフォルトの名無しさん:03/04/07 16:21
>>447
うぁ。大変そうだ。

>>448
エディットコントロールの入力内容が変更されたら即再描画したいのれす。

450 :デフォルトの名無しさん:03/04/07 16:25
普通は UpdateWindow 使う罠

451 :コーイチ:03/04/07 16:29
ポップアップメニュー上で
ツールチップを表示させたいのですがやり方ってわかります?
#スタートメニューで各アイテムを選択したときに出るような感じのを
#タスクトレイ常駐アプリで作りたいのですが。

452 :デフォルトの名無しさん:03/04/07 17:23
Pen使って(三角形の)カーソル描いてるんだけど、このカーソル動かすには
ひとつ前のカーソル消して、新しい位置にカーソル表示みたいなN88Basicぽい処理しなきゃいけないのですか?

あとInvalidRectって、指定したrect範囲を無効にするって書いてあるけど、
無効にした範囲は別にクリアされる訳ではないんですか?


453 :デフォルトの名無しさん:03/04/07 17:54
>>452

>あとInvalidRectって、
InvalidateRect()のことか? 引数bEraseの説明嫁
>更新領域が処理されるときに、更新領域内の背景を消去するかどうか
>を指定します。TRUE を指定すると、BeginPaint 関数が呼び出された
>ときに背景が消去されます。FALSE を指定すると、背景はそのまま
>残ります。

>ひとつ前のカーソル消して、新しい位置にカーソル表示みたいな
InvalidateRect()で前のカーソルの領域と新しいカーソルの領域を
無効にして、WM_PAINTの時に新しいカーソル(というかカーソルの
現在位置)だけ書くようにすればよいはず


454 :デフォルトの名無しさん:03/04/07 18:17
>>453
どうも有難うございます!


455 :デフォルトの名無しさん:03/04/07 18:48
>>431
自分が何をしたいかを考えれば、たいていの場合、
Get〜〜かSet〜〜になるだろう!

456 :デフォルトの名無しさん:03/04/07 19:47
>>455
> >>431
> 自分が何をしたいかを考えれば、たいていの場合、
> Get〜〜かSet〜〜になるだろう!

Create〜 とかもそれなりにあるし、Enum〜 も気付きにくかったりするね。

457 :デフォルトの名無しさん:03/04/07 19:54
Path〜が便利

458 :デフォルトの名無しさん:03/04/07 23:39
UpdateLayeredWindow使って半透明描画処理したいんですが、
アルファ値を持ったデバイスコンテキストを作るってどうやるんですかね?

459 :デフォルトの名無しさん:03/04/07 23:43
sageてどうする漏れ

460 :デフォルトの名無しさん:03/04/08 11:32
最大化しているwindowの
通常時(元のサイズ)のRECTを取得するには
どの関数ですか?

461 :デフォルトの名無しさん:03/04/08 11:38
GetWindowPlacement

462 :デフォルトの名無しさん:03/04/08 11:56
なぜかフォアグラウンドが効きません。なぜでしょうか?
MessageBox(NULL, "TEST", "TEST", MB_SYSTEMMODAL|MB_SETFOREGROUND|MB_OK);


463 :デフォルトの名無しさん:03/04/08 12:21
>>462
親がいないから?

464 :デフォルトの名無しさん:03/04/08 12:55
>>458
32ビットDIBをCreateDIBSectionで作ってDCに選択

465 :デフォルトの名無しさん:03/04/08 12:59
>>463
そうなんですか?
やってみまつ。

466 :デフォルトの名無しさん:03/04/08 13:08
>>463
すみません。よく考えるとウィンドウを持たないアプリケーションでした。


467 :デフォルトの名無しさん:03/04/08 14:19
>>464
THX! やってみます

468 :デフォルトの名無しさん:03/04/08 20:28
フォーカス枠の描画を自前でやるのですが、矩形でないので DrawFocusRectが
使えません。

あの点線は、どうやって書くのでしょうか?

ペンで PS_DOTやPS_USERSTYLEで点線のスタイルを指定しても点線の間隔が長す
ぎるし、PS_ALTERNATE は Windows NT/2000/XPってなってるし...

469 :デフォルトの名無しさん:03/04/08 20:43
ちょっとスレ違いな気もしますがDrawDib系APIの質問ってことで。
任意の圧縮形式のフレームデータをウインドに描画にしたいのですが。。

ある種のフォーマットのデータを描画する際、そのフォーマットのデコンプレッサがインストールされて無い場合、そのフレームの描画ができないようです。
そこで代替手段としてDirectDrawを検討してるのですがそもそもデコンプレッサが入ってない圧縮形式の場合DirectDrawでも扱えないのでしょうか?
それとも両者は別モノでDirectDrawが自前で用意しているデコンプレッサなどが利用できるのでしょうか?


470 :デフォルトの名無しさん:03/04/08 21:11
WIN32アプリケーションでおすすめな参考書とかあります?どなたか教えて!

471 :デフォルトの名無しさん:03/04/08 21:13
>>470
書店へ。

472 :470:03/04/08 21:19
>>471
こっちは田舎だからいい本がないからどうしてもネットで買いたいです
いい本教えて下さい


473 :デフォルトの名無しさん:03/04/08 21:36
>>472
田舎のせいにするな。

474 :470:03/04/08 21:39
>>473
書店行ってもいい本はわからないよ
本がないんだから

475 :デフォルトの名無しさん:03/04/08 21:42
ネットでも十分勉強できるぞ。Win32なら「猫でも分かる〜」
あたりがいいんじゃないか?

476 :デフォルトの名無しさん:03/04/08 21:52
>470 バイブル

477 :デフォルトの名無しさん:03/04/08 22:01
>>469
「任意の圧縮形式のフレームデータ」とは、具体的にどんなんだ?
動画か?それなら、codecが入っていれば展開できるし
入ってなければDirectDrawだろうが、なんだろうができない。
静止画か?それは、自分でその展開用のライブラリを使って
展開するしかないだろう。静止画の圧縮・展開はOS(API)は
ノーサポートだからね。(jpegやgifみたいな一部例外もあるが)

478 :デフォルトの名無しさん:03/04/08 22:33
>470 バイブ

479 : :03/04/08 23:16
ツールバーのボタンを文字列を含めて同じ大きさにしたいと思います。
どなたか方法を教えてください。

480 :デフォルトの名無しさん:03/04/08 23:45
>>470よ、>>1は見たか? 猫がどうたらってリンクがあるだろ?
本が買えない事情を持つ者へまず一押しでおすすめできるサイトだぞ

481 :デフォルトの名無しさん:03/04/09 00:54
>>477
遅くなりました。レスありがとうございます。
フォーマットとはたとえばYUY2とかIF09とかです。
一応動画ですがフレーム毎にデータがきてそれを描画します
ですから静止画の展開と同様だと考えてます。
こういうコーデックって自分で作るにはどうすればいいんでしょうか?
参考になるサイトとかどなたかご存知ですか?
VCM系APIではなにやらICInstallといった関数でアプリのインスタンスのスコープで自作関数を登録できるようですが、これも使い方がよくわかりません
こちらは関係ないのかな?
ではでは。

482 :かおりん祭り:03/04/09 00:55
http://saitama.gasuki.com/kaorin/
〜oノハヽo〜 / ̄ ̄ ̄ ̄ ̄ ̄ ̄                
  ( ^▽^) < こんなのがございまーす♪ 
= ⊂   )   \_______
= (__/"(__) トテテテ...

483 :あぼーん:03/04/09 01:00
 ( ・∀・)< こんなのみつけたっち♪
http://muryou.gasuki.com/moe/hankaku10.html
http://muryou.gasuki.com/moe/hankaku09.html
http://muryou.gasuki.com/moe/hankaku08.html
http://muryou.gasuki.com/moe/hankaku07.html
http://muryou.gasuki.com/moe/hankaku06.html
http://muryou.gasuki.com/moe/hankaku05.html
http://muryou.gasuki.com/moe/hankaku04.html
http://muryou.gasuki.com/moe/hankaku03.html
http://muryou.gasuki.com/moe/hankaku02.html
http://muryou.gasuki.com/moe/hankaku01.html

484 :デフォルトの名無しさん:03/04/09 12:07
ShellExecute()でIE6.0を起動するプログラム書いてるんだけど、
Microsoft Photo Editor 3.01 を起動した状態だとなぜか以下のコードが
動かない。ShellExecute()からのエラーさえ返らず、ダンマリ状態になる。
これが相性ってやつ?ファイルの対応付けの関連かな?
ret = ShellExecute(NULL, "open", ".\\xxx.html", NULL, NULL, SW_SHOWNORMAL);

環境は
Win2k
VC++6.0 SP5

485 :デフォルトの名無しさん:03/04/09 12:18
>>484
ShellExecuteはWM_DDE_INITIATEをブロードキャストするので
応答しないウィンドウがあると黙り込みます。
2chブラウザでリンクをクリックしてもしばらく反応がないという
現象の原因もたいていがこれ。

486 :デフォルトの名無しさん:03/04/09 12:26
>>485
レスありがとうございます。助かりました。

>WM_DDE_INITIATEをブロードキャスト
そうでしたか〜
スレッド分けてタイムアウトを監視するしかなさそうですね。

487 :デフォルトの名無しさん:03/04/09 12:53
エクスプローラのファイル検索ダイアログを独自の機能で置き換えることはできますか?
もしできるとしたら、どういった技術について調べればよいのでそうか。よろしくお願いします。


488 :デフォルトの名無しさん:03/04/09 13:22
>>487
サブクラス化あたりかなぁ・・・

489 :デフォルトの名無しさん:03/04/09 14:09
エクスプローラのコンテキストメニューに追加したらいいだけちゃうんかと

490 :デフォルトの名無しさん:03/04/10 01:37
>>481
VCM系API?ああ、VideoForWindowsのVideoCompressionManagerの事か。
自分でICInstall等を使って展開関数を登録する事は自分でcodecを
作って登録するのと一緒だから、かなり大変だと思うよ。

結局、最初に言ったとうり、codecが入っていればMCIでも何でも展開できるけど
codecが入っていなければ、DirectDrawでも何でも無理だと思うよ。

491 :デフォルトの名無しさん:03/04/10 12:39
>>490
どうもありがとうございます。

codecを自作しました。
huffyuvというフリーのコーデックがソース付きで参考になりました。
いろいろなフォーマットも
http://www.fourcc.org/indexyuv.htm
で調べることができました。自作される方はどうぞ

492 :デフォルトの名無しさん:03/04/10 15:24
PCのメモリの容量や
new, mallocなどで得られるメモリの残量を知る関数を教えて下さい


493 :デフォルトの名無しさん:03/04/10 16:03
>>492
GlobalMemoryStatusのこととおもうけどnew, mallocはわからない。


494 :492:03/04/10 19:42
>>493
サンクス!


495 :492:03/04/10 21:04
実際にGlobalMemoryStatus使ってみましたが
残りメモリ(dwAvailPhysの値)が0MBになってるにもかかわらず
そうなっていてもメモリを1M2Mと普通に確保できる・・・なぜ・・・?



496 :デフォルトの名無しさん:03/04/10 21:40
仮想メモリ……

497 :492:03/04/11 01:17
>>496
あ、やっぱり・・・

でもそれじゃ困るんだよなぁ・・・(w


498 :デフォルトの名無しさん:03/04/11 03:20
WM_ACTIVEってメッセージはどこに定義されているのでしょうか。
grepしても見つからないということは、なにか盲点が・・・。

499 :デフォルトの名無しさん:03/04/11 04:21
WM_ACTIVATE?
WA_ACTIVE?

500 :デフォルトの名無しさん:03/04/11 04:57
>>498
適当な場所(cpp.h内)に
#define WM_ACTIVE 12342124
みたいに定義すれば警告メッセージがでると思う
そのメッセージ項目をクリックすればその定義されてるファイルが開かれる


501 :500:03/04/11 05:01
WM_ACTIVEはないぞゴルァ!!
ちょうどVC起動してたんでやってみた

winuser.h 1298行目
#define WM_ACTIVATE 0x0006


502 :デフォルトの名無しさん:03/04/11 06:38
VCのF12キー(定義部分へジャンプ)ってみんな使わないのね……

503 :デフォルトの名無しさん:03/04/11 11:08
>501
一応確認している誠実さにワロテしまいました。

504 :デフォルトの名無しさん:03/04/11 19:43
>>502
ブラウザ情報ファイル作るの結構処理重いしなぁ…。

505 :500:03/04/11 19:58
>>502
あ、そんなのあったんだ
サンクス!


506 :デフォルトの名無しさん:03/04/12 15:51
WNDCLASS の hbrBackground は、
RegisterClassEx() して CreateWindow() した後に
変更ができないのでしょうか?

SetWindowLong()には、それらしい方法がない
ようだったのですが

507 :デフォルトの名無しさん:03/04/12 16:08
SetClassLong

508 :506:03/04/12 16:18
>>507
おぉ、ありがとうございます

ところで、これでブラシをセット(上書き?)した場合、
もともとのブラシは、きちんとWindowsが消去する
のでしょうか?

たしか、RegisterClassEx()すると、渡したブラシを
削除する仕事はWindowsがすることになっていたと
思うのですが…
(管理権がプログラマの手から離れたと思う)

509 :デフォルトの名無しさん:03/04/12 17:24
リッチエディットコントロールで
特定の文字、行だけの背景色を変えたいんですけど、
方法教えてください。

510 :509:03/04/13 03:10
解決しました

511 :511(1):03/04/13 05:54
UpdateWindow()関数って何するものなんですか?

本(Windows2000プログラミング標準講座)見てそこに載ってるスケルトンプログ
ラムをコンパイルして実行した後、UpdateWindow()関数を呼び出す部分をコメント
アウトしてもう一度コンパイル→実行したが何も変化せーへん…

そこで、その本に載ってるスケルトンプログラムを改変し、メッセージループや
ウィンドウ関数などに送られてきたメッセージをファイル(MES.LOG)に記録する
ようにしました。

512 :511(2):03/04/13 05:56
そのプログラムを、UpdateWindow()関数を消したり付けたりして実行したとき
のMES.LOGの違いは以下のようになりました(抜粋):

・UpdateWindow()あり
-------------------- end: ShowWindow()
-------------------- start: UpdateWindow()
hWnd=********, MESSAGE=WM_PAINT , WPARAM=0, LPARAM=0
-------------------- end: UpdateWindow()
-------------------- start: Message Loop
----- in Message Loop: MESSAGE=WM_PAINT
----- in Message Loop: MESSAGE=WM_KEYUP
hWnd=********, MESSAGE=WM_KEYUP , WPARAM=13, LPARAM=-1071906815

・UpdateWindow()なし
-------------------- end: ShowWindow()
-------------------- start: UpdateWindow()
-------------------- end: UpdateWindow()
-------------------- start: Message Loop
----- in Message Loop: MESSAGE=WM_PAINT
----- in Message Loop: MESSAGE=WM_PAINT
hWnd=********, MESSAGE=WM_PAINT , WPARAM=0, LPARAM=0
----- in Message Loop: MESSAGE=WM_KEYUP
hWnd=********, MESSAGE=WM_KEYUP , WPARAM=13, LPARAM=-1071906815


…両方ともWM_PAINTメッセージが送られてきているんですけど…

参考にさせていただいたURL:
http://msdn.microsoft.com/library/en-us/gdi/pantdraw_4zef.asp
http://www7.plala.or.jp/keny01/win32/01-07.html

513 :511(3):03/04/13 05:59
実行方法:
 ・余計なメッセージが送られてこないように、マウスカーソルが該当ウィンドウ
  の中に入らないようにする
 ・実行後 Alt(Grph) + F4 を押して終了

514 :511(4):03/04/13 06:00
というわけで、よろしくお願いします

515 :デフォルトの名無しさん:03/04/13 06:19
http://yahooo.s2.x-beat.com/html/yahooobbs.html

516 :デフォルトの名無しさん:03/04/13 06:20
>>511
MSDN読めよ...

517 :デフォルトの名無しさん:03/04/13 06:47
DispatchMessageってプロシージャが処理されるまで同期(待機)するのだっけ?

518 :デフォルトの名無しさん:03/04/13 06:49
>>517
重い処理してるときウインドウの移動とかが不可能になるのなら待ってる気がする。

519 :511:03/04/13 06:50
本(Windows2000プログラミング標準講座)に載ってるスケルトンプログラムの
ウィンドウ関数に
  PAINTSTRUCT pst;
  HDC hDc;

  case WM_PAINT:
    hDc = BeginPaint(hwnd, &pst);
    TextOut(hDc, 0, 0, "Hello, Windows!", 15);
    EndPaint(hwnd, &pst);
    break ;
を追加した状態で同じことをしてみましたが、起動直後に
  Hello, Windows!
がウィンドウの左上に表示されました。ということで、UpdateWindow()は削っても
大丈夫なようですね。

>>516 >>512の最後に書いたURLだけではダメということでしょうか?

520 :デフォルトの名無しさん:03/04/13 06:58
>>519
>UpdateWindow
>ウィンドウの更新領域が空でない場合、ウィンドウにWM_PAINT メッセージを送って、
>そのクライアント領域を更新します。この関数は、アプリケーションキューを介さずに、
>指定されたウィンドウのウィンドウプロシージャに直接 WM_PAINT メッセージを送ります。
>更新領域が空のときには、メッセージは送りません。



521 :517:03/04/13 07:04
>>518  
うん、長い処理のとき反応しなくなる。
その関数はウィンドウプロシージャの戻り値が帰ってくるとだけ書いてあったので
実際はどうなのかと思ってしまった・・・  Thx

522 :デフォルトの名無しさん:03/04/13 07:16
>>520
どうもです。アプリケーションキューを「介さずに」というところが重要なわけで
すか。

UpdateWindow()がなくてもたいてい問題ないがCPUが忙しいときとかに問題が発生
する、と。そんなところですかね?

523 :デフォルトの名無しさん:03/04/13 07:55
>>522
http://www.biwa.ne.jp/~m--tani/LecturesForSundayProgrammers/Clock01/Step14/Step1401.html#UpdateWindowFn03

524 :デフォルトの名無しさん:03/04/13 13:03
Bitmapをとりこんで画像を回転させたいのですが
なにか命令はありましたか?

525 :524:03/04/13 13:17
//ビットマップの作成
やっぱ自分でビットマップ回転をビットでしなあかんのけ?
CDC tempDC;
CBitmap bmp;
tempDC.CreateCompatibleDC(NULL);
bmp.LoadBitmap(IDB_BITMAP1);
tempDC.SelectObject(&bmp);
MFC使ってるからほかのとこで質問します
失礼

526 :デフォルトの名無しさん:03/04/13 13:20
APIあったけど名前忘れた

527 :デフォルトの名無しさん:03/04/13 13:41
>524-526
SetWorldTransform
ただしNT系のみ

CodeGuruとかで探した方がいいかも

528 :524:03/04/13 13:46
>>527
さんくすこ

529 :デフォルトの名無しさん:03/04/13 15:04
指定時刻になると、休止状態から復帰して実行できるようなプログラムを作成したいのですが
どのようにすればいいのでしょう?
過去ログを見ると
http://pc3.2ch.net/test/read.cgi/tech/1036654893/131-133n
タスクスケジューラを使用せよ、との回答がありましたが、
ログオンパスワードを設定していない状態だと、WinXP Proではタスクを実行できません。
(参考: http://www.canopus.co.jp/tech/faq/faq000264.htm)
上記URLとは別の、私が所有しているTV録画ソフト(bitcast.TV)は
ログオンパスワードを設定していなくても休止状態から復帰できているので、
タスクスケジューラを用いずに済む方法があるのではないかと思っているのですが…


530 :デフォルトの名無しさん:03/04/13 18:31
>>524
GDI+を使う手もあるね。

531 :デフォルトの名無しさん:03/04/13 19:21
すみません質問なのですが、
ダイアログボックスを
子ウィンドウのように
親ウインドウの外に出られないようにするには
どうすればよいのでしょうか。

532 :デフォルトの名無しさん:03/04/13 19:59
リストコントロールでグリッドを表示しつつ背景色変えたいのですが、
アイテムが無い背景部のグリッドが見苦しい。
背景部はグリッドを引かないようにする良い方法無いですか?

533 :デフォルトの名無しさん:03/04/13 20:18
>>532
オーナードロー

534 :デフォルトの名無しさん:03/04/13 23:58
>>531
…子ウィンドウの意味わかってる?

535 :デフォルトの名無しさん:03/04/14 00:31
ダイアログボックスを閉じ込めたい用途って、一体何なのか激しく気になるます。

536 :デフォルトの名無しさん:03/04/14 00:36
>>531
リソースを使用せずにダイアログ作れば良い。

537 :デフォルトの名無しさん:03/04/14 01:56
>>529
Waitable Timerかな?

538 :デフォルトの名無しさん:03/04/14 02:04
>>531
キャプションの無いダイアログに設定する。
ダイアログ起動と同時に親ウィンドウのど真ん中に移動させる。
これでOK。感謝汁!

539 :デフォルトの名無しさん:03/04/14 02:45
というか普通にWS_CHILD | DS_CONTROL

540 :DLLはここでいいのでしょうか:03/04/14 03:20
DLL_PROCESS_ATTACH の条件で
DllEntryPoint() が呼ばれるのは
必ず1回だけになっているのでしょうか?

プロセス - p0, p1
DLL - a.dll

p0 が a.dll を動的にロードした
p1 が a.dll を動的にロードした
(このタイミング)
p0 が a.dll を動的にアンロードした
p1 が a.dll を動的にアンロードした

a.dll は、p0 と p1 の2つのプロセスから
ロードされている(?)にも関わらず、
(このタイミング)のときでも、2度目(?)の
DLL_PROCESS_ATTACH を感知してないような…

541 :デフォルトの名無しさん:03/04/14 16:39
>>540
自分も勘違いしていたが、その通りらしい。
p1 が(この場合はマッピングと言う呼び方が適切か)ロードした時には例の参照カウンタをインクリメントするだけ。
以上、Advanced Windows より。

542 :540:03/04/14 20:07
>>541
やっぱりですか…

認識を改めて、もう一度、ヘルプを読むことにします。
意味を確かめるよう、気を付けながら…

543 :540:03/04/14 20:25
>>541
ところで、この「Advanced Windows」という本は良書ですか?

今検索して紹介文を読んだら、少し煽られたのですが

544 :デフォルトの名無しさん:03/04/14 20:28
メニューを表示すると、ブロックしてしまってザ・ワールドになるんですが、
これを回避する方法は無いですか?

545 :デフォルトの名無しさん:03/04/14 21:34
>>543
禿げしく良書

546 :デフォルトの名無しさん:03/04/14 22:10
フォルダのツリービュー(エクスプローラの左側にあるやつ)を作成する方法(もしくはキーワード等)を教えて下さい。

547 ::03/04/14 22:17
>546
FindFirstFile?

548 :デフォルトの名無しさん:03/04/14 22:45
>>546


549 :デフォルトの名無しさん:03/04/14 22:49
>>546
TVINSERTSTRUCT SysTreeView32

550 :デフォルトの名無しさん:03/04/14 23:13
質問。
extern "C" __declspec(dllexport)
void Omikuji(char* Input, char* Output){
 return;
}

上のソースで某IRCのマクロ用DLLを作ろうと思い、
VC6でDLL用のプロジェクトの"afx..."とか付かない、空っぽの方のプロジェクトを使ったのですが、
コンパイル時に、[error C2059: 構文エラー : 'string']と出てしまいます。
これを解決する方法ってありますでしょうか?

551 :デフォルトの名無しさん:03/04/14 23:15
キーボードやマウスの入力発生を、割り込みかEventで通知してくれるようにする
標準的なWin32 APIってありますか?

552 :デフォルトの名無しさん:03/04/14 23:34
>>550
提示された情報が全く持って役に立たないわけだが……
STLのstring使ってるならインクルードする。
場合によってはusing namespace std;を忘れないように。

>>551
ない

553 :デフォルトの名無しさん:03/04/14 23:58
>>550
そのソースファイルの拡張子を .c から .cpp に変える。
もしくは extern "C" ... を extern ... に書き直す。

>>551
フックかな。


554 :546:03/04/15 00:08
>>547-549
レスどうもです。
TreeViewを作成してフォルダを順次登録していくしかないみたいですね。
いちおうMFCスレでも聞いてみます。


555 :550:03/04/15 00:57
552&553レスありがとう。
結局553のほうでした。
知らなかったとはいえ、何かすっごい情けないです。(汗

とにかく多謝!

556 :デフォルトの名無しさん:03/04/15 02:35
>>543
ちと古過ぎないか?

557 :540:03/04/15 06:15
> >>543
> ちと古過ぎないか?

ではほかに、今に即した本でオススメはありますでしょうか?

「Adv...」の紹介文では、Windows2000がでたころに
改訂版がでたようでした。

558 :デフォルトの名無しさん:03/04/15 11:05
>>556
俺の持ってる「Ad......」には、64bitについても説明があるよん

559 :デフォルトの名無しさん:03/04/16 19:13

 マルチスレッドプログラミングのクリティカルセクションに
関してなんですが、ペゾルトを読みながら勉強中なんですが、
クリティカルセクションのオブジェクトというのは、一般には
どの辺で宣言するものなのでしょうか? 2つ以上のスレッド
で共有することになるので、やはりグローバル領域が適当でしょうか?
できればグローバル変数は使いたくないので参照やポインタ渡しも
考えてみましたが、新しく作成するスレッドは1つのPVOID引数しか
取れないのでかえって複雑になりそうな気もします。



560 :デフォルトの名無しさん:03/04/16 22:15
WindowsOSでファイルの途中に高速にデータを挿入する方法はありますか。
WindowsOSがWindows Media Video/Audioのヘッダを編集するのが高速なのはなぜ?

#昨日、すれ立てるまでもないで投稿したのですが、
#今日、こちらを見つけまして投稿しました。


561 :デフォルトの名無しさん:03/04/16 22:40
>>560
単に、効率よく処理してるだけじゃないのか?

Windows Media Video/Audio・・・が特別な高速な処理を行っているという
記述をどこかで見かけたので質問しに来たのなら、その文献を詳しく調べて
見るのが答えへの近道だと思うが。

562 :デフォルトの名無しさん:03/04/16 22:48
>>560
領域予約

563 :デフォルトの名無しさん:03/04/16 23:25
>561, 562

やっぱり、領域予約でしょうか?
ファイルヘッダ領域(コメント保存領域)を拡張して保存するのが高速で、
何か方法があるのではないかと、会社の先輩から調査を依頼されまして。

もしそうとすれば、Platform SDKなどに非シーケンシャルなファイル操作があるのかも、
しれないと思い、投稿しました。

特に文献を知っているわけではありません。

拡張などしていない、ポインタでファイル末尾に追加したなどの、
間違いかもしれません。
または、ファイルシステムが自動的に再利用?
あり得ないですね。。。

564 :デフォルトの名無しさん:03/04/17 00:16
一部タグはファイル末尾に記録されるよん。>>560

565 :デフォルトの名無しさん:03/04/17 00:53
>564

> 一部タグはファイル末尾に記録されるよん。>>560

やっぱりそういうことで裏技はないんですね。
ありがとうございました。


566 :デフォルトの名無しさん:03/04/17 00:57
Platform SDKのダウンロードページが見つからない。
変なオンライン・インストール・プログラムはあったんですけど。
これ使わないとダメ?

567 :デフォルトの名無しさん:03/04/17 01:04
次スレから>1に入れたほうが良いかも
http://www.microsoft.com/msdownload/platformsdk/sdkupdate/
http://www.microsoft.com/msdownload/platformsdk/sdkupdate/psdk-full.htm


568 :566:03/04/17 01:10
>>567
ありがとうございます。
以前見つけたときはダイアルアップ環境だったのであきらめていたんです。


569 :デフォルトの名無しさん:03/04/17 12:52
Internet Explorer のバージョンを調べたいのですが、
レジストリの HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer の Version
を見る以外に方法はないのでしょうか?

570 :デフォルトの名無しさん:03/04/17 12:58
>>569
DLLのバージョンを調べて見るとか。

571 :デフォルトの名無しさん:03/04/17 13:05
IEXPLORE.EXE のバージョンを調べるとか

572 :山崎渉:03/04/17 15:10
(^^)

573 :デフォルトの名無しさん:03/04/17 16:13
山崎age

574 :569:03/04/17 19:09
>>570-571

ありがとうございます。
DLLは shdoc*.dll ですよね?
ただ9x系とNT系で格納場所が変わっててやっかいそうなので、
IEXPLORE.EXEを調べる方法でうまくいきました。

575 :デフォルトの名無しさん:03/04/17 23:28
iexplore.exeの場所なんてもっとまちまちだと思うが…
インストール時に選べるんだし

576 :デフォルトの名無しさん:03/04/17 23:37
IE6SP1だがiexplore.exeのバージョンが4.72.3110.0…


577 :デフォルトの名無しさん:03/04/17 23:40
>>576
んなアホな。おれんとこは、6.0.2800.1106 だよ。
IE の ヘルプ(H)-バージョン情報(A) は、どう表示される ?

578 :デフォルトの名無しさん:03/04/17 23:45
>>576
explore.exe見てんじゃねーよ。

579 :デフォルトの名無しさん:03/04/17 23:47
iexplore.exeの本体は別のところにあるから、
iexplore.exeだけヴァージョンが違ってても、どうってことなさそうだな。

580 :576:03/04/18 00:07
バージョン情報は普通に6.0.2800.1106
素性不明のファイルがあるのは怖いなぁ


581 :デフォルトの名無しさん:03/04/18 00:17
レジストリでいいじゃん。なんでダメなのよ。

582 :デフォルトの名無しさん:03/04/18 00:24
>>580
C:\ を iexplore.exe で検索してみ。

583 :576afo:03/04/18 00:29
>>582
サンクス
ただのIE4の残骸でした
とりあえず安心しましたが、かわりに自分の知性に対する不安がさらに増大しました


584 :デフォルトの名無しさん:03/04/18 12:59
GetLastError()でエラーコードは取得できるんですけど
エラーメッセージは取得できないのでしょうか?

585 :デフォルトの名無しさん:03/04/18 13:06
そのためにFormatMessageという関数がある

586 :デフォルトの名無しさん:03/04/18 13:14
>>585
それが返ってこないんです。エラーコードは12007なんですけど。

587 :デフォルトの名無しさん:03/04/18 13:41
>>586
Visual Studioに Error Lookupと言うツールがあるんだが・・・12007はエラーメッセージが定義されてないっぽ

直前に呼んでいる関数は何よ?




588 :デフォルトの名無しさん:03/04/18 13:46
>586-587
WinInet系のエラーだよ。

12007 ERROR_INTERNET_NAME_NOT_RESOLVED
サーバー名を解決できませんでした。

589 :デフォルトの名無しさん:03/04/18 14:00
>>587
InternetConnect
です。

>>588
それはどうやって取得したんですか?

あとですね。
C:\Documents and Settings\Administrator\NetHood
ディレクトリにあるフォルダにFtpGetFileでファイルをダウンロードできないんです。
せめてエラーになってくれればよいのですけど。

590 :デフォルトの名無しさん:03/04/18 14:16
>589
エラーコードがMSDNに載ってる。(エラーメッセージを取得した訳ではない)
12007で検索汁。

591 :デフォルトの名無しさん:03/04/18 14:24
>>590
ありました。これはプログラムで取得することはできないということですね。
まあ、しょうがないです。はい。

592 :デフォルトの名無しさん:03/04/18 15:48
WinMainの引数のlpCmdLineの内容をコンソールアプリのように
コマンドライン引数を分割するAPIありますか?

593 :デフォルトの名無しさん:03/04/18 15:51
CommandLineToArgvW

594 :デフォルトの名無しさん:03/04/18 15:56
>>593
あるとおもわなかった。さんくす

595 :デフォルトの名無しさん:03/04/18 15:58
Wなのが気にくわんよなそれ

596 :デフォルトの名無しさん:03/04/18 16:02
使いにくそうなのでやめました。

597 :デフォルトの名無しさん:03/04/18 18:02
RECTを与えて、その領域から(横が)はみ出ないようにテキストを描画したいんですけど、
DrawTextで DT_WORDBREAK を使うと、

A is Hogehoge の場合は
  | A is     |
  | Hogehoge |

で、これはいいんですが、AisHogehoge(単語間のスペースが無い場合)
だと
  | AisHogehog|e
  |        |
こうなってしまいます。
  | AisHogeho |
  | ge      |
このように描画することはできるのでしょうか?


598 :デフォルトの名無しさん:03/04/18 18:26
特定のアプリケーションがインストールされていたり、インストールされたら何か反応するプログラムを作りたいのですけど
とりあえずどうすればいいでしょうか?

599 :デフォルトの名無しさん:03/04/18 18:32
>>598
レジストリ見ればいいんでないのー

600 :デフォルトの名無しさん:03/04/18 20:53
>>591
できるよ
FORMAT_FROM_HMODULE
12007, "サーバー名またはアドレスは解決されませんでした"

601 :デフォルトの名無しさん:03/04/18 20:54
>>597
おまえヤル気あるのか?パラメータ位、幾らでも試せるだろう!
DT_WORDBREAK | DT_????
DT_???? はテメーで考えろ!

602 :デフォルトの名無しさん:03/04/18 20:57
レジストリ使わない場合もあるしな・・・
ファイル名が固定なら全ディレクトリを検索するとか。
ファイル名が不定だとインストール前の全実行ファイル名と
インストール後の全実行ファイル名を比較するとか。
ああ、別の実行ファイルに寄生するファイルだとダメか・・・
てことはCRCなりMD5なりでチェックが必要だな。


603 :598:03/04/18 21:41
くわしくヨロ

604 :597:03/04/18 22:01
>>601
もうね、描画したい場所にエディットコントロール貼りつけて(w それら
しく描画するという力技で実装した矢先、>601を読んで DT_EDITCONTROLに
気づいた次第。

605 :デフォルトの名無しさん:03/04/18 22:54
最強の開発言語
http://www.borland.co.jp/delphi/personal/


606 :601:03/04/18 23:01
>604
笑える。でもいいじゃないか。手段はともかく実現するってのは大切だからな。

607 :デフォルトの名無しさん:03/04/19 01:35
>>584
winerror.hを見ろ

608 :デフォルトの名無しさん:03/04/19 08:38
>>584
FormatMessage

609 :デフォルトの名無しさん:03/04/19 08:58
WaitForSingleObjectのタイムアウト時間は、どの程度の精度が
あるんですか?timeGetTimeくらい?



610 :デフォルトの名無しさん:03/04/19 09:17
>>609
通常の3倍

611 :デフォルトの名無しさん:03/04/19 09:29
>>609
> WaitForSingleObjectのタイムアウト時間は、どの程度の精度が
> あるんですか?timeGetTimeくらい?

WaitForSingleObject() なんかのタイムアウト時間は、最低保証値だよ。
timeGetTime なんかと比べるもんじゃない。

612 :609:03/04/19 09:34
>>610-611
ありがとう。助かりました。

613 :デフォルトの名無しさん:03/04/19 12:39
>>607
>>590-591で既出
>>608
>>585-586で既出
お前らあほ?

614 :デフォルトの名無しさん:03/04/19 12:48
>>613
winerror.hは出ていませんが。
お前、うんこ?

615 :598:03/04/19 13:26
だれか漏れの質問に答えてくれ

616 :デフォルトの名無しさん:03/04/19 13:39
wininet.dllのエラーメッセージはリソースタイプ11のリソース1に入っているが
APIで取得する方法は不明

617 :デフォルトの名無しさん:03/04/19 14:26
>>616
>>600で既(略

618 :デフォルトの名無しさん:03/04/19 14:48
Win32APIそのものの質問ではないんですけど、WinNT系を
セーフモードで再起動させる方法ってありますか?
Win9x系なら、MSDOS.SYSを編集した後にExitWindowsExを
使って再起動すればOKっぽいんですけど。。。

619 :デフォルトの名無しさん:03/04/19 14:49
>>617
wininet.dllは出ていませんが。
お前、うんこ?

620 :デフォルトの名無しさん:03/04/19 14:51
>>600
FORMAT_MESSAGE_FROM_HMODULE ぢゃない?

621 :デフォルトの名無しさん:03/04/19 14:52
>>598
ReadDirectoryChangesWかFindFirstChangeNotificationでも使って
ディスクを監視しとけば?

622 :デフォルトの名無しさん:03/04/19 16:05
>>614
いやお前がうんこ
> これはプログラムで取得することはできないということですね。
の解決になってないことに変わりはない
>>619
>>588で(ry
↓「.dll」が出ていないと強引にうんこ呼ばわり

623 :608:03/04/19 16:45
>>613
あ? ボランティアで答えてやったのを
なんであほとか言われにゃならんのだ?

回答する前に過去ログくらい調べてこいだと?
本気でそう思うなら言ってみろや、はっきりと

誰のためにそんな手間かけんだよ
人を動かす動機がまるでわかってないな、こいつ

624 :デフォルトの名無しさん:03/04/19 16:54
>>615
「くわヨロ」じゃ、お前さんが何がわからんのかがわからんぞ

RegOpenKeyEx関数で
HKEY_CURRENT_USER\Software\メーカ名\製品名\

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\製品名\
あたりを開いてみる位のスキルはあるか?

625 :デフォルトの名無しさん:03/04/19 17:56
>>623
はっきり言ってやる
回答する前に過去ログくらい調べてこい

間抜けを指摘されて逆ギレするなんて
かっこいい人が世の中にはいるもんだなあ・・・

626 :デフォルトの名無しさん:03/04/19 18:10
つい最近の既出に気づかないのは確かに間抜けだな

627 :デフォルトの名無しさん:03/04/19 18:27
俺は、よしゆきの味方だぜ。

628 :デフォルトの名無しさん:03/04/19 18:36
>>625
もう一度言う
誰のためにそんな手間かけんだよ? え?
そのために日当でも出すんか?
聞いた風なセリフしか使えんようだが
通じる筋合いかどうかよく見て言えや
てめえみたいのを本当の間抜けって言うんだよ

629 :動画直リン:03/04/19 18:38
http://www.agemasukudasai.com/movie/

630 :デフォルトの名無しさん:03/04/19 22:44
そんなに手間を掛けるのが嫌なら答えるなよ大間抜け

631 :デフォルトの名無しさん:03/04/19 22:47
過去ログも何も質問のすぐ次のレスだろ
どういう読み方をすれば見逃すんだよ。
手間うんぬん以前の問題だ大馬鹿

632 :デフォルトの名無しさん:03/04/19 22:52
つい最近の既出に気づかないのは確かに大馬鹿だな

633 :Win32SDK勉強中 ◆T5XFff2FOQ :03/04/20 00:55
え〜と、お取り込み中申し訳ないのですが、
標準のBUTTONはTextOutを使って文字を描画して
いるのですか?それともDrawTextでしょうか?
教えてください。

634 :デフォルトの名無しさん:03/04/20 00:57
DWORD nFileSizeHigh,nFileSizeLow でファイルサイズを計算するときって

nFileSizeHigh * (MAXDWORD+1) + nFileSizeLow
だよね?

nFileSizeHigh * MAXDWORD + nFileSizeLow
とかって書いてるWebページが結構あるのだが...大丈夫かなぁ

635 :デフォルトの名無しさん:03/04/20 01:03
>>633
MSに尋ねてくだちい

636 :デフォルトの名無しさん:03/04/20 01:39
>>630
もう一度言う
通じる筋合いかどうかよく見てほざくんだな
答えるか答えないかを、おまえの許しで判断してるボケがどこにいる?
まるで駅前の不特定多数を叱りつけている危ないオヤジだな

筋合いを判断するオツムがなけりゃずっとそうやってろ

637 :デフォルトの名無しさん:03/04/20 01:41
許し云々じゃなくて間抜けだなって話だろ。

638 :デフォルトの名無しさん:03/04/20 01:55
                     |\
┌──────────┘- \
│  気の触れた方が          \
│                     /
└──────────┐- /
      ヽ(´ー`).ノ       |/
        (  へ)
        く
                  - = ≡三                    |\
               - = ≡三  ┌──────────┘- \
               _ = ≡三    │                     \
                ̄ = ≡三    │ 一人いらっしゃいます       /
               - = ≡三  └──────────┐- /
        (´ー`)        - = ≡三                     |/
      ( ヽ ヽ)
       /  >


639 :デフォルトの名無しさん:03/04/20 01:58
>>637
勝手にそう思ってりゃいいんだよ
既出がどうのと一席ぶちながら
スレ違いの無駄口たたきおって

640 :デフォルトの名無しさん:03/04/20 02:01
>>639
つーかそんな無駄口でいちいちageんなタコ

641 :デフォルトの名無しさん:03/04/20 02:04
スレのS/N比から個人批判にトーンダウンか?

642 :デフォルトの名無しさん:03/04/20 02:07
一貫してマヌケでage厨だという認識で全員一致しています。

643 :デフォルトの名無しさん:03/04/20 02:08
一人芝居のな

644 :デフォルトの名無しさん:03/04/20 02:08
(´-`)。oO( sage方知らないんじゃ… )

645 :bloom:03/04/20 02:08
http://www2.leverage.jp/start/

646 :デフォルトの名無しさん:03/04/20 02:11
あの程度でキレたり駄レスでageたり相手が一人だと思い込んだり


    2 c h に 向 い て な い よ  



647 :デフォルトの名無しさん:03/04/20 02:11
sageるかどうかの選択権も自分だけ特別だと思てけつかるなこのガキ

648 :デフォルトの名無しさん:03/04/20 02:13
あーあ、こいつマジで初心者だ。

649 :デフォルトの名無しさん:03/04/20 02:15
文句たれる相手間違ってんじゃねえよ
ヒロユキが怖いか坊主?


650 :デフォルトの名無しさん:03/04/20 02:19
何故ここでヒロユキが出てくるんだろう。2chのルールだとでも思ってるのだろうか。
純粋な質問が埋もれるのでデフォルトsage進行なのはム板の常識ですが何か。

つーか意地でもsageられなくなってるおまえがガキ。

651 :デフォルトの名無しさん:03/04/20 02:20
そんなに気に入らねんなら削除依頼でもしてきたらどうだ?
やり方知らねってか? 初心者じゃあんめえし
操作方法より削除屋が動かせねえってんなら道理だな
その話し方じゃ

652 :デフォルトの名無しさん:03/04/20 02:23
>純粋な質問が埋もれるのでデフォルトsage進行

プ

653 :デフォルトの名無しさん:03/04/20 02:23
何故ここで削除依頼が出てくるんだろう。このスレが問題などと一言も言っていないのに。
ただ マ ヌ ケ だなと思ってるだけだよ。

654 :デフォルトの名無しさん:03/04/20 02:23
気に入らねんだろ? え?

655 :デフォルトの名無しさん:03/04/20 02:25
意地でもsageられなくなった哀れな>>654がいるスレはここですか?

656 :デフォルトの名無しさん:03/04/20 02:26
コンテキストメニューをWinZipみたいにオーナードローするにはどうやったらいいすか?


657 :デフォルトの名無しさん:03/04/20 02:26
お前の脳内で何が起きてるかに誰が興味持ってんだよ?
お前のお好みのために誰が過去ログ調査すんだよ?

658 :デフォルトの名無しさん:03/04/20 02:27
>>656
ShellExtension

659 :デフォルトの名無しさん:03/04/20 02:27
何かあちこちのスレで煽ってるけど、食中りでも起こしたの?

660 :デフォルトの名無しさん:03/04/20 02:27
他のプロセスのデフォルトヒープ領域の開始位置とサイズ、
拡張ヒープ領域の開始位置とサイズをすべて取得するのはどうやるの
自分の取得方法なら分厚いAPIマニアルに書いてあるけど相手のを
取る方法はどこにもない


661 :デフォルトの名無しさん:03/04/20 02:29
>>657
誰も君が悪いことをしてるなんて言ってないよ。

ただ間抜けだなと言ってるだけで(ププ

662 :デフォルトの名無しさん:03/04/20 02:29
age/sageのアルゴリズムさえまともに考えられない低脳こそ
このスレでは一番の非常識だぜ?

663 :デフォルトの名無しさん:03/04/20 02:30
>>662
スレ違い

664 :デフォルトの名無しさん:03/04/20 02:31
放置したら?

665 :デフォルトの名無しさん:03/04/20 02:32
↓ここから元のWin32API質問箱に戻ります。

666 :デフォルトの名無しさん:03/04/20 02:32
>>661
ここはお前の日記帳じゃねえ
何が過去ログだ
それ以前の節操ができてないくせに

667 :デフォルトの名無しさん:03/04/20 02:34
>>664 今は放置するときではない。徹底的に叩き殺すのだ。

668 :デフォルトの名無しさん:03/04/20 02:34
>>667
うっせー。氏ねよ。

669 :デフォルトの名無しさん:03/04/20 02:35
>>667
くやしいもんなあ(藁

670 :デフォルトの名無しさん:03/04/20 02:36
しっかしこのスレでこんな厨房見たの久しぶりだよ。

671 :デフォルトの名無しさん:03/04/20 02:36
とうとうジエンまで始めました。

672 :デフォルトの名無しさん:03/04/20 02:37
祭?ねぇこれ祭なの?

673 :デフォルトの名無しさん:03/04/20 02:39
わかりやすいから>>666って名づけることにしました。

674 :デフォルトの名無しさん:03/04/20 02:39
>>669
うざいから裏2ちゃんねる逝ってくれ

675 :デフォルトの名無しさん:03/04/20 02:41
>>653
こいつスレ削除とレス削除があるの知らないなw

676 :デフォルトの名無しさん:03/04/20 02:43
痛々しくなってきた

677 :デフォルトの名無しさん:03/04/20 02:44
>>671, >>676
オマエガナー

678 :デフォルトの名無しさん:03/04/20 02:44
レスした奴はみんな馬鹿です。

679 :デフォルトの名無しさん:03/04/20 02:45
まぁ未だに相手は一人しかいないと思ってる>>677だが


680 :デフォルトの名無しさん:03/04/20 02:46
  |        /\ |  /|/|/|  ドッドッドッドッドッド!!
  |      /  / |// / /|
  |   /  / |_|/|/|/|/|     (´⌒(´⌒`)⌒`)
  |  /  /  |文|/ // /  (´⌒(´祭だ!!祭だ!!`)⌒`)
  |/  /.  _.| ̄|/|/|/    (´⌒(´∧ ∧⌒`)`)`)⌒`)
/|\/  / /  |/ /     (´⌒(´(,゚Д゚ )つ `)`)
/|    / /  /ヽ  (´⌒(´⌒  (´⌒( つ |〕 /⌒`)⌒`)
  |   | ̄|  | |ヽ/|  遅れるな!!   ( |  (⌒)`)⌒`)
  |   |  |/| |__|/.   ∧_∧ ⌒`).ドし'⌒^ミ `)⌒`)ォ
  |   |/|  |/  (´⌒(´( ´∀` )つ  ド  ∧_∧⌒`)
  |   |  |/    (´⌒(´( つ/] /    ォと( ・∀・ ) 突撃――!!
  |   |/        ( |  (⌒)`)  ォ ヽ[|⊂[] )`)
  |  /         (´ ´し'⌒^ミ `)`)ォ (⌒)  |   

681 :デフォルトの名無しさん:03/04/20 02:46
>>679
まあ、ある特徴で判断しているわけだが(藁

682 :デフォルトの名無しさん:03/04/20 02:47
あー、いっとくけどレスしてんの俺じゃねーよ。
荒らしたい奴が書き込んでるだけ。
俺はもう反省したから、放置した方がいいと思う。

683 :間違い探し:03/04/20 02:48
  |        /\ |  /|/|/|  ドッドッドッドッドッド!!
  |      /  / |// / /|
  |   /  / |_|/|/|/|/|     (´⌒(´⌒`)⌒`)
  |  /  /  |女|/ // /  (´⌒(´祭だ!!祭だ!!`)⌒`)
  |/  /.  _.| ̄|/|/|/    (´⌒(´∧ ∧⌒`)`)`)⌒`)
/|\/  / /  |/ /     (´⌒(´(,゚Д゚ )つ `)`)
/|    / /  /ヽ  (´⌒(´⌒  (´⌒( つ |〕 /⌒`)⌒`)
  |   | ̄|  | |ヽ/|  遅れるな!!   ( |  (⌒)`)⌒`)
  |   |  |/| |__|/.   ∧_∧ ⌒`).ドし'⌒^ミ `)⌒`)ォ
  |   |/|  |/  (´⌒(´( ´∀` )つ  ド  ∧_∧⌒`)
  |   |  |/    (´⌒(´( つ/] /    ォと( ・∀・ ) 突撃――!!
  |   |/        ( |  (⌒)`)  ォ ヽ[|⊂[] )`)
  |  /         (´ ´し'⌒^ミ `)`)ォ (⌒)  |   

684 :デフォルトの名無しさん:03/04/20 02:49
純粋な質問が埋もれるのでデフォルトsage進行
純粋な質問が埋もれるのでデフォルトsage進行
純粋な質問が埋もれるのでデフォルトsage進行
純粋な質問が埋もれるのでデフォルトsage進行
純粋な質問が埋もれるのでデフォルトsage進行
純粋な質問が埋もれるのでデフォルトsage進行
純粋な質問が埋もれるのでデフォルトsage進行
純粋な質問が埋もれるのでデフォルトsage進行
純粋な質問が埋もれるのでデフォルトsage進行
純粋な質問が埋もれるのでデフォルトsage進行
純粋な質問が埋もれるのでデフォルトsage進行
純粋な質問が埋もれるのでデフォルトsage進行
純粋な質問が埋もれるのでデフォルトsage進行

685 :間違い探し:03/04/20 02:50
  |        /\ |  /|/|/|  ドッドッドッドッドッド!!
  |      /  / |// / /|
  |   /  / |_|/|/|/|/|     (´⌒(´⌒`)⌒`)
  |  /  /  |鬱|/ // /  (´⌒(´祭だ!!祭だ!!`)⌒`)
  |/  /.  _.| ̄|/|/|/    (´⌒(´∧ ∧⌒`)`)`)⌒`)
/|\/  / /  |/ /     (´⌒(´(,゚Д゚ )つ `)`)
/|    / /  /ヽ  (´⌒(´⌒  (´⌒( つ |〕 /⌒`)⌒`)
  |   | ̄|  | |ヽ/|  遅れるな!!   ( |  (⌒)`)⌒`)
  |   |  |/| |__|/.   ∧_∧ ⌒`).ドし'⌒^ミ `)⌒`)ォ
  |   |/|  |/  (´⌒(´( ´∀` )つ  ド  ∧_∧⌒`)
  |   |  |/    (´⌒(´( つ/] /    ォと( ・∀・ ) 突撃――!!
  |   |/        ( |  (⌒)`)  ォ ヽ[|⊂[] )`)
  |  /         (´ ´し'⌒^ミ `)`)ォ (⌒)  |

686 :山崎渉:03/04/20 02:53
   ∧_∧
  (  ^^ )< ぬるぽ(^^)

687 :なんとなく・・・:03/04/20 02:54
  |        /\ |  /|/|/|  ドッドッドッドッドッド!!
  |      /  / |// / /|
  |   /  / |_|/|/|/|/|     (゚∀(゚∀゚)∀゚)
  |  /  /  |文|/ // /  (゚∀(゚祭だ!!祭だ!!゚)∀゚)
  |/  /.  _.| ̄|/|/|/    (゚∀(゚∧ ∧∀゚)゚)゚)∀゚)
/|\/  / /  |/ /     (゚∀(゚(,゚Д゚ )つ ゚)゚)
/|    / /  /ヽ  (゚∀(゚∀  (゚ つ |〕 /∀゚)∀゚)
  |   | ̄|  | |ヽ/|  遅れるな!!   ( |  (∀)゚)∀゚)
  |   |  |/| |__|/.   ∧_∧ ∀゚).ドし'∀^ミ ゚)∀゚)ォ
  |   |/|  |/  (゚∀(゚( ゚∀゚ )つ  ド  ∧_∧∀゚)
  |   |  |/    (゚∀(゚( つ/] /    ォと( ・∀・ ) 突撃――!!
  |   |/        ( |  (∀)゚)  ォ ヽ[|⊂[] )゚)
  |  /         (゚ ゚し'∀^ミ ゚)゚)ォ (∀)  |   

688 :デフォルトの名無しさん:03/04/20 02:57

何?祭り???


689 :デフォルトの名無しさん:03/04/20 03:26
  |         |  |
  |         |  |_____
  |         |  | ̄ ̄ ̄ /|
  |         |  |   / /|
  |        /\ |  /|/|/|
  |      /  / |// / /|
  |   /  / |_|/|/|/|/|
  |  /  /  |文|/ // /     ∧∧
  |/  /.  _.| ̄|/|/|/      /⌒ヽ)
/|\/  / /  |/ /       [ 祭 _]    ∧∧
/|    / /  /ヽ         三____|∪   /⌒ヽ)
  |   | ̄|  | |ヽ/l         (/~ ∪    [ 祭 _]
  |   |  |/| |__|/       三三      三___|∪
  |   |/|  |/         三三       (/~∪
  |   |  |/         三三      三三
  |   |/                    三三
  |  /                    三三
  |/                    三三

690 :山崎渉:03/04/20 03:33
   ∧_∧
  (  ^^ )< ぬるぽ(^^)

691 :デフォルトの名無しさん:03/04/20 04:04
IEやSDKをインストールすると新しく追加されるAPIの一覧てどこかにありますか?
だいぶ後からMSDNで見つけることが多いので、あらかじめどんなAPIが追加されるのか
が知りたいです。

692 :デフォルトの名無しさん:03/04/20 09:28
>>691
C:\Program Files\Microsoft Visual Studio .NET\Vc7\PlatformSDK\lib\Win32.csv
C:\Program Files\Microsoft Visual Studio\Vc98\Lib\Win32Api.csv
E列でフィルタかけてみるとか

693 :デフォルトの名無しさん:03/04/20 13:21
┏━━━━━━━━━━━━━━━━━━━┓
┃    ,, - ―-  .、       ホモ用しおり   ┃
┃  ,. '" _,,. -…;   ヽ                ┃
┃  (i'"((´  __ 〈    }                   ┃
┃  |__ r=_ニニ`ヽfハ  }   ふう・・・          ┃
┃  ヾ|!   ┴’  }|トi  },  ここまで読んだぜ  ┃
┃    |! ,,_      {'  }                 ┃
┃   「´r__ァ   ./ 彡ハ.  おまえらのレスで ┃
┃    ヽ ‐'  /   "'ヽ    腹ン中が    ┃
┃     ヽ__,.. ' /     ヽ    パンパンだぜ ┃
┃     /⌒`  ̄ `    ヽ\.            ┃
┗━━━━━━━━━━━━━━━━━━━┛

694 :デフォルトの名無しさん:03/04/20 15:13
質問です。

USB接続した外付けドライブなどを、安全に取り外す時に
タスクバーのアイコンをクリックして、安全に取り外す処理をしますよね?
この処理をVBで作った画面から、API関数を呼び出して行う事ってできるのでしょうか?
できれば、自動で安全に取り外しができる状態になるのが理想なんですが、
駄目なら、取り外し処理の画面が出てくるだけでも良いのですが・・・。

やり方わかる方いらっしゃいますか?
よろしくお願いいたしますm(_ _)m


695 :デフォルトの名無しさん:03/04/21 01:29
質問です。
文字の半透明描画ってどうすればできるの?

不透明ならこんなのでいいのだが、

SetBkMode(hdc, TRANSPARENT);
SetTextColor(hdc, RGB( 255 , 255 , 255));
SelectObject(hdc, hfont);
RECT rect;
SetRect( &rect , x , y , strlen(x) * font_w , y + font_h);
DrawText( hdc , p_str , -1, &rect , 0 );


696 :デフォルトの名無しさん:03/04/21 01:34
>>695
どっか別のDCに字を書いてから、半透明に混ぜる。

697 : ◆b0UXJ88Ngw :03/04/21 18:07
すいません。
私も、>694さんと、類似のことを行いたいのですが、
SetupDi関数を使用すればよろしいのでしょうか?
参考文献が英語のページしかみつからなくて、何がなにやら (TT

ご存知の方いらっしゃいましたら、ご教授お願いします。

698 :デフォルトの名無しさん:03/04/22 00:05
PGは英語は逃げらんねえ
あきらめろ

699 :デフォルトの名無しさん:03/04/22 00:20
>>698
お姉ちゃんに読んでもらうからいいの

700 :デフォルトの名無しさん:03/04/22 00:26
>>694,697
hotplug.dll::HotPlugEjectDevice
非公開API故詳細不明


701 :デフォルトの名無しさん:03/04/22 01:34
文字の色反転表示ってCreateFont()で可能ですか?
通常はバックが白、文字色が黒のところを、一部分だけバックが黒の、文字色白にしたいんですが。
(GDI関数使って、四角く塗りつぶした上に文字をかぶせるなんてことしなくてもできますよね…?)

702 :デフォルトの名無しさん:03/04/22 01:45
XOR

703 :697@ ◆b0UXJ88Ngw :03/04/22 11:34
>700さん
レスありがとうございました。
非公開でできないということで、ハードウエア取り外しウインドウを表示し、
Sendkeysで、むりやり取り外すマクロを書いてみたんですが、
「こんなのだったら、いらね〜」って言われました (TT
今度は、USBデバイスがちゃんと外れたかどうか確認する関数を探してみます
(ますます>694さんと類似!!)

あと、英語読んでくれるお姉ちゃんも探してみますw


704 :デフォルトの名無しさん:03/04/22 18:43
InitializeCriticalSection が STATUS_NO_MEMORY を
投げるらしいのですが、
コレを受けるにはどの様にしたら良いのでしょうか?

try { 〜 } catch (long e) { 〜 } ?
GetLastError?

705 :デフォルトの名無しさん:03/04/22 18:48
try{ Initialize〜}catch(...){ }

706 :デフォルトの名無しさん:03/04/22 19:07
VC++なら_set_se_translatorとかあるわけだが。

707 :デフォルトの名無しさん:03/04/22 19:25
>>705,706
(・∀・)サンクスコ!!
BCBを使用しているので >>705さんのやり方でやってみます。

try{
 Initialize〜
 〜
} catch (unsigned long e) {
 switch (e) {
 case STATUS_NO_MEMOTY:
  〜
  break;
 default:
  〜
  break;
}
こんな感じで。

708 :デフォルトの名無しさん:03/04/22 19:40
え?
catch(...) と
catch(unsigned long) は別物だけど、、、

709 :デフォルトの名無しさん:03/04/22 20:31
>>708
…忘れてました。
サンクスコ。

710 :デフォルトの名無しさん:03/04/22 21:18
もうPlatform SDK February 2003出てたのか。

711 :デフォルトの名無しさん:03/04/22 22:47
すいません。質問させて下さい。私は今VC++でWin32のアプリを作成しております。
で、一つわからない事があるんです。それは、
「自分自身の名前(カレントパスだけでなく、ファイル名)」って、どうやって取得したらいいんでしょうか、
って事なんですが。
どなたかご存知の方おられますでしょうか。

#P.S. さっきうっかりC++相談室に質問してしまい、こちらへ誘導されました。
#マルチポスト、失礼。

712 :デフォルトの名無しさん:03/04/22 22:54
>711
GetModuleFileName

713 :デフォルトの名無しさん:03/04/22 22:55
GetModuleFileNameでフルパスを取得
パスが欲しいのなら取得したフルパスをPathRemoveFileSpec
ファイル名が欲しいのなら取得したフルパスをPathStripPath

714 :711:03/04/22 23:19
>>712-713
取れました。ありがとうございました。

ちなみに教えていただいた PathStripPath(LPTSTR lpPath) 関数は、
"Shlwapi.dll"(Shell&Common Control ver 4.71) からインポートされるとMSDNにあったのですが、
これってIE3環境時代のマシンには入っていないですよね?
例えばアプリが完成して、自分が配布するアーカイブの中にソレを含ませても
問題無い(ライセンシー的に、というよりは動作的に)モノなんでしょうか。

715 :711:03/04/22 23:22
>>714 自己レス、追記。
ちなみに IE5以降がインストールされると、同梱の "Comctl32.dll"から
インポート可能になるそうです。以上、余談。

716 :デフォルトの名無しさん:03/04/23 07:13
Win32APIでランダムな数値返す関数ありませんか?
Cライブラリのrandみたいなやつ

717 :デフォルトの名無しさん:03/04/23 08:26
なんでそんなことしたいんだろう。逆なら分かるが。


718 :デフォルトの名無しさん:03/04/23 08:27
CryptGenRandom

719 :デフォルトの名無しさん:03/04/23 08:38
>>717
Cライブラリをリンクしたくないので。
>>718
ありがとうございます。

720 :デフォルトの名無しさん:03/04/23 08:58
そーゆー目的なら、MTでも使ったらよろし。

721 :デフォルトの名無しさん:03/04/23 20:45
>>720
機械翻訳(Machene Translation)?

722 :デフォルトの名無しさん:03/04/23 21:25
main()
{
    int a = 0;
    printf("%d\n", &a);
}

これでランダムな数字出てくれないかな(;´Д`)

723 :名無し:03/04/23 23:57
>>722
奇数が出てこないヨカン

724 :デフォルトの名無しさん:03/04/24 00:18
ベースアドレスからcode->data->heap->stackとPEヘッダで予約されているサイズ確保されるから
普通のWin32環境ではランダムにはならんだろ

725 :デフォルトの名無しさん:03/04/24 03:09
>>698
PGってなんですか?

726 :デフォルトの名無しさん:03/04/24 03:56
>>432とは別の者でつが漏れも知りたいので可能なら教えてくだちい。
MSDN読むと、
SetWindowLongPtrは他のプロセスには使うなって
書いてある(というか実際使えない)し、
SetWindowsHookExだとフック終了後に
メッセージはウィンドウプロシージャに渡されるって
書いてある(やっぱり実際ダメだった)し…

727 :デフォルトの名無しさん:03/04/24 04:14
>>725
ParentalGuard

728 :デフォルトの名無しさん:03/04/24 06:10
>>726
フックでプロセスに進入してSet..Ptrはどうよ?

729 :デフォルトの名無しさん:03/04/24 07:19
>>728
神!アリガd(涙)
これくらいすぐ思いつかず
人に聞いた漏れは失格でつね。
逝ってきまつ。

730 :デフォルトの名無しさん:03/04/24 09:11
特定のURLをフィルタリングするようなソフトを作りたいのですが…
例えば何かのソフトが2chにアクセスしようとしたらYahooに飛ばすような。

そこで、HTTPの通信をフックすることはできますか?
SetWindowsHook(Ex)だとメッセージしかフックできないみたいですし、
今のところwsock32.dllをすりかえるくらいしか思いつきません。
他に何か方法がありますか?

731 :デフォルトの名無しさん:03/04/24 17:11
>>730
APIフックをしてみたらどうですか?

732 :730:03/04/24 23:15
>>731
貴重なキーワードどうもです。
Advanced Windows あたりに載ってるかな……

733 :デフォルトの名無しさん:03/04/25 02:38
wininetを乗っ取るとかな。
winsockを直接使うアプリはブロックできないが
httpsな通信も覗けてしまってウマー

734 :デフォルトの名無しさん:03/04/25 12:17
指定したアプリケーションの状態を検知したいのです。
検知したい状態とは、タスクマネージャで「応答なし」となる状態なのですが、
何か良い案は無いでしょうか?
ToolHelp系の関数で、プロセスとモジュールのハンドルの取得には成功しています。

開発プラットホームはWin2Ksp3
実行プラットホームはWin2K以降とWin98以降です。


735 :デフォルトの名無しさん:03/04/25 12:28
SendMessageTimeout

736 :デフォルトの名無しさん:03/04/25 12:33
Settlement APIだけどそのまんまのがあった
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winui/winui/windowsuserinterface/windowing/windows/windowreference/windowfunctions/ishungappwindow.asp

737 :734:03/04/25 13:50
>>735-736
ありがとうございます。
IsHungAppWindow は元々隠しAPIだったようですね。
でもWin2K以降でしか使えないようなので、LoadLibrary と GetProcAddress の
例のお約束で取得して、取得できなかったら SendMessageTimeout + WM_NULL を使ってみたいと思います。
#結構長くやってるつもりなんですが、SendMessageTimeout の存在には全然気付きませんでした。

たまに GetProcAddress で取得できても、中身の無い関数がありますが、
実際に試してみてそうなるようならば、Windowsのバージョンで分岐させたいと思います。

ありがとうございました。


738 :デフォルトの名無しさん:03/04/25 23:37
恥ずかしい質問ですが…

猫でも〜の118章にある分割ウィンドウ作成(親に子を二つくっつける方法)についてですが、
二つの子ウィンドウの外枠の厚さが、どうにも同じにならないんです。

118章にあるプログラムのままでは、なんか、気持ち右枠の方が厚い気がしますし、
だからと言って、右ウィンドウのWS_BORDERを消すと今度は左枠の厚さが目立つし…。
こんな状態です。↓
ttp://itopen.hp.infoseek.co.jp/bunkatu.jpg

綺麗に分割できないものでしょうか?
宜しければお教えください。なんか気になるので…。

猫でも118章
ttp://www.kumei.ne.jp/c_lang/sdk2/sdk_118.htm

739 :デフォルトの名無しさん:03/04/26 00:04
そのページにちゃんと書いてあるだろ。
WS_EX_CLIENTEDGEもボーダーの外観を決める

740 :デフォルトの名無しさん:03/04/26 00:56
ウイルス対策ソフトのリアルタイム検索(ファイルアクセスの監視)って
どんな方法を使ってるんでしょうか?

741 :デフォルトの名無しさん:03/04/26 01:02
>>740
API hook

742 :740:03/04/26 02:14
>>741
どうもです。

743 :デフォルトの名無しさん:03/04/26 09:48
win32api.hlpってどっかに置いてないですか?
なくしちまいました。鬱

744 :デフォルトの名無しさん:03/04/26 10:11
俺んち、あるぜ?

745 :デフォルトの名無しさん:03/04/26 11:38
くれ!!

746 :デフォルトの名無しさん:03/04/26 12:20
>>741
普通はAPIよりもっと低レベルじゃないか?
(フィルタドライバを導入するとか)

747 :デフォルトの名無しさん:03/04/26 23:04
ウイルス対策ソフト自体がウイルス

748 :デフォルトの名無しさん:03/04/27 06:54
フローティングバーをドッキングしたりはずしたりしたときに
Viewのサイズが変化します。このときに画面を書き直したいのですが
こういう場合どのメッセージが来ますか?
できればViewのサイズが何らかの理由で変化したときに発生するメッセージが良いです
よろ


749 :デフォルトの名無しさん:03/04/27 11:07
PostMessage(Handle, WM_USER + 1001, 0, 0);
このメッセージってなにをしようとしてるの?

750 :デフォルトの名無しさん:03/04/27 11:41
>>749
作った奴に聞け。
以上。

751 :デフォルトの名無しさん:03/04/27 11:58
WM_APPのほうがいいだろうなあ

752 :デフォルトの名無しさん:03/04/27 12:34
>>751
理由は?

753 :デフォルトの名無しさん:03/04/27 12:58
>>752
751じゃ無いけれど。。。
ttp://cgi23.plala.or.jp/a-w-h/mfc/message.html
なんか参考になるかと。

754 :デフォルトの名無しさん:03/04/27 12:58
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winui/WinUI/WindowsUserInterface/Windowing/MessagesandMessageQueues/MessagesandMessageQueuesReference/MessagesandMessageQueuesMessages/WM_USER.asp

755 :デフォルトの名無しさん:03/04/27 15:09
>>748
書き直したい画面ってのはViewじゃないの?
そうだけどViewのサイズ変更が掛からないと言う話しなのかな..

756 :デフォルトの名無しさん:03/04/27 21:41
while(Msg.message != WM_QUIT){//終了ボタンが押されるまで繰り返し
  if(PeekMessage(&Msg, NULL, 0U, 0U, PM_REMOVE)){//メッセージの取得
TranslateMessage(&Msg);//メッセージの解析
DispatchMessage(&Msg);//メッセージの破棄
  }else//メッセージがない場合
Render();//描画
VC++を扱ったある本のサンプルプログラムをビルドして動かすとこの部分で
メッセージループの先頭でエラーが起こるんですが
これだけで分かるでしょうか?

757 :165:03/04/27 21:46
>>756
分かる訳ないだろ
そもそも Msg の型はなに?


758 :756:03/04/27 21:56
>>757
メッセージ構造体変数です。
サンプルこう書き換えると普通に動くのですが
while(TRUE)
{
  if(PeekMessage(&Msg, NULL, 0, 0, PM_REMOVE))
  {
if(Msg.message == WM_QUIT)
  break;
  TranslateMessage(&Msg);
  DispatchMessage(&Msg);
}
else
  DrawScreen();
}

759 :デフォルトの名無しさん:03/04/27 22:02
本当に動かしたときにエラーがでるのか?
コンパイル時ならMsg.message初期化前にアクセスしているから警告が出るかもしれないが

760 :デフォルトの名無しさん:03/04/27 22:07
>>759
コンパイルは通ります。
デバックすると
Run-Time Check Failure #3 - The variable 'Msg' is being used without being defined.
とメッセージボックスが出てメッセージループの先頭に矢印が付きます。

761 :デフォルトの名無しさん:03/04/27 22:30
>>760
エラーメッセージそのままではないか?


762 :756:03/04/27 22:35
>>761
Msgがdefineなしで使われてるよと伝えているのでしょうか
さっぱり分かりませぬ

763 :752:03/04/27 22:44
>>753
なるほど、ありがとう。
WM_USERだと他で使われる可能性があったのか……

>>756
whileの前にMsgへ何か値を入れていない(PeekMessageしていない)から
不定の値が参照されてエラーになるのでは?

764 :デフォルトの名無しさん:03/04/27 22:47
>>756
適当でいいならwhileの前に一度PeekMessage呼び出せば動くと思うよ
本来ならちゃんと初期化しなきゃいけないと思うがw

765 :756:03/04/27 22:59
有難うございました。

766 :デフォルトの名無しさん:03/04/28 14:03
Windows2000にあるタスクトレイにメッセージを表示するAPIがしりたいのですが。


767 :デフォルトの名無しさん:03/04/28 14:14
>>766 過去スレ読んでみた?ぐぐってみた?

768 :デフォルトの名無しさん:03/04/28 14:43
「過去ログも調べないでそんな事聞くな」は不親切
http://qb.2ch.net/test/read.cgi/accuse/1051392742/l50

769 :デフォルトの名無しさん:03/04/28 15:22
厨を放置できない香具師も厨とはよく言ったもんで(略

770 :デフォルトの名無しさん:03/04/28 15:26
ところで、Windows2000にあるタスクトレイにメッセージを表示するAPIがしりたいのですが。

771 :デフォルトの名無しさん:03/04/28 16:05
>>770
メッセージって?


772 :デフォルトの名無しさん:03/04/28 16:55
>>771
ダイアルアップしたときなどに出るツールチップのようなそうでないようなやつです。
クリックすると消えたりするやつです。

773 :デフォルトの名無しさん:03/04/28 17:19
過去ログ(ry

774 :デフォルトの名無しさん:03/04/28 17:20
過去ログにはありませんでした。

775 :デフォルトの名無しさん:03/04/28 17:23
以前同じ質問に答えたんだが。
見もしないで「ありませんでした」とか嘘つく厨は逝け

776 :デフォルトの名無しさん:03/04/28 17:24
defrag.exeが使ってる(と思われる)ようなセクタを直接読み書きするAPIって非公開?

777 :デフォルトの名無しさん:03/04/28 17:30
>>776
http://www.sysinternals.com/ntw2k/info/defrag.shtml

778 :デフォルトの名無しさん:03/04/28 17:41
>>775
名前だけでも教えてもらえませんか?
検索するにもキーワードが思い浮かばないのです。

779 :デフォルトの名無しさん:03/04/28 18:22
ツールチップ

780 :デフォルトの名無しさん:03/04/28 18:55
>>779
それは違うでしょ

781 :デフォルトの名無しさん:03/04/28 19:08
>>778
NOTIFYICONDATA の szTip とは違うもの?


782 :デフォルトの名無しさん:03/04/28 19:27
>>777
おぉ、サンクス。ついでに777ゲトおめ。

783 :デフォルトの名無しさん:03/04/28 20:39
>>781
違うものです。閉じる×とかついてるやつです。

784 :デフォルトの名無しさん:03/04/28 21:01
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/shellcc/platform/commctls/tooltip/usingtooltips.asp
これの下の方にある
Balloon Tooltipsってやつじゃない?

785 :781:03/04/28 21:16
>>783
szInfo のほうだね。


786 :デフォルトの名無しさん:03/04/28 21:27
>>784
>>785
やったー
ありがとやんす。バルーンかなるほど。

787 :デフォルトの名無しさん:03/04/29 03:05
スレ立てるまでもないスレで質問したんですがスルーされちゃったのでこちらで。

ダイアログボックス内にエディットコントロールが複数あるんですが、
そのフォーカスが移動したことを知るメッセージというのはあるんでしょうか。
ダイアログボックスのプロシージャでフォーカスが移動したということだけ判ればいいんです。
もしないのならば、ダイアログ内のすべてのエディットコントロールをサブクラス化して
WM_KILLFOCUSとかを捕まえるという方法になってしまうのでしょうか・・・。
定石みたいな方法を知りたいのですが。


788 :デフォルトの名無しさん:03/04/29 03:28
>>787
サブクラス化して WM_KILLFOCUS
他の方法はしらん。

789 :787:03/04/29 03:41
>>788
どうもッ。それで行きます。

790 :名無し@沢村:03/04/29 03:58
>>787
ヌヒよ、サブクラス化なんぞせんでも親ウィンドウにEN_KILLFOCUSが通知されるわい。

791 :787:03/04/29 04:06
>>790
まじすかッ。と思ってやってみたんですが通知されませんッ。


792 :787:03/04/29 04:09
連続すみません!
notificationメッセージはHIWORDでしたッ。
>>790でうまくいきました。ありがとー。

793 :デフォルトの名無しさん:03/04/29 19:21
>>786
後半のTooltipsは無視して嘘つき呼ばわりのままですか
そうですか

794 :デフォルトの名無しさん:03/04/29 22:34
>>793
ハァ?

795 :デフォルトの名無しさん:03/04/30 09:50
テキストエディタを作ろうとしているのですが、
タブや改行などを表示させるのにどうすれば
いいのか悩んでいます。
文字色・背景色をカスタマイズできるエディタを
作りたいため、下の条件を満たしたく思っています

・背景を透過
・簡単に文字色を変更できる

どのようにすれば実現できるでしょうか?
よろしくお願いします。

※タブを「→」改行を「↓」で表示するとという手も
 ありますが、できれば任意のパターンにしたい
 のです。

796 :デフォルトの名無しさん:03/04/30 10:10
>>795
まずお前は...

> ※タブを「→」改行を「↓」で表示するとという手も

は実現できるのか ?

797 :デフォルトの名無しさん:03/04/30 10:33
指定したフォルダのなかのファイル数を取得するAPIを教えて下さい。

798 :デフォルトの名無しさん:03/04/30 10:43
>>797
FindFirstFile(), FindNextFile(), FindClose() 使って自分で数える。

799 :デフォルトの名無しさん:03/04/30 10:46
>>798
うっ、やっぱりそれ系で自分で数えるしかないですか、
何かフォルダを監視するAPIとかあるから数かぞえるのあるかなーとか
思ったりしたがやっぱ甘かったか、

800 :デフォルトの名無しさん:03/04/30 13:52
質問です。
他のアプリがオープンしているCOMポートを
使用できなくしたり、逆に使えるようにするには
どうしたら良いでしょう?


801 :デフォルトの名無しさん:03/04/30 14:09
>>800
おめ

802 :デフォルトの名無しさん:03/04/30 18:43
右クリックで表示されるコンテキストメニューを作っているのですが、
ファイルを選択している場合は、アイテムIDリストを使って、
GetUIObjectOf, QueryContextMenu, TrackPopupMenu, InvokeCommandの流れでできるのですが、
エクスプローラ上でアイテムを選択しないで、空白を右クリックしたときの
コンテキストメニューが出せません。どうしたらできるのでしょうか。
よろしくおねがいします。

803 :795:03/05/01 00:49
>>796
矢印を使う場合は、TextOutで出力すればいいかと。
フォントにないパターンを出力する方法があれば
教えてください。m(..)m

804 :デフォルトの名無しさん:03/05/01 00:50
目がキモイので却下

805 :デフォルトの名無しさん:03/05/01 00:58
m(☣_☣)m

806 :デフォルトの名無しさん:03/05/01 01:26
>>803
ビットマップで書く

807 :795:03/05/01 02:45
>>806
ビットマップで描こうと思ったのですが、
2色のビットマップだと、色が強制的に白と
黒になってしまうので困ってしまいまして。

CreateDIBSectionで多色のビットマップを
作成して、自力で重ね合わせを行うという
手も考えられますが、それだと画面中タブ
だらけの時に処理がかなり重たくなりそう
です。

他に方法はないものでしょうか?

808 :デフォルトの名無しさん:03/05/01 02:48
>>807

何も毎回CreateDIBSectionせんでもアプリの起動時に一回BITMAP作って
画像入れといて、必要なときBitBltで転送じゃだめなのかな
別にこれならそこまで重くないような気もするが、、
これぐらいを重いっていうのかな?だとしたらスマソ

809 :デフォルトの名無しさん:03/05/01 03:00
>>807
> 2色のビットマップだと、色が強制的に白と
> 黒になってしまうので困ってしまいまして。

SetBkColorしてBitBltのROPをいじるとかしてみれ。


810 :795:03/05/01 03:51
>>809
ありがとうございます。
2色のビットマップを用意して、
下のコードを実行するとうまくいきました。

 // くりぬき
 ::SetBkColor( hDC, RGB( 255, 255, 255 ) );
 ::SetTextColor( hDC, RGB( 0, 0, 0 ) );
 ::BitBlt( hDC, x, y, w, h, hMemDC, 0, 0, SRCAND );

 // 赤で描画
 ::SetBkColor( hDC, RGB( 0, 0, 0 ) );
 ::SetTextColor( hDC, RGB( 255, 0, 0 ) );
 ::BitBlt( hDC, x, y, w, h, hMemDC, 0, 0, SRCPAINT );

ご回答下さったみなさま、ありがとうございました。

811 :デフォルトの名無しさん:03/05/02 16:48
SetCapture()中、SetCursorで変更したカーソルをウィンドウの外側でも
そのままにしたいのですが、残念ながら外に出ると普通のカーソルに
戻ってしまいます。WM_SETCURSORを拾うとかしてみたのですが上手く
いかず、お手上げ状態です。激しく厨房質問ですがお許しを・・

812 :デフォルトの名無しさん:03/05/02 21:33
          ∧_∧
        ⊂(´・ω・`)つ-、キャプチャ取りたい?キャプチャ・・・こぶ茶
      ///   /_/:::::/ ねえ。コンビニでこぶ茶買ってきてくんない。
      |:::|/⊂ヽノ|:::| /」
    / ̄ ̄旦 ̄ ̄ ̄/|
  /______/ | |
  | |-----------| |

813 :デフォルトの名無しさん:03/05/02 22:27
最初に描画が可能になったときに一回だけ送られるメッセージってありますか?

814 :デフォルトの名無しさん:03/05/02 22:29
2回目からは無視すればいいんじゃないの

815 :813:03/05/02 22:33
>>814
ありがとうございます。
WM_PAINTメッセージでですか?
それしか無いのならそうします。

816 :デフォルトの名無しさん:03/05/02 22:37
アホな質問なのですが、Win32でよく使われるアトムって
なんでそう呼ばれるのでしょう?

817 :ccc:03/05/02 22:56
自作のフォントをフォントファイルに登録したいのですが、
どのようにやればよいのでしょうか?
ご存じのかた、教えて下さい。


818 :デフォルトの名無しさん:03/05/02 23:33
>816
http://www.kab-studio.com/Programing/Dictionary/Words.html#Atomic
を読むと、atom,atomicは「一意なもの」を指すらしい。


819 :デフォルトの名無しさん:03/05/02 23:41
>>811
SetCapture()は、ドラッグしないでウィンドウ外にマウスカーソルが
出たメッセージは拾えないけど、それは知ってるよな?


820 :デフォルトの名無しさん:03/05/02 23:51
>>813
なんでそんなものが必要なのかと小一時間問い詰めたいです。

821 :816:03/05/03 00:37
>>818
ありがとうございますた。
原子ではなく、これ以上分割できないものと
考えるのでつね。。。


822 :デフォルトの名無しさん:03/05/03 00:39
あれだ。フォントその他もろもろの、WM_PAINTのハンドラが呼ばれるたびに逐一
生成するには重い GDIオブジェクトの作成を初回の描画のときにやるっていう
魂胆でない?

823 :デフォルトの名無しさん:03/05/03 00:41
>>821
つーか、排他制御とか知らんのか?
初心者の人に言いたいが、APIなんて知らなくていいから、排他制御は覚えてく
れよ…(心の叫び)


824 :デフォルトの名無しさん:03/05/03 01:15
>>819
わぎゃん、知らんかった。ドラッグにしたらいけた・・・
LBUTTONDOWNはドラッグしなくても拾えてたので甘く見てました(泣
つまりはドラックなしには無理?

825 :デフォルトの名無しさん:03/05/03 01:32
普通アトミックというとデータベースが浮かぶな。知識と知恵を混同する
気は無いのでどうでも良いが。

826 :デフォルトの名無しさん:03/05/03 01:35
>>825
データベースが排他制御が最も必要なものの一つだからな。
トランザクションとか、ロールバックとか…

で、そんなもの知らなくていい。

827 :デフォルトの名無しさん:03/05/03 01:37
アトミックというとロボキッドが浮かぶな。我ながら駄目人間だな。

828 :デフォルトの名無しさん:03/05/03 05:40
SetupDIB(〜)みたいな関数でCreateDIBSectionを使ってるんですが、
その関数から戻ると、CreateDIBSectionでアドを渡した
BMPのデータ領域をさすポインタがNULLになっています。
その関数内ではNULLではないんですが・・・

ちなみにそのポインタはSetupDIB関数に引数として渡しています
なんか変なことしてるのでしょうか?


829 :デフォルトの名無しさん:03/05/03 08:41
固定ピッチフォントの半角文字を表示するのに必要な幅
(すべての半角文字が収まる最小限の幅)を知りたいのですが、
どうすればいいのでしょうか?

いろいろ試してみたのですが、つまづいてしまいました。

・GetObjectを使う
→LOGFONTのlfWidthが0の時デフォルト値の意のようだが、
 デフォルト値取得の方法がわからない。

・GetTextMetricsを使う
→TEXTMETRICのtmAveCharWidthの幅に収まらない
 半角文字があった。tmMaxCharWidthは全角文字の幅だった。

・GetTextExtentPoint32を使う
→文字列を"A"にして幅を調べたが、この幅に収まらない
 半角文字があった。

830 :デフォルトの名無しさん:03/05/03 11:50
描画時にクリップすれば大きさなんてどうでもいい。
と言ってみるテスト

831 :デフォルトの名無しさん:03/05/03 12:09
>>829
200文字くらいしかないんだから全部文字幅調べれば?

832 :デフォルトの名無しさん:03/05/03 12:15
>>829
おれは"Z"か"X"で測ってる。
ちなみにGetTextExtentPoint32

833 :デフォルトの名無しさん:03/05/03 12:34
収まらない半角文字って何よ?

834 :デフォルトの名無しさん:03/05/03 13:38
Wとか?

835 :デフォルトの名無しさん:03/05/03 14:08
じゃあ、Wの幅で調べりゃいいと思うよ。
高さは”Wg”で調べるのが主流だね。


836 :デフォルトの名無しさん:03/05/03 14:11
>>835
何でそんなあほな策を書き込めるんだ?

837 :デフォルトの名無しさん:03/05/03 14:13
Hが|-|みたいな感じで特定の文字だけ幅がやけにでかいフォントだったらどうすんのよ?

838 :デフォルトの名無しさん:03/05/03 15:05
じゃあ、文字全部の幅を調べりゃいいと思うよ。


839 :デフォルトの名無しさん:03/05/03 15:12
つーかフォントを指定してから幅を計算するべきだと思うが

840 :832:03/05/03 17:38
部外者だけど結局何が定石なの?
おれは自分の手段が正しいとは思っちゃいないっすよ。
今まで問題が出なかったというだけで。

841 :デフォルトの名無しさん:03/05/03 17:56
半角文字でループして全部調べればいいと思うよ
つまり>>831

842 :デフォルトの名無しさん:03/05/03 19:08
どんなフォントでそんなことが起こるんだ?
正しいフォントをselectしてんのか


843 :デフォルトの名無しさん:03/05/03 19:23
全部の幅を調べるなら GetCharABCWidths() あたりを使ったほうが?

844 :デフォルトの名無しさん:03/05/03 19:42
勧める割に自信なさげですね。

845 :デフォルトの名無しさん:03/05/03 20:14
んだって使ったこと無いんだもの

846 :デフォルトの名無しさん:03/05/03 20:51
固定ピッチフォントってfull-widthの半分の幅が
half-widthになるんじゃないの?
XP以前のグリフ選択機能にバグがあっただけかと

847 :デフォルトの名無しさん:03/05/03 22:16
エクスプローラのあるフォルダをFindFirstChangeNotificationで監視してるのですが
たとえばそのフォルダに複数のファイルをコピーしているとき
そのコピー処理が終わるまで待機してある処理を開始したいのですが
コピー処理が終わるまで待機というのがどうやったらいいのかわかりません。
どなたかご教授を

848 :デフォルトの名無しさん:03/05/04 00:20
>>828
ポインタじゃなくてポインタのアドレスを渡せ。

849 :デフォルトの名無しさん:03/05/04 01:44
どれだけの数のファイルがコピーされるか分からないから、
コピー終了を検知するのは不可能

850 :829:03/05/04 06:05
レス遅くなりました。

>>831>>841
うーん、それになってしまうのでしょうか。

>>832-834
わたしが試した中では"@"が収まりませんでした。
"W"が幅広いだろうと思ってはいましたが、
どのフォントでも"W"が一番幅広いという保証はないでしょうし…

>>839>>842
MS ゴシックをCreateFontで作成しました。

>>843
調べてみたところ、このAPIを使うとループを省略できそうですね。

>>846
固定ピッチフォントの半角文字は全部同じ幅だろうと
思っていたらそうではなかったので、その予想もちょっと
不安な気が…

とりあえず、全ての半角文字の幅を調べて、
最大値を採用してみることにします。
ありがとうございました。

851 :デフォルトの名無しさん:03/05/04 09:31
>>850
CreateFontがなんか失敗してSystemあたりが使われたりしてないかい?

852 :デフォルトの名無しさん:03/05/04 09:37
XPの「並べて表示」で表示されてるような
48*48のアイコンを取得するAPIってありますか?
ExtractIconExでは32*32と16*16しか取得できませんでした。

853 :デフォルトの名無しさん:03/05/04 12:26
>>848
助かりました。
よく考えたら当たり前ですね。


854 :名無し@沢村:03/05/04 12:57
>>852
LoadImage

855 :デフォルトの名無しさん:03/05/04 12:59
CreateFontの引数を全部書いてちょーだい。

856 :デフォルトの名無しさん:03/05/04 13:19
>>847
ひとつ変数をつくってコピー直前に値を変え、コピー後にまた値を元に戻せば
いいんじゃないの? 別のスレッドからそれを定期的に身にいくと。

857 :デフォルトの名無しさん:03/05/04 16:57
>>855
MSDN見てちょーだい

858 :デフォルトの名無しさん:03/05/04 17:32
>>857
そういう意味ではなくCreateFontに正しい引数を与えていない可能性があるので
全部書いてちょーだいということ。


859 :デフォルトの名無しさん:03/05/04 18:49
>>858
よく上読んでなかった・・スマソ

860 :デフォルトの名無しさん:03/05/04 20:23
CreateFontに渡す引数は直接作らないで必ず
EnumFontFamiliesExが返す内容を渡す
変えていいのはせいぜいTrueTypeフォントの場合に
サイズとかBold, Italicの有無程度
さもないとどんなフォントが選択されるかわかったもんじゃない

861 :デフォルトの名無しさん:03/05/04 20:49
WindowsXPにおいてImagelist_draw()で半透明アイコンが正しく描画されないので
原因突き詰めた。で、マニフェストがあると正しく描画されることが判明(すなわ
ちComCtl32.dll のVer5を使うかVer6を使うか)

半透明アイコンを描画するには、ビジュアルスタイルに否応無しに対応しなければ
ならないということですか?

862 :デフォルトの名無しさん:03/05/05 02:28
>>860
シルト本とかペゾルド本では、普通にCreateFont()やCreateFontIndirect()を使っていたと思うけど、それもやめた方がいいの?



863 :デフォルトの名無しさん:03/05/05 02:37
>>862
この本に書いてあったことだから
立ち読みでもして適当に判断してくれ
http://www.amazon.co.jp/exec/obidos/ASIN/4774107808/ref%3Dpd%5Fbxgy%5Ftext%5F2/249-9396597-3063545

864 :デフォルトの名無しさん:03/05/05 06:53
>>860
まあ確かにLOGFONT::lfFaceNameに"MS ゴシック"なんて書くのはスリリングだな。
しかしジェネリックなコードを書く気ならEnumFontFamiliesよかGetStockObjectちゃうか?

865 :852:03/05/05 07:23
>>854
レスども。
LoadImageでアイコンファイル(.ico)の48ドットアイコンは取得できました。
でも、EXEやDLLのアイコンも取得したいんですよ。

画面のプロパティでアイコンを48ドットに変更して
SHGetFileInfoの引数にSHGFI_SHELLICONSIZEを渡せば取得できたんですが、
これはさすがに間抜けすぎて使えませんでした。

もうちょっと調べてみます。

866 :デフォルトの名無しさん:03/05/05 07:48
しっかしSH系のAPIって、どういうつもりで作ったのかね。

867 :デフォルトの名無しさん:03/05/05 08:04
>>866
3.1 -> 95
ってことだろ
COMからんでるし

868 :デフォルトの名無しさん:03/05/05 09:08
>>864
と言うか、lfFaceName だけ設定してもそのフォントが選択されるとは限らない。
lfCharSet とかもきちんと設定しないと、マッチしないから適当なフォントが選択されたりすることがある。

と言いたいんじゃないか ?

ちょっと前に、そういう実例見たし。

869 :デフォルトの名無しさん:03/05/05 09:22
>>864
そうそう、忘れてたけどGetStockObjectについても触れてた

870 :デフォルトの名無しさん:03/05/05 10:41
Windows プログラミングって 難しいですね

871 :862:03/05/05 13:04
>>863
サンクス。
今度読んでみる。


872 :デフォルトの名無しさん:03/05/05 19:40
>>855 猫の http://www.kumei.ne.jp/c_lang/sdk/sdk_27.htm

873 :デフォルトの名無しさん:03/05/05 22:05
WM_CREATEの時にCreatePenで自作(?)のペンを作成しない場合に、
WM_PAINT時にLineToなどで描画した場合ストックペンが使われてるのでしょうか?
API始めたばかりなので質問の仕方も変な気がしますが、
ご教授お願いいたします。

874 :デフォルトの名無しさん:03/05/05 22:21
>>873
そうだよ。BLACK_PEN がデフォルト

875 :デフォルトの名無しさん:03/05/05 22:25
>>874
ありがとうございます。
参考書の例題でWM_CREATE時に設定してたりしてなかったりなので不安でした。
これで心置きなく次へ進めます。

876 :デフォルトの名無しさん:03/05/06 15:10
自アプリのインスタンスのハンドルを
取得する API ってありますか?

GetWindowInstance ( HWND )
↑これは見つけたのですがウィンドウハンドルが
必要みたいで・・・。

877 :デフォルトの名無しさん:03/05/06 15:47
GetModuleHandle(NULL);

878 :デフォルトの名無しさん:03/05/06 15:56
>>877
ありがとうございます。
助かりました。

879 :デフォルトの名無しさん:03/05/06 18:53
VBじゃなくてAccessVBAの話なんですけど、

VB用のサブクラス化テクニックをまねすると、
ウィンドウを閉じるときに70%位の確率で無限ループに陥るのですが、
Accessでは根本的に無理でつか?

880 :デフォルトの名無しさん:03/05/06 22:29
質問。
MCIのテストプログラムなのですが、ビルドを行うと、
--------------------構成: mci - Win32 Debug--------------------
コンパイル中...
main.c
リンク中...
main.obj : error LNK2001: 外部シンボル "__imp__mciGetErrorStringA@12" は未解決です
main.obj : error LNK2001: 外部シンボル "__imp__mciSendCommandA@16" は未解決です
Debug/mci.exe : fatal error LNK1120: 外部参照 2 が未解決です。
link.exe の実行エラー
ブラウザ データベースを作成中...

mci.exe - エラー 3、警告 0
と、エラーが出ます。<windows.h>はいれてあります。
ほかのリンクか何かに必要なものってありますか?

881 :デフォルトの名無しさん:03/05/06 22:31
そのAPIをMSDNで調べれば必要なヘッダとライブラリが書いてあるが

882 :880:03/05/06 23:14
>881
ほんとだ。
英語の方見てみたら書いてありました。
注意不足でした。THX!

883 :デフォルトの名無しさん:03/05/07 19:45
CreatePatternBrush() か CreateDIBPatternBrushPt() で
パターンブラシを作成できます。

このパターンブラシで FillRect() を実行する時の動作について
聞きたいのですが…

第2引数の RECT で塗りつぶす範囲を決めます。
範囲を(10,10)-(60,60)とかにした場合は、
パターンブラシから利用される範囲も(10,10)-(60,60)に
なっている(?)ようなのですが、そういうものなのでしょうか?

パターンブラシから利用される範囲が(0,0)-(50,50)とでも
なりそうな気も少ししたのですが…

884 :デフォルトの名無しさん:03/05/07 19:47
●貴方に代って恨み晴らします● 【復讐・特殊業務】
--------●○●別れさせ屋●復讐代行業務●○●----------
●騙された・裏切られた・弄ばれた・逃げられた・捨てられた・
相手に誠意が無い・異性問題・家庭内暴力・不倫疑惑解明・人間関係・金銭トラブル★ http://www.blacklist.jp/i
別離工作・情報収集・トラブル対策・ボディガ―ド・等々!
●真剣にお悩みの方、安心してご相談下さい。解決へ導きます★
□■各種データ・電話番号調査・住民票・戸籍謄本など調査■□
   http://www.blacklist.jp/i
【注意】ジャンプしない場合はURLをコピーしてファイルから開いて下さい●○● http://www.blacklist.jp/
--------------------------
◆リンク◆復讐現場密着24時◆ http://www.123456789.jp/


885 :デフォルトの名無しさん:03/05/07 20:03
>>883
言ってる意味がはずれてたらスマソ。
多分それはブラシの原点がずれてる。
UnrealizeObjectとSetBrushOrg使うと原点移動できるはず。
詳しくはググってみると見つかるかと。

もっといい方法があるかもしれないが・・・
俺が知ってるのはこれだけ。

886 :デフォルトの名無しさん:03/05/07 20:12
>>883
FillRect ならまだいいが、FillRgn とか Polygon とか Chord と
一貫した動作をさせることを考えると (10,10)-(60,60) の方が
良いのではないかと。

887 :デフォルトの名無しさん:03/05/07 22:16
LonghornでいままでのWinAPI殆どばっさり捨てるらしい。
蓄えた知識は出し惜しみせずこのすれへどうぞ。

888 :デフォルトの名無しさん:03/05/07 23:34
ListView の report と TreeView が一体になったコントロールを作りたいんですが、
どうすればいでしょうか。ヒントだけでもお願いします。

889 :デフォルトの名無しさん:03/05/07 23:41
>>887
ソースほしいな

890 :デフォルトの名無しさん:03/05/07 23:43
またGenericのお世話になるのかよ!

891 :883:03/05/07 23:50
どうもありがとうございました。

>一貫した動作をさせることを考えると
これは知りませんでしたが、そういうことなら、
一貫しているとありがたいですね。

892 :デフォルトの名無しさん:03/05/08 00:45
>>887
それは困るな

893 :デフォルトの名無しさん:03/05/08 00:57
>>887
.NETFrameworkが基底になるってことか?
今のVisualC#.NETみたいな・・
で、Win32APIの呼び出しは不可と

894 :デフォルトの名無しさん:03/05/08 02:17
win64APIになるだけだったりして

895 :デフォルトの名無しさん:03/05/08 03:58
とりあえず今出てる話だと全てのウィンドウがLayered Window化して、
DirectX上で動くような感じになる、つー話だが。

896 :デフォルトの名無しさん:03/05/08 04:15
頼むからソースを

897 :デフォルトの名無しさん:03/05/08 04:19
ttp://itpro.nikkeibp.co.jp/free/NT/NEWS/20030506/2/

898 :デフォルトの名無しさん:03/05/08 04:26
DirectXの話はハードウェアのスペックの話じゃん・・・
既存のアプリ(=Win32で作ったアプリ)も動くって書いてあるじゃん・・・
確かに今までとはウィンドウのレンダリング方法が変わるとは書いてあるが
プログラミングに関するネタはどこにも無いじゃん・・・

899 :デフォルトの名無しさん:03/05/08 09:46
でこかでAPIを8,700まで減らすとかいう英語記事を読んだ記憶がある

900 :デフォルトの名無しさん:03/05/08 10:10
>>897
CPUは常時フルスロットルかよ。そのうちパソコンの世界にも「省エネ化」が
義務付けられるような気がしてきたよ。

901 :デフォルトの名無しさん:03/05/08 10:59
>>897
>1.5GHz動作のPentium 4に384Mバイトのメイン・メモリー,
>グラフィックス・カードは「ATI Radeon 9700」という
>ロー・レベルのパソコンで実行された。
うちのPCなんて…(以下略

902 :デフォルトの名無しさん:03/05/08 11:31
http://www.internetwk.com/breakingNews/showArticle.jhtml?articleID=9400498

903 :デフォルトの名無しさん:03/05/08 11:50
コントロールは再描画処理を行わなくても文字などが残ったままになるのは
デフォルトでそういう設定になってるからなんでしょうか?

904 :デフォルトの名無しさん:03/05/08 11:52
そんなとこ。

905 :デフォルトの名無しさん:03/05/08 11:55
即レスありがとうございました(_ _)

906 :デフォルトの名無しさん:03/05/08 11:56
どうしたしまして。てきとうだけどね。

907 :デフォルトの名無しさん:03/05/08 11:58
> 他のウインドウがあるかどうかにかかわらず,
> ウインドウ全体のレンダリングを常時実行する。

見えない部分も再描画かける、ってこと?
半透明Window以外でどういう意味があるんだ。

あー、Windowを動かした場合でもリアルタイムで後ろの画面が描画される、
ということなのか?

908 :デフォルトの名無しさん:03/05/08 12:31
>>907
隠れてても印刷できるとか

909 :デフォルトの名無しさん:03/05/08 13:03
MAPI関連なのですが、
未読メールを既読メールに変更する方法(関数名でも結構です)
をご存知の方お教えください。
MSDN Onlineでは全て英語。
翻訳サイトで和訳したものも読みましたが、
見つけることができませんでした。

環境:Win2000 VC++6.0

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


910 :デフォルトの名無しさん:03/05/08 13:04
lnk2001外部シンボル"_WinMainCRTStartup"は未解決です
というエラーがでます。
ググったりヘルプを参照した結果、/ENTRYを設定するのではないか?って
とこまでは行き着いたのですが、どう設定したらいいのかがわかりません。
どなたかこのエラーの対策ご教授お願いいたします。

911 :デフォルトの名無しさん:03/05/08 13:04
デフォルトライブラリを無視するのチェックを外す

912 :デフォルトの名無しさん:03/05/08 13:11
>>911
すいませんが、どこにソノチェックがあるか教えていただけないでしょうか?
使ってるコンパイラはVisual Studio.NETでして、ヘルプで「デフォルトライブラリ」を検索したり、
プロジェクトのオプションをみたりしたのですが、見つかりません。
よろしくお願いいたします。

913 :!911:03/05/08 16:41
>912 リンカ−入力−すべての規定のライブラリの無視
つーか、オレの2002では「プロジェクトのオプション」なんて
無いんだが...
操作が判らないレベルなら製品名やその他もろもろの情報を書かないと
解らんよキミ。

914 :デフォルトの名無しさん:03/05/08 17:36
>>902
ウホッ! いい削減!

915 :!902:03/05/08 18:06
>914
Microsoft Plans Windows API Cleanup
だってさ。

916 :デフォルトの名無しさん:03/05/08 18:36
16bit時代の互換用APIは削除されてもかまわんが・・・

917 :名無し@沢村:03/05/08 20:21
おれは就職してから1ヶ月目に絶対に会社をやめないという誓約書を書かされたよ。
会社をやめたら膨大な違約金を取られてしまうんだよ。
また自宅にあるPCも会社に没収されてしまったよ。尾行をつけられたり、電話も盗聴されているんだよ!
会社はおれが他の会社に移ったり自宅でこっそりプログラムをつくったりすることをとても怖れているよ。
困ったもんだね…  

918 :デフォルトの名無しさん:03/05/08 21:19
>>917
ネタですか?
犯罪じゃん、それ


919 :デフォルトの名無しさん:03/05/08 21:54
誓約書は労基法違反のため無効、今すぐ破り捨てることができる(ただし証拠は残すべき)
没収は刑法の強盗罪の構成要素を満たす
尾行もしくは盗聴による威力業務妨害で生じた遺失利益は損害賠償を請求できる

すべて証拠と記録を残すことを心がけ、弁護士に相談せよ

920 :デフォルトの名無しさん:03/05/08 22:08
沢村だよ

921 :デフォルトの名無しさん:03/05/08 23:03
荒らしのいう事は真に受けないほうがいい

922 :デフォルトの名無しさん:03/05/08 23:27
×荒らし
○なんか可哀想な人

923 :デフォルトの名無しさん:03/05/09 00:56
沢村にマジレスする時代が来たか・・

924 :デフォルトの名無しさん:03/05/09 13:26
>>909
自己レスですが、
Simple MAPIのMAPIReadMail()
で回避しました。
ありがとうございました。


925 :デフォルトの名無しさん:03/05/09 15:37
Popupメニューをプログラム的に消すにはどうするんでつか?

926 :デフォルトの名無しさん:03/05/09 15:52
USBの装置が付いているかどうか、
電源が入っているかどうかを調べる方法を教えて下さい。

よろしくお願いします。

927 :デフォルトの名無しさん:03/05/09 17:20
>925
ESCキーを押した事にすれば消えるんでは?

928 :デフォルトの名無しさん:03/05/09 19:22
>>925
WM_CANCELMODE

929 :デフォルトの名無しさん:03/05/09 22:59
いろいろ調べたのですが分かりませんでした。質問させてください。

Num Lock キーを押しても、Num ランプが変化しないようにする
方法はありますか? あれば教えてください。よろしくお願いします。

930 :デフォルトの名無しさん:03/05/09 23:06
質問お願いします。
他プロセスのコモンコントロールを、操作することは可能でしょうか。

適当なコントロールのハンドルまでは取得できたので、
試しにSETCURSEL等をSendMessageで送ってみたのですが、
さすがにそれだけでは、変化してくれませんでした。

やり方を御存知の方、よろしくお願いします。

931 :デフォルトの名無しさん:03/05/09 23:13
>>929
なんでそんなことしたいんだよ・・・

932 :デフォルトの名無しさん:03/05/09 23:18
>>929
VK_NUMLOCKが来たら、
GetKeyStateでトグルか調べてVK_NUMLOCKを送る。

933 :デフォルトの名無しさん:03/05/09 23:30
>929
キーフックしてNumLockキーが来たら無視するといった手もある。


934 :デフォルトの名無しさん:03/05/10 00:04
NumLockキーが押されたら隣にいる人がすかさず押すという手もある。
「ぽち」「ぱしっ」

935 :デフォルトの名無しさん:03/05/10 01:18
>>931
話せば長くなるので割愛しますが、キー配置を
変更する必要が生じてしまったものですから…。

>>932
どうもありがとうございます。
ただ、もっとスマートな方法はないものかなーと思いまして。

>>933
SetWindowsHookEx() を使ってキーフックし、
無視したのですがうまくいきませんでした。

>>934
それは、たぶん本質的には >>932 の方法と同じです(w

936 :デフォルトの名無しさん:03/05/10 01:59
>930
他プロセスへは、SendMessage()じゃなくてPostMessage()を使え。
あと、他プロセスにポインタを渡しても意味がないので、文字列なんかを渡すときは注意。

>935
GetKeyboardState()で全ての仮想キー状態をを読み出し、SetKeyboardState()で書き換えるってのはどう?
932に似てるけど、メッセージを使わない分スマートかも。

937 :デフォルトの名無しさん:03/05/10 02:04
画像処理の質問ですけど
Win32APIじゃBMPなどの生フォーマットしか対応してないんですか?
JPEGなどは自前でルーチン組むしかないんでしょうか
それかJPEG/PNGグループのルーチン使うとか
MFCにもJPEGライブラリってないみたいだし
エクスプローラーってJPEG/PNG/GIFの画像の縮小とか表示
できますよねアレはどのAPI使ってるんでしょうか?

938 :デフォルトの名無しさん:03/05/10 02:09
>>935
もう枯れた技術かも知れないが中の人にry

939 :デフォルトの名無しさん:03/05/10 02:51
>>937
Explorer == IE

940 :名無し@沢村:03/05/10 04:30
>>937
ヌヒよ、読み込みならOleLoadPicturePath()だ

941 :名無し@沢村:03/05/10 04:32
>>937
ヌヒよ、GDI+を使うという手もあるぞ

942 :デフォルトの名無しさん:03/05/10 05:44
「おにいちゃん、、あたし、おにいちゃんのことが好きなの・・、
だから、あたしにMP3を再生するAPI教えて・・、ね?
・・・あ、あと、、初めてだから、やさしくして・・・」

943 :デフォルトの名無しさん:03/05/10 06:37
>>936
>>930じゃないですが、他プロセスにPostMessage()で文字列を渡したい時はどうすればいいんですか?


944 :デフォルトの名無しさん:03/05/10 09:07
>>935
OS は ?
WindowsNT 系で、ずっと NumLock が効かなくていいんなら、キーマップを弄ると言う手があるよ。

ttp://www.jaist.ac.jp/~fujieda/winnt/scancode.html

945 :デフォルトの名無しさん:03/05/10 10:34
>>943
PostMessageでポインタ渡すのはそもそも不可能

946 :デフォルトの名無しさん:03/05/10 10:36
>>942
MCIで普通に再生できるぞ

947 :デフォルトの名無しさん:03/05/10 10:44
>>943
CreateFileMappingで共有メモリを作るってのはどうよ

948 :デフォルトの名無しさん:03/05/10 10:46
>>943
8byteに区切って送りまくり

949 :929:03/05/10 11:05
>>936
確かに考え方としてはスマートですが、メッセージ処理よりも
オーバーヘッドが大きくなってしまいそうですね…。

>>944
できれば 9x系/NT系どちらでも動くようにしたいのです。
でも、この話は知りませんでした。どうもありがとうございます。

950 :デフォルトの名無しさん:03/05/10 11:40
>>949
ツール使っていいのなら、俺なら 窓使いの憂鬱 で設定するけどな。
設定を日本語109キーボードにしてdot.mayu(のコピーしたファイル)に
key NumLock = &Ignoreと書けば終わり。(試してないから間違ってるかも)
ただXPでは基本的に動かない。(むりやりに動かす方法はある)

951 :デフォルトの名無しさん:03/05/10 11:57
>>949
Win9x系だったら、「SwapScan.386」を使う手も。
自分しか使わないプログラムならね。

>>943
他プロセスとの情報共有なら、
ファイル入出力、クリップボード、パイプ、アトム、ミューテックス
メモリマップドファイル、システムフック、DDE・OLE
なんかいろいろある。これらと組み合わせて使え。

952 :デフォルトの名無しさん:03/05/10 11:58
>>943
947と理屈は同じなんだが、大して多くないデータなら WM_COPYDATA が一番。
但しこっちは Send ね。

953 :(;´Д`):03/05/10 12:03
>>943
WM_SETTEXTという裏技もあるよ

954 :デフォルトの名無しさん:03/05/10 12:11
>>953
以前、WM_SETTEXTを使ってだめだったけど。
たぶんlParamの指しているポインタが無効だから。
SetWindowText()は使えた。

955 :デフォルトの名無しさん:03/05/10 12:14
他プロセスのポインタ分かるんだから、
他プロセスのアドレス読めば良いじゃん。

956 :デフォルトの名無しさん:03/05/10 12:23
>>955
Win95以降は仮想アドレス空間を使っているから、他のプロセスのポインタ値は意味ないんじゃ?
http://www.bd.wakwak.com/~opapa/VC/System/Process.htm
http://yokohama.cool.ne.jp/yokohama/11147/win/memory.html


957 :デフォルトの名無しさん:03/05/10 12:26
>>956
他プロセスのメモリを読み書きするAPIがあるという話だろ
正直使用はすすめられないが

958 :デフォルトの名無しさん:03/05/10 12:56
ReadProcessMemoryか。デバッグ権限が要るんだよな、たしか。

959 :930:03/05/10 14:10
>>936
Postしたら無事にできました
レスありがとうございました
ご忠告にも多謝、ポインタやバッファ渡しには気を付けます

960 :945:03/05/10 16:08
>>947
>>951
Postで送ったあと渡したアドレスのメモリをいつ開放したらいいか
どうやって知るの

961 :デフォルトの名無しさん:03/05/10 16:30
リソースエディタで、タブ付きダイアログ作るの面倒だなと思い、
他の人はどうやっているのか調べているうちに、一つ疑問がわきました

例えばVC6の、ツール>カスタマイズで出てくる
ダイアログのタブっぽいものを調べてみると、
タブじゃ無いみたいなんです(クラスがSysTabControl32じゃない)

あれは一体なんなのでしょうか?

962 :デフォルトの名無しさん:03/05/10 16:30
>>960
バッファが不要になったら向こうからなんかのメッセージ送ってもらうとか。

963 :デフォルトの名無しさん:03/05/10 18:34
>>961
PropertySheet?

964 :943:03/05/10 19:11
レスありがとうございました。
いろいろと試してみます。(WM_COPYDATAに落ち着きそうですが)


965 :961:03/05/10 19:27
>>963
まさにこれみたいです。
おかげでコントロールが重なって、訳が分からなくなるような
タブ付きダイアログを作らずにすみそうです。

レスありがとうございました!

966 :929:03/05/10 22:51
>>950 >>951
実は自分のアプリケーションの中だけで実行したかったのですが、
よく考えてみると、それだとアプリケーションを切り替えるたびに
ランプの状態も切り替えなければならなくなり、かなり不自然に
なってしまうので、他の手段を模索してみようと思います。
レスしてくださった皆様、どうもありがとうございました。

967 :デフォルトの名無しさん:03/05/11 04:01
ビットマップの透過をしたいんですが、できるAPIありますか。
探してみてそれっぽいのにBitBltがあったのですが、引数がhdcで使い方が分かり
ません。コピー元、コピー先それぞれのlpBMP,BmpInfoを引数にするようなのが
あるとよいのですが。うまく質問できませんが教えてください。

968 :デフォルトの名無しさん:03/05/11 04:39
どう透過したいのかわからんので答えようがないが。
hdcが分からないつー時点で、
「とりあえずまともな入門書読め」
としかいいようがない。

969 :967:03/05/11 06:01
>>968
>どう透過したいのか
ゲームでよくあるやつですが、草マップ16*16、人マップ16*16を予め
作っておいて、2つとも開いてメモリに記憶、草を土台にしてその上に
人の白の部分以外をコピー、てな感じです。1バイトずつ調べて自力で
やってしまう方法はわかるのですが。普通はどうやるんですか?
>hdcが分からない
ハンドル:ポインタみたいなのですよね。詳しい意味はわかっていませんが、
セットで使われるので使い方は知っていたのですが。BitBltの場合2つある
ので、普通は一つなので分からなくなりました。

970 :デフォルトの名無しさん:03/05/11 06:26
>>937
普通にIJGかlibpng使えばいいと思うが……APIに拘るなら
出てない範囲だとSetDIBitsToDevice,StretchDIBitsなんかもある

971 :デフォルトの名無しさん:03/05/11 09:10
>>969
例えば、ファイルをコピーするときは"r"と"w"で2個のFILE*がいるだろ?
それと同様、BitBltするときも受け側と送り側で2個のHDCがいるんだよ

972 :デフォルトの名無しさん:03/05/11 09:15
>>969
>草と人
漏れならリージョンを使いそう
人を枠なしの子ウインドウにしておいてSetWindowRgn
データはPathToRegionで作るかも

973 :969:03/05/11 09:55
>>971
HDCってウインドウに対しての物ではないのですか?セットで覚えただけなので、
詳しい意味がわからなくて。
なお探してて見つけたのはこんな感じのですが。下のからヒントを下さい。
http://www.google.co.jp/search?q=cache:1zmYZKUQU-MC:www.ichigo-cafe.com/prog_tips/09_membmp/membmp.html++%22BitBlt%22+-VB&hl=ja&lr=lang_ja&ie=UTF-8
>>972
そういうやり方もあるんですか。始めて聞いたので分からないですが、少し調べて
見ると、関数より機能を限定した感じなんですかね。その描画領域を複数用意して
普通の処理よりやりやすくする。ってほんと始めて聞いたので分からないです。

974 :デフォルトの名無しさん:03/05/11 10:01
>>972
リソース食いすぎ。

975 :デフォルトの名無しさん:03/05/11 10:41
>>973
デバイスコンテキストってのは確か対象のデバイスが何であってもプログラマが意識しないで使えるように
作った共通のインターフェースのことだったと思うけど・・(うろおぼえ
だからもちろんウインドウも含むし、描画元のビットマップもデバイスコンテキストに関連づける。
SelectObject(hDC, hBitmap);とかやったことはないですか?

で、描画はそのURLの方法でいいんじゃない?
ヒントというかそのままのような気がするが・・


976 :デフォルトの名無しさん:03/05/11 11:01
PlaySoundで50MBクラスの*.wavが再生できません。
これは、このAPIのしようでしようか?

977 :969:03/05/11 11:12
>>975
なるほど。それでわかりました。SelectObjectでHDCとBitMapが引数で、
HDCの方は参照渡しみたいにしてHDCを変化させる。その後ウインドウのHDC
とBitMapのHDCを比べて1段階ずつウインドウに透過描画する。それを繰り
返すんですね。ありがとうございました。


978 :名無し@沢村:03/05/11 12:51
>>969
MaskBlt()

979 :969:03/05/11 13:15
>>978
BitBltでもできましたがこれも透過ができそうです。使い方を勉強してみます。ありがとうございました。

980 :デフォルトの名無しさん:03/05/11 17:23
次スレ作成時期か?

981 :デフォルトの名無しさん:03/05/11 19:17
CreateThread() のタイミングだな

982 :980 ◆oqSJWu4Ch2 :03/05/11 20:06
そしたら、私が作ってこよう。

こっちは、誰か ExitThread() してくれ。

983 :980 ◆oqSJWu4Ch2 :03/05/11 20:18
次スレ

Win32API 質問箱 Build11
http://pc2.2ch.net/test/read.cgi/tech/1052651750/

984 :デフォルトの名無しさん:03/05/11 20:23
TerminateThread(GetCurrentThread(), 0);

985 :デフォルトの名無しさん:03/05/11 20:29
        まもなくここは 乂1000取り合戦場乂 となります。

      \∧_ヘ     / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
 ,,、,、,,, / \〇ノゝ∩ < 1000取り合戦、いくぞゴルァ!!       ,,、,、,,,
    /三√ ゚Д゚) /   \____________  ,,、,、,,,
     /三/| ゚U゚|\      ,,、,、,,,                       ,,、,、,,,
 ,,、,、,,, U (:::::::::::)  ,,、,、,,,         \オーーーーーーーッ!!/
      //三/|三|\     ∧_∧∧_∧ ∧_∧∧_∧∧_∧∧_∧
      ∪  ∪       (    )    (     )   (    )    )
 ,,、,、,,,       ,,、,、,,,  ∧_∧∧_∧∧_∧ ∧_∧∧_∧∧_∧∧_∧
      ,,、,、,,,       (    )    (    )    (    )    (    )


986 :デフォルトの名無しさん:03/05/11 20:55
CloseHandle は新スレでやるの?

987 :デフォルトの名無しさん:03/05/11 21:41
>>984
いきなり強制終了かよ !!

988 :デフォルトの名無しさん:03/05/11 22:33
すみません、質問させてください。
AプロセスとBプロセスで同期を取るために、
AプロセスがBプロセスをwaitさせたいとします。
その場合、Aプロセス内でWin32APIのSuspendThread関数を用いて、
Bプロセスをwaitさせる例が、
「Advanced Windows(Jeffrey Richter著・MicrosoftPress ASCII」
に記述されていました。
 この例の中ですでに起動されているスレッドのハンドルを取得するため、
OpenThread関数を用いたコーディングを行ってるのですが、
このOpenTread関数はWindows2000からのサポートのため、
WindowsNT4.0には対応していません。
 そこでWindowsNT上で、すでに起動されているプロセスをwaitさせるためには
どのような方法またはAPIが存在するでしょうか。
 ぜひお願いしますm(_ _)m

989 :デフォルトの名無しさん:03/05/11 22:49
>>988
プロセスの同期を取るために、他のプロセスから SuspendThread でプロセスを停止させる...、最近はこう言うことができるようになったのか...。

990 :デフォルトの名無しさん:03/05/11 23:53
Suspendしてもいいタイミングを伝えるとか、他の手段を併用しない限り、安全に同期できない気が

991 :デフォルトの名無しさん:03/05/11 23:55
そういえば、自分のスレッドをSuspendして、他のスレッドからResumeしてもらうのはあり?

992 :デフォルトの名無しさん:03/05/12 15:34
ありだけど、そういうスレッドのパターンはあまりみないね。

CreateThread時のパラメータでいきなりサスペンド状態にしておいて、
必要なときにResumeThreadするのはしたことあるけど。

普通ならセマフォかミューテックスで止まる側に明示的に待機させる。

動機オブジェクトの大気のコストが馬鹿にならないような場合
(待機スレッド数が多いときとか)は、Suspendってのもありかな。

パフォーマンスカウンタとか穿り返せばThreadIdからスレッドハンドルが
もらえるかも。

もらえても自プロセスにAttachしてないハンドルは使えないんだけどね。


993 :デフォルトの名無しさん:03/05/12 22:27
ゴミ箱のパスがほしいのですが、
SHGetSpecialFolderPath( hDlg, szRecycleBinPath, CSIDL_BITBUCKET, 0 );
とやると、空っぽで返ってきます。
どうすればいいのでしょうか?

994 :デフォルトの名無しさん:03/05/12 22:37
俺は使うけどなぁ>自分でSuspend

995 :デフォルトの名無しさん:03/05/13 01:56
>993
失敗するってヘルプに書かれているが、仮にパスを得たとして何も出来んだろ?
何するつもり?

996 :デフォルトの名無しさん:03/05/13 08:16
(・∀・)ニヤニヤ 埋め

997 :デフォルトの名無しさん:03/05/13 08:17
            ∧_∧
            ( ´_ゝ`)
       ___∬_(つ____と)___
      /\ 旦          \
     /+ \________ヽ  今だ!コタツの中ゲットォォォォ!!
     〈\ + + +    + + `、   ̄ ̄ ̄ ̄ ̄∨ ̄ ̄ ̄       (´´
     \ \__ノ⌒⌒⌒⌒⌒ヽ______ヽ      ∧∧   )      (´⌒(´
      `、___ノ⌒⌒⌒⌒ヽ_____〉  ⊂(゚Д゚⊂⌒`つ≡≡≡(´⌒;;;≡≡≡
                                  ̄ ̄  (´⌒(´⌒;;
                               ズザーーーーーッ

            ∧_∧
            ( ´_ゝ`)
       ___∬_(つ____と)___
      /\ 旦          \
     /+ \________ヽ
     〈\ + + +    + + `、
     \ \__ノ⌒⌒⌒⌒⌒ヽ______ヽ  (´⌒(´
      `、___ノ⌒`つ⌒≡≡≡≡≡(´⌒;;
             ̄ ̄  ズポッ


998 :デフォルトの名無しさん:03/05/13 08:18
            ∧_∧
            ( ´_ゝ`)
       ___∬_(つ____と)___
      /\ 旦          \
     /+ \________ヽ
     〈\ + + +    + + `、
     \ \________________ヽ
      `、_____________〉


      \ぷ  | ∧_∧
        \ぅ | ( ´_ゝ`)
       ___∬__(つ____と)__
      /\ 旦          \
     /+ \________ヽ
     〈\ + + +    + + `、
     \ \________________ヽ
      `、_____________〉


999 :デフォルトの名無しさん:03/05/13 08:19
       ;⌒`)  ∧_∧  (´⌒;;
      ;; `).`), ( ´_ゝ`) (´ ("
       ___∬_(つ____と)___(´(´⌒)
      /\ 旦          \
     /+ \________ヽ
     〈\ + + +    + + `、
     \ \________________ヽ
      `、_____________〉


                 ∧             ∧
                  / ヽ            ./ .ヽ
               /   `、______/   ヽ           (⌒;:)
              /'"                  "'ヽ.
              /"                     "ヽ,('';:⌒⌒ヽ丶,..
            i   ○     | ̄ ̄|  ○        へ        ;;:: j   (⌒::;
            |         |  ...::|     。   ;:::/  ::::: : ::⌒ ̄""⌒ヾ
             !.       丿 ::::::::| _ _。  ::::::::: /::: ; ": ̄       ::)
             ヽ       l  :::::::┴┐   ,,..:;::::::::::/:'(: : : ;;:;:      ⌒ ⌒)
              \     しw / .......::::::;;:;::::::/;:/:::::::::ノ;;::::::; :  .....   .....  ::::ノ
                ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄' ̄"" ̄" "  ̄ ̄ ̄"'""  ̄ ̄ ̄" '''' ̄'' ̄


1000 :デフォルトの名無しさん:03/05/13 08:21
           ∧⊂ヽ
           (゚Д゚)ノ
   ____/ |⊃ |\____
   \ 叩 / ̄ |   | ̄\ 氏 /
     \/    ⊂ ノ〜  \/
     /\ ((⊂∪⊃)) /\
   / 逝 \____/ 煽 \
     ̄ ̄ ̄ ̄\. 騙 ./ ̄ ̄ ̄ ̄
              \/

   1000ゲット生贄で召還!
    ゴゴゴゴゴゴゴゴゴ・・・・・・・・


1001 :1001:Over 1000 Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。

225 KB
★スマホ版★ 掲示板に戻る 全部 前100 次100 最新50

read.cgi ver 05.02.02 2014/06/23 Mango Mangüé ★
FOX ★ DSO(Dynamic Shared Object)