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


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

★初心者にVisual C++を教えるスレ★ Part6
251 名前:240 :03/05/24 20:52
>>241
マニフェストは関係なくuxtheme.dllやDrawTheme***関数を使って
自分でXPスタイルの外観(例えばボタン枠やツールバーの浮き出しの部分)
を描画する事は出来ないのでしょうか?
それとも他に方法があるのでしょうか?

252 名前:デフォルトの名無しさん :03/05/24 20:55
>>251
MSDNに載ってるが。

253 名前:デフォルトの名無しさん :03/05/24 21:16
すいません。ボタンを押したら
ダイアログ内の指定した領域を保存するという
プログラムを作りたいのですがわかりません。

検索してみましたがわかりませんでした。

領域の指定方法はわかるのですが、その領域内の
情報の保存の仕方および復元の仕方がわかりません。

希望としてはビットマップで保存してあとから参照できるように
したいです。


254 名前:デフォルトの名無しさん :03/05/24 21:39
>>253
デバイスコンテキストに指定領域をコピー

GetDIBitsってとこだな

255 名前:253 :03/05/24 21:51
GetDIBitsですか。今から調べてみます!

ありがとうございます

256 名前:デフォルトの名無しさん :03/05/24 21:52
>>251
とっととMSDNOnline行けタコ。

257 名前:240 :03/05/25 08:33
MSDN Library\User Interface Design and Development\Windows Shell
\Shell Reference\Visual Styles Reference
MSDN USAにそのような項目があったのですが
MSDN Japanにはありませんでした。
つまり日本語の解説は無しって事ですか?

258 名前:デフォルトの名無しさん :03/05/25 10:15
>257
Yes!

259 名前:デフォルトの名無しさん :03/05/25 10:50
見つけたのにまだ来るのかよ>240
結局初心者に先ず教えるべきは英語嫁ってことか

260 名前:デフォルトの名無しさん :03/05/25 10:52
まー、最初のハードルはあのMSDNを読みこなすことができるかどうかだからな

261 名前:240 :03/05/25 11:29
何とか実装に成功しました。
ありがとうございました。

262 名前:デフォルトの名無しさん :03/05/25 22:09
>245
マジレスすると、およそ20〜30人。意外と少ないと思われるかもしれないけど、こんなもん。
長期のプロジェクトになるから、多少人の出入はあるけどね。

263 名前:デフォルトの名無しさん :03/05/25 22:44
へえ、意外と少ないんですねえ
で、もう一度言うが「スレタイ嫁」

264 名前:デフォルトの名無しさん :03/05/25 23:26
それよりもなんでそんな事聞きたいのか小一時間・・・

265 名前:デフォルトの名無しさん :03/05/26 03:17
vcを勉強したくHPでおすすめな所はどこでしょうか?
自分でもさがしたのですが・・・。
プログラムって難しい。


266 名前:デフォルトの名無しさん :03/05/26 03:32
>>265
>プログラムって難しい。

C/C++を知っているのかと小一時間…
それとも割れ(以下略

267 名前:デフォルトの名無しさん :03/05/26 07:56
メニューの各項目がボタン型のオーナードローメニューを
作りたいのですが、選択中の項目上でマウスの左ボタンを
押すとボタンが凹むようにする(つまり選択中の項目上で
マウスの左ボタンの状態が変化するたびに選択中の項目を
再描画する)にはどうしたら良いでしょうか?
WM_DRAWITEMメッセージでは項目を一回きり描画するだけで、
WM_MENUSELECTメッセージではメニューの選択項目が変化した時
にしか呼び出されないので。

268 名前:デフォルトの名無しさん :03/05/26 08:04
>>265
VCとかで検索してみれば良いのに…

ttp://www.kumei.ne.jp/c_lang/

269 名前:デフォルトの名無しさん :03/05/26 20:19
>>267
マウスのイベントを捕らえるしかないんじゃないの?
参考までにcodeguru
ttp://www.codeguru.com/menu/index.shtml

270 名前:デフォルトの名無しさん :03/05/26 21:59
VCでコンボボックスを使ってプログラムを書いているのですが、例えば"m_combo."のように打ち込むと.GetWindowTextやSetWindowTextというようなリストが出てきますよね???ですが出てこないんです.それで、自分で打ち込んでビルドしてみると実行は成功します.
なぜ、関数のリストが出てこないのでしょうか?教えてください。


271 名前:デフォルトの名無しさん :03/05/26 22:00
ハテナが多すぎ

272 名前:デフォルトの名無しさん :03/05/26 22:02
>>271に激しく同意。

273 名前:デフォルトの名無しさん :03/05/26 22:03
句読点がピリオドになってるのも気になる

274 名前:デフォルトの名無しさん :03/05/26 22:05
>>271-273
ウザイ!わからねーなら黙ってろ!!!

275 名前:デフォルトの名無しさん :03/05/26 22:07
>>271
>>273
>>272 すみません。ちなみに”m_conbo."です。もし”.”を気になさっている人がいたならちゃんと“.”で書いてあります。


276 名前:デフォルトの名無しさん :03/05/26 22:08
>>275
VC6?バグじゃないの?
起動しなおせば?

277 名前:デフォルトの名無しさん :03/05/26 22:10
起動しなおしてもダメなんですよね。もしバグだったら、実行した時にエラーが出ると思うのですが実行は成功しています。

278 名前:デフォルトの名無しさん :03/05/26 22:10
>>270
該当するクラスのヘッダファイルを開いて上書き保存
または、
VC終了→ncbファイル削除→VC起動

279 名前:デフォルトの名無しさん :03/05/26 22:12
すみません。ncbファイルってなんですか?

280 名前:デフォルトの名無しさん :03/05/26 22:12
ネットのバイト見つけた。バナー収入登録したら1000円くれるってさ。
http://members.goo.ne.jp/home/madcap0  
      

281 名前:デフォルトの名無しさん :03/05/26 22:13
>>277
バグっていっても、VCの方のバグね。

282 名前:デフォルトの名無しさん :03/05/26 22:21
>>278
ありがとうございます!!できました!でも、なにが起こっていたのでしょうか?全く解らないのですが…
ありがとうございました。


283 名前:デフォルトの名無しさん :03/05/26 23:13
プログラム実行したら、
「○○○○が原因で○○○○.EXEにエラーが発生しました。
○○○○は終了します。」(○○○○はファイル名)
って表示されました。何が原因なんでしょうか?
わかる方いたら教えてください。

284 名前:デフォルトの名無しさん :03/05/26 23:16
わかる人がいたら見てみたいよ・・・ハァ

285 名前:デフォルトの名無しさん :03/05/26 23:20
>283
○○○○

286 名前:デフォルトの名無しさん :03/05/26 23:23
ネットのバイト見つけた。バナー収入登録したら1000円くれるってさ。
http://members.goo.ne.jp/home/madcap0         

287 名前:代弁 :03/05/26 23:23
>>285
良くわかりました!ありがとうございます!

288 名前:デフォルトの名無しさん :03/05/26 23:49
>>283
どうせヌルポだろ?

289 名前:デフォルトの名無しさん :03/05/26 23:50
VCについて質問です。
ボタンをDlgで作成したのですが普通、ボタンを作成し関数を作成し、その後、右クリックclassviewを表示しようとしると
Parsing error:改行が必要です。インプットライン....というようなエラーが出てしまいました。
何が原因なのでしょうか。


290 名前:デフォルトの名無しさん :03/05/26 23:51
FTP通信のやりかた教えてください。

291 名前:デフォルトの名無しさん :03/05/26 23:55
CFTPなんたらっていうMFCのクラスがあったと思われ。
簡単な処理ならそれで足りる。

292 名前:デフォルトの名無しさん :03/05/26 23:58
>>289
適当に改行してから保存(Ctrl+S)すれば直ると思うが


293 名前:デフォルトの名無しさん :03/05/27 00:17
C++ではコントロールの配置などはマウスで行うんですか?
単純な質問ですみません

294 名前:デフォルトの名無しさん :03/05/27 00:22
>>293
「行う」のではなく、「行える」。
ニュアンスの違い。

295 名前:デフォルトの名無しさん :03/05/27 00:32
>>294行えるということは無理に行わなくても
良いということですか?

296 名前:デフォルトの名無しさん :03/05/27 00:46
>>294
無理にマウスで配置してもよろしい。
色々ある方法の内で「配置はマウスでも行える」と言う意味。

297 名前:デフォルトの名無しさん :03/05/27 01:30
中身は全く同じで、名前だけ違うA.DLLとB.DLLがあったとします。
実行ファイルの起動時パラメータでA.DLLを参照するか、B.DLLを参照するか、
切り替えたいのですがどのようにコーデイングすればよろしいでしょうか?
DLLは.libファイルも用意してあります。静的リンクでは無理ですか?

298 名前:デフォルトの名無しさん :03/05/27 01:34
>>297
切り替える意図が全く見えないのだが。

299 名前:297 :03/05/27 01:45
>>298
DLLは共有メモリとして使用しています。
プログラムは起動時パラメータで、
モードを切り替えられる作りになっています。
モード別に多重起動するため、DLLを切り替えたいのです。

300 名前:吉岡美穂 :03/05/27 01:49
>>297
動的リンクしかないんじゃないかしら。

301 名前:299 :03/05/27 01:56
>>300
ありがと〜。
そっちの方向で試してみます。

302 名前:デフォルトの名無しさん :03/05/27 10:56
俺は性的リンクをお勧めするね

303 名前:デフォルトの名無しさん :03/05/27 13:29
>>292 ありがとうございました:)
    できました。


