Win32API質問箱 Build122 at TECH
Win32API質問箱 Build122 - 暇つぶし2ch127:デフォルトの名無しさん
16/03/08 00:06:02.05 4rcXoPLf.net
WPDならIPortableDevice使えばいいんじゃね

128:片山博文MZ ◆T6xkBnTXz7B0
16/03/10 18:32:23.79 xtkhTFvc.net
SmartScreenのせいでEXEの野良配布が困難になってきてるよな。

129:片山博文MZ ◆T6xkBnTXz7B0
16/03/10 18:46:42.47 xtkhTFvc.net
署名とかストアとか覚えないといけないの?

130:デフォルトの名無しさん
16/03/11 19:47:15.34 qqLNoNER.net
>>127
zip 配布もだめなの?

131:デフォルトの名無しさん
16/03/11 22:34:26.95 S7VWGxAb.net
win32→storeのプロジェクトはまだ生きてたみたいだから
そういう流れになっていくんだろうな

132:デフォルトの名無しさん
16/03/13 19:04:41.84 Fmygxn2c.net
セキュリティ


133:関連についての質問。 他のアプリケーション(例えそれが管理者権限で実行されたとしても)に絶対読まれたくないデータはどうやって保存すればいい? もし無理なら、そのデータに他のアプリケーションからアクセスされたかどうを知る手段はある?



134:デフォルトの名無しさん
16/03/13 19:08:51.86 N6Vxxlvc.net
>>131
他のアプリのしらない方法と鍵で暗号化すればいい
他のアプリが自分のアプリを検索して鍵を探すようなことをするのであれば‥その鍵を別の鍵をつかって暗号化するとか‥
完全に安全を保障する方法はないね

135:デフォルトの名無しさん
16/03/13 19:16:05.80 Qm5VdHR0.net
管理者権限なんてローカル限定の権限なんだからリモートに保存すればいい
もっとも、保存直前にプロセスのダンプを取られたらどんな方法を取ろうが無力

136:デフォルトの名無しさん
16/03/13 19:48:45.08 N6Vxxlvc.net
>>133
悪意を前提で考えると,リモート保存も安全性には寄与しない

137:デフォルトの名無しさん
16/03/13 20:08:01.48 ugQKdrMu.net
Win32スレに来ているくらいだからまずはMSDNで探してみるべきだろう。データ保護APIってのがある。
ProtectedMemoryを正しく使えば>>133の言うようなプロセスのダンプからも保護できる。

138:デフォルトの名無しさん
16/03/13 20:25:41.60 N6Vxxlvc.net
>>135
そのデータ保護APIなるものは,同一アカウント上のプロセス間で保護するのか?
異なるアカウント間では保護できるようだが,ようするにそれはパスワードレベルの保護のことだよね

139:デフォルトの名無しさん
16/03/13 21:15:28.14 ugQKdrMu.net
そりゃもちろん、プロセス間で保護できなきゃザルなわけで。仮に他プロセスからセッション鍵を盗むことが
できたとしても、その鍵を使って保護されたメモリからデータを取り出すことはできない。
ファイルに保存されたものがアカウント+パスワードレベルの保護になるのはしょうがないが、他プロセスから
保護することとパスワードに基づく保護というのは別に排他的な概念じゃないからな。

140:デフォルトの名無しさん
16/03/13 21:42:17.07 N6Vxxlvc.net
>>131 にもどって,他のアプリに読まれたくないデータをどこに保存すればいいかっていう話なんだから
>ファイルに保存されたものがアカウント+パスワードレベルの保護になるのはしょうがない
ということならば, >>131 には否定的な回答しかできないわけだ.

141:デフォルトの名無しさん
16/03/13 21:44:05.47 Fmygxn2c.net
サンクス。
その何とか保護API調べてみるわ。
>悪意前提
悪意前提で考えてる。
>ネットワーク
ネットワーク上に保存したくないからローカルで、というわけでローカルでのファイル保護について質問した。
保護されたファイルへアクセスしたプロセスって後から調べたりるの無理だよね?
詳しくないけどグローバルフックとやらを使えばリアルタイムで何とかなるのか?
保護しきれないならせめてファイルアクセスがあったかどうかを知りたい。

142:デフォルトの名無しさん
16/03/13 22:29:44.93 ugQKdrMu.net
>>138
なんか面倒くさい奴だなぁw
別にパスワードによる保護を否定するつもりはないし、>>137で書いたようにそもそも>>135



143:プロセスの保護の話とパスワードを使うかどうかってのは全然関係ない話なんだが。 要は>>136の1行目と2行目には脈絡がないということ。



144:デフォルトの名無しさん
16/03/14 00:10:23.99 J7Gv1smK.net
話を面倒臭くしているのは自分自身だと思うぞw

145:デフォルトの名無しさん
16/03/15 13:27:09.56 SqQ89npq.net
Windows7でMCIコマンドでCDドライブの操作試みてるけど、
トレイの開閉ステータスが取れないね。
・メディアが入っていなければ常にMCI_MODE_OPENを返す...常にオープンしか返さない
・メディアが入っている場合は常にMCI_NOT_READYを返す...中身を読める場合でもNOT_READY
MCIの仕様変わっちゃったの?
試しにフリーソフトも動かしてみたけどステータス見れてない感じ。

146:デフォルトの名無しさん
16/03/18 22:48:07.36 tzMPzhn8.net
質問があります
ツリービューコントロールの要素をD&Dで移動させる処理を
APIバイブルのサンプルを参考に作りました。
(TVN_BEGINDRAGを捕捉してTreeView_CreateDragImageして
マウスキャプチャとかする感じの)
それが出来上がってからほかのソフトのウィンドウにもD&Dを
したくなりました(ツリービューの要素にはファイルパス情報が入っているので)
それを調べたらOLEを使うのが一般的っぽかったので、
IDropSourceとかIDataObject等一通り調べてなんとか理解できたかと思います。
しかし、ツリービュー内でのD&Dなら今まで通り、他のウィンドウへのD&Dなら
ファイルパス情報を渡すみたいな感じにしたいのですが、
こういう場合はツリービュー内でもOLEを使わないと無理なのでしょうか?

147:デフォルトの名無しさん
16/03/19 16:00:00.47 h2RjUxSC.net
OLEで使用するDoDragDrop関数がドロップを終えるまで制御が返らないので、
前者の方法(TVN_BEGINDRAG を捕捉して始めて WM_MOUSEMOVE と WM_LBUTTONUP を捕捉する)
との併用は不可能だと判りました。
OLEを使って同じツリービュー内でやるには
OLEのIDropTargetを使う方法じゃないとダメっぽいとの結論になりました。

148:デフォルトの名無しさん
16/03/20 08:15:49.40 J2K9MuYg.net
IDispatch派生クラスのオブジェクトをIDispatch*で受け取ったさい、そのオブジェクトのサイズを取得する方法はないでしょうか。
つまり sizeof(実際のクラス) を知りたいのです。

149:デフォルトの名無しさん
16/03/20 10:30:56.23 YlJ66Eyf.net
無い というかそういう設計を考えてはいけない

150:デフォルトの名無しさん
16/03/20 12:53:05.21 qAkJCql8.net
イベントをフックをする時はSetWindowsHookExで登録してUnhookWindowsHookExで削除するのが基本のようですが
UnhookWindowsHookExを呼び出せずにアプリケーションが終了してしまった場合はどのようになりますか?

151:デフォルトの名無しさん
16/03/20 13:37:31.29 WeI0+7T0.net
自分の環境で実行してみりゃいいじゃないの

152:147
16/03/20 18:19:28.89 qAkJCql8.net
>>148
試そうかと思いましたがクラッシュしたり意図しない動作のまま回復不能になったりしそうで躊躇しています
そのような危険がないのであれば試してみようかと思いますが・・・

153:デフォルトの名無しさん
16/03/20 18:23:37.30 9URbr6kI.net
>>149
仮想マシン

154:デフォルトの名無しさん
16/03/20 18:41:38.31 QxKIfwds.net
>>149
他人なら
> クラッシュしたり意図しない動作のまま回復不能になったり
してもいいってか?
シネよ
てか、仮想でやれ

155:デフォルトの名無しさん
16/03/20 21:26:43.48 29yt69lx.net
おかしくなったとしても再起動すればよいだろ
クラッシュが怖くて開発が出来るかよ

156:デフォルトの名無しさん
16/03/20 21:49:19.68 zQsHS3k2.net
ディスクを破壊しながらクラッシュとか、
昔はよくやったものだ。

157:デフォルトの名無しさん
16/03/20 22:08:27.62 qUimOGMq.net
えーと、要らない一時ディレクトリを丸ご�


158:ニ削除するプログラムにしよう。 /(^q^)\親ごと全部消えた!!!



159:デフォルトの名無しさん
16/03/21 07:05:13.67 nDSulSOJ.net
ディレクトリ階層削除する関数で
空文字指定したらルートまで全部みたいな

160:デフォルトの名無しさん
16/03/21 08:32:25.02 Mnjzg0Wz.net
アンインストール時に親ディレクトリ毎削除したやつがおってだな

161:デフォルトの名無しさん
16/03/21 08:53:39.84 PmGMa+wt.net
おっと、富士通の悪口はそこまでだw

162:デフォルトの名無しさん
16/03/21 12:36:26.84 b4wXoPlv.net
昔みずいろとかいうエロゲがあって

163:デフォルトの名無しさん
16/03/21 12:37:40.64 dZKdhS3z.net
>>155
こええよ、そういう話は夏にしてくれ

164:デフォルトの名無しさん
16/03/22 15:34:10.27 cRV6j0bX.net
私、rmちゃん
今あなたの後ろにいるの

165:デフォルトの名無しさん
16/03/23 00:43:37.49 kpR9M/as.net
'rm' は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。

166:デフォルトの名無しさん
16/03/24 01:43:08.29 +x6xcDgj.net
windows7でmingwのwindresでsyntax errorになる。
下記のリソーススクリプトでPUSHBUTTONの所でエ
ラーになる。何がおかしいのだろうか。
/*リソーススクリプト*/
KITTY DIALOG 10 , 10 , 100 , 50
FONT 12 , "MS ゴシック"
CAPTION "Magical nyan nyan TARUTO" {
LTEXT "終了します\nよろしいですか?" , -1 , 5 , 5 , 90 , 20
PUSHBUTTON "OK" , IDOK , 40 , 35 , 20 , 10
}

167:デフォルトの名無しさん
16/03/24 01:55:58.88 019JwaRF.net
IDOKが定義されてないとか

168:デフォルトの名無しさん
16/03/24 06:39:03.44 +x6xcDgj.net
有難う御座います。
IDOKは予約後で定義されていると思いますが。
私もそれを疑って、#include "reesource.h"をリ
ソースファイルの先頭に追加して。
resource.hで #define IDOK 1001を定義したら今
度は確かにsyntax errorは無く正常にコンパイル
しました。
然し、今度は逆にボタンを押した時にきちんと
IDOKが返って来ません。何れにしてもここでの
IDOKと言う定義が間違っていると思いますが。
正しいIDOKの定義はどの様にすれば良いのでしょ
うか。単に、定義をするだけではリソースは出来
てもリソースは出来たとしてもリソースとしては
機能しません。
済みません。アドバイスをお願いします。

169:デフォルトの名無しさん
16/03/24 06:51:45.03 019JwaRF.net
IDOK は、多分 1

170:デフォルトの名無しさん
16/03/24 06:55:59.99 019JwaRF.net
ていうか ID_OK の間違いだろ

171:デフォルトの名無しさん
16/03/24 07:01:21.78 +x6xcDgj.net
有難う御座います。
IDOKをID_OKに変更しても結果は変わらずsyntax
errorになります。

172:デフォルトの名無しさん
16/03/24 07:11:16.45 5JBRPHnG.net
.rcかresource.hでwindows.hをインクルードしてる?

173:デフォルトの名無しさん
16/03/24 07:57:01.56 +x6xcDgj.net
有難う御座います。
解決しました。
windows.hをインクルードしていないのが原因でした。

174:デフォルトの名無しさん
16/03/24 18:15:30.54 /fYMaFNHW
 すいません初心者です。質問があります。
c/c++の基本が一通り終わって、これからwindowsプログラミング
の方に入ろうと考えているのですが、今やるべきは.net言語なの
でしょうか?

そう考えると今のままだとc++/cliとなると思います。

しかし、c++/cliは難しい&c#でc++のコードを使うためのもので
単体で使うことは少ないと書いてありました。
ここはいっそのことc#を覚えた方がよいのでしょうか?
・net言語にすべきかどうか、.netならばc++/cliにすべきかc#に
すべきか。よろしくお願いします。

175:デフォルトの名無しさん
16/03/25 15:02:32.36 e5iRWphL.net
makefileの書き方が分からない。(1/2)
Windows7でmingwのgccを使っています。
win32apiを使っての開発の件でリソーススクリプ
トが有る場合と無い場合とではmakefileの中身が
違います。
リソーススクリプトが有る場合のmakefileは、下記です。
SRC=01.c
OBJS=$(SRC:.c=.o)
RC=02.rc
OBJS+=$(RC:.rc=.o)
PROG=01.exe
CC=gcc
MENU=windres
CFLAGS=-Wall -O3 -finput-charset=cp932 --exec-charset=cp932
LDFLAGS=-mwindows
RM=rm
%.o: %.c
$(CC) $(CFLAGS) -o $@ -c $<
%.o: %.rc
$(MENU) $(RC) $*.o
.PHONY : all
all: $(PROG)
$(PROG): $(OBJS)
$(CC) $(OBJS) $(LDFLAGS) -o $@
.PHONY : clean
clean:
$(RM) $(OBJS)

