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


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

Win32API質問箱 Build19
501 名前:デフォルトの名無しさん :04/06/03 19:27
>>500
んじゃ素直に初期化をDllMainでやれ。

502 名前:478 :04/06/03 19:31
無事成功しました。皆さんありがとうございます。
せっかくなのでソースを貼っておきます。

CreateProcessやShellExecuteで作成したプロセスを終了させるサンプル
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1086258254&res=2


503 名前:デフォルトの名無しさん :04/06/03 19:40
動画ファイルからBMP形式で特定のフレームを取り出したいのですが、
AVI以外の形式の場合の取り出し方がわかりません。
OSにインストールされているコーデックを利用出来れば
取り出せるようになると思うのですが、
自作アプリからそれらのコーデックはどうやったら呼び出せるのでしょうか?


504 名前:デフォルトの名無しさん :04/06/03 19:40
>>502
ざっと見て気になったところ
・WM_CLOSEでメインウィンドウが閉じられたからといってプロセスが終了するとは限らない。
 WM_QUERYENDSESSION/WM_ENDSESSION(Windows終了/ログオフ時のメッセージ)
 のほうがより確実だと思う。
・対象プロセスが死んでると道連れになるからWaitForでINFINITE待機はやめれ

505 名前:デフォルトの名無しさん :04/06/03 19:59
>>503
DirectShowでできるんでない?

506 名前:デフォルトの名無しさん :04/06/03 20:58
>>500
>グローバルなオブジェクトのコンストラクタは
>DllMainより前に呼ばれるんですよ。

その DllMain は偽者ですよ。
リンカの設定で本物が指定してあるはずなんで、
それを書き換えるなりしてください。


507 名前:デフォルトの名無しさん :04/06/03 21:34
>>446が言ってるのって、これかな
ttp://www.tech-archive.net/Archive/Development/microsoft.public.win32.programmer.kernel/2004-03/0851.html


508 名前:デフォルトの名無しさん :04/06/03 22:33
>>502
ThreadのHANDLEもCloseしておけよ。

509 名前:503 :04/06/03 22:38
>>505
レスありがとうございます。
DirectShowで検索してDXSDKのGrabBitmapsにたどり着きました。
これがやりたい事そのものみたいです。

しかしこのサンプルを実行してみると、
hr = pGraph->Connect( pSourcePin, pGrabPin );
の行で必ずVFW_S_PARTIAL_RENDERが戻ってきており、
またcallbackも呼ばれません。
どなたかこのエラーの回避法をご存じ有りませんでしょうか?


510 名前:Earthquake :04/06/03 22:52
はじめまして。Earthquakeと申します。
Windows2000サーバのActiveDirectoryを使用している環境でのフォルダリダイレクトの設定を出力したいのですが、Win32APIでそんな関数ないですか?

511 名前:デフォルトの名無しさん :04/06/04 02:42
#include <windows.h>
#include <wincrypt.h>
#include <stdio.h>

/*----------------------------------------------------------------------------*/
namespace hoge
{
AnsiString LonToStr(unsigned long x)
{
int r;
AnsiString tmp;

r = x % 16;
x = x / 16;
if (x > 0) {
tmp = tmp + uLongToStr(x);
}
switch (r){
case 0: tmp = tmp + "0"; break;
case 1: tmp = tmp + "1"; break;
case 2: tmp = tmp + "2"; break;
case 3: tmp = tmp + "3"; break;
case 4: tmp = tmp + "4"; break;
case 5: tmp = tmp + "5"; break;
case 6: tmp = tmp + "6"; break;
case 7: tmp = tmp + "7"; break;
case 8: tmp = tmp + "8"; break;
case 9: tmp = tmp + "9"; break;
case 10: tmp = tmp + "a"; break;
case 11: tmp = tmp + "b"; break;

512 名前:デフォルトの名無しさん :04/06/04 02:42
case 12: tmp = tmp + "c"; break;
case 13: tmp = tmp + "d"; break;
case 14: tmp = tmp + "e"; break;
case 15: tmp = tmp + "f"; break;
}
return tmp;
}
}


int main()
{
HCRYPTPROV hProv;
HCRYPTHASH hHash;
HCRYPTKEY hKey;
BOOL bResult;
BYTE Buf[] = "今日は良い天気です";
BYTE Signature[100];
DWORD SignLen;

/* デフォルト鍵コンテナの取得 */
CryptAcquireContext(&hProv, NULL, NULL, PROV_RSA_FULL, 0);

/* ハッシュ値の生成 */
CryptCreateHash(hProv, CALG_MD5, 0, 0, &hHash);
CryptHashData(hHash, Buf, lstrlen(Buf)+1, 0);

printf("%s\n", hoge::LonToStr(hHash));


513 名前:デフォルトの名無しさん :04/06/04 02:44
/* 後処理 */
CryptDestroyKey(hKey);
CryptDestroyHash(hHash);
CryptReleaseContext(hProv, 0);
}

これをコンパイルすると
C:\cpp>bcc32 hash.cpp
Borland C++ 5.6 for Win32 Copyright (c) 1993, 2002 Borland
hash.cpp:
エラー E2141 hash.cpp 8: 宣言の構文エラー
エラー E2190 hash.cpp 38: 不要な }
エラー E2316 hash.cpp 58: 'LonToStr' は 'TET_YAS' のメンバーではない(関数 main()
)
*** 3 errors in Compile ***
となっちゃうんですけど、原因がよくわかりません。教えてください。

514 名前:デフォルトの名無しさん :04/06/04 03:09
bcc32でつか・・・

単にAnsiStringが定義されていないだけでは・・・?
よくわからないけど
#include <vcl.h>
とかそれっぽいのをincludeすればいいんじゃない?

515 名前:451 :04/06/04 04:08
>>465
どうも、レス遅くなってすみません!
言われましたとうりに、UpdateLayeredWindow()を使う事で
描画効率が格段に良くなりました!!

どうやら、自分で色々調べてみた結果
更新頻度の多いアプリでは、SetLayeredWindowAttributes()より
UpdateLayeredWindow()を使う方が推奨されているようですね。

本当にありがとうございました!!

516 名前:デフォルトの名無しさん :04/06/04 11:08
以下のように独自の構造化例外ハンドラをセットして、
その中から C++ 例外を創出するような以下のコードは危険でしょうか?

// カスタム例外ハンドラ
void _OnW32SEH( UINT code, _EXCEPTION_POINTERS * ep )
{
 _EXCEPTION_RECORD * er = ep->ExceptionRecord;
 throw MyCppException( code, er->ExceptionInformation );
}

// カスタム例外ハンドラを有効にする
void EnableSEtoCPPException()
{
 _set_se_translator( OnW32SEH );
}


517 名前:516 :04/06/04 11:53
すいません。
MSDNみたら、OKって書いてありました。


518 名前:デフォルトの名無しさん :04/06/04 11:58
ユーザ名とドメイン名とパスワードを渡して正規のユーザかどうかをチェックするにはどうしたらいいのでしょう?

MSDNまで漁ったけど漠然とし過ぎてるのか見付けられない…orz

519 名前:デフォルトの名無しさん :04/06/04 11:59
適当なプログラムをrunasで呼ばせて成功すれば認証OKってのはだめ?