304 名前:デフォルトの名無しさん :03/05/27 16:56
>>302
ありがとうございました。できました。

305 名前:デフォルトの名無しさん :03/05/27 18:28
あるデバイスコンテキストを割り当てているウィンドウの
画面左上端(0,0)とした長方形の座標(RECT)を求めたいのですが

void CXX::YY( CDC *pDC )
{
 HWND hwndCDC;
 RECT rectCDC;
 
 hwndCDC = pDC->GetWindow()->GetSafeHwnd();
 GetWindowRect(hwndCDC, &rectCDC);
}

とすると、rectCDCにはいつも-858993460という意味不明で
不正確な数値が返ってきてしまいます。
どうか正確な座標の求め方を教えてください。

306 名前:デフォルトの名無しさん :03/05/27 19:03
>>305
rectCDCのメンバ変数を使うんじゃないのか?

307 名前:305 :03/05/27 19:32
>>306
left、top、right、bottomすべて-858993460という
数値が返ってきてしまいます。

308 名前:デフォルトの名無しさん :03/05/27 19:41
>>307
漏れの環境では正常に取得できました。

CDC *pDC = GetDC();

RECT rect;
try {
pDC->GetWindow()->GetWindowRect(&rect);
}
catch(...)
{
;
}
TRACE("%d / %d / %d / %d\n", rect.top, rect.left, rect.right, rect.bottom);
ReleaseDC(pDC);

--
299 / 282 / 671 / 616

309 名前:デフォルトの名無しさん :03/05/27 20:14
>>305
hwndCDCの値は有効な値なの?

310 名前:デフォルトの名無しさん :03/05/27 21:48
>>305
> どうか正確な座標の求め方を教えてください。

きちんとプログラムする。

とりあえず、GetLastError() ぐらい覚えろよ。

311 名前:デフォルトの名無しさん :03/05/27 23:21
CString cs;
m_combo1.GetWindowText(cs);
という記述をOnButton関数内で行ない、デバックしてみるとcsに関して以下のような
CXX0017: Error: シンボル "cs" が見つかりません
というようなコメントがでて、コンボボックス内に表示している文字を読み取ることができませんでした。
何故なのでしょうか。だれか教えてください。



312 名前:デフォルトの名無しさん :03/05/27 23:24
>>311
リビルドしてみれ。
たまにそんなことがある。


313 名前:デフォルトの名無しさん :03/05/27 23:26
>>312
やってみましたが、だめでした・・・


314 名前:デフォルトの名無しさん :03/05/27 23:33
>>313
ポインタが有効か?
&csとか0xfdfdfdだったりして。んなこたなかったら
TRACE()でみてみれ。


315 名前:デフォルトの名無しさん :03/05/28 00:23
例外処理についての質問です。

例外処理 (初回) は test1.exe (MFC42D.DLL) にあります: 0xC0000005: Access Violation。
例外処理 (初回) は test1.exe (KERNEL32.DLL) にあります: 0xC0000027: (名前がありません)。
例外処理 (初回) は test1.exe にあります: 0xC0000005: Access Violation。

このような例外処理が出てしまうのは何故なのでしょうか?
どのような対策をほどこせばいいのですか?
教えていただけると幸いです。


316 名前:デフォルトの名無しさん :03/05/28 00:36
>>315
再起動せよ。

マジで言うなら「ソースさらせ」。対処のしようがねーんですが。

317 名前:デフォルトの名無しさん :03/05/28 01:43
>>315
アクセス違反とかかな。
落ちたときにデバッガのコンテキスト見てみるとか、ステップ実行で落ちる瞬間を
つきとめるとかして。

318 名前:デフォルトの名無しさん :03/05/28 07:33
すみません。TRACEマクロを使用しても出力ウィンドウに
値が出力されない(出力された気配も無い)のですが
どうしてなのでしょうか?

319 名前:デフォルトの名無しさん :03/05/28 09:16
>>318
まさかとは思うが、Releaseビルドじゃないよな?

320 名前:デフォルトの名無しさん :03/05/28 09:36
どうせF5じゃなくてCtrl+F5で実行して出ないって言ってんだろ

321 名前:山崎渉 :03/05/28 12:28
     ∧_∧
ピュ.ー (  ^^ ) <これからも僕を応援して下さいね(^^)。
  =〔~∪ ̄ ̄〕
  = ◎――◎                      山崎渉

322 名前:デフォルトの名無しさん :03/05/28 13:58
age

323 名前:デフォルトの名無しさん :03/05/28 14:13
C++ Builder初心者なのですが 
Edit1やEdit2など数字の部分を変数等でLoop処理(移動)することは出来ないでしょうか?
  例:int i;