176:デフォルトの名無しさん
16/03/25 15:04:12.61 e5iRWphL.net
makefileの書き方が分からない。(2/2)
リソーススクリプトが無い場合のmakefileは、下
記です。
SRC=01.c
OBJS=$(SRC:.c=.o)
PROG=01.exe
CC=gcc
CFLAGS=-Wall -O3
#LDFLAGS=-mwindows
RM=rm
%.o: %.c
$(CC) $(CFLAGS) -o $@ -c $<
.PHONY : all
all: $(PROG)
$(PROG): $(OBJS)
$(CC) $(OBJS) $(LDFLAGS) -o $@
.PHONY : clean
clean:
$(RM) $(OBJS)
上記二つのmakefilleをif文を用いて一つの
makefileに統一をしたいのですが。if文の書き方
が分かりません。
済みません。makefileの提示をお願いします。
宜しく、お願いします。

177:デフォルトの名無しさん
16/03/25 15:10:54.87 CUZNJgnV.net
スレ違いにも程があるぞ
本屋行ってオライリーのGNU Make読んでこい

178:デフォルトの名無しさん
16/03/25 15:18:16.65 CX1q41Ys.net
mingw/gcc の質問やないか

179:デフォルトの名無しさん
16/03/31 08:39:59.70 K1Mny911.net
すみません質問させてください
SystemParametersInfo関数のようなWindowsのシステムをいじることについて
網羅的に書いてある紙の本ってあるんでしょうか
代表的なものだけでも

180:デフォルトの名無しさん
16/03/31 10:33:05.53 rf0CgBoT.net
>>175
っプリンター

181:デフォルトの名無しさん
16/03/31 15:16:19.63 3JOhUKfn.net
つプリンター Ex
URLリンク(msdn.microsoft.com)(d=printer).aspx

182:デフォルトの名無しさん
16/03/31 16:57:20.40 nkzU0v9F.net
>>175
もちっと自分のやりたいことがわかるように聞いたほうがいいんじゃね

183:デフォルトの名無しさん
16/03/31 17:50:33.83 K1Mny911.net
>>178
ありがとうございます
Windowsの操作を楽にする便利なツールを色々思い付く限り作りたいと思います
その為には「こういうことができないか」とやりたいことを考えてからそれを実現する関数を調べるという道筋と
すべての関数の一覧を見ていて「こういう関数があるならこういう便利なツールを作れるな」と発想する道筋の2つがあると思いました
それで前者についてはネットで調べるので良いのですが、
後者の着想のきっかけを得るために本に網羅されたリファレンスマニュアルのようなものがほしいのです

184:デフォルトの名無しさん
16/03/31 18:33:03.51 I8JOZpbh.net
ほら網羅つURLリンク(msdn.microsoft.com)
紙がいいならプリンター使えって先輩も親切に教えてくれてるよ

185:デフォルトの名無しさん
16/03/31 22:24:02.53 uSuxbU8H.net
URLリンク(channel9.msdn.com)
力技か

186:デフォルトの名無しさん
16/04/01 05:12:57.08 olPRPtsN.net
オンゲー解析してみたくて今C言語学習中なんですが、いつ頃WINAPI32を学習すればいいですか?
オンラインゲームを解析するにはWINAPI32の学習は避けては通れない道みたいですが、今API32の入門書を読んでもサッパリで

187:片山博文MZ ◆T6xkBnTXz7B0
16/04/01 05:33:04.14 cbPhNKwQ.net
>>182
WINAPI32じゃなくてWin32 APIだよ。
Win32は果てしなくでかいので、入門書だけでなくヘルプも読むのが常識だよ。
Win32には独自の型があるので、それらの使い分けを最初に勉強するといいよ。

188:デフォルトの名無しさん
16/04/01 05:48:48.38 olPRPtsN.net
>>183
ありがとうございます。
win32は予備知識などなくても覚えられるものでしょうか?

189:片山博文MZ ◆T6xkBnTXz7B0
16/04/01 06:17:50.03 cbPhNKwQ.net
>>184
関数、構造体、ポインタ、関数ポインタ、イベント駆動などの知識が
必要と思われる。

190:デフォルトの名無しさん
16/04/01 08:37:14.08 TsVr6Gke.net
>>182
話にならん
自分が人に教えられるレベルになってからそういうのをやるもんだ

191:片山博文MZ ◆T6xkBnTXz7B0
16/04/08 17:51:35.51 eaIwZ6It.net
ダウンロードしたインストーラの実行前のSmartScreenの警告を消すためにはDigiCertから
EV証明書を買ってSignToolを使ってコード署名しないといけないんだよね?
証明書がウン万円もするんだが。。。

192:デフォルトの名無しさん
16/04/08 18:04:06.56 O1PVjDtF.net
そらそうよ
証明書買ってコード署名した汎用ダウンローダーを作って安く売れば需要あるかな?
インストーラーの顔をしながら、実行すると本体インストーラーをダウンロードして実行する奴。
というか、既にありそう。

193:片山博文MZ ◆T6xkBnTXz7B0
16/04/08 18:54:22.13 eaIwZ6It.net
>>188
有り難う。
証明書に有効期限があるということは、ソフトにも賞味期限ができたことになるな。

194:デフォルトの名無しさん
16/04/08 21:21:33.10 gortvINo.net
>>188
そういう脱法的なのは、それを使って悪用されたら面倒なことになると思うけど良いのかな。
少なくともその証明書はブラックリストになるはず。
>>189
署名する時にタイムスタンプサーバーを指定して署名日時を入れておけば大丈夫だよ。
これを忘れると証明書の期限切れとともに署名も無効になる。

195:デフォルトの名無しさん
16/04/09 01:31:16.52 mjwXlN36.net
>>187
EVコードサイニング証明書の取得は法人格が必要。
個人だったらコードサイニング証明書まで。EVコードサイニング証明書に比べたらちょっと安いけど、それでも結構するな…。
EVじゃない方だと評価回数が少ないうちはSmartScreenで警告されるみたいだね。

196:デフォルトの名無しさん
16/04/10 01:49:05.76 bQbq5y+9.net
Convert your desktop application to a Universal Windows Platform (UWP) app
URLリンク(msdn.microsoft.com)
来たよ

197:デフォルトの名無しさん
16/04/11 03:43:32.81 A0XmuThL.net
リッチテキストコントロール(riched20.dll)に、グラフィックを含むRTFファイルを読み込ませて表示することは不可能でしょうか?
実際に試すとグラフィックのみ表示されません。
単純にEM_STREAMINで読み込ませていますが、他の方法では可能なのでしょうか?

198:デフォルトの名無しさん
16/04/12 21:21:05.39 ulqJQxxJ.net
>>192
これVMだと使えない
面倒

199:デフォルトの名無しさん
16/04/22 15:16:55.94 8YNH+QmN.net
ドラッグドロップされたファイルと同じパスにある違う拡張子のファイルを読み込みたいんですが
拡張子を決めうちでケツから3文字消しても問題ないですか?
あとwin32apiではsubstringメソッド的なものはないですか?

200:デフォルトの名無しさん
16/04/22 16:08:23.80 4ikocpMD.net
最後に出てくる「.」以降が拡張子。2文字もあれば6文字もある。

201:デフォルトの名無しさん
16/04/22 16:08:31.56 V7gBXlAq.net
拡張子3文字じゃない場合どうするつもりか知らないけど、好きに作ればいいよ

202:デフォルトの名無しさん
16/04/22 16:14:45.73 msF6wRol.net
読み込みたいって事は拡張子わかってるんじゃないの?

203:デフォルトの名無しさん
16/04/22 17:20:58.53 xOnwNmiP.net
>>196
.で終わってるファイルとか
.を含まないファイル名のときは?

204:デフォルトの名無しさん
16/04/22 17:38:18.46 +7c/qlM5.net
拡張子がないってこと以外に何かある?

205:デフォルトの名無しさん
16/04/22 17:42:35.47 YFuTfo2Y.net
>>199
>.で終わってるファイルとか
Windowsは.で終わってるファイルってのは認めていない
Windows環境下で作成しようとするとピリオド無しでファイルが作られる
>.を含まないファイル名のときは?
.を含まないファイル名は拡張子無し
拡張子を持たないピリオドを含むファイルってのは作れない
ピリオド以降を拡張子として認識してしまう

206:194
16/04/22 18:38:44.93 8YNH+QmN.net
いろいろ調べた結果PathFindExtensionを使うことがわかりましたが
ビルドが通りません
1>main.obj : error LNK2019: 未解決の外部シンボル __imp__PathFindExtensionW@4 が関数 _WinMain@16 で参照されました。
fatal error LNK1120: 外部参照 1 が未解決です。
URLリンク(ideone.com)
何が悪いのでしょうか?教えてください

207:デフォルトの名無しさん
16/04/22 19:15:23.54 4ikocpMD.net
#pragma comment(lib, "Shlwapi.lib")

208:デフォルトの名無しさん
16/04/22 23:12:03.91 8YNH+QmN.net
ありがとうございます、ビルドはできました
ですが拡張子を抽出することができません
GetCommandLine関数の返り血にスペースやダブルクォーテーションが含まれているのが問題だと思うんですが
C++のReplaceメソッドで置き換えしようとしてもLPTSTRからString型に変換するほうほうがわかりません
こういう場合どうすればいいんですか?

209:デフォルトの名無しさん
16/04/22 23:22:20.50 o1lCaFi5.net
諦めたらいいと思うよ

210:片山博文MZ ◆T6xkBnTXz7B0
16/04/22 23:38:04.60 ixsqd3SA.net
C++勉強してCStringのソース読めや。
__argc、__wargv、wcsrchrなんてのも使えるかもしれん。

211:203
16/04/23 05:57:01.65 UoCDvxkd.net
型変換がむずかしすぎます
嫌がらせのように文字列型があってなんで型変換のメソッドが用意されてないんですか?

212:デフォルトの名無しさん
16/04/23 07:32:43.16 1OvIZwV0.net
>>195
ファイル名の長さを調べて
ポインタを最後尾にする
ポインタを1文字すつ前に移動して最初に「.」があれば(略
>>207
asmoのソース参考にすればいい

213:デフォルトの名無しさん
16/04/23 07:51:54.45 1OvIZwV0.net
using std::string;
string get_file_prefix(const std::string& filename) {
string temp(filename);
string::size_type pos = temp.find_last_of(".");
if (pos != string::npos) {
temp = temp.substr(0, pos);
}
pos = temp.find_last_of("/\\");
if (pos != string::npos) {
temp = temp.substr(pos + 1);
}
return temp;
}
ex)
string in_filename(argv[1]);
string prefix = get_file_prefix(in_filename);

214:デフォルトの名無しさん
16/04/23 14:36:18.35 Ny1JsAlg.net
LPTSTRって何だっけ?

215:デフォルトの名無しさん
16/04/23 14:43:34.37 qkM7UD7C.net
#ifdef UNICODE
wchar_t *
#else
char *
#endif

216:デフォルトの名無しさん
16/04/23 14:45:32.47 43LRl8T1.net
NULLターミネートするTCHAR配列(TSTR)へのlong pointer(LP)

217:デフォルトの名無しさん
16/04/23 15:41:39.82 Ny1JsAlg.net
ああ、tcharで使うやつか
思い出した
他にも似たやうな名前のがあるよな
LPCTWSTRみたいな。
わけわかめだ

218:デフォルトの名無しさん
16/04/23 15:49:55.48 ob/Sewtp.net
LPTSTR と LPCTSTR のふたつくらい、君のキャパでも憶えられるだろ。
あとは気にしないでいい

219:デフォルトの名無しさん
16/04/23 15:55:31.31 Ny1JsAlg.net
おれはwchat_tしか使わないから。

220:デフォルトの名無しさん
16/04/23 16:35:07.30 ra5UaJir.net
>>213
LP=ロング・ポインタ
C=コンスト
T=テンプレート
W=ワイド
STR=ストリング
LPCTWSTR=ロング・ポインタ・コンスト・テンプレート・ワイド・ストリング
俺はこんな感じで覚えてる
ていうかLPCTWSTRなんてあったっけ?、テンプレートとワイドは共存しないとおもうが・・
LPCTSTRだろう

221:片山博文MZ ◆T6xkBnTXz7B0
2016/04/2


222:3(土) 16:39:45.15 ID:IdUKJjCp.net



223:デフォルトの名無しさん
16/04/23 17:05:51.57 7b5nyUqS.net
テキストとストリングって、上野クリニック案件になっちゃわない?

224:デフォルトの名無しさん
16/04/23 17:23:31.69 SujJgXyp.net
関数はA/W/無印なのに文字、文字列は無印/W/Tで一貫性がないよな

225:デフォルトの名無しさん
16/04/23 17:35:19.88 SujJgXyp.net
WinMain関数は無印,w,_tでCRT風だしで更にカオス
猫でも分かるなんかのうんこサイトは使い分けすらしておらず
初心者を陥れる為にわざとやってるのかと思うほどだわ

226:デフォルトの名無しさん
16/04/23 18:19:36.74 lEfknhOE.net
あれは本題部分のみ参考にするとこだろ

227:デフォルトの名無しさん
16/04/23 18:43:01.46 QugQUSQO.net
気にしたことなかったけど、確かにそうだな。
まともにソース読む気が起こらないし、読んだこともない。

