Win32API質問箱 Build ..
[2ch|▼Menu]
116:デフォルトの名無しさん
08/05/17 22:59:33
>>113
MSがだいぶ前にそれ作ってるよ

117:デフォルトの名無しさん
08/05/17 23:08:07
>>113
ShowWindow(hwnd, SW_HIDE);

>>115
BlocInput(笑)

118:デフォルトの名無しさん
08/05/17 23:59:20
BlocInputは引数に笑も取れるのか

119:デフォルトの名無しさん
08/05/18 00:04:33
>>109-111
ワロスwwwwwwwwwwwwwwwwwwwwwwwww

120:デフォルトの名無しさん
08/05/18 00:10:44
お前らそんなしょうもない事してる暇あるなら
社会に貢献するようなソース書けよ

121:デフォルトの名無しさん
08/05/18 00:30:18
>>120
ExitWindowsEx(EWX_SHUTDOWN, 0);

実行すると自動でPCをシャットダウンしCO2削減に貢献
(SeShutdownPrivilegeの取得等は省略)

122:デフォルトの名無しさん
08/05/18 01:01:58
指定されたフォルダ内のファイルが作成、削除、更新されたら
そのファイルの名称等を知りたい。
検索してみたところ、ReadDirectoryChangesW() や
SHChangeNotifyRegisterあたりを使えば良さそうな感じ。
winXP+vb6.0でもいけるだろうか?

123:デフォルトの名無しさん
08/05/18 01:38:25
ためしてみればわかるだろうか?

124:デフォルトの名無しさん
08/05/18 01:58:06
ためしていただけないだろうか?

125:デフォルトの名無しさん
08/05/18 02:41:22
( ゚ω゚ ) お断りします

126:デフォルトの名無しさん
08/05/18 04:24:08
>>120
TerminateThread( スレリンク(tech板) );

127:デフォルトの名無しさん
08/05/18 04:40:24
>>126
コンパイルエラー: 引数が足りません

128:デフォルトの名無しさん
08/05/18 11:34:43
おまいら好きだwwwwwwwwwwwwwwwww

129:デフォルトの名無しさん
08/05/18 13:50:13
VIP臭いんだけど

130:デフォルトの名無しさん
08/05/18 13:53:22
お前がな

131:デフォルトの名無しさん
08/05/18 14:50:29
ふうん

132:デフォルトの名無しさん
08/05/18 17:24:37
AbornThread( "pc11.2ch.net", "tech", "1210775622.dat" );

133:デフォルトの名無しさん
08/05/18 18:57:10
タスクバーとスタートメニューのプロパティってどうやれば開ける?
コンパネからショートカット引っ張り出して.lnkアクセスするしかない?

134:デフォルトの名無しさん
08/05/18 19:05:51
すみませんDCOMについて質問させてください。

リモートPCのCOMを呼び出す簡単なコードを作成したんですが、
思ったように動いてくれませんでした。

CoCreateInstanceEx()にリモートPCのIPを渡してやるんですが
この関数から戻ってくるのに時間がかかって失敗します。
ためしにローカルのIPを渡してやると成功するんですが。

以下にソースを記載します。
どこかおかしなところがないか教えていただけないでしょうか。

::CoInitialize(NULL);

COSERVERINFO serverInfo = { 0, "192.168.1.2", NULL, 0 };
MULTI_QI qi = { &__uuidof(ITest), NULL, S_OK };

HRESULT hr = CoCreateInstanceEx(
__uuidof(Test),
NULL,
CLSCTX_REMOTE_SERVER,
&serverInfo,
1,
&qi);

ITestPtr p;
p.Attach(reinterpret_cast<ITest*>(qi.pItf));

p->func();

p = NULL;
::CoUninitialize();

135:デフォルトの名無しさん
08/05/18 19:13:00
>>133
Shell32.Shell.TrayProperties

136:デフォルトの名無しさん
08/05/18 19:34:42
>>134
サーバ側の用意ができていないんじゃね?
時間がかかって失敗といえば、たいてい接続のタイムアウトだし。
サーバ側のDCOM関連の設定を見直しだな。

137:デフォルトの名無しさん
08/05/18 19:38:46
それじゃ使い方わからんと思うけど

138:デフォルトの名無しさん
08/05/18 19:49:24
DCOM関連の設定というのがあるんですか。

そのあたりの詳しいやり方が説明されてるサイトとか知りませんか?

139:デフォルトの名無しさん
08/05/18 20:12:11
dcomcnfg

140:デフォルトの名無しさん
08/05/18 20:59:40
Vistaで追加されたBeginBufferedPaint等のAPIって何のために使うんでしょうか?
MSDNで探してもリファレンスは見つかるけど
これを使う目的やメリットがわからなくて・・・・


141:デフォルトの名無しさん
08/05/18 21:03:32
>>133
START shell:::{0DF44EAA-FF21-4412-828E-260A8728E7F1}



142:デフォルトの名無しさん
08/05/18 22:32:40
>>140
多分GDIがソフトウェアレンダラになったから、これまでみたいにGDIだけで同じ事をすると
XPより重くなるので専用のAPIを用意して誤魔化したのだと予想

143:デフォルトの名無しさん
08/05/18 22:50:05
>>140
自動ダブルバッファリングみたいな感じ?
Vistaだとパフォーマンス上げるのに必須だから、楽に使えるAPIを用意した、ってところかな。
一通り目を通してみたが、Animation系は結構使えそうだ。

144:140
08/05/18 23:56:23
>>142,143
一応使ってみた感じだと画像がちらつかないのでダブルバッファリング用のAPIだと思うのだけど、
今までのようなメモリDCを使わずに、専用のAPIを用意した、という認識でいいのかどうかちょっと不安。
メモリDC使うのと大して手間はかからないような気がしないでもない。
Alpha値セット用のBufferedPaintSetAlphaとかも用意されてるみたいだけど。
こういう時に使うと便利!っていう説明が欲しいなぁ。

145:デフォルトの名無しさん
08/05/19 00:01:15
>>143>>144
従来の方法(CreateCompatibleBitmapで作ったDDBに描画してからBitBltする)だと
XP以前のDDBは大抵VRAM上に確保されてVGAの恩恵を得られたが、Vistaではそうは行かなくなったので
その辺を解決する専用APIを用意したのじゃないかと

146:デフォルトの名無しさん
08/05/19 13:35:23
>>145
なるほどね。

