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


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

Win32API質問箱 Build42
251 名前:デフォルトの名無しさん :2006/04/23(日) 10:49:19
他のアプリから文字を取ってきたりするけど

252 名前:デフォルトの名無しさん :2006/04/23(日) 11:33:39
プロセス間のデータ受け渡しで悩むならわかるが
スレッド間で悩む必要なんてなかろうに。

253 名前:デフォルトの名無しさん :2006/04/23(日) 19:12:45
動的に確保したメモリを指すポインタを渡した時にどっちに解放責任を持たすかで悩むとか

254 名前:デフォルトの名無しさん :2006/04/23(日) 19:16:53
IInterfaceみたいに参照カウンタでもつけたらどうだ?

255 名前:デフォルトの名無しさん :2006/04/23(日) 19:17:31
エスパーズが暴走しております

256 名前:デフォルトの名無しさん :2006/04/23(日) 19:18:44
MDIでツールバーを作成する方法を教えてください!!!
自分のなかのSDIの知識だけでしたらおかしくなったのでお願いします。

257 名前:デフォルトの名無しさん :2006/04/23(日) 19:42:00
MDI ツールバー

258 名前:デフォルトの名無しさん :2006/04/23(日) 19:48:36
>>257
参考になりそうなサイトを教えてください(^人^)

259 名前:デフォルトの名無しさん :2006/04/23(日) 19:54:53
>>258
http://www.google.co.jp/

260 名前:デフォルトの名無しさん :2006/04/23(日) 19:57:31
( ̄Д ̄;) ガーン

261 名前:デフォルトの名無しさん :2006/04/23(日) 19:57:39
(^人^)

262 名前:デフォルトの名無しさん :2006/04/23(日) 20:23:45
Give Me Toolbar!!!

263 名前:デフォルトの名無しさん :2006/04/23(日) 20:42:57
>>262
http://toolbar.yahoo.co.jp/

264 名前:デフォルトの名無しさん :2006/04/23(日) 20:57:40
コンソールプログラムを呼び出し、その標準出力をウィンドウが受け取ったりするにはどうすればいいの?

265 名前:デフォルトの名無しさん :2006/04/23(日) 21:02:18
>>264
パイプ

266 名前:デフォルトの名無しさん :2006/04/23(日) 21:08:09
>>196
CreateFile関数でファイル作成し、
SetFilePointer関数でlDistanceToMoveを0x7FFFFFFF,
dwMoveMethodをFILE_BEGINで実行。
んで、SetEndOfFile関数を使ったら、
連続した領域は確保できそうな気がする。

ただ、CloseHandle関数を実行する前に、
もう一度、SetFilePointer関数とSetEndOfFile関数を使わんと時間がかかるかも。


試してないけどね。

267 名前:デフォルトの名無しさん :2006/04/23(日) 21:10:16
>>257
まずはこっから
http://www.codeproject.com/atl/ietoolbartutorial.asp

268 名前:デフォルトの名無しさん :2006/04/23(日) 22:10:42
IEのメニューバーのようなツールバーを作ろうとしています。
TrackPopupMenuでメニューを表示しているとき新たに別のサブメニューを表示しなおす場合、
今までのTrackPopupMenu内の処理から抜けなければならないのですがどうするといいでしょうか。

269 名前:デフォルトの名無しさん :2006/04/23(日) 22:30:58
>>265
超さんくすこ

270 名前:デフォルトの名無しさん :2006/04/23(日) 22:42:59
>>268
抜ければ良いんじゃないのかな

271 名前:デフォルトの名無しさん :2006/04/23(日) 22:57:20
MDIでのツールバーはクライアントウィンドウにかくのでしょうか?

272 名前:268 :2006/04/24(月) 00:47:51
>>270
どのようにして抜けたらいいのか分からないのです。。。
TrackPopupMenuがプログラム側に制御を戻す条件ということです。

273 名前:268 :2006/04/24(月) 01:22:06
WM_CANCELMODEを送ったら解決しました。すみません。

274 名前:271 :2006/04/24(月) 02:03:03
どうしてもわかりません。
フレームウィンドウにツールバーを作っても、クライアントウィンドウが上に来て押せなくなります。
だからといってクライアントウィンドウに書いてもウィンドウプロシージャがないために処理が出来ない。

こういった場合はサブクラス化でしょうか?

275 名前:デフォルトの名無しさん :2006/04/24(月) 02:09:29
ツールバーの高さを考慮した上でクライアントウィンドウのサイズを調整すべし

276 名前:271 :2006/04/24(月) 02:23:45
>>275
ということはフレームウィンドウにツールバーを置いてということですよね?
一回試したのですが駄目でした。。。
やり方が間違っているのでしょうか?

case WM_SIZE:
   MoveWindow(hClient, 0, 100, LOWORD(lp),HIWORD(lp),TRUE);
SendMessage(hTool, WM_SIZE, wp, lp);
break;

277 名前:デフォルトの名無しさん :2006/04/24(月) 03:31:03
case WM_SIZE:
SendMessage(hTool, WM_SIZE, wp, lp);
RECT Rect;
GetClientRect(hTool,&Rect);
MoveWindow(hClient, 0,Rect.bottom,LOWORD(lp),HIWORD(lp)-Rect.bottom,TRUE);
break;

Cはよく分からないんだがこれだとどうなる?

278 名前:デフォルトの名無しさん :2006/04/24(月) 06:08:26
FAQだからぐぐったらすぐ見つかると思うよ

279 名前:デフォルトの名無しさん :2006/04/24(月) 10:56:01
ISAPIフィルタからASPのアプリケーション変数に
アクセスする方法があったら教えてください。


280 名前:デフォルトの名無しさん :2006/04/24(月) 12:09:58
シリアル通信をするのにCreateFileでポートを開け、DCB構造体を
GetCommStateで取得してパラメータを設定、SetCommStateで設定、
という手順で初期化してるんだけど、ボーレートを230400にしよう
とするとうまくいかない。

DCB構造体を使用している限り出来ない、ということは何となく理解
したけど、じゃあどうすればいいの?


281 名前:デフォルトの名無しさん :2006/04/24(月) 12:15:40
>>280
まずPCのシリアルポートがその転送速度サポートしてるのか?
普通は115kbpsあたりまでしかサポートしてないと思うが‥‥

282 名前:デフォルトの名無しさん :2006/04/24(月) 12:18:20
>>280
GetCommPropertiesで取れなきゃダメなんじゃね?

283 名前:デフォルトの名無しさん :2006/04/24(月) 12:25:39
イヤです。

284 名前:280 :2006/04/24(月) 13:27:46
即レスありがとう

>>281
デバイスマネージャから確認したところ、115200,230400,460800,921600を
ドライバ的にはサポートしているっぽい。

>>282
早速GetCommPropertiesを確認してみたところ、
commprop.dwSettableBaudの値は268435456でした。

わからん。。。

285 名前:デフォルトの名無しさん :2006/04/24(月) 13:37:17
>>284
見るべきは、dwMaxBaudの方じゃないか?

286 名前:デフォルトの名無しさん :2006/04/24(月) 13:39:43
>>284
あと、268435456 = 0x10000000 = BAUD_USERな

287 名前:280 :2006/04/24(月) 13:54:57
>>285
失礼。まちがえてた。dwMaxBaudが268435456。
ちなみにdwSettableBaudは268856176でした。
>>286
なるほど。
つまりこの値ではサポートしているボーレートの上限はわからないのね。



288 名前:276 :2006/04/24(月) 14:04:56
>>277
試してみました
けど、やっぱり結果は同じです。
ツールバーのボタンが見えているのに押せない(..、)

