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


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

Win32API質問箱 Build23
251 名前:デフォルトの名無しさん :04/09/29 11:17:32
GetGlyphOutline
曲線データだけどね。

252 名前:デフォルトの名無しさん :04/09/29 12:35:04
>>250
ベジェ曲線かBスプライン曲線について学んだ後の
方がいいと思うよ

253 名前:デフォルトの名無しさん :04/09/29 20:18:57
ファイルのマッピング管理をOSに任せる為に、
メモリマップドファイルを使っています。
この時、メモリへの書き込みに応じて
自動的にファイルサイズを拡張するにはどうしたらいいでしょうか。

試しにCreateFileMappingにmaximumSizeを与えてみたところ、
メモリにアクセスしなくてもmaximumSizeのサイズでファイルが作成されるようです。

OSがページフォルトを検出して勝手に拡張してくれると非常に楽なのですが、
不可能であれば代替策を教えていただけると助かります。

254 名前:デフォルトの名無しさん :04/09/29 20:30:42
>>253
不可能です。代替策もありません。
一度マッピングを破棄して、再度マップしなおす他に方法はありません。
実装方針を見直すしかないと思います。

255 名前:デフォルトの名無しさん :04/09/29 20:39:17
>>254
ということは、自分でキャパシティを設けて、アクセスの度にチェック、
キャパシティを超えていたらコミット、というコードを書くのと大差ないわけですね。

あ、でも基本的に読み書きがランダムだから、
必要な部分だけファイルから読み出したり書き出したりするよりかは
再マップした方がいいのかもしれません。

やりたい事はバーチャルなファイルシステムに類するような事なのですが。

256 名前:デフォルトの名無しさん :04/09/29 20:48:30
>>255
class CFileMap : {
public:
void* Map(fpos_t start, size_t length);
void* MapNext(size_t length);
};
みたいなクラスで適当に大き目のサイズだけマップしつつ必要に応じて再マップってのが
良いような気がします。ReadしてWriteするよりかは性能でると思う。

扱うデータが動画等の巨大なものでなければ、処理中はすべてオンメモリで処理するコードでも
良いような気もしますけど、それではまずそうですか?

257 名前:253=255 :04/09/29 20:55:36
>>256
にゃるほど。

> 処理中はすべてオンメモリ

それはマッピングせずにということですか?
それだと初回の読み出しに全て読み出さなきゃいけないので無駄が多いと思うのですが、
イマイチ理解出来ていなそうなので解説お願いします。

258 名前:デフォルトの名無しさん :04/09/29 21:34:38
>>257
ファイルサイズ分のメモリを、とりあえず
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/memory/base/creating_guard_pages.asp
で説明されているような Guard Page で割り当てておいて、初回アクセス時に実際にファイルから読み込む、
というようなノリです。

でもメモリ領域とファイルとの関連を管理しなきゃいけないので、あまり面白くないですね。
トリッキーだし。

259 名前:253 :04/09/29 23:16:53
>>258
Guard Pageって面白いですね。
フォルト検出に近い事が自分で出来るのか。

でも毎回テストしなくてはいけないという点でやはり不便ですね。
かといって、毎回再マップしてると開放の度に強制的なコミットで重たそうな気もします。
テストしてみないとなんとも言えませんが。

260 名前:デフォルトの名無しさん :04/09/29 23:35:43
Shellプログラミングについての日本語本てある?
ShellってIShellFolderとかね。

261 名前:デフォルトの名無しさん :04/09/30 01:29:00
>>259
毎回テストする必要はないんでない?
ガードページを読み書きすると、SEH が投げられるので、SEH のハンド
ラでガードを解除してファイルをロードして、SEHが投げられたところ
から実行を続行すればいいような。


262 名前:デフォルトの名無しさん :04/09/30 01:40:57
親が使っているノートパソコンにはマウスを付けているんですが、キーボード手前の
ポインタを動かせる装置が誤動作をするらしくて、勝手にマウスポインタが動いたり、
クリックされたりするらしいのです。
それでどうにかしろと言われたのでマウスのクリック(できれば移動も)を封じることに
しようと思うのですが、この場合はSetWindowsHookExを使うという方向でよいでしょうか?

263 名前:デフォルトの名無しさん :04/09/30 02:14:00
>>262
素直にタッチパッドの禁止をして置け。
・メーカのサポートデスク
・取り説
・オンラインヘルプ
のどれかでそのやり方がわかるだろ。

264 名前:デフォルトの名無しさん :04/09/30 02:33:51
>>263
さっきまで練習にちょうどいいやって思ってやってましたが、技量が足りないような
気がしてきました。やっぱそちらの手段をとるべきですね。
ただ、そのノートはPentiumの233とかいう古いもので、しかも一月くらいに知り合いから
三万か五万で買ったものらしいです。

とりあえず明日にでもサポートに電話してみようと思います。
板違いになりますのでここらで失礼します。レスありがとうございました。

265 名前:デフォルトの名無しさん :04/09/30 04:08:56
Pentium233 noteで3〜5万は高いな…

266 名前:デフォルトの名無しさん :04/09/30 04:16:27
Windows 2000で
CreateToolhelp23Snapshot(TH32CS_SNAPMODULE,PID)
にいったきり、戻ってこない場合があるのですが
回避方法とかないでしょうか?

267 名前:デフォルトの名無しさん :04/09/30 09:17:21
23 じゃだめだろ、32 では?

っていうボケはともかく Win2k なら PSAPI を使った方がいいよ

268 名前:デフォルトの名無しさん :04/09/30 12:48:24
API学ぶのに一番適した参考書は何?


269 名前:デフォルトの名無しさん :04/09/30 12:52:27
msdン

270 名前:253 :04/09/30 13:36:04
>>261
そうですね。勘違いでした。
ひとまず頑張ってみます。ありがとうございました。

271 名前:266 :04/09/30 17:06:59
WinBugsに書いてあったのをコピペしたので、23になっていました。すみません。

PSAPI使うしかないんですかね?
kernelに実装されているので、動かないことがあるのが
なんとなく悔しくて質問してしまいました。

ありがとうございました。>>267

272 名前:デフォルトの名無しさん :04/09/30 21:37:37
>>247
ディスプレイのDCなら、どのウィンドウで取得したものでも
フォントの高さは同じなんですね。わかりました。ありがとうございました。
レス遅れてすいません。

273 名前:246 :04/09/30 22:13:46
ただいま。
今試してみたのですが、サイズを文字の高さであるして並べると
押してみるとわかるのですが微妙に重なってました。
このコントロールをきちんと丁度表示でき、それでいて余らないサイズを
知る方法はありますか?おしえてくださいお願いします。


274 名前:デフォルトの名無しさん :04/09/30 22:38:51
>>273
ボックス部分やテキスト部分をどのくらいの大きさで描画するかは
チェックボックスの勝手だろうから決められないんじゃない?
将来のOSでまたデザインが変わるかもしれないよ。

もしも使う環境を限定していいんだったら、
フォントの高さにどれくらい加えればちょうどいいかを
実際に測って決め打ちしちゃえば?

275 名前:246 :04/09/30 23:07:29
あぁ、これと限定できない問題ってことですね。
そうなるとフォントの高さにこれくらいなら大丈夫だろうという
値を加えて作るくらいしかないのですかね

どうもありがとうございました

