■過去ログ置き場に戻る■
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.