★初心者にVisual C++ ..
[2ch|▼Menu]
263:デフォルトの名無しさん
08/12/07 03:54:39
>>254
ファイルが読めないなら起動に必要なデータファイルはどこから読むんです?

264:234
08/12/07 04:26:59
豚切り失礼します。

>>236さん
遅くなりましたが、回答ありがとうございます。
そうですか。UNICODEはINIファイルとして使えないのですね。
勉強になりました。





265:デフォルトの名無しさん
08/12/07 12:46:44
>>258
3.が違う

266:デフォルトの名無しさん
08/12/07 16:07:48
>>265
どう違うの?

267:デフォルトの名無しさん
08/12/07 20:53:50
言ってみたかっただけじゃね。

268:デフォルトの名無しさん
08/12/08 01:31:32
CとC++の違いってヘッダがiostreamになって使う関数が違う以外にないの?
こんなんでオブジェクト施行とか騒いじゃってるの?拍子抜けなんだけど

269:デフォルトの名無しさん
08/12/08 01:38:10
クラス、テンプレート、多重定義、例外処理……、
オブジェクト指向に関係あるものないもの、CになくてC++にある機能なんていくらでもあるが。

270:デフォルトの名無しさん
08/12/08 01:49:56
クラスなんて構造体に毛がはえたようなものしょぼいんだよはっきりいって

271:デフォルトの名無しさん
08/12/08 02:18:40
馬鹿野郎!
それのおかげでインテリセンスの恩恵があるんだろうが!

272:デフォルトの名無しさん
08/12/09 00:47:26
C→C++の一番の利点は
コードが見やすいこと、これに尽きるだろ
C++に慣れるとCのでっかいコードは耐えられん
クラス化したくてウズウズしてくる
変数途中で宣言したくなる

273:デフォルトの名無しさん
08/12/09 00:51:53
C言語の勉強やってからC++に移行したほうが良いだろうか
それとも最初からC++から勉強しても問題ない?

274:デフォルトの名無しさん
08/12/09 00:57:11
>>258
バーチャルストアに書き込むのはマニフェストがない場合だけだよ。
マニフェストがあればあとは管理者権限への移行が成功すれば直接書くことになる。

275:デフォルトの名無しさん
08/12/09 01:19:02
>>273
いきなりC++でいいと思う。
共通する事柄はいずれにせよ学ぶことになるし、
Cで良く使うテクだけどC++ではあまり使わないのとか意外とあるし。

276:デフォルトの名無しさん
08/12/09 01:24:14
>>275
把握したありがっとう

277:デフォルトの名無しさん
08/12/09 03:21:41
>>274
つかそれって結局管理者権限で実行するってことじゃねーの?
他のシステムファイルからみとかで管理者権限が必要でマニフェストに組み込まれた
アプリじゃなければ>>258のようになるってことっしょ?

278:デフォルトの名無しさん
08/12/09 10:30:08
>>277
マニフェストがない場合、管理者権限でもバーチャルストア行き。

279:デフォルトの名無しさん
08/12/09 10:52:59
マニフェストがないという言い方は正しくない

280:デフォルトの名無しさん
08/12/09 12:44:06
一連の流れをみててもどうもわかりにくいです。
人によって言ってる事が違うというか。
管理者、制限ユーザー、マニフェスト関連で正確な挙動に
ついての詳細情報が掲載されてるサイトないですか?
VistaだけでなくXPや2000での情報も欲しいです。

281:デフォルトの名無しさん
08/12/09 14:48:03
>>280
一次情報源としてMSDNライブラリなど

例えばここらへん。
URLリンク(msdn.microsoft.com)
URLリンク(msdn.microsoft.com)
URLリンク(msdn.microsoft.com)
URLリンク(technet.microsoft.com)

282:デフォルトの名無しさん
08/12/09 15:11:06
日本語でおk

283:デフォルトの名無しさん
08/12/09 15:16:27
初心者スレで英文持ち出してくるヤツは死んでいいと思うよ
日本と米で仕様が違うのもよくある事だしな

284:デフォルトの名無しさん
08/12/09 15:26:18
英文にしか情報がないようなことを初心者スレで質問するヤツは死んでいいと思うよ

285:デフォルトの名無しさん
08/12/09 21:38:14
>>284
初心者なんだから分からんだろ。