AnsiString s[10];
for(i=1;i<=10;i++)
s=Edit(i)->Caption;
ッてこんな感じにiの部分でEditを変える方法です


324 名前:デフォルトの名無しさん :03/05/28 14:33
>323
ここはVC++スレなわけだが。

325 名前:デフォルトの名無しさん :03/05/28 14:35
すれ違いって教えてもらったのでここに来ました

>あるWindowsで動いてるプロセスの指定したメモリアドレスの値を取得したい場合は
>どうしたらいいのでしょうか?
>たとえば起動しているaaa.exeのメモリ0x41000の値を10進数で表示したいという感じです

という質問をしまして、そこでReadProcessMemoryを使えといわれました。
その後調べてみて
ReadProcessMemoryの前にOpenProcessをすればよさそうだということはわかったのですが
OpenProcessの第3パラメータのプロセス識別子をaaa.exeから取得する方法が分かりません
知っている方がいたらおしえてください




326 名前:デフォルトの名無しさん :03/05/28 15:17
C++共通の質問ですが、コンパイラによって動作が違うかもしれないので、
(VCにて作業しているので)ここに書かせてもらいます。

STL のdeque や vectorにおいて resize();で配列数を増やして
/* vector に入れるコンテナのタイプは適当なクラス*/

v[3].m=value;
このようにアクセスできますが、たとえば
v.resize(5);//要素数5
v[4].m=100;//コンテナの最後にアクセス これは問題なし
i=v[4].m;//iには100が入る
v.pop_front():;先頭のコンテナ除去


i=v[4].m;//iには何が入る?????
v[4].m=value;//<-koko

についていったいどういうことがおきるのでしょうか?

1 メモリ保護エラー
2 削除したのは先頭だけどINDEXとのリンクは保持してるから
  iには100がはいるし読み出しもOK
3 resizeによって多めにメモリを確保しているので、メモリ保護エラーには
  ならないが、不可思議なことがおこる。
4 神様だけが知っている。

ご存知の方がいらしたら教えてください

327 名前:デフォルトの名無しさん :03/05/28 15:56
>>326
【C++】template 統合スレ -- Part2
http://pc2.2ch.net/test/read.cgi/tech/1047978546/
ってのがあるよ。

どうでもいいけど「コンテナ」と「要素」を勘違いしてない?


328 名前:デフォルトの名無しさん :03/05/28 16:30
>>325
ウィンドウハンドルを列挙して、ウィンドウハンドルから実行ファイル名を取得する。
それがaaa.exeだったら、GetWindowThreadProcessIdでウィンドウハンドルからプロセスIDを取得する。

実行ファイル名じゃなくて、ウィンドウ名から取得するなら、
FindWindowとGetWindowThreadProcessId使うだけなので楽。

329 名前:デフォルトの名無しさん :03/05/28 16:37
>>325
http://www.google.com/search?num=1050&lr=lang_ja&q=Win32%20でアプリケーションを列挙する方法

330 名前:デフォルトの名無しさん :03/05/28 17:31
>>328
ありがとうございました。

おかげでコンソール上では値を取得できたのですが、
画面をつけたらコンパイルのエラーになりました。


hWnd = FindWindow("プロセスのクラス名", NULL);

この部分で以下のエラーが返されます
error C2440: '=' : 'class CWnd *' から 'struct HWND__ *' に変換することはできません。

どうもFindWindowがCWnd::FindWindowと解釈されてしまってるようなのです
これを防ぐ手は無いでしょうか?


331 名前:デフォルトの名無しさん :03/05/28 17:40
:: をつける。
::FindWindow

332 名前:デフォルトの名無しさん :03/05/28 17:57
ありがとうございました^^

分かってみれば簡単なことなんですね
Windowアプリケーションは真似以外では今日はじめて作るので
こまってました

333 名前:デフォルトの名無しさん :03/05/28 19:54
分かってみればってホンマにわかっとんかいな
スコープについて勉強したほうが

334 名前:デフォルトの名無しさん :03/05/28 20:07
× 分かってみれば
○ 答えを聞いて分かったつもりになってみれば

335 名前:253 :03/05/28 21:24
あるポインタ(可変長の配列を作りたい)を
作ってfor文のなかで
malloc関数を使って長さを指定しました。

そしてfor文で一回ループをした後、
配列の長さを変えたい為にまたmalloc
関数を使って長さを指定します。

1ループ前に作った配列のメモリを
開放するために以下の記述をしました

if(hairetu != NULL)
free(hairetu);

そうするとhairetuはNULLではないので
条件を満たすのですがfreeをすると
エラーになってしまいます

for文の中でメモリ開放はできないのでしょうか?
一つの変数に一度しかfreeはできないのでしょうか?

336 名前:デフォルトの名無しさん :03/05/28 21:50
-1.4208909612724965e+005

みたいな数字をファイルから入力する場合、
fscanfの中の % 以降はどんなのつければいいんですか?
%eじゃうまくいきませんでした。

337 名前:デフォルトの名無しさん :03/05/28 22:03
あげ

338 名前:デフォルトの名無しさん :03/05/28 22:17
>>335
ぐちゃぐちゃ説明せんと、コード晒せや。
それから、if(hairetu != NULL) free(hairetu); なんてやってると、知ったかに叩かれるから、free(hairetu); だけにしときな。

>>336
double d;
fscanf(..., "%le", &d);

339 名前:デフォルトの名無しさん :03/05/28 23:09
>>335
std::vectorかstd::list使へ。

340 名前:デフォルトの名無しさん :03/05/28 23:28
その前にnewとdelete使えと思ったんですが・・・ダメ?

341 名前:デフォルトの名無しさん :03/05/28 23:41
>>340
いや、俺もそうは思ってたんだが…
結局使う人がそれを使うと言うとその条件で考えるしかない。

342 名前:デフォルトの名無しさん :03/05/29 00:00
realloc使っとけ

343 名前:デフォルトの名無しさん :03/05/29 00:03
だってmalloc使ってる人がstd::vector使うなんて違和感が・・・

344 名前:洗濯犬 :03/05/29 01:20
初心者です。
今、MFCの学習を進めるか、
それともフレームワークだけに専念するか迷っています。
どうかいいアドバイスをお願いします。

345 名前:デフォルトの名無しさん :03/05/29 06:10
すみません質問です。リソースに割り当てられた
既存のメニュー項目のコマンドIDから
先頭のメニュー項目を0とする
メニュー項目の位置(行)を調べる
方法を教えてください。

346 名前:_ :03/05/29 06:33
http://homepage.mac.com/hiroyuki43/jaz10.html

347 名前:デフォルトの名無しさん :03/05/29 07:22
Visual C++.NETアカデミック買ったんですが、コンパイラってどれですか?
コンパイラにパスを通したいんですがどれかわからないです・・・

