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


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

Win32API質問箱 Build47
501 名前:デフォルトの名無しさん :2006/11/28(火) 11:48:35
単なる仕様概念の違いやん

502 名前:デフォルトの名無しさん :2006/11/28(火) 12:16:52
ES_NUMBERを付けた単一行エディットコントロールに文字列をクリップボードからペーストするとしっかり文字列が入っちゃうんですが、
CM_TEXTCHANGEでチェックするしかないんでしょうか‥‥

503 名前:デフォルトの名無しさん :2006/11/28(火) 12:52:52
ダイアログでエディットを数個配置して
エンターキーで次のエディットにフォーカスを移動
させようと思っています。

サブクラス化されたウィンドウプロシージャでイベントを
捕まえてSetFocusで移動はできるのですが、
TABキーを送ってまとめて処理したいです。

TABキーの送り方を教えてください。

504 名前:デフォルトの名無しさん :2006/11/28(火) 12:55:27
>>496
ハンドルはOSが内部で確保する構造体へのポインタだからなんだよ。

505 名前:デフォルトの名無しさん :2006/11/28(火) 13:36:38
>>496
DWORDの引数にNULLを渡すのはおかしいという話題なのに、
なぜいきなりポインタであるハンドルの話を出してきたのか。

506 名前:デフォルトの名無しさん :2006/11/28(火) 14:44:11
質問させてください、
COM風のDLLを作ってるときに、
void IHOGE::Release()
{
  // あらかじめ保存しておいた、exe側のWinAPIのFreeLibrary()のアドレスと
  BOOL (WINAPI *fpFreeLibrary)(HMODULE) = m_fpFreeLibrary;
  // DLLのハンドルをローカル変数にコピーしてから、
  HMODULE hLibrary = m_hLibrary;
  // 自殺して
  delete this;
  // DLL解放
  fpFreeLibrary(hLibrary);
}

なんてやろうとしたんですが、DLL解放のところでバグってしまいました。

以前VC6でやっててうまくいってたんですが
(実行時にDLLの方がDLL解放の処理を書いてないバージョンのままだった可能性はあります・・・)
VC2005Expressでやるとダメでした。

こんなことせずに自前で解放すれば大丈夫なのですが、
DLLから得た関数の中でDLLを解放することはそもそも原理的にダメなのでしょうか?
そのあたりの理屈が知りたいので、よろしければ教えてください。

507 名前:デフォルトの名無しさん :2006/11/28(火) 15:14:56
>>506
そのDLLを解放するコードIHOGE::Releaseは、解放しようとしているDLLにあるわけで。
列車が走ってるレールを破棄するようなもんだ。

508 名前:デフォルトの名無しさん :2006/11/28(火) 16:29:21
>>503 WM_NEXTDLGCTL使えば楽できる。たぶん。

509 名前:デフォルトの名無しさん :2006/11/28(火) 16:49:18
>>506
やるとしたら、一時的にスレッドを作って(そのスレッドはDLL内の関数で良い)、
そこでFreeLibraryAndExitThreadを呼ぶという方法がある。

ちなみに本物のCOMでは、COMがDLLを管理している。
(ある程度はDLL自身も制御できるが、直接FreeLibraryを呼ぶという事態はない)

510 名前:デフォルトの名無しさん :2006/11/28(火) 16:54:59
FreeLibraryAndExitThreadって初めて見たとき、
こんなもん何に使うんだよwwwwwってなるよな。

511 名前:デフォルトの名無しさん :2006/11/28(火) 17:09:58
>>509
FreeLibraryAndExitThread呼ぶスレッドをIHOGE::Release()で作っても
FreeLibraryAndExitThreadが呼ばれる前にIHOGE::Release()から抜けて
EXE側のコードに戻らないとダメだな。

512 名前:デフォルトの名無しさん :2006/11/28(火) 17:29:18
>FreeLibraryAndExitThread 関数は、次のように実装されています。
>FreeLibrary(hModule);
>ExitThread(dwExitCode);
こんな感じで実装されてるってだけのことだろうが酷い説明だな

513 名前:デフォルトの名無しさん :2006/11/28(火) 17:38:49
俺も510と同じだった。
でもAdvanced Windowsにはきちんと使い方が書いてあったよ。


514 名前:デフォルトの名無しさん :2006/11/28(火) 17:57:40
モーダレスダイアログに付いて質問なのですが
メニューバーからダイアログの表示
ShowWindow( hDlg, SW_SHOW )
を使用すると何故か↓の様に、ダイアログから下の部分が更新されていません。
http://gamdev.org/up/img/8238.jpg

ダイアログが親?ウィンドウより外側に持って行くか
キーボードを押してSW_SHOWを呼び出す様な処理の場合は
問題なく全体を更新します。

メニューバーまたはメッセージに何かしらあるのでしょうか。

515 名前:デフォルトの名無しさん :2006/11/28(火) 18:06:40
>>514
WM_PAINTの処理がおかしいだけじゃない?
BeginPaint使わないで、ValidateRect(hWnd, NULL)してるとか。

516 名前:デフォルトの名無しさん :2006/11/28(火) 18:19:51
路線バスってすれ違う時に挨拶するでしょ。
ハンドルから手を離して挨拶するって危険なんじゃないかって
思うんだ。しかし、運転士たちは危ないと思ってない。

ここに行って
http://hobby7.2ch.net/test/read.cgi/bus/1162901425

挙手してんじゃねえよ

って教えてあげて。よろしくお願いしますね。

517 名前:デフォルトの名無しさん :2006/11/28(火) 18:24:32
あれってバスジャックとか異常事態がないかの合図じゃないの?
それはそれで表示板にそういうのあるんだっけ?

518 名前:514 :2006/11/28(火) 19:01:47
>>515
WM_PAINTは使ってないですが
ちょいと調べてみます。有難うございます。

現在のメッセージ処理
if( PeekMessage( &msg, NULL, 0U, 0U, PM_REMOVE ) )
{
if( !DialogMessage( &msg ) )
{
TranslateMessage( &msg );
DispatchMessage( &msg );
}
}
else
{
Update();
Render();
Sleep( 1 );
}

519 名前:デフォルトの名無しさん :2006/11/28(火) 19:26:22
>>508
楽できました。ありがとう。

520 名前:デフォルトの名無しさん :2006/11/28(火) 21:18:18
Visual Studioでデバッグするとき使える「ステップアウト」は
Win32API的にはどのように再現できるでしょうか?

521 名前:デフォルトの名無しさん :2006/11/28(火) 21:37:25
return

522 名前:514 :2006/11/28(火) 21:43:43
WM_PAINTに持って行きましたが、結果は変わらず。
メニューバーに触れると、SSの様な事態になるので
メニューバーの使用をやめるか、モーダルダイアログにするなりしてみます。

523 名前:520 :2006/11/28(火) 22:12:13
>>521
確かに自プロセスならreturnでことたりるのですが
Visual Studioのような他プロセスがどうのような方法で
ステップアウト等の処理をしてるか分かりません

524 名前:デフォルトの名無しさん :2006/11/28(火) 22:16:31
君には無理。

525 名前:デフォルトの名無しさん :2006/11/28(火) 22:18:35
そもそもVSはOSの製造元が作ってるわけで

526 名前:520 :2006/11/28(火) 22:45:34
>>525
でもボーランドのIDEでも同じようなことできますよね?

527 名前:デフォルトの名無しさん :2006/11/28(火) 22:55:48
>>526
>>524


