★初心者にVisual C++ ..
[2ch|▼Menu]
331:デフォルトの名無しさん
08/12/11 11:42:17
>>330
ここなんかどうだろ?
URLリンク(www.ee.fukui-nct.ac.jp)

332:デフォルトの名無しさん
08/12/11 11:43:59
>>326
2つともよく分からないまま検索したらMOVEWinfowというのもあるみたいで、if関数を用いて頻繁に座標をずらし振動させることにしました。
こんなんでいいのかな??

マルチすいません。ありがとうございます。

333:M
08/12/11 11:48:46
>>331
ありがとうございます。
このプログラムをMFCのプログラムにどのように組み込めばいいのでしょうか?
あほな質問ですみません。。

334:デフォルトの名無しさん
08/12/11 12:55:47
>>333
WM_COMMANDメッセージでコマンドを受け取ったら、main関数の中身を実行すれば?

335:デフォルトの名無しさん
08/12/11 14:11:02
ファイルの読み書きとほとんど同じだな
やってる内容が理解できれば使えるだろ

336:M
08/12/11 14:27:45
>>334
それでやってみようと思います。ありがとうございました。

337:デフォルトの名無しさん
08/12/11 16:38:53
VC++2008使ってます

LogItemという独自クラスを作り、

 LogItem item;
 ListBox.add(item);

といったことしてます(単なるリストボックスへの追記)。
表示を変更する際に、

 ListBox.add(〜.format("{1}・・・",item.name,・・・))

等とすると、今度は削除時にいろいろ面倒です。
表示を適切に変更できるものの、削除時は、
ListBox.remove(item)でいけるような
(追記時の表示に依存しないような)
簡単な方法はご存じありませんか?
参考になりそうなサイトやキーワードを
教えていただければ幸いです。

338:デフォルトの名無しさん
08/12/11 16:41:26
16ピンのPIC16F819のPICを利用してサーボモータや光電センサー、ディスプレイを制御したいのですがBASICのプログラムが分かりません 

サーボモータは Futaba S3002 を使用
・計7個のサーボモータ使用
・ボタンを押して入力したものをサーボモータに出力〔右に90度⇒左に90度〕

光電センサーは鏡とセンサーの間を通過するのを検出するもので omron E3R-R2E4 を使用
・コインを検出してカウントする
・6個使用

ディスプレイは数字と文字の両方を表示したいです


まとめると、コインを光電センサで検出してその検出したコインをディスプレイに表示する。たまボタンを押すとサーボモータが回転
するものを作りたいです。
この動作をBASICのブログラムで制御させるには、どのようなプログラムにすればいいですか

339:デフォルトの名無しさん
08/12/11 16:43:58
>>338
ここはBASICのスレでもPICのスレでもない。

340:デフォルトの名無しさん
08/12/11 19:13:55
337です。
自己解決しました。単なる調査不足&ありがちな混乱、でした

※ToStringをオーバーライドすればいいんですね・・・。

ってか。

質問の大半も意味不明でした。正確には「リストボックスにオブジェクトを
そのまま追加した時に、表示のみを変更できるようにしたい。」とすれば
よかったんでしょうね・・。

お騒がせいたしました。ほかに困っている人の助けになれば幸いです^^;


341:デフォルトの名無しさん
08/12/11 21:14:25
Visual C++ 2008 Express Editionについての質問です。

Windowsフォームアプリケーションプロジェクトを作成し、
フォームにボタンとpictureBoxを配置しました。
ボタンを押すと、pictureBoxのプロパティで設定した画像の画素値を取得したり
描きこんだりしたいと思い、画像にアクセスする手段を模索することにしました。

どうもpictureBoxクラスから直接画像にアクセスすることはできず、
いったんBitmapクラスに移さないといけないことが分かりました。
これでSetPixel関数を使って、画素値を書き換えることができるようになったのですが、
これをまたpictureBoxに戻して表示することができません。

コードは以下の通りです。(ボタンを押したときの処理関数)

Bitmap bmp = pictureBox1->Image;

bmp.SetPixel( 10, 10, Color::Red );
pictureBox1->Image = bmp; ← これで型が合わないというようなエラーが出る

どのようにすればpictureBoxの画像を加工し、それを表示することができるのでしょうか?

342:デフォルトの名無しさん
08/12/12 16:23:46
pictureBox1->Image = Image::FromHbitmap(bmp.GetHbitmap());とかでどう?

343:デフォルトの名無しさん
08/12/12 17:44:23
すいません。C++でint型の変数ををchar型の配列にキャストして入れる方法ってどうやるのですか?
int iAnswer = 0;
int i = 0;
char ChAnswer[256];

ChAnswer = (char)i;

とやっているのですが、変換できないといわれます。

344:デフォルトの名無しさん
08/12/12 17:46:28
ChAnswer[0] = (char)i; じゃないの?

345:デフォルトの名無しさん
08/12/12 17:51:27
>>344
それだと、例えば123を変換した場合、1だけ変換ということになりそうな気がするのですが・・・違いますか?

346:デフォルトの名無しさん
08/12/12 18:00:16
>>345
何でそう思うのか、、もっと基礎からやり直すか
具体的にやりたいこと書いて手取り足取り教わるしかないと思うよ。

347:デフォルトの名無しさん
08/12/12 18:02:26
>>346
すいません。よく考えてたら頭の中にあったものが2次元配列でした・・・それにしても変な考えですけど。
逝ってきます。

348:デフォルトの名無しさん
08/12/13 00:30:18
エスパー回答で言わせてもらえばsprintf()使えばいいと思うよ

349:341
08/12/13 07:31:03
>>342
それでできました!
ありがとうございました!!

しかし、.NET環境でもWin32apiレベルのビットマップハンドルを意識した記述をしないと
いけないのはどうなのかと思いました・・・
C++ Builderはもっとシンプルになりますし・・・

350:デフォルトの名無しさん
08/12/13 09:01:26
>>341
たぶんこうすればいける。
Bitmap^ bmp = gcnew Bitmap(pictureBox1->Image);
bmp->SetPixel(10, 10, Color::Red);
pictureBox1->Image = bmp;

Imageプロパティの型はImageへのハンドル。
にもかかわらず、341ではコード上Bitmapそのものを渡すようになっている。
本来、BitmapはImageの派生なので、Bitmapのハンドルなら渡せるというわけ。

351:341
08/12/14 00:49:49
>>350
.NETでのハンドルという概念があるんですね。
勉強になりました。
ありがとうございました。

352:デフォルトの名無しさん
08/12/14 03:25:51
VC2008EEで↓がコンパイルできるようにする
やり方を教えてください。

#include <windows.h>

int WINAPI WinMain(HINSTANCE hInst, HINSTANCE hPrevInst, LPSTR pCmdLine, int showCmd)
{
return 0;
}


353:デフォルトの名無しさん
08/12/14 03:28:02
エラーは↓です

1>.\a4.cpp(4) : error C2146: 構文エラー : ';' が、識別子 'WinMain' の前に必要です。
1>.\a4.cpp(4) : error C2065: 'HINSTANCE' : 定義されていない識別子です。
1>.\a4.cpp(4) : error C2146: 構文エラー : ')' が、識別子 'hInst' の前に必要です。
1>.\a4.cpp(4) : error C4430: 型指定子がありません - int と仮定しました。メモ: C++ は int を既定値としてサポートしていません
1>.\a4.cpp(4) : error C2059: 構文エラー : ')'
1>.\a4.cpp(5) : error C2143: 構文エラー : ';' が '{' の前にありません。
1>.\a4.cpp(5) : error C2447: '{' : 対応する関数ヘッダーがありません (旧形式の仮引数リスト?)


354:デフォルトの名無しさん
08/12/14 03:36:58
>>353
WINAPIが定義されてないっぽい感じのエラーメッセージだけど、
windows.hはインクルードされてるしなぁ。

355:デフォルトの名無しさん
08/12/14 03:49:57
>>352
普通にコンパイル通ったよ
プロジェクトの作成の仕方じゃないの?

ファイル→新規作成→プロジェクトの種類→Win32→Win32プロジェクト

356:デフォルトの名無しさん
08/12/14 12:25:43
Vc++2008でプロジェクトを開いた時に、
▲ InteliSenseデータベースファイル C\......\Visual Studio\Projects|\ソリューションフォルダ\ソリューション.ncb を書き込み用に開けなかったため、
InteliSense 情報は VC++プロジェクトにりようできません。
ソリューションディレクトリが読み取り専用である場合、他の機能にも影響を及ぼします。

ってダイアログ出て、関数の引数とかが表示されなくなってしまいました。
フォルダの属性変えてみようとしたんだけど読み取り属性外せなくなったんですが、対処方ありますか?
他のソリューションでは問題ありません。ファイル壊れた?

357:デフォルトの名無しさん
08/12/14 17:24:46
メッセージの通りだろ

358:デフォルトの名無しさん
08/12/14 18:02:51
ncb ファイル消せばいい。

359:デフォルトの名無しさん
08/12/15 09:28:10
ボタンを二つ作ってサブクラス化しています。
DefStaticProcA = (WNDPROC)GetWindowLong(hBTNa, GWL_WNDPROC);
SetWindowLong(hBTNa, GWL_WNDPROC, (LONG)TestProc);

DefStaticProcB = (WNDPROC)GetWindowLong(hBTNb, GWL_WNDPROC);
SetWindowLong(hBTNb, GWL_WNDPROC, (LONG)TestProc);

if(DefStaticProcA == DefStaticProcB)
  MessageBox(NULL, _T("同じ"), _T("button"), MB_OK);

ボタンのプロシージャはみんな同じアドレスに成るのでしょうか?
プロシージャを一つにまとめたいです。


360:デフォルトの名無しさん
08/12/15 10:48:05
HWND HBTNv6[1000];
WNDPROC DefStaticProcBTN[1000];

void MakeButtonV6(HWND hWnd){
int i;
for(i = 0; i < 1000; i++){
HBTNv6[i] = CreateWindow(_T("BUTTON"), _T("A"), WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON, 30, 30, 20, 20, hWnd, NULL, hInst, NULL);
if(HBTNv6[i] == INVALID_HANDLE_VALUE){
MessageBox(NULL, _T("Error"), _T("CreateWindow"), MB_OK);
break;
}
DefStaticProcBTN[i] = (WNDPROC)GetWindowLong(HBTNv6[i], GWL_WNDPROC);
if(DefStaticProcBTN[i] == 0){
MessageBox(NULL, _T("Error"), _T("GetWindowLong"), MB_OK);
break;
}
if(i > 0){
if(DefStaticProcBTN[i] != DefStaticProcBTN[i -1]){
MessageBox(NULL, _T("違う"), _T("ぼ"), MB_OK);
break;
}
}
}
MessageBox(NULL, _T("終了"), _T("m"), MB_OK);
}

保障されているのかな〜。誰か教えて。

361:デフォルトの名無しさん
08/12/15 10:52:55
何がしりたいのかわからん。
登録したウィンドウクラスにプロシージャも入ってるだろう。
でも同じプロセス内で差し替えできるから作った時期で違うようにはできる。

362:360
08/12/15 11:38:13
ごめん、無かったことにして。

363:デフォルトの名無しさん
08/12/15 17:35:59
>>359
さらに別のだれかがサブクラス化しているなどといったこともあるから、
一般に同じと仮定することは危険。

ウィンドウハンドルと元のウィンドウプロシージャのどれとどれが対応するのか
分かるように保存しておけば、それぞれのアドレスが異なっていても
同じウィンドウプロシージャでサブクラス化できるはずだ。

364:デフォルトの名無しさん
08/12/15 22:35:59
3×n行のCSVファイルを読み込んで内部テーブル(?)にして、
後からそれを1行ずつ抽出してその項目を使って別の処理をするように今あるプログラムを書き換えたい。

VC++2005、WindowsXPで作業してます。
かなりの初心者ですがどうぞよろしくお願いします。

365:デフォルトの名無しさん
08/12/15 22:41:01
宿題なら宿題スレで一発ですよ。
そうでないなら、どこは分かるけどどこが分からないというのをもっとはっきりさせてください。

366:デフォルトの名無しさん
08/12/15 22:53:16
宿題じゃないんす・・・仕事なんですw
CArrayとか使ってみたんだけど、なかなかうまくいかず・・・
あと、内部テーブルを1行ずつ読み込んでループさせる方法がよくわからん。
レベル低い質問で申し訳ないです

367:デフォルトの名無しさん
08/12/16 00:18:30
誰か来てくれると信じて書いてみるw

INT CLogFileConditions::LoadAllSearchInfo()
{
CCSVFile file;
CFileException fError;
CString sSearchListFile;

m_iResID = 0;
m_iConditionStatus = 0;
sSearchListFile = g_CurrentDir;
sSearchListFile += LOG_SEARCH_LIST_FILE;

if( file.Open( sSearchListFile, CFile::modeRead, &fError) )
{
CString strLogKind, strServerName, intSearchLength, sVal ;

m_LogKindToPath.RemoveAll();

while( file.ReadString() )
{
if( file.GetFieldCount()>=3 )
{
strLogKind = file.GetField(0);
strServerName = file.GetField(1);
intSearchLength = file.GetField(2);
}


368:つづき
08/12/16 00:20:27
}
file.Close();

if( !m_LogSearchCondition.GetCount() )
{
m_iResID = IDS_ERR401;
m_iConditionStatus = 401;//ErrorIDNumber
}
}
else {
m_iConditionStatus = -1;
MsgBoxBySystemErrID( m_hwndParent,
fError.m_lOsError,fError.m_strFileName );
}
return m_iConditionStatus;
}

みたいな感じで処理条件を読み込む処理をまず作りたい。
ひとつめのレスの最後の方の処理をCSVを読み込む二次元配列にしたいんだ。
どうぞお力をお貸しください。。

369:デフォルトの名無しさん
08/12/16 00:38:08
普通に配列をnewして入れてけばいいじゃんか

370:デフォルトの名無しさん
08/12/16 00:46:41
ありがとう。
でもほんと全然わかんないんだw
もうちょっと詳しく書いてくれると助かります。
ごめんな

371:デフォルトの名無しさん
08/12/16 00:53:34
コレクションクラスが使えるようになったほうがいいと思うけどねぇ・・
まずどこに入れたいのか、入れ物を定義しなさいよ。

372:デフォルトの名無しさん
08/12/16 01:04:47
すまんコレクションクラスがわからん・・・

まあ定義もよくわかんないんだけどw
ネットで見ようみまねで

public:
CArray<double, double> GetLogSearchCondition(){ return &m_LogSearchCondition; }
  CDoubleArray& operator=( CDoubleArray& src )
  {
    for( int n = 0; n < src.GetSize(); n++ ) {
      this->Add( src[n] );
     }
     return *this;
   }
};

こんなん書いたらエラーが270個くらい出ました。。

373:デフォルトの名無しさん
08/12/16 01:14:20
二次元配列にしたいって書いてるけど3つのフィールドは文字列文字列整数なんだよね?
とりあえずその3つが入るクラスを定義して、それの配列なりArrayなりつくって入れてけばいい。
長さわからんなら、数える手段を考えるか随時伸びるようにすればいい。

374:デフォルトの名無しさん
08/12/16 01:19:27
そう、そうなんだけどそのやり方がわかんないんです。
ほんとすいません。。

375:デフォルトの名無しさん
08/12/16 01:30:52
クラスの定義ってこういう感じ?

public:
void SetLogKindForSearch( CString sLogKindForSearch );
void SetServerNamesForSearch( CString sServerNamesForSearch );
int SetSerachLength( INT sSearchLength );

だが、配列にしていく方法はさっぱりだぜ・・・

376:デフォルトの名無しさん
08/12/16 02:56:10
CArrayを先頭につければいいのかな?
だかフィールド3つで下に続いていくようにする方法がわからぬ・・・

377:デフォルトの名無しさん
08/12/16 04:03:43
CMapStringObからCArrayに引数を変換できないっていうエラーが出るんだが、
意味が全くわからん・・・

誰も起きてないかこんな時間・・・

378:デフォルトの名無しさん
08/12/16 05:59:41
言語の文法をろくに知らずにプログラムを書こうなんて、普通に不可能。
まず入門書を一通り読め。

379:デフォルトの名無しさん
08/12/16 07:01:34
そんな時間がないのでご助力をお願いしているのです。。

380:デフォルトの名無しさん
08/12/16 08:54:27
>>363
d。
ボタンのプロシージャはどれでも良いからボタンに返せばいいんですね。


381:デフォルトの名無しさん
08/12/16 11:50:08
>>379
みんな冷たいよな。

まずはここを見て書き方を勉強する。
URLリンク(2hyo.com)

382:デフォルトの名無しさん
08/12/16 14:18:46
仕事の話を2chで聞くとか信じられんわ……。

383:デフォルトの名無しさん
08/12/16 15:04:12
文字をドラッグで選択するとその部分が反転するプログラムを作りたいのですが、
マウスのクリックで範囲のポジションを取得して選択範囲は取得できたのですが、
反転をどうやればいいのかがわかりません。アドバイスお願いします。

384:デフォルトの名無しさん
08/12/16 15:05:18
まあ自分でコード書いて出してくれてるから対応はしやすいんだが、
出してくるコードが頓珍漢すぎてどこから説明したもんかわからんのだよ。
自分で理解してる範囲で書いてくれればいいんだが、適当にあちこちから断片集めてみました
というコードじゃ直しようもない・・・
仕様書いて0から起こしたほうがまだましだな・・

385:デフォルトの名無しさん
08/12/16 15:08:07
>>383
反転する前の表示はどうやってんのさ。
TextColorとBackColor入れ替えて書いてみるとか、
システムの標準の色から持ってきてそれで書いてみるとか。

386:デフォルトの名無しさん
08/12/16 15:16:20
>>385
元描画がいじれないとして、上から被せるような、CWndまでおおげさじゃなくてもいいんですが、
レイヤー的なもので半透明領域をかぶせられる関数は用意されていないでしょうか?

387:デフォルトの名無しさん
08/12/16 15:27:11
>>386
そんなのないと思うけど、、、再描画とかどうすんのさ。
いんちきだが、PatBlt()でDSTINVERTで反転とかどうよ。

388:デフォルトの名無しさん
08/12/16 16:48:52
なるどほ、元が動くと四角が付いてこないので被せるのは厳しいですね。
元をハッキングする方向にきりかえようとおもいます。ありがとうございました。

389:デフォルトの名無しさん
08/12/16 17:51:24
C++でint型変数の値をchar型に変換したいのですが、普通にキャストしてもエラーが出ます
どうしたらいいのでしょう?

390:デフォルトの名無しさん
08/12/16 17:55:03
char配列の文字列にしたいと言っているのであれば、
ostringstreamか何かでstringにしてc_str()で取り出すとか、
あるいはsprintfなど。

391:デフォルトの名無しさん
08/12/16 18:03:23
ありがとうございます。試してみます

392:デフォルトの名無しさん
08/12/16 20:00:10
林晴比古氏のVisualC++のビギナー編を買ったのですが、自分の開発環境がexpress editionなのでMFCがありません。
サンプルがほぼMFCなので無駄な買い物をしてしまった…と見ていいのでしょうか?
他に手があるのでしょうか?

393:デフォルトの名無しさん
08/12/16 20:43:46
かわいそう・・・
仲間だからわかる・・・

394:デフォルトの名無しさん
08/12/16 20:47:06
やはり無理でしたか…
VisualStudioの基本的な操作を覚えるには役に立ちますよね?
お互いがんばりましょう。

395:デフォルトの名無しさん
08/12/16 21:29:59
まったく役に立たないと思います。
MFCが使えるようになってからも役に立たない本でした。
林晴比古のC++シニア上下は、ぼろぼろになった今でも時々読みます。

URLリンク(www.kumei.ne.jp)
自分はMFCからなのですが、ここのWinAPIの最初の方だけ読んで一日でMFC使わないソフトも作れました。


396:デフォルトの名無しさん
08/12/16 21:45:26
最近の林本は.netのサンプルものってたような気がしたけど

397:デフォルトの名無しさん
08/12/16 21:56:27
>>395
そちらを買うか林氏の本を買うかで悩んでたんです。そちらのほうがよかったのですね!

>>396
.netのサンプルとは例えばどのようなものでしょう?


398:デフォルトの名無しさん
08/12/16 22:22:29
ソフトの操作だけなら林本でいいと思う


399:デフォルトの名無しさん
08/12/16 22:31:09
>>398
そう言ってもらえると助かります!
みっちり操作を体に叩き込みたいと思います!

400:デフォルトの名無しさん
08/12/16 23:27:36
MFCを使えるバージョンってどれですか
無償版では使えないらしいので購入しようと思います
MFCを使えるバージョンと購入方法と価格を教えてください

401:M
08/12/16 23:30:14
C++でのラベリングで下のような場合で、簡単なプログラムのやり方を教えてくれませんか?

11111111
11111
1111111111  
1111111     
11111111
1 1     2222
       2222
       222222



402:デフォルトの名無しさん
08/12/16 23:33:06
MFCは全てのバージョンで使える

403:デフォルトの名無しさん
08/12/16 23:46:58
>>400
URLリンク(kakaku.com)

404:デフォルトの名無しさん
08/12/17 09:30:25
2003以前のバージョンなら確実に使える

405:デフォルトの名無しさん
08/12/17 19:36:51
上級者向けの本ってあるんですか?

406:デフォルトの名無しさん
08/12/17 20:03:15
>>400です
>>403さん
スタンダードバージョンでMFC使えるんですね
アマゾンで28000円かぁ
少々きつい出費になりますが
どうしても作ってみたいものがあるので思い切って購入しようと思います
詳しくありがとうございました
ヤマダ電機では売っていないのかなあ?
ヤマダポイント約6000円持ってるんだよね^^;
教えてくれてありがとうでした


407:デフォルトの名無しさん
08/12/17 20:09:15
VC++2008 Express使ってます。
Windows SDKを最新のものにしようと思い、2005使っているとき以来のPSDKを削除、
ついでにVC++2008も一旦削除して、さてインストールし直すぞ、と意気込んでいるのですが、
VC++2008をインストールすると、Microsoft Windows SDK for Visual Studio 2008とやらが自動でインストールされるそうで。
この場合、一旦これをアンインストールしてからMicrosoft Windows SDK for Windows Server 2008をインストール、でOK?


408:デフォルトの名無しさん
08/12/17 21:01:49
Microsoft Visual C++ 2008 Version 9.0.21022.8 RTM
Win32コンソールアプリケーション
ビルドの失敗
ソース↓
// test_1.cpp
#include "stdafx.h"
#include "test_2.cpp"

class test_A{
static const int INT_A;
static const char *TEXT_A;
};

const int test_A::INT_A=1234;
const char *test_A::TEXT_A="abcd";

int _tmain(int argc, _TCHAR* argv[]){
return 0;
}

// test_2.cpp
#include "stdafx.h"

class test_B{
static const int INT_B;
static const char *TEXT_B;
};

const int test_B::INT_B=1234;
const char *test_B::TEXT_B="abcd";

409:デフォルトの名無しさん
08/12/17 21:03:02
>>408のつづき。

ビルトをするとtest_Aは成功、test_Bは失敗します。ただし、一回目のビルドで
両方とも成功しているのに、その後同じ内容で二回目のビルドを行うと
やはりtest_Bだけ失敗するようになる、という場合もあります。
↓   ↓   ↓
fatal error LNK1169: 1 つ以上の複数回定義されているシンボルが見つかりました。

どこが原因なのか分かりません。

410:デフォルトの名無しさん
08/12/17 21:12:24
>>406
こうして2005Express Editionからアップグレードできることを知らない情弱が
今日も通常版を買っていくのであった・・・
URLリンク(www.microsoft.com)

411:デフォルトの名無しさん
08/12/17 21:35:52
げっ・・・・・・プロジェクト→クラスの追加、でやってみたら、なんとなく
やらなければいけないことが分かりました・・・・・・・・orz

412:デフォルトの名無しさん
08/12/17 21:42:50
>>408,409
// test_1.cpp
#include "test_2.cpp" // ←LINK1169

"test_2.cpp"をプロジェクトから除外するか、上記をコメントアウトすれば解決する。

413:デフォルトの名無しさん
08/12/17 22:53:48
>>412

_tmainでtest_Bが使えませんが・・・。

414:デフォルトの名無しさん
08/12/17 23:12:06
>>413
test_2.cppをプロジェクトから除外すれば使える。


415:デフォルトの名無しさん
08/12/17 23:22:12
>>414

「プロジェクトの外部」って扱いにしてから、呼び出すんですね?

416:デフォルトの名無しさん
08/12/17 23:33:59
>>415
そうだよ。どのみち #include "test_2.cpp" してんだから。
もっとも、#include "test_2.cpp"などというよーな書き方のほうを改めるべきだと思うがな。

// test.h
class test_A{
static const int INT_A;
static const char *TEXT_A;
};

class test_B{
static const int INT_B;
static const char *TEXT_B;
};

// test.cpp
#include "stdafx.h"
#include "test.h"

const int test_A::INT_A=1234;
const char *test_A::TEXT_A="abcd";

const int test_B::INT_B=1234;
const char *test_B::TEXT_B="abcd";

int _tmain( ・・・・) {
// To Do
}

417:デフォルトの名無しさん
08/12/17 23:51:08
ありがとうございました。
初歩の初歩でした。

418:デフォルトの名無しさん
08/12/18 04:18:43
cppをインクルードする奴ってキモチワルイ
あとヘッダに関数の中身定義する奴も同様にキモイ

419:デフォルトの名無しさん
08/12/18 05:05:35
>>418
template関数全否定ですね、わかります

420:デフォルトの名無しさん
08/12/18 09:59:14
>>410
というわりにはExpression Blend 2のアップグレードが割引率高くて安いうえに
VS2008Stdが入ってるのは教えてあげないのね。

421:デフォルトの名無しさん
08/12/18 11:45:07
Visual Studio 2005 でC++をやっているのですが
i = 0;
for(i = 5; i < 0; i--){
printf("%d",i);
fflush(stdout);
Sleep(1000);
}
この処理を通ってくれません。forの頭までは来ているのですが次の処理でforを抜けてしまっています

422:デフォルトの名無しさん
08/12/18 11:49:24
C++なのにprintfなんだ・・・

423:デフォルトの名無しさん
08/12/18 11:52:05
>>421
i > 0
にしろ
それとi = 0は必要なのかね


424:デフォルトの名無しさん
08/12/18 11:52:40
すみません。書き間違いです
コンパイラがC++で、書いてるのはCです

425:デフォルトの名無しさん
08/12/18 11:55:33
おお、いつのまに符号逆に・・・・最初は使えていたのにおかしいと思いました。すみませんありがとうございます
i = 0 はなんとなく癖です

426:デフォルトの名無しさん
08/12/18 12:00:53
下らないかもしれないけど、助けて下さい・・・。
VS2008でC++作ってます。
Irvineとかそういうダウンローダーでよくあるグリッドの入ったリストを作りたいんだけど、そのパーツ?コンポーネント?の名前さえも全くわからず・・・。
ToolBoxでコレだよ、的なもので良いので教えて下さい。

427:デフォルトの名無しさん
08/12/18 12:28:37
>>426
Microsoft DataGrid コントロール
ActiveXのやつ

428:デフォルトの名無しさん
08/12/18 12:31:39
ってIrvineとかそういうダウンローダーを知らないんだけど
LisiViewコントロールじゃだめなんかな?

429:デフォルトの名無しさん
08/12/18 12:35:23
ListViewってアイテムごとに枠がつかなくないか?エクセルみたいに

430:デフォルトの名無しさん
08/12/18 12:45:03
>>427
ありです。ちょっと試してみますー。

431:426
08/12/18 12:55:29
出来たけどRowの部分に出てるのが気になる・・・orz

>>429
Excelみたいに各セルが選択できるタイプじゃなくて、選択の対象が行単位で出来るものが良いんですよね。
今ちょうど見たら良い例があったので出してみると、ギコナビの板の中身の表示部分(スレッド一覧)とか。
それにグリッドがついたようなものが欲しいです。

色々と足りてなくて申し訳ない・・・orz

432:デフォルトの名無しさん
08/12/18 13:01:10
リソースのストリングテーブルって1つ以上作れないんですが、
文字列をまとめて入れ替えたい場合はどうすればいいんですか?
もしかして全てのloadstringの行でIDSを分岐させてるんですか?

433:あ
08/12/18 13:12:37
>>432
IDをずらす

LoadString(hInstance, IDS_MYSTRING + (f ? 10000 : 0), sz, 256);

434:デフォルトの名無しさん
08/12/18 14:04:50
えーまじですか・・・
めちゃくちゃloadStringあるんですけど・・・テーブル切り替えでがいいです!!!

435:デフォルトの名無しさん
08/12/18 14:10:49
DLL単位で作って切り替えるとか

436:デフォルトの名無しさん
08/12/18 14:15:33
おーーーthx!DLLで検索したら出てきましたよ!


437:デフォルトの名無しさん
08/12/18 14:26:36
Irvineはソース公開されてる

438:デフォルトの名無しさん
08/12/18 14:59:50
カスタムコントロールを派生させたいんですが、これ基本クラスなんですか?
CCustamCtrlとかないんですが

439:デフォルトの名無しさん
08/12/18 15:04:26
MFCの話?
コントロールはCWndから派生

440:デフォルトの名無しさん
08/12/18 15:19:02
カスタムコントロール自体のクラス名は何ですか?

441:デフォルトの名無しさん
08/12/18 15:23:54
>>440
Static

442:デフォルトの名無しさん
08/12/18 16:11:22
そういうことかありがと

443:デフォルトの名無しさん
08/12/18 16:57:44
マクロで選択範囲の前と後に文字列を入れるにはどう書けばいいですか?

"test"

を選択してマクロ実行すると

_T("test")

になるようにしたいんです。
一度左に行って _T( を挿入するまでは出来るんですが、選択範囲が消えて ) を入れる位置がわからなくなります

444:デフォルトの名無しさん
08/12/18 17:04:48
馬鹿でした。コピーしたらできました

DTE.ActiveDocument.Selection.Copy()
DTE.ActiveDocument.Selection.Text = "_T()"
DTE.ActiveDocument.Selection.CharLeft()
DTE.ActiveDocument.Selection.Paste()

445:デフォルトの名無しさん
08/12/18 18:56:57
スタティックコントロールの背景を変えたいのですが、
CStaticの派生クラスのOnPaintの中で

void CStaticEX::OnPaint()
{
 CPaintDC dc(this); // device context for painting
 dc.SetBkColor(RGB(20,30,100));
}

と書いたのですが、背景色が変わりません。これどこがいけないんでしょうか?

446:デフォルトの名無しさん
08/12/18 19:05:11
CPaintDC dc(this);

447:デフォルトの名無しさん
08/12/18 19:54:47
>>431
やっぱListViewじゃない?
ListView_SetExtendedListViewStyle(hListView, LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES);
みたいな。
「リストビュー 拡張スタイル」でぐぐってみたら?

448:デフォルトの名無しさん
08/12/18 20:56:50
他のダイアログボックスのオーバーライドOnOK関数呼び出しを、インテリセンスでは通っているのに
コンパイルエラーでメンバでは無いといわれるのはなぜですか?

449:デフォルトの名無しさん
08/12/18 21:04:15
メンバでは無いから

450:デフォルトの名無しさん
08/12/18 21:22:04
もちろんメンバ関数として作成してインテリセンスでも通ってるんです。

451:デフォルトの名無しさん
08/12/18 22:03:52
インテリセンスがそんなに賢かったらコンパイルする必要ない

452:デフォルトの名無しさん
08/12/19 00:26:34
>>445
PAINTSTRUCT ps;
CDC* pDC = BeginPaint(&ps); にする。

もっとも、そんなことしなくても、スタティックコントロールの背景色の変更は、
親ウィンドウの CWnd::OnCtlColor() で簡単にできるんだが・・・。

453:デフォルトの名無しさん
08/12/19 00:35:14
すみません、このスレでいいのか分からないんですが、質問させてください。

全くのプログラム初心者に近い人間で、HSPをちょっと触ったことがある程度なんですが
C++を使ってみたいと思いました。
色々なサイトを回ってみたりしたのですが
開発環境の作り方がさっぱりわかりませんでした・・・orz
URLリンク(codezine.jp)
このページを参考に物を作りつつ勉強していこうと思ったのですが
最初の一歩目で躓きましたorz

どこか環境の作り方などが載っているサイトなどがあれば教えて頂けないでしょうか。
もし書き込むスレッドが間違っていたら教えて頂きたいです。
宜しくお願いします。

454:デフォルトの名無しさん
08/12/19 01:30:29
まずは窓のそばに観葉植物を置いて・・・。
という話じゃないとは思うんだが、開発環境って具体的には何を指してるんだ?

455:デフォルトの名無しさん
08/12/19 02:52:51
>>452
ありがとうございました。Ctlも調べてみますどうもです

456:デフォルトの名無しさん
08/12/19 23:29:36
>>453
エスパー的に答えれば
フリーのVisual C++ 2008 Expressをダウンロードしてインスコ(環境出来上がり)
でもそのレベルじゃ記事読んでも理解できないから
Cはある程度わかっているとして
猫でも読んでWin32APIの基本は少なくとも勉強する
メッセージループ プロシージャなど
ってことでOK?

457:デフォルトの名無しさん
08/12/19 23:39:56
今、猫でもわかるのCのところを見てみたら、スクリーンショットがVCの1.5とかそのあたりのやつじゃないか。
書かれたの、10年以上前だし。

URLリンク(www.amazon.co.jp)
URLリンク(www.amazon.co.jp)

↑このあたりの本でも買って勉強したほうがいいんじゃね?

458:デフォルトの名無しさん
08/12/19 23:47:01
その辺のってCLI系のヤツだろ
それやるならC#でよいと思うがな

個人的には色々本買うより
初心者であってもCがある程度分かってるなら
Petzold本読むのを進める

459:デフォルトの名無しさん
08/12/19 23:52:53
>>458
ああ、本当だ。.NET Frameworkって内容紹介に書いてあるな。
でもHSPをちょっとかじった程度だと、プログラミングWindowsとかムリだろ。

460:デフォルトの名無しさん
08/12/20 00:39:07
Express Edition
c++ です。
フォームアプリケーションでファイルを開いて、フルパスからファイル名を抽出しようとしていて、
ググったところ、char ポインタ型で抽出していたので、System::Stringをcharポインタ型に変換してから抽出したのですが、実際に何度か連続で実行したところ
エラーが発生しました。恐らくポインタの開放か初期化でミスってると思うんですが…
ケータイからなのでソースは勘弁していただきたいので、System::String で直接ファイル名を抽出できないでしょうか?
スレ汚しすいません。

461:デフォルトの名無しさん
08/12/20 00:41:58
>>460 です。
VisualStudio2008と書くのを忘れていました

462:デフォルトの名無しさん
08/12/20 01:19:27
>>460
System::String は使ったことがないので考え方だけ。以下のコードでできるかどうかは不明。
文字列の最後に出てくる \ の位置を求めて、先頭からその位置までの文字列をばっさり捨ててる・・・つもり。
検証は、まかせる。(笑)

String filename = pathname.Remove( 0, pathname.LastIndexOf('\\')); // pathname は フルパスが入っている String



463:デフォルトの名無しさん
08/12/20 01:37:27
>>462
最後の¥が残ってしまったものの抽出自体は成功しています!
後は自力でできそうです!
わずか一行で実装できるとは思いませんでした。
ありがとうございます。

464:デフォルトの名無しさん
08/12/20 01:39:31
System::IO::Path::GetFileName使えばいいだけの話じゃないの?

465:デフォルトの名無しさん
08/12/20 01:47:13
>>464
そんな便利な関数あったんですね…
すいません調べ不足でした。
>>463
ちなみに先ほどのは、ラストの¥の位置を表しているのでインクリメントしてあげれば解決しましたね。
お二方ありがとうございました。

466:デフォルトの名無しさん
08/12/20 02:52:40
>>463
>後は自力でできそうです!
そりゃできるだろ。^^;

String filename = pathname.Remove( 0, pathname.LastIndexOf('\\') + 1); // + 1 を追加

たったこれだけの修正ができなかったら、C++を勉強する前に
まずはCの基本から身につけたほうがいいと思うぞ。

467:デフォルトの名無しさん
08/12/20 19:56:30
VisualStudio2008
express、Windowsフォームです。
一つのイベントに対して複数のイベントを組むのは、どうすればいいのでしょうか。
具体的にはtoolStripのButtonをクリックした時に、名前をつけて保存と上書き保存と切り替えたいのですが…

468:デフォルトの名無しさん
08/12/20 23:43:49
Visual C++2008 ExpressEditionで、実行したときに全角文字が〓に文字化けしてしまうんですがどうすれば正しく表示されるんでしょうか?

プログラムはこれです。

#include <iostream>
using namespace std;
int p,t,a,d,c,v,i,m[90]={0},s,r[]={-10,-9,-8,-1,1,8,9,10};
void k(){
if(m[p]==0)for(i=0;i<8;i++){
for(c=0,v=p+r[i];m[v]==3-t;v+=r[i])c++;
if(c&&m[v]==t){
a+=c;v=p;
if(d)do m[v]=t,v+=r[i];while(m[v]!=t);
}}}
char*h="・○●\n" ;
int main(){
for(i=1,m[41]=m[49]=2;i<10;m[i++*9]=3)m[40]=m[50]=t=s=1;
for(;;a=d=0){
for(p=9;p<82;++p)k(),cout<<h[m[p]*2];
if(a)for(d=a=s=p=8;a==8;k())t-2?(cin>>p>>i),(p+=i*9):++p;
else if(s)s=0,cout<<"pass"; else break;t=3-t;
}
return 0;
}

