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


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

VisualC++相談室 4
251 名前:デフォルトの名無しさん :01/10/15 00:53
> >いちいち書く手間が省けるからさ。
> そう言えよ。(藁

”その程度”読みとれよ(藁

それともぼくちゃんのわかる言葉で、懇切丁寧に教えろと?

教えて君は例え素質があろうと嫌がられるよ?
言葉を曲解せずに素直に取れよ。日本語勉強すれ。

252 名前:デフォルトの名無しさん :01/10/15 00:53
>>248
それで何を喩えようとしているのかサッパリわからん。

253 名前:デフォルトの名無しさん :01/10/15 01:01
>>245-252
関係ない話題はどこかでやってください。

254 名前:236 :01/10/15 01:38
>>251
|> なんでデフォルトコンストラクタが作られるんでしょうか?
|> コピーコンストラクタを自動生成してもあまり嬉しくないから。

「なぜ右の道から?」
「左の道だと遠回りだから。」
のようにとらえていました。
だから、「大半の人には右の道行ったほう(=def.con.自動生成)が嬉しい」のですよね?
で、右の道行けなかったら、左の道から行くことになりますよね。
私は後者のように考えていたわけです。

まー、わかってもらえれば嬉しいですけれども、
わかってもらえないならわからないでも良いです。

質問に答えてくださってありがとうございました。

255 名前:デフォルトの名無しさん :01/10/15 01:44
右と左しかないのか?
人に聞く前にまっすぐ突き進めよ。

256 名前:草加せんべい :01/10/15 02:12
くさっ!!!

257 名前:デフォルトの名無しさん :01/10/15 02:25
>>254
そこで右と左しか道がないと思いこむのはお前の思考が不自由なだけ。

258 名前:デフォルトの名無しさん :01/10/15 03:05
思い込みってのは怖いよ
間違った事を絶対正しいと思い込んでしまうと抜け出すのは難しい。
そういうときはちょっと下がって、上から下から斜めから眺めると
正しい道が見えてくる、とか言ってみる。

259 名前:デフォルトの名無しさん :01/10/15 07:30
なんか人生相談みたいで(・∀・)カコイイ!!

260 名前:デフォルトの名無しさん :01/10/16 00:16
>>259
さぁ、悩める子羊たちよ。

261 名前:void君 :01/10/16 01:26
こんばんは、日曜日に基本情報技術者試験を受験します。
C言語の再帰的関数について教えてください。
#include<stdio.h>

long int combi(int n, int r)
{
long int C, C1, C2;
if(r == 0 || r==n) return 1L;
C1 = combi(n-1, r);
C2 = combi(n-1, r-1);
C = C1 + C2;
return C;
}
int main (void)
{
printf("5C3 =%1dです\n", combi(5,3));
}
結果 %1d には10が表示されるのですがcombiの中でどんな流れで値が10になったのか解りません。
C言語が準備不足で・・・これくらいの基本解ってないと合格厳しいでしょうか?
誰か教えてください、お願いします!

262 名前:デフォルトの名無しさん :01/10/16 01:51
組み合わせ数に関する恒等式 C(n,r)=C(n-1,r)+C(n-1,r-1) があるつーのは前提でいい?
だったらそのまんまだと思うんだけど。

combiを再帰呼び出しするところでは、あえてその先の流れは追わずに
「なんか知らないがとにかく答えが返ってくる」と考えればいい。

263 名前:void君 :01/10/16 02:16
説明ありがとうございます。C(n,r)=C(n-1,r)+C(n-1,r-1) の計算はやってくれていることになるのかな?
再帰的関数の使い方わかってきました、ホント感謝です。

264 名前:デフォルトの名無しさん :01/10/16 13:42
プログラマーじゃないんですけど、疑問に思ったので質問させてください。
文書作成ソフトなんかでアンチエリアスに対応していると文字が見やすいすよね。
でも、対応しているソフトがそんなにないのは対応するのは難しいってことなんですかね?
それともニーズがあまりないんですか?

265 名前:デフォルトの名無しさん :01/10/16 14:09
エディットコントロールみたいなのを自作して
ダイアログ上のコントロールとして使用できるようにしています。
基本的に動いているんですがSPY++でメッセージを見ると
WM_KEYDOWN WM_KEYUP の間に毎回 WM_GETDLGCODE が送られてきます。
Windows標準のエディットコントロールでは送られていないメッセージなので
毎回送られる必要はないと思うのですが何処か間違っているのしょうか?
ちなみに WM_GETDLGCODE では DLGC_WANTALLKEYS を返すようにしています。
APIを使うか何かのメッセージに応答すると WM_GETDLGCODE が送られて来ないようになりますか?

266 名前:デフォルトの名無しさん :01/10/16 14:42
>>264
速い方がいいってこともあるし、最近のWindowsでは
サポートされているという事情も有る。

267 名前:デフォルトの名無しさん :01/10/16 14:57
ソケット通信を行うサーバーで複数のクライアントと同時に通信する場合
クライアントの数だけスレッド作って通信するもんですか?
CAsyncSocket::ReceiveやCAsyncSocket::Sendって処理が終わるまで返ってこないですよね?
これだと特定のクライアントとの通信が極端に遅い場合に他のクライアントが
待ち状態になってしまって非効率的なので別スレッドで通信した方が良いですよね?
それとも非同期で通信して完了したら何かのイベントが発生するようにできますか?

268 名前:はち :01/10/16 15:09
VC++で、チェックボックスをオーナー描画したいのですが。。。
関連で何かご存知なこと教えてください。

269 名前:  :01/10/16 15:43
>>267
1)httpサーバー側で勝手にスレッド作って立ち上げますんで
  生成に関しては気にしなくていいです。
2)大抵のブロック関数は待ち中にスレッド切り替えしてます。

270 名前:デフォルトの名無しさん :01/10/16 17:09
>>268
ご存じなことて言われても。
チェックボックスにBS_OWNERDRAWスタイルを追加して
親ウィンドウのWM_DRAWITEMで描画。

271 名前:デフォルトの名無しさん :01/10/16 19:03
Accessのデータベースを扱いたいのですが、
Cでは構造体と配列 とポインタが使えるので、
ADOなどでデータベースに接続するより、これらを
使ったほうが簡単にdbができると思うのですが
どうでしょうか?
マジレす希望

272 名前:デフォルトの名無しさん :01/10/16 20:35
モノにもよると思われ。
もっとも、キミが AVLTree や B+Tree を作れるなら、だけどね。

もしかして、データベース理論、ちゃんと理解して書いてる?

273 名前:sage :01/10/16 20:42
データ件数が少なかったり固定だったり
複雑に絡み合ってたりしないなら、
XMLやCSV形式で保存して、読み書きするのもよし。
勝手にやれ。

でも、そうでないならISAMを使うことを検討してみては?
構造体とかなんとかいってるレベルだと、
ほとんどの場合、ISAMで十分な要件。
速いし、Accessの癖とバグに悩まされないですむ。

手抜きをしたくてAccessのVBAやフォームを使うんでない限り、
Accessを選択する意味はほとんどない。

RDBが必要だけど、大したデータを扱わないとか、
手抜きをしたくてODBC経由でクラサバやるんだけど、金がないとか
いう内容なら、MSDEで十分。

それ以上なら、それなりのDBを使え。

でもやっぱり、君のレベルならCSVかISAMが手頃だし、お似合いだ。

274 名前:いさましいチビの女 :01/10/16 20:42
>>271
簡単な構造のデータなら、それでもいいかも。
2ちゃんねるのデータもテキストファイルで持ってるそうだし。

275 名前:デフォルトの名無しさん :01/10/17 09:46
ほんとにくだらないんだけど
VC++6.0でWINAPIのPostThreadMassageって関数を呼び出すときに
どやって定義したら良いの?いや関数I/Fはわかってんだけど、
定義のやり方がわかんない。

276 名前:デフォルトの名無しさん :01/10/17 10:00
定義と宣言を間違えているような。。。。
------
ヘッダ : winuser.h 内で宣言
インポート ライブラリ : user32.lib を使用
------
って書いてあるから、winuser.h 見れば?

277 名前:デフォルトの名無しさん :01/10/17 10:13
だめでした。
オプション→ディレクトリでライブラリファイルのパスはとおってる
んだけど。Hインクルードに追加したけど変化なしです。
\SVMain.cpp(629) : error C2660: 'PostThreadMessageA' : 関数が不正な 3 個の実引数をともなって呼び出されました。

278 名前:デフォルトの名無しさん :01/10/17 10:29
>>277
>不正な 3 個の実引数

引数は4個のはず。どこか間違えている。629行の辺りを書いて。

279 名前:デフォルトの名無しさん :01/10/17 10:34
たしかに3個で呼んでます。
でもおかしいな?MSDNでみたら引数3個だったんだけど。