Animation系のも使ってみた。
アニメーションの前後のDCを一度のAPI呼び出しで取得できるんだ。
実際に描画してみたら軽いフェードアウト効果?みたいなぼわっとした残像も描画された。
VistaっぽいちゃぁVistaっぽいな。

147:デフォルトの名無しさん
08/05/19 23:22:49
SetWindowsHookEx して注入したDLL内でCOMコンポーネントを使いたいのですが、
CoInitialize / CoUninitialize しても大丈夫なのでしょうか?
注入先のプロセス内ですでに呼ばれていたらまずそうな気がします。

148:デフォルトの名無しさん
08/05/19 23:31:09
それらの関数は、上手くネストするように同じ回数だけ呼べば問題ない。

全く問題ないわけではないけど。

149:デフォルトの名無しさん
08/05/19 23:36:03
ListViewで選択したリストが青くなってわかりやすくなるけどそのウィンドウがフォーカスを失うとき(Tab押下、windowsボタン押下など)灰色になるのですが、
これがフォーカスを失っても青のままにしたいのですがどのようにすればよいのでしょうか?
普通のWM_NOTIFYではフォーカスを失ったときブレークポイントにかからなくて、
WM_ACTIVATEではNMHDR構造体がなくてカスタムドローできません。
いい方法があったらご教授願います。

150:デフォルトの名無しさん
08/05/19 23:58:14
別スレッドのキャレットを変更したいと思い

GetGUIThreadInfo(GetWindowThreadProcessId(NULL, &fwid), &gtinfo);
HideCaret(gtinfo.hwndCaret);
CreateCaret(gtinfo.hwndCaret, NULL, widht, height);
ShowCaret(gtinfo.hwndCaret);

とやってみましたが上手くいきません、
hwndCaretまでは取れいるようだし、
自プロセスであれば変更されます。

何が間違えているのか教えてください。
やはり、いくつかあるキャレット変更ソフトのように
DLLをフックさせなければ無利なのでしょうか?

151:デフォルトの名無しさん
08/05/20 00:28:13
全然知らんから適当だが、
別スレッドのUIを操作するのは無理だと思う

152:デフォルトの名無しさん
08/05/20 00:32:57
>>149
LVS_SHOWSELALWAYSスタイル付ければいいような気がする

153:デフォルトの名無しさん
08/05/20 01:22:59
>>148
試したところ上手くいきました。ありがとうございます。

検証コード
#include <windows.h>
#include <msxml2.h>
#include <stdio.h>
#pragma comment(lib, "ole32")
#pragma comment(lib, "msxml2")
void examine() {
static int counter = 0;
IXMLDOMDocument* pv = NULL;
HRESULT hr = CoCreateInstance(CLSID_DOMDocument2, NULL, CLSCTX_INPROC_SERVER, IID_IXMLDOMDocument, (void**)&pv);
printf("%d : hr=%08lx\r\n", ++counter, hr);
if (SUCCEEDED(hr) && pv) { pv->Release(); }
}
void main () {
examine(); CoInitialize(NULL);
examine(); CoInitialize(NULL);
examine(); CoInitialize(NULL);
examine(); CoUninitialize();
examine(); CoUninitialize();
examine(); CoUninitialize();
examine();
}

154:デフォルトの名無しさん
08/05/20 04:48:05
>>153
DllMainでCoInitializeを呼ばないように注意して書いた方がいいぞ

155:デフォルトの名無しさん
08/05/20 20:02:02
>>152
それはすでにやっていて、フォーカスが外れても灰色にはなるのですが
その灰色になる時に青いままにしたいのですが無理でしょうか?

156:デフォルトの名無しさん
08/05/20 20:08:52
できないことも無いけど、フォーカスが無いことをユーザーはどうやって知るの?

157:デフォルトの名無しさん
08/05/20 20:17:54
教えてから訊いてやれよw

158:デフォルトの名無しさん
08/05/20 21:32:45
>>151
そうなんですかね、
あきらめてフックしなきゃダメか。

159:デフォルトの名無しさん
08/05/20 22:40:29
>153
それはアパートメントはどーなるんだ?
MTAとか混じってたら死亡でないのか?

160:デフォルトの名無しさん
08/05/20 22:48:05
海外ドメイン規制で書き込めねー
>>51
やってみたんですがダメでした。成功したらまた来ます。

161:デフォルトの名無しさん
08/05/20 23:02:34
>>159
エラーになってRPC_E_CHANGED_MODEが返ってくる。
URLリンク(msdn.microsoft.com)(VS.85).aspx

162:デフォルトの名無しさん
08/05/21 09:34:44
BMPの描画でダブルバッファリングを行いたいのですが、
〔背景BMP+新BMP〕HDC hdcBmp = 背景BMP
HDC hdcBmp3 = CreateCompatibleDC(hdcBmp);
HBITMAP hBMP3 = CreateCompatibleBitmap(hdcBmp,300,300);
SelectObject(hdcBmp3,hBMP3);
BitBlt(hdcBmp3背景BMPの上に新BMPを描画);

case WM_PAINT:
BitBlt(GetDC(hWnd),hdcBmp3を描画);
背景BMPに新BMPをくっつけたものを描画したいのですが
背景BMPが黒で塗り潰されてしまいます。
┏━━━━━┓
┃背景BMP     ┃
┃┏━━━━┓┃
┃┃新BMP ┃

163:デフォルトの名無しさん
08/05/21 09:46:00
それでどうしたいんだ?

164:デフォルトの名無しさん
08/05/21 09:48:55
背景BMPが黒になるのを防ぎたいです。

165:デフォルトの名無しさん
08/05/21 09:53:39
>>162,164
その疑似コードだけ見ると、hdcBmp3に背景BMPを描画していないように
思えるが。



166:デフォルトの名無しさん
08/05/21 09:58:47
>>165
BltBlt(hdcBMP3,背景BMP);
BltBlt(hdcBMP3,新BMP);
これで大丈夫でしょうか?

167:デフォルトの名無しさん
08/05/21 10:50:26
>>162
CreateCompatibleBitmapにメモリDCを指定しては駄目。

あと
>case WM_PAINT:
>BitBlt(GetDC(hWnd),hdcBmp3を描画);
これは駄目だろ

168:デフォルトの名無しさん
08/05/21 10:57:03
>>167
CreateCompatibleBitmapには何を指定すればよいのでしょうか?

169:デフォルトの名無しさん
08/05/21 12:25:51
GetDC()あるいはCreateDC("DISPLAY")の結果あたりを渡すのが吉

170:デフォルトの名無しさん
08/05/21 12:30:01
描画用バッファは面倒だから全部DIBSectionでいいよもう