286:デフォルトの名無しさん
08/12/09 21:50:21
非標準言語のしか資料が無いと言うことが判っただけでも大きな進歩であり、
革新的な質問であったことは確定的に明らか。

287:デフォルトの名無しさん
08/12/09 22:55:05
誰か日本語でわかりやすくまとめてくだちぃ

288:デフォルトの名無しさん
08/12/09 23:24:08
ホームエディションだと管理者か制限ユーザーのカテゴリわけだけで
細かい設定はないんだよな
プロフェッショナルの管理者による厳しいセキュリティ設定まで考慮してもきりがないと思う
どうやっても管理者次第で動かない設定にできるんだし

XPホームエディションでProgramFilesに入れたアプリを制限ユーザーで動かしてみたけど
普通にINIファイルを含むセーブデータを読み書きできた
Vistaでマニュフェストの指定なしだとこの読み書きがバーチャルストアになるってことか
それを想定して動くつくりであればセーブデータもプログラムと同じフォルダでいいんじゃね

289:デフォルトの名無しさん
08/12/10 01:08:56
まぁ仮想ストアは救済策ってーか、MSお得意の泥臭い互換性の維持だからな。
多分将来的にはユーザーのデフォの権限を制限ユーザーにしたいんだろうが、
それVistaでやっちゃうとProgram Filesに書き込むアプリなだけで動かなくなるわけだし。

マニフェスト無しでほっとくのも止めやしないが、管理者権限のコマンドプロンプトやファイラから
起動したら別々の設定ファイルをうっかり作っちまうとかも起こりうるので、
requireAdministratorで起動毎にUACダイアログを出した方がいい。

そしてアプリのユーザーにダイアログをうざがられてAppDataに
書き込まざるを得なくなるというプレッシャーこそがUACの真意だとかなんとか。

290:デフォルトの名無しさん
08/12/10 02:03:25
かなりどうでもいい条件付けだな

291:デフォルトの名無しさん
08/12/10 11:56:44
VS 2003からVS 2008にしてみました

C++のソースファイルはUTF-8で書かれていて、VS 2003では概ね問題なくコンパイルできていました。
ところがVS 2008のcl.exeは、このソース内に定数として書かれた文字列を勝手にSJISに変換して内部処理するようです。これでは正常動作できません。

この余計な機能を、何とか避ける方法はないのでしょうか?

膨大な量があるので、今さらファイルをSJISに戻すとかすることは不可能なんです。


292:デフォルトの名無しさん
08/12/10 12:03:53
コードページは?

293:デフォルトの名無しさん
08/12/10 12:10:24
普通にコマンドプロンプトを開いて作業しているので、932のシフトJISです。


