[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2chのread.cgiへ]
Update time : 06/22 11:35 / Filesize : 228 KB / Number-of Response : 1002
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

Win32API質問箱 Build52



1 名前:デフォルトの名無しさん [2007/04/18(水) 01:54:51 ]
スレ立てるまでもない、Win32APIのついての質問はこちらへどうぞ。
やさしいお兄さんやお姉さんたちが答えてくれるかも。

過去スレ、関連リンクは>>2-5くらい。

■注意
・質問する前にMSDNライブラリやPlatformSDK、Google等で検索しましょう。
・日本語版MSDN Online Libraryは不完全です。英語版(msdn.microsoft.com/library/)の利用推奨。
・APIフックなど高度な事をしたい場合はできるだけAdvenced Windowsを読みましょう。
・言語特有の問題やIDE、MFCやVCLなどの質問はそれぞれの言語や開発環境スレで

131 名前:デフォルトの名無しさん mailto:sage [2007/04/20(金) 21:12:23 ]
>>96
>行開始位置のポインタをとりつつ\r\nを\0\0に書き換えていく

これポインタ取るのはわかるけど、書き換えは出来ないんじゃね?
バッファってchar*だから一旦配列なり、mallocで取った領域なりに
バッファ丸ごとコピーして、そこを書き換えないと

