Win32API質問箱 Build ..
39:38
08/06/09 22:19:08
ウィンドウを最小化時と元に戻すときにアニメーションさせようと
上記のように元に戻すときのアニメーション書いたんですがうまくいきません。
原因が分かる方教えてください
40:デフォルトの名無しさん
08/06/09 22:40:42
オードーナロー
41:デフォルトの名無しさん
08/06/09 22:48:43
>>39
うまくいかない、じゃなくて具体的な現象を書けよ。
原因究明の重要な情報なんだからさ。
42:38
08/06/09 22:59:19
>>41
説明足がたらず、すみません。
最小化時はウィンドウのアニメーションが実行されるんですが、
元に戻すときにAnimateWindowが失敗してアニメーションが実行されないんです。
GetLastErrorでエラーをチェックすると正常終了のIDがセットされているので原因がよく分からないのです。
ちなみにCONSOLEMSGはOutputDebugStringのマクロです。
43:デフォルトの名無しさん
08/06/09 23:00:57
LVS_REPORTなリストビューで、カラムの文字列の左右のマージンを知りたいのですが、
どのように計算すればいいのでしょうか?
44:デフォルトの名無しさん
08/06/09 23:12:39
>>43
以下の関数を使う。
int ListView_GetColumnMargin(HWND hwnd) { return 4; }
ListView_GetColumnMargin はおおよそのマージンを返します。
45:デフォルトの名無しさん
08/06/09 23:45:33
>>44
これはひどい
46:デフォルトの名無しさん
08/06/09 23:49:56
ワロタ
47:44
08/06/10 00:18:38
すまん間違えた。
int ListView_GetColumnMargin(HWND hwnd) { return 6; }
>>45-46
一応マジレスなんだが。
正確には GetSystemMetrics(SM_CXEDGE) * 3 らしいが。
48:デフォルトの名無しさん
08/06/10 00:26:55
こいよ、ベネット
49:デフォルトの名無しさん
08/06/10 00:32:17
こいよ、ベネット
50:デフォルトの名無しさん
08/06/10 00:44:55
>>42
AW_ACTIVATEは非表示状態から表示させるもので、Restoreさせるものではないから。
51:38
08/06/10 01:37:26
>>50
なるほど!
ということは、Restoreさせた後にウィンドウのアニメーションをさせたい場合は、
独自メッセージを飛ばす必要があるのでしょうか?
それともRestoreされたことを通知するメッセージがあるのでしょうか?
WM_ACTIVEをキャッチすることも考えたんですが、
Restoreされたときだけを抜き出す方法が思いつかなかったのでアドバイスお願いします。
また、アニメーションさせるとき1度SW_HIDEで非表示にしてAW_ACTIVATEで表示させるという流れでいいのでしょうか
52:デフォルトの名無しさん
08/06/10 03:43:33
少しは自分で調べろ
53:デフォルトの名無しさん
08/06/10 06:09:59
>>47
間違っています。
以上。
はい次の方。
54:デフォルトの名無しさん
08/06/10 08:00:26
>>53
間違ってないよ
知らないならレスしないでね
55:デフォルトの名無しさん
08/06/10 08:03:19
Win32APIによるファイルの入出力を実装しています.
入出力自体はできた(と思う)のですが,最後の
CloseHandle(hFile); の戻り値を HRESULT result としてデバッガで
追いかけてみると, 正常終了したはずなのに S_FALSE が返ってきます.
下記のサイトのサンプルでも試してみたのですが,同じでした.
同様の問題をご存知の方がいらっしゃいましたら教えて下さい.
URLリンク(wisdom.sakura.ne.jp)
56:デフォルトの名無しさん
08/06/10 08:05:40
CloseHandleの戻り値の型はBOOL。
0が偽(失敗)で、それ以外の値は真(成功)。
ちなみにS_FALSEの値ははたしか1のはず。
57:55
08/06/10 08:40:38
>> 56
すみません.
調べてみたらその通りでした.
CloseHandle() で F1 押して
CBlobCache::CloseHandle
の説明を見てました.
それにしても, 戻り値の 1, 0, -1
の区別は統一性が無いですね.
(自分が知らないだけで良い覚え方とかあるのかな.)
素早い返信ありがとうございました.
さすが2ch.
58:デフォルトの名無しさん
08/06/10 09:08:46
Win32APIは統一性の無さがウリ
59:デフォルトの名無しさん
08/06/10 09:58:59
HRESULTはCOMまわり
60:デフォルトの名無しさん
08/06/10 10:05:17
>>56
それ、せめてMSDNには "戻り値はTRUE, FALSE" って書いてほしい
戻り値がnonzeroとか書かれると、if文で戻り値を判定するときにそういう条件文を書くべきなのか迷う
61:デフォルトの名無しさん
08/06/10 10:13:43
いや、最初からC/C++のifその他の判定は0か非0かだろ
62:デフォルトの名無しさん
08/06/10 10:24:00
if (Hoge() == TRUE)
なんてやってる人のコードは信用できないよな
63:デフォルトの名無しさん
08/06/10 10:40:28
BOOLでTRUE/FALSE以外を返す関数の方が信用できない
どういう設計なんだよ
64:デフォルトの名無しさん
08/06/10 10:48:10
おっとGetMessageの悪口はそこまでだ
65:デフォルトの名無しさん
08/06/10 10:54:53
所詮はDWORDさ。
66:60
08/06/10 11:28:06
>>62
そういうコードを書きたくないから言ってるんだよ…
BOOLを戻すと宣言してあるなら、それ以上の判定は必要ないのはわかるよ。実際書かないし。
nonzero(数値)を戻すなら、せめて "ブール値の真として..." くらい書いてくれないかなってこと
CのAPIである以上、数値のnonzeroとブール値の真は同じだからどっちが書いてあっても気にするなってことなのかな
67:デフォルトの名無しさん
08/06/10 11:44:39
Cの特徴だしな
68:デフォルトの名無しさん
08/06/10 11:57:25
>CのAPIである以上、数値のnonzeroとブール値の真は同じだからどっちが書いてあっても気にするなってことなのかな
間違いだらけだ。
69:60
08/06/10 12:13:01
>>68
マジか
規格の少なくともifやwhileの項にはブール値なんて存在しないとかそういうこと?
70:デフォルトの名無しさん
08/06/10 12:45:31
C++ならboolがあるが、C99でないCにブール値なんて概念自体存在してるのか?
71:デフォルトの名無しさん
08/06/10 13:00:18
>>70
ブール値の概念は存在しているが規格には書かれていない ってところかな
72:デフォルトの名無しさん
08/06/10 15:45:32
初歩的な質問なのですが、CreateWindowExでボタンを作りました。
そのボタンにアクセラレータ?(SHIFT+'A')をつけたいのですが、
CreateWindowExで作成したボタンにアクセラレータをつけるにはどうすればいいのでしょうか?
環境はVC+SDKです。よろしくお願いします
73:デフォルトの名無しさん
08/06/10 15:49:07
>>72
CreateAcceleratorTable
74:72
08/06/10 17:07:40
>>73
レスありがとうございます。
CreateAcceleratorTableで作った場合、
ボタンアクションがありません ><。
75:デフォルトの名無しさん
08/06/10 17:16:00
BM_CLICKでも投げとけ
76:デフォルトの名無しさん
08/06/10 17:18:48
>>74
まさかとは思うが、「ボタン(A)」(Alt+A)のことじゃないだろうな?
こっちはボタンのキャプションを「ボタン(&A)」にすれば勝手に機能するぞ。
77:デフォルトの名無しさん
08/06/10 17:23:27
アクセラレータは発動したときにあくまでWM_COMMANDを発行するものであって、
ボタンのクリックをシミュレートするものではない。
78:デフォルトの名無しさん
08/06/10 17:34:29
>>66
Win95で適当に試した結果
EnableWindow(hwnd, TRUE) で成功するとTRUEではなく 8 が返ってくる。
EnableWindow(hwnd, 0x10000) は失敗する。(下位16ビットしか見ていないらしい)
GetWindowRect(hwnd, &rect) で成功するとTRUEではなく 500 〜 599 が返ってくる。
ShowWindow(hwnd, SW_SHOW) で直前に表示されているとTRUEではなく 16 が返ってくる。
こういう謎な仕様は9x系で終わっていてほしい。
とりあえず上のAPIはNTでは大丈夫っぽいが。
79:デフォルトの名無しさん
08/06/10 17:35:43
76が正解の予感
80:デフォルトの名無しさん
08/06/10 17:37:41
TranslateAcceleratorしてないだけだろ
81:デフォルトの名無しさん
08/06/10 17:45:39
>>78
APIのリファレンスに、引数はTRUE/FALSEを指定するとある。
zero/nonzeroとは書いてない。
戻り値は、zero/nonzeroと書いてある。
TRUE/FALSEを返すなんて書いてない。
説明は正しい。
82:デフォルトの名無しさん
08/06/10 17:54:05
>>81
>>78は、仕様がおかしいって言いたいんだろ?
83:デフォルトの名無しさん
08/06/10 17:58:44
>>81
説明の正しさ、じゃなくてBOOLなのにTRUE/FALSE以外を返すなということ。
GetMessageのように意味があってTRUE/FALSE以外を返すわけでも無さそうだし。
84:デフォルトの名無しさん
08/06/10 18:27:39
Win16のときの、1バイトでも節約、て状況のせいなのかもな。
そして互換性のためにうっかり変えられない、と。
85:デフォルトの名無しさん
08/06/10 18:30:17
8や500を返すのが互換性ってのもおかしな話だなぁ
86:デフォルトの名無しさん
08/06/10 18:33:22
if(GetOpenFileName(&ofn) == IDOK) { 〜 } とか書いてたら正常動作していたので間違いに気付かなかった事ならある
87:72
08/06/10 18:37:18
>>75-77 >>79-80
レスありがとうございます
>>77 が僕が今詰まってる問題に一番近いっぽいです ><。
アクセラレータは動いてるのですが、ボタンシミュレートが問題です。
88:デフォルトの名無しさん
08/06/10 18:38:51
だからSendMessage(hButton,BM_CLICK,0,0)でいいだろうが
89:72
08/06/10 18:52:00
>>88
おおっ
ボタンシミュレートできました
>>88さん、どうもです。感謝ですー ><。
90:デフォルトの名無しさん
08/06/10 19:48:36
人の話を聞かない性格の典型的パターンだな
91:デフォルトの名無しさん
08/06/10 23:50:18
>>83
実装効率を考えると真の際 TRUE 以外の値を返した方がいい場合もある。
TRUE しか返さない、としてしまうと、その効率のいい実装が取れなくなってしまう。
例えば is 系関数の戻り値を戻り値にしたい場合とか。
is 系関数はメモリ効率のため全ての関数で1つのテーブルを共有し、
ビット演算を使ってそれぞれの関数の戻り値を決めるよう実装されている場合がある。
int isalpha(int letter) { return table[letter] & 1; }
int isdigit(int letter) { return table[letter] & 2; }
int isalnum(int letter) { return table[letter] & 3; }
みたいな感じで。
こういう関数を戻り値に直接指定したい場合とか、0/1 にならないことがある。
そして、果たして BOOL の戻り値を作成する際に使った関数が
全て真偽を 0/1 で返すと確かめることはできるだろうか?
もしかしたら急に仕様が変えられるかもしれない。
それを考えて常に isalpha(ch) ? TRUE : FALSE のように書く事はできるかもしれないけど、
無駄も多いし書き忘れるミスを犯す事もあるだろう。
結局、bool 型のように true/false の2値性を保証する型で typedef されていない以上、
BOOL は 0/1 の2値性を保証しない方が安全ということになる。
TRUE や FALSE は真偽値を与える箇所で
条件式を書く事無くダイレクトに真か偽かを指定するために使う物であって、
比較に使う物ではない。
そもそも真偽値をさらに比較するという発想自体が
二度手間の無駄な発想としか言いようが無い。
92:デフォルトの名無しさん
08/06/10 23:53:36
C言語なんだから0/1じゃなくて
0/非0で考えろ
93:デフォルトの名無しさん
08/06/11 00:28:41
C言語で考えるとむしろ0/1じゃね?
比較とかの評価結果は0/1で返すと決まってるし。
どちらかというと、アセンブラレベルの話だな。
BOOLを0/1へ変換するなら !!value で一応はできるな。
見た目が宜しくないのでお勧めはしないけど。
94:デフォルトの名無しさん
08/06/11 00:31:39
HTMLを解析したいのでIHTMLDocument2を使おうと思っています
CComPtr<IHTMLDocument2> aDoc;
aDoc.CoCreateinstance(CLSID_HTMLDOCUMENT);
aDoc->put_URL(CComBSTR("URLリンク(~)")); //URLの読み込み(のつもり)
aDoc->get_images()
この put_URL を使うとブラウザで引数のURLを開いてしまい、また、get_imagesで取得したイメージコレクションのサイズが0になっています。
まず、「ブラウザを開かないでHTMLを解析したい」のと、「get_images で取得できていない」理由がよく解りません。
コマンドラインから使うツールのつもりなのでCUIの方がうれしいのですが、ダイアログかなにかで表示させる必要があるのでしょうか?
#イメージとしてはURLを引数で渡すとそのページのIMG src="***" を抽出するプログラムです。
95:デフォルトの名無しさん
08/06/11 00:38:26
>>93
条件式は 0/1 を返すが、
if 文や while 文などの中身は 0/非0 で判定するから
C で考えるなら 0/非0 だな。
96:デフォルトの名無しさん
08/06/11 00:50:47
>比較とかの評価結果は0/1で返すと決まってるし。
処理系依存
97:デフォルトの名無しさん
08/06/11 00:52:54
↑馬鹿
98:デフォルトの名無しさん
08/06/11 02:58:43
はあぁ?
99:デフォルトの名無しさん
08/06/11 03:00:22
妄想は日記の中でしてね。
100:デフォルトの名無しさん
08/06/11 08:44:32
馬鹿かお前
Win32なんて基本的に妄想が中心だろ
MSDNに載ってないような事をしたければ妄想するしかないし
101:デフォルトの名無しさん
08/06/11 08:45:32
↑馬鹿
102:デフォルトの名無しさん
08/06/11 09:56:18
↑阿呆
103:デフォルトの名無しさん
08/06/11 10:03:46
↑馬鹿
104:デフォルトの名無しさん
08/06/11 10:07:05
↑阿呆
105:デフォルトの名無しさん
08/06/11 10:08:20
↑馬鹿
106:デフォルトの名無しさん
08/06/11 10:08:55
↑ば、馬鹿じゃないのっ
107:デフォルトの名無しさん
08/06/11 10:10:01
↑阿呆
108:デフォルトの名無しさん
08/06/11 10:21:25
↑あ、阿呆じゃないのっ
109:デフォルトの名無しさん
08/06/11 10:25:26
↑馬鹿
110:デフォルトの名無しさん
08/06/11 10:26:12
↑ば、馬鹿じゃないのっ
111:デフォルトの名無しさん
08/06/11 10:33:12
訳:かまってほしいな
112:デフォルトの名無しさん
08/06/11 10:36:37
かまってほしくない人はレスしないでください
113:デフォルトの名無しさん
08/06/11 10:39:16
>>94
IHTMLDocument2 を使うことが絶対条件なの?
114:デフォルトの名無しさん
08/06/11 12:32:55
必要条件
115:デフォルトの名無しさん
08/06/11 12:36:22
BOOLを返すAP(Iは必ず
bool Successed = Hoge(...) != 0;
としてる。
116:デフォルトの名無しさん
08/06/11 12:40:17
だから?
117:60
08/06/11 12:57:43
ちょっとした愚痴のつもりだったんだが…
いまさらMSDN書き替えられても困るし
で、結局>>68の指摘してる間違いってなんなんだ?
すごく気になるんだけど
118:デフォルトの名無しさん
08/06/11 13:06:50
単なるかまって厨でFA
119:デフォルトの名無しさん
08/06/11 13:13:40
URLリンク(www.open-std.org)
120:デフォルトの名無しさん
08/06/11 14:21:09
>>68の指摘は分からんが、CのAPIではないなw
API自体は言語関係ないからね。
そう考えると、Cの文法や流儀を元に議論するのはナンセンスかもしれん。
121:デフォルトの名無しさん
08/06/11 14:31:32
馬鹿だなあ
文字列がナルターミネートな時点でC前提だろ
122:デフォルトの名無しさん
08/06/11 14:35:03
↑馬鹿
123:デフォルトの名無しさん
08/06/11 14:54:48
↑阿呆
124:デフォルトの名無しさん
08/06/11 14:58:36
呼び出し規約そのものは、cdeclとpascalの中間だけど
まあC用だな、他の言語はそれにあわせてるだけ。
125:デフォルトの名無しさん
08/06/11 15:05:18
そもそもwin32API自体がCで書かれているのだからC前提で当然
そんな事もわからない素人が増えちゃったんだね・・・
126:デフォルトの名無しさん
08/06/11 15:17:41
↑馬鹿
127:デフォルトの名無しさん
08/06/11 15:19:19
↑阿呆
128:デフォルトの名無しさん
08/06/11 15:20:51
↑馬鹿
129:デフォルトの名無しさん
08/06/11 15:21:36
馬鹿も阿呆も漏れだけでいい
130:デフォルトの名無しさん
08/06/11 15:29:14
↓馬鹿
131:デフォルトの名無しさん
08/06/11 15:29:52
え?おれも?
132:デフォルトの名無しさん
08/06/11 15:41:59
まとめ:かまってほしいな
133:デフォルトの名無しさん
08/06/11 15:53:55
(・ω・` )ヾ(・ω・* )ネェネェ カマッテヨ
134:デフォルトの名無しさん
08/06/11 16:34:53
「↑馬鹿」と「↑阿呆」はそれぞれ同一人物による書き込み
つまり荒らしは2名
135:デフォルトの名無しさん
08/06/11 16:51:30
↑はずれ
136:デフォルトの名無しさん
08/06/11 17:02:54
1人だったのか
137:デフォルトの名無しさん
08/06/11 17:06:37
↑はずれ
138:デフォルトの名無しさん
08/06/11 17:15:14
答え:多重人格(一人)
139:デフォルトの名無しさん
08/06/11 17:23:45
↑はずれ
140:デフォルトの名無しさん
08/06/11 17:43:15
現在の稼動状況
人格1: >>135
人格2: >>137
人格3: >>139
人格4〜16: Idle
最大16人格まで拡張可能
それぞれの人格は並列動作
(例えば人格1から人格2〜16のレスを見ても同一人物であるという認識は本人には無い)
記憶装置(脳)は16人格で共有されるため、正常な人間に比べて人格それぞれの知識は16分の1
141:デフォルトの名無しさん
08/06/11 17:54:06
>>140みたいな事を平気で書き込めちゃう奴って本気で近づきたくない
142:デフォルトの名無しさん
08/06/11 17:57:37
↑馬鹿
143:デフォルトの名無しさん
08/06/11 18:01:29
↑阿呆
144:デフォルトの名無しさん
08/06/11 18:06:05
ビリーミリガンよりは少ないな
145:デフォルトの名無しさん
08/06/11 18:20:27
かまってほしいな
146:デフォルトの名無しさん
08/06/11 18:43:19
(・ω・` )ヾ(・ω・* )ネェネェ カマッテヨ
147:94
08/06/11 18:45:28
>>113
> >>94
> IHTMLDocument2 を使うことが絶対条件なの?
いえ、HTMLの解析が簡単にできればIHTMLDocument2でなくても問題ないです。
MSDNの中を探してたらそれらしいメソッドがIHTMLDocument2に見つかったので使っている所です。
ブラウザを開かないのはIHTMLDocument4::CreateDocumentFromURLを使えばいいのかなぁ
148:デフォルトの名無しさん
08/06/12 00:36:01
>>147
もし、htmlソースが文字列として得られるのなら、
・空のドキュメントにhtmlをwriteしてDOMを作ったことはあるなあ。
・普通に文字列処理で何とかするのも手。
・TidyとかでXHTMLにしてXMLパーサに読ませるとか。
URLがあるんなら、そういう時のためのいいやり方が別にあるような気はするけど。
あと、こっちのスレの方が詳しいかもしれない。
IEコンポーネントを使い倒すスレ Ver.2
スレリンク(tech板)
149:デフォルトの名無しさん
08/06/12 02:24:06
>>147
用途が分からないから判断が難しいけど、
IHTMLDocument2だとブラウザは開くねぇ。隠したとしても音が残る。
XMLパーサーだと規約に沿ってないとエラーになる。
簡単なのはWinInetを使って、正規表現を使って解析することかなぁ。
150:デフォルトの名無しさん
08/06/12 03:14:42
>>149
APIフックして音を消せば?ってのがこのスレ的な回答かな
151:デフォルトの名無しさん
08/06/12 07:03:47
全角半角キーをスイッチのように使いたいのですが
押しても全角モードに切り替わらない良い方法はありませんか
152:デフォルトの名無しさん
08/06/12 12:21:13
フック
153:デフォルトの名無しさん
08/06/12 14:41:05
>>152
詳しく
154:デフォルトの名無しさん
08/06/12 14:53:39
クック
155:デフォルトの名無しさん
08/06/12 15:06:35
ドゥ
156:デフォルトの名無しさん
08/06/12 15:16:20
訳:かまってほしいな
157:デフォルトの名無しさん
08/06/12 15:20:03
訳:ググレ
158:デフォルトの名無しさん
08/06/12 15:33:13
いちごみるくうめぇ
159:デフォルトの名無しさん
08/06/12 15:45:14
ヾ(@⌒¬⌒@)ノ ウマヒィ
160:デフォルトの名無しさん
08/06/12 16:49:07
社会から自分が必要とされていないのではないかと思っているから荒らす
少しでも反応があれば自分は必要とされているんだと勝手に勘違いして納得する
それがかまってちゃん
こうして俺たちがかまってあげているうちは街中で無差別殺人なんてしないだろうから
人助けの一つだと考えて適当に相手してあげておいた方がいいかもな
161:デフォルトの名無しさん
08/06/12 16:54:19
>>160
こうですか!わかりません><
162:デフォルトの名無しさん
08/06/12 16:55:35
探すのが面倒だから荒らすんですね(>ω<
163:デフォルトの名無しさん
08/06/12 18:52:04
フックについてググってもvbやらdelphiやらc++やらapiやら混在してる割に
ヒット数が意外と少ないんですがとりあえず
SetWindowsHookEx WH_KEYBOARD WM_INITDIALOG
あたりを使う方法でいいのでしょうか?
164:デフォルトの名無しさん
08/06/12 18:53:22
最後は関係ない希ガス
165:デフォルトの名無しさん
08/06/12 19:20:16
>>164
どうもです。そのものずばりの情報はなかなか見つかりませんね。
範囲があまりにも広いのですが絞るとほとんどhitせず・・・もう少し調べてみます
166:デフォルトの名無しさん
08/06/12 21:02:18
動的に追加したリストボックスをDestroyWindow()する時に予めLB_RESETCONTENTする必要はありますか?
167:デフォルトの名無しさん
08/06/12 21:14:24
>>166
deleteする時に予めデストラクタを呼んでおく必要はありますか?
って聞いてるようなモンだぞ
168:デフォルトの名無しさん
08/06/12 21:26:55
>>167
DestroyWindow()するだけで良いのですね。
ありがとうございました。
169:デフォルトの名無しさん
08/06/12 21:52:18
スレ違いのような気もするけど、気にせず教えてください。
kbdacc とか 秀Caps のようなキーリピートの高速化ってどうやって実現してるんでしょうか?
SystemParametersInfo で設定できる値よりずっと速くできるようですが。
170:デフォルトの名無しさん
08/06/12 22:15:27
>>165
自プロセスへのフックは簡単だと思うけど‥‥他プロセスやグローバルフックになると共有メモリとかの処理が必要になってくるけど
171:デフォルトの名無しさん
08/06/12 22:17:16
>>169
気にせず教えてください…?頭わいてんのか?
172:デフォルトの名無しさん
08/06/12 22:29:33
お忙しい中すみませんが、気にせず教えてください。
173:デフォルトの名無しさん
08/06/12 22:33:16
教えを乞う言葉じゃない気がしますが、気にせず教えてください。
174:デフォルトの名無しさん
08/06/12 22:54:35
>>169
ずっと速くできるようですが気にせず設定してください
175:デフォルトの名無しさん
08/06/12 23:12:31
流れがおかしいようですが気にせず質問してください
176:デフォルトの名無しさん
08/06/12 23:15:39
ツールバーの表示位置を変えたいのですが、どのようにすればいいですか?
177:デフォルトの名無しさん
08/06/12 23:21:10
movewindow
178:デフォルトの名無しさん
08/06/13 00:14:46
>>177
レスありがとうございます。
後一つわからないことがありまして、
ツールバーの高さを変えるにはどうすればいいですか?
179:デフォルトの名無しさん
08/06/13 00:15:13
>>177
APIの大文字小文字は区別されます。嘘を書くのをやめましょう。
180:デフォルトの名無しさん
08/06/13 00:16:35
>>178
ボタンを大きくする
181:デフォルトの名無しさん
08/06/13 00:28:58
>>180
ありがとうございます。
御礼に私の集めた女子高生画像10枚ほどぅpしようと思うのですが
182:デフォルトの名無しさん
08/06/13 00:33:42
>>181
早く汁
URLリンク(www.uploda.org)
183:デフォルトの名無しさん
08/06/13 01:00:03
>>181-182
偽者&自作自演乙
184:デフォルトの名無しさん
08/06/13 01:10:32
↑はずれ
185:デフォルトの名無しさん
08/06/13 01:13:02
URLリンク(mbup.net)
URLリンク(mbup.net)
こんな感じのでよいでしょうか?
186:デフォルトの名無しさん
08/06/13 01:36:20
訳:かまってほしいな
187:デフォルトの名無しさん
08/06/13 02:35:45
>>186
かまってほしいです。
実のところMoveWindowでツールバーの移動が出来ませんでした。
188:デフォルトの名無しさん
08/06/13 02:55:07
自プロセスのUIスレッドのIDを取得したいのですが、方法はありますかね?
189:デフォルトの名無しさん
08/06/13 03:12:29
>>188
ググッたらその辺のサンプルは、見つかると思うよ
190:デフォルトの名無しさん
08/06/13 05:09:14
ツールバー移動出来ない……
クローズボタンなんかだと移動出来てるぽいから出来ると思うのですが…
191:デフォルトの名無しさん
08/06/13 10:24:01
Windows Media Playerの埋め込みについて質問させてください。
親ウィンドウ(レイヤードウィンドウ)にメディアプレイヤーを埋め込んでいるのですが、
WS_EX_Layeredで親ウィンドウを生成し、SetLayeredWindowAttributesで透明度を設定すると、
メディアプレイヤーの動画部分が黒く表示されます(再生はされているみたいです)
親ウィンドウを動かしてみると、一瞬だけ動画が表示され、動かすのをやめるとまた消えてしまいます。
これはどういった原因があるでしょうか。
親ウィンドウをレイヤードウィンドウにしなかった場合は、そのまま表示されます。
192:デフォルトの名無しさん
08/06/13 11:24:59
WS_CLIPCHILDRENとかその辺?
193:デフォルトの名無しさん
08/06/13 11:28:43
タブのグレイ表示ってできないんですか?
194:デフォルトの名無しさん
08/06/13 13:57:22
>>190
>>190
>>190
>>190
>>190
>>190
>>190
195:デフォルトの名無しさん
08/06/13 14:12:25
聞きたいのは、何故ツールバーをMoveWindowで移動出来ないのか
です。
196:デフォルトの名無しさん
08/06/13 15:19:53
最近、いろいろなサイトでTEXT("aaa");見たいなの見かけますが
文字型charには代入できなくなったのですか?新しい型?
197:デフォルトの名無しさん
08/06/13 15:21:14
意味不明
198:デフォルトの名無しさん
08/06/13 15:27:26
TEXT("aaa")とか_T("aaa")は、ユニコード対応だったけか?
ググれば、その辺はすぐ見つかるよー
199:デフォルトの名無しさん
08/06/13 15:28:16
最近のVC++はデフォがUnicode版API使うようにマクロ定義さてるんじゃなかったっけ?
2003で止まってるから知らんが。
200:デフォルトの名無しさん
08/06/13 15:39:25
WM_KEYUPでwParamと数値を比較すると警告メッセージがでるのですが
wParamをintでキャストするような方法でいいのでしょうか
201:デフォルトの名無しさん
08/06/13 15:40:25
おk
202:デフォルトの名無しさん
08/06/13 15:41:20
>>201
秒殺レスさんくす
203:デフォルトの名無しさん
08/06/13 16:05:45
>>191
WMPが動画をオーバーレイで表示してるなら、不思議な挙動ではないな。
ビデオオーバーレイは画面上のビデオ表示領域にあるピクセルが特定の色だった場合に、そのピクセルに動画を表示する。
よって半透明にした結果、そのピクセルの色が変わってしまえば動画が表示されなくてもおかしくはない
204:デフォルトの名無しさん
08/06/13 16:20:56
なかなか深い読みだな
205:デフォルトの名無しさん
08/06/13 16:27:34
>>203
アプリの背景色をその色にすると面白い事になるよね
206:デフォルトの名無しさん
08/06/13 16:32:23
自己解決しちゃったぜ!!?
気分がいいので
今から写メを20枚ぅpしてやんよ!!!
207:デフォルトの名無しさん
08/06/13 16:50:01
URLリンク(mbup.net)
URLリンク(mbup.net)
URLリンク(mbup.net)
URLリンク(mbup.net)
URLリンク(mbup.net)
208:デフォルトの名無しさん
08/06/13 16:54:40
基地外が沸いてるな
209:デフォルトの名無しさん
08/06/13 17:53:16
>>191
WMPでオーバーレイを使わない設定にすれば見えなくなることはなくなるけど、透けないしちらつくんだよな。
210:デフォルトの名無しさん
08/06/13 20:52:48
ツールチップをCreateWindowEx()してTOOLINFO構造体のlpszTextにLPSTR_TEXTCALLBACKを指定した後、
case WM_NOTIFY:
switch (((LPNMHDR)lp)->code)
{
case TTN_NEEDTEXT:
LPTOOLTIPTEXT ptt = (LPTOOLTIPTEXT)lp;
lstrcpy(ptt->lpszText, 表示するテキスト);
break;
default:
return FALSE;
}
とすると、数十字程度の場合は正常に動作しますが、300文字等文字数を増やすとデバッグ実行時でもエラーが出ずに突然落ちてしまいます。
原因は何でしょうか。
因みにTTM_UPDATETIPTEXTでは正常に動作しました。
>>196
所謂TCHAR型だから、プロパティでマルチバイトを選択すればchar、Unicodeを選べばwchar_tとコンパイラは解釈する。
211:デフォルトの名無しさん
08/06/13 21:18:19
TTN_NEEDTEXT 通知メッセージを処理する場合は、表示する文字列を次のいずれかの方法で指定します。
szText メンバで指定したバッファにテキストをコピーする。
テキストが入っているバッファのアドレスを lpszText メンバにコピーする。
文字列リソースの識別子を lpszText メンバにコピーし、そのリソースが入っているインスタンスのハンドルを hinst メンバにコピーする。
MSDNくらいちゃんと確認汁
212:デフォルトの名無しさん
08/06/13 21:24:54
>>210
バッファオーバーラン
今時そんなバグを平気で出しちゃうCプログラマは
偉そうにTCHAR型の講釈している場合じゃないよ
213:デフォルトの名無しさん
08/06/13 21:25:28
俺も>>211 が正解な気がする
214:デフォルトの名無しさん
08/06/13 21:31:45
タスクの切り替え(アクティブウィンドウを切り替える)のをエミュレートしたいんですけどどうすればいいですかね?
ある条件を満たしたとき、(タスクバーの)(右)隣のウィンドウに切り替えたいんですけど。
Alt+Tabのキーボードエミュレートだと、直前のやつにしか切り替え不可ですよね・・?
Tabの押す回数をうまく制御すればいいんですかね?
他にもっとスマートな方法ありますか??
あと、上記のような不特定多数のタスクがある状況で動くものと、
特定の(例えばWMPとか、決まったアプリをアクティブにする)をアクティブにするものも知りたいです。
ちなみにC++(VC2008ExpressEdition)です。
ご教授のほどお願いします。
215:デフォルトの名無しさん
08/06/13 21:36:05
>>214
FindWindow
GetWindowThreadProcessId
SetActiveWindow
SetForegroundWindow
216:デフォルトの名無しさん
08/06/13 21:36:28
>>210
80文字分しかないバッファに300文字コピーしたら
バッファオーバーランするに決まってるだろ。
217:デフォルトの名無しさん
08/06/13 22:08:45
(誰が決めたのだろう・・・?)
218:デフォルトの名無しさん
08/06/13 22:09:50
俺
219:デフォルトの名無しさん
08/06/13 22:11:45
そいやXPのPowerToyのAlt+TAB乗っ取りプログラムはWS_EX_TOOLWINDOWとかマスクしてなくてPhotoshopとか起動してるとかなり格好悪いことになるんだよな。
220:デフォルトの名無しさん
08/06/13 22:31:36
>>215
単純明快かつわかりやすい回答、ありがとうございます。
221:デフォルトの名無しさん
08/06/13 22:34:57
どういたしまして
222:デフォルトの名無しさん
08/06/13 22:39:30
>>221
騙りウザイ
223:デフォルトの名無しさん
08/06/13 22:40:53
>>192
>>203
>>209
埋め込んだメディアプレイヤーを透明にするということは難しいということですね。。
別の方向で検討します。
レスありがとうございました。
224:デフォルトの名無しさん
08/06/13 22:45:30
どういたしまして
225:214
08/06/13 22:48:41
すいません、また質問させてください。
>>215でプロセスIDを習得する意味は何でしょうか?
226:デフォルトの名無しさん
08/06/13 22:49:29
習得?
227:デフォルトの名無しさん
08/06/13 22:54:07
取得、です。
228:デフォルトの名無しさん
08/06/13 22:55:29
同じプロセスで動いてるやつを飛ばすとか?
229:デフォルトの名無しさん
08/06/13 23:10:01
>>225
> 例えばWMPとか、決まったアプリをアクティブにする
とあったので、特定のアプリをアクティブにするならプロセスIDから逆引きすればいいよってこと。
230:デフォルトの名無しさん
08/06/13 23:43:22
GDIのPolygon関数は、与えられた引数によっては交差した図形を描くのですが、
どんな引数を与えられても交差しない図形を描くことは出来ないのでしょうか。
231:デフォルトの名無しさん
08/06/13 23:56:05
>>230
交差しない順で自分で頂点を並べればいいだろう。
ちょっと考えれば、順不同で与えられた頂点から、辺が交差しない図形は
一意で求まらないことくらい分かりそうなもんだが。
232:デフォルトの名無しさん
08/06/13 23:56:42
そんなAPIがあることを初めて知った。。。
質問の意味はよくわからんが、細かく制御したいなら自分でやれば。
233:デフォルトの名無しさん
08/06/14 00:10:18
分からないならレスしないでください
234:デフォルトの名無しさん
08/06/14 00:22:14
>>191のやつをVista DWM有効下で動かすとどうなるんだろうと気になった。
235:デフォルトの名無しさん
08/06/14 00:29:56
オーバーレイは使えないが、動画は表示され、ちらつきも無くなって万々歳と予想
236:デフォルトの名無しさん
08/06/14 00:36:56
それってXPで出力をVMR9にしたのと同じような状況じゃねーの?
237:デフォルトの名無しさん
08/06/14 00:46:13
個人的に、レイヤードウィンドウとDWMの違いがハッキリしないんだけど。
レイヤードウィンドウでもWM_PAINTがほとんど飛んでこなくなるし、DirectXベースっぽいし。
思うに、レイヤードウィンドウがDX7だったのに対してDWMがDX9になっただけな気がする。
もちろん色々と変わってるだろうけど(GDIをソフトレンダラ化とか)、DWMでやってる事って
半分ぐらいはWindows2000で既に実現できていたんじゃないのかなぁ。
238:214
08/06/14 01:21:17
あーできません助けてください!
「今アクティブなウィンドウ(アプリ)の、“タスクバーにおける(右)隣”のウィンドウへアクティブを移す」を実現したいのですが、
要はこれって「タスクバーでいうと隣」のウィンドウのハンドルを取得、それを使ってアクティブにすればいいんですよね?
だけど「タスクバーで隣」っていうのをどう条件設定すればよいのかわからず・・・。タスクバーを右に右に推移(+右端だったら左端に動くように)させたいのですが・・。
なんかヒントください!
239:デフォルトの名無しさん
08/06/14 01:25:08
>>238
タスクバーをフックする
そして次のバージョンのWindowsで死亡
240:デフォルトの名無しさん
08/06/14 08:27:48
fprintf等でUTF-8 LF形式で出力したいのですが、どうしてもできません。
どうかご教授おねがいします
。
FILE* fp;
_tfopen_s( &fp, _T("hoge.txt"), _T("w,ccs=UTF-8"));
fseek(fp, 0, SEEK_SET );
_ftprintf_s( fp, _T("hogehoge"));
_setmode( _fileno( fp ), _O_BINARY );
_ftprintf_s( fp, _T("\n"));
_setmode( _fileno( fp ), _O_TEXT );
_ftprintf_s( fp, _T("あいうえお"));
fclose(fp);
MSDN見る限りではこう作れってかいてあるのですが、どうも_setmodeの挙動がおかしいようで...
241:デフォルトの名無しさん
08/06/14 09:14:00
どうせccs=UTF-8なんてVC++限定なんだから、
自分でメモリ上にUTF-8, LF改行のデータを作って、
ただのバイナリモードで一気に書きこんだらどうかと思う。
というかスレ違い。
242:デフォルトの名無しさん
08/06/14 10:13:39
>>240
_setmode( _fileno( fp ), _O_U8TEXT);
243:デフォルトの名無しさん
08/06/14 10:53:27
リッチエディットの背景に画像を表示したいのですが方法はあるのでしょうか?
ググってみても背景色の変更はあるのですが背景に画像を埋め込む方法は見つかりません。
244:デフォルトの名無しさん
08/06/14 10:57:51
>>243
無理。IEコンポーネントでも使え
245:243
08/06/14 11:01:49
やっぱりそうですか・・・。ありがとうございます。
246:デフォルトの名無しさん
08/06/14 11:24:30
どういたしまして
247:デフォルトの名無しさん
08/06/14 14:21:30
リッチエディットコントロールで右クリックしても
エディットコントロールと違って何も表示されないんだけど
どうすればいいんでしょか
248:デフォルトの名無しさん
08/06/14 14:54:24
>>241
間違えてここに書いちゃいました。
C++相談室で聞いてきます。
>>242
実はこれはいろいろためしてたときのソースがそのまま残ってました。
_setmode( _fileno( fp ), _O_U8TEXT);
もすでに試してたけど、なぜかCRLFになるので、ダメでした。
249:デフォルトの名無しさん
08/06/14 15:10:51
C++相談室もスレ違いだけどな
250:デフォルトの名無しさん
08/06/14 15:20:35
・スレ違いの質問でも丁寧に答えてくれます。
・かまってちゃんの煽りにもきちんとかまってくれます。
をテンプレに追記汁
251:デフォルトの名無しさん
08/06/14 15:45:05
CreateThreadで作成したスレッドがサスペンドになるまで待機するような関数はありませんか。
WaitForInputIdleのスレッド版、のようなモノです。
自前でフラグでも立てて調べ続けるしかないのでしょうか。
252:デフォルトの名無しさん
08/06/14 15:50:57
訳:おしえてほしいな
253:デフォルトの名無しさん
08/06/14 15:55:11
>>251
サスペンドにする設計はよしたほうがいい。
同期オブジェクトを使うべき。
254:デフォルトの名無しさん
08/06/14 16:11:46
自前で Win32API のラッパーライブラリ作って使い回してる人どれくらいいます?
windowsx.h みたいなマクロの集合から本格的なクラスライブラリまで含めて。
255:デフォルトの名無しさん
08/06/14 16:35:10
>>254
自分が使う分はラップしてから使う。
256:デフォルトの名無しさん
08/06/14 16:53:37
そのコードにsetmodeは要らないと思うが。
257:デフォルトの名無しさん
08/06/14 16:58:06
>>254
WTLでいいだろ
258:デフォルトの名無しさん
08/06/14 17:35:31
WTLは糞すぎるんで、
自作の、ATLをラップしたテンプレートクラスライブラリでやってるよ。
259:デフォルトの名無しさん
08/06/14 17:48:36
VCLで間に合ってます
260:デフォルトの名無しさん
08/06/14 18:13:08
>>258
どう糞すぎるの?
261:デフォルトの名無しさん
08/06/14 21:14:18
TCHAR[]な文字列のバイト数はどうやったら求められるのでしょうか
262:デフォルトの名無しさん
08/06/14 21:15:27
あ、lstrlenでいけるっぽいですね。スレ汚しすみません。
263:デフォルトの名無しさん
08/06/14 21:32:21
わかってるかもしれんけど、
「バイト数」は lstrlen(str) * sizeof(TCHAR) じゃないと求まらんよ
264:デフォルトの名無しさん
08/06/14 21:33:36
>>263
おまい、優しいな
265:デフォルトの名無しさん
08/06/14 21:35:55
strlenとlstrlenて何が違うんだ?ずっとstrlen使ってたんだけぢ
266:デフォルトの名無しさん
08/06/14 21:36:19
引数の型が違う
267:デフォルトの名無しさん
08/06/14 21:44:09
やっぱり違いが判らない
lstrlenのLPCTSTRって
strlenのconst char* と同じでしょ?
268:デフォルトの名無しさん
08/06/14 21:45:39
#define UNICODE
269:デフォルトの名無しさん
08/06/14 21:49:57
じゃあ
lstrlen=_tcslenなわけ?
270:デフォルトの名無しさん
08/06/14 21:50:34
>>265
lstrlenはスレ違いじゃないけどstrlenはスレ違い
271:デフォルトの名無しさん
08/06/14 21:54:04
_tcslenもスレ違い
272:デフォルトの名無しさん
08/06/14 21:54:16
>>269
lstrlen (lstrlenA, lstrlenW) は Win32API (ダイナミックリンク)
_tcslen (strlen, wstrlen) は C Runtime (スタティックリンク)
この違い重要な
273:デフォルトの名無しさん
08/06/14 21:56:17
> C Runtime (スタティックリンク)
馬鹿は黙っててね
274:デフォルトの名無しさん
08/06/14 21:58:20
>>272
CRTもダイナミックリンクできるが?
つーか基本的にwsprintfとかlstrlenとかWin16でメモリが厳しくてCRTなんか使ってられるかって時代の遺物なんだから気にするな。使うな。
275:デフォルトの名無しさん
08/06/14 22:06:41
Win32API はスタティックリンクできないが
C Runtime は普通スタティックリンクで使うので間違ってはいない
276:デフォルトの名無しさん
08/06/14 22:09:08
>>275
VC8はダイナミックリンクがデフォ設定になってたなぁ
277:272
08/06/14 22:34:54
>>276
あ、確かにデフォルトで /MD (msvcr80.dll) になってるわ
普段 cl.exe とか nmake.exe とかでやってるから libcmt.lib が当たり前だと思ってた
あと誰もつっこんでくれないけど wstrlen じゃなくて wcslen
また多分 strlen ぐらいならコンパイラがインライン展開してくれると思う
278:デフォルトの名無しさん
08/06/15 00:23:16
msvcrt.dllはKnownDLLsだから、これを使うならCRTもWin32APIみたいな物じゃね
まーそのせいで最近のVC++はmsvcrt.dllが使用できないが
279:デフォルトの名無しさん
08/06/15 01:08:48
リストボックスに横スクロールバーを追加したのですが、項目の文字列の幅を正確に取得出来ないのか全ての文字が表示される所までスクロール出来ません。
GetTextExtentPoint32()は
> デバイスの中には、通常のセル配列に文字を配置しないデバイス(すなわちカーニングを実行するデバイス)もあるため、文字列内の個々の文字のサイズの総計と文字列全体のサイズとが一致しないことがあります。
の解説から等幅しか正しく計算出来ないようですが、プロポーショナルフォントで正しく計算する方法はないのでしょうか。
※これとは別に垂直スクロールバー分のGetSystemMetrics(SM_CXVSCROLL)は足しています。
280:デフォルトの名無しさん
08/06/15 01:18:08
その説明は関係ないだろ
(もし1文字分ずつ別々に測って足してったら正しい結果は出ないよって意味だ)
ちゃんとDCにフォントを選択したか?
281:デフォルトの名無しさん
08/06/15 01:32:32
>>280
誤解を解いてくれてありがとうございます。
> DCにフォントを選択したか
選択したら、未選択の時より短くなってしまいました。
追加したコード
HFONT hFont = CreateFont(-MulDiv(9, GetDeviceCaps(hDC, LOGPIXELSY), 72), 0, 0, 0, 400, 0, 0, 0, DEFAULT_CHARSET, OUT_OUTLINE_PRECIS, CLIP_DEFAULT_PRECIS, ANTIALIASED_QUALITY, VARIABLE_PITCH, L"MS UI Gothic");
SelectObject(hDC, hFont);
:
DeleteObject(hFont);
282:デフォルトの名無しさん
08/06/15 02:50:21
>>281
それはリストボックスと同じフォントか?
というかWM_GETFONTでフォントもらえ
283:デフォルトの名無しさん
08/06/15 11:24:09
>>282
遅レスすみません。
リストボックスのフォント(ダイアログのフォントと同じ)はMS UI Gothic 9ptですが、WM_GETFONTで取得したフォントは何故かArialの12pt(?)になっていました。
更にウィンドウ上の文字もそれに変わって表示が滅茶苦茶に…。
勿論Arialなんて何処にも使用していません。
何処に原因があるのか解らないので一度Win32APIから離れて.NETでGraphicsオブジェクトを作りMeasureString()で幅を取得してHorizontalExtentプロパティに設定したら、こちらは上手くいきました。
結局の所、正しいフォントが選択されていない事が最大の原因でしょうか。
そうだとしたら何故フォントが正しく取得出来ないのでしょうか。
284:デフォルトの名無しさん
08/06/15 13:08:11
>>282
もらえるのはHFONTだが、それがArialだってのはどうやって調べた
(というか調べる必要があった)んだ? DCにハンドル選択するだけなのに。
本当にArialとやらだったら、取得に失敗してシステムフォントが返ってるんだろ。
他のウィンドウのフォントが崩れたのは、
このスレにコード念写できる人はおらんから確かなことは言えんが
おおかたもらったフォントをDeleteObjectでもしたんでないの。
285:デフォルトの名無しさん
08/06/15 13:24:08
> それがArialだってのはどうやって調べた
ウィンドウに表示される文字で判別しました。
> もらったフォントをDeleteObjectでも〜
思い切りしていました…。
削除する事でフォントは正常に戻りましたが、やはり文字列の最後までスクロール出来ません。
文字コードは全てワイド文字で処理していますが、これが関係しているのでしょうか。
286:デフォルトの名無しさん
08/06/15 13:48:23
> ウィンドウに表示される文字
それほど信頼できん調べ方はないだろうがw
フォントリンクとかでぐぐっとけよ
287:デフォルトの名無しさん
08/06/15 13:52:08
>>285
あなたにWin32APIは無理です。
諦めて.NETを使いましょう。いい時代になりましたね。
288:デフォルトの名無しさん
08/06/16 01:30:35
>>285
>ウィンドウに表示される文字で判別しました。
フォント名がほしいなら GetTextFace() とか使ってくれ
とりあえず GetTextExtentPoint32() のリファレンス読み直すとか、
DrawText() に DT_CALCRECT 渡すなどの方法で代用するとか
289:デフォルトの名無しさん
08/06/16 07:54:20
Advanced Windows っていい本ですね
高いけど
290:デフォルトの名無しさん
08/06/16 09:13:10
>>288
情報小出しする奴はスルーしとけ
291:デフォルトの名無しさん
08/06/16 12:13:15
テキストエディタ作りたいんですけど、
どうやって日本語入力するんでしょうか?
292:デフォルトの名無しさん
08/06/16 12:17:26
テキストボックスでも貼っとけ
293:デフォルトの名無しさん
08/06/16 12:27:58
日本人なら日本語ぐらい入力できるだろ
294:デフォルトの名無しさん
08/06/16 12:32:31
URLリンク(msdn.microsoft.com)
295:デフォルトの名無しさん
08/06/16 12:40:26
>>292
すごく・・・
完了しました
296:デフォルトの名無しさん
08/06/16 13:15:54
今時Edit貼っただけのテキストエディタなんて需要ゼロだろ
297:デフォルトの名無しさん
08/06/16 14:25:39
コンソールで作るんだろ?
298:デフォルトの名無しさん
08/06/16 14:29:25
SEDやEDLINのx64コンソール対応版か
299:デフォルトの名無しさん
08/06/16 14:56:54
HTREEITEMのハンドルの比較はどのようにやればいいですか?
次ページ最新レス表示スレッドの検索類似スレ一覧話題のニュースおまかせリスト▼オプションを表示暇つぶし2ch
5243日前に更新/81 KB
担当:undef