171:デフォルトの名無しさん
08/05/21 12:39:18
>>162
突込みどころ満載のソースだな
まぁ頑張れw

172:デフォルトの名無しさん
08/05/21 12:43:18
>>162
背景と前景を自前で合成して描画すればおk

173:デフォルトの名無しさん
08/05/21 12:50:05
GDIはあと何年くらい使われるんだろう

174:デフォルトの名無しさん
08/05/21 13:05:19
俺はwin32APIで作れなくなったら、ウィンドウズソフト開発から身を引く。引退。
MFCとかプログラミングじゃねーよ。あれ

175:デフォルトの名無しさん
08/05/21 13:44:17
>>171
突っ込んで下さい。

176:デフォルトの名無しさん
08/05/21 14:33:55
なんでやねん

177:デフォルトの名無しさん
08/05/21 15:00:09
>>174
MFCなんて一皮剥けばバリバリWin32APIじゃないか

178:デフォルトの名無しさん
08/05/21 17:22:34
>>177
プログラミングスタイルが受け付けない
TODO:ここにプログラム書いてね。みたいなのばかり。
しかも、いちいち用意されてる関数調べて、くっつけるだけ。
それで動かしてみて、動いてよかった。で終わり。
こんな状況でバグが出たら、生き地獄だ。

179:デフォルトの名無しさん
08/05/21 17:27:43
はあ?

180:デフォルトの名無しさん
08/05/21 17:33:16
用意されてる関数しらべてくっつけるだけってそれ以外のぷりぐらみんぐおれしらねー

181:デフォルトの名無しさん
08/05/21 17:39:51
>>178
Win32APIの勉強始めた頃は俺もそう思ってた。
今じゃGUIライブラリ無しで作る気起きませんサーセン

182:デフォルトの名無しさん
08/05/21 18:01:25
>>172
HDC hdc, hdcBmp[1], hBack[1];
HBITMAP hBmp[1];
BITMAP bm;
hdc = GetDC(hWnd);
hdcBmp[0] = CreateCompatibleDC(hdc); //背景BMP
hdcBmp[1] = CreateCompatibleDC(hdc); //新BMP
hBack[0] = CreateCompatibleDC(hdc); //合成BMP
hBmp[0] = (HBITMAP)LoadImage(hInst,MAKEINTRESOURCE(IDB_BITMAP1),IMAGE_BITMAP,0,0,LR_DEFAULTCOLOR);
hBmp[1] = (HBITMAP)LoadImage(hInst,MAKEINTRESOURCE(IDB_BITMAP2),IMAGE_BITMAP,0,0,LR_DEFAULTCOLOR);
SelectObject(hdcBmp[0],hBmp[0]);
SelectObject(hdcBmp[1],hBmp[1]);
// バックBMP
hBack[0] = hdcBmp[0];
BitBlt(hBack[0],0,20,bm.bmWidth,40,hdcBmp[1],0,20,SRCCOPY);
ReleaseDC(hWnd,hdc);
case WM_=PAINT:
BitBlt(hdc,0,100,bm.bmWidth,bm.bmHeight,hBack[0],0,0,SRCCOPY);
hdcBmp[0]とhdcBmp[1]に背景と新BMPを読み込み、背景と新BMPを合成したものをhBack[0]に読み込む。
そしてWM_PAINT時に合成した画像を描画する。という事ですか?

183:デフォルトの名無しさん
08/05/21 18:15:46
標準関数も用意されてる関数だよなって突っ込みはなし

184:デフォルトの名無しさん
08/05/21 19:16:48
 5月14日に民主党の円より子参議院議員から、ある嘆願が提出されました。内容は、「美少女
アダルトアニメやゲームを規制すべき」というものです。もしもこれらが規制されてしまうことに
なれば、全国のモテない童貞男子諸君にとって大打撃です。

 この嘆願が提出された理由ですが、ちょっとひどい。

  街中に氾濫(はんらん)している美少女アダルトアニメ雑誌やゲームは、小学生の少女を
  イメージしているものが多く、このようなゲームに誘われた青少年の多くは知らず知らず
  のうちに心を破壊され、人間性を失っており、既に幼い少女が連れ去られ殺害される事件
  が起きている。これらにより、幼い少女たちを危険に晒(さら)す社会をつくり出していること
  は明らかで、表現の自由以前の問題である。社会倫理を持ち合わせていない企業利潤追
  求のみのために、幼い少女を危険に晒している商品を規制するため、罰則を伴った法律
  の制定を急ぐ必要がある。

  ついては、美少女アダルトアニメ雑誌及び、美少女アダルトアニメシミュレーションゲーム
  製造及び販売規制の罰則を伴った法律を制定されたい。

 物凄く分かり易く要約すると、「エロゲーをする奴は心が壊れていて人間じゃないから幼女を
強姦する。だからエロゲーを規制しろ」ということになります。ええと、円議員あなたの血は何色
ですか?

 だいいち嘆願理由にしても私から言わせて貰えば、「ゲームをしているうちに心が破壊される」
のではなく、「現実世界で心が破壊されたからゲームに逃げた」のです。よくよく考えれば普通の
人は分かるはずです。あれはタダの絵だ、と。

 この「美少女アダルトアニメ雑誌及び美少女アダルトアニメシミュレーションゲームの製造・販
売を規制する法律の制定に関する請願」に賛同している議員は、円より子参議院議員のほかに
は、同じく民主党の下田敦子参議院議員がいます(5月21日現在)。増えないことを祈るばかりです。

URLリンク(digimaga.net)


185:デフォルトの名無しさん
08/05/21 20:09:47
>>182
まずは分かりやすい変数名を付ける事から学べ

186:デフォルトの名無しさん
08/05/21 20:19:12
>>185
すみませんでした。
背景用変数 = 背景BMP;
貼付けるBMP用変数 = 新BMP;
上部二つの合成用変数 = 合成したBMP(背景BMP+新BMP);
BitBlt(上部二つの合成用変数);

187:デフォルトの名無しさん
08/05/21 20:46:35
>>186
まずは分かりやすい変数名を付ける事から学べ

188:デフォルトの名無しさん
08/05/21 20:50:50
>>187
>>186では不満ですか?

189:デフォルトの名無しさん
08/05/21 20:55:16
>>188
お前はプログラマに向いていない
転職をおすすめする

190:デフォルトの名無しさん
08/05/21 21:03:26
仕事でやってんならもう少しまともなコメントぐらいつけろよ
そのゴミソース引き継いだ奴はめちゃくちゃ苦労するんだよボケがw