132 名前:デフォルトの名無しさん mailto:sage [2007/04/20(金) 21:18:26 ]
ファイルマpp(ry

133 名前:デフォルトの名無しさん mailto:sage [2007/04/20(金) 21:21:50 ]
>>131
constでもリテラルでも無い、普通にメモリ上に動的確保したバッファ内の値が書き換えできないと申すか?w

134 名前:デフォルトの名無しさん mailto:sage [2007/04/20(金) 21:25:15 ]
>>131
おまえの言ってるバッファはいったい何のバッファだ?
ReadFileに渡すようなバッファがWriteAccess不能なメモリ領域だと言うのか?w

135 名前:デフォルトの名無しさん mailto:sage [2007/04/20(金) 21:27:54 ]
バッファの語源はやっぱ水牛?

136 名前:デフォルトの名無しさん mailto:sage [2007/04/20(金) 21:28:26 ]
シリアル通信について質問させて下さい。
通信がうまくできません。

以下は流れです。

CreateFile( "COM1", GENERIC_READ | GENERIC_WRITE, 0, 0, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0 );
GetCommState();
DCBパラメータを書き換え
SetCommState();
GetCommTimeouts();
タイムアウトパラメータを変更
SetCommTimeouts();

WriteFile();       // 1byteのコマンド送信準備
FlushFileBuffers();  // 送信
ReadFile(); // 1byte受信(受信できるまで10回繰り返し)

0x0Fを送れば、0xF0が返ってくるはずなのですが
何も返ってこなくて。手順的な見落としなどがあれば
ご指摘頂けると幸いです。

秋月のTDS01Vというセンサーキットを自前のプログラムで
読んでみようと始めたのですが、最初から躓きました。

センサーの動作は添付のプログラムで正常動作を確認しています。
全てのAPIからはエラーは返ってきていません。

137 名前:デフォルトの名無しさん mailto:sage [2007/04/20(金) 21:34:21 ]
どんな引数を指定しているかも
DCBの設定内容も隠してどこがいけない?と聞かれてもな・・・

138 名前:デフォルトの名無しさん mailto:sage [2007/04/20(金) 21:43:23 ]
>>137
申し訳ない、行数制限に引っかかったので
どこを削ろうかなと。

DCBはGetした後は、キットのドキュメントにある
パラメータをセットしてるつもりです。
(他はGet時のまま)
m_CommDCB.BaudRate = CBR_9600; // 9600bps
m_CommDCB.fBinary = TRUE; // bynary mode:always TRUE
m_CommDCB.fParity = FALSE; // parity no check
m_CommDCB.ByteSize = 8; // byte size
m_CommDCB.Parity = NOPARITY; // no parity
m_CommDCB.StopBits = ONESTOPBIT;// 1 stop bit

タイムアウトはWeb上でみつかったサンプルの値を引っ張って
来ています。
m_CommTimeouts.ReadIntervalTimeout = 100;
m_CommTimeouts.ReadTotalTimeoutMultiplier = 10;
m_CommTimeouts.ReadTotalTimeoutConstant = 500;
m_CommTimeouts.WriteTotalTimeoutMultiplier = 10;
m_CommTimeouts.WriteTotalTimeoutConstant = 500;

bRtn = WriteFile( m_hCommHandle, m_pTxBuff, 1, &dwCount, NULL );

FlushFileBuffers( m_hCommHandle );

dwCount = 0;
for ( int i = 0; i < 10 && dwCount == 0; i++ ) {
bRtn = ReadFile( m_hCommHandle, m_pRxBuff, 1, &dwCount, NULL );
// 戻り値チェックしながらリトライループ
}
ここで、for文が10回回って出てきてしまいます。dwCountは0のまま

139 名前:デフォルトの名無しさん mailto:sage [2007/04/20(金) 21:52:46 ]
bRtnは確認したの?



140 名前:デフォルトの名無しさん mailto:sage [2007/04/20(金) 21:56:33 ]
>>139
レスありがとうです。
上のソースは抽出でして、全てのAPIの戻り値は
チェックしていて、エラーが返ってきていないことは
確認しています。

141 名前:デフォルトの名無しさん [2007/04/21(土) 00:51:40 ]
>>140はCOMポートを増設してクロスケーブルを買ってくるべきだな。
で、ケーブルで首ry

142 名前:デフォルトの名無しさん mailto:sage [2007/04/21(土) 15:04:40 ]
タブコントロールをEnableWindow()で無効にしても、
タブの文字が淡色表示にならないのだがそういう仕様?

143 名前:デフォルトの名無しさん mailto:sage [2007/04/21(土) 15:09:15 ]
そう

144 名前:デフォルトの名無しさん mailto:sage [2007/04/21(土) 18:45:17 ]
GRAYEDにしなさい?

145 名前:デフォルトの名無しさん [2007/04/21(土) 19:34:52 ]
>>141
ワロタw

まさに泣いて馬超を斬るを地でいった訳かw

146 名前:デフォルトの名無しさん mailto:sage [2007/04/21(土) 20:07:28 ]
CreateWindowのEDITで、文字を入力してENTERを押したときに動作を設定したいのですが、
どうすればいいのでしょうか?EDITにフォーカスがないときには出来るのですが、
EDITにフォーカスがあるときは改行されてしまいます。

147 名前:デフォルトの名無しさん mailto:sage [2007/04/21(土) 20:16:09 ]
サブクラス化

148 名前:デフォルトの名無しさん mailto:sage [2007/04/21(土) 20:26:13 ]
>>146
エディットコントロールをマルチラインに設定するのをやめる。

149 名前:デフォルトの名無しさん mailto:sage [2007/04/21(土) 20:32:12 ]
>>148
メッセンジャーみたいな感じで、Shift(Ctrlだったかも)+Enterで改行、
通常のEnterで別の動作みたいな感じにしたいのですが、
マルチライン設定だと無理なのでしょうか?



150 名前:デフォルトの名無しさん mailto:sage [2007/04/21(土) 20:32:44 ]
>>149
>>147

それが理解できないならまだ早いということ

151 名前:デフォルトの名無しさん [2007/04/22(日) 00:31:32 ]
XP Homeでファイルのアクセスをプログラム側で検出することは出来ますか?
Proならファイルの監査が利用できるですが。

152 名前:デフォルトの名無しさん [2007/04/22(日) 02:03:44 ]
>>151
おまえのエクスプローラーはどうなってる?それが答えだ。

153 名前:デフォルトの名無しさん mailto:sage [2007/04/22(日) 02:21:35 ]
フォルダの変更は監視できたと思うけど。

154 名前:デフォルトの名無しさん mailto:sage [2007/04/22(日) 02:22:31 ]
>>151
理屈から考えて出来るはず。

155 名前:デフォルトの名無しさん mailto:sage [2007/04/22(日) 06:10:46 ]
逆にpro側の監査機能が良くわからないがfilemonのようなことしたいのかな?


156 名前:デフォルトの名無しさん mailto:sage [2007/04/22(日) 10:12:32 ]
ReadDirectoryChangesW

FILE_NOTIFY_CHANGE_LAST_ACCESS
監視中のディレクトリ、またはサブツリーで前回のファイルアクセス日時が変更されると、
変更通知の待機操作から制御が返ります。

157 名前:151 mailto:sage [2007/04/22(日) 11:11:30 ]
>>152-156
レスありがとうです。
ReadDirectoryChangesWなどでは、なんらかの更新が発生しないとダメな気がします。
(今から確認します)

簡単に試してみると、メモ帳でテキストファイルを開いても"アクセス日時"が変わらないような。。。

158 名前:151 mailto:sage [2007/04/22(日) 11:14:24 ]
連投申し訳ないです。
>>155
そうですね。filemonの簡易版(最低限アクセスがあったことをトリガーにしたい)のです。

159 名前:デフォルトの名無しさん mailto:sage [2007/04/22(日) 11:17:44 ]
監査かけてイベントビューアからゲット



160 名前:デフォルトの名無しさん [2007/04/22(日) 11:20:19 ]
仮想リストビューでカラム幅を調整する方法を教えてください。

リストビューは詳細表示。ダイアログは使わずにCreateWindowで作ってます。

普通のリストビューを使っていたときはヘッダとデータを全部作り終わった後に
カラム数分 ListView_SetColumnWidth(ハンドル, インデックス, LVSCW_AUTOSIZE) をしていました。
仮想リストビューに変更してLVN_GETDISPINFOのときに
ListView_SetColumnWidth(ハンドル, pDispInfo->item.iSubItem, LVSCW_AUTOSIZE);
をやったら固まりました。

環境:VC6, SDK

161 名前:デフォルトの名無しさん mailto:sage [2007/04/22(日) 11:20:59 ]
>>159
最初はそうしようと思ったんだけど、XP homeって監査がないんです。


162 名前:デフォルトの名無しさん mailto:sage [2007/04/22(日) 11:39:44 ]
>>160
LVSCW_AUTOSIZEするためにはその列の一番長い文字列の幅が必要だから
そのときにLVN_GETDISPINFOが呼ばれて無限ループになってるんじゃね?

163 名前:デフォルトの名無しさん mailto:sage [2007/04/22(日) 11:55:51 ]
ファイルアクセスをHOOK

164 名前:160 mailto:sage [2007/04/22(日) 12:02:08 ]
LVSCW_AUTOSIZEは使えなさそうですね。
他のタイミングで幅調整するしかないか。

165 名前:151 [2007/04/22(日) 12:09:48 ]
>>163
えっと、それはSetWindowsHookExを利用したHOOK機能のお話しでしょうか。
調べ切れていないかもしれませんが、ファイルアクセスに関するものは見つかりませんでした。

それとも ruffnex.oc.to/kenji/text/api_hook/
のような、概念的なフックの話で、代替DLLを用意して
起動しているプロセス全てのエントリポイントを塗り替えるお話でしょうか。

166 名前:デフォルトの名無しさん mailto:sage [2007/04/22(日) 12:23:31 ]
explorer.exeだけならCreateProcess系のフックで何とかなると思うけど
Windows全体ってことになるとカーネルモードのお仕事になる気がする

CreateProcessにしても思いつきで言ってるうえ、あまりにもスマートじゃないが

167 名前:デフォルトの名無しさん mailto:sage [2007/04/22(日) 12:31:53 ]
って
ファイルに触る=>CreateProcess=>ファイルパスの取得
が100%成り立つって前提じゃないとだからたぶん無理か
スマソ

168 名前:デフォルトの名無しさん mailto:sage [2007/04/22(日) 12:39:27 ]
何らかの変更が加えられたときだけでいいならFindFirstChangeNotificationなどが使えるような気がする

169 名前:デフォルトの名無しさん mailto:sage [2007/04/22(日) 12:42:40 ]
>>168
>>157-158を見てそういう話が出てくるか普通w

で、その上で、ファイルの監視なんて変更が加えられた時でいいと思うんだがな
開かれたからって、なんかあるか?



170 名前:デフォルトの名無しさん mailto:sage [2007/04/22(日) 12:47:20 ]
>>142 だけど、どなたか淡色表示する方法教えてください。
なるべく簡単な方法で具体的だと助かります。


171 名前:デフォルトの名無しさん mailto:sage [2007/04/22(日) 13:37:59 ]
オーナードロー

172 名前:151 mailto:sage [2007/04/22(日) 13:47:32 ]
>>169
特定ファイルへのアクセスのロギングがしたいのです。。。
やっぱり難しそうですね。

173 名前:デフォルトの名無しさん mailto:sage [2007/04/22(日) 14:09:59 ]
>>151
Home EditionでもUIがないだけで監査の機能自体は存在する。
したがってこのスレ的な回答は「Audit Policy関数を駆使して何とかしろ」
msdn2.microsoft.com/en-us/library/aa375742.aspx

174 名前:151 mailto:sage [2007/04/22(日) 14:30:52 ]
>>173
>UIがないだけで監査の機能自体は存在する

そうだったんだ! 無知でした。
解決できそうです。ありがとうございます!

175 名前:デフォルトの名無しさん mailto:sage [2007/04/22(日) 14:31:06 ]
ロードランナー

176 名前:デフォルトの名無しさん mailto:sage [2007/04/22(日) 14:59:39 ]
初期のNTからある物をわざわざ外すわけないじゃん

177 名前:デフォルトの名無しさん mailto:sage [2007/04/22(日) 15:02:18 ]
ですよねー^^

178 名前:151 mailto:sage [2007/04/22(日) 15:46:42 ]
うーん、LoadLibraryでadvapi32.dllを取り込んで
GetProcAddressしてAuditFreeとかAuditSetSystemPolicyを見つけようとしても
null返してくる。
GetLastErrorは"指定したプロシージャが見つからない(127)"でした。

>>173のページの説明でもclientは"Requires Windows Vista."ってなっていて
やっぱりXP homeでは駄目なんでしょうか。。。

179 名前:デフォルトの名無しさん mailto:sage [2007/04/22(日) 17:14:55 ]
>>178
すまん、Vistaでしか確認してなかった。XP以前だとこのあたり使うのかな
AddAuditAccessAce (WinNT 3.1)
AddAuditAccessAceEx (Win2k)
AddAuditAccessObjectAce (Win2k)



180 名前:デフォルトの名無しさん mailto:sage [2007/04/22(日) 17:40:38 ]
>>179
ご丁寧にありがとうございます!
GetProcAddressで確認できました。今からヘルプ読みます。

181 名前:デフォルトの名無しさん mailto:sage [2007/04/22(日) 19:19:45 ]
>>180
> GetProcAddressで確認できました。
DependencyWalkerで確認したほうが手っ取り早くね?

182 名前:デフォルトの名無しさん mailto:sage [2007/04/22(日) 19:43:28 ]
>>181
VCならな

183 名前:デフォルトの名無しさん [2007/04/22(日) 19:47:55 ]
[Ctrl]+[A]とかをシミュレートしたいのですがどうやるんでしょうか?
SendMessage(hWnd, WM_KEYDOWN, VK_CONTROL, 0);
SendMessage(hWnd, WM_KEYDOWN, 'V', 0);


184 名前:デフォルトの名無しさん mailto:sage [2007/04/22(日) 19:56:43 ]
>>183
SendInputかkeybd_event

185 名前:デフォルトの名無しさん mailto:sage [2007/04/22(日) 19:57:57 ]
>>182
VCである必要はないと思うが

186 名前:デフォルトの名無しさん mailto:sage [2007/04/22(日) 20:00:42 ]
VC買わないと手に入らないと思ってるんじゃね? Platform SDKに付いてる。

187 名前:デフォルトの名無しさん mailto:sage [2007/04/22(日) 20:05:15 ]
PSDKについてくるし
ttp://www.dependencywalker.com/
で単独で配布しとるぞ。

188 名前:デフォルトの名無しさん mailto:sage [2007/04/22(日) 20:07:35 ]
知らんヤツの方が多いんじゃね?

189 名前:デフォルトの名無しさん mailto:sage [2007/04/22(日) 20:16:56 ]
ウィンドーを作らないプログラムの場合
タスクバーの右端にアイコンを追加することは出来ますか?



190 名前:デフォルトの名無しさん mailto:sage [2007/04/22(日) 20:25:10 ]
>>183
WM_KEYDOWNはSendMessageで送っては駄目。
PostMessageを使う必要がある。

詳しいことは、PostMessageとSendMessageの違いと
TranslateMessageの働きを勉強してくれ。

191 名前:デフォルトの名無しさん mailto:sage [2007/04/22(日) 20:41:47 ]
>>189
出来る。ただしメッセージは受け取れない。

192 名前:デフォルトの名無しさん mailto:sage [2007/04/22(日) 20:42:55 ]
>>189
確かできると思うけど、非表示のウィンドウでいいから用意しとかないとイベントを受け取れんぞ。

193 名前:デフォルトの名無しさん mailto:sage [2007/04/22(日) 20:44:05 ]
>>189
非表示でウインドウを作ればいいだろ。
知恵が足りない。

194 名前:デフォルトの名無しさん mailto:sage [2007/04/22(日) 22:52:21 ]
かぶりすぎ

195 名前:デフォルトの名無しさん mailto:sage [2007/04/22(日) 23:11:09 ]
98、Me、XPで動いて欲しいソフトを作っているんですけど、
始めにGetVersionExのdwMajorVersionが
10、90、1かであるかチェックすれば大丈夫でしょうか。
dwMajorVersionが同じでもdwPlatformIdが違うとかはないでしょうか。

196 名前:デフォルトの名無しさん mailto:sage [2007/04/22(日) 23:18:50 ]
OSVERSIONINFO
msdn2.microsoft.com/en-us/library/ms724834.aspx


197 名前:デフォルトの名無しさん mailto:sage [2007/04/22(日) 23:19:33 ]
> dwMajorVersionが 
> 10、90、1かであるかチェックすれば大丈夫でしょうか
Windows の Version 90 か…
>>195は未来を進んでるなぁー


それはそうと↓を良く見れ。
msdn2.microsoft.com/en-us/library/ms724834.aspx

198 名前:デフォルトの名無しさん mailto:sage [2007/04/22(日) 23:20:50 ]
リロードしたらほんとうにかぶりすぎてて吹いた

199 名前:デフォルトの名無しさん mailto:sage [2007/04/22(日) 23:21:29 ]
>>195
user32.dll,kernel32.dllあたりのリンクの仕方次第では、
そんなんチェックする前にDLLのバージョン不整合で落ちるぞ。



200 名前:デフォルトの名無しさん mailto:sage [2007/04/22(日) 23:29:03 ]
別次元の話だけど、俺ならまずWINVERと_WIN32_WINDOWSを0x0410にする。

それはともかく、2003/Vista及びそれ以降で動かせるようにするつもりはないのか?
まあ、そのつもりがなくても互換性モードをオンにすれば動かされるだろうが。

201 名前:195 mailto:sage [2007/04/22(日) 23:39:48 ]
ありがとうございます。

>>196
日本語のは見ていたんですけど、さっぱりだったもので。

>>197
90の使い方間違っていますか?下位をチェックするとかですかね。
飛びぬけて数字が大きいので違和感はあったんですけど。

>>199
VC2005で作られたソフトを実行すると、始めに**dllが
見つからないとか出て、実行できないのがありますがそれですかね。
それなら危険がない?と思うので逆にいいんですけど。

>>200
PCを持っているなら、もちろん動かせるようにしたいんですけど、
98、Me、XPしかないので、チェックのしようがないです。

202 名前:デフォルトの名無しさん mailto:sage [2007/04/22(日) 23:48:37 ]
>>201
> 始めに**dllが
そりゃSxSだろ。manifestをちゃんと書いてやれば見つけてくれる。

203 名前:デフォルトの名無しさん mailto:sage [2007/04/22(日) 23:51:01 ]
>>201
いや、動作確認しなくても「保障はしないよ」くらいは言えるでしょ。
GetVersionInfoExの結果が想定していないバージョンだったら一律に実行を拒否する、なんて
コードを書いているのでもない限り。

204 名前:195 mailto:sage [2007/04/23(月) 00:08:27 ]
>>202
それとは違いましたか。
そちらについても勉強したいと思います。

>>203
さすがに、「98、Me、XP以外なので実行できません」
と出て終了は良くないですかね・・。

よくMSDNに9x系では○○、NT系では○○と、
分かれても2パターンである事が多いので、
それがMajor4、5であると考えると、
他のOSでもそれなりに動いてくれる気もします。

有名どころで、LoadImageはNT系でファイルから開けないとか、
タイマーの精度で9x系は55ミリ秒とかありますが、
そういうのは性能が落ちる方に合わせては作っています。

205 名前:デフォルトの名無しさん [2007/04/23(月) 00:23:14 ]
ステータスバーの右下についてる
SIZEGRIPのみ表示させるってできますか?

206 名前:デフォルトの名無しさん mailto:sage [2007/04/23(月) 00:31:13 ]
>>205
SCROLLBAR
SBS_SIZEGRIP
あたりでググってみ

207 名前:デフォルトの名無しさん mailto:sage [2007/04/23(月) 00:34:27 ]
>>204
想定より新しいバージョンのOSは、基本的に受け入れるチェックコードでないと駄目、
って昔のMSDNで見た記憶がある。
特殊なアプリで無ければ、マニュアルに動作保障OS列挙しとけば
チェックコード自体要らないけどな。

208 名前:デフォルトの名無しさん [2007/04/23(月) 00:34:45 ]
わかりました!
ありがとう

209 名前:デフォルトの名無しさん mailto:sage [2007/04/23(月) 00:39:18 ]
> LoadImageはNT系でファイルから開けない
本当?MSDNには何も書いていないけど
msdn2.microsoft.com/en-us/library/ms648045.aspx



210 名前:デフォルトの名無しさん mailto:sage [2007/04/23(月) 01:03:56 ]
ググってみたけどよく分からん。
NT4.0初期の頃に問題があってSPで修正された、ってことかなあ。
少なくとも2000以降なら問題無いはず。

211 名前:デフォルトの名無しさん mailto:sage [2007/04/23(月) 01:52:19 ]
DialogBoxで呼び出すCALLBACK関数に引数としてポインタを渡したいのですが
出来ますでしょうか?

212 名前:デフォルトの名無しさん mailto:sage [2007/04/23(月) 01:57:03 ]
>>211
DialogBoxParamを使え

213 名前:211 mailto:sage [2007/04/23(月) 02:02:13 ]
>>212
こんな時間にサンクス
ちょっとやってみる

214 名前:195 mailto:sage [2007/04/23(月) 05:00:50 ]
>>207
なるほど、分かりました。

>>209>>210
何年か前はLR_LOADFROMFILEはNT系では使えない
となってたと思うんですけど、仰るとおり修正されたんだと思います。


215 名前:デフォルトの名無しさん mailto:sage [2007/04/23(月) 07:06:13 ]
>>214
その記述があったのははNT 3.51しか想定してなかったころのすごく古いMSDNライブラリ
英語版はすぐに直ったけど日本語版では長いこと説明が残ったままだった
実際にはちゃんと開ける

216 名前:デフォルトの名無しさん mailto:sage [2007/04/23(月) 08:04:58 ]
Win2000な俺のPCでもLR_LOADFROMFILEできてるからな

217 名前:デフォルトの名無しさん mailto:sage [2007/04/23(月) 08:08:39 ]
UNICODEで書かれている文字列を、strstrで操作した場合、不具合は起きますか?

(strcatならlstrcatのようにUNICODEに対応する関数があるのですが、strstrには
lstrstrが無いようなのです)

218 名前:デフォルトの名無しさん mailto:sage [2007/04/23(月) 08:45:50 ]
strsafe.h で追加された文字列操作関数について
ir9.jp/prog/ayu/strsafe.htm

219 名前:デフォルトの名無しさん mailto:sage [2007/04/23(月) 09:15:34 ]
わかりました!
ありがとう



220 名前:デフォルトの名無しさん mailto:sage [2007/04/23(月) 09:24:43 ]
>>218
UNICODE対応のstrstrが載っていないようなんですけども、strsafe.hの中の関数を使って
自分で作成するのでしょうか??

221 名前:デフォルトの名無しさん mailto:sage [2007/04/23(月) 10:02:21 ]
API関係ないな

222 名前:217 mailto:sage [2007/04/23(月) 10:33:37 ]
自己解決(?)
ぐぐったらUNICODE←→ANSI変換APIが出て来た・・・
なんか面倒な事に・・・

223 名前:デフォルトの名無しさん mailto:sage [2007/04/23(月) 10:36:52 ]
win32apiじゃなくていいなら、wcsstr とかなかったっけ?


224 名前:デフォルトの名無しさん [2007/04/23(月) 11:35:15 ]
RECT wndrc; wndrc.top = 0; wndrc.bottom = 100; wndrc.left = 0; wndrc.right = 100;
int x = wndrc.left; int y = wndrc.top; int w = wndrc.right - wndrc.left; int h = wndrc.bottom - wndrc.top;

hWnd = CreateWindow(szWindowClass, szTitle, WS_OVERLAPPEDWINDOW,
x, y, w, h, NULL, NULL, hInstance, NULL);
if (!hWnd) return FALSE;

RECT rc;
if( ::GetWindowRect( hWnd, &rc ) )
{
if( rc.top == wndrc.top && rc.left == wndrc.left && rc.bottom == wndrc.bottom && rc.right == wndrc.right )
{}
else
{
::MessageBox( 0, "ウィンドウサイズが違います", "?", 0 );
}
}
VC.net2003のwin32のデフォルトで作られるプログラムで
CreateWindowの所を上記の様に変更しました。
そしたら自分の想定していた rc.riight == 100 と反して
rc.right == 112 になっていました。
何故ウィンドウの幅がcreatewindowで指定した値と12も違うんでしょうか?
ちなみにウィンドウプロシージャ等は一切変更していません。

225 名前:デフォルトの名無しさん [2007/04/23(月) 13:56:40 ]
>>183
なるほど。
Postの方で正しく送れました。
ありがとうございました。

>>>>184
SendInputでちょっと下の様に
「A」を入力しるプログラムを書いて実行してみました。
全角入力がONになるみたいなんですが、最後の「変換」の決定(Enterですよね?)の所まで
自動化したい場合はどうすればいいのでしょう?
下のプログラムだと、決定という意味でのEnterは認識されないみたいです…

INPUT inputKey[3];

inputKey[0].type = INPUT_KEYBOARD;
inputKey[0].ki.wVk = 0;
inputKey[0].ki.wScan = 'A';
inputKey[0].ki.dwFlags = KEYEVENTF_UNICODE;
inputKey[0].ki.dwExtraInfo = 0;
inputKey[0].ki.time = 0;

inputKey[1].type = INPUT_KEYBOARD;
inputKey[1].ki.wVk = VK_RETURN;
inputKey[1].ki.wScan = MapVirtualKey(VK_RETURN, 0);
inputKey[1].ki.dwFlags = 0;
inputKey[1].ki.dwExtraInfo = 0;
inputKey[1].ki.time = 0;

inputKey[2] = inputKey[1];
inputKey[2].ki.dwFlags = KEYEVENTF_KEYUP;

SendInput(3, inputKey, sizeof(INPUT));

226 名前:デフォルトの名無しさん [2007/04/23(月) 18:01:42 ]
スクロールバーのサイズを、画面のプロパティで設定した値ではなくアプリ側で
任意に設定する方法はありませんか?
後、Vistaのスクロールバーのデフォルト値を教えてください。

227 名前:224 mailto:sage [2007/04/23(月) 19:15:41 ]
タイトルバーが100に収まりきらなかったのが原因ですた。スマソ。

228 名前:デフォルトの名無しさん [2007/04/24(火) 15:48:40 ]
Vistaのように右端に表示領域を確保して、その分デスクトップの作業領域を小さくしたいんですけど、どのように実装したらイイでしょうか。
(他のソフトのウィンドウ表示を最大化にしても、右端に確保した領域にかぶらないようにしたい)
以上です、よろしくお願いいたします。


229 名前:デフォルトの名無しさん mailto:sage [2007/04/24(火) 16:37:32 ]
AppBarのことか?
SHAppBarMessageでググってみ



230 名前:デフォルトの名無しさん mailto:sage [2007/04/24(火) 16:38:05 ]
>>228
OSが分からないと何とも言えないけど、Application Desktop Toolbarsじゃ駄目?

231 名前:デフォルトの名無しさん [2007/04/24(火) 18:01:09 ]
複数ウィンドウを作成したい場合は
どうすればいいのでしょうか






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<228KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef