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


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

★初心者にVisual C++を教えるスレ★ Part20
251 名前:デフォルトの名無しさん :2005/07/14(木) 22:46:49
>>243
sizeof Err_Message
要素数が欲しいのならsizeof Err_Message / sizeof Err_Message[0]
たぶんヘッダの宣言に要素数がないと駄目だと思うけど。(あっても無理だったかもしれないけど)

252 名前:デフォルトの名無しさん :2005/07/14(木) 22:48:52
>>250
つまりcommctrl.hやwindows.hのインクルードより前に#define _WIN32_IE 0x500と書けばいい。
あるいはBTNS_BUTTONをTBSTYLE_BUTTONに置き換えればいい。

253 名前:244 :2005/07/14(木) 22:57:52
>248さん
ありがとうございます
具体的になんという名前のlibファイルをリンクしたらよろしいでしょうか。

254 名前:デフォルトの名無しさん :2005/07/14(木) 23:19:01
最近は一から全て教えないと何もできない奴が多いな

255 名前:244 :2005/07/14(木) 23:19:57
連投スイマセン。
自己解決しました。使っている関数が悪かったようです。
WindowsとLinuxにおいて仕様が違うところがあるのですね。勉強になりました。
ご迷惑おかけして申し訳ありませんでした。

256 名前:初心者 :2005/07/14(木) 23:41:33
StdAfx.cpp
c:\program files\microsoft visual studio\vc98\include\oaidl.h(6827) : fatal error C1073: インクリメンタル コンパイルを伴う内部エラーが発生しました(コンパイラ ファイル '.\p0io.c', 行番号 1142)
cl.exe の実行エラー
ブラウザ データベースを作成中...
BSCMAKE: error BK1506 : コンパイラは、指定されたファイル '.\Debug\StdAfx.sbr'を開くことができません。: No such file or directory
bscmake.exe の実行エラ

ビルドしたらこんなエラーが出たんですけど、なんなんですか?会社でかいたソースをフロッピにいれて
家で立ち上げたんですけど、こんなエラーがでてしまいました。どうすれば実行できますか?

257 名前:デフォルトの名無しさん :2005/07/14(木) 23:45:11
>>256
中間ファイルは全て消せ。

258 名前:デフォルトの名無しさん :2005/07/14(木) 23:49:50
VC6.0でdouble型×2コで256*256の配列を取ろうと思ったんですが実行中に落ちてしまいます
メモリを確保できる最大とかは決まっているのでしょうか?

259 名前:デフォルトの名無しさん :2005/07/14(木) 23:55:01
>>258
大丈夫、そのくらいならnewで問題なく取ってこれる。
#どうしてもローカル変数にしたいなら設定でスタックサイズを調整したまえ。

260 名前:初心者 :2005/07/15(金) 00:20:00
>>257さん
リビルドでいいんですか?

261 名前:初心者 :2005/07/15(金) 00:25:01
>>257さん
リビルドしてもだめでした・・・・また同じエラーがでます。

262 名前:デフォルトの名無しさん :2005/07/15(金) 01:08:22
>>261
いっそ、Debugフォルダごと一度消してしまえ。
#つーか、持って帰るのに邪魔だろうに……

263 名前:デフォルトの名無しさん :2005/07/15(金) 09:27:34
using namespace std;
は問題なくとおるのに
using namespace System;
だと名前空間が存在しないというエラーが出ます。
Systemだけ特別な場所に記述しなきゃいけないってことはないですよね・・・?
ご指導お願いします。

264 名前:デフォルトの名無しさん :2005/07/15(金) 10:16:14
managedもこのスレでやるの?

265 名前:デフォルトの名無しさん :2005/07/15(金) 12:25:38
VB.NET2003で コンポーネントで参照設定したクラスや名前空間のヘルプが
検索してもみつかりません。このような場合はどうしたらいいのでしょうか?
教えてくださいませ。

266 名前:初心者ゴン :2005/07/15(金) 14:45:00
エディットボックスで入力してエンターを押して
次のエディットボックスへ移ることってできますか?

例ですけど
_____________ ______________
名前:|____________|E-mail(省略可):|____________|

名前を入力したらE-mail(省略可)のエディットボックスへ
移動できるのでしょうか?

267 名前:デフォルトの名無しさん :2005/07/15(金) 14:47:31
できる

268 名前:初心者ゴン :2005/07/15(金) 15:07:10
>>267
どうしたらできるのでしょうか?

269 名前:デフォルトの名無しさん :2005/07/15(金) 15:08:44
Enterの押下を検出して、フォーカスをセットする。

270 名前:真のデフォルトの名無しさん :2005/07/15(金) 15:15:25
おい!269!
265の俺のも答えろよ!

271 名前:269 :2005/07/15(金) 15:18:14
>>270
しらねーよ

272 名前:初心者ゴン :2005/07/15(金) 15:33:23
>>270さん、すみませんいま作業してまして、
なかなかネットできなくて!ありがとうございます。


273 名前:デフォルトの名無しさん :2005/07/15(金) 16:14:53
>>270
超サンクス!

274 名前:真のデフォルトの名無しさん :2005/07/15(金) 16:16:22
271
しっとけよこのバカ!


275 名前:初心者ゴン :2005/07/15(金) 16:31:11
コメントなんか勘違いしてた。。。で、
Enterの押下を検出して、フォーカスをセットする
ってどうやるのか分からないっす・・・


276 名前:デフォルトの名無しさん :2005/07/15(金) 16:50:24
>>274
しらねーよ

>>275
WM_KEYDOWN
SetFocus

277 名前:初心者ゴン :2005/07/15(金) 17:01:48
あと聞きたいんですけど、エンター押して、OKボタンと同じ役目を果たしたいんですけど
できますか?

278 名前:デフォルトの名無しさん :2005/07/15(金) 17:02:36
>>277
どっちなのかと

279 名前:初心者ゴン :2005/07/15(金) 17:23:32
どっちなのかと?

280 名前:デフォルトの名無しさん :2005/07/15(金) 17:30:28
Enterの押下を検出して、OK押したときと同じ処理をする。

281 名前:デフォルトの名無しさん :2005/07/15(金) 19:34:41
VCで指定フォルダ以下を丸ごと他のフォルダにコピーする関数などあるのでしょうか?。

282 名前:デフォルトの名無しさん :2005/07/15(金) 19:54:14
VCに関数など無い


283 名前:281 :2005/07/15(金) 20:34:09
指定フォルダ以下のファイル一覧を収得しようと想い、以下のように作ってみたのですが、
どうしてか4つファイルがある内の3つしか拾えません。1つファイルを増やすと4/5になって
しまいます。1.txt...5.txtという空ファイルを作成してテストしたのですが5つの場合は1〜.4の
数のテキストファイル、4つの場合は1〜3の数のテキストファイルだけしか拾えません。
特定のファイルが拾えていないのではなく最後のファイルだけ拾えないようなのですが
どうしてでしょうか?。

CFileFind FileFind;
if (!FileFind.FindFile("C:\\*.*")) return;

while(FileFind.FindNextFile()){
MessageBox(FileFind.GetFilePath(),0,MB_OK);
}

>>282
その言葉の関数はVCには「関数」という言葉はないという意味も含まれてたりするのでしょうか。
揚げ足ではなく少し気になったもので・・・。

284 名前:デフォルトの名無しさん :2005/07/15(金) 20:59:59
VCは言語やライブラリの類ではない。
ただの開発ツール名。

285 名前:デフォルトの名無しさん :2005/07/15(金) 21:02:24
関数を持つのはVCではなくそこから使う各インターフェース群だ

SHFileOperationなぞどうかね?

286 名前:デフォルトの名無しさん :2005/07/15(金) 22:10:00
>>283
ヘルプでCFileFind::FindNextFileの戻り値を良く見てみるといいよ


287 名前:デフォルトの名無しさん :2005/07/15(金) 22:12:49
Worthless error LNK2019: 未解決の外部シンボル __imp__mciGetErrorStringA@12 が
関数 "public: void __thiscall CWorthlessDlg::ErrMsgOut(unsigned long)"
(?ErrMsgOut@CWorthlessDlg@@QAEXK@Z) で参照されました。

