Win32API 質問箱 Build10

このエントリーをはてなブックマークに追加
1デフォルトの名無しさん
スレ立てるまでもない、Win32APIについての質問はこちらへどうぞ。
やさしいお兄さんたちが答えてくれるかも。
でも、質問する前に検索ぐらいしる!!
過去スレ・参考は>>2-5

MSDN Online
http://www.microsoft.com/japan/msdn/default.asp
猫でもわかるプログラミング
http://www.kumei.ne.jp/c_lang/index.html
otu
kare
kano
乙〜
おまえら、本気でスレ立てた程度で疲れると思ってるのか?
(・ε・)社交辞令
>>7
疲れるよ。
IMEの使い方を調べているのですが、分からないことがあるので教えてください。
WM_IME_COMPOSITIONメッセージハンドラで以下のようにしているのですが、
入力中の文字が見えなくなります。
一度ウインドウを非アクティブにしてまたアクティブにすると見えるようなのですが。
最後の行をreturn DefWindowProc();にすると、正常に表示されます。
メッセージをデフォルトのプロシージャにスルーしなければいけないのでしょうか
MSDNのWM_IME_COMPOSITIONの説明にはそのように書いてなかったのですが

HIMC imc = ::ImmGetContext(*this);
::ImmReleaseContext(*this, imc);
return 0;
見ました。
しかし、EDITをサブクラス化してるので、
EDITの事情でCallWindowProcしてるのかも知れないし、
判断が付かなかったもので。

一見DefWindowProcして正しい結果が出てるので良いのかも知れないけど、
ホントに正しいのか不安なのです
13再掲:03/03/17 01:13
ツールバー作っててつまづいてしまってので、助けてください
文字だけのボタンをつけようとすると、

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

こんな感じで空白が出来てしまうのです。
何かスタイルが足りない、とか教えてください。
1513:03/03/17 01:21
ちなみに、 TBSTYLE_LIST を加えると
┌─────┬─────┬───
│  字字字字│  字字字字│  字字
└─────┴─────┴───
こんな感じになってしまいます。
どなたか助けてください。



あと、↓これ書いたのはわたくしです。新スレで完全無視されるとは思いませんでした。
http://pc2.2ch.net/test/read.cgi/tech/1044929160/872,874
*TBSTYLE_LIST ボタン イメージの右にボタン テキストが配置されます。
17デフォルトの名無しさん:03/03/17 02:52

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

「==」は比較演算子
何度も繰り返さなくたって「==」が比較演算子なのは分かってるよ。
いちいち蒸し返すなバカ。
>>13
TBBUTTONのiBitmapにI_IMAGENONE(-2)を設定
ただしコモンコントロールv5.81(IE 5.01)以降が必要らしい。
20デフォルトの名無しさん:03/03/17 05:50
DLL内でCreateWindowを使うときは、InstanceはDLLのものを指定するのでしょうか?
それとも、呼び出しているexeのものを指定するのでしょうか?
dll
>>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.
>>20
呼出し元
24VB房:03/03/17 08:56
ファイルの作成日を取得するAPIってありますでしょうか?
GetFileTime()
26VB房:03/03/17 10:42
>>25
サンクス
┌─────┬─────┬───
│字字字字字│字字字字字│
└─────┴─────┴───
>>19様ありがとう。無事に
┌─────┬─────┬───
│字字字字字│字字字字字│字字字
└─────┴─────┴───
となりました。

ただ、TBBUTTON::fsStyle に TBSTYLE_AUTOSIZE が必要なので、
後々同じ事をされる方はお気をつけて使用してください。
29デフォルトの名無しさん:03/03/17 19:52
LVS_EX_BORDERSELECT の値って何でしょうか?

>>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 版を実装



できません。
ネタはもういいよ
33デフォルトの名無しさん:03/03/17 20:32
>>31
ネタだったの?
ネタじゃなければmsdnのサイトへのリンクが出せるっしょ
メール欄見れば一発
すみません。最近のMSのキーボードに付いているメールを返信のスキャンコードと仮想キーコードを教えて下さい。
37デフォルトの名無しさん:03/03/18 03:31
あれってメーカーが用意したドライバでメールソフトを起動するようにドライバ作ってんじゃないの?
>>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とかのボタンの上にマウスを乗せるとボタンが
変化するのがあるけど、今までの関数とどう
違うんですか?
>>40
4240:03/03/18 20:03
>>41
例えばメッセージボックスのボタンでも
マウスをボタンの上に乗せると微妙に
色が変わるじゃん、ところが自分で
MessageBox(NULL............);
と記述しても、2000や98みたいな普通のボタン
なんだよね。
45デフォルトの名無しさん:03/03/18 20:08
CDドライブを開けるコマンド教えてくろ
mciSendString "set cdaudio door open"
サンプルコード見せてくんろ
>>48
検索しなヴォケ そこまで面倒見てられるか
50デフォルトの名無しさん:03/03/18 21:59
おまえらバカじゃないのか?ほんと自分は出来る風ですか?
ほんとにバカ、オメーラ、みんな、ネット荒らしとどこが違うんだ!?
ほんとな、おまえらはみんな、ここに来る資格ねーな!!
デフォルトの名無しさんだっけ!!おまえしね!!人が謝ってのに何が
あやしいっておまえみたいのがいるから日本がだめになるんだ!!
分かったバーカ!!もう荒らしでも何でもいいよ!!
オメーラみたいなバカどもにつき合ってもしかたないから!!
あんたらみたいのはもうこのよにもいらない !!
いや、俺は出来る人ですが?
おまえら
      に
      な
      ルトの
          て
          ー
          たいな
              の

意味わかんない
不思議な読み方をするなあ・・・
>>51
難しい縦読みだねぇ。ぜんぜん分からん。
それ、どっからコピペしてきたの?
自分のウィンドゥを常にアクティブにしたいのですが
どうすればよいですか?
WM_ACTIVATEを出してもWindows98だとちゃんとアクティブに
なるのですがWindowsXPだとタスクバーが点滅するだけなのです。
よろしくお願い致します。
>>55
Win2K以後の仕様です
抜け道はありますが
その前に設計意図を理解すべき

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

食らってみればわかるけど
悲しすぎるんだよ
5755:03/03/19 01:16
>>56
ありがとうございます。
よろしければ、設計意図と抜け道のヒントを下さい。
お願い。
>>56は、「〜しますか(y/n)」ってダイアログが突然出現して、有無をいわさずyキーを押してアボーンはまずいだろ…
っていうのが"タスクバーが点滅するだけ"の設計意図と俺は読んだが。
XPだとフォーカス奪わないで右下にバルーンみたいの出るじゃない。
あれのまねすればいいんじゃないの(ヒント: SWP_NOACTIVATE
SW_SHOWNA)
602:03/03/19 11:03
質問です

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

どういうふうにしたら右上のクローズドボックスを無効にできるんでしょうか?
よろしくお願いいたしますm(_ _)m
>>60
MsgBoxを使わずダイアログを作った方が早道かと。
6255:03/03/19 11:57
>>58
>>59
ありがとうございました。
>>61
そんなたいそうなものじゃないのです
単にメッセージを表示するだけなので...
「エラーがでました」等...

それでやっぱりペケボタン無効化する方法はないのでしょうか?
>>63
ダイアログ1つ作るのも「そんなたいそうなもの」じゃないけどな
>>61
あのダイアログに表示されるアイコンはどうやって取得すればいいのですか?
6661:03/03/19 13:25
>>63
MessageBoxIndirectならできるかもしれないけど面倒だから確認しない。

>>65
LoadIcon
フルパスから拡張子のみ取り出す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が必要なのでしょうか…
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion
のCommonFilesDirでも参照すれば?
70デフォルトの名無しさん:03/03/19 17:54
起動時にショートカットから起動したかどうか判断する方法
ないでしょうか?
>>70
以前に同じ様な質問があったけど結論は「無い」だったと思う。

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

それにしても、こんな所に記述されてたとは…
これからはレジストリを漁る習慣つけるべきかな
>>67
rindex(path,'.')
7429:03/03/19 19:49
LVS_EX_BORDERSELECT の値をご存じの方いらっしゃいませんか
>>74
0x00008000
76デフォルトの名無しさん:03/03/19 20:19
IEのようにステータスバーにプログレスバーを入れたいのですが、
やりか方がよくわかりません(MFCを使った例はよく見かけるんですが)。
もしご存じの方いらっしゃいましたらヒントでもいいので教えてください。
# オーナードローとか使わなければならないのでしょうか?
SSL通信をしたいんだけど、目的がhttpsじゃないんです。
SChannelとかいうのをつかえばいいんでしょうか?

もし試してみたかたがおられましたら、ご教授お願いしやす。
>>73
それで
dir.withdot\nodotfile
の拡張子を切り出したら楽しいことになりそう
というかrindexのどこがWin32なのかと小一時間(ry
>>67
API は知らん。
VC なら、_splitpath(), _wsplitpath()
>>76
ツールバーを親としてステータスバーを作る
>>67 PathFindExtension()
8267:03/03/20 11:23
回答くださったみなさんありがとうです。
おかげさまでできました。
フォルダを指定してそのフォルダ内が空かどうかを調べるAPIってありますか?
普通に調べればいいじゃん。
8583:03/03/20 17:24
>>84
普通っていうのがわからないので困ってます。
今はFindFirstFileとFindNextFileで地道に検索してますけど
例外的なことがあったらいやなので。どうぞよろしくお願いします。
PathIsDirectoryEmpty
87デフォルトの名無しさん:03/03/20 17:37
キー入力を受けるソフトを作っています
WM_KEYDOWNで受け取って、
::GetKeyNameTextにLPARAMを渡して名前を得ているのですが、
NumLockがonでもoffでも"Num 2"などが返り、NumLockの状態が反映されません。

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

何か良い解決方法無いでしょうか。
8883:03/03/20 18:43
>>86
ありがとです。
これってWin98以降なんですよね。まっ、いっか。
8929=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」
この辺りの組み合わせで検索してたのですが、見つからなかったんです。
Shell_NotifyIconでええやろか?

老婆心ながらメニュー出すときはSetForegroundWindowを忘れずに。
これで悩んだ。
94デフォルトの名無しさん:03/03/21 00:27
>>93
タスクトレイにアイコンを表示するのではなく、タスクバー上に置きたいのです。
できるかわかりませんが、理想はタスクバー上にクライアント領域を持つ事です。
仮想フォルダを作れば出来るんじゃないの?
んじゃあこういう手でどうじゃろか?

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

タスクトレイ
FindWindowEx(hwn,0,"TrayNotifyWnd",NULL);
>>94
IDeskBandかな
98デフォルトの名無しさん:03/03/21 01:08
>>96
タスクバーにクライアント領域を持つだけだとどうも難しそうですね。
ありがとうございました。

>>97
まさしくそれが思っていたものっぽいです。
色々資料当たってがんばろうと思います。
ありがとうございました。
「スワップファイルがあるドライブは何ドライブか」
これを調べるためのAPIはなんでしょうか?
1Gのファイルを作成する際に、実際に1G書き込まずに先にディスク領域だけ確保するには
どうしたらよいのでしょうか。
SetFilePointer(Ex)>SetEndOfFile
LayeredWindowで不透明度0にした場合って
そのぶぶんに穴が空いてしまうのでしょうか?
>>100
> 実際に1G書き込まずに
NTFSだとセキュリティ上の理由で必ずゼロ埋めされるから不可能
104デフォルトの名無しさん:03/03/21 08:58
BSTRを作成するときは必ずSysAllocStringを
使わなくてはならないのでしょうか?
それともBSTRと同じメモリ構造を自分で用意しても
かまわないのでしょうか?
>不透明度0
ウィンドウが透明になる(=見えなくなる)だけだと思うが
>>104
作成・廃棄は自分しかやらず、外部には参照しかさせない、
と限定できるならいいんじゃない?
混乱するから俺ならやらないけど・・・
SetFilePointerってEOF超えた位置に移動してもよかったんだっけ?
>>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);
>だけで塗潰す必要もなく非矩形ウィンドウになるっぽです。。。。=■●_
とあるので、間違いないようなのです。

できれば、穴の空いたウインドウにせずに完全に透明な
部分を含んだウインドウを作りたいんですが・・・
>>107
出来るよ
>>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属性のついた
ポップアップウィンドウを重ねてみてはどうか。
>>111
ウインドウを移動させると描画内容が破綻する
113名無し@沢村:03/03/21 11:27
>>112
ヌヒよ、そんなもんUpdateWindow()で済む話だ
>>106
IEコンポに書き込む文字列を渡すためだけに
関数内で作成・廃棄するのがアホらしかったんで
あらかじめ長さのフィールドを確保しておけば
無駄なコピーが減らせないかと思って
>>114
それをどこに置いておくつもりだ……
グローバルにするつもりじゃないだろうな
116デフォルトの名無しさん:03/03/21 13:42

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

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

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

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

