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), >info);
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のソースを参考にして自作した
347:デフォルトの名無しさん
08/05/24 15:10:10
>>338
>メインウィンドウのサイズを変更したとき、Menuのサイズを変更しない
??
ウインドウを小さくした時メニューがはみ出してもいいの?
変なアプリーw
348:デフォルトの名無しさん
08/05/24 15:15:16
サイズ固定でシェブロン出すのよくあるけど。
349:デフォルトの名無しさん
08/05/24 15:15:46
右端に >> を付けたいって事だろ
そういうのはコマンドバーって言うんだよっていうのが以後の流れ
350:デフォルトの名無しさん
08/05/24 15:40:07
APIの話では無いのでスレ違いだと思いますが
Windows XPで外部信号に対して±10mS程度以内で
応答を返すことは可能なのでしょうか?
351:デフォルトの名無しさん
08/05/24 15:51:28
エスパーじゃないしマイナスは厳しいんじゃないか。
352:デフォルトの名無しさん
08/05/24 16:26:25
え、-10ms以内で応答を返せないの?
近頃のWindowsは糞だなぁ
353:デフォルトの名無しさん
08/05/24 16:31:12
さすがのWINDOWSでも、時をかけるのは難しいんじゃないか?
354:デフォルトの名無しさん
08/05/24 16:53:26
待ってられない信号がある。
それはさておき、「何らかのインターネット接続が存在するかどうか」を知る方法はありますか?
今は自分のグローバルIPアドレスに対してpingを打っているのですが、激しく間違っている気がします。
355:デフォルトの名無しさん
08/05/24 16:58:33
それはすれ違いじゃないか?
ネットワーク相談室の方がいい気がする。。
356:デフォルトの名無しさん
08/05/24 17:05:24
Network Managementで接続を列挙するとか
wininetでonline/offlineをとるとか
357:デフォルトの名無しさん
08/05/24 17:31:55
wininet.dll が使えるなら(というか使えない環境のほうがレアだろうが)、
InternetGetConnectedStateEx だろう。
358:デフォルトの名無しさん
08/05/24 17:50:12
>>357
インターネット環境が無いと使えない某ソフトが確かそのAPIでチェックしてたような
勿論nopで埋めうわ何をするやmくぁwせdrftgyふじこlp
359:デフォルトの名無しさん
08/05/24 18:02:39
>>358
日本語でそっち関連の情報を提供してるとこある?
中国語とかならわんさかあるんだけど...
360:デフォルトの名無しさん
08/05/24 18:06:37
そんな物自分で勉強しろよ
スレ違いな上にグレーゾーンな事をここで聞くな馬鹿
361:デフォルトの名無しさん
08/05/24 18:09:26
>>359
英語を苦にしないならMSDN。
ていうか、なんで日本語版にはwininet関数が載ってないんだ。
362:デフォルトの名無しさん
08/05/24 18:22:47
昔はWinAPIの日本語ヘルプが付いてたのに、今やWin95時代から更新止まってる古い情報しか無いのはどうよ
そもそもMSKBですら最近は機械翻訳だらけだし、中国語とかの方が翻訳されてるなんておかしい
もう日本のIT技術者は世界から見捨てられてるという事?
363:デフォルトの名無しさん
08/05/24 18:23:14
>>350
デバイスドライバならともかく、
一介のアプリケーションで100%確実の保証は絶対無理だな。
364:デフォルトの名無しさん
08/05/24 18:24:59
>>362
おかげで、英語を読むことの抵抗感がなくなったから感謝しているw
日本のIT技術者はもっと世界に羽ばたけということだよ。
365:デフォルトの名無しさん
08/05/24 18:26:49
>>362
正解
366:デフォルトの名無しさん
08/05/24 18:32:43
まぁIMEが中国で開発されてるぐらいだから仕方ないか
日本のプログラマはもう用済みなんだろうな
367:デフォルトの名無しさん
08/05/24 18:39:15
英語も中国語もできる俺は勝ち組。
368:デフォルトの名無しさん
08/05/24 18:41:12
>>367
すぐにプログラマから足を洗って商売でも始めるんだ。
369:350
08/05/24 18:41:48
>>351-353
ですな~
信号を受けて50mS±10mSとかです。
皆さん親切だ。w
370:デフォルトの名無しさん
08/05/24 18:47:08
Windows上であるいじょう、確実な保障はできないが、
そのくらいの精度なら、大抵の環境で余裕だろ。
371:デフォルトの名無しさん
08/05/24 18:47:36
>>369
50±10ms ぐらいなら可能なはず。
Windows のタイマの精度が 16ms ぐらいだから結構ギリだがな。
リアルタイム性を Windows に求めるのは少しつらいかも知れん。
372:デフォルトの名無しさん
08/05/24 18:48:52
そこでRTLinuxですよ、俺は使ったこと無いけど
373:デフォルトの名無しさん
08/05/24 19:16:19
Windowsで精度を求めるなら。
URLリンク(msdn.microsoft.com)(VS.85).aspx
374:デフォルトの名無しさん
08/05/24 19:34:05
ダイアログに関する質問です。
SS_BITMAPを指定してスタティックコントロールを作って画像を表示した場合、画像がウィンドウより大きいとはみ出しますが、StretchBlt()のように固定サイズ内での縮小表示は出来ますか。
事前に何処かで縮小処理を行ったビットマップを読むしかないのでしょうか。
375:デフォルトの名無しさん
08/05/24 19:38:28
>>374
つ SS_REALSIZECONTROL
XP以降でダイアログのビットマップやアイコンが潰れてる元凶
376:350
08/05/24 19:50:25
やはり10mSの精度は無理っぽいですね。
出来たとしても15mSくらいが限界なんでしょうな。
全然分ってないけど、デバイスドライバーにすればタイムスライスの
壁は越えられるのでしょうか。。
377:デフォルトの名無しさん
08/05/24 19:51:39
>>375
手書きでリソースファイルを修正したら出来ました、ありがとうございます。
ResEdit1.4.3のバグでSS_REALSIZECONTROLをtrueにしてもリソースファイルに反映されないのが原因だったようです。
378:デフォルトの名無しさん
08/05/24 20:04:34
CreateWindow関数って使われなくなったのですか?
何故か、自動的にCreateWindowExAと解釈されてしまうのですが……。
ちなみに環境はVC++2008ExpOSはXP使ってます。
379:デフォルトの名無しさん
08/05/24 20:08:38
すみません自己解決しましたorz
マクロのコンパイルエラーだった。
380:デフォルトの名無しさん
08/05/24 20:21:55
>>376
タイムスライスの壁は越えられないこともないが下手な実装だと Windows 全体が不安定になるわな。
デバイス側から割り込みをかけられる機構があるなら手っ取り早い。(割り込みはほぼ最大優先度で処理されるため。)
381:デフォルトの名無しさん
08/05/24 20:51:01
Webダウンローダー等でダウンロードしたファイル名に
?等が入っている場合があるのですが、これは問題ないのですか?
382:デフォルトの名無しさん
08/05/24 20:58:11
>>381
問題あり
ウイルスに感染していると自動的に?等が入る仕組みなので中身を見る前に捨てましょう
383:デフォルトの名無しさん
08/05/24 21:02:10
>>382
例えば
.cgi?name=abcd等では?
384:デフォルトの名無しさん
08/05/24 21:07:51
せめてAPIの質問してくれよ
385:デフォルトの名無しさん
08/05/24 21:12:11
>>384
ファイルの新規作成では?使えないのに
CreateFileが?使えるのは何故ですか?
386:デフォルトの名無しさん
08/05/24 21:14:13
>>376
> Windows XPで外部信号に対して
今実装してる方法では、どうやって信号取得してるの?
もうちょっと話が具体的にならないと、これ以上アドバイスできない。
387:デフォルトの名無しさん
08/05/24 21:14:41
>>385
Explorerのバグだろ
".htaccess"とかも作成できない
388:デフォルトの名無しさん
08/05/24 21:17:57
>>387
バグですか、
?をファイル名に含むファイルをプログラムが生成する事に何か問題はありますか?
389:デフォルトの名無しさん
08/05/24 21:19:35
そんな事知るか
MSに聞け
390:デフォルトの名無しさん
08/05/24 21:20:20
>>389
あなたの予想で構いません
391:デフォルトの名無しさん
08/05/24 21:21:51
>>387
それについてはこういう理由
URLリンク(blogs.msdn.com)
392:デフォルトの名無しさん
08/05/24 21:25:46
>>391
ありがとうございます。
393:デフォルトの名無しさん
08/05/24 21:34:14
>>391
以前その記事を見てバグだと確信した
・拡張子を表示しない設定にしていても".txt"のようなファイル名は拡張子含めて表示すればいい
・拡張子を表示する設定にしていれば".txt"のようなファイルを作成できるようにすればいい
・そもそも拡張子を表示しない設定なんて不要 (セキュリティ的に)
選択肢は色々あるし、.htaccessなんて比較的PCに詳しくない人間でも作る時代なのに
Win95以来から今に至るまで放置状態なんて開発者の傲慢だろ
自分でシェル拡張作れとか、もうアホかと
394:デフォルトの名無しさん
08/05/24 21:39:21
・そもそも拡張子でのファイル識別がアホ
395:350
08/05/24 21:39:23
>>386
未だ具体的な実装レベルの話にはなっていません。
Windowsで10mS応答は無理(?)なのでリアルタイム処理が必要な
部分は機器側で実装しないと無理~・・・のような話をしている段階です。
396:デフォルトの名無しさん
08/05/24 21:41:23
>>394
Macみたいにファイルの先頭にゴミ付けて識別するのもどうかと思う
397:デフォルトの名無しさん
08/05/24 21:41:52
この流れの中で質問するのは恐縮なのですが、「Wininet」を使用したFTP通信で困った状態になっています。
APサーバからファイルサーバ上の複数のFTPサイトに対して、ファイルをFTP PUTするサービスがあるのですが、
特定のFTPサイトだけ「550 access denied」になってしまいます。
ファイルサーバ上のFTPサイトは「書き込み:可」になっていますし、フォルダの権限も同様です。
新規ファイルのPUTなので上書きに失敗している訳でもありません。
使用しているユーザーは共通のものを使っているので、他のFTPサイトにPUTできることから、
権限は足りていると判断しています。でも、アクセス拒否エラーが発生してしまいます。
ファイルサーバを再起動しても改善しません。
このような場合、他にどの点を疑って調査すれば良いでしょうか?
398:デフォルトの名無しさん
08/05/24 21:41:52
いい加減ファイルシステムにファイルタイプ情報持たせろよ
399:デフォルトの名無しさん
08/05/24 21:42:41
>>396
いつの話?
400:デフォルトの名無しさん
08/05/24 21:44:26
いまどき拡張子でタイプ判別なんてうんこプログラム書いてる奴はいないだろ…
401:デフォルトの名無しさん
08/05/24 21:45:27
>>400
つExplorer
402:デフォルトの名無しさん
08/05/24 21:47:09
>>398
Vistaで間に合わなかったアレか
403:デフォルトの名無しさん
08/05/24 21:49:16
>>393
いやちょっとまて、一体どこを読んだらそういう解釈になるんだよ。
そりゃまあ、世の中には.htaccessぐらい余裕で書ける婆ちゃんがいるかもしれんさ。
でもな、世の中はそーじゃねーんだよ。
だから一番バカに合わせておくんだ。
404:デフォルトの名無しさん
08/05/24 21:49:44
間に合わなかったっつーか、Windowsの機能として入れる計画は無くなった。
405:デフォルトの名無しさん
08/05/24 21:54:14
>>401
いやMS以外で
406:デフォルトの名無しさん
08/05/24 21:54:27
>>403
バカはPCを使わなくていい
バカに合わせると使いづらくなるだけ
バカは紙と鉛筆で十分
407:デフォルトの名無しさん
08/05/24 21:55:39
バカにはTablet PCでも与えてとけばおk
408:デフォルトの名無しさん
08/05/24 21:56:41
カプセルPCでおk
409:デフォルトの名無しさん
08/05/24 22:03:45
>>405
Windowsのファイルシステム系APIを使うほぼ全てのアプリがそうじゃない?
バイナリフォーマットを扱うアプリであれば、最初に拡張子で選別して、次に中身を見るだろうけど。
(適切かつ安全に見ることができないアプリも多いが)
410:デフォルトの名無しさん
08/05/24 22:09:35
あ~もういいや
411:デフォルトの名無しさん
08/05/24 22:16:11
やいいうも~あ
412:デフォルトの名無しさん
08/05/24 22:18:00
あぃいおまぁ
413:デフォルトの名無しさん
08/05/24 22:21:45
>>398
NTFSなら副次ストリームとか使えるけど、
古いファイルシステムも捨てられない。
Windowsは互換性をけっこう気にするからな。
414:デフォルトの名無しさん
08/05/24 22:27:31
古いファイルシステムってFATの事を言いたいのか?
USBメモリやSD/CFカードではまだまだ現役バリバリだろ
415:デフォルトの名無しさん
08/05/24 22:30:02
>>378
CreateWindowとCreateWindowExだったら、
どっちでもいいときは好きなほうを使えばいい。
仮に、CreateWindowが実在したとしても、どうせ中でCreateWindowExを呼ぶだけ。
それだったらCreateWindowはヘッダでCreateWindowExに展開する今の方式なら、
システムDLLがCreateWindowの実装を省ける分サイズ削減できる。
416:デフォルトの名無しさん
08/05/24 23:24:53
>>415
大抵内部で~Exを呼んでる (LoadLibraryとか)
むしろマクロで済ませてるCreateWindowが特殊
417:デフォルトの名無しさん
08/05/24 23:50:21
>>395
10mS精度ぐらいならおおむねできるけど、ほかの処理で数百ミリ遅れることは多々ある。だからリアルタイムを現実的に無理。デバイスドライバでも同じ。
でもHALでリアルタイム実行させたり、windowsを仮想化させてリアルタイム実行させるるソフトがあるから、リアルタイムHALやRTXでググってみれれ
418:デフォルトの名無しさん
08/05/25 09:35:17
>>397
ほかのFTPソフトを使うとそのサイトにはうpできるんんか?
419:デフォルトの名無しさん
08/05/25 09:53:00
んんか?
420:デフォルトの名無しさん
08/05/25 10:01:00
できるんんか の検索結果 約 1,850,000 件
w
421:デフォルトの名無しさん
08/05/25 10:02:13
よく見たら一つ上のレスを真似しただけかな
実行させるるソフト
ググってみれれ
今時カナ打ちかよw
422:デフォルトの名無しさん
08/05/25 10:41:50
かな入力の方が日本語のタイピングは速い。
423:デフォルトの名無しさん
08/05/25 10:45:00
というのは間違い。
424:デフォルトの名無しさん
08/05/25 10:47:13
キーをタイプする回数が減るから事実。
425:デフォルトの名無しさん
08/05/25 10:51:25
かな入力じゃ10分間で5000タッチできる気がしない
426:デフォルトの名無しさん
08/05/25 10:56:24
それは慣れていないだけ。
427:デフォルトの名無しさん
08/05/25 11:07:29
まあどうせ俺なんか入力速度に脳が追いつかないからどうでもいいんだけどね
428:デフォルトの名無しさん
08/05/25 11:09:03
しかし日本語は読みから漢字に変換しなければならないので、
いくら読みがなを早く入力できたからといって、それほど早くはならない気がする。
完璧に変換してくれるIMEは存在しないし。
429:デフォルトの名無しさん
08/05/25 11:28:27
そこでT-Code
430:デフォルトの名無しさん
08/05/25 12:54:12
ライターじゃあるまいし日本語のタイピング速度なんてどうでもいいだろ
それともひまわりでプログラミングしてるのか?
431:デフォルトの名無しさん
08/05/25 12:57:08
日本語のレスに対する突っ込みだったから。
432:デフォルトの名無しさん
08/05/25 13:04:24
>>417=>>422=>>431って事でいいの?
とりあえず君がカナ入力マンセーなのは分かったからもういいよ
433:431 = 424 = 422;
08/05/25 13:07:11
>>432
違う。俺はローマ字入力。事実を伝えただけ。スレ違いなので終わる。
434:デフォルトの名無しさん
08/05/25 13:08:42
なんで怪しい日本語になるダヨ
435:デフォルトの名無しさん
08/05/25 13:14:17
/* ここまで雑談 */
436:デフォルトの名無しさん
08/05/25 13:15:51
>>433
431 = 424 = 422;
↑
こうやって反射的にセミコロンを付けてしまう事ってよくあるよねw
437:433
08/05/25 13:19:53
>>436
板を考慮して付けた。
438:デフォルトの名無しさん
08/05/25 13:23:08
もういいから
439:デフォルトの名無しさん
08/05/25 13:31:24
こういう空気読めない奴ってホントどこにでもいるな
リアルでも空気読めなくて周囲からウザく思われてるんだろうな
440:デフォルトの名無しさん
08/05/25 13:34:53
>>439
いい加減ウザイよ君
441:デフォルトの名無しさん
08/05/25 15:33:05
質問がないと暇を持て余すんだろう
質問来ても、その調子なら邪魔以外の何者でもないが・・・
442:デフォルトの名無しさん
08/05/25 16:37:35
int 21Hとか割り込み命令って今でも使える?
Win32API使わないとだめ?
443:デフォルトの名無しさん
08/05/25 17:05:30
試せば分かるだろ
444:デフォルトの名無しさん
08/05/25 18:55:52
>>442
DOSアプリからなら使えるよ。32ビットアプリだとクラッシュ。
9x系だと確か一部のものはクラッシュしなかったような?
動かないだろうけど
445:デフォルトの名無しさん
08/05/25 19:09:09
>>444
後半二行の不確かな情報は要りません
446:デフォルトの名無しさん
08/05/25 20:43:34
>>444
DOSアプリのみということは、
Win32 コンソールアプリではだめなのか
なるほど
447:デフォルトの名無しさん
08/05/25 20:46:32
Invalid icon format ってエラーが出るんですけど、アイコンの絵そのものが
問題あるってことですよね?XPのペイントで書いてみたのが問題ですか?
448:デフォルトの名無しさん
08/05/25 20:48:03
アイコンって、大きさ正方形だったかサイズ固定だったか
決まりがあったような気がする。
449:デフォルトの名無しさん
08/05/25 20:50:56
>>447
icon≠windows bitmap
そもそもフォーマットが違います
アイコンエディタを使いましょう
450:デフォルトの名無しさん
08/05/25 20:57:13
>>448
それはgoogle検索で出てきたので、32×32にしてます。
>>449
そうなんですか、分かりました。
皆さんありがとうございました。
451:デフォルトの名無しさん
08/05/25 21:23:51
そういえばVistaのPNG形式アイコンがあるとRC.EXEがエラー吐いたりしたけど
最近のバージョンのRC.EXEでは直ってるの?
452:デフォルトの名無しさん
08/05/25 21:48:19
>>444
9xで、32ビットアプリケーションからファンクションコールをするとしたら、
DeviceIoControlを呼ぶのが正式な手段。全部使えるわけではないけど、
ディスクを直接読み書きするときとかに使った。
453:デフォルトの名無しさん
08/05/25 22:00:33
9xの話を今頃されてもオッサン乙で終わるのだが
454:デフォルトの名無しさん
08/05/26 00:19:42
ウィンドウプロシージャを差し替えたいんだけど、
なんかできないんだよね。
SetClassLong(hWnd, GCL_WNDPROC, (LONG)AnotherMyWindowProc);
この関数を用いる上でなんか注意点ある?
マウスやアプリのアイコン変更も反映されないんだけど。
455:デフォルトの名無しさん
08/05/26 00:33:58
注意点 msdnをよく読む事
456:デフォルトの名無しさん
08/05/26 00:43:49
>>453
そのオッサンのやりとりにお前が絡む必要はないのに、何が乙なんだ
457:デフォルトの名無しさん
08/05/26 00:45:43
俺の家の玄関に「硫化水素発生中」って貼った奴、氏ねよ
458:デフォルトの名無しさん
08/05/26 01:04:43
そのネタはもう旬を過ぎてるよ
459:デフォルトの名無しさん
08/05/26 01:06:41
まじでか
460:デフォルトの名無しさん
08/05/26 01:09:56
>>454
わろた
461:デフォルトの名無しさん
08/05/26 01:17:49
わらっつぁらめぇー
462:454
08/05/26 01:24:30
URLリンク(homepage1.nifty.com)
ここみてる限り間違ってないと思うんだがナー
463:デフォルトの名無しさん
08/05/26 01:33:14
>>462
それは良かったですね
464:デフォルトの名無しさん
08/05/26 01:37:50
とってもよかったでーす^^^;
465:デフォルトの名無しさん
08/05/26 01:53:01
>>462
赤字で書いてるとこと違う事をしてるのは、分かっててやってるの?
変更したクラスから新しくウィンドウを作るってんなら、それでいいんだけど。
466:デフォルトの名無しさん
08/05/26 11:46:16
どこをどう見ると間違ってないんだよw
SetWindowLong、SetWindowLongPtr、SetWindowSubclass使えよ
467:デフォルトの名無しさん
08/05/26 11:53:56
間違い探しかよw
ぱっと見てスルーしてたけど、SetClassLong使ってたのか
468:デフォルトの名無しさん
08/05/26 12:56:47
>>451
VS2005なら、Windows SDK6.0だか6.1入れてCLやRCをそちら付属品を
使うようにすればVista圧縮形式に対応できる。
VS2008はRCでもMSDEVリソースエディタでも標準サポート
469:デフォルトの名無しさん
08/05/26 15:43:24
>>452
9xだと本当にDOSが動いてるからね。
NTだと単なるエミュだし
470:デフォルトの名無しさん
08/05/26 15:52:02
>>468
さんくす
RC.EXEだけでも入れ替えておけばビルド後のイベントでゴニョゴニョする必要は無さそうだw
IDEのリソースエディタでアイコンなんて作らないからそっちはまぁいいや
471:デフォルトの名無しさん
08/05/26 16:26:48
>>470
VS2005だと、圧縮形式アイコンが含まれる.rcファイルがMSDEVで開けないんで注意
472:デフォルトの名無しさん
08/05/26 16:35:26
VC2005はmsdevじゃなくてdevenvだったと思うが。
そんな俺はVC6ユーザー
473:デフォルトの名無しさん
08/05/26 17:01:52
URLリンク(imepita.jp)
このような四角いボタンってどうやって作るんですか?
474:デフォルトの名無しさん
08/05/26 17:03:04
言い忘れました。×ボタンです。
475:デフォルトの名無しさん
08/05/26 17:09:14
クローズボタンのことが聞きたいのかオーナードローのボタンのことが聞きたいのか
476:デフォルトの名無しさん
08/05/26 17:25:53
1. Toolbar を作る
2. ImageList を作る
3. [×] のビットマップを作る
4. 3. のビットマップを 2. の ImageList に追加する
5. ImageList を Toolbar にセットする
6. Toolbar に 3. のビットマップを持つボタンを追加する
477:デフォルトの名無しさん
08/05/26 18:08:23
指定したiniファイルのキーを削除するapiを教えてください
478:デフォルトの名無しさん
08/05/26 18:08:57
やだ
479:デフォルトの名無しさん
08/05/26 18:55:43
WritePrivateProfileStringで
lpAppNameにセクション名
lpKeyNameにキー名
lpStringにNULL
lpFileNameにiniファイルのパスを指定すると
指定したセクション内のキーが消える
480:デフォルトの名無しさん
08/05/26 19:04:01
>>479
まじっすか^^
WritePrivateProfileStringで値をNULLにすると消えるんですね
これは知らなかった。ありがとうございます!
481:479
08/05/26 19:04:52
ってかMSDN読めよ
482:デフォルトの名無しさん
08/05/26 19:05:09
MSDNも読まずにWin32APIを使おうとする奴の気が知れない
483:デフォルトの名無しさん
08/05/26 19:05:36
つーか引数どうやって知ったのかw
そこに説明もあると思うんだがなあ
484:デフォルトの名無しさん
08/05/26 19:33:34
MSDNなんて読まなくていい
ここで質問するだけで丁寧な解説が日本語で得られる
お人好しな人間ほどうまく扱えば便利なものは無い
というのが俺の妄想
一応言っとくが俺はちゃんとMSDNで調べる派だからな
485:デフォルトの名無しさん
08/05/26 19:36:57
俺みたいに嘘を教える奴も居るから気をつけないと
486:デフォルトの名無しさん
08/05/26 19:40:39
俺みたいにかく乱する奴もいるからry
487:デフォルトの名無しさん
08/05/26 19:45:04
お前ら必死でワロタ
488:デフォルトの名無しさん
08/05/26 20:31:16
VC.net2003 + SDKで、ImageList使える?
ビルドは通るが、CreateWindowExでウィンドウ作成した時点で、'hoge, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null' から
型 '_IMAGELIST' を読み込めません。って出て落ちるんだけど・・・
489:デフォルトの名無しさん
08/05/26 20:37:28
DiskcopyコマンドってどういうAPI使ってフロッピーに出力してるの?
このコマンドに限らずブート領域を書き込めるのって同じやり方だと思うんだけぢ
少なくともfoutやCopyFileではなさそう。
490:デフォルトの名無しさん
08/05/26 20:39:08
> 思うんだけぢ
どこの方言でぢか?
491:デフォルトの名無しさん
08/05/26 20:43:52
アマゾン地方の方言が出てしまいました
492:デフォルトの名無しさん
08/05/26 20:47:15
DeviceIoControlとかじゃないの
知らんけど
493:デフォルトの名無しさん
08/05/26 20:55:32
>>489
DDKを見ましょうね。
494:デフォルトの名無しさん
08/05/26 21:04:43
やだ
495:デフォルトの名無しさん
08/05/26 23:06:57
>>489
NTならCreateFileで"\\\\.\\A:"のようにすると生のドライブを開ける。SDKにも書いてある。
9xなら>>452。KB125712やKB174569など。
496:デフォルトの名無しさん
08/05/26 23:10:48
あした試してみよう
497:デフォルトの名無しさん
08/05/26 23:27:50
もうすぐ明日だろ
498:デフォルトの名無しさん
08/05/26 23:56:37
関数を動的に作ってウィンドウプロシージャとして渡す事ってできないんですか?
クラスのメンバ関数をウィンドウプロシージャにできないのが、
理屈ではよくわかるんですけど、なんか納得できなくてw
static使って場合分けするのもなんか反則的というか、やりたいことと違う気がして…
クラスのコンストラクタで関数を動的に作ってコントロールのプロシージャとして使い、
デストラクタでコントロールは期すると共に関数も破棄できないかなぁと。
…ゴメンナサイ、なんかもう投げやりです。
499:デフォルトの名無しさん
08/05/27 00:06:12
グローバル関数でのプロシージャで
各クラス内の自作プロシージャにそれぞれ処理を割り振ったりすれば良いんじゃない?
500:デフォルトの名無しさん
08/05/27 00:09:06
つーか自分でラッパー書けばいいだけじゃね
501:デフォルトの名無しさん
08/05/27 00:10:07
僕ハッカー!!!
502:489
08/05/27 00:11:11
CreateFile
DeviceIoControl
WriteFile
でなんかフロッピーに出してるのは判った
しかしこの方法でフロッピーの中にファイルを作る方法がわからなう
503:デフォルトの名無しさん
08/05/27 00:13:47
FAT32の仕組みでも覚えろ
504:デフォルトの名無しさん
08/05/27 00:14:44
>>498
URLリンク(web.archive.org)
ようするに、静的メンバ関数の中から
何らかの方法でウィンドウに対応するオブジェクトを得て、
そのオブジェクトの非静的メンバ関数に処理を渡せばいい。
ウィンドウクラスの場合、次のようなものを使って
オブジェクトへのポインタを保存する例が多い。
Get/SetProp
Get/SetWindowLongPtrとウィンドウクラスごとの追加データ
Get/SetWindowLongPtrとGWLP_USERDATA
ちなみに、ATLは本当に動的に関数を作って対処している。
URLリンク(hp.vector.co.jp)
505:デフォルトの名無しさん
08/05/27 00:16:02
>>502
逆に、ファイルがある状態のフロッピーディスクを
吸い出して中身を眺める、もちろんFATの構造の解説と一緒に。
506:デフォルトの名無しさん
08/05/27 02:10:13
アプリケーションへのアイコン設定は、
検索で調べると必ず .rc への記述方法が紹介されてますが、
.rc を経由せずに .cpp のプログラムのみで設定って出来るんでしょうか?
よろしくお願い致します。
507:デフォルトの名無しさん
08/05/27 03:17:45
>>502
何がしたいのかよくわからんが
フロッピーの中にファイルを作るのならばCreateFileでいいと思うが。
diskcopyだったらセクタを全部コピーすればいい
508:デフォルトの名無しさん
08/05/27 07:09:57
あるウィンドウがHWND_TOPMOSTで最善面になっているかどうかを判断するにはどうすればいいのでしょうか?
509:デフォルトの名無しさん
08/05/27 07:58:26
GetWindowLong(hwnd, GWL_EXSTYLE) & WS_EX_TOPMOST
510:デフォルトの名無しさん
08/05/27 08:25:20
>>504
atlthunk.cppが凄い
てかこんなのMSの中の人でないと書けないだろw
511:デフォルトの名無しさん
08/05/27 08:45:38
書ける奴はいくらでもいるだろうが、実際に、書こう思う奴は、それほどいない。
MFCはHWNDとベースクラスへのポインタを、
いわば、std::map< HWND, Hoge >的なもので管理していて、メッセージが来るたびに検索してると聞いたが。
512:デフォルトの名無しさん
08/05/27 09:33:10
>>511
実際に中身を見てから言って欲しいね
513:デフォルトの名無しさん
08/05/27 09:46:49
コード生成はWindowsより前なら常套手段だから昔の人なら楽勝
514:デフォルトの名無しさん
08/05/27 09:52:23
そんな話はしていない
いいから当該ソースを見ろ
515:デフォルトの名無しさん
08/05/27 10:24:54
WinMainからDialogBoxでモーダルダイアログを作成しております。
DialogProc内から例外をthrow(あるいはRaiseException)したところ、
WinMainで正常にcatch出来ました。
ところがDialogProcからさらに孫ダイアログを作成し、
孫ダイアログのDialogProc内から例外をthrowしたところ、
子ダイアログのDialogProcでcatch出来たのですが、
return後にAccess violationで落ちてしまいました。
どうすればreturn後に処理を続行できるのでしょうか?
516:デフォルトの名無しさん
08/05/27 10:27:53
長くて恐縮ですがソースを貼らせて頂きます。
INT_PTR CALLBACK proc2(HWND wnd, UINT msg, WPARAM w, LPARAM) {
switch (msg) {
case WM_INITDIALOG: return TRUE;
case WM_COMMAND:
switch (LOWORD(w)) {
case IDOK:
EndDialog(wnd, LOWORD(w));
throw std::exception("HOGE!"); // 例外をthrow
case IDCANCEL: EndDialog(wnd, LOWORD(w)); return TRUE;
} break; } return FALSE;
}
INT_PTR CALLBACK proc1(HWND wnd, UINT msg, WPARAM w, LPARAM) {
switch (msg) {
case WM_INITDIALOG: return TRUE;
case WM_COMMAND:
switch (LOWORD(w)) {
case IDOK:
try {
DialogBox(GetModuleHandle(0), MAKEINTRESOURCE(IDD_2), wnd, proc2);
} catch (const std::exception&) {}
return TRUE; // return後にAccess violation
case IDCANCEL: EndDialog(wnd, LOWORD(w)); return TRUE;
} break; } return FALSE;
}
int WINAPI _tWinMain(HINSTANCE, HINSTANCE, LPSTR, int) {
try {
DialogBox(GetModuleHandle(0), MAKEINTRESOURCE(IDD_1), 0, proc1);
} catch (const std::exception&) {
} catch (...) {} return 0;
}
517:デフォルトの名無しさん
08/05/27 10:44:00
>>515
C++以外のスタックフレームを飛び越えるthrow~catchって
頭の悪いlongjmpと同じだと思うがどうか
518:デフォルトの名無しさん
08/05/27 11:01:23
文字列の"123.45"をfloatに変換するAPIを教えてくだせえ
519:デフォルトの名無しさん
08/05/27 11:07:35
なんでわざわざAPI使うん?
520:デフォルトの名無しさん
08/05/27 11:11:36
wsprinf があるんだから wsscanf もあるにちがいないw
521:デフォルトの名無しさん
08/05/27 11:13:22
atofの返値がfloatじゃなくてdoubleだからって言いそうな気がする。
522:デフォルトの名無しさん
08/05/27 11:17:36
いやdoubleでもいいからさっさと教えろよ
どうせ知らないだろーけど
523:デフォルトの名無しさん
08/05/27 11:36:08
VarR4FromStr
VarR8FromStr
524:デフォルトの名無しさん
08/05/27 12:23:01
>>520
wsscanfならMSのFTP鯖にソースが置いてある
Win16時代の物みたいだから今でも使えるかどうかは知らん
525:デフォルトの名無しさん
08/05/27 12:30:58
crtdll.dllからscanfをインポートして使う・・・ってのはAPIの範疇というと苦しいか?
526:デフォルトの名無しさん
08/05/27 12:52:43
msvcrt.dllならいいんじゃね
527:デフォルトの名無しさん
08/05/27 13:07:36
crtdllとかmsvcrtにあるprintfとかscanfって_stdcallじゃなくて_cdeclでいいんだよね?
528:デフォルトの名無しさん
08/05/27 14:28:31
wsprintfもcdeclだろ
可変長なのにどうやって呼び出し先でスタックポインタを戻せるんだよ
529:デフォルトの名無しさん
08/05/27 15:10:26
うるせークズ
530:デフォルトの名無しさん
08/05/27 15:13:58
>>528
キモいよ
531:デフォルトの名無しさん
08/05/27 15:14:00
可変長のはともかく、strcpyとかもCDECLでいいんだろうか?
532:デフォルトの名無しさん
08/05/27 15:16:09
試せばいいだろハゲ
533:デフォルトの名無しさん
08/05/27 15:23:22
そんなの関係ねーだろクズが
534:デフォルトの名無しさん
08/05/27 15:31:18
関係ねー事聞くなカス
535:デフォルトの名無しさん
08/05/27 15:35:03
ノ
(゚Д゚)
( (7
< ヽ
536:デフォルトの名無しさん
08/05/27 15:38:25
>>531みたいなのは実際試した場合間違っていても動いちゃうから困りもの
537:デフォルトの名無しさん
08/05/27 15:44:25
>>535
なんだその態度は!!
538:デフォルトの名無しさん
08/05/27 16:42:51
>>536
デバッグビルドなら呼び出し後にchkstkでESPがチェックされるから大抵気付く
539:デフォルトの名無しさん
08/05/27 18:25:05
FindWindow関数によってハンドルを調べたウィンドウを強制的に移動させるにはどうしたらよいでしょうか。
SendMessage関数でWM_MOVEを送っても移動しないことがあります。
540:デフォルトの名無しさん
08/05/27 18:26:36
WM_MOVEは動いた後に送られてくるメッセージなのに
それで動くウインドウがあるのか?
541:デフォルトの名無しさん
08/05/27 18:28:35
正しくはどのメッセージを送ればよいのでしょうか?
542:デフォルトの名無しさん
08/05/27 18:29:27
>>541
MoveWindow 関数で
543:デフォルトの名無しさん
08/05/27 18:30:30
ありがとうございます。
544:デフォルトの名無しさん
08/05/27 18:32:30
SetWindowPosとかもあるし、好きなので。
545:デフォルトの名無しさん
08/05/27 19:17:01
>>540
WM_SIZEを送ると動くウィンドウならあるよ
546:デフォルトの名無しさん
08/05/27 19:29:00
動かないウィンドウもあるってことですね。
547:デフォルトの名無しさん
08/05/27 19:49:39
>>517
遅レスすいません。
プロシージャ内で気軽にSTLなどを使いたかったのですが、邪道だったでしょうか・・・。
とりあえずプロシージャをreturnする前に全てcatchする方向で再考してみます。
548:デフォルトの名無しさん
08/05/27 19:50:20
STLが○| ̄|_にみえたのは俺だけですか?
549:デフォルトの名無しさん
08/05/27 19:53:30
>>548
面白くないよ
550:デフォルトの名無しさん
08/05/27 20:02:12
確かDispatchMessageを例外捕捉しとくとウィンドウ内部の例外が捕まえられたような
551:デフォルトの名無しさん
08/05/27 20:07:35
>>549は大爆笑して悔しかったんだろうなぁ
552:デフォルトの名無しさん
08/05/27 20:09:17
そもそもAPIから呼ばれるコールバック関数内で例外を投げるなんてアホとしか思えない
553:デフォルトの名無しさん
08/05/27 20:09:49
>>548=>>551
はいはいわろす
554:デフォルトの名無しさん
08/05/27 20:11:58
>>535,537
ワロタw
555:デフォルトの名無しさん
08/05/27 20:41:01
>>550
VC++ではC++例外を構造化例外で実装してるようだから捕まえられるかもしれないけど
C++言語的には未定義動作だからやめた方がいい
556:デフォルトの名無しさん
08/05/27 20:56:03
未定義とか不定とかどうでもいい
今時VC++以外でWin32開発してる奴の方が悪い
557:デフォルトの名無しさん
08/05/27 20:57:48
VCなんてもう終わってるだろうがw
558:デフォルトの名無しさん
08/05/27 21:27:35
終わってません
というか終わりません
559:デフォルトの名無しさん
08/05/27 22:08:58
MSではVBについで売れてる言語製品だしな
560:デフォルトの名無しさん
08/05/27 22:13:15
でも、そのVB6も来月で...
561:デフォルトの名無しさん
08/05/27 22:13:38
何その時代錯誤
562:デフォルトの名無しさん
08/05/27 22:39:04
俺も516みたいにWinMainにcatch書くことはあるけど、
その場合はエラーログ書いたりメッセージ出したりして、
とっととExitProcessするだけだな。
563:デフォルトの名無しさん
08/05/28 11:16:09
VBwwwwwwwwwwwwwwwwwwwwww
564:デフォルトの名無しさん
08/05/28 18:11:40
Visual Baka
565:デフォルトの名無しさん
08/05/28 18:21:52
violence bokan
566:デフォルトの名無しさん
08/05/28 19:41:40
>>564
C、C++に挫折した馬鹿しか使わない言語という事ですね?
567:デフォルトの名無しさん
08/05/28 20:34:14
int wmain()
{
HMODULE hModule;
HBITMAP hBitmap;
int count = 0;
std::wcout.imbue(std::locale("japanese"));
while (1)
{
hModule = LoadLibrary(L"hoge.exe"); //単一で数MBのBMPリソースのあるファイル
hBitmap = LoadBitmap((HINSTANCE)hModule, L"#200"); //そのリソース番号
if (!hBitmap)
{
FreeLibrary(hModule);
std::wcout << L"画像読み込み失敗" << std::endl;
return 1;
}
FreeLibrary(hModule);
count++;
std::cout << count << std::endl;
}
return 0;
}
大した回数(自分の環境では45回)も行かない内に画像リソースの読み込みに失敗します。
原因は何でしょうか。
環境はWinXP Home SP3、VC++2008EEです。
上記はあくまで耐久テスト用ですが、実際のソフトも仕様上ファイルのロード→アンロード回数は予測出来ません。
568:デフォルトの名無しさん
08/05/28 20:43:12
>>567
MSDNライブラリでLoadBitmap引いたらちゃんと注意書きがあるから嫁。
569:デフォルトの名無しさん
08/05/28 20:43:21
>>567
DeleteObject(hBitmap)してないからでは?
570:デフォルトの名無しさん
08/05/28 21:05:12
NT系ならDeleteObjectしなくても約10000回Loadできるはずだが
571:デフォルトの名無しさん
08/05/28 21:24:59
なんでできるの?画像がたとえば4MBだとして、500も読めば
アプリの仮想アドレス空間が枯渇するぜ?
572:デフォルトの名無しさん
08/05/28 21:27:54
外からウィンドウ内にカーソルを持って来ると、大きさ変更するときの ←→ の
形のままで普通のカーソルの形に戻りません。
CreateWindowEx、WS_OVERLAPPEDWINDOW 以外に何かいるんですか?
573:デフォルトの名無しさん
08/05/28 21:29:04
GetWindowLong, SetWindowPos 等で失敗すると 0 が返る関数は
製作者が引数に渡す値をしくじった時に失敗するのは当然ですが
絶対に動作するはずの引数で、OSが何かしらの問題で失敗する事ってありますか?
他人が書かれているコードを見ても、成功する事が前提で書かれているものばかりで問題ないのか疑問です
このような関数が失敗する時は、OSが動いているのも不思議なくらいの状態で いつOSが止まってもおかしくない状況なので
アプリケーションで取得できなかった値を使用して不具合が出るよりOSの方が重症なのでエラーチェックを行っていないという事なのでしょうか?
誰か詳しい方 教えてください
574:567
08/05/28 21:33:00
回答ありがとうございます。
耐久テストのコードではその方法で解決しました。
実際のコードはhBitmapをウィンドウプロシージャのスタティックなローカル変数として宣言し、メッセージ処理先(LBN_SELCHANGE)で画像リソースを呼び出しています。
これを止めてメッセージの処理先で
static HBITMAP hBitmap;
と宣言したら以下のコンパイルエラーが出てしまい、どうにも出来ません。
error C2065: 'hBitmap' : 定義されていない識別子です。
575:デフォルトの名無しさん
08/05/28 21:35:28
>>572
WNDCLASS の hCursor にカーソルを設定する
あるいは WM_SETCURSOR メッセージで SetCursor を呼びカーソルを設定する
576:デフォルトの名無しさん
08/05/28 21:42:58
>>575
ありがとうございました。
577:デフォルトの名無しさん
08/05/28 21:43:16
>>574
Win32API以前の問題だ。
自分でなんとかしろ。
578:デフォルトの名無しさん
08/05/28 22:04:56
>>577
ダイアログに画像を表示したらDeleteObject()しても良かったんですね…。
VB.NETで同じようなコードをBitmapオブジェクトで行ったらエラーが出たのでWin32APIでもそうだと勘違いしていました。
C++でGUIアプリを作り始めてまだ1週間ですが、少し背伸びし過ぎました。
579:デフォルトの名無しさん
08/05/28 22:05:28
C言語すら禄に理解してない癖に何が耐久テストだよ
580:デフォルトの名無しさん
08/05/28 22:07:06
なんだVisual Bakaプログラマだったのかw
581:デフォルトの名無しさん
08/05/28 22:37:55
>>579,580
罵るしか能の無い奴は消えろ
582:デフォルトの名無しさん
08/05/28 22:45:51
いやです
583:デフォルトの名無しさん
08/05/28 22:47:12
それぐらいしか楽しみがないんだろうから許してやってもいいんじゃ
584:デフォルトの名無しさん
08/05/28 22:50:05
つうか罵られるのが嫌なら2ちゃんで質問しなければいいのでは
585:デフォルトの名無しさん
08/05/28 23:01:23
当事者以外にも罵り文を見て不快に思う人がいるだろう
586:デフォルトの名無しさん
08/05/28 23:02:54
不快に思うのが嫌なら2ちゃんに来なければいいのでは
587:デフォルトの名無しさん
08/05/28 23:03:23
次にお前は「そんな奴が2ちゃん見るなよ」と言う。
って書こうと思ったのに
588:デフォルトの名無しさん
08/05/28 23:09:08
MSDNすら読まずに質問する奴なんて叩かれて当然
589:デフォルトの名無しさん
08/05/28 23:09:13
○○が嫌なら××しなければいいだろう
この言葉だけでは解決できない事がどれだけ溢れてると思ってるんだ
590:デフォルトの名無しさん
08/05/28 23:10:09
>>588
なら「MSDN読め」でいい、独り言を言うように罵り煽る奴はいらん
591:デフォルトの名無しさん
08/05/28 23:13:03
>>590
MSDN読め
592:デフォルトの名無しさん
08/05/28 23:21:30
それくらい察して欲しかったって言うのが本音。
593:デフォルトの名無しさん
08/05/28 23:25:43
話を理解してない馬鹿は知らないならそれぐらい察してレスしないでMSDN読んでほしかったってのが本音
594:デフォルトの名無しさん
08/05/29 03:55:50
VBwwwwwwwwwwwwwwwwwwwwww
595:デフォルトの名無しさん
08/05/29 08:10:11
複数スレッドから参照されるキューへの出入力で排他処理を行いたいのですが、
カウンタ1の無名セマフォとクリティカルセクションではどちらの使用が適切なのでしょうか?
596:デフォルトの名無しさん
08/05/29 08:30:48
クリティカルセクション
597:デフォルトの名無しさん
08/05/29 08:48:08
このスレの住人ってVBプログラマいないの?
まあVBだとネイティブなAPI使わない事が
多いだろうから少ないかもね
598:デフォルトの名無しさん
08/05/29 09:51:07
ドットロネットロに移行してるだろうし
599:デフォルトの名無しさん
08/05/29 10:14:39
>>596
ありがとうございます。
600:デフォルトの名無しさん
08/05/29 12:47:24
Virtual Batouスレですね
601:498
08/05/29 13:22:09
>>504
質問しといて、亀でゴメンナサイ…
やはりキーとなるデータ使ってマップみたいなことするのが一般的なんですね…
…動的に関数作れるのならちょっと試してみます
ありがとうございました。
602:デフォルトの名無しさん
08/05/29 14:34:11
マップつっても二分探索なら大して負荷にならんだろ
603:デフォルトの名無しさん
08/05/29 16:15:07
おまんこ
604:デフォルトの名無しさん
08/05/29 16:32:52
んがくく
605:デフォルトの名無しさん
08/05/29 21:53:12
画面を分割してそれぞれに違うものを表示するのは子ウィンドウを使っているのですか?
例えばIEだと、HPを表示する部分とお気に入り・履歴などが分かれていますが、あれも子ウィンドウを使っているのでしょうか?
606:デフォルトの名無しさん
08/05/29 21:56:59
>>605
そうだと思うよ。
SPYとかで調べてみたらいいんじゃないかな。
607:605
08/05/29 22:13:08
>>606
SPYを使えばそういうことまで分かるのですか
ダウンロードしてみようと思います
ありがとうございました
608:デフォルトの名無しさん
08/05/29 22:56:43
Spy++ってタダで入手できたか?
てか、今やWin32/C++使いから見ると商用版VisualStudioの価値って
リソースエディタとCRT/ATL/MFCのソースコードとSpy++ぐらいなんだよなー
609:デフォルトの名無しさん
08/05/29 23:00:11
SDKのUISpyでも十分目的は果たせると思うお
610:デフォルトの名無しさん
08/05/29 23:05:04
フリーソフトでスパイよりいいのあるお
611:デフォルトの名無しさん
08/05/29 23:25:35
Spy++の代わりにフリーソフト使ったら負けかなと思ってる
612:デフォルトの名無しさん
08/05/30 00:23:14
Winspactor Spy使ってる
613:デフォルトの名無しさん
08/05/30 00:28:05
Winsp「e」ctorだろう
614:デフォルトの名無しさん
08/05/30 00:33:25
昔のPlatform SDKにサンプルとしてSpyってのがあったんだけどな。
ソース付きで、Spy++のちょっとショボくなったやつ。
今はそういうサンプル全部無くなってるな。
615:デフォルトの名無しさん
08/05/30 00:46:35
>>614
あれ、ちょっとどころか相当ショボイだろ
URL忘れたけど、MSサイトのどこかに
解凍すると130MBのchmが出てきて大量にSDKサンプルの入ってるやつがあった
その中におまいさんの言ってるSpyのソースコードも入ってるよ
616:デフォルトの名無しさん
08/05/30 00:49:07
そんなにショボかったかw
見たの10年くらい前だから、もうよく覚えてないな。
617:デフォルトの名無しさん
08/05/30 01:23:01
>>616
歳がばれるぞw
618:デフォルトの名無しさん
08/05/30 01:42:32
現役大学生か。若いな。
619:デフォルトの名無しさん
08/05/30 02:33:33
spyそのものはspy++が出るまでSDKの普通のツールだったしな
620:デフォルトの名無しさん
08/05/30 08:56:51
MIIM_CHECKMARKS の
MIIMって何の略ですか?
Menu* だとは思うのですが.
621:デフォルトの名無しさん
08/05/30 09:35:02
MenuItemInfoMask
622:デフォルトの名無しさん
08/05/30 11:41:50
int main(int argc, char *argv[])
コンソールアプリだとこれで引数渡せるけど
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd)
APIじゃこう宣言されてるよね
非コンソールアプリを実行する時に
プログラム名 -オプション
ってやるにはどうすればいい?
623:デフォルトの名無しさん
08/05/30 11:43:40
>>615
探したけどみつからないお><
もうなくなちゃったのかな?
624:デフォルトの名無しさん
08/05/30 11:44:00
>>622
lpCmdLineに引数が入ってる
625:デフォルトの名無しさん
08/05/30 12:28:02
GetCommandLine
626:デフォルトの名無しさん
08/05/30 12:29:15
__argcと__argv
627:デフォルトの名無しさん
08/05/30 12:46:09
ついでにUnicodeであればlpCmdLineをCommandLineToArgvWに通すとLPWSTRの配列に分解してくれる
628:デフォルトの名無しさん
08/05/30 12:47:43
>>619
VC2の頃なんか普通にあったなSpy。アイコンもスパイ風の男で、VC4だかの初代Spy++は
そのアイコンに++の絵が付いただけ。
というかSpyの強化版だから「Spy++」になったわけだし
629:デフォルトの名無しさん
08/05/30 13:05:35
次のバージョンではSpy#になるんですね。わかります。
630:デフォルトの名無しさん
08/05/30 13:15:19
その次はSpy.NETになるんですね。わかります。
631:デフォルトの名無しさん
08/05/30 15:21:58
Spy.NETってもうなかったっけ?
632:デフォルトの名無しさん
08/05/30 15:28:33
URLリンク(www.spy.net)
633:デフォルトの名無しさん
08/05/30 16:22:32
ウィンドウで
Set/GetWindowLongがあるように
スレッドとかプロセス別に値収納する奴ってありますか?
634:デフォルトの名無しさん
08/05/30 16:35:56
>>633
スレッドはスレッドローカルストレージってやつでスレッド固有の値を保持できるよ。詳細はmsdnみろ
プロセスは普通にグローバル変数使えばいいんでは…?