528 名前:デフォルトの名無しさん :2006/11/28(火) 23:08:43
>>523
驚いたことに最近はね、プロセッサ例えばPentium(というかi386からだけど)
の中にはデバッグレジスタ(DRレジスタ)なるものが存在するんだよ。
どう使うのかは知らんw
さわらぬ神にタタリなしww

529 名前:デフォルトの名無しさん :2006/11/28(火) 23:24:37
>>476
例えばだけど、0番地付近がシステムで予約されている場合とかさ。
そういう環境用のコンパイラはきっとNULLを-1とかにするんだろうね。

530 名前:デフォルトの名無しさん :2006/11/28(火) 23:37:19
>>529
内部表現が-1でもC/C++のソース上は常に0。

531 名前:デフォルトの名無しさん :2006/11/28(火) 23:45:13
>>530
C++は、じゃない?

532 名前:デフォルトの名無しさん :2006/11/28(火) 23:47:48
ああ、C言語だと (void*)0 な場合もあるな。
でも 0 の部分がほかの数値になることはない

533 名前:デフォルトの名無しさん :2006/11/28(火) 23:53:19
だとすれば、数値の0として使えるのか。

534 名前:デフォルトの名無しさん :2006/11/29(水) 00:09:19
(void*)0 な実装の存在を考えると NULL を数値の 0 として使うのは移植性がない。
ただしポインタであるべき文脈で 0 を使ってもいいことは保証されてる。

535 名前:デフォルトの名無しさん :2006/11/29(水) 00:18:08
>>528
デバッグレジスタへのアクセスはリアルモードなどの状態でしか許されていない
そのかわりWaitForDebugEventとかいうAPIが提供されてるがどう使うか分からん
どっちにしろさわらぬ神にタタリなしww

536 名前:デフォルトの名無しさん :2006/11/29(水) 00:28:13
( ´∀`)<ぬるぽ

537 名前:デフォルトの名無しさん :2006/11/29(水) 00:32:52
C#でPInvokeするとき、NULLを渡したいとき
IntPtr.Zero渡していいのかな?
C#はよく知らんが

538 名前:デフォルトの名無しさん :2006/11/29(水) 00:33:55
>>535
OllyDbgは余裕でハードウェアブレークポイント提供してますが何か?

539 名前:デフォルトの名無しさん :2006/11/29(水) 00:39:28
>>537
Win32の世界に限ればNULLは内部表現も0であると決め付けてまったく問題ない
>>538
MS純正のi386kdにもあると思う

540 名前:デフォルトの名無しさん :2006/11/29(水) 00:57:46
実際Microsoftでのサンプルコードでも0として使われてるから
NULL使っててもいいんじゃないか?

>>539がいうように"Win32の世界に限れば"な

541 名前:デフォルトの名無しさん :2006/11/29(水) 01:03:20
>>536
どさくさに紛れやがって・・・・

ガッ!!!


542 名前:デフォルトの名無しさん :2006/11/29(水) 01:08:02
数値としての0を定義するマクロってあるかな?ZEROとか?
とりあえず開発環境で定義されている、MB_OK辺りでも使っとくか。
ポインタよりは、数値の定義という点でマシだから。

543 名前:デフォルトの名無しさん :2006/11/29(水) 01:14:42
hWnd=CreateWindowEx(MB_OK, "MyWndClass",…
テラワロス

544 名前:デフォルトの名無しさん :2006/11/29(水) 01:35:17
if(a-b == MB_OK)
  DrawText((hdc, MB_OK, MB_OK, "かんべんしてください",10);

545 名前:デフォルトの名無しさん :2006/11/29(水) 01:54:22
ヌルポインタをわかっているつもりのやつもそうでないやつも全員ここ読め。
http://www.kouno.jp/home/c_faq/c5.html

546 名前:デフォルトの名無しさん :2006/11/29(水) 03:08:49
for( i=MB_OK; i<10; i++)
for( j=MB_OK; j<10; j++)
for( k=MB_OK; k<10; k++)


547 名前:デフォルトの名無しさん :2006/11/29(水) 05:14:12
そもそもCでは10進数の0を表現できる手段がないのがいけない。

548 名前:デフォルトの名無しさん :2006/11/29(水) 05:15:54
>>547
( ゚д゚)

549 名前:デフォルトの名無しさん :2006/11/29(水) 08:38:36
NULLとかMB_OKだと、0以外の値にする必要が生じても定義を変えられないわけだから、
そんなものを使う意味は無いよな。独自定義か、そのまま0でおk。

550 名前:デフォルトの名無しさん :2006/11/29(水) 11:28:22
>>514
ダイアログのCS_SAVEBITS。Saveされた絵を無効にすればいい。
それと、メニュー表示時は518のメッセージループを通らない。
あと、WM_PAINTハンドラはあった方がいい。

551 名前:506 :2006/11/29(水) 16:47:53
遅レスですみませんm(_ _)m
なるほど、ちゃんと方法があるんだなぁ・・・
と、思ったもののなかなかDLL側だけでどうこうというのは
難しいですね(´・ω・`)

少しSleepでもさせてからFreeLibraryAndExitThreadを呼ぶとか
そんな方法しかないかなぁ(->Release()だけで済ませたいなら)。

色々やってみます、ありがとうございました。

552 名前:デフォルトの名無しさん :2006/11/29(水) 21:54:46
スレ違いだけど

>>523
そもそも途中でreturnしたら関数の結果が変わるからNG

一般的には対象関数のreturn先にブレークポイントを敷いて
関数内ではステップ実行しない

本気で勉強したいならこちらをどうぞ
ttp://www.amazon.co.jp/exec/obidos/ASIN/4756117457

553 名前:デフォルトの名無しさん :2006/11/29(水) 21:56:50
>>552
523じゃないけど音速で注文した

554 名前:520 :2006/11/30(木) 01:43:58
>>552
注文したいけど品切れorz
けどわくわくするAPIとかハッケンー

基本的なデバッグAPI
ttp://msdn.microsoft.com/library/default.asp?url=/library/en-us/debug/base/debugging_reference.asp