289 名前:デフォルトの名無しさん :2006/04/24(月) 14:10:39
>>287
dwSettableBaudはBAUD_なんちゃらのorが入っている。
つまり、268856176だとBAUD_USERが設定可能でBAUD_57600、BAUD_115200...が設定可能と読む。
逆に例えばBAUD_128K、BAUD_56Kが設定できないとわかる。
まぁ、BAUD_USERでの上限はどうやっても判らん訳で。

290 名前:デフォルトの名無しさん :2006/04/24(月) 15:35:37
もすかすて、ATコマンドでボーレート設定とか?


291 名前:デフォルトの名無しさん :2006/04/24(月) 16:31:12
そりゃModem側の設定だろ

292 名前:デフォルトの名無しさん :2006/04/24(月) 17:20:13
>>288
こっちでも同じ質問してるな

http://forums.belution.com/ja/vc/000/358/12.shtml
MDIでツールバーの使い方

293 名前:288 :2006/04/24(月) 18:18:06
>>292
どうしても早くやり方が知りたいので・・・
すみません

294 名前:デフォルトの名無しさん :2006/04/24(月) 18:25:33
>>293
The Code Projectが一番勉強になる件

295 名前:デフォルトの名無しさん :2006/04/24(月) 19:11:23
レバーコントロールのバンドのタイトルを「(&D)」などとしても下線がつかなかったのですが
どうするとつけることができますか?

296 名前:デフォルトの名無しさん :2006/04/24(月) 21:20:30
誰かNetMeetingのAPIを使って
簡単なサンプルを書いてくれ。

297 名前:288 :2006/04/25(火) 01:28:16
>>277さん、原因がわかりました。
WM_SIZEの処理をしたあとにbreakをしていたのがまずかったです。
つまりその処理の後にデフォルトプロシージャの処理をしてしまっていました。
return 0;に直したら動きました。

298 名前:デフォルトの名無しさん :2006/04/25(火) 06:36:18
>>296
ttp://msdn.microsoft.com/library/ja/default.asp?url=/library/ja/jpdnnetmt/htm/netmtgcom.asp


299 名前:デフォルトの名無しさん :2006/04/25(火) 10:48:00
WriteFileExの成功の判断の方法で質問があります。

MSDN
http://www.microsoft.com/JAPAN/developer/library/jpwinpf/_win32_writefileex.htm

=======
関数が成功すると、0 以外の値が返ります。
=======
WriteFileEx 関数を使う場合、この関数が「成功」を示す値を返していても、それだけでは不十分です。GetLastError 関数を呼び出して、いくつかの条件が「成功」しているだけで、把握するべき他の条件がエラーになっていないかどうかをチェックしてください。=======
とあります。

ここでCreateFile,WriteFileEx,CloseHandleの一連の操作を行うテスト・プログラムにおいて,WriteFileExの戻り値が1になっています。処理は正しく行われています。

しかし,MSDNに関数が成功(0以外の値)のときだけでは不十分との記述があったので念のためGetLastErrorを呼び出すと値が6(ERROR_INVALID_HANDLE)でした。Closeが正常なのでハンドルが無効とは考えにくいです。

とすると関数が1(成功)返し,GetLastErrorがERROR_SUCESSを返さない場合はどう判断すればいいのでしょうか?

300 名前:デフォルトの名無しさん :2006/04/25(火) 12:25:38
>>299
GetLastError()は最後に発生したエラーのコードを返す。
6(ERROR_INVALID_HANDLE)のコードが、
WriteFileEx()の呼び出しで設定されたかどうかを判断すべき。

301 名前:デフォルトの名無しさん :2006/04/25(火) 12:34:35
>>299
GetLastError が ERROR_SUCCESS を返すこと確認するのではなく、
関数が 1 を返すが、アプリ側でさらに処理が必要なケース
(例えば ERROR_MORE_DATA ) について必要な処理を行うようにしてください。

関数が 1 を返し、GetLastError が ERROR_SUCCESS を返すのは、
書き込みが(なぜか)同期的に完了し、コンプリーションルーチンは呼ばれない
ということを示しています(これは0バイトの書き込み以外では珍しいケースです)。
これは成功というより例外的な結果で、アプリが期待しているようにコンプリーション
ルーチンが呼ばれないため、何か特別な対応をする必要が(たぶん)あるでしょう。
(自分で呼ぶとか)。

・・・「例えば」とありますが、ERROR_MORE_DATAとERROR_SUCCESSの2つ以外の
どんな値に対応する必要があるのかは謎です。たぶんこの2つだけでOKなのでしょう。

302 名前:デフォルトの名無しさん :2006/04/25(火) 12:42:43
>>299
WriteFileExって非同期で書き込みオーダーを出してるだけなんじゃね?
OVERLAPPEDがあるから、FDなど遅い媒体への書き込みとか試してみた?

303 名前:デフォルトの名無しさん :2006/04/25(火) 12:43:43
>>299
まずは、(Exのついていない)WriteFile()を使って非同期書き込みを行うプログラムを書いて見ることを強く勧める。
そうすれば、「WriteFileEx 関数を使う場合、この関数が「成功」を示す値を返していても、それだけでは不十分です。」
の意味が理解できると思う。

>>300のコメントにあるようにWriteFileExが非0を返したあとにGetLastErrorを呼んでも無意味。
GetOverlappedResultが0を返したとき、GetLastErrorを使う。


304 名前:デフォルトの名無しさん :2006/04/25(火) 13:09:11
横から>>301に補足
>関数が 1 を返すが〜
戻り値の型がBOOLやbool値の関数の成否を確認する際は
TRUE/trueとの比較はせず、FALSE/falseと比較にしませう

305 名前:デフォルトの名無しさん :2006/04/25(火) 14:19:07
誘導されてきました。質問です。
エクスプローラみたいなものを作っていて、縮小版表示アイコンを表示させたいです。
画像のサムネイル表示は出来ましたが、画像以外ファイルのアイコンで
エクスプローラで表示されているような
黒枠の中に小さいアイコンがぽつんとあるアイコンが取れません。
32*32のアイコンを引き伸ばして表示することは現在可能です。
IExtractImage, IExtractIcon, SHGetFileInfoなどつかいましたが同じ状況です。
開発環境はWin2000, VC++6.0です。

また、IExtractImageで取得・表示しているサムネイル画像ですが、
Win2000だと表示できるのに、WinXPだと表示できない画像がまれにあります。
IExtractImageで取得したBitmapをImageListに追加するときに
エラーが起こっているようです。XPでコンパイルしてもダメでした。
このような現象になったことがあるかたいらっしゃいませんか?

306 名前:デフォルトの名無しさん :2006/04/25(火) 14:26:37
激しくスレ違いで、大変申し訳ないでつが、
GIF8ビット深さのファイルの(PixelFormat.Format8bppIndexed)
各ピクセルの色を表現するには、0〜255の数字によりますよね。
0が黒で、
1が__色で、
2が__色で、



GIF256色の一覧表って、どのサイトに掲載されているか
教えていただけませんか?かなり困ってます・・・くぅ〜
(探したのですが、僕の探し能力ではみつかりませんでした)

307 名前:デフォルトの名無しさん :2006/04/25(火) 14:29:36
ファイルの中にカラーテーブル持ってる

308 名前:306 :2006/04/25(火) 14:30:56
>>307
いま、307がものすごくいいこといった!!
そこをもっと詳しく・・・(・д・)

309 名前:デフォルトの名無しさん :2006/04/25(火) 14:32:28
なんか .NET っぽいな。
Image に Palette プロパティがあるだろ。

310 名前:306 :2006/04/25(火) 14:34:50
>>309
どうして.Netだとすぐばれる・・・○rz