276 名前:デフォルトの名無しさん :04/10/01 20:06:30
単に GetWindowRect() では駄目なの?

277 名前:デフォルトの名無しさん :04/10/01 20:32:30
oioi

278 名前:デフォルトの名無しさん :04/10/01 20:47:03
レッドカード?

279 名前:デフォルトの名無しさん :04/10/01 21:03:18
そのGetするRectはWhoがSetするのだ?

280 名前:デフォルトの名無しさん :04/10/01 21:13:26
Checkbox の高さは 8 Dialog Units。
スクリーン座標系に変換するには、適切なフォントが設定されたウィンドウでMapDialogRectを使う。
でよかったと思うけど。

ちなみに1行分の EDIT は 12 Dialog Units。


281 名前:デフォルトの名無しさん :04/10/02 00:00:13
>>280
そういったコントロールメトリクスの一覧とかって
どこかにまとめられていますか?

282 名前:デフォルトの名無しさん :04/10/02 00:10:10
>>280
それってGetDialogBaseUnitsが元になってない?←MSDNにはそこまで書いていない
全く高さが合わないんすけど。
俺の指定したDLGTEMPLATEの中身がおかしいのかな?
一応指定したフォントでSET_FONTが各コントロールに送られているのだけれども。

283 名前:282 :04/10/02 00:15:04
あ。勘違いでした
忘れてくださいぃぃぃ

284 名前:デフォルトの名無しさん :04/10/02 00:15:38
別にイイジャン、それもひとつの解決方法。
俺がユーザーだったら文句言うけどw

285 名前:デフォルトの名無しさん :04/10/02 09:46:16
WindowsのAPIでしりとりしよう!

286 名前:デフォルトの名無しさん :04/10/02 09:54:10
いくぞ!
SetWindowRegion()

287 名前:デフォルトの名無しさん :04/10/02 10:08:44
別スレ立てた方がいいかな、これ

288 名前:デフォルトの名無しさん :04/10/02 10:12:41
>>286
否、ChangeServiceConfig2

289 名前:288 :04/10/02 10:14:44
間違えて書き込んでしまった…


290 名前:デフォルトの名無しさん :04/10/02 12:50:06
あのぉ、gdi.dllとかのソースはどこかで見れないんでちゅかあ?

291 名前:デフォルトの名無しさん :04/10/02 12:52:40
>>290
マイクロソフトに訊け

292 名前:デフォルトの名無しさん :04/10/02 12:53:06
プログラマなら機械語ぐらい嫁

293 名前:デフォルトの名無しさん :04/10/02 12:53:50
リバースエンジニアリングでタイーホ