もうちょい踏み込んだデバッグAPI (devenv.exeと同じディレクトリにdbghelp.dllがあったのでVisual Studioはこっち使ってそう
ttp://msdn.microsoft.com/library/default.asp?url=/library/en-us/debug/base/dbghelp_functions.asp

pdb弄ぶライブラリ
ttp://msdn2.microsoft.com/en-us/library/x93ctkx8(VS.80).aspx

なんかできそうな気がしてきた

555 名前:デフォルトの名無しさん :2006/11/30(木) 10:17:31
> pdb弄ぶライブラリ
なんて卑猥なライブラリなんだ

556 名前:デフォルトの名無しさん :2006/11/30(木) 11:28:02
>>512
亀だがwine検索してみたら

/***********************************************************************
* FreeLibraryAndExitThread (KERNEL32.@)
*/
void WINAPI FreeLibraryAndExitThread(HINSTANCE hLibModule, DWORD dwExitCode)
{
FreeLibrary(hLibModule);
ExitThread(dwExitCode);
}

  _, ._
( ゚ Д゚) マジで?

557 名前:デフォルトの名無しさん :2006/11/30(木) 11:37:14
>>556
バロスwwwwwwww
なんだこの関数wwwwwwwww

558 名前:デフォルトの名無しさん :2006/11/30(木) 11:40:37
イカスw

559 名前:デフォルトの名無しさん :2006/11/30(木) 12:42:42
DLL内で同じ事をするとFreeLibraryから帰ってきた瞬間に死亡するから有用なAPIだよ

560 名前:デフォルトの名無しさん :2006/11/30(木) 13:41:49
>>556
いや、そのコードで正しいんだよ。
>>559氏も書いているが、FreeLibraryAndExitThread()が
kernel32.dll内にあることに重大な意味がある。


561 名前:デフォルトの名無しさん :2006/11/30(木) 13:43:51
FreeLibraryAndExitThreadFreeLibraryAndExitThread.
ロード済みのダイナミックリンクライブラリ(DLL)の参照カウントを 1 減らし、
ExitThread ... VOID FreeLibraryAndExitThread( HMODULE hModule,
// DLL モジュールのハンドル DWORD dwExitCode // スレッドの終了コード); ...
www.microsoft.com/japan/developer/library/Jpwinpf/_win32_freelibraryandexitthread.htm - 4k -



562 名前:デフォルトの名無しさん :2006/11/30(木) 13:59:56
空気が読めない奴はこれだから

563 名前:デフォルトの名無しさん :2006/11/30(木) 14:14:22
空気は読むもんじゃない。
吸うもんだ。

564 名前:デフォルトの名無しさん :2006/11/30(木) 14:16:10
>>556
AdvancedWindowsでも、kernel32.dllの中で次のように実装されているといって、
全く同じコードが載せられている。

565 名前:デフォルトの名無しさん :2006/11/30(木) 22:28:25
FreeLibraryでエラーでたらどうすんの?

566 名前:デフォルトの名無しさん :2006/11/30(木) 22:41:15
>>560
ああ成程。kernel32からFreeLibraryとExitThread投げてくれるから
ちゃんと解放してくれるわけか。勉強になった。

567 名前:デフォルトの名無しさん :2006/12/01(金) 00:37:17
Sleep(INFINITE)
で質問なのですが
INFINITEで無制限待機になったスレッドを起こす方法はないのでしょうか?

javaや.NET Frameworkのスレッドメソッドだと
sleep,join,wait 状態を解除するinterruptメソッドがあるのですが・・・
linux系の一部実装だとwakeupとかかな・・・?
ともかく、これに相当するようなWin32 APIはないのでしょうか。



568 名前:デフォルトの名無しさん :2006/12/01(金) 00:40:02
>>567
WaitForSingleObjectとかで待機させろよ

569 名前:デフォルトの名無しさん :2006/12/01(金) 00:46:30
>>567
SuspendThreadとResumeThreadってのがるけど、
あれ?自分をsuspendって出来るんだっけ?

570 名前:デフォルトの名無しさん :2006/12/01(金) 00:58:09
>>569
SleepとかWaitForSingleObjectとかしてちゃ何もできんだろ・・・
>>567は他スレッドから待機を終わらせる方法を聞いてるんじゃないのか?

571 名前:デフォルトの名無しさん :2006/12/01(金) 01:05:20
WaitForSingleObjectでいいだろ、常識的に考えて

572 名前:567 :2006/12/01(金) 01:30:09
WaitForSingleObject,timeout=INFINITEで
ハンドルはセマフォ(1,1)あたりを渡す方法ですかね?



573 名前:デフォルトの名無しさん :2006/12/01(金) 01:31:42
createEvent

574 名前:569 :2006/12/01(金) 01:50:53
>>570
Sleepする代わりにSuspendThread(自分)ってやったら
他スレッドから起こすことが出来るかな?と思って。
今、試せないからどうなるのか分からないので。

でもまあ、スレッド間で同期を取ることを考えると、
普通にWaitFor〜がいいとは思うけど。

575 名前:デフォルトの名無しさん :2006/12/01(金) 02:43:31
俺は普通に使ってる>Suspend自分

576 名前:デフォルトの名無しさん :2006/12/01(金) 09:48:30
待機だけじゃなくて、非常脱出もみたいから WaitForMultipleObjects で
寝るようにしてるな

577 名前:デフォルトの名無しさん :2006/12/01(金) 10:08:22
逆にSuspendって自分以外に使うの怖くない?
今何してるか分からん奴を突然止めてしまうのは気持ち悪い。

578 名前:デフォルトの名無しさん :2006/12/01(金) 11:25:49
ハァハァ、今ナニしてるの・・・?

579 名前:デフォルトの名無しさん :2006/12/01(金) 11:56:02
手術中の医者をSuspend
着陸直前のジャンボのパイロットをSuspend

580 名前:デフォルトの名無しさん :2006/12/01(金) 12:04:52
あの娘をSuspendしていろんな事を

581 名前:デフォルトの名無しさん :2006/12/01(金) 12:16:37
気づいたときにはTerminate

582 名前:デフォルトの名無しさん :2006/12/01(金) 12:17:56
>>578
        \(
        ∧_∧ ハァハァ
  シコ   ( ´Д`/"lヽ
      /´   ( ,人)
  シコ  (  ) ゚  ゚|  |  オナヌーしてます
      \ \__,|  ⊂llll
        \_つ ⊂llll
        (  ノ  ノ
        | (__人_) \


583 名前:デフォルトの名無しさん :2006/12/01(金) 13:44:42
reader/writer lockってvista以上でサポートかよ。
2000でもサポートしてくれよぉ。

584 名前:デフォルトの名無しさん :2006/12/01(金) 22:55:02
RSSチェッカーやメールチェッカーなどのプログラムでよく実現されていますが、
起動時(とか復元時)にウィンドウを表示しつつも
そのウィンドウがアクティブにならないで最前面に表示されるソフトは、
どういうやり方をしていますか?

585 名前:デフォルトの名無しさん :2006/12/01(金) 23:05:12
>>584
TopMostで表示して、ユーザーが触ったら元に戻す
とかすればええんちゃう?

586 名前:デフォルトの名無しさん :2006/12/01(金) 23:19:57
>>584
書き方が悪くて申し訳ない。
ただ、作業中のソフトから入力カーソルを奪わないで起動したかっただけなのです。
いろいろ試しているうちに、
SetWindowPosにSWP_NOACTIVATEというフラグがあるのを発見しました。
どうやら、これでうまくいきそうです。多分。

587 名前:586 :2006/12/01(金) 23:21:34
レスアンカー間違えた・・・
>>585でした。レスありがとう。

588 名前:デフォルトの名無しさん :2006/12/02(土) 01:04:38
あるウィンドウに貼り付けられてるコントロールを別のウィンドウにコントロールのハンドルを維持したまま
移動することって可能ですか?

589 名前:デフォルトの名無しさん :2006/12/02(土) 01:08:35
SetParentは試してみました?

590 名前:デフォルトの名無しさん :2006/12/02(土) 01:43:06
>>589
thanx!!
できました!

591 名前:デフォルトの名無しさん :2006/12/02(土) 02:50:20
>>583
Vistaってそういうカーネルレベルの改良意外と多いんだよね。
Win板とか行くとみんなAeroくらいしかないと思ってるみたいだけど

592 名前:デフォルトの名無しさん :2006/12/02(土) 09:09:33
Win板の連中は表面しか見ない(見えない)からね〜。


593 名前:デフォルトの名無しさん :2006/12/02(土) 10:14:48
よく分からないんだけど、

System.Threading.ReaderWriterLock
プラットフォーム Win98以上

ってのがあるようだ。
スレ違いだけど。

594 名前:デフォルトの名無しさん :2006/12/02(土) 10:17:28
それ.NET Framework

595 名前:デフォルトの名無しさん :2006/12/02(土) 11:05:03
質問です。C# でタイトルバーの縦幅のピクセル数をAPI取得したいんですが
─────────────────
using System.Runtime.InteropServices;
─────────────────
[DllImport("coredll.dll")]
private static extern int GetSystemMetrics(int nIndex);
private int titlebar { get{ return (GetSystemMetrics(SM_CYCAPTION)); }}
─────────────────
これで実行すると「SM_CYCAPTIONはクラスまたは名前空間に存在しません」
と出てしまいます。まだ何かたりないのでしょうか。初心者な質問ですいませんがお願いします。

596 名前:デフォルトの名無しさん :2006/12/02(土) 11:08:25
NTではRtlAquireResourceExclusive/RtlAquireResourceSharedがあったようですが。

597 名前:デフォルトの名無しさん :2006/12/02(土) 11:12:19
>>595
C#スレで訊いた方がええんちゃうん?

598 名前:デフォルトの名無しさん :2006/12/02(土) 11:15:23
>>595
SM_CYCAPTIONをconstで宣言しろ。

599 名前:デフォルトの名無しさん :2006/12/02(土) 11:18:22
>>595
Win32のヘッダファイルを漁って、SM_CYCAPTIONの定義を見つけて
自分でconstとかで定義する。

600 名前:デフォルトの名無しさん :2006/12/02(土) 11:42:39
>>595
そもそもC#というか、.NET Frameworkの
System.Windows.Forms.SystemInformation.CaptionHeight プロパティ
じゃ駄目なのか?

601 名前:デフォルトの名無しさん :2006/12/02(土) 12:47:34
リストビューを作ったんですけど、水平スクロールバーを消すにはどうすればいいですか?

602 名前:デフォルトの名無しさん :2006/12/02(土) 15:01:20
そのリストビューのスタイルからWS_HSCROLLを除外すればいい

603 名前:デフォルトの名無しさん :2006/12/02(土) 16:20:34
自分で作ったプログラムからメモ帳とかIEを開くにはどうすればいいですか?

604 名前:デフォルトの名無しさん :2006/12/02(土) 16:30:37
ShellExecute or ShellExecuteEx

605 名前:デフォルトの名無しさん :2006/12/02(土) 16:43:44
>>604 できました。ありがとうございます。

606 名前:デフォルトの名無しさん :2006/12/02(土) 18:30:40
>>602
具体的にはどのようにすれば良いのですか?

607 名前:デフォルトの名無しさん :2006/12/02(土) 18:38:01
すみません、また分からないところが…
自分で作ったプログラムから、
指定したcppファイルを指定したコンパイラでコンパイルするプグラムを作りたいのですが、
ShellExecuteをつかって、コンパイルするところまではできたのですが、
コンパイラからのメッセージ文(エラーが出てコンパイルできなかったとか、正常にできたとか)を、
どうやって自分のプログラムに取り込めばよいのかがわかりません。
使っているコンパイラはbcc55なので、
ShellExecute(
    NULL,
NULL,
TEXT("bcc32"),
TEXT("test.cpp > message.txt"),
NULL,
SW_SHOWNORMAL);
という感じにすれば、
message.txt で取れるかと思ったのですが、できませんでした。
どうしたらいいのか、なにかヒントを教えてもらえると助かります。

608 名前:デフォルトの名無しさん :2006/12/02(土) 18:51:15
>>606
ちったぁ自分で調べるってことしろや
>>1にも書いてあろうがよ
「ウィンドウスタイル 変更」でググるだけでいくらでも参考になりそうなものが出てくるぜ?

609 名前:デフォルトの名無しさん :2006/12/02(土) 19:22:00
>>607
パイプ

610 名前:デフォルトの名無しさん :2006/12/02(土) 19:24:48
>>607
「>」とか「2>」はcmd.exeの機能だからcmd.exeを実行してやる必要がある。

611 名前:610 :2006/12/02(土) 19:26:46
書いてて自信がなくなってきたが

612 名前:デフォルトの名無しさん :2006/12/02(土) 19:32:57
>>609 >>610
ありがとうございます。早速ググッて見たのですが、説明が難しかったので、勉強してきます。

613 名前:デフォルトの名無しさん :2006/12/02(土) 22:48:08
>>612
>>610は"cmd.exe /c bcc32.exe -h > message.txt"


614 名前:607 :2006/12/02(土) 22:55:19
まだパイプについてはよく分からないのですが、検索した結果、
下のように作ったら、思ったように動かせました。
ありがとうございました。

BOOL MyFunc_CreateProcess
     (LPSTR  lpszCommandLine,  LPSTR   lpszFilePath)
{
HANDLE            hFile;
STARTUPINFO        si;
PROCESS_INFORMATION pi;
hFile = CreateFile(lpszFilePath,GENERIC_WRITE,0,NULL,
            CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL,NULL);
ZeroMemory(&si,sizeof(si));
ZeroMemory(&pi,sizeof(pi));
si.cb=sizeof(si);
si.dwFlags=STARTF_USESTDHANDLES;
si.hStdOutput=hFile;
CreateProcess(NULL,lpszCommandLine,NULL,NULL,FALSE,0,NULL,NULL,&si,&pi);
WaitForSingleObject(pi.hProcess, INFINITE);
CloseHandle(pi.hProcess);
CloseHandle(pi.hThread);
CloseHandle(hFile);
return TRUE;
}

615 名前:607 :2006/12/02(土) 22:57:29
>>613
リロード忘れてました。orz
そ、そんな簡単にできるんですか……orz

616 名前:デフォルトの名無しさん :2006/12/02(土) 23:09:12
でも9xにcmd.exeは無い罠。
607のようにプログラムでリダイレクトしてやるほうがいいと思う。

617 名前:デフォルトの名無しさん :2006/12/02(土) 23:24:16
じゃぁ,command.comでいいじゃん。


618 名前:デフォルトの名無しさん :2006/12/02(土) 23:44:06
%comspec%を知らないやつがこんなにいるとは・・・

619 名前:デフォルトの名無しさん :2006/12/03(日) 00:14:28
>>618
完全に忘れていた。%ComSpec%
思い出させてくれてありがとう。

620 名前:デフォルトの名無しさん :2006/12/03(日) 00:19:52
スクリプトの話しなどしていない罠

621 名前:デフォルトの名無しさん :2006/12/03(日) 00:35:34
うん。スクリプトの話なんか誰もしてないね。

622 名前:デフォルトの名無しさん :2006/12/03(日) 00:39:16
>>620pugya-

623 名前:デフォルトの名無しさん :2006/12/03(日) 01:10:17
スプリクトの話はしてもいい?


624 名前:デフォルトの名無しさん :2006/12/03(日) 01:11:04
>>623
専用スレ池

625 名前:デフォルトの名無しさん :2006/12/03(日) 01:22:22
Win32でXMLを扱うことができるAPIはありませんか?

626 名前:デフォルトの名無しさん :2006/12/03(日) 01:23:14
>>625
MSXML

627 名前:デフォルトの名無しさん :2006/12/03(日) 01:28:21
ありがとう。SDKを導入しないといけないのですね。。
チョイ仕事では済みそうにないですね。
とにかくサンキュー

628 名前:デフォルトの名無しさん :2006/12/03(日) 01:38:05
先生、%ComSpec%の使い方を教えてください! マジで!

629 名前:デフォルトの名無しさん :2006/12/03(日) 02:10:15
>>628
del %comspec%

630 名前:デフォルトの名無しさん :2006/12/03(日) 07:59:58
英語版のプロパティシートを作ったんですが、
それを実行すると日本語環境と英語環境でプロパティシート
のサイズが変わってしまいます。中身のサイズは同じよう
です。

何が原因かわかりますでしょうか?

631 名前:デフォルトの名無しさん :2006/12/03(日) 08:02:58
>>630
フォントが違うんじゃない?

632 名前:デフォルトの名無しさん :2006/12/03(日) 08:09:36
fontはダイアログプロパティにてms sans serif 9に
しています。
実際に表示されるフォントが違うかどうかは確認して
ないんですが、中身のサイズは同じようなので
違うと思ってたんですが。

633 名前:デフォルトの名無しさん :2006/12/03(日) 11:42:20
いや、親ウィンドウのフォントが違うんじゃないかと思ったんだけど。

634 名前:デフォルトの名無しさん :2006/12/03(日) 12:02:17
>>633
プロパティシート自体がトップウインドウなんです。

635 名前:デフォルトの名無しさん :2006/12/03(日) 12:28:02
FontLinkの影響か?
影響を受けないフォント(Arialとか)にしてみたらどうだろう。

636 名前:デフォルトの名無しさん :2006/12/03(日) 13:03:21
>>635
Arialにしてみましたが、だめでした。
Arialにすると、英語windowsで内部がはみ出してしまいました。

637 名前:デフォルトの名無しさん :2006/12/03(日) 14:39:36
SDKのプロパティシート関係を真面目に読んでみた。

1. ページの大きさは互換性の関係で、
指定フォントではなく'MS Shell Dlg'を基に計算される。

2. Windows2000以降では、
DIALOGEXテンプレートでDS_SHELLFONTスタイルを指定した時、
指定フォントに基づいて計算される。

訳が間違っていたらすまん。

638 名前:デフォルトの名無しさん :2006/12/03(日) 14:59:35
同じ MS Sans Serif でも日本語Windowsと英語Windowsでは(更に言うなら中国語他も)
フォントが違うよ。
プロパティーシートにする前に、普通のダイアログで試してみそ。
よって、プロパティーシートの親ウィンドウのサイズは決め打ちではNG。


639 名前:デフォルトの名無しさん :2006/12/03(日) 15:00:32
ページのそれとシートのそれとは関係が無い。
シートのDLGTEMPLATE中のそれは日英で異なる。
DLLを覗くか、シートのフォントを調べられたし。

640 名前:デフォルトの名無しさん :2006/12/03(日) 15:53:30
>>638,639
ありがとう。いろいろやってたらできたみたいです。
PROPSHEETHEADERのフラグにPSH_USEPAGELANGを追加したら
シートの大きさが同じになりました。

ただタブのフォントが若干ちがくなりましたが、
これはOKとします。

641 名前:デフォルトの名無しさん :2006/12/03(日) 20:58:46
ああごめん>>637の人もありがとう

642 名前:デフォルトの名無しさん :2006/12/03(日) 23:45:54
CreateFileの引数にFILE_FLAG_NO_BUFFERING | FILE_FLAG_OVERLAPPEDを指定して、
セクタサイズが4KByteだけど1001KByteのファイルを作成したい場合は
最後の1KB書き込むときにはCloseHandleしてCreateFileしなおすか
最初からFILE_FLAG_NO_BUFFERINGを諦めるしかないんでしょうか

643 名前:デフォルトの名無しさん :2006/12/03(日) 23:52:05
>>642
日本語でおk

とりあえず、セクタサイズは通常512byte、MOとかDVD-RAMとかで2KBの場合あり。
4KBなんてものは普通はないが。

644 名前:642 :2006/12/04(月) 00:07:29
>>643
すみません
セクタサイズではなくクラスタサイズでした
MSDNには、FILE_FLAG_NO_BUFFERINGフラグを指定した場合
書き込み&読み込みサイズと、バッファーのアドレスと、ファイルの書き込み&読み込み開始位置が
ディスクのクラスタサイズと一致してなければいけないと書いてありました。

そのため、クラスタサイズが4KBのディスクに1001KBのファイルを作ろうとすると
最後の1KBが書き込めなくなってしまうので

1、FILE_FLAG_NO_BUFFERINGを諦める 
  (このフラグを指定すると非同期書き込みのパフォーマンスが上がると書いてあったので、できれば諦めたくない)
2、一度ファイルを開き直してから書き込む
  (わざわざ開き直すのは面倒でスマートではない気がするので、他にいい方法があるなら避けたい)

この二つ以外に方法は無いのかと思って質問させていただきました


645 名前:デフォルトの名無しさん :2006/12/04(月) 00:07:50
アロケーションユニットサイズのこと?

646 名前:tsurarete yarou. :2006/12/04(月) 00:15:50
>>642
やったことないのでおおはずしかもしれないが、ダミーで埋めて 1004KB まで
書き込んでから、SetFilePointer() と SetEndOfFile() で余分なところを切
り捨てるんじゃだめ?

647 名前:デフォルトの名無しさん :2006/12/04(月) 00:19:07
>>644
セクタサイズ単位のはずだが。

648 名前:デフォルトの名無しさん :2006/12/04(月) 00:21:18
つーか、そんな小細工したってしなくたって、メディアの速度は変わらないよ。

649 名前:デフォルトの名無しさん :2006/12/04(月) 00:28:13
書き込みの境界さえあってれば、サイズは可変でいけた気がする。
ちなみに、大抵の場合パフォーマンスが低下するので使用はお勧めしない。

650 名前:642 :2006/12/04(月) 00:40:31
>>647
MSDNに思いっきりセクタサイズって書いてありましたねorz

>>646
SetFilePointerもセクタサイズ単位でしか移動できないようです

>>648
それはわかってるんですけどOSがバッファリングしなくなるので
その分早くなるのかと思いまして

>>649
>書き込みの境界さえあってれば、サイズは可変でいけた気がする。
やってみたところ、WriteFileがエラーを吐きました
GetLastErrorしてみたらエラーコードは0x57で「パラメータが間違っています。」だそうです
セクタサイズの整数倍にした場合はエラーになりませんでした。

>ちなみに、大抵の場合パフォーマンスが低下するので使用はお勧めしない。
そうなんですか・・・
こういうのはあまり詳しくないのでMSDNの記述を鵜呑みにしてました


勉強してちゃんと理解できるようになるまではFILE_FLAG_NO_BUFFERINGを諦めることにします
>>643-649
ありがとうございました


651 名前:デフォルトの名無しさん :2006/12/04(月) 01:04:39
最適化(と本人は思ってる)に凝る時期が俺にもありました。

652 名前:デフォルトの名無しさん :2006/12/04(月) 01:09:58
Win32触った奴なら、NO_BUFFERINGに夢見てしまう事が一度はあるだろうな。

>>650
NO_BUFFERINGは、ディスクキャッシュをあまり汚さずに済むのが唯一の利点かな。
FFCとかは使ってるのかもしれない。

653 名前:デフォルトの名無しさん :2006/12/04(月) 02:29:37
>>650
DBMSのように自前でバッファリングしてI/O回数の最適化を意識した処理を作っているのでなければ、
NO_BUFFERINGを使うメリットなんてないだろう。
通常のアプリくらいならやらないほうがいいと思う。

654 名前:デフォルトの名無しさん :2006/12/04(月) 03:04:42
ISOディスクイメージファイルの仕様が見つかりません。
ISO-9660ディスクの仕様なら見つかるのですが・・・

655 名前:デフォルトの名無しさん :2006/12/04(月) 06:08:24
583 名前: デフォルトの名無しさん [sage] 投稿日: 2006/12/01(金) 13:44:42
reader/writer lockってvista以上でサポートかよ。
2000でもサポートしてくれよぉ。

591 名前: デフォルトの名無しさん [sage] 投稿日: 2006/12/02(土) 02:50:20
>>583
Vistaってそういうカーネルレベルの改良意外と多いんだよね。
Win板とか行くとみんなAeroくらいしかないと思ってるみたいだけど

592 名前: デフォルトの名無しさん [sage] 投稿日: 2006/12/02(土) 09:09:33
Win板の連中は表面しか見ない(見えない)からね〜。


ntdll内で実装されているのでカーネルレベルの変更ではない。
目糞鼻糞だな。

656 名前:デフォルトの名無しさん :2006/12/04(月) 13:44:34
わざわざコピペしてまで言いたかったんだね。

657 名前:デフォルトの名無しさん :2006/12/04(月) 14:15:49
>>656
やぁ、目糞君www

658 名前:デフォルトの名無しさん :2006/12/04(月) 14:58:17
リバースエンジニアリングを行わないとntdll内で完結しているとは断言できないな

659 名前:デフォルトの名無しさん :2006/12/04(月) 15:05:14
>>654
スレ違いだが、まずは手元の適当なISOイメージが、そのISO-9660ディスクの仕様と一致しているか確かめろ。
一致しているならそれで良し、違ったらお前のググり方が悪い。

660 名前:デフォルトの名無しさん :2006/12/04(月) 15:14:47
>>654
raw image fileに仕様があると思っているのか?

>>658
素人乙


661 名前:デフォルトの名無しさん :2006/12/04(月) 15:22:02
なんか一人暴れてる馬鹿がいるな

662 名前:デフォルトの名無しさん :2006/12/04(月) 19:56:34
ド素人の質問で悪いんだが
reader/writer lockってどんなの?
APIの名前じゃ無さそうだが

663 名前:デフォルトの名無しさん :2006/12/04(月) 20:01:07
・誰かが書き込み中なら、読み込み要求は待たされ
・誰かが読み中なら、書き込み要求は待たされ
・皆読み中での、読み込み要求は待たされずにすんなり通る

をプロセス/スレッドまたいで、うまく解決できるようにする機構

664 名前:デフォルトの名無しさん :2006/12/04(月) 20:32:05
どうも

665 名前:デフォルトの名無しさん :2006/12/04(月) 21:24:00
>>654
とりあえずISOディスクイメージファイルって何ぞやってことだな.
自分用語だから誰もそれが何なのか分からない.

CD-ROM及びDVD-ROMは1セクタにつき2048バイトをデータとする論理構造を持ち
一般的にはそれの1トラックの連結ストリームをイメージファイルとするけど、CD-R
では本来の補助情報を含めた2352バイトを物理的に焼きこめることもあって、各ソフト
毎に好き勝手に独自フォーマットを持っている. (DVDはRAW焼きはできません)
また、TOC情報とかもイメージに取り込んでいるのもあるな.

ので、一般的にisoイメージと呼ばれているものはその実はそれが何なのかは、
それだけでは分からない. 一番可能性が高いのは1セクタ2048バイトなシングル
トラックイメージというだけ.

666 名前:デフォルトの名無しさん :2006/12/05(火) 00:33:47
アイコンハンドラやコンテキストメニューハンドラ等のShell Extension関連の
お勧めな書籍はありますか?
Delphiのですと下記のが一応見つかりましたが、VCでお勧めがありましたら…。
シェルプログラミング入門
ttp://www.amazon.co.jp/exec/obidos/ASIN/479730782X

667 名前:デフォルトの名無しさん :2006/12/05(火) 00:55:34
MSDN マジオススメ

668 名前:デフォルトの名無しさん :2006/12/05(火) 01:48:44
GetWindowLong()で、GWL_WNDPROCとDWL_DLGPROCの違いがわからない。
ウィンドウとダイアログの違いって?(^^;

669 名前:デフォルトの名無しさん :2006/12/05(火) 05:42:42
>>620
ExpandEnvironmentStringsの話ならおk?

670 名前:デフォルトの名無しさん :2006/12/05(火) 05:47:34
>>596
Vistaに限らずNT系の新APIに見えるものは実はntdllの非公開APIに公開の皮を
かぶせただけ、ってパターンも結構あるな。
Win9x切り捨てたので遠慮する必要がなくなったんだろう

671 名前:デフォルトの名無しさん :2006/12/05(火) 09:51:21
>>668
ttp://msdn.microsoft.com/library/en-us/winui/winui/windowsuserinterface/windowing/dialogboxes/aboutdialogboxes.asp
>Dialog boxes usually belong to a predefined, exclusive window class.
>The system uses this window class and its corresponding window procedure for both modal and modeless dialog boxes.
>When the function is called, it creates the window for the dialog box, as well as the windows for the controls in the dialog box,
>then sends selected messages to the dialog box procedure.

672 名前:デフォルトの名無しさん :2006/12/05(火) 10:15:18
初歩的な質問ですみません。

VisualC++ 2005 EE を使い始めたのですが、
VisualC++ 6.0と違ってリソースエディタがありません。

なので、無理矢理コントロールをウインドウに貼り付けて処理したいと思うのですが、
どのように貼り付ければ良いのか、参考となるサイトなど教えていただけないでしょか?

673 名前:デフォルトの名無しさん :2006/12/05(火) 10:33:34
>>672
VC6のリソースエディタなりサードパーティ製リソースエディタ使えば?BCCFormとか。

674 名前:デフォルトの名無しさん :2006/12/05(火) 10:41:56
ダイアログのWindowProc(DefDlgProc)はこんな感じ。

LRESULT API DefDlgProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
  BOOL result = FALSE;
  hwnd->DWL_MSGRESULT = 0;
  if(hwnd->DWL_DLGPROC
    && (result = CallDlgProc(hwnd, message, wParam, lParam))
  {
    //メッセージに応じてDWL_MSGRESULTかresultを返す
    return DWL_MDGRESULT or result;
  }
  else
  {
    switch(message)
    {
    /*さまざまなメッセージハンドラ*/
    case WM_XXXX:
      return 何とか
    default:
      return DefWindowProc(hwnd, message, wParam, lParam);
    }
  }
}

DlgProcはダイアログのWindowProcのフロントエンドなので、
DlgProcでデフォルト処理後に独自の処理を加えるのはメンド臭いです。


675 名前:672 :2006/12/05(火) 11:14:36
>>673-674
迅速なレス有難う御座います。
方法すら見当もつかなかった自分としては、お二方のご指南本当に有難いです。
やはりソースコードで全て処理するとなるとやや時間もかかり、
面倒かもしれませんが、頑張ってみようと思います。

676 名前:デフォルトの名無しさん :2006/12/05(火) 11:28:37
ドラッグ・アンド・ドロップで
DragQueryFile関数を使いパスつきのファイル名が取得できますが
パスなしのファイル名が取得できる関数はあるのでしょうか?

677 名前:デフォルトの名無しさん :2006/12/05(火) 11:30:53
パス削ったらいいがな(´・ω・`)

678 名前:デフォルトの名無しさん :2006/12/05(火) 11:37:49
PathFindFileName

679 名前:676 :2006/12/05(火) 11:44:27
>>678
ありがとうございます。

680 名前:デフォルトの名無しさん :2006/12/05(火) 13:35:57
>>672
その方法は面倒だが、それだって探せばいくらでも見つかる。
親のWM_CREATEで子をCreateWindow(Ex)すればいいだけ。


681 名前:デフォルトの名無しさん :2006/12/06(水) 13:52:31
WindowsでUSBメモリとかで繋いだときにそのタイミングで
接続されたイベントを取得したい場合どうすればいいでしょうか?
ipodを繋いだらitunesが起動するみたいなことがやりたいです。
msdnとかで調べたけどわかりませんでした。
お願いします。

682 名前:デフォルトの名無しさん :2006/12/06(水) 14:04:19
WM_DEVICECHANGE

683 名前:デフォルトの名無しさん :2006/12/06(水) 15:19:42
DirectXを利用しているプログラムで
日本語入力をしたいのですが
IMEに未確定文字を表示させないようにして
独自で描画することはできますか?


684 名前:683 :2006/12/06(水) 15:49:39
すまん、やっぱDirectXスレのほうで聞いてくる。


685 名前:デフォルトの名無しさん :2006/12/06(水) 17:10:55
>>681
SHCNE_MEDIAINSERTEDだな。

686 名前:デフォルトの名無しさん :2006/12/06(水) 19:21:50
ツールバーのあるアプリケーションを
ValidateRectで描画を更新しているのですが

VC++6.0から実行すると、ツールバーが消えてしまいますが
exeから動かすとツールバーが表示されています。

これはどうしようも無いんでしょうか。
BeginPaint〜EndPaintだとVC++6.0の実行でも問題なし

687 名前:デフォルトの名無しさん :2006/12/06(水) 21:16:06
>>686
絶対なんかやってることがおかしい。

あと「ValidateRectで描画を更新」って何だよ?

688 名前:デフォルトの名無しさん :2006/12/06(水) 21:33:28
ValidateRectって「もう描画しなくてもいいよ」って命令じゃなかったぽ?


689 名前:デフォルトの名無しさん :2006/12/06(水) 21:35:21
WM_PAINTする領域に含めなくていいよ、という命令

690 名前:デフォルトの名無しさん :2006/12/06(水) 21:37:14
その逆はそのまんまでInvalidateRect。

691 名前:203 :2006/12/06(水) 21:48:28
メッセージは
while( 1 )
{
 if( ::PeekMessage( &msg, NULL, 0U, 0U, PM_NOREMOVE ) )
 {
  if( ::GetMessage( &msg, NULL, 0, 0 ) <= 0 )
   return msg.wParam;

  ::TranslateMessage(&msg);
  ::DispatchMessage(&msg);
 }
}

プロシージャでは
GetClientRect( g_hWnd, &wrc );
GetClientRect( g_hTool, &trc );
wrc.top = trc.bottom;

case WM_TIMER:
 InvalidateRect( g_hWnd, &wrc, TRUE );
 UpdateWindow( g_hWnd );
 break;

case WM_PAINT:
 ValidateRect( g_hWnd, &wrc );
 break;
といった感じで処理しています。
たまにツールバーが出現したりして謎です。
ValidateRectの描画の更新は、すいません表現を間違えました。

692 名前:デフォルトの名無しさん :2006/12/06(水) 21:50:27
標準リストビューの行の高さって変更できますか?
やり方教えてください。

693 名前:691 :2006/12/06(水) 21:50:56
名前欄間違えた。
×203
○686

694 名前:デフォルトの名無しさん :2006/12/06(水) 21:51:25
そのビジーループには何か意味があるの?

695 名前:692 :2006/12/06(水) 21:51:31
全部の行ではなくて指定した行の高さってことです。

696 名前:デフォルトの名無しさん :2006/12/06(水) 21:52:50
TextOutで@、Tとかの表示の文字化けは大丈夫でしょうか。

697 名前:デフォルトの名無しさん :2006/12/06(水) 21:53:28
Sleep(1)とかしろよ。

698 名前:696 :2006/12/06(水) 21:54:44
自分は9x系を使っていて、9x系なら大丈夫みたいですが、
他ののWindowバージョンだとどうでしょうか。

699 名前:デフォルトの名無しさん :2006/12/06(水) 21:57:10
PeekMessageは何の意味が?

700 名前:デフォルトの名無しさん :2006/12/06(水) 21:59:53
>>692
http://www.google.com/search?num=100&hl=ja&ie=EUC-JP&q=%A5%EA%A5%B9%A5%C8%A5%D3%A5%E5%A1%BC%A4%CE%B9%D4%A4%CE%B9%E2%A4%B5

701 名前:デフォルトの名無しさん :2006/12/06(水) 22:00:33
IDLE時に何かしたい時にあういうループ組むね
ゲーム作ってる時とか

702 名前:デフォルトの名無しさん :2006/12/06(水) 22:02:11
ループなんてどうでもいいが
WM_PAINT内の処理がありえないな
せっかく描画しようとしてるところを、描画もせずに「もう描画しなくていいよ」なんていや消えるのは当たり前だろ
ツールバーも親ウィンドウ上にあるものだぞ?

703 名前:デフォルトの名無しさん :2006/12/06(水) 22:05:48
>>691は要は
人に「ちょっとこっち来て!」って呼んどいて
来たら「こっち来るんじゃねーよ!」って言うようなもんだな。

704 名前:686 :2006/12/06(水) 22:06:39
InvalidateRect と ValidateRect に
NULLなりGetClientで得た領域をそのまま渡すと
ツールバーが塗り潰されてしまいます。

ツールバーとValidateRectは合わないのだろうか

705 名前:デフォルトの名無しさん :2006/12/06(水) 22:07:49
>>700
>>695

706 名前:デフォルトの名無しさん :2006/12/06(水) 22:09:42
>>704
つーかあんた、最初の自分の書き込みで最後に結論出してるだろうが

707 名前:686 :2006/12/06(水) 22:12:12
>>706
BeginPaint〜EndPaint を使うと
DirectXの
Clear, BeginScene, EndScene, Present使うと
チラチラチラチラするもんで
出来れば ValidateRect を使いたいなと

708 名前:704 :2006/12/06(水) 22:12:30
後キミ、InvalidateRectを目が痛くなるまで調べてこい

709 名前:デフォルトの名無しさん :2006/12/06(水) 22:44:13
ちょっと待って
>>686=>>704=>>708なの?

710 名前:708=706 :2006/12/06(水) 22:46:58
すごく、ミスです・・・orz

711 名前:696 :2006/12/06(水) 22:54:02
どなたか、>>696>>698についてお願いします。

712 名前:デフォルトの名無しさん :2006/12/06(水) 22:56:44
文字化けが大丈夫かって、どう大丈夫なのかわかりゃせんし
文字化けするかしないかってだけなら

そ ん な こ た ぁ 自 分 で 実 行 し て み り ゃ わ か る だ ろ

713 名前:デフォルトの名無しさん :2006/12/06(水) 22:59:31
そもそも、@とかTとかの文字化けがなぜ起こるのかを知ってたら
>>696みたいな質問は出てくるわけがないと思うんだが。

714 名前:デフォルトの名無しさん :2006/12/06(水) 23:00:38
丸数字とかはOSの違いによる文字化けじゃなかったか?
まあソフトで使う分には、対象言語圏が日本なら心配要らないだろう

715 名前:デフォルトの名無しさん :2006/12/06(水) 23:03:07
そんなに心配ならTextOutW使っておけ。9xでも対応している。

716 名前:デフォルトの名無しさん :2006/12/06(水) 23:05:44
かなり誤解を招きそうなので訂正

丸数字の文字化けを考えないといけないのは違うOSで表示させる場合
(WEBアプリケーションとか)

717 名前:デフォルトの名無しさん :2006/12/06(水) 23:06:26
つ プリンタにフォントが無い

この場合も化けはしないけどな

718 名前:696 :2006/12/06(水) 23:21:48
みなさまありがとうございます。
参考になりました。

719 名前:デフォルトの名無しさん :2006/12/06(水) 23:34:04
うっかりCreateFontでCharSet(文字集合)がとんでもないものを指定してしまったフォントでは化ける。
勿論丸付き数字どころの騒ぎではない。

720 名前:デフォルトの名無しさん :2006/12/07(木) 00:09:42
タスクバーに表示させない方法はあるのでしょうか?

721 名前:デフォルトの名無しさん :2006/12/07(木) 00:15:00
何を?

722 名前:デフォルトの名無しさん :2006/12/07(木) 00:26:59
天は自ら助くる者をタスク

723 名前:720 :2006/12/07(木) 00:41:14
ウインドウが開いているときにタスクバー
に表示させない(つかわない)方法はないでしょうか?

724 名前:デフォルトの名無しさん :2006/12/07(木) 01:09:40
ウィンドウのスタイルを変えるかタスクバーのリストビューをフック

725 名前:デフォルトの名無しさん :2006/12/07(木) 01:20:22
WS_EX_APPWINDOWだっけ?

726 名前:デフォルトの名無しさん :2006/12/07(木) 02:07:18
アイコンエディタって何が使いやすい?

727 名前:デフォルトの名無しさん :2006/12/07(木) 05:58:30
俺は Axialis のシェアウェア使ってる。
その他のアイコンエディタをほとんど使ってないから、
他と比べてどうかは知らんが満足してる。

728 名前:デフォルトの名無しさん :2006/12/07(木) 07:05:56
>>720
不可視の親ウィンドウ

729 名前:デフォルトの名無しさん :2006/12/07(木) 10:15:11
>>704
>ツールバーが塗り潰されてしまいます。
DirectXが塗りつぶしているのなら、DirectXの使う領域を指定する。
単一色で塗りつぶされているのなら、ウィンドウスタイルにWS_CLIPCHILDRENをつける。
または、WNDCLASS(EX)のhbrBackground=NULLでもいいと思う。

それより、DirectX描画用の子ウィンドウをつくり、
WM_SIZEでクライアント領域のツールバーの下に移動する方が簡単。


730 名前:デフォルトの名無しさん :2006/12/07(木) 10:27:26
つーか何ゆえに
別にウィンドウが一旦隠れたわけでもないのに
メッセージループ内からWM_PAINT発生させてんのか理解できんのだが
そんなことすりゃチラつくのは当たり前だろうと
WM_PAINTの存在意味を解って無いだろ

731 名前:デフォルトの名無しさん :2006/12/07(木) 11:39:00
>そんなことすりゃチラつくのは当たり前だろうと
BeginPaintせずにValidateRectしてるんだからちらつきましぇん。


732 名前:686 :2006/12/07(木) 11:59:59
>>729
有難うございます
WS_CLIPCHILDRENで解決しました。

領域を指定しての最初のValidateRect
は無効領域を残したままだったので
いつまでもWM_PAINTが残っている状態でした。
かといって全領域を指定するとWM_PAINTは消えますが
ツールバーごと塗り潰すといった事態に

DirectXに関してはPresentに
ツールバー分を引いたクライアント領域に
転送(2番目引数)するようにしています。

>DirectX描画用の子ウィンドウをつくり、
>WM_SIZEでクライアント領域のツールバーの下に移動する方が簡単。
その内使わせて頂きます。

>>730
アニメーションやらシミュレーションやらを入れたいと思ったので
WM_PAINTを発生させまくる状況を作ってみました。

733 名前:デフォルトの名無しさん :2006/12/07(木) 16:31:03
>>726
@icon + ドットエディタ

734 名前:デフォルトの名無しさん :2006/12/07(木) 20:26:05
Direct3Dを使っていてなぜ
アニメーションやらシミュレーションやらを入れるのにWM_PAINT連打せねばならぬのか


735 名前:デフォルトの名無しさん :2006/12/07(木) 23:34:51
C#を使ってプログラミングしてます。
他アプリケーションのDataGridに表示されている値を取得する方法はありますでしょうか?
LABELやConboBoxの値はWin32APIを使って取得する方法は分かるのですが
DataGrid系に表示されている値の取得方法がどうしても分かりません・・・('A`)

736 名前:デフォルトの名無しさん :2006/12/08(金) 01:29:31
マ板で質問したのですが、ム板に誘導されましたので、こちらで質問します。

CD-Rや、DVD-Rなどの光メディアに、プログラムから書き込むことって可能ですか?
API名とか、ヒント下さい。



737 名前:デフォルトの名無しさん :2006/12/08(金) 01:56:42
>>736
IMAPI

738 名前:デフォルトの名無しさん :2006/12/08(金) 01:59:27
>736
SPTI

739 名前:デフォルトの名無しさん :2006/12/08(金) 02:00:54
GetPixel()でDirectX使ったアプリの色情報を取得したいのですが、
どうしても0が返されます。

DirectXアプリ以外のエリアで情報を取得する分には問題ないのですが。

特殊なやり方をしないととれないのでしょうか。

740 名前:デフォルトの名無しさん :2006/12/08(金) 02:07:02
>>737-738
なるほど、こんなのが有ったんですね。
ありがとうございます。助かりました。

741 名前:デフォルトの名無しさん :2006/12/08(金) 03:15:59
文字認識や手書き認識の再利用可能なモジュールってどこかにあるのだろうか?

742 名前:デフォルトの名無しさん :2006/12/08(金) 04:25:42
Win32 APIに?

743 名前:デフォルトの名無しさん :2006/12/08(金) 05:08:28
Tablet PC Platform SDKでは提供されているみたいだけどね。

744 名前:kk :2006/12/08(金) 08:51:48
WinAPI + C++で、リソーススクリプトで作った
ダイアログのエディットボックスに入力されてる文字列はどうすれば
PTSTRなどに入れられるのでしょうか

745 名前:デフォルトの名無しさん :2006/12/08(金) 08:57:56
普通にGetDlgItemText/GetWindowText

746 名前:kk :2006/12/08(金) 09:17:28
リソーススクリプトを使用しているので、エディットボックスのHWNDがないのですが。。。

747 名前:デフォルトの名無しさん :2006/12/08(金) 10:02:43
なんで、リソーススクリプトを使用していると、エディットボックスのHWNDが無いと思うの?

748 名前:245 :2006/12/08(金) 11:21:04
CreateCompatibleDCで作った場所に、
rectangleで書きこんで一部消去とか(真中だけ抜く)は、
抜きたい部分をXORで合成するしかないでしょうか?
指定したrectの分だけ消去するとかできないもんでしょうか。
CreateCompatibleDCで作った場所に書きこんで、
ほかのDCに書きこんだら、CreateCompatibleDCにrectangleしたところ意外は、
透明でほかのDCに書きこまれるので、rectangleの真中だけ書きこむ前の透明にしたいです。

749 名前:デフォルトの名無しさん :2006/12/08(金) 11:23:28
>>748
日本語でおk

rectangleしたところって意味不明すぎるw

750 名前:デフォルトの名無しさん :2006/12/08(金) 11:25:40
>>746
GetDlgItemTextは親のウィンドウハンドルと子のIDがあれば十分。
GetWindowTextLengthとGetWindowTextのコンビを行いたければ、GetDlgItem使え。


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