Bitmap bitmap1=new Bitmap(fs);
fs.close();

bitmap1.Palette・・・ほんとだ、それらしいのありました。



ってことは、ビットマップインスタンスを
ロックビットして、unsafeでバイト配列を観察していく
方法はだめだったのか・・・くぅ

311 名前:デフォルトの名無しさん :2006/04/25(火) 14:35:34
つーか、0が黒とは限らないしそもそもAPIに関係ないだろ。

312 名前:306 :2006/04/25(火) 14:36:44
>>311
>>つーか、0が黒とは限らないし
いま、311がものすごくいいこといった!!!

>>311
>>そもそもry


306 :デフォルトの名無しさん :2006/04/25(火) 14:26:37
激しくスレ違いで、大変申し訳ないでつが、



313 名前:306 :2006/04/25(火) 14:40:21
ってことはbitmapインスタンスをLockBitsして
1バイトごと順番に観察していくだけでは、
画像の中に赤いピクセルがあるかないか、それすらわからないのですか!!
くはっ今までの苦労はなんだったのか・・・

314 名前:306 :2006/04/25(火) 14:53:48
http://i-bbs.sijex.net/imageDisp.jsp?id=ups2&file=1145944407661o.gif

これ、か・・・。くぅ。

315 名前:デフォルトの名無しさん :2006/04/25(火) 15:01:09
いい加減黙れスレ違い野郎うぜぇ

316 名前:306 :2006/04/25(火) 15:09:57
byte byWhite=255;
byte byBlack=255;
for (int i = 0; i < 256; i++)
{
//白を見つけたら、
if (bitmap1.Palette.Entries[i].R == 255 && bitmap1.Palette.Entries[i].G == 255 && bitmap1.Palette.Entries[i].B == 255)
{
byWhite = (byte)i;
break;
}
}
for (int i = 0; i < 256; i++)
{
//黒を見つけたら、
if (bitmap1.Palette.Entries[i].R == 0 && bitmap1.Palette.Entries[i].G == 0 && bitmap1.Palette.Entries[i].B == 0)
{
byBlack = (byte)i;
break;
}
}
if (byWhite == 255 || byBlack == 255)
{
return false;
}

ご迷惑おかけしました。
無事、解決することができましたことをご報告申し上げます。

皆さん、ありがとうございました。とても助かりました。

317 名前:デフォルトの名無しさん :2006/04/25(火) 15:55:28
プログラム側から、ツールバーのボタンを押したというメッセージを送るにはどうしたらいいのでしょうか?

318 名前:デフォルトの名無しさん :2006/04/25(火) 16:10:40
そういうメッセージをSendMessageなりPostMessageなりすればいい

319 名前:デフォルトの名無しさん :2006/04/25(火) 16:30:00
ContextSwitchDeadlockって何ですか?
デバッグ中に凍ったと思ったら、こんなの表示されたよ

320 名前:デフォルトの名無しさん :2006/04/25(火) 16:47:04
306によって質問が流された>305です。
どなたかわかる方がいたらお願いします。

>319
ぐぐったらなんか出てきたけどこれとは違うの?

321 名前:デフォルトの名無しさん :2006/04/25(火) 16:58:34
306を頃すAPIを教えてください

322 名前:デフォルトの名無しさん :2006/04/25(火) 17:10:41
299です。

>>300さん
はい。これは実験しました。で,結果ですがわすれちゃった(笑)。CreateFileの直後は0ですがWriteFileExの直後で6になっているのでWriteFileExで設定していると判断した記憶があります。

>>301さん
はい。どうもそれが正解のようです。ありがとうございました。

>>302さん
試していません。って言うか,実はWriteFileExとWriteFileの処理時間を比較していたのです。

>>303さん
WriteFileExとWriteFileの差を見ていたのですが,WriteFileで非同期の書き込みの実験はしていませんでした。意味はまだ理解できていませんが,おれ的には301さんの発言が正解のような気がしています。

GetOverlappedResult なんて関数があったんですね! WriteFileExばかり見ていたので気がつきませんでした(WriteFileExからはリンクがない)。でもWriteFileExで使えるとは書いてありません。要実験ですね。
http://www.microsoft.com/japan/developer/library/jpwinpf/_win32_getoverlappedresult.htm

Win32APIって何でも実験なんだなぁ…。初心者にはきつい。

>>304さん
はい。そうですね。TUREとしては0以外と定義されているので1を返す関数と0xFFFFFFFFを返す関数があるようです。

323 名前:デフォルトの名無しさん :2006/04/25(火) 17:45:56
305です。
二つ目の項目は自己解決しました。
GetLocationのフラグにあったIEIFLAG_ORIGSIZEをはずしたらOKでした。

324 名前:デフォルトの名無しさん :2006/04/25(火) 18:14:59
>>322
しかし、WriteFileExで、
OVERLAPPED構造体のリンクが外してあるのはヒドイよな。
WriteFile→WriteFile(非同期)→WriteFileExの順でやらんとピンとこんかもね。

325 名前:320 :2006/04/25(火) 18:31:57
ぐぐたーけど、全部英語よってに・・。

326 名前:320 :2006/04/25(火) 19:26:30
教えて、えろい人。

327 名前:319 :2006/04/25(火) 19:28:02
ごめんなさい、325と326は、319でした。

328 名前:デフォルトの名無しさん :2006/04/25(火) 19:38:09
>>306
どうでもいいけどパレットエントリ中に白があるからといって画像中に白がある保証はない罠。

329 名前:デフォルトの名無しさん :2006/04/25(火) 19:45:16
>>327
日本語のページを検索

330 名前:デフォルトの名無しさん :2006/04/25(火) 20:19:41
誰か教えて!!
ttp://oshiete1.goo.ne.jp/kotaeru.php3?q=2113781

331 名前:デフォルトの名無しさん :2006/04/25(火) 20:21:21
> 親子関係がよくわからなくなると思うのですが

お前が無能だからだな

332 名前:デフォルトの名無しさん :2006/04/25(火) 20:28:08
そもそもやる必要性があるんだろうか

自分では一般的な処理だと思っててもAPIが用意されてなかったりする場合
大抵その処理自体をやる必要がなかったりする
(別のアプローチで最終的にやりたい事ができるソリューションがあるということ)

333 名前:デフォルトの名無しさん :2006/04/25(火) 20:30:26
>>330
GetWindow
とか

334 名前:デフォルトの名無しさん :2006/04/25(火) 20:38:55
>>333
ありがとうございます。
これなら出来そうです。

>>331
> お前が無能だからだな
確かに無能です。
ですのでどのようにしたらGetParentでの処理が出来たのか教えてください。


335 名前:デフォルトの名無しさん :2006/04/25(火) 20:44:11
ダメです

336 名前:デフォルトの名無しさん :2006/04/25(火) 20:52:05
Σ(゚д゚lll)ガーン
そんなにめんどくさがらなくてもいいじゃないですかぁ!!!

337 名前:デフォルトの名無しさん :2006/04/25(火) 22:26:07
><;

338 名前:デフォルトの名無しさん :2006/04/26(水) 03:37:01
リストボックスにListBox_InsertStringマクロを用いて文字列を挿入しよう
としています。しかしインデックスを毎回同じにしても、上書きされずに
下の行に追加されていきます。上書きはどうやればできるのでしょうか。

339 名前:デフォルトの名無しさん :2006/04/26(水) 05:51:16
調べたらわかりそうなもんだが

340 名前:デフォルトの名無しさん :2006/04/26(水) 07:54:24
数字キーを押した時など、ひとつの行動で
メッセージが2つ以上来る行動があります。