//照合完了イベントの通知
bstrWork = SysAllocString(wcCmnNo);
///////////////////////////////////////////TRACE
svt.FreeTraceWrite(3, 100, "0x%08x !照合完了イベント通知処理開始", this);
///////////////////////////////////////////TRACE
//2001.10.16 yonezawa mod start
// FireEvent(CS_BOSV_RSP_ENDVERIFY, bstrWork);
PostThreadMessage(CS_BOSV_RSP_ENDVERIFY, bstrWork, 0);
//2001.10.16 yonezawa mod end
///////////////////////////////////////////TRACE
svt.FreeTraceWrite(3, 100, "0x%08x !照合完了イベント通知処理終了", this);
///////////////////////////////////////////TRACE
SysFreeString(bstrWork);

280 名前:デフォルトの名無しさん :01/10/17 10:41
型はこういう定義です。
BSTR bstrWork;

CS_BOSV_RSP_ENDVERIFYは定数。

281 名前:デフォルトの名無しさん :01/10/17 10:44
>>279
MFC と API を間違えているようだ。
MFC の CWinThread::PostThreadMessage を見ていたんだろ?

MFC は Microsoft が用意している C++のライブラリ。

Win32 API は、プラットフォーム SDK に付属している、
Windows を操作する為の関数群。

282 名前:デフォルトの名無しさん :01/10/17 10:50
>でもおかしいな?MSDNでみたら引数3個だったんだけど。

MSDN の左上の [アクティブ サブセット] を [(すべてのトピック)] に変えてみな。

283 名前:デフォルトの名無しさん :01/10/17 10:54
そうだ。。。ほんとだ。
じゃ4つにすればよいんだね。
さんくす

284 名前:デフォルトの名無しさん :01/10/17 16:17
ちっこい exe ってどうやって作ってますか
UPX は知っています
基本は API だけでガリガリ書くのだと思いますが、
pragma を利用すればそれをせずに済みますか?(リンカオプション設定)
/NODEFAULTLIB 使ってますけど、/INCLUDE って使えるのですか?
どうやって使うんでしょうか。リンク時の参照エラーメッセージを見て
マニュアルコピペで /INCLUDE するんですか?
_atexit などを LoadLibrary & GetProcAddress で呼んでるのですが・・

C ランタイムスタートアップ関数をオーバーライドすると
非ローカル変数が初期化されないらしいってヘルプで読みましたけど、
こういう場合は自分で適切な初期化関数を書くだけでいいのでしょうか
0 に初期化されるのは保証されるみたいですけど、それ以外のことをしたい場合
コンストラクタの実装を別にして、自分で呼んでやれば問題ないでしょうか?

285 名前:デフォルトの名無しさん :01/10/17 16:52
>>284
・スタートアップルーチンのオーバーライド
・Cランタイム使用不可
・RTTI使用不可
・例外使用不可
・リンク時にAlignmentを小さくする

この程度かな

286 名前:284 :01/10/17 17:37
ありがとうです>285
Enable exception handling をオフにすると
C ランタイムを使っている場合、とてもサイズが減りました! 感謝です
RTTI使用はデフォルトでオフになっていますが、
オンにしてもサイズは変わりませんでした
上記の2つを両方ともオンにしても、API のみでガリガリ書いているやつは
サイズは変わりませんでした
> ・リンク時にAlignmentを小さくする
とはどういうことを指すのでしょうか