520 名前:518 :04/06/04 12:49
>>519
いや、もっとスマートなやり方がきっとある筈なので…orz

521 名前:デフォルトの名無しさん :04/06/04 13:35
ActiveDirectory なら、LDAP使うとか。

522 名前:デフォルトの名無しさん :04/06/04 15:12
IHTMLDocument2のwriteを使ってIEコンポにHTMLを表示しました。
しかし、2度目writeすると現在の表示されているものに追加されて表示されてしまいます。
そこで一旦HTMLを全消去したいのですが方法が分かりません。
clear()とかやってみましたが駄目でした。

523 名前:デフォルトの名無しさん :04/06/04 16:34
about:blank開け!

524 名前:デフォルトの名無しさん :04/06/04 16:40
>>523
IHTMLDocumentは使ったこと無い者だが、それ面白いな。

まさか、それがMS推奨の手順ではないよな??

525 名前:デフォルトの名無しさん :04/06/04 17:02
>>522
とりあえず、MSDNのIHTMLDocument2::clearの項目を読め
全てはそこにある

526 名前:デフォルトの名無しさん :04/06/04 17:54
リストビューをカスタムドローして文字色を変更させているのですが、
特定の色:RGB(0,0,255)を指定した場合のみ変更されず困っています。
RGB(0,0,254)やRGB(0,1,255)の場合は問題ありません。
背景色の場合は問題ないようです。

どなたか原因または対処法をご存知ないでしょうか。
Win2000 VC6.0です。


527 名前:デフォルトの名無しさん :04/06/04 18:09
>>526
見た目気づかないから(0,1,255)でいいんじゃね?

528 名前:526 :04/06/04 18:39
どうも環境依存のようです。
実行環境のみ他のPCへ移してテストしたところ
WinXP NT4では問題ありませんでしたが、
他のWin2000では再現しました。

>>527
最終的に解決しない場合はそうします。



529 名前:デフォルトの名無しさん :04/06/04 18:46
>>528
ウチじゃ問題ないよ。

530 名前:デフォルトの名無しさん :04/06/04 18:50
ディスプレイの色数とかじゃないのか?

531 名前:デフォルトの名無しさん :04/06/04 18:51
>>>527
>最終的に解決しない場合はそうします。

仕事でこの手の問題にぶつかったときに
あまり悩まずに >>527のような処置で
済ませてしまうオレはダメダメでしょうか・・・。

532 名前:デフォルトの名無しさん :04/06/04 18:52
>>530
R/G/Bの原色が出ないカラーディスプレイは
たぶん存在しないだろう。


533 名前:デフォルトの名無しさん :04/06/04 18:53
>>531=kuzu

534 名前:デフォルトの名無しさん :04/06/04 20:00
IEのツールメニューに独自のメニューを追加するにはどうすればいいですか?

535 名前:デフォルトの名無しさん :04/06/04 20:57
>>531
damedame

536 名前:531 :04/06/04 21:24
辞表出してきます

537 名前:デフォルトの名無しさん :04/06/04 21:39
おうよ。後は俺が就職してやるから安心してくれ。

538 名前:デフォルトの名無しさん :04/06/04 22:32
>>534
ttp://www.codeproject.com/atl/popupblocker2.asp
このページをCToolsMenuで検索。
でももっと簡単な方法があるような気がしないでもないが。


539 名前:デフォルトの名無しさん :04/06/04 22:50
SDKで数値データを出力する方法を教えて下さい。
具体的にはreadfile関数などで読み込んだ文字列を
16進数で表示したいのです。


540 名前:デフォルトの名無しさん :04/06/04 22:58
出力ってどういう意味?

541 名前:デフォルトの名無しさん :04/06/04 23:08
wsprintf

542 名前:デフォルトの名無しさん :04/06/04 23:11
>>541
それはここに書き込む前に使ってみたんですが
デバック画面出て強制終了してしまいます。他に方法ないですか?

543 名前:デフォルトの名無しさん :04/06/04 23:14
ぬるぽしないようにちゃんとメモリ確保したか?

544 名前:デフォルトの名無しさん :04/06/04 23:14
>>542
お前のプログラムがへたれなだけ。

545 名前:デフォルトの名無しさん :04/06/04 23:15
>>543
どうやらそれっぽいのでもっかいやってみます

546 名前:デフォルトの名無しさん :04/06/04 23:21
>>545
ちゃんとガッしとけ

547 名前:デフォルトの名無しさん :04/06/04 23:22
>>543
とりあえず ガッ

548 名前:デフォルトの名無しさん :04/06/04 23:23
ヒントをやって叩かれるとは世知辛い世の中じゃ

549 名前:545 :04/06/04 23:26
強制落ちしないで起動しますた。なんとかできそうです。どうもですた

550 名前:デフォルトの名無しさん :04/06/04 23:31
これ(>>539-548)で解決したのか orz

551 名前:デフォルトの名無しさん :04/06/05 01:19
>>518
Net系のAPI使え

552 名前:デフォルトの名無しさん :04/06/05 01:28
オフスクリーンのピクセルデータをDIBにコピーするにはどうしたらいいでしょうか
BitBltじゃ遅くて...

553 名前:デフォルトの名無しさん :04/06/05 01:49
GetDIBits

554 名前:デフォルトの名無しさん :04/06/05 02:17
>>504
WM_CLOSEなら終了するけど
WM_*ENDSESSIONは無視する奴も結構あるぞ

555 名前:デフォルトの名無しさん :04/06/05 02:31
>>553
ありがとうございます
やってみたところあまり変わりませんでした
逆に少し遅くなってしまいました

556 名前:デフォルトの名無しさん :04/06/05 02:38
DIBは遅いもの、それはしょうがない気が。
αブレンドとかしたいのなら標準関数でDDBのままやるのがいいと思う

557 名前:デフォルトの名無しさん :04/06/05 02:41
ttp://www.sun-inet.or.jp/~yaneurao/intensive/diw1.html

まー、一応参考になるか?

558 名前:デフォルトの名無しさん :04/06/05 03:52
>>556
その通りでαブレンドがしたいのですが
DDBだとどうやってピクセルデータを弄るのかが分かりません

>>557
ありがとうございます
参考にさせていただきます

559 名前:デフォルトの名無しさん :04/06/05 03:57
AlphaBlend

560 名前:デフォルトの名無しさん :04/06/05 04:16
>>559
ありがとうございます
こんなAPIがあったとは!
αブレンドはこれで解決出来たと思います

561 名前:デフォルトの名無しさん :04/06/05 07:09
サブクラス化をして欲しい機能を実現したいのだけど、
ウインドウプロシージャを取り替えた後、そのウインドウが
終了するときは元のプロシージャに戻す必要があるのでしょうか?
また、戻すタイミングはいつがいいのでしょうか?
WM_DESTROYに返事をするときかな

WM_CHARとかWM_KEYDOWNとかでちょっと横取りして
あとはオリジナルにまかせっぱなしをしてるくらいだから
別に元に戻さなくてもいいような…

562 名前:デフォルトの名無しさん :04/06/05 11:43
hProcess->pid変換ってどうやるの。

563 名前:デフォルトの名無しさん :04/06/05 11:52
逆だった。hProcess<-pidね。

564 名前:デフォルトの名無しさん :04/06/05 13:05
>>563
OpenProcess

565 名前:デフォルトの名無しさん :04/06/05 13:17
タスクマネージャに出てくるプロセスの優先度を変更したいのですが、
どうすればいいのかさっぱり分かりません。
プライマリスレッドの優先度を低くしても、タスクマネージャの表示は標準のままなのですが・・・

566 名前:デフォルトの名無しさん :04/06/05 13:39
プロセスの優先度とスレッドの優先度は違うぞ。
どういう計算になるのか知らんけど。

567 名前:デフォルトの名無しさん :04/06/05 13:41
SetPriorityClass

568 名前:562 :04/06/05 14:55
>>564
それを使ってみたけどうまくいかないです。
タスクマネージャで表示されているプロセス(winhlp32.exe pid:3308)を指定して以下のコードを実行するとみると
for(;;){ printf("%d\n", OpenProcess(PROCESS_ALL_ACCESS, FALSE, 3308)); Sleep(1000); }
2024
2036
2012
2008
2004
2000
1996
...

こんな結果が返ってきてしまいます。使い方はこれしかないですよね。
でも、毎回結果が違うってありえないonz...


569 名前:デフォルトの名無しさん :04/06/05 15:03
>>568
藻前の脳味噌のほうがありえない
ハンドルってどういうものだか分かってるのか

570 名前:デフォルトの名無しさん :04/06/05 15:16
>>568
・・・とんでもないな。
OpenしたものはちゃんとCloseしろとかいう以前の問題。

571 名前:デフォルトの名無しさん :04/06/05 15:47
>>568
やりとりのふいんきが昨日の>>539と似てるんだが
OpenProcessの返値を出力するために>>539
質問をしたわけじゃないよな?

ちょっとお茶目すぎ

572 名前:デフォルトの名無しさん :04/06/05 16:47
下らないことかもしれませんが。
Sleep(INFINITE)を実行したスレッドを復帰させるにはどうすればいいですか?

573 名前:デフォルトの名無しさん :04/06/05 16:55
>>572
イベントなりセマフォと WaitForSingleObject を使え。

574 名前:デフォルトの名無しさん :04/06/05 17:09
>>572
はは、ほんとくだらないねーw
やったことないけど、ResumeThread じゃ起きないかな?


575 名前:デフォルトの名無しさん :04/06/05 17:12
無理

576 名前:デフォルトの名無しさん :04/06/05 17:36
DebugBreakProcess

577 名前:デフォルトの名無しさん :04/06/05 18:41
ジョイパッドはDirectXを使わないと使えませんか?

578 名前:デフォルトの名無しさん :04/06/05 19:12
joy

579 名前:デフォルトの名無しさん :04/06/05 19:27
>>578
ありがとう、出来ました

580 名前:デフォルトの名無しさん :04/06/05 19:48
リストボックスに何も文字入れていない状態なのに、一番上が点線で選択できるようになっているんですけど、
どうやった回避できますか?
一応プロパティあたりは見たつもりなんですが、無かったようですし、、、。

581 名前:デフォルトの名無しさん :04/06/05 20:15
>>580
何も無いときは真っ白なウィンドウを被せるとか

582 名前:デフォルトの名無しさん :04/06/05 20:23
hackyカコイイ

583 名前:デフォルトの名無しさん :04/06/06 03:21
CreateWindowに"MDICLIENT"を指定して作ったクライアントウィンドウ上で
右クリックメニューを出すにはどうしたらいいですか?

584 名前:デフォルトの名無しさん :04/06/06 03:29
>>583
あいにくと俺は超能力者ではないので喪前さんが言ってることが良く分からんのだが
ttp://black.sakura.ne.jp/~third/system/winapi/win78.html
ここに書いてあることで分かりそうかい?
ハズしてたらもうちょっと分かりやすく質問してくれ。

585 名前:デフォルトの名無しさん :04/06/06 04:04
>>584
すいません、分かりにくいですよね。

一応、通常の右クリックメニューの出し方は分かるんですが、
MDIアプリケーションにしようとして、
クライアントウィンドウを作ると右クリックメニューが出なくなってしまうので、
どうしたらいいでしょうか? という質問です。

口下手で申し訳ない…_| ̄|○

586 名前:デフォルトの名無しさん :04/06/06 12:11
口が下手なら、下の口で満足させてくれればOK


587 名前:デフォルトの名無しさん :04/06/06 12:14
やらにゃいか

588 名前:デフォルトの名無しさん :04/06/06 12:15
バラライカ

589 名前:デフォルトの名無しさん :04/06/06 12:30
>>585
MDICLIENTのウィンドウをサブクラス化したらできたような気がする。

590 名前:デフォルトの名無しさん :04/06/06 12:53
バナナ烏賊

591 名前:デフォルトの名無しさん :04/06/06 12:54
臭そうだ

KSASO

OSASK

592 名前:デフォルトの名無しさん :04/06/06 12:59
   ト、 , ---- 、
   H /::(/、^^, :゙i
(( (ヨb |::l,,・  ・,,{:K〉 ))
   \`l:ト、(フ_ノ:」/   < ぉまぇら 全員 学習ルーム来いヤ!☆
    ゙、 ヾ〃 /
     〉 ネヴァダ|

593 名前:585 :04/06/06 20:08
>>589
ありがとうございます。出来ました。
ttp://black.sakura.ne.jp/~third/system/winapi/win64.html
で、ウィンドウプロシージャの切り替えが出来ることが分かったので、
"MDICLIENT"を指定したCreateWindowでhClientWindowを作った直後に、
SetWindowLong(hClientWindow, GWL_WNDPROC, (LONG)ClientWindowProc);
として、ウィンドウプロシージャを切り替えることでできました。

サンプルが必要な方は、アプロダ指定してくれれば、うpします。
それでは、本当にありがとうございました。

594 名前:デフォルトの名無しさん :04/06/07 00:15
>>592
不謹慎!(@u@ .:;)ノシ

595 名前:デフォルトの名無しさん :04/06/07 10:08
データの移行ツールを作ってます。
Win2K+SP4で使ってたOutlook2000のデータ(メールデータ,振り分け,アカウント,他)を
別PCのWinXPでOutlook2002に移行したいんですが、どーやれば良いんでしょう?

Outlookのメニューからエクスポート/インポートを実行すれば大体は移行できるんですが...
コレをプログラム上で行いたいんです。
市販の移行ツールではこの様なコトが可能になっているので
何らかの手段はあると思うのですが自分にはさっぱり判りません。

移行する方法を知っていたらご教授をお願いします。

追加。
 Outlook相談室とそこで紹介されたトコにも投げてしまったんで、
 マルチになってしまいました。<(_ _)>

596 名前:デフォルトの名無しさん :04/06/07 10:10
>>594
なによその顔文字は。ふざけてるの?

597 名前:デフォルトの名無しさん :04/06/07 11:23
>>595
調べてもわかんねえやつがそういうツール作るなよ。

598 名前:デフォルトの名無しさん :04/06/07 11:43
>>595
COMのインターフェース調べてそういった機能があれば使う。
なければOutlookのバイナリ解析して自力でやる。
あるいはMSと契約してコンバートツールを作らせてもらう。

599 名前:デフォルトの名無しさん :04/06/07 11:45
>>597
調べて判ったんなら、ココで聞かずに作ってますよ。
ヒントぐらい...くれ

600 名前:デフォルトの名無しさん :04/06/07 11:50
む。ヒントが...


601 名前:デフォルトの名無しさん :04/06/07 11:51
ここで具体的な情報が出てくるわけないだろ

602 名前:デフォルトの名無しさん :04/06/07 11:53
pstファイルをコピペすれば?
移行するだけなら、それで良くね?

603 名前:デフォルトの名無しさん :04/06/07 11:53
>>595
俺はOutlook使った事はないが Documents and Settings からファイル探して、
コピーすれば出来ると思うぞ。

604 名前:デフォルトの名無しさん :04/06/07 12:54
CreateProcessと同じようにして自プロセス内の新規スレッドとして他プロセスを起動する事の出来るAPIはありますか?
あれば教えてください

605 名前:デフォルトの名無しさん :04/06/07 13:12
ないだろ。情報やり取りしたいなら
普通にCreateProcessしてプロセス間通信するなりデバッグ系API使うなりするしかない。

606 名前:デフォルトの名無しさん :04/06/07 13:19
pstファイルだけ上書きするとメール本文(一覧?)は移行できても
そのあとの動作がなんかおかしくなるねん。
Outlook2000 → 2002だからかもしれんが

もちっと四苦八苦してみるか..._| ̄|○

607 名前:デフォルトの名無しさん :04/06/07 16:39
>>606
>Win2K+SP4で使ってたOutlook2000のデータ(メールデータ,振り分け,アカウント,他)を
>別PCのWinXPでOutlook2002に移行したいんですが、どーやれば良いんでしょう?
>Outlookのメニューからエクスポート/インポートを実行すれば大体は移行できるんですが...

「大体」ってのがどの程度なのか分からないのであれだが、

大体でいいのであれば、インポートとエクスポートのマクロ書けば
いいんじゃないの? これが一番楽な気がするけど。

移行ツールなんだから、どちらのPCにもOutlookが入ってる訳でしょ?


608 名前:デフォルトの名無しさん :04/06/07 19:13
>>605
ありがとうございます。他の方法でがんばってみます。

609 名前:デフォルトの名無しさん :04/06/08 02:10
>>595
プロファイルはMAPIで読み書きしてみるとか

610 名前:デフォルトの名無しさん :04/06/08 12:01
親Windowの上に子Windowが何個かついたものを作りました。
子Windowの配置をGetDialogBaseUnit()でおこなっています。

親Windowのフォントの大きさを変える事ってできるのでしょうか?

子WindowにはSendMessage(chWnd,WM_SETFONT,(WPARAM)hFont,MAKELPARAM(TRUE,0));
でできるのですが、親にSendMessage(hWnd,WM_SETFONT,(WPARAM)hFont,MAKELPARAM(TRUE,0));
しても変わりません。何かよい方法があるのでしょうか?
宜しくお願いします。


611 名前:デフォルトの名無しさん :04/06/08 12:11
>>610
何を期待してるのか知らないけど、親Windowのフォントの大きさを変えても
GetDialogBaseUnitの返す値は変わらないよ。「画面のプロパティー」で
設定されるシステムフォントのサイズを変えない限り


612 名前:610 :04/06/08 12:16
>>611
うう・・有難うございます。
期待していたのは、Borlandのリソースエディタで、親Dialogのフォント
の大きさを変えると、子コントロールの大きさや位置がそれなりに変わって
くれるから、同じことをやりたかったんです。

ああ・・・

613 名前:デフォルトの名無しさん :04/06/08 13:18
>>610
親ウィンドウをダイアログで作るか、座標モードをキャラクタ単位にするとかどうよ。

614 名前:デフォルトの名無しさん :04/06/08 13:19
MapDialogRectは使えんのだっけ?

615 名前:デフォルトの名無しさん :04/06/08 13:24
CreateFileMappingで作ったマッピングファイルを複数のプロセスが共有していまして、
このマッピングファイルに変更があれば感知したいのです。
WaitForSingleObjectみたいな感じで、イベントを取るためには何を使えばいいのでしょうか?


616 名前:デフォルトの名無しさん :04/06/08 14:12
>>615
別途イベントかなんかで通知するのが良いと思う。

617 名前:610 :04/06/08 14:19
>>613
なりがとうございます。
とりあえず、関数作りました。みてください。

void MoveChildWnd2(HWND handle,HFONT font,int x,int y,int w,int h)
{
 HDC hdc  =  GetDC(handle);
 
 ::SelectObject(hdc,font);

 int font_height;
 int font_width;

 TEXTMETRIC tm;
 GetTextMetrics(hdc,&tm);

 font_height = tm.tmHeight;
 font_width = tm.tmAveCharWidth;


618 名前:610 :04/06/08 14:20

 DeleteDC(handle,hdc);

 ::SendMessage(handle,WM_SETFONT,(WPARAM)font,MAKELPARAM(TRUE,0));

 RECT r;
 r.left = MulDiv(x,font_width,4);
 r.top = MulDiv(y,font_height,8);
 r.right = MulDiv(w,font_width,4);
 r.bottom = MulDiv(h,font_height,8);

 window_x  = r.left; //ウィンドウのX位置
 window_y  = r.top; //ウィンドウのY位置
 window_width = r.right - r.left; //ウィンドウの幅
 window_height = r.bottom - r.top; //ウィンドウの高さ

 ::MoveWindow(handle,r.left,r.top,r.right,r.bottom,TRUE);

}


619 名前:デフォルトの名無しさん :04/06/08 15:44
>>610
えーと。フォントのサイズでモニョモニョするっていうんじゃないんだ。
ダイアログは普通のウィンドウと違って、そのサイズはフォント文字のサイズを元に決められてるんだ。
試したことないからうまくいくか知らんけど、SetMapModeとかでウィンドウのサイズ単位を買えてやればいいんじゃないかと思ったのよ。

620 名前:610 :04/06/08 15:58

>>619
そうです。これだと解像度がかわっても子Windowの位置関係は保持されそうでしょ?

case WM_CREATE:
   HWND hEdit1  = CreateWindow("EDIT",・・略
   HWND hEdit2  = CreateWindow("EDIT",・・略
   HWND hButton = CreateWindow("BUTTON",・・略

   HFONT font = CreateFont(・・・略
  
   MoveChildWnd2(hEdit1,font,10,20,60,30);
   MoveChildWnd2(hEdit2,font,10,60,60,30);
   MoveChildWnd2(hButton,font,10,100,60,30);
   break;


621 名前:デフォルトの名無しさん :04/06/08 16:32
>>620
うまくいきそうだけど、もし親ウィンドウのサイズも変えるのなら、
単純にそれにあわせて拡大・縮小すれば良いような気もしないでもない。
あとドロップダウンコンボボックスで不都合が出るので、もしあるなら対応すべし。

622 名前:デフォルトの名無しさん :04/06/08 19:18
はやく615の質問も答えてやれよ
みんなわからないのかい?


623 名前:デフォルトの名無しさん :04/06/08 19:21
うん。わからない。
じゃあね。

624 名前:デフォルトの名無しさん :04/06/08 19:36
>>622
>>616 が答えてるだろ。
マップするファイルで Notify オブジェクトが作れるなら
WaitFor〜 で待てるかも知らんが、君やってみてくれる?

625 名前:デフォルトの名無しさん :04/06/08 19:42
そんなもんがあったらものすごいオーバーヘッドだろうな

626 名前:デフォルトの名無しさん :04/06/08 19:45
翼くん並のものすごいオーバーヘッドだな。

627 名前:デフォルトの名無しさん :04/06/09 13:49
Cでの非MFCウィンドウズアプリ製作で、
一つのウィンドウにWndProcを複数作る事は出来るのでしょうか。
ゲームを作っていて、今のやり方は

LRESULT CALLBACK WndProc(...)
{
static int gameRoutine = Title;
if(gameRoutine == Title) HandleTitle();
else if(gameRoutine == InputName) HandleInputName();
}

みたいにやっているのですが、

LRESULT CALLBACK HandleTitle(...)
LRESULT CALLBACK HandleInputName(...)

と複数作って、タイトルの処理をしている時は、
WinMainのGetMessage()でイベントを受けたときHandleTitle()に行くようにして、
名前入力のときはHandleInputName()に行くようにしたいのです。

628 名前:デフォルトの名無しさん :04/06/09 13:52
元のメッセージループの直前で分岐すればいいんじゃないの。
そのゲーム用のWndProcで取りこぼしたメッセージを元のWndProcで処理する必要もあるだろうし。

629 名前:デフォルトの名無しさん :04/06/09 13:55
>>627
無理。一つのWinProcとして登録できるのは一個だけ。
二種類扱いたいならWinProcを設定しなおすしかないが、
結局は今やってるのとあまり変わらんように思う。

if文を無くしたいだけなら関数テーブルを使ってみたら?


630 名前:627 :04/06/09 14:05
コンソールプログラムでは、タイトルの処理の時は、他のゲームルーチンを
まったく触らずに処理できますが、そういう感じにしたいのです。

int HandleTitle()
{
while(1)
{if(oo) {afterRoutine = InputName;break;}}
}

HandleInputName()
{
while(1){}
}

>>628
PeekMessageInputという事ですか?
これはCPU率とかありますし、スレッドも難しくて分かりません。
取りこぼしについては、個々のゲームルーチンで全部書くようにします。

>>629
無理ですか。ChangeWndProc(hWnd, HandleInputName);
とかは考えてみたのですが。関数テーブルは調べて見ます。

631 名前:627 :04/06/09 14:07
>>630
>HandleTitle()
afterRoutineを返します。

>PeekMessageInput
PeekMessageに修正します。

632 名前:627 :04/06/09 14:14
>>629
あっ、関数ポインタですか。それでやってみます。

御二方、どうもありがとうございました。

633 名前:デフォルトの名無しさん :04/06/09 14:21
>>630
WndProc変えるならSetWindowLongで

634 名前:627 :04/06/09 14:29
>>633
ありがとうございました。やってみます。

635 名前:デフォルトの名無しさん :04/06/09 14:52
マウスの移動に関する情報として
マウスポインタの位置ではなく(コントロールパネルの
マウスから設定できるポインタ速度に左右されず)
マウス自体の移動量を得る方法はないでしょうか?
APIでは無理なのでしょうか?

636 名前:デフォルトの名無しさん :04/06/09 14:53
設定速度をかけられてるから、レジストリからその値を取得して割る

637 名前:635 :04/06/09 15:07
>>636
なるほど
レジストリの値は
同じ速度ならどのマウスデバイスも同じ値なのでしょうか?
またレジストリキーも名前はいっしょなのでしょうか?

638 名前:デフォルトの名無しさん :04/06/09 15:13
名前は同じはず。以前調べたけど忘れた
マウスの設定アプレットをRegmonで監視すれば簡単に分かるはず

速度とマウス移動量の関係っつーのは一概に言えないね
経験上だけど普通のボール式PS2マウス・光学式PS2マウス・タブレットに付属してる電磁誘導マウス
同じくらい動かしても全部全く違う操作感だから。つまり、移動量を得られたところで環境に依存するから
あまり意味が無いんじゃないかと

639 名前:デフォルトの名無しさん :04/06/09 15:19
HKCU\Control Panel\Mouse\MouseSensitivityかな

640 名前:635 :04/06/09 15:22
>>638
ありがとうございマウス(´・ω・`)ショボ-ン

641 名前:デフォルトの名無しさん :04/06/09 15:58
>>635
GetMouseMovePointsEx で GMMP_USE_HIGH_RESOLUTION_POINTS 指定するのって、
マウスだと意味無いんだっけ?

642 名前:デフォルトの名無しさん :04/06/09 16:37
意味無い

643 名前:デフォルトの名無しさん :04/06/09 20:11
モーダルダイアログが別のメッセージループから再帰的に呼ばれて
2つ出現してしまうことがありますが、皆さんどうやって対策していますか?

644 名前:デフォルトの名無しさん :04/06/09 20:17
そんな状態にならないようにする。

645 名前:デフォルトの名無しさん :04/06/09 20:26
それは設計が悪いよ。

646 名前:643 :04/06/09 20:35
>>644 >>645
他のアプリから呼ばれるDLLなんでつ。。。

647 名前:デフォルトの名無しさん :04/06/09 21:06
if (まだでてなかったら) {
ダイアログを表示する
}
とかやれば?

648 名前:デフォルトの名無しさん :04/06/09 21:14
システム全体に対してフックするようなものだったら恐らく>>647のやり方でもダイアログ表示している間に更に他のプロセスから
呼ばれて二重呼び出しされるんじゃないかねー。こういう時はどうするもんなんだろ。

649 名前:デフォルトの名無しさん :04/06/09 21:18
看湯兎手楠

650 名前:デフォルトの名無しさん :04/06/09 21:29
>>648
その場合は
まだ表示されてなかったら
の内容が単なるフラグチェックや何かではすまないだけ
で、別に同じでしょ
>>649
のようにmutex使うとかすればいいのであって


651 名前:デフォルトの名無しさん :04/06/09 21:59
フォルダの新規作成を検知することは可能ですか?
コピー/移動/削除/名前の変更はICopyHookで実装済みです。
FindFirstChangeNotificationで通知前と後の比較を考えたんですが、
これだとコピー/移動との区別ができません。
何か良い方法はないでしょうか。

652 名前:デフォルトの名無しさん :04/06/09 22:08
>>651
ものすごく基本的なことだが
ディレクトリは作成と削除しかできない、んじゃないか?
そういうはなしではない?

653 名前:651 :04/06/09 22:33
>>652
言葉足らずですみません。
現在シェル拡張DLLを作成しているんですが、ある特定のフォルダをエクスプローラで
コピー/移動/削除/名前の変更の操作を行った後にそれぞれ異なる処理を行っています。
上記4つはICopyHookのコールバック関数内で区別することができます。
さらに、新規にフォルダを作成した後にまた異なる処理を行いたいのです。
そのため、新規作成を検知する必要があるのです。
(フォルダの操作はエクスプローラで行われることが前提です)


654 名前:デフォルトの名無しさん :04/06/09 22:33
いつの話だよMS-DOSじゃあるまいし
移動できるよ

655 名前:デフォルトの名無しさん :04/06/09 22:37
こんばんわ

OPENFILENAME ofn;
と宣言したのですが、
「OPENFILENAMEは定義されていません。」とエラーが出ます。

何かincludeするヘッダがあるのでしょうか?

656 名前:デフォルトの名無しさん :04/06/09 22:47
MSDN引いた?
思いっきり載ってますが何か?

657 名前:デフォルトの名無しさん :04/06/09 22:56
includeするだけで済む環境がうらやましい(´・ω・`)


658 名前:デフォルトの名無しさん :04/06/09 22:58
MSDNって何ですか?

659 名前:デフォルトの名無しさん :04/06/09 23:03
たのむ少しはググッってくれ

660 名前:デフォルトの名無しさん :04/06/09 23:15
ググッってって何ですか? 隠語を使わないでください。


661 名前:デフォルトの名無しさん :04/06/09 23:18
('A`)

662 名前:デフォルトの名無しさん :04/06/09 23:26
>>660
おお、新しい反撃パターンだ。
これでは、伝家の宝刀の「ググれ!!」が使えないでないか...。






まあ、君にはインターネットは向いてないから、早めに回線切って引きこもった方がいいよ。

663 名前:デフォルトの名無しさん :04/06/09 23:30
引き篭もりですがいつもGoogleで検索してますがなにか?


664 名前:デフォルトの名無しさん :04/06/09 23:49
おっさん、おばさんの間でも一部には通じるぞ、「ググる」

665 名前:デフォルトの名無しさん :04/06/09 23:50
ヲタに通じてもね┐(´д`)┌


666 名前:デフォルトの名無しさん :04/06/09 23:52
うちの母親はぐぐってGIMPをマスターしたぞ

667 名前:デフォルトの名無しさん :04/06/10 00:34
>>654
いや「OSレベルでは」というか「ファイルシステムレベルでは」
ディレクトリは作成と削除しかないでしょ
フォルダ単位の移動やコピーを「アプリケーションレベルで」(shellapiも
ふくむ)実装はできるけど、OSレベルではフォルダごとの移動は
ディレクトリの作成→そこにファイル群を移動→元ディレクトリの削除
という形になるでしょ

>>653
という理由によってディレクトリだけ見ても「区別できない」んじゃないかと
思ったのだけど、見当違い?


668 名前:デフォルトの名無しさん :04/06/10 00:38
コンボボックス内の項目がどれでもいいので選択されているか、選択されていないのかを
判定したい場合どうすればいいでしょうか。お願いします。

669 名前:デフォルトの名無しさん :04/06/10 00:39
MoveFileExにディレクトリを指定するときの制限を見る限り、667のいうような形では無いと思われ。
ただ単にディレクトリエントリの書き換えだけだろ。

670 名前:デフォルトの名無しさん :04/06/10 00:47
***_GETCURSEL 系のメッセージ使えば大丈夫

671 名前:デフォルトの名無しさん :04/06/10 00:57
>>669
ごめんわたしがばかでした
逝ってくるよママン

672 名前:デフォルトの名無しさん :04/06/10 05:21
Win32APIのオフィシャルな情報ってのは、一体どこに?

673 名前:デフォルトの名無しさん :04/06/10 05:27
MSDN

674 名前:デフォルトの名無しさん :04/06/10 10:02
>>655
知っているが「こんばんわ」が気に入らないので教えない

675 名前:デフォルトの名無しさん :04/06/10 11:12
現在のスレッドのHANDLEを取得するにはどうすればいいですか?

676 名前:デフォルトの名無しさん :04/06/10 11:13
getcurrentthread

677 名前:デフォルトの名無しさん :04/06/10 11:44
現在のスレッドのIDを取得するにはどうすればいいですか?

678 名前:デフォルトの名無しさん :04/06/10 11:47
getcurrentthreadid

679 名前:デフォルトの名無しさん :04/06/10 11:48
つーかMSDN引け ぐぐれ ヴォケ

680 名前:デフォルトの名無しさん :04/06/10 12:58
>>677
この板ではどのスレッドもIDは表示されない。

681 名前:デフォルトの名無しさん :04/06/10 13:29
>>667
>OSレベルではフォルダごとの移動は
>ディレクトリの作成→そこにファイル群を移動→元ディレクトリの削除
>という形になるでしょ

それはドライブが異なる場合だけだろ。普通は親ディレクトリのinodeの
書き換えだけ。

682 名前:デフォルトの名無しさん :04/06/10 17:12
>>680
上手いな。ネタで>>677書いたのは俺だが
まさかそう返されるとは思わなかったぞ。

683 名前:デフォルトの名無しさん :04/06/10 17:14
こうして、徐々に簡単な質問はスルーされていくようになるのだった

684 名前:デフォルトの名無しさん :04/06/10 20:04
>>681
inode(に対応するWindowsでの概念)を書き換える必要あるの? 名前だけでしょ?

685 名前:デフォルトの名無しさん :04/06/10 22:11
スクリーンセーバーが発動するまでの時間や
モニタの電源を切るまでの時間を、それぞれ
取得したり再設定したりするにはどうするのでしょうか?

686 名前:デフォルトの名無しさん :04/06/10 22:58
>>685
画面のプロパティを開いて読んだり書き換えたりすればOK

687 名前:685 :04/06/10 23:14
>>686
Win32APIの質問でした。
言葉足らずでごめんなさい。
該当するAPIはなんでしょうか?

688 名前:デフォルトの名無しさん :04/06/10 23:25
>>687

>>686は、わかってて言ってるんだと思うぞ。
要は君に遠回しに 「 ぐ ぐ れ っ ! 」 と言いたいのではないかと。












もしググる気になったら、「スクリーンセーバー SystemParametersInfo」あたりで
ググってみると幸せになれるんじゃないかな。

689 名前:685 :04/06/10 23:48
検索しました
少し幸せになりました
ありがとうございました

このAPIについてもっと調べてもっと幸せになります

690 名前:デフォルトの名無しさん :04/06/11 00:06
やさしいな

691 名前:デフォルトの名無しさん :04/06/11 00:13
>>687-688
Win32APIのスレだしなぁ。ここ。

692 名前:デフォルトの名無しさん :04/06/11 00:40
png画像を読み込んで1pixelの色を取り出したいんだけどGetPixelでおけ?

693 名前:デフォルトの名無しさん :04/06/11 00:42
画像を読み込んだだけでGetPixel出来る時代になったのか。有難や。

694 名前:デフォルトの名無しさん :04/06/11 05:20
waveOutGetPositionという命令がありますが、
これは現在位置を取得するものですが、
逆に現在位置を変更するようなものは無いのでしょうか?

簡単に言えばwaveOut系で途中から再生をしたいのですが
解説しているサイトやヒント等ありましたら、おしえてください。

695 名前:デフォルトの名無しさん :04/06/11 08:17
>>692
pngを読み込んで展開して、
デバイスコンテキストに描画したら、
GetPixelで色を取り出せるよ

696 名前:デフォルトの名無しさん :04/06/11 09:04
>デバイスコンテキストに描画したら

697 名前:デフォルトの名無しさん :04/06/11 12:46
つか、ググれしか言えない厨房はレスするな、ウザイし邪魔

698 名前:デフォルトの名無しさん :04/06/11 12:49
同意。あとマニュアル読め厨も。

699 名前:デフォルトの名無しさん :04/06/11 13:11
俺は最適な解を回答すべきだと思っている。
それが検索しろであったりマニュアル嫁であったりするのは、それが最適だと思っているからだ。

700 名前:デフォルトの名無しさん :04/06/11 13:21
697は来るな。ウザイし邪魔

701 名前:デフォルトの名無しさん :04/06/11 13:55
697=698=厨だろ

702 名前:デフォルトの名無しさん :04/06/11 15:52
>>694
ありません。自分で制御する必要があります。


703 名前:デフォルトの名無しさん :04/06/11 17:07
waveOut系はリングバッファ作ってwriteで垂れ流したことしかないから
偉そうなことは言えんが、ぱっとググってみた感じ、waveOutGetPositionも
結構色々と問題があるような感じなんで位置情報は自分でタイミング取って
見た方がよいのかも。

704 名前:デフォルトの名無しさん :04/06/11 17:45
waveOutGetPosition で常に0を返す論外なドライバとか…


705 名前:デフォルトの名無しさん :04/06/11 19:12
>>702-704
返答ありがとうございます。自前でやるしかないみたいですね。
そうなると、無圧縮なPCMであれば位置判定は簡単だと思いますが
圧縮されたデータ(MP3等)の場合、難しいですね。
一旦、無圧縮なPCMに展開する必要があるという事でしょうか?

706 名前:初心者です :04/06/11 19:25
InstallShieldにてインストーラを作っているのですが、ラジオボタンの表示/非表示
(visible? hide?)を切り替えることってできますか?

707 名前:デフォルトの名無しさん :04/06/11 19:52
ライセンスを下までスクロールしないとライセンス同意ボタンを押せないようにしたいのかな

708 名前:デフォルトの名無しさん :04/06/11 20:21
ちゅーかスレ違いだしなー

709 名前:デフォルトの名無しさん :04/06/11 20:40
>>705
圧縮データ?

そうか、waveOut は 圧縮形式の WAVEFORMATEX ヘッダも
処理できたか。使ったこと無いから PCM 以外でどうなるか分
からないけど、少なくとも mp3 の場合は自分でヘッダ作らない
と(WAVE MP3)処理できないだろう。

俺は WAVE ファイルの場合はあらかじめ ACM の API
で無圧縮 PCM に変換してから waveOut API に渡してたからな。

mp3 は独自にデコーダ用意する必要がある。(APIは無い)

なんか、あなたの場合は DirectShow を
使った方が良いんじゃないかな?
手っ取り早くやりたいなら、そっちの方が早いよ。


710 名前:692 :04/06/11 20:45
>>695
ありがとう
描画しなきゃだめっすか…何百枚の画像を処理しなくちゃならんのだけど…
何かアドバイス頂けると嬉しいです。

711 名前:デフォルトの名無しさん :04/06/11 22:07
自前で解析した方が早いんじゃないか?

712 名前:デフォルトの名無しさん :04/06/11 22:35
>>692
libpngとかImageMagickでも使ってロードして、後は適当に解析汁。

713 名前:名無し@沢村 :04/06/11 23:57
ちっ、ここはザコが立てたスレか?
Windowsプログラムとは可愛いやっちゃ♪
こっちはメインウィンドウ完成間近だというのによ…♪もうすぐメインウィンドウできるよ〜♪
といってもCとかアセンブラとかでメインウィンドウ組むんじゃないぞ。それじゃまるでザコだ。
こっちは、メインウィンドウがつくれるプログラムつくってるのよ〜♪つまりVisual E++だ。
そうです、みなさんもうすぐVisual E++はメインウィンドウがつくれる本格的なプログラミングソフトに進化します♪
いまやっとVisual E++に補助的にバイナリエディタつかってメインウィンドウつくるのに成功したところ。
補助的にバイナリエディタつかわないで、Visual E++のみでメインウィンドウつくれるよになるには、あと修正個所が1、2個所…
みなさんもうすぐでっせ〜♪

714 名前:名無し@沢村 :04/06/11 23:58
ちっ、ここはザコが立てたスレか?
Windowsプログラムとは可愛いやっちゃ♪
こっちはメインウィンドウ完成間近だというのによ…♪もうすぐメインウィンドウできるよ〜♪
といってもCとかアセンブラとかでメインウィンドウ組むんじゃないぞ。それじゃまるでザコだ。
こっちは、メインウィンドウがつくれるプログラムつくってるのよ〜♪つまりVisual E++だ。
そうです、みなさんもうすぐVisual E++はメインウィンドウがつくれる本格的なプログラミングソフトに進化します♪
いまやっとVisual E++に補助的にバイナリエディタつかってメインウィンドウつくるのに成功したところ。
補助的にバイナリエディタつかわないで、Visual E++のみでメインウィンドウつくれるよになるには、あと修正個所が1、2個所…
みなさんもうすぐでっせ〜♪

715 名前:デフォルトの名無しさん :04/06/12 00:44
>>713-714
スレ違い。
http://pc5.2ch.net/test/read.cgi/tech/1085915001/
こっちでどうぞ。


716 名前:デフォルトの名無しさん :04/06/12 00:54
沢村こんなとこにもくるのか。

ところで、IEのお気に入りの中から一定期間アクセスがなかったら削除するツール作ろうと思ったんだけど、
最終アクセス日(ファイルアクセスにあらず)ってAPIがらみで取得できませんかねえ。
調べたところ「履歴」フォルダにしか残っていないので履歴削除したら無理ぽなんだよねえ。

717 名前:デフォルトの名無しさん :04/06/12 01:28
>>709
返答ありがとうございます。
圧縮データとは、MP3(not *.mp3ファイル)とか
ADPCM等です。(*.wavファイル)

何も考えずに、waveOutOpen -> waveOutPrepareHeader
-> waveOutWriteで再生できるので、今はそのままですが
求めている事は

・メモリにあるデータから再生
・ボリュームコントロール
・シーク可能
・Win98(無印)の何も入れてない状態で動く

…という事なのです。DirectShowでの機能は
Win98(無印)に標準で入っているのでしょうか?

>ACM の API
とりあえず、この方向で展開して自前でシークしたいと
思います。ありがとうございました。

718 名前:デフォルトの名無しさん :04/06/12 02:42
>>717
> ・メモリにあるデータから再生
あー DirectShow でメモリからだと自前でソースフィルター
かかないかんね。サンプルもあるけど、
この場合はフィルター書いてまでも DirectShow を
使う意味は無いね。

>>ACM の API
>とりあえず、この方向で展開して自前でシークしたいと
まあ、もっともオーソドックスな手法だけど、長年使われていた
手法でもあるし、頑張ってみるしか。

719 名前:デフォルトの名無しさん :04/06/12 03:00
初心者質問でスマソ

SetMapMode(hdc,MM_LOMETRIC);

rect.left=100;
rect.top=-300;
rect.right=500;
rect.bottom=-100;

DrawText(hdc,Text1,-1,&rect,DT_CALCRECT | DT_WORDBREAK);
DrawText(hdc,Text1,-1,&rect,DT_WORDBREAK);
DrawText(hdc,Text1,-1,&rect,DT_CALCRECT | DT_WORDBREAK);
DrawText(hdc,Text1,-1,&rect,DT_WORDBREAK);

としてプリンタで印刷したところ
一回目のText1と2回目のText1が続けて縦一列に印刷されたのですが
なぜなのでしょうか
ステップしてもrectの内容が変わる事はなかったので
同じ場所に二重に印刷される物だと思ってたのですが
DT_CALCRECTをちゃんと理解しないで使ってる気がするので
やはりこれのせいなのでしょうか
分かる方おねがいします

720 名前:デフォルトの名無しさん :04/06/12 03:37
>>692
GDI+のBitmapクラス使ってPNG画像を読み込んで、GetPixcelメソッドを呼ぶ。

721 名前:デフォルトの名無しさん :04/06/12 17:04
FindWindowを使ってクラスやタイトルが部分一致するウィンドウを探すのは無理
ですか?
クラスとタイトルはそれぞれ必ず完全に一致する必要があるのでしょうか.

722 名前:デフォルトの名無しさん :04/06/12 17:07
EnumWindows()使え

723 名前:デフォルトの名無しさん :04/06/12 17:19
>>722
了解

724 名前:デフォルトの名無しさん :04/06/13 22:25
こんばんわ
RebarのIE式メニューを作ろうとしてるんですが
うまくいきません

ソースコードをUPしますので
http://www.geocities.co.jp/SiliconValley-Oakland/3559/rebar.txt
どこが間違ってるのか見ていただけるとありがたいです
よろしくお願いいたします

InitCommonControlsExは処理してあります

呼び出し順番は

hRebar=_createRebar(hWnd,hInst);
_createIEMenu(hRebarIEMenu,hRebar,tbIEMenu);
_sendTextToIEMenu(hRebarIEMenu,"File_desu",tbIEMenu,0);
_sendTextToIEMenu(hRebarIEMenu,"Edit_desu",tbIEMenu,1);
_sendButtonToIEMenu(hRebarIEMenu,2,tbIEMenu);
_attachIEMenuToRebar(hRebarIEMenu,hRebar);

725 名前:デフォルトの名無しさん :04/06/14 00:37
自前のメニューバーに動的に項目を追加したいんですが
すでに、追加したい項目のIDが追加されているかどうか
ってどうやって調べられますか?
AppendMenuつかうと、無節操に追加されるし
EnableMenuItemだと、見えなくならないし、で微妙なので、
助けてください。

726 名前:デフォルトの名無しさん :04/06/14 01:00
GetMenuItemInfo

727 名前:デフォルトの名無しさん :04/06/14 01:39
>>724
10万くらいくれたらデバッグしてやらんでもない

728 名前:デフォルトの名無しさん :04/06/14 01:46
GetMenuItemCount
GetMenuItemID
GetMenuPosFromID

この辺使えば自在だ。


729 名前:デフォルトの名無しさん :04/06/14 10:47
メニューの中に「送る」のように外部のフォルダの中身によって表示される項目がコロコロ変わるサブメニューを作っています。
何を表示すればよいかは簡単に取得できたのですが、これをいつメニューに反映させればよいのかが分かりません。
最初は WM_INITMENU か WM_INITMENUPOPUP で更新すればよいと考えていたのですが
このサブメニューの名前や位置が変化するので、親メニューと位置だけでは、
どのサブメニューが表示されようとしているのかが分かりません。
こういったメニューのアイテムを最新の状態に維持するにはどうすればよいのでしょうか?
あるいは、メニューバーの特定のサブメニューが表示されようとしていることを知る方法はあるでしょうか。
どうかよろしくお願いします。


730 名前:725 :04/06/14 10:52
>>726,728
サンクス

731 名前:デフォルトの名無しさん :04/06/14 11:05
>>729
メニューの位置が動的に変更しないようにする。

というのはアレなので、ちょうど>>728が書いてるAPIで位置から特定してやればいいんじゃないかと。

732 名前:デフォルトの名無しさん :04/06/14 11:06
それで、>>726のAPIを使用してメニューの情報を得ればいい。

733 名前:デフォルトの名無しさん :04/06/14 12:36
>>731-732
ありがとうございます。
ただ、相手がサブメニューなので ID が無いのですが
そのような場合はどうすればよいのでしょう?


734 名前:デフォルトの名無しさん :04/06/14 12:46
>>733
ポップアップにもIDはつけられる。

735 名前:デフォルトの名無しさん :04/06/14 12:53
>>734
ありがとうございます。
今まで知りませんでした。
これで解決できそうです。
どうもありがとうございました。


736 名前:デフォルトの名無しさん :04/06/14 13:09
つか、ググれしか言えない厨房はレスするな、ウザイし邪魔

737 名前:デフォルトの名無しさん :04/06/14 13:11
つか、もう終わった話題に亀レスする奴、ウザイし邪魔

738 名前:デフォルトの名無しさん :04/06/14 13:23
ククれ

739 名前:デフォルトの名無しさん :04/06/14 13:32
王子さま

740 名前:デフォルトの名無しさん :04/06/14 13:40
あの〜、質問よろしいでしょうか?

741 名前:デフォルトの名無しさん :04/06/14 13:42
>>740
バーモント

742 名前:デフォルトの名無しさん :04/06/14 13:49
高木ブー





はウクレレか

743 名前:デフォルトの名無しさん :04/06/14 13:55
ハヤシもあるでよ

744 名前:デフォルトの名無しさん :04/06/14 13:56
>740
質問していいかくらい、自分でググって調べろ。

745 名前:デフォルトの名無しさん :04/06/14 14:11
ttp://www.google.co.jp/search?q=%E8%B3%AA%E5%95%8F%E3%81%97%E3%81%A6%E3%81%84%E3%81%84%E3%81%8B&ie=UTF-8&hl=ja&btnG=Google+%E6%A4%9C%E7%B4%A2

746 名前:デフォルトの名無しさん :04/06/14 14:19
>>734
>ポップアップにもIDはつけられる。
どうやればできるのでしょう。
方法を探したのですが見つかりませんでした。

747 名前:デフォルトの名無しさん :04/06/14 14:22
ホントにできるのか?

748 名前:デフォルトの名無しさん :04/06/14 14:26
>>746
嘘を嘘と見抜けないようだと・・・
メニューアイテム関連のAPIは、コマンドIDじゃなくてインデックスでも使えるから、
インデックスを覚えておくのが良いと思う。

749 名前:デフォルトの名無しさん :04/06/14 14:28
あるいはポップアップのHMENUをそのまま覚えておくか。

750 名前:デフォルトの名無しさん :04/06/14 14:38
ぐぐれはともかく、分かってないならレスしないでくれ
ってのは、たまにあるな。


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