228:デフォルトの名無しさん
16/04/23 18:50:54.27 ra5UaJir.net
>>217
え、そうなの?
なんかのサイトでテンプレートだと書いてあって、CP932でもUnicodeでも対応できる
ということで鋳型という意味のテンプレートだという説明だったので納得してたんだが

229:デフォルトの名無しさん
16/04/23 18:56:18.55 e6EoTGG4.net
>>213
TとWが同時に付くことはないはず

230:デフォルトの名無しさん
16/04/23 18:58:15.98 e6EoTGG4.net
>>215
これから作るのは全部それで良いよね

231:デフォルトの名無しさん
16/04/23 19:00:48.56 e6EoTGG4.net
>>216-217
TCHAR *fuga = _T("fuga");
wchar_t *hoge = L"hoge";
だっけ
_T は TEXT だよなー

232:片山博文MZ ◆T6xkBnTXz7B0
16/04/23 19:01:10.72 IdUKJjCp.net
>>223
あっしは汎用テキストのTだと理解してたが。

233:デフォルトの名無しさん
16/04/23 20:55:00.69 ra5UaJir.net
>>226
うん。_TのTはText、TCHARのTはテンプレートだと思ってる
>>227
UNICODEの定義によってCP932またはUNICODEにはめ込むことができるので
テンプレート(鋳型)という説明が一番しっくりくると思う

234:デフォルトの名無しさん
16/04/23 21:42:13.74 8PouUri8.net
普通に Type の T じゃね?

235:デフォルトの名無しさん
16/04/23 22:44:03.32 X/qVSAL9.net
>>208
ありがとうございます
一応LPTSTR→char *型への変換もできるようにがんばってみます

236:203
16/04/23 22:44:43.88 X/qVSAL9.net
LPWSTR→char *型への変換でした・・・

237:デフォルトの名無しさん
16/04/23 22:53:53.23 K7zZdQrl.net
>>226
_Tは_TEXTの省略形。

238:デフォルトの名無しさん
16/04/23 23:41:57.72 ra5UaJir.net
>>229
wchar_tの最後のtはtypeのtだそうだけどね
TCHARのTがTYPEだとUNICODEの定義の有無によってCP932またはUNICODEにという
情報が名前に反映されてないことになるのでおかしいのではないかな

239:デフォルトの名無しさん
16/04/24 00:36:28.24 5jPfs9BP.net
URLリンク(msdn.microsoft.com)
type を抑えてtemplate を推したくなるような記述は見当たらないような

240:デフォルトの名無しさん
16/04/24 01:00:59.35 jZ3tR2YK.net
>>234
"generic type"が鍵になりそうだな
1)generic typeでT(つまりtypeのT。但し、ただtypeでなくgeneric typeを表すT)
2)generic typeなので、その性質を一言で表すtemplateのT
この2種類が考えられそうだ

241:デフォルトの名無しさん
16/04/24 01:01:33.13 PmTKsIVl.net
あるサービス(hoge.exe)の起動を待機したいのですが可能でしょうか?

242:デフォルトの名無しさん
16/04/24 01:25:39.75 WUvyiW4J.net
タスクスケジューラでも使えば?

243:デフォルトの名無しさん
16/04/24 03:37:41.55 PmTKsIVl.net
そんなの使わなくてもできました

244:デフォルトの名無しさん
16/04/24 07:43:52.20 fu8W/E1c.net
>>233
templete って枠のことでしょ
TCHAR とか LPCTSTR 全体を言うならまだわかるけど T を templete って言うのは無理があるような気がする

245:デフォルトの名無しさん
16/04/24 09:22:15.37 TYncJpKd.net
wchar_t の


246:t が text の t だとしたら size_t の t は何だろ? 同じ種類のものではないの? 何の略かはわからんけど…



247:デフォルトの名無しさん
16/04/24 09:27:07.20 TYncJpKd.net
ごめん、よく読んでなかった
type の t が一番納得できるな

248:デフォルトの名無しさん
16/04/24 11:39:52.17 zKXhuchC.net
int64_t

249:デフォルトの名無しさん
16/04/24 16:31:23.37 8sLUoClv.net
>>241
URLリンク(faithandbrave.hateblo.jp)
俺はまったくもって納得できん
wcharを予約語にしてwchar_tはtypedefで残せばよかったのになー
WinSDKにしてもaffixはどうでもいいけどどれかに統一して
AMessageBox(=MessageBox)/WMessageBox/TMessageBox
ACHAR(=CHAR)/WCHAR/TCHAR
とでもしときゃよかったのになーと心底思うよ
そういうものだと割りきるしかないんだけど

250:デフォルトの名無しさん
16/04/24 16:50:26.02 zKXhuchC.net
localeのUTF-8化を頑なに拒んでる時点で

251:デフォルトの名無しさん
16/04/24 16:55:02.71 TYncJpKd.net
wchar_tは、C++03の予約語(言語仕様)だろ
基本型をtypedefすることはない
C++11では、char32_t とか char64_t とかも追加されてる

252:デフォルトの名無しさん
16/04/24 16:56:04.06 TYncJpKd.net
間違えた
char16_t と char32_t だった

253:デフォルトの名無しさん
16/04/24 21:06:36.67 8sLUoClv.net
>>244
でもその糞さのお陰で雇用も生みだしてるんだろうしね
正直U8,U32は欲しいところ
>>245
> wchar_tは、C++03の予約語(言語仕様)だろ
だからそれが納得できないって言ってるのだが…
予約語なら_tいらんだろと。
_t付けたいならtypedefでいいだろと。
ついでに言えばs16,u16でいいだろと。

254:デフォルトの名無しさん
16/04/24 21:19:50.47 CBUFfK5a.net
言語の予約語に_tとかついてるのは嫌で仕方ない
size_tとかwchar_tとか
予約語はシンプルであるべきだ

255:デフォルトの名無しさん
16/04/24 21:26:38.72 TYncJpKd.net
static_cast、const_cast、dynamic_cast、reinterpret_cast とか
thread_local とか static_aseart なんてのもあるな

256:デフォルトの名無しさん
16/04/24 21:28:31.96 TYncJpKd.net
static_assert

257:デフォルトの名無しさん
16/04/24 22:08:20.08 k3Kd32U9.net
>>248
駄々こねるのもいい加減にして下さい
size_tじゃなくてsizeに出来たらさぞかし素晴らしかったでしょうねw

258:デフォルトの名無しさん
16/04/24 22:12:22.95 HGS+mIYq.net
全世界のソースコード修正祭りが開催されて何億円という損失だな素晴らしい

259:デフォルトの名無しさん
16/04/24 22:56:43.97 GQXrb8zO.net
予約語の追加はかなりでかい破壊的変更になるからね
C#とか新しい順C++では文脈キーワードで対処してるけどさすがに型名は追加できんだろう

260:デフォルトの名無しさん
16/04/25 06:11:32.16 IJUNQlfS.net
>>248
それ以前に言語仕様で規定されてる sizeof の戻り値の型が typedef って言うのに違和感がある

261:デフォルトの名無しさん
16/04/25 13:56:35.15 HSarKqaj.net
そもそも、size_tは予約語か?
size_tはtypdedefで定義されていて、32bitアプリと64bitアプリで切り替わるようになっているんだぞ
wchar_tとは事情が違うだろ
だから>>247>>248の流れはおかしい
主に>>248がおかしい

262:デフォルトの名無しさん
16/04/25 19:23:57.38 Frw0Qt8a.net
本来ならwcharだけで予約されるべきところということか

263:デフォルトの名無しさん
16/04/25 19:38:55.15 jv7QqRvk.net
wchar を予約語にしておいてCとの互換性にはtypedef wchar wchar_t のようにしておけばよかったのにと思うけど
wchar を予約語に出来ない理由ってなんかあったっけ?

264:デフォルトの名無しさん
16/04/25 22:50:55.52 R+Ez/oiI.net
>>255
予約語のwchar_tとそうでないsize_tが同じ形式というのがそもそもおかしい

265:デフォルトの名無しさん
16/04/25 23:03:21.85 jv7QqRvk.net
size_tはおかしくないんだからsize_tを引き合いに出すのはおかしい

266:デフォルトの名無しさん
16/04/26 01:37:24.15 MYWP6CaR.net
>>234
"T"=????=generic type
"W"=Wide=Unicode type("W"がWideなのは他のドキュメントからわかる)
で、そのドキュメントには"W"がWideとは書いていないと同時に"T"が何なのかも
書いていないので、"T"がtemplateの可能性は排除できないだろうと思うがどうだろうな
template推しのサイト↓
URLリンク(vllv.us)
「TemplateとはC++のテンプレートから来ており、『型の変化に適応する』という意味が入っています。」
(『マルチバイトとユニコード両方で通用する書き方』項目の最後の文)
LPCTSTR=Long Pointer to Constant null-terminated Template STRingの略です。
と言い切っているのは興味深い

267:デフォルトの名無しさん
16/04/26 02:48:18.10 GOCkX5ww.net
Lサフィックスをマクロなんて書いてる個人サイト持ち出されてもな

268:デフォルトの名無しさん
16/04/26 02:48:44.74 GOCkX5ww.net
プレだった

269:デフォルトの名無しさん
16/04/26 03:18:04.61 R8utnF8M.net
URLリンク(www.wdic.org)
によると、Cでは(勝手にしてない限り)予約語ではない
c++はその名残、が妥当かと

270:デフォルトの名無しさん
16/04/26 03:30:36.17 R8utnF8M.net
ごめん、>>263 はなんか書いてること変だった
無視してくれ

271:デフォルトの名無しさん
16/04/26 14:16:03.38 zelw3Bet.net
ビットマップファイルを読み込む時に使うのはLoadBitmap
では、書き込む時に使うのは?

272:デフォルトの名無しさん
16/04/26 14:28:33.59 MYWP6CaR.net
>>261
Lプレフィックスをマクロなんてどこに書いてあるの?
どこにも見当たらなかったが・・

273:デフォルトの名無しさん
16/04/26 14:30:13.15 gGelNJu8.net
それはファイルI/Oとは違うから対となる書き込み機能は無いよ

274:デフォルトの名無しさん
16/04/26 14:33:30.69 p/TmI1mb.net
CImage::Save

275:デフォルトの名無しさん
16/04/26 14:40:17.40 zelw3Bet.net
>>267-268
windows.hの中にはないんですね。
対になる機能がないのが不思議。

276:デフォルトの名無しさん
16/04/26 14:46:48.74 gGelNJu8.net
いや、LoadBitmapはファイルじゃなくて”リソース”から読み込むのであってな。
書き込みはあってもいいかも知れんけど、バイナリ変形するし元に戻せなくなったら詰む。
ビットマップファイルのI/OはLoadBitmapじゃなくて、ファイルI/Oでやって下さい。

277:デフォルトの名無しさん
16/04/26 14:52:10.27 KUbgmjPe.net
気の利いたライブラリを探せば jpeg, png 使えるから
bmp なんか捨てたほうがいい

278:デフォルトの名無しさん
16/04/26 15:48:01.84 hodGhGMX.net
>>266
> 一番上のL

279:デフォルトの名無しさん
16/04/26 15:48:57.83 hodGhGMX.net
>>266
> 一番上のL"文字列"はユニコード限定の文字列ですよ、という
> 意味を表すマクロなので設定をマルチバイトに変更するとエラーになります。
一般的なブラウザを使っているなら
Ctrl-F 押すとページ内が検索できるようになるから
それで マクロ を検索してごらん
てかそのサイトは信用しないほうがいいと思うよ
> ちなみにLはLiteral(リテラル)の略で文字通りのとかいう意味です。
と断言してるとこは説得力なくて笑っちゃったよ
""だってナローリテラルだし他のu8"",u"",U""もリテラルなのに変じゃないか
引用元もないしで本人が思い込んでるだけじゃね?と不安になる

280:デフォルトの名無しさん
16/04/26 16:11:13.64 xq7hrZNz.net
>>265
読み込みも含


281:めてWICでやるのが一番いい



282:デフォルトの名無しさん
16/04/26 16:12:58.34 MYWP6CaR.net
>>273
ほんとだ、初っ端にちゃんと書いてあったわ、すまんすまん
> ちなみにLはLiteral(リテラル)の略で文字通りのとかいう意味です。
これは俺も違和感あったわ、確かにその通り変だ
ちょっといまいちなサイトだったな
MSDNからの引用があればよかったんだが・・

283:デフォルトの名無しさん
16/04/26 18:58:17.94 Tx8NMol0.net
MSDNも変なところ多いけどなあ。

284:デフォルトの名無しさん
16/04/26 19:04:37.78 lzHK63LG.net
大昔全FFを非同期リセットにしてた。
ASICの規模が大きくなってタイミングエラーの嵐になってきて、
99%以上のFFは同期リセット、
外部IO周りとか発振始まるまで不定じゃ困る部分のみ非同期リセットに変えた。
そのことでベンダーに何か注意されたこともないし、
特に困ったことも起こっていないな。

285:デフォルトの名無しさん
16/04/26 20:23:40.01 ScpOGrIY.net
LプリフィックスのLをロング(Long)の略としているサイトもあるけど
何のロングだろうかと思ったり
というかああいうサイトはなんで何かの略であることを書かずにはいられないんだろうか
たぶんどっかで聞いた(気がする)とか見た(気がする)ということから
知らんうちにそれが正しいと記憶違いをしてしまっているんだろうね