191:デフォルトの名無しさん
08/05/21 21:05:56
>>182
WM_PAINTがきたときに背景BMPと重ねるBMPを
自前で合成して一度のBiBlt呼び出しで描画するという意味。
それぞれのBMPはメモリ上にあるんでしょ?
とりあえずこれで動くものを作ってから原因とか考えながらゆっくりAPIの使いかた覚えればいいと思うよ。

192:デフォルトの名無しさん
08/05/21 21:36:47
つい最近VC++2008ExpressEditionをいじり始めたものです。
テキストエディタまがいのものでもつくってみようと始めたはいいのですが、
GETOPENFILENAME 関数を使ってファイルを開くダイアログを作ろうとしたところ、
"OPENFILENAME構造体が定義されていない"
とエラーが出ます。
てっきり windows.h で定義されていると思っていたのですが、
これでないならなんのヘッダをインクルードすればいいのでしょうか?

193:デフォルトの名無しさん
08/05/21 21:48:53
>>192
Declared in Commdlg.h, include Windows.h

てっか、WindowsSDK入れてる?

194:デフォルトの名無しさん
08/05/21 22:00:45
>>192
WIN32_LEAN_AND_MEAN

195:デフォルトの名無しさん
08/05/21 22:02:04
>>191
WM_CREATE等最初に合成したものを
WM_PAINT時に使うということですか?

196:デフォルトの名無しさん
08/05/21 22:14:25
>>182
ソースが突込み所満載なんだがまさか釣りじゃないよな?
本気で書いたソースならC言語についてもやばいぞ

197:デフォルトの名無しさん
08/05/21 22:20:08
>>196
早く突っ込んでくれ

198:192
08/05/21 22:22:28
>>194
自動で定義されていたそれをコメントアウトしたら解決しました。
ありがとうございます。
>>193さんもありがとうございました。

199:デフォルトの名無しさん
08/05/21 22:27:37
>>197
なんでやねん

200:デフォルトの名無しさん
08/05/21 22:39:34
>>197
じゃあケツ出せよ

201:デフォルトの名無しさん
08/05/21 22:41:15
>>156
WM_ACTIVATEでフォーカスを失った時にブレークにはかかったのですが、
カスタムドローするのに必要なパラメータがなかったのでできませんでした。
オーナードローで頑張ればできるのでしょうか?

202:デフォルトの名無しさん
08/05/21 22:52:33
聞きたいのですが、
BITMAPの合成はどうやればよいのですか?

203:デフォルトの名無しさん
08/05/21 23:33:54
>>195
別にWM_CREATE時じゃなくていいよ。
ちらつきを抑えたいからダブルバッファしたいんだろうからBMPは常にメモリ上にあるという仮定で、
WM_CREATEがきたときに別途mallocでもnewでもいいからバッファを確保して
そのバッファに背景BMPと表示したいBMPを合成したものを作成。
それをBitBltやStretchDIBitsのような描画関数で表示。

204:デフォルトの名無しさん
08/05/22 00:00:22
WindowsX.h にある
HANDLE_MSG() マクロを WM_COMMAND に対して使うとき、なんで return 0; になるんだ?

HANDLE_MSG() に渡すfn は void func(HWND...) でvoid型だし、HANDLE_MSG() 自体も

#define HANDLE_MSG(hwnd, message, fn) ¥
case message):return ((fn)(hwnd,...),0L)

でマクロ展開で「return 0;」が出てくる理由がよく解らん。

case message: return func(hwnd,...); //func() はvoid型

になるんじゃないの?

205:デフォルトの名無しさん
08/05/22 00:10:42
カンマ演算子
return a, b;
returnされるのはbの値。

206:デフォルトの名無しさん
08/05/22 06:15:18
メッセージクラッカって定義おかしくね?

WM_DRAWITEMとか、
> If an application processes this message, it should return TRUE.
って書かれてるのにvoidでreturn 0;されてるし

207:デフォルトの名無しさん
08/05/22 06:17:56
さんくす>>205
カンマ演算子、か。K&Rの演算子の表の一番下に確かにそんなのあるな。いままで意識した事無かった

ありがと

208:デフォルトの名無しさん
08/05/22 08:01:40
>>205
間違っています。
以上。
↓次の方どうぞ

209:デフォルトの名無しさん
08/05/22 08:58:29
キモ

210:デフォルトの名無しさん
08/05/22 09:05:15
キモ

211:デフォルトの名無しさん
08/05/22 10:19:57
ゲーム作ってるんだけど、メモリ内のデータ書き換え防止する方法とかある?
外部アプリからメモリ内サーチして書き換えるやつ防止したい。助言よろ。

212:デフォルトの名無しさん
08/05/22 10:34:36
PCの電源切れ

213:デフォルトの名無しさん
08/05/22 11:03:18
>>211
オンラインゲームじゃないなら、改造対策は不要では?

俺もゲーム作ってるんだが、ブログで改造対策のこと書いたら、
「改造対策する時間があるなら、ゲームのボリュームを増やすこととか、
もっとまともなことに使って欲しい」ってコメントが多かったよ。
改造するかはユーザーの自由なんだし、ユーザーとしては当然のコメントだが。

あと、いまどきの改造は、プロセスメモリエディタ+ルートキットで
やるから、改造を防止するなら、ユーザーから非難されることを覚悟のうえで
ルートキットじみたことをするしかないでしょうね。

214:デフォルトの名無しさん
08/05/22 12:37:49
VC++のリソースエディタでダイアログボックスが作れますが、
そのような外観の(ダイアログでない)ウィンドウを、
ウィンドウクラスで作ったウィンドウに、コントロールぺたぺた貼って作ろうと思ったら、
(CWndではなく、RegisterClassEx、CreateWindow使って)

・ウィンドウの背景色は何故かCOLOR_BTNSHADOWが(ダイアログと)等しい
・エディットボックスはCreateWindowExの第1引数にWS_EX_CLIENTEDGEにしないと立体の縁にならない
・フォントはWM_SETFONT使ってサイズを変更しないと文字がでかい
・そもそもデフォルトのフォントが当然MS shell dlgではないようで、よくわからない
 (ただ、画面のプロパティから、故意にダイアログとウィンドウのフォントを違うものにした覚えはない…)

実際CreateDialogマクロでダイアログが作られるとき、ここら辺の設定ってどうなっているのですか?
このマクロもCreateWindowExを使ってウィンドウを作ると書いてあるので、
同じようなことが再現できるのではと思ったのですが…