294:デフォルトの名無しさん
08/12/10 12:15:05
すいません、本当に簡単なことなのですが
if(argc == 3){
if(argv[1] == L"-o"){
if((fp = fopen("argv[2]", "w")) == NULL){
printf("出力ファイルをオープンできません.\n");
exit(1);
}
fclose(fp);
}
この
if(argv[1] == L"-o") の条件が通りません。
コマンドで test -o test1 のように打っても違うものとして認識しているようで・・・
画面にプリントしてみると同じなのですが、Lをつけるとデータが違うものになってしまうのでしょうか?

295:デフォルトの名無しさん
08/12/10 12:16:52
chcpで変えてみては?
つーか、UTF-8でダメな例が思いつかないな、再現可能なソース無いですか?

296:デフォルトの名無しさん
08/12/10 12:18:44
>>294
文字列の比較に直接 == は使えません。

297:デフォルトの名無しさん
08/12/10 12:29:10
>>291
コンパイルエラーなのか動作が変なのか
エラーメッセージがあればそれを書いてもらうと何かわかるかもしれません

>>294
argvの型はTCHARですか

298:デフォルトの名無しさん
08/12/10 12:39:28
またどこの言語からの転向者だろ
VSつながりでVBかC#あたりか

299:デフォルトの名無しさん
08/12/10 12:40:19
template <typename Foo, typename Bar> class Baz : public Bar { なんたら
void Qux( const Quux<Foo,Bar> & foobar ) {...};
};

class Bar { なんたら }; // (1)

VC2008で上のをもう少し複雑に書くと Baz::Qux での引数の型 Quux<Foo,Bar> が
(1) の Bar と解釈されてコンパイルエラーになってしまう
GCCだと通るんだけどなあ

300:デフォルトの名無しさん
08/12/10 12:40:36
>"argv[2]"
この書き方はPerlかPHPだろう

301:デフォルトの名無しさん
08/12/10 12:52:34
もともとCとVBAをやってました
>>296
やっぱりstrcmpを使わないとだめですか?
>>297
int _tmain(int argc, _TCHAR* argv[])
こう宣言してます

302:デフォルトの名無しさん
08/12/10 12:53:27
もともとCとVBAをやってました
>>296
やっぱりstrcmpを使わないとだめですか?
>>297
int _tmain(int argc, _TCHAR* argv[])
こう宣言してます

303:デフォルトの名無しさん
08/12/10 12:57:44
>>302
はい。

304:デフォルトの名無しさん
08/12/10 12:59:15
if( _tcscmp(argv[1],"-o") == 0 ) {
では

305:デフォルトの名無しさん
08/12/10 13:00:32
if( _tcscmp(argv[1],_T("-o")) == 0 ) {
では

306:デフォルトの名無しさん
08/12/10 13:01:43
if (_tcsicmp(argv[1],_T("-o")) == 0) {
では

307:デフォルトの名無しさん
08/12/10 13:03:35
>>304さんの方法でやってみたところ
エラー 1 error C2664: 'wcscmp' : 2 番目の引数を 'const char [3]' から 'const wchar_t *' に変換できません。(新しい機能 ; ヘルプを参照)
というようなことを言われました。
どうもこの変換できないというところが理解できないです。代入しているわけでもないのに何故?って感じです。


308:デフォルトの名無しさん
08/12/10 13:04:55
#include "stdafx.h"
#include "string.h"
#include "stdlib.h"


int _tmain(int argc, _TCHAR* argv[])
{
FILE *fp;
if(argc == 3){
if( _tcscmp(argv[1],"-o") == 0 ){
if((fp = fopen("argv[2]", "w")) == NULL){
printf("出力ファイルをオープンできません.\n");
exit(1);
}
fclose(fp);
}
else{
printf("USage :\n");
printf("-o : **********\n");
}
}
else{
printf("引数の数が違います");
}

return 0;
}

これが全文です。

309:デフォルトの名無しさん
08/12/10 13:14:00
通常 "-o" の文字リテラルは char で構成される
文字セットがユニコードの場合 _tsccmp は _wcscmp にマップされる
_wcscmp が要求する型は const wchar_t * だからエラーになる

_T マクロは文字セットにあわせてユニコードの場合には "-o" を L"-o" と変える
L"-o" はワイド文字 wchar_t で構成されるリテラルだから通る
すまん思いきり間違えた 304は俺

310:デフォルトの名無しさん
08/12/10 13:18:33
UNICODEに拘らなければANSI Cで十分なんだよな

311:デフォルトの名無しさん
08/12/10 13:21:00
>>309
解決しました!ありがとうございます

312:デフォルトの名無しさん
08/12/10 13:47:31
>>291で質問した者です
再現可能なソースを作っていて気がつきました。
chcp 65001やchcp 437としても動作が同じで、文字列リテラルが強制的にSJISに内部変換されていることが分かりました。
UTF-8のソースファイルなのですが、「BOM」を付けると、このような動作になるようです。

BOMを付けないUTF-8だと、warning C4819 が山ほど出て、化ける文字までありますが、何とかなりそうです。

今回作った下の再現プログラムも、BOMありのUTF-8と、BOM無しのUTF-8では、動作が違ってきます。

#include <iostream>
int main()
{
std::cout << "項目" << std::endl;
return 0;
}

一応解決したことにします。ありがとうございました。

313:デフォルトの名無しさん
08/12/10 15:35:09
すみません>>294で質問したものですが、
同じソースで _tcscat(argv[2],L".txt"); という処理を入れ、作成ファイルをテキスト形式にしようと思ったのですが
出力されたファイルが、テキストではなくファイルで出力されてしまいます。
画面表示させるとちゃんと****.txt となっているのですが・・・

314:デフォルトの名無しさん
08/12/10 15:49:13
>>313はスルーしてください
アホくさい間違いでしたので(汗

315:デフォルトの名無しさん
08/12/10 22:29:54
Visual C++を使用していて、ちょっと困ってしまったので助けてください。
下記画像のようにスペース部分に色つき矢印やらドットやらが表示されて消えなくなってしまいました。
どこかでキーボード押し違えたみたいで・・
この設定の解除の仕方を分かる方いたら教えてください><
   ↓
URLリンク(imepita.jp)

316:デフォルトの名無しさん
08/12/10 22:38:27
メニュー > ヘルプのキーボード何とかに一覧がある

317:552
08/12/10 23:45:14
ヘルプで見ても、そもそもコレが何なのか解らないので検索できないので
教えていただけませんか?

318:552
08/12/11 00:19:36
質問に答えてくれなかったからってこんなこと言うのもなんだけど
なんか、プログラマーって陰湿な性格の人が多いよね。

解るんなら教えてくれればいいじゃん。初心者用のスレだった気がするけど。

ついでに、編集→詳細→スペースの表示で自己解決しました。
だれも教えてくれんかった。

319:デフォルトの名無しさん
08/12/11 00:47:38
今MIDIファイルを開くっていうプログラムを作りたいのですが、
よろしければ教えてください。
バージョンはVC++2005 AEです。


320:319
08/12/11 00:53:28
319ですがGETFILE関数を使いたいです。
よろしくお願いします。

321:デフォルトの名無しさん
08/12/11 02:15:04
>>318
君が質問したのは3、4時間前だろ?
誰もが同じスレをずっと監視してサポートセンターのように対応してくれるとでも思ってんのか?

自分で解決したならそれでいいし、自分で色々やってもできなかったらまた質問すりゃいいだろ
陰湿なのはちょっとレスがない程度でふてくされる君の思考回路だよ

322:デフォルトの名無しさん
08/12/11 02:29:37
>>318
オマエみたいなパーデンネンを弾くために、みな時間置いてから答えるようにしてるからね。
ゴクローサン。

323:デフォルトの名無しさん
08/12/11 07:33:14
>>315
[編集]→[詳細]→[スペースの表示]

324:デフォルトの名無しさん
08/12/11 09:53:49
>>318
つーかその質問、定期的に出るんでうんざりなんだけど。
過去レス調べることもできないのかよ。

あと質問なんか1日くらい待てや、答える人が24時間張り付いてるわけじゃないぞ。

325:デフォルトの名無しさん
08/12/11 10:10:52
こんにちわ。Visual C++でOPENGLを用いてゲームを作ろうと思うのですが、
ウィンドウを振動させるやり方がわかりません。。

何かコマンドややり方があるのならアドバイスください。よろしくお願いします。


※JAVASCRIPTでウィンドウを振動させるみたいな感じです。

326:デフォルトの名無しさん
08/12/11 10:18:59
>>325
SetWindowPos APIとrand関数を使え

327:デフォルトの名無しさん
08/12/11 10:28:02
もの凄く気軽に「こんなソフトありませんか?」
スレリンク(software板:331番)

331 名前:名無しさん@お腹いっぱい。[] 投稿日:2008/12/11(木) 09:50:07 ID:mvBU1EDM0
こんにちわ。

アクティブウィンドウを振動させるようなフリーソフトってありますか?
OPENGLで実験中にウィンドウを揺らしたいのですが・・・コマンドも分からないし、出来ないので外部のツールで強引にしようかと。。


よろしくお願いします。

328:デフォルトの名無しさん
08/12/11 10:45:36
>>315
Ctrl+R、 Ctrl+Wを続けて入力


329:デフォルトの名無しさん
08/12/11 10:58:16
>318
試験勉強みたいに頭の中に全部記憶する必要ない。
というか情報量多すぎるからその都度自分で調べて解決していかないとだめ。
初心者の場合はどうやって調べたらいいかわからないから
調べ方を教えてあげるのが重要。
答えだけ教えたんじゃ、いつまでたっても自分で調べられようにならない。

330:M
08/12/11 11:35:21
今、VC++でMFCを用いたプログラムを作成中で、そのプログラムでRS232C通信を行いたいのですが、RS232c通信のプログラムの部分だけAPIを用いて記述したいのですがどのようにすればいいのでしょうか?
方法があれば教えてください。お願いします。

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

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


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

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