286:デフォルトの名無しさん
16/04/27 00:29:45.56 qLaue6Dh.net
何の出典も示さずにLプリフィックスを"Long"だの"Literal"だのの略だと
自分のサイトに書けるのがすごいわ
俺みたいな小心者には無理だわ

287:デフォルトの名無しさん
16/04/27 05:34:41.17 0VkfCe8A.net
Largeに決まってんだろ馬鹿どもが

288:デフォルトの名無しさん
16/04/27 21:11:48.41 qrup6c3l.net
服のサイズの "F"は Freeの略ではありません

289:デフォルトの名無しさん
16/04/27 21:47:51.66 ZNHkK8eC.net
LOVEこそ全て

290:デフォルトの名無しさん
16/04/30 16:13:55.93 FuZy8SxD.net
SysWOW64に32bit用のDLL入れて
System32に64bit用のDLL入れさせる習慣はどうにかならんかのぅ

291:デフォルトの名無しさん
16/04/30 16:25:37.58 x5p19SCW.net
どうにもならんよ by ロイエンタール

292:デフォルトの名無しさん
16/05/01 09:25:12.44 tKi6j9CT.net
匿名通信(Tor、i2p等)ができるファイル共有ソフトBitComet(ビットコメット)みたいな、
BitTorrentがオープンソースで開発されています
言語は何でも大丈夫だそうなので、P2P書きたい!って人居ませんか?
Covenantの作者(Lyrise)がそういう人と話したいそうなので、よろしければツイートお願いします
URLリンク(twitter.com)
ちなみにオイラはCovenantの完成が待ち遠しいプログラミングできないアスペルガーw

The Covenant Project
概要
Covenantは、純粋P2Pのファイル共有ソフトです
目的
インターネットにおける権力による抑圧を排除することが最終的な目標です。 そのためにCovenantでは、中央に依存しない、高効率で検索能力の高いファイル共有の機能をユーザーに提供します
特徴
Covenant = Bittorrent + Abstract Network + DHT + (Search = WoT + PoW)
接続は抽象化されているので、I2P, Tor, TCP, Proxy, その他を利用可能です
DHTにはKademlia + コネクションプールを使用します
UPnPによってポートを解放することができますが、Port0でも利用可能です(接続数は少なくなります)
検索リクエスト、アップロード、ダウンロードなどのすべての通信はDHT的に分


293:散され、特定のサーバーに依存しません i



294:デフォルトの名無しさん
16/05/01 09:48:44.26 AqctS693.net
>>283
ジャンクション張ってもっとマシな別名割り当てればいい

295:デフォルトの名無しさん
16/05/01 12:04:07.52 jr+NTyfn.net
>>285
死ね

296:デフォルトの名無しさん
16/05/01 12:16:34.83 1jzF+/1T.net
GetCommandLine()から拡張子のみを取り出したいのでPathFindExtension()を使ったのですが
そのまま投げても拡張子を返さず、GetCommandLine()の返り値を整形(ダブルクオーテーションを削除、一番後ろのスペースを削除)
しないとダメだったんですが、これは仕方ないことなのでしょうか?もっとスマートにやる方法ってないですか?

297:デフォルトの名無しさん
16/05/01 12:22:48.21 CY4SDQIv.net
どうせだし
"Path" Arg ...を分解するメソッドでも作っちゃえば

298:デフォルトの名無しさん
16/05/01 14:17:14.95 AqctS693.net
そのレベルを求めるなら API そのものじゃなくて何かライブラリを使うべきやろ
MFCまじおすすめ

299:デフォルトの名無しさん
16/05/01 14:54:23.63 OlEFIntC.net
WinMainの引数からsplitpath使えば

300:デフォルトの名無しさん
16/05/01 21:27:48.03 UCEkFn3w.net
CreateThread (Win32) についての質問なんですが
<---
C言語のランタイム ライブラリから関数を使っているスレッドは、 スレッドの管理用に、 CreateThreadおよびExitThreadよりは、 C言語のランタイム関数の_beginthreadと_endthreadを使ってください。
そうしないと、 ExitThread呼び出しでメモリを少し損失することになります。
--->
「C言語のランタイム ライブラリから関数を使っているスレッド」というのはどういうものを指すのでしょうか。
どういうときに CreateThreadでも良く、どういうときでは_beginthreadが良いのかがよくわかりません。

301:デフォルトの名無しさん
16/05/01 21:31:38.12 JP6hgmB0.net
>>292
>C言語のランタイム ライブラリから関数を使っている
stdio.h とか stdlib.h とかの関数を使うのなら _biginthread() ,ランタイムの関数をつかわないのなら CreateThread()
でも,win32api では普通Cランタイムは使わないようにするものだと思うのだが

302:デフォルトの名無しさん
16/05/01 21:42:39.45 bCr+8i5t.net
たいてい混ぜて使う
MFC
Win32Api
stdio
のでどのスレッド使えばいいかわからないww

303:デフォルトの名無しさん
16/05/01 21:49:22.42 ofEkM4aN.net
>>292
URLリンク(cpplover.blogspot.jp)
ここが分かりやすいかも

304:デフォルトの名無しさん
16/05/01 23:28:44.34 UCEkFn3w.net
>>293-295
なるほど
事情は良くわかりました
注意してCreateThread()のほうを使うようにします
ありがとうございました

305:デフォルトの名無しさん
16/05/02 15:15:28.11 aR8AOrvI.net
アフィ誘導乙

306:デフォルトの名無しさん
16/05/02 20:01:52.48 V/Rz0lGL.net
誘導されて来ました。
動的リンクされた.dllを.exeがあるディレクトリの1つ下のディレクトリにまとめたいと思っています。
.exeのショートカットを作成してショートカットのプロパティから、作業フォルダーの変更をすれば上手くいくのですが、これをプログラムでやる方法を探しています。
しかし、どうやら難しいようなので、変わる方法でもあれば教えて頂きたいです。
よろしくお願いします。

307:デフォルトの名無しさん
16/05/02 20:06:40.83 6+YY3Wwg.net
exeのフルパスを取得する GetModuleHandle, GetModuleFileName
dll検索パスを追加するAddDllDirectory

308:デフォルトの名無しさん
16/05/02 20:13:55.77 GdZkeqis.net
スレリンク(tech板:362-384番)

309:デフォルトの名無しさん
16/05/02 20:17:45.26 V/Rz0lGL.net
>>299
ありがとうこざいます。
adddlldirectoryですが、先ほど、main関数にたどり着いた段階でdllの読み込みは終わっていると教えてもらったので、mainの前に書いてみたところ、この宣言にはストレージクラスまたは型指定


310:子がありませんと言われました。 この関数はどこで使うべきなのですか? 調べても、サンプルが少なすぎて分かりませんでした。



311:片山博文MZ ◆T6xkBnTXz7B0
16/05/02 20:38:33.46 GdZkeqis.net
よくわからんが、DLLを遅延読み込みにしてAddDllDirectory使うんとちゃう?
//遅延読み込み
#pragma comment(lib,"delayimp")
#pragma comment(lib,"mydll")
//以下はmain内部に記述
WCHAR szPath[MAX_PATH];
GetModuleFileNameW(NULL,szPath,MAX_PATH);
LPWSTR pch = wcsrchr(szPath,L'\\');
lstrcpyW(pch,L"\\test2");
AddDllDirectory(szPath);

312:デフォルトの名無しさん
16/05/02 20:43:40.23 btgv3pKW.net
>>301
>動的リンクされた.dllを.exeがあるディレクトリの1つ下のディレクトリにまとめたい
なにをやりたいのかやっと分かったたよw
自分でLoadLibraryするんじゃなくてmain以前にdllをロードするやりかたならmain以降じゃ当然どうしようもないわな

313:デフォルトの名無しさん
16/05/02 20:45:09.22 btgv3pKW.net
ああ遅延読み込みという手があったか。試したことないけど
試してみて結果を教えて

314:デフォルトの名無しさん
16/05/02 20:46:24.19 6+YY3Wwg.net
LoadLibraryするんじゃないのか
なら、起動専用exeでPATHにdllのパスを追加してから、本体のexeをCreateProcess

315:片山博文MZ ◆T6xkBnTXz7B0
16/05/02 20:55:15.69 GdZkeqis.net
本体のexeと起動専用exeを分けるなら、本体のexeをDLLと同じフォルダーに入れて、
起動専用が本体をShellExecuteすればいいんじゃないか?

316:デフォルトの名無しさん
16/05/02 20:56:45.34 y5l6KIx0.net
なんかセキュリテイ的に弱点な気が
任意のexeで遅延させて自分のdll読ませれば何でも出来そう

317:300
16/05/02 21:03:38.21 eom7L+e5.net
自分の説明不足のせいか、大事になっている気が…
やりたかったのは、よくネットで公開されているフリーソフトのような、
zipを解凍したら.exeとreadmeとフォルダdataか出てきて
dataの中にアイコンのjpgやらdllが纏まってるみたいな簡素なものを作りたかっただけなのですが…
素人なのでセキュリティの脆弱性とかも全く分からないですが
とりあえず、教えてもらったことはありがたく全て試してみますので、回答ありがとうございます。

318:デフォルトの名無しさん
16/05/02 21:09:21.34 ahm7i7ng.net
回答者がエスパーすぎだろと思ったわw

319:300
16/05/02 21:30:39.06 EphQW+li.net
>>308
ちなみに、この聞き方であれば違う答えが返ってきたりしますか?
先ほどのやり方では、
セキュリティが危険とのことなので、素人が考えなしにやるのを躊躇しております。

320:デフォルトの名無しさん
16/05/02 22:16:40.26 ahm7i7ng.net
セキュリティは気にするな。
306がアホな子なだけ。

321:デフォルトの名無しさん
16/05/02 22:20:39.12 btgv3pKW.net
セキュリティは気にしなくても良いと思うけどね。
ニセのDLLを読み込ませたかったらDLLすげ替えてしまえば何でもできるし
DLLロードパスの優先順位はMSDNによると
1.実行中のプロセスの実行形式モジュールがあるフォルダー。
2.現在のフォルダー。
3.Windows システム フォルダー。このフォルダーへのパスは、GetSystemDirectory 関数が取得します。
4.Windows ディレクトリ。このフォルダーへのパスは、GetWindowsDirectory 関数が取得します。
5.環境変数 PATH 内に記述されたフォルダー。

322:片山博文MZ ◆T6xkBnTXz7B0
16/05/02 22:28:28.76 GdZkeqis.net
そもそもexeに高いセキュリティを要求するなら、exeはインストール時に
Program Filesなどのフォルダーに入れて、管理者権限がなければ書き込み不可にしないとあかん(ウイルス感染対策)。
さらにはインストーラーに有料の署名を付けんといけんのじゃ。

323:デフォルトの名無しさん
16/05/02 23:10:44.85 9Uaok0YL.net
>>305-306
バッチファイルでいいじゃん

324:デフォルトの名無しさん
16/05/02 23:44:54.35 6+YY3Wwg.net
>>314
黒いウインドウがダサい

325:デフォルトの名無しさん
16/05/02 23:59:57.71 9Uaok0YL.net
ならVBSで

326:デフォルトの名無しさん
16/05/03 01:17:07.20 ruihBwIa.net
GetModuleFileName + "data"フォルダ
を LoadLibrary でダメな理由はあるの?

327:デフォルトの名無しさん
16/05/03 02:05:10.66 Fq/Xo6LF.net
> 自作のプログラムから、エクスプローラの右クリックで表示されるコンテキストメニューを表示しようとしています。
>
> IShellFolder *pShellFolder;
> IContextMenu *pContextMenu;
> pShellFolder->GetUIObjectOf(NULL, pItemListLen, &pItemList, IID_IContextMenu, NULL, (void **)&pContextMenu);
> HMENU hmenu = CreatePopupMenu();
> pContextMenu->QueryContextMenu(hmenu, 0, 0x001, 0x7fff, CMF_NORMAL);
>
> とコンテキストメニューを作成しています。
> pItemListにはILFindLastID()で取得した対象のファイルのIDが、
> pShellFolderには親ディレクトリを格納しています。
>
> 同一フォルダ内のファイルであれば、複数のファイルのコンテキストメニューを作れるのですが、
> 異なるフォルダにある複数のファイルだと作成できません。
> エクスプローラだと検索結果などから異なるフォルダにあるファイルから
> コンテキストメニューを出してるみたいなのですが、どうやったら出来るのでしょうか?
過去ログから拾ってきたコピペですが、これと同じとこで躓いてます
> pShellFolderにデスクトップを格納し、pItemListには絶対PIDLを入れろ
このようなレスもありましたがこれでは上手く行かないです

328:デフォルトの名無しさん
16/05/03 09:16:56.28 kYqXiDhL.net
>>317
キミ、周回遅れ

329:デフォルトの名無しさん
16/05/03 12:12:00.81 aV7QMFwi.net
>>318
URLリンク(members.jcom.home.ne.jp)
>完全 PIDL はデスクトップで始まっていて、経路内にある間のフォルダの項目 ID がすべて入っています。
>完全 PIDL の最後は、そのオブジェクトの項目 ID と 2 バイトの NULL です。
>完全 PIDL は完全経路同様に、シェルの名前空間内でそのオブジェクトを一意に識別できます。
同一フォルダから得たものは相対 PIDL
要するにデスクトップ(pShellFolderにデスクトップを格納)からその項目までの経路、最後に項目のIDと2 バイトの NULL を入れろって意味じゃないかな
>このようなレスもありましたがこれでは上手く行かないです
ここが具体的にどういうことをしたのかわからんのですでに試したのかも知れんけど