469:デフォルトの名無しさん
08/12/21 00:40:30
>>468
[構成プロパティ]-[全般]-[文字セット]がUnicodeがどうのこうのってなってね?
マルチバイトがどうのこうのってのに設定すれば多分動くんじゃね?

470:デフォルトの名無しさん
08/12/21 14:06:11
VC++2008EE SDK です。
hToolBar = CreateWindowEx(WS_EX_TOOLWINDOW, TOOLBARCLASSNAME, NULL, WS_CHILD | WS_VISIBLE | CCS_ADJUSTABLE | CCS_NORESIZE, 50,200,200,20, hWnd, NULL, hInst, NULL);

ツールバーに背景色を設定したいのですがやり方がわかりません。
教えてください。


471:デフォルトの名無しさん
08/12/21 19:25:33
>>470
SetWindowLongPtr
GCLP_ HBRBACKGROUND

472:デフォルトの名無しさん
08/12/21 19:33:26
void型の構造体からデータを取得したいのですがやり方がわかりません教えて

473:デフォルトの名無しさん
08/12/21 21:07:43
VS2005もしくはVC++6.0でリソース(ダイアログ、アイコンなど)を編集する実行ファイルの名前はなんなんですか?

474:デフォルトの名無しさん
08/12/21 21:23:56
msdev.exe

475:デフォルトの名無しさん
08/12/21 21:27:06
VS2008です。
右にTextBox(MainText)、左にパネル、パネルの上にTextBox(LineText)
LineTextにはMainTextの行数を表示してあります。
こんな風↓

パネル|MainText
1 |文字
2 |文字
3 |文字

でMainTextがスクロールするときには、同時にパネルをスクロールしたほうが、いいでしょうか?
LineTextをスクロールしたほうがいいでしょうか?
また、どうスクロールしたらいいでしょうか?

476:デフォルトの名無しさん
08/12/21 22:49:13
>>474
VS2003も?

477:470
08/12/21 23:15:22
>>471
サンクス。

478:デフォルトの名無しさん
08/12/22 03:52:50
453です。暫く忙しくてPC触れず、返信が遅れました、すみません。

>>454
すみません、言葉が足らなかったようで。
開発支援ソフトというか、ソースを書いて、実行して・・・という動作を行うソフトを探していました。
こういったソフトを何というか、用語等が分からなくて・・・すみません。

>>456
直感で欲しかった返答を頂き、有難うございます。
少しずつ調べていく感じで、時間がかかっても一歩ずつ進んでいこうと思います。

>>457,458,459
参考書を探してみたのですが、書店で見てもイマイチどれがいいのか分からなくて・・・
購入して意味が分からない、というのも問題だと思ったのでいろいろネットを見回っていました。
Petzoldという本がどれかは分からないのですが、また今度探してみようと思います。

皆様、返信ありがとうございました。
試行錯誤で少しずつ勉強してみようと思います。

479:デフォルトの名無しさん
08/12/22 04:13:52
CListCtrlでレポートスタイルにアイコンを表示するにはどうすればいいんでしょうか

DWORD dwViewStyle = WS_CHILD | WS_VISIBLE | LVS_REPORT;
m_ListCtrl.Create(dwViewStyle, rectDummy, this, ID_FileListCtrl)

m_ListCtrl.InsertColumn(0, _T("NAME"), LVCFMT_LEFT, 100);
m_Images.Create(IDB_NAME, 16, 0, RGB(255, 0, 255));
m_ListCtrl.GetHeaderCtrl()->SetImageList(&m_Images);

ここまで来たんですが、どうしても表示されません、教えてください。

480:デフォルトの名無しさん
08/12/22 09:51:36
InsertItemの引数

481:デフォルトの名無しさん
08/12/22 10:41:23
すいません忘れてました。

m_ListCtrl.InsertItem(0, _T("TEST"), 2); // BMPの3つ目のイメージを期待

Insertはこうかいてます

482:デフォルトの名無しさん
08/12/22 10:57:31
SetImageList()呼んでないんじゃない?

483:デフォルトの名無しさん
08/12/22 10:58:50
つーか、ヘッダに載せたいの?

484:デフォルトの名無しさん
08/12/22 11:20:43
確認しましたが、SetImageListは呼んでません
リストコントロールの0列目の頭にアイコンを付けたいんです。
BMPは16で区切って8インデックスあるので
2番目は空では無いとおもうんです

485:デフォルトの名無しさん
08/12/22 11:30:14
いや、ちょっと使い方に問題があると思うけどアイコンなくっても
アイコンのある筈の場所が空白になるだけだから、それは確認できるはず。
で、
m_ListCtrl.GetHeaderCtrl()->SetImageList(&m_Images);
これは
m_ListCtrl.SetImageList(&m_Images);
じゃないのか?

486:デフォルトの名無しさん
08/12/22 11:31:41
m_ListCtrl.SetImageList(&m_Images, LVSIL_SMALL);
こうか

487:デフォルトの名無しさん
08/12/22 11:39:19
うおーーーできたーー
GetHeaderってなんだったんだーーーー
ありがとう。まじありがとう。
無駄に難しくはまり込んでいた・・・

488:デフォルトの名無しさん
08/12/22 20:19:26
VCで作ったwindowsのプログラムを全く別のパソコンで動かすにはどうしたらいいのでしょう?
ソリューション構成のとこをreleaseにして、できたexeファイルと画像と音声リソースを
同じディレクトリに入れて、USBメモリで他のパソコンに移して実行しても、
アプリケーションの構成が正しくないとかいうエラーが出てしまいます。
どなたかアドバイスお願いします

489:デフォルトの名無しさん
08/12/22 20:22:15
まずは、正確なメッセージを貼るところから始めよう。

490:デフォルトの名無しさん
08/12/22 20:23:37
次に、そのメッセージでググってみよう。


491:デフォルトの名無しさん
08/12/22 20:26:05
アプリケーションをスタティックリンクするか、「他のパソコン」にランタイムをインストールするといいかも。

492:デフォルトの名無しさん
08/12/22 21:11:11
ググッてみたら解決方法がいっぱい出てきました。
出てきたページを参考にランタイムを入れてみようと思います。
ありがとうございましまろ

493:デフォルトの名無しさん
08/12/22 22:48:23
>>478

プログラミングWindows 第5版 (Charles Petzold著)