348 名前:345 :03/05/29 07:54
自己解決しました。

 UINT C**::GetMenuItemIndex( HMENU hMenu, _ItemIDType ItemID )
 {
  // 変数の宣言
  UINT unitMenuItemIndex; // 戻り値
  int intCountI; // カウンタ
  int intMenuItemCount; // メニュー項目の個数

  intMenuItemCount = GetMenuItemCount(hMenu);

  for (intCountI = 0; intCountI <= intMenuItemCount - 1; intCountI++)
  {
   if ( ItemID == GetMenuItemID(hMenu, intCountI) ) // 見つかった場合
   {
    return intCountI; // メニュー項目の位置を返す
    break;
   }
  }

  return -1; // 見つからなかった場合、負の値を返す
 }

という構文を作ったら、無事取得できました。

349 名前:デフォルトの名無しさん :03/05/29 08:41
>>344
MFCってSDKの知識がないと使えないと思うよ。
Windowsのプログラミング作法を学ぶという意味でもまずはSDKをさらりと勉強してはいかがだろうか。

350 名前:デフォルトの名無しさん :03/05/29 09:18
>349
ちなみに俺はそのように(MFCの前にSDKやれば〜)教わってSDKから
始めたが、より薄いラッパーのATL/WTLに進んでしまった(w

351 名前:デフォルトの名無しさん :03/05/29 11:00
あるダイアログアプリケーションをつくったのですが
値の変更がダイアログ上のエディットボックスに反映されません

ダイアログにはボタン1つとエディットボックスが1つで
エディットボックスにはメンバ変数としてint型の変数が割り当てています。

そしてボタンをおしたら関数が走り
その関数の最後でそのm_data1 = 計算後の値;
という感じでデータを代入しているのですがエディットボックスの中身は0のままです
どうしたら価が変更されてくれるのでしょうか?

352 名前:デフォルトの名無しさん :03/05/29 11:09
エディットボックスにm_data1をいれる

353 名前:デフォルトの名無しさん :03/05/29 11:20
すいません言葉がたりませんでした
>エディットボックスにはメンバ変数としてint型の変数が割り当てています。
これがm_data1なんですが、これがすでにエディットボックスに値を入れてる
とおもっていたのですが違うのでしょうか?

354 名前:デフォルトの名無しさん :03/05/29 12:38
>>315
>>316
ありがとうございました.もう一回ソースを見直すことにします.

355 名前:デフォルトの名無しさん :03/05/29 12:50
>351
UpdateData(FALSE);

356 名前:デフォルトの名無しさん :03/05/29 13:34
USER-AGENTをレジストリをいじらずに変更したいのですが、
ヒントをください。
答えもOK4☆

357 名前:デフォルトの名無しさん :03/05/29 14:15
vcマンセーage

358 名前:デフォルトの名無しさん :03/05/29 16:09
>>356
通信をフックして書き換えればいい

359 名前:デフォルトの名無しさん :03/05/29 18:24
すいません。ピクチャボックス全体の大きさをウインドウを開く、もしくは
ボタンを押すことによって動的に変化させることはできますか?

360 名前:デフォルトの名無しさん :03/05/29 19:59
>>350
俺は自分でクラス作っちまった…

361 名前:デフォルトの名無しさん :03/05/30 00:14
ボタンとかチェックボックスとかって自作できるみたいですけど
どうすれば良いですか?
何から手を付ければ良いか…
もしかして、Win32スレのほうか!?

362 名前:デフォルトの名無しさん :03/05/30 00:17
何で自作したいのか?しなくていいならしないほうがいいと思うが。

363 名前:デフォルトの名無しさん :03/05/30 01:33
>>359
CWndの派生クラスなら簡単にできるだろう
>>361
1から作るのか?先ずはCButtonをサブクラス化することから始めてはどうか?

364 名前:361 :03/05/30 02:03
>>363
すまん、MFC使ってないんだ…
1から作ることになる。
多分BMPかなにかでボタンのCGを書くと予想しているんだが。

365 名前:359 :03/05/30 03:53
>>363
ありがとうございます。たぶんSetWindowPos関数だと思うのですが。
今のところ動的に変わらなくてちょっと困ってます。

記述の仕方がよくわかりません。

Rect rect;
CWnd * Wnd;
Wnd = GetDlgItem(IDC_PICTURE);
Wnd->GetclientRect(&rect);

として元のピクチャボックスの情報を手に入れた後
状況に応じてrect.topの位置を可変にしたいのです。

どうしていいかイマイチわかりませn

366 名前:デフォルトの名無しさん :03/05/30 11:06
>>361
カスタムコントロールはMFC使わないと作れないんじゃないの
よくしらんけど

367 名前:デフォルトの名無しさん :03/05/30 11:27
>>366
よくしらんのなら、いい加減な嘘を口走るな
何故知りもしないくせに、平気で間違ったことを書き込めるのだろう

だいたいMFCでしか作れないのなら、
ソースコードが存在するMFCそのものが作れず存在しないことになる
そんな矛盾くらい少し考えれば分かるだろう

368 名前:デフォルトの名無しさん :03/05/30 11:51
366の云う「カスタムコントロール」にはActiveX臭さを感じる

369 名前:デフォルトの名無しさん :03/05/30 12:00
>>361
例えば CodeGuruの Other Controls -> Customized Check Boxes とか。SDKの
サンプルあるよ。普通のボタンなら Button Controls にいっぱいあると思う。

>>365
(コントロールのCWnd*)->GetWindowRect(rect);
(親ウィンドウのCWnd*)->ScreenToClient(rect);

みたいにコントロールの、親ウィンドウ座標系での位置を知れば、あとは
SetWindowPos()なりMoveWindow()なりでいけると思う

370 名前:366 :03/05/30 13:01
>>367
必死ですね
負けました

371 名前:デフォルトの名無しさん :03/05/30 13:31
あるダイアログで開始ボタンをおしたらそのボタン処理をずっとループするようにつくったんですが
ストップボタンを押してもとまらないのです。どういうことなんでしょうか?
あと画面上の値も更新されません。ループを使わず1回だけの処理なら値は更新されるのですが
startbtn
{
  for(;;){
    処理
    外部変数が終了になっているか?
      なっていたらbreak;
    値更新
  }
  return;
}
stopbtn
{
  外部変数を終了にする
  return;
}


372 名前:デフォルトの名無しさん :03/05/30 13:48
>>371
まずループ最中に、どうやってボタンのイベントを処理しているのか説明してください

373 名前:371 :03/05/30 14:44
いえそもそもストップボタンはおしてるんですが
押されて無いようで・・・


374 名前:デフォルトの名無しさん :03/05/30 15:04
>>373
フルーズしてんでしょ。ボタン押してからforループ抜けてないんだから。

375 名前:374 :03/05/30 15:05
フリーズ

376 名前:デフォルトの名無しさん :03/05/30 15:08
プリーズ

377 名前:デフォルトの名無しさん :03/05/30 15:21
「ボタンが押された」というイベントを捕らえるのにはforループを抜けなければなりませんな〜。
ワーカースレッド作ったりしたらどうだい。

378 名前:デフォルトの名無しさん :03/05/30 16:04
PeekMessage();をつかいなさい。


379 名前:デフォルトの名無しさん :03/05/30 16:20
そもそもfor文で終了までCPUを占有し続ける作りに問題がある

380 名前:デフォルトの名無しさん :03/05/30 16:58
モソモソ
( ( (ε゚Д゚)3

381 名前:デフォルトの名無しさん :03/05/30 18:12
classの定義の中で、CString cs[3];
と定義し、コンストラクタ(Dlgの)内で以下のような初期化を行なおうとしました。
cs[0]="hello";cs[1]="good";cs[2]="hi!!";cs[3]="oh!";

けれど、実行及びデバックを行なうと不正処理による強制終了が行なわれてしまいました。
どうすればよいのでしょうか?おしえてください。

382 名前:デフォルトの名無しさん :03/05/30 18:18
[3]って0から2まででなく、0から3まで確保するの?

383 名前:デフォルトの名無しさん :03/05/30 18:21
>>381
C言語の基礎からやり直し。

384 名前:デフォルトの名無しさん :03/05/30 18:31
>>382 すみません
     0から2までです。


385 名前:361 :03/05/30 20:43
やっぱ、無理かな…オリジナルコントロール…


>>371
>>379氏が言っているように、CPUを優先しつづけます。
なら、話は簡単。
CPUの優先をとけば良いのでは?

Sleep(0);
をfor分の中に入れれば多分良いはず。

386 名前:デフォルトの名無しさん :03/05/30 20:49
>>361

>>369

387 名前:361 :03/05/30 21:09
>>386
ぐは!書かれてるじゃん…なに見てんだろ…俺

369氏、ありがとうございます。
即研究してみます。

>>371
ちなみに、そのfor文…コントロールのコードに直接書いちゃ駄目だ。
マルチスレッドなら上手くいく。
ちなみに、こんな感じ(かなりいい加減&MFCなのは許してちょ)

Button1を押すとfor文開始。
Button2を押すとfor文抜けて、メッセージボックス出力

388 名前:361 :03/05/30 21:09
static UINT aaa( LPVOID param );
BOOL sw

void CTest11Dlg::OnButton1()
{
AfxBeginThread( aaa, ( LPVOID ) this -> m_hWnd, THREAD_PRIORITY_HIGHEST );
}

void CTest11Dlg::OnButton2()
{
sw = TRUE;
}

static UINT aaa( LPVOID param )
{
sw= FALSE;
for( ;; )
{
Sleep( 0 );
if( sw == TRUE )
{
break;
}
}
MessageBox( ( HWND ) param, "aaa", "AAA", MB_OK );
return 0;
}

389 名前:361 :03/05/30 21:10
static UINT aaa( LPVOID param );
BOOL sw;

void CTest11Dlg::OnButton1()
{
AfxBeginThread( aaa, ( LPVOID ) this -> m_hWnd, THREAD_PRIORITY_HIGHEST );
}

void CTest11Dlg::OnButton2()
{
sw = TRUE;
}

static UINT aaa( LPVOID param )
{
sw= FALSE;
for( ;; )
{
Sleep( 0 );
if( sw == TRUE )
{
break;
}
}
MessageBox( ( HWND ) param, "aaa", "AAA", MB_OK );
return 0;
}

390 名前:361 :03/05/30 21:11
あれ?
2回も書かれてる…スマソ

391 名前:デフォルトの名無しさん :03/05/30 23:00
特に優先すべき物でなければタイマー利用してもいいかもね。

392 名前:デフォルトの名無しさん :03/05/30 23:01
( LPVOID ) this -> m_hWnd

MFC使ってんならこうしようぜ

( LPVOID ) GetSafeHwnd()

393 名前:デフォルトの名無しさん :03/05/30 23:31
>>392
いや、元々MFC使ってないし…それしか取得方法知らなかったからね。知識になった。

394 名前:デフォルトの名無しさん :03/05/30 23:52
質問です。VC++6.0 MFCでアプリを作ってるんですけど、
クラス外からもアクセスできる外部変数は普通はどのように宣言しますか?
やっぱりcppの先頭でグローバル宣言しておいて、他のクラスでextern宣言して
使用するのが普通なのですか?

今、あるクラスのpublicでメンバ変数(char [255])を宣言しておいて、他のクラスからは

CXxxx* pApp = (CXxxx*)AfxGetApp();

として、pApp->メンバ変数にアクセスしてますが、アサートを起こします。
やり方が間違っているのでしょうか?


395 名前:デフォルトの名無しさん :03/05/31 00:06
>>394
全てのクラスでインクルードするstdafx.h内でexternすれば(以下略

396 名前:デフォルトの名無しさん :03/05/31 00:09
>>394
■ VisualC++(MFC限定)相談室 MFC7.dll■
http://pc2.2ch.net/test/read.cgi/tech/1047949606/l50
でやれって…そっちの方が詳しく説明してくれるはず。

397 名前:デフォルトの名無しさん :03/05/31 00:20
VCで作ると、ちょっと容量食うので
Cでコンソール出力しか使わないときは、ソースファイルだけメモ帳で書いて
コマンドプロンプトからコンパイルしたいんですけど、
VCの場合、mspdb70.dllが見つからないとかいってclコマンドが使えません。
再インストールしても出来ないんですが、無理なんですか?

398 名前:デフォルトの名無しさん :03/05/31 00:20
シンタックスエラーってなんですか?

399 名前:デフォルトの名無しさん :03/05/31 00:23
>>398
ブンポのエラー

400 名前:デフォルトの名無しさん :03/05/31 00:49
>>399
どうもです。
でも、わざわざ,シンタックスエラーなんて小難しい言葉使わないで、普通に”構文エラーが出ました”って書けば良いのに・・・と思ってしまうんですが、何か違いがあるんですか?

401 名前:デフォルトの名無しさん :03/05/31 01:06
>>400
突き詰めていくと、なんで「エラー」っていう小難しい言葉を使うんだ?
「誤り」って書けば良いのに… っとなる。

402 名前:デフォルトの名無しさん :03/05/31 01:10
構造体について質問です。
public内に
 struct set{・・・・・・・}
struct set mySet;;

っていうように宣言することってできない?
クラス内共通してmySetを使いたい場合はどうすればよいのでしょうか?

403 名前:デフォルトの名無しさん :03/05/31 01:11
>>401
そうっすね・・・・

404 名前:デフォルトの名無しさん :03/05/31 01:15
>>402
struct set{ }
これの最後のセミコロン抜けてないか?

405 名前:デフォルトの名無しさん :03/05/31 01:19
>>404
書き忘れました。ごめんなさい。


406 名前:デフォルトの名無しさん :03/05/31 08:09
>>400
そのほうがかっこいいからだろ?

407 名前:デフォルトの名無しさん :03/05/31 09:02
>>402
ゲッ、マルチかよ。
氏ね。

408 名前:デフォルトの名無しさん :03/05/31 09:59
>>407
ほんとだ…しかもMFCスレにわざわざ書くなよ…向こうは激しくスレ違いだと思う。
せめて何日か経って、返事がまるで来なかったら移るとかさ…

409 名前:デフォルトの名無しさん :03/05/31 10:39
あのー、激しく初心者な質問で申し訳ないんですが・・・

HDC BeginPaint(HWND hWnd, LPPAINTSTRUCT lpPaint);

BOOL EndPaint(HWND hWnd, CONST PAINTSTRUCT *lpPaint);

上の関数の最後の引数には * がつかなくて、下の関数の最後の引数には
* がつく理由がわかりません。一応値渡しと参照渡しの違いは理解しているつもりです。
本に載ってたコードでは下のように両方ともに構造体のアドレスを渡しているようですが・・。

hdc = BeginPaint(hWnd, &ps);
.
.
.
EndPaint(hWnd, &ps);

ハァ、私はプログラムに向いてないのでしょうか・・・

410 名前:デフォルトの名無しさん :03/05/31 10:58
>>409 定義をたどれ。

typedef struct tagPAINTSTRUCT {
HDC hdc;
BOOL fErase;
RECT rcPaint;
BOOL fRestore;
BOOL fIncUpdate;
BYTE rgbReserved[32];
} PAINTSTRUCT, *PPAINTSTRUCT, *NPPAINTSTRUCT, *LPPAINTSTRUCT;


411 名前:デフォルトの名無しさん :03/05/31 10:59
winuser.hのどこかに
 typedef PAINTSTRUCT *LPPAINTSTRUCT;
相当の記述があるよ。

412 名前:デフォルトの名無しさん :03/05/31 11:12
>>本に載ってたコードでは下のように両方ともに構造体のアドレスを渡しているようですが・・。

これは正しい。書き方が違うだけで、2つは同じ型。
型名の先頭に"LP"が付くと、元の型のポインタ型をさすってこと。


413 名前:直リン :03/05/31 11:13
http://homepage.mac.com/yuuka20/

414 名前:デフォルトの名無しさん :03/05/31 11:23
むしろ、なぜ BeginPaintは LPPAINTSTRUCTで EndPaintは PAINTSTRUCT * なのか?

415 名前:デフォルトの名無しさん :03/05/31 11:33
>>397
新規作成->Win32 Console Application
じゃだめだってことか?

416 名前:デフォルトの名無しさん :03/05/31 11:44
.NET Framework を使わない場合、VC++6.0で十分でしょうか?
.NET 2003 の 新しい Windows フォーム デザイナ ってのが気になってるんですが。

417 名前:デフォルトの名無しさん :03/05/31 11:58
>>414
BeginPaintでは書き換わるけど、
EndPaintでは書き換わらないから。

418 名前:デフォルトの名無しさん :03/05/31 11:59
>>416
十分の定義による。

419 名前:デフォルトの名無しさん :03/05/31 12:13
なぜに CONST LPPAINTSTRUCT じゃないんだろうね。
LPCPAINTSTRUCT も定義されてないみたいだし、MSは統一する気はないのかな。
ちなみに、CWndクラスのメンバ関数では両方とも LPPAINTSTRUCT になっておりますな。

420 名前:デフォルトの名無しさん :03/05/31 12:14
なぜ、を始めるとキリがないと思う・・・

421 名前:409 :03/05/31 13:13
みなさんレスありがとうございます。

正直、わかったようなわからないような・・・。
型が同じならなぜ書き方が違うんだろう。
とりあえず、もっと詳しくなってきたら疑問は解決するかもしれないんで
先に進むことにします。

こーゆー細かいところで詰まって考え込んでしまう。。。

422 名前:デフォルトの名無しさん :03/05/31 13:39
まあ、MS のミスだろ。
実害は無いから、放置されてるんだと思うよ。
自分のプログラムでも、あまり細かいとこまで気にしだすとキリがなくなるからほどほどにな。

423 名前:デフォルトの名無しさん :03/05/31 18:18
>>409
一瞬オレのコピーロボットだと思った。
実は今朝、丁度同じ時間くらいに同じ疑問を持った。
びっくり。
共に頑張ろう。

424 名前:デフォルトの名無しさん :03/05/31 18:32
VC++のふりーのこんぱいらってないんですかね?

425 名前:デフォルトの名無しさん :03/05/31 18:34
>>424
ネタ?
C++ならあるけどな。
VC++はMSの商品名だろ。

426 名前:デフォルトの名無しさん :03/05/31 18:34
どういう意味だろ。VC++完全互換のフリーコンパイラという意味かな?

427 名前:デフォルトの名無しさん :03/05/31 18:59
おいおまいら、>>424は釣りだぞ!
引っかかるなよ!

428 名前:デフォルトの名無しさん :03/05/31 19:00
>>427
荒らしは.NETスレに逝ってください。

429 名前:デフォルトの名無しさん :03/05/31 19:56
>>428
同意。

430 名前:デフォルトの名無しさん :03/05/31 20:44
>>422
気にしすぎると仕様厨へと変身してしまうからな

>>424
.NET Framework SDKのことか?

431 名前:デフォルトの名無しさん :03/06/01 04:09
>>419
一応つっこんどくけど
const LPPAINTSTRUCT p ;

PAINTSTRUCT* const p ;
と同じ意味になるよね。関数の引数にするときはあんまり意味がない。

LPCPAINTSTRUCT を作るとしたら
typedef const PAINTSTRUCT* LPCPAINTSTRUCT;
かな。
const LPPAINTSTRUCTとは意味が違う。

432 名前:デフォルトの名無しさん :03/06/01 11:05
>>419
頭文字に「LP」と付く構造体、変数は「ロング・ポインター」の略。
意味はそのまま。
つまり、「*」を付けて宣言しているのとほぼ同意。(詳しくはあまり知らないけど)

433 名前:デフォルトの名無しさん :03/06/01 11:19
ウインドウの同じ位置(座標)に2つの色を表示して、
一方は透過性をもつようにしたいです。

それはできるのでしょうか?単純には無理ですかね

434 名前:デフォルトの名無しさん :03/06/01 11:21
2000/XPなら単純にできるAPIがあるけど

435 名前:433 :03/06/01 13:05
あ、2000です。すいません。いわなかったのはわざとじゃありません。
教えていただけるとありがたいです。

436 名前:397 :03/06/01 14:42
>>415
それで作るとデバックとかが含まれてファイルが大きくなるので
あくまでソースファイル単体だけにしたかったのです。
でも、なんとかやり方見つかりました。
お騒がせしました。

437 名前:デフォルトの名無しさん :03/06/01 14:58
>>436
根本的に理解が間違ってる予感

438 名前:デフォルトの名無しさん :03/06/01 14:59
>>435
とりあえず「透過」「ウィンドウ」「API」
ttp://www.google.com/search?hl=ja&ie=UTF-8&oe=utf-8&q=%E9%80%8F%E9%81%8E+%E3%82%A6%E3%82%A3%E3%83%B3%E3%83%89%E3%82%A6+API

439 名前:デフォルトの名無しさん :03/06/01 15:00
>>436
サイズがでかいのがイヤならReleaseでコンパイルすりゃいいと思うんだけど……

440 名前:デフォルトの名無しさん :03/06/01 15:19
タイトルの所にFPS表示させるのって
もしかして相当に無駄?

441 名前:デフォルトの名無しさん :03/06/01 15:54
>>437
いや、絶対間違ってる。

442 名前:397 :03/06/01 17:58
.NETなんですけど、よく見たら
win32じゃなくて、コンソールアプリの方でやってました。
これからはwin32コンソールでやります。
すいませんでした。


443 名前:397 :03/06/01 18:10
>>442
今までアカデミックについてくるC/C++コンソールのほうで
やってたってことです。
いちお、わかりにくい文だったので訂正を。

444 名前:デフォルトの名無しさん :03/06/01 19:06
WM_PAINTメッセージをフックしようと思い、WH_CALLWNDPROCでフックしたら、
マウスメッセージがとれません。両方フックする方法はありませんか?

445 名前:デフォルトの名無しさん :03/06/01 20:46
>>444
WH_MOUSEもフック

446 名前:デフォルトの名無しさん :03/06/01 21:40
激初心者質問で申し訳ないのですが、
Win32 Debugでビルドした場合は特に問題がなく、
Win32 Releaseでビルドしたアプリの方で原因不明のバグが
出て落ちるのですが、このようなことは起きるものなのでしょうか。
自分のコードがまずいのは分かっているのですが・・・
(エラーチェックをほとんどしていない等)





447 名前:デフォルトの名無しさん :03/06/01 21:42
>>446
ソースの何処かにバグがある。
自力で調べれ。

448 名前:デフォルトの名無しさん :03/06/01 21:54
>>446
デバッグの逆汗ながめりゃわかるだろ?

449 名前:デフォルトの名無しさん :03/06/01 21:55
>>446
よくあるこっちゃ。エラーチェックサボっちゃダメよ。
初期化してない変数とかないか?デバッグだと勝手に0が入ってて
落ちずに走っちゃうこととかある。

450 名前:デフォルトの名無しさん :03/06/01 21:59
>>446
まずいのがわかってるなら直せ。
たとえばASSERTやVERIFY、TRACEを使うとかな。

451 名前:デフォルトの名無しさん :03/06/01 22:04
稀に最適化のバグもあるけどな
一度しか遭遇したこと無いが(もう修正されたし)

452 名前:446 :03/06/01 22:47
みなさんレスありがとうございます。

>デバッグの逆汗
アセンブラ?は分からないのですが、よい機会なので
勉強してみます。

>初期化してない変数とかないか?
う、この辺が原因かもです。

>ASSERTやVERIFY、TRACE
デバッグの基本を知らな杉でした。
早速使ってみます。

うぐー、気合入れて直します・・・

453 名前:デフォルトの名無しさん :03/06/01 23:11
ttp://www.nitoyon.com/vc/tutorial/debug/win32.htm
ここなんか参考になるんじゃない?最後笑えるし、おすすめ

454 名前:デフォルトの名無しさん :03/06/02 12:39
配列は普通0から始まりますが、int hairetu[-1~4]等とすると-1,0,1,2,3,4のを
用意できるみたいなのはありますか?あるなら教えてください。

ゲームを作っていて、それは、データが0から16毎に並んでいるので、よくnum/16
みたいな使い方をします。-1はデータを使わない時に使っていて、-1をそのまま
配列に当てはめてしまうと、あふれてしまいます。だから、始めに配列の範囲か
しらべてから、当てはめなければ成りません。0を使わない場合にして、1から16毎
にすると、(num-1)/16としなければ成りません。こちらの解決方法でも良いですが。

455 名前:デフォルトの名無しさん :03/06/02 12:43
書き込む前に一度文章を推敲してください。意味不明です。

456 名前:デフォルトの名無しさん :03/06/02 13:01
>>455
int hairetu[5]={0,1,2,3,4};
int hairetu2[-1~4]={-1,0,1,2,3};
hairetu2[-1]==-1
と言うことです。

457 名前:デフォルトの名無しさん :03/06/02 13:08
そういうクラス作れ。

458 名前:デフォルトの名無しさん :03/06/02 13:11
出来ん(w

459 名前:デフォルトの名無しさん :03/06/02 13:12
>>454 これを参考にしろ
わかんなかったらあきらめろ。
template<class T> class Array {
  const int limit;
  T* a;
public:
 A( int aLimit ) : limit(aLimit), a( new T[limit] ) {}
T& operator[]( int i ) {
   if( 0 <= i && i < limit )
      return a[i];
   else
      throw out_of_range("shine");
 }
};

460 名前:デフォルトの名無しさん :03/06/02 13:12
そっか。オーバーロードと言う手があるか。

461 名前:デフォルトの名無しさん :03/06/02 13:12
じゃああきらめろ。VCにそんな機能無い。

462 名前:デフォルトの名無しさん :03/06/02 13:20
>456
それって結局、if(num==-1)若しくはif(hairetu2[num]==-1)を
どっかでやるんじゃないのか? 意味あんの?

463 名前:デフォルトの名無しさん :03/06/02 13:20
int a[4] = {-1,0,2,3};
int* p = a+1;
printf("%d",p[-1]);
この程度のことも思いつかないのか・・・

464 名前:デフォルトの名無しさん :03/06/02 13:38
>>459
少しなんとなく分かります。ありがとうございます。
>>460
>>459の事?
>>461
分かりました。あればよかったんですが。
>>462
うまく説明できないのですが。将棋なんかでもそうなんですが、1~9の9つ
しか直接的に使わないのに0と10も間接的に使いました。ただ、将棋の場合
は0~8を直接的に使うよりは、1一みたいに1からなので、そのままにしました。
>>463
使う前に、1文余分に書かなければならないでしょう。

465 名前:デフォルトの名無しさん :03/06/02 14:17
マジックナンバ使うのやめれ

466 名前:デフォルトの名無しさん :03/06/02 14:30
マイナスを使う例

int main(int argc, char* argv[])
{
char sage[8] = "abcdefg";
char* age = &sage[3];

for( int i = -3; i < 4; i++ )
{
printf("%c", age[i]);
}

return 0;
}

467 名前:デフォルトの名無しさん :03/06/02 14:32
……って、463と同じか。

468 名前:デフォルトの名無しさん :03/06/02 14:44
1文くらいいいじゃん

469 名前:デフォルトの名無しさん :03/06/02 14:54
つーか範囲チェックや-1を与えればインデックス0要素が取得できるような処理をラップしたクラス作れってことで解決済みだっつの。

470 名前:デフォルトの名無しさん :03/06/02 14:59
いろいろ工夫する方法があったんですね。お答えありがとうございました。

471 名前:デフォルトの名無しさん :03/06/02 15:59
#define convertnumber(x) ((x)+1)

472 名前:デフォルトの名無しさん :03/06/02 16:04
フリーでダウソしてきたラッパクラスを使用時に問題が出てきますた…
関数に与える変数に、

「データの参照:BYTE &」

との記述がされてました。
これはどういった記述をすればよいのでしょうか??


473 名前:デフォルトの名無しさん :03/06/02 16:11
具体的には

bool ReadPort( BYTE & )

とゆう関数を呼び出して扱うらしいのですが…

474 名前:デフォルトの名無しさん :03/06/02 16:12
普通に変数を渡すだけでいい
勝手に参照渡しになる

475 名前:デフォルトの名無しさん :03/06/02 16:15
>>474
そうなんですか!!
さっそくやってみます。ありがとうございました!!

476 名前:デフォルトの名無しさん :03/06/02 17:09
いくら初心者とはいえ甘やかしすぎ……

477 名前:名無しさん :03/06/02 17:26
wavファイルの音程を上げ下げするには、どうすれば良いでしょうか?

478 名前:デフォルトの名無しさん :03/06/02 17:35
>>477
ttp://www.wotsit.org/search.asp?page=8&s=music
ここから仕様書をダウンロードしてじっくり読め。

479 名前:デフォルトの名無しさん :03/06/02 20:13
例えば0.1sごとに処理をさせたい場合はどのような関数を使って、記述すればよいのでしょうか?
また、参考できるHPとかもあったら紹介していたただけるとうれしいです。


480 名前:デフォルトの名無しさん :03/06/02 20:25
>>479
SetTimer()

481 名前:デフォルトの名無しさん :03/06/02 21:05
ライセンス違犯しているのですが、あと2ヶ月でアンインスコするんで見逃してください。本当にスマソ。

前期だけのプログラミングの講義があるので自宅でもできるように友達からVC6の1枚のCDを借りたのですが、
その人はCDは1枚しかないと言うのですが、正直HELPが無いと教科書しか参考にできません。
それで、ヘルプが無いのでVB6を持っている人からMSDNライブラリというCDを借りて導入したのですが、
これでVC6Proのヘルプはカバーできますか?(サンプルが無いような気がするのですが。)

何かとんでもない質問したような気がするんですがすみません。。。

482 名前:デフォルトの名無しさん :03/06/02 21:12
>>480
ありがとうございます。SetTimerについて調べてみたのですが、まだVCを始めたばかりで解らないところがありました。
UINT SetTimer(
HWND hWnd,// handle of window for timer messages
UINT nIDEvent,// timer identifier
UINT uElapse,// time-out value
TIMERPROC lpTimerFunc // address of timer procedure
);

とあってのですが、hWndの部分がわかりません。
MFCでダイアログを作ってる場合はそのハンドルはどうなるんですか?
宜しければ御教授ください。


483 名前:動画直リン :03/06/02 21:13
http://homepage.mac.com/hitomi18/

484 名前:デフォルトの名無しさん :03/06/02 21:21
>>481
後二ヶ月待ってアンインストしろ!

485 名前:デフォルトの名無しさん :03/06/02 21:27
>>482
ダイアログクラス内でタイマー使うならCWnd::SetTimer();

486 名前:デフォルトの名無しさん :03/06/02 21:32
>>484
VCの2枚目以降のディスクがどうなってるかでも教えてくらはい!おながいします。。。
なんでなくしちゃったんだょぅ。。。

487 名前:デフォルトの名無しさん :03/06/02 21:39
>>481
見逃せません。即刻アンインストールしなさい。
フリーのコンパイラを使いなさい。

質問の答えだがMSDN Onlineを使えばいいんじゃない?

488 名前:デフォルトの名無しさん :03/06/02 21:40
>>482
Cxxx::OnInitDialog()で
  SetTimer(1,100,NULL);
を入れる。
100=100ms

WM_TIMERのメッセージハンドラ(OnTimer)内に
処理を書け

489 名前:デフォルトの名無しさん :03/06/02 21:41
>>485
なんどもすみません。もし、グローバル関数内でもOKですか?



490 名前:デフォルトの名無しさん :03/06/02 22:09
BeginPaintとGetDCを使い分ける意味が分かりません。今の所は、マップ
を表示する時、ShowMapをWM_PAINTと矢印が押された時に呼び出していて、
パラメータにBeginPaintであるかないかを渡しています。それで正しい
ですか?教えてください。

491 名前:デフォルトの名無しさん :03/06/02 22:13
>>489
主語を省略すんな。

>>490
その説明でわかってもらえると思う?

492 名前:デフォルトの名無しさん :03/06/02 22:23
BeginPaintはWM_PAINTで、それ以外はGetDCと言う以外分かっていないので
質問しました。WM_PAINTは初めて表示する時、隠れた部分が現れた時などの
イベントで、その時にマップを表示します。また、矢印を押すと、キャラの
位置データを移動させた後、マップを表示します。うまく説明できません。
void ShowMap(int begin, ...)//BeginPaintで表示したいなら1
{
hdc=begin?BeginPaint(...):GetDC(...);
//マップの表示//
begin?EndPaint(...):ReleaseDC(...);
}

493 名前:デフォルトの名無しさん :03/06/02 22:32
>>487
ナローバンドだからなんとなくオフラインキボンヌ!


ヽ(`Д´)ノウワァァン

494 名前:デフォルトの名無しさん :03/06/02 22:44
VC++6.0の二枚目は多分必要ないと思う。
ちなみにヘルプはこれじゃないよ。あれはMSDNライブラリ。

495 名前:デフォルトの名無しさん :03/06/02 23:02
わがままなやっちゃなあ。テレホはあんのか?
その間に丸ごと落としたらどーよ?
どっちにしても常時接続じゃないと辛いと思うぞ。
勉強するとき一番役に立つのはGoogleだしな。

496 名前:デフォルトの名無しさん :03/06/02 23:04
>>493
ふつうにwebブラウザで参照できる

497 名前:マルチポストかも、ごめんなさい :03/06/03 15:48
_T マクロでSJIS/UNICODEを切り分けてRDBに文字を保存できるのは良いと思うのですが、UCS-2でなくUTF-16で保存したい場合にはどういう記述になりますか?

498 名前:デフォルトの名無しさん :03/06/03 15:54
>>481の質問の要点は「VB6を持っている人からMSDNライブラリというCDを借りて導入したのですが、
これでVC6Proのヘルプはカバーできますか」だろ。
答えは「はい」。これだけじゃん。


499 名前:デフォルトの名無しさん :03/06/03 16:03
>>492
WM_PAINTメッセージが来るのはウインドウに更新領域(無効領域)が存在するため
BeginPaint()を使うと更新領域がクリアされる。WM_PAINTのメッセージを
受けて、BeginPaint()せずにGetDC()しても更新領域はクリアされないので
すぐにWM_PAINTメッセージがきてしまう(くる必要も無いのに)。
更新領域はInvalidateRect()などで追加する。
通常はなにかの操作で画面を書き換える必要が出ると、InvalidateRect()などを
使って更新領域を設定してWM_PAINT時に描画する

500 名前:デフォルトの名無しさん :03/06/03 16:12
すいません マルチポストになっちゃいましたが
どなたさんか教えてください。


同じ cppファイル内で関数 a_Function()というのを作って
それをボタンが押された度に呼出したいのですが
うまくいきません。
a_Function:定義されていない識別子です。のコンパイルエラーが出ます。

VCはまだ浅いので どなたさんか問題点の指摘 アドバイス等 
頂けないでしょうか。

ウラワザでクラスウイザードを使用してボタンクリックなどの関数作って
名前を変えるというのを伝授してもらったんですが
肝心のボタン押下の処理でワトソン博士が発生してしまいました


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