330:デフォルトの名無しさん
16/05/03 12:43:23.64 Fr8Hxrb9.net
C言語でwin32apiを使ってnotepadにpostmessageでcontrol a を送りたい
がその方法が分からない。
一つの文字だけを送る場合は下記で上手く動きます。
#include <windows.h>
int main(void){
HWND hWnd;
hWnd = FindWindow("Notepad", NULL);
hWnd = FindWindowEx(hWnd, NULL, "Edit", NULL);
PostMessage(hWnd, WM_CHAR, 'a', 0);
return 0;
}
然し、ここでcontrol aを送るには、PostMessageのWM_CHAR
の次の引数をどの様に記述をすれば良いのでしょうか。
その時のコードの例示をお願いします。
宜しく、お願いします。

331:デフォルトの名無しさん
16/05/03 13:09:23.35 PQ3d4MP7.net
PostMessageでは不可

332:デフォルトの名無しさん
16/05/03 13:15:44.31 cK/moF+D.net
SendMessage(hWnd, WM_KEYDOWN, VK_CONTROL, 0);
SendMessage(hWnd, WM_KEYDOWN, 0x41, 0);
SendMessage(hWnd, WM_KEYUP, 0x41, 0);
SendMessage(hWnd, WM_KEYUP, VK_CONTROL, 0);

333:デフォルトの名無しさん
16/05/03 13:18:08.22 Fq/Xo6LF.net
>>320
どうも、レスありがとうございます ノシ
PIDLに関しては、必要に応じて手前で分割や結合が出来る程度には理解できてますので、完全か相対であるかは把握できています
親フォルダのIShellFolderとファイルの相対PIDLでは問題なく正常なメニューを取得できますが
デスクトップのIShellFolderと完全PIDL の組み合わせで正常なメニューが出るようには思えません…
たとえ単独ファイルであっても
デスクトップと完全PIDLでは正常なメニューは出ませんね
間違いが起こらないよう


334:以下のような簡単な方法でメニューを取得してもやはりだめなんです...orz LPSHELLFOLDER ptrDesktop; LPITEMIDLIST ptrIDL; LPCONTEXTMENU ptrContextMenu; SHGetDesktopFolder(&ptrDesktop); ptrDesktop->ParseDisplayName(NULL,NULL,L"C:\\CONFIG.SYS",NULL,&ptrIDL,NULL); ptrDesktop->GetUIObjectOf(NULL,1,(LPCITEMIDLIST *)&ptrIDL,IID_IContextMenu,0,(LPVOID *)&ptrContextMenu);



335:デフォルトの名無しさん
16/05/03 13:20:17.04 Fr8Hxrb9.net
>>322
ここでは例としてnotepadを挙げていますが。
notepad固定と言うのでは無くて汎用性のある
キーの送信を考えています。
postmessageでは駄目だとしたら、ほかに何が
有るのでしょうか。
宜しくお願いします。

336:デフォルトの名無しさん
16/05/03 13:21:37.30 kYqXiDhL.net
メッセージをspyしてみるくらいの知恵は働かないのか?

337:デフォルトの名無しさん
16/05/03 15:05:34.26 Fr8Hxrb9.net
有難う御座います。
今手元に有るのは、gccのコンパイラーだけです。
windows7を使っています。
spyツールを使えば何が分かるのでしょうか。
メッセージの流れが分かればその通りに
sendmessageを流せば良いのでしょうか。
済みません。教えて下さい。

338:デフォルトの名無しさん
16/05/03 15:19:30.82 cK/moF+D.net
無視されたオレ、涙目

339:317
16/05/03 15:34:20.80 Fq/Xo6LF.net
少し進展
C:ドライブのIShellFolderから、C:より下の階層の相対PIDLを渡せばディレクトリが違っていても正常なメニューを出す事が出来るようです

340:デフォルトの名無しさん
16/05/03 21:36:56.84 WxW7Sfac.net
>>328
透明人間の能力を手に入れたなんて羨ましいぜ

341:デフォルトの名無しさん
16/05/03 23:36:11.59 Fr8Hxrb9.net
>323
済みません、返事が遅くなりました。
実行した所、何も変化は有りませんでした。
直ぐに終了して何が起きたのか不明です。
何が考えられるのでしょうか。

342:デフォルトの名無しさん
16/05/03 23:52:34.46 PQ3d4MP7.net
SendMessageだとTranslateMessageとDispatchMessageを介してないんだから当たり前じゃん

343:デフォルトの名無しさん
16/05/03 23:55:40.99 PQ3d4MP7.net
PostMessageは順序保証ができないので不可
SendMessageはTranslateMessageとDispatchMessageを通過しないので不可
keybd_eventやSendInputを使うしかないが、これらはウィンドウを指定が不可
お前の望む動作は不可