Win32APIを勉強する上ではバイブル的本だと思うが
君が理解できるかどうかは俺にはわからん
ただ訳もよくできてるから 初心者が読んでても結構楽しいぜ
それなりの値段だから 大きめの本屋で目を通してみると良い
とりあえず上巻だけでOK

494:デフォルトの名無しさん
08/12/22 23:55:22
VC++2003を使用しています
テキストファイルやmp3等のリソースエディタでは埋め込みが不可能なものを
リソースとして埋め込み、使用するにはどのようにしたらいいのでしょうか
ググった所ビルドアクションを埋め込まれたリソースにするという事はわかったのですが、
追加したファイルのプロパティを確認しても項目がその他しか出ていませんでした
どうかよろしくお願いします

495:デフォルトの名無しさん
08/12/23 00:01:29
VisualStudio2008 c++ です。
Regex::Matchesでパターンマッチした文字の位置を取得して、その列をSelectにすることできる?

ABC
ABC
ABC

↑これでAをMatchesで取得したとして、3つ目のAを指定したら3列目が選択される。みたいに
わかりにくくてごめん。

496:デフォルトの名無しさん
08/12/23 00:20:34
>>494
「カスタムリソース」でググってみ。

497:デフォルトの名無しさん
08/12/23 01:22:00
>>496
カスタムリソースで調べてやってみたら埋め込みリソースが成功しました
本当にありがとうございます

498:デフォルトの名無しさん
08/12/23 22:33:03
VC++上でコンソールアプリケーションを実行したときに
printf()の出力先(標準出力)を、VC++の出力窓にすることはできます?
(OutputDebugString()を使わずに・・・)


499:デフォルトの名無しさん
08/12/23 23:10:04
printfってオーバーライドできたっけ?

500:デフォルトの名無しさん
08/12/23 23:12:56
>>498
標準出力の出力先はSetStdHandle()で切り替えられるけど、VCの出力窓のハンドルって取得できるのかな?
調べたらできるかもしれない。

501:デフォルトの名無しさん
08/12/23 23:18:42
なんでんなこと死体んだ

502:デフォルトの名無しさん
08/12/23 23:19:09
>>498
printfをオーバーライドして中身にOutputDebugString書いちゃ駄目なの?
あくまでOutputDebugStringは使っちゃ駄目?

503:デフォルトの名無しさん
08/12/23 23:26:20
Regex::Matchesで検索した文字列の位置って、Forで地道に文字数カウントしかないの?
MatchCollectionのメンバで位置取得とかできないの?

504:デフォルトの名無しさん
08/12/24 03:17:52
#define printf (vsprintfしてOutputDebugStringする自作関数)

505:デフォルトの名無しさん
08/12/24 04:24:18
自己解決した。スマソ

506:デフォルトの名無しさん
08/12/25 13:21:28
質問です。
Visual C++ 2005 Expressを使っているのですが、
EXEファイルのプロパティから見られる「バージョン情報」を追加するには
どうすればいいんでしょうか?

507:デフォルトの名無しさん
08/12/25 14:14:08
>>506
リソースファイルを作ればいい
URLリンク(marigold.sakura.ne.jp)


508:デフォルトの名無しさん
08/12/25 19:49:37
>>507
ありがとうございます。そちらを参考にして一応設定し、「バージョン情報」タブが
表示されるようになりました。

ですが、何も設定していないのに「言語」という項目が「英語(米国)」という値で
自動的に設定されてしまうのですが、この「言語」の項目を「日本語」にするには
どうすればいいのでしょうか?

ためしに
VALUE "言語", "日本語\0"
と記述すると項目は追加されるのですが、「言語」「英語(米国)」は残ってしまいます…

509:508
08/12/25 20:01:21
自己解決できました。TranslationとStringFileInfoのBLOCKの値に
関係してたんですね

510:デフォルトの名無しさん
08/12/26 02:41:53
VC++2008で、エディットボックスに入力された値を%と仮定して、
演算を行いたいと思っています。

15 と入力されていれば、1.15で演算

現在、取得した値に100加算し、100除算するようにしているのですが、
桁落ちが発生してしまい、変数に格納される値が1.1499…となってしまいます。
桁落ちを発生させず、正しく1.15として変数を格納するためにはどのようにすればよろしいでしょうか。

CString strBuf;
double d;
((CEdit*)GetDlgItem(iID))->GetWindowText(strBuf); // strBuf="15"
d = atoi(strBuf); // d=15.00000000

d = 100 + d/100; // d=1.149999999

511:デフォルトの名無しさん
08/12/26 02:56:37
整数で計算して下さい

512:デフォルトの名無しさん
08/12/26 03:14:09
結果出力、つまり文字列に変換するときに丸めればいい。
偶数丸めとか四捨五入とか。

513:デフォルトの名無しさん
08/12/26 06:37:33
1ドル15セントみたいな概念は理解できないんだな

514:デフォルトの名無しさん
08/12/26 07:10:36
100 + d/100

515:デフォルトの名無しさん
08/12/26 07:19:30
たぶん、( 100 + d ) / 100 と書きたかったんじゃないか?

516:510
08/12/26 09:32:30
(100+d)/100の間違いでした。
四捨五入で試して見たいと思いますが、
少数で演算はやめておいた方がよさそうですかね。
計算式が少し複雑なものだったので、楽できればと思ったのですが。

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


517:デフォルトの名無しさん
08/12/26 11:57:21
CString型の文字列に格納されている文字を1文字ずつ取り出したいです。

ただし半角なら1バイト単位で、全角なら2バイト単位で、という風に分離したいです。

半角だけなら、Strcpyでcharの配列にコピーした上で、
str[0] str[1]...という風に取り出せますが、

全角が混じっていると、1バイト目、2バイト目と分離されてしまいます。

その文字が半角か全角かを判断して、半角なら1バイト、全角なら2バイト同時に取り出すロジックを作りたいです。
こんな感じの関数として。

CString ripString(CString src,int index){ //ソースとなる文字列、n文字目

/*〜処理〜*/

return 文字列;
}

たとえば"あaいbうcえdおe"という文字列を入れると、

CString str="あaいbうcえdおe";

ripString(str,0) →結果 "あ"
ripString(str,1) →結果 "a"
ripString(str,2) →結果 "い"
ripString(str,3) →結果 "b"
 ・
 ・
 ・
 
こういうことをするのに良い方法はありますか?


次ページ
最新レス表示
スレッドの検索
類似スレ一覧
話題のニュース
おまかせリスト
▼オプションを表示
暇つぶし2ch

4348日前に更新/248 KB
担当:undef