★初心者にVisual C++ ..
[2ch|▼Menu]
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"
 ・
 ・
 ・
 
こういうことをするのに良い方法はありますか?

518:デフォルトの名無しさん
08/12/26 12:05:49
CharNext, IsDBCSLeadByte

519:デフォルトの名無しさん
08/12/26 12:09:47
>>517
CString::GetAt( int iChar)

520:デフォルトの名無しさん
08/12/26 12:18:56
>>517
#define _UNICODE


521:デフォルトの名無しさん
08/12/26 19:48:42
初めてDLL作ろうとしたのですが、依存関係を設定してビルドするとなぜか〜〜.libが見つかりませんとでて失敗します。
〜〜.dllってどのようにすれば使えるのか教えてください。
dllファイルの作成自体は成功しています。


522:デフォルトの名無しさん
08/12/26 20:37:37
>>521
google dll 作成方法

523:デフォルトの名無しさん
08/12/26 21:03:56
散々調べてから2ちゃんで質問したんですが・・・
とりあえず自己解決しました。
Project Test   ←dllを使うプロジェクト
Project Test_dll ←dllのプロジェクト
という感じで、Test_dll.libができるのかと思ってたら、Test_dll.dllとTest.libの名前でファイルが作成されてました。

はじめにTestのソース内で#pragma comment(lib, "Test.lib")を試したところ
出力ファイル名が入力ファイル名が一致しています。というエラーが出たので、(名前も対応していないので)
Test.libがTest_dll.dllのアタッチとは関係ないものだと早とちりしていました。
結局Test.libをTest_dll.libにリネームして、リンクすることでビルドに成功できました。

524:デフォルトの名無しさん
08/12/26 21:11:02
ただ出力ファイルのdllの名前はプロパティから変更できたのですが、出力されるlibファイルの名前が変更できません。
みなさんは毎回手動でリネームしているのでしょうか。

525:デフォルトの名無しさん
08/12/26 21:52:49
libが必要になる方法なんかで作らないもん
面倒だし

526:デフォルトの名無しさん
08/12/26 23:24:50
ビルド後のイベント

527:デフォルトの名無しさん
08/12/28 10:28:01
リンカの詳細にインポートライブラリってのがあるべや

528:デフォルトの名無しさん
08/12/28 20:13:39
モードレスダイアログのコンボに対して、親ウィンドウから値をセットするにはどうしたらいいんでしょうか。
Win32 VC++です。

モードレスダイアログに
setData(char* text)
{
ComboBox_AddString(hwndDialog, text);
}
親から
dialog.setData(text);
UpdateWindow(hWndDialog);



529:デフォルトの名無しさん
08/12/28 21:01:37
うまくいかないのなら、その経過も書いてよ

530:デフォルトの名無しさん
08/12/28 22:13:09
親から送る
ComboBox_AddString( GetDlgItem( hWndDialog, IDC_COMBOBOX), text);

531:デフォルトの名無しさん
08/12/28 23:12:16
>>530
おっしゃるとおりにやってみたのですが、現象は変わりませんでした。
現象は、モードレスダイアログにあるコンボの中身が空のままです。
ただ、 num = (int)SendMessage(GetDlgItem( hWndDialog, IDC_COMBOBOX), CB_GETCOUNT, 0, 0);
でみると要素数numはちゃんと増えています。
WM_PAINTを拾ってInvalidateRectで再描画する必要があるのでしょうか。


532:デフォルトの名無しさん
08/12/28 23:29:03
>モードレスダイアログにあるコンボの中身が空のままです。
ポインタ操作間違えて文字化けしているだけじゃないのか?

533:デフォルトの名無しさん
08/12/28 23:50:08
そもそもどこの時点でしけてんだよ
まず、モードレスダイアログ自身に同じ処理を書くと成功すんのか?それ

534:デフォルトの名無しさん
08/12/29 02:31:03
コンボボックスのリストの部分のサイズどうなってる?
コンボにフォーカスして↑↓キー入れてみたらちゃんと追加されてるとか

535:デフォルトの名無しさん
08/12/30 17:54:28
ボタンが無効かどうかを調べるにはどうすればいいんですか?

536:デフォルトの名無しさん
08/12/30 18:08:08
IsWindowEnabled()

537:デフォルトの名無しさん
08/12/30 18:24:57
ありがとうございますっ

538:デフォルトの名無しさん
08/12/30 22:10:54
Visual C++ 2005 Express+Windows Platform SDKの環境なのですが、
実行時にメニューバーの表示/非表示を切り替えたいのですが、
どういった方法がありますでしょうか?

539:デフォルトの名無しさん
08/12/30 22:18:26
メニューバーをツールバーコントロールで作成しておいて、
EnableWindow( hWndToolBar, ( IsWindowEnabled( hWndToolBar) == FALSE);

540:デフォルトの名無しさん
08/12/30 22:19:21
しまった、カッコが一個たらね。

541:デフォルトの名無しさん
08/12/31 04:46:19
別の方法で解決しましたが、レスありがとうございました


542:デフォルトの名無しさん
08/12/31 22:52:19
どうやって解決したのか書いてけよ
クソだな
根っからのクソ
育ちが悪すぎる
親、何?誰?かなりクソでしょ?
教育失敗してる

543:デフォルトの名無しさん
08/12/31 23:51:34
今やるならC#で始めるほうがいいよな>初心者
ペゾルド本もC#だし。

544:デフォルトの名無しさん
09/01/01 02:50:34
ネコ以下でした…

545:デフォルトの名無しさん
09/01/01 11:15:15
vcprojからnmakeに変換する方法があれば教えてください。

546:デフォルトの名無しさん
09/01/01 13:00:22
VC6はメニューにあるね

547:デフォルトの名無しさん
09/01/01 13:14:00
2002以降無くなったな、便利だったんだが・・・

548:デフォルトの名無しさん
09/01/01 13:49:40
>>546,547
レスありがとうございます。
探して見つかったら報告します。

549:デフォルトの名無しさん
09/01/01 21:57:36
#include <fstream>
char *textdata;
void main(){
ifstream fin;
fin.open("test.txt",ios::binary);

この後、textdataにtest.txtのデータをコピーしたいのですが
test.txtはeofの後にもデータがあります。
それも含めて、ファイルの最後までデータを読み込みコピーするには
どうすれば良いですか?

550:デフォルトの名無しさん
09/01/01 22:13:27
そういう関数の中でeofチェックしてるはずだから
eofチェックしない処理を自作する。

551:デフォルトの名無しさん
09/01/01 23:41:29
できません

552:デフォルトの名無しさん
09/01/02 07:50:04
>>549
eofのあとにデータがあるんじゃなくて、eofの判定をミスってるだけだろ。

553:デフォルトの名無しさん
09/01/02 08:04:37
>>549
ソースを出してくれ

554:デフォルトの名無しさん
09/01/02 11:28:48
#include <fstream>
#include <iostream>

using namespace std;
char textdata;

void main(){
ifstream fin;
fin.open("test.txt",ios::binary);
while(!fin.eof()){
fin.get(textdata);
cout << textdata;
}
getchar();

最初から作ったらできてたお

555:デフォルトの名無しさん
09/01/03 01:38:20
すいません。質問です。

プリコンパイル済みヘッダーを使用する設定にして、
ソースにプリコンパイル済みヘッダーを include しないと、
「プリコンパイル ヘッダーを検索中に不明な EOF が見つかりました」
というエラーが出るのですが、
これは全部のソースに、プリコンパイル ヘッダーを include しないといけないのでしょうか?

556:デフォルトの名無しさん
09/01/03 03:10:17
>>555
すべての cpp ソースの頭に
#include "stdafx.h"
と書けば解決する。

557:デフォルトの名無しさん
09/01/03 03:32:56
つまり「全部のソースに、プリコンパイル ヘッダーを include しないといけない」というわけだ。

558:デフォルトの名無しさん
09/01/03 10:01:52
>>556さん
>>557さん
ありがとうございます。

やはりそうなのですか。
ところで、何で全部のソースに書かないといけないのでしょうか?

自分のイメージでは、プリコンパイルヘッダーって、
ヘッダーファイルをまとめたヘッダーファイルみたいな物と思っています。

別にプリコンパイルヘッダーに登録されているヘッダーファイルが
必要じゃない場合とかも、そのソースに include しないとエラーが出るっていうのが、
いまいち納得できませんでした。

何か自分は考え違いをしているのでしょうか?

559:デフォルトの名無しさん
09/01/03 10:38:47
>>558
プリコンパイルヘッダーを使用する/しないは、全体の設定のほかに
個別のソースごとに設定できる。
必要なけりゃそれで除外すればいい。

560:デフォルトの名無しさん
09/01/03 10:55:22
>>558
プリコンパイルヘッダはコンパイル前にあらかじめヘッダーをコンパイルして結果を保存し、再利用してコンパイルを高速化するためのもの。
だからプリコンパイルヘッダを使用すると指定したモジュールのヘッダー読み込みの順序が同じでなければならない。そのために各ファイルの先頭でstdafx.hを読み込むようにしている。


561:デフォルトの名無しさん
09/01/03 20:20:54
イベントのハンドルが引数になってる場合はどうやって渡せばいいんですか?


562:デフォルトの名無しさん
09/01/03 21:23:14
warning C4731: 'Mul' : インライン アセンブラ コードにより変更されたフレーム ポインタ レジスタ 'ebp' です。

この警告をなくす方法を教えてください。もしくは気にしなくても良いのでしょうか?
MSに URLリンク(msdn.microsoft.com) 悪い例のサンプルがあるんですけど
対応方法が載ってません。

563:デフォルトの名無しさん
09/01/03 21:59:54
ようするにebp/espを書き換えなければ済む話。
警告無視で書き換えるなら、__asmを入るときの値を出るまでに復元しろということ。

564:デフォルトの名無しさん
09/01/03 23:47:30
警告0の正しい?コードを書こうかなと思ってコード書き直してるのですが、
ReadProcessMemory(ProcessHandle, reinterpret_cast<LPVOID>(ModuleAddress+data.offset.x), &x, 4, NULL);
こう書くとwarning C4312: 'reinterpret_cast' : 'DWORD' からより大きいサイズの 'LPVOID' へ変換します。
とでるのですが、正しい使い方はどうなるんでしょうか?
ModuleAddressとdata.offset.xはどちらもDWORDです。


565:デフォルトの名無しさん
09/01/04 00:12:20
それは、Win64だとvoid*も64ビットだから気を付けろという警告。
キャスト元をDWORDからULONG_PTRなんかにすればいい。
DWORDはWin64でも32ビットのままだが、ULONG_PTRはポインタと同じく64ビットになるという整数型。

566:デフォルトの名無しさん
09/01/04 01:17:12
Windows XP SP3 Visual Studio 2003 の話です
ソースAがメインのソースとして
ソースBとCが他にあるとします.
ある構造体の宣言をソースCでし,ソースAとBでその構造体を使いたいものとします.
そのときコンパイルすると
構造体の再定義というエラー
error LNK2005: "その構造体は 既に ****.obj で定義されています。
とでます.
どのように宣言すればよいでしょうか?




567:デフォルトの名無しさん
09/01/04 01:27:40
グローバル変数の実体は一つだけにして、他ソースからはexternで参照する。

568:デフォルトの名無しさん
09/01/04 01:29:39
コンパイルエラーが出るなんて糞質問はコード公開必須だボケが

569:566
09/01/04 01:31:04
すみません別ファイルへのリンクに
#include "ソースC.cpp"
とかいう変なことしてました.

570:デフォルトの名無しさん
09/01/04 10:03:30
>>564
プロジェクトのオプションに64bit互換のチェックの有無があるからoffにする。


571:562
09/01/04 11:48:44
>>563
ありがとう。
pushとpopをしておけば良いのですね。

572:デフォルトの名無しさん
09/01/04 12:50:31
Visual C++本体の扱い方を解説しているサイトはありますか?
コーディングはできるんですが、ソフトの機能を把握しておきたいのです
ちなみに2008です

573:デフォルトの名無しさん
09/01/04 14:13:05
>>572
ms-help://MS.VSCC.v90/MS.MSDNQTR.v90.ja/dv_vstoc/html/06ddebea-2c83-4a45-bb48-6264c797ed93.htm

574:デフォルトの名無しさん
09/01/04 22:13:13
exeのディレクトリにあるファイルは読み込めるのに
exeのディレクトリのフォルダのファイルは読み込もうとするとエラーが出ます。
何故ですか?

ifstream fin;

OK↓
fin.open("test.txt",ios_base::binary);

NG↓
fin.open("data/test.txt",ios_base::binary);

575:574
09/01/04 22:21:20
どうやらファイルを見つけていないようです。

576:574
09/01/04 22:40:00
単なるスペルミスでした。

577:デフォルトの名無しさん
09/01/05 22:18:38
動的に作成した画像ファイルを読み込むとエラーになるんですが
なんとかなりませんか?

578:デフォルトの名無しさん
09/01/05 22:23:39
エラーの内容から原因を推測して修正してください

579:デフォルトの名無しさん
09/01/06 01:29:38
short int からintへ,int からshort intへの代入で,
特に型変換を記述しないで実行したんだけど,エラーも出ずに普通に動いた.
これ放置してて問題ない?それともちゃんと型変換した方がいい?

580:デフォルトの名無しさん
09/01/06 01:31:05
コンパイラの警告レベルを高くしたらコンパイル時に文句言うんじゃね、と無責任に答える

581:デフォルトの名無しさん
09/01/06 01:31:58
その場合でもshort→intのように無条件に大きくなる方はそのままでも平気。

582:デフォルトの名無しさん
09/01/06 01:42:53
「const unsigned char *」 型とはどういう扱い方をするものですか?

_ismbslead、_ismbstrail関数を使って、文字列の中の2バイト文字を判別したいのですが・・・


int _ismbslead(
const unsigned char *str,
const unsigned char *current
);

この引数の渡し方の意味がわからないです。


CString型、もしくはこいつをコピーしたchar型の配列の各バイトをチェックするロジックを作りたいのですが、
第一、第二引数どちらについても、char*型で渡そうとすると「const unsigned char*に変換できません」というコンパイルエラーが。

この関数はどうやって使うモノなのか教えてください

583:デフォルトの名無しさん
09/01/06 01:43:13
ありがとう,とりあえずはshort int から int へはそのまま放置しときます.

584:デフォルトの名無しさん
09/01/06 10:21:57
>>582
キャスト

585:デフォルトの名無しさん
09/01/06 10:52:44
constというのは呼び出す関数の内部で値を書き換えないようにするものなので
この場合無視していい
char * を unsigned char *にキャストする

586:デフォルトの名無しさん
09/01/06 17:44:30
FileStreamとBinaryReaderを使って、Byte型の配列を、読み込んだファイルのデータ長に合わせて宣言したいです。

//入力ストリーム作成
FileStream^ fs = gcnew FileStream(fnp, FileMode::Open);

//バイナリリーダー作成
BinaryReader^ br = gcnew BinaryReader(fs);

//データ読み込み
int len = (int)fs->Length; //データ長
System::Byte data[len];

こうやると、C2057とC2466、C2133が出て、ファイルを読み込んでからByteの宣言は出来てないみたいなんですが、
どうすればファイルを読み込んだ後にByteの配列を宣言出来ますか?

587:デフォルトの名無しさん
09/01/06 19:08:36
>>586
array<System::Byte>^ data = gcnew array<System::Byte>(len);
もっとも、File::ReadAllBytesを使えば1発で済むぞ。

588:デフォルトの名無しさん
09/01/06 19:30:25
>>586
ありがとうございます。もうひと頑張りしてきます。

589:デフォルトの名無しさん
09/01/06 19:30:55
>>588
>>587に安価ミスした・・・orz

590:デフォルトの名無しさん
09/01/07 10:13:31
VC++でHashTab Shell Extensionみたいにプロパティをいじるようなソフトを作りたいんですが、何をすればいいかまったくわかりません。。
どなたかヘルプミーお願いします。

591:デフォルトの名無しさん
09/01/07 10:48:34
HashTab Shell Extensionは知らんけど、まさにShell Extensionで調べるのがいいんじゃ?
絞るならCOMもつけるといいかも

592:デフォルトの名無しさん
09/01/07 12:30:36
>>591
サンクス!
とりあえずとっかかりができました。これからいろいろ調べてみようと思います。

593:デフォルトの名無しさん
09/01/07 18:34:46
Stringに\nで改行とかって含めることできますか?
それかString以外の別の型使わなきゃだめですか?
テキストボックスに改行付きで変数で一括で突っ込みたいんですが・・・

594:デフォルトの名無しさん
09/01/07 18:55:30
>>593
Stringということは.NETか?
\r\n

595:デフォルトの名無しさん
09/01/07 19:47:07
.NETならEnvironment.NewLine、普通のC++ならエディットボックスはWindowsの\r\nで。

596:デフォルトの名無しさん
09/01/07 20:42:21
>>594,595
できました、ありがとうございます。

597:デフォルトの名無しさん
09/01/07 23:59:31
CImageで読み込んだ画像ファイルに直接直線を描画したいのですが、
何か方法はありませんでしょうか?
Visual Studio2008でプログラミングをしています。

598:デフォルトの名無しさん
09/01/08 00:39:42
LineTo( hDC, nEndX, nEndY);

599:597
09/01/08 01:12:20
画面上ではなく、Cimageの読み込んだ画像のピクセルを直接書き換えるように
直線を書き込みたいのですが、何か方法はないですか??

600:デフォルトの名無しさん
09/01/08 06:41:30
LineTo

601:デフォルトの名無しさん
09/01/08 08:08:14
>>597>>599
CImageにはGetDC/ReleaseDCメンバ関数がある。

602:デフォルトの名無しさん
09/01/09 19:10:49
2008の表示>ツールボックスの文字色はデフォが黒なんだけど見づらいので
どこをいじれば変えられますか?

603:デフォルトの名無しさん
09/01/09 22:33:29
初心者です教えてください

604:デフォルトの名無しさん
09/01/09 23:24:16
このソフトは初心者には扱えません。

605:デフォルトの名無しさん
09/01/11 09:13:26
Editにキーボードで入力するとEN_UPDATEが発生するんですけど
SetWindowTextで文字列を挿入するとEN_UPDATEイベントが発生しません。
どうすれば良いでしょうか?


606:デフォルトの名無しさん
09/01/11 09:23:58
オバマじゃだめなのか?

607:デフォルトの名無しさん
09/01/11 16:28:57
#include <iostream>
#include <string>

using namespace std;

void main(){
wcout<<L"test";
wcout<<L"うんこ";
getchar();
}

なぜかL"うんこ"が表示されません。
っていうか日本語が表示されないのですが
なんとかしてください。

608:デフォルトの名無しさん
09/01/11 16:31:09
ロケール

609:デフォルトの名無しさん
09/01/11 16:48:54
うぁありがとぉぉおおう

610:デフォルトの名無しさん
09/01/12 11:36:16
一度壊れたインテリセンス情報って復活できる?
ncbファイル消して開きなおしても、入力支援できない・・・

611:デフォルトの名無しさん
09/01/13 10:46:21
プログラムではなくて、機能の質問なんですが、
#endifと最後に打った瞬間、上記文(#endifから上)の文字が全て灰色に変わりました。
(#ifdefなら青くなる筈だが、灰色に…)
色付に戻したいです。どうすれば良いのでしょうか?
よろしくお願いします。

612:デフォルトの名無しさん
09/01/13 11:10:49
そりゃコンパイル条件から外れたからだろう

613:デフォルトの名無しさん
09/01/13 11:48:59
アウトラインとかは関係ないのでしょうか?

614:611
09/01/13 13:51:34
自己解決しました。
一番最初のプリプロセッサ命令のスペルミスしてた。
数時間格闘した結末はやはり呆気ないものだな…。

615:デフォルトの名無しさん
09/01/13 14:37:20
コンパイル条件から外れた、で意味わからなかったのかよ・・・

616:デフォルトの名無しさん
09/01/13 15:07:46
すんません。実行時にフォームのタイトルバーに文字を指定する方法を教えてください。。。

617:デフォルトの名無しさん
09/01/13 15:12:55
あ、すんません。visual c++ 2008です・・

618:デフォルトの名無しさん
09/01/13 15:23:06
あ、すんません。普通にText = "aaa";でいけました。ほんとすんません

619:デフォルトの名無しさん
09/01/13 15:27:11
ゆとり死ね
市ねじゃなくて死ね

620:デフォルトの名無しさん
09/01/13 15:39:18
CoInitializeで未解決のトークンとリンクエラーになるのですが何かlibを追加しなくてはダメですか?

621:デフォルトの名無しさん
09/01/13 15:57:13
ole32.lib だと思うが、普通はわざわざ指定しないけどな?

622:デフォルトの名無しさん
09/01/13 18:29:48
>>621
普通は指定しないですよね?
でもなぜかしれを追加したらリンク通りました・・・
ありがとうございます。

623:611
09/01/13 19:22:32
>>615
フフ、プログラミングでわからない事なんて、しょっちゅうよ…

624:デフォルトの名無しさん
09/01/15 01:15:15
・Visual C++2008 express
・開発環境・・WindowsVista

Debugモード、Releaseモード共にコンパイルは通ります。
Debugモードでデバッグ無しで実行は問題なく動作し、正常に終了します。
Releaseモードでデバッグ無しで実行した際には、途中でOSからのエラー、

----.exeは動作を終了しました。
問題が発生したため、プログラムが正しく動作しなくなりました。

というメッセージが出、途中で終了します。また、エラーが出るタイミングも
まちまちです。
これはどういう問題かと思われますか?タイミング問題でしょうか?


625:デフォルトの名無しさん
09/01/15 01:24:30
変数の初期化し忘れとかそういう方向で

626:デフォルトの名無しさん
09/01/15 08:00:10
Windows XP、Visual C++ 2003 でダイアログアプリを作っています。
アプリを一つだけ起動した状態は問題ないんですが、二つ以上起動すると
タスクバーのボタンがグループ化されたときに「(2) TODO: <ファイルの説明>」というような
表記になってしまいます。
このような文言らしきものがリソースの VS_VERSION_INFO にあったので
適当に編集してみたのですが、表記は変わりませんでした。
どうしたらタスクバーの表記が正しいものになるでしょうか?

627:624
09/01/15 09:05:56
>>625
やはり、考えられるのはそれぐらいになりますよね・・・
ありがとうございました

628:デフォルトの名無しさん
09/01/15 10:37:15
>>626
以下のレジストリから該当アプリを削除して再度実行する。
HKEY_CURRENT_USER\Software\Microsoft\Windows\ShellNoRoam\MUICache

629:デフォルトの名無しさん
09/01/15 10:56:59
基本クラスをCFormViewで作成したときに
これのウィンドウハンドルはm_hWndでしょうか?

630:デフォルトの名無しさん
09/01/15 17:56:35
GetSafeHwnd()使え。

631:デフォルトの名無しさん
09/01/15 18:57:02
メイクしたユーザの名前を実行ファイルに
文字列として埋め込むことって可能ですか?

632:デフォルトの名無しさん
09/01/15 19:04:25
可能

633:626
09/01/15 19:10:04
>>628
おおお 初回起動時の値をずっと保持しているのですね。
消して再実行したらきちんと編集した値に更新されました。
どうもありがとうございました。

634:631
09/01/15 19:20:38
>>632
どうすればできますか?

635:デフォルトの名無しさん
09/01/15 19:21:23
>>634
#define hoge "うんこタロウ"

636:631
09/01/15 19:29:40
>>635
それだと"うんこタロウ"以外がメイクした時にも
"うんこタロウ"と埋め込まれると思うのですが・・・


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

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