294 名前:デフォルトの名無しさん :04/10/02 12:57:56
>>291
( ´_ゝ`)ウフーン

295 名前:デフォルトの名無しさん :04/10/02 23:15:40
別スレッドからSendMessageしたところ
送られたスレッドが送り元スレッドでEnterされたクリティカルセクションの開放を待っていて
両スレッドだんまりになってしまいました。
PostMessageなら大丈夫ということで、
送りたかったメッセージWM_SETTEXTをpostしたのですがどうやら無視されてしまいます。
WM_SETTEXTはpostできないのでしょうか?

296 名前:デフォルトの名無しさん :04/10/02 23:47:04
>>295
MSDNでPostMessageの説明嫁。

> 非同期メッセージ関数(PostMessage、SendNotifyMessage、
> SendMessageCallback の各関数)を使って、WM_USER 未満の
> メッセージ(メッセージの値が 0x8000 未満)を送信する場合は、
> メッセージのパラメータでポインタを使うことはできません。

無視される理由がここにあるのかは別の問題だけど。

297 名前:デフォルトの名無しさん :04/10/03 06:58:50
SetSystemPowerStateで休止状態、或いはサスペンドにした後、
ある時刻に自動復帰するようににはどのようにすればいいのでしょうか?


298 名前:デフォルトの名無しさん :04/10/03 13:54:05
>>296
メッセージループは止めないようにしてSendMessageに変えました

299 名前:デフォルトの名無しさん :04/10/03 19:07:36
>>297
タスクをスケジュールする

300 名前:デフォルトの名無しさん :04/10/03 21:04:07
>>296
変な説明だな
動的に割り当てたメモリへのポインタも渡せない、と聞こえる

301 名前:デフォルトの名無しさん :04/10/03 21:39:16
SendMessageとSendNotifyMessageの違いって何?
もしかしてWM_NOTIFYって、SendNotifyMessageでしか送っちゃいけない?

302 名前:デフォルトの名無しさん :04/10/03 21:45:17
SendNotifyMessageは別スレッドにMessageを送るとすぐに制御が返る。

303 名前:デフォルトの名無しさん :04/10/03 21:47:11
>>302
つまりSendMessageとPostMessageの中間ってことかしら。

304 名前:デフォルトの名無しさん :04/10/03 21:59:13
>>303
そんな感じだわな

305 名前:デフォルトの名無しさん :04/10/04 00:40:43
クールバーにメニューバーを入れることって出来るんですか?

306 名前:デフォルトの名無しさん :04/10/04 01:11:09
メニューバーを移動したいと思うユーザーがどれほどいるでしょうか

307 名前:デフォルトの名無しさん :04/10/04 01:14:08
答えられないので論点をずらして逃げようとしてる人がいますね

308 名前:デフォルトの名無しさん :04/10/04 01:19:38
>>305
WTLのソースなり、猫 ttp://www.kumei.jp/c_lang/sdk4/sdk_311.htm なりを参考に。
基本的に面倒くさい。

309 名前:デフォルトの名無しさん :04/10/04 02:29:16
>>308
ありがとうございます。
「猫でも〜」に紹介されていたんですか、気が付きませんでした。

>>306
痛い所を突いてきますね・・・
ちょっとした画像処理ツールを作ろうと思ってWin32APIをいじくってるんですが、
ウィンドウのデザインばかりが気になってちっとも本題に入ることができません。
IEがこんなデザインにしたから気になるんですよ。
IEのバカッ!(><)

310 名前:デフォルトの名無しさん :04/10/04 02:47:51
IEやOfficeみたいなUIにしてくれっていうユーザも結構いるんだよね

311 名前:デフォルトの名無しさん :04/10/04 05:16:40
最近sdk始めてみたんですがこれどうでしょうか?
ttp://up.isp.2ch.net/up/0672f2c6c31e.zip

312 名前:デフォルトの名無しさん :04/10/04 06:04:49
↑ウィルス

313 名前:デフォルトの名無しさん :04/10/04 07:13:21
>>312


314 名前:デフォルトの名無しさん :04/10/04 08:05:30
通報しますた

315 名前:デフォルトの名無しさん :04/10/04 08:26:14
binutilsにあるreadelfみたいにPEオブジェクトファイルの
構造を分りやすい形で表示してくれるツールとかありますか?
MS純正のものでもなくてもいいです。フリーのツールでも。

316 名前:デフォルトの名無しさん :04/10/04 09:31:41
PEオブジェクトファイルの
構造を分りやすい形で
解説してくれたら作りますよ。

317 名前:デフォルトの名無しさん :04/10/04 09:43:39
自己レスです。
>link /dump /all hello.obj
これで見れました。

318 名前:デフォルトの名無しさん :04/10/04 11:58:09
>>282
GetDialogBaseUnit は、ウィンドウやフォント等指定する引数もなく常にシステムフォントの
メトリクスをもとにした値を返します。んで使い物にならない。MapDialogRectがお勧め。
もう解決したみたいだけど、読んでる人向けに補足ですた。

319 名前:デフォルトの名無しさん :04/10/04 13:06:04
>>309
ちょっとした物作るんでGUIはちまちまいじりたいんならVBやDelphiみたいな
RADツール使うといいんじゃないか?すくなくともDelphiならマウスでぽちぽち
配置していくつかプロパティいじればできたと思う。
全部RADでやってもいいし、コアはC++でやってもいい。

320 名前:デフォルトの名無しさん :04/10/04 23:41:26
突然質問で失礼します。
CDialogの継承クラスにおいて
ワーカスレッドからメインスレッドに15msecおきに
SendNotifyでユーザ定義メッセージを送って
関数を実行させようとしています
しかし、どうしてもランダムに
200msec前後の遅延が発生します
どうにか15msecぐらい間隔で目的の関数を
呼び出すことはできないでしょうか?
どうか、アドバイスをよろしくお願いします

321 名前:デフォルトの名無しさん :04/10/04 23:47:06
ウィンドウメッセージを使ってその精度が維持できると思っているのが間違い。
timeSetEvent() でもつかったら?

322 名前:デフォルトの名無しさん :04/10/05 00:23:21
初心者の質問に答えていただきあいがとうございました。

323 名前:デフォルトの名無しさん :04/10/05 06:14:14
モードレスで作成したプロパティシート(ページではない)を削除する
方法ってどうしたらいいのでしょう?
モードレスにしたプロパティシートのハンドルを引数にして
DestroyWindowでおこなうとWindows APIバイブル2のサンプルCD
(CHAPTER4のGETTABCT.MAK)ではなっているのですが、VC.NET2002
でおこなうと、終了処理の後にハングしてしまいます。
宜しくお願いします。

324 名前:デフォルトの名無しさん :04/10/05 09:22:47
ReadDirectoryChangesW を使って,
全ドライブのファイル操作の監視をしたい.

CreateFile で監視するディレクトリィのハンドルをとって,
わたしてやるんだが,例えば,cドライブを見たければ,
"c:\\" とか指定すればいいんだが,
全ドライブを指定することはできないだろうか?

GetLogicalDriveStrings で生きてるドライブ名をとって,
個別にそれぞれ CreateFile で開いて,
ReadDirectoryChangesW で監視するってのは
あほらしくてやってられない.

一発でできないだろうか?


325 名前:デフォルトの名無しさん :04/10/05 13:12:49
休止状態から指定時刻に復帰するプログラムを作りたいのですが、どのAPIを使用すれば良いのでしょうか?
アドバイスお願いします。

326 名前:デフォルトの名無しさん :04/10/05 13:21:07
>>324
盲目的に全ドライブ監視は危険。メディアの入れ替えで恐ろしいことが起こる。
やるなら個別でやるべき。


327 名前:デフォルトの名無しさん :04/10/05 15:07:05
他のアプリが最大化しているか、などの状態を取得するAPIありますか。

328 名前:デフォルトの名無しさん :04/10/05 15:20:41
>>324
漏れの6連装CDドライブをガチャガチャ言わすのはオマエか!

329 名前:デフォルトの名無しさん :04/10/05 15:24:28
>>327
ウィンドウを列挙して、ウィンドウが最大化しているかどうか調べれば良いかと

330 名前:デフォルトの名無しさん :04/10/05 15:52:33
ありがとうございます。
列挙と言うとEnumWindowとかですか?
具体的なキーワードを頂けるとありがたいです。

331 名前:デフォルトの名無しさん :04/10/05 16:11:16
半角を全角にするAPIはありませんか?

332 名前:デフォルトの名無しさん :04/10/05 16:25:54

void replace(char* text,char* key,char* rep)
{
  char *p,buf[256];
  p = strstr(text,key);

  while(p!=NULL){
    *p='\0';
    strcpy(buf,p+strlen(key));
    strcat(text,rep);
    strcat(text,buf);

    p = strstr(p+strlen(rep),key);
  }
}

[使い方]

replace(buf,"ア","ア");
replace(buf,"イ","イ");
replace(buf,"ウ","ウ");
replace(buf,"エ","エ");
replace(buf,"オ","オ");
replace(buf,"カ","カ");
replace(buf,"キ","キ");
replace(buf,"ク","ク");
replace(buf,"ケ","ケ");
replace(buf,"コ","コ");
replace(buf,"サ","サ");


333 名前:デフォルトの名無しさん :04/10/05 16:32:09
>>331
LCMapString

334 名前:デフォルトの名無しさん :04/10/05 16:59:50
>>333
さんくすくす。

335 名前:デフォルトの名無しさん :04/10/05 17:57:03
>>327
IsZoomed
IsIconic
GetWindowPlacement


336 名前:デフォルトの名無しさん :04/10/05 19:09:51
>>335
おおー、ありがとうございます

337 名前:デフォルトの名無しさん :04/10/05 19:39:23
>>321
マルチメディアタイマを使ってみたのですが
10000回に1度くらいの割合で
イベント10回くらいをスルーしちゃって
コールバック関数内で呼び出してある関数が
実行されてないようです
どうしてでしょう?
コールバック関数内の処理を軽くしても
改善されませんでした
原因に心当たりのある方
是非アドバイスをよろしくお願いします
実行されていないようです

338 名前:デフォルトの名無しさん :04/10/05 19:48:58
俺を最強のプログラマにするAPIはありませんか?

339 名前:デフォルトの名無しさん :04/10/05 20:59:45
TerminateProcess(>>338, 0)

340 名前: ◆FIcNi4f8js :04/10/05 21:32:19
>>337
必ずコールバックされると思っているのが間違い。
コールバック関数の中で前回呼ばれた時のシステム時間との時間差を計算して、
呼ばれなかった分の穴埋めを行う処理をしないといけない。

341 名前:デフォルトの名無しさん :04/10/05 21:33:20
ウィンドウの枠の上下左右の一箇所だけ枠なしとかにすることはできる
でしょうか?

342 名前: ◆FIcNi4f8js :04/10/05 21:34:53
SetRegion とか LayeredWindow とかを使うとできるよ。

343 名前:デフォルトの名無しさん :04/10/05 21:35:43
>>341
WM_NCHITTEST と WM_NCCALCRECT と WM_NCPAINT と WM_NCACTIVE あたりを
自前で実装すれば可能。

344 名前:デフォルトの名無しさん :04/10/05 21:46:10
>>337
1.コールバック関数から SendNotifyMessage を呼んでいる時、メインスレッドで
  直前のメッセージ処理が終わるまで待っている状態。
  メッセージを使わないようにする。
  表示の更新だけなら InvalidateRect のみとか、
  直接 dc 取得してワーカースレッドから描いてしまうとか。
2.GDI に対して描画要求を過剰に繰り返し行うと起こる現象。
  描画部分を小さくしたり、DrawDibDraw とか DirectDraw を使えば良くなるかも。


345 名前:デフォルトの名無しさん :04/10/05 21:47:49
>>340
コールバック関数内にグローバル変数の
イベント発生カウンタを持っているのですが
そのカウンタとコールバック関数内の
一部の関数が走った回数が一致しません
イベントカウンタの方が大きい値になります
従って、コールバック関数は呼ばれているのですが
その中の関数が走ってないように見えます
どうしてでしょうか?


346 名前:341 :04/10/05 21:51:16
>>342,343
さんくすこ

347 名前:デフォルトの名無しさん :04/10/05 21:52:13
>>345
ファイルIOはそれなりに高速なので、ログでも書き出して動作を検証すべき。
あとコールバック処理中に再びコールバックが呼ばれるケースとかも考慮するべき。

348 名前:デフォルトの名無しさん :04/10/05 21:56:02
>>347
ありがとうございます

349 名前:デフォルトの名無しさん :04/10/06 10:04:35
VS.NETで作成できるWindowsインストーラーでサイレントインストール時に
インストール先をiniファイルなどやオプションなどに記述して
変更する方法はないものでしょうか。
宜しくお願いいたします。


350 名前:デフォルトの名無しさん :04/10/06 18:14:04
微妙にすれ違い

351 名前:デフォルトの名無しさん :04/10/06 22:29:01
IMEが変換を確定したタイミングはどうやって知る事ができますか

352 名前:デフォルトの名無しさん :04/10/06 23:27:57
>>351
WM_IME_COMPOSITION とかでどう?

353 名前:デフォルトの名無しさん :04/10/07 01:49:57
>>349
こちらへどうぞ。

インストーラー相談室
http://pc5.2ch.net/test/read.cgi/tech/997727326/

354 名前:デフォルトの名無しさん :04/10/07 02:52:23
「未解決の外部シンボル
"int __cdecl InitInstance(struct HINSTANCE__ *,int)"
(?InitInstance@@YAHPAUHINSTANCE__@@H@Z)
が関数 _WinMain@16 で参照されました。」
というエラーが出るのですが、何をリンクすればこのエラーがなくなるのでしょうか?
#includeしているのは
#include <windows.h>
#include <windowsx.h>
#include <winsock2.h>
#include <stdlib.h>
#include "resource.h"
なのですが、、、このエラーだけはどうすれば回避できるのか
わかる方がいましたら教えてください。

355 名前:デフォルトの名無しさん :04/10/07 09:02:19
>>354
リンクするライブラリが足りないとか?

356 名前:デフォルトの名無しさん :04/10/07 09:30:19
Win32 API の CreateThread を使うときに,
実際スレッドで動かす函数として
ある特定の型の函数への指示子をわたしてやるんだが,
この函数って大局じゃないとうまく動かない.

類の要員函数ではいけないの?


357 名前:デフォルトの名無しさん :04/10/07 09:44:36
氏ね

358 名前:デフォルトの名無しさん :04/10/07 09:51:06
>>354
恐らくなにかのサンプルをコンパイルしようとしてるかどっかからのコピペ
コードなんだと思うけどInitInstanceは普通自分で定義するんじゃないか?
ソース全部見ないと正確にはわかりません。

>>356
クラスメンバなら大丈夫。そうじゃないときは暗黙のうちにthisがわたされる
から無理。4番目のパラメータにthisわたしてクラスメンバからメンバ関数を
呼び出せばいいと思う。

359 名前:デフォルトの名無しさん :04/10/07 09:51:58
>>354
InitInstance というと AppWizard が自動生成するスケルトンに入っている関数か?
CreateThread に渡そうとして引数を変えたのにプロトタイプを直し忘れたとか、そーゆーオチか?

360 名前:デフォルトの名無しさん :04/10/07 10:05:10
354です。MAPI.Libをリンクするとそのエラーはなくなりましたが、
C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\PlatformSDK\lib\MAPI.Lib
: fatal error LNK1136: ファイルが無効であるか、 または壊れています。
というエラーが出て結局ビルドできません。

361 名前:デフォルトの名無しさん :04/10/07 10:20:00
>>360
単に、別のリンクエラーが出て、そこで止まっただけ

362 名前:デフォルトの名無しさん :04/10/07 10:32:08
>>360
関係なさそうだな
そんなとこに InitInstance なんてねえもん

363 名前:デフォルトの名無しさん :04/10/07 15:35:15
該当スレが分からなかったので、ここで質問させてください。

すでに起動しているWindwosMediaPlayerを
外部からメッセージを送って操作する方法はありますか?
具体的には、あるタイミングで、WMPですでに選択されている
ファイルの再生をスタートさせるだけです。

よろしくお願いします。

364 名前:デフォルトの名無しさん :04/10/07 15:42:45
WindowsサービスからユーザがWindowsにログオン/ログオフするのを検知したいんだけど、
どうしたらいいんでしょうか?

とりあえずイベントログを定期的にチェックして検知とか考えました。
そんなめんどくさいことしないでもイベント通知してもらえたりするんでしょうか?

GINA使わないでやりたいです。

よろしくお願いします。


365 名前:デフォルトの名無しさん :04/10/07 16:47:53
函数と書きたいだけの厨房発見

366 名前:デフォルトの名無しさん :04/10/07 17:01:01
厨房と書きたいだけの(rya
(ryaと書きたいだけの
と書きたいだけの

367 名前:デフォルトの名無しさん :04/10/07 19:38:41
>>354
InitInstance は Windows API ではないので、中身は自分で書きましょう。
ウィンドウクラスの登録用に、習慣的にその名前を使っていただけ。

368 名前:デフォルトの名無しさん :04/10/07 19:58:35
>>363
WM_COMMAND送りつければいいんじゃ?

369 名前:デフォルトの名無しさん :04/10/07 20:21:04
>>363
MicrosoftR Windows Media? Player 7 SDK
Windows Media Player コントロール Version 6.4
ただし VBアプリから起動させる場合


370 名前:デフォルトの名無しさん :04/10/07 22:42:08
>>354
int WNAPI WinMain(〜)
が書いてある行より手前に
int InitInstance(HINSTANCE, int);
と書いてみろ。

371 名前:デフォルトの名無しさん :04/10/07 23:01:34
WNAPI

372 名前:デフォルトの名無しさん :04/10/08 05:30:38
GUIDを文字列にしてくれるAPIはありませんか?
自分で作ってもいいのですが、標準で用意されているような気がしてなりません。

373 名前:デフォルトの名無しさん :04/10/08 06:07:40
StringFromGUID2

374 名前:デフォルトの名無しさん :04/10/08 06:33:56
猫でもわかるの122章のプログラムを実行したのですが、次のような問題が発生します。
・DLLのロードに失敗する。
・hMyLibをstaticにしないと強制終了する。
・WM_PAINTメッセージが複数回ディスパッチされる。
元のソースコードは、構文的に間違っていないと思います。
対処法が全く分からず、困っています。どうすれば良いのでしょうか?
OSはWinXPHome、コンパイラはBCCを使用しています。

375 名前:デフォルトの名無しさん :04/10/08 07:55:48
リストビューについて質問です。
カラムの挿入でiColに好きな値を設定できないようなのです。
iOrderで順番も入れ替わるし、iColとサブアイテム番号の対応は自分で管理しないといけないのでしょうか?

376 名前:デフォルトの名無しさん :04/10/08 08:57:21
>>374

もうちょっと詳細に教えてくれ。

>・DLLのロードに失敗する。
LoadLibraryの後でGetLastErrorを呼んでエラーコードを調べる。

>・hMyLibをstaticにしないと強制終了する。
できればどの行で強制終了するのかデバッガ(BCCじゃ無理か?)で調べる。

>・WM_PAINTメッセージが複数回ディスパッチされる。
これは多分仕様。(違うかも)

377 名前:374 :04/10/08 09:39:31
>>376
エラーコードを調べようとして、次のようにソースコードを書き換えたのですが、強制終了します。
case WM_PAINT:
hMyLib = LoadLibrary( "dll04.DLL");
wsprintf(str,"%d",GetLastError());
MessageBox(hWnd,str,"",MB_OK);
書き方に問題があれば、指摘して下さい。(^_^;)

378 名前:デフォルトの名無しさん :04/10/08 11:20:23
>>377
DLLの方に問題があったりしないか?

379 名前:374 :04/10/08 11:37:58
MessageBox(NULL,"","",MB_OK);をWM_PAINTメッセージの処理部分の所々に挿入しながら検証していたのですが、
コンパイルを繰り返す内に、メッセージボックスが表示されなくなり、強制終了するようになりました。
最初は、画面の右下の方に表示されていました。中央に表示されないのが変だと思っていたのですが...。
また、メッセージボックスが表示される時に鳴る警告音が立て続けに20回くらい鳴ります。
そのため、WM_PAINTメッセージが複数回ディスパッチされていると判断しました。
>>378 実行ファイルと同じ場所に置いてあるので、問題ないと思うのですが...。

380 名前:デフォルトの名無しさん :04/10/08 11:44:14
>>379
WM_PAINTハンドラ→MessageBox→モーダルループ→無効領域がクリアされてない→WM_PAINT発生→WM_PAINTハンドラ→・・・
で無限ループに陥ってるかも。

381 名前:デフォルトの名無しさん :04/10/08 11:45:08
それはWM_PAINT処理にMessageBoxなんか入れたことが原因だろ。

382 名前:デフォルトの名無しさん :04/10/08 11:49:19
つか、WM_PAINTでメッセージボックス使うなよ・・・

OuputDebugStringでも使っとけ

デバッグ情報が表示できないなら、テキトーにフリーソフト使うと吉
ttp://search.vector.co.jp/search?query=OutputDebugString

383 名前:374 :04/10/08 12:27:24
>>380
>>381
>>382
ありがとうございます。Turbo Debuggerをインストールしているのですが、使い方が分からないので困っていました。(^_^;)
紹介して頂いたデバッガを利用してみたいと思います。

384 名前:382 :04/10/08 13:48:27
>>383
勘違いされてるような気がしないでもないので、
補足しておくと、
OuputDebugStringは文字列をデバッグ出力に送るAPI

リンク先のは、OuputDebugStringの出力を表示するツール

ちゃんとしたデバッガを使ってるなら、
それの使い方を覚えた方がいいと思われ

385 名前:374 :04/10/08 14:56:43
>>384
いろいろ教えて頂きありがとうございます。Windowsプログラミングで簡単に文字列を出力する方法を知らなかったので、
仕方なくMessageBox関数を使用していました。OuputDebugString関数を使えば良いのですね。
>>379
無限ループになるのは当然ですね。つまらないミスでした。反省しています。(^_^;)
>>376
GetLastError関数の戻り値は0でした。やはり、DLLのロードに失敗しているようです。


386 名前:374 :04/10/08 15:04:55
> >>379
> 無限ループになるのは当然ですね。つまらないミスでした。反省しています。(^_^;)
すみません、リンク先を間違えました。>>379ではなく>>380です。(^_^;)


387 名前:デフォルトの名無しさん :04/10/08 15:07:20
MessageBoxをループ内に配置するとエライ事になる。

ループ離脱条件を戻り値IDOK以外にしていたとする。
DestoryWindow()が親に送られたら地獄。
応答不能・シャットダウン不能となる。
DestoryWindow()APIがダイアログをIDOKで閉じるからである。
戻り値でループ離脱をする場合、十分注意しよう。

388 名前:デフォルトの名無しさん :04/10/08 15:48:47
>>385
winerror.hを見れば分かるが、
GetLastErrorの戻り値が0ということは直前のAPIは成功している

http://msdn.microsoft.com/library/en-us/debug/base/system_error_codes__0-499_.asp

389 名前:デフォルトの名無しさん :04/10/08 15:57:57
質問です。
階層構造が複雑で、子孫ウインドウが多数存在するトップレベルウィンドウがあります。
ウィンドウを非アクティブからアクティブにしたときに、そのウィンドウが
非アクティブになる前に持っていたキーボードフォーカスの位置を元に戻したいのですが、
WM_ACTIVATE(WA_INACTIVE) が送られてくるタイミングで GetFocus() してフォーカスを保存しようとしても、
ウィンドウを最小化したときなどはすでにフォーカスが失われているらしく、うまくいきません。

現在はすべてのウィンドウプロシージャで子ウィンドウのフォーカスの移動を監視し、それを
親ウィンドウに次々と通知することで実現しているのですが、あまりスマートとはいえません。
もし、もっとウマーな方法があればご教示ください。

390 名前:374 :04/10/08 16:30:34
>>388
すみません、勘違いしていました。発言を撤回します。(^_^;)
>>384
OuputDebugString関数を使用してみたのですが、
"未定義の関数 'OuputDebugString' を呼び出した"
というエラーメッセージが表示されます。windows.hはインクルードしてあるのですが、
別のヘッダファイルをインクルードする必要があるのでしょうか?


391 名前:デフォルトの名無しさん :04/10/08 16:31:59
>>390
winbase.h

392 名前:デフォルトの名無しさん :04/10/08 16:45:20
OutputDebugStringだろ。

393 名前:382 :04/10/08 16:52:10
漏れがタイポしたもより・・・欝だ詩嚢

394 名前:デフォルトの名無しさん :04/10/08 16:55:26
>>390
つーかこういう時ってまずタイポ疑えよ。
エラー起こるたびに訊いてるようじゃ進歩ねーぞ。

395 名前:374 :04/10/08 17:03:12
>>392
>>384のレスの関数名をそのまま使用していたので、スペルのミスに気が付きませんでした。
指摘して頂いてありがとうございます。(^_^;)

396 名前:デフォルトの名無しさん :04/10/08 17:46:28
>>374
悪いことは言わん、これ入れとけ。
http://www.microsoft.com/msdownload/platformsdk/sdkupdate/home.htm

397 名前:デフォルトの名無しさん :04/10/08 17:48:32
っていうか、BCCだとTestFuncではなく_TestFuncになるからじゃね?

398 名前:デフォルトの名無しさん :04/10/08 19:24:17
[はい][いいえ]の2つのボタンがあって、
右上の[×](クローズボタン)も有効なメッセージボックスって、
「MessageBox()系のAPIでは作れない」ってことでよろしいでしょうか…?

399 名前:374 :04/10/08 19:42:30
DebugTracerというツールを使ってOutputDebugStringの文字列を表示することができるようにました。
しかし、エラーコードは6(無効なハンドル)でした。環境に問題があるのでしょうか?
>>396
SDKをアップデートする必要があるのでしょうか?WinXPHomeSP1で作業しているのですが、
SP2に移行した方が良いのでしょうか?

400 名前:デフォルトの名無しさん :04/10/08 20:01:07
>>399
hMyLibがNULLかどうかも判断せずに、GetLastErrorしてOutputDebugStringしてないか?

401 名前:デフォルトの名無しさん :04/10/08 20:21:55
これだからタダコンパイラ使ってるような奴はイヤなんだよ!

402 名前:デフォルトの名無しさん :04/10/08 20:50:07
>>398
作れません。
Xで閉じてキャンセルなら「はい/いいえ/キャンセル」の形式にしないとユーザわけわかんなくなるし・・・

403 名前:398 :04/10/08 21:22:31
>>402
どうもありがとうございます。
> Xで閉じてキャンセルなら「はい/いいえ/キャンセル」の形式にしないとユーザわけわかんなくなるし・・・
確かにおっしゃる通りだと思います。
ただ、例えばデスクトップ上などでファイルを右クリック⇒削除を選ぶと、
>>398 のようなダイアログボックスが表示されるので、可能性がないわけではないかな…と思いまして。

404 名前:374 :04/10/08 21:41:00
>>399
hMyLibは、NULL(=0)ではなく、012B0000という値を持っていました。LoadLibraryは失敗していなかったようです。
しかし、エラーコードをチェックすると、その値が無効であると言われてしまいます。


405 名前:397 :04/10/08 21:46:57
>>404
ほとんどの場合、関数が成功した場合、SetLastErrorされないので、
GetLastErrorしても意味ない。

つーか、GetProcAddressのTestFuncを_TestFuncに書き換えれば、うまくいくはず。

406 名前:374 :04/10/08 22:04:55
>>405
ありがとうございます。SetLastErrorとGetLastErrorの働きがよく分かりました。
指示通りに書き換えてみたのですが、うまくいきません。


407 名前:デフォルトの名無しさん :04/10/08 22:13:01
ここはお前の日(AAともにry

408 名前:デフォルトの名無しさん :04/10/08 22:18:38
黙ってりゃ報告くらいしろと騒ぐし

409 名前:デフォルトの名無しさん :04/10/08 22:24:37
グローバルフックを用いてキー入力をフックして、
フックプロシージャの中で、目的のウィンドウにキー入力を送信したいです。

どういう風に目的のウィンドウのウィンドウハンドルを取得するのがスマート、
というか一般的なんでしょうか



410 名前:ぬるぽ :04/10/08 22:25:46
必死だな

411 名前:デフォルトの名無しさん :04/10/08 22:40:56
>>409
目的のウィンドウが自分で作ってるウィンドウなら、共有メモリ領域にハンドルを書いておく。
そうでないなら、EnumWindow とかでゴリゴリ探すとか、Spy++ で手動で探したときと同じ
方法で探す。

412 名前:デフォルトの名無しさん :04/10/08 22:57:51
>>409
目的のウィンドウのタイトルotウィンドウクラス名がわかってるならFindWindowも

413 名前:409 :04/10/09 00:04:29
>>411
>>412
ありがとうございます

自前のウィンドウに送りたいだけなので、
色々やってみます

414 名前:デフォルトの名無しさん :04/10/09 00:11:51
お兄ちゃんお願い!>>389を助けて!

415 名前:389 :04/10/09 00:32:10
>>414
あきらめかけていたのですが、どうもありがとうございます。
でも、レスをいただけないということは、いい方法がないのかも・・・

416 名前:デフォルトの名無しさん :04/10/09 00:51:44
>親ウィンドウに次々と通知することで実現しているのですが、あまりスマートとはいえません。

なんでスマートといえないんだ?
君のプログラムは親関数に次々と return することで実現するより
グローバル変数のほうがスマートといえるのか?
jmp_buf みたいに親ウインドウのハンドルを次々に渡しておいて
通知はそのハンドルで一挙にって手もあるが、俺は推奨しないなあ・・・

417 名前:デフォルトの名無しさん :04/10/09 00:54:41
もしかして GetWindowLong / SetWindowLong を知らないのか?

418 名前:デフォルトの名無しさん :04/10/09 01:00:13
>>417
しっているとなにがどうなるんだ?

419 名前:デフォルトの名無しさん :04/10/09 01:14:49
説明するのだるいんでキーワードだけ出しとく
WNDCLASS::cbWndExtra
GWL_USERDATA
ポインタをキャスト

420 名前:デフォルトの名無しさん :04/10/09 01:17:34
やっぱりただのアホだったか

421 名前:デフォルトの名無しさん :04/10/09 01:25:53
痛いネタいっぱつお見舞いするか

422 名前:デフォルトの名無しさん :04/10/09 01:31:29
>>419
全然スマートじゃない気が

423 名前:デフォルトの名無しさん :04/10/09 01:35:23
誰の発言かわからなくなるまでしばらく沈黙

424 名前:デフォルトの名無しさん :04/10/09 02:23:55
sageてないのは二人しかいないような。

425 名前:389 :04/10/09 02:43:49
お返事が遅くなりました。レスをくださった皆さん、どうもありがとうございます。

>>416
> なんでスマートといえないんだ?
すみません、「スマートといえない」という表現には語弊がありました。
ただ、取得のタイミングさえ合っていれば GetFocus() で一発で済むところを
わざわざ次々と橋渡ししなければならない構造にひっかかるものはありました。
GetFocus() を実行するのにいいタイミングで送られてくるようなウィンドウ
メッセージが存在するということが、実は一番期待していた答えだったのです。

> グローバル変数のほうがスマートといえるのか?
いえ、私もできるだけグローバル変数は使わないことにしていますので、
グローバル変数を使うことをためらった結果、あのような構造になったわけです。

>>417 >>419
> もしかして GetWindowLong / SetWindowLong を知らないのか?
私へのレスでしょうか? 普通に使っていますが、この場合はそれほど
有用ではないような気が…。私へのレスでなかったらすみません。

426 名前:デフォルトの名無しさん :04/10/09 03:01:13
>>425
いろんなフレームワークで行っているPreTranslateMessageみたいなことやれば?

427 名前:デフォルトの名無しさん :04/10/09 03:29:42
MFCのフレームワークでさえ、結構面倒な機構を準備してフォーカスの
復元をしてるから、一発で解決するようなメッセージは無いと思う。


428 名前:374 :04/10/09 06:02:54
> ・hMyLibをstaticにしないと強制終了する。
> ・WM_PAINTメッセージが複数回ディスパッチされる。
WM_PAINTハンドラにMessageBoxを置いたことが原因でした。(^_^;)
> ・DLLのロードに失敗する。
GetProcAddressに失敗していました。エラーコードは127(指定されたプロシージャが見つからない)です。
実は123章のプログラムでもファイルマッピングオブジェクトの読み出しに失敗します。
名前を指定する方法に問題があるのでしょうか?VCとBCCの仕様の違いでしょうか?>>405

429 名前:デフォルトの名無しさん :04/10/09 06:12:47
>>428
DLLは自作か?その際に名前のエクスポートはしてるのか?
エラーコードが出てるんだからまずその内容を調べろよ。

430 名前:デフォルトの名無しさん :04/10/09 07:18:54
回答者のレベル低すぎ・・・。

DepedencyWalkerとかでdll内部の関数名を確認しろ。
ま、DepedencyWalkerがなくてもdllの中身が見れるはずだが。
VCでビルドした場合だとC++のデフォで関数名が変わるのは常識だぞ。
エクスポート関数名に@とか混じってないか?

431 名前:デフォルトの名無しさん :04/10/09 07:38:54
>>430
374を読んでる?
アンタもレベル低すぎですから!残念!

432 名前:デフォルトの名無しさん :04/10/09 07:59:32
bccのデフォルトの呼び出し規約は__fastcallのはずなので

DLLの方で
#define EXPORT extern "C" __declspec(dllexport) __stdcall
EXEの方は
typedef __stdcall int (*PTESTFUNC)(int, int);

433 名前:デフォルトの名無しさん :04/10/09 08:08:45
>>431
読解力ないな。誰も話をVCだけに限定してないだろ。
それともBCはdllの規格をMSの規則に逆らうわけか?

434 名前:デフォルトの名無しさん :04/10/09 08:39:56
質問者はBCC使ってるのにVCの話したり、
CでのコーディングなのにC++で関数名が変わるのは常識とか言ったり
他人をレベル低いとか言ってるのに
自分もトンチンカンなレスしてるからだろ…

>それともBCはdllの規格をMSの規則に逆らうわけか?
関数名の問題なんでDLLの規格は関係ないでしょ。

435 名前:374 :04/10/09 08:44:08
>>432
やはり、うまくいきません。
元のソースコードはVCを基準に書かれているので、BCCとの仕様の違いが明確になれば、
対処できると思うのですが...。(^_^;)

436 名前:デフォルトの名無しさん :04/10/09 09:03:18
もうVC買うかフリー版のVC使うかBCCでのサンプルを見つけろ。

437 名前:デフォルトの名無しさん :04/10/09 09:12:03
>>374
ちゃんと調べたのか?関数名。
どうも君はPGに向いてない気がする。

↓Dynamic Dependency Walker(フリー)
ttp://www.vector.co.jp/soft/win95/util/se232578.html

438 名前:デフォルトの名無しさん :04/10/09 09:16:33
>>434
>Cでのコーディングなのに
そんなこと書いてあった?

439 名前:デフォルトの名無しさん :04/10/09 09:26:57
>>434
君は>>374の足りない記述に関して通常の脳内補完をしているようだ。
それは通常レベルのプログラマ相手なら正しいだろうが、
初心者相手の場合はそうではない。
多くの場合、ありとあらゆる疑いの眼差しで初心者を見守ってあげる必要があるのだ。

440 名前:デフォルトの名無しさん :04/10/09 09:31:27
>>438
DLLのソースにextern "C"が有るから
C++の名前変形は関係ないでしょ。

441 名前:デフォルトの名無しさん :04/10/09 09:34:46
>それともBCはdllの規格をMSの規則に逆らうわけか?

parse error

442 名前:デフォルトの名無しさん :04/10/09 09:36:18
つーかもう初心者スレでやってよ。

443 名前:デフォルトの名無しさん :04/10/09 09:53:30
QueryPerformanceCounter、QueryPerformanceFrequency
この2つのAPIは最近のPCでエラーが起こりますか?
たとえば、CPUによって動作しないとかありますか?

444 名前:374 :04/10/09 10:06:25
>>437
紹介して頂いたツールを利用してDLLをリストアップしたのですが、ロードしたDLLは見当たりません。
しかし、LoadLibraryには成功しています。ロードしたDLLと、それに含まれている関数の名前も、
呼出元と呼出先で相違がないことを確認しました。

445 名前:デフォルトの名無しさん :04/10/09 10:40:03
今なら言える
心の底から氏ねと

446 名前:デフォルトの名無しさん :04/10/09 10:54:48
>>444
Z:\>dumpbin /exports dll04.dll
Microsoft (R) COFF/PE Dumper Version 7.10.3077
Copyright (C) Microsoft Corporation. All rights reserved.


Dump of file dll04.dll

File Type: DLL

Section contains the following exports for dll04.dll

00000000 characteristics
0 time date stamp Thu Jan 01 09:00:00 1970
0.00 version
1 ordinal base
2 number of functions
2 number of names

ordinal hint RVA name

1 0 00001238 _TestFunc
2 1 00009158 ___CPPdebugHook
(ry

447 名前:デフォルトの名無しさん :04/10/09 10:58:33
まず>>374は勉強が足りないな。
レス受けた内容についてもろくに解かってないようだし、
1日くらい試行錯誤してから書き込んだほうがいい。

448 名前:デフォルトの名無しさん :04/10/09 11:27:36
>>443
キミの知り合いが突然、「このAPIは最近のPCでエラーが起こりますか?
CPUによって動作しないとかありますか?」って質問してきたらどうする?
返答に困るデショ。

449 名前:デフォルトの名無しさん :04/10/09 12:09:55
>>448
高解像度カウンタは古いCPUだと使えないわけだが

>>443
IntelならPentium以降(P54なら確実、P5はしらん)
AMDは少なくともK5はサポートされてたはず
Cyrix系は不明

450 名前:!= 443 :04/10/09 12:38:49
>443 関連で興味あって調べてたら、あんま関係ないけどこんなの見つけた。
ttp://www.flipcode.com/cgi-bin/msg.cgi?showThread=00000894&forum=general&id=-1

> Joacim: どうしてWin2kマシンでは QueryPerformaceCounter の後ろ24ビットを wrap するの?
> kewldude: くそ、それ知らずに実験してた。Win2kでもフリーズするアプリがあってよ。。。
> treething: 漏れが知る限り、全部のマシンで wrap してるぜ?でも何が問題なんだ?
> kewldude: ああ、でも普通は64ビットを wrap してて、24ビットじゃねーはずなんだよ。

これはどういう問題? wrap ってどういう意味で使ってるの?

451 名前:デフォルトの名無しさん :04/10/09 12:56:06
脳内HDDと脳内メモリの容量が小さい漏れにはプログラミングは不可能ですか?
電話の相手の苗字とかすぐ忘れるんだよ。

452 名前:389 :04/10/09 12:59:09
ずいぶん上の方に流れてしまいましたが・・・

>>426
> フレームワークで行っているPreTranslateMessageみたいなことやれば?
どうもありがとうございます。ただ、PreTranslateMessage の機構を
導入するとなると、私のイメージするものからは遠ざかってしまいそうです。

>>427
> MFCのフレームワークでさえ、結構面倒な機構を準備してフォーカスの
> 復元をしてるから、一発で解決するようなメッセージは無いと思う。
なるほど・・・MFCではほとんど組んだことがなかったので気が付きませんでした。
あきらめて今までの方法でいこうと思います。どうもありがとうございました。

453 名前:デフォルトの名無しさん :04/10/09 13:39:33
>>444
もう1度122章のプログラムを作り直せ。
もとのソースは見るな。どこも書き換えるな。

454 名前:デフォルトの名無しさん :04/10/09 13:55:34
.defファイルちゃんと書いてるのかな

455 名前:デフォルトの名無しさん :04/10/09 13:57:26
>>450
output = (input)%size
って感じ。
たとえば文章を80文字で wrap すると、81文字目は次の行の先頭に表示される。

456 名前:デフォルトの名無しさん :04/10/09 14:12:13
>>454
__declspec(dllexport) してるんだからそんな必要はない。
ラベル名に対する、ある思い込みが邪魔をしているだけだ。

457 名前:デフォルトの名無しさん :04/10/09 14:35:06
>>456
はぁ?嘘もいい加減にしろヴォケ
defファイルきちんと書かんと@付いた変な名前になって
GetProcAddressで引けなくなるぞ


458 名前:デフォルトの名無しさん :04/10/09 14:41:07
extern "C"が要るんだっけ?

でもそうすると他の言語から呼び出せなくなるね

459 名前:デフォルトの名無しさん :04/10/09 14:46:45
>>457
装飾名になるかどうかはエクスポートしたかどうかとは無関係

460 名前:デフォルトの名無しさん :04/10/09 14:50:05
↑何言ってるのかワカンネ
ほら、チョン学校で日本語やり直さないと

461 名前:デフォルトの名無しさん :04/10/09 14:53:32
>>458
ha?

462 名前:デフォルトの名無しさん :04/10/09 14:57:34
>>460
だいたい「変な名前」なんて用語ねえんだよ
おおかた MSU 逝く金もねえんだろ (プゲラ

463 名前:デフォルトの名無しさん :04/10/09 14:58:50
MSDN も全部デッドコピーか

464 名前:デフォルトの名無しさん :04/10/09 15:00:54
>>459
装飾名になるかどうかはエクスポートしたかどうかとは無関係だから、
defファイルを書いておかないと装飾名つきのままエクスポートされてしまうと言っているのだと思うが。

465 名前:デフォルトの名無しさん :04/10/09 15:04:55
>>464
なるほど、アフォケテーイでよかったんだな

466 名前:デフォルトの名無しさん :04/10/09 15:15:26
質問者の分際で情報小出しする馬鹿は、もうスルーしろ。


・・・・・・・・・・・・・・dllネタ終了・・・・・・・・・・・・・・・・・・・・

467 名前:デフォルトの名無しさん :04/10/09 15:17:06
・・・・・・・・・・・・・・dllネタ再開・・・・・・・・・・・・・・・・・・・・

回答者づらをしてみたかっただけのど初心者が1人いるようだがスルーよろ

468 名前:デフォルトの名無しさん :04/10/09 15:20:51
>>449
質問者は「最近のPC」と書いてるデショ。
質問者はもう少し情報を提供してくれないと返答できませんョ。


469 名前:デフォルトの名無しさん :04/10/09 15:39:52
もう少しって、どのくらいか基準でもあるのか?
詳しく書かれすぎても連投荒らしみたいになるぞ

どんな情報が必要かは回答者ごとに異なると思う

470 名前:デフォルトの名無しさん :04/10/09 16:00:00
核心の部分を故意に記述しない質問者も荒らしだろ。
しかも、他人を巻き込み無駄レスを大量発生させる。

471 名前:デフォルトの名無しさん :04/10/09 16:17:10
いっぱつサックリ答えられる必要ないじゃん
技術的な話を楽しみに来てる人だっているわけで・・・

472 名前:デフォルトの名無しさん :04/10/09 16:46:47
RegisterClassがめんどいんですけど。
最近では既存のコントロール乗っ取ってサブクラス化して
自分色に染めるのが好きです。
そういう用途に都合の良い既存クラスってありませんか?

473 名前:デフォルトの名無しさん :04/10/09 17:10:42
腐女子は何でも801の対象にできる

474 名前:デフォルトの名無しさん :04/10/09 17:22:26
>>472
static

475 名前:デフォルトの名無しさん :04/10/09 18:01:14
>>473
俺もか?

476 名前:デフォルトの名無しさん :04/10/09 19:32:41
>>475
もちろん

477 名前:デフォルトの名無しさん :04/10/09 20:00:22
GDI+でダブルバッファリング使いたいんですけど、
C++の場合はどのようにすれば良いんでしょうか?
C#だと
Image img = new Bitmap(width , height);
Graphics buf = Graphics.FromImage(img);
として、バッファに書き込み最後に
g.DrawImage(img , 0 , 0);
とすれば良いと、分かったんですが
C++になると分かりません。
どなたか教えてください

478 名前:デフォルトの名無しさん :04/10/09 20:33:59
>>477
同じやり方ででけへんかい?

479 名前:374 :04/10/09 20:37:13
DLLのロードに成功しました。やはり、VCとBCCの仕様の違いが原因だったようです。

borland C++Builder での DLL の構築方法
ttp://www.borland.co.jp/qanda/cbuilder/c0003194.html

大変ご迷惑をおかけして、申し訳ありませんでした。しかし、なぜこのような違いがあるのでしょうか?


480 名前:デフォルトの名無しさん :04/10/09 20:46:54
>>479
BCCちゅーからコマンドラインかと思たーよ

481 名前:374 :04/10/09 20:54:53
>>480
BCC Developerを使用しています。


482 名前:デフォルトの名無しさん :04/10/09 20:59:37
>>479
何の仕様が違うと思ってるのかは知らないが、
そこに書かれている内容はVC++の場合となんら違いない。

483 名前:477 :04/10/09 21:09:48
>>478
C++の場合
Image img = new Bitmap(width , height);
の部分でどう書けばいいか分からないんです。。。

484 名前:デフォルトの名無しさん :04/10/09 21:24:46
>>479
それってGetProcAddressを使った明示的ロードには見えないがそれでいいのか?

485 名前:デフォルトの名無しさん :04/10/09 22:14:02
>>483
ここらへんみて勉強しな
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dllproc/base/getprocaddress.asp

486 名前:485 :04/10/09 22:17:44
間違えた w
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/gdicpp/GDIPlus/usingGDIPlus.asp

487 名前:374 :04/10/09 22:20:18
>>484
次のように書き換えました。

extern "C" __declspec(dllexport) int TestFunc( int a, int b )

extern "C" int WINAPI __declspec(dllexport) TestFunc( int a, int b )

このように書き換えないと、DLLのロードに失敗します。


488 名前:デフォルトの名無しさん :04/10/09 22:28:04
もういいじゃん。飽きた。

489 名前:デフォルトの名無しさん :04/10/09 22:30:16
まんぐりがえしを抑制するだけだろ

490 名前:デフォルトの名無しさん :04/10/09 23:00:42
>>489
ワラタ

491 名前:デフォルトの名無しさん :04/10/09 23:12:07
>>435で駄目で>>487はいけるのか。ようわからん環境なんだな。

492 名前:デフォルトの名無しさん :04/10/09 23:23:00
荒れるからageないで

493 名前:デフォルトの名無しさん :04/10/09 23:30:48
うっさい

494 名前:初心者 :04/10/09 23:53:50
ウィンドウのサイズ変更したら再描画するようにするにはどうすればいいか教えてください

495 名前:デフォルトの名無しさん :04/10/09 23:56:15
CS_HREDRAW, CS_VREDRAW

496 名前:初心者 :04/10/10 00:19:05
>>495
ありがとうございます。あとWM_PAINTメッセージじゃなくて
ウィンドウのサイズを変更したら送られるメッセージとかってありますか?

497 名前:デフォルトの名無しさん :04/10/10 00:21:24
>>496
WM_SIZE
っていうかMSDN読め

498 名前:デフォルトの名無しさん :04/10/10 00:24:58
スパれよ小僧が

499 名前:デフォルトの名無しさん :04/10/10 00:28:38
スパれよ小僧が
http://www.nissinfoods.co.jp/news/news_release.html?nid=780

500 名前:デフォルトの名無しさん :04/10/10 00:42:26
WM_SIZINGも調べとけ


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