(CreateDialogがウィンドウの大きさを決めるとき、フォントを元に作ってあるのはわかったのですが…)

215:デフォルトの名無しさん
08/05/22 13:05:33
Process Explorerで表示できるWindow Titleと同じものを取得したいと思っています。
どうもGetWindowTextで取得できるものとは別物らしく、
Process ExplorerでJuneブラウザのWindow Titleを見ると、
GetWindow〜で取得した名前とは違うものを表示しているのがわかります。

一体Process Explorerで表示できるWindow Titleとは何者か、
どうすれば取得できるのでしょうか?


216:デフォルトの名無しさん
08/05/22 13:19:39
>>215
URLリンク(msdn.microsoft.com)
> GetWindowText cannot retrieve the text of a control in another application.

217:デフォルトの名無しさん
08/05/22 13:34:18
使えないAPIなんですか。エディットコントロールじゃなければいいはず…ですよね。
そうするとWindow Titleってなんだろうという話になりまして、

たとえばJaneブラウザを表示したとき、以下のようになります。

・キャプションバー、およびProcessExplorer上WindowTile列の表示
 →”Jane Doe Style 【プログラム】 - Win32API質問箱 Build66”

・GetWindowText、およびタスクマネージャ上の表示
 →”Jane”

”Jane Doe Style 【プログラム】 - Win32API質問箱 Build66”の文字列を取得したいわけですが、
その方法はご存知でしょうか?

218:デフォルトの名無しさん
08/05/22 13:44:31
Delphiアプリケーションには実は見えないアプリケーションウィンドウがあって・・・

219:デフォルトの名無しさん
08/05/22 14:00:33
>>218
VBアプリもそんな感じだったな
だからタスクバーに表示しないプロパティなんてのがあるんだけど

220:デフォルトの名無しさん
08/05/22 14:07:52
spy++ とか眺めてみるといいと思う

221:デフォルトの名無しさん
08/05/22 14:14:12
あー…なんとなくイメージ掴めてきました
メインウィンドウに見えたのは子ウィンドウで、だから取得できなかったと。

子ウィンドウのウィンドウタイトルの取得とか、そのあたりを調べてみます。

ありがとうございます

222:デフォルトの名無しさん
08/05/22 14:14:17
>>217
こんなんでいいのかな?
#include<windows.h>
#include<stdio.h>

int main(void){
char title_buf[256], *class_name="TMainWnd";
int title_len;
HWND hwnd;

hwnd=FindWindow(class_name, NULL);
if(hwnd==NULL){
printf("Window not found. class name [%s]\n", class_name);
return 1;
}

title_len=GetWindowText(hwnd, title_buf, sizeof(title_buf)-1);
if(title_len>=0) printf("%s\n", title_buf);

return 0;
}

223:デフォルトの名無しさん
08/05/22 14:59:33
>>222
どうもです
実行結果とSpy++を併せて見て、おおよそ理解できました。

デルファイでもVBでもデフォルトのクラス名でウィンドウを検索したのち、
目的の名前を取得する事ができました

ありがとうございます

224:デフォルトの名無しさん
08/05/22 15:05:00
WM_GETTEXTでいいのでは

225:デフォルトの名無しさん
08/05/22 16:22:09
> title_len=GetWindowText(hwnd, title_buf, sizeof(title_buf)-1);
今時こんなソース書く奴はJavaか.NETで開発してろよと思う

226:デフォルトの名無しさん
08/05/22 16:25:53
>>225
この場合同書くのがいいのかも示して欲しいです

227:デフォルトの名無しさん
08/05/22 16:28:58
>>225
>>226に同意
どう書けばよいのでしょう?
TCHARの話でしょうか?

228:デフォルトの名無しさん
08/05/22 16:29:51
TCHARじゃないとかARRAYSIZE, _countofを使えとかnullは考慮されてるから-1はいらないとか
あたりじゃない?

229:デフォルトの名無しさん
08/05/22 16:54:54
grep で include 内を探したけど ARRAYSIZE と _countof とは無かった
(使用しているのは MinGW)

230:デフォルトの名無しさん
08/05/22 16:59:28
>>229
ARRAY_SIZE と countof はあったの?

231:デフォルトの名無しさん
08/05/22 17:01:22
>>230
無いです

232:デフォルトの名無しさん
08/05/22 17:12:16
_countofはMFCで定義されていてVC2005ぐらいからCRTでも定義されてた気がする
SDKにはwinnt.hにRTL_NUMBER_OFがある

いずれにしろ>>222は人に教えられる立場で無いのは確か

233:デフォルトの名無しさん
08/05/22 17:20:27
結局は、どう書くのが模範解答になるんでしょう?

234:デフォルトの名無しさん
08/05/22 17:24:19
WinAPIはよく知らんのだが、GetWindowText()の戻り値ってエラーチェックくらいしか使い途ないのかな。
>222もエラーチェックにしか使ってないようだし、>228によればナルターミネートはしてくれているようだし。
つーか、溢れたかどうかは単純には判らないのね。


235:デフォルトの名無しさん
08/05/22 17:27:19
>>222
if(title_len>=0) printf("%s\n", title_buf);

if(title_len>0) printf("%s\n", title_buf);
にしないとエラーチェックになってない


236:デフォルトの名無しさん
08/05/22 18:18:19
>>234
GetWindowTextLengthで事前にバッファ長を調べておけば済むだろ

237:デフォルトの名無しさん
08/05/22 18:27:58
GetGlyphIndices()という、文字列からグリフインデックスに変換するAPIがありますが、
この逆のことをするAPI、つまりグリフインデックスから文字列に変換する方法って解りますか?

238:デフォルトの名無しさん
08/05/22 18:28:29
バッファ足りなくてもバッファサイズまでコピーする仕様なの?
そうだとしても戻り値にNULL文字は数えないって書いてあるから
指定サイズ==戻り値ならあふれてるのでは。

239:デフォルトの名無しさん
08/05/22 18:31:24
>>238
馬鹿丸出し

240:デフォルトの名無しさん
08/05/22 18:37:47
>>236
しかし長さを調べた直後には別のウィンドウタイトルに変わっているかもしれない
そのアプリケーションがどう振舞うか想定できない

241:デフォルトの名無しさん
08/05/22 18:50:52
そんな事を気にするなら他プロセスのテキスト取得なんて考えないことだ

(そろそろフックネタ出す奴が現れる頃か)