その場合、1つ目のメッセージが終わった後、
2つ目のメッセージが来るのか、
2つのメッセージが同時、又は1つ目のが終わる前に、
2つ目のが来るのでしょうか。

341 名前:デフォルトの名無しさん :2006/04/26(水) 08:07:24
>>338
Insertだから意味的にはあってない?

>>340
キー離したときにもメッセージが来ない?
lKeyDataの30ビット目とか


342 名前:340 :2006/04/26(水) 08:13:30
ありがとうございます。
WM_KEYUPが来ると思います。

343 名前:デフォルトの名無しさん :2006/04/26(水) 08:57:02
>>340
> 2つのメッセージが同時

メッセージ『キュー』ってものを勉強し直せ

344 名前:340 :2006/04/26(水) 09:45:54
ありがとうございます。
基本的には同時じゃないみたいですね。

ただ、SendMessageを使うと、
前のメッセージを飛び越して終了するとかもあるみたいです。

345 名前:デフォルトの名無しさん :2006/04/26(水) 09:55:00
試せば解ると思うんだけどな・・脳内にしかPC無いの?

346 名前:デフォルトの名無しさん :2006/04/26(水) 12:35:45
>>345
思わず、職場で、吹き出したー。

347 名前:デフォルトの名無しさん :2006/04/26(水) 12:51:44
メッセージキューと
SendMessage PostMessageその他関数の挙動について調べれば
試さなくてもわかるだろ