>>115
すんげえ、的はずれなレスだね。
BSTRを関数に渡す際には、呼び出し側に破棄の責任があるのだよ。
118国語が足りない奴:03/03/21 14:10
先生、いま作っているアプリで、
SetTimer()とInvalidateRECT()使って
BMPの動画をやっているんですが、
動画再生中にパソコンのメモリ使用量が
増えていきます。BMPはDLLにリソースとして
埋め込み、アプリ実行はじめにDLLをLaodLibrary()しています。
再描画の度にBMPをLoadBitmap()、
SerectObject()してBitBlt()、そしてDeleteObject()。
最後にアプリ終了時にFreeLibrary()。
この流れで使用メモリ増幅の理由に
なりそうなところはどこですか?
ノートン
>>117
そのレスも的を得ているようには思えんがw
>>118
SerectObjectを1回しかしてないところ、並びに
SelectObjectが出てこないところ。
とあるフォルダにファイルが作られたりコピーされたことを感知するためには
どのような処理をすればよいでしょうか?
とりあえず1秒ごとにそのフォルダをなめようかと思いましたが
これはあまりに馬鹿っぽいです。エクスプローラからイベントがもらえたら
うれしいのですが。
>>122
FindFirstChangeNotification
>>113
自信たっぷりだな。
あんまり自信たっぷりだから信じてやってみたら
やっぱりUpdateWindowじゃだめじゃねーか。
やっぱりおまえは沢村だな
沢村がハンドル変えたんか
がくがくぶるぶる
126122:03/03/21 20:38
>>123
さんくすですー。できますた。できますた。
127104:03/03/21 21:47
ぐぐってみたところ
BSTRはプロセス境界をまたいで渡されるかもしれないから
システムによって割り当てられなければならない。
メモリレイアウトが同じなだけではだめ、とのこと。
お騒がせしました。
>>120
的を得る ?
なんか得するのか ?
>128
ageるならそんなくだらないつっこみをしないで建設的な意見でも述べたら?(嘲笑激藁
こちらで伺うのかが適切かは解りませんが。
一部の(SnapIt!等)で、「エクスプローラのフォルダの余白をダブルクリック」だの
「解像度が変更されたらアイコンの自動再配置」なんて機能が有ります。
この様に、Explorerの挙動を他のアプリから感知するにはどうすればいいのでしょうか?
資料をご紹介頂けるとありがたく思います。
前者はフック
後者はWM_SETTINGCHANGEかな
>>132
うーむ何をどうフックすれば余白をWクリックなのか、今の時点ではさっぱり解りませんが
がんがって調べてみまつ!
ありがとうございましたー
フックじゃねーや、サブクラス化な。
WM_LBUTTONDBLCLKだかを捕まえればいいんじゃね?
勿論、アイテムのダブルクリックとかややこしいことがあるけど
そう言うのを解決して。
とにかくExplorerの仕様(?)が全然解らないので、鋭意調べ中です!
LVNメッセージを捕まえられれば・・・とかちょっと思ったけど、
捕まえられたとしても余白のメッセージなんて無かった(w
>>116
どっちもOSが管理している構造体だよ

ウインドウ1枚分の管理情報を格納している制御ブロックが「ウインドウ」
「ウインドウ」を作るときの初期値が「ウインドウクラス」
詳細に入る前の概要説明としてはこんなもんだろ
>>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を使うということなのでしょうか?
区分けがわからないのでどこで質問すればいいのやら・・・
>>140
MSDNライブラリで「プラットフォームSDK」に分類されている関数やメッセージの話ならここでいい
COMやMFCが出てくる話なら別スレがある
>>137
そうするのか!!
一寝入りしたらまた格闘してみまつ。ありがとさんです(;゜Д゜)b
>>142
あ、137はLVM_GETSELECTEDCOUNTの間違い。
>>139
あなたは国語ばかりか英語も足りません。
>>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/
Win16はともかくWin64に独立スレが必要とは思えんが
杓子定規すぎ
>>146
同意
Win16の話をここでするのは漏れ的にはOKだな
ネタにマジレ(ry
Win64はないでしょ。その代わり.NETはある意味Win64相当といえるかも。
例えばファイルサイズはlong=int64でintはどのプラットフォームでもサイズ変わらないし。
>Posted July 14, 2000
> 例えばファイルサイズはlong=int64でintはどのプラットフォームでもサイズ変わらないし。
IL32ならlong=int32で(Win32)
ILP64ならintは64ビットだと思ったが
間違った
×IL32ならlong=int32で(Win32)
○IL32ならlong=int32で(Win64)
>>152
ソースは?
>>155
グロ
コンソールプログラムにおいて Sleep()で休止中に Ctrl-Cを入力すると、完全に
凍ってしまうんですが、これはどうにかならないのでしょうか?
158 :03/03/23 10:44
SleepEx() 使え
自作のコントロールにマウスカーソルをあわせてホイールを
回すと何らかの動作するようにしたいのですが、Spy++で調べても
WM_MOUSEWHEELが送られてこないようです。
どうすればホイールの動きを感知できるでしょうか?
>>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 はキーボードフォーカスを持つ
ウインドウに送られるそうだけど、その辺は大丈夫?

165161 :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さんの情報でも解決しない場合は、詳しく環境を教えて。
160じゃないけど、MFCをサポートするコンソールアプリでやったら例外で落ちた。
一応報告。
ウィザードが吐いたコードの最後に ::Sleep(10000); を追加しただけだが……

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

WinXP home VC6SP5
FindFirstChangeNotificationでフォルダを監視して、その変更通知は受け取ることが
できたのですが、その中で変更のあったファイルのみ列挙するには
どのようにしたらよいでしょうか?
169159:03/03/25 00:39
>>163
SetFocusを実行するようにしてみたのですがダメでした。

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

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

メッセージループに何か仕掛けが必要なのでしょうか?
マウスユーティリティにホイールメッセージ奪われて
WM_VSCROLLにすりかえられてたりしない?
171168:03/03/25 17:33
やっぱり、無理みたいですね。(´・ω・‘)ショボーン
>>160
SetErrorModeするとか明示的にsignalハンドラ書くとかはどうよ?
173デフォルトの名無しさん:03/03/25 21:48
猫プロのWindows SDK一番最初のプログラムがコンパイルできません

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

とエラーが出ます
BCCです
早くも挫折の予感です
みなさんこれを乗り越えてきたのでしょうか
>>173
http://pc2.2ch.net/test/read.cgi/tech/1030493157/733 を見てください

bccだと猫のサンプルはエラーが結構出たような気がするけどがむばれ・・・
>>173
windowsx.h, GetStockBrush, DeleteBrush 等のキーワードで調べる……は駄目かな?
176デフォルトの名無しさん:03/03/25 23:55
>173
C言語の第1章からやれ
>>173
エラーと言われたソースのファイル名と行番号は認識してるか?
その行で使っている型識別子は1つずつgrepしてみたか?
typedefは見つけたか?
#define NOSTRICT
…は素人にはお勧めできないからがんばって適切な型の指定に置き換える
179173:03/03/26 00:32
>>174のリンク先の方法で解決できました
意味はよくわかりませんでしたが、HBRUSH型にキャストしてやれば良いんですね

>>174>>175>>176>>177>>178
アドバイスありがとう
また明日から頑張れそうです
>>179
憶えたこと、その場でちゃんとメモっとけよ
そのメモの束が、お前が先輩になった時の財産になるぞ
>>181
おお。
183名無し@沢村:03/03/26 08:08
>>124
ははは、昨日会社でソースを確認したらUpdateWindowじゃなかったよ。
正しくはこうだな。

ShowWindow(hWnd, SW_HIDE);
MoveWindow(hWnd, .....);
ShowWindow(hWnd, SW_SHOW);
>>181
( ●ω●) オトーサン・・・
>>183
禿しくちらつく。
そんなもん実用にならねぇ
>>170
WM_VSCROLLにすり替えられていたようです。
Spy++で表示されているのは、送られているメッセージで、
受け取ったメッセージではないんですね?
ありがとうございました。
187名無し@沢村:03/03/27 00:40
>>185
ヌヒよ、WS_EX_TRANSPARENT のポップアップウィンドウの話をしているのだぞ。
ユーザには存在していないように見えるウィンドウをいったん非表示にしたところで
ちらつくわけがないだろ。わかったか、ヌヒよ。
リソース食いそうだね。
質問です。
PC に PS/2 キーボードと USB キーボード みたいに
キーボードが複数繋がっているとして、
この両者の入力を、どちらのものか識別したりする方法ってないでしょうか?
一応、デバイスマネージャにはデバイスドライバが2つある状態になっています。
多少低レベルな API とかでもいいのですが…
(さすがにデバイスドライバを作るとか、そういうレベルだと厳しいのですが)

識者の方、指揮者の方問わずよろしくおねがいします。
ウィンドウアプリ(非コンソールアプリ)で、起動後に
GetStdHandleすると返ってくる値がとても変なのですが
なにか関連情報ありませんか?

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

今手元に詳しい結果が無いのですが
WinMain
{
HANDLE hStdOut = GetStdHandle(STD_OUTPUT_HANDLE);
MessageBox(...)
}
とかで簡単に調べられます。なんでしょねこれ。
>>190
explorerがなにがしかハンドルを渡してるんじゃないのか?
>>190
GetStdHandle 関数が返すハンドルは、コンソールからの読み取りまたはコンソールへの書き込
みが必要なアプリケーションで利用できます。
(MSDNより)

ウィンドウアプリでは必要ないと思うんだけど。
>190
CreatePipe()しないと駄目とか
194193:03/03/27 12:06
9x系がCreatePipe使えないから違うか…
>>194
使えるよ
使えないのはCreateNamedPipeのサーバ側
196デフォルトの名無しさん:03/03/27 13:28
質問お願いします。VC++6を使っていますが、
newよりもGlobalAllocを使った方が良い場面というのは、どういう場合なんでしょうか

なんとなく、大きいメモリを確保する必要が有るときは
GlobalAllocかなぁ、などと思っているのですが。
>>196
APIがGMEM_MOVEABLEとかで指定する移動可能メモリを要求してるときぐらい
クリップボード系でGMEM_SHAREを指定するときもあるかも
クリップボード使う時はGlobalAllocじゃないとね
199デフォルトの名無しさん:03/03/27 13:48
おねがいします!
_beginthreadexの戻り値のハンドルをクローズする場所は
たいていWaitForSingleObjectなどでスレッド終了を確認した後で
行われていますが、
スレッド関数内の最後(まだスレッドは終わってない)の所で
CloseHandleして良いものなのでしょうか ?
いちおうCloseHandleは成功はしているけど・・・やばいのかな?
>>199
WaitForSingleObjectなどでスレッド終了を確認する必要が無い場合は
CloseHandleしてかまわない、WaitFor...使ってる場合にCloseHandleすると
どうなるかしらない。WaitFor...がハンドルの参照カウンタをインクリメント
しているなら大丈夫だが、、、普通どおり終了確認してからCloseHandleする
のが安全だろ。
ダイアログボックスに描画したグラフィックを消すにはどのようにしたらよいでしょうか?
グラフィックはLineToやPolylineで書いています。
>>201
InvalidRectとか?
>>202
即レス、ありがとうございます。
できました。
>>200
良く分かりました。さんくす。
205196:03/03/27 15:11
>>197-198
レスありがとうございます。
良かった、用途はかなり限定されてるんですね。
悩まずに済みそうです。感謝です。
文字列が数値かどうか判定するAPIってありましたでしょうか?
VBでいうところのIsNumericです。
>>206
GetStringType, GetStringTypeEx かなぁ?
>>206
IsCharAlphaNumeric() && !IsCharAlpha()
ではどうか?
マウスカーソルを指マークにしたいのですがデフォルトではないようです。
みなさんどうやっていますか?
沢村か?
IDI_HANDのが気に入らなかったら
自分の手を見ながら描く
>>211
IDC_HANDですね。ありました。2000以上だったのか。
213190:03/03/28 01:27
>>191-195
ありがとうございます。
ウィンドウアプリから子プロセスとしてコンソールアプリを起動する
時に標準出力などを一旦待避しておいて後で
また戻してるだけなので、使わないといえば使わない
ハンドルなんですけどね。
ちょっと気持ち悪かったもので。
>213
とりあえず猫プロとか見ながら組んでみたけど
SetStdHandle()でエラー返さないからええんでない?
215デフォルトの名無しさん:03/03/28 17:57
カーソルがウィンドウの外に出ていったことを
知るにはどうしたらいいのでしょうか?
できればキャプチャーせずに知りたいのですが。
>>215
キャプチャーするのが一番だと思うんだけど・・・
タイマーで監視するか
透明なウインドウを置いてそこで検出するか

キャプチャーしたくない理由ってなによ?
用途によってはタイマーで監視する方法も。
例えば、
 プッシュボタンを押したとき → キャプチャー
 フラットなボタンを凸表示するとき → タイマー
みたいに。
>>217
ウインドウ上でボタン押下したならウインドウからはずれてもMOUSEMOVEが拾えなかったっけ?
219デフォルトの名無しさん:03/03/28 18:57
DIB通さずに高速に描画する関数ってどんなのがありますか?
点とか円とか線とか
220215:03/03/28 19:37
>>216-217
ありがとうございます。

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

カーソルが外に出た瞬間別のボタンの上に
載った場合、キャプチャー解除しても直後は
WM_MOUSEMOVEを拾えないのではないか、
と思ったのですが、実験してみたら拾えました。(汗)
スマソです。
>>219
点とか円とか線を描くのにDIB以外の手段つーとメタファイルか?
そんなん実測したらええやん
>>221
GDIと混同してる?

>>219
LineToとかArcとか
223221:03/03/28 21:09
>>222
GDI以外の何と混同してると重田?
>>218
いや気になったのは、キャプチャだとキーボードメッセージもキャプチャしているウィンドウに取られてしまい
マウスがボタンの上に乗っているときにメニューのショートカット(Alt + H でヘルプとか)が使えなくなったりしないかなぁ、と。
アクセラレータやMFCを使っていると何故か大丈夫なのかもしれないけど。
TrackMouseEvent() は?
ダイアログボックスの背景の色を指定するにはどうしたらいいでしょう
>>226
WM_ERASEBKGNDで処理
>>228
はいはい面白い面白い
230228:03/03/30 01:10
中学の同級生の大ちゃんを思い出させるセリフだな、それ…。
気に食わない事があると良くそのセリフを吐いていたっけ…。
はあ、金返せよ…。
231yosoでやってくれ:03/03/30 01:35
少なくとも一方はスレ違いと思われ
232デフォルトの名無しさん:03/03/30 16:09
自分以外のプロセスが使っているWindows Common Controls
にアクセスしたいんですけどどうやったらいいんでしょうか?

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

95系とNT系で違う処理になると思いますがXPで動けば十分です。
>>232
>そこに表示されているテキストを読み取りたいんですが?

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

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

意味不明
238デフォルトの名無しさん:03/03/30 17:46
猫でも分かるよりさらに超初心者向けのwindowsプログラミングサイトを
教えてください。
>>238
サルでもわかるWindowsプログラミング
http://life2.2ch.net/test/read.cgi/credit/1041764551/
>>238
バカは死ね。
>>235
決まってないと思われ。と言うかボタン作ったヤツが決めてるだけ。
243yosoでやってくれ:03/03/30 22:57
>>238
くめい氏がここを見ていることを祈りながら、
どの説明のどこがどのようにわからないのか
その恥のかきついでに、克明に表現しろ

この世のどこかにものすごく奇特な人がいて
おまえの悩みにつきあってくれるかも知れんぞ
あり、コテハンのままだった(欝だ詩嚢
245yosoでやってくれ:03/03/30 22:59
あげ
>>232
VirtualAllocEx
>>232
GetWindowText()が使えそうなら使う。(WM_GETTEXTを送るのは×)
無理ならシステムフックを使う。
http://home.att.ne.jp/yellow/hide_n/programming/tips03.html


>>247
>他のプロセス内のコントロールのテキストを取得するには、GetWindowText 関数を
>呼び出すのではなく、直接 WM_GETTEXT メッセージを送ります。
ってかいてあるよ?

WM_SETTEXTとWM_GETTEXTはWin16との互換性を保つために、自動的に
メモリマップを介してプロセス間で文字列を共有できる、というようなことを
Advanced Windowsに書いてあった気がするが。
WM_GETTEXTで読み取れるのはステータスバーくらいだろ
GetWindowText() って何のためにあるの?
全部 WM_GETTEXT でいいじゃん。
252ネタにマジレス:03/03/31 12:27
>>251
GetWindowText
指定されたウィンドウが持つタイトルバーのテキストを取得します。
指定されたウィンドウがコントロールのときは、コントロール内のテキストを取得します。

(中略)

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

                                                (MSDNより抜粋)
>>252
マジにネタレスじゃなくて?
あるファイルが存在するかどうか調べるAPIってありますか?
FindFirstFile
256デフォルトの名無しさん:03/03/31 17:18
>>254
FileExists
fileExists
public boolean fileExists (String stgfilename, int flags)
throws IOException;

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

戻り値 :

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

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


(MSDNより抜粋)
>>254
VBならDir関数
>>258
スレ違い
>>258がスレ違いなら>>257>>256もスレ違いなわけだが。
ププ
よっぽど悔しかったんだね
了解です。fopenですね?
PathFileExists( )
GetFileAttributes( ) != (DWORD)-1;

じゃねーの?
264258:03/03/31 18:30
スレタイはWin32API 質問箱 Build10
言語を指定していない
よって回答も各言語のがあってもいいのでは?
265258:03/03/31 18:31
と思ったけどDirだとAPIじゃないからスレ違いでつね
逝って(ry
>>263
Cライブラリのaccessだったか、その関数呼んでるよね。
CreateFile()でいいじゃん
>>267
fopenはfcloseしなきゃいけないから面倒
たいていどのCにもaccessがある

とfujiが言ってたな
>>268
死んだ方が良い発言だな。
>>268
唐突に言うならともかく
267に対しては何のフォローにもなってないな

最後の一行はどんなに善意に解釈しても糞以外の何者にもならない
そんなことも自分で調べてないなんてレベル低すぎというより問題外
271デフォルトの名無しさん:03/04/01 00:06
>>268
こいつMSDNも規格票も持ってないのか?
〜と友人が言ってました

これ、自分の無知無能をごまかすときの言い回し。
匿名なんだからそんなこと気にしなくてもいいのにな。
俺が正しいとばかりに言い切っちゃえば、誰かが突っ込んで訂正するかもしれん。
友達の友達は皆友達だ
俺は情報のソースを書いてくれる書き込みは丁寧だと感じるがな。
GetFileAttributesでいいのに
わざわざCreateFile使うことないじゃん。
>>275
「友達が言ってた」発言だと思って
ソースだとわからなかったんでしょ
>>276
GetFileAttributes はそもそも属性を調べるAPIで、たまたま存在確認が
できるだけ。しかも C:\foo.txt がフォルダなのかファイルなのかなどの
判断も必要なので >>263 は間違い。
ファイルの存在は CreateFile(path, 0, OPEN_EXISTING,...) を使うべき。
>>278
電波は死んでください。
FindFirstFileでいいじゃねえええかあ
CreateFile() や FindFirstFile() はそれぞれコストが大きいだろう。
>>278
CreateFileはそもそもファイルを開くAPIで(ry
> しかも C:\foo.txt がフォルダなのかファイルなのかなどの
> 判断も必要なので >>263 は間違い。
>>254の意図が-eなのか-fなのかもはっきりしないのに
そこまで言い切るのもどうかと思うが-fだったとしても
!(GetFileAttributes() & FILE_ATTRIBUTE_DIRECTORY)
でOK。Cランタイムが間違ってると言い張るなら話は別だが
コスト
GetFileAttributes << FindFirstFile <<<<<< CreateFile

その上 CreateFileはファイルが開けない場合もとかがからんできて面倒
>>283
そのためにOPEN_EXISTINGフラグがあると思うのだが。
>>283
ちゃんとプロファイルした結果か?

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

ただし、
GetFileAttributesはない場合はある場合に比べて30%くらい遅くなった。
CreateFileは10%強早くなった。FindFirstFileはほぼ変わらなかった。
http://hogehoge.com/fugefuge/
のようにファイル名を省略したURLから
http://hogehoge.com/fugefuge/index.html
上のように、ファイル名を補完したURLを取得出来るAPIはないのでしょうか?
>>286
不可能
>>286
APIの範囲を越えている
鯖サイドの設定によるだ
>>287,288
そうですか、APIでは出来ないんですね。
ありがとうございました。
290デフォルトの名無しさん:03/04/01 23:59
MessageBox()APIについて質問があります。
MFCのメッセージボックスを使うと、引数に渡したHWNDのウィンドウの中央に
メッセージが表示されるようなのですが、SDKのみでこれをやるにはどうすれば
いいのでしょうか?
普通にWindowハンドル渡しただけでは、画面中央にメッセージが表示されてしまいます。
>>290
それ、俺も昔悩んでMFCのソースを調べたけどよくわからんかった。
MoveWindowで動かしているようでもないし。
一度ここで質問したけど、回答は得られなかったし。
一番ある回答は
「自分でダイアログ作れゴルァ」
だったと思う。
292デフォルトの名無しさん:03/04/02 02:12
いずれにせよ、ファイルの存在を調べるためだけにハンドルを開くことになる
CreateFile()やFindFirstFile()をわざわざ呼び出すのは、馬鹿のやることだな。
>>291
センターウィンドウじゃ。
APIバイブルに記載されていないAPIが
いくつかあるようなのですが、
(DragQueryFilesとかExtractIconとか)
漏れを補うのにいい書籍があれば教えてください。
>>294
書籍じゃないがMSDNライブラリ
便乗で申し訳ないのですが、VisualStudioを買わずにMSDNライブラリを
手に入れる方法ってあるでしょうか?
>>297
変わった質問ですね。ボーランド派ですか?
「MSDN オペレーティング システム サブスクリプション」をどうぞ。
>>290
http://pc2.2ch.net/tech/kako/1040/10409/1040964626.html
の217からだけど、フックを使っているらしい。
>>293
MeseageBoxのHWNDが手に入らないと無理なんじゃない?
300デフォルトの名無しさん:03/04/02 20:31
具体的なやり方が知りたいけど、
はっきりとした「できない」の証明でも
すっきりするんだけどな〜
>>298
手元にあるVS6の文書が古くなってしまったもので。
やはりMSDN契約しか無いですか。ありがとうございました。
暫くはSDKの付属文書から差し替えつつ、困ったらMSDNオンラインを引くことにします。
302デフォルトの名無しさん:03/04/02 20:44
>>298
誤: オペレーティングシステム サブスクリプション
正: ライブラリ サブスクリプション
303デフォルトの名無しさん:03/04/02 22:41
ハンドルを継承するってどういう意味ですか?
>303
どっかからハンドル持ってくるとか、
持ってきたハンドルにさらに機能くっつけるとか。

広域すぎて何が言いたいのか解らないよ。
>>303
たとえば、その資源を使う権利を引き継ぐということです。
>>302
ライブラリサブスクリプションって今でも売ってるのかね。
いちおうMSのサイトには名前があるけど、売ってるサイト見たことないな。
>>300
MFCのソース読めば
>>306
http://www.microsoft.com/catalog/display7.asp?subid=36&site=202

MSDN ライブラリ サブスクリプションの製品パッケージは、
2000 年 10 月26 日を持って販売終了とさせていただきます。
>>308
なにせパッケージ版は店頭に一年以上放置されたりするからな。
WritePrivateProfileStringの書きこみの後すぐに
CreateFileで開いて読みこんでも内容が変化してないのはなぜ?
>310
書き込み内容がフラッシュされていないから。

WritePrivateProfileString( NULL, NULL, NULL, ... );
でフラッシュできる
312310:03/04/03 12:33
>>311
早速やってみます。これでSleepで時間を置いてから開くみたいな
蛇道な(間違った)方法から開放されそうです。 感謝!
>>312
WritePrivateProfileXXX 使うこと自体邪道な(間違った)デザインなんだけど。:)
ini に書きこむならそのAPI関数しかないだろうに
レジストリが推奨されてるって言いたいだけだろ
たしかにWritePrivateProfileStringとCreateFileの併用は良くない気もするが
レジストリ弄るのイヤ〜ン
MSDNライブラリ全体は要らんからプラットフォームSDKと付属文書キボンヌ・・・
319デフォルトの名無しさん:03/04/03 16:29
WM_GETMINMAXINFO でウィンドウサイズを変更出来る大きさを制限出来ますが、
あるウィンドウに対してその制限された大きさを取得するにはどうしたらいいでしょうか?
>>319
そのメッセージを送って帰ってくる情報で判断ってできないかな?
321デフォルトの名無しさん:03/04/03 17:21
W系のAPIが入っているプログラムを作ったら、Win95で開始エラーが出るようになりました。
OSは自分で判定しているのでWin95の時はW系のAPIを使ってはいないのですが、
プログラムに入っているだけで起動できなくなります。
でもNTではW系の方を使う必要があるので、消すことができません。
開始エラーが出ないようにする良い方法はないものでしょうか?
>>321
API呼出をLoadModule+GetProcAddressに変えてみるとか?
323デフォルトの名無しさん:03/04/03 17:39
マウスのキャプチャー中に送られてくるWM_MOUSEMOVEの
カーソル座標の情報なんですけど、xy共にクライアント領域で0を下回るときには8012などの
わけの分からない数値になってしまうのですが、これはどういうことなのでしょうか。
>>314-317
マジレスすると、MSDNには

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

と書いてあるわけで。レジストリに書くのもいやなんだけどね。
(Get|Write)(Private)?ProfileXxx のXML版用意シレ〜。
Microsoft.MSXMLをCoInitializeしてXPath、、、って面倒だし。(w
>>323
二の補数?@16Bit
>>321
どうしてもW版を使いたいならMSLUがあるが。
別にNT系だからってW系APIを使わなければいけないということもないが?
>>326
Win2000にしかないAPIとか使ってるんだろう。
Win95ではその機能をオフにしてるとか。例えばウィンドウの半透明機能。
LoadLibrary+GetProcAddressに一票。
あ、2000じゃなくてNTって書いてた。ま、いいか。
329323:03/04/03 18:24
>>325
うっかりしてました。LOWORD()の戻り値の
WORDが符号無しだって気がつかずに使っていました。

MSDNにGET_X_LPARAMってのが載っていたので、それにしたら正常に動作しました。
short型にキャストですな
Drectxを使ってフルスクリーンモードで描写しながら
DialogWindowを表示したいのですが
まったく表示されません。
どのようにすれば表示されるでしょか?
332331:03/04/04 02:34
解決しました。
すんまそ。
>>332
そんなレスよりどう解決したのかのほうが重要だ。
334331:03/04/04 03:12
>>333
俺にとっては重要じゃない。
>>334
だったらお前のひとりごとなんかどうでもいいから来るな
このアホ、C++スレでも聞いてるな
>>331 はマルチか…

C++相談室 part17
http://pc2.2ch.net/test/read.cgi/tech/1047560042/705
339331:03/04/04 10:01
334は私ではありません。
ダイアログボックス上にピクチャコントロールを貼り付けて
そこにIDI_HAND(システムアイコン)を貼り付けたいのですが。
ダイアログに
switch (uMsg){
case WM_INITDIALOG:
SendMessage(GetDlgItem(hDlg, IDC_STOP), WM_SETICON, TRUE, (LPARAM)LoadIcon(0, MAKEINTRESOURCE(IDI_HAND)));
break;
としても表示してくれません。
なにか足りないでしょうか?
341340:03/04/04 13:03
DrawIconでWM_PAINT時に書くことにしました。
MAKEINTRESOURCE 不要? あと
TRUE を ICON_BIG とか ICON_SMALL に
してみたらどう?
>>340
スタティックコントロールならSTM_SETICONですぜダンナ
すみません、オーナーウインドウの外にでられないウインドウって
どうやってつくるのですか?
>>344 WS_CHILDぉぉぉぉぉぉぉぉぉぉぉ
ダイアログボックスなどのプロパティで「チャイルド」と指定すると
見えなくなるのですがどうすればよいのですか?
347デフォルトの名無しさん:03/04/04 21:39
あの〜スミマセン!!  
MassageBoxの出し方教えて下さい。  
ガッコウの兄貴に指示されました。
コニチワ、マッサージボックスで出せなさいと。
どうすればいい?
>>347
まったく意味がわからん。
>>347
マルチかよ
すみません。初心者です。
Win32APIで、一定時間ごとに、画面をキャプチャするなんていうアプリを作れるのでしょうか?
351デフォルトの名無しさん:03/04/04 22:03
>>350

>一定時間ごとに
SetTimer

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

これらをググっても意味わからんときは猫(>>1にリンクあり)へ逝くかPetzold本買え
352デフォルトの名無しさん:03/04/04 22:05
あ、待て待て
おぬし童・・・いやCくらい知ってるか?
>>350
またマルチかよ
354デフォルトの名無しさん:03/04/04 22:47
起動回数制限ってどうやってやるんですか?
>>354
起動した回数数えて、10を越えたらすぐ終了するようにする。
>>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するとか
スタティックコントロール(スタイルはSS_BITMAP)の
幅と高さがSTM_SETIMAGEで設定したイメージの
幅と高さ(GetWindowRectにて取得)に一致しないのは
仕様でしょうか?
360デフォルトの名無しさん:03/04/05 05:17
プラットフォームSDKダウンロード・インストールしてヘルプ読もうとしたら見れません。
いきなりつまずきました。ぐぐってみると、HTML HELP 2.0 なる物が必要とか?
MSDN や VS.NET についてる?らしいですが、そんなものもってません。
SDKのヘルプみるのに、SDK以外が必要なんでしょうか?
361360:03/04/05 05:26
インストールしたのはコアSDKで、OSはWindows98MEです。
入力された文字(キーコード)を、プロシージャ以外で知る方法ってありますか?
GetKeyboardState()などは指定したキーが押されているかどうかを判別するだけのようなのですが、
押されたキーコード自体が知りたいんです。
C言語でいうgetch()みたいな都合の良いものは用意されてないのでしょうか?
>>357
WS_CLIPCHILDREN
>>362
KEYBOARDフックで別のプロシージャは駄目か?
>>358
ValidateRect?
366デフォルトの名無しさん:03/04/05 08:03
>>365
InvalidateRect
無効化して再描画させる。
>>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で取れんようなら
オーナーじゃないって可能性も疑ったほうがよかろう
370357:03/04/05 11:36
>>358>>363>>367
うまくいきました。ありがとうございます。
WS_CLIPCHILDRENなんて属性があったんですね。
てっきり、何もなしでもデフォルトで子ウィンドウの
領域は避けてくれるものだと思いこんでいました。
371デフォルトの名無しさん:03/04/05 11:38
ハイパーリンクを使用できる関数ってないですか?
リンク先をを文字列で渡したら
そのWEBページをブラウザで開くというやつ。
IE以外のブラウザ使ってる人もいるだろし・・・
>>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);
}

みたいな事してるんですが、これだと、余計な物までチェック
しなきゃなんないし、オーナーかどうかもわからない。
374321:03/04/05 12:12
>>372
ShellExecuteでうまくいきました

あと文字列を表示する時に
アンダーラインを付けたい時は
どうすればいいですか
375デフォルトの名無しさん:03/04/05 12:16
>>374
LogFont
>>368
実行時に判別するのは困難と思う。クラス名Afxは必須じゃないし。
377368:03/04/05 13:28
ガーン!オーナーを確定することは出来ないんですか。。。
>クラス名Afxは必須じゃない
MFCアプリは複雑ですね。
IsWindowVisibleフィルタリングで何とかしてみます。
ありがとうございました。
378376: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返してきて画面がでないのですがなぜでしょう?
いきなりつまづいてる私、鬱。
>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[]です。
RegisterClassしてないに一票。
RegisterClassしてないとか
「一手」遅かったヨー(;´Д`)
>>383-385
つーか、RegisterClass してないなんて、どこのサンプルよ。
>>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 にするべきか。
似たような変数でダブったりする確率が低い方にしたいと思っています。
経験豊富で少し黒い方、アドバイスをお願いします。
黒いって何?

迷うようなら、それそのものを現すズバリの名前にしたほうが
後から読むのに楽かもよ。
 RECT gazou_hyouji_ryouiki
とか。
392悪魔くん:03/04/06 00:55
画像とは限らないじゃん。
おぬしはまだピンク色。
経験豊富な黒い方、ヘルプミー。
石炭より黒い俺は xxx_rect とそのまま書いている
394悪魔くん:03/04/06 01:04
RECTの4文字は省略しない方がよいのかな?
猫に従ってUINTをmsgにしていて初めてMSG構造体に出会った時、精通した。
395デフォルトの名無しさん:03/04/06 01:18
UINT uMsg;
縦スクロールバーの挙動を確かめるために、
ウィンドウに、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万回の実行時間などで実測してみることをすすめる

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

何が言いたいかって? やってみればわかる
>396
> これって内部では1000段もの文字列をオフスクリーンバッファみたいな領域に
> まとまった画像データとして持っているってことですよね?
たかだか1000段程度なら毎回ふつーに再描画してるんでないの?
実際に描画が必要な領域はせいぜいスクリーンサイズ程度だし。
というか、そもそも
> ウィンドウに、TextOutでとりあえず1000段くらい適当な文字列を書いてテストしてみたんです。
このプログラムを書いたは君自身でないの?
ScrollWindow() だったか、表示されてる部分のイメージだけスクロール
させる API なかったっけか。
ScrollWindow, ScrollWindowEx, ScrollDC
正直 >>396 の言ってる意味がよくわからん。
たぶん、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じゃないんでしょうか?

>>400
画面をスクロールさせて新しく出てきた部分を無効領域に
する関数でしたね。
406!290:03/04/06 16:58
>>404
>SDKのみでこれをやるには...
って書かれているのが目に入らぬか!
APIだけ呼んでるつもりでもフックでMFCのランタイムが呼ばれてるの
>>406-407
おー ほんとだ。
MFCってこんなところまで変更しちゃうのか。
ちなみにどうやって変更してるの?
409デフォルトの名無しさん:03/04/06 19:06
>>403
VCLのTApplicationハンドルはTFormのハンドルとは別です。
神にあなたの生き方の HANDLE をゆだねなさい
>>408
フックで、って書いてるやん
SetWindowsHookExと検索キーワードまで書かないと通じませんか?
>>411
SetWindowsHookEx() で API フックができるとは初耳だが・・・。
WM_CREATEとかフックすれば済む話
つーかそこまでいちいち説明しなくても分かれよ
>>380
遅レスだけども

メッセージハンドラ中のWM_CREATEの戻り値をちゃんとしないと
NULLでエラーになることがあるよ。MSDN参照
>>412
坊や、別プロセスのAPIフックをするときはSetWindowsHookEx()を使うんだよ。
WTLのコンテナ使ってる時にでてくる、
MFCのクソ紛らわしいメンバ関数ガイドを撲滅せよ(#゚Д゚)=3 ムキー
その前に MFC を撲滅しようぜ。
419デフォルトの名無しさん:03/04/07 01:21
Win2000とWin98で、同じパスから PathToRegionでリージョンを作成すると、どう
も結果が違う(作成したリージョンに対して GetRgnBoxをしてみると、結果が1ピ
クセル違う)んですけど、考えられる原因は何でしょうか?

これって、VGAドライバ依存だったりするんでしょうか?
>>416
だれもAPIフックの話などしていない。
つーかAPIフックのやり方教えて。
422419:03/04/07 01:52
マッピングモード...っていうヤシかな?
>>421
日本語で最小限のコードない?
漏れは420じゃないが、サンクスコ>>421
ライン引くプログラムで

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_ *型に変換できない」と怒るのですが
どうにかなだめる手はないですか?
#define NOSTRICT
#include <windows.h>
hOldPen = static_cast<HPEN>(SelectObject(hdc, hPen));
static_cast->reinterpret_cast?
429425:03/04/07 03:24
>>426,427,428
月曜の朝に速レスどもです。
助かりました。
>>421
英語の世界は裾野が広くていいなぁ・・・

最近、APIを勉強し始めて、ああ、これがプログラミングなんだなと思い始めたわけですが、
自分の使いたいAPIの存在知るのが大変ですね
他のプロセスに属する、あるウインドウに、
特定のメッセージが渡らないようにするには
どうすればいいのでしょうか?
OSはWindows2000Sp3です。
>>416
MFCが使ってる方法ではないけどな
>>423
kageのソースとか。
434デフォルトの名無しさん:03/04/07 07:03
取得したハンドルからファイルパスって取得できますか?
何のハンドルだよ
436デフォルトの名無しさん:03/04/07 07:21
漏れは自分自身(実行されている.exe又は.dll)のフルパスを知る方法を知りたい。
それと、プロセスのハンドルやdllのハンドルからフルパスを知る方法も知りたい。
自分自身→GetModuleFileName(NULL, ...)
プロセスのハンドル→GetModuleFileNameExかToolhelp32
dllのハンドル→VirtualQuery + GetModuleFileName
438436: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
書いてる通りに実行したらできる
>>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)とすると参考書に書かれているのですが
前者の場合では、何が間違っているのでしょうか?
宜しくお願いします。
444442:03/04/07 14:09
ctrlが押されていてもCaps Lockが入ってればGetKeyState(VK_CONTROL)の値が
負になるということですか?
445442:03/04/07 14:46
最上位と最下位を読み違えてました・・
有難うございました。
いくつかのエディットコントロールが乗っているダイアログがって
そのダイアログに対してLineToなどで線を引いたりしています。
エディットコントロールに入力されるとLinToなどで引いた線を再描画したくて
InvalidateRect(hDlg, NULL, TRUE);
SendMessage(hDlg, WM_PAINT, 0, 0);
でダイアログを再描画しています。
これでも再描画できますが、ダイアログ全体を再描画してしまうので
ちたついてしまいます。
コントロールは再描画しないでLineToなどで書いた図だけを再描画するには
どうしたらよいでしょうか?
>>446
InvalidateRgnとかでコントロール以外の領域を再描画させる。
InvalidRectでLineToとかを描画する領域だけを再描画させる。
>SendMessage(hDlg, WM_PAINT, 0, 0);
これって要るのか?
>>447
うぁ。大変そうだ。

>>448
エディットコントロールの入力内容が変更されたら即再描画したいのれす。
普通は UpdateWindow 使う罠
451コーイチ:03/04/07 16:29
ポップアップメニュー上で
ツールチップを表示させたいのですがやり方ってわかります?
#スタートメニューで各アイテムを選択したときに出るような感じのを
#タスクトレイ常駐アプリで作りたいのですが。
Pen使って(三角形の)カーソル描いてるんだけど、このカーソル動かすには
ひとつ前のカーソル消して、新しい位置にカーソル表示みたいなN88Basicぽい処理しなきゃいけないのですか?

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

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

>ひとつ前のカーソル消して、新しい位置にカーソル表示みたいな
InvalidateRect()で前のカーソルの領域と新しいカーソルの領域を
無効にして、WM_PAINTの時に新しいカーソル(というかカーソルの
現在位置)だけ書くようにすればよいはず
>>453
どうも有難うございます!
455デフォルトの名無しさん:03/04/07 18:48
>>431
自分が何をしたいかを考えれば、たいていの場合、
Get〜〜かSet〜〜になるだろう!
>>455
> >>431
> 自分が何をしたいかを考えれば、たいていの場合、
> Get〜〜かSet〜〜になるだろう!

Create〜 とかもそれなりにあるし、Enum〜 も気付きにくかったりするね。
Path〜が便利
UpdateLayeredWindow使って半透明描画処理したいんですが、
アルファ値を持ったデバイスコンテキストを作るってどうやるんですかね?
459デフォルトの名無しさん:03/04/07 23:43
sageてどうする漏れ
最大化しているwindowの
通常時(元のサイズ)のRECTを取得するには
どの関数ですか?
GetWindowPlacement
なぜかフォアグラウンドが効きません。なぜでしょうか?
MessageBox(NULL, "TEST", "TEST", MB_SYSTEMMODAL|MB_SETFOREGROUND|MB_OK);
>>462
親がいないから?
>>458
32ビットDIBをCreateDIBSectionで作ってDCに選択
>>463
そうなんですか?
やってみまつ。
>>463
すみません。よく考えるとウィンドウを持たないアプリケーションでした。
>>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アプリケーションでおすすめな参考書とかあります?どなたか教えて!
>>470
書店へ。
472470:03/04/08 21:19
>>471
こっちは田舎だからいい本がないからどうしてもネットで買いたいです
いい本教えて下さい
473デフォルトの名無しさん:03/04/08 21:36
>>472
田舎のせいにするな。
474470:03/04/08 21:39
>>473
書店行ってもいい本はわからないよ
本がないんだから
ネットでも十分勉強できるぞ。Win32なら「猫でも分かる〜」
あたりがいいんじゃないか?
>470 バイブル
>>469
「任意の圧縮形式のフレームデータ」とは、具体的にどんなんだ?
動画か?それなら、codecが入っていれば展開できるし
入ってなければDirectDrawだろうが、なんだろうができない。
静止画か?それは、自分でその展開用のライブラリを使って
展開するしかないだろう。静止画の圧縮・展開はOS(API)は
ノーサポートだからね。(jpegやgifみたいな一部例外もあるが)
>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
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
>>484
ShellExecuteはWM_DDE_INITIATEをブロードキャストするので
応答しないウィンドウがあると黙り込みます。
2chブラウザでリンクをクリックしてもしばらく反応がないという
現象の原因もたいていがこれ。
>>485
レスありがとうございます。助かりました。

>WM_DDE_INITIATEをブロードキャスト
そうでしたか〜
スレッド分けてタイムアウトを監視するしかなさそうですね。
エクスプローラのファイル検索ダイアログを独自の機能で置き換えることはできますか?
もしできるとしたら、どういった技術について調べればよいのでそうか。よろしくお願いします。
>>487
サブクラス化あたりかなぁ・・・
エクスプローラのコンテキストメニューに追加したらいいだけちゃうんかと
>>481
VCM系API?ああ、VideoForWindowsのVideoCompressionManagerの事か。
自分でICInstall等を使って展開関数を登録する事は自分でcodecを
作って登録するのと一緒だから、かなり大変だと思うよ。

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

codecを自作しました。
huffyuvというフリーのコーデックがソース付きで参考になりました。
いろいろなフォーマットも
http://www.fourcc.org/indexyuv.htm
で調べることができました。自作される方はどうぞ
PCのメモリの容量や
new, mallocなどで得られるメモリの残量を知る関数を教えて下さい
>>492
GlobalMemoryStatusのこととおもうけどnew, mallocはわからない。
494492:03/04/10 19:42
>>493
サンクス!
495492:03/04/10 21:04
実際にGlobalMemoryStatus使ってみましたが
残りメモリ(dwAvailPhysの値)が0MBになってるにもかかわらず
そうなっていてもメモリを1M2Mと普通に確保できる・・・なぜ・・・?

仮想メモリ……
497492:03/04/11 01:17
>>496
あ、やっぱり・・・

でもそれじゃ困るんだよなぁ・・・(w
498デフォルトの名無しさん:03/04/11 03:20
WM_ACTIVEってメッセージはどこに定義されているのでしょうか。
grepしても見つからないということは、なにか盲点が・・・。
WM_ACTIVATE?
WA_ACTIVE?
>>498
適当な場所(cpp.h内)に
#define WM_ACTIVE 12342124
みたいに定義すれば警告メッセージがでると思う
そのメッセージ項目をクリックすればその定義されてるファイルが開かれる
501500:03/04/11 05:01
WM_ACTIVEはないぞゴルァ!!
ちょうどVC起動してたんでやってみた

winuser.h 1298行目
#define WM_ACTIVATE 0x0006
VCのF12キー(定義部分へジャンプ)ってみんな使わないのね……
>501
一応確認している誠実さにワロテしまいました。
>>502
ブラウザ情報ファイル作るの結構処理重いしなぁ…。
505500:03/04/11 19:58
>>502
あ、そんなのあったんだ
サンクス!
WNDCLASS の hbrBackground は、
RegisterClassEx() して CreateWindow() した後に
変更ができないのでしょうか?

SetWindowLong()には、それらしい方法がない
ようだったのですが
SetClassLong
508506:03/04/12 16:18
>>507
おぉ、ありがとうございます

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

たしか、RegisterClassEx()すると、渡したブラシを
削除する仕事はWindowsがすることになっていたと
思うのですが…
(管理権がプログラマの手から離れたと思う)
リッチエディットコントロールで
特定の文字、行だけの背景色を変えたいんですけど、
方法教えてください。
510509:03/04/13 03:10
解決しました
511511(1):03/04/13 05:54
UpdateWindow()関数って何するものなんですか?

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

そこで、その本に載ってるスケルトンプログラムを改変し、メッセージループや
ウィンドウ関数などに送られてきたメッセージをファイル(MES.LOG)に記録する
ようにしました。
512511(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
513511(3):03/04/13 05:59
実行方法:
 ・余計なメッセージが送られてこないように、マウスカーソルが該当ウィンドウ
  の中に入らないようにする
 ・実行後 Alt(Grph) + F4 を押して終了
514511(4):03/04/13 06:00
というわけで、よろしくお願いします
515デフォルトの名無しさん:03/04/13 06:19
516デフォルトの名無しさん:03/04/13 06:20
>>511
MSDN読めよ...
DispatchMessageってプロシージャが処理されるまで同期(待機)するのだっけ?
>>517
重い処理してるときウインドウの移動とかが不可能になるのなら待ってる気がする。
519511: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だけではダメということでしょうか?
>>519
>UpdateWindow
>ウィンドウの更新領域が空でない場合、ウィンドウにWM_PAINT メッセージを送って、
>そのクライアント領域を更新します。この関数は、アプリケーションキューを介さずに、
>指定されたウィンドウのウィンドウプロシージャに直接 WM_PAINT メッセージを送ります。
>更新領域が空のときには、メッセージは送りません。

521517:03/04/13 07:04
>>518  
うん、長い処理のとき反応しなくなる。
その関数はウィンドウプロシージャの戻り値が帰ってくるとだけ書いてあったので
実際はどうなのかと思ってしまった・・・  Thx
>>520
どうもです。アプリケーションキューを「介さずに」というところが重要なわけで
すか。

UpdateWindow()がなくてもたいてい問題ないがCPUが忙しいときとかに問題が発生
する、と。そんなところですかね?
Bitmapをとりこんで画像を回転させたいのですが
なにか命令はありましたか?
525524:03/04/13 13:17
//ビットマップの作成
やっぱ自分でビットマップ回転をビットでしなあかんのけ?
CDC tempDC;
CBitmap bmp;
tempDC.CreateCompatibleDC(NULL);
bmp.LoadBitmap(IDB_BITMAP1);
tempDC.SelectObject(&bmp);
MFC使ってるからほかのとこで質問します
失礼
APIあったけど名前忘れた
>524-526
SetWorldTransform
ただしNT系のみ

CodeGuruとかで探した方がいいかも
528524: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)は
ログオンパスワードを設定していなくても休止状態から復帰できているので、
タスクスケジューラを用いずに済む方法があるのではないかと思っているのですが…
>>524
GDI+を使う手もあるね。
すみません質問なのですが、
ダイアログボックスを
子ウィンドウのように
親ウインドウの外に出られないようにするには
どうすればよいのでしょうか。
リストコントロールでグリッドを表示しつつ背景色変えたいのですが、
アイテムが無い背景部のグリッドが見苦しい。
背景部はグリッドを引かないようにする良い方法無いですか?
>>532
オーナードロー
>>531
…子ウィンドウの意味わかってる?
ダイアログボックスを閉じ込めたい用途って、一体何なのか激しく気になるます。
>>531
リソースを使用せずにダイアログ作れば良い。
>>529
Waitable Timerかな?
>>531
キャプションの無いダイアログに設定する。
ダイアログ起動と同時に親ウィンドウのど真ん中に移動させる。
これでOK。感謝汁!
というか普通にWS_CHILD | DS_CONTROL
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 を感知してないような…
>>540
自分も勘違いしていたが、その通りらしい。
p1 が(この場合はマッピングと言う呼び方が適切か)ロードした時には例の参照カウンタをインクリメントするだけ。
以上、Advanced Windows より。
542540:03/04/14 20:07
>>541
やっぱりですか…

認識を改めて、もう一度、ヘルプを読むことにします。
意味を確かめるよう、気を付けながら…
543540:03/04/14 20:25
>>541
ところで、この「Advanced Windows」という本は良書ですか?

今検索して紹介文を読んだら、少し煽られたのですが
544デフォルトの名無しさん:03/04/14 20:28
メニューを表示すると、ブロックしてしまってザ・ワールドになるんですが、
これを回避する方法は無いですか?
>>543
禿げしく良書
フォルダのツリービュー(エクスプローラの左側にあるやつ)を作成する方法(もしくはキーワード等)を教えて下さい。
547:03/04/14 22:17
>546
FindFirstFile?
>>546
>>546
TVINSERTSTRUCT SysTreeView32
質問。
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ってありますか?
>>550
提示された情報が全く持って役に立たないわけだが……
STLのstring使ってるならインクルードする。
場合によってはusing namespace std;を忘れないように。

>>551
ない
>>550
そのソースファイルの拡張子を .c から .cpp に変える。
もしくは extern "C" ... を extern ... に書き直す。

>>551
フックかな。
554546:03/04/15 00:08
>>547-549
レスどうもです。
TreeViewを作成してフォルダを順次登録していくしかないみたいですね。
いちおうMFCスレでも聞いてみます。
555550:03/04/15 00:57
552&553レスありがとう。
結局553のほうでした。
知らなかったとはいえ、何かすっごい情けないです。(汗

とにかく多謝!
>>543
ちと古過ぎないか?
557540:03/04/15 06:15
> >>543
> ちと古過ぎないか?

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

「Adv...」の紹介文では、Windows2000がでたころに
改訂版がでたようでした。
>>556
俺の持ってる「Ad......」には、64bitについても説明があるよん
559デフォルトの名無しさん:03/04/16 19:13

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

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

#昨日、すれ立てるまでもないで投稿したのですが、
#今日、こちらを見つけまして投稿しました。
>>560
単に、効率よく処理してるだけじゃないのか?

Windows Media Video/Audio・・・が特別な高速な処理を行っているという
記述をどこかで見かけたので質問しに来たのなら、その文献を詳しく調べて
見るのが答えへの近道だと思うが。
>>560
領域予約
563デフォルトの名無しさん:03/04/16 23:25
>561, 562

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

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

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

拡張などしていない、ポインタでファイル末尾に追加したなどの、
間違いかもしれません。
または、ファイルシステムが自動的に再利用?
あり得ないですね。。。
一部タグはファイル末尾に記録されるよん。>>560
565デフォルトの名無しさん:03/04/17 00:53
>564

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

やっぱりそういうことで裏技はないんですね。
ありがとうございました。
566デフォルトの名無しさん:03/04/17 00:57
Platform SDKのダウンロードページが見つからない。
変なオンライン・インストール・プログラムはあったんですけど。
これ使わないとダメ?
568566:03/04/17 01:10
>>567
ありがとうございます。
以前見つけたときはダイアルアップ環境だったのであきらめていたんです。
569デフォルトの名無しさん:03/04/17 12:52
Internet Explorer のバージョンを調べたいのですが、
レジストリの HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer の Version
を見る以外に方法はないのでしょうか?
>>569
DLLのバージョンを調べて見るとか。
IEXPLORE.EXE のバージョンを調べるとか
572山崎渉:03/04/17 15:10
(^^)
573デフォルトの名無しさん:03/04/17 16:13
山崎age
574569:03/04/17 19:09
>>570-571

ありがとうございます。
DLLは shdoc*.dll ですよね?
ただ9x系とNT系で格納場所が変わっててやっかいそうなので、
IEXPLORE.EXEを調べる方法でうまくいきました。
iexplore.exeの場所なんてもっとまちまちだと思うが…
インストール時に選べるんだし
IE6SP1だがiexplore.exeのバージョンが4.72.3110.0…
>>576
んなアホな。おれんとこは、6.0.2800.1106 だよ。
IE の ヘルプ(H)-バージョン情報(A) は、どう表示される ?
>>576
explore.exe見てんじゃねーよ。
iexplore.exeの本体は別のところにあるから、
iexplore.exeだけヴァージョンが違ってても、どうってことなさそうだな。
580576:03/04/18 00:07
バージョン情報は普通に6.0.2800.1106
素性不明のファイルがあるのは怖いなぁ
レジストリでいいじゃん。なんでダメなのよ。
>>580
C:\ を iexplore.exe で検索してみ。
583576afo:03/04/18 00:29
>>582
サンクス
ただのIE4の残骸でした
とりあえず安心しましたが、かわりに自分の知性に対する不安がさらに増大しました
584デフォルトの名無しさん:03/04/18 12:59
GetLastError()でエラーコードは取得できるんですけど
エラーメッセージは取得できないのでしょうか?
そのためにFormatMessageという関数がある
>>585
それが返ってこないんです。エラーコードは12007なんですけど。
>>586
Visual Studioに Error Lookupと言うツールがあるんだが・・・12007はエラーメッセージが定義されてないっぽ

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


>586-587
WinInet系のエラーだよ。

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

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

あとですね。
C:\Documents and Settings\Administrator\NetHood
ディレクトリにあるフォルダにFtpGetFileでファイルをダウンロードできないんです。
せめてエラーになってくれればよいのですけど。
>589
エラーコードがMSDNに載ってる。(エラーメッセージを取得した訳ではない)
12007で検索汁。
>>590
ありました。これはプログラムで取得することはできないということですね。
まあ、しょうがないです。はい。
WinMainの引数のlpCmdLineの内容をコンソールアプリのように
コマンドライン引数を分割するAPIありますか?
CommandLineToArgvW
>>593
あるとおもわなかった。さんくす
Wなのが気にくわんよなそれ
使いにくそうなのでやめました。
RECTを与えて、その領域から(横が)はみ出ないようにテキストを描画したいんですけど、
DrawTextで DT_WORDBREAK を使うと、

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

で、これはいいんですが、AisHogehoge(単語間のスペースが無い場合)
だと
  | AisHogehog|e
  |        |
こうなってしまいます。
  | AisHogeho |
  | ge      |
このように描画することはできるのでしょうか?
598デフォルトの名無しさん:03/04/18 18:26
特定のアプリケーションがインストールされていたり、インストールされたら何か反応するプログラムを作りたいのですけど
とりあえずどうすればいいでしょうか?
>>598
レジストリ見ればいいんでないのー
>>591
できるよ
FORMAT_FROM_HMODULE
12007, "サーバー名またはアドレスは解決されませんでした"
>>597
おまえヤル気あるのか?パラメータ位、幾らでも試せるだろう!
DT_WORDBREAK | DT_????
DT_???? はテメーで考えろ!
レジストリ使わない場合もあるしな・・・
ファイル名が固定なら全ディレクトリを検索するとか。
ファイル名が不定だとインストール前の全実行ファイル名と
インストール後の全実行ファイル名を比較するとか。
ああ、別の実行ファイルに寄生するファイルだとダメか・・・
てことはCRCなりMD5なりでチェックが必要だな。
603598:03/04/18 21:41
くわしくヨロ
604597:03/04/18 22:01
>>601
もうね、描画したい場所にエディットコントロール貼りつけて(w それら
しく描画するという力技で実装した矢先、>601を読んで DT_EDITCONTROLに
気づいた次第。
606601:03/04/18 23:01
>604
笑える。でもいいじゃないか。手段はともかく実現するってのは大切だからな。
>>584
winerror.hを見ろ
608デフォルトの名無しさん:03/04/19 08:38
>>584
FormatMessage
609デフォルトの名無しさん:03/04/19 08:58
WaitForSingleObjectのタイムアウト時間は、どの程度の精度が
あるんですか?timeGetTimeくらい?

>>609
通常の3倍
>>609
> WaitForSingleObjectのタイムアウト時間は、どの程度の精度が
> あるんですか?timeGetTimeくらい?

WaitForSingleObject() なんかのタイムアウト時間は、最低保証値だよ。
timeGetTime なんかと比べるもんじゃない。
612609:03/04/19 09:34
>>610-611
ありがとう。助かりました。
>>607
>>590-591で既出
>>608
>>585-586で既出
お前らあほ?
>>613
winerror.hは出ていませんが。
お前、うんこ?
615598:03/04/19 13:26
だれか漏れの質問に答えてくれ
wininet.dllのエラーメッセージはリソースタイプ11のリソース1に入っているが
APIで取得する方法は不明
>>616
>>600で既(略
Win32APIそのものの質問ではないんですけど、WinNT系を
セーフモードで再起動させる方法ってありますか?
Win9x系なら、MSDOS.SYSを編集した後にExitWindowsExを
使って再起動すればOKっぽいんですけど。。。
>>617
wininet.dllは出ていませんが。
お前、うんこ?
>>600
FORMAT_MESSAGE_FROM_HMODULE ぢゃない?
>>598
ReadDirectoryChangesWかFindFirstChangeNotificationでも使って
ディスクを監視しとけば?
>>614
いやお前がうんこ
> これはプログラムで取得することはできないということですね。
の解決になってないことに変わりはない
>>619
>>588で(ry
↓「.dll」が出ていないと強引にうんこ呼ばわり
623608: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
はっきり言ってやる
回答する前に過去ログくらい調べてこい

間抜けを指摘されて逆ギレするなんて
かっこいい人が世の中にはいるもんだなあ・・・
つい最近の既出に気づかないのは確かに間抜けだな
627デフォルトの名無しさん:03/04/19 18:27
俺は、よしゆきの味方だぜ。
628デフォルトの名無しさん:03/04/19 18:36
>>625
もう一度言う
誰のためにそんな手間かけんだよ? え?
そのために日当でも出すんか?
聞いた風なセリフしか使えんようだが
通じる筋合いかどうかよく見て言えや
てめえみたいのを本当の間抜けって言うんだよ
629動画直リン:03/04/19 18:38
そんなに手間を掛けるのが嫌なら答えるなよ大間抜け
過去ログも何も質問のすぐ次のレスだろ
どういう読み方をすれば見逃すんだよ。
手間うんぬん以前の問題だ大馬鹿
つい最近の既出に気づかないのは確かに大馬鹿だな
え〜と、お取り込み中申し訳ないのですが、
標準のBUTTONはTextOutを使って文字を描画して
いるのですか?それともDrawTextでしょうか?
教えてください。
DWORD nFileSizeHigh,nFileSizeLow でファイルサイズを計算するときって

nFileSizeHigh * (MAXDWORD+1) + nFileSizeLow
だよね?

nFileSizeHigh * MAXDWORD + nFileSizeLow
とかって書いてるWebページが結構あるのだが...大丈夫かなぁ
>>633
MSに尋ねてくだちい
636デフォルトの名無しさん:03/04/20 01:39
>>630
もう一度言う
通じる筋合いかどうかよく見てほざくんだな
答えるか答えないかを、おまえの許しで判断してるボケがどこにいる?
まるで駅前の不特定多数を叱りつけている危ないオヤジだな

筋合いを判断するオツムがなけりゃずっとそうやってろ
許し云々じゃなくて間抜けだなって話だろ。
                     |\
┌──────────┘- \
│  気の触れた方が          \
│                     /
└──────────┐- /
      ヽ(´ー`).ノ       |/
        (  へ)
        く
                  - = ≡三                    |\
               - = ≡三  ┌──────────┘- \
               _ = ≡三    │                     \
                ̄ = ≡三    │ 一人いらっしゃいます       /
               - = ≡三  └──────────┐- /
        (´ー`)        - = ≡三                     |/
      ( ヽ ヽ)
       /  >
639デフォルトの名無しさん:03/04/20 01:58
>>637
勝手にそう思ってりゃいいんだよ
既出がどうのと一席ぶちながら
スレ違いの無駄口たたきおって
>>639
つーかそんな無駄口でいちいちageんなタコ
641デフォルトの名無しさん:03/04/20 02:04
スレのS/N比から個人批判にトーンダウンか?
一貫してマヌケでage厨だという認識で全員一致しています。
643デフォルトの名無しさん:03/04/20 02:08
一人芝居のな
(´-`)。oO( sage方知らないんじゃ… )
645bloom:03/04/20 02:08
あの程度でキレたり駄レスでageたり相手が一人だと思い込んだり


    2 c h に 向 い て な い よ  

647デフォルトの名無しさん:03/04/20 02:11
sageるかどうかの選択権も自分だけ特別だと思てけつかるなこのガキ
あーあ、こいつマジで初心者だ。
文句たれる相手間違ってんじゃねえよ
ヒロユキが怖いか坊主?
何故ここでヒロユキが出てくるんだろう。2chのルールだとでも思ってるのだろうか。
純粋な質問が埋もれるのでデフォルトsage進行なのはム板の常識ですが何か。

つーか意地でもsageられなくなってるおまえがガキ。
651デフォルトの名無しさん:03/04/20 02:20
そんなに気に入らねんなら削除依頼でもしてきたらどうだ?
やり方知らねってか? 初心者じゃあんめえし
操作方法より削除屋が動かせねえってんなら道理だな
その話し方じゃ
652デフォルトの名無しさん:03/04/20 02:23
>純粋な質問が埋もれるのでデフォルトsage進行

プ
何故ここで削除依頼が出てくるんだろう。このスレが問題などと一言も言っていないのに。
ただ マ ヌ ケ だなと思ってるだけだよ。
654デフォルトの名無しさん:03/04/20 02:23
気に入らねんだろ? え?
意地でもsageられなくなった哀れな>>654がいるスレはここですか?
656デフォルトの名無しさん:03/04/20 02:26
コンテキストメニューをWinZipみたいにオーナードローするにはどうやったらいいすか?
657デフォルトの名無しさん:03/04/20 02:26
お前の脳内で何が起きてるかに誰が興味持ってんだよ?
お前のお好みのために誰が過去ログ調査すんだよ?
>>656
ShellExtension
何かあちこちのスレで煽ってるけど、食中りでも起こしたの?
660デフォルトの名無しさん:03/04/20 02:27
他のプロセスのデフォルトヒープ領域の開始位置とサイズ、
拡張ヒープ領域の開始位置とサイズをすべて取得するのはどうやるの
自分の取得方法なら分厚いAPIマニアルに書いてあるけど相手のを
取る方法はどこにもない
>>657
誰も君が悪いことをしてるなんて言ってないよ。

ただ間抜けだなと言ってるだけで(ププ
662デフォルトの名無しさん:03/04/20 02:29
age/sageのアルゴリズムさえまともに考えられない低脳こそ
このスレでは一番の非常識だぜ?
>>662
スレ違い
放置したら?
↓ここから元のWin32API質問箱に戻ります。
666デフォルトの名無しさん:03/04/20 02:32
>>661
ここはお前の日記帳じゃねえ
何が過去ログだ
それ以前の節操ができてないくせに
>>664 今は放置するときではない。徹底的に叩き殺すのだ。
>>667
うっせー。氏ねよ。
669デフォルトの名無しさん:03/04/20 02:35
>>667
くやしいもんなあ(藁
しっかしこのスレでこんな厨房見たの久しぶりだよ。
とうとうジエンまで始めました。
祭?ねぇこれ祭なの?
わかりやすいから>>666って名づけることにしました。
>>669
うざいから裏2ちゃんねる逝ってくれ
675デフォルトの名無しさん:03/04/20 02:41
>>653
こいつスレ削除とレス削除があるの知らないなw
痛々しくなってきた
677デフォルトの名無しさん:03/04/20 02:44
>>671, >>676
オマエガナー
レスした奴はみんな馬鹿です。
まぁ未だに相手は一人しかいないと思ってる>>677だが
  |        /\ |  /|/|/|  ドッドッドッドッドッド!!
  |      /  / |// / /|
  |   /  / |_|/|/|/|/|     (´⌒(´⌒`)⌒`)
  |  /  /  |文|/ // /  (´⌒(´祭だ!!祭だ!!`)⌒`)
  |/  /.  _.| ̄|/|/|/    (´⌒(´∧ ∧⌒`)`)`)⌒`)
/|\/  / /  |/ /     (´⌒(´(,゚Д゚ )つ `)`)
/|    / /  /ヽ  (´⌒(´⌒  (´⌒( つ |〕 /⌒`)⌒`)
  |   | ̄|  | |ヽ/|  遅れるな!!   ( |  (⌒)`)⌒`)
  |   |  |/| |__|/.   ∧_∧ ⌒`).ドし'⌒^ミ `)⌒`)ォ
  |   |/|  |/  (´⌒(´( ´∀` )つ  ド  ∧_∧⌒`)
  |   |  |/    (´⌒(´( つ/] /    ォと( ・∀・ ) 突撃――!!
  |   |/        ( |  (⌒)`)  ォ ヽ[|⊂[] )`)
  |  /         (´ ´し'⌒^ミ `)`)ォ (⌒)  |   
681デフォルトの名無しさん:03/04/20 02:46
>>679
まあ、ある特徴で判断しているわけだが(藁
あー、いっとくけどレスしてんの俺じゃねーよ。
荒らしたい奴が書き込んでるだけ。
俺はもう反省したから、放置した方がいいと思う。
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
  |        /\ |  /|/|/|  ドッドッドッドッドッド!!
  |      /  / |// / /|
  |   /  / |_|/|/|/|/|     (゚∀(゚∀゚)∀゚)
  |  /  /  |文|/ // /  (゚∀(゚祭だ!!祭だ!!゚)∀゚)
  |/  /.  _.| ̄|/|/|/    (゚∀(゚∧ ∧∀゚)゚)゚)∀゚)
/|\/  / /  |/ /     (゚∀(゚(,゚Д゚ )つ ゚)゚)
/|    / /  /ヽ  (゚∀(゚∀  (゚ つ |〕 /∀゚)∀゚)
  |   | ̄|  | |ヽ/|  遅れるな!!   ( |  (∀)゚)∀゚)
  |   |  |/| |__|/.   ∧_∧ ∀゚).ドし'∀^ミ ゚)∀゚)ォ
  |   |/|  |/  (゚∀(゚( ゚∀゚ )つ  ド  ∧_∧∀゚)
  |   |  |/    (゚∀(゚( つ/] /    ォと( ・∀・ ) 突撃――!!
  |   |/        ( |  (∀)゚)  ォ ヽ[|⊂[] )゚)
  |  /         (゚ ゚し'∀^ミ ゚)゚)ォ (∀)  |   

何?祭り???
  |         |  |
  |         |  |_____
  |         |  | ̄ ̄ ̄ /|
  |         |  |   / /|
  |        /\ |  /|/|/|
  |      /  / |// / /|
  |   /  / |_|/|/|/|/|
  |  /  /  |文|/ // /     ∧∧
  |/  /.  _.| ̄|/|/|/      /⌒ヽ)
/|\/  / /  |/ /       [ 祭 _]    ∧∧
/|    / /  /ヽ         三____|∪   /⌒ヽ)
  |   | ̄|  | |ヽ/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 );
>>695
どっか別のDCに字を書いてから、半透明に混ぜる。
697 ◆b0UXJ88Ngw :03/04/21 18:07
すいません。
私も、>694さんと、類似のことを行いたいのですが、
SetupDi関数を使用すればよろしいのでしょうか?
参考文献が英語のページしかみつからなくて、何がなにやら (TT

ご存知の方いらっしゃいましたら、ご教授お願いします。
698デフォルトの名無しさん:03/04/22 00:05
PGは英語は逃げらんねえ
あきらめろ
>>698
お姉ちゃんに読んでもらうからいいの
>>694,697
hotplug.dll::HotPlugEjectDevice
非公開API故詳細不明
文字の色反転表示ってCreateFont()で可能ですか?
通常はバックが白、文字色が黒のところを、一部分だけバックが黒の、文字色白にしたいんですが。
(GDI関数使って、四角く塗りつぶした上に文字をかぶせるなんてことしなくてもできますよね…?)
XOR
703697@ ◆b0UXJ88Ngw :03/04/22 11:34
>700さん
レスありがとうございました。
非公開でできないということで、ハードウエア取り外しウインドウを表示し、
Sendkeysで、むりやり取り外すマクロを書いてみたんですが、
「こんなのだったら、いらね〜」って言われました (TT
今度は、USBデバイスがちゃんと外れたかどうか確認する関数を探してみます
(ますます>694さんと類似!!)

あと、英語読んでくれるお姉ちゃんも探してみますw
InitializeCriticalSection が STATUS_NO_MEMORY を
投げるらしいのですが、
コレを受けるにはどの様にしたら良いのでしょうか?

try { 〜 } catch (long e) { 〜 } ?
GetLastError?
try{ Initialize〜}catch(...){ }
VC++なら_set_se_translatorとかあるわけだが。
>>705,706
(・∀・)サンクスコ!!
BCBを使用しているので >>705さんのやり方でやってみます。

try{
 Initialize〜
 〜
} catch (unsigned long e) {
 switch (e) {
 case STATUS_NO_MEMOTY:
  〜
  break;
 default:
  〜
  break;
}
こんな感じで。
え?
catch(...) と
catch(unsigned long) は別物だけど、、、
>>708
…忘れてました。
サンクスコ。
もうPlatform SDK February 2003出てたのか。
すいません。質問させて下さい。私は今VC++でWin32のアプリを作成しております。
で、一つわからない事があるんです。それは、
「自分自身の名前(カレントパスだけでなく、ファイル名)」って、どうやって取得したらいいんでしょうか、
って事なんですが。
どなたかご存知の方おられますでしょうか。

#P.S. さっきうっかりC++相談室に質問してしまい、こちらへ誘導されました。
#マルチポスト、失礼。
>711
GetModuleFileName
GetModuleFileNameでフルパスを取得
パスが欲しいのなら取得したフルパスをPathRemoveFileSpec
ファイル名が欲しいのなら取得したフルパスをPathStripPath
714711:03/04/22 23:19
>>712-713
取れました。ありがとうございました。

ちなみに教えていただいた PathStripPath(LPTSTR lpPath) 関数は、
"Shlwapi.dll"(Shell&Common Control ver 4.71) からインポートされるとMSDNにあったのですが、
これってIE3環境時代のマシンには入っていないですよね?
例えばアプリが完成して、自分が配布するアーカイブの中にソレを含ませても
問題無い(ライセンシー的に、というよりは動作的に)モノなんでしょうか。
715711:03/04/22 23:22
>>714 自己レス、追記。
ちなみに IE5以降がインストールされると、同梱の "Comctl32.dll"から
インポート可能になるそうです。以上、余談。
716デフォルトの名無しさん:03/04/23 07:13
Win32APIでランダムな数値返す関数ありませんか?
Cライブラリのrandみたいなやつ
なんでそんなことしたいんだろう。逆なら分かるが。
CryptGenRandom
719デフォルトの名無しさん:03/04/23 08:38
>>717
Cライブラリをリンクしたくないので。
>>718
ありがとうございます。
そーゆー目的なら、MTでも使ったらよろし。
>>720
機械翻訳(Machene Translation)?
main()
{
    int a = 0;
    printf("%d\n", &a);
}

これでランダムな数字出てくれないかな(;´Д`)
723名無し:03/04/23 23:57
>>722
奇数が出てこないヨカン
ベースアドレスからcode->data->heap->stackとPEヘッダで予約されているサイズ確保されるから
普通のWin32環境ではランダムにはならんだろ
>>698
PGってなんですか?
>>432とは別の者でつが漏れも知りたいので可能なら教えてくだちい。
MSDN読むと、
SetWindowLongPtrは他のプロセスには使うなって
書いてある(というか実際使えない)し、
SetWindowsHookExだとフック終了後に
メッセージはウィンドウプロシージャに渡されるって
書いてある(やっぱり実際ダメだった)し…
>>725
ParentalGuard
>>726
フックでプロセスに進入してSet..Ptrはどうよ?
>>728
神!アリガd(涙)
これくらいすぐ思いつかず
人に聞いた漏れは失格でつね。
逝ってきまつ。
特定のURLをフィルタリングするようなソフトを作りたいのですが…
例えば何かのソフトが2chにアクセスしようとしたらYahooに飛ばすような。

そこで、HTTPの通信をフックすることはできますか?
SetWindowsHook(Ex)だとメッセージしかフックできないみたいですし、
今のところwsock32.dllをすりかえるくらいしか思いつきません。
他に何か方法がありますか?
>>730
APIフックをしてみたらどうですか?
732730:03/04/24 23:15
>>731
貴重なキーワードどうもです。
Advanced Windows あたりに載ってるかな……
wininetを乗っ取るとかな。
winsockを直接使うアプリはブロックできないが
httpsな通信も覗けてしまってウマー
指定したアプリケーションの状態を検知したいのです。
検知したい状態とは、タスクマネージャで「応答なし」となる状態なのですが、
何か良い案は無いでしょうか?
ToolHelp系の関数で、プロセスとモジュールのハンドルの取得には成功しています。

開発プラットホームはWin2Ksp3
実行プラットホームはWin2K以降とWin98以降です。
SendMessageTimeout
737734:03/04/25 13:50
>>735-736
ありがとうございます。
IsHungAppWindow は元々隠しAPIだったようですね。
でもWin2K以降でしか使えないようなので、LoadLibrary と GetProcAddress の
例のお約束で取得して、取得できなかったら SendMessageTimeout + WM_NULL を使ってみたいと思います。
#結構長くやってるつもりなんですが、SendMessageTimeout の存在には全然気付きませんでした。

たまに GetProcAddress で取得できても、中身の無い関数がありますが、
実際に試してみてそうなるようならば、Windowsのバージョンで分岐させたいと思います。

ありがとうございました。
恥ずかしい質問ですが…

猫でも〜の118章にある分割ウィンドウ作成(親に子を二つくっつける方法)についてですが、
二つの子ウィンドウの外枠の厚さが、どうにも同じにならないんです。

118章にあるプログラムのままでは、なんか、気持ち右枠の方が厚い気がしますし、
だからと言って、右ウィンドウのWS_BORDERを消すと今度は左枠の厚さが目立つし…。
こんな状態です。↓
ttp://itopen.hp.infoseek.co.jp/bunkatu.jpg

綺麗に分割できないものでしょうか?
宜しければお教えください。なんか気になるので…。

猫でも118章
ttp://www.kumei.ne.jp/c_lang/sdk2/sdk_118.htm
そのページにちゃんと書いてあるだろ。
WS_EX_CLIENTEDGEもボーダーの外観を決める
740デフォルトの名無しさん:03/04/26 00:56
ウイルス対策ソフトのリアルタイム検索(ファイルアクセスの監視)って
どんな方法を使ってるんでしょうか?
>>740
API hook
742740:03/04/26 02:14
>>741
どうもです。
743デフォルトの名無しさん:03/04/26 09:48
win32api.hlpってどっかに置いてないですか?
なくしちまいました。鬱
俺んち、あるぜ?
745デフォルトの名無しさん:03/04/26 11:38
くれ!!
>>741
普通はAPIよりもっと低レベルじゃないか?
(フィルタドライバを導入するとか)
ウイルス対策ソフト自体がウイルス
748デフォルトの名無しさん:03/04/27 06:54
フローティングバーをドッキングしたりはずしたりしたときに
Viewのサイズが変化します。このときに画面を書き直したいのですが
こういう場合どのメッセージが来ますか?
できればViewのサイズが何らかの理由で変化したときに発生するメッセージが良いです
よろ
749デフォルトの名無しさん:03/04/27 11:07
PostMessage(Handle, WM_USER + 1001, 0, 0);
このメッセージってなにをしようとしてるの?
>>749
作った奴に聞け。
以上。
WM_APPのほうがいいだろうなあ
>>751
理由は?
>>752
751じゃ無いけれど。。。
ttp://cgi23.plala.or.jp/a-w-h/mfc/message.html
なんか参考になるかと。
>>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++を扱ったある本のサンプルプログラムをビルドして動かすとこの部分で
メッセージループの先頭でエラーが起こるんですが
これだけで分かるでしょうか?
757165:03/04/27 21:46
>>756
分かる訳ないだろ
そもそも Msg の型はなに?
758756: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();
}
本当に動かしたときにエラーがでるのか?
コンパイル時ならMsg.message初期化前にアクセスしているから警告が出るかもしれないが
>>759
コンパイルは通ります。
デバックすると
Run-Time Check Failure #3 - The variable 'Msg' is being used without being defined.
とメッセージボックスが出てメッセージループの先頭に矢印が付きます。
>>760
エラーメッセージそのままではないか?
762756:03/04/27 22:35
>>761
Msgがdefineなしで使われてるよと伝えているのでしょうか
さっぱり分かりませぬ
763752:03/04/27 22:44
>>753
なるほど、ありがとう。
WM_USERだと他で使われる可能性があったのか……

>>756
whileの前にMsgへ何か値を入れていない(PeekMessageしていない)から
不定の値が参照されてエラーになるのでは?
>>756
適当でいいならwhileの前に一度PeekMessage呼び出せば動くと思うよ
本来ならちゃんと初期化しなきゃいけないと思うがw
765756:03/04/27 22:59
有難うございました。
Windows2000にあるタスクトレイにメッセージを表示するAPIがしりたいのですが。
>>766 過去スレ読んでみた?ぐぐってみた?
「過去ログも調べないでそんな事聞くな」は不親切
http://qb.2ch.net/test/read.cgi/accuse/1051392742/l50
厨を放置できない香具師も厨とはよく言ったもんで(略
ところで、Windows2000にあるタスクトレイにメッセージを表示するAPIがしりたいのですが。
>>770
メッセージって?
>>771
ダイアルアップしたときなどに出るツールチップのようなそうでないようなやつです。
クリックすると消えたりするやつです。
過去ログ(ry
過去ログにはありませんでした。
以前同じ質問に答えたんだが。
見もしないで「ありませんでした」とか嘘つく厨は逝け
defrag.exeが使ってる(と思われる)ようなセクタを直接読み書きするAPIって非公開?
>>775
名前だけでも教えてもらえませんか?
検索するにもキーワードが思い浮かばないのです。
ツールチップ
>>779
それは違うでしょ
>>778
NOTIFYICONDATA の szTip とは違うもの?
>>777
おぉ、サンクス。ついでに777ゲトおめ。
>>781
違うものです。閉じる×とかついてるやつです。
785781:03/04/28 21:16
>>783
szInfo のほうだね。
>>784
>>785
やったー
ありがとやんす。バルーンかなるほど。
787デフォルトの名無しさん:03/04/29 03:05
スレ立てるまでもないスレで質問したんですがスルーされちゃったのでこちらで。

ダイアログボックス内にエディットコントロールが複数あるんですが、
そのフォーカスが移動したことを知るメッセージというのはあるんでしょうか。
ダイアログボックスのプロシージャでフォーカスが移動したということだけ判ればいいんです。
もしないのならば、ダイアログ内のすべてのエディットコントロールをサブクラス化して
WM_KILLFOCUSとかを捕まえるという方法になってしまうのでしょうか・・・。
定石みたいな方法を知りたいのですが。
>>787
サブクラス化して WM_KILLFOCUS
他の方法はしらん。
789787:03/04/29 03:41
>>788
どうもッ。それで行きます。
790名無し@沢村:03/04/29 03:58
>>787
ヌヒよ、サブクラス化なんぞせんでも親ウィンドウにEN_KILLFOCUSが通知されるわい。
791787:03/04/29 04:06
>>790
まじすかッ。と思ってやってみたんですが通知されませんッ。
792787:03/04/29 04:09
連続すみません!
notificationメッセージはHIWORDでしたッ。
>>790でうまくいきました。ありがとー。
>>786
後半のTooltipsは無視して嘘つき呼ばわりのままですか
そうですか
>>793
ハァ?
795デフォルトの名無しさん:03/04/30 09:50
テキストエディタを作ろうとしているのですが、
タブや改行などを表示させるのにどうすれば
いいのか悩んでいます。
文字色・背景色をカスタマイズできるエディタを
作りたいため、下の条件を満たしたく思っています

・背景を透過
・簡単に文字色を変更できる

どのようにすれば実現できるでしょうか?
よろしくお願いします。

※タブを「→」改行を「↓」で表示するとという手も
 ありますが、できれば任意のパターンにしたい
 のです。
>>795
まずお前は...

> ※タブを「→」改行を「↓」で表示するとという手も

は実現できるのか ?
797デフォルトの名無しさん:03/04/30 10:33
指定したフォルダのなかのファイル数を取得するAPIを教えて下さい。
>>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の流れでできるのですが、
エクスプローラ上でアイテムを選択しないで、空白を右クリックしたときの
コンテキストメニューが出せません。どうしたらできるのでしょうか。
よろしくおねがいします。
803795:03/05/01 00:49
>>796
矢印を使う場合は、TextOutで出力すればいいかと。
フォントにないパターンを出力する方法があれば
教えてください。m(..)m
目がキモイので却下
m(☣_☣)m
>>803
ビットマップで書く
807795:03/05/01 02:45
>>806
ビットマップで描こうと思ったのですが、
2色のビットマップだと、色が強制的に白と
黒になってしまうので困ってしまいまして。

CreateDIBSectionで多色のビットマップを
作成して、自力で重ね合わせを行うという
手も考えられますが、それだと画面中タブ
だらけの時に処理がかなり重たくなりそう
です。

他に方法はないものでしょうか?
>>807

何も毎回CreateDIBSectionせんでもアプリの起動時に一回BITMAP作って
画像入れといて、必要なときBitBltで転送じゃだめなのかな
別にこれならそこまで重くないような気もするが、、
これぐらいを重いっていうのかな?だとしたらスマソ
>>807
> 2色のビットマップだと、色が強制的に白と
> 黒になってしまうので困ってしまいまして。

SetBkColorしてBitBltのROPをいじるとかしてみれ。
810795: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を拾うとかしてみたのですが上手く
いかず、お手上げ状態です。激しく厨房質問ですがお許しを・・
          ∧_∧
        ⊂(´・ω・`)つ-、キャプチャ取りたい?キャプチャ・・・こぶ茶
      ///   /_/:::::/ ねえ。コンビニでこぶ茶買ってきてくんない。
      |:::|/⊂ヽノ|:::| /」
    / ̄ ̄旦 ̄ ̄ ̄/|
  /______/ | |
  | |-----------| |
813デフォルトの名無しさん:03/05/02 22:27
最初に描画が可能になったときに一回だけ送られるメッセージってありますか?
2回目からは無視すればいいんじゃないの
815813:03/05/02 22:33
>>814
ありがとうございます。
WM_PAINTメッセージでですか?
それしか無いのならそうします。
アホな質問なのですが、Win32でよく使われるアトムって
なんでそう呼ばれるのでしょう?
817ccc: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()は、ドラッグしないでウィンドウ外にマウスカーソルが
出たメッセージは拾えないけど、それは知ってるよな?
>>813
なんでそんなものが必要なのかと小一時間問い詰めたいです。
821816:03/05/03 00:37
>>818
ありがとうございますた。
原子ではなく、これ以上分割できないものと
考えるのでつね。。。
あれだ。フォントその他もろもろの、WM_PAINTのハンドラが呼ばれるたびに逐一
生成するには重い GDIオブジェクトの作成を初回の描画のときにやるっていう
魂胆でない?
>>821
つーか、排他制御とか知らんのか?
初心者の人に言いたいが、APIなんて知らなくていいから、排他制御は覚えてく
れよ…(心の叫び)
>>819
わぎゃん、知らんかった。ドラッグにしたらいけた・・・
LBUTTONDOWNはドラッグしなくても拾えてたので甘く見てました(泣
つまりはドラックなしには無理?
普通アトミックというとデータベースが浮かぶな。知識と知恵を混同する
気は無いのでどうでも良いが。
>>825
データベースが排他制御が最も必要なものの一つだからな。
トランザクションとか、ロールバックとか…

で、そんなもの知らなくていい。
アトミックというとロボキッドが浮かぶな。我ながら駄目人間だな。
SetupDIB(〜)みたいな関数でCreateDIBSectionを使ってるんですが、
その関数から戻ると、CreateDIBSectionでアドを渡した
BMPのデータ領域をさすポインタがNULLになっています。
その関数内ではNULLではないんですが・・・

ちなみにそのポインタはSetupDIB関数に引数として渡しています
なんか変なことしてるのでしょうか?
829デフォルトの名無しさん:03/05/03 08:41
固定ピッチフォントの半角文字を表示するのに必要な幅
(すべての半角文字が収まる最小限の幅)を知りたいのですが、
どうすればいいのでしょうか?

いろいろ試してみたのですが、つまづいてしまいました。

・GetObjectを使う
→LOGFONTのlfWidthが0の時デフォルト値の意のようだが、
 デフォルト値取得の方法がわからない。

・GetTextMetricsを使う
→TEXTMETRICのtmAveCharWidthの幅に収まらない
 半角文字があった。tmMaxCharWidthは全角文字の幅だった。

・GetTextExtentPoint32を使う
→文字列を"A"にして幅を調べたが、この幅に収まらない
 半角文字があった。
描画時にクリップすれば大きさなんてどうでもいい。
と言ってみるテスト
>>829
200文字くらいしかないんだから全部文字幅調べれば?
>>829
おれは"Z"か"X"で測ってる。
ちなみにGetTextExtentPoint32
収まらない半角文字って何よ?
Wとか?
じゃあ、Wの幅で調べりゃいいと思うよ。
高さは”Wg”で調べるのが主流だね。
>>835
何でそんなあほな策を書き込めるんだ?
Hが|-|みたいな感じで特定の文字だけ幅がやけにでかいフォントだったらどうすんのよ?
じゃあ、文字全部の幅を調べりゃいいと思うよ。
つーかフォントを指定してから幅を計算するべきだと思うが
840832:03/05/03 17:38
部外者だけど結局何が定石なの?
おれは自分の手段が正しいとは思っちゃいないっすよ。
今まで問題が出なかったというだけで。
半角文字でループして全部調べればいいと思うよ
つまり>>831
842デフォルトの名無しさん:03/05/03 19:08
どんなフォントでそんなことが起こるんだ?
正しいフォントをselectしてんのか
全部の幅を調べるなら GetCharABCWidths() あたりを使ったほうが?
勧める割に自信なさげですね。
んだって使ったこと無いんだもの
固定ピッチフォントってfull-widthの半分の幅が
half-widthになるんじゃないの?
XP以前のグリフ選択機能にバグがあっただけかと
エクスプローラのあるフォルダをFindFirstChangeNotificationで監視してるのですが
たとえばそのフォルダに複数のファイルをコピーしているとき
そのコピー処理が終わるまで待機してある処理を開始したいのですが
コピー処理が終わるまで待機というのがどうやったらいいのかわかりません。
どなたかご教授を
>>828
ポインタじゃなくてポインタのアドレスを渡せ。
どれだけの数のファイルがコピーされるか分からないから、
コピー終了を検知するのは不可能
850829:03/05/04 06:05
レス遅くなりました。

>>831>>841
うーん、それになってしまうのでしょうか。

>>832-834
わたしが試した中では"@"が収まりませんでした。
"W"が幅広いだろうと思ってはいましたが、
どのフォントでも"W"が一番幅広いという保証はないでしょうし…

>>839>>842
MS ゴシックをCreateFontで作成しました。

>>843
調べてみたところ、このAPIを使うとループを省略できそうですね。

>>846
固定ピッチフォントの半角文字は全部同じ幅だろうと
思っていたらそうではなかったので、その予想もちょっと
不安な気が…

とりあえず、全ての半角文字の幅を調べて、
最大値を採用してみることにします。
ありがとうございました。
>>850
CreateFontがなんか失敗してSystemあたりが使われたりしてないかい?
XPの「並べて表示」で表示されてるような
48*48のアイコンを取得するAPIってありますか?
ExtractIconExでは32*32と16*16しか取得できませんでした。
>>848
助かりました。
よく考えたら当たり前ですね。
854名無し@沢村:03/05/04 12:57
>>852
LoadImage
855デフォルトの名無しさん:03/05/04 12:59
CreateFontの引数を全部書いてちょーだい。
856デフォルトの名無しさん:03/05/04 13:19
>>847
ひとつ変数をつくってコピー直前に値を変え、コピー後にまた値を元に戻せば
いいんじゃないの? 別のスレッドからそれを定期的に身にいくと。
>>855
MSDN見てちょーだい
858デフォルトの名無しさん:03/05/04 17:32
>>857
そういう意味ではなくCreateFontに正しい引数を与えていない可能性があるので
全部書いてちょーだいということ。
>>858
よく上読んでなかった・・スマソ
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()を使っていたと思うけど、それもやめた方がいいの?

>>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ちゃうか?
865852:03/05/05 07:23
>>854
レスども。
LoadImageでアイコンファイル(.ico)の48ドットアイコンは取得できました。
でも、EXEやDLLのアイコンも取得したいんですよ。

画面のプロパティでアイコンを48ドットに変更して
SHGetFileInfoの引数にSHGFI_SHELLICONSIZEを渡せば取得できたんですが、
これはさすがに間抜けすぎて使えませんでした。

もうちょっと調べてみます。
しっかしSH系のAPIって、どういうつもりで作ったのかね。
867デフォルトの名無しさん:03/05/05 08:04
>>866
3.1 -> 95
ってことだろ
COMからんでるし
>>864
と言うか、lfFaceName だけ設定してもそのフォントが選択されるとは限らない。
lfCharSet とかもきちんと設定しないと、マッチしないから適当なフォントが選択されたりすることがある。

と言いたいんじゃないか ?

ちょっと前に、そういう実例見たし。
>>864
そうそう、忘れてたけどGetStockObjectについても触れてた
870デフォルトの名無しさん:03/05/05 10:41
Windows プログラミングって 難しいですね
871862:03/05/05 13:04
>>863
サンクス。
今度読んでみる。
873デフォルトの名無しさん:03/05/05 22:05
WM_CREATEの時にCreatePenで自作(?)のペンを作成しない場合に、
WM_PAINT時にLineToなどで描画した場合ストックペンが使われてるのでしょうか?
API始めたばかりなので質問の仕方も変な気がしますが、
ご教授お願いいたします。
>>873
そうだよ。BLACK_PEN がデフォルト
>>874
ありがとうございます。
参考書の例題でWM_CREATE時に設定してたりしてなかったりなので不安でした。
これで心置きなく次へ進めます。
876デフォルトの名無しさん:03/05/06 15:10
自アプリのインスタンスのハンドルを
取得する API ってありますか?

GetWindowInstance ( HWND )
↑これは見つけたのですがウィンドウハンドルが
必要みたいで・・・。
GetModuleHandle(NULL);
878デフォルトの名無しさん:03/05/06 15:56
>>877
ありがとうございます。
助かりました。
VBじゃなくてAccessVBAの話なんですけど、

VB用のサブクラス化テクニックをまねすると、
ウィンドウを閉じるときに70%位の確率で無限ループに陥るのですが、
Accessでは根本的に無理でつか?
質問。
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>はいれてあります。
ほかのリンクか何かに必要なものってありますか?
そのAPIをMSDNで調べれば必要なヘッダとライブラリが書いてあるが
882880: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/
>>883
言ってる意味がはずれてたらスマソ。
多分それはブラシの原点がずれてる。
UnrealizeObjectとSetBrushOrg使うと原点移動できるはず。
詳しくはググってみると見つかるかと。

もっといい方法があるかもしれないが・・・
俺が知ってるのはこれだけ。
>>883
FillRect ならまだいいが、FillRgn とか Polygon とか Chord と
一貫した動作をさせることを考えると (10,10)-(60,60) の方が
良いのではないかと。
LonghornでいままでのWinAPI殆どばっさり捨てるらしい。
蓄えた知識は出し惜しみせずこのすれへどうぞ。
888デフォルトの名無しさん:03/05/07 23:34
ListView の report と TreeView が一体になったコントロールを作りたいんですが、
どうすればいでしょうか。ヒントだけでもお願いします。
>>887
ソースほしいな
またGenericのお世話になるのかよ!
891883:03/05/07 23:50
どうもありがとうございました。

>一貫した動作をさせることを考えると
これは知りませんでしたが、そういうことなら、
一貫しているとありがたいですね。
>>887
それは困るな
>>887
.NETFrameworkが基底になるってことか?
今のVisualC#.NETみたいな・・
で、Win32APIの呼び出しは不可と
win64APIになるだけだったりして
とりあえず今出てる話だと全てのウィンドウがLayered Window化して、
DirectX上で動くような感じになる、つー話だが。
頼むからソースを
DirectXの話はハードウェアのスペックの話じゃん・・・
既存のアプリ(=Win32で作ったアプリ)も動くって書いてあるじゃん・・・
確かに今までとはウィンドウのレンダリング方法が変わるとは書いてあるが
プログラミングに関するネタはどこにも無いじゃん・・・
でこかでAPIを8,700まで減らすとかいう英語記事を読んだ記憶がある
>>897
CPUは常時フルスロットルかよ。そのうちパソコンの世界にも「省エネ化」が
義務付けられるような気がしてきたよ。
>>897
>1.5GHz動作のPentium 4に384Mバイトのメイン・メモリー,
>グラフィックス・カードは「ATI Radeon 9700」という
>ロー・レベルのパソコンで実行された。
うちのPCなんて…(以下略
903デフォルトの名無しさん:03/05/08 11:50
コントロールは再描画処理を行わなくても文字などが残ったままになるのは
デフォルトでそういう設定になってるからなんでしょうか?
そんなとこ。
即レスありがとうございました(_ _)
どうしたしまして。てきとうだけどね。
> 他のウインドウがあるかどうかにかかわらず,
> ウインドウ全体のレンダリングを常時実行する。

見えない部分も再描画かける、ってこと?
半透明Window以外でどういう意味があるんだ。

あー、Windowを動かした場合でもリアルタイムで後ろの画面が描画される、
ということなのか?
>>907
隠れてても印刷できるとか
MAPI関連なのですが、
未読メールを既読メールに変更する方法(関数名でも結構です)
をご存知の方お教えください。
MSDN Onlineでは全て英語。
翻訳サイトで和訳したものも読みましたが、
見つけることができませんでした。

環境:Win2000 VC++6.0

よろしくお願い致します。
910デフォルトの名無しさん:03/05/08 13:04
lnk2001外部シンボル"_WinMainCRTStartup"は未解決です
というエラーがでます。
ググったりヘルプを参照した結果、/ENTRYを設定するのではないか?って
とこまでは行き着いたのですが、どう設定したらいいのかがわかりません。
どなたかこのエラーの対策ご教授お願いいたします。
デフォルトライブラリを無視するのチェックを外す
>>911
すいませんが、どこにソノチェックがあるか教えていただけないでしょうか?
使ってるコンパイラはVisual Studio.NETでして、ヘルプで「デフォルトライブラリ」を検索したり、
プロジェクトのオプションをみたりしたのですが、見つかりません。
よろしくお願いいたします。
913!911:03/05/08 16:41
>912 リンカ−入力−すべての規定のライブラリの無視
つーか、オレの2002では「プロジェクトのオプション」なんて
無いんだが...
操作が判らないレベルなら製品名やその他もろもろの情報を書かないと
解らんよキミ。
>>902
ウホッ! いい削減!
915!902:03/05/08 18:06
>914
Microsoft Plans Windows API Cleanup
だってさ。
16bit時代の互換用APIは削除されてもかまわんが・・・
917名無し@沢村:03/05/08 20:21
おれは就職してから1ヶ月目に絶対に会社をやめないという誓約書を書かされたよ。
会社をやめたら膨大な違約金を取られてしまうんだよ。
また自宅にあるPCも会社に没収されてしまったよ。尾行をつけられたり、電話も盗聴されているんだよ!
会社はおれが他の会社に移ったり自宅でこっそりプログラムをつくったりすることをとても怖れているよ。
困ったもんだね…  
>>917
ネタですか?
犯罪じゃん、それ
919デフォルトの名無しさん:03/05/08 21:54
誓約書は労基法違反のため無効、今すぐ破り捨てることができる(ただし証拠は残すべき)
没収は刑法の強盗罪の構成要素を満たす
尾行もしくは盗聴による威力業務妨害で生じた遺失利益は損害賠償を請求できる

すべて証拠と記録を残すことを心がけ、弁護士に相談せよ
沢村だよ
荒らしのいう事は真に受けないほうがいい
×荒らし
○なんか可哀想な人
沢村にマジレスする時代が来たか・・
>>909
自己レスですが、
Simple MAPIのMAPIReadMail()
で回避しました。
ありがとうございました。
925デフォルトの名無しさん:03/05/09 15:37
Popupメニューをプログラム的に消すにはどうするんでつか?
926デフォルトの名無しさん:03/05/09 15:52
USBの装置が付いているかどうか、
電源が入っているかどうかを調べる方法を教えて下さい。

よろしくお願いします。
>925
ESCキーを押した事にすれば消えるんでは?
>>925
WM_CANCELMODE
929デフォルトの名無しさん:03/05/09 22:59
いろいろ調べたのですが分かりませんでした。質問させてください。

Num Lock キーを押しても、Num ランプが変化しないようにする
方法はありますか? あれば教えてください。よろしくお願いします。
930デフォルトの名無しさん:03/05/09 23:06
質問お願いします。
他プロセスのコモンコントロールを、操作することは可能でしょうか。

適当なコントロールのハンドルまでは取得できたので、
試しにSETCURSEL等をSendMessageで送ってみたのですが、
さすがにそれだけでは、変化してくれませんでした。

やり方を御存知の方、よろしくお願いします。
>>929
なんでそんなことしたいんだよ・・・
>>929
VK_NUMLOCKが来たら、
GetKeyStateでトグルか調べてVK_NUMLOCKを送る。
933デフォルトの名無しさん:03/05/09 23:30
>929
キーフックしてNumLockキーが来たら無視するといった手もある。
NumLockキーが押されたら隣にいる人がすかさず押すという手もある。
「ぽち」「ぱしっ」
>>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使ってるんでしょうか?
>>935
もう枯れた技術かも知れないが中の人にry
>>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教えて・・、ね?
・・・あ、あと、、初めてだから、やさしくして・・・」
>>936
>>930じゃないですが、他プロセスにPostMessage()で文字列を渡したい時はどうすればいいんですか?
>>935
OS は ?
WindowsNT 系で、ずっと NumLock が効かなくていいんなら、キーマップを弄ると言う手があるよ。

ttp://www.jaist.ac.jp/~fujieda/winnt/scancode.html
>>943
PostMessageでポインタ渡すのはそもそも不可能
>>942
MCIで普通に再生できるぞ
947デフォルトの名無しさん:03/05/10 10:44
>>943
CreateFileMappingで共有メモリを作るってのはどうよ
>>943
8byteに区切って送りまくり
949929:03/05/10 11:05
>>936
確かに考え方としてはスマートですが、メッセージ処理よりも
オーバーヘッドが大きくなってしまいそうですね…。

>>944
できれば 9x系/NT系どちらでも動くようにしたいのです。
でも、この話は知りませんでした。どうもありがとうございます。
>>949
ツール使っていいのなら、俺なら 窓使いの憂鬱 で設定するけどな。
設定を日本語109キーボードにしてdot.mayu(のコピーしたファイル)に
key NumLock = &Ignoreと書けば終わり。(試してないから間違ってるかも)
ただXPでは基本的に動かない。(むりやりに動かす方法はある)
951デフォルトの名無しさん:03/05/10 11:57
>>949
Win9x系だったら、「SwapScan.386」を使う手も。
自分しか使わないプログラムならね。

>>943
他プロセスとの情報共有なら、
ファイル入出力、クリップボード、パイプ、アトム、ミューテックス
メモリマップドファイル、システムフック、DDE・OLE
なんかいろいろある。これらと組み合わせて使え。
>>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()は使えた。
他プロセスのポインタ分かるんだから、
他プロセスのアドレス読めば良いじゃん。
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
>>956
他プロセスのメモリを読み書きするAPIがあるという話だろ
正直使用はすすめられないが
ReadProcessMemoryか。デバッグ権限が要るんだよな、たしか。
959930:03/05/10 14:10
>>936
Postしたら無事にできました
レスありがとうございました
ご忠告にも多謝、ポインタやバッファ渡しには気を付けます
960945:03/05/10 16:08
>>947
>>951
Postで送ったあと渡したアドレスのメモリをいつ開放したらいいか
どうやって知るの
961デフォルトの名無しさん:03/05/10 16:30
リソースエディタで、タブ付きダイアログ作るの面倒だなと思い、
他の人はどうやっているのか調べているうちに、一つ疑問がわきました

例えばVC6の、ツール>カスタマイズで出てくる
ダイアログのタブっぽいものを調べてみると、
タブじゃ無いみたいなんです(クラスがSysTabControl32じゃない)

あれは一体なんなのでしょうか?
>>960
バッファが不要になったら向こうからなんかのメッセージ送ってもらうとか。
>>961
PropertySheet?
964943:03/05/10 19:11
レスありがとうございました。
いろいろと試してみます。(WM_COPYDATAに落ち着きそうですが)
965961:03/05/10 19:27
>>963
まさにこれみたいです。
おかげでコントロールが重なって、訳が分からなくなるような
タブ付きダイアログを作らずにすみそうです。

レスありがとうございました!
966929:03/05/10 22:51
>>950 >>951
実は自分のアプリケーションの中だけで実行したかったのですが、
よく考えてみると、それだとアプリケーションを切り替えるたびに
ランプの状態も切り替えなければならなくなり、かなり不自然に
なってしまうので、他の手段を模索してみようと思います。
レスしてくださった皆様、どうもありがとうございました。
967デフォルトの名無しさん:03/05/11 04:01
ビットマップの透過をしたいんですが、できるAPIありますか。
探してみてそれっぽいのにBitBltがあったのですが、引数がhdcで使い方が分かり
ません。コピー元、コピー先それぞれのlpBMP,BmpInfoを引数にするようなのが
あるとよいのですが。うまく質問できませんが教えてください。
どう透過したいのかわからんので答えようがないが。
hdcが分からないつー時点で、
「とりあえずまともな入門書読め」
としかいいようがない。
969967:03/05/11 06:01
>>968
>どう透過したいのか
ゲームでよくあるやつですが、草マップ16*16、人マップ16*16を予め
作っておいて、2つとも開いてメモリに記憶、草を土台にしてその上に
人の白の部分以外をコピー、てな感じです。1バイトずつ調べて自力で
やってしまう方法はわかるのですが。普通はどうやるんですか?
>hdcが分からない
ハンドル:ポインタみたいなのですよね。詳しい意味はわかっていませんが、
セットで使われるので使い方は知っていたのですが。BitBltの場合2つある
ので、普通は一つなので分からなくなりました。
>>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で作るかも
973969: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
そういうやり方もあるんですか。始めて聞いたので分からないですが、少し調べて
見ると、関数より機能を限定した感じなんですかね。その描画領域を複数用意して
普通の処理よりやりやすくする。ってほんと始めて聞いたので分からないです。
>>972
リソース食いすぎ。
>>973
デバイスコンテキストってのは確か対象のデバイスが何であってもプログラマが意識しないで使えるように
作った共通のインターフェースのことだったと思うけど・・(うろおぼえ
だからもちろんウインドウも含むし、描画元のビットマップもデバイスコンテキストに関連づける。
SelectObject(hDC, hBitmap);とかやったことはないですか?

で、描画はそのURLの方法でいいんじゃない?
ヒントというかそのままのような気がするが・・
PlaySoundで50MBクラスの*.wavが再生できません。
これは、このAPIのしようでしようか?
977969:03/05/11 11:12
>>975
なるほど。それでわかりました。SelectObjectでHDCとBitMapが引数で、
HDCの方は参照渡しみたいにしてHDCを変化させる。その後ウインドウのHDC
とBitMapのHDCを比べて1段階ずつウインドウに透過描画する。それを繰り
返すんですね。ありがとうございました。
978名無し@沢村:03/05/11 12:51
>>969
MaskBlt()
979969:03/05/11 13:15
>>978
BitBltでもできましたがこれも透過ができそうです。使い方を勉強してみます。ありがとうございました。
次スレ作成時期か?
CreateThread() のタイミングだな
982980 ◆oqSJWu4Ch2 :03/05/11 20:06
そしたら、私が作ってこよう。

こっちは、誰か ExitThread() してくれ。
983980 ◆oqSJWu4Ch2 :03/05/11 20:18
次スレ

Win32API 質問箱 Build11
http://pc2.2ch.net/test/read.cgi/tech/1052651750/
TerminateThread(GetCurrentThread(), 0);
        まもなくここは 乂1000取り合戦場乂 となります。

      \∧_ヘ     / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
 ,,、,、,,, / \〇ノゝ∩ < 1000取り合戦、いくぞゴルァ!!       ,,、,、,,,
    /三√ ゚Д゚) /   \____________  ,,、,、,,,
     /三/| ゚U゚|\      ,,、,、,,,                       ,,、,、,,,
 ,,、,、,,, U (:::::::::::)  ,,、,、,,,         \オーーーーーーーッ!!/
      //三/|三|\     ∧_∧∧_∧ ∧_∧∧_∧∧_∧∧_∧
      ∪  ∪       (    )    (     )   (    )    )
 ,,、,、,,,       ,,、,、,,,  ∧_∧∧_∧∧_∧ ∧_∧∧_∧∧_∧∧_∧
      ,,、,、,,,       (    )    (    )    (    )    (    )
CloseHandle は新スレでやるの?
>>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
>>988
プロセスの同期を取るために、他のプロセスから SuspendThread でプロセスを停止させる...、最近はこう言うことができるようになったのか...。
Suspendしてもいいタイミングを伝えるとか、他の手段を併用しない限り、安全に同期できない気が
そういえば、自分のスレッドをSuspendして、他のスレッドからResumeしてもらうのはあり?
ありだけど、そういうスレッドのパターンはあまりみないね。

CreateThread時のパラメータでいきなりサスペンド状態にしておいて、
必要なときにResumeThreadするのはしたことあるけど。

普通ならセマフォかミューテックスで止まる側に明示的に待機させる。

動機オブジェクトの大気のコストが馬鹿にならないような場合
(待機スレッド数が多いときとか)は、Suspendってのもありかな。

パフォーマンスカウンタとか穿り返せばThreadIdからスレッドハンドルが
もらえるかも。

もらえても自プロセスにAttachしてないハンドルは使えないんだけどね。
993デフォルトの名無しさん:03/05/12 22:27
ゴミ箱のパスがほしいのですが、
SHGetSpecialFolderPath( hDlg, szRecycleBinPath, CSIDL_BITBUCKET, 0 );
とやると、空っぽで返ってきます。
どうすればいいのでしょうか?
俺は使うけどなぁ>自分でSuspend
>993
失敗するってヘルプに書かれているが、仮にパスを得たとして何も出来んだろ?
何するつもり?
(・∀・)ニヤニヤ 埋め
            ∧_∧
            ( ´_ゝ`)
       ___∬_(つ____と)___
      /\ 旦          \
     /+ \________ヽ  今だ!コタツの中ゲットォォォォ!!
     〈\ + + +    + + `、   ̄ ̄ ̄ ̄ ̄∨ ̄ ̄ ̄       (´´
     \ \__ノ⌒⌒⌒⌒⌒ヽ______ヽ      ∧∧   )      (´⌒(´
      `、___ノ⌒⌒⌒⌒ヽ_____〉  ⊂(゚Д゚⊂⌒`つ≡≡≡(´⌒;;;≡≡≡
                                  ̄ ̄  (´⌒(´⌒;;
                               ズザーーーーーッ

            ∧_∧
            ( ´_ゝ`)
       ___∬_(つ____と)___
      /\ 旦          \
     /+ \________ヽ
     〈\ + + +    + + `、
     \ \__ノ⌒⌒⌒⌒⌒ヽ______ヽ  (´⌒(´
      `、___ノ⌒`つ⌒≡≡≡≡≡(´⌒;;
             ̄ ̄  ズポッ
            ∧_∧
            ( ´_ゝ`)
       ___∬_(つ____と)___
      /\ 旦          \
     /+ \________ヽ
     〈\ + + +    + + `、
     \ \________________ヽ
      `、_____________〉


      \ぷ  | ∧_∧
        \ぅ | ( ´_ゝ`)
       ___∬__(つ____と)__
      /\ 旦          \
     /+ \________ヽ
     〈\ + + +    + + `、
     \ \________________ヽ
      `、_____________〉
       ;⌒`)  ∧_∧  (´⌒;;
      ;; `).`), ( ´_ゝ`) (´ ("
       ___∬_(つ____と)___(´(´⌒)
      /\ 旦          \
     /+ \________ヽ
     〈\ + + +    + + `、
     \ \________________ヽ
      `、_____________〉


                 ∧             ∧
                  / ヽ            ./ .ヽ
               /   `、______/   ヽ           (⌒;:)
              /'"                  "'ヽ.
              /"                     "ヽ,('';:⌒⌒ヽ丶,..
            i   ○     | ̄ ̄|  ○        へ        ;;:: j   (⌒::;
            |         |  ...::|     。   ;:::/  ::::: : ::⌒ ̄""⌒ヾ
             !.       丿 ::::::::| _ _。  ::::::::: /::: ; ": ̄       ::)
             ヽ       l  :::::::┴┐   ,,..:;::::::::::/:'(: : : ;;:;:      ⌒ ⌒)
              \     しw / .......::::::;;:;::::::/;:/:::::::::ノ;;::::::; :  .....   .....  ::::ノ
                ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄' ̄"" ̄" "  ̄ ̄ ̄"'""  ̄ ̄ ̄" '''' ̄'' ̄
           ∧⊂ヽ
           (゚Д゚)ノ
   ____/ |⊃ |\____
   \ 叩 / ̄ |   | ̄\ 氏 /
     \/    ⊂ ノ〜  \/
     /\ ((⊂∪⊃)) /\
   / 逝 \____/ 煽 \
     ̄ ̄ ̄ ̄\. 騙 ./ ̄ ̄ ̄ ̄
              \/

   1000ゲット生贄で召還!
    ゴゴゴゴゴゴゴゴゴ・・・・・・・・
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。