242:デフォルトの名無しさん
08/05/22 18:50:58
仮にバッファ長が100だったとして、GetWindowTextLength()が99を返した後GetWindowText()が99を返しても、
その間にタイトルが書き換わっていたら溢れたかどうかは判らないのね。

243:デフォルトの名無しさん
08/05/22 19:10:58
>>240>>242
必要十分なサイズのバッファを渡せば溢れる可能性は無くなる。

LPTSTR buffer = (LPTSTR)malloc(sizeof(TCHAR) * 0x7fffffff);
if (buffer == NULL) {
  MessageBox(NULL, _T("この環境では使用できません"), _T("メモリ買いましょう"), 0);
  exit(-1);
}
GetWindowText(hwnd, buffer, 0x7fffffff);

244:デフォルトの名無しさん
08/05/22 20:36:32
32bit環境だと/3GBスイッチ使っても厳しそうだ。
VirtualAllocのMEM_RESERVEでアドレスだけ確保して、
SEHで動的にメモリを割り当てるのが現実解だな。

245:デフォルトの名無しさん
08/05/22 20:59:09
ヒント:APIフック

246:デフォルトの名無しさん
08/05/22 21:19:35
>>245
ヒント:お前は馬鹿

247:デフォルトの名無しさん
08/05/22 21:23:10
たまにはブローとかアッパーとかさぁ

248:デフォルトの名無しさん
08/05/22 21:34:08
まずはジャブから

249:デフォルトの名無しさん
08/05/22 21:51:37
このスレの質が低下したのは、優秀な人は.NETに移ったからかもな。

250:デフォルトの名無しさん
08/05/22 21:58:09
正解

251:デフォルトの名無しさん
08/05/22 22:06:48
今頃気付いたのか

252:デフォルトの名無しさん
08/05/22 22:25:19
Advanced Windowsの著者だって.NETの本を書くこんな世の中じゃ

253:デフォルトの名無しさん
08/05/22 23:38:50
poizun

254:デフォルトの名無しさん
08/05/22 23:47:16
poison

255:デフォルトの名無しさん
08/05/22 23:49:58
prison

256:デフォルトの名無しさん
08/05/22 23:57:59
ぬるぽ

257:デフォルトの名無しさん
08/05/23 00:07:37
ga

258:デフォルトの名無しさん
08/05/23 00:35:25
てか、sizeof(title_buf)-1を最後の引数に指定してるから、
溢れる可能性など皆無だが?
溢れるとかなに言ってるんだ?

259:デフォルトの名無しさん
08/05/23 00:47:09
↑理解していない何か

260:デフォルトの名無しさん
08/05/23 06:45:56
↑話を理解している天才

261:デフォルトの名無しさん
08/05/23 10:20:45
↑流れを読む天才

262:デフォルトの名無しさん
08/05/23 10:22:11
↓通常の流れに戻すという偉業を成し遂げた天才

263:デフォルトの名無しさん
08/05/23 10:30:46
#include<stdio.h>
#include<windows.h>

int main(void)
{
/**/MSG msg;

/**/while(0 < GetMessage(&msg,NULL,0,0)){
/******/switch(msg.message){
/**********/case WM_KEYDOWN:
/**************/puts("keydown");
/**************/break;
/******/}
/**/}
/**/return 0;
}

これで何かkey押してもダメなんだけどどうすればいい?

264:デフォルトの名無しさん
08/05/23 11:01:41
ウィンドウが無いじゃんか

265:デフォルトの名無しさん
08/05/23 11:06:59
コンソールに表示させたいん