348 名前:340 :2006/04/26(水) 13:34:20
脳内にも(ry。ウィンアプリのコールバックは、
ドスのに比べて、実態が掴みにくいというか。

コールバックやGetMessageのみに
来るメッセージがあったりしますし。

349 名前:デフォルトの名無しさん :2006/04/26(水) 14:30:59
「猫でも・・・」で勉強しています。
猫のプログラムはVCで作成されたものみたいなのですが、VCがないのです。
ですので
Borlandで試していたら大体、リソーススクリプトのダイアログボックスで失敗します。
リソーススクリプトをどのように変更したら似たような動きになりますか?

同じフォルダにafxres.hを作ることはしました。

350 名前:デフォルトの名無しさん :2006/04/26(水) 15:25:07
WS_xxx が定義されていないなら「#include <winresrc.h>」を、FONT部でエラーが出るなら
「FONT 8, "MS Shell Dlg", 400, 0, 0x1」等を「FONT 8, "MS Shell Dlg"」のようにしてみれば?


351 名前:デフォルトの名無しさん :2006/04/26(水) 15:54:37
>>350さん、試しました
けど結果は特に変わりません。
==============================================
エラー内容
Borland Resource Compiler Version 5.40
Copyright (c) 1990, 1999 Inprise Corporation. All rights reserved.

Error dialog01.rc 81 25: Expecting BEGIN

==============================================
ソースの一部
MYDLG DIALOGEX 0, 0, 186, 90
STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION |
WS_SYSMENU
CAPTION "オプション"
FONT 8, "MS Shell Dlg", "MS Shell Dlg" ←81行目
BEGIN
DEFPUSHBUTTON "OK",IDOK,7,69,50,14
PUSHBUTTON "CANCEL",IDCANCEL,129,69,50,14
LTEXT "ダイアログボックスです",IDC_STATIC,39,16,94,8
END
==============================================

352 名前:351 :2006/04/26(水) 15:56:10
すみません!!
間違えてました。
FONT 8, "MS Shell Dlg"ですね、

353 名前:351 :2006/04/26(水) 15:58:46
動きました。
ありがとうございますm(_ _m)

あと一つ、
「FONT 8, "MS Shell Dlg", 400, 0, 0x1」
の「400, 0, 0x1」この部分はなんなのでしょうか?

354 名前:デフォルトの名無しさん :2006/04/26(水) 16:24:48
ウィンドウハンドルから、クラス名を取得する方法ってありますか?

355 名前:354 :2006/04/26(水) 16:26:20
クラスメイトは"BUTTON"とか"EDIT"です。

356 名前:デフォルトの名無しさん :2006/04/26(水) 16:34:41
俺もそんな学生時代を過ごしたかったな。

357 名前:デフォルトの名無しさん :2006/04/26(水) 16:39:54


358 名前:355 :2006/04/26(水) 17:02:57
?、・・・・・・・・!!!

間違えました!!!
ていうか誤変換です。
訂正↓
クラス名とは"BUTTON"とか"EDIT"のことです。

359 名前:デフォルトの名無しさん :2006/04/26(水) 17:05:37
GetClassName

360 名前:358 :2006/04/26(水) 17:26:53
サンクス!!

361 名前:デフォルトの名無しさん :2006/04/26(水) 17:36:08
>>355-356
ワロタ

362 名前:デフォルトの名無しさん :2006/04/26(水) 21:15:52
8bitのBitmapを24bitのBitmapに変換したいのですが、
そのようなAPIは存在しますか?


363 名前:デフォルトの名無しさん :2006/04/26(水) 21:22:22
メモリDC上でBitBltかませばいいんじゃない?

364 名前:デフォルトの名無しさん :2006/04/26(水) 21:35:57
>>347
妹と話していたら、
『きゅぅ』と『ふぃふぉ』の発音が新鮮に聞こえた件について。

忘れてくれ。

365 名前:デフォルトの名無しさん :2006/04/26(水) 22:19:15
>>349
VCタダなのに・・・
http://www.microsoft.com/japan/msdn/vstudio/express/


366 名前:デフォルトの名無しさん :2006/04/26(水) 22:34:22
ファイル内の特定の文字列を変換(京都を東京に変換など)するプログラムを作りたいのですが、
EDITクラスを使ったほうが簡単に出来そうなかんじがしました。
実際のところ簡単になるのか教えてください。


367 名前:デフォルトの名無しさん :2006/04/26(水) 22:37:22
なりません

368 名前:デフォルトの名無しさん :2006/04/26(水) 22:37:30
>>366
人に頼るくらいなら作らなくていいよ。

369 名前:デフォルトの名無しさん :2006/04/26(水) 22:38:07
API とは関係ないな

370 名前:デフォルトの名無しさん :2006/04/26(水) 22:45:38
変換するだけならGUIじゃなくてもよくね?

371 名前:デフォルトの名無しさん :2006/04/26(水) 22:48:22
>>366
むしろ、stringクラス

typedef std::basic_string<TCHAR> _tstring;

// 文字列のsFindをsReplaceの置き換える。
inline _tstring& Replace(_tstring& sExp, const _tstring sFind, const _tstring sReplace)
{
_tstring::size_type n = 0;
_tstring::size_type nCur = 0;

// Replace処理
while ((n = sExp.find(sFind, nCur)) != _tstring::npos){
sExp.replace(n, sFind.size(), sReplace);
nCur = n + sReplace.size();
}

return sExp;
}

詳しくは、ここじゃなくSTLかも

372 名前:デフォルトの名無しさん :2006/04/26(水) 22:49:51
むかし、データのソートをしたいためだけにLBS_SORTな
リストボックスにデータをぶち込むやつがいた。

373 名前:366 :2006/04/26(水) 22:51:02
C言語Onlyなんですよ・・・
char型配列か、mallocの領域確保しか出来ないし・・・

374 名前:デフォルトの名無しさん :2006/04/26(水) 22:53:39
確認なんだが
>>366の言ってるEDITクラスってのはウィンドウクラスの事でいいんだよな?

375 名前:デフォルトの名無しさん :2006/04/26(水) 22:53:43
C言語のみのくせにWinAPIは使ってよいと言うのはわけがわからない。

376 名前:デフォルトの名無しさん :2006/04/26(水) 22:53:54
とにもかくにもスレ違い

377 名前:デフォルトの名無しさん :2006/04/26(水) 22:58:08
>>373
ファイル?
ファイル内の?

んでC言語?

378 名前:デフォルトの名無しさん :2006/04/26(水) 23:06:28
>>373
つC/C++の宿題を片付けます
http://pc8.2ch.net/test/read.cgi/tech/1143405137/

379 名前:デフォルトの名無しさん :2006/04/26(水) 23:42:57
縦横の解像度が違うのプリンターに線幅1mmをピクセル単位(MM_TEXT)で指定する場合、
mm→dot変換は
1mm*(縦解像度/25.4)
それとも
1*mm(横解像度/25.4)
どちらでしょうか?

380 名前:デフォルトの名無しさん :2006/04/26(水) 23:47:02
昔、それは気になったけど試してない。
手元にそういうプリンタがあるなら、試すのが一番

381 名前:デフォルトの名無しさん :2006/04/26(水) 23:59:26
手元にプリンター無いんです
CreatePenする時だけマッピング変更する事って
可能なんでしょうか?
自分でやってみたけど上手く行きせんでした


382 名前:デフォルトの名無しさん :2006/04/27(木) 00:25:09
あるファイルをオープンしようとした時に、他のプロセスが排他オープンしている為に
オープンに失敗したとします。
この時、ファイルを排他オープンしているプロセスの名前やプロセスIDを取得する方法は
あるんでしょうか?

383 名前:デフォルトの名無しさん :2006/04/27(木) 01:41:55
ウィンドウのフォントを取得、設定する関数を教えてください。
お願いします。

384 名前:デフォルトの名無しさん :2006/04/27(木) 06:19:25
>>383
SendMessage

385 名前:デフォルトの名無しさん :2006/04/27(木) 08:17:26
そーいや、コスメティックペンとジオメトリックペンって属性違ってたね。
ジオメトリックペンは座標変換によって幅が変わったと思う。
CreatePenでnWidth=0なら、座標変換に左右されなかったような・・・


386 名前:デフォルトの名無しさん :2006/04/27(木) 11:57:26
>>382
あります。

387 名前:デフォルトの名無しさん :2006/04/27(木) 12:52:44
ボリュームコントロールのようなスライドバーを実装したいのですが
どのような関数、又は組み合わせで作るのでしょうか

388 名前:デフォルトの名無しさん :2006/04/27(木) 12:53:33
CreateWindow

389 名前:デフォルトの名無しさん :2006/04/27(木) 12:55:11
>>384
FontSizeとFontは、SendMessageでなにを送ったらいいのですか?


390 名前:デフォルトの名無しさん :2006/04/27(木) 12:56:14
メッセージ

391 名前:デフォルトの名無しさん :2006/04/27(木) 13:05:06
あたりまえじゃん

392 名前:デフォルトの名無しさん :2006/04/27(木) 13:06:03 ?
>>372
SH系APIが無かった頃ファイル一覧を取るためだけに不可視リストボックス作ってた俺が来ましたよ。

393 名前:387 :2006/04/27(木) 13:14:32
>>388
システムクラスにSCROLLBARなんてものがあったんですね・・
ありがとうございました

394 名前:デフォルトの名無しさん :2006/04/27(木) 13:18:52
WM_GETFONTを見つけました。
これでしょうか?
SendMessage(hWnd,WM_GETFONT,0,0);ではNULLAが返ってきました

395 名前:デフォルトの名無しさん :2006/04/27(木) 13:20:32
掲示板で質問するほどのことかな?

396 名前:デフォルトの名無しさん :2006/04/27(木) 13:27:37
ぬらー

397 名前:デフォルトの名無しさん :2006/04/27(木) 13:44:12
コントロールが使用しているフォントのハンドルを返します。コントロールがシステム フォントを使用している場合には、 NULLを返します

398 名前:デフォルトの名無しさん :2006/04/27(木) 13:49:48
ありがとうございますぬらー

399 名前:デフォルトの名無しさん :2006/04/27(木) 14:01:14
MSDN読まない奴は

400 名前:デフォルトの名無しさん :2006/04/27(木) 14:28:01
おまいら、ぬらぬら、ゆってんじゃねーよ。

401 名前:デフォルトの名無しさん :2006/04/27(木) 15:29:27
リソーススクリプトのダイアログ部分を自作しました。
やり方は、CreateWindowで作るWindowサイズをそのまま当てはめていくというかんじでした。
まぁ、つまり以前作っていたウィンドウと同じ形のダイアログを作ろうとしたというわけです。
そしたら思っていた形より大きくなりました(1.4倍ぐらい?)

どうしたら形が同じようになるの?

402 名前:デフォルトの名無しさん :2006/04/27(木) 15:32:58
ちゃんと理解する

403 名前:デフォルトの名無しさん :2006/04/27(木) 15:36:07
ダイアログユニットとかいうやつ

404 名前:デフォルトの名無しさん :2006/04/27(木) 16:02:50
>>401
ここで勉強

ttp://ikb.minidns.net/programming/WIN32DesignUnits.html

405 名前:デフォルトの名無しさん :2006/04/27(木) 16:11:10
なんか見に行ったら画面真っ白。
ソース見たらなんかそれっぽいこと書いてる。
なにこれ?

406 名前:デフォルトの名無しさん :2006/04/27(木) 16:28:39
ダイアログユニットを調べました。
フォント幅の4/1=x座標の単位
フォント幅の8/1=y座標の単位
とありました。

ですがピクセル単位でしていたものをダイアログユニットの単位に変換する方法がわかりません。
ピクセル単位/(フォント幅/4)=ダイアログユニットによる座標
かと思いましたが違いました。
フォント幅をどうにかするのでしょうか?
それとも計算式自体が間違っていますか?

すみません、本当は私パソコン自体が初心者なんです。
ですのでお願いします。


407 名前:デフォルトの名無しさん :2006/04/27(木) 16:31:31
>>406
GetDialogBaseUnitsをMSDNでしらべれ

408 名前:デフォルトの名無しさん :2006/04/27(木) 16:46:24
UpdateLayeredWindowについてなんですが、
以下のように実装してます。
UpdateLayeredWindow( hwnd, hdcScreen, &pos, &szWindow, hdcMemory,&ptSrc, 0, &bf, ULW_ALPHA );
hwndで指定する、ウインドウハンドルをダミーのウインドウを作って指定していますが、
自分自身のウインドウハンドル(m_hWnd)を指定する事は可能でしょうか?
実際にやってみて、正しく動作しなかったんですが、実装ミスかもしれないと思い、本当のところはどうなのかと思いまして。
如何でしょう?


409 名前:デフォルトの名無しさん :2006/04/27(木) 18:07:24
>すみません、本当は私パソコン自体が初心者なんです。
>ですのでお願いします。
本当にそうなら随分と達者だな。
駄菓子菓子、それを言い訳にするくらいならプログラミングなんて止めて置け。

410 名前:デフォルトの名無しさん :2006/04/27(木) 18:48:19
おまいら、にらにら、ゆってんじゃねーよ。
中華料理店の料理長か?









ヤベェ・・・なんか背筋がゾクっとした (((((((( ;゚Д゚)))))))

411 名前:デフォルトの名無しさん :2006/04/27(木) 19:41:08
CreateWindowはstyleがNULLだと失敗するものですか?

412 名前:デフォルトの名無しさん :2006/04/27(木) 21:03:28
教えてください。いままでリンカのエラーはなかったのですが以下の
エラーが出てしまいました
Typing.obj : error LNK2019: 未解決の外部シンボル __imp__timeGetSystemTime@8 が関数 _WndProc@16 で参照されました。
Typing.obj : error LNK2019: 未解決の外部シンボル _TypeStart が関数 _WndProc@16 で参照されました。しまいました。
VC\VCProjectDefaults\corewin_express.vspropsは
AdditionalDependencies="kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib" />と
してるのですが、どのlibが足りないもしくは不要なのでしょうか
どなたか教えてください

413 名前:デフォルトの名無しさん :2006/04/27(木) 21:28:59
>>412
#include <mmsystem.h>
#pragma comment(lib, "winmm.lib")


414 名前:387 :2006/04/27(木) 22:04:20
何度もすいません
確かにCreateWindowのシステムクラスをSCROLLBARにするとバーは作れるのですが
Sliderコントロールのような物を作りたいのですが、SCROLLBARで色々やってみたのですが無理な感じです・・
どのような方法で作成するのでしょうか・・

415 名前:デフォルトの名無しさん :2006/04/27(木) 22:11:16
CreateWindowEx

416 名前:デフォルトの名無しさん :2006/04/27(木) 22:11:54
>>414
InitCommonCtontrolsEx しといてから TRACKBAR_CLASS で作る。
ttp://www.kumei.ne.jp/c_lang/sdk2/sdk_190.htm

417 名前:412 :2006/04/27(木) 23:20:22
>>413さんありがとうございました
#include <mmsystem.h>
#pragma comment(lib, "winmm.lib")
で__imp__timeGetSystemTime@8は解消されました
ただ、まだ以下のエラーがでるのですが

Typing.obj : error LNK2019: 未解決の外部シンボル _TypeStart が関数 _WndProc@16 で参照されました。しまいました。

そもそもTypeStart(HWND)という関数は存在するのでしょうか
猫の本見ながら打ってるのですが、ソースにTypeStartを宣言は
しているんですが、そのTypeStart関数の定義がどこにもなく
また別のlibにあるのかと想像しているのですがどこにあるのかがわかりません
なんども申し訳ないですが、教えてください。お願いします。


418 名前:デフォルトの名無しさん :2006/04/27(木) 23:37:05
>>417
"key01.cpp"

419 名前:387 :2006/04/28(金) 00:11:35
>>416
参考URLを見ながらやってみたところ出来ました
ありがとうございました

>>415
CreateWindowExのコモンコントールを使うんですね
416さんのレスでやっとわかりました・・ありがとうございました

420 名前:デフォルトの名無しさん :2006/04/28(金) 00:21:36
( ゚д゚)ノ 先生!拡張ボタン(X1、X2)が押された時に送られてくるメッセージを教えてください!

421 名前:デフォルトの名無しさん :2006/04/28(金) 00:26:30
>>420
い・・いたい・・・
ひい・・・やめて!!それいじょうは・・・
ひぎいいいい

422 名前:デフォルトの名無しさん :2006/04/28(金) 01:05:40
>>421
|д゚)・・・


( ゚д゚)ノ なるほど!先生!WM_XBUTTON〜ですね!ありがとうございます!


っつーかなんでこれググっても35件くらいしかヒットしないのかと
全然見つからんかったよ

423 名前:デフォルトの名無しさん :2006/04/28(金) 01:32:07
コントロール上のフォント、たとえばEDITコントロールのフォントの変更ってどうやってやるんですか?

424 名前:デフォルトの名無しさん :2006/04/28(金) 02:19:54
SendMessage

425 名前:デフォルトの名無しさん :2006/04/28(金) 03:23:25
http://www.kwi.co.jp/tips3.htm

426 名前:412 :2006/04/28(金) 03:34:31
>>418さん
ありがとうございました
見落としてました。すんません。

427 名前:デフォルトの名無しさん :2006/04/28(金) 12:28:00
チャックボックスをIsDlgButtonCheckedで確認できるけど、逆に設定する時はどうすんの?

428 名前:デフォルトの名無しさん :2006/04/28(金) 12:28:44
>>427
チャック・・・
スマソ、チェックでそorz

429 名前:デフォルトの名無しさん :2006/04/28(金) 12:31:07
>>427
CheckD(ry

430 名前:デフォルトの名無しさん :2006/04/28(金) 12:34:42
ttp://msdn.microsoft.com/library/ja/default.asp?url=/library/ja/jpwinui/html/_win32_isdlgbuttonchecked.asp
下の方にリンクあるやん

431 名前:427 :2006/04/28(金) 12:44:50
ごめん、ごめんよ。そしてありがと

432 名前:デフォルトの名無しさん :2006/04/28(金) 15:23:03
いきなりあれですけど、
GetClientRectってウィンドウの大きさしか返さないじゃないですか。
GetWindowRectはスクリーン座標の左上、右下ですよね。
ということは親ウィンドウの中のボタンを、
親ウィンドウを元にしたクライアント座標で求めるには
GetWindowRectをしてScreenToClientを使ったりするってことですよね?
めんどくさくないでしょうか?

それとも専用の関数があるのでしょうか?

433 名前:デフォルトの名無しさん :2006/04/28(金) 15:29:01
慣れろ

434 名前:デフォルトの名無しさん :2006/04/28(金) 15:38:02
ということはそういう関数がないってことですかぁ(..、)
それじゃ自分用に作っておいた方が楽ですよね?(関数名何にしょうかな)

435 名前:デフォルトの名無しさん :2006/04/28(金) 15:52:55
テケトーにMSDN流し読みしただけだけど
MapWindowPointsって、使えネーかな?

436 名前:デフォルトの名無しさん :2006/04/28(金) 16:18:50
やべ、ぱそこんが「カチ、カチ・・・」て鳴り出した。。。
まぁ、それはともかく使い方は
GetWindowRect(hWnd,lprect);
MapWindowPoints(GetParent(hWnd),lprect);
てなかんじじゃないのか?

エラー E2034 'tagRECT *' 型は 'HWND__ *' 型に変換できない(関数 GetParentClientRect(HWND__ *,tagRECT *) )
エラー E2342 パラメータ 'hWndTo' は HWND__ * 型として定義されているので tagRECT * は渡せない(関数 GetParentClientRect(HWND__ *,tagRECT *) )
エラー E2193 呼び出し時のパラメータが足りない:__stdcall MapWindowPoints(HWND__ *,HWND__ *,tagPOINT *,unsigned int)(関数 GetParentClientRect(HWND__ *,tagRECT *) )

437 名前:デフォルトの名無しさん :2006/04/28(金) 16:42:52
すいません、よく見たらhWndではなくcWndて書いてました。

それとブルスクまでイっちゃたのでこのパソコン控えます。
みなさん、今まで本当にありがとうございました。。。

            ∧_∧
           ( ・∀・)
   >>私   /⊂    つ
   ↓  /   ,(__つ
⊂⌒~((⊃*。Д。) し'
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄


            ∧_∧
           ( ・∀・)
   >>1    /⊂    つ
   ↓  /   ,(__つ
⊂⌒~((⊃*。Д。) し'
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄

438 名前:デフォルトの名無しさん :2006/04/28(金) 16:43:44
ゴメン、下の図はなし、消し忘れ。
それじゃさようなら

439 名前:デフォルトの名無しさん :2006/04/28(金) 16:57:26
ブルスク?

ブルマとスク水か?

440 名前:デフォルトの名無しさん :2006/04/28(金) 17:46:43
>>432
> GetClientRectってウィンドウの大きさしか返さないじゃないですか。

ウィンドウの大きさは返さないがな

441 名前:デフォルトの名無しさん :2006/04/28(金) 18:34:38
まぁまぁ、故人をいたぶるのはよしましょうや。
それはともかくスク水の上からブルマですか。
どこがいいのかわかりません。
マニアック過ぎです。
ついていけません。

442 名前:デフォルトの名無しさん :2006/04/28(金) 18:58:34
ブルースクリーン!!!11

443 名前:デフォルトの名無しさん :2006/04/28(金) 19:18:27
ガタガタ .γ"⌒ヽ,
     .んヘ/V'ヘ
    ((( 'ヘ/V'ヘ)))
      ゝ、._,ノ.


パカッ  .γ"⌒ヽ,
     .んヘ/V'ヘ
     (*‘ω‘ *) ちんぽっぽ!
     ( 'ヘ/V'ヘ|)
      ゝ、._,ノ.


444 名前:デフォルトの名無しさん :2006/04/28(金) 19:23:51
>>439
はいはい、お菓子系お菓子系。

445 名前:デフォルトの名無しさん :2006/04/29(土) 00:53:02
ブルスコと言えばファービーだろ。

446 名前:デフォルトの名無しさん :2006/04/29(土) 03:16:08
>>443
kawaii!!

447 名前:デフォルトの名無しさん :2006/04/29(土) 06:07:50
フルアセンブラでプログラミングしているのですが、プログラムのエントリポイントの関数仕様はどうなっているのでしょうか?

DWORD __cdecl main(void); // (Cスタイル)

でいいんでしょうか?

また、この仕様を書いた文書はどこかにあるのでしょうか?

448 名前:デフォルトの名無しさん :2006/04/29(土) 07:11:32
>>447
よくエントリポイントのように言われている main や WinMain はスタートアップから呼ばれるコールバックに過ぎない
スタートアップを使わない場合は link.exe の /entry でエントリポイントを定義し、 /subsystem で GUI か否かを選択する

449 名前:デフォルトの名無しさん :2006/04/29(土) 09:15:26
ここapiスレだけど

450 名前:デフォルトの名無しさん :2006/04/29(土) 09:26:39
どうしたって関係あるだろ

451 名前:デフォルトの名無しさん :2006/04/29(土) 10:06:56
MSVC4.0の頃、プロジェクトをコンソールベースで作ったとき、
無理やり>>448な作業をしたことを思い出した。

452 名前:デフォルトの名無しさん :2006/04/29(土) 11:26:42
pathが通らない
と同じで定期的に質問がくるテーマですな

453 名前: ̄ ̄ ̄|/ ̄ ̄ ̄ ̄ ̄ ̄ :2006/04/29(土) 12:04:38
.    ∧_∧
    (´・ω・)  
   /     \
__| |     | |_
||\          \                           / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄\
||\\          \                         | ( ´д)ヒソ(´д`)ヒソ(д` )  >
||  \\          \                        \__________/
.    \\          \ 
.     \\          \
.       \\          \   が ら 〜 ん
.         \\          \
.          \\          \
           \| ̄ ̄ ̄ ̄ ̄ ̄ ̄ |
            || ̄ ̄ ̄ ̄ ̄ ̄ ̄||

454 名前:デフォルトの名無しさん :2006/04/29(土) 12:46:38
.    ∧_∧
    (´・ω・)  
   /     \
__| |     | |_
||\          \
||\\          \
||  \\          \
.    \\          \ 
.     \\   [ ゚д゚]y-一~~~~
.       \\ ノ[ ヘ ヘ     \
.         \\          \
.          \\          \
           \| ̄ ̄ ̄ ̄ ̄ ̄ ̄ |
            || ̄ ̄ ̄ ̄ ̄ ̄ ̄||


455 名前:デフォルトの名無しさん :2006/04/29(土) 15:15:50
タイトルバーをクリックした時にシェード(折りたたみ)をするように
書こうとしているのですがうまくいきません。

ウィンドウスタイルからWS_THICKFRAMEを外し、
MoveWindowで高さをタイトルバー以下にしても
タイトルバーの下にほんの少しクライアント領域ができてしまいます。
AdjustWindowRect関数でクライアント領域を0にしてみても駄目でした。

どのようにして実装すればよいでしょうか?助言よろしくお願いします。

456 名前:デフォルトの名無しさん :2006/04/29(土) 15:33:25
>>432のいってたことが気になったので、
自作で親ウィンドウをもとにした、
クライアントウィンドウの位置を求める関数を作ってみたのですがとりあえず見てください。

BOOL GetParentClientRect(HWND hWnd,LPRECT lprect)
{
RECT ParentRect;
RECT Rect;
if(GetWindowRect(GetParent(hWnd),&ParentRect) == 0) return FALSE;
if(GetWindowRect(hWnd,&Rect) == 0) return FALSE;

lprect->left = Rect.left - ParentRect.left;
lprect->top = Rect.top - ParentRect.top;
lprect->right = lprect->left + Rect.right - Rect.left;
lprect->bottom = lprect->top + Rect.bottom - Rect.top;
return TRUE;
}
としたらタイトルバーの幅を考慮していなかったので、y座標がタイトルバーの分だけずれてしまいます。
ですのでタイトルバーがある場合、その分を減らす処理をどうするのかと考えています。

なにかあったら教えてください。
この関数が明らかに間違っている場合は「あんたバカあ!」とでも言ってください。

457 名前:デフォルトの名無しさん :2006/04/29(土) 15:36:19
あんたバカあ!

458 名前:デフォルトの名無しさん :2006/04/29(土) 15:42:43
!(TロT)うあーん
ほんとに言いやがったぁ(泣)

459 名前:デフォルトの名無しさん :2006/04/29(土) 15:49:44
なんかカワイイ

460 名前:デフォルトの名無しさん :2006/04/29(土) 16:02:35
や、やめてください!
そんないやらしい目つきで見るのはっ!

461 名前:デフォルトの名無しさん :2006/04/29(土) 16:14:08
よいではないか

462 名前:デフォルトの名無しさん :2006/04/29(土) 16:48:37
というよりわたし、男なんですけど・・・

463 名前:456 :2006/04/29(土) 16:53:03
もしかして無理なの?

464 名前:デフォルトの名無しさん :2006/04/29(土) 17:16:34
BOOL GetParentClientRect(HWND hWnd,LPRECT lprect)
{
RECT rect;
POINT pos;

GetWindowRect(hWnd, &rect);

pos.x = rect.left;
pos.y = rect.top;
ScreenToClient(GetParent(hWnd), &pos);

lprect->left = pos.x;
lprect->top = pos.y;
lprect->right = pos.x + rect.right - rect.left;
lprect->bottom = pos.y + rect.bottom - rect.top;
return TRUE;
}


465 名前:デフォルトの名無しさん :2006/04/29(土) 17:20:54
BOOL GetParentClientRect(HWND hWnd,LPRECT lprect)
{
POINT pos = {0};

GetWindowRect(hWnd, lprect);
ClientToScreen(GetParent(hWnd), &pos);
OffsetRect(lprect, -pos.x, -pos.y);
return TRUE;
}


466 名前:デフォルトの名無しさん :2006/04/29(土) 17:46:42
削除権限のないレジストリを削除するプログラムを組みたいのですが
可能でしょうか?

467 名前:デフォルトの名無しさん :2006/04/29(土) 17:49:05
削除する権限を得る

468 名前:456 :2006/04/29(土) 18:08:15
>>465
マジ(・∀・)ゴッド!
まさかOffsetRectなるものがあったとは。。。

469 名前:デフォルトの名無しさん :2006/04/29(土) 19:26:03
>>466
LogonUserとかImpersonateLoggedOnUserとか何か
そのへんをうまく使ってがんばる

470 名前:デフォルトの名無しさん :2006/04/29(土) 20:05:05
>>468
OffsetRectは本質ではないんだが

471 名前:デフォルトの名無しさん :2006/04/30(日) 03:06:08
BorlandC++にて、
サイズ変更できるボタンを作るため、サブクラス化しました。

内容は、
WM_LBUTTONDOWN:
ReleaseCapture();
SendMessage(hWnd,WM_SYSCOMMAND,SC_SIZE | 7,0); //ウィンドウのサイズ(右下)が変更できる
return0;
です。

それで、サイズ変更は出来るようになりました。
それはいいのですが、なぜかサイズが一定のサイズまでしか下げれません(right=110,bottom=25)。
試しに、EDITでも同じようにサイズ変更出来るようにしました。
こちらはそういったことは起きませんでした。
この違いは何なのでしょうか?

472 名前:デフォルトの名無しさん :2006/04/30(日) 03:55:32
はじめまして
こんな感じでグローバルフックの対象を切り替えたいのですが
うまくいきません なんで?
もちろんDLL内で行って 初めの一回は成功します
ちょっと 困ってます・・(この時間 まだ終わらん・・・)
UnhookWindowsHookEx(hSysHook);
DWORD dwThreadId = GetWindowThreadProcessId(hwnd, NULL);
hSysHook = SetWindowsHookEx(WH_CALLWNDPROC,(HOOKPROC)SysCallWndProc, hDllInst, dwThreadId);



473 名前:デフォルトの名無しさん :2006/04/30(日) 04:33:07
WindowsXPでユーザーの簡易切り替えをするとします。
Aユーザが実行中のアプリのウィンドウに対してBユーザのアプリから、
たとえばハンドルを取得してPostMessageを投げるとか可能でしょうか?
FindWindowできないのは確認しましたが…。


474 名前:・∀・)っ-○◎● ◆toBASh.... :2006/04/30(日) 04:40:01
RPC使う方法しか思い浮かばない


475 名前:デフォルトの名無しさん :2006/04/30(日) 07:51:48
CreateProcess で CUI プログラムを呼び出す時、
仮想端末を出さずに暗黙的に実行するには、どうしたら良いのでしょうか?

476 名前:デフォルトの名無しさん :2006/04/30(日) 08:21:07
>>473
デスクトップが異なるとメッセージはとどかない。はず。

477 名前:デフォルトの名無しさん :2006/04/30(日) 09:17:05
>>475
適切な引き数を設定する。

478 名前:デフォルトの名無しさん :2006/04/30(日) 12:30:01
>>476
やはりダメですか。
>>474
私へ回答いただいたんですよね。RPC、調べてみます。使ったこと無いですが…。

479 名前:デフォルトの名無しさん :2006/04/30(日) 13:01:34
>>477
もう少し詳しくお願い orz

480 名前:デフォルトの名無しさん :2006/04/30(日) 13:35:56
// >>479
// 起動したら後は野となれ山となれ
bool CUtility::execProcess(const char * cmd)
{
if (cmd == NULL || cmd[0] == '\0') {
return false;
}
PROCESS_INFORMATION pi;
STARTUPINFO sui = {sizeof(sui),};
if (!CreateProcess(NULL, const_cast<char *>(cmd), NULL, NULL, false,
NORMAL_PRIORITY_CLASS | DETACHED_PROCESS,
NULL, NULL, & sui, & pi)) {
return false;
}
CloseHandle(pi.hThread);
CloseHandle(pi.hProcess);
return true;
}

481 名前:デフォルトの名無しさん :2006/04/30(日) 13:41:28
>>479
これのことでは?
http://support.microsoft.com/kb/409393
普通に cmd.exe を起動すると、コマンドウィンドウが表示されてしまいます。この現象を回避するには


482 名前:デフォルトの名無しさん :2006/04/30(日) 14:12:53
>>478
プロセス間通信がしたいだけなら
pipe,named pipe,mailslot
あたりの方が簡単じゃなかろうか。良く知らんねんけどね。
あとはCOMの世界に走るとか。

483 名前:デフォルトの名無しさん :2006/04/30(日) 14:15:59
org 100H

484 名前:デフォルトの名無しさん :2006/04/30(日) 14:16:54
こんにちは、文字の書き方について教えていただきたいのですが、

フォント指定した文字列をあるポイントから右寄せで表示したいのです。
自作した、四角形がありその中に右寄せで文字を表示したいのです。
なにか、関数とかあるのでしょうか。それとも計算して、書いていくのでしょうか。

485 名前:デフォルトの名無しさん :2006/04/30(日) 14:39:50
計算して書くのが一番悩みが少なくて済む。

486 名前:デフォルトの名無しさん :2006/04/30(日) 14:47:04
>484です
>485さんありがとございます。そうします。

487 名前:デフォルトの名無しさん :2006/04/30(日) 15:20:47
>>484
ちなみにAPI関数でやるとしたら、たとえばDrawTextにDT_RIGHTを指定すればよい。

488 名前:デフォルトの名無しさん :2006/04/30(日) 17:48:28
ttp://www.vector.co.jp/soft/win95/util/se375705.html
このようなソフトウェアをつくってみたいと考えているのですが
どのように実装されているのか見当がつきません。

timeGetTime()あたりをHookしているのではないかと思っているのですが。


489 名前:デフォルトの名無しさん :2006/04/30(日) 17:56:07
見当がつかない物を作らない方がいいよ。

490 名前:デフォルトの名無しさん :2006/04/30(日) 18:01:53
>>488
わざわざ新しく作らないでそれを使えばいいじゃん

491 名前:デフォルトの名無しさん :2006/04/30(日) 18:10:46
つ 逆アセンブラ

492 名前:デフォルトの名無しさん :2006/04/30(日) 18:38:46
>>490
実行中のすべてのプロセスに対して
速度変更ができるようにしたいからです。

493 名前:デフォルトの名無しさん :2006/04/30(日) 18:51:20
かなりハードよりな分野だから
自分で解析できないレベルなら無理だと思うよ
api一発叩けばできるレベルならみんなやってるだろうし

494 名前:デフォルトの名無しさん :2006/04/30(日) 18:58:06
HOOKするならVS限定だけどspy++大活躍だな

495 名前:デフォルトの名無しさん :2006/04/30(日) 19:01:52
>>493
ご助言、ありがとうございます。
ハードよりな分野とは知りませんでした。
この手のソフトウェアは大抵hook.dllがありましたので
APIフックで実装可能と思っていましたorz

496 名前:473 :2006/04/30(日) 21:27:32
>>482
いま作ってみましたが、mailslotはダメでした。
うーん…

497 名前:475 :2006/04/30(日) 22:45:39
>>480, 481
ありがとうございます
頑張って試してみます m(_ _)m

498 名前:デフォルトの名無しさん :2006/04/30(日) 22:57:50
>>487さんありがとうございます。
DrawText()あるんですね。
いろいろ書いてみます。最初なので、書いて試していろいろして見ます。
ありがとうございました。

499 名前:デフォルトの名無しさん :2006/05/01(月) 08:29:07
不安で夜も眠れないのでよろしくお願いします。

開発環境: w2k + VC++6.0

CreateWaitableTimer() の使用を考えております。
<winbase.h>をインクルードししこしこ使おうと考えるも
「そんなもんねーよ」って怒られちゃいます。

原因を探ると、os対応の問題のようで
#define _WIN32_WINNT 0x0400
マクロぶち込んでやると、コンパイルも通りとりあえずは動くのは
動くのですが。

API自体が、2k以上対応って話なのでこれで問題ないような気もするのですが
ぶっちゃけ対応過ぎるような気がして。
対処方法としてこれでよろしいのでしょうか?

有識者の意見をいただければ幸いです。

500 名前:デフォルトの名無しさん :2006/05/01(月) 09:03:51
なにが問題なのかが分からないのだが


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