C ランタイムを exe に取りこまずになおかつ利用する方法は
ありますでしょうか(^^;

287 名前:デフォルトの名無しさん :01/10/17 17:45
>>285
> ・リンク時にAlignmentを小さくする
これは効果大だが Win9x/ME でロードできなくなるよ。

288 名前:デフォルトの名無しさん :01/10/17 17:55
>>オンにしてもサイズは変わりませんでした
ソース内で、dynamic_castなどを使用するなってこと。

>C ランタイムを exe に取りこまずになおかつ利用する方法はありますでしょうか
自作するか、代替のAPI(sprintf > wsprintf等)を使う。
CRTDLL/MSVCRTはスタートアップルーチン削っても使用できたか不明。


289 名前:デフォルトの名無しさん :01/10/17 19:22
Visual C++初心者です。
ある市販のプログラムの特定のボタンが押された際に発行される、
メッセージというのはVC++を使って捕らえることができるのでしょうか?

やりたいことは、市販のソフト(VCまたはVBで作ってEXE で、ソースなし)
の特定のボタンを押した際のメッセージハンドらをつくりたいのです。

290 名前:デフォルトの名無しさん :01/10/17 19:28
> できるのでしょうか?
よほど特殊なものでない限り、出来ます。

291 名前:デフォルトの名無しさん :01/10/17 22:01
>>287
/opt:nowin98 なら問題ない。

後はコードセクションやデータセクションなどを結合させてしまうとか。
Hello, World なら 1,024bytes で可能だな。

292 名前:デフォルトの名無しさん :01/10/17 23:18
>>289
spyのソース見れ。いや、まずspy使え。

293 名前:286 :01/10/18 03:16
>288
今のところ自作してます
CRTDLL/MSVCRT がスタートアップルーチンなしで動くかどうかは
試してみます。しかし公式なドキュメントが見つかりませんね
関数を呼んでもエラーにはならないようですが

>287
1024byte はすごいですね
/opt:nowin98 も入れて、Susie Plug-in の DLL の作成 Tips で読んだ
/merge:.data=.text /merge:.rdata=.text /section:.text,erw
のようにやっておりましたが、2.5KB がせいぜいでした・・
具体的にどのようにやるのでしょうか

聞くところによると、500byte くらいも可能とのことでしたが・・

294 名前:293 :01/10/18 03:18
>291

295 名前:デフォルトの名無しさん :01/10/18 15:40
>>293
ほかには、、、姑息な手段として、
__declspec(naked)とか。

296 名前:デフォルトの名無しさん :01/10/18 16:33
VCで3Dを作成してるもののソースどっかにないですか?

297 名前:デフォルトの名無しさん :01/10/18 17:18
>>296
そんなこと、できるわけ無いじゃん

298 名前:デフォルトの名無しさん :01/10/18 17:40
>>296
いや、Open-GL用いて3D簡易エディタ作ってるんだけど
マウスから線を引いたりするあたりがよくわからない
で、参考となるソース探してるんです

299 名前:デフォルトの名無しさん :01/10/18 17:42
>>293
1024バイト。
#include <windows.h>

#pragma comment(linker, "/entry:main")
#pragma comment(linker, "/opt:ref /opt:nowin98 /merge:.data=.text /merge:.rdata=.text")

main() {
WriteConsole(GetStdHandle(STD_OUTPUT_HANDLE), (void*)"Hello, World!\n", 14, 0, 0);
}

300 名前:293 :01/10/18 18:31
>299
す、すごいです
1024バイト感動しました

>295
__declspec(naked) で検索してみたら面白いサイトが
タクサンでてきました。アセンブリの世界が少し
垣間見られました

あ、実行してみたら落ちた。。。
main() {
DWORD dwWork;
WriteConsole(GetStdHandle(STD_OUTPUT_HANDLE), (void*)"Hello, World!\n", 14, &dwWork, 0);
}
これで良いでしょうか

301 名前:デフォルトの名無しさん :01/10/18 19:00
>SPY

Windows2000上にBecky Ver2が立ち上がっている。
この際、受信ボタンを押したイベントハンドラを見ることは
SPYを使ってできるの?
できれば、詳細にやり方教えて下さい

302 名前:デフォルトの名無しさん :01/10/18 19:03
>>300
えーっと、win2k?
2kでしか試してないんだけど。

303 名前:291 :01/10/18 22:38
>>299
/section:.text,erw がないと NT4 では動かないみたい。
9x,2k だとデフォルトの /section:.text,er でも動くようだが。

>>300
動いているなら良いのでは?
9x だと出力したサイズがいらない場合でも NULL にはできなかったはず。

undll.exe というソフトのソースを見たら、ExitProcess で終了してた。
実際に使うようなソフトを作るなら、ExitProcess で終了するようにした方が安全かもな。
Susie Plug-in や DLL なら必要ないのだろうが。

304 名前:デフォルトの名無しさん :01/10/19 14:11
>>301
SPYのファインダーツール(メニュー・スパイ・ウィンドウ検索)を使って Becky のメインウィンドウのメッセージを監視する。
Becky で「送信」を選択すると WM_COMMAND が送られるはず。
SPYのメッセージウィンドウ?に WM_COMMAND の WPARAM の内容が表示されるので
そこから「送信」に割り当てられているIDを取得する。
自分でメッセージフック(SetWindowsHookEx)を行うプログラム(他のウィンドウのメッセージフックなのでDLLが必要)を作る。
メッセージを監視してWM_COMMAND で「送信」のIDがきたらGetModuleFileNameで送信元のプログラムのファイル名を調べ
Becky のものと同じなら(Beckyのプログラム名はレジストリのインストール情報から取得)自分のプログラムに通知して処理を行う。
「送信」のIDもメニュー・ツールバー・ポップアップメニューで異なる可能性もあるので注意。
(自分はBecky持ってないので未確認)
拙者が云えるのはこれくらいでござる。

305 名前:デフォルトの名無しさん :01/10/19 16:56
VC++初心者です、よろしくお願いします。
m(__)m ペコリ

VCからBATやEXEなどの実行プログラムを起動し、
実行したプログラムが終了するまで、
プログラムを先に進めない(非道期実行)を行いたいのですが、
どのようにすれば良いのでしょうか?

ご存じの方がいらっしゃれば、宜しくお願い致します。

306 名前:デフォルトの名無しさん :01/10/19 17:11
>>305
同期じゃん

307 名前:デフォルトの名無しさん :01/10/19 17:17
>>305
http://members.tripod.co.jp/hori54/fastcmd.html

308 名前:デフォルトの名無しさん :01/10/19 17:41
>>305

CreateProcess した後、WaitForSingleObject する。

309 名前:305 :01/10/19 18:21
>>306
すいません、同期って書いたつもりが、間違ってました。

>>307>>308
ありがとうございます。
月曜日にでも試してみます。

310 名前:草加せんべい :01/10/19 18:39
いや、今やれよ

311 名前:デフォルトの名無しさん :01/10/19 22:40
質問させていただきます。

ダイアログに貼り付けるリストボックスにおいて、
横スクロールバーを設定してもDisableになったまま機能しないのですが、
これはVCまたはWindowsのバグなのでしょうか?

プログラムで強制的にEnableにしてもダメでしたが、良い方法が
ありましたら、簡単に教えていただけると助かります。
リストボックス内に文字列が表示しきれないときに不便でしょうがないです。

312 名前:デフォルトの名無しさん :01/10/19 23:08
>>311
Windowsの仕様です。
横スクロールするリストボックスなんて見たことあるの?

313 名前:デフォルトの名無しさん :01/10/19 23:09
>>311
LBS_MULTICOLUMNスタイルじゃないと
リストボックスの横スクロールバーは出なかったような?

それだと全然違うスタイルで解決になってないのでsage

314 名前:311 :01/10/19 23:26
レスありがとうございます。
>>312
例えばエクスプローラーの詳細表示時などは横スクロールしますよね。
あれは独自にやってるのかな…そんな感じもしますね。

>>313
ありがとうございます。
月曜日にでも試してみます。

315 名前:デフォルトの名無しさん :01/10/19 23:36
それはリストビューだ

316 名前:311 :01/10/19 23:39
>>315
ということはMFC…
MFCいや〜ん

317 名前:草加せんべい :01/10/19 23:45
オリジナルテキストエディタを作りたいのですが、
テッキストボックスコントロールを1から自分で作るとなると、
ウインドウのクライアント領域に直で書かないとだめなんですか?

318 名前:デフォルトの名無しさん :01/10/19 23:59
>>317
そうだよ。面倒だけど、やってみると、とってもおもしょいよ。

319 名前:デフォルトの名無しさん :01/10/20 00:03
>>316
SDKでもリストビュー作れるやん。おれはやらないけど。

320 名前:デフォルトの名無しさん :01/10/20 01:10
FileViewのところでクラスのcppとhを1セットにして
フォルダを作りまくったのですが、
フォルダを並べ替えられないことに気づきました。
直接dspファイルを書き換えればいけそうだけど
シンプルに並べ替える方法ありませんか?

321 名前:デフォルトの名無しさん :01/10/20 01:57
>>320
適当なフォルダに全部つっこんで1個ずつ出したら順番変わったぞ。
いま手元にあるのがVC5で、VC6では試してないが。

322 名前:320 :01/10/20 14:19
おお、なるほど、VC6でもうまくいきました。感謝感激

323 名前:デフォルトの名無しさん :01/10/20 14:38
VC英語版ってどうなん?日本語版よりだいぶ安いけど
説明書が英語なだけ?それとも日本語関連のライブラリが無い?

324 名前:デフォルトの名無しさん :01/10/20 14:40
説明書が英語なだけ。

325 名前:デフォルトの名無しさん :01/10/21 01:49
サンキュウそいつはありがてえ

326 名前:デフォルトの名無しさん :01/10/21 23:25
VBの配列をDLL関数で受け取る方法

以下のようにしてVBの配列をDLL関数に渡すと、
pCount は正常に受け取っているのですが、
p() の内容がでたらめな数値を受け取ってしまいます。
どのようにすれば p() を受け取れるようになるのでしょうか?
VC初心者なので、うまく質問もすることができませんが、
よい知恵をご伝授お願いいたします m(_ _)m
--VB---------------------------------------------
Public Declare Function TASIZAN Lib "test.dll" ( _
ByRef p() As Long, _
ByVal pCount As Long) As Long

Dim p(2) As Long
p(0) = 10: p(1) = 20: p(2) = 30
MsgBox TASIZAN(p(), 3) '<-- 正常な値が表示されない


Win32 Dynamic-Link Libraryで作成
--VC---------------------------------------------
extern "C" __declspec(dllexport) int __stdcall TASIZAN( int p[], int pCount )
{
int i, kei = 0;
for( i = 0; i < pCount; i++ ) { //<-- pCount は正常
kei += p[i]; //<-- p[i] の内容がでたらめになる
}
return kei;
}

327 名前:デフォルトの名無しさん :01/10/22 00:25
VC++で__imp__EnumDisplayDevicesA@16がUser32.libに無くて
ビルドできません。
Platform SDKが要るという噂なんですがどこで手に入るでしょうか?
ダイレクトぱすを持てる人(日本語)教えてアル。m(_ _)m

328 名前:デフォルトの名無しさん :01/10/22 00:34
>>327
google で検索すれば、すぐに見つかると思うんだが。

ftp://ftp.microsoft.com/developr/platformsdk/

329 名前:デフォルトの名無しさん :01/10/22 00:36
>>327
M$

330 名前:デフォルトの名無しさん :01/10/22 00:41
>>328ftpupありがとアルm(_ _)m

331 名前:デフォルトの名無しさん :01/10/22 02:58
自作のエディタを作っているんですが特殊キーの実装のマニュアルみたいなのってあるんですか?
Ctrlを押しながらCを押すとコピーするってのは標準だと思いますが
Ctrlを押しながらDELでキャレット以降の文字を削除みたいな特殊なものって標準化されているんですか?
ほとんどのエディタで使われているので標準化されているような気もしますが・・・
どっかに資料があるなら教えて。
ないなら最低でもこれは実装しておけってキーと機能教えて。

332 名前:デフォルトの名無しさん :01/10/22 04:02
>>326
ByValでポインタ渡したらダメなん?
p自体は結局ポインタだと思うんだけど・・・

333 名前:デフォルトの名無しさん :01/10/22 04:07
>>331
MSDNの中にショートカットキーとかUIに関するガイドラインみたいの
があるから、”ユーザー インターフェース ガイドライン”あたりで
検索すれ。

334 名前:デフォルトの名無しさん :01/10/22 04:27
>>326
もしくはp(0)をByRefで渡すか。
どっちが通るかは忘れた。
もしくはどっちも通るかもしれない・・・

335 名前:MFCなら :01/10/22 14:41
CListBox::SetHorizontalExtent

336 名前:MFCなら :01/10/22 14:42
ゴメン。送信ミス。
>>311
CListBox::SetHorizontalExtent

337 名前:313 :01/10/22 14:51
>>336
311じゃないけど、こんなものがあったのか。
マニュアルはちゃんと読めということですな>含む俺

338 名前:デフォルトの名無しさん :01/10/23 08:30
>332、334様
ありがとうございました。無事解決しました。

339 名前:デフォルトの名無しさん :01/10/23 11:50
>>305

過去ログ見た?
>>129 あたりから同様の質問が出てるから見てみれば。

340 名前::01/10/23 13:40
携帯のかたちのウィンドウをつくりたいのですが、どこかに
ウィンドウの形をすきにできるやりかたの載っているサイトはありませんか?

341 名前:デフォルトの名無しさん :01/10/23 13:44
>>340
やっぱMSDNでしょう。
http://www.microsoft.com/japan/developer/library/default.asp
キーワードはSetWindowRgnか?はずれたらごめん。

342 名前::01/10/23 14:26
ども

343 名前:659 :01/10/23 14:34
ビルドとコンパイルの違い教えて下さい

344 名前:デフォルトの名無しさん :01/10/23 14:36
>>343
コンパイルはファイルを一つだけコンパイルして obj を作る、ビルドはプロジェクトの
ファイルを全てコンパイルしてビルドターゲット (exe, dll, lib など) を作る。

345 名前:デフォルトの名無しさん :01/10/23 15:51
int と long ってどう違うんでしょうか

346 名前:デフォルトの名無しさん :01/10/23 17:12
>>345
Win32環境なら同じ。

347 名前:デフォルトの名無しさん :01/10/23 17:25
構造体の代入について教えてください。

OPENFILENAME of1 , of2;

@ of1 = of2;
A CopyMemory(&of1 , &of2 , sizeof(OPENFILENAME));


@とAって同じですか?
スピード的に違ったりしますか?

348 名前:デフォルトの名無しさん :01/10/23 17:30
>>347
アセンブラ出力させて眺めましょう。

349 名前:デフォルトの名無しさん :01/10/23 17:54
>>347
構造体のコピーに(2)を使うと危ないでしょ。
(OPENFILENAMEは平気だけど)

350 名前:デフォルトの名無しさん :01/10/23 18:58
>344
thanx

351 名前:デフォルトの名無しさん :01/10/23 21:49
MFCでDirectDraw使うときに、
DirectDrawCreateはどこで呼ぶのが適切ですか?

352 名前:345 :01/10/23 23:32
>346
ありがとうございました。わざわざ書き分ける必要なんてないんですね(^^;

353 名前:デフォルトの名無しさん :01/10/24 08:52
MFCのMDIアプリでMainFrameに画像を貼るってできるの?

354 名前:デフォルトの名無しさん :01/10/24 09:18
>>349
(2)が危険な理由がわからないので、教えてもらえませんか?

355 名前:デフォルトの名無しさん :01/10/24 09:21
>>354
コンパイルの仕方で構造体データが不連続になるらしい。

356 名前:デフォルトの名無しさん :01/10/24 09:40
>355それはどこで仕入れた知識だ?

357 名前:353 :01/10/24 09:43
できた。

358 名前:デフォルトの名無しさん :01/10/24 09:45
>>354
C++だと、
代入演算子が再定義されてたりするかもしれないし、
メンバ変数に、クラスがあるかもしれないし。

バイナリイメージのコピーはバグを生む可能性が高い。

(WinAPIで使う構造体は、Cを前提に書かれているんで
大丈夫だとは思うけど)

359 名前:デフォルトの名無しさん :01/10/24 09:50
>>354
その構造体がなんらかのポインタを保持しており、
それが動的に確保されたものの場合、
単純なメモリコピーではそのメモリまでコピーできない。

だから、もしそれが C++ で書かれていて、
かつその構造体に代入演算子が定義されていたら、
それを使うべし。

360 名前:デフォルトの名無しさん :01/10/24 09:50
>>356

構造体のメンバのアライメント(配置)、パック。
#pragma pack
詳しいことは知らないが。

361 名前:デフォルトの名無しさん :01/10/24 10:00
32ビットPCは1アドレス4バイト。
静的な場合は、各メンバは4バイト境界に置かれる。
動的に確保された場合、メンバが詰められて配置される。

362 名前:デフォルトの名無しさん :01/10/24 10:07
>>360
それは別に、CopyMemory()を使っちゃいけない理由には
ならないと思う。

363 名前:354 :01/10/24 11:21
>>358
了解。
それでOPENFILENAMEは平気だけどと注釈が入っていたのですね。

364 名前:DQS :01/10/24 16:17
concole applicationでコンソールを表示させないようにするには
どうしたらよいですか?ドキュソですいません。

365 名前:デフォルトの名無しさん :01/10/24 17:48
>>364
ディスプレイに出力しないアプリならWin32アプリから呼び出せば非表示じゃないの?
違ったっけ?

366 名前:aaa :01/10/24 17:53
aaaa

367 名前:お胸おっぱい :01/10/24 18:02
>>364
以下のどれでも。

1. ウィンドウのない Win32 アプリにする。
  ・プリプロセッサの定義の _CONSOLE を _WINDOWS にする。
  ・リンクの“一般”のプロジェクトオプションの /subsystem:console を
    /subsystem:windows にする。
  ・main を WinMain にする。
  VC++ 4.2 ではこれで出来たけど、今はどうかな…

2. 起動用のショートカットを作って、プロパティの“実行時の大きさ”を“最小化”にする。
  実行するときはショートカットから。

3. 頭で FreeConsole() を呼ぶ。一瞬表示されるのは我慢。

368 名前:デフォルトの名無しさん :01/10/24 18:05
>>364
コンソールアプリじゃなくて、
普通のWin32 applicationじゃいかんの?
mainをWinMainにするだけじゃん。

369 名前:DQN生 :01/10/24 19:21
longより大きい桁数を表示できる変数教えてください。

370 名前:デフォルトの名無しさん :01/10/24 19:25
__int64

371 名前:デフォルトの名無しさん :01/10/24 19:25
>>369
表示じゃなくて表現、ね。

372 名前:デフォルトの名無しさん :01/10/24 19:41
__int64ってなに?

373 名前:デフォルトの名無しさん :01/10/24 20:19
>>372
Microsoft C/C++ がサポートする 64-bit 整数型。

374 名前:デフォルトの名無しさん :01/10/24 20:31
VCスレだから、__int64で正解でいいだろ

375 名前:草加せんべい :01/10/24 21:05
windowsXPでは、C++を前提にAPIが書かれるといううわさは本当ですか?

376 名前:デフォルトの名無しさん :01/10/24 23:18
CreateProcessにDOS窓表示させないフラグあるわよ

377 名前:大三元 :01/10/25 00:01
初心者質問でごめんちゃい。

@”ブレークポイントが設定出来ない〜〜”と怒られる。
A「'C:\WINDOWS\SYSTEM\KERNEL32.DLL' をロードしました、
合致するシンボル情報は見つかりませんでした。」と出る。

Helpの”ブレークポイントが機能しない原因について”を読んで、

B[プロジェクト設定] ダイアログ ボックスの [デバッグ] タブの [追加する DLL]
をいじり、再試行すると、

C「'C:\WINDOWS\SYSTEM\kernel32.dll' のシンボルを読み込みました」と出、次に、
A「'C:\WINDOWS\SYSTEM\KERNEL32.DLL' をロードしました、
合致するシンボル情報は見つかりませんでした。」と出る。

Bの効果がないように思われるのだが。・・・それとも見当違いなのか?

何だか、これで半日が潰れてしまった。助けてくれまし。

P.S.
・同名ファイルに関するチェックもしたが。
・verは5。

378 名前:デフォルトの名無しさん :01/10/25 00:09
「合致するシンボル情報は見つかりませんでした。」
はデバッグモードで出てくるメッセージですね。
俺はそういうのは無視してますが何か?

ブレークポイントが設定出来ないのはコードのない領域に
セットしようとしてないですか? 場所を変えても駄目?

379 名前:デフォルトの名無しさん :01/10/25 00:19
>>377
C:\Windows って書いてるところを見ると NT/2000 ではなく 9x/ME 系の OS を
使ってる? 9x/ME は OS が copy on write の機能を持っていない都合上、シ
ステム DLL が提供する関数にはブレークポイントを設定できないよ。

380 名前:デフォルトの名無しさん :01/10/25 00:21
>377
それってWinNTとかWin2000のOSのデバッグシンボルをインストール
していないからじゃないかと・・・。

違っていたらスマソ。

381 名前:大三元 :01/10/25 01:21
レスThanksです。

>378
ある単一の行に対して設定出来ないというのではなくて、
ソース(もしくはその一部?)に設定出来ません。
>379
95です(イマドキナガラ(笑))。
自分作成のソースに設定したいです。
>380
実は、雑誌付録のプログラムをビルド・デバックしてるんですけど、
(雑誌の筆者のOSが)Win2000だった場合には、”Win2000のOSのデバッグシンボル”
をインストールする必要があるってことでしょうか?
”××のOSのデバッグシンボル”とは?







382 名前:  :01/10/25 01:27
デフォルトでF9を押したラインにブレークポイントが設定される
(左側に茶色の丸ができる)
もしデバッグ実行時にその警告メッセージが出るなら単純に
そのラインがブレークポイントにできない。(下にずれたりするはず)
例えばしたのバツの部分は設定できなかったりする。

× if(0){
●   i = 0;
●  }

383 名前:デフォルトの名無しさん :01/10/25 02:32
OSのデバッグシンボルはそのまんま、WindowsNTとかのシステムDLLの
デバッグ情報の*.dbgファイルのこと。
シンボルファイルは、デバッグ中でシステムコード上のスタックをトレースする時に
必要です。また、OLE RPCのデバッグにも必要です。
だそうな。(システムシンボルセットアップの説明より)

たぶん、デバイスドライバを作ったりする以外では必要になることは殆どないと思いますが
NT系のOSで「デバッグ情報は見つかりませんでした」と出てくるのが気になってしょうがない
人は入れとけばいいんじゃないかと。
(かなり大きい&SPのバージョンにあわせてMSからとってこないといけないので)
95系列の人は素直に黙殺しましょう。

今回は自作のソースのデバッグなのでシステムDLLのデバッグ情報は無くても
大丈夫です。

ブレークポイントが置けるところは382さんの説明を読んでチェックしましょう。

あと、
・アクティブな構成がwin32 debugになっているか
・リンクのオプションでデバッグ情報を生成するにチェックが入っているか
も一応確認してみてね。

384 名前:デフォルトの名無しさん :01/10/25 07:33
だれかvisualC++のヘルプファイルください!おねがいします!

385 名前:デフォルトの名無しさん :01/10/25 07:52
>>384
犯罪を教唆したかどで (以下略)

386 名前:デフォルトの名無しさん :01/10/25 08:45
>>384
http://www.microsoft.com/japan/developer/library/default.asp
ほい。

387 名前:名無しさん :01/10/25 13:34
VCでソースウィンドウをフルスクリーンでいくつか開いてる時に
次々ソースを切り替えるショートカットを教えてください。
説明が下手でスマソ。

388 名前:デフォルトの名無しさん :01/10/25 13:43
>>387
なぜヘルプを読みませんか?
面倒なので教えてやるが正解はCTRL+F6。
つーか、MDIの基本ショートカット。

389 名前:387 :01/10/25 14:15
>>388
ヘルプのどこを読んだらいいかわからなくて。
ありがとですm(__)m

390 名前: :01/10/25 20:41
マウスでドラッグしながら範囲指定した複数行の先頭に
"//"というコメントアウトを挿入してくれるアドインはありますか?

391 名前:  :01/10/25 20:46
/**/
で囲むマクロならサンプルに入ってるけど…。
//じゃなきゃイヤなの?

392 名前:デフォルトの名無しさん :01/10/25 20:50
>>387
CTRL+TAB。
普通のウインドウズでALT+xでできることは、
MDIでも大体CTRL+xで行えるようになってる。

393 名前:デフォルトの名無しさん :01/10/25 20:51
>>391
俺390じゃないけどマクロを使えばいいんだね、Thx!
VCプログラミングでマクロを使うって発想が無かったよ

394 名前:384 :01/10/26 00:17
どうも。>>386
Virtual-Key Codesの表を参照したいのですが、無かった。
だれか書いてください・・お願いします。

395 名前:デフォルトの名無しさん :01/10/26 00:45
>>394
WINUSER.Hではどうか。

396 名前:デフォルトの名無しさん :01/10/26 00:53
>>394
MSDNに載ってるはず。オンラインの方はどうだか知らんが。
オフラインのを持ってないとは言わせない。

397 名前:デフォルトの名無しさん :01/10/26 01:02
選択範囲で置換したいのですが、
「選択範囲」チェックボックスが無効になっていて
「ファイル全体」しか選択できません。
いちおう、選択してから、Alt+Shift+7を選択しているのですが・・・。

vc++6 sp5

398 名前:競れ損 ◆hPlq..gg :01/10/26 01:08
>>397
置換はCtrl+Hですよ。
Alt+Shift+7って私の環境だとなんも起こらないのですが何なんでしょう。

399 名前:デフォルトの名無しさん :01/10/26 01:48
Ctrl+HがBSではないエディタは嫌いだ。
Ctrl+MがEnterではないエディタも嫌いだ。

400 名前:ドキュソグラマ :01/10/26 03:05
VC++7のコンパイルしたあとのコードなんかおかしい。
レイトレースの簡単なやつでBC5.0とVC++5.0では結果が同じだが
VC++7は浮動小数演算のどこかがおかしい。

401 名前:384 :01/10/26 03:25
申し訳ないですがVC++本体持ってません。
フリーソフトの設定ファイルに
Virtual-Key Codesを参照してください。とあったのですが
それでとても困ってます。だれかください・・・

402 名前:デフォルトの名無しさん :01/10/26 04:00
このメッセージはどうしたら解読できるのでしょうか。

*** のページ違反です。
モジュール : ***.***、アドレス : 015f:004011b1
Registers:
EAX=00000020 CS=015f EIP=004011b1 EFLGS=00010202
〜(略)〜
Bytes at CS:EIP:
f3 a5 8b c8 〜(略)〜
Stack dump:
00000da0 00666644 〜(略)〜

アドレスはエラーの起きたアドレス、Registers は直前にレジスタに
入っていた値というのはわかるのですが、Bytes at **:** や、
Stack dump: が何を示しているのかわかりません

403 名前:デフォルトの名無しさん :01/10/26 04:36
>>401
VK_UP VK_DOWN VK_SHIFT・・・こんな感じ。
0〜9とA〜Zはアスキーコードのまま。
たしかJAVAのリファレンスにも書いてあるぞ。

404 名前:384 :01/10/26 05:02
>>403
わかりました。ありがとうございました。

405 名前:デフォルトの名無しさん :01/10/26 06:07
>402
Bytes at CS:EIP:
は実際に例外を起こした命令部分のダンプ(CS:EIPは実行アドレスを保持してる)
f3 a5は「rep movsd」で
8b c8はえ〜と…「mov ecx,eax」だな
あとはプログラムのソースと照らし合わせて例外を起こした該当箇所を断定してやればいい
この場合rep movsdでエラーだから
恐らくmemcpy辺りで転送長をバッファの容量よりも多く取りすぎたとか
ポインターを初期化し忘れたとかがエラー原因
典型的なmemcpyのインライン展開コードだしね
略った所は83 e1 03 f3 a4辺りか?(and ecx,3;rep movsb)
まぁ判る人ならココまで状況を詳しく判らせてくれる便利な情報だ

ちなみにプロジェクトの設定でC/C++タブのカテゴリ>ファイルリスティングにある
リスティングファイルタイプを「マシン語コードとソースを含む」に設定しておけば
ある程度は自力でバイナリからニモニックを読まなくてすむぞ
objのあるフォルダにcodってファイルができるからそれから箇所を断定してけ

Stack dump:は例外発生時のスタック(SS:ESP)の内容
押し込んである内容から更に絞り込んで例外発生時の状況や
関数の位置を断定できたりできなくはないが
CS:EPIよりもさらに上級者向けの情報なので402君は無視してイイぞ

406 名前:デフォルトの名無しさん :01/10/26 06:48
VC++というよりC/C++言語の問題ですが
予約語をカラー表示するエディタを作ってるんですが
C/C++の予約語って何がありますか?
MSDNで予約語を調べたところ載ってませんでした。
Javaやリンカの予約語は載ってたんですが。
(ちなみにJavaの予約語のカラー表示は完成済みです。)
C/C++の予約語一覧ってどこかで調べられませんか?
できれば意味付きで調べたいです。
(カラーの割り振りに影響するため)
知っている人教えてください。
「本を買え」ってのは無しでお願いします。

それと前から気になっていたんですがダイアログリソースでボタンを「標準のボタン」にした場合Enterキーを押すとそのボタンが押されたようになるんですよね?
OKボタンが標準の時は問題無いんですがOKボタンを削除して自分で追加したボタンを「標準のボタン」にするとうまくいかない場合があります。
見た目では強調枠で表示されて同じなんですが肝心のメッセージが送られてきません。
リソースで設定する以外にも何かやらなければいけない事ってあるんですか?

407 名前:デフォルトの名無しさん :01/10/26 07:30
貴様のダイアログには標準ボタンがいったいいくつあるんだ、ん?

408 名前:デフォルトの名無しさん :01/10/26 10:21
>>405
先生!
上級者になるためには何読んだらいいんですか?

409 名前:402 :01/10/26 10:44
>405
確かに略した所は正にあなたのおっしゃる通りでした。ドンピシャです。
すごすぎーです・・。
http://www.intel.co.jp/jp/developer/design/pentiumiii/manuals/
アセンブリのことはよく知らないのですが、ここでも参考にして
ぼちぼちかじって行きたいです。
ネットに講座が点在してるらしい MASM も DL してます。

>リスティングファイルタイプを「マシン語コードとソースを含む」に設定しておけば

こんな便利な機能があったんですね。
今までわざわざ XDAWIN で、できたバイナリを逆アセンブルしたり、
VC++ のデバグモードでニーモニックを追ったりしてました(^^;
貴重な事を教えていただき、どうもありがとうございました。

410 名前:デフォルトの名無しさん :01/10/26 11:53
>>406
標準のボタンというのはラジオボタンに対して普通のボタンという意味。
Enterでメッセ−ジを受け取るのはフォーカスを持っているボタン。
TABキーを押していくとボタンに点線で出来た枠が表示されるだろ?
そのときにEnter(またはスペース)を押せばそのボタンにメッセージが送られるよん。

ってこんなのVC++じゃなくてWindowsの使い方じゃん(w

C/C++の予約語一覧はそれで検索して。

411 名前:410 :01/10/26 12:24
追加。
「EnterキーでOKボタンが押されてダイアログが閉じる」ようにしたいなら
自分で追加したボタンのメッセージハンドラに OnOK(); を書くべし。

412 名前:405 :01/10/26 13:40
>408
さぁ?なに読んだかなぁ……もう覚えてないや
とにかく本屋に売ってる本、片っ端から全部読めば?多少はマシになると思うよ
出力されたcodを読むのもVCの癖をつかむのにイイかな
少なくとも俺はWinプログラム始める前にx86asmは普通に読み書きできたしねぇ…

413 名前:A :01/10/26 13:47
Visual C++ Professional で
コンパイルしたあとのアゼンブラの
コードを見る方法教えてください

414 名前:デフォルトの名無しさん :01/10/26 13:58
>>413
ん?つい最近見たよね?と思ったら>>405に書いてあるじゃん!

415 名前:A :01/10/26 14:29
リスティングファイルタイプって?

416 名前:デフォルトの名無しさん :01/10/26 14:32
>>413
対応する C のコードがわかってるなら、そこにブレークポイントを設定してデバッガで実行 (F5)、
ブレークポイントでとまったらデバッグ用のツールバーから [混合モード] を選択、というのもアリ。

417 名前:デフォルトの名無しさん :01/10/26 16:49
 VC++6.0で、SDKでアプリケーションを作っています。
 ソースファイルが増えてきたので、フォルダ分けしてすっきりさせたのですが、
Debugビルドで以下のようなエラーメッセージが出るようになってしまいました。

e:\test\debug\AAA\vc60.pdb は、このプリコンパイル済みヘッダーが作成されたときに
使用された pdb ファイルではありません。プリコンパイル済みヘッダーを再作成してください。

 ソースファイルの配置はこんな感じです。

e:\test\stdafx.h
e:\test\stdafx.cpp ->e:\test\debugに中間ファイルを出力
e:\test\AAA\src.cpp ->e:\test\debug\AAAに中間ファイルを出力
e:\test\BBB\src.cpp ->e:\test\debug\BBBに中間ファイルを出力
(もちろんほかにもソースはありますが、関係ありそうなファイルの
位置関係だけを示しています)

 どうもvc60.pdbを各フォルダに作ってしまうからおきてしまうエラーのようです。
Releaseビルドではvc60.pdbを生成しないから問題なくビルドできました。

1.ソースファイル名が一致するから、中間ファイルを出力するフォルダを別にしたい
2.プリコンパイルを有効にしたい
3.Debugビルドをエラーを出さずに行いたい

 以上の三つの条件を同時に満たすには、どうしたらいいのでしょう?
いまのところ、どれかひとつを犠牲にしないとビルドできないみたいなので、
困っています。

418 名前:デフォルトの名無しさん :01/10/26 17:04
>>417
プロジェクト→設定→出力ディレクトリ

好きなとこに変えれ。(「../Debug」とか)

419 名前:椎名 :01/10/26 17:17
>>418
 いや、ですから出力ディレクトリを変えたら、

e:\test\debug\AAA\vc60.pdb は、このプリコンパイル済みヘッダーが作成されたときに
使用された pdb ファイルではありません。プリコンパイル済みヘッダーを再作成してください。

って出てきて困ってるんです。

420 名前:お胸おっぱい :01/10/26 17:43
プロジェクト→設定→リンク→カテゴリ:カスタマイズ→プログラム データベース名
で変えてもダメ?

421 名前:お胸おっぱい :01/10/26 17:44
リビルドしないとダメかも…

422 名前:406 :01/10/26 17:54
「標準のボタン」を押したときにメッセージが送られてこないのは IsDialogMessage を呼んでないだけでした。
モードレスダイアログの基礎が分かっていないだけでした。
追加質問ですがモードレスダイアログが表示された状態でモーダルダイアログが表示された場合モードレスダイアログを無効に
モーダルダイアログが閉じたら有効にしたいんですがどうやるんですか?
現在は親ウィンドウの WM_ENABLE を使用して行っていますがこれでいいんですか?
違うやり方なら教えてください。

423 名前:椎名 :01/10/26 23:12
>>420
 えーっと。これをどう変えればいいんですか? ここで変更できるのは
「test.pdb」のフォルダ位置や名前だけで、vc60.pdbはそれに関係なく
各フォルダに出来るみたいですが…。
 それに、「プログラムデータベースを使用」のチェックを外しても
test.pdbが作成されなくなるだけで、vc60.pdbはどっちみち作成されてる
ようです。

424 名前:デフォルトの名無しさん :01/10/27 00:17
>>422
モードレスダイアログを無効にとはどういうこと?
入力を受け付けないようにしたいの?
その状態でモーダルダイアログが表示されてる?
ハァ?設計がおかしいだろ、明らかに。
モードレス→モードレスかモーダル→モードレスにしろ
モーダル→モーダルならなお良いが。

425 名前:デフォルトの名無しさん :01/10/27 02:03
>>419
試してないけど cl.exe の /Fd オプションを手で設定するのは?

426 名前:椎名 :01/10/27 03:35
>>425
 いや、どう設定すればいいのか分からないんですが…。

 というか、ちょっと質問を変えます。みなさん、ソースファイルが
増えてきたら、どうやって対処されてるんですか? フォルダわけを
するしかないですよね? それで、フォルダわけしたら、それぞれの
フォルダではファイル名の一致を気にせずにネーミングしますよね?
どうやってビルドされてるんですか? 根本的に全く違う解決方法が
あるんでしたら、教えてください。m(__)m

427 名前:デフォルトの名無しさん :01/10/27 03:55
>>426
プロジェクトの設定を開いて [C/C++] タブを選択。ダイアログ下部に表示される [プロジェクトオプション]
欄に手で入力。

私はファイルが増えたらプロジェクトを分割して、DLL やスタティックリンクライブラリを作るようにします
が。

428 名前:デフォルトの名無しさん :01/10/27 06:20
>>426
>フォルダ分けをしたらファイル名の一致を気にせず
これがわからん。同一プロジェクトで同じ名前のファイルがあったらあかんだろ。
普通はプロジェクトごとにフォルダ分けするだろ。
使いまわしするにしても同名のファイルが(フォルダが違っても)複数あるのはマズイだろ。

429 名前:  :01/10/27 11:44
>>391
そうです。
視覚的にわかりやすくする必要があるのです。

430 名前:397 :01/10/27 13:43
>>398
どもです。

> Alt+Shift+7って私の環境だとなんも起こらないのですが何なんでしょう。
エディタEpsilonエミューレーションにしているので
その関係かもしれませぬ。
私の場合Ctrl+Hはカーソル前文字位置文字削除なんで
Alt+Shift+7が置換ダイアログを出すのです。
やっぱり、選択してAlt+Shift+7を押しても「ファイル全体」
しか指定できないのですが・・・。

431 名前:397 :01/10/27 13:45
うう、Epsilonがまずいみたいです。
Developer Studioにしたら選択範囲置換できました・・・。

432 名前:デフォルトの名無しさん :01/10/27 16:55
VC++6.0を使って,InternetExplorerが現在表示しているページのタイトルと,
そのURLを取得するアプリケーションを作っています.
情報の取得にはDDEを使っているのですが,途中でエラーがでて上手くいきません.
手順としては
DdeInitialize()で初期化
サービス名"iexplore",トピック名"WWW_GetWindowInfo"でDdeConnect()
アイテム名"WWW_GetWindowInfo"でStringHandleを得て,
DdeClientTransaction() <-ここでエラーが出ます.
エラー値はDMLERR_NOTPROCESSEDで,説明を見ると
A transaction has failed.だそうです.
解決策をご存じの方いましたら教えてください,よろしくお願いします.

433 名前:397 :01/10/27 17:31
なんとかEpsilonで選択範囲置換できないでしょうか?

434 名前:432 :01/10/27 19:58
自己レスですが,解決しました.失礼しました

435 名前:デフォルトの名無しさん :01/10/27 23:28
>>433
Epsionの作者にクレームつければ?

436 名前:椎名 :01/10/28 10:13
>>428
>これがわからん。同一プロジェクトで同じ名前のファイルがあったらあかんだろ。
 いえ、「そういう場合はプロジェクトを分ける」ということを知らなかったものでして。
ですから、同一ファイル名のときはどうしたらいいものかと、悩んでたわけです。

>>427
>プロジェクトを分割して、DLL やスタティックリンクライブラリを作る
 ありがとうございます。今までプロジェクトの分割なんてやったことなかったんですが、
こういうときのためにあったんですね。なんとかビルドできるようになりました。
 ところで、スタティックリンクライブラリをリンクするために、

#ifdef _DEBUG
#pragma comment(lib,"BGM/Debug/BGM.lib")
#else
#pragma comment(lib,"BGM/Release/BGM.lib")
#endif

 こういう記述が要りますよね。これ、ひとつのワークスペースの中のプロジェクト
なんだから、いちいちこういう記述をせずとも自動的にリンクしてくれないのかな〜とか
思ったんですが、さすがにそれは無理でしょうか?

437 名前:デフォルトの名無しさん :01/10/28 10:25
>>436
プロジェクトの設定
依存関係
etc

438 名前:椎名 :01/10/29 07:00
>プロジェクトの設定
>依存関係
 ああ、「依存関係」って、このためにあったんですね。今まで全く使わなかったから、
脳内「透明あぼ〜ん」してました。どうもありがとうございました。

439 名前:デフォルトの名無しさん :01/10/29 12:03
EUCのソースをSJISに変換して編集、保存時にEUCに戻して保存するというアドインを作りたいのですが、
アドインのサンプルとか解説してるサイトかありますか?
可能な限り日本語きぼん。

440 名前:デフォルトの名無しさん :01/10/29 15:00
VBAについて調べておけ

441 名前:デフォルトの名無しさん :01/10/29 20:57
どこに書いていいかわかんなかったのでここで質問させてもらいます。
RS-232Cでデータ送受信するプログラムを作ろうとしているのですが
(Visual C++ 6.0、OSはWin98SE)
どのようにしていいかわかりません。
一般的なTIPSみたいなのがあるのかなぁ?と思いまして。

ネットで検索したら
ttp://www-kobayashi.ctrl.titech.ac.jp/~mtanaka/vc/
とかがあったんですが、これってMicrosoftCommControl
を使ってるんですよね。これってVBのコンポーネントですよね?
それ以外の方法ってありますか?

442 名前:デフォルトの名無しさん :01/10/29 21:07
>>441
別にVB専用ってわけじゃねえ。ActiveXコントロールなんだからVCからだって使える。
自分でやりたいならCreateFileとかDeviceIoControlとか。

443 名前:433 :01/10/29 21:45
>>435
あ、epsilonではなくてvisual studioのepsilonエミュレーション
をつかっているのデス。
同じく>>433で困っている人いませんか・・・?

444 名前:デフォルトの名無しさん :01/10/29 22:09
>>443
使ってないので俺は困ってないけど、確かにepsilon互換にすると
選択範囲置換出来ないね。コマンド実行と同時に選択範囲が解除されてる感じ…。

445 名前:441 :01/10/29 23:08
>>442
うん、もちろんActiveXコントロールでVCから使えるのは
わかります。でも、できるだけそゆコントロールを使いたく
なかったので。
ぼくもあの書き込みの後しらべてCreateFileを使う方向で
いこうと思っています。

446 名前:443 :01/10/29 23:32
>>444
レス、どもです。
epsilon互換にするやつはVC++IDEを使うな、ッてことですかね・・・。
自分でキー割り当てなおせばいいんかなー。

447 名前::デフォルトの名無しさん :01/10/30 00:11
CWndで簡単なエディタみたいの作ってみたいのですが、IMEの入力ウィンドウみたいのを
カレットの位置にあわせるにはどうすればいいのでしょうか?
位置を動かす関数はあるみたいなのですが、どこから呼び出せばいいのでしょうか?
ユーザーがIMEをONにしたときにを知らせるメッセージとかあるのですか?
それとも前もってカレットの位置にあわすように登録する関数でもあるのですか?
どうしたらいいのでしょうか?

448 名前:デフォルトの名無しさん :01/10/30 00:30
>>447
ImmSetCandidateWindow
ImmSetCompositionWindow
ImmSetConversionStatus
ImmNotifyIME
WM_IME_STARTCOMPOSITION
などをMSDNで調べるがよい。

449 名前::447 :01/10/30 07:21
>>448
どうもありがとうございます。助かりました。
質問の後、寝ちゃったけど回答の早さには助かります。

450 名前:__ :01/10/30 10:44
Unicodeを少し勉強してみようと思ったのですが、他のホームページで
VC++でUnicode対応プロジェクトにするには

  「プロジェクト」→「設定」→「C/C++」→「プリプロセッサの定義」から
  _MBCSの定義を削除し、代わりに、_UNICODEを定義する。

  「プロジェクト」→「設定」→「リンク」→「アウトプット」の
  「エントリポイントシンボル」にwWinMainCRTStartupと書き込む。
  (これをやらないと_WinMain@16は未解決ですとコンパイルエラーになります)


とあり、このとおりにやったのですが
msvcrtd.lib(wcrtexew.obj) : error LNK2001: 外部シンボル "_wWinMain@16" は未解決です
Debug/UnicodeTest1.exe : fatal error LNK1120: 外部参照 1 が未解決です。
link.exe の実行エラー
とやっぱりエラーが出てしまいます。

環境はWindows2000でVisualC++6.0 Standard Editionです。
どこがいけないのでしょうか?

451 名前:デフォルトの名無しさん :01/10/30 11:24
WinMain
からじゃなくて、
wWinMain
からはじめれば?

452 名前:デフォルトの名無しさん :01/10/30 11:47
どなたかー
現在のIEバージョンを取得する方法をご存知の方いませんか?
おしえてください〜・・・

わかりそうでわからないんです。。。

453 名前:Name_Not_Found :01/10/30 12:06
雑誌の付録CD-ROMとかで、オートランでブラウザみたいなのが立ち上がるのって
VCでやってるんでしょうか?
どなたか申し訳ありませんが、教えていただけないでしょうか?

454 名前: :01/10/30 12:53
start E:\hogehoge.htm
じゃないの?

455 名前:デフォルトの名無しさん :01/10/30 13:01
>>452

http://aqua-pj.com/tech/faq_req.php3?D1=Windows&D2=SDK

456 名前:デフォルトの名無しさん :01/10/30 13:07
BMPのみのウィンドウにボタンを絵からせんたくしてつくりたいのですが
そういうこと書いたサイトありませんか?

457 名前:デフォルトの名無しさん :01/10/30 13:32
今更VC++の勉強を初めても無意味ですか?
VC#の方が良いの?

458 名前:デフォルトの名無しさん :01/10/30 15:10
>>457
現在と状況が違うかもしれないけど、
俺の場合、10年くらい前にCとBASICとCOBOLを
ほぼ同時期に覚えた。
気になるんなら、C++とC#の両方やればいい。

459 名前:450 :01/10/30 15:56
>>451
MFCでプログラミングしてるからWinMainやwWinMainは直接書かないんですけど。

460 名前:デフォルトの名無しさん :01/10/31 01:03
Unicode版のMFCライブラリをインストールしてないだろ
全部入れろ。全部。

461 名前:デフォルトの名無しさん :01/10/31 22:12
膨大な量のソースだと・・・
知ったかぶるな○○!!
VCはスケルトン作った時点でかなりの量のソースコードが出来てんだよ!!

462 名前:デフォルトの名無しさん :01/10/31 22:24
>>461
誤爆?

463 名前:450 :01/11/01 00:45
>>460
サービスパックの新しいのが手元にないので、いったん削除してからの再インストールは
やりたくなく、削除しないまま再インストールをしようとしたらカスタムインストールとかの
選択ができずにいきなりコピー(インストール)が始まってしまいました。
だからUNICODE関連のライブラリがインストールできたのか疑問で、エラーが出たプロジェクトを
再コンパイルしてみてもやはりエラーが出ました。
しかし新しいプロジェクトを作ってUNICODE対応プロジェクトにしてみたらエラーは出ませんでした。
ライブラリが足りなかったのか、エラーが出たプロジェクトにおかしいとこらがあるのか分かりませんが
とにかくUNICODE対応プロジェクトができるようになりました。
どうもありがとうございました。

464 名前:デフォルトの名無しさん :01/11/01 00:49
>463
ライセンスちゃんと持ってるなら、マイクロソフトに「くれ!」って言ったら
(FAXでね)ServicePackタダでくれるよ。

465 名前:デフォルトの名無しさん :01/11/02 14:25

テキストエディタで「URL文字列をクリックするとブラウザが起動」
「メールアドレスをクリックするとメーラーが起動」ってありますよね?
あれってShellExecuteを使えばいいんですか?
セキュリティ的に問題があったりしませんか?
特殊な文字列をShellExecuteで実行するととんでもないことが起こったり?

466 名前:デフォルトの名無しさん :01/11/02 15:11
codeguruしらん人は一回いってみるべし。
http://www.codeguru.com/
知ってるか知ってないかでかなり違うー

467 名前:デフォルトの名無しさん :01/11/02 16:40
自作エディタを作っているんですが画面の更新が遅すぎて困っています。
差分更新の部分は問題ないのですが全画面更新の部分が遅すぎます。
他のエディタと比べてスクロール時の更新速度が半分程度しか出ません。
システムモニタでプロセッサ使用率をみると他のエディタは50%程度ですが
自分のは100%の状態なのでそれを計算にいれると実質1/4程度のスピードしか出ません。
現在は描画用にコンパチブルビットマップを作ってそこに描画してから画面に表示しています。
コンパチブルビットマップへの描画は最適化しているので問題ないのですがコンパチブルビットマップから画面への転送が遅いようです。
スクロールの場合全画面更新する必要があるのでGetDCでウィンドウのDCを取得してウィンドウサイズ分転送しています。
この部分はどう考えても高速化できそうもないのですが実際この部分だけで処理時間の80%ぐらい要しています。
コンパチブルビットマップから画面への転送を高速化する裏技でもあるんですか?
現在はCreateCompatibleBitmap CreateCompatibleDC で作ったバッファから BitBlt で転送しています。

468 名前:デフォルトの名無しさん :01/11/02 16:41
ShellExecute(NULL, NULL, "c:\\con\\con", NULL, NULL, SW_SHOW);

469 名前:デフォルトの名無しさん :01/11/02 16:46
>>467
実画面の方はScrollWindow()でスクロール。
足りない部分をバックバッファからのBitBlt()。
バックバッファからのBitBlt()よりは実画面同士のBitBlt()の方が、大抵速い。
お試しあれ。

470 名前:デフォルトの名無しさん :01/11/02 16:49
ShellExecute(NULL, NULL, "echo \t\t\t\b\b\b\b\b\b\b", NULL, NULL, SW_SHOW);

471 名前:デフォルトの名無しさん :01/11/02 21:04
>>469
サンキューです。
ScrollWindowを使ったら格段に速くなりました。
便利なAPIがあるもんですね。
初めて知りました。

472 名前:デフォルトの名無しさん :01/11/04 21:07
WINAMP みたいな見た目のかっこいいアプリはいったいどうやっているのか
と思って spy++ でウィンドウをさがしてもいちばん親のウィンドウしか見えない。
これはボタンやスライダーがウィンドウじゃなくてただそういうふうに描画
してあって、クリックされたかどうかはマウスの座標から全部自分で判定して
いるということなんでしょうか?
MFCつかわないプログラムではあたりまえなのかな?

473 名前:デフォルトの名無しさん :01/11/05 04:38
MFCを使わない云々よりも、Winampには、Skinがあるからじゃないか?
コントロールをWinのボタンとかにすると、Skinでビットマップを貼り付ける
のが結構面倒だし。

474 名前:デフォルトの名無しさん :01/11/06 10:54
なるほど特殊なケースなんだね。

475 名前:デフォルトの名無しさん :01/11/06 14:23
VC++5.0のWin32 Console ApplicationでEXEを作成しています。
クライアントでデバグしている限り問題はないのですが、
EXEをサーバに乗せて呼び出すと、処理は終わっているのにプロセスが残ってしまいます。
プロセスが残るのは業務的異常処理時のみです。正常時は問題なしです。
どんな原因が考えられるでしょうか。

476 名前:デフォルトの名無しさん :01/11/06 20:06
かなり困っています.
どなたかお詳しい方はご教示をお願いします.

MessageBox関数がらみなのですが,
次のようなプログラムを組んでいます.
動作は条件1に合致すると窓1が出て,条件2に合致すると窓2が出ます.
(正確には同じ窓が連続してでないよう細工はしていますが,ここでは省略。)

void xxx::OnTimer(UINT nIDEvent){
int itmp1 = 0, itmp2 = 0;
if(条件1){
itmp1 = MessageBox(.....);//窓1
}
else if(条件2){
itmp2 = MessageBox(.....);//窓2
}
}

条件1,2共に合致している場合,
タイマーイベントが起こると,最初に窓1が出ます.
次のタイマーイベントでは(細工のために)窓2が出ます.
(この窓が2つ出ている状態を状態Aとします)

ここで,窓2のほうでOKボタン等を押すとitmp2に値が返ってきますが、
状態Aで窓1の方のOKボタンを押すと窓は消えますが,itmp1に値が返ってきません.
窓2の方のボタンを押してやると,itmp1の方も突然値が返ってきます。

これは何か使い方がおかしいのでしょうか?
URL等でも構いませんのでどなたかご教示を….

477 名前:476 :01/11/06 20:08
段組が消えてしまいました…
見えにくくてすみません。

478 名前:デフォルトの名無しさん :01/11/06 20:22
>>476
OnTimerの中でモーダルな処理をしない。

479 名前:デフォルトの名無しさん :01/11/06 22:27
VC++と一緒に使うと便利なツールってありますか?
フリー,シェア問わず教えてください
javaはフリーでいろいろそろってますが・・・

480 名前:デフォルトの名無しさん :01/11/06 22:46
>>476
たぶんこんな感じだと思われ。Windowsのメッセージ処理を勉強しましょう。

OnTimerが呼ばれて窓1が出る
→MessageBox関数の中でWindowsが自動的にメッセージ処理
→またOnTimerが呼ばれて次は窓2が出る。
→またMessageBox中でWindowsが自動的にメッセージ処理
→窓1のOKを押すと窓1にメッセージが送られ窓1が閉じる。
→窓2のOKを押すと窓2が閉じる。
→2回目のMessageBoxから復帰。itmp2に値が入る。
→2回目のOnTimerから復帰
→1回目のMessageBoxから復帰。itmp1に値が入る。
→1回目のOnTimerから復帰。

481 名前:デフォルトの名無しさん :01/11/06 23:15
>>479
いろいろあるけど、範囲を絞らないと的外れな回答しか得られないと思われ。

- ViVi, VIOP
- CVS, igloo, CVSWeb
- BoundsChecker
- STLport
- MagicDraw

私の VC++ での開発のお供は、こんな感じだけど。

482 名前:デフォルトの名無しさん :01/11/06 23:23
JUNITみたいなのあります?
javadocみたいなのも欲しいです。
というか,何でもいいんです(笑)
VC++の情報があまりなくて、
もっと活用するにはどうすれば良いか,意見を聞きたかったのです

MagicDrawいいですねー
ちょっと使ってみようと思います

483 名前:デフォルトの名無しさん :01/11/06 23:24
IIOSSがjavaべったりなんで、やはりMagicDrawがよいかなと思い始めたこのごろ

484 名前:476 :01/11/06 23:55
>>478
ありがとうございました。
モーダル処理しないように(ダイアログを別途作成)して
回避しました。

>>480
試行錯誤しながらやっています・・・。
いい機会なので勉強します。

485 名前:デフォルトの名無しさん :01/11/06 23:55
Win32 サービス関連APIをうまくラップしたclassのソーすクレ

486 名前:デフォルトの名無しさん :01/11/07 00:02
ただのラップじゃ無意味。>485
Win/X[/Mac]と互換のあるやつでもないと。

487 名前:デフォルトの名無しさん :01/11/07 00:08
>>486
じゃあ、それのソーすクレ

488 名前:デフォルトの名無しさん :01/11/07 00:36
もう寝ろ>487

489 名前:デフォルトの名無しさん :01/11/07 03:17
>>482 これは?
http://member.nifty.ne.jp/glad/cpp/test/

490 名前:デフォルトの名無しさん :01/11/07 06:01
HTMLについての質問ですが煽らずマジレスお願いします。

<IMG src="1.jpg" width=400 height=300 alt="写真">

って感じのタグの alt の部分で 二重引用符(")を表示したい場合

<IMG src="1.jpg" width=400 height=300 alt="写真"アイ〜ン"">

って書きますよね?
C言語みたいに alt="写真\"アイ〜ン\"" って具合に何らかの文字を前につけることで 二重引用符(") を直接書くことってできますか?

ついでにURL・メールアドレスに使用可能な文字も教えてくれると嬉しいです。
日本語ドメインなどは考えずに元々の英語のアドレスで使用可能な文字限定で教えてください。

491 名前:デフォルトの名無しさん :01/11/07 06:46
実体参照 " をつかえばできる。
urlはファイル・ディレクトリ名が日本語ならどうするねん、ちゅう話やね。
いずれにせよ板違いだからhttp://pc.2ch.net/hp/でやれや。

492 名前:デフォルトの名無しさん :01/11/07 09:43
>>490
クソ食って死ね。

493 名前:教えて下さい :01/11/07 16:07
VC++6.0使用してますが、「モグラ叩き」をプログラムして、ビルドしたらエラーはなくなりました。その為、「プログラムの実行」に踏み切ったのですが、
nafxcwd.lib(thrdcore.obj) : error LNK2001: 外部****"__endthreadex" は未解決です
nafxcwd.lib(thrdcore.obj) : error LNK2001: 外部****"__beginthreadex" は未解決です
ebug/モグラ叩きForWin.exe : fatal error LNK1120: 外部参照 3 が未解決です。
link.exe の実行***
の4つのエラーが消えません。どこを修正したらよろしいのでしょうか?

494 名前:デフォルトの名無しさん :01/11/07 16:18
>>493
プロジェクトの設定を確認。
MFCを使わない設定になってるのに使ってるとか。

495 名前:490 :01/11/07 16:19
<IMG src="1.jpg" width=400 height=300 alt="写真&quot;アイ〜ン&quot;">
の間違いです。
&quot;の部分を半角文字で書き込んだらブラウザに二重引用符に変換されてしまいました。

実体参照ってのはXMLの話ですか?
MSDNで調べたらJavaのXMLの部分にしか載ってませんでした。
http://pc.2ch.net/hp/ は偏差値低そうなので逝くのイヤです。

URL・メールアドレスはエディタの「クリッカブルURL」で使いたいんですけどなんか情報ないですか?

496 名前:デフォルトの名無しさん :01/11/07 17:04
>>495
板違い&スレ違いウザイ。
ここのスレタイトルを100回復唱して首吊れ。

497 名前:教えてください :01/11/07 17:20
493の者ですけど。アドバイスを頂いて修正しましたが、

libcmtd.lib(crt0.obj) : error LNK2001: 外部シンボル "_main" は未解決です
Debug/モグラ叩きForWin.exe : fatal error LNK1120: 外部参照 1 が未解決です。
この2つが消えません。
1.エラーの内容
2.エラーの対処法
この2つを教えてください。

498 名前:デフォルトの名無しさん :01/11/07 17:28
-subsystem:consoleを-subsystem:windowsに変更

499 名前:デフォルトの名無しさん :01/11/07 18:23
>>497
コンソールプロジェクトなのにmainを書いてない。に1票。

500 名前:デフォルトの名無しさん :01/11/07 18:33
 CEditのキャレットを見えないようにするにはどうしたらいいのでしょう。
 素直にHideCaretしても、どうしてもきえてくれません。
 よろしくおねがいします。


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