344:デフォルトの名無しさん
16/05/04 00:04:01.21 kVGM/VsN.net
HANDLE h = Create...(
CloseHandle()を呼び出さずにアプリケーションが終了した場合
メモリ内にまだ、ハンドルがさしていたオブジェクトは存在し続けるのでしょうか?

345:デフォルトの名無しさん
16/05/04 00:07:45.41 c7vIrIvG.net
SendMessageやPostMessageだと
GetKeyboardStateを使ってるようなプログラムはまともに操作できないのも難点
URLリンク(msdn.microsoft.com)(v=vs.85).aspx
The status does not change as keyboard messages are posted to the thread's message queue,
nor does it change as keyboard messages are posted to or retrieved from message queues of other threads.

346:デフォルトの名無しさん
16/05/04 00:10:28.68 1kR93ddo.net
>>334
Windowsならプロセスの終了時に使用していたリソースも開放される

347:デフォルトの名無しさん
16/05/04 01:02:19.46 kVGM/VsN.net
>>336
ありがとう

348:デフォルトの名無しさん
16/05/04 01:50:54.23 VS80lwnU.net
そういや異常終了した後でファイルがロックされて削除できない
なんて事が昔はよくあったな

349:デフォルトの名無しさん
16/05/04 12:52:46.02 kVGM/VsN.net
アクセス違反で強制終了させられた場合にDumpを出力させた場合に
struct Foo
{
int i;;
};
Foo foo;
foo.iの値をDumpから知ることは可能ですか?

350:デフォルトの名無しさん
16/05/04 13:27:30.06 woHhfZt1.net
出来るはずがない

351:デフォルトの名無しさん
16/05/05 00:05:15.38 zUa6NWoE.net
struct Foo {
DWORD magic;
int i;
};
Foo foo;
foo.magic=0x07214545;
とかやってダンプから07214545を検索すればいいんでないの

352:デフォルトの名無しさん
16/05/05 00:21:23.15 M58BonNM.net
小さなプログラムしか作ったことないんだろうな
普通は構造体が1個しかないようなプログラムってありえないんだよ

353:デフォルトの名無しさん
16/05/05 01:05:24.34 zv5LYT8+.net
ダンプとWinDbgとソースコードとpdbがあって最適化とかで消えてなくて、
スタック上にあるなら表示できる気がする。やってみてないけど。

354:デフォルトの名無しさん
16/05/05 01:34:44.98 zUa6NWoE.net
>>342
んなの>>339からはこのFooのインスタンスが1つなんだかいくつもあるんだか
それとも別にFooに限らず不特定の構造体のメンバの値を知りたいんだか
分からんのだからその中で一つの案を出している
初期化が面倒なら初期値に書けばいいし、複数の構造体ならtype_info::hash_codeでも
メンバに持たせたテンプレートの基底クラスを作ればいい

355:デフォルトの名無しさん
16/05/05 11:19:01.99 /qWvSKFr.net
>>344
君は質問の本質が分かっていないな
みなまで言わないと分からないのか

356:デフォルトの名無しさん
16/05/05 11:47:05.71 aR3QcHwL.net
エスパーきた

357:デフォルトの名無しさん
16/05/05 12:09:33.89 UdftsNeY.net
質問の本質というけど
>>339の質問からは「特定の構造体」なのか「すべての構造体」かは分からないよね
もしかしたら自作の構造体ではなく既存の構造体かも知れないし
エスパーして勝手にすべての構造体だとして回答するのは自由だけど
それで別の可能性の回答にいちゃもんつけるのは違うと思う
それこそ本質を見誤っているのだと思います
>>342は小さなプログラムなら「構造体が1個しかないようなプログラム」もありえることを示唆しています
また小さなプログラムなら>>341は有用だとも取れる
>>339の作っているのが小さなプログラムではないとなぜ言えるのでしょうか?

358:デフォルトの名無しさん
16/05/05 12:15:35.09 l/2+Jb+M.net
帯域の無駄とはまさにこのこと

359:デフォルトの名無しさん
16/05/05 12:26:56.96 ET8VI+4U.net
スレタイ読んで寝ろ

360:デフォルトの名無しさん
16/05/06 19:47:08.86 gQ1eUeNa.net
Windows8の画面の自動回転で縦長になっている画面を横長に切り替えるAPIがあったらお教えください。
デスクトップアプリ(MFC使用のダイアログアプリ)です。
なるべく横長に表示したいダイアログのため、OnInitDialog()内でShowWindow(SW_MAXIMIZE)した後に
ダイアログ内のコントロールをダイアログの幅に合わせて再配置しています。
SetDisplayAutoRotationPreferences(ORIENTATION_PREFERENCE_LANDSCAPE)を使えば横長には切り替
わるのですが、OnInitDialog()ではまだ縦長のままのようで、再配置が正しく行えませんでした。
で、可能ならアプリ起動時、DoModal()前に画面を切り替えたいのです。
よろしくお願いいたします。

361:デフォルトの名無しさん
16/05/07 10:41:22.46 Kik6brAm.net
sendkey
Alt+F4 かなんか

362:デフォルトの名無しさん
16/05/07 17:01:24.81 FRLfg3Ln.net
SECURITY_ATTRIBUTES sa;
sa.nLength = sizeof(SECURITY_ATTRIBUTES);
sa.bInheritHandle = TRUE;
sa.lpSecurityDescriptor = NULL;
CreateEvent(&sa, FALSE, FALSE, NULL); で作ったハンドルは子プロセスに継承されている
子プロセスのDuplicateHandleは成功し親プロセスとの同期は取れている
CreateFile("sample.txt", GENERIC_WRITE | GENERIC_READ, 0 , &sa, OPEN_ALWAYS, FILE


363:_ATTRIBUTE_NORMAL, NULL); で作ったハンドルは子プロセス側でのDuplicateHandle自体は成功しているのに ReadFile、WriteFileでプロセスが落ちる 何が原因なんだろう?



364:デフォルトの名無しさん
16/05/07 17:23:33.70 FRLfg3Ln.net
すみません間違えてました
試していたのはfprintf(...)でその場合は落ちるんですが
>>352を書いてからWriteFileを試したら成功しました
そうなると今度はfprintf(...)でなぜ落ちるんだろうかって疑問になるんですが・・・

365:デフォルトの名無しさん
16/05/07 17:31:53.27 KgU8/FJ+.net
stdin,stdout,stderr以外は子プロセスには引き継げないって分かってる?

366:デフォルトの名無しさん
16/05/07 17:34:03.64 KgU8/FJ+.net
つーか、子プロセスは0,1,2をstdin,stdout,stderrとしてfdopenすると考えて良い

367:デフォルトの名無しさん
16/05/07 17:49:42.38 7sMMCfTe.net
ファイルポインタとファイルハンドル

368:デフォルトの名無しさん
16/05/07 18:04:18.24 5sx0uiPg.net
win32api の世界に C ランタイムの世界を混ぜるのは,混乱するから止めておいたほうが
messagebox で頑張ってくれ

369:デフォルトの名無しさん
16/05/07 18:12:34.31 FRLfg3Ln.net
>>356
理解しました
ありがとうございます

370:デフォルトの名無しさん
16/05/07 18:41:23.13 9/SiGFfq.net
>>353
vsprintf でバッファに出力してそれを WriteFile

371:デフォルトの名無しさん
16/05/07 20:13:10.03 SVmAxHAH.net
おれはWM_CHARでなくWM_ペーストでやってるが

372:349
16/05/08 07:33:07.24 uPD0V3Q6.net
349です。
自己解決。
ShowWindow(WM_MIAXIMIZED)をやめ、デスクトップのサイズでMoveWindowするように
することで、正常に動作。
BOOL CSD_WinDlg::OnInitDialog()
{
    : 前略
  CRect rectDT ;
  GetDesktopWindow()->GetWindowRect( &rectDT ) ;
  int nWidth = rectDT.Width() ;
  int nHeight = rectDT.Height() ;
  do { // Windows8なら画面を横長に
    HMODULE hDll = LoadLibrary( "User32.dll" ) ;
    if ( !hDll ) break ;
    typedef BOOL WINAPI SetRotation( ORIENTATION_PREFERENCE orientation ) ;
    SetRotation* pfSetRotation = (SetRotation*)
      GetProcAddress( hDll, "SetDisplayAutoRotationPreferences" ) ;
    if ( !pfSetRotation ) break ;
    (*pfSetRotation)( ORIENTATION_PREFERENCE_LANDSCAPE ) ;
    FreeLibrary( hDll ) ;
    if ( nWidth < nHeight ) {
      int nTmp = nWidth ;
      nWidth = nHeight ;
      nHeight = nWidth ;
    }
  } while ( FALSE ) ;
  MoveWindow( 0, 0, nWidth, nHeight) ;
  CRect rectCli ;
  GetClientRect( &rectCli ) ;
    : 以下、クライアントのサイズに基づいてコントロールを再配置

373:デフォルトの名無しさん
16/05/08 11:39:33.12 pwQcqOb7.net
迷惑なアプリの見本とか

374:デフォルトの名無しさん
16/05/08 12:14:30.17 1yuVEopA.net
うむ。ウィルスと同種

375:片山博文MZ ◆T6xkBnTXz7B0
16/05/08 17:02:20.87 Urq1EQRP.net
IME内部で呼び出したGetTextExtentPoint32WがERROR_ALREADY_EXISTSで失敗する。
助けて下さい。

376:デフォルトの名無しさん
16/05/08 17:43:25.16 Urq1EQRP.net
助けて

377:デフォルトの名無しさん
16/05/08 18:18:07.81 8pUDf3MI.net
既に存在しますって。

378:デフォルトの名無しさん
16/05/08 21:31:28.06 H4GlBiCg.net
>>356
ファイルディスクリプタ

379:デフォルトの名無しさん
16/05/09 10:20:11.80 /WWMvIkB.net
>>367
Win32の話題なのにバカなの? 死ねば良いのに。

380:デフォルトの名無しさん
16/05/09 14:09:57.34 pzKdLl0R.net
片山先生にも分からない事が有るのか。

381:デフォルトの名無しさん
16/05/09 15:00:58.21 YBKaLZ+x.net
ハードディスクのクローンを行いたんですが、どのような関数でやるの?

382:デフォルトの名無しさん
16/05/09 15:06:09.73 2UQDwNbB.net
まず服を脱ぎます

383:デフォルトの名無しさん
16/05/09 15:07:23.57 noyNIse2.net
>>370
つCloneDisk(dst,src) API

384:片山博文MZ ◆T6xkBnTXz7B0
16/05/09 15:31:05.83 12nCphG6.net
>>370
CreateFileを使うらしい。アクセス権限が必要。
URLリンク(stackoverflow.com)

385:デフォルトの名無しさん
16/05/09 17:27:43.94 ihh7VJo/.net
>>373
できないから、質問してるのでは?
そんなのドヤ顔で紹介されても・・・

386:デフォルトの名無しさん
16/05/09 17:59:52.23 mwKhqul2.net
>>374
その論法では、どんな質問に対してどんな回答をしても同じことが言えるね。

387:デフォルトの名無しさん
16/05/09 18:21:28.96 ihh7VJo/.net
>>375
そうではない
紹介されてるのは、できないか人の質問を紹介してるだけ。
別のできない人の質問を見ても何にもならないだろう

388:デフォルトの名無しさん
16/05/09 18:54:03.51 mwKhqul2.net
>>376
ああ、「できないから質問」はリンク先の話ね。すなまない。

389:デフォルトの名無しさん
16/05/09 19:46:49.69 WSElaHek.net
クローンと九龍って似てるよね
九龍って聞くと3×3EYES思い出すわ

390:デフォルトの名無しさん
16/05/09 19:52:27.27 kFMtfNT1.net
clone

cron
は発音が違う

391:デフォルトの名無しさん
16/05/09 20:37:02.59 M3iPLLj4.net
>>376
質問の回答を読めば答えがあるんじゃないの?読んでないけど

392:デフォルトの名無しさん
16/05/09 22:37:05.87 jCCSCwvz.net
/etc/crontab

393:デフォルトの名無しさん
16/05/09 23:35:52.42 noyNIse2.net
あるんじゃないの?って・・・
回答する側はちゃらんぽらんでもいいんですねw

394:デフォルトの名無しさん
16/05/09 23:46:31.04 YBKaLZ+x.net
クラッシュダンプの中からある変数の値
をしりたい
たとえば、下記のような
CDocumentクラスのint型のメンバm_dataの値です。
不可能ですか?

395:片山博文MZ ◆T6xkBnTXz7B0
16/05/09 23:51:44.12 12nCphG6.net
>>383
あらかじめSetUnhandledExceptionFilterに変数の内容を出力する関数を設定せよ。

396:デフォルトの名無しさん
16/05/09 23:59:03.23 M3iPLLj4.net
>>382
俺は回答者じゃないぞ
ただ>>376が質問のトピックだけ見てそれに対する回答にまで目を通していない可能性を示唆しただけ
本当にあのリンク先が質問投げられてるだけで解決してないだけのトピックならそれを貼るのは意味分からんけど
解決してるんちゃうの?って話

397:デフォルトの名無しさん
16/05/10 00:04:44.38 5J1aLd4L.net
>>384
それだと、クラッシュダンプを取っている意味がなくね?

398:デフォルトの名無しさん
16/05/10 01:10:03.16 95ydQ9Nw.net
>>383
シンボルファイルがあれば見れるでしょ。

399:デフォルトの名無しさん
16/05/10 01:21:14.99 5J1aLd4L.net
>>387
みれました。

400:デフォルトの名無しさん
16/05/10 13:08:37.18 2ogGQYkn.net
カスタムドローとオーナードローの違いが分からん

401:デフォルトの名無しさん
16/05/10 14:05:48.41 Jb8df6a5.net
毎ターンの最初にドローするのがオーナードロー
カードの特殊効果でドローするのかカスタムドロー

402:デフォルトの名無しさん
16/05/10 15:01:34.24 HhVOss0K.net
細かいところまで全部自分で描画するのがオーナードロー
OSがある程度描画してくれて、ステップごとに自分で描画したければ描画できるのがカスタムドロー

403:デフォルトの名無しさん
16/05/10 15:42:05.83 ZuNavWCV.net
オーナードローは全て自分で
カスタムドローは割り込んで差し替え

404:デフォルトの名無しさん
16/05/10 18:15:28.39 5J1aLd4L.net
たとえば、ダイアログにeditでもおいた場合
editのオーナーはダイアログですよね
ってことはeditをダイアログがおこなわなきゃいけないってこと?
それともオーナーをドローする?

405:デフォルトの名無しさん
16/05/10 22:10:15.17 vVT3Tded.net
MultiByteToWideChar関数とWideCharToMultiByte関数の変換結果ってNULL文字入ってますか?

406:デフォルトの名無しさん
16/05/10 22:12:24.86 wov2Q3bj.net
入ってるけど先っちょだけなのでセーフ ノーカン

407:片山博文MZ ◆T6xkBnTXz7B0
16/05/10 22:16:55.19 CPTIUhXJ.net
>>394
長さに-1を指定するとNUL文字が入るよ

408:デフォルトの名無しさん
16/05/10 22:37:50.04 vVT3Tded.net
>>396
ありがとう


409:ございます CommandLineToArgvW関数を使ってGetCommandLine関数から受け取ったものを解析しようとしているのですがうまくいきません ソースはこれなんですがヒントがほしいです https://ideone.com/blqCFb あとMessageBox関数ってどうしてconstしか受け付けてくれないんですか?



410:デフォルトの名無しさん
16/05/10 23:45:17.67 ee1FUJs8.net
>.396
エラーが出たらメッセージをよく見ましょう。
エラーが起こった場合にキャストして無理矢理エラーを消しても動く可能性はほとんどありません。

411:デフォルトの名無しさん
16/05/10 23:49:50.96 y6IvleFL.net
文字列をキャストして変換したツモリナールは罠
ちゃんと変換しよう

412:デフォルトの名無しさん
16/05/11 00:23:03.54 rUu5NPeL.net
うまくいきました!
あとはCommandLineToArgvW関数がちょっとわからないところありますが試行錯誤してみます
どうしてもダメだったらまたきます

413:デフォルトの名無しさん
16/05/11 15:39:15.62 qkI+/TV/.net
馬鹿には無理

414:デフォルトの名無しさん
16/05/11 16:33:16.52 l/Aku55r.net
>>397
const なし → const ありは暗黙変換の範囲
無駄なキャストするな
どうしてconst*無し*しか受け付けてくれないんですか?
なら許す

415:デフォルトの名無しさん
16/05/11 22:07:09.71 AfFgGj2Z.net
グローバル変数を持つDLLを遅延読み込みやLoadLibraryした場合に、そのグローバル変数に
アクセスする方法ってないんでしょうか?GetProcAddressのような。
遅延読み込みを使わなければ__declspec(dllimport)でいけるんですが、遅延読み込みにすると
LNK1194エラーになってしまいます。

416:デフォルトの名無しさん
16/05/11 22:12:17.37 9I+RCTR4.net
安全な方法はないんじゃないですかね
DllにGetGlobalVar()とか適当な関数を追加してグローバル変数へのポインタを取得してください

417:デフォルトの名無しさん
16/05/11 22:19:35.79 zhYWy9+O.net
GetProcAddressは関数だけじゃなくて、変数のアドレスも取得できる
(exportされていれば)

418:デフォルトの名無しさん
16/05/11 22:31:25.37 AfFgGj2Z.net
>>405
ありがとうございます。GetProcAddressでいけました。
それにしても、これは盲点でした。

419:デフォルトの名無しさん
16/05/13 18:36:08.65 GSvBVZn8.net
Cランタイムのmemcmpに対応するWin32APIってないのでしょうか?
上の方でWin32APIではCランタイムを使うな的なレスがありますが、何かしらのAPIに置き換え可能なのでしょうか?
それとも自作すべき?

420:片山博文MZ ◆T6xkBnTXz7B0
16/05/13 18:47:38.06 Q4+gmma8.net
>>364
自己解決しました。COMPOSITIONSTRING構造体のサイズ情報の不整合が原因でした。

421:片山博文MZ ◆T6xkBnTXz7B0
16/05/13 18:51:36.20 Q4+gmma8.net
>>407
Cランタイムの方が高性能で合理的。気にせず使いたまへ。

422:デフォルトの名無しさん
16/05/13 18:54:16.38 GSvBVZn8.net
>>409
あろがとうございました。気にしないでおきます。

423:デフォルトの名無しさん
16/05/14 22:54:45.77 vRpxoSsR.net
Spinコントロールを使用している(Editコントロールに関連付けずUDN_DELTAPOS
を処理している)アプリで、マウスでは長押しすればUDN_DELTAPOSが連続して送られ、
さらに長押しでアクセラレーションが働く(増分が増える)のですが、(タブレット
の)パネルへの指での長押しでは、UDN_DELTAPOSが1回しか送られて来ません。
指での長押しでもマウスと同じように動作させるには、どうすれば良いでしょうか?

424:デフォルトの名無しさん
16/05/14 23:04:18.19 E3fn5B/n.net
高橋名人になる

425:デフォルトの名無しさん
16/05/16 16:27:41.62 IBGTyv6p.net
タッチパネルには向いてない(非推奨と宣言されている)から諦めて他の部品を探す

426:デフォルトの名無しさん
16/05/16 18:56:25.57 P91hC5sf.net
>>413
コメント、ありがとうございます。
最初はSliderコントロールで作っていたのですが、タッチでは非常に操作しづ
らいため(大きなボタンの)Spin


427:に変えてみたのに前記のような次第です。 動きを見てみると・・・ マウスの場合はボタンを押したときにWM_LBUTTONDOWN・離した時にWM_LBUTTONUP が来るのが、パネルだと押したときにWM_LBUTTONDOWNは来ず、離した時にDOWNと UPが続けて来るようです。(レピートもアクセラレーションも働かないのは当然) 数値の範囲が広い(5~5000等)ため、DropDownList等にはできず。 WM_TOUCHメッセージを受けてどうにかできないかトライ中。



428:デフォルトの名無しさん
16/05/16 22:03:35.57 89EWpk6s.net
タッチするとスライダーが出るっていうのもあり

429:デフォルトの名無しさん
16/05/23 02:26:17.08 x4vKVRRs.net
ダブルクリックメッセージの後の、WM_LBUTTONUPが地味にうっとうしい
こんなの誤作動の元だろ・・・

430:デフォルトの名無しさん
16/05/23 02:32:42.88 x4vKVRRs.net
MS的にはダブルクリックしたままドラッグするような操作も想定していたのかもしれないが
そんなオペレーションが必要なアプリに出会ったことがない
ダブルクリック自体オプション的な扱いなんだから
ダブルクリックの後のWM_LBUTTONUPもオプションにしてほしかった
いちいちキャンセル処理するのが面倒

431:デフォルトの名無しさん
16/05/23 03:35:11.85 CHotlqdd.net
Firefox,Chrome,サクラエディタではダブルクリックのままのドラッグサポートしてるよ
単語単位選択のまま範囲が拡張される

432:デフォルトの名無しさん
16/05/23 03:42:10.00 CHotlqdd.net
というかメモ帳もVisual Studioでも同じだった
メモ帳は日本語だと1文字づつになるけど

433:デフォルトの名無しさん
16/05/23 09:09:35.53 IdraLXZT.net
>>417
ダブルクリック
→あ、ミスったからそのまま範囲外に持っていってからWM_LBUTTONUP
とかない?

434:デフォルトの名無しさん
16/05/23 20:01:41.03 x4vKVRRs.net
>>419
必須の動作ではないでしょ
その意味で
そんなぺレーションが必要なアプリに出会ったことがない
そもそも、普通のクリックの後とダブルクリックの後とで
BUTTONUPのメッセージが共通なのがいやらしい
普通のクリックとダブルクリックでは、アプリは別の動作をするのが普通なのだから
そのあとのBUTTONUPのメッセージも分けてほしかった
WM_LBUTTONDBLCLKDOWN→WM_LBUTTONDBLCLKUP
とかね
普通に考えて、LボタンとRボタンで、UPのメッセージはそれそれ別になってて
それぞれWM_LBUTTONUP、WM_RBUTTONUPでしょう?
これがどの場合でもWM_BUTTONUP一つに共通になってたら嫌でしょう
これと同じことだと思うんですけどねー 何でメッセージを共通にしたんだろうかね
別のメッセージを共通に扱うのは簡単だけど
共通のメッセージを別に扱うのは面倒

435:デフォルトの名無しさん
16/05/23 20:18:48.93 BbHX4Eo2.net
>>421
> これがどの場合でもWM_BUTTONUP一つに共通になってたら嫌でしょう
嫌とか言う以前に左右ボタンを同時押しされたら区別できないだろ
頭の構造がプログラマに向いてないんじゃね?

436:デフォルトの名無しさん
16/05/23 20:34:56.44 Xj6YQxJ5.net
>>421
何がしたいの?
そうだねすごいねって言って欲しいのか?
あ?ボケが

437:デフォルトの名無しさん
16/05/23 20:41:01.24 x4vKVRRs.net
ダブルクリックの後のUPのメッセージが
普通のクリックの時と別になっていたほうが良いと思いません?

438:デフォルトの名無しさん
16/05/23 20:47:25.72 Xj6YQxJ5.net
同意してくれないと暴れるよって付け加えろ
同意が欲しいだけのくせに否定されると嫌だからって
質問の体を取らせようとする女の腐ったような奴は見苦しいんだよ

439:デフォルトの名無しさん
16/05/23 20:52:30.88 x4vKVRRs.net
どうして同意してくれないんですか?

440:デフォルトの名無しさん
16/05/23 20:54:08.47 x4vKVRRs.net
逆に何か理由があって
ダブルクリックと普通のクリックの後のUPのメッセージが同じになってるんですかね
同じになっていたほうが便利なことって、ちょっと思い浮かばないんですけど

441:デフォルトの名無しさん
16/05/23 20:55:24.82 6EggAem/.net
>>424
思いません。
理由は述べません。
議論もしません。
ですが思いません。
こちらからは以上です。

442:デフォルトの名無しさん
16/05/23 22:37:23.51 WWhEKyeV.net
トリプルクリックとか4thクリックの実装が汚くて一々気にしたら負け
という結論を20年以上前に得たことを思い出した

443:デフォルトの名無しさん
16/05/26 09:04:44.12 QP0+R2rv.net
グローバル変数だろうが、ローカル変数だろうが、コンパイル時にそのアドレスは決定してますよね。実行することなく、その変数のアドレスを知りたいのですがどうすればしれますか?

444:デフォルトの名無しさん
16/05/26 09:40:20.34 vJm9AXBO.net
最適化で消えたりレジスタのみで処理されてるかもしれねーじゃん
出直せ

445:デフォルトの名無しさん
16/05/26 10:09:09.07 6KAnMnB/.net
>>430
リンカーにマップを出力させる

446:デフォルトの名無しさん
16/05/26 13:38:43.82 PPtVZd97.net
>>430
ローカルは実行時まで決定しないんじゃね

447:デフォルトの名無しさん
16/05/26 13:50:59.72 M2X0d2Pu.net
>>430
グローバルと静的変数はコンパイル時に決まる
それはビルド時にシンボルマップファイルを生成させれば見られる
ローカルとヒープは実行時じゃないと無理
レジスタにのってる奴は実行時でも無理

448:デフォルトの名無しさん
16/05/26 14:07:29.18 qDP8EFHX.net
ローカルちゃん。メインスレッドのスタックそのものののアドレスはASLRでないなら固定じゃなかったっけ
関数呼び出しのツリーが固定ならアドレスは計算可能かと思ったけど
プログラムの引数とかallocaとか使うとアドレスずれるんだっけか?

449:デフォルトの名無しさん
16/05/26 15:03:48.00 iU2f12RA.net
お前は囀らなくていい

450:デフォルトの名無しさん
16/05/26 18:18:53.68 YS/YHZQs.net
シフトキーを押しながらダブルクリックとかあった

451:デフォルトの名無しさん
16/05/26 18:48:05.78 ZS10B00B.net
>>436
フリガナ付けてくれ

452:デフォルトの名無しさん
16/05/26 20:19:26.84 Z+cHO4t2.net
>>435
こんなのはどうなるの?
#include <stdio.h>
int a = 0;
void Func1(void) {
int b;
static int c;
printf("a:%p b:%p c:%p\n",&a,&b,&c);
if (++a<4) Func1();
else a = 0;
}
void Func2(void) {
int x;
printf("x:%p\n",&x);
Func1();
}
int main(void) {
Func1(); printf("\n");
Func1(); printf("\n");
Func2(); printf("\n");
return 0;
}

453:デフォルトの名無しさん
16/05/26 20:42:30.72 tEodBnd+.net
サエズ
囀 る

454:デフォルトの名無しさん
16/05/26 20:49:06.51 e4t247TT.net
何の価値も感じない問答だ
まともでない手段が出てくるときは9割9分9厘方針が間違ってるか
横着するつもりでドツボに嵌まる選択をしている

455:デフォルトの名無しさん
16/05/26 21:09:18.72 kT3OAx5i.net
Unicode形式:  お前は囀さえずらなくていい
青空文庫形式: お前は|囀《さえず》らなくていい
まともに表示できるブラウザがあるかは知らん

456:デフォルトの名無しさん
16/05/31 01:01:12.53 2D2ULHTm.net
vbs から Win32API を呼ぶ方法はありますか?
無い場合、OS にランタイム等をインストールせずに実行できる実行ファイルを作れて
API を呼べるお勧めの言語はありますか?

457:デフォルトの名無しさん
16/05/31 01:54:47.72 dsq6ciRV.net
c

458:デフォルトの名無しさん
16/05/31 07:09:12.05 Q6hYp8jt.net
vbs から Win32API を呼ぶ方法
でそのままググれ

459:片山博文MZ ◆T6xkBnTXz7B0
16/06/04 01:14:28.88 9azu721e.net
CPUが64-bitで、かつOSが32-bitである環境がアリエールとは驚きだ。

460:片山博文MZ ◆T6xkBnTXz7B0
16/06/04 01:19:03.37 9azu721e.net
こうした「ねじれ環境」では最新のInkscapeなどのプログラムが動かないことがあるらしい。

461:デフォルトの名無しさん
16/06/05 09:00:41.62 n7k60ruZ.net
>>446
普通にあるだろ 少し時代遅れなだけだ

462:デフォルトの名無しさん
16/06/05 11:20:52.39 wpgdhQ4H.net
>>446
Windows7の時代はそんなのが当たり前だったが。Windows8の時代でも普通にあった。
64bitのOSが標準になったのはここ数年だ。
OSが64bitになると32bitのドライバーは完全に使えなくなるし、搭載メモリーが4G以下だと
64bitにするメリットがあまりなかったからな。

463:デフォルトの名無しさん
16/06/05 13:12:51.41 5CTJmFcd.net
>>430
そんなアドレス取得して何をしたい?

464:デフォルトの名無しさん
16/06/05 13:31:26.44 4pXfFBXo.net
>>450
そこは本題ではない

465:デフォルトの名無しさん
16/06/05 14:16:02.61 MNddmiLP.net
初心者なんて手段と目的と発想がとっちらかってるから
本人が本題だと思ってることは本題ではない可能性のが高い
岡目八目

466:デフォルトの名無しさん
16/06/05 14:26:35.95 wpgdhQ4H.net
ゲームか何かのデータをオンラインで覗き見や改竄したかったんじゃないの。

467:デフォルトの名無しさん
16/06/05 15:06:46.74 4pXfFBXo.net
>>452
>>430の情報だけでは何をしたいかは関係無い

468:デフォルトの名無しさん
16/06/05 15:14:10.27 ALg55j00.net
みんなひどいな、ちゃんと教えてやれよ。
>>430
>グローバル変数だろうが、ローカル変数だろうが、コンパイル時にそのアドレスは決定してますよね
いいえ。

469:デフォルトの名無しさん
16/06/05 16:18:47.98 b0qHmmcL.net
>>454
別解ができるできるかもしれないから本来の目的を聞いてんだろ
頭悪いんじゃねーの?

470:デフォルトの名無しさん
16/06/05 16:43:38.72 4pXfFBXo.net
>>456
実行することなくアドレス知った後に何をしたいか知っても
アドレス知らなければできないだろバカ?

471:デフォルトの名無しさん
16/06/05 17:05:53.27 m3XTKDYl.net
>>456
別解は訊かれてないからそれは余計なお世話
お節介おばさん

472:デフォルトの名無しさん
16/06/05 21:34:41.29 iq7db8Ia.net
>>455
「言語とか環境によるからそれだけでは答えられない」が正解だろ。
懐かしの *.com タイプの実行ファイルなら、アドレスが決まってると言えなくもない。
実行時にセグメントアドレスが変わるだけでプログラム内で意識すべきアドレスは変わらないからな。

473:デフォルトの名無しさん
16/06/05 21:46:16.77 mNRbI/bE.net
>>459
ローカル変数はスタック上にあるんだろう?具体的にアドレスを出すのは難しいんじゃないかな

474:デフォルトの名無しさん
16/06/05 22:26:30.18 iq7db8Ia.net
>>460
comタイプだと開始時の SP も確定できる。
だから main() のローカル変数のアドレスは確定できるという意味だったけど、
そこから呼び出される関数内のローカル変数のアドレスはそこに至るまでの
スタックの使用状態に依存するからそういう意味では確定ではないな。
関数ごとに確定したら再帰呼出できない。

475:デフォルトの名無しさん
16/06/06 00:29:06.57 KlmLRyc2.net
だから、まとめると、
Q:決まってますね?
A:いいえ、決まってません
だろ。

476:デフォルトの名無しさん
16/06/06 01:10:07.28 b3wiPZEu.net
A.
決まってないことがほとんどだけど、条件によっては決まってる事もあります。
自分で SP を操作して決めることも場合によっては可能です。
かな。

477:デフォルトの名無しさん
16/06/06 01:47:32.02 KlmLRyc2.net
>条件によっては
そういうのは「決まってない」って言うんだよ。
だって条件明示できないだろう?

478:デフォルトの名無しさん
16/06/06 03:02:28.37 f8xfohh0.net
ランダム化されたベースアドレス
とか
固定ベースアドレス
とか

479:デフォルトの名無しさん
16/06/06 08:18:46.91 l5dDSXNJ.net
エミュでベースアドレスが固定なのはどうやってんの?

480:デフォルトの名無しさん
16/06/06 08:32:20.01 ltcrYsll.net
エミュレータは所詮エミュレータ
完全に実物を再現することは出来ない
ベースアドレスが固定されているのであれば、ホストマシンの速度や容量の関係でゲストマシンのメモリマッピングの
エミュレーションを放棄して処理の簡素化を図っているだけ

481:デフォルトの名無しさん
16/06/06 20:24:45.16 QosaUsgl.net
宇宙開闢の瞬間からアドレスは決まっているかもな
それを知ることができるかは別だが

482:デフォルトの名無しさん
16/06/06 21:29:21.12 XWFkF7NO.net
標準 Windows APIというサイトより

キーボードイベントはアプリケーションがそれを処理するよりも速い速度でタイプすることができます
しかし、基本的にキーボードイベントはアクティブなウィンドウに対して送られますが
キューのメッセージの途中で、アクティブなウィンドウが切りかえられた場合
その後のキーイベントは切り替わったウィンドウに送られるべきです

これの具体例がわかりません。キーボードを連打してウインドウがたくさん開いてる状態
なんてPC操作しててありますか?

483:デフォルトの名無しさん
16/06/06 21:33:07.14 okPwaxJe.net
あるよ
WM_LBUTTONDOWNでウィンドウを閉じたら
WM_LBUTTONUPは別のウィンドウに届く
怖いね

484:デフォルトの名無しさん
16/06/06 22:30:16.23 XWFkF7NO.net
>>470
切り替わったウインドウに送られるってことですか???
それを防ぐための機能はあるんでしょうか?

485:デフォルトの名無しさん
16/06/06 22:35:42.16 XWFkF7NO.net
防げるわけないか

486:デフォルトの名無しさん
16/06/06 23:20:33.76 okPwaxJe.net
一応そういう機能は用意されているよ
ただし、切り替わったことを検出する機能だが
DOWNとUPは必ず対で同じウィンドウに送られるとは限らないから
そのつもりで書かないと変なことになるよ
LBUTTONDOWNでフラグを立ててドラッグ処理してLBUTTONUPでフラグを戻すという
ありふれた処理ですらバグる可能性があるよ
マウスをキャプチャしていたとしても、途中でAlt+TABなどでウィンドウを切り替えたりしたら
勝手にキャプチャが解除されてLBUTTONUPは飛んでこないよ
キャプチャが解除されたことを検出してフラグを元に戻すなど、後処理をしないとダメ
怖いね

487:デフォルトの名無しさん
16/06/07 00:13:54.68 41OqMrsx.net
たまにWin10の起動処理で、マウスが張り付いて動かないことがあり、
再起動しているのだが、アプリがそういう事を想定していないからか
Windowsは恐ろしい

488:デフォルトの名無しさん
16/06/07 08:05:48.66 GLc24ffb.net
ウィンドウプロシージャで描画するときのはじめと終わりは
hdc = GetDC(hwnd);

ReleaseDC(hwnd , hdc);
のパターンもしくは
hdc = BeginPaint(hwnd , &ps);

EndPaint(hwnd , &ps);
だと思いますが、後者はデバイスコンテキストをデバイスコンテキストを
解放してないと思うんですがこれでいいんでしょうか?
後、文字やグラフィックの描画に関しては、絶対に後者のほうがいいそうですが
前者使う時は?

489:デフォルトの名無しさん
16/06/07 08:06:51.30 GLc24ffb.net
すいません
×「デバイスコンテキストをデバイスコンテキストを」で
正しくは「デバイスコンテキストを」です。

490:デフォルトの名無しさん
16/06/07 08:07:46.67 GLc24ffb.net
デバイスコンテキストを解放してないと描画機能に影響を及ぼすみたいな
事書いてありますし、後者で大丈夫ですか?

491:デフォルトの名無しさん
16/06/07 09:54:05.47 L0Kpz/xt.net
 PAINTSTRUCT構造体のメンバを見ればデバイスコンテキストハンドルがあるのがわかる。
実際のところBeginPaint()の戻り値は冗長。

492:デフォルトの名無しさん
16/06/07 09:56:09.48 4sqWtxYj.net
まったく変態APIだよな

493:デフォルトの名無しさん
16/06/07 10:01:23.12 L0Kpz/xt.net
それからGetDC()とBeginPaint()の使い分けは処理の内容じゃない。
BeginPaint()は無効領域に書き込みを開始する関数なので無効領域が発生したときに来る
WM_PAINTメッセージのときしか使わないし、無効領域の描画が完了したらそのことをEndPaint()
で知らせなければならない。何かの理由で(クラスのメンバとして保持するとか)HDCを持ちっぱなし
にするならGetDC()を使う。
逆にWM_PAINTが来てるときにGetDC()を使うと無効領域が無効領域のままなのでメッセージが
来続けることになる。自分でInvalidateRect()で無効領域を発生させまくってるなら大差ないけど

494:デフォルトの名無しさん
16/06/07 11:02:25.45 L0Kpz/xt.net
あぁそれからBeginPaint()は無効領域の外への描画は反映されないようになってるから
WM_PAINT以外で使っても無効領域がないので各種描画関数自体は成功するけど画面には
反映されない。
WM_PAINTを呼ぶのにSendMessage()じゃなくてInvalidateRect()を使うのも同じ理由。

495:デフォルトの名無しさん
16/06/07 11:17:37


496:.48 ID:L0Kpz/xt.net



497:デフォルトの名無しさん
16/06/07 16:41:36.62 DjDItv96.net
>>478
ありがとうございます。
つまりpsというオブジェクトがデバイスコンテキストハンドルを開放する
メソッドなりがEndpaint中に実行されてるってことですね。
>>481
なるほど、BeginPaint()使っても描画されない時があるのはWM_PAINTとセット
じゃないからですね…なるほど

498:デフォルトの名無しさん
16/06/07 16:44:32.25 DjDItv96.net
ただ無効領域っていうのはプログラム開始時はどうなってるんですか?
LPTSTR lptStr = TEXT("Kitty on your lap");
switch(msg) {
case WM_DESTROY:
PostQuitMessage(0);
return 0;
case WM_PAINT:
hdc = BeginPaint(hwnd , &ps);
TextOut(hdc , 10 , 10 , lptStr , lstrlen(lptStr));
EndPaint(hwnd , &ps);
return 0;
}
この場合だと文字が実行時に描かれていますが、プログラムの最初は
そもそも無効領域なんてないはずだからBeginPaintが反応しないはずだと思いますけど
実際文字列表示されますし。

499:デフォルトの名無しさん
16/06/07 16:53:42.50 w2gqx7DJ.net
>>484
UpdateWindow()

500:デフォルトの名無しさん
16/06/07 17:02:56.06 RY15Skw4.net
>プログラムの最初はそもそも無効領域なんてないはず
いやいや

501:デフォルトの名無しさん
16/06/07 17:24:17.39 DjDItv96.net
あれ理解してないかな俺
無効領域ってのは一端描画されて、他のアプリで消された領域っていう
理解ですけど…

502:デフォルトの名無しさん
16/06/07 19:25:51.81 NYG4EICE.net
それは勝手なお前の思い込みだから知らない

503:デフォルトの名無しさん
16/06/07 21:36:26.14 L0Kpz/xt.net
>>486
無効領域は「描画の必要がある領域」だからそういう場合「にも」無効領域は発生する。
後はInvalidateRect()が無効領域を発生させる関数だし、CreateWindow()の後は画面全体が
無効領域になってるからその旨をUpdateWindow()で知らせてやることで1回目のWM_PAINTがよばれる。
>>484には書いてないけどCreateWindow()の後メッセージループに入る前に使ってるでしょ?

504:デフォルトの名無しさん
16/06/08 07:27:04.52 ZY4F9/6a.net
別に UpdateWindow() を呼んだりしないけどね

505:デフォルトの名無しさん
16/06/08 10:25:31.59 AssKLBZs.net
>>489
>>無効領域は「描画の必要がある領域」だからそういう場合「にも」無効領域は発生する。
なるほどそうですよね。すいません僕がバカでこのような考えできませんでした。

506:デフォルトの名無しさん
16/06/08 11:25:15.46 AssKLBZs.net
やっぱりわからないw
描画の必要がある領域っていうのは
プロシージャ呼ばれる前にはわからないんじゃ?
だってプロシージャ内でどう描くか記述してるんだから。
それなのに再描画必要っていってプログラム起動してしょっぱなに
WM_PAINTが発行されるのは何故なんですか?

507:デフォルトの名無しさん
16/06/08 11:25:39.49 AssKLBZs.net
と思ってしまいます。

508:デフォルトの名無しさん
16/06/08 11:33:32.92 WRRf0iRn.net
(再)描画管理はOS(とウインドウマネージャ)の仕事
ウインドウが非表示から表示になったとか裏から表に出たとか
いろんなケースで
WM_PAINT が送られる

509:デフォルトの名無しさん
16/06/08 11:35:39.56 WRRf0iRn.net
"再"描画 とかリフレッシュとかいう言葉に勘違いするのはよくある罠かな
無効化というより未処理化というのがわかりやすい
描く内容が変わったから画面更新(の指示)するのはアプリケーションの仕事
ウインドウ全体もしくはその一部を塗り直し箇所としてマーキングする
そこから先は上の再描画と同じ流れ

510:デフォルトの名無しさん
16/06/08 11:36:07.17 lMpdbKpY.net
>プロシージャ呼ばれる前にはわからないんじゃ?
何故そう思ってしまうのかが逆に全然わからない
CreateWindow直後はウインドウ全体が「描画の必要がある領域」だっていうのはシステムは当然わかってるよ

511:デフォルトの名無しさん
16/06/08 11:44:43.23 XFtKz/Go.net
どう言ったら理解できるのかがもはやわからないんだけど
真っ白な紙を渡されたら、何も書かれてない、つまり無効領域だから
何か書かなければならないのは分かるよね
もはや何のたとえ話かも�


512:墲ゥらないけど 普通の人はそんなところでつまずかないから相当気合い入れたほうが良い



513:デフォルトの名無しさん
16/06/08 16:07:34.37 ZLPAH2q/.net
>>492
簡単に言うとシステムがウィンドウの状態を見てる
そんで、被さってたウィンドウがどいたとか裏に隠れてたけど表に出てきたとか
最小化から元のサイズに戻ったとか最大化されたとかの時に無効になった(再描画が必要になった)として
WM_PAINTを送ってくれる

514:デフォルトの名無しさん
16/06/08 16:17:29.92 ZLPAH2q/.net
あ、プログラム起動してしょっぱなか
プログラムを起動してウィンドウが表示されるとクライアント領域の内容も
描画しないといけないということで、クライアント領域は無効な描画領域状態(描画が必要な状態)
なのでWM_PAINTを送ってくれる

515:デフォルトの名無しさん
16/06/09 09:07:11.76 enLYes+t.net
文字が切れて描画の必要があるときはWM_PAINTが呼ばれる事は理解しました。
ただプロシージャ自体は再描画する必要があるというイベントしか受け取って
ないわけですよね。実際TextOutで文字全体を表示しなければならないし。
では例えば具体的に今何ピクセルの情報が欠損してるかなど、
欠損してる位置などを記憶してるオブジェクトは何にあたるんでしょうか?
これはWM_PAINTが呼び出される時ではなく、切れた時点で発動するオブジェクトだと思うんですけど。

516:デフォルトの名無しさん
16/06/09 09:20:40.17 dIu2vu4F.net
ここまでの話で何度も出てるだろ…

517:デフォルトの名無しさん
16/06/09 09:34:06.31 enLYes+t.net
BeginPaint(hwnd , &ps); ですか?
hwnd→単なるウインドウのハンドル
ps→PAINTSTRUCT ps;でプロシージャで定義してるからこれではない

518:デフォルトの名無しさん
16/06/09 10:01:48.91 vUW3kMHA.net
これまでの話で、デバイスコンテキストが無効領域を管理してるんだな
と、思いつかないのは、思考方法に欠陥がある。
BeginPaintをしっかり調べりゃ、
必ずしも文字全体を再描画する必要がないことだってわかるはずだ

519:デフォルトの名無しさん
16/06/09 10:08:05.78 Sr66m38T.net
PAINTSTRUCTのフィールド確認した?
BeginPaintを呼んだ後、何が格納されるか確認した?

520:デフォルトの名無しさん
16/06/09 10:10:14.15 enLYes+t.net
いやいやデバイスコンテキストが無効領域を管理してるか
もしくは参照してるかはBeginPaint見ないと分からないですね。
参照していることを管理してると意味付けしたら別ですが。

521:デフォルトの名無しさん
16/06/09 10:11:28.60 enLYes+t.net
>>504
怠っていました。
つまりTextOut(文字列)としなくても良いってことがわかったので
そんなコード書いてみますね。

522:デフォルトの名無しさん
16/06/09 10:23:16.19 CDrC/h56.net
PAINTSTRUCT構造体
URLリンク(msdn.microsoft.com)
RECT rcPaint が 無効領域の情報を保持しているメンバ
デバイスコンテキスト経由でPAINTSTRUCT構造体を参照すれば
ps->rcPaint.leftが無効領域の左端のx座標、ps->rcPaint.topが同y座標(以下略
などで無効領域の位置が分かる

523:デフォルトの名無しさん
16/06/09 10:46:09.86 EpB3wgru.net
描画するハンドルなのにデバイスコンテキストとか糞みてぇなネーミング

524:デフォルトの名無しさん
16/06/09 10:57:53.63 M6gePxQX.net
ただ、デバイスコンテキストが無効領域を管理しているというのは、何か違うと思うけどね
強いていれば、ウィンドウを管理している何かが無効領域を管理している、と言えるかもしれない
我々の目で見える部分でいえば、HDCというよりは、HWNDが無効領域を覚えている
HWNDを指定してBeginPaintを呼び出すと、これが拾えることからも分かる通り
ただ、例の彼にとってはどうでもよいことだけどね
また良くわからないズレた書き込みをしているようだし

525:デフォルトの名無しさん
16/06/09 11:05:28.94 CSH5zx3A.net
>>508
本来はプリンタを意識した設計
プリンタに対する制御命令の羅列をなんとか抽象化して画面とそろえたもの

526:デフォルトの名無しさん
16/06/09 11:05:47.81 PDv6puL4.net
HWNDが覚えているというよりは
HWNDが色んな情報と関連付けられている

527:デフォルトの名無しさん
16/06/15 21:39:02.30 mjbwSP1S.net
              【Win10】    こんな犯罪級OS薦めんなよwww   ↓   【スパイウェア】

この使用許諾契約書には書かれています
”最後にあなたのコンテンツを含む個人データ(例えばあなたの電子メールの内容や―プライベート通信やプライベートフォルダ内のファイル)にアクセスし―開示し保全します”
開示する ここ重要だよ
契約がなければ通常 高度な違法行為になりうることです それはあなたが自分の意思としてこの契約書に同意したのです
URLリンク(www.youtube.com)

【被爆大量死】   ペットを保健所で殺処分するように国民を殺戮する自民・東電・フクシマ応援テロリスト  【放射能犯罪】

りうなちゃんは去年の暮れ、脳腫瘍のために亡くなった。2歳を過ぎたころ「放射能があるから砂は触れない」「葉っぱは触っちゃだめ」
URLリンク(twitter.com) oyaMorishita/status/648628684748816384
UFOや核エネルギーの放出を見ることはエーテル視力を持つ子供たちがどんどん生まれてくるにつれて次第に生じるでしょう。
マイト レーヤは原発の閉鎖を助言されます。
マイト レーヤによれば、放射能は自然界の要素を妨害し、飛行機など原子のパターンが妨害されると墜落します。
マイト レーヤの唇からますます厳しい警告と重みが発せられることを覚悟しなさい。彼はいかなる人間よりもその危険をよくご存じです。
福島県民は発電所が閉鎖されれば1年か2年で戻って来られるでしょう。
日本の福島では多くの子どもたちが癌をもたらす量の放射能を内部被ばくしています。健康上のリスクは福島に近づくほど、高まります。
日本の近海から採れた食料を食べることは、それほど安全ではありません。汚染されたかもしれない食料品は廃棄すべきです。
日本もさらに多くの原子力発電所を作ろうとしています。多くの人々が核の汚染の影響で死んでいるのに、彼らは幻想の中に生きています。
問題は、日本政府が、日本の原子力産業と連携して、日本の原子力産業を終わらせるおそれのあることを何も認めようとしないことです。


次ページ
最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch