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


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

Win32API質問箱 Build32
501 名前:デフォルトの名無しさん :2005/06/12(日) 18:18:20
>>442
はじめて読む486にはこう書いてるよ。

>リードライトビット
>0ならば、特権レベル3では書き込みできない
>0ならば、CR0レジスタのWPビットが1のとき、特権レベル2以下でも書き込みできない(486のみ)

要するに一番下の行に書いてあることが\486のみだっていうことだ

502 名前:デフォルトの名無しさん :2005/06/12(日) 19:16:08
すいません、WM_APPというのが具具ってもよくわかりません。
グローバルフックでWM_APP+100までのメッセージを受け取って
キー入力があったこと自体は判別できたのですがWM_CHARの
wparamのように入力されたキーを判別する方法がわかりません。教えてくださいおねがいします

503 名前:デフォルトの名無しさん :2005/06/12(日) 19:27:44
WM_APPは、アプリケーションが勝手に定義して勝手に使うメッセージ。
だから、WM_APPでキー入力の判定が出来るというのが、そもそも
そのアプリケーション特有の動作。

504 名前:デフォルトの名無しさん :2005/06/12(日) 22:39:04
エスパーだな

505 名前:デフォルトの名無しさん :2005/06/12(日) 22:41:22
>>498
1クロック命令を1秒間繰り返し実行して、実行した回数を取得する。

506 名前:デフォルトの名無しさん :2005/06/12(日) 22:48:13
winプログラムでゲームを作ろうとしているのですが、
ビットマップを描き消しするためにInvalidateRectを使っています。
しかし、頻繁に使っているせいでもありますが、ちらつきがよく目立ちます。
なんとかならないでしょうか?

507 名前:デフォルトの名無しさん :2005/06/12(日) 22:49:46
WM_ERASEBKGND でも抑制したら。

508 名前:デフォルトの名無しさん :2005/06/12(日) 22:50:21
>>506
つ DirectX

509 名前:デフォルトの名無しさん :2005/06/12(日) 22:51:48
ダイアログボックスをつっくてEDITTEXTコントロールを使用したのですが、何も表示されないのですがこれはなぜでしょう。
EDITTEXTの部分は
  EDITTEXT IDC_EDIT,59,7,60,13,ES_AUTOHSCROLL
となっております。

510 名前:477 :2005/06/12(日) 22:56:37
うーん丸一日弄ってたけどさっぱりわからなかった…。
CodeProjectのほうでも同じような質問が出てるっぽいし解決法
なしでFAなのかな。

511 名前:デフォルトの名無しさん :2005/06/12(日) 23:00:10
>507-508
おお、早々とありがとうございます。

512 名前:デフォルトの名無しさん :2005/06/12(日) 23:02:40
>>510
fMaskにRBBIM_BACKGROUNDじゃだめなのか?

513 名前:477 :2005/06/12(日) 23:15:54
>>512
すみません、たびたび質問で申し訳ないのですがfMaskとは
どの関数のパラメータでしょうか。
DrawThemeBackground(Ex)には見あたらなかったもので。

514 名前:デフォルトの名無しさん :2005/06/12(日) 23:22:25
あ、悪い。
通常のrebarと勘違いしてた。

515 名前:477 :2005/06/13(月) 01:28:36
>>514
申し訳ないです、通常のReBarならそのまま作ってやればいいん
ですけどねぇ。
いろいろ探ってみます。ありがとうございました。

516 名前:デフォルトの名無しさん :2005/06/13(月) 03:39:27
winのアクセサリのペイントなどでBMPを扱う際に
範囲指定などで始点と終点を結ぶ点線の矩形を表示していますが
あれはどのように実装すればいいのでしょうか?
MFC使用不可でおねがいします。

517 名前:デフォルトの名無しさん :2005/06/13(月) 05:30:25
>>516
普通にAPIで矩形描画すりゃいいじゃん

518 名前:デフォルトの名無しさん :2005/06/13(月) 09:01:27
すいません、猫でもの通りにdll作ってみたのですがlibファイルが生成されません。なぜでしょうか教えてください

519 名前:デフォルトの名無しさん :2005/06/13(月) 09:18:16
>>516
CreatePen()で破線作って書いたり消したり。
ちらつきが気になるならバックバッファでも作る。

XORペンってなかったっけーとおもったけど見あたらなかった。
漏れなんか勘違いしてるのかな・・・。

>>518
猫でものとおりにやってないor猫と環境が違う。

520 名前:デフォルトの名無しさん :2005/06/13(月) 09:43:53
猫でもの簡単に作るのとこのはできるんだよ。161章のソースで
"hookdll.h"とか存在しないファイルをインクルードしてるたり
ソースの途中にコメント入れてたりして激しくむかついてくるんだが


521 名前:デフォルトの名無しさん :2005/06/13(月) 10:00:34
他のサイトみてやっとできたぜ。EXPORTの説明ぐらい書けよ糞猫が

522 名前:デフォルトの名無しさん :2005/06/13(月) 14:17:03
そもそも猫は勉強するためには使わない方が吉。
Win32のソース集だけと思っておけ。

523 名前:デフォルトの名無しさん :2005/06/13(月) 15:11:57
>>519

SetROP2(hdc,R2_COPYPEN);
SetROP2(hdc,R2_XORPEN);



524 名前:デフォルトの名無しさん :2005/06/13(月) 15:55:01
ニャンコと呼べ

525 名前:デフォルトの名無しさん :2005/06/13(月) 15:56:33
>>516
MFCのソースを見ると、リージョンを駆使した挙句にPatBltしてる。
MFC使用不可でもソース見てみたら?

526 名前:デフォルトの名無しさん :2005/06/13(月) 16:16:25
>>520-521
帰れ

527 名前:デフォルトの名無しさん :2005/06/13(月) 16:56:14
>>523
ソレダ すっきりした。ありがとん。

528 名前:デフォルトの名無しさん :2005/06/13(月) 17:22:28
ロックしてるファイルを削除したいの
どお、できそう?

529 名前:デフォルトの名無しさん :2005/06/13(月) 17:33:15
マシン再起動して起動時に削除

530 名前:デフォルトの名無しさん :2005/06/13(月) 17:40:30
他に意見のある方いますか?

531 名前:デフォルトの名無しさん :2005/06/13(月) 17:48:07
異議な〜し

532 名前:デフォルトの名無しさん :2005/06/13(月) 17:51:06
待て待て、ロックを解除してからファイルを削除すると言うのはどうだ?

533 名前:デフォルトの名無しさん :2005/06/13(月) 18:06:05
他の人(アプリ)がロックしたものでも
だいじょうぶ?

534 名前:デフォルトの名無しさん :2005/06/13(月) 18:08:24
ロックもへったくれも無いな

535 名前:デフォルトの名無しさん :2005/06/13(月) 18:19:56
そこをなんとか

536 名前:デフォルトの名無しさん :2005/06/13(月) 18:25:54
窓から投げ捨てろ。

537 名前:デフォルトの名無しさん :2005/06/13(月) 18:28:37
他のアプリがロックしてるならそのアプリを終了させればよかろ?

538 名前:デフォルトの名無しさん :2005/06/13(月) 19:41:08
タブコントロールの指定したタブをアクティブにしたいのですが、
Win32の場合ですと、どのようにするのでしょうか。
おそらく、SendMessageで何かしらのメッセージを送っていると思いますが。

539 名前:デフォルトの名無しさん :2005/06/13(月) 19:46:25
>>537
やっぱそうなる?

他に意見のある方いますか?

540 名前:デフォルトの名無しさん :2005/06/13(月) 19:49:12
EDITTEXTを使っているのに画像の様に何も表示されません。
しかし、ダイアログを移動させると表示されます。これはどうしてでしょうか?
ttp://sakots.pekori.jp/cgi/sn/src/up22563.png

541 名前:デフォルトの名無しさん :2005/06/13(月) 19:50:52
ロックを強制的に解除できるIFSレイヤでも書いたら。

542 名前:デフォルトの名無しさん :2005/06/13(月) 19:51:58
SendMessageとPostMessageの違いですが、
イベントキューに入れるのではなく、即メッセージ処理をしてくれるのはどっちのほうでしょうか?

543 名前:デフォルトの名無しさん :2005/06/13(月) 19:54:00
>>542
MSDN読めば分かるだろう

544 名前:デフォルトの名無しさん :2005/06/13(月) 19:57:11
>>542
「即メッセージ処理」させるAPIなんてない。
どっちもメッセージキューに入れられる。

545 名前:デフォルトの名無しさん :2005/06/13(月) 20:20:20
リッチエディトの選択範囲の文字サイズを変えたいのですが、
どうもうまくいきません。
何に問題があるのでしょうか?

void CMyRichEdit::SetFontSelected(char* pFontName,int fontSize)
{
HDC hDC=::GetDC(m_hWnd);

CHARFORMAT cfm;
memset(&cfm,0,sizeof(CHARFORMAT));
cfm.cbSize=sizeof(CHARFORMAT);

cfm.dwMask=CFM_CHARSET|CFM_FACE|CFM_SIZE;
cfm.bCharSet=SHIFTJIS_CHARSET;
cfm.dwEffects=0;
cfm.yHeight=MulDiv(fontSize,GetDeviceCaps(hDC,LOGPIXELSY),-1440);
strcpy(cfm.szFaceName,pFontName);

::SendMessage(m_hWnd,EM_SETCHARFORMAT,SCF_SELECTION | SCF_WORD,(LPARAM)&cfm);

::ReleaseDC(m_hWnd,hDC);
}

546 名前:545 :2005/06/13(月) 20:26:39
上記は解決しました。

もう一点ですが、リッチエディットに設定されてる文字数を得るにはどうすればいいのでしょうか?

547 名前:デフォルトの名無しさん :2005/06/13(月) 21:20:10
>>546
GetWindowTextLengthは駄目?

548 名前:デフォルトの名無しさん :2005/06/13(月) 21:51:46
ロックを解除するソフトなら、http://ccollomb.free.fr/unlocker/ などがある。
どうやって実現しているのか興味があるが、分からん。

549 名前:デフォルトの名無しさん :2005/06/13(月) 23:53:38
>>540
絵だけ見ても判らんが、描画順序の問題じゃないの?
EDITTEXTを描画した後に同じ座標に重なっている別のWindowをSW_HIDEしているとか。

550 名前:デフォルトの名無しさん :2005/06/14(火) 00:07:30
>>544


551 名前:デフォルトの名無しさん :2005/06/14(火) 00:17:04
SendMessageは投げたメッセージを処理するまで帰ってこない
PostMessageは投げたら即帰ってくる

どっちもメッセージキューにはいることに変わりは無い。

552 名前:デフォルトの名無しさん :2005/06/14(火) 00:23:10
>>551
そうじゃない説明よく見るけどなぁ。ほんとう?

553 名前:デフォルトの名無しさん :2005/06/14(火) 00:23:32
MSDNのSendMessageの解説より

指定されたウィンドウが、呼び出し側スレッドが作成したものであった場合、
そのウィンドウのウィンドウプロシージャがサブルーチンとして即座に呼び
出されます。指定されたウィンドウが、他のスレッドが作成したものであっ
た場合、システムはそのスレッドへの切り替えを行い、次に適切なウィンド
ウプロシージャを呼び出します。複数のスレッド間で送信されたメッセージ
が処理されるのは、受信側スレッドがメッセージ取得コードを実行したとき
だけです。送信側スレッドは、受信側スレッドがメッセージの処理を終える
まで、ブロックされます(待機状態になります)。



554 名前:デフォルトの名無しさん :2005/06/14(火) 00:26:10
>>551
大嘘つきだな

555 名前:デフォルトの名無しさん :2005/06/14(火) 00:37:43
Advanced Windows に何か書いてたような気がするけど、
手元にないからわからん。

でも
GetQueueStatus
には
> QS_SENDMESSAGE
> A message sent by another thread or application is in the queue.

これって関係ないかな?

556 名前:デフォルトの名無しさん :2005/06/14(火) 01:03:59
Sendされたメッセージの処理中に別のメッセージがSendされて来たら
どうなる?

557 名前:デフォルトの名無しさん :2005/06/14(火) 01:08:33
>>556
Windowsメッセージなら、キューにたまるだけだろ

558 名前:デフォルトの名無しさん :2005/06/14(火) 01:08:57
>>554
そうか?>>551であってると思うけど

559 名前:デフォルトの名無しさん :2005/06/14(火) 01:13:07
SendMessageされたメッセージがキューに入るって事は、
GetMessageやPeekMessageで取れるってこと?

560 名前:デフォルトの名無しさん :2005/06/14(火) 01:17:13
つか>>553のはキューを介さずに直接呼ぶよって説明でないの?
別スレッドからの時はよく分からんけど。

561 名前:デフォルトの名無しさん :2005/06/14(火) 01:26:14
>>560
ああなるほど、そっちか。
確かにそうだな。

562 名前:デフォルトの名無しさん :2005/06/14(火) 01:28:54
プ

563 名前:デフォルトの名無しさん :2005/06/14(火) 02:07:38
AdvancedWindows読め、の一言なんだけどな、実際。>>553をもちょっとかみ砕くと:

スレッドDが作成したウィンドウに、スレッドDまたはSからSendMessage()するとしよう。

(1)スレッドDからSendMessage()した場合
メッセージキューを介さずに直接WinProc()が(関数コールで)呼ばれる。これは皆も知っての通り。

(2)スレッドSからSendMessage()した場合
メッセージはスレッドDの「SendMessage専用メッセージキュー」に一旦溜まり、
スレッドDの「プロキシ的何か」がWinProc()を(関数コールで)呼ぶ。

つまり、Post用のキューとは独立して、他スレッドからのSendMessage用のキューがあって、
「プロキシ的何か」がスレッドSの代わりにスレッドD内でWinProc()を呼び出す仕組み。

>>556
上の例だと、スレッドDの「SendMessage専用メッセージキュー」に溜まって順次処理される。

ちなみに、「プロキシ的何か」ってのはGet/Peek/WaitMessage()なんだけど、
内部的に、暗黙的に処理してるので、外部からはその様子はうかがえない。
なので>>559はNO。

564 名前:デフォルトの名無しさん :2005/06/14(火) 02:18:38
ちゅうことは、スレッドDがGetMessage等の関数を呼び出した際に、
「SendMessage専用メッセージキュー」を処理して、何食わぬ顔で
通常のメッセージキューの内容をもって返ってくると言うことか。


565 名前:477 :2005/06/14(火) 03:22:31
すみませんが自己解決したっぽいので報告しておきます。
HTHEME hTheme = OpenThemeData(hWnd, "REBAR");
if ( hTheme != NULL) {
 DrawThemeBackground(hTheme, hDC, 0, 0, pRect, NULL);
}
ってな感じのコードで描画することが出来ました。
0とかあのリスト見たら指定しちゃいけないっぽい感じがするよ…。
何はともあれやりたいことは実現できちゃったということで。
レスいただいた方ありがとうございました。

566 名前:デフォルトの名無しさん :2005/06/14(火) 07:39:25
>>563
知らなかったー。役に立つ情報さんくす。

567 名前:デフォルトの名無しさん :2005/06/14(火) 08:12:04
>>563
グローバルフック中、Postしたメッセージが
再度フックにかからない理由がようやく分かった気がする
俺からもd

568 名前:デフォルトの名無しさん :2005/06/14(火) 09:09:34
>>548
寝てる間に遅レスになってしまったが
何らかの方法で出来ることが分かった
Thinks

569 名前:デフォルトの名無しさん :2005/06/14(火) 09:18:49
使ってみたけど、ファイルを掴んでる
プロセスを殺さないと削除できないのね。
でも、ヒントになったよ。

570 名前:デフォルトの名無しさん :2005/06/14(火) 09:26:00
質問ですが
タブコントロールでマルチライン表示をした場合ですが、
複数行あるタブの下側にタブ別のウィンドウを表示させますが、
その複数行の一番下の行の位置を得るにはどうすればいいのでしょうか?

今までシングルラインでタブを作ってまして、
タブごとのウィンドウを表示させるにはシングルライン(一行)の後なので、必ず決まった位置になるので
ウィンドウ表示もできますが、

マルチラインタブの場合、動的に複数行になることもあるので、
一番下の行の位置がどこになるのかがわからないので、どのように調べればいいのか教えていただきたいのですが。

571 名前:デフォルトの名無しさん :2005/06/14(火) 12:50:29
>>570
TCM_ADJUSTRECT。きめうちだと、タブ下側とかにつけたとき困るだろ。

572 名前:540 :2005/06/14(火) 18:40:50
>>549
特に別のWindowをSW_HIDEなどはしていません。
全てのソースを晒すってのもありですか?

573 名前:デフォルトの名無しさん :2005/06/14(火) 18:59:28
最新のPSDKをインストールしてみたら、WinMainがこんな風に説明されているんだけど……。


int WinMain(
HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow
);

なんで__stdcallついてないんだろう。

574 名前:デフォルトの名無しさん :2005/06/14(火) 19:54:53
>>573
俺はPSDKでは呼び出し規約は省略されているのが当たり前だと思っていたけど。

575 名前:デフォルトの名無しさん :2005/06/14(火) 20:13:05
>>569
548のページにはハンドルだけ閉じる機能があるって書いてるけどできないの?

576 名前:デフォルトの名無しさん :2005/06/14(火) 21:22:40
異なるプライオリティをもつ2つの(レディな)スレッドがあるとします。
プライオリティが高い方をスレッドA、低いほうをスレッドBとします。このとき、

1. B は A よりプライオリティが低いのでプロセッサタイムを全くもらえない。
2. B は A よりプライオリティが低いので A と比べて少しのプロセッサタイム
 しかもらえない。

どちらが正しいのでしょうか。

577 名前:デフォルトの名無しさん :2005/06/14(火) 21:41:03
>>576
B よりも優先度(スレッドのプライオリティとプロセスのプライオリティクラス、
およびプライオリティブーストの状態によって決まる)が高いスレッドが一つも
実行可能な状態でなければ、Bも実行される。

ただし、Bが何かのリソースをロックして、Aがそのロックの取得待ちになったような
場合には、Bには一時的にAと同じ優先度が与えられる。

また、ウィンドウメッセージを受け取った、Wait状態が解除され(てReadyになっ)た、
というような何気ないことでもプライオリティはブーストされるということにも注意。

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dllproc/base/scheduling_priorities.asp

578 名前:デフォルトの名無しさん :2005/06/14(火) 21:42:18
>>576
Aが処理している間は一切Bには時間は与えられない。
AがヘヴィループをまわしているならBは動かないし
IO待ちなんかでAが寝ればその間(だけ)Bが動く。
Aが起きたらその瞬間Bは止まる。

579 名前:デフォルトの名無しさん :2005/06/14(火) 21:56:15
リアルタイム優先度クラスのスレッドを作ると簡単にシステムをロックできるんだったな
lazy writeのスレッドとかも動けないからデータあぼーん
これもAdvanced Windowsに出てたような

580 名前:デフォルトの名無しさん :2005/06/14(火) 22:18:34
>>577 >>578
ありがとうございます。間違った先入観をもっていたので、スケジューリングが理解
できずにいました。ちょうど>>577のリンク先のドキュメントを読んでいたところです。

581 名前:デフォルトの名無しさん :2005/06/14(火) 22:45:54
PostMessageで画面を再描画しているのですが、再描画するまえに次のPostMessageが
呼ばれたら処理がおもくなってしまいます。メッセージキューを削除みたいなことは可能でしょうか?



582 名前:デフォルトの名無しさん :2005/06/14(火) 22:48:40
>>581
よくわからんがSendMessageにしたらだめ?

583 名前:デフォルトの名無しさん :2005/06/14(火) 23:01:49
>>581
PeekMessageでPM_REMOVEを指定

584 名前:デフォルトの名無しさん :2005/06/14(火) 23:05:58
WM_PAINT(とWM_TIMERとWM_QUIT)は
ほかのメッセージが空になるまで
アプリケーションキューの中にあって、
しかも複数きたら、ひとつにまとめる、
と、PSDKの付属文書に書いてあり、てすと

>メッセージキューを削除みたいな
PeekMessage()の最後の引数がなんかそんなみたいな

585 名前:デフォルトの名無しさん :2005/06/14(火) 23:18:51
UpdateWindow()はWM_PAINTがメッセージキューに溜まっていたら即座にSendすると書かれている。

586 名前:デフォルトの名無しさん :2005/06/14(火) 23:41:55
せんせい、
アプリケーションキューをバイパスして直接hWndのWndProcにおくる、
とかいてあります

587 名前:デフォルトの名無しさん :2005/06/14(火) 23:44:02
>>586
それをSendすると言う。

588 名前:デフォルトの名無しさん :2005/06/14(火) 23:49:30
...すると、GetMessage()でWM_PAINTをフィルタすると
WndProcにはとどかないのでせうか?

すいません、もうねます。

589 名前:デフォルトの名無しさん :2005/06/14(火) 23:54:25
いやむしろ
キューにたまってるWM_PAINTを出して
UpdateなリージョンをSendMessage()の出した
WM_PAINTのとmergeして、

おくる、
ということなのか、と
おもいますたほんとにねます

590 名前:デフォルトの名無しさん :2005/06/14(火) 23:56:52
WM_PAINTはユーザが直接Sned/Postしてはいけないものだぞ。
ユーザーから出したいときにはInvalidateRect/Rgn

591 名前:デフォルトの名無しさん :2005/06/15(水) 00:03:04
>>578
Windowsの場合はAが処理中であっても、Bも動くよ。
あまりにもCPU時間が与えられていないスレッドに対しても
動的なブーストがかかる。

592 名前:デフォルトの名無しさん :2005/06/15(水) 00:20:05
>>581
PostMessageで良いんなら、InvalidateRect でも構わんのじゃないか?


593 名前:デフォルトの名無しさん :2005/06/15(水) 01:19:28
>>591
ああ、そのへんもAdvanced Windowsに書いてあったなあ。

594 名前:デフォルトの名無しさん :2005/06/15(水) 06:51:04
for(;;) printf("%d", c++);
で普通と低で試してみたら低の方は数秒に一度1,2回カウンタが上がるな。
一応終了できるようにメッセージループを回してあげようって事なのか。

595 名前:デフォルトの名無しさん :2005/06/15(水) 09:47:51
ttp://msdn.microsoft.com/library/default.asp?url=/library/en-us/dllproc/base/priority_inversion.asp

ランダムにブーストするのかな?

596 名前:デフォルトの名無しさん :2005/06/15(水) 09:55:55
お前ら大して英語読めないくせに生意気に本家へのリンク貼るのやめろよ

597 名前:デフォルトの名無しさん :2005/06/15(水) 10:17:58
ファイルを新規作成されたときや
削除されたときに出るメッセージってありますか?

598 名前:デフォルトの名無しさん :2005/06/15(水) 10:30:43
微妙に違うけどIShellChangeNotifyとか

599 名前:デフォルトの名無しさん :2005/06/15(水) 12:01:42
FindFirstChangeNotification

600 名前:デフォルトの名無しさん :2005/06/15(水) 12:19:14
>>597
ReadDirectoryChangesW()

601 名前:597 :2005/06/15(水) 12:52:05
FindFirstChangeNotification
ReadDirectoryChangesW()

こういうのは知ってますが
さる事情で使えないので
もしメッセージが出てるなら
それを横取りしたいのですが

602 名前:デフォルトの名無しさん :2005/06/15(水) 13:06:35
サル地蔵

603 名前:デフォルトの名無しさん :2005/06/15(水) 13:26:38
>>601
どの程度ちゃんととれるのか知らないけど
SHChangeNotifyRegister

604 名前:デフォルトの名無しさん :2005/06/15(水) 13:27:03
メッセージって?

605 名前:デフォルトの名無しさん :2005/06/15(水) 15:14:24
OSはみんなこれから自分が作るアプリに都合がいい仕様になってるのさ

606 名前:デフォルトの名無しさん :2005/06/15(水) 17:26:25
さる事情:能力がサル以下なので。

それはそうと、IRPはメッセージと言ってもよくね?

607 名前:デフォルトの名無しさん :2005/06/15(水) 17:55:33
>>603

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/shellcc/platform/shell/reference/functions/shchangenotifyregister.asp

608 名前:デフォルトの名無しさん :2005/06/15(水) 19:46:42
>>606
メッセージっぽいと言って言えないこともないとは思うけど、
デバドラはさすがにスレ違いな希ガス。

でも、ファイル単位で変更通知あげてくれるフィルタドライバなんてあったら便利そうね。

609 名前:デフォルトの名無しさん :2005/06/15(水) 19:50:27
タブを下に表示させるのには
どうしたらよいのでしょうか

610 名前:デフォルトの名無しさん :2005/06/15(水) 20:08:43
TCS_

611 名前:576 :2005/06/15(水) 22:01:54
>>591
>>書いてないですが、576の質問の中の「プライオリティ」はブースト後
のプライオリティ(ダイナミックプライオリティ)です。

それでもスレッドBはプロセッサタイムを(ほんの少しでも)もらえますか?

612 名前:デフォルトの名無しさん :2005/06/15(水) 22:03:21
>>594

613 名前:576 :2005/06/15(水) 22:24:44
>>612
この実験では、次の(A)なのか(B)なのか分かりません。

(A) プライオリティが低い方のスレッドにブーストがかかってそのスレッドの
  プライオリティが高くなり、そのためそのスレッドが実行された。

(B) プライオリティが低いほうのスレッドが低いまま実行された。

「(B)みたいなことがありえるのか?」が質問です。つまり「プライオリティ」
の根本的な意味が知りたいのです。

614 名前:デフォルトの名無しさん :2005/06/15(水) 22:40:31
リッチエディット2.0でEM_AUTOURLDETECTを使ってURLを
検出しているんですけど、リッチエディットの背景を黒色に
していると、URLの文字も黒くなって見えなくなってしまいます。

これの対処方法ってないでしょうか?
ぐぐってみたところ、同様の問題の報告は見つかりましたが
対処法はみつかりませんでした。

615 名前:デフォルトの名無しさん :2005/06/15(水) 22:52:33
>>613
Aだといっても納得しないんだろうな・・・

616 名前:デフォルトの名無しさん :2005/06/15(水) 23:30:38
>>613
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dllproc/base/scheduling_priorities.asp

ブーストを考えなければ、レディでプライオリティの高いスレッドが常に
実行される。

617 名前:デフォルトの名無しさん :2005/06/15(水) 23:46:39
シリアル通信のCreateFileのフックについて質問です。

現状、シリアル通信のCreateFileをフックするアプリケーションを作成しています。
C++で作成したWindowsAPIのCreateFileを行うテストプログラムは、
フックできています。

そこで、質問なのですが、VBで作成した
通信制御用ActiveXのMSCommでのPortOpenを行うプログラムを
フックさせたいのですが、上手くいきません。

ActiveXも最終的には、WindowsAPIをコールしているのかなと思って、
いたのですが、全くフックできず、途方にくれています。
そもそも前提であるWindowsAPIをコールしていると思っている、
発想が間違えているのでしょうか?

618 名前:デフォルトの名無しさん :2005/06/16(木) 00:01:41
CreateFileをフックする? どういうことだろ・・・メッセージは何だろう・・・

619 名前:デフォルトの名無しさん :2005/06/16(木) 00:07:56
へたれ発見

620 名前:デフォルトの名無しさん :2005/06/16(木) 00:15:05
>>617
OpenFileとかCOMポートを開きうる命令は他にもある。

>>618
API HOOKでぐぐってみ?

621 名前:デフォルトの名無しさん :2005/06/16(木) 00:24:45
ども。へたれです。SetWindowHookExとかサブクラス化などをイメージしてしまいました。
ぐぐりました。とても勉強になりました。620さんありがとう。
フックっつーかハックのような感じですね スレ汚しすまん

622 名前:デフォルトの名無しさん :2005/06/16(木) 00:33:25
>>621
いいえフックです

623 名前:デフォルトの名無しさん :2005/06/16(木) 00:52:19
いいえホックです

624 名前:デフォルトの名無しさん :2005/06/16(木) 00:55:27
はいジャックです

625 名前:デフォルトの名無しさん :2005/06/16(木) 00:57:20
>>596
そもそもリファレンス以外は翻訳がないわけだが

626 名前:デフォルトの名無しさん :2005/06/16(木) 00:58:47
>>623
Q. スティックですか?
A. いいえステッキです

627 名前:デフォルトの名無しさん :2005/06/16(木) 01:30:08
素敵なステッキ

628 名前:デフォルトの名無しさん :2005/06/16(木) 02:29:11
すいませんが質問させてください
スレ違いなら誘導おねがいしますm(__)m

OleLoadPictureを使って読み込んだGIFファイルを
ウィンドウに表示しようとしたのですが、GIF画像の
タテヨコのサイズによっては画像が一部ズレて表示されます。
例えば240x240のgif画像なら正しく表示されるのに238x240だと少しズレます。

こういうものなのでしょうか?

具体的にはIPictureを使って以下のようにしています

OLE_XSIZE_HIMETRIC stWidth;
OLE_YSIZE_HIMETRIC stHeight;

iPicture->get_Width( &stWidth );
iPicture->get_Height( &stHeight );

HDC hdc = GetDC( hWnd );
long w = MulDiv( stWidth, GetDeviceCaps( hdc, LOGPIXELSX ), 2540 );
long h = MulDiv( stHeight, GetDeviceCaps( hdc, LOGPIXELSY ), 2540 );

iPicture->Render( hdc, 0, 0, w, h, 0, stHeight, stWidth, -stHeight, NULL );

ネット上に落ちているプログラムも上記となんら変りないので
ちっとも原因が分かりません。
ご存知の方、ご教授お願いします。

629 名前:デフォルトの名無しさん :2005/06/16(木) 02:41:52
>>625
だから何?

630 名前:デフォルトの名無しさん :2005/06/16(木) 05:30:53
>>628
GIFを使おうとしたことが無いんでよくわからんが、
1ラインの総バイト数が4の倍数になるようにパディングがしてあったりしないか?
BMPはばっちりされてるんだが、GIFはどうなんだろか

631 名前:630 :2005/06/16(木) 05:32:02
直接操作してるわけじゃないから関係ねぇな・・・スルーしてくれ・・・

632 名前:デフォルトの名無しさん :2005/06/16(木) 05:37:05
>>629
何を貼ればいいのかと

633 名前:デフォルトの名無しさん :2005/06/16(木) 09:52:03
** DrawText() **
どうも、本家のが、間違ってる、もよう。

~~~
nCount
文字列の文字数を指定します。
このパラメータに -1 を指定すると、
lpString パラメータは NULL で終わる文字列へのポインタであると見なされます。
この場合、文字列の長さは自動的に計算されます。
http://www.microsoft.com/japan/msdn/library/ja/jpgdi/html/_win32_drawtext.asp


nCount
[in] Specifies the length of the string.
<...>
If nCount is 1, then
the lpString parameter is assumed to be a pointer to a null-terminated string and
DrawText computes the character count automatically.

ttp://msdn.microsoft.com/library/default.asp?url=/library/en-us/gdi/fontext_0odw.asp

634 名前:614 :2005/06/16(木) 10:48:58
もう少し詳しく調べてみました。

リッチエディットコントロールの背景色をRGB(27,27,27)では大丈夫なのですが
RGB(26,26,26)にした途端に、リンクの色が黒になってしまいました。
また、RGB(26,27,27)は大丈夫で、RGB(26,26,27)は駄目でした。
青成分を0に固定した場合はRGB(40,40,0)まで問題なく、RGB(39,40,0)で黒く
なりました。

コントロールの背景色ではなく、部分的に文字列の背景色だけを設定した場合も
同様の現象が起こっています。

この件に関して、対処法などの情報があれば教えてください。

635 名前:デフォルトの名無しさん :2005/06/16(木) 11:12:43
>>634
背景を余り暗くしない(R+G+B>=80)か、リンク文字色も自分で設定するしかないんでね?

636 名前:デフォルトの名無しさん :2005/06/16(木) 12:14:25
>>628
DC側を SetMapMode で MM_HIMETRIC にして、w と h を使わずに
HIMETRIC のままでサイズ指定するとどうなりますか?

637 名前:デフォルトの名無しさん :2005/06/16(木) 14:41:03
今まで、ダイアログやメッセージボックスを普通に使っていたのですが、いきなり
ダイアログやメッセージボックスがなぜか表示できなくなりました。
しかし、不思議なことにAltキーを押すと表示されます。
ダイアログボックスやメッセージボックスが表示されない以外におかしい所はありません。
もしわかる人がいたら教えてください。

638 名前:デフォルトの名無しさん :2005/06/16(木) 15:27:08
こんにちは

質問ですが、
VC++6でアプリケーションを作ると、Windows2000風なGUIデザインになりますが、
その際、.exeがあるフォルダにマニフェストファイルを入れれば、XPスタイルになりますが、
そのマニフェストファイルを入れなくても、.exeだけでXPスタイルになる方法はありますか?

639 名前:デフォルトの名無しさん :2005/06/16(木) 15:37:14
>>638
最後の行だけで十分な質問だな
リソースとしてマニフェストやらをもたせるとよいぞ

640 名前:デフォルトの名無しさん :2005/06/16(木) 15:40:46
>>638
http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/jpdnwxp/htm/xptheming.asp

641 名前:デフォルトの名無しさん :2005/06/16(木) 16:32:01
>>638

CreateToolbarEx で作成した ToolBar は XPスタイル(Luna)にすると
ボタンの上で マウスの 左右の 両方のボタンをおすとハングしてしまうので
サブクラス化して、右クリックを無効にしましょう!

さくらエディタ、FFFTP でハングを体験してください。

642 名前:デフォルトの名無しさん :2005/06/16(木) 17:09:18
デバッグでアプリケーションを起動し、アプリケーションを終了させると、次のメッセージがVC++上で出ます。

Warning: m_pMainWnd is NULL in CWinApp::Run - quitting application.
スレッド 0xC0C 終了、終了コード 0 (0x0)。

とエラーが出た場合、何に問題があるのでしょうか。
特定するのが難しいです。

一応、表面上はアプリケーションは正常終了しているようですが。

643 名前:デフォルトの名無しさん :2005/06/16(木) 17:10:50
Win32アプリケーションとしてプロジェクトを作ったのですが、
MFCを使いたくなりました。
その場合は、ソースコードに何を追加すればいいのでしょうか。

644 名前:デフォルトの名無しさん :2005/06/16(木) 18:17:25
>>642
そのメッセージの通りなんだが。
つかスレ違い。

645 名前:デフォルトの名無しさん :2005/06/16(木) 19:16:15


m_hWnd=CreateWindowEx(
WS_EX_CLIENTEDGE,
"RICHEDIT",
"",
WS_CHILD|WS_VISIBLE|WS_BORDER|ES_MULTILINE |
WS_VSCROLL|WS_HSCROLL|ES_AUTOVSCROLL|ES_AUTOHSCROLL,
0,0,0,0,
hParentWnd,
(HMENU)10012,
hInst,
NULL);

ウィンドウを作る時に固有のID値を渡しますが、
ウィンドウ作成後にそのIDを変える方法を教えていただきたいのですが、
よろしくお願いいたします。

646 名前:デフォルトの名無しさん :2005/06/16(木) 19:48:00
>>645
_

647 名前:デフォルトの名無しさん :2005/06/16(木) 19:54:59
SetWindowLong

648 名前:デフォルトの名無しさん :2005/06/16(木) 20:58:55
SetWindowLongPtr

649 名前:617 :2005/06/16(木) 23:11:33
>>620さん
レスありがとうございます。

Openfileも試してみましたが、ダメでした。

もう少しAPI関係の書籍などにあたってみようと思います。

650 名前:デフォルトの名無しさん :2005/06/16(木) 23:22:19
_lcreatというのもあるぞ

651 名前:デフォルトの名無しさん :2005/06/16(木) 23:50:11
>>649
デペンデンシーヲーカーとかで調べるとか

652 名前:デフォルトの名無しさん :2005/06/17(金) 09:08:08
>>651
なにそれ?
東京ウォーカーみたいなもんか?

653 名前:デフォルトの名無しさん :2005/06/17(金) 09:38:38
dipends.exe 持ってないの??

654 名前:デフォルトの名無しさん :2005/06/17(金) 09:53:43
ttp://www.dependencywalker.com/
つか、SDK入れてれば普通入ってるはずだが。

655 名前:デフォルトの名無しさん :2005/06/17(金) 11:32:45
GetProp(hWnd,_T("MYCLASS"));

の_T(" ")はL" "と同じくワイド文字を扱うということでよろしいのでしょうか?

656 名前:デフォルトの名無しさん :2005/06/17(金) 11:53:10
>>655
_UNICODE が定義されてればL" "、されてなければ " "

657 名前:デフォルトの名無しさん :2005/06/17(金) 15:07:47
フロッピィの実物のディスクの出たり入ったりを
動的に知る方法はありますか?


658 名前:デフォルトの名無しさん :2005/06/17(金) 15:10:37
       ,、__,、 
      ( ・∀・)  フポッピー!
      (、っiョc)   
      ゙'ー'゙ー'゙
       ┃┃
       ┃┃
       ┃┃  フポッピー!!
 / \ ((  )) /   \
 \   ((   ))    /
   \((     )) /

659 名前:デフォルトの名無しさん :2005/06/17(金) 15:13:12
>>657
無いよ

660 名前:デフォルトの名無しさん :2005/06/17(金) 15:27:26
>>659
そこをなんとか

661 名前:デフォルトの名無しさん :2005/06/17(金) 15:35:16
スレ違い的な質問すいません。
実行プログラムの名前変更はどうやればいいのでしょうか?
とあるネトゲで実行プログラム一覧が表示されているみたく、
名前を変更したいのですが・・・

どうかよろしくお願いします。

662 名前:デフォルトの名無しさん :2005/06/17(金) 15:39:13
SetWindowText

663 名前:デフォルトの名無しさん :2005/06/17(金) 16:26:08
すいません。

ウィンドウのサイズを右下のつまみで変更するとウィンドウサイズが変わりますが、
その変更の際、WM_PAINTが呼ばれ再描画がされますが、
ちらつきが激しく、見た目が汚くなります。

おそらく、バックグランドカラーで一旦クライアント領域を消去してから、再描画をしているからちらつくのだと思いますが、
そのちらつきをなくす方法を教えていただきたいのですが。

よろしくお願いいたします。

664 名前:デフォルトの名無しさん :2005/06/17(金) 16:56:22
>>663
>>506-507

665 名前:デフォルトの名無しさん :2005/06/17(金) 17:13:04
ウィンドウにBUTTONを貼り付けたんだけども、
WM_PAINTでBUTTONの部分がちらつきます。

BUTTONがある部分の再描画処理をしないようにするにはどうすればいいのでしょうか。

666 名前:デフォルトの名無しさん :2005/06/17(金) 18:12:47
WS_CLIPCHILDREN

667 名前:デフォルトの名無しさん :2005/06/17(金) 20:45:39
日記
某月某日晴
題 エディット・コントロール

ちょっとややこしめの引数で
コントロールをCreateWindowしたあと
親WndProcでやることは

WM_SIZEでクライアント領域を
コントロールウインドウにぜんぶ割り当てて

WM_SETFOCUSでインプットフォーカスを
コントロールウインドウにぜんぶ割り当てて

WM_COMMANDでエラーをtrapして
MessageBoxで"エラー"とか表示するだけなので

...こんなでできるのね
という感想
しかしたぶんこれは極端な例なのだろう
日記終

668 名前:デフォルトの名無しさん :2005/06/17(金) 22:26:44
スレ違いなら、誘導お願いします。

今、StartServiceを使ってローカルサービスを
起動するプログラムを作っているのですが、
2つの問題があります。

・サービス制御マネージャ(以下、SCM)がロックされていると
 エラーになる
・StartServiceを発行する際にSCMがロックされ、
 そのタイミングで他のサービスが起動しようとすると、
 そのサービスが起動できず、エラーになる

一点目については、QueryServiceStatusなどを
使って待ち合わせることで解決可能ですが、
二点目について解決できません。

ただし、ATLで当該サービスをラップする
サービスアプリケーションを
作るというのは、運用上できません。

この状況で、以下の解決策を考えたのですが、
実験した結果そうだ、というだけで裏付けがないので
どこかにソースがあればご教授いただきたいのですが。

LockServiceDatabaseでSCMをロックしているときに
DOSコマンドのNET STARTを発行すると、
なぜかエラーになりません。
この方法で上記の2点を解決できるでしょうか。


669 名前:デフォルトの名無しさん :2005/06/17(金) 23:41:36
簡単な質問かもしれませんが、
ウィンドウのサイズを固定する方法を教えてください

670 名前:デフォルトの名無しさん :2005/06/17(金) 23:46:41
>>669
WM_SIZINGをとらまえて、LPARAMとして渡されてくるRECT構造体を
修正すれば、そのサイズになるよ。

671 名前:デフォルトの名無しさん :2005/06/17(金) 23:47:35
サイズ変更可能でないスタイルにする。

672 名前:デフォルトの名無しさん :2005/06/17(金) 23:57:33
>>669
マウスでドラッグしてウインドウサイズを変更されたくないなら、
ウインドウスタイルにWS_THICKFRAMEを指定しない。

これだけだとシステムの最大化ボタンが有効なままだから、
WS_MAXIMIZEBOXも指定しない。

でもこれだけだと、外部からメッセージ投げられたときとか、ウインドウサイズが変わってしまうんだよね。
というわけで、WM_GETMINMAXINFOを処理する。

673 名前:デフォルトの名無しさん :2005/06/18(土) 00:02:23
>>657
フロッピドライブにアクセスできなかったら入ってない
フロッピドライブにアクセスできたら入ってる

カリカリうるさいかもしれないが、これでいいじゃないか。

674 名前:デフォルトの名無しさん :2005/06/18(土) 00:07:07
というより実際FDの場合そうするしかない。

675 名前:デフォルトの名無しさん :2005/06/18(土) 01:21:57
PC98時代、有名なファイラーでそういう機能を持ったやつがあったけど。

filmtn だったか、HF だったか・・・
FDじゃなかったような木がする。

676 名前:デフォルトの名無しさん :2005/06/18(土) 02:02:07
X68kではフロッピーをプログラム側から自動排出できたぜ
5インチ最高

677 名前:デフォルトの名無しさん :2005/06/18(土) 03:05:08
質問。ATLってそんなに難しいの?

http://japanese.joelonsoftware.com/uibook/chapters/8.html

人の素質はベル曲線を描く傾向がある。98%の顧客はテレビが使えるくらいにスマート
かもしれない。70%くらいはWindowsが使える。15%はLinuxを使える。1%はプログラム
が書ける。しかしC++のような言語でプログラムを書くことができるのはほんの0.1%だ。
Microsoft ATLプログラミングが理解できるのは0.01%しかいない(そして彼らは皆、眼
鏡をかけ髭を生やしている)。

678 名前:デフォルトの名無しさん :2005/06/18(土) 03:30:45
ATL難しいっていうかデザインが悪いと思う。
みんな頭悪いと思われたくないから言わんだけちゃうか。

679 名前:デフォルトの名無しさん :2005/06/18(土) 07:34:42
>>677
ATL使うこなすために必要な周辺知識が多すぎなだけ。
低レベルすぎて、本当にCOMの全てを理解していないと使いこなせないのよ。

680 名前:デフォルトの名無しさん :2005/06/18(土) 08:34:07
ウィンドウを全画面表示にするにはどうすればいいでしょうか?

681 名前:デフォルトの名無しさん :2005/06/18(土) 10:33:47
おはようございます。

質問があるのですが、
ウィンドウにリバーコントロールを貼り付けたまではいいのですが、
ウィンドウサイズをウィンドウの端をクリックドラッグすることで変える最中に、
リバーのつまみとタイトル文字列の部分が「ちらつく」現象がでてしまいます。
どうしてこうなるのかがわかりません。

リバーのつまみとテストボタンという文字列の部分がちらつく
http://www.geocities.jp/ts_d285/rebar.JPG

ご存知な方がいらっしゃいましたら、教えていただきたいのですが。
よろしくお願い致します。

682 名前:681 :2005/06/18(土) 10:37:02
インターネットエクスプローラも同じリバーコントロールを貼り付けていますが、
ウィンドウサイズ変更中にちらつく現象はまったく見受けられません。