266:デフォルトの名無しさん
08/05/23 11:52:02
な ん で ( ´∀` ) や ね ん !

267:デフォルトの名無しさん
08/05/23 12:31:48
プロシージャならメッセきたら処理するけど
コンソールの場合はどうやるのか気になって

268:デフォルトの名無しさん
08/05/23 13:12:02
CreateWindowでスタティックテキストを作りました。
テキストの背景色を透過したいんだけど、いい方法ありませんか?

hStatic = CreateWindowEx(0, "STATIC", cString, WS_VISIBLE | WS_CHILD | SS_SIMPLE,
X, Y, Width, Height, hWnd, (HMENU)Static, (HINSTANCE)hInst, NULL);

269:デフォルトの名無しさん
08/05/23 13:20:55
WS_EX_TRANSPARENTじゃダメ?

270:268
08/05/23 13:31:00
>>269
ダメでした。。
レバーコントロールに入れたツールバーにスタティックテキスト置いてます。

hStatic = CreateWindowEx(WS_EX_TRANSPARENT, "STATIC", cString, WS_VISIBLE | WS_CHILD | SS_SIMPLE,
X, Y, Width, Height, hWnd, (HMENU)Static, (HINSTANCE)hInst, NULL);

271:デフォルトの名無しさん
08/05/23 13:39:40
ツールバー、もしくはメニューの背景にブラシを使う事は出来ますか?

272:デフォルトの名無しさん
08/05/23 13:40:07
WM_CTLCOLORSTATICでNULL_BRUSHを返す

273:デフォルトの名無しさん
08/05/23 14:12:15
あるプロセスが、自分を起動したプロセス(親プロセス)を知る方法はありますか。

274:デフォルトの名無しさん
08/05/23 14:20:00
ある

275:デフォルトの名無しさん
08/05/23 14:21:19
レバーじゃなくてリバーだと思う

276:デフォルトの名無しさん
08/05/23 14:23:18
"レバーコントロール" の検索結果 約 1,270 件中 1 - 10 件目 (0.13 秒)
"リバーコントロール" の検索結果 約 185 件中 1 - 10 件目 (0.13 秒)


277:デフォルトの名無しさん
08/05/23 14:27:41
>>276
それ「レバー」「コントロール」別単語として検索した結果だから

278:デフォルトの名無しさん
08/05/23 14:27:45
どっちもすくな!

279:デフォルトの名無しさん
08/05/23 14:28:42
リバーコントロールでググると

もしかして: レバーコントロール
と出るなw

280:268
08/05/23 14:28:43
>>272
どうも。WM_CTLCOLORSTATICメッセージ勉強してみます。

281:デフォルトの名無しさん
08/05/23 14:41:49
>>277
馬鹿

282:デフォルトの名無しさん
08/05/23 15:02:53
レバー ReBar に一致する日本語のページ 約 268 件中 1 - 30 件目 (0.03 秒)
リバー ReBar に一致する日本語のページ 約 277 件中 1 - 30 件目 (0.24 秒)

283:デフォルトの名無しさん
08/05/23 15:28:05
rebarの発音はrí:bà:rだからリバーと読む方が実際の発音に近い
つまりレバーと読みたいならパーチーとかボデーとか言ってろってこった

284:デフォルトの名無しさん
08/05/23 15:33:15
↑アホ

285:デフォルトの名無しさん
08/05/23 15:35:16
↑話を理解してない馬鹿

286:デフォルトの名無しさん
08/05/23 15:36:33
ReBarをレバーっていうのは斬新だなw

287:デフォルトの名無しさん
08/05/23 15:39:09
↑馬鹿

288:デフォルトの名無しさん
08/05/23 15:40:32
>>281=>>284=>>287=大馬鹿

289:デフォルトの名無しさん
08/05/23 15:41:46
↑はずれ

290:デフォルトの名無しさん
08/05/23 15:43:10
>>281,>>284,>>287∈大馬鹿
という意味だろ

さすが大馬鹿

291:デフォルトの名無しさん
08/05/23 15:45:37
レバーという表現は日本語としても定着してるんだからいんじゃね?

292:デフォルトの名無しさん
08/05/23 15:49:00
>>290
はずれ

293:デフォルトの名無しさん
08/05/23 15:51:19
意味が通じるなら、それでおk。

294:デフォルトの名無しさん
08/05/23 15:59:11
>>291
定着していません。
ほとんどの日本人はレバーと聞くと肝臓の事だと認識します。

295:デフォルトの名無しさん
08/05/23 16:05:50
取っ手(lever)と認識する人も居るよ


296:デフォルトの名無しさん
08/05/23 16:09:36
ReをReTryとかのReって解釈する人もいる

297:デフォルトの名無しさん
08/05/23 16:11:51
Win API ReBar レバー 11件
Win API ReBar リバー 100件

Yahoo

298:デフォルトの名無しさん
08/05/23 16:13:41
↑全角数字馬鹿

299:デフォルトの名無しさん
08/05/23 16:17:03
>>296
語源的には同じ

300:デフォルトの名無しさん
08/05/23 16:17:51
うーん、、、全角数字の時点で言い訳できないな

301:デフォルトの名無しさん
08/05/23 16:19:22
ほとんどの日本人はリバーと聞くと川の事だと認識します。

302:デフォルトの名無しさん
08/05/23 16:23:40
ReBarって書けばいいんだよ
カタカナ読みに拘ると面倒事になるだけだ

303:デフォルトの名無しさん
08/05/23 16:27:03
このスレで「リバー」だとriverよりはrebarだろう。
このスレで「レバー」だとliverやleverよりは「rebarのことなんだろうなぁ」だろう。

304:デフォルトの名無しさん
08/05/23 16:27:55
↑話を理解してない馬鹿

305:デフォルトの名無しさん
08/05/23 16:35:18
え?あれ取っ手付いてるからレバーなんだと思ってたよ
別モノだったのかw

306:デフォルトの名無しさん
08/05/23 16:44:39
URLリンク(msdn.microsoft.com)
では一応「リバー コントロール」でも他のページに見当たらない

307:デフォルトの名無しさん
08/05/23 16:44:40
BitBltやStretchBltで表示した画像が解像度を変更すると消えてしまい困っています。
WM_DISPLAYCHANGEでWM_PAINTを投げたりInvalidateRectを投げたりしましたが再描画されません。
SW_MINIMIZEとSW_NORMALを立て続けに投げる方法は表示される時とされない時があり駄目なようです。
どうすれば解像度変更直後にきちんと再描画出来るようになるのでしょうか。

308:デフォルトの名無しさん
08/05/23 16:52:59
おっ!質問きたぞ
雑談はこれまでだ

309:デフォルトの名無しさん
08/05/23 16:55:21
>>307
WM_PAINTで描画してるんだよな?
再描画されないことは無いと思うが、いったいどうやってんの?
再描画されないとは具体的にどうなんのの?
>WM_PAINTを投げたり
まあこれ見て怪しいのはわかるが。

310:デフォルトの名無しさん
08/05/23 17:01:56
InvalidateRectの後にUpdateWindow呼んでる?

311:309
08/05/23 17:02:18
一応書いておくけど
WM_PAINTを投げたくなったら、
InvalidateRect → UpdateWindow のコンボで。

InvalidateRect自体は投げてるみたいだから、この場合は解決策じゃないけど。

312:デフォルトの名無しさん
08/05/23 17:10:39
>>311
RedrawWindowにRDW_UPDATENOWを指定すればいい

313:デフォルトの名無しさん
08/05/23 17:17:34
なんちゃってAI作った人いる?

314:デフォルトの名無しさん
08/05/23 17:21:43
>>313
const char* msg[] = {
"↑話を理解してない馬鹿",
"知らないならレスしないでください",
"それぐらい察してほしかったってのが本音"
};
for(;;) post2ch(msg[rand()%3]);

315:デフォルトの名無しさん
08/05/23 17:32:59
>>313
スレタイ

316:307
08/05/23 18:17:10
InvalidateRect(hWnd, NULL, FALSE);
UpdateWindow(hWnd);
RedrawWindow(hWnd, NULL, NULL, RDW_UPDATENOW);
これらを投げても駄目でした。

画像のみを表示するソースはウィンドウを透過すれば(SetLayeredWindowAttributes)特に何もしなくても表示されました。
透過しないとやはり何も表示されません。

CreateWindowExでボタン、ステータスバー、ツールチップを追加している問題のソースではこれらコントロールは再描画されるのに画像が表示される場所はまるで非表示にしたかのように背景色のみになっています。
もう訳が分からないですo...rz。

もしかしたらウィンドウプロシージャの書き方に問題があるのかも知れませんが、以下の各caseのbreak;をreturn 0;に書き換えると何故かウィンドウの挙動も表示もおかしくなり、CPU使用率も100%になってしまいます。
因みに今回の場合はreturn 0;に書き換えても症状は改善しません。

LRESULT CALLBACK WndProc(HWND hWnd, UINT msg, WPARAM wp, LPARAM lp)
{
switch (msg)
{
(中略)
case WM_PAINT:
SetStretchBltMode(hDC, STRETCH_DELETESCANS);
StretchBlt(hDC, 10, 10, 256, 192, hCompatDC, 0, 0, bmp.bmWidth, bmp.bmHeight, SRCCOPY);
break;
(中略)
}
return DefWindowProc(hWnd, msg, wp, lp);
}

317:デフォルトの名無しさん
08/05/23 18:25:29
>>316
・・・BeginPaintとEndPaintは・・?
hDCはどこからきたの?

318:デフォルトの名無しさん
08/05/23 18:28:02
やはり怪しかったのね

319:デフォルトの名無しさん
08/05/23 18:34:01
>>317が正解だな
的を射ている

320:デフォルトの名無しさん
08/05/23 18:44:10
WM_PAINTでBegin/EndPaint忘れって上にもあるし前スレにもあったな
いったい何を見て勉強してるんだ?

321:デフォルトの名無しさん
08/05/23 18:45:07
猫だろ。どうせ。

322:デフォルトの名無しさん
08/05/23 19:04:37
犬希望

323:デフォルトの名無しさん
08/05/23 19:18:07
WM_PAINTワンBeginPaintワンワン

324:デフォルトの名無しさん
08/05/23 19:19:40
MFC使えとまでは言わないけど、コンストラクタ・デストラクタでBegin/EndPaintをラップした
クラス程度は作っておくと便利よ。

325:デフォルトの名無しさん
08/05/23 19:27:38
それならOnPaintをオーバーライドするだけで描画できるクラスを作った方が遥かに便利

326:デフォルトの名無しさん
08/05/23 19:30:54
CpaintDC と OnDraw ですね

327:デフォルトの名無しさん
08/05/23 19:33:07
つうか今時MFCやWTLを使わずに素のWin32SDKでアプリ作る奴なんているの?
死ぬほど面倒じゃん

328:316
08/05/23 19:39:21
static PAINTSTRUCT ps;
(中略)
BeginPaint(hWnd, &ps);
SetStretchBltMode(hDC, STRETCH_DELETESCANS);
StretchBlt(hDC, 10, 10, 256, 192, hCompatDC, 0, 0, bmp.bmWidth, bmp.bmHeight, SRCCOPY);
EndPaint(hWnd, &ps);
return 0;

にしたら正常に表示されました。本当にありがとうございました。
一見正常に動いていたのはDefWindowProcに処理を回していたからなんですね。

因みに参考にしたサイトはこちらです。

Programing Place
URLリンク(www.geocities.jp)

>>324-327
VC++2008EEでC及びC++の勉強中です。
まだC++はまともに使えないのでクラスの使い方も(VB.NETやC#はともかく)分かりません。
今後の課題としてクラスの勉強を始めようと思います。

329:デフォルトの名無しさん
08/05/23 19:43:13
そのサイトにも、
>描画の処理を行うとき、必ずBeginPaint()とEndPaint()を使って、描画処理を挟み込む形を取っていましたが、これは必ずそうしなければなりません。
って書いてるじゃん

330:デフォルトの名無しさん
08/05/23 19:44:22
>>328
そこ、前スレにもトンデモサイトとして出てたよ
特にこれ
URLリンク(www.geocities.jp)


以下を次スレからテンプレ化キボン

●参考すべきでない所
Programing Place
URLリンク(www.geocities.jp)

331:デフォルトの名無しさん
08/05/23 19:44:23
>>328
志村!足りない!足りない!

332:デフォルトの名無しさん
08/05/23 19:45:32
と思ったら、BitBltのあたりでいきなりはしょってるなw

333:デフォルトの名無しさん
08/05/23 19:46:42
"Programing"の時点で糞確定だけどな

334:デフォルトの名無しさん
08/05/23 19:47:04
>>328
hDCはBeginpaintの戻り値かps.hdc 使う

335:デフォルトの名無しさん
08/05/24 06:15:24
本当の所、BeginPaintを必ず使わなければいけないという決まりはない。
ただ、これ一回の呼び出しで行われる処理内容を考慮すると、使わない理由が無いな。

336:デフォルトの名無しさん
08/05/24 07:17:06
>>330
それよりお勧めサイト書いてくれたほうがうれしい

337:デフォルトの名無しさん
08/05/24 07:52:52
>>336
英語版MSDN

338:デフォルトの名無しさん
08/05/24 10:56:51
調べても分からなかったので質問させてください
CreateMenuでよくアプリケーション上部にあるFile(F)とか表示(V)のようなメニュー作成しています。
メインウィンドウのサイズを変更したとき、Menuのサイズを変更しないようにしたいです。
メニューの横幅固定で。この場合、メニューサイズを固定するAPIか、メニューの構造体に横幅指定することができるとか
方法がありましたら、ご教示ください。よろしくおねがいします。

環境はVC + SDKです。

339:デフォルトの名無しさん
08/05/24 10:58:48
無理

340:デフォルトの名無しさん
08/05/24 11:35:06
ツールバーで代用するとか
苦労の割に見返りがサイズ固定だけって泣けるけど

341:デフォルトの名無しさん
08/05/24 11:44:03
標準と違う動きをするアプリって違和感があるよね。

342:338
08/05/24 11:48:09
単刀直入に言うと、ウィンドウサイズ変更時にメニューのちらつきをなくしたいです。
勉強中なので間違ってるかもしれないですが、CreateMenuで作成してもWNDCLASSEXで
wc.lpszMenuName=MAKEINTRESOURCE( IDR_MENU);登録にしても、
結局はメインウィンドウの再描画に巻き込まれる形になるので、ちらつきます。
Janeとかのメニューはどうやって実現してるのかなぁ。。

343:338
08/05/24 12:54:04
もうちょっと考えて見ます
お騒がせしました。

344:デフォルトの名無しさん
08/05/24 12:57:53
>>341
IEのメニューはツールバーで出来てるが
コマンドバーって呼ばれてる

WTLにCCommandBarCtrlってクラスがあるけどこれはバグが多すぎてあまり使えない

345:デフォルトの名無しさん
08/05/24 14:20:04
>>344
CCommandBarCtrlのバグって例えばどんな?

346:デフォルトの名無しさん
08/05/24 15:09:32
>>345
とりあえず致命的なのを2点ほど

メニューをクリックするとCommandBarにフォーカスを持って行かれる
→フォーカスを元に状態設定を行っていると正常に機能しなくなる

IEのようなReBar上で右クリックメニューを出すようなのを作っていると
メニューが出ているときにメニュー項目上で右クリックすると落ちることがある
→DoTrackPopupMenuに再入してしまうのが原因なので適当にフラグ立てて回避するしかない


Donut系ブラウザはこの辺のバグを回避するためにCCommandBarCtrlを使っていない
俺もこの辺のバグを回避するためにDonutのソースを参考にして自作した


次ページ
最新レス表示
スレッドの検索
類似スレ一覧
話題のニュース
おまかせリスト
▼オプションを表示
暇つぶし2ch

5111日前に更新/190 KB
担当:undef