こんなのが出てリンクが出来ません
Visual C++.NETで簡単なCDプレーヤーを作成しているのですが、
winmm.libをインポートライブラリに指定しているのにうまくいきません。
どなたか、解決法がお判りでしょうか?

288 名前:デフォルトの名無しさん :2005/07/15(金) 22:16:24
重い処理をさせるとそのWindowがフリーズしたようになるんですが、
コレを回避させるにはその処理をスレッド化するんでしょうか?
それとも他の方法があるんですか?
定番を教えてください。

289 名前:デフォルトの名無しさん :2005/07/15(金) 22:26:10
ループ中にsleepをかます

290 名前:デフォルトの名無しさん :2005/07/15(金) 22:27:11
おれは普通にスレッド作ってるな。

291 名前:デフォルトの名無しさん :2005/07/15(金) 22:28:17
3Dアプリでsleep使ってるけどsleep(0)とsleep(1)とどっちがいいんだろう。
あんまし変わんない気がするんだけど

292 名前:デフォルトの名無しさん :2005/07/15(金) 22:29:35
>>289-291
Sleep(1)を試してみて、駄目ならスレッド化させます。どーもでした。

293 名前:厨房質問 :2005/07/15(金) 22:32:31
static const * char const hoge= "";
の意味がわかりません。教えて下さい。


294 名前:デフォルトの名無しさん :2005/07/15(金) 22:35:52
つーか自ウインドウが固まるの防止したかったら単にSleepじゃだめだべ。

295 名前:デフォルトの名無しさん :2005/07/15(金) 22:56:14
GUIスレッドを使うか自前でメッセージポンプを回さないと固まるよ

296 名前:デフォルトの名無しさん :2005/07/15(金) 23:00:06
自ウインドウ固まるの防止したければ、
ループ中にかますのはGetMessage/DispatchMessageだな。

297 名前:デフォルトの名無しさん :2005/07/15(金) 23:04:44
>>293
そのコード通るコンパイラあるの?
static const char* const hoge="";
これならわかるけど。

298 名前:デフォルトの名無しさん :2005/07/15(金) 23:14:30
>>288
処理を分割する。
少し処理し、最後にWM_APP+aをPostするのを繰り返す。

299 名前:281 :2005/07/15(金) 23:26:29
昨日、ちょっとパソコンと睨めっこしすぎて吐きそうになったので今日は早めに休もうと想います^^;。
みなさん、頑張ってください。


>>285
SHFileOperationは便利そうですね^^。今、いじりながら使おうとしているのですがエラーが出て
コピー出来ない-;。読み取り側のファイルが読めないとかいうエラーが出ます。何が原因なのか
教えて頂けないでしょうか?。

SHFILEOPSTRUCT sfo;
sfo.wFunc = FO_COPY;
sfo.fFlags = FOF_ALLOWUNDO | FOF_NOCONFIRMMKDIR | FOF_MULTIDESTFILES;
sfo.hwnd = m_hWnd;
sfo.pFrom = "c:\\*.*";
sfo.pTo = "c:\\abc";

if (SHFileOperation(&sfo)){
MessageBox("失敗",0,MB_OK);
return FALSE;
}

>>286
見てもわからなかった-;。返り値がBOOLになっていますし、一部のサイト(Cかな)では成功で0、
失敗またはファイルがあればそれ以外と書いてありました。前はこう書いてて上手く行ってた
記憶があるんだけど今回のはどこかのサイトのを引用したから失敗したのかなぁ。

CFileFind finder;
BOOL id = finder.FindFile();
while (bWorking){
id = finder.FindNextFile();
}

300 名前:デフォルトの名無しさん :2005/07/16(土) 01:32:04
>>288

スレッドを使わないなら、

if(PeekMessage(&msg,hWnd,0,0,PM_REMOVE)){
TranslateMessage(&msg); //アクセラレータキーを処理しないなら不要
DispatchMessage(&msg);
}

をループの中に入れる。MFCを使っている場合、hWndの箇所にGetSafeHwnd()を書く。

301 名前:デフォルトの名無しさん :2005/07/16(土) 02:23:19
質問ですが


#include <stdio.h>
#include <math.h>
#define N 10000 /* ステップ数 */
#define T 1000 /* t=0 から t=T まで計算する */

double f1(double t, double x,double y);
double f2(double t, double x,double y);

int main(){
double t[N+1], x[N+1],y[N+1], dt, k11,k12,k21,k22,k31,k32,k41,k42; int i;


dt=(double)T/(double)N; /* ステップ幅 */
printf("dt=%f\n",dt);
t[0]=0.0; x[0]=100;y[0]=100; /* 初期値の設定 */
for(i=0;i<N;i++){
k11=dt*f1(t[i],x[i],y[i]);
k12=dt*f2(t[i],x[i],y[i]);
k21=dt*f1(t[i]+dt/2,x[i]+k11/2,y[i]+k12/2); k22=dt*f2(t[i]+dt/2,x[i]+k11/2,y[i]+k12/2);
k31=dt*f1(t[i]+dt/2,x[i]+k21/2,y[i]+k22/2); /* 未完成 */
k32=dt*f2(t[i]+dt/2,x[i]+k21/2,y[i]+k22/2);
k41=dt*f1(t[i]+dt/2,x[i]+k31/2,y[i]+k32/2); /* 未完成 */
k42=dt*f2(t[i]+dt/2,x[i]+k31/2,y[i]+k32/2);
x[i+1]=x[i]+(k11+2*k21+2*k31+k41)*1/6;
y[i+1]=y[i]+(k12+2*k22+2*k32+k42)*1/6;

302 名前:301続き :2005/07/16(土) 02:23:44
t[i+1]=t[i]+dt; }
return(0);
}

double f1(double t, double x,double y);

{
return (0.01*x-0.0001*x*y);

}

double f2(double t, double x,double y);

{
return (-0.05*x+0.0001*x*y);

}


というプログラムで「error C2447: グローバルスコープで中カッコ ({) が見つかりましたが、対応する関
数ヘッダーがありません。」というエラーが出たんですが対処法が分かりません。どうか教えてください。




303 名前:デフォルトの名無しさん :2005/07/16(土) 02:33:56
>>302

double f1(double t, double x,double y);   ←";"いらない
{
  :
}

double f2(double t, double x,double y);   ←";"いらない
{
  :
}

304 名前:デフォルトの名無しさん :2005/07/16(土) 12:37:42
モードレスダイナログのラジオボタンのチェックの有無を収得するにはどうしたら良いのでしょうか?。
Dlg.GetDlgItem(IDC_R1);とするとコンパイルは通るものの実行して確かめると例外だよ!と
怒られてしまいます。

CDlgSelect Dlg;
int rd = (int) Dlg.DoModal();

CButton *R;
R = (CButton *) Dlg.GetDlgItem(IDC_R1);
if (R->GetCheck()){
MessageBox("aa");

}

305 名前:304 :2005/07/16(土) 12:49:34
自己レス
GetCheckedRadioButton()が使えそうなのでこちらを使ってみようと想います^^。

306 名前:304 :2005/07/16(土) 13:27:08
モードレスダイアログのラジオボタンのキャプションの文字列を書き換えたいのですが、
どうすれば良いでしょうか?。これでは書き換える事は出来ないようです。

CDlgSelect Dlg;
Dlg.SetDlgItemText(IDC_R1,"aaa");

307 名前:デフォルトの名無しさん :2005/07/16(土) 14:47:15
なんでモードレスダイアログなのにDoModalしてるわけ?

308 名前:デフォルトの名無しさん :2005/07/16(土) 15:06:04
GetDlgItem(IDC_R1)->SetWindowText(_T"お前は馬鹿か?");

309 名前:304 :2005/07/16(土) 15:06:59
>>307
検索してサイトを見て回ると、そうしている所が多いいから・・・・。
変数を追加してチェックが入る時に変数に代入するしかないのかな。

310 名前:デフォルトの名無しさん :2005/07/16(土) 15:26:40
>>309
・モードレスダイアログとはなんであるのか
・DoModalとはなんであるのか

おまいはまずこれらを調べ理解してこい

311 名前:デフォルトの名無しさん :2005/07/16(土) 15:31:09
>>309
先に>>310の答えを言っちゃうと、DoModalはモーダルダイアログを作る。モードレスダイアログはCreateだ。



312 名前:デフォルトの名無しさん :2005/07/16(土) 16:36:58
答えになってねぇw

313 名前:304 :2005/07/16(土) 17:41:56
そうだったのか・・・開いたまま使うのと、そうでないものなんですね。
それで私が使いたいのは「モーダルダイアログ」でラジオボタンの選択をさせてチェックの
有無を確かめたいのです^^;。
そして今から「DoModal」を調べてきます。

314 名前:デフォルトの名無しさん :2005/07/16(土) 23:06:36
>>313
モーダルにするんならダイアログを起動したスレッドからは変更は不可能。
監視用の別スレッド作って変更するか、ダイアログのプロシージャ内で変更しろ。

315 名前:デフォルトの名無しさん :2005/07/17(日) 20:09:01
CListView().SetItemText(0,2,hIcon);という感じでnSubItemの2のテキストの左にアイコンを
表示したいのですが、どうやったら出来るのでしょうか?。

316 名前:デフォルトの名無しさん :2005/07/18(月) 00:05:02
アイコンが表示できない、なぜ-;。

CTreeCtrl & c = GetTreeCtrl();

SHFILEINFO sfi;
SHGetFileInfo(path,FILE_ATTRIBUTE_ARCHIVE,&sfi,sizeof(sfi),SHGFI_ICON|SHGFI_SMALLICON);

c.InsertItem(path,imglist->Add(sfi.hIcon),imglist->Add(sfi.hIcon),TVI_ROOT,TVI_LAST);

317 名前:デフォルトの名無しさん :2005/07/18(月) 09:45:48
コンソールアプリケーションでprintf等の出力をIDE内に
出すことは可能でしょうか。

318 名前:デフォルトの名無しさん :2005/07/18(月) 10:08:30
デバッグビルドの設定を変更してMFCとリンク。
そんでもってTRACEマクロを使用すればできるかな。

319 名前:デフォルトの名無しさん :2005/07/18(月) 10:33:24
>>318
それって質問に対する回答にはなってないな。オナニーご苦労。

320 名前:デフォルトの名無しさん :2005/07/18(月) 10:44:05
>>317
コマンドラインでリダイレクト。

321 名前:デフォルトの名無しさん :2005/07/18(月) 11:12:46
わざわざIDEへ出力する必要性がいまいちわからん。
コンソールアプリならコンソールかファイルへ出力できれば十分だろ

322 名前:デフォルトの名無しさん :2005/07/18(月) 11:14:43
>>321
このスレでは質問するのにいちいち必要性を説明しなければならないのですか?
必要なくても技術的に可能かどうか疑問を持ってはいけませんか?

323 名前:デフォルトの名無しさん :2005/07/18(月) 11:19:25
無料で教えられることには限りがあるからな
よっぽどひまで物好きな人がいるといいね

324 名前:デフォルトの名無しさん :2005/07/18(月) 11:21:28
それはお前に教える能力があるという前提での話だな。
前提を満たしてないのに話を先に進めちゃダメよ。
プログラムもそうでしょ。

325 名前:デフォルトの名無しさん :2005/07/18(月) 11:23:34
とりあえずMFCでやってるからMFCのソース読めばわかる。
afxDumpとか
暇なら調べてみ

326 名前:デフォルトの名無しさん :2005/07/18(月) 11:31:39
前にもどこかのスレで同じようなような質問があって
誰か答えてたような気もするが、勘違いかもしれない。
過去ログ調べてみるのも手だな

327 名前:デフォルトの名無しさん :2005/07/18(月) 12:45:11
一応調べてみたらIDEへ出力するのはAPIでやってた。
質問者が気に入らんから回答はここまで
誰か親切なやつがいるといいね

328 名前:デフォルトの名無しさん :2005/07/18(月) 18:38:58
InsertItemの引数が間違っているからIDEへ出力出来ない。

329 名前:デフォルトの名無しさん :2005/07/18(月) 20:02:55
>>325
>>327
サンキュー。分かったよ。
何が気に入らなかったのかは理解不能ですが。

330 名前:デフォルトの名無しさん :2005/07/18(月) 21:25:07
>>317
printf()の出力はそのままでは出せないので
vsprintf()とOutputDebugString()で我慢しろ

331 名前:288 :2005/07/19(火) 15:05:20
>>288です。
みなさん回答ありがとうございました。
メッセージポンプをループ中に入れることにします。

332 名前:デフォルトの名無しさん :2005/07/19(火) 15:31:06
C言語のスレで誘導されました。
vc++でcのプログラムを作成しているのですが、

最大表示件数を5件、↑↓キーでのページ切り替えを行うにはどうしたらよいのでしょうか?
よろしくお願いします。

333 名前:デフォルトの名無しさん :2005/07/19(火) 15:32:28
とりあえず日本語の勉強から

334 名前:デフォルトの名無しさん :2005/07/19(火) 15:38:32
う、申し訳ないです。あわてて書き込んだらわけわかりませんね。

vc++6.0にてc言語のプログラムを作成しています。
ファイルの読み込み>一覧表示の際に
仮に50件のデータがあるとして、5件までを1ページの最大の表示件数に設定し、
↑↓キーによってページを切り替えられるようにしたいわけです。
この場合だと10ページの切り替えにしたいと言えばいいのでしょうか。

こ、これで伝えられてるでしょうか・・・。

335 名前:デフォルトの名無しさん :2005/07/19(火) 15:47:48
コンソールアプリでって事?

336 名前:デフォルトの名無しさん :2005/07/19(火) 15:49:35
はい、そうです。

337 名前:デフォルトの名無しさん :2005/07/19(火) 18:38:50
>>334
conio.hのgetch()を使えば、↑↓を押したときもすぐ返してくれます。
とりあえず、getch()の戻り値をモニターするプログラムを作って、
↑↓を押したときにどんな値が返るか調べましょう(そのくらい作れるよね。できないならあきらめな)。


338 名前:デフォルトの名無しさん :2005/07/19(火) 19:01:47
>>334
>vc++6.0にてc言語のプログラムを作成しています。

作成しようと思っているんじゃなく、作成し始めてるんだな?どこまでできたんだ?

339 名前:デフォルトの名無しさん :2005/07/19(火) 20:31:12
scanf("%d",&data);
scanf("%c",&ch);
printf("%d,%c",data,ch);

上のようにint型dataとchar型chに数と文字を入れ
printfで出力しようと思うのですが
実行するとdataを入力したら文字入力が飛ばされ終了してしまいます
scanfを上下入れ替えて文字、数字の順にすると問題なく動きます
文字入力のscanfを%sで実行すると飛ばされはしませんがdataの中が0になってしまします

色々調べてみたのですが原因がわかりません
よろしければご教授ください

340 名前:デフォルトの名無しさん :2005/07/19(火) 20:51:12
読み込み不一致だな。
fgets()で文字列にしてからatoi()なり何なりを使って変換汁。

341 名前:デフォルトの名無しさん :2005/07/19(火) 21:34:30
Cの質問をVCスレに誘導されても迷惑だな
なんとかならんのか

342 名前:デフォルトの名無しさん :2005/07/19(火) 21:46:36
C言語の標準関数だけでは無理という理由でここへ誘導されてるわけだし
C言語の標準関数だけでやってるならCのスレへ行くべきだろう

http://pc8.2ch.net/test/read.cgi/tech/1121657911/60-63n
>
> 63 :デフォルトの名無しさん :2005/07/19(火) 14:14:02
> >>60
> C言語の標準関数だけでは無理なので、該当スレへどうぞ。
> ・VCスレ
> ・初心者質問スレ
> ・MFCスレ

343 名前:デフォルトの名無しさん :2005/07/19(火) 22:07:10
>>339
scanf("%d"のときに数字を入力した後の改行が次の%cで読み込まれている。
scanf("%d%*[^\n]%*c", &data, %ch);とでもすればいいんじゃない?

344 名前:デフォルトの名無しさん :2005/07/19(火) 22:57:31
改行が読み込まれている、をヒントに調べ直しました
scanf("%c", &dummy);
上記を各scanfの後に行いダミー変数に放り込む方法で解決しました
アドバイスありがとうございました

345 名前:デフォルトの名無しさん :2005/07/19(火) 23:13:27
C++で狽ナk=0から∞の特別なプログラムってある??
誰か教えてください!!

346 名前:デフォルトの名無しさん :2005/07/19(火) 23:16:35
ぼるじょあがC/C++の宿題を片づけますYO! 48代目
http://pc8.2ch.net/test/read.cgi/tech/1121471445/

347 名前:デフォルトの名無しさん :2005/07/19(火) 23:25:49
ありがとうございます.

348 名前:デフォルトの名無しさん :2005/07/19(火) 23:30:49
>>344
余りいい方法じゃないね。
>340がずっと使える一般的な手法かと。
>343でもいいけど毎回そのフォーマットを編集するのも気が萎えるだろうしね。

349 名前:デフォルトの名無しさん :2005/07/20(水) 00:37:55
VC++でエクセルを読み込んで処理を行いたいと思っているのですが、
ハイパーリンクを取り込むことができません。
どなたかお知恵を貸してください。

350 名前:デフォルトの名無しさん :2005/07/20(水) 00:52:36
エクセルを読み込むのか……
大変そうだ。
#ブックファイルを読むならいざ知らず。

351 名前:デフォルトの名無しさん :2005/07/20(水) 01:39:14
おい!おまいら!あほのマイクロソフトの3万近くの有償サポートについてどう思う!?
完全に自社製品のサポートに対する怠慢だとおもうのだが!
自社製品の不備が多すぎるので答えるのが面倒で防御策をしていると
思われるがどう思う?



352 名前:デフォルトの名無しさん :2005/07/20(水) 07:13:35
>>351
そういう香具師は、Eclipse+GCCでも使うよろし

353 名前:デフォルトの名無しさん :2005/07/20(水) 12:00:38
なんで?<352


354 名前:デフォルトの名無しさん :2005/07/20(水) 12:22:42
VC6.0でリストビューを使ってレポート形式のリストを作ったんですけど、
リスト上部のカラムをドラックしてサイズを変えると、行がずれた時に
再描画されてないらしくて灰色の線が残っちゃったりします。
スクロールの機能自体は残したいのですが、カラムをクリックした時とか
カラムのサイズが変わったのを検知して、再描画を促す手段とかご存知ないでしょうか?


355 名前:デフォルトの名無しさん :2005/07/20(水) 12:55:50
>>354
わざわざそんなことやんなくてもいいはず
描画してる場所がまずいんじゃないの?

356 名前:デフォルトの名無しさん :2005/07/20(水) 13:09:15
>>355
タブコントロールの上にリストビューを2個重ねておいていて、タグが選択されたら
対応するリストビューをm_listctrl.ShowWindow(SW_SHOW);で描画するってことを
やってるんですけど、原因はそれですかね?


357 名前:初心者ゴン :2005/07/20(水) 13:13:18
メモリーリーク検出方法ってどうやるんでしょうか?よろしくお願いします。

358 名前:355 :2005/07/20(水) 13:14:14
試しにリストビューをタグの上じゃなくて、離れたところにずらしてカラムを
左右に振ってみたら、前述の描画異常は起きませんでした。
どうも、タグの上への重ね方が悪かったみたいです。

359 名前:デフォルトの名無しさん :2005/07/20(水) 13:36:59
>>357
デバッグビルドするだけじゃないかな

360 名前:初心者ゴン :2005/07/20(水) 13:50:04
デバックビルド?デバッガのことですか?

361 名前:デフォルトの名無しさん :2005/07/20(水) 13:51:20
デバッグで動かせば実行終了した時リークした場所が出てくゆ

362 名前:デフォルトの名無しさん :2005/07/20(水) 14:01:51
>>357
#define MLCHECK() do { \
  _CrtSetReportMode(_CRT_WARN, _CRTDBG_MODE_FILE); \
  _CrtSetReportMode(_CRT_ERROR, _CRTDBG_MODE_FILE); \
  _CrtSetReportMode(_CRT_ASSERT, _CRTDBG_MODE_FILE); \
  _CrtSetReportFile(_CRT_WARN, _CRTDBG_FILE_STDOUT); \
  _CrtSetReportFile(_CRT_ERROR, _CRTDBG_FILE_STDOUT); \
  _CrtSetReportFile(_CRT_ASSERT, _CRTDBG_FILE_STDOUT); \
  _CrtSetDbgFlag(_CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF); \
} while(0)

コンソールアプリならmain() 入ってすぐに MLCHECK(); しとけばいい。
試しに new int; return 0; とかやってみればどうなるかはわかる。


363 名前:初心者 :2005/07/20(水) 14:24:54
例えば
void CSample2View::OnButton1() このクラス内で
{
// TODO: この位置にコントロール通知ハンドラ用のコードを追加してください
CFileDialog filedlg(TRUE, "txt", "*.txt");
CString file1;
FILE *fp1;
int i=0;
int c;
char boxa[200];

if(filedlg.DoModal() == IDOK)
{
file1 = filedlg.GetPathName();
fp1 = fopen(file1,"r");

while( (fscanf(fp1,"%f",&boxa[i]) )!=EOF)
{
fscanf(fp1,"%f",&boxa[i]);
i++;
}
c=i-1;

fclose(fp1);
}

}

などの計算をしてそのboxaの値を他のクラス内で使用したい場合は
どのようにすればよいですか??
publicなどで宣言すればよいのですか??
よろしくお願いします。

364 名前:初心者ゴン :2005/07/20(水) 14:29:07
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
ってメモリーリークなんですかね?

365 名前:初心者ゴン :2005/07/20(水) 14:30:01
↑メモリーリーク検出なんですかね?

366 名前:初心者ゴン :2005/07/20(水) 14:39:48
チェックの方法がわかりました!みなさんありがとうございます。

367 名前:354 :2005/07/20(水) 18:01:05
ダイアログの[書式]-[タブオーダー]でリスト2個の優先順位をタブコントロールより上にしたら解決しました。
リストの描写が潰れていたのはそこら辺が原因みたいでした。
どうもお騒がせしました。


368 名前:デフォルトの名無しさん :2005/07/20(水) 21:19:27
>>363
Getter,Setter

369 名前:初心者 :2005/07/21(木) 13:52:55
ダイアログでデータを入力してグラフ表示させる場合は最初に選択する画面で
SDI、MDI、ダイアログってありますがどれを選択すればよいでしょうか?
簡単に言うと
1.2つのファイル(.txt)を入力(オープン)。
2.閾値などを入力し2つのファイルのデータを処理。
3.処理されたデータをグラフ表示。

C言語ではファイルのオープンから閾値などを入力し
出力ファイルを作るところまではできたのですが
C++ではなかなかうまくいきません。
お教えいただけますか??

370 名前:デフォルトの名無しさん :2005/07/21(木) 14:56:00
>>369
>ダイアログでデータを入力して
単一ダイアログモデルでいいなら、ダイアログを選択すればいいじゃん。
グラフを別ウィンドウにするとしても、別ダイアログで事は足りるだろうし。
SDI/MDIはファイル依存型、ダイアログは操作依存型と思えばいい。

371 名前:デフォルトの名無しさん :2005/07/21(木) 14:56:14
どれでもできる

372 名前:デフォルトの名無しさん :2005/07/21(木) 15:08:32
違いがわからんのだったら
どれを選択なんていわずに全部作ってみる。

373 名前:デフォルトの名無しさん :2005/07/21(木) 16:14:36
>>369
初心者ならまずダイアログから入ったほうがよさげ。

374 名前:デフォルトの名無しさん :2005/07/21(木) 17:42:39
>>373
Document/Viewアーキテクチャーを理解できなくなる罠

375 名前:デフォルトの名無しさん :2005/07/21(木) 17:47:49
いまだ理解できていない俺ガイル。

376 名前:デフォルトの名無しさん :2005/07/21(木) 17:52:37
理解する必要なし

377 名前:369 :2005/07/21(木) 18:25:39
>>373
そう思って書きましたが。
つーか、漏れも余程のことがないとダイアログだなぁ。

378 名前:デフォルトの名無しさん :2005/07/21(木) 18:28:13
俺ダイアログ以外で作ったことないぜ

379 名前:デフォルトの名無しさん :2005/07/21(木) 18:29:55
メニューとかつけるのめんどいし

380 名前:デフォルトの名無しさん :2005/07/21(木) 20:35:14
今、ダイアログ上のスクロールバーのデータ(数値)をSDIのデータクラスへ
受け渡しするプログラムを作っています。
DDXを使うのは分かるのですが、スクロールバーを移動した際のデータの
反映がうまくいきません。

UpdataDataを使ってデータの更新をしようと試みていますが、
起動してスクロールバーを移動させるとエラーが出て止まります。
何かいい方法は無いでしょうか?

381 名前:288 :2005/07/22(金) 11:02:49
秀丸やOpenJaneの設定のようなコントロールは
全く同じ実装にみえますが、
どんなコントロールを使ってるのでしょうか?

382 名前:デフォルトの名無しさん :2005/07/22(金) 11:58:54
OpenJaneはソース公開されてます

383 名前:288 :2005/07/22(金) 12:20:23
そっすか

384 名前:288 :2005/07/22(金) 16:12:32
そっすよ

385 名前:デフォルトの名無しさん :2005/07/22(金) 16:30:47
ど素人です
C#.NETで作ったDLLを、アンマネージコードから呼ぶにはどうしたらよいのでしょうか?

386 名前:デフォルトの名無しさん :2005/07/22(金) 17:15:57
>>385
ど素人から卒業できるよう勉強する。

387 名前:デフォルトの名無しさん :2005/07/22(金) 19:06:03
COM

388 名前:デフォルトの名無しさん :2005/07/22(金) 19:56:04
1 番目の引数を 'void (void *)' から 'void (__cdecl *)(void *)' に変換できません。
とは具体的にどのようにすればいいのでしょうか?

ちなみに関数は、virtual void CApp001::Func(void* p)です。

389 名前:デフォルトの名無しさん :2005/07/22(金) 20:39:21
static void CApp001::Func(void* p)
とか
void Func(void* p)

390 名前:デフォルトの名無しさん :2005/07/22(金) 22:25:19
>>387
たびたびすみません。度素人です。
.NETのDLLをCOM化するにはどうしたらよいのでしょうか。
COM化とはActiveXにするということですか?

391 名前:デフォルトの名無しさん :2005/07/22(金) 22:52:16
新規作成ウィザードにCOMってあるだろ

392 名前:デフォルトの名無しさん :2005/07/23(土) 01:37:38
VC++ .NET2003 MFCベースで開発していますが、
最初はそんな事はなかったのですが、
ブレークポイントを置いてデバッグ実行する際、
ブレークポイントが、下に数行勝手にずれてしまいます・・・orz
(ブレークポイントで止まります・・・が、自分が見たい変数の内容や条件文は
すでに実行された後で、デバッグが非常にやりずらい状況です)

解決する方法はありますでしょうか?

新規に別プロジェクトで作成するアプリケーションでは発生しません。
開発環境の問題と言うより、おかしくなるプロジェクトの問題なのでしょうか?

393 名前:デフォルトの名無しさん :2005/07/23(土) 01:40:20
Releaseビルドで最適化がかかっちゃってるとか。

394 名前:デフォルトの名無しさん :2005/07/23(土) 06:04:41
ブレークポイントを設定できないとこに設定しようとしてるだけじゃねぇの?

395 名前:デフォルトの名無しさん :2005/07/23(土) 08:26:21
>>392
[ビルド(B)] - [(プロジェクト)の消去(N)]

396 名前:デフォルトの名無しさん :2005/07/23(土) 09:40:30
>>388
そのCApp001::Funcを関数へのポインタの変数に代入しようとしているかほかの関数の引数に渡そうとしているだろ。

397 名前:デフォルトの名無しさん :2005/07/23(土) 13:45:11
ピクチャーボックスにグラフの目盛りを線描画(SelectClipRgnでクリップする)、
数値を文字描画するプログラムを作ったのですが(クリップしない)、
文字を消去する時、ピクチャーボックス外にはみ出た文字が消去されません。

これ以外の処理は何をすればよいでしょうか?
 CWnd* h = GetDlgItem(IDC_PICTURE);
 h->Invalidate(); //再描画すべき領域を設定

開発環境はVC++6.0です。

398 名前:デフォルトの名無しさん :2005/07/23(土) 13:58:38
>>397
描き直したい領域全てをInvalidate()しろ。
ぶっちゃけ、ダイアログ全体で試してみればよかろう。
#つーか、はみ出したところが判っているならそこだけInvalidate()すればいいのだが。

399 名前:397 :2005/07/23(土) 16:20:23
ダイアログ全体でやってみたら、Invalidateの行でエラー終了してしまいました。
//CWnd* h = GetDlgItem(IDC_PICTURE);
 CWnd* h = GetDlgItem(IDD_KYOKUSEN01_DIALOG);
 h->Invalidate(); //再描画すべき領域を設定

はみ出したところだけInvalidateするという方法も調べてもわかりません。
とりあえず、ピクチャーボックスの4方にこんな感じではみ出ている状態です。
 a
a□a
 a

400 名前:デフォルトの名無しさん :2005/07/23(土) 16:28:50
そもそもはみ出すような設計が悪い

401 名前:デフォルトの名無しさん :2005/07/23(土) 18:18:59
vc++とc++の違いってなんですか?

402 名前:デフォルトの名無しさん :2005/07/23(土) 18:21:15
統合開発環境かただの言語だけかの違い

403 名前:デフォルトの名無しさん :2005/07/23(土) 19:45:38
ワープロと日本語の違いってなんですか?
って言ってるのと同じだな。

404 名前:デフォルトの名無しさん :2005/07/23(土) 20:25:53
ちょっと違うな、日本語ワープロと日本語の違い、かな

405 名前:デフォルトの名無しさん :2005/07/23(土) 21:02:08
v(開発環境)c++(言語)
って感じか。

406 名前:デフォルトの名無しさん :2005/07/23(土) 21:13:26
Visual C++はWindows用のC++


407 名前:デフォルトの名無しさん :2005/07/23(土) 21:38:51
>>406
C++にWindows用も何もないだろ。
Microsoftが開発・販売している、プログラミング言語にC++を採用した、Windowsアプリ統合開発環境ソフトの商品名がVisualC++。

408 名前:デフォルトの名無しさん :2005/07/23(土) 22:09:32
オープンソースのものを見て、C++を覚えようと思っているんですが、
.cppと.hで書き分けるのにはどういう意味があるんでしょうか?
回答お願いします。

409 名前:デフォルトの名無しさん :2005/07/23(土) 22:16:55
とりあえず人に偉そうに説明できるほど理解してないから説明できんけど
C/C++スレの過去スレで同じ質問があったな

410 名前:408 :2005/07/23(土) 22:28:17
>>409
レスありがとうございます。
けれどdat落ちしていて見れませんでした・・・。



411 名前:デフォルトの名無しさん :2005/07/23(土) 22:50:46
C++勉強してるならC++スレへ
ここはウインドウズ用のアプリを開発する人のスレ

412 名前:392 :2005/07/24(日) 00:48:24
アドバイスありがとうございます。

>>393
確認してみましたが、デバッグ実行です。コードの最適化も「なし」になっています。

>>394
それはありません。自分で作成したクラスのコンストラクタや、メンバ関数内です。

>>395
はい。既に何度も行っています。オブジェクトファイルや .ncb ファイルの削除も効果がありませんでした。


他に確認すべき所はありますでしょうか?

413 名前:デフォルトの名無しさん :2005/07/24(日) 00:50:31
>>412
混合モードでみてみろ。

414 名前:392 :2005/07/24(日) 01:26:47
>>413

早速見てみました。

004FBD4E push 800h
004FBD53 push 0
004FBD55 mov eax,dword ptr [this]
004FBD58 add eax,78h
004FBD5B push eax
004FBD5C call @ILT+11765(_memset) (4D7DFAh)
004FBD61 add esp,0Ch
pThread = NULL;
004FBD64 push offset string "LogicCam" (6AAEE8h)
004FBD69 mov ecx,dword ptr [this]
004FBD6C call CWnd::SetWindowTextA (4DB874h)
#ifdef OFFLINE
pThreadOffLine = NULL;
004FBD71 mov eax,dword ptr [this]
004FBD74 mov dword ptr [eax+0A84h],0
#endif
004FBD7E mov eax,dword ptr [this]
004FBD81 mov dword ptr [eax+0A88h],0
memset(&PostResultStr[0], 0x00, sizeof(PostResultStr));
004FBD8B mov eax,dword ptr [this]
004FBD8E mov dword ptr [eax+0A8Ch],27Fh
this->SetWindowText("LogicCam");

のようになりました。

this->SetWindowText("LogicCam"); に該当すると思われるニーモニックが上にずれています。
ちょうど、ブレークポイントのズレ量と一致します。

415 名前:デフォルトの名無しさん :2005/07/24(日) 01:47:02
コンボボックスの項目が空の場合の高さってリソースエディタで
設定したデフォルトの高さになってしまうようですが、
項目が空の場合だけ高さを調整することってできませんか?
もしくは空の場合にドロップダウンできなくする方法はありませんか?
ただし、ドラッグ&ドロップに対応させたいので無効にしない方法で。
うまく説明できませんがお願いします。

416 名前:デフォルトの名無しさん :2005/07/24(日) 02:34:49
質問なんですが
関数呼出しごとに引数で渡されたポインタのメモリ確保領域をインクリメントする
ということは可能でしょうか?

417 名前:デフォルトの名無しさん :2005/07/24(日) 02:43:18
>>416

うーん。
void piyo(int* fuga){
}
みたいな関数で、fugaの内容をインクリメントするって事??

void piyo(int* fuga){
++(*fuga);
}

じゃダメ? これって、基本的な部分のC言語のお話ですよね。

418 名前:デフォルトの名無しさん :2005/07/24(日) 02:50:25
CをUNIXでEUC-JPで書いたんですけど
そのファイルをVisual C++で扱えないんですか?
Visual C++はEUC-JPはサポートしてませんか?


419 名前:デフォルトの名無しさん :2005/07/24(日) 02:59:42
>>418

うーん。文字コードだったらSHIFT-JISへ変換して使えば??

変換ツールなら、オンラインソフトでもいくつかあります。
ttp://www.vector.co.jp/vpack/filearea/win95/util/text/conv/code/index.html


もしくは、秀丸みたいにサポートしているテキストエディタで開いて
VC++画面へコピペするとか。



420 名前:デフォルトの名無しさん :2005/07/24(日) 08:23:23
>>418
少なくとも2003は開けるはずだぞ。
C++ソースコードエディター(エンコード付)
を使えば開ける。

421 名前:デフォルトの名無しさん :2005/07/24(日) 11:01:01
>>414
IDEはOFFLINEが定義されてないと思ってるけどコンパイラはOFFLINEが定義されていると思ってる。
OFFLINEの定義を確認してリビルドしてみる。

422 名前:392 :2005/07/24(日) 11:55:30
>>421

OFFLINEは、 stdafx.h で
#define OFFLINE
として、定義しています。試しにプロジェクトのプリプロセッサ定義の所で

WIN32;_WINDOWS;_DEBUG



WIN32;_WINDOWS;_DEBUG;OFFLINE

にしてみました。コンパイラは
warning C4005: 'OFFLINE' : マクロが再定義されました。
と、言ってきました。(予想通りですが)

ちなみに、OFFLINE を無効にしても、同様にブレークポイントのズレは
発生してしまいます。

IDEがOFFLINEが定義されてないと思ってる・・・とありますが、
これは、どのように確認するのでしょうか?

423 名前:デフォルトの名無しさん :2005/07/24(日) 13:34:59
>>422
キミが返答してる先に、「OFFLINEの定義を確認してリビルドしてみる」と書いてあるのにキミは何をやってるのかね?

424 名前:392 :2005/07/24(日) 14:15:30
>>423

すみません。何か間違っていますでしょうか?
「OFFLINEの定義を確認してリビルドしてみる」をやってみた結果、
422 のようになりました。
OFFLINEは、 stdafx.h で #define OFFLINE として、定義されている事を
確認した上でリビルドしてみましたが、状況に変化はありませんでした。

stdafx.h 内の定義とは別に、プロジェクトのプロジェクトの
プリプロセッサ定義を変更してみましたが、ブレークポイント停止位置が
ずれる現象に変化はありませんでした。
また、OFFLINE の定義を無効にしてリビルドしても、同様に状況は変わりません。


425 名前:デフォルトの名無しさん :2005/07/24(日) 14:38:22
>>424
メンバ変数をmemsetで2048byteほど0クリアしているところをコメントアウトしてみなさい。
それでも変わらないならそのプロジェクトをどこかのアップローダに丸ごとあげてみてください。
誰かヒマな人がみてくれるでしょう。

426 名前:誰か教えて!! :2005/07/24(日) 22:01:29
すみません・・・超初心者なんですが誰か教えてくれませんか???
ホンマにお願いします!!!!!!!!!!!


下記に示したマージソートの中の最終行にある関数、divide_from(),merge()を
実装すること。
(不足部分がある場合は適切に補うこと。細かい誤りがある場合は訂正せよ)
参考:マージソートの手順(下記を再起的に行なう)
1.リストを分割する。(クイックソートとは異なり、単に前半と後半に分ける)
2.分割したリストをそれぞれマージソートする。
3.ソートした二つのリストをマージする。

template < class Node_entry >
struct Node
{
Node_entry entry ;
Node < Node_entry > *next;
Node() { next == NULL; }
};

template < class List_entry >
class List
{
protected :
int count ;
Node < List_entry > *head ;
};



427 名前:デフォルトの名無しさん :2005/07/24(日) 22:04:23
>>426
ぼるじょあがC/C++の宿題を片づけますYO! 48代目
http://pc8.2ch.net/test/read.cgi/tech/1121471445/l50

428 名前:誰か教えて!!(続き) :2005/07/24(日) 22:04:39
template < class Record >
class Sortable_list : public List < Record >
{
public :
void merge_sort();
private :
void recursive_merge_sort( Node < Record > * & );
Node < Record > * divide_from( Node < Record > * );
Node < Record > * maege( Node < Record > *, Node < Record > * );
};

template < class Record >
void Sortable_list < Record > :: merge_sort()
{
recursive_merge_sort( head ) ;
}

template < class Record >
void Sortable_list < Record > :: recursive_merge_sort( Node < Record > * &head )
{
if ( head != NULL && head -> next != NULL ) {
Node < Record > * second_harf = divide_from( head );
recursive_merge_sort( head );
recursive_merge_sort( second_half ) ;
head = merge ( head, second_half ) ;
}
}


お願いしますm(__)m

429 名前:デフォルトの名無しさん :2005/07/24(日) 22:16:17
>>428
君も初心者を超越したのなら聞き分けたまえ。

430 名前:デフォルトの名無しさん :2005/07/25(月) 13:59:51
まだか、早くしろ!!

431 名前:デフォルトの名無しさん :2005/07/25(月) 14:49:34
VC.NET 2003 にて
右クリック→宣言へ移動
に相当するショートカットってありますか?
VB6はShift + F2で行けたので、重宝してたのですが・・・

432 名前:デフォルトの名無しさん :2005/07/25(月) 14:53:55
>>431
設定でいろいろ変えられるが、デフォルトはCtrl+F12 かな。
ツール-オプション-環境-キーボードで検索できる

433 名前:デフォルトの名無しさん :2005/07/25(月) 15:00:50
そのままF12じゃねぇか?
いや、.NETは知らんが、VC6はF12なもんでよ

434 名前:デフォルトの名無しさん :2005/07/25(月) 15:03:15
こにちあ。
static TCHAR strFile[MAX_PATH];
ofn.lpstrFile = strFile;
を宣言しといて、
GetOpenFileName(&ofn) で strFile にファイルパスを格納。

その後、 VCMP3 の vbmp3_open(const char *, InputInfo *) で
vbmp3_open(strFile, &audioData);
として strFile を再生したいんですが、コンパイラに型が一致しないと蹴られます。
詳しい方おせえてくらさい。

435 名前:431 :2005/07/25(月) 15:06:09
>>432-433
F12で出来ました!助かりました。
ありがとうございます。

436 名前:デフォルトの名無しさん :2005/07/25(月) 15:11:22
>>434
そりゃそうだ。
strFileはTCHAR[MAX_PATH]型、配列だからTCHAR *やconst TCHAR *には変換できる。
しかしvbmp3_openの引数はconst char *、どれとも一致していないじゃないか。

ATL::CT2AやCStringを使って変換すればよし。

437 名前:434 :2005/07/25(月) 15:19:30
どうも。

VC++ 2005 Express Edition を使っとりまして、 ATL 系は使えないという…。
CString についても知識がありません。

Win32 API で変換できません?

438 名前:デフォルトの名無しさん :2005/07/25(月) 15:24:31
サンプルにVCのプロジェクトが入ってるじゃん
そのままビルドすれば動くだろ
動いたやつを真似するだけだ

439 名前:デフォルトの名無しさん :2005/07/25(月) 15:32:55
>>437
WTLにCStringあったと思うけど
Unicodeでコンパイルしてる?



440 名前:デフォルトの名無しさん :2005/07/25(月) 15:46:07
vbmp3_open((LPCTSTR)strFile, &audioData);

これでコンパイル通らんか?

441 名前:434 :2005/07/25(月) 15:48:32
うーん、分からん(笑)
WTL とは何でしょーか...?(^^;;

CString でいけるみたいなんで、そっち覚えます。
資料読んでますけど、今ひとつ…。

どなたか簡単なソースを示してもらえません?

442 名前:434 :2005/07/25(月) 15:50:44
>>440
弾かれました…。

443 名前:デフォルトの名無しさん :2005/07/25(月) 15:52:37
キャストしなくてもこいうコードでコンパイル通るな
型は合ってるんじゃないか?
static TCHAR strFile[MAX_PATH];
const char * hoge=strFile;


444 名前:デフォルトの名無しさん :2005/07/25(月) 15:55:00
>>441
vbmp3_open(CStringT<char>(strFile), &audioData);

>>440>>443
だからUnicodeにしたら駄目なんだって。

445 名前:434 :2005/07/25(月) 16:02:05
初めから怪しいと思っとりましたけど、
VC++ 2005 Express Edition では、ATL に加えて MFC もないようです。

ちょっと知識がないのであれですが、
MFC が死んでると CString も使えない?

446 名前:デフォルトの名無しさん :2005/07/25(月) 16:08:19
>>445
CStringはMFCとATLの共用。どっちかがあればいい。
で、VC2005にはどっちもないと。

447 名前:434 :2005/07/25(月) 16:14:33
そりゃ困ったな'`'`'`'`'`

448 名前:デフォルトの名無しさん :2005/07/25(月) 16:41:10
WideCharToMultiByte使えばえーやん

449 名前:デフォルトの名無しさん :2005/07/25(月) 16:56:26
スレッドセーフじゃないけど、こんな感じでやればconst TCHAR*を受け付ける。
inline const char *ToCharStr(const char *p)
  return p;
}

const char *ToCharStr(const wchar_t *p)
{
  static char buf[1024];
  WideCharToMulchByte();
  return buf;
}

450 名前:デフォルトの名無しさん :2005/07/25(月) 17:10:00
簡単なことをわざわざ難しくやってるとしか思えんな

451 名前:381 :2005/07/25(月) 17:10:30
>>381ですが、JaneのソースはDelphiのようなのです。
VCにて秀丸のような設定ができるコントロールはどうやって作るのでしょうか。

452 名前:デフォルトの名無しさん :2005/07/25(月) 17:20:47
>>451
普通のツリーコントロール、チェックボックス、ボタンとかですね
特別なコントロールは使ってないはず

453 名前:381 :2005/07/25(月) 17:26:00
これがなんかズバリっぽいので、ちょっとやってみます。
http://www.codeguru.com/Cpp/controls/treeview/misc-advanced/article.php/c727/
>>452回答ありがとうございます。

454 名前:434 :2005/07/25(月) 18:36:43
戻って参りました(^^;;;

char *szName;
szName = (char*)malloc(MAX_PATH);
WideCharToMultiByte(CP_ACP, 0, strFile, -1, szName, 0, NULL, NULL);
MessageBox(NULL, (LPCTSTR)szName, NULL, MB_OK);

としましたが、無意味な文字列が szName に入ります…。
んと…、これ↑は一体何をやってるんでしょうか?
マルチバイト文字への変換が char * 型と関係あるのか分かってません。

455 名前:381 :2005/07/25(月) 18:55:38
>>453
これはさっぱり使えませんでした。

一般的にはツリー型ダイアログというそうですが、サンプルとか
全然無いのに、みなさん実装してますね。

456 名前:381 :2005/07/25(月) 19:18:44
ここにもっといいのがありました。
使ってみます。
http://www.codeproject.com/property/treepropsheet.asp

457 名前:デフォルトの名無しさん :2005/07/25(月) 20:51:38
>>454
MSDNを100回嫁

458 名前:デフォルトの名無しさん :2005/07/25(月) 21:27:07
int num[][]; ---(1)
num=new int[5][5]; ---(2)

(1)(2)は何を行う命令かをおしえてください。


for(int i=0;i<5;i++){
for(int j=0;j<5;j++){
System.out.print(num[i][j]+"");
}
System.out.println("");

何を行う命令か教えてください。お願いします。


459 名前:デフォルトの名無しさん :2005/07/25(月) 21:29:21
>>458
Visual C++と関係ないだろ。

460 名前:デフォルトの名無しさん :2005/07/25(月) 21:40:54
>>459
まぁまぁ、どこに書いていいか分からないだけかもしれないから
そんなに角立てないで。
(1) int num[][] を行う命令。
(2) num=new int[5][5] を行う命令。

461 名前:デフォルトの名無しさん :2005/07/25(月) 21:58:01
>>458
C宿題にも来てただろ

462 名前:デフォルトの名無しさん :2005/07/25(月) 22:09:17
夏ですかね?

463 名前:デフォルトの名無しさん :2005/07/25(月) 22:35:10
マルチが急増してきたね。
そんなに難しくないんだから自分で考えればいいのに。

464 名前:434 :2005/07/25(月) 23:13:31
>>457の仰るとおり MSDN を読み直したら簡単にできました(汗
WideCharToMultiByte の使い方が分かってなかった...orz
---
char szName[MAX_PATH];
DWORD dwLen = WideCharToMultiByte(CP_ACP, 0, strFile, -1, NULL, 0, NULL, NULL);
WideCharToMultiByte(CP_ACP, 0, strFile, -1, szName, dwLen, NULL, NULL);
szName[dwLen] = '\0';
vbmp3_open(szName, &audioData);
---

皆さん助かりました。どもです^^

465 名前:デフォルトの名無しさん :2005/07/25(月) 23:15:19
そうすると今度はUNICODEの定義をなくしたときに喚く予感。

466 名前:434 :2005/07/25(月) 23:21:58
>>465
「UNICODEの定義」ってのは、どういうことなんでしょ?
自分がどの文字コードでコンパイルしてるかはどうすれば分かるんでしょうか。

適当なテキストエディタでソース開いて→UNICODEで保存。
あとは普通にVC++で開いてコンパイル。これでおk?

467 名前:デフォルトの名無しさん :2005/07/25(月) 23:27:08
>>466
そうじゃなくてTCHARは#define UNICODE(あるいはそれに相当するコンパイラオプション)が書いてあるかどうかで
wchar_tとcharのどっちからtypedefされるのかが切り替わるような仕組みになっている。

で、このUNICODEの定義を消したら……、ということ。

468 名前:デフォルトの名無しさん :2005/07/25(月) 23:29:49
UNICODEよりもDBCSが好きさ

469 名前:434 :2005/07/25(月) 23:34:25
あーなるなる。そゆことか。

今の環境では UNICODE が define されてますけども、
これは何もいじらなければ、ずっとこのままですよね?
特にいじったりする気はないんで問題なさげに見えますが…。

470 名前:434 :2005/07/25(月) 23:44:15
static TCHAR strFile[MAX_PATH];

static LPTSTR strFile;
として直しました。
これで良くなった?

471 名前:デフォルトの名無しさん :2005/07/25(月) 23:51:16
( ゚д゚)ポカーン

472 名前:デフォルトの名無しさん :2005/07/26(火) 04:20:13
インテリセンスで呼び出せるグローバル関数群の定義はどのようにするのがお勧めでしょうか?
とりあえず思いつくのは

1.グローバル関数をnamespaceでくくる
namespace Hoge {
 void Mage();
 void Moge();
};
Hoge::Mage();
Hoge::Moge();
たいていクラスで実装してるんであまり使えないかな・・・。

2.適当なグローバルなインタフェースポインタを使う
extern Hoge* g_pHoge;
g_pHoge->Mage();
g_pHoge->Moge();
ポインタ生アクセス嫌なら
Hoge* GetHoge(){ return g_pHoge; }
GetHoge()->Mage();
とかかな。

3.シングルトン使う
Hoge::getInstance()->Mage();
Hoge::getInstance()->Moge();
ちょっとタイプ量が長くなりそ・・・。

なんかこうすればお勧めとか、
アレはこういう欠点が、コレはこういう長所がとかあればご教授ください。

473 名前:デフォルトの名無しさん :2005/07/26(火) 07:51:00
try-catch 文を書いていて、エラーが出たなと思ったら、
// xstring internal header (from <string>)
#if _MSC_VER > 1000
#pragma once
#endif
....
って続くxstringファイルが表示されました。
このあと、どんなスケルトンプログラムをつくってもエラーが多数生じ、
このファイルが表示されるようになってしまったのですが、解決法はないでしょうか。
VC++6.0sp6ですが、再インストールしかないでしょうか?

474 名前:デフォルトの名無しさん :2005/07/26(火) 08:29:50
>>472
俺だったら1にする。
あるいは普通に作って、「::(最初の数文字)」と打ったり、「(最初の数文字)Ctrl+Space」と打ったりする。

475 名前:デフォルトの名無しさん :2005/07/26(火) 09:21:04
>>472
一番やらなさそうなのは2

476 名前:デフォルトの名無しさん :2005/07/26(火) 10:25:42
インテリセンスに頼る段階でカス。

477 名前:デフォルトの名無しさん :2005/07/26(火) 11:23:22
インテリセンスなんて無い方がいいなんて言わないよ絶対

478 名前:デフォルトの名無しさん :2005/07/26(火) 12:07:57
あるフォルダの中にあるソース・ヘッダに書いてある変数名や関数名を
一括で置換する場合どうやってます?
編集→ファイルから検索で該当ファイルをリストアップし
一つずつ開いて置換してるんですけど、ファイルが多いと大変です。
いい方法ないでしょうか? VC++6.0です。

479 名前:デフォルトの名無しさん :2005/07/26(火) 12:23:00
>>478
find あるフォルダ -name "*.[ch]*" -type f|xargs grep -l '変数名'|xargs vi
viが起動したら
:%s/変数名/新変数名/gc

480 名前:デフォルトの名無しさん :2005/07/26(火) 12:26:59
思いっきりスレ違いのアホ登場

481 名前:デフォルトの名無しさん :2005/07/26(火) 13:55:00
リナ厨ってどこでも沸いて出てviを押し付けてくる。

482 名前:デフォルトの名無しさん :2005/07/26(火) 14:01:08
VisualStudioとCygwin連携させてますが何か。

483 名前:デフォルトの名無しさん :2005/07/26(火) 14:02:33
まぁ、ある程度まともなエディタなら大抵一括置換くらいできると思うが。

484 名前:デフォルトの名無しさん :2005/07/28(木) 00:58:14
おれは「Grep and Replace」使ってる
単語置換ができるオプションがあるが、動作がまともじゃないとおもう。

485 名前:デフォルトの名無しさん :2005/07/28(木) 18:01:20
VC++2005ベータ版を入れてみたんですが

include ファイルを開けません。'windows.h': No such file or directory

なにこれなんかパスが設定されて無いの…?windows.hってどこにありますか?

486 名前:デフォルトの名無しさん :2005/07/28(木) 18:18:53
>>485
F3で検索できるだろ。

487 名前:デフォルトの名無しさん :2005/07/28(木) 18:25:36
Windowsキー+Fでディスク内検索できるだろ

488 名前:デフォルトの名無しさん :2005/07/28(木) 18:25:43
>>486
記憶から完璧に消えてました。ありがとう

489 名前:デフォルトの名無しさん :2005/07/28(木) 18:26:00
VC++2005 Express Edition b2 だったら、
PlatformSDKが含まれてなかったような気がしないでもない。
-> 別途DLして自前でインスコ

VS2005b2なら同時にインスコされるけど。

490 名前:デフォルトの名無しさん :2005/07/28(木) 18:27:19
>>487
>>489
さんくす

491 名前:デフォルトの名無しさん :2005/07/28(木) 18:45:59
File Name: File Size
PSDK-amd64.exe
1319 KB

PSDK-ia64.exe
1418 KB

PSDK-x86.exe
1294 KB


すいませんどれですか?

492 名前:デフォルトの名無しさん :2005/07/28(木) 18:50:54
>>491
環境に合わせろとしか言いようがないなぁ。
上:Athlonの64bit版ならこれ
中:Pen4等の64bit版ならこれ
下:従来の32bitCPUならこれ

493 名前:デフォルトの名無しさん :2005/07/28(木) 18:53:13
>>492
すみませんありがとうございます。

494 名前:デフォルトの名無しさん :2005/07/28(木) 18:59:07
>>492
>中:Pen4等の64bit版ならこれ
嘘はいかんよ。

495 名前:デフォルトの名無しさん :2005/07/28(木) 19:08:28
嘘なんですか?いや一番下だから問題ないですよね。

496 名前:デフォルトの名無しさん :2005/07/28(木) 19:18:59
>>494
スマン。何も考えずに書いた。
Ita用か

497 名前:デフォルトの名無しさん :2005/07/28(木) 19:52:38
度々すいません。

手順 2. Microsoft Platform SDK をインストールします。
Platform SDK は、ウェブ上の Platform SDK 更新サイトからインストールすることができます。サイトにアクセスしたら、[Download] をクリックし、リストから Windows SDK、続いて Core SDK を忘れずに選択してください。

手順 3. [オプション] ダイアログ ボックスの [プロジェクトとソリューション] セクションで [Visual C++ フォルダ] を更新します。
このセクションでは、適切なサブセクションにパスを追加します:

Executable ファイル - 「C:\Program Files\Microsoft SDK\Bin」
Include ファイル - 「C:\Program Files\Microsoft SDK\include」
Library ファイル - 「C:\Program Files\Microsoft SDK\lib」

一応この手順3にたどり着いたのですが意味がわかりません。というか手順2の時点で間違っていたのでしょうか?

498 名前:デフォルトの名無しさん :2005/07/28(木) 19:56:32
育てられねーだろ、よく考えて出産しろや

499 名前:デフォルトの名無しさん :2005/07/28(木) 19:57:46
スマン誤爆

500 名前:デフォルトの名無しさん :2005/07/28(木) 20:56:50
>>497
インストールしたSDKの方にパスを通すということだ。


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