683 名前:デフォルトの名無しさん :2005/06/18(土) 10:46:36
>>681 テーマがクラシックスタイルだったらちらつかない とかあるかも(適当

684 名前:デフォルトの名無しさん :2005/06/18(土) 11:25:30
SendMessage()でWM_CLOSEを送るとメモ帳や電卓は閉じることができたのですが、エクスプローラやIEは閉じることができませんでした。
PostMessage()ならどちらも閉じることができました。これはどうしてなのでしょうか?



685 名前:デフォルトの名無しさん :2005/06/18(土) 11:51:17
>>681-682
WM_ERASEBKGNDとかかな。

686 名前:681 :2005/06/18(土) 12:11:33
>>685
WM_ERASEBKGNDは親ウィンドウのプロシージャに分岐させてます。
土日をかけて、この問題を解決しようと思ってます。
もちろん私の不手際もあるでしょうから。

何かご存知な方がいらっしゃいましたら、教えていただけると助かります。

よろしくお願いします。

687 名前:681 :2005/06/18(土) 12:17:52
リバーとかボタンとかコントロールはCreateWindowExをする際、決められたクラス名を登録するので、
それ専用のウィンドウプロシージャは設定しませんが、

今リバーにウィンドウプロシージャを設定したら、::SetWindowLong(m_hWnd,GWL_WNDPROC,(long)wndProc);
リバーそのものを描画してくれなくなりました。

コントロールの描画はWindows側でしているのは当然ですが、
その描画はどこでどのイベントで処理してるのでしょうか?

たぶん、リバーのWM_ERASEBKGNDを処理しないようにすれば、
ちらつきはなくなると思うのですが。

688 名前:デフォルトの名無しさん :2005/06/18(土) 12:22:09
>>687
いや、WM_ERASEBKGNDはレバーの親ウィンドウで処理しなきゃだめ。
FALSEを返せば背景を消去しなくなるんでちらつきはなくなるはず。

689 名前:681 :2005/06/18(土) 12:27:59
>>688
case WM_ERASEBKGND:
return false;

親側でそのようにしてみましたが
まだちらつきます。
いろいろ試して見たいと思います。

690 名前:デフォルトの名無しさん :2005/06/18(土) 12:30:44
>>689
>>683は試してみたの?

691 名前:681 :2005/06/18(土) 12:33:29
クラシックスタイルでもちらつきました。

692 名前:デフォルトの名無しさん :2005/06/18(土) 13:00:23
SPYでメッセージ見てみた?
まあ、ちらつくっつーかWM_NCPAINT飛び交いまくり、システムが更新しまくりだったら
当然っちゃあ当然なのだろう。嫌ならシステムに渡す前に一時的にリージョンから
テキスト部分除くなりなんなりすればよいかもナー

693 名前:デフォルトの名無しさん :2005/06/18(土) 13:05:51
↑とか適当なこと言っちゃったけどアレか サイズ変更の時だけな

694 名前:デフォルトの名無しさん :2005/06/18(土) 13:12:56
>>681
CS_VREDRAW CS_HREDRAWを取る

695 名前:デフォルトの名無しさん :2005/06/18(土) 13:23:02
WM_ERASEBKGND で返すべきは nonzero じゃなかったっけ?

696 名前:デフォルトの名無しさん :2005/06/18(土) 14:27:29
ダイアログボックスにパスワード入力領域を持たせたいのですがどのようにすればわかりません。
どんなコントロールを使用するのでしょうか?

697 名前:デフォルトの名無しさん :2005/06/18(土) 14:36:09
>>696
エディットコントロール

698 名前:デフォルトの名無しさん :2005/06/18(土) 14:37:40
今は普通にエディットコントロールを持たせてるのですが、
入力した文字列を*や黒丸にするようなコントロールはありませんか?

699 名前:デフォルトの名無しさん :2005/06/18(土) 14:40:45
エディットコントロール

700 名前:デフォルトの名無しさん :2005/06/18(土) 14:40:55
>>698
エディットコントロールのプロパティにそうするのがある。

701 名前:デフォルトの名無しさん :2005/06/18(土) 14:42:30
どんなプロパティですか?

702 名前:デフォルトの名無しさん :2005/06/18(土) 14:43:12
ウィンドウスタイルだろ

703 名前:デフォルトの名無しさん :2005/06/18(土) 14:48:27
見つけました、ES_PASSWORDですね

704 名前:デフォルトの名無しさん :2005/06/18(土) 15:11:18
現在ThemeAPIを使ってテキストを描画しようと思っています。
DrawThemeTextを使えばテーマに使用されている効果を使って
描画してくれるようなのですが、そのまま使うとフォントも色もテー
マのものと異なってしまいます。

http://www.microsoft.com/japan/msdn/windows/windowsxp/xptheming.asp
によるとデバイスコンテキストに任意のフォントを追加して呼び出す
ように書いてあったので、GetThemeFontを使いCreateFontIndirect
でフォントを作成、SelectObjectでデバイスコンテキストに割り当てて
みたのですが一向に変化する様子がありません。

たとえばLunaのキャプション文字列はMSUIゴシックに白文字、ボールド
ですが、これと同じようにテキストを描画するには上記の方法で間違って
いるのでしょうか。

よろしくお願いします。

705 名前:デフォルトの名無しさん :2005/06/18(土) 17:10:32
Macアドレス取れねぇ!と思ったらLANケーブルが抜けていた。
NetBiosだめじゃーん。

いや、ただの雑談です。

706 名前:デフォルトの名無しさん :2005/06/18(土) 18:18:37
ぬるぽしか返ってこない
LANケーブルがぬけているのだろうか

if ((hResource =
LoadResource(hInst,
FindResource(hInst, TEXT("HAGE"),
MAKEINTRESOURCE(IDR_HANGE100)))) == NULL) {
MessageBox(NULL, TEXT("ぬるぽ"),
TEXT("ぬるぽ"), MB_ICONERROR);
PostQuitMessage(0);
return 0;
}

707 名前:デフォルトの名無しさん :2005/06/18(土) 18:34:03
MacアドレスとLANケーブルは何も関係ないとおもうんだが。
リモートのMacアドレスが欲しいのか?

708 名前:デフォルトの名無しさん :2005/06/18(土) 18:37:23
いや、オレも関係ないと思ってたんだけどね。
ケーブル抜いてPC起動するとNetBios系のAPIが全滅なんだよね。
個体差かなぁ。一応、他のPCでもやってみるか。

GetAdaptersInfo()で代用したからいいんだけど。

709 名前:デフォルトの名無しさん :2005/06/18(土) 18:37:27
自分のだろ。
ネットワークケーブル抜けてたら、自分のそういう情報も取得できないような
話は聞いたことある気がする

710 名前:デフォルトの名無しさん :2005/06/18(土) 18:55:40
ボタンやコンボボックスのような描画はWindowsが処理しますが、
そのような描画をAPIから呼ぶことはできるのでしょうか。

711 名前:デフォルトの名無しさん :2005/06/18(土) 18:58:45
ボタンならDrawFrameControlで描ける

712 名前:デフォルトの名無しさん :2005/06/18(土) 19:08:29
>>711はクラシックスタイル。
ビジュアルスタイルを使うには>>704

713 名前:681 :2005/06/18(土) 19:53:04
原因がわかりました。

リバーを作ると通常はクライアント領域がリバーの下側にオフセットされますが、
何故か知りませんが、リバーを作ってもクライアント領域がリバーの下側に移らず、
リバーとクライアント領域が被さった状態なのでちらつくといったものだと思います。

ただ、なぜリバーを作ってもクライアント領域の範囲が変わらないのか?
もう少し調べてみたいと思います。

714 名前:681 :2005/06/18(土) 20:34:54
リバーの部分はWM_PAINTで計算して、その部分は描画しないようにしないといけないんですね。。。

715 名前:デフォルトの名無しさん :2005/06/18(土) 20:44:10
WS_CLIPCHILDRENを付ければいいだけだったりして

716 名前:デフォルトの名無しさん :2005/06/18(土) 21:06:07
>>713
え?
レバー(ツールバーやステータスバーも)つけたときは自分でクライアント領域再計算だろ。普通。
それをやって無かったってこと?

717 名前:デフォルトの名無しさん :2005/06/18(土) 21:12:24
レバーとリバーどっちやねん

718 名前:デフォルトの名無しさん :2005/06/18(土) 21:17:56
プログラム実行時に特定のAPIが実行環境において
サポートされているか、調べる方法ってあるんでしょうか?

あと、サポートされていないAPIを呼び出した場合は、
例外が生成されるんですか?

719 名前:デフォルトの名無しさん :2005/06/18(土) 21:26:30
>>717
レバーは猫書いた奴の間違いとそれを鵜呑みにしたヴァカ

720 名前:681 :2005/06/18(土) 21:31:52
どうもうまくいきませんね
ウィンドウスタイルの設定が繊細すぎる

721 名前:デフォルトの名無しさん :2005/06/18(土) 21:33:00
>>718
1. LoadLibraryに失敗→その関数をエクスポートしているDLL自体ない
2. GetProcAddressに失敗→関数がエクスポートされていない
3. 呼び出してみたらERROR_CALL_NOT_IMPLEMENTEDで失敗→実装されていない
/DELAYLOAD付きでリンクすると1.と2.は省略できる。その場合関数がない環境で
呼び出そうとすると例外が発生する

722 名前:718 :2005/06/18(土) 21:37:58
>>721
ありがとうございます。

723 名前:704 :2005/06/18(土) 21:42:09
ThemeAPI関連やってる人ってもしかして(しなくても)少ない?
それとも場違いな質問しちゃったんだろうか…(汗

724 名前:デフォルトの名無しさん :2005/06/18(土) 23:29:14
>>723 なんだテメー新手の煽りかコラ
手っ取り早く部分的にどのタイミングで描いてるかソース晒せ

725 名前:704 :2005/06/18(土) 23:37:10
煽りじゃないです、そうとられたならすいません。
WM_CREATEでテーマハンドルを
HTHEME hTheme = OpenThemeData(hWnd, "Window");
にて取得しておき(エラーチェック諸々は済んでいます)
WM_PAINTにて
PAINTSTRUCT paint;
HDC hDC = BeginPaint(hWnd, &paint);
RECT rect;
GetClientRect(hWnd, &rect);
DrawThemeText(hTheme, WP_CAPTION, CS_ACTIVE,
          L"test", -1,
          DT_CENTER | DT_VCENTER | DT_SiNGLELINE, NULL,
          &rect);
EndPaint(hWnd, &paint);

というこれだけのプログラムです。

http://www.ascii.co.jp/pb/msdn/article/f21_0041.html#fig0007
に記載されているMSDNマガジンのサンプルコードと大差ないと
思っていますが…。

726 名前:704 :2005/06/18(土) 23:39:38
すいません、DrawThemeTextにhDC入れ忘れました。
正しくは
DrawThemeText(hTheme, hDC, WP_CAPTION, CS_ACTIVE,
          L"test", -1,
          DT_CENTER | DT_VCENTER | DT_SiNGLELINE, NULL,
          &rect);
です。

ぐぐってみたところ
ttp://www.mtakahashi.com/old/06975.html#06964 (たぶん同じ問題っぽい。解決策提示されていない。)
ttp://members.jcom.home.ne.jp/1213687801/cs/windowsforms/theme.html (テキスト描画がおかしい記述あり)
とか日本語資料ではこの辺りを見つけることが出来ました。

727 名前:704 :2005/06/19(日) 03:33:02
続けて試行錯誤してみたところ
GetThemeFontでLOGFONTを取得し、CreateFontIndirectでフォント
ハンドルを取得、SelectObjectでHDCにフォントハンドルを割り当てて
からDrawThemeTextを実行するとフォントはそれらしくなりました。
(以前は自分のコーディングミスでした)

が、やはり色は黒いままで、
ttp://www.tech-archive.net/Archive/Development/microsoft.public.win32.programmer.gdi/2004-08/0324.html
と同じような状態です。
SetTextColorでデバイスコンテキストにRGB(255,255,255)を指定しても
白くならないということはSetTextColorはDrawThemeTextに影響を及ぼ
さないって事だし…。

728 名前:デフォルトの名無しさん :2005/06/19(日) 07:12:49
CS_SAVEBITS を指定してpoppメニューには効いているんだけど、ダイアログには効かないで
毎回再描画してしまうんですが。。。。

ダイアログの生成方法に何か指定があるのでしょうか?
モーダル、モーダレス どっちも効かないんですけど。。。


729 名前:デフォルトの名無しさん :2005/06/19(日) 07:14:11
そんなに再描画サボりたいならレイヤードウィンドウにしろ

730 名前:デフォルトの名無しさん :2005/06/19(日) 11:56:07
>>728
たしかCS_SAVEBITSはポップアップウィンドウのみ。

731 名前:デフォルトの名無しさん :2005/06/19(日) 13:59:53
おしえてください

ディスプレイキャプチャしたいのですが
GetDC,CreadDC("Display"
では、IMEバー、ポップアップのレイヤー等を
拾ってくれません。
なにかよい方法はあるのでしょうか?


732 名前:デフォルトの名無しさん :2005/06/19(日) 15:36:18
画面にあるものはのGetDC(NULL), CreateDC("DISPLAY"...で捕れます。
(動画とマウスカーソル以外)
キャプチャー操作の瞬間に消えてるような。
ためしにタイマーとかで捕ってみては?

733 名前:デフォルトの名無しさん :2005/06/19(日) 15:45:05
      _______________
      | _____________  |
      | |:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::| |
      | |:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::| |  ザー
      | |:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::| |
      | |::::::::::::::::::::::::::::::::::::;;;;;;;;;;;::::::::::::::| |
      | |:::::::::::/ ̄ ̄ ̄`´    `ヽ:::::::| |
      | |::::::::::|  :ill||||||||||ll: ,-‐‐、l::::::| |
      |  ̄ ̄|  ||||||||||||||||「しi .l ll ̄  .|
      | ̄「 ̄|  |||||||||||||||||i ̄川リ ̄| ̄|
      |_| ノ   ||||||||||||||||||     |_|
        /    ||||||||||||||||||
        /    /||||||||||||||||||
       / ̄/ ̄ |||||||||||||||||
       /  /    |l|l|l|l|l|l|l|l
     / /    |l|l|l|l|l|l|ll
    / ヘJ      l|l|l|l|l|l|l
    ノ川        ||l||l||ll

【呪いのコピペ】
このレスを見た人は1週間以内に他のスレへコピペしてください。
そうしないと突然ディスプレイからうわなんだおまえやめ

734 名前:デフォルトの名無しさん :2005/06/19(日) 16:17:08
>>730

ダイアログも最初に出た位置のママ閉じると WM_PAINT は来ないで
勝手に戻ってくれるのですが。。ダイアログを移動すると WM_PAINT が来てしまいます。
ダイアログが出た1回目だけっていう仕様なのでしょうか?

CS_SAVEBITS 自体Win 3.1 の頃の仕様で、今時の Windows では画面上の動きが違うので
移動したらもうダメなのかな?

735 名前:734 :2005/06/19(日) 16:25:40
>>729

http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/jpdnwui/htm/layer.asp

便利ですね! ありがとうございます。

今時 95,98,Me な人はいないですよね(笑) 2000,XP 対応で十分!!

736 名前:デフォルトの名無しさん :2005/06/19(日) 21:10:38
すいません。
win32APIでブロック崩しをつくる為に不可欠な関数を教えてください。

737 名前:デフォルトの名無しさん :2005/06/19(日) 21:10:44
>>731
IMEを半透明化していませんか?
だったらCAPTUREBLT

738 名前:デフォルトの名無しさん :2005/06/19(日) 21:17:12
>>736
コンソールプログラムにすればコンソールAPIが要るし、
ウィンドウに出力するのならGDIかGDI+、もちろん基本的なウィンドウの作成もできる必要がある。
それぞれさらにさまざまなアプローチがあるのでブロック崩しには〜が絶対に必要と言えるようなものはない。

739 名前:デフォルトの名無しさん :2005/06/19(日) 21:27:58
704がスルーされまくっててワロスwww
まあ俺もわからないわけだがな。

740 名前:デフォルトの名無しさん :2005/06/19(日) 21:47:54
>>704 が放置されてるのは >>705 の発言のせいだっぺ。


741 名前:705 :2005/06/19(日) 22:19:12
>>740=704

ごめんよ、でもその質問の仕方じゃレスつかないと思うよ。

742 名前:デフォルトの名無しさん :2005/06/19(日) 22:20:19
失せろバカ

743 名前:デフォルトの名無しさん :2005/06/19(日) 22:26:33
俺も昔サンプルコード動かしたがうまくいかなかったので
力になってやりたいが無理なんだよな。
誰かわかるやつ助けてやってくれ。

744 名前:デフォルトの名無しさん :2005/06/19(日) 22:35:27
おまえら自演もたいがいにしろよ

745 名前:デフォルトの名無しさん :2005/06/19(日) 22:51:56
体内ならいいんですか?

746 名前:デフォルトの名無しさん :2005/06/19(日) 23:12:59
SystemParametersInfoで取得できるフォントはテーマと関係ないのか?
よくわからんが言ってみただけ

747 名前:デフォルトの名無しさん :2005/06/20(月) 01:23:37
GetSystemParametersInfoFont
GetSystemParametersInfoThema

748 名前:736 :2005/06/20(月) 10:59:59
基本的なウインドウ作製はできたので、次は玉を作りたいんですけど

例えば 
@ SetPixelV関数で打った点を 玉に見立てる
@´玉の絵を書いたビットマップを使う

だったら、この後の処理はどうなるでしょうか?

この経路で作ったとしたら、どんな関数が挙げられますか?

手元には、猫でもわかるwindowsプログラミングとmsdnライブラリがあります

749 名前:デフォルトの名無しさん :2005/06/20(月) 11:12:06
>>748
板違い

ゲ製作技術
http://pc8.2ch.net/gamedev/

てか、つまづく度に聞くという姿勢は改めたほうがヨサゲ

750 名前:デフォルトの名無しさん :2005/06/20(月) 11:37:22
>>749
別につまづいてないと思うけど

まぁ自分が苦労と時間費やして調べたことをワンレスで解決されたら
おもしろくないわなw


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