★初心者にVisual C++を教えるスレ★ Part33

このエントリーをはてなブックマークに追加
1デフォルトの名無しさん
Visual C++入門者・初心者からの質問を、
お兄ちゃんお姉ちゃん達が優しく、時には厳しく回答してくれるスレッドです。

■質問するにあたって
・エラーや警告のときはエラーメッセージを書きましょう。
・開発環境も書きましょう、特にWindowsForm、MFC、Win32アプリケーションの区別。
・できるだけ具体的に。

質問の仕方については次のページが大変参考になります。
http://www.hyuki.com/writing/techask.html

■回答するにあたって
・回答する場合はその答えに至るための「コツ」も書いてあげると良いでしょう。
 (MSDNのどの項目だとか、何のキーワードでGoogleするとか)
・ネタや煽りは軽く流しましょう。

過去スレ、関連スレなどは>>2-5辺り。
2デフォルトの名無しさん:2009/02/22(日) 17:45:47
3デフォルトの名無しさん:2009/02/22(日) 17:46:17
4デフォルトの名無しさん:2009/02/22(日) 17:47:42
【関連スレ】
■MFC相談室 mfc20d.dll■
http://pc11.2ch.net/test/read.cgi/tech/1230219816/
Win32API質問箱 Build76
http://pc11.2ch.net/test/read.cgi/tech/1233622578/
【C++】 DirectX初心者質問スレ Part21 【C】
http://pc11.2ch.net/test/read.cgi/tech/1229078397/
C言語なら俺に聞け(入門篇) Part 45
http://pc11.2ch.net/test/read.cgi/tech/1235044065/
【初心者お断り】ガチ規格準拠C専用スレ Part133
http://pc11.2ch.net/test/read.cgi/tech/1201153965/
C++相談室 part66
http://pc11.2ch.net/test/read.cgi/tech/1234420483/
C/C++の宿題片付けます 122代目
http://pc11.2ch.net/test/read.cgi/tech/1232029287/
【初心者歓迎】C/C++室 Ver.64【環境依存OK】
http://pc11.2ch.net/test/read.cgi/tech/1234193151/


【関連サイト】
猫でもわかるプログラミング
http://www.kumei.ne.jp/c_lang/
MSDN ライブラリ ※変更された
http://msdn.microsoft.com/library/ja/
http://msdn2.microsoft.com/ja-jp/library/ (2005のことはこっち)
Platform SDK Update ※変更された
http://www.microsoft.com/downloads/details.aspx?FamilyId=A55B6B43-E24F-4EA3-A93E-40C0EC4F68E5&displaylang=en
Google
http://www.google.co.jp/
5デフォルトの名無しさん:2009/02/22(日) 17:48:57
6デフォルトの名無しさん:2009/02/22(日) 17:49:23
Platform SDKの中で一番新しいのはこっち
Microsoft Windows Server 2003 R2 Platform SDK Web Install
http://www.microsoft.com/downloads/details.aspx?FamilyID=0baf2b35-c656-4969-ace8-e4c0c0716adb&DisplayLang=en
(ISO版などあり)

これ以降、Platform SDK + .NET Framework SDKとして
Windows SDKが公開されていて、その中で一番新しいのはこれ。
Windows SDK for Windows Server 2008 and .NET Framework 3.5
http://www.microsoft.com/downloads/details.aspx?FamilyID=f26b1aa4-741a-433a-9be5-fa919850bdbf&DisplayLang=en
少し前のバージョン(Vista + .NET 3.0の初期版)には日本語版もあったけど、
日本語化されているのは専ら.NET Framework部分だけ。

VC6対応の、最後のPSDKはここ。
http://www.microsoft.com/msdownload/platformsdk/sdkupdate/psdk-full.htm



テンプレ終わり。
7デフォルトの名無しさん:2009/02/22(日) 17:57:18
はじめまして。
CRLのwindowsフォームアプリケーションで、
年号を入れると西暦で表示されるプログラムを作るのに
int heisei;
heisei=int::Parse(textBox->Text);
int seireki;
seireki=heisei+1988;
label1->Text=L"平成"+heisei+L"年は、西暦"+seireki()+L"年です。";
とやって成功しました。しかし、模範解答は
int heisei;
heisei=int::Parse(textBox->Text);
int seireki;
seireki=heisei+1988;
label1->Text=L"平成"+heisei.ToString()+L"年は、西暦"+seireki.ToString()+L"年です。";
となっていました。
なぜ前者でも成功したのでしょうか。ToString()は何の意味があるのでしょうか?必要なんでしょうか?
8デフォルトの名無しさん:2009/02/22(日) 19:23:01
1乙

これも追加で、本当の最新、もちろんβだけど。
Microsoft Windows SDK for Windows 7 and .NET Framework 3.5 SP1: BETA
http://www.microsoft.com/downloadS/details.aspx?familyid=A91DC12A-FC94-4027-B67E-46BAB7C5226C&displaylang=en
9デフォルトの名無しさん:2009/02/22(日) 19:29:16
>>7
文字列連結は、String同士だけでなく、StringとObjectでも可能。

前者だと+の中に挟まれたint型の変数は
Object型にボックス化されてから連結されるというわけ。

だから、前者でもうまくいくけど、ボックス化は高コストなので
それを避けている後者のほうが望ましい。
10デフォルトの名無しさん:2009/02/22(日) 22:14:39
>7
VBをお勧めする
11デフォルトの名無しさん:2009/02/22(日) 22:46:54
ファイルのプロパティで表示される情報を取り込む方法を教えてくれよ。
12デフォルトの名無しさん:2009/02/22(日) 23:25:36
api使う
13デフォルトの名無しさん:2009/02/23(月) 05:25:52
ひまわりの方がいいんじゃね?
14デフォルトの名無しさん:2009/02/23(月) 09:15:44
VC++2008です。

プロジェクトディレクトリをそのまま、別のPCにコピーして作業を再開したら、
「ファイルが移動された」というコンパイルエラーが出て、リリース(デバッグは出来る)
出来なくなってしまいました。

ファイルの位置の再定義はどこで出来ますか?
15デフォルトの名無しさん:2009/02/23(月) 11:02:24
普通は他人が作ったサンプルだってそのままビルドすれば動くし、
プロジェクトなしでソースのみの場合は新しくプロジェクト作ってそこへソース突っ込むだけだし。
自分が書いた?ソースさえビルドできない状況が全く理解できない。
16デフォルトの名無しさん:2009/02/23(月) 12:34:39
>>15
でも・・でも・・(´;ω;`)ブワッ

stdfxだっけか、が移動したとか出て。
確かに、前のPCのディレクトリの名前が参照されてるのですよ
17デフォルトの名無しさん:2009/02/23(月) 12:38:46
一度クリーンしてリビルドしてみ
18デフォルトの名無しさん:2009/02/23(月) 13:31:06
なるほど、クリーンで・・・。
ありがとうございます!
19デフォルトの名無しさん:2009/02/23(月) 17:31:19
フォームアプリケーションで作ったフォームを
印刷する方法が分かりません><
教えてください。
20デフォルトの名無しさん:2009/02/23(月) 17:55:20
どんなフォームよ。
ボタンが並んでるウィンドウを印刷したいのか?
21デフォルトの名無しさん:2009/02/23(月) 18:21:16
そうです。ボタンと、テキストボックスに文字が入っています。
MFCでこういうことが出来るんだと思ったら、CFormViewにすると
なぜか、印刷機能が付けられなかったんです。
22デフォルトの名無しさん:2009/02/23(月) 21:32:06
>CFormViewにすると
>なぜか、印刷機能が付けられなかったんです。
仕様。
23デフォルトの名無しさん:2009/02/24(火) 09:11:47
フォームアプリの場合、計算結果を(参考書がやってるみたいに)
textBoxとかの中身を抽出して、フォントとか指定して、印刷に出力
するのが一般的?
24デフォルトの名無しさん:2009/02/25(水) 01:40:33
VC++ 6.0でFLASHを再生するソフトウエアを作る場合、
shockwaveflashのocxコンポーネントを追加しますが、
そのときにコントロールに対してInvokeHelper関数で、
swfファイルのオリジナルの幅や高さって取得できるでしょうか?
25デフォルトの名無しさん:2009/02/25(水) 17:39:49
visualC#の参考書って、visualC++用に購入してもおk?
26デフォルトの名無しさん:2009/02/25(水) 17:45:26
一つだけというのならやめとけ
27デフォルトの名無しさん:2009/02/25(水) 18:04:35
超入門書はc++の持ってるんだけど、
パーフェクトマスターシリーズがC#しかないんよ。

「.」が、「::」とか「->」になるだけだよね。
28デフォルトの名無しさん:2009/02/25(水) 18:23:21
CLRアプリ作るつもりなら、役に立つと思う。
29デフォルトの名無しさん:2009/02/25(水) 18:25:18
>>27
「.」もあるんだが。
30デフォルトの名無しさん:2009/02/26(木) 11:14:35
visual studio2008 XPです。

印刷機能の実装が分からないです。

フォームのtextBox1に計算結果が返されるとして、
例えば、textBox1の中身を印刷するには、
最低限何をすればいいですか?
31デフォルトの名無しさん:2009/02/26(木) 11:23:16
環境によるけど、文字列をプリンターに出す程度なら
そこらのサンプルコード切り貼りだけでいけるぞ。
32デフォルトの名無しさん:2009/02/26(木) 11:27:32
C#しか無くないですか?

C++に変換しても、ビルドできません><
33デフォルトの名無しさん:2009/02/26(木) 12:07:04
付属のドキュメントのサンプル切り貼りでいけたが。
プロジェクト新規作成してtextBox1とprintDialog1を貼り付けて
↓を適当な位置に入れただけ。
using namespace System::Drawing::Printing;

System::Drawing::Printing::PrintDocument^ docToPrint;

Form1(void)
{
InitializeComponent();
docToPrint = gcnew PrintDocument;
docToPrint->PrintPage += gcnew
System::Drawing::Printing::PrintPageEventHandler
(this, &Form1::document_PrintPage);
}

private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) {
System::Windows::Forms::DialogResult result;
printDialog1->Document = docToPrint;
result = printDialog1->ShowDialog();
if (result == ::System::Windows::Forms::DialogResult::OK)
{
docToPrint->Print();
}
}

void document_PrintPage( Object^ /*sender*/, System::Drawing::Printing::PrintPageEventArgs^ e )
{
String^ text = textBox1->Text;
System::Drawing::Font^ printFont = gcnew System::Drawing::Font( "Arial",35,System::Drawing::FontStyle::Regular );
e->Graphics->DrawString( text, printFont, System::Drawing::Brushes::Black, 10, 10 );
}
34デフォルトの名無しさん:2009/02/26(木) 12:46:38
ウホッ。ありがとうございます。ただ・・

(this, &Form1::document_PrintPage);
↑の部分で


error C2039: 'document_PrintPage' : '印刷2ch::Form1' のメンバではありません。

と、出てしまうんですが・・。
35デフォルトの名無しさん:2009/02/26(木) 12:52:40
それは
void document_PrintPage( Object^ /*sender*/, System::Drawing::Printing::PrintPageEventArgs^ e )
この関数だから、それに合わせればいい。
36デフォルトの名無しさん:2009/02/26(木) 12:53:27
じゃぁ、こうですね(・∀・)

(this, &Form1::printDocument1_PrintPage);
37デフォルトの名無しさん:2009/02/26(木) 12:53:53
あ、サンプル通りクラス定義内に書いたからクラス名省略されてるけど
メンバー関数だよ、どれも
38デフォルトの名無しさん:2009/02/26(木) 13:09:12
なぜか、ファイルに出力されるんですが・・。
39デフォルトの名無しさん:2009/02/26(木) 13:21:27
あ、いけました。でかいフォントですな。

ありがとうございます!!
40デフォルトの名無しさん:2009/03/02(月) 00:32:15
初めてVisual C++を使ってみました。
int main(array<System::String ^> ^args)
いきなり ^ という単項演算子らしき物が出来たのですが、コレはなんですか??
とりあえずarray以下無視しても問題なく動いたのですが。
41デフォルトの名無しさん:2009/03/02(月) 00:35:04
C++をやりたいのかC++/CLIをやりたいのかで返答は変わる
42デフォルトの名無しさん:2009/03/02(月) 00:36:05
>>41
標準のC++です。
43デフォルトの名無しさん:2009/03/02(月) 00:39:19
VC++2008EEで
#include <iostream.h>

int main()
{
cout << "やぁ、こんちは。" << endl;
return 0;
}
はどこでプログラミングすればいいんですか? 普通に新規作成から何か設定するんですか?warning C4627: '#include <"stdafx.h>': プリコンパイル済みヘッダーの使用を検索中にスキップされました
1> ディレクティブを 'stdafx.h' に追加するか、プリコンパイル済みヘッダーをビルドし直します
が出てきます。
44デフォルトの名無しさん:2009/03/02(月) 01:28:36
>>42
なら作ったプロジェクトが間違ってる。
>>40はC++/CLIのプロジェクト。
45デフォルトの名無しさん:2009/03/02(月) 01:37:36
>>43
Win32 コンソールアプリケーションのプロジェクトを作れ。
プリコンパイル済みヘッダーを使いたくなければプロジェクトの設定から無効にしろ。
あと、iostream.hは古いヘッダで今のVC++には無い。
46デフォルトの名無しさん:2009/03/02(月) 04:20:56
VC++2008でフォームアプリケーションを作成しています。
自動生成されるフォームの中に動的にラベルを複数作成しているのですが、
作成されたラベルのクリック時のイベントハンドラが全て同じイベントを呼び出す場合、
クリックしたボタンを判別し、その名前や座標などを表示させたいのですが、
以下のクリックイベントにどのようなプログラムを入れたら良いでしょうか?
もしよろしければ教えて下さい、お願いします。
private: System::Void node_Click(System::Object^ sender, System::EventArgs^ e)
{
}
また、もし他の方法で良いものがありましたら、教えて下さい。m(__)m
47デフォルトの名無しさん:2009/03/02(月) 06:37:22
>>45わかりました。ありがとうございます。
48デフォルトの名無しさん:2009/03/02(月) 06:55:04
Senderみつおに聞けば教えてくれる
49デフォルトの名無しさん:2009/03/02(月) 10:35:58
ナハナハ
5040:2009/03/02(月) 20:13:26
>>44
ありがとうございます。
では標準C++でコンソールアプリケーションを作りたいときは
プロジェクトの種類
をWin32にして
Win32 コンソール アプリケーション
にすれば良いですか?
51デフォルトの名無しさん:2009/03/02(月) 21:01:10
訊く前にマニュアル読むなり試すなりしなさい
5240:2009/03/02(月) 22:09:19
>>50
とりあえずそれでやってみて問題無いようです。
おそらくコレで良いということですね。
5340:2009/03/02(月) 22:10:02
安価間違えました。
>>51
54デフォルトの名無しさん:2009/03/05(木) 00:00:52
>>46
>クリックしたボタンを判別し、その名前や座標などを表示させたいのですが、

仮引数のsenderにそのクリックされたボタンが参照されてる
55デフォルトの名無しさん:2009/03/06(金) 03:12:17
C++スレで質問したら環境依存だと教えてもらったのでこっちで質問させてください

以下コピペになりますがよろしくお願いします。

ぐぐってもドキュメント見てもわからなかったんで
助言頂けると非常に助かります。
VC++2008ExpressEditionを使用しているので、どこかを変更しなければいけないのか…


質問の内容は…
猫でもわかるプログラミングSDK第123章
ttp://www.kumei.ne.jp/c_lang/sdk2/sdk_123.htm

これと同じプログラムを組んでも、WndProc内でcase IDM_READの
hMapFile2 = OpenFileMapping(FILE_MAP_ALL_ACCESS, FALSE, "Kumei's Object");
のOpenFileMappingがNULLを返してくるんだけど
原因がまったくわかりませんorz
56デフォルトの名無しさん:2009/03/06(金) 10:37:12
CreateFileMappingが失敗してるか確かめろ
57デフォルトの名無しさん:2009/03/06(金) 14:00:07
>>56
CreateFileMappingは成功してると思います。
if (!hMapFile1)の部分にも引っかからず、GetLastErrorでも0を返してきましたので…
58デフォルトの名無しさん:2009/03/06(金) 14:39:40
>>57
OpenFileMappingの後のGetLastErrorは何を返す?
59デフォルトの名無しさん:2009/03/06(金) 14:48:29
それが…
CreateFileMappingは0を返して正常だといってるのに
OpenFileMappingの後のGetLastErrorは2を返してきて…
指定されたファイルが見つかりませんと。
6055:2009/03/06(金) 15:25:36
55です。長時間悩み、調べ
自分のタイプミスからマッピングオブジェクトの名前の不一致など疑い
試行錯誤した結果…

CloseHandle(hMapFile1)をコメント化し、無効にすると
OpenFileMappingが成功しました。
たぶん解決の糸口になるのでCloseHandleなどのタイミングなどを
調べていけばいいかなという結果に。。。

アドバイスをくれた>>56,>>58さん、サンクスでした
61デフォルトの名無しさん:2009/03/06(金) 22:54:18
VC++2008EEでcout<<" "<<endlはどうやって使うのでしょうか?
62デフォルトの名無しさん:2009/03/06(金) 23:00:27
普通はそんなの使わない
63デフォルトの名無しさん:2009/03/06(金) 23:03:23
>>62
普通はどんなものを使うのですか?
手元の本はそれを使った説明ばかりなもので・・・
64デフォルトの名無しさん:2009/03/06(金) 23:15:40
>手元の本はそれを使った説明ばかりなもので・・・
使い方は、その本の最初のほうに書いてある。
書いていなかったら、そんな本は参考にならんから捨てろ。
65デフォルトの名無しさん:2009/03/06(金) 23:53:50
>>64ありがとうございました。
一応捨てずに残しておきたいと思います
66デフォルトの名無しさん:2009/03/06(金) 23:56:42
質問です。Visual C++ 6.0のSpy++に付いている
ウインドウファインダーコントロール
(ドラッグしてディスプレイ上の任意のウインドウを選択するヤツ)
はVC++6.0のActiveXコントロールにないのでしょうか。
またはそれに似たツールなどはどこかにありませんでしょうか
67デフォルトの名無しさん:2009/03/06(金) 23:59:10
http://www.codeguru.com/cpp/controls/controls/article.php/c2149#more
ありました、失礼しましたm(_ _)m
68デフォルトの名無しさん:2009/03/07(土) 00:24:52
>>65
もし、その本に#include <iostream.h>とか書いてあるんだったら捨てるべき。古本屋でもいいけど。
それは古代のものだからVisual C++ 2008には搭載されていないというだけのこと。
69デフォルトの名無しさん:2009/03/07(土) 07:04:19
マウスがのってるウインドウ選択するの意外に簡単だな
WindowFromPoint だけ知ってれば作れる
70デフォルトの名無しさん:2009/03/07(土) 19:49:30
>>66-67の者です。
Spy++と同等のウインドウ選択ツールもどきは無事使うことが出来ました。
しかし選択後(ウインドウ上でマウスを放した後も)
選択されたウインドウの周囲には枠の表示が残ってしまうので、
それをなんとか消したいと思っています。

選択されたウインドウハンドルが手にはいるので、
::SendMessage(選択されたハンドル,WM_PAINT,0,0); なり
::SendMessage(選択されたハンドル,WM_ERASEBKGND,0,0); なり
いろいろメッセージを送ってみたのですが、なぜか消えてくれません。
Spy++を利用して選択ウインドウにメッセージが送られていることは確認しているのですが・・・
この原因について見当の付く方教えてください。お願いします。
71デフォルトの名無しさん:2009/03/07(土) 21:04:17
表示ができたものを消せないわけがない
72デフォルトの名無しさん:2009/03/07(土) 21:10:44
>::SendMessage(選択されたハンドル,WM_PAINT,0,0);
>::SendMessage(選択されたハンドル,WM_ERASEBKGND,0,0):
どちらもトリガーになるものがないと働かないメッセージだと思うが。

::InvalidateRect() とかのね。

73デフォルトの名無しさん:2009/03/07(土) 21:42:36
InvalidateRect(ハンドゥル,NULL,TRUE);
で出来ました^^)
どうもありがとう!
74デフォルトの名無しさん:2009/03/07(土) 22:13:36
エディットに関連付けたスピンボタンについて。

pSpin->SetRange(-10, 10);
pSpin->SetPos(0);

とやっても、0が表示されないんだけど仕様??
SetPos(1)やSetPos(-1)は表示されるんだけど。。。
75デフォルトの名無しさん:2009/03/08(日) 18:20:59
C++勉強してみようと思うんですけど取り合えずは猫でも分かる〜を全部終わらせてみるってのが良いでしょうか?
76デフォルトの名無しさん:2009/03/08(日) 18:24:25
2Dシューティングゲームを作っているのですが、クラスの扱いに困っています。
敵の弾クラス(cBullet)を用意したのですが、それをうまく活かせません。
敵がそれぞれcBullet Bullet[100]といったように個別に弾を持ったのでは効率が悪い気がします。
一括して管理したいのですが、どういう構造にするとよいのでしょうか。
77デフォルトの名無しさん:2009/03/08(日) 18:32:16
>>75
自分がわかりやすいと思ったとこを参考にすればいい。
そこのやりかたが絶対唯一じゃないことさえ認識していればなんとかなるでしょ。
78デフォルトの名無しさん:2009/03/08(日) 18:36:00
>>76
自分の思った通りにやってみればいい。
画面上に存在できる弾の数だけグローバルで配列持ってもいいし。
79デフォルトの名無しさん:2009/03/08(日) 18:45:14
>>78
なるほど、まずはそれでやってみます。
ありがとうございました
8075:2009/03/08(日) 20:32:46
猫でも分かるー見てやってみたら最初っからつまづいた
VC++2008EEで説明してるサイト教えてもらえませんか・・・
81デフォルトの名無しさん:2009/03/08(日) 21:03:39
VCは初心者向けの情報は少ないし、あっても古い。
もしかしたらあるかもしれないが初心者用のサイトなんか興味ないから知らん
82デフォルトの名無しさん:2009/03/09(月) 00:30:43
>>75
自分が作りたいと思ったものを作ってみるのが一番の勉強法
83デフォルトの名無しさん:2009/03/09(月) 00:38:45
いや、それよりvc2008eeは入門サイトほとんど駄目だからつらいな
.netフレームワーク使うとこうなんのか?
スタンダード金出せば猫さん家も役に立つが
ソフトに金払う余裕ないだろうなぁ
84デフォルトの名無しさん:2009/03/09(月) 06:38:38
スタンダード金出さないと使えないのはMFCとリソースエディタ
win32なら無料で使えるから猫が全然使えないわけじゃない
ただあそこは古すぎるからコンパイルエラーぐらい自力で解決できないと無理
85デフォルトの名無しさん:2009/03/09(月) 10:04:00
ダイアログエディタが使えないのはちときついかな。
入門探すより、自分であれこれいじってみては。
86デフォルトの名無しさん:2009/03/09(月) 11:25:22
>>84
なあ古すぎる癖にシェアウェアとか猫はふざけてるよな
87デフォルトの名無しさん:2009/03/09(月) 13:16:02
VCEEで勉強するときは
#pragma warning(disable : 4996)

Unicode
あたりの情報は必須だな

そして、WinAPIでまた引っかかるとw
88デフォルトの名無しさん:2009/03/09(月) 14:09:59
VCEEって、セキュリティが強化された関数は使えないのか?
89デフォルトの名無しさん:2009/03/09(月) 14:11:19
使えるけどその関数を使った例題がほとんどないからでしょう
90デフォルトの名無しさん:2009/03/09(月) 18:33:00
すみません、どなたか教えてください

親クラスA、子クラスBともに仮想関数func()が実装されているとします

この時Aクラスのポインタ(A* pA)にBクラスのインスタンスのポインタを代入し
pA->func()
を呼び出した場合クラスAとBどちらのfunc()が呼ばれるのでしょうか

会社で実験しようと思ったんですが残業規制のせいで調べられなかったんでご存知の方ご教示くださいm(__)m
91デフォルトの名無しさん:2009/03/09(月) 18:36:29
C++の質問ならC++スレでした方がいい
92デフォルトの名無しさん:2009/03/09(月) 18:40:32
クラスA
9390:2009/03/09(月) 18:43:24
自己解決しました
クラスBですね

>>91
すみませんでした
94デフォルトの名無しさん:2009/03/09(月) 20:58:33
環境
VisualC++.NET(2003)

MFCを使ったアプリケーションを作っています。
フォームにエクセルのような格子で区切られた表のようなコントロールを貼り付けたいのですが
Webで調べてMicrosoft DataGrid Control 6.0とかMSFlexGridを使えばいい野ではないかというところまでは分かったのですが、

・MSFlexGridなんてものが.NET frameworkコンポーネントにもCOMコンポーネントにも存在しない。
・.NET frameworkコンポーネントにDataGridがあるが、そもそも初めからチェックが入っている。
 それなのにツールバーには表示されてない。
 一旦チェック外して再びチェックしなおすとツールバーにそれらしきものが追加されたが非アクティブになってて使えない。
・そもそも.NET frameworkコンポーネントの中はほぼ全部チェックが入っているのに
 ツールバーに一切無いのが理解出来ない。
・一度間違えてデフォルトの「ボタン」のコントロールをツールバーから削除してしまったので、
 COMコンポーネントから探したが同じものが無かった(プロパティが別物だった)
 アイテムの追加と削除ダイアログでリセットボタンを押して直す事が出来たが、
 デフォルトでツールバーにあるアイテムはCOMコンポーネントじゃないなら一体何者なのか?

行き詰っています。どなたか教えていただけないでしょうか?
95デフォルトの名無しさん:2009/03/09(月) 21:12:11
96デフォルトの名無しさん:2009/03/09(月) 22:45:10
>>95
ありがとうございます。

ですがリンク先の指定どおりにActiveXの挿入を行っても、
Microsoft FlexGrid Control, version 6.0が選択肢の中にありません。
97デフォルトの名無しさん:2009/03/09(月) 22:56:19
>>94
そこらへんのVBランタイムを入れるとついてくることが多い。
MSFLXGRD.OCX入りのVB6ランタイムを探すんだ。

あとはこれで。
http://support.microsoft.com/kb/318597/ja
9894:2009/03/09(月) 23:10:50
自分のPCを検索して見ましたがMSFLXGRD.OCXは存在しないようです。
あと実行環境でレジストリへの登録が必要になるような面倒な作業をユーザーに強いたくない
(自分ですらめんどくさいのにもっと素人なら嫌気がさしてやめてしまうかもしれない)
のですが、そうなるともう自力でピクチャーボックスに描画するような形で作るしか無くなってしまうのでしょうか?
99デフォルトの名無しさん:2009/03/09(月) 23:40:09
ブラウザのActiveXコントロールと同じだからインストールは楽だよ
100デフォルトの名無しさん:2009/03/10(火) 01:45:05
>実行環境でレジストリへの登録が必要になるような面倒な作業をユーザーに強いたくない
ソフトのインストール時にREGファイルを食わせてやればいいだけ。
それをユーザに強いたら・・・そりゃダメだよな。

ま、Windowsの文字コード表程度の表なら、自前で作っても手間はそんなにかからないがね。
101デフォルトの名無しさん:2009/03/10(火) 17:07:09
VC++2005でMFCアプリに名前空間名に"interface"って使えない?
c2059というコンパイルエラーになる。
/clrオプションは使っていないし、
非MFCアプリやstdafx.hをincludeしないとコンパイル通るし
C++/CLIで予約語になってるeventとか他の単語は
使えるから単なるバグですかね?
102デフォルトの名無しさん:2009/03/10(火) 17:21:37
最近変なやつ多いな
同一人物?
103デフォルトの名無しさん:2009/03/10(火) 17:29:53
>>101
COM関係のヘッダのどれかで、#define interface structと定義されている。
104デフォルトの名無しさん:2009/03/10(火) 19:05:33
#include <stdio.h>
int main(void)
{
printf("Hello!\n");
return 0;
}

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

見るサイトによって書き方が違うけど結果は似たようなのがでるんですけど
これはどういう違いがあるんですか?
105デフォルトの名無しさん:2009/03/10(火) 19:15:37
C/C++
106デフォルトの名無しさん:2009/03/10(火) 19:26:37
>>105
どっちがCでどっちがC++?
107デフォルトの名無しさん:2009/03/10(火) 19:31:56
ggrks
108デフォルトの名無しさん:2009/03/10(火) 20:45:52
スレを勃てるまでもないC/C++の質問はここで 8
http://pc11.2ch.net/test/read.cgi/tech/1235921779/
109デフォルトの名無しさん:2009/03/12(木) 14:22:28
>>106
上がCで下がC++
110デフォルトの名無しさん:2009/03/12(木) 16:45:27
Visual Studio 2005 Vistaです。
6つのピクチャボックスに表示させた6枚の画像
(横3枚の2段)から1枚を選択(ダブルクリック)して、
選択した画像を左上のピクチャボックスの表示し、
選択した以外の画像は消去する、
といったことはどのようにして実現できますでしょうか。
111デフォルトの名無しさん:2009/03/12(木) 17:33:54
表示と消去ができるならクリックしたタイミングで好きなようにやればいい
112デフォルトの名無しさん:2009/03/12(木) 17:55:36
>>110
・6つのピクチャボックスに SS_NOTIFY スタイルを付加する。
・あとは STN_DBLCLK メッセージが通知されたときに、親ウィンドウに対して
 InvalidateRect( NULL) を投げればいい。

それが 「初期の描画なのか」 「ダブルクリック後の描画なのか」 「どれが選択されたのか」
を判断する仕組みは、当然必要だがね。
113110:2009/03/12(木) 18:40:15
>>111 >>112
アドバイスありがとうございます。
なんとかできました。
114デフォルトの名無しさん:2009/03/13(金) 20:10:04
VisualC++.NET(2003)を使ってます。

今まで作ってたソリューションをセカンドマシンでもいじるために

 メインマシンの共有フォルダにソリューションのフォルダごとコピー
 ↓
 セカンドマシンにブリーフケース作ってそのフォルダを持ってくる。

という風にしようとしたのですが、メインマシンのソリューションをコピーした段階で
元々正常にビルドできて実行できてたものが正常に動きません。

コピー先ソリューションの動作
@開始ボタンを押すと毎回「プロジェクトの構成が変更されています。ビルドしますか?」のダイアログが出る。
・@でいいえを選ぶと何事も無く動く
・@ではいを選ぶと元々出なかったエラー「ビルドエラーが発生しました。続行しますか?」というダイアログが出る。
・BuildLog.htmを見ると 'CDHtmlDialog' : 定義されていない基本クラスが宣言されています。などを筆頭に
 ずらずらとエラーが出ている。
 これは元のフォルダでは出ない。

初心者でソリューションの構成ファイルなどのどこかに絶対パスがあるのか、見当も付きません。
プログラム自体は絶対パスを指定するような部分は有りません。
どなたか、解決のヒントでも教えていただけないでしょうか?

また、個人で2PCでプログラム開発する場合VSSのような物(多分有料ソフトですよね?)
を使わずに同期とったりバージョン管理する良い方法があれば教えて頂けないでしょうか?
115114:2009/03/13(金) 20:48:02
もう一度やってみたら上手くいきました。

何故なのか分かりませんが一回目にやったコピーでファイルがおかしくなっていたのかもしれません。
116791 + 792:2009/03/13(金) 22:48:32
エラーUZEEEEEEな状態助けてくださいな。

#include "stdafx.h"
#include <iostream>

int main()
{
int a;
int b;
int r;

cout << "割られる数は?(整数)";
cin >> a; // ここで数値を読み取っている
cout << "割る数は?(整数)";
cin >> b; // ここで数値を読み取っている
r = a % b;
cout << "割った余りは" << r << "だよ" << endl;
}

エラーはrror C2065: 'cout' : 定義されていない識別子です。
こんなのが endlだったりcinだったり6個あった。
ソースおかしい?
117デフォルトの名無しさん:2009/03/13(金) 22:54:19
>>116
名前空間(namespace)について勉強しろ
118デフォルトの名無しさん:2009/03/13(金) 23:05:18
>>116
stdafx.h を開いて

using namespace std;

と書け。
119デフォルトの名無しさん:2009/03/13(金) 23:15:13
>>118
それやっちゃうと名前空間を定義してる意味がなくなるので
あまり人にすすめることではないかと…
120791 + 792:2009/03/14(土) 00:12:02
ますます訳が分からなくなった。
namespaceで何処を囲えば良いのかさっぱり。
どこかで名前が被ってるからnamespace使えってことで合ってるんだよね?
知らない間にエラーが102個に増えた。

何処が駄目で何でnamespaceが必要なのかまだ理解できてない俺・・・
121デフォルトの名無しさん:2009/03/14(土) 00:22:36
ttp://homepage2.nifty.com/well/FirstProgram.html

stdafx.hなんて捨ててしまえと思わなくもない
122デフォルトの名無しさん:2009/03/14(土) 00:39:30
>>120
要は、std という名前空間をどこで使いたいか、だ。
int main() のなかだけで使いたいなら int main() の中に書けばいい。
int main() の書かれている cpp ファイルの中で使いたいなら、#include <iostream> の下あたりに書く。
いつでもどこでも使いたいなら stdafx.h に書く。(このときの注意点は >>119
123デフォルトの名無しさん:2009/03/14(土) 05:28:15
バカみたいな質問で申し訳ありません。猫でもで勉強してて今まで、VC++2008でCの勉強をやってたんですが、C++をやり始め、

1>.\ex01.cpp(1) : fatal error C1083: include ファイルを開けません。'iostream.h': No such file or directory

というエラーが出ました。これはiostream.hが標準ライブラリにないという事ですよね。
色々、ググってみたんですが、標準ライブラリの宣言で躓くなんてバカな奴はいないのか、
どこでダウンロードするのかどうやって標準ライブラリに追加するのかさっぱりわかりません。
教えていただけると助かります<m(__)m>
124デフォルトの名無しさん:2009/03/14(土) 06:53:08
C++初心者用のスレへ行った方がいい
125デフォルトの名無しさん:2009/03/14(土) 07:21:13
>>123
<iostream.h>は昔の存在。だから最近のVisual C++には入っていない。
<iostream>をインクルードして、coutとかcinとかはstd::cout、std::cinなどのようにstd::を付けろ。
詳しくは最近の入門書を読め。
126デフォルトの名無しさん:2009/03/14(土) 07:57:31
拡張子を.cppにしたときから
インクルードファイルは全て.h抜きを覚悟すべきだな
127デフォルトの名無しさん:2009/03/14(土) 08:24:13
>>123
猫でも…(ryは、難点として、標準ライブラリのインクルードがおかしいってのがある。
あきらめて書籍買え。その方が実りあるよ。
128791 + 792:2009/03/14(土) 10:31:41
int main(){
using namespace std;にしたら下のエラーが出たけど、ググったら解決した。
コンソールアプリケーションでプロジェクトを作らないと下のエラーが出る見たいだから
プロジェクトを作り直してやったらすんなり。
MSVCRTD.lib(crtexew.obj) : error LNK2019: 未解決の外部シンボル _WinMain@16 が関数 ___tmainCRTStartup で参照されました。
C:\Documents and Settings\Nanashi\My Documents\Visual Studio 2008\Projects\null1\Debug\null1.exe : fatal error LNK1120: 外部参照 1 が未解決です。
まだnamespaceの意味プーだけど、>>121が教えてくれたサイトを見たりして
理解できるようにがんばる
>>122もありがとう,助かったよ。
129デフォルトの名無しさん:2009/03/14(土) 10:36:04
デフォルトエントリポイント
コンソールアプリケーション→main
Windowsアプリケーション→WinMain
※マルチバイト文字セットの場合
130791 + 792:2009/03/14(土) 10:58:01
>>129
ありがとう。
int WINAPI WinMain( HINSTANCE, HINSTANCE, LPSTR, int)
でやってみたけど、デバッグはエラーないけど
デバッグなしで開始しても何も出てこない・・・
これはもう少しC++が分かるようになれば出てくるんだよね?
ちゃんとしたウィンドウとかダイアログが出せるようになるのが楽しみだ
131デフォルトの名無しさん:2009/03/14(土) 11:13:00
>デバッグなしで開始しても何も出てこない・・・
Windowsアプリケーションなんだから、ウィンドウを作らないことには何も出てこない。
132デフォルトの名無しさん:2009/03/14(土) 15:19:49
ある環境をリンク中に、下記エラーが出るようになってしまいました。
>LIBCMTD.lib(dllcrt0.obj) : error LNK2019: 未解決の外部シンボル __imp__GetCurrentThreadId@0 が関数 __CRT_INIT@12 で参照されました。
PlatoformSDKの関数らしいですが、どのライブラリが足りないかご存じの方いませんか?
133デフォルトの名無しさん:2009/03/14(土) 15:48:20
CRT_INITで参照するものが不足するか?
環境の問題だろ
134デフォルトの名無しさん:2009/03/14(土) 18:04:29
>>130
C++ができるかどうかとWindowsプログラミングは全く関係ないぞ。
現に、猫でものWin32編は基本的にCだけでそういうことをやっている。
135791 + 792:2009/03/14(土) 18:38:52
>>131
確かにWindow作らなきゃ何も表示されなくて当たり前だった。

>>134
ごめん、まだC++否プログラミング始めて1日くらいしか過ぎてないんだ。すまない
Windowsプログラミングとは関係ないのか、猫でもにはWindowsSDKとかあったな。

if関数に少しだけ感動した,いろいろ応用が利きそうな関数だ。
136デフォルトの名無しさん:2009/03/14(土) 18:54:15
if関数は初めて聞いた
137デフォルトの名無しさん:2009/03/14(土) 19:01:40
VBAにiif関数があってそれのことかと思た
138132:2009/03/14(土) 19:54:13
C:\Program Files\Microsoft SDKs\Windows\v6.0A\Lib
とパス指定すべきところを、
C:\Program Files\Microsoft SDKs\Windows\v6.0A\Lib\x64
としてました。。。(笑

こんなんですごい時間かかった(汗
139123:2009/03/14(土) 22:21:55
ありがとうございますm(__)m

明日、本屋行って標準ライブラリ集でも買ってきて、猫で続きをやろうと思います。
140デフォルトの名無しさん:2009/03/16(月) 17:45:39
入力支援がちっとも支援してくれません。
たまに入力候補一覧のリストボックスが出てきたと思っても、
必要なものを探すのにエライ手間がかかります。
どうしたらいいですか。
141デフォルトの名無しさん:2009/03/16(月) 18:49:28
あれはMFCのためにある
142デフォルトの名無しさん:2009/03/17(火) 00:54:01
初歩的な質問ですが、

どこかの設定を無意識に変えてしまったせいなのか
構成の種類をDLLにした場合でも、自動でLIBを作成してくれなくなりました
どこの設定をかえればいいのか教えていただけるとありがたいです。

VC++2008EEを使用しています。
143デフォルトの名無しさん:2009/03/17(火) 01:40:35
自己解決しました

EXPORTを書き忘れてましたorz
144デフォルトの名無しさん:2009/03/18(水) 19:59:37
窓の杜にあるようなソフトもvc++で作れますか?
145デフォルトの名無しさん:2009/03/18(水) 20:46:28
>>144
作れます。初心者を脱出してC++とWinのAPIをめっちゃ勉強すれば。
146デフォルトの名無しさん:2009/03/20(金) 10:49:08
sdkddkver.hを見る限り、_WIN32_WINNTを適当な値に設定して、
その他WINVER等の定義は任せてしまった方が良いのでしょうか。
147デフォルトの名無しさん:2009/03/20(金) 11:07:49
ヘッダファイルの読み込み順序による。
148デフォルトの名無しさん:2009/03/20(金) 11:16:32
ありがとうございます。たしかにそうかもしれませんね。
いつもwindows.hからインクルードしてたので、順番のことは気にも留めてませんでした。
149デフォルトの名無しさん:2009/03/20(金) 12:22:34
始めようと思うんですが、公式ページの「Web インストール (ダウンロード)」をクリックしても
エラーページに飛ばされてダウンロードできません。
同じ症状の方いますか?

Firefoxのエラー文によると
>サイトアドレスは有効なようですが、接続を確立できませんでした。
150デフォルトの名無しさん:2009/03/20(金) 12:36:09
151デフォルトの名無しさん:2009/03/20(金) 12:57:54
download.microsoft.comに繋がらないようです。
自分だけ?
152デフォルトの名無しさん:2009/03/20(金) 13:08:15
と今日の日記に書いておこう
153デフォルトの名無しさん:2009/03/22(日) 12:56:07
コメントを関数の前に書くと
その前の関数のグループになってしまいます
コメントがグループの初めになるように任意に修正する方法はないでしょうか
ご存知の方お願いします
154デフォルトの名無しさん:2009/03/24(火) 21:57:11
Microsoft PressのVisual C++.NET実践講座 Vol.1基礎編の本には、
Console::WriteLine(S"Hello World");
のようにダブルクォートで囲った文字列の前にSが付いていて、それについて
何の説明も書いてないけど、このSって何。
155デフォルトの名無しさん:2009/03/24(火) 22:04:42
わかったSystem::String*だ
156デフォルトの名無しさん:2009/03/25(水) 02:18:26
visual cで作られたアプリケーションがあるのですが、
これを改造して自分のほしい機能を付け加えています。

自分で追加した変数やマクロなどとそうではない箇所とで、識別子(関数名、変数名、マクロ名)を明確に分けたいのですが、
新たに追加した部分にルールをつけるだけでなく、
改造元の識別子のすべてに対して、「kaizoumoto_」「KAIZOUMOTO_」のような接頭語をつけたいと考えました。
そのようなことを一括で行うことは可能でしょうか。
改造元から現在の状態までの間の追加は失われてかまいません。(改造元があって、それの識別子を一括で変更したいです。)

というか、Visual Cと全然関係ないですか。すみません。
ご存知でしたら、Helpをお願いします。
157デフォルトの名無しさん:2009/03/25(水) 10:34:11
VC++のエディタウィンドウの行間をひらげることってできますか?
フォントやエディタの設定項目を調べて見ましたが、うまくできませんので、お願いします。
158デフォルトの名無しさん:2009/03/26(木) 12:45:11
>>156
正規表現
159デフォルトの名無しさん:2009/03/26(木) 12:46:58
>>157
ひらげるってw
160デフォルトの名無しさん:2009/03/27(金) 06:41:15
2008 Express Edition使ってて外部エディタで編集してるから
これのエディタは見るだけにしたいんだけど
編集禁止状態に出来ない?
161デフォルトの名無しさん:2009/03/27(金) 09:02:01
>>160
閉じられるって。
162デフォルトの名無しさん:2009/03/27(金) 09:14:25
俺が思うに閉じたら見られないのではなかろうか
163デフォルトの名無しさん:2009/03/28(土) 05:06:11
VS2005, XPでWin32プロジェクトを作成中です。
CreateWindowでウィンドウをつくり、さらにCreateWindowでボタンを追加しました。

マウスによる指定とカーソルキーによって、
メインウィンドウのある領域でカーソルが移動するようになっています。
(WM_LBUTTONDOWN, WM_KEYDOWN)

しかし領域外につくったボタンを押すと、
マウスによるカーソルの移動は受け付けるものの、カーソルキーを押しても反応がありません。
一度ウィンドウを非アクティブにし、再びアクティブに戻すと動作は正常に戻ります。
ボタンはWM_COMMANDで処理を行わずとも、押した時点で動作がおかしくなってしまうようです。

ご教示お願い致します。
164デフォルトの名無しさん:2009/03/28(土) 12:44:29
カメラ目線
165デフォルトの名無しさん:2009/03/28(土) 15:38:35
一応、ソースプログラム出さない?
166デフォルトの名無しさん:2009/03/28(土) 17:19:50
ソースもなにもカーソル戻すだけだろ
167163:2009/03/28(土) 17:57:29
全体を添付した方が望ましいのでしょうか 宜しくお願い致します

case WM_COMMAND:
switch (LOWORD(wParam)){
case Button25: break;
default: return DefWindowProc(hWnd, message, wParam, lParam);
}break;
case WM_PAINT:
hdc = BeginPaint(hWnd, &ps);
Rectangle(hdc,xwidth*(xx+1),ywidth*(yy+1),xwidth*(xx+2),ywidth*(yy+2));
EndPaint(hWnd, &ps);
break;
case WM_LBUTTONDOWN:
x = LOWORD(lParam); y = HIWORD(lParam);
if(x>xwidth && x<xwidth*(member+1) && y>ywidth && y<ywidth*(member+1)){
xx = x/xwidth-1; yy = y/ywidth-1;
InvalidateRect(hWnd, NULL, TRUE); UpdateWindow(hWnd);
}break;
case WM_KEYDOWN:
switch(wParam){
case VK_RIGHT: if(xx<member-1) xx++; break;
case VK_LEFT: if(xx>0) xx--; break;
case VK_DOWN: if(yy<member-1) yy++; break;
case VK_UP: if(yy>0) yy--; break;
}
InvalidateRect(hWnd, NULL, TRUE); UpdateWindow(hWnd);
break;
168165:2009/03/28(土) 20:13:06
case Button25: を押したら、break; の前にコントロールを戻すために何かするんじゃないか。
何の関数呼べばいいのかわからないけど、ここまでだ。
169デフォルトの名無しさん:2009/03/28(土) 20:49:47
ソース見る必要あったのか?
170デフォルトの名無しさん:2009/03/28(土) 20:59:43
>>163です

SetFocus( hWnd ); でした!
解決致しました。ありがとうございます!
171デフォルトの名無しさん:2009/03/29(日) 13:15:48
1. マネージC++のインターフェイスは、純粋仮想関数だけを持つ抽象クラスみたいなものか。
2. マネージC++のシールクラスは、自分の作った知的財産であるクラスを「お前らなんかに
  継承してパクらせてやるわけにはいかん」ためにあるのか。
3. マネージC++の例外の__finnallyブロックは、例外の有無に関係なく実行するということ
  だが、そんなのなくても、いずれの場合もcatchブロックの次を普通に実行するみたいで、
  どのように違いがあるのかよくわからん。
4. 派生クラスで基底クラスのメンバー関数をオーバーライドできるのは、別に仮想関数でな
  くても可なのか。
5. 4が正しいと仮定して言う。派生クラスのアドレスを、基底クラスのポインターに代入して、
  そのポインターを使って、派生クラスでオーバーライドされたメンバー関数を呼び出した
  ときの扱いはどうなのか。非仮想関数なら、基底クラスのメンバー関数を呼び出して、仮想
  関数なら、派生クラスのメンバー関数を呼び出すのではないかと思うが、それで正しいか。
172デフォルトの名無しさん:2009/03/29(日) 13:33:33
誤爆です
173デフォルトの名無しさん:2009/03/29(日) 13:48:12
違う誤爆ではない。
邪魔しないでくれ。
174デフォルトの名無しさん:2009/03/29(日) 13:53:52
あっ、確か__finayllyはreturnされると呼び出し元に戻る前に、そのブロックが
実行するってことか。何かに書いてあったような記憶が。
175デフォルトの名無しさん:2009/03/29(日) 13:57:23
あっ、良く確かめずに書いてすみません
ちゃんと調べてから書き直します
176デフォルトの名無しさん:2009/03/29(日) 14:00:47
>>172 >>175
おい、偽者が何やってるんだ。
177デフォルトの名無しさん:2009/03/29(日) 14:05:07
C++/CLIスレのがよさげ
あと、試してみたほうが早い気が
178デフォルトの名無しさん:2009/03/29(日) 14:05:13
以上すべて自演でした
179デフォルトの名無しさん:2009/03/29(日) 14:07:30
どうも失礼しました
これからは自分で試してから書くことにします
180デフォルトの名無しさん:2009/03/29(日) 14:09:30
>>178 >>179
こら、いい加減にしろ
181デフォルトの名無しさん:2009/03/31(火) 14:54:21
どなたか>>157について、よろしくお願いしますm(_ _)m
182デフォルトの名無しさん:2009/03/31(火) 15:03:19
無理じゃない?
行間の空くフォント探してくるとか
183デフォルトの名無しさん:2009/03/31(火) 19:19:04
できないことはないな
ただ全然興味ないから完全スルー
184デフォルトの名無しさん:2009/03/31(火) 22:01:59
VC++ 2008 EE
0からのゲームプログラミングというサイトでスケルトンプログラムを
ダウンロードしビルドしたのですが、
1>c:\users\○○○\documents\visual studio 2008\projects\samplestg\source\application.cpp(537) : fatal error C1010: プリコンパイル ヘッダーを検索中に不明な EOF が見つかりました。'#include "stdafx.h"' をソースに追加しましたか?
というエラーが出てしまい実行できません。

Winプロジェクトで空のプロジェクト選択をし、プロジェクトのプロパティで
プリコンパイル済みヘッダーを使用するに設定してもできませんでした。
よろしくお願いします。
185デフォルトの名無しさん:2009/03/31(火) 22:09:29
スケルトンだったら自分で作ったスケルトンとくらべてみればわかるだろ
186184:2009/03/31(火) 22:29:16
私自身はスケルトンプログラムは作っていません。
0からのゲームプログラミングというサイトで、
サイト管理人が作ったスケルトンプログラムをダウンロードし、
ビルドしてくださいとあったので流れに従って進めたところ、
エラーが表示され先へ進めなくなったしまったんです。
187デフォルトの名無しさん:2009/03/31(火) 22:38:30
そこのサイト管理人にビルドできないと言ってやればいいだけ
188デフォルトの名無しさん:2009/03/31(火) 22:39:13
stdafx.cpp→プリコンパイル済みヘッダーを作成する
189デフォルトの名無しさん:2009/03/31(火) 23:29:27
2004年ごろから放棄されてるサイトのようだから
今大幅修正しないと使いものにならなくて投げ出したんだろ
190デフォルトの名無しさん:2009/04/01(水) 09:58:12
「プリコンパイルヘッダーを使用しない」にしてみるという知恵は回らんのかw
191デフォルトの名無しさん:2009/04/01(水) 11:26:05
一行追加すればいいじゃん
192デフォルトの名無しさん:2009/04/01(水) 18:30:28
>>172 >>175 >>178 >>179 は、派遣を解雇されたからって、最低な書き込みするな。
書いた本人のふりして妨害するな。
193デフォルトの名無しさん:2009/04/01(水) 19:05:59
>>192
そんな怒ってんなよ
たかが2chにマジになるな。
だいたい派遣を解雇されたヤツは今頃2chなんてやってらんねぇんじゃねぇのかな?
194デフォルトの名無しさん:2009/04/01(水) 21:49:18
10年ほど前に買った新Visual C++6.0 シニア編ですが
その中のchapter 26コントロールをコードで配置するで

CButton* myBTN = new CButton();
myBTN->Create("実行", BS_PUSHBUTTON | WS_VISIBLE , CRect(10, 10, 100. 40), this, IDC_BUTTON1);

などとありますがnewを使っているのにDestroyWindowを使っている形跡がありません。
CFramewndなどでは勝手にdelete this などとしているようですがCButtonとかは何もする必要はないのでしょうか。
このサンプルプログラムではCDialogを継承したものです。
リソースエディタ以外で手動で作ったコントロールも自分で削除しなくてもいいのでしょか?

195デフォルトの名無しさん:2009/04/01(水) 22:19:00
new したものは delete しなきゃダメ
196デフォルトの名無しさん:2009/04/01(水) 22:32:38
>195
CButtonはCWndの継承ですがディストラクタで勝手に
NCDestroyで勝手にやってはくれないのでしょうか?
私自身もあんまりよく分かっていないのですが。
197デフォルトの名無しさん:2009/04/01(水) 22:36:18
CButtonのデストラクタにブレイクポイント置いて、デバッグ開始したらわかるんじゃね?
198デフォルトの名無しさん:2009/04/01(水) 22:41:05
>>196
CWnd のソース読めばわかることだろ。MFC のソースは HDD の肥やしじゃないぞ。
199デフォルトの名無しさん:2009/04/01(水) 22:46:11
>>197
んなことしなくても、デバッグモードで実行したら、終了時にメモリーリークがあれば表示される。

ちなみに、CWnd::PostNcDestroy() のソースはこうなっている。

void CWnd::PostNcDestroy()
{
// default to nothing
}
200デフォルトの名無しさん:2009/04/01(水) 22:55:01
>newを使っているのにDestroyWindowを使っている形跡がありません
そもそもこのふたつには関連性がないだろうに
201デフォルトの名無しさん:2009/04/01(水) 23:21:50
DestroyWindow
指定されたウィンドウが親ウィンドウやオーナーウィンドウのときは、
その子ウィンドウやオーナー付きウィンドウも自動的に破棄します。
このとき、先に子ウィンドウやオーナー付きウィンドウを破棄してから、
親ウィンドウやオーナーウィンドウを破棄します。

なのでDestroyWindowは不要
ただしクラストやメモリ管理とは別問題
202デフォルトの名無しさん:2009/04/02(木) 00:12:30
>ただしクラストやメモリ管理とは別問題

確かに別問題ですね。
新Visual C++6.0 シニア編にdelete処理が
載っていないのでおかしいと思ってたのですが
それとWindowの破棄とは直接関係ないですね。

どこかでdelete処理されているのではないかと思って
相談したのですが自分でやらないとダメですね。
203デフォルトの名無しさん:2009/04/02(木) 00:48:24
そろそろ、新Visual C++6.0 シニア編を燃やして
本格的にWindowsプログラミングを学んではいかがでしょうか。
204デフォルトの名無しさん:2009/04/02(木) 03:24:54
C++でDTM支援ソフトを作ったことがある人はいませんか?

Dominoみたいなのが作れるようになるまでになりたい…。
出来る限りフリーで…。
205デフォルトの名無しさん:2009/04/02(木) 10:08:38
16bitのころシーケンサ書いたけどな、、、最近はそっち方面やってないな
って聞いてどうすんだw
206デフォルトの名無しさん:2009/04/02(木) 13:04:20
ぶっちゃけCでも何でも余程技術がない限りライブラリを使うことになりますよね
だったら最初からスクリプト言語でいいじゃんって思ったんですが
間違ってます?
207デフォルトの名無しさん:2009/04/02(木) 13:27:08
それでいいと思うならそれでいいだろ。
人に聞くことでもないな。
208デフォルトの名無しさん:2009/04/02(木) 14:35:31
>>206
現実スクリプト言語が流行ってない事を考えれば自ずと答えは導き出せるのでは
209デフォルトの名無しさん:2009/04/02(木) 15:08:24
スクリプトキディってことじゃね?
210デフォルトの名無しさん:2009/04/02(木) 20:20:29
でもスクリプト言語ってはっきり言っているような。
>>206
がスクリプト言語という言葉を理解しているという仮定の下で話すと、
>ライブラリを使うことになり
  ↓
>スクリプト言語でいいじゃん
ここの論理的な演繹がおかしいと感じるのは俺だけではないはずだ。
211デフォルトの名無しさん:2009/04/02(木) 22:52:45
Console::WriteLine(S"柔道や剣道や空手ではなく、ボクシングをしないとコンパイルできないのか。");
Console::WriteLine(S"スーパーヘビー級: {0}kg以上", __box(91));
Console::WriteLine(S"ヘビー級: {0}-{1}kg", __box(81), __box(91));
Console::WriteLine(S"ライトヘビー級: {0}-{1}kg", __box(75), __box(81));
212デフォルトの名無しさん:2009/04/02(木) 23:03:53
そう言えば、このスレにConsole::WriteLineのソースが無いじゃないか。
何でだ、だれもプログラムしないのか。
213デフォルトの名無しさん:2009/04/02(木) 23:22:59
Console使う人は珍しいと思う
214デフォルトの名無しさん:2009/04/03(金) 10:49:55
オメガチャートをリアルタイムもしくは20分遅れでデータ取得したいのですが、
さっぱりどうしたらいいのかわかりません
カバでもわかるように教えていただけませんか
215デフォルトの名無しさん:2009/04/03(金) 11:11:09
>>214
おまいには無理
誰か親切な人がコンパイル済みのをうpしてくれるのを待て
216デフォルトの名無しさん:2009/04/03(金) 11:27:46
そんな奇特なお方おらんやろ〜
217デフォルトの名無しさん:2009/04/03(金) 11:31:05
いやわからんぞ
2ちゃんで一番親切なイケメンがいる板だからな
218デフォルトの名無しさん:2009/04/03(金) 12:50:22
俺の出番が来ましたね。しばらくお待ちを。
219デフォルトの名無しさん:2009/04/03(金) 13:57:46
この板にイケメンなんかいたのか
220デフォルトの名無しさん:2009/04/03(金) 15:24:28
イケてるとはかぎらないじゃない
221デフォルトの名無しさん:2009/04/03(金) 17:05:17
>>218
ありがとうございます親切な方
気長に待ってますのでお願いします
222デフォルトの名無しさん:2009/04/03(金) 22:02:58
.NET Frameworkのサンプルコードは、VB.NETとC#でコード書かれてて、C++が無い。
C#のコードの、ドット演算子をスコープ解決演算子に置き換えたらC++になるのかどうか。
ほかにどう変換すべきか。
223デフォルトの名無しさん:2009/04/04(土) 00:19:38
場合による
224デフォルトの名無しさん:2009/04/04(土) 01:21:37
クラス・構造体にref/valueを付ける。
組込型の変化、long→long longやchar→wchar_t、byte→unsigned charなど。
参照型にハンドルを付ける。ただしusingを自動変数にする。場合によってはできないので、auto_handleを使用する。
unsafeの消失。hoge*はpin_ptr<hoge>に対応するが、interior_ptr<hoge>やhoge*にできる場合もある。

……いろいろあって挙げていったらきりがない。
225214:2009/04/04(土) 10:50:52
何とか自分でできました
ありがとうございました
226デフォルトの名無しさん:2009/04/04(土) 22:50:07
今日はこの本で1冊の学習を終えた。
http://www.amazon.co.jp/gp/product/images/4891002832/ref=dp_image_0?ie=UTF8&n=465392&s=books

C++を使えたら、一番ワイドになれるんだろう。
C++標準ライブラリも.Net framewordもMFCもATLも何でも使えるものは使ってワイドになりたい。
227デフォルトの名無しさん:2009/04/05(日) 12:03:49
typedef structで構造体を定義してるんですが、
新しく変数を追加しようとしても追加されなくて困っています。

同じ構造体の他の変数はマウスカーソル合わせるとunnamed〜と表示されるのですが
新しく追加した変数はintと表示されています。

どなたか原因を教えてくれないでしょうか?
228デフォルトの名無しさん:2009/04/05(日) 12:37:26
「追加されない」って、IntelliSence に追加されないってだけの話じゃないのか?
229デフォルトの名無しさん:2009/04/05(日) 13:04:04
>>228
説明不足でした。すみません。
実際はエラーは出てないんですが、
候補一覧に出てこないので、不安になって質問しました。

時間置いたら今は出るようになっていました。
この候補一覧に出るようにするにはビルドする以外にも何かする必要があるのでしょうか?
230デフォルトの名無しさん:2009/04/05(日) 13:23:50
>時間置いたら今は出るようになっていました。
通常は、これがすべて。詳細はヘルプの「IntelliSense の使用方法 」を参照すべし。
231デフォルトの名無しさん:2009/04/05(日) 14:07:52
>>230
ありがとうございました。
IntelliSenceの使い方をやっと理解できました
232デフォルトの名無しさん:2009/04/05(日) 16:52:51
ははは
233デフォルトの名無しさん:2009/04/06(月) 14:06:31
エクセルのデータで、1の列が文字列、2〜をint型で読み込んで構造体に入れたいんですが、どうしたらいいでしょうか?
234デフォルトの名無しさん:2009/04/06(月) 16:50:08
CSVファイルに、カンマ区切りかタブ区切り形式で先ずテキスト化する。
235233:2009/04/06(月) 19:25:21
エクセルのマクロ使ってという事ですよね。
ありがとうございます。やってみますm(__)m
236デフォルトの名無しさん:2009/04/06(月) 19:27:40
すでにエクセルのデータではなくなっている。^-^;
237デフォルトの名無しさん:2009/04/06(月) 19:44:08
そっち方面ならC++/CLIで.NETのが楽かも
でもそれならC#にしちゃうか
238デフォルトの名無しさん:2009/04/07(火) 03:07:46
体験版のVC++Proを入れた後に
VC++Expressを入れてもMFCは使えるようになりませんか?
239デフォルトの名無しさん:2009/04/07(火) 04:32:49
ヘッダやライブラリが揃っていればコンパイルはいけるんじゃね
240デフォルトの名無しさん:2009/04/07(火) 12:27:47
>>238
ぐぐってみろ。使えるから。
241デフォルトの名無しさん:2009/04/08(水) 12:51:11
>>238
使えるようになるけど、Express上でMFC使ったアプリを
作っても配布してはならない。ライセンスでそうなってる。
MFCは無料じゃなくて有料です。勉強なら許すって感じかな。
242デフォルトの名無しさん:2009/04/08(水) 15:03:31
スタートページのニュースヘッダーみたいなのって出なくできますか?
あれで引っかかるような挙動したりして気持ちが悪い
243デフォルトの名無しさん:2009/04/08(水) 15:09:39
オプションで設定できるのに、何でそれくらい自分でできないの?
244デフォルトの名無しさん:2009/04/08(水) 15:13:46
FAQだな。
ちょっと探せばわかるけど、EEの場合オプションの全表示のチェック入れてなくて
無いと思い込んでる場合も
245デフォルトの名無しさん:2009/04/09(木) 00:33:12
VS2005、MFCで以下の様なプログラムを作っています。
しかし、for文の中の代入がうまく行かず困っています。
例えば、SysTim.wYearには2009が入っているのに、
MyDataのYearには0が入っているという感じです。
何が原因なのでしょうか?
SYSTEMTIMEのメンバがWORDな所為かとも思いましたが、
結局解決策を見つけられずにいます。

struct MY_DATA {
unsigned char Year;
unsigend char Month;
unsigend char Day;
unsigend char Hour;
unsigend char Minute;
unsigend char Second;
unsigend char Data[8];
};
MY_DATA MyData[10];

SYSTEMTIME SysTim;
GetLocalTime(&SysTim);

int i;

for (i = 0; i < 10; i++) {
MyData[i].Year = SysTim.wYear;



}
246デフォルトの名無しさん:2009/04/09(木) 00:49:51
charに入らないから。
wYear
The year. The valid values for this member are 1601 through 30827.
247デフォルトの名無しさん:2009/04/09(木) 01:09:26
>>246
返事ありがとうございます。

1Byteのサイズに2Byte分入れようとしてるから、という事でしょうか?
以下の例で、ちゃんと値が代入できていたので、可能という認識なのですが。
(キャストしなきゃWarningが出るのはおいといて)
あと、私の書き方が悪かったですね・・・Yearだけでなく
年月日時分秒全てがうまく行きませんでした。

char Data1 = 0;
short Data2 = 10;
Data1 = Data2;
248デフォルトの名無しさん:2009/04/09(木) 01:26:18
>>247
不可能。

BYTE byte;    // typedef unsigned char BYTE;
SYSTEMTIME SysTim;
GetLocalTime(&SysTim);

byte = (BYTE)SysTim.wYear;

で試してごらん。無理だから。
249デフォルトの名無しさん:2009/04/09(木) 01:46:40
1Byte = 8 Bit = 2 ^ 8 = 256 < 2009;
250デフォルトの名無しさん:2009/04/09(木) 02:08:11
>>248,249
お返事ありがとうございます。

すいません、言いたかったのは代入後の値が0なのは何故かということです。
環境によるのだとは思いますが、普通は下位1byteが入っているはずでは?という認識です。
年以外に関しては、255以下ですし。

>>247に挙げた例で、下位1byteを代入できているので
同じような事をしてるのに、何故うまく行かないのかというところです。


とりあえず、明日もう少し考えてみます。
251デフォルトの名無しさん:2009/04/09(木) 02:13:09
>>245 unsigendだから?綴りが違う。
#include <stdio.h>
#include <time.h>
#include <windows.h>
#include <winbase.h>

int main(void)
{
  struct MY_DATA {
    unsigned char Year;
    unsigned char Month;
    unsigned char Day;
    unsigned char Hour;
    unsigned char Minute;
    unsigned char Second;
    unsigned char Data[8];
  };
  MY_DATA MyData[10];

  SYSTEMTIME SysTim;
  GetLocalTime(&SysTim);

  for (int i = 0; i < 10; i++) {
    MyData[i].Year = SysTim.wYear;
    MyData[i].Month = SysTim.wMonth;
    MyData[i].Day = SysTim.wDay;
    MyData[i].Hour = SysTim.wHour;
    MyData[i].Minute = SysTim.wMinute;
    MyData[i].Second = SysTim.wSecond;
  }
}
252デフォルトの名無しさん:2009/04/09(木) 07:08:02
VC++2005、.net framework2.0を使っています。
CSVファイルを読み込む ってのをやって見ようと思って、

using namespace Microsoft::VisualBasic::FileIO;
としてみたのですが、

.\tesuto.cpp(7) : error C2039: 'FileIO' : 'Microsoft::VisualBasic' のメンバではありません。
.\tesuto.cpp(7) : error C2871: 'FileIO' : この名前を指定された名前空間は存在しません。
と言われエラーになります。
何が足りなく、いけないのでしょうか?
さっぱりよく分っていないのですが、よろしくおねがいします。


253デフォルトの名無しさん:2009/04/09(木) 09:29:24
Microsoft::VisualBasic::FileIOというのを定義してないか
定義してあっても参照できない
254デフォルトの名無しさん:2009/04/09(木) 10:46:08
>>252
ソリューションエクスプローラーでプロジェクトを右クリックして参照(F)...を選択
Frameworkと参照が選択されている状態で、[新しい参照の追加(N)...]ボタンを押して
.NETタブから、Microsoft.VisualBasicを選択してOKを押す。

XMLなら別の方法も、、、チュートリアルか何かを参考にしてるのか?
255デフォルトの名無しさん:2009/04/09(木) 10:46:58
ってXMLじゃなくてCSVか
256デフォルトの名無しさん:2009/04/09(木) 12:14:57
>>254は2008での話で2005で確認したら[Frameworkと参照]の部分は[参照設定]だった
まあわかるとは思うけど念のため。
257デフォルトの名無しさん:2009/04/09(木) 14:27:35
ははは
258デフォルトの名無しさん:2009/04/09(木) 18:53:57
>>250
はずしてるかもだけど、
ループの中身をYearだけ代入するよにしたらどうなる?

期待してる動作は、下位1Byteだけは代入されるだろうってことよね?
259258:2009/04/09(木) 18:55:20
ごめん、後半は書いてたね
無視してくださいorz
260252:2009/04/09(木) 23:14:16
書かれた通りにやったら、出来た感じです。
どうもありがとうです。
261デフォルトの名無しさん:2009/04/09(木) 23:53:21
MFCでVisualBasicをオーバーライトできます?
262デフォルトの名無しさん:2009/04/09(木) 23:55:07
日本語で言ってくれ
263デフォルトの名無しさん:2009/04/10(金) 00:04:32
だから、MFCでVB7のプログラムをアルゴリズムから設計までそっくりそのままで
上書きして、同じプログラムをつくれるかな?ってことです。
264デフォルトの名無しさん:2009/04/10(金) 00:21:33
VB7って何だ?
265デフォルトの名無しさん:2009/04/10(金) 01:29:40
Visual Basic で作ったプログラムと同じ動作をするものを VisualC++ で作れるか? という問いなら YES。

上書きだとかオーバーライドだとかといった既定の単語を、自分勝手な意味をつけて使っても他人にゃわからんよ。
266デフォルトの名無しさん:2009/04/10(金) 03:04:35
だってプラグインしながらコンバートする感じでつくりたいんです
267デフォルトの名無しさん:2009/04/10(金) 06:26:43
構造体やクラスを作って実際に使おうとすると、インスタンス.と打つとメンバがズラッと出てくるはずですけど表示されなくなってしまいました。原因わかりますか?
インスタンスをマウスオーバーすると構造体はちゃんとポップアップ表示されます。
268デフォルトの名無しさん:2009/04/10(金) 09:41:20
よくあることなので諦めましょう
269デフォルトの名無しさん:2009/04/10(金) 20:50:13
>>267
「.」を打ったり消したりを繰り返してれば復活しない?
後は、一回ビルドしなおすとか、ncbファイル消してみるとか・・・

270デフォルトの名無しさん:2009/04/10(金) 21:41:24
何度かやってると復活するな
文法が間違ってたりすると反応しないから、何度もやって復活しないなら文法ミス
271デフォルトの名無しさん:2009/04/10(金) 21:48:08
テンプレートかインクルードファイルが多すぎると、バグか知らないけど認識してくれないことが多い気がする。
272デフォルトの名無しさん:2009/04/10(金) 21:59:24
2005/2008的には、仕様です。って感じだな。
273デフォルトの名無しさん:2009/04/11(土) 00:49:19
Windows7でたら、パソコン買おうとおもうんだけど、今のWin2000じゃスペック的にも無理があるから・・

Windows7でもVC++6.0ってインストールできるのかな・・いまだに結構使ってるから、入れたいんだ。
274デフォルトの名無しさん:2009/04/11(土) 00:57:22
>273
もうサポートも終わった環境なんて捨てろw
275デフォルトの名無しさん:2009/04/11(土) 01:23:57
>>273
VC++6.0なんて仕様がイミフだからもうヤダ。。。
276デフォルトの名無しさん:2009/04/11(土) 09:31:43
>>273
VMWareで2000動かしてそこにインストールするのがお薦め。
277デフォルトの名無しさん:2009/04/11(土) 11:05:41
次期モデルC++0xはどれだけ対応しているのか期待したい
278デフォルトの名無しさん:2009/04/11(土) 14:30:08
>>275
VC9になったところで仕様イミフだろ。
279デフォルトの名無しさん:2009/04/11(土) 20:22:01
>>277
こういう感じらしい。decltypeが無いのは痛いと思う。
ttp://www.codeguru.com/forum/showthread.php?t=466893
ttp://d.hatena.ne.jp/faith_and_brave/20081217/1229503972
280デフォルトの名無しさん:2009/04/13(月) 12:34:48
エディットボックスコントロールや、立地エディットコントロール以外に
ActiveXとかでエディタコンポーネントってありませんか?
281デフォルトの名無しさん:2009/04/13(月) 13:56:59
作れば何でもある
282デフォルトの名無しさん:2009/04/13(月) 14:25:13
エディットボックスというのは初めて聞いた
283デフォルトの名無しさん:2009/04/13(月) 18:39:12
VC++の得意分野って何?みんな何作るの?
GUIアプリならC#で作った方が早いじゃんか。
284デフォルトの名無しさん:2009/04/13(月) 19:29:19
.NET Frameworkなんて死んでも入れないという人のためのアプリを作るためとか。
285280:2009/04/13(月) 19:58:06
>>281
はい、ありがとうございます。この際作ろうと思います。
>>282
?私のVCのツールバーにエディットボックスってあるんですが・・普通はないのかな?

で、自作しようと思いますが、CEditクラスを継承しようと思いますが、
自動インデントやらの独自機能を追加しようとおもいます。
その場合、ActiveXという形式で作成するのか、普通のC++クラスとして作成汁のかどっちがいいんでしょうか?

なにぶんVC++はあまり知らないので、おしえてください。
286デフォルトの名無しさん:2009/04/13(月) 20:53:15
vc++2008のエディタをウィンドウ分割したときに
上側のウィンドウへフォーカスを切り替えたいとき
キーボードでやるにはどうすればいいの?
287デフォルトの名無しさん:2009/04/14(火) 09:03:28
>>286
上側ではないがF6で切り替え
288デフォルトの名無しさん:2009/04/14(火) 10:12:40
>>287
できました!ありがとう。
289デフォルトの名無しさん:2009/04/16(木) 21:57:30
質問です。
VC++.net2003で、VB6.0のTextBoxと思われるもの(spy++によると、"ThunderRT6TextBox")より、
WM_GETTEXTで文字列を取得するアプリを作りました。
ただ、TextBoxの格納上限 > WM_GETTEXT取得上限のようで一定量を超える入力があると
全てを取得することが出来ません。
EM_GETTEXTEXで試したのですが、リッチエディットコントロールではないのか、何も返してきません。

何かいい方法ありませんでしょうか。
(スレあってますよね・・・?)
290デフォルトの名無しさん:2009/04/19(日) 09:01:23
MFCのクラス階層図を網羅したExcelファイルはどこかにないかね。
291デフォルトの名無しさん:2009/04/19(日) 15:32:03
VC++2008EEなのですがビルドしようとすると
general error c1010070: Failed to load and parse the manifest.
と出てきて何もできません。どうすればよいのでしょうか?
292デフォルトの名無しさん:2009/04/19(日) 16:06:38
プロジェクトのプロパティの構成プロパティのマニフェストツールの入力と出力に
変なファイル指定してない?
293デフォルトの名無しさん:2009/04/19(日) 16:19:03
入力リソースマニフェスト→指定なし
出力マニフェスト ファイル→$(TargetPath).manifest
となってます^^;
294デフォルトの名無しさん:2009/04/19(日) 16:23:53
それ消すか、埋め込みマニフェストにしてみては

あと、新規プロジェクトでゼロから作ってもそれ出る?
295デフォルトの名無しさん:2009/04/19(日) 16:27:05
消しても埋め込みマニフェストにしても無理でしたorz
新規で作っても出ます;;
296デフォルトの名無しさん:2009/04/19(日) 16:41:32
むむむ、、、、再インストール・・・かなあ
297デフォルトの名無しさん:2009/04/19(日) 17:43:02
再インストールしても無理でしたorz
298デフォルトの名無しさん:2009/04/19(日) 23:24:59
ためしに、[ツール]-[設定のインポートとエクスポート]から
すべての設定をリセットしてみてはどうか。
299デフォルトの名無しさん:2009/04/21(火) 15:48:11
WIN32アプリケーションで、
マルチディスプレイでプログラムをフルスクリーン表示にしている時に、
セカンダリ画面でクリックなどするとプログラムが最小化してしまいます。
この最小化を抑制する方法があるみたいなのですが、どうすれば可能なのでしょうか。
300デフォルトの名無しさん:2009/04/21(火) 15:49:18
最小化するか?
301デフォルトの名無しさん:2009/04/21(火) 16:00:44
はい、Winキーを押した時の様になります。
302デフォルトの名無しさん:2009/04/21(火) 17:08:08
それはお前の作ったプログラムでしか起きない問題なのか?
要するにお前が作ったプログラムに原因があるのか、
それとも元々OSがそういう仕様なのかぐらいはっきりしろ。
303デフォルトの名無しさん:2009/04/21(火) 17:48:41
元々OSがそういう仕様なのだと思います。
大抵の古いWIN32アプリでフルスクリーン時は大抵そうなってしまってます。
最近はそれに対処しているプログラムがあって、
それをどうやってるのかなと質問させて頂きました。
304デフォルトの名無しさん:2009/04/21(火) 17:55:39
Visual Studio 6.0を使ってC言語+MySQLのアプリを作りたいのですが、
[ツール]→[オプション]で
ライブラリパスにC:\Program Files\MySQL\MySQL Server 5.1\lib\opt
インクルードパスにC:\Program Files\MySQL\MySQL Server 5.1\include
を設定し、
#include "mysql.h"をしてコンパイルするとMySQLのヘッダファイルでエラーが出まくります。
プロジェクトの設定が悪いのでしょうか?
305デフォルトの名無しさん:2009/04/21(火) 18:02:00
どういうエラーよ
306304:2009/04/21(火) 18:06:41
>>305
すみません。
c:\program files\mysql\mysql server 5.1\include\mysql_com.h(243) : error C2061: 構文エラー : 識別子 'SOCKET' がシンタックスエラーを起こしました。
c:\program files\mysql\mysql server 5.1\include\mysql_com.h(280) : error C2059: 構文エラー : '}'
c:\program files\mysql\mysql server 5.1\include\mysql_com.h(394) : error C2143: 構文エラー : ')' が '*' の前に必要です。
等です。
ttp://www13.plala.or.jp/kmaeda/winc/sqlset.htm
↑ここを参考にしました。
307304:2009/04/21(火) 18:23:26
すいません!自己解決しました。
#include <winsock.h>をしたらエラーが出なくなりました。
ここでwinsockが出てくるとは…。
308デフォルトの名無しさん:2009/04/21(火) 18:49:05
ああ、そういえばmysql.h見てて書こうと思ってて他の作業入ってて書きそびれたわ
mysql.h をinclude するまえにwindows.hをincludeしては、と書こうとしてた。
309デフォルトの名無しさん:2009/04/22(水) 03:23:27
Visual Studio C++ 2008で

#include <boost/random.hpp>
を使いたいんですけどこれはブーストをダウンロードした後どうすればいいのですか?
310デフォルトの名無しさん:2009/04/22(水) 03:31:34
>>309
今ダウンロードしたやつは忘れて、こっちのインストーラ版をダウンロードする。
http://www.boostpro.com/download

最も、VC++ 2008ならSP1当てれば#include <random>で
名前空間std::tr1にほぼ同じものが存在する。
311デフォルトの名無しさん:2009/04/22(水) 03:39:06
>>310
ご親切にありがとうございます。
なるほどー
SP1当ててないのでダウンロードしてみます。
インストール後はもう#include <boost/random.hpp>を使える状態になるのですか?

今環境がないため試せないんです;
312デフォルトの名無しさん:2009/04/22(水) 10:44:38
インクルードディレクトリの設定やったことないのか?
インストーラーがやってくれるならそのままでいいし、ダメなら自分で設定すればいいだけ
313デフォルトの名無しさん:2009/04/25(土) 00:03:11
すみません。一般的に画像を保存する際、.bmp形式より.jpg形式の方が画像サイズが小さくなります。
今度作成しようとおもっているのは、Alt+Prt Scキーにより、クリップボードにコピーされた
アクティブな画面キャプチャを.jpg形式のファイルで保存しようとおもうんですが、
私のアルゴリズム?では、bmp形式のサイズで保存されてしまうのが予想されます。

私のアルゴリズムは以下です。
1.クリップボードの画像データをビットマップオブジェクトにコピーし、ファイルを保存する。
2.ファイル名の拡張子を.jpgに変換する。
以上です。

以前、Alt+Prt Scキーで取得した画面キャプチャ画像をアクセサリのペイントに貼り付けてjpegファイルに変換しても
画像サイズが変わらなかったので、上に書いたアルゴリズムでは同様のことになってしまうと思います。

jpegファイルの軽さで最初からファイルを保存するようにするにはどうしたらいいでしょうか?

画像関係のソフト制作、VC++は不慣れなものですので、すみませんが教えてください。よろしくお願いします。
314デフォルトの名無しさん:2009/04/25(土) 00:11:29
>>313
GDI+
315デフォルトの名無しさん:2009/04/25(土) 00:19:46
Express以外を使っているなら、ATL::CImageもおすすめ。
316413:2009/04/25(土) 00:52:22
>>314さん、>>315さん。

どうもありがとうございます。教えていただいた、
キーワードでググってやってみようと思います。ちなみに
MFCですので。。

コンビニいって、立ち読みしてたので、お礼が遅くなりました。すみません。
317デフォルトの名無しさん:2009/04/25(土) 07:30:44
とりあえずファイルの拡張子変えただけじゃjpgにはならんよ…
318デフォルトの名無しさん:2009/04/25(土) 08:20:10
>>317
俺も最初の頃は
xxx.jpg.bmp
なんてファイルがあったな
319デフォルトの名無しさん:2009/04/25(土) 12:30:50
いい例えが思いつかなくて放置してたんだけど
昼飯食ってたらとたんに思いついた

アナログテレビにペンで 「デジタル」 って書くだけじゃ地デジは映らないよ!
320デフォルトの名無しさん:2009/04/26(日) 10:19:59
ペイントブラシは拡張子変えるだけでファイルフォーマットも変えるからなあw
321デフォルトの名無しさん:2009/04/26(日) 10:21:03
ペイントブラシじゃなくてペイントか
322デフォルトの名無しさん:2009/04/26(日) 13:35:30
いきなりですが、質問させてください。

VC++2008 ExpressEditionで、windowsアプリケーションを作成しようとしています。
CreateWindow関数の引数が多く、横に書いていくと見にくいので、途中で改行をしました。
すると、それ以後、コンマを入力するとエラー音(プンッというような音)が鳴ります。

これはどういった問題が起きているのでしょうか。
分かる方、どなたか教えていただけるとありがたいです。
323デフォルトの名無しさん:2009/04/27(月) 02:18:15
すみません。物凄く素人な質問で恐縮なのですが。
ボタンを沢山配置したときに、リソース上で整列させたいのですが、
元々ダイアログに表示されている、ボタン位置の調整が出来る青い枠は
増やせないのでしょうか……?

リソース上で座標だけ見てボタンの微調整をするのはかなり苦痛です。
宜しくお願いします……!
324デフォルトの名無しさん:2009/04/27(月) 02:36:30
どのリソースエディタかしらないけどコントロールの整列ボタンとかないの?
rcをテキストエディタで開いてみると
DEFPUSHBUTTON "OK", IDOK, 129, 7, 50, 14, BS_DEFPUSHBUTTON
PUSHBUTTON "キャンセル", IDCANCEL, 129, 24, 50, 14, BS_PUSHBUTTON
こんな感じになってるから手入力でやってもたいした労力じゃないかもしれないよ
325323:2009/04/27(月) 02:46:51
>324さま
使用しているのはVisualStudio2008のリソースエディタです。
複数ボタンを選択した後に右クリックして、左揃え上揃えがあるのを確認しました。
早とちりしてすみません(汗)
微調整は324さまの仰られた通り、テキストエディタで編集する事にします。
ありがとうございました。
326デフォルトの名無しさん:2009/04/27(月) 03:01:17
>>325
騙されたと思って、ダイアログエディタのガイドをクリックしてみろ。
327デフォルトの名無しさん:2009/04/27(月) 20:26:44
先日からVC++2008を使い始めましたが、基本的な操作方法が分かりません。
ライブラリを追加するのはどこからやればいいのでしょうか?
2005ではプロジェクト→設定…とやっていたのですが。
プログラム自体初心者なのですが回答お願いします。
328デフォルトの名無しさん:2009/04/27(月) 20:55:09
プロジェクト→設定…とやればいい
329デフォルトの名無しさん:2009/04/27(月) 20:56:30
プロジェクト→プロパティだった
330デフォルトの名無しさん:2009/04/27(月) 21:29:50
>>327
>プログラム自体初心者なのですが回答お願いします。
こういうの要らないだろ。
どうしてこういうの付けてくるヤツって耐えないんだろう。

…でもまあスレタイ的には今回は例外的に問題無いのか。
331デフォルトの名無しさん:2009/04/27(月) 21:42:09
>>327
それくらい2005とろくに変わっていないだろ。
332デフォルトの名無しさん:2009/04/27(月) 21:47:05
図解つきのマニュアルで1ステップずつ解説みないと使えないレベルなんじゃないか?
333323:2009/04/28(火) 01:45:05
>>326さま
位置調整用の青点線増えました。助かりました。ありがとう。
334327:2009/04/28(火) 10:48:06
プロジェクト→プロパティと開いたのですが、その後の項目で何を選べばいいのか分かりません。
2005ではリンクからライブラリの一覧が見れましたが、2008でリンカを選んでもそれらしい項目がありません。
他の項目も見ましたが、どこから追加すればいいのか分かりませんでした。
詳しく教えていただけないでしょうか。
335デフォルトの名無しさん:2009/04/28(火) 10:53:59
詳しくも何もヘルプに書いてあるだろ。探せなきゃ「リンカ入力としての .lib ファイル」でググれ
336デフォルトの名無しさん:2009/04/28(火) 11:02:00
>2005ではリンクからライブラリの一覧

これ、何のこと言ってる?
もしかしてC++/CLIか?
337デフォルトの名無しさん:2009/04/30(木) 17:44:18
VC++用のXML SDKってどこからダウンロードすればいいでしょうか?
338デフォルトの名無しさん:2009/04/30(木) 18:12:08
339デフォルトの名無しさん:2009/04/30(木) 18:18:04
>>338
さんくっす
340デフォルトの名無しさん:2009/04/30(木) 23:01:53
>>337
一応、VC付属のSDK・MSDNライブラリにもMSXML関連のものは入っていたはず。
望みのバージョンのものかどうかはともかく。
341デフォルトの名無しさん:2009/05/01(金) 15:15:49
MFCやWin32APIでつかうGDI+について、書かれてる本ってないですか?割とくわしめに書いてある本。。

洋書でもいいです。近くの大本屋4件くらいまわってもなかったもんで・・
もしあれば、Amazonで買おうと思います。
342デフォルトの名無しさん:2009/05/01(金) 15:50:48
またお前か
343デフォルトの名無しさん:2009/05/01(金) 21:04:33
すみません。IEの現在表示してるアドレスを取得する事って可能ですか?

vcだけじゃ無理で、IEのSDKとかつかうんですかね・・
344343:2009/05/01(金) 21:10:14
事故解決しました。ググッたら色々でてきました。うへぇ〜。
345デフォルトの名無しさん:2009/05/01(金) 21:14:16
この辺見ればできると思う
http://www.nitoyon.com/vc/tips/ie_component.htm
346344:2009/05/01(金) 21:18:50
>>345
どうもありがとうございます><;そこは詳しく載ってますね><;

私がググって見つけたページよりも実践的なサンプルが載っています。

連休中にタスクバーに常駐するお気に入り管理ツールを作ろうと思いまして・・

ブラウザのお気に入り機能って使いにくいですよね><;
347デフォルトの名無しさん:2009/05/03(日) 06:20:13
StretchDIBitsとStretchBltの違いってなんですか?
メモリ上がなんとかとなってるんですが意味がわかりません
348デフォルトの名無しさん:2009/05/03(日) 08:43:10
>>347
StretchBlt: コピー元がHDC
StretchDIBits: コピー元がBITMAPINFO/void*
349デフォルトの名無しさん:2009/05/03(日) 17:48:53
main()関数のソースファイルが、同じソリューションかつプロジェクト内の他の
ソースファイルにリンクできてないようで、ビルドするとリンクエラーが出ます。
error LNK 2001:外部シンボル 〜〜〜〜 は未解決です。
fatal error LINK1120: 外部参照4が未解決です。
のメッセージが出ます。
正しくリンクできるように設定するにはどうするんでしょうか。
Visual Studio .NET 2003 Professional
作成したプロジェクトは Visual C++ プロジェクトの「コンソールアプリケーション(.NET)」です。
350デフォルトの名無しさん:2009/05/03(日) 18:33:04
インクルードしてないとかいう落ちだろ
351デフォルトの名無しさん:2009/05/03(日) 18:45:13
CLRならC++のみだし、、、Cリンケージの問題でもなさそうか?
参照設定してないとかいう落ちとか
352デフォルトの名無しさん:2009/05/03(日) 19:14:17
原因わかった。ファイルは実はリンクできてた。
vectorコンテナを使ってる箇所を直す必要がある。
前に単一のソースに書いてBorland C++ Compilerで正常にコンパイル成功
していたプログラムを拡張しようとしたが、他のファイルで定義したクラスの
変数宣言は問題無いが、
std::vector<class fileman> fman_databox1;
で定義して
fsize1 = fman_databox1[n1].getfsize();
のように、vectorコンテナに添え字演算子で要素を取り出したものから、
メンバー関数を使おうとする箇所があるとエラーが出るということがわかった。
353デフォルトの名無しさん:2009/05/03(日) 19:19:11
fatal error

実はリンクできてた

直す必要がある

分裂症ですか?
354デフォルトの名無しさん:2009/05/03(日) 19:44:27
一度ポインターにアドレスを代入してからメンバー関数を呼ぶように変更しよう
としたけど、そうやってもエラーになった。
IDEはちゃんとリスト選択が出てくるのに。
inlineを取ればリンクできた。
そんなことがあるのか、何でインライン関数にすればエラーになるんだ。
355デフォルトの名無しさん:2009/05/03(日) 20:02:26
インライン関数の展開って、コンパイル時に行われるからじゃないのか?
356デフォルトの名無しさん:2009/05/04(月) 08:31:41
テンプレートクラスで静的メンバ変数を使おうとすると、
>LNK2019: 未解決の外部シンボル
のエラーが出るのですが、どういった風に解決するのが一番でしょうか。
357デフォルトの名無しさん:2009/05/04(月) 08:36:02
テンプレートなのに何で静的なんだよ
358デフォルトの名無しさん:2009/05/04(月) 08:43:27
クラスごとにインスタンス数を数えたいのですが、
CountingObject : BasicCounting< CountingObject >と継承して、
BasicCountingのコンストラクタ、デストラクタでBasicCounting::countの値を増減しようと考えています。

テンプレートクラスで静的メンバ変数というのは、おかしいのですか?
359デフォルトの名無しさん:2009/05/04(月) 08:48:51
そんなくだらない話はC++スレでやれ
360デフォルトの名無しさん:2009/05/04(月) 11:42:04
>>356
クラステンプレートでないクラスの場合と同じで、変数の定義が必要。
class Foo
{
static int Hoge;
};
int Foo::Hoge;

tempate<typename T>
class Bar
{
static int Hoge;
};
template<typename T>
int Bar<T>::Hoge;
なお、クラステンプレートの静的変数は実体化させる必要があるので、
クラステンプレートのメンバ関数などと同様、通常はヘッダに定義を書く。
361デフォルトの名無しさん:2009/05/04(月) 12:56:35
コンパイル時にエラーがあるとVSでエラー箇所教えてくれるしエラーメッセージも出るからアサートって書く必要ないですよね
362デフォルトの名無しさん:2009/05/04(月) 12:59:30
構文エラー等ならコンパイル時にエラーになるが、0 division 等はエラーにならない。
よってアサートは必要。
363デフォルトの名無しさん:2009/05/04(月) 13:11:44
コンパイルエラーが出るうちはデバッグは楽だ。
実行時エラーになるととたんに対処が面倒になる。
364デフォルトの名無しさん:2009/05/04(月) 13:34:07
コンパイルエラーとアサートと同次元で語るやつが理解できない。
365デフォルトの名無しさん:2009/05/04(月) 13:43:28
>>364
まあまあ、ココは初心者スレだからいいじゃないか。
366デフォルトの名無しさん:2009/05/04(月) 19:16:07
実行時エラーと言いたかったんじゃないかなあ
367デフォルトの名無しさん:2009/05/04(月) 20:03:49
それは違くね?
368デフォルトの名無しさん:2009/05/05(火) 08:46:18
そうか?
アサートとコンパイルエラーが同レベルで出てくるなんて
初心者だってありえないだろ
369デフォルトの名無しさん:2009/05/05(火) 08:55:35
>>368
「ありえない」か?確率0%か?
いや、初心者ならそのくらいありえるのではないか?
およそ、初心者に「ありえない」ことは「ありえない」んでは?
370デフォルトの名無しさん:2009/05/05(火) 10:04:21
アサートという言葉を知ってるのにか?
当人に聞いてみなけりゃ分からないけど、
ありえないと言えるくらい見当違いなことだよ
371デフォルトの名無しさん:2009/05/05(火) 10:09:22
たぶん釣りじゃないのかw
372デフォルトの名無しさん:2009/05/05(火) 20:20:07
MFCでなんか面白いもの作りたいんだけど、思いつかない。

サンプルが載ってるページってありますか?自力で作るのもいいんだけど・・お代が無いし。
373デフォルトの名無しさん:2009/05/05(火) 21:02:58
じゃ、タスクマネージャでも作ってみろ
374デフォルトの名無しさん:2009/05/05(火) 22:54:51
>>373
タスクバーに入れる方法がわからないから、却下でござる。
375デフォルトの名無しさん:2009/05/05(火) 23:07:59
C言語始めようかと思って先ほどマイクロソフトのVisual C++ Express Editionってのをダウンロードしました
試しに参考書に載ってる簡単な足し算を表示するプログラムを書き写してみたんですが、
どうやってその書いたプログラムが動くのかが分かりません・・・
376デフォルトの名無しさん:2009/05/05(火) 23:23:29
F6でコンパイル F5で実行、だが・・・多分出てすぐ消ええる。
VCの入門本買って読むべし
377デフォルトの名無しさん:2009/05/05(火) 23:38:49
コンパイルで調べたら↓ヒットしました
http://msdn.microsoft.com/ja-jp/library/bb384838.aspx
手順の通りにやってみましたがやっぱりすぐ消えますね
分かるように勉強してきます ありがとうございました
378375:2009/05/05(火) 23:55:05
[新しいプロジェクト]のとこから色々弄ったら実行出来ました!
二桁の数字が表示されただけでしたが色々作れそうで楽しいっすね
スレ汚し失礼しました
379デフォルトの名無しさん:2009/05/06(水) 00:28:51
以下の2行をmainの最後に入れれば、実行後終了前にリーターンキー入力を待つ

printf("リターン入力で終了\n");
getchar();
380デフォルトの名無しさん:2009/05/06(水) 00:38:50
>>377
プログラムはあなたの思ったようには動かなくても
プログラムはあなたの書いたようには動く

という格言がある。
これから先何度も何度も味わい続ける事になるだろうが、
これを忘れないようにね。

んでオススメは、Windows環境限定で良ければ
#include <conio.h>
でgetch();を使うのが良いと思うよ。いかなるキーでも何か入力すれば終了するようになる。

#include <conio.h>
int main()
{
//処理
getch();
return 0;
}
381デフォルトの名無しさん:2009/05/06(水) 12:09:16
>>377
main()の最後の } にブレイクポイントを置けばいいよ。
382デフォルトの名無しさん:2009/05/06(水) 12:17:10
Ctrl+F5でいいよ
383デフォルトの名無しさん:2009/05/06(水) 16:14:48
VSとかでプログラムを作らないとデバッグって出来ないのですか
コマンドラインでそれ用のオプションつけてコンパイルしてあれこれして
デバッガー使うことは出来ますか?
384デフォルトの名無しさん:2009/05/06(水) 16:28:01
デバッグ自体はコンパイル方法関係ないよ
Cじゃなくてもできるし
385デフォルトの名無しさん:2009/05/06(水) 16:28:12
↑追加で実行ファイル開いたら問題なく出来ました
ごめんなさい
386デフォルトの名無しさん:2009/05/07(木) 00:03:37
文字リテラルと文字列リテラルが分かれていますが、
どう言ったメリットデメリットがあるんでしょうか?
一文字の文字列を""で囲んでも何の問題もないような気がしますが
メモリの使用量が少ないんでしょうか
387デフォルトの名無しさん:2009/05/07(木) 00:13:28
C言語からやり直せw
388デフォルトの名無しさん:2009/05/07(木) 00:20:01
すいません、今日C++始めたばっかりなんです
VBは型ぐらいなら分かるんですがどうしてもふに落ちないもので
389デフォルトの名無しさん:2009/05/07(木) 00:32:58
自分もC始めたばっかりなんだけど
char string[] = "ABCDE";
char chararray[] = { 'A', 'B', 'C', 'D', 'E', '\0' };
文字列は文字の配列だよって理解でいいの?
390デフォルトの名無しさん:2009/05/07(木) 00:56:44
>文字列は文字の配列
読んで字の如し
391デフォルトの名無しさん:2009/05/07(木) 02:41:38
>>388
VBやったことあるなら、AscとChr$は知っているだろ。
めちゃくちゃ乱暴に言うと文字リテラル'A'は、Asc("A")と同じ。
Ascの戻り値とChr$の引数、VBではLongとかで扱っていただろうが、
Cではcharという独立した型が与えられていると思えばいい。
392デフォルトの名無しさん:2009/05/07(木) 08:22:06
n文字型があれば1文字型は不要ではという質問だと思うが、
文字の比較や判定の基本はバイト単位だな
32bitや64bit単位でできないこともないけど
393デフォルトの名無しさん:2009/05/07(木) 08:38:31
ああunicodeもあるから
文字単位で比較か
394デフォルトの名無しさん:2009/05/07(木) 11:54:01
>>386
文字と文字列の理解が怪しいな。
そもそもポインタとか分かってる?
いきなりC++にいくのは自殺級に難しいと思うからC言語から学んだ方が良いと思うよ。
395デフォルトの名無しさん:2009/05/07(木) 11:57:40
>>389
> 文字列は文字の配列だよって理解でいいの?
いいんじゃない。文字列は文字型変数の配列ね。
あと実際に文字列は扱えないからその先頭アドレスで扱うことになるってことを理解してくれ。
例えば
"ABCDE"=="ABCDE"
がtrueになるかどうかは処理系依存。
左の"ABCDE"と右の"ABCDE"が別に確保されていればアドレスが異なるから
これはfalseだが、コンパイル時にコンパイラが気付いてメモリ節約のために
同一文字列をマージすればtrueとなる。
> char string[] = "ABCDE";
> char chararray[] = { 'A', 'B', 'C', 'D', 'E', '\0' };
これは全く同じになりますよ。
396デフォルトの名無しさん:2009/05/07(木) 13:27:08
で、結局メリットデメリット誰も言えないわけで
397デフォルトの名無しさん:2009/05/07(木) 13:36:05
>>396
は?頭おかしいの?
398デフォルトの名無しさん:2009/05/07(木) 13:44:03
データ型が違うという事実があるだけで、メリットもデメリットもない
メリットは使うときがくれば分かるとしか言いようがないな
使わない人にとっては面倒なだけと言えばデメリットにもなるだろうが、それは何にしてもそうだろう
399デフォルトの名無しさん:2009/05/07(木) 14:10:36
これだからVB厨はコンピュータのこと何もわかってないと
言われるんだよ
Cやったあとはマイコンもやれよ
で電子回路やってFPGAもやれ
そこでやっとプログラマといえる
400デフォルトの名無しさん:2009/05/07(木) 14:34:58
まぁ、いいんじゃないの一つずつ覚えていけば
VBは直感でも何となくできるし、プログラマへの足がかりぐらいにはなってると思うよ
偉そうだったらぶっ飛ばしたなくるけどw
401デフォルトの名無しさん:2009/05/07(木) 14:37:26
>>399
しかたないさ、何てったってvisualかつbasicだもんなw
そりゃしょーがない
402デフォルトの名無しさん:2009/05/07(木) 14:42:49
別にVBでもいいじゃん。
ただし
>>396
> で、結局メリットデメリット誰も言えないわけで
全く見当違いな質問に対して答えないだけで
「言えない」発言をする低能を除く!
403デフォルトの名無しさん:2009/05/07(木) 14:44:30
そろそろソフトウェアとハードウェアを一緒に考えてしまってるプログラマが
えらそうにしている風習を改めないと。
404デフォルトの名無しさん:2009/05/07(木) 15:02:35
一方しかわからないやつに偉そうにされるのはもっと嫌だw
405デフォルトの名無しさん:2009/05/07(木) 21:55:25
同じプロジェクトのソースをいろいろなビルド構成や複数バージョンのVCで
ビルドしているのですが、ビルド構成やVCのバージョンごとに、
リソースのFILEVERSIONやPRODUCTVERSIONの右端の数字を
違う値にしたいと思っています(どういう構成でビルドされたものかを示すため)。

ビルドするたびに手動で書き換えていると絶対に忘れてしまうことがあるので、
ビルド時にこの数字を自動で書き換えたいのですが、
VC6、VC2005、VC2008に共通の方法はありますでしょうか?
406デフォルトの名無しさん:2009/05/07(木) 21:59:44
それぞれの構成で 別々のコンパイラオプション /D "文字列" を定義する。あとはコード内で

#ifdef "文字列"
407デフォルトの名無しさん:2009/05/07(木) 22:06:43
MSC_VER見たいな定数がそれぞれ決まってたような気がするから
プリプロセスでその値を見て文字列を選ぶ
408デフォルトの名無しさん:2009/05/07(木) 22:56:01
数値にインクリメントは使えないのでしょうか
cout<<2++;
で3になると思いましたがエラー出ました
409デフォルトの名無しさん:2009/05/07(木) 23:16:49
>>408
C言語の基礎だぞ。
++は変数に対してのみ使える演算子です。
しかも百歩譲ってインクリメントできたとしても
cout<<2++;
では結局2が出力されるだけ。

その上言いたいことは
>エラー出ました
エラーメッセージを100回読め。
410デフォルトの名無しさん:2009/05/07(木) 23:47:24
マネージ拡張C++する奴はおらんのか。
VB.NETでやるならまだしも、C#みたいな中途半端言語で.NETやってるのか。
C#でやるよりも、C++の標準ライブラリを生かせていいと思わないか。
411デフォルトの名無しさん:2009/05/07(木) 23:50:37
じゃあ、マネージ拡張を勉強するので、本を贈ってください。
412デフォルトの名無しさん:2009/05/07(木) 23:54:54
マネージ拡張C++はある意味中途半端なんよ。
C#かC++のように極端のほうがいい。
C#でどうしてもスピードが足りないときのみか、C++資産使うときだけ。マネC++
413デフォルトの名無しさん:2009/05/08(金) 01:45:13
VC2008EEのデバッガを使ってデバッグ中、
値が見れない(デバッグのウィンドウに表示されない)変数があるんですけど、なぜなんでしょう?
その変数はforの{}内で宣言した変数なんですけど関係ありますかね?
414デフォルトの名無しさん:2009/05/08(金) 02:03:01
停止している場所がforの外なら見れない。中なら見れる。
415デフォルトの名無しさん:2009/05/08(金) 02:34:17
>>414
forの中なのに見れませんでした。
何か別に原因があるのかなぁ・・・。
416デフォルトの名無しさん:2009/05/08(金) 11:43:10
再現するソースを見せろ
417デフォルトの名無しさん:2009/05/08(金) 16:02:15
最適化無効にしてないとか?
418デフォルトの名無しさん:2009/05/09(土) 16:04:31
>>415
ウォッチウィンドウにぶち込め
419デフォルトの名無しさん:2009/05/09(土) 16:05:25
多分みるところ間違ってるのとたまたま表示されてないだけだろ(よくあるよねw)
420デフォルトの名無しさん:2009/05/09(土) 19:36:57
俺はReleaseデバッグの時はよくある
421413:2009/05/09(土) 23:00:59
遅くなりましたがレスありがとうございます。

>>416
全部のせるのは長くなりそうなので・・・。
>>417
最適化は有効のままでした。
>>418
シンボルが見つかりませんってエラーが出ます。
>>419
見たのは自動変数とローカルです。
>>420
Releaseでビルドしたものをデバッグしてました。

Debugでビルドにしたらちゃんと変数が表示されました。
デバッガ使う時はDebugでビルドしないとだめでしたか。
422デフォルトの名無しさん:2009/05/10(日) 00:10:17
>>421
>デバッガ使う時はDebugでビルドしないとだめでしたか
そりゃデバッグモードでしかデバッガは使えないだろw

>>420
ESP乙
423デフォルトの名無しさん:2009/05/10(日) 12:20:11
VC2008 XP
#include <stdio.h>
int factn(int n);
int main()
{
int n,fact;
for (n = 0; n <= 10; n++)
{
fact = factn(n);
printf("d%! = %d\n",n,fact);
}

while ( true )
{
;
}

}

int factn(int n)
{
int i,fact;
fact = 1;
for (i = 1; i <= n; i++)
{
fact = fact * i;
}
return fact;
}
関数を使って0〜10までの階乗がしたいんですが
表示がd!=1 d!=2…ってなってしまいます。
どこがおかしいんでしょうか?
424デフォルトの名無しさん:2009/05/10(日) 12:25:43
>>423
d% → %d
425デフォルトの名無しさん:2009/05/10(日) 12:31:49
あああぁぁorz
ありがとうございます
426デフォルトの名無しさん:2009/05/10(日) 12:50:11
nulデータを使うとエラーが出てしまうのですが、変数は絶対に初期化しなければなりませんか?.
VBみたいにnull=0又は0文字の文字列という扱いには出来ないものでしょうか
427デフォルトの名無しさん:2009/05/10(日) 12:56:39
windef.h で NULL = 0 と定義されているが、このことと 「変数は絶対に初期化しなければなりませんか?.」は
直接関係しない。
428デフォルトの名無しさん:2009/05/10(日) 12:57:55
ありがとうございます!!
429デフォルトの名無しさん:2009/05/10(日) 12:58:50
どういうわけか、最近のC関連の説明とか本ってオペランドの説明ばっかな。
オペランドを説明することが解説だと思ってるようだ。だから初心者にとっては
わかりにくいんだよ。コンピュータの基本がわかってない奴が本を書くように
なってるんじゃないのかって感じる。
430デフォルトの名無しさん:2009/05/10(日) 13:01:34
一理あるが、オペラント(あるいはオペレータ)がわからんと、先には進めない。
431デフォルトの名無しさん:2009/05/10(日) 13:04:49
初心者スレなんだからもう少し心を広く持った方が
432デフォルトの名無しさん:2009/05/10(日) 15:14:08
>426
0文字の文字列を作るときはnulで初期化であってる
433デフォルトの名無しさん:2009/05/10(日) 19:35:12
配列のインデックスの最大値を取得するにはどうすればよいでしようか?
ぐぐってもvbばっかり出てきます
434デフォルトの名無しさん:2009/05/10(日) 19:39:08
sizeof()
435デフォルトの名無しさん:2009/05/10(日) 19:47:38
>>433
配列の名前をpenisとするとだな、
sizeof(penis);で取得できる。
436デフォルトの名無しさん:2009/05/10(日) 19:53:48
>>435
penisは動的配列なんだな。
sizeof(penis)が一定値にならないぞ。
437デフォルトの名無しさん:2009/05/10(日) 19:54:15
sizeof(penis) = 0 の場合もある
438デフォルトの名無しさん:2009/05/10(日) 20:02:58
struct penis { int used; } myson;
sizeof myson;
って括弧なしでかけるんだな
最近知った。
439デフォルトの名無しさん:2009/05/10(日) 20:03:43
>>437
いや実際には・・・
・・・もう止めようw
440デフォルトの名無しさん:2009/05/10(日) 20:07:29
どうusedどするのか詳しく
441デフォルトの名無しさん:2009/05/10(日) 20:32:43
>>434>>435
ありがとうございます、合計バイト数は出せました。
あとはデータ型に応じたバイト数で割ればインデックス最大値が出せるのですが、それも分かりません・・
変数penisのデータ型はどうやって調べるんでしょうか
442デフォルトの名無しさん:2009/05/10(日) 20:35:27
sizeof(penis) / sizeof(int);

?
443デフォルトの名無しさん:2009/05/10(日) 20:39:21
>>442
int型は環境によってバイト数が変わると聞いたので・・
LBoundみたいな関数は無いものでしょうか
それとも僕はよほど変なことをしているのでしょうか
444デフォルトの名無しさん:2009/05/10(日) 20:57:21
>>443
環境によって変わるからsizeof(int)してるんだよ
変わらなかったら4とか決めうちでいいじゃん
445デフォルトの名無しさん:2009/05/10(日) 21:02:00
>変数penisのデータ型はどうやって調べるんでしょうか
変数penisを宣言しているのは誰だ?
446デフォルトの名無しさん:2009/05/10(日) 21:03:48
何故、正体不明のデータを扱うのだろう?
447デフォルトの名無しさん:2009/05/10(日) 21:06:04
sizeofとかあとで変更あったときに直しやすくするだけのことで
その辺理解できない馬鹿だったら自分で固定で数決めとけ
448デフォルトの名無しさん:2009/05/10(日) 21:08:38
>>444
成る程!!すいませんでした、気づいてませんでした
449デフォルトの名無しさん:2009/05/10(日) 21:10:28
マンコ
450デフォルトの名無しさん:2009/05/10(日) 23:35:25
デバックしたら自動的に保存されてしまうようですが、オフにすることってできますか
451デフォルトの名無しさん:2009/05/10(日) 23:47:39
何が保存されるんだ?
452デフォルトの名無しさん:2009/05/11(月) 00:01:19
ソースコードだろ?
保存されたファイルを見てコンパイルするから無理じゃね?
VC出身の俺からしたら保存されねぇほうが気持ち悪いけど
他の環境出身者には保存されるのは気持ち悪いもんなのかねw
453デフォルトの名無しさん:2009/05/11(月) 00:06:09
ソースコードです
切ることは出来ないのですか、残念です
ちなみにVB・VBA・HSP出身(というほどやってませんが)です
454デフォルトの名無しさん:2009/05/11(月) 00:13:09
スクリプトじゃないんだからコンパイルしなきゃデバッグできんし、保存しなきゃコンパイルもできまい。
455デフォルトの名無しさん:2009/05/12(火) 00:07:15
土曜から日曜にかけて1日かかって、スタティックコントロールに文字列出すことに
成功した、ハンドル使わない方法でやっとだ。
そこでだ、ものは相談だ。ハンドル使うSendMessage()とか、SetWindowText()
のやりかた教えろや。
456デフォルトの名無しさん:2009/05/12(火) 00:14:48
しごいて調べろっていうわけにはいんかだろうしなあああ

>変数penisのデータ型はどうやって調べるんでしょうか
457デフォルトの名無しさん:2009/05/12(火) 00:16:28
ハンドル使わないSendMessage()とか、SetWindowText()があるのか
458デフォルトの名無しさん:2009/05/12(火) 00:19:22
>>457
それはないでしょう。
ですから、ハンドルの使いかた教えてくれって言ってる意味ととって
くださってもいいです。すみませんです。
459デフォルトの名無しさん:2009/05/12(火) 00:22:46
>>457
おおかたリソーススクリプトや(親のハンドル使うけど)SetDlgItemTextでも使ったんだろう。
460デフォルトの名無しさん:2009/05/12(火) 00:24:28
そのとおりです。これだって本格的には、ハンドルを使うわけでしょ。
それがわからんから・・・↓こうなってるわけでして。

SetDlgItemText(IDC_STATIC1,"testest");
461デフォルトの名無しさん:2009/05/12(火) 00:25:27
TCHAR szText[] = _T("文字列");

SetWindowText( hWnd, szText);
SendMessage( hWnd, WM_SETTEXT, 0, (LPARAM)szText);
462デフォルトの名無しさん:2009/05/12(火) 00:26:54
あ、忘れていた。つまり、455=458=460です
463455:2009/05/12(火) 00:30:12
>>461
その場合、hWndは、どこで宣言し、どうやって代入してるわけですか?
464デフォルトの名無しさん:2009/05/12(火) 00:51:42
ああ、そこからスタートか。
HWND hWnd = GetDlgItem( hDlg, IDC_STATIC1);

hDlg はわかるよな。ダイアログプロシージャの第一引数だ。
465455:2009/05/12(火) 01:11:47
>>464
その場合のhDlgは、当然にIDC_STATIC1が貼り付けられたダイアログのハンドル
っていうことですね。その場合、以下の意味がよくわかんですね。
>「ダイアログプロシージャ」(これは、・・・・Dlg.cppって言う意味ですか?)
>「第一引数」(これは意味がわからないです)
(例えば、ワークスペース名が"Rocket"として、例でいくと小生の場合はvs6で、
MFC AppWizard でダイアログモードでワークスペースをを作成したんですが。
RockeDlg.cppが以下になってます。このどこで値が決まってますか?
#include "stdafx.h"
#include "Rocket.h"
#include "RocketDlg.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// アプリケーションのバージョン情報で使われている CAboutDlg ダイアログ
class CAboutDlg : public CDialog
{
public:
CAboutDlg();
// ダイアログ データ
//{{AFX_DATA(CAboutDlg)
enum { IDD = IDD_ABOUTBOX };
//}}AFX_DATA
// ClassWizard は仮想関数のオーバーライドを生成します
//{{AFX_VIRTUAL(CAboutDlg)
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV のサポート
//}}AFX_VIRTUAL
・・・・・もっと下ですか?
466455:2009/05/12(火) 01:16:05
それとも、hDlgは、予約語っつーかシステムからの引数(定数)っていうことですか?
ダイアログ内なら無宣言で、どこでも使える定数。
467デフォルトの名無しさん:2009/05/12(火) 01:17:03
MFCなら先にそう言えよ。

MFCはウィンドウハンドルを意識しないでいいように作られているから、HWND型はあまり使わない。
468455:2009/05/12(火) 01:22:23
>>467
でも、とにかくハンドルを使わないと、別のプロシージャからは、
別イのダイアログに貼り付けられたコントロールは外部参照できない
わけでしょ。↓のどれを使おうが。

SetWindowText( hWnd, szText);
SendMessage( hWnd, WM_SETTEXT, 0, (LPARAM)szText);
469デフォルトの名無しさん:2009/05/12(火) 01:25:17
何をやりたいのかを述べよ。
「別イのダイアログ」なんつうのが今ごろでてくると、何をやりたいのかわからん
470455:2009/05/12(火) 01:27:02
>>467
>ウィンドウハンドルを意識しないでいいように

なら、SetDlgItemText(IDC_STATIC1,"testest");

と同じく、同一ダイアログプロシージャ内なら、SetWindowText()やSendMessage()
も、ハンドル引数(hWnd)は省略していいってことですか?

471デフォルトの名無しさん:2009/05/12(火) 01:31:15
MFCなら CWnd::SendMessage()、CWnd::SetWindowText() を使う。
両者のパラメータにウィンドウハンドルはない。
472デフォルトの名無しさん:2009/05/12(火) 01:35:24
CWnd* pStatic = GetDlgItem( IDC_STATIC1);
pStatic->SetWindowText( _T("文字列"));
473455:2009/05/12(火) 01:36:24
>>469
つまり、別のフォームで、RoketDlg.cppで、設定したり計算したデータを、終了前に
hddに保存する場合、別なフォームから参照して保存したり、RoketDlg.cppで計算を
始める前に、RoketDlg.cppのプログラム計算を開始する前に、hddに保存したファイルから
データを読んで別なダイアログでリストアップして、一覧の中から選んでRoketDlg.cppの
各コントロールのテキスト(キャプション)に値を設定する。それを読みながら計算
させる、とかです。
474455:2009/05/12(火) 01:54:36
>>469
つまり↓を、vcに移植したいわけです。
MV魔改.bmp
http://freedeai.com/up/index.html
475455:2009/05/12(火) 01:55:57
vb版は、数日中に軍事板でリリースの予定です。
476455:2009/05/12(火) 02:01:50
日本だって、造る気になったら、ICBMなんか、H2やMVを魔改すればすぐ造れるんだ。
って北の将軍様や工作員に見せて、「だから日本を脅かしたってビタ一文出さない。
日本を恐喝したって金にならない。早く被拉致者を返せ。」って教えるためです。
477455:2009/05/12(火) 02:19:42
>>471
>>472
ありがとうございます。
478455:2009/05/12(火) 02:35:46
>>471
その場合、CWndは、どこで、値が決まってるんですか?
>>471>>472の連携がわからないです。

↓これは記法ではないっていうことですか?
CWnd::SetWindowText()

つまり、上の記述の意味は、実際の記法は、

「Cwnd:」は、「CWnd* pStatic」の意味で、

「:SetWindowText(_T("文字列"));」は「pStatic->SetWindowText( _T("文字列"));」 である

という意味ですか?





479455:2009/05/12(火) 02:41:06
↓これはあくまでも、同一ダイアログ内での話ですよね?
(IDC_STATIC1は、別なフォームにもあるかもしれないわけで)


CWnd* pStatic = GetDlgItem( IDC_STATIC1);
480デフォルトの名無しさん:2009/05/12(火) 07:18:51
DirectXを使わないでディスプレイの垂直同期?にあわせて描画する方法ってありますか?
481デフォルトの名無しさん:2009/05/12(火) 08:39:40
一度VC2008++で作成したソリューションファイルは、2005では使えませんか?
家にあるのが2005しかないもので困ってます…
482デフォルトの名無しさん:2009/05/12(火) 08:55:59
>>455
あなたはクラスを使ったことがありますか?
483デフォルトの名無しさん:2009/05/12(火) 09:49:30
ソリューションファイルはテキストだから
適当なエディタで開いてバージョンあたり
書き換えれば2005でも開ける
484455:2009/05/12(火) 11:05:05
結局、VC++では、あるプロシージャで使われるオブジェクト(スタティックコントロールにせよ
エディトコントロールにせよ)、そのハンドルの値というのは、その、プロシージャに
行った時(そのプロシージャが実行されたとき)しか取得(代入)できないということですか?
(コンパイル時に、実行ファイルが各「ハンドル」を自動的に管理する変数としてバックグランド
で管理、保有するようにはなってない、と。)

だから、他のプロシージャから、他のプロシージャで定義、生成されたコントロールとかを
外部参照したい場合は、前もって、そのプロシージャに行った(実行された)時点で、
プロシージャ間で共有できる変数(パラメーター用の変数に)代入しておいて
、プロシージャ間でパラメータとして渡せ、と。
結局、ダイアログにせよ、メモリにロード(画面に出)されてなきゃ、その中のコントロールは
参照できっこないわけだから。
画面に出てるとか、とにかくその外部参照される他のプロシージャ部がメモリにロードされてる
うちは、ディスティネーション(アドレス、ポインタ)としての「定数」であって「変数」では
ないのだからパラメータになりうるから、プログラマー自身が渡せと。

485455:2009/05/12(火) 11:07:54
>>482
「クラス」の意味もよくわからないわけで。「クラスとは、変数の次元でのツリー構造の一部」
という概念ですね。自分としては。
486デフォルトの名無しさん:2009/05/12(火) 11:18:37
>484
結局、VC++では?
そんな意味不明なまとめだったら
日記かブログにでも書いとけ
487デフォルトの名無しさん:2009/05/12(火) 11:24:47
もしかしてウインドウのハンドルのことを言ってるのなら
apiだからVC++は関係ない。
488デフォルトの名無しさん:2009/05/12(火) 11:27:09
>>455
そのうちわかるからとりあえず汚くても動くように書いてみな
後で俺ってなんてVB厨だったんだと思うだろうけど仕方ないよ。
489455:2009/05/12(火) 11:41:54
>>486
「まとめ」じゃなくハンドルを意識する場合として出発点の概念(心がまえ)としてですよ。

これだから、・・・
490455:2009/05/12(火) 11:43:34
>>488
いや別にVBなんて、北がミサイル撃ったのでここ一月いじっただけで。
491デフォルトの名無しさん:2009/05/12(火) 11:47:09
うぜー
492455:2009/05/12(火) 11:51:16
Cで、ずいぶんと長いこと今でもやってる女房(独身時代はある大手建設会社のシステムで
「PLワン」とかやってたって言ってます。)女房から、「そういうソフト、どうしても造りたい
っていうならVB6でつくったほうが楽ですよ。私もVC++はよくわからない。」って
言われて造ったんであって・・・
493デフォルトの名無しさん:2009/05/12(火) 11:54:57
VB6でつくったほうが楽だよって言われたのになんでVCで作ってんの?
C++をやってればわかるのにCやってたってすぐにはわからないよ。
494455:2009/05/12(火) 11:56:13
>>487
OSファンクションだからっていっても、ファンクションコールの仕方、記法は、
言語別でしょ。MASMとVC++のファンクシションコールの仕方は同じですか?
495455:2009/05/12(火) 11:58:52
>>493
スタックが怖くなってきたから。
あと、SLEEP使うと、途中停止できないから。
496デフォルトの名無しさん:2009/05/12(火) 11:59:30
そのへんはMFCがラップしてるんだって何度言えばいいんだ
497デフォルトの名無しさん:2009/05/12(火) 12:00:37
>>495
だったら.net使えばー
498455:2009/05/12(火) 12:07:52
>>
NET使うとVBでもスタック拡大できるわけ?
499455:2009/05/12(火) 12:09:33
VB.NETでスタック拡大できるなんて初耳だな。
500デフォルトの名無しさん:2009/05/12(火) 12:09:59
できる
501455:2009/05/12(火) 12:10:17
どうやるの?
502455:2009/05/12(火) 12:13:36
ヘルプ、とかネット検索で、スタック、STACKで、何度やっても、
VBについてSTACKでヒットしたことは一度もないな、
503455:2009/05/12(火) 12:16:47
いま、VBのほうでは、↓つかってるけど、これだってVC++なら記法は違うでしょ。

Public Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Public Const TOOLTIPS_CLASS = "tooltips_class32"
504デフォルトの名無しさん:2009/05/12(火) 12:16:49
スタックってなんだよ
505デフォルトの名無しさん:2009/05/12(火) 12:20:07
>503
意味的にまったく同じで何も違いがない
506デフォルトの名無しさん:2009/05/12(火) 12:22:34
EditBinで書きかえるかカスタム定数で
507455:2009/05/12(火) 12:30:17
>>505
中身はそうださ。OSが同じなんだから。
だけどプログラミング(言語としての言葉使い)の実践としては違うでしょ?
っていうことです。
意図する中身が同じだって、言語が違えば話かたは違うのと同じことでね。
例えば、日本で「オリーブ」でも、米語じゃ「あらぶ」なわけで。

中身は同じでも米国人に「オリーブ」って言っても通じない。
日本人に「あらぶ」っていうと「オリーブ」じゃなくアラブ(の国)
って言う意味にとられる。(笑
508デフォルトの名無しさん:2009/05/12(火) 12:33:55
まずは入門書なり読めよw
509455:2009/05/12(火) 12:35:21
>>506
それ、VB.NETの何版から?
510デフォルトの名無しさん:2009/05/12(火) 12:36:57
何も違わないという認識があれば言語が変ってもすぐに使いこなせる。
511455:2009/05/12(火) 12:38:38
>>508
VC++の入門書、4冊あるけど、どれにもハンドルの変数の代入の仕方、
を系統的には書いてない。ほとんど説明してない。索引にも載ってない。
512デフォルトの名無しさん:2009/05/12(火) 12:41:33
じゃあVC++の前に生のWindowsプログラミングを入門しろ
513455:2009/05/12(火) 12:47:26
いや、VBでSTACKが拡大できるなら、何も、無理して、こめんどうなVC++でGUIする
必要はない。計算はC(.DLL)でやって、VBに渡せばいいだけで。若干は、DLLから
直接的にVBのLABELのキャプションに書きこむくらいはしなきゃならないだろうけど。
画面いじるのは、VBのほうがぜんぜん楽でしょ。その場合は開発時間はずいぶん短く
なるよ。
ランタイムシステムがどうのこうのって嫌がらなければ・・・、だけど。
514デフォルトの名無しさん:2009/05/12(火) 12:50:00
どんな画面かしらんがダイアログベースならVBもVCも
たいして変わらんけどな
515455:2009/05/12(火) 12:54:13
そういうことか。WINDOWS3.1時代あたりのMS-VCの本を読んでないと、
ハンドルの理解は難しいってこと?
VS4.0の本はマニュアルまで女房は、廃棄しちまったらしい。
516デフォルトの名無しさん:2009/05/12(火) 12:58:31
まあ
http://www7.plala.or.jp/keny01/windows/
とかさらっと読めばわかるっしょ
でC++もわかってればMFCもわかる。
だから>>455が何がわからないのか一般人にはわからない。
517455:2009/05/12(火) 13:04:05
>>516
どこにハンドルの型宣言、値の代入の仕方(オペランド)、その値の効力の
範囲が説明してあるの?
文法(記法)だけなら「解説書」は不要だよ。MSDNでいいわけだから。
518デフォルトの名無しさん:2009/05/12(火) 13:06:12
そんなのヘッダーファイル見ればわかるだろ
519455:2009/05/12(火) 13:07:30
たしかに、VC++の本にはハンドルの説明は系統的にはまったく書いてない。
ハンドルの文法は、ウィンドウができたことによるものだから、その基本は
当時の本を読まないと、ダメかもしれん。
女房も当時はUNIXをやってたから、だからVC++は弱いんだわ。
520デフォルトの名無しさん:2009/05/12(火) 13:07:54
ハンドルの型宣言にこだわる理由がわからん。
MFCはウィンドウハンドルを意識しないと上のほうに書いてあったのに。
521455:2009/05/12(火) 13:11:38
あいつは、学校ではFORTRANで、会社のシステム部になってからは、
PLIだったし、それ以後はUNIXで育ってるからな。
522デフォルトの名無しさん:2009/05/12(火) 13:13:40
まあUNIXは少ない知識でまわせるからな
523455:2009/05/12(火) 13:15:58
>>520
>ハンドルの型宣言にこだわる理由がわからん。
>MFCはウィンドウハンドルを意識しないと上のほうに書いてあったのに。

何度も言ってるが、値の代入の仕方とか、パラメーターとしての扱いかた
がわかりにくいていうのよ。
「型宣言」といったのは「今の解説書は系統的(網羅的)には説明してない。」
という面で言ってる。
524デフォルトの名無しさん:2009/05/12(火) 13:18:47
だから何がわからないのかわからないの
525455:2009/05/12(火) 13:20:03
>>520
だって、プログラムは、一字間違っても、コンパイルできないわけでね。
初心者の場合は、文法上の必要な各要素について説明が網羅的な説明でない
場合、省略した要素があれば、省略されたとこは理解できない。
理解できない要素はネックとなって、それ以後は先に進まない。
526デフォルトの名無しさん:2009/05/12(火) 13:23:05
偉そうに理解できないと言われてもねw
527455:2009/05/12(火) 13:23:30
>>524
だからまず、>>471と、>>472の関係。
それだけではないが、外はまずこれがわかってから
528デフォルトの名無しさん:2009/05/12(火) 13:23:56
MFCなら値を代入しなくてもいいし、パラメータにウィンドウハンドルは存在しない。
すべては「オブジェクト」単位で管理する。

Aというダイアログのオブジェクトを DlgA、BというダイアログのオブジェクトをDlgBとすれば、
ダイアログBにある IDC_STATIC1 は、DlgB.GetDlgItem( IDC_STATIC1) でアクセスできる。
テキストを変更したいなら、DlgB.GetDlgItem( IDC_STATIC1)->SetWindowText( _T("テキスト")); だ。
DlgAのメンバ変数としてDlgBのポインタを保持しておけば、DlgAからDlgBにはすぐにアクセスできる。

上記の文中にでてくる用語の意味が不明なら、ここで質問する前にC++について勉強しろ。
529デフォルトの名無しさん:2009/05/12(火) 13:24:20
C/C++の入門書でファイルハンドルの使い方でも勉強すれば
一般的なハンドルの概念が理解できると思う。
530デフォルトの名無しさん:2009/05/12(火) 13:28:10
こんなウザいのをよく根気強く相手するなぁ
531デフォルトの名無しさん:2009/05/12(火) 13:34:25
もう女房はいいからwww
532デフォルトの名無しさん:2009/05/12(火) 13:37:10
>>530
暇なんだよね。不景気でw
533455:2009/05/12(火) 13:37:46
>>528
だって、>>471は、MFCなんだろ?
()の中であろうが外であろうが、CWnd::って、c++として記法だろうが、
とにくハンドルみたいなもんじゃないの?
ハンドルとは呼ばないかもしれんが。

1,で、とにかく、Cwndの実数はどこでどうやって取得するのか?
2,またそのCWndの使いかた(値が代入された後のCWnd)は、どう使用
すればいいのか。
つまり>>471のような記述の仕方なのかどうか?
単に「Cwnd::*****」(>>471)でいいのか?
ってことだよ。>>472では「CWnd::*****」ではないわけだから。
ま、そりゃc++の記法だろうけどさ。
>>472はc++でなかったら、どう記述する?
534デフォルトの名無しさん:2009/05/12(火) 13:38:40
PL/Iだろ
535デフォルトの名無しさん:2009/05/12(火) 13:39:57
あれ?やっぱりクラスすらわかってないんじゃね?
536455:2009/05/12(火) 13:41:07
>>534
文字として書けばそうらしいな。俺は夫婦の会話用語で言ってただけ。
537455:2009/05/12(火) 13:49:42
>>535
CWndが「クラス」っていうことはわかったよ。だけど
何にせよ、ディスティネーション(例。コントロールの固有アドレスを示すもの。)値
がなきゃ、他のプロシージャからは、目的のコントロールに、exeファイルは到達できない
わけでしょ。
だから、そのハンドル(つまりはオフセット・アドレスポインタ)の値の取得(代入)
の仕方と、使い方を教えろって言ってるんだよ。
538デフォルトの名無しさん:2009/05/12(火) 13:52:44
だからここで質問する前にC++を勉強しろって言ってるんだよ。
539デフォルトの名無しさん:2009/05/12(火) 13:54:42
だめだ。いくらなんでもここでC++教えるのは無理だw
540455:2009/05/12(火) 13:58:00
vc++では、IDはワークスペース(プロジェクト)としてはは固有ではないから、
(別なダイアログのコントロールが、同じ”IDC_STATIC1"というID名を持つことはありうるから)
↓これは、やはりスタティックコントロールを持ってる外部プロシージャ(ダイアログ2)から
↓ダイアログ1のIDC_STATIC1を参照したい場合は意味のない記述でしょ。

CWnd* pStatic = GetDlgItem( IDC_STATIC1); >>472
541デフォルトの名無しさん:2009/05/12(火) 14:00:16
中途半端な知識で抽象的で意味不明な用語ならべて質問するから
本題からどんどん遠ざかってるような気がする。
542デフォルトの名無しさん:2009/05/12(火) 14:02:47
そのGetDlgItemはAPIじゃなくてCWndのメソッドのほうのGetDlgItem
543455:2009/05/12(火) 14:04:27
なんだって?
ますますわかんなくなってきた。
544デフォルトの名無しさん:2009/05/12(火) 14:11:37
ここ無駄な時間をすごさずVB.NETに行ったほうがいいのでは?
545デフォルトの名無しさん:2009/05/12(火) 14:14:55
開発環境
やりたいこと

これだけ書いて質問すればすぐにまともな回答もらえたかもな
546455:2009/05/12(火) 14:15:10
>MFCは・・・パラメータにウィンドウハンドルは存在しない。 >>528
()の中でのハンドルの指定はない、ていうことは、うすうすは、わかったような
気がする。うすうすだけど。
では、外部プロシージャから(例えば、ダイアログ2に貼ってあるBUTTONが押されたとき、
ダイアログ1のスタティックコントロールを参照したい場合。
ダイアログ2にもスタティックコントロールは貼ってあって、両方が同じID名の場合。
547455:2009/05/12(火) 14:17:25
結局、>>478>>479の質問には誰も答えてないんだよな。
548デフォルトの名無しさん:2009/05/12(火) 14:20:06
その答を書くにはC++のクラスの基本から書かなくちゃいけない。だから答えない。
「C++を勉強しろ」というのが回答。
549455:2009/05/12(火) 14:22:32
ハンドルはC++関係ないでしょ
550デフォルトの名無しさん:2009/05/12(火) 14:23:15
外部プロシージャ
ダイアログ1
ダイアログ2

唐突にこんなものが出てきたって誰も関係が理解できない

外人
かばん1
かばん2

これで関係理解できるか?
551455:2009/05/12(火) 14:25:52
↓俺には「外部参照の仕方はわかりません。単一ダイアログの遊びのソフトしか造ったことありませんが、
↓一流プログラマーのように威張りたいです。」ってしか聞こえない。

548 :デフォルトの名無しさん:2009/05/12(火) 14:20:06
その答を書くにはC++のクラスの基本から書かなくちゃいけない。だから答えない。
「C++を勉強しろ」というのが回答。
552デフォルトの名無しさん:2009/05/12(火) 14:27:22
じゃ、何を言ってもムダだな
553455:2009/05/12(火) 14:36:17
「ダイアログ」でなく「ダイアログボックス」って書けってか?

「プロシージャ」という言葉は許すけど、「外部」がつくとわからん、っていうのは
「++」以前、「C」言語の基本がわかってないというか、それ以前、プログラムの基本
がわかってないとしか言いようがないけどな。
「スタックって何?」とかって聞いてる人が先生ぶってるのと同じでさ。

>hDlg はわかるよな。ダイアログプロシージャの第一引数だ。>>464

>504 :デフォルトの名無しさん:2009/05/12(火) 12:16:49
>スタックってなんだよ
554455:2009/05/12(火) 14:38:00
「スタック」「外部参照」の言葉の意味が理解できないのが「C(++)の先生」やってるわけ?
555デフォルトの名無しさん:2009/05/12(火) 14:39:44
GetDlgItem( IDC_STATIC1) は this->GetDlgItem( IDC_STATIC1) と同じ
556デフォルトの名無しさん:2009/05/12(火) 14:41:28
VBでもなんでも、てっとり早くスタックサイズ大きくしたいなら
editbin で /STACKオプションつければいい
557455:2009/05/12(火) 14:44:46
>>555
さんくす
558デフォルトの名無しさん:2009/05/12(火) 14:46:02
>>546
ダイアログ1にスタティックコントロールを公開するメソッドを作る
ダイアログ2からはダイアログ1->そのメソッド()

という形でアクセスする
559455:2009/05/12(火) 14:46:52
↓これは間違いだと思うよ。最近のVB2005とか2008わどうかわからないけどさ。

>VBでもなんでも、てっとり早くスタックサイズ大きくしたいなら
>editbin で /STACKオプションつければいい
560455:2009/05/12(火) 14:48:58
VCは、当初からコンパイル時のオプションとして当初からあったけどね。
561デフォルトの名無しさん:2009/05/12(火) 14:58:06
dumpbin /headersしてみりゃわかる
562デフォルトの名無しさん:2009/05/12(火) 14:58:57
間違いってやってみたのか?
editbin は使ったことあるのか?
563デフォルトの名無しさん:2009/05/12(火) 15:01:41
↓これを間違いだと言われても困るわな
564563:2009/05/12(火) 15:02:38
すまそ、抜けた
http://msdn.microsoft.com/ja-jp/library/35yc2tc3(VS.80).aspx
565デフォルトの名無しさん:2009/05/12(火) 15:02:50
AからBにアクセスしたい場合に外部じゃ全然説明になってないだろ
AとBが全然関係ないんじゃアクセスしようがない。
566455:2009/05/12(火) 15:03:31
++とハンドルの定義やハンドルの動作は関係ないでしょ。
++は記法だけの問題であって。

VBは、やっぱSTACK拡大できないと思うよ。2008でも、STACKをヘルプのキーワードに入れても
ヒットしない、あるなら、こんな基本的で重要なこと抜くわけないもの。
試しにヘルプでやっても、スタックフレームっていうことは出てくるが、メモリ朗域の拡大ではない¥
スタック怖かったから、2008に期待をかけてダウンロードして調べてみたが、
↓のVB2008のヘルプで、"STACK"でヒットしたのは「実行中」の「検査」の話でね。
↓そもそも実行中にスタックメモリ領域(コード領域も意味する)の大きさ変えれるわけないんだから(笑

スタック フレームの検査のサンプル
このサンプルでは、任意のポイントでの呼び出し履歴の情報を、実行中のプログラムのコード内から取得する方法を説明します。呼び出し履歴を使用すると、現在のプロシージャに至るまでにアプリケーションが実行したプロシージャの順番を確認できます。
567455:2009/05/12(火) 15:07:45
>>563
Cは「当初>>560」からあったけど、マイクロソフトのVBはないって言ってるんだよ。
そのMSDNに書いてあるのは、CとかMASMの話だよ。

568デフォルトの名無しさん:2009/05/12(火) 15:09:06
だから外部という認識だからアクセスできない
馬鹿だよな
569デフォルトの名無しさん:2009/05/12(火) 15:09:55
こいつ人の言ったこと何も聞いてないのな。
570デフォルトの名無しさん:2009/05/12(火) 15:11:58
スタックサイズはリンク時に決定される。
コンパイルは関係ない。
リンク後でもEXEのヘッダー書きかえればサイズは変更できる。
そのためのツールがeditbin
571デフォルトの名無しさん:2009/05/12(火) 15:12:22
あれあれあれだよ
あれってどれだよ
572455:2009/05/12(火) 15:13:14
↓「スタック」も理解できないおまえらは他人にいつも何を言ってるの?

569 :デフォルトの名無しさん:2009/05/12(火) 15:09:55
こいつ人の言ったこと何も聞いてないのな。

568 :デフォルトの名無しさん:2009/05/12(火) 15:09:06
だから外部という認識だからアクセスできない
馬鹿だよな
573デフォルトの名無しさん:2009/05/12(火) 15:13:53
>571
これじゃないのがあれだろ
日本語も知らないのか?
574デフォルトの名無しさん:2009/05/12(火) 15:16:00
良いページ見つけた。
http://mail2.nara-edu.ac.jp/~asait/visual_cpp/intro_cpp.htm
ここのダイアログベース読めばいいんじゃね?
575455:2009/05/12(火) 15:16:11
↓とにかく、VBではできない

570 :デフォルトの名無しさん:2009/05/12(火) 15:11:58
スタックサイズはリンク時に決定される。
コンパイルは関係ない。
リンク後でもEXEのヘッダー書きかえればサイズは変更できる。
そのためのツールがeditbin
576デフォルトの名無しさん:2009/05/12(火) 15:20:54
で、結局この人はなにをやりたいの?
577455:2009/05/12(火) 15:23:20
>>568>>569は、異なるダイアログボックス間で、別のダイログボックスにある、同じ名前のIDC_STATIC1を
↓参照できるって言ってるのと同じこと。C++とかなんとかの問題でなくプログラムの基本がわかってないと
↓思うけどね。

GetDlgItem( IDC_STATIC1)
578455:2009/05/12(火) 15:24:53
俺は、同じこと何度も答えてるよ。
579デフォルトの名無しさん:2009/05/12(火) 15:29:51
>>455の最初の質問を読んでみた。
一番の近道はMFCを使わないで
CでWindowsプログラミングをすることだと思った。
多少記述は多くなるけど問題ないと思う。
580455:2009/05/12(火) 15:31:22
↓これはあくまでも、実行中のダイアログプロシージャ内で通用する話であって、
↓別のダイアログプロシージャ(外部プロシージャ、つまり別のダイアログボックス)
↓のコントロ−ルを参照してることではないだろ。この言ってる意味がわからないかねえええ

GetDlgItem( IDC_STATIC1)
581デフォルトの名無しさん:2009/05/12(火) 15:34:04
別のダイログだったらコントロールのIDが同じだって識別可能
使いまわすときにいちいち変えてたら面倒くさくてしょうがない。
582デフォルトの名無しさん:2009/05/12(火) 15:39:32
別のダイアログだろうがやることが同じなら
同じコードで実現できる。
というか同じでやった方がいい。
583デフォルトの名無しさん:2009/05/12(火) 15:40:18
>>580
リソースファイルをテキストエディタで開いてみな
584455:2009/05/12(火) 15:42:27
いくつも同じ名前(ID)のコントロールがある場合、実行ファイルはどうやって特定認識するの。
(通常はデフォルトの動作。つまり、カンレント(実行中)のプロシージャで動作するわけでしょ。)
(じゃ別のダイログプロシージャ(別のダイアログボックス)につくられるコントロ−ルには、
どうやって参照するの?って聞いてるのよ。この質問がわからないのかねえええ)
↓はあくまでも実行中のダイアログプロシージャ(ダイアログボックス)が自分に貼られてる
↓コントロールのアドレスに関する値を渡すという関数でしょ。

GetDlgItem( IDC_STATIC1)
585デフォルトの名無しさん:2009/05/12(火) 15:45:09
だから、>>528の中盤に答が書いてあるだろ。
586455:2009/05/12(火) 15:45:27
>>583
それで?
587デフォルトの名無しさん:2009/05/12(火) 15:51:47
>>584
あー
もう
考え方がCすぎるんだよ

ダイアログにはクラスがひもづくでしょ
ダイアログを表示するには
そのクラスのインスタンスを作って表示するでしょ
ってことはそのインスタンス内のIDC_STATIC1は一つでしょ
だからダイアログのインスタンス->GetDlgItem()になるの!
588455:2009/05/12(火) 15:54:52
528?
そうか。なんだ。すまん。
>>528
んじゃ、DlgBの値は、どこで、どうやって取得するわけ?

実際の記述は、取得したときにDlgBという変数を使ったら、
そのまま
DlgB.GetDlgItem(IDC_STATIC1)→でいいわけ?
589デフォルトの名無しさん:2009/05/12(火) 15:58:33
ダイアログB(DlgB)の実体を生成したときに、ダイアログA(DlgA)のメンバ変数(自分で定義)に値をぶちこむ。
590デフォルトの名無しさん:2009/05/12(火) 16:01:36
やっぱりクラスという用語だけしってて中身を知らない感が
ひしひしと伝わってくる。
Cだけ知ってれば他の言語は全部わかったも同然っていう
感じがする。
591455:2009/05/12(火) 16:04:53
>>589
だから、その手法は、>>484で聞いてたんだよな。俺。

DlgB.を先走って「ハンドル」って言ったのは間違いだったかもしれんが。
でもハンドルみたいなもんだろ。とにかく「固有」(結局はアドレスだから)の数値なんだから。

592デフォルトの名無しさん:2009/05/12(火) 16:09:49
ハンドルで表わされる物がオブジェクト指向でのオブジェクトとなるのは
別に難しい概念じゃないと思うのだが
それに何で関数のヘルプ読まないの?
芋蔓式にそれに必要な物とやり方がわかると思うんだけど
593デフォルトの名無しさん:2009/05/12(火) 16:12:18
TBSの記者みたいなやつだな
594455:2009/05/12(火) 16:14:17
>>592
ヘルプに書いてある?
「コントロールのアドレス(又はポインタ)はダイアログが実行中しか取得できません。」
とかって、どっか書いある?
595455:2009/05/12(火) 16:16:41
訂正
・・・ダイアログが実行中しか取得できません。」
・・・その親ダイアログが実行中(フォーカス中)しか取得できません。」
596デフォルトの名無しさん:2009/05/12(火) 16:21:19
おまえはゆとりかw
597594:2009/05/12(火) 16:21:45
>>592

>>594は取り消し
根本的に質問が間違った。質問の本意は、
「ヘルプには、他のダイアログ(外部プロシージャ)にあるコントロールを
直接参照はできません。」とかって書いてある?

だった。

598デフォルトの名無しさん:2009/05/12(火) 16:27:27
>>597
だからね。そこはC++を勉強してたらそういう疑問は出ないの。
それが当たり前なの。
他のインスタンスの変数を直接参照できないように設計するのは
オブジェクト指向の初歩の初歩なの。
599594:2009/05/12(火) 16:30:08
>ダイアログB(DlgB)の実体を生成したときに、ダイアログA(DlgA)のメンバ変数(自分で定義)に値をぶちこむ。

とにかく、だから、俺は、そのことを>>484で問い正していたんだよ。
そうしたら日記に書けとかなんとかって・・・・

600デフォルトの名無しさん:2009/05/12(火) 16:32:31
ウィンドウハンドルだろうがオブジェクトのインスタンスだろうが、プログラムを実行中にしか取得できないわけだが、
ひょっとしてコード内に固定値でアドレスを書こうとしているのか?
601デフォルトの名無しさん:2009/05/12(火) 16:44:48
「実行中」の用語が間違ったな。
「生成中」、または「フーカスになったとき」だな。
vbだと共有変数にいちいち保存しなくても、プロシージャ(ダイアログやコントロール)の
名前だけで、その「擬似ハンドル」みたいなものは自動的に値は持ってるからね。

例えば、
Form2.Label1
って書けば別に、Form2のほうで共有変数(Public)に代入なんかしてなくてもいいわけで。
602デフォルトの名無しさん:2009/05/12(火) 16:47:34
別に共有変数でなくてもいいんだろ?
当然にパラメータで渡せばいいんだろ?
603デフォルトの名無しさん:2009/05/12(火) 16:48:40
455専用スレかよw
他の人が質問できない雰囲気になるぞ
604デフォルトの名無しさん:2009/05/12(火) 16:49:30
すまん
605デフォルトの名無しさん:2009/05/12(火) 16:51:28
>>601
だからVBは嫌われるんだよ
606デフォルトの名無しさん:2009/05/12(火) 16:53:13
なんだ結局質問の内容は
VBのForm2.Label1をどうやったらいい?
たったこれだけか
607デフォルトの名無しさん:2009/05/12(火) 16:55:03
>>606
!!
やっぱりVB厨じゃんww
608デフォルトの名無しさん:2009/05/12(火) 17:08:29
455専用スレ立てようぜ
609デフォルトの名無しさん:2009/05/12(火) 18:43:17
MFCだったらいちいちGetDlgItemしないで
Form2.Label1みたいにメンバ変数にするのもありだな
610デフォルトの名無しさん:2009/05/12(火) 18:48:57
アクセス頻度が高ければ当然そうする。常識だろ。
611デフォルトの名無しさん:2009/05/12(火) 22:30:11
VisualC++でPro*Cの統合開発環境を整えたいのですが
Oracleにのっているやり方が2002、2003等でのマニュアルなので開発環境の構築に手間取っています
誰かやりかたのわかるかたいますでしょうか?
ぐぐっても出ないので質問しました
612デフォルトの名無しさん:2009/05/12(火) 22:44:06
>>611
わかるけど全部教ええる気にはならん
どこまでできてるんだ?
613611:2009/05/12(火) 22:54:20
とりあえずは 
実行ファイルのパス追加
インクルードの追加はしました

その後の.pcを追加した時に出るなんたら規則の設定からマニュアルと違う風になっており止まっています
614デフォルトの名無しさん:2009/05/12(火) 22:58:06
>>613
すまん。.pcファイルはいつもコマンドプロンプトで
proc hoge.pc
とかやって.cにプリコンパイルしてからVCでコンパイルしてたw
つーわけで、他の人にまかす。
615611:2009/05/12(火) 23:02:40
>>614
わざわざありがとうございます
できないっていうことはないので何とか努力してみます
616デフォルトの名無しさん:2009/05/12(火) 23:57:29
150近くもレス使って>>455から>>606を引き出したおまいらに感動した
617デフォルトの名無しさん:2009/05/13(水) 11:41:41
スタック領域を増やさないといけないロジックってどんなの?
俺はしがない業務系プログラマなのでそんなロジック組んだこと無い。
618デフォルトの名無しさん:2009/05/13(水) 12:04:42
>617
たぶんVBの環境の話だから続きはVBスレでやってくれ
619デフォルトの名無しさん:2009/05/13(水) 15:11:10
すたっっくぅ〜〜!
620デフォルトの名無しさん:2009/05/14(木) 01:09:21
実際に体験してやったことがある人が「こうすればできる。」って言うことと、
、やったことのないものが「こうすればできるはざずだ。」って権威を傘に
他人に受け売りで言うことを、同じレベルで考える人が多いけどさ、それが、
「未熟」っていうことなんだ。
621デフォルトの名無しさん:2009/05/14(木) 01:40:30
>>616
本人は最初から言ってるわけだから、どの程度のレベルか。
↓「引き出した」んじゃなく「忘れてた」んだろ。スレタイと同時に。

>土曜から日曜にかけて1日かかって、スタティックコントロールに文字列出すことに
>成功した、ハンドル使わない方法でやっとだ。

455 :デフォルトの名無しさん:2009/05/12(火) 00:07:15
土曜から日曜にかけて1日かかって、スタティックコントロールに文字列出すことに
成功した、ハンドル使わない方法でやっとだ。
そこでだ、ものは相談だ。ハンドル使うSendMessage()とか、SetWindowText()
のやりかた教えろや。
622デフォルトの名無しさん:2009/05/14(木) 01:44:33
>>616
おまえの考えなら

★Visual C++を教えるスレ★ Part01

って別のスレを建てるか、又は、次からスレタイを

★初心者にVisual C++を教えるスレ★ Part33

★Visual C++を教えるスレ★ Part34

にするか、どっちかだわな。
623デフォルトの名無しさん:2009/05/14(木) 05:22:23
なんか必死になってるぞw

単なる初心者相手ならいいが、自己防衛の言い訳だけが多い奴の相手は時間の無駄だな。
624デフォルトの名無しさん:2009/05/14(木) 09:07:28
そもそも尿簿の話が出てくるからわからなくなる
組んでるのは誰なんだと
尿簿の経歴はどうでもよくて組んでるやつの経歴を
言えっつーのw
625デフォルトの名無しさん:2009/05/14(木) 14:23:11
にょうぼ、て何?
626デフォルトの名無しさん:2009/05/14(木) 14:25:42
女房の新しい言い方
627625:2009/05/14(木) 14:32:28
嫁かぁ サンク^2
628デフォルトの名無しさん:2009/05/14(木) 23:36:07
女なんてマンコがくせえビッチだろ。
629デフォルトの名無しさん:2009/05/15(金) 13:06:48
童貞乙
630デフォルトの名無しさん:2009/05/15(金) 16:34:40
>>628
お前のつきあった女はみんなマンコがくせえビッチだったのか。
かわいそうすぎるww
631デフォルトの名無しさん:2009/05/17(日) 19:08:36
MFCでの作成していますが、
既存のチェックボックス、ボタン、ラジオボタンを自分の作成したイメージ(画像)に変更したいと思います。
チェックボックスやボタンのイメージを自作して、表示させる方法を教えていただけないでしょうか?
632デフォルトの名無しさん:2009/05/17(日) 19:11:05
「オーナードロー」でググってみ
633631:2009/05/17(日) 19:47:12
>>632
ありがとうございます。調べてみます。
ボタンに関してはCBitmapButtonが使えそうですよね。
634デフォルトの名無しさん:2009/05/19(火) 15:43:36
DOS窓に出力したいんですが、どうすればいいのですか?
635デフォルトの名無しさん:2009/05/19(火) 16:05:03
AllocConsole()
636デフォルトの名無しさん:2009/05/19(火) 21:13:11
ボタンの文字に色を付けるってのが鬼畜級の難易度だコレ
637デフォルトの名無しさん:2009/05/19(火) 21:26:57
オーナードローの初歩だ
638デフォルトの名無しさん:2009/05/19(火) 22:03:40
最後のprintfでa,b,cの入力値を表示したいんですが、思い通りにいきません。
どうしたら表示出来るんでしょうか?

#include <stdio.h>
#include <math.h>

main()
{
float a, b, c, d;

printf("上底の長さを入力して下さい:");
scanf("%f", &a );

printf("下底の長さを入力して下さい:");
scanf("%f", &b );

printf("高さを入力して下さい:");
scanf("%f", &c );

d = ( (a+b)*c/2 );

printf("上底:%d、下底:%d、高さ:%dの台形の面積は、%fです。\n", a, b, c, d );
}
639デフォルトの名無しさん:2009/05/19(火) 22:15:03
printf("上底:%f、下底:%f、高さ:%fの台形の面積は、%fです。\n", a, b, c, d );
640デフォルトの名無しさん:2009/05/19(火) 22:42:38
>>639
ありがとうございます。
すごく簡単な事だったんですね・・・半日掛かりきりだったのにorz
641デフォルトの名無しさん:2009/05/20(水) 00:43:48
お願いします。

VC++2008を使っています。
今、エディタの背景色やフォント色を変更しているのですが
ソリューションエクスプローラの背景色やフォント色を変更する場所が見つかりません。
どこから設定するのでしょうか?
642デフォルトの名無しさん:2009/05/20(水) 21:58:28
VSC++使ってるんですけど、デバッグの時に出力メッセージが出なくなりました
成功、失敗、エラーなど一行も表示されません
ソースをコピーして新しいファイルに貼り付けたら表示されるようになりましたが・・どこを触ってしまったんでしょうか?
643デフォルトの名無しさん:2009/05/20(水) 22:19:50
>成功、失敗、エラー
はビルド時のメッセージ。
ソースに変更がない限り自動的にビルドされないから必ず出る必要はない。
644デフォルトの名無しさん:2009/05/20(水) 22:20:27
文字列と数字の混じってる要素{1,2,3,4,5}があり、
配列[2]の時は1,2
配列[5]の時は1,2,3,4,5
と入りきらない分は単純に切り捨てたいときはどんな風に記述するのがいいでしょうか?

645デフォルトの名無しさん:2009/05/20(水) 22:31:48
>文字列と数字の混じってる要素{1,2,3,4,5}があり、
俺には全部数値に見えるが。
646デフォルトの名無しさん:2009/05/20(水) 22:43:22
>>644
すごい意味不明に見える。
コンパイル時に決定するものとしないものの違いとか分かってます?
647デフォルトの名無しさん:2009/05/21(木) 19:19:32
VC++でstring変数を使って,文字列処理を山のようにしたら。
読込みー>+計算ー>””化 読込みー>+計算ー>””化 読込みー>+計算ー>””化
システムメモリーは、細かい断片化になってしまうのでしょうか?
648デフォルトの名無しさん:2009/05/21(木) 20:56:12
VC++2008ExpressEdition(CLR、Windowsフォームアプリケーション)で
ネット上にあるhtmlファイルを取得して保存とか文字列操作して表示とか
したいのですが、どういうクラスや関数を使ったらいいですか?
イメージ的には2ch専ブラみたいに特定のウェブページを取得して
テキストボックスとかに表示したいです。
649デフォルトの名無しさん:2009/05/21(木) 20:59:07
WinInetとか
650648:2009/05/21(木) 21:35:23
>>649
レスありがとうございます。
wininetについて今ネットで調べてみたのですがこれってwin32APIですよね。
win32APIはプログラミングが面倒だという印象を持っているんですが
C++でもwebページの取得はwininetが常套手段なのでしょうか?
VisualC++で使える便利なクラスみたいのはないのでしょうか?
わがまま言ってスイマセン。
651デフォルトの名無しさん:2009/05/21(木) 21:39:53
>>650
便利なMFCのクラスはあるけど、ExpressEditionじゃ使えない。
それに、Windowsプログラミングの基本はやはりWin32APIだから、それが面倒というなら
VBなりC#なり、C++以外でプログラミングすればよろし。
652デフォルトの名無しさん:2009/05/21(木) 22:39:22
>>648
boost::asioとかでいいんじゃないの?
653デフォルトの名無しさん:2009/05/21(木) 23:39:33
特定のウェブページを取得してテキストボックスとかに表示だったら
特に難しい処理はないだろ
やっつけで用が足りる
654デフォルトの名無しさん:2009/05/22(金) 00:13:42
>>648
WebClientとかSystem.Net名前空間の中あされ。
CLRアプリならC#スレでそれとなく聞くのがお勧め。
655648:2009/05/22(金) 00:55:27
>>650-654
皆さんありがとうございました。
WebClientよさそうですね。あとWebRequestもいけるかな・・・
とりあえずこの辺りから勉強してみる事にします。
とは言っても正直VCもC++も全く解らなくてまず何から
手をつけていいのか混乱している状態です。


656デフォルトの名無しさん:2009/05/23(土) 18:20:39
Microsoft Visual C++ 2008 Express Edition
をインストールしたのですが、
コマンドラインからコンパイルできません。
clと入力しても
'cl' は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。
と言われてしまいます。
どうすればコマンドラインからコンパイル出来るようになるでしょうか?
657デフォルトの名無しさん:2009/05/23(土) 18:24:16
658デフォルトの名無しさん:2009/05/23(土) 18:25:55
>>656 >>657
2005→2008に読み替え
659デフォルトの名無しさん:2009/05/23(土) 18:31:29
ありがとうございます。
普通のコマンドプロンプトからは出来ないのでしょうか?
g++と同じ感覚で使えると便利だと思っているのですが。
660デフォルトの名無しさん:2009/05/23(土) 18:44:18
パス通せばできるだろ
661デフォルトの名無しさん:2009/05/23(土) 18:58:20
VCVARS32 入ってないのか
662デフォルトの名無しさん:2009/05/23(土) 19:01:11
VCVARS32というバッチファイルでコンパイルするんですか?
663デフォルトの名無しさん:2009/05/23(土) 19:07:23
少しは自分で調べたらどうだ? VCVARS32 でググりゃいくらでもでてくるだろ。
664デフォルトの名無しさん:2009/05/23(土) 19:34:40
もちろん調べたんですが分かりませんでした。
確かにいくらでも出てきましたが
実行しても何もおこりません。
665デフォルトの名無しさん:2009/05/23(土) 20:38:59
VCVARS32を実行したら、そのコマンドプロンプトではそれ以降clが使えるようになるよ・・・
666デフォルトの名無しさん:2009/05/23(土) 20:51:42
・・・もしかしてOSを再起動してないからclが使えないのでしょうか。
今度OSを再起動できるようになったら試してみます。
ありがとうございます。
667デフォルトの名無しさん:2009/05/23(土) 21:12:09
>>665見て俺も実行してみた
が、アクセサリのほうのcmdからはclは使えなんだ
668デフォルトの名無しさん:2009/05/23(土) 21:23:52
>>667
ちゃんとCALLしたのか?
669デフォルトの名無しさん:2009/05/23(土) 21:25:55
>>667
「そのコマンドプロンプトで」って >>665 に書いてあるだろ?
アクセサリのコマンドプロンプトで VCVARS32 を実行しなきゃ、アクセサリのコマンドプロンプトでは使えんよ。
670デフォルトの名無しさん:2009/05/23(土) 21:43:39
初めてやったが問題なく使えた、edlin があるのに驚いた
671667:2009/05/23(土) 22:23:52
あ、出来た
672666:2009/05/23(土) 23:23:52
できました!
ありがとうございました。
673デフォルトの名無しさん:2009/05/24(日) 01:55:55
システムの環境変数に登録しとけば?

てか、VC6の頃は自動で登録してくれたのになぁ
674デフォルトの名無しさん:2009/05/24(日) 10:51:09
現在、Minimalist PSPSDKを導入し、
IDEとして、Visual C++を使用したいんですが、
どうもうまくいかない状況です。。

1>Project : error PRJ0019: ツールはエラー コードを返しました : "メイクファイル プロジェクト動作を実行しています。"

http://sourceforge.jp/projects/dxlibp/wiki/チュートリアル
のやり方で、Makefileも作成しています。それに加え、
インクルードの検索パスに
C:\pspsdk\psp\sdk\include
を設定し、
環境変数のPATHに
C:\pspsdk\bin
としています。

ほかに何か不備があるのでしょうか?

よろしくお願いします。
675デフォルトの名無しさん:2009/05/24(日) 11:06:36
なぜそのwikiで質問しない?
ここはそのサイトと関係ないだろ
676デフォルトの名無しさん:2009/05/24(日) 11:10:21
>>675
頭がパーだからに決まってるだろw
677デフォルトの名無しさん:2009/05/24(日) 12:53:20
>>675

すみませんでした。。
そちらのお世話になってきます。
678デフォルトの名無しさん:2009/05/24(日) 14:20:46
VisualStudio2005でMFCアプリをつくろうとしています。
それでコマンドライン引き数をプログラムに渡したいのですが、
スケルトンのままでビルドしてコマンドラインから、

ttt>hogehoge.exe test1(ret)

と実行すると、test1というファイルをさがしに行ってしまい、
ファイルが見つからないというメッセージを出して終了してしまいます。

普通にコマンドラインを渡すにはどこをいじればいいのでしょうか?
679デフォルトの名無しさん:2009/05/24(日) 14:28:30
CCommandLineInfo::ParseParam();
http://msdn.microsoft.com/ja-jp/library/bss6bxss(VS.80).aspx
680デフォルトの名無しさん:2009/05/24(日) 14:57:25
その文章だと本人の思い込みの可能性が強く感じられるから
アドバイスは遠慮する。
681デフォルトの名無しさん:2009/05/24(日) 15:33:15
___arg
アンダーバーのついたargとかいうもんがあった希ガス
682デフォルトの名無しさん:2009/05/24(日) 16:36:13
ヘルプのdocument explorerの文字を大きくするにはどうすればいいのですか?
初心者過ぎる質問ですがよろしくお願いします。
683デフォルトの名無しさん:2009/05/24(日) 16:52:24
「ヘルプに関するヘルプ (Microsoft Document Explorer ヘルプ)」を読め。
684デフォルトの名無しさん:2009/05/24(日) 16:56:49
>>682
表示メニューか右クリックメニュー
685デフォルトの名無しさん:2009/05/24(日) 17:07:54
683の言われたとおりにヘルプからで探したところ、
インターネットオプションで「WEBページのフォントサイズを使用しない」を選択すればよいことがわかりました。
ありがとうございます。

>>684
オンラインのページだと、文字のサイズを変えても、ページ内の文字の大きさが変わりませんでした。
686デフォルトの名無しさん:2009/05/24(日) 23:09:54
>>679
CCommandLineInfoでぐぐったら何とかなりました。Thxです。

>>681
それ以前にまったくアプリが立ち上がらなかったので。
687デフォルトの名無しさん:2009/05/24(日) 23:23:45
アプリか
自分もいつか作ってみたいもんだね
688デフォルトの名無しさん:2009/05/24(日) 23:50:48
>>686
ドキュメント/ビュー アーキテクチャを無理に使う必要はないんだぞ。:-)
689デフォルトの名無しさん:2009/05/25(月) 00:59:35
>>688
ドキュメントビューアーキテクチャって何を作って欲しいのか不明だよね
690デフォルトの名無しさん:2009/05/25(月) 11:16:32
>何を作って欲しいのか不明
それは君の経験不足だと思うが。
691デフォルトの名無しさん:2009/05/25(月) 18:38:21
最近VisualC++を使い始めたのですが、ソフトの特性を理解できていなくて困っているので一つ質問させてください。

main関数を含む単独のcppプログラムを2つ並行して使っているのですが、
それぞれ1つずつのVC++ウィンドウを開いて、それぞれにソリューションを表示してコンパイル(ビルド?デバッグ?)しています。
この2つを1つのウィンドウで開き、タブを切り替えてそれぞれ個別にコンパイルできるような構成にはできないでしょうか?

1つのソリューションに2つのプロジェクトを作って1つずつソースファイルを入れてCtrl+F5を押しても片方のソースだけが実行されてしまって悩んでいます。
692デフォルトの名無しさん:2009/05/25(月) 19:19:32
Microsoft Visual C++ 2008 再頒布可能パッケージ (x86)をインストールしたいんだけど、インストーラーでドライブ直下に展開されちゃう。

どなたか保存場所の指定の仕方わかります?
693デフォルトの名無しさん:2009/05/25(月) 19:26:33
>>691
後者の状況で、ソリューションエクスプローラ上のプロジェクトのアイコンを右クリック、
メニューの中の「スタートアッププロジェクトに設定」を選ぶと、
Ctrl+F5などを押したときに起動するのがそっちになる。
あと、ソリューションのプロパティで両方同時になどといった設定もできる。

頻繁に切り替えることを考えた作りに見えないし、
望みどおりになるのは難しいと思う。
本質的に別のなら、最初みたいに別々のソリューションにするほうがいいと思う。
694デフォルトの名無しさん:2009/05/25(月) 22:16:43
クラスを使ってゲーム作成などをし始めたのですが、作ってるうちにこんがらがってしまいます
配列はとても扱いやすくいので何もかも配列で処理させれば問題なく出来るんですが、
こういう場合はどうすればいいんでしょうか

無理してクラスは使わなくていいんでしょうか?それとも僕はC++に向いてないんでしょうか?
695デフォルトの名無しさん:2009/05/25(月) 22:52:06
>>694
その配列に処理するための関数がくっついていれば便利だと思うことはないかね?
696デフォルトの名無しさん:2009/05/25(月) 22:58:05
>>694
たくさん作ればそのうちわかる
697694:2009/05/25(月) 23:03:34
ありがとうございます!
>>695
説明では何度も読んでいるんですが、どうしても使いこなせないんですよね。多分理解できてないんでしょう・・
計算はmain関数、データは配列に格納って固定概念がいつまでも離れないんです
>>696
ありがとうございます。とりあえずあまり考えずに何か色々作ってみます。
その内なにかひらめくかもしれませんね
698デフォルトの名無しさん:2009/05/25(月) 23:09:24
プログラミングのノウハウ、作り方や設計等、デザインパターンもそう。
本だけの知識で修得できるものじゃない、体で覚える方が大切。
699デフォルトの名無しさん:2009/05/26(火) 02:48:19
判るなぁ、その気持ち
大きいのと小さいのは判るんだけど、それを使って何かやろうとすると
ウゼーと思ってオブジェクト化崩しちゃう
最後まで設計するのが面倒でコーディングに走っちゃうのが
駄目なんだろうな
700デフォルトの名無しさん:2009/05/26(火) 09:26:35
この人はグローバル変数やめるところから始めるべきだ
701デフォルトの名無しさん:2009/05/26(火) 13:04:20
質問です。
開発環境はVisual C++2005です。
静止画を連続表示してGIFアニメのように見せるソフトを考えています。
今、連続画像AとBがあって、同時に再生スタートして、
ずれないように毎画像(毎フレーム)ごとにお互いの同期を取りながら再生させるには、
どのようにすればよいでしょうか?
よろしくお願いします。
702デフォルトの名無しさん:2009/05/26(火) 15:18:17
>>701
すれ違いではあるまいか。
答えは、同期なんかとらなくても、同じスレッドで表示すればいいだけだろ。
703デフォルトの名無しさん:2009/05/26(火) 19:33:33
>>701
ギャハハハw
ダッセーw


以下、>>701の発言を正当化する後付け設定の嵐どぞ↓w
704デフォルトの名無しさん:2009/05/26(火) 19:46:28
  ┌┐         / //
 [二  ] __     〔/ / 
   | |/,ー-、ヽ      / 
  / /  _,,| |     ./      
 レ1 |  / o └、  ∠/    ∧_∧    
   .|__|  ヽ_/^     ,/     ( ´∀`)       ))
      __       /      /つ( ̄`ヽO_ノ⌒ヽ
   [二二_  ]    /     ノ   )        \ ))
       //    {..    (__丿\ヽ ::    ノ:::: )
     / ∠__    ̄フ..      丿        ,:'  ))  
    ∠___  /  /    (( (___,,.;:-−''"´``'‐'    
     _   / /  \      
    / o ヽ/  /   /      
    ヽ__ /    \
705デフォルトの名無しさん:2009/05/26(火) 21:59:51
VC++2008 MFCダイアログベースでアプリを作成しているのですが
ダイアログにファイルをドロップした時に、
ダイアログ上に設置されたリストコントロール上にドロップされたのと、
それ以外のダイアログ上の場所にドロップされたのとで別の処理をしたいのですが、
どう判別したらいいのかわかりません。
教えてください。

よろしくお願いします。
706デフォルトの名無しさん:2009/05/26(火) 22:12:35
ダイアログにファイルをドロップした時→ダイアログにWM_DROPFILESがポストされる。
リストコントロールにファイルをドロップした時→リストコントロールにWM_DROPFILESがポストされる。

むろん、ダイアログもリストコントロールも Accept Files を True にしておく。

[別解]
ダイアログだけ Accept Files を True にしておき、ドロップされた時のマウス位置で判別する。
707デフォルトの名無しさん:2009/05/26(火) 22:19:41
最近プログラムの流れをノートに書いてるんですが、
こういう流れの図ってなんていうんでしたっけ?
708デフォルトの名無しさん:2009/05/26(火) 22:21:03
フローチャート
709デフォルトの名無しさん:2009/05/26(火) 22:22:28

   ̄ヽ、   _ノ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
     `'ー '´              ,. -- 、
      ○             ,' , '⌒,ノ
       O           .__ i/  ´
        o    ,,.. '"´ ̄ (__)r'ヽ         と
         。 /        ` ´`ヽ        思
           ,'     ,、 ─-     ',       う
           ! 、 ,.i- i ハi,;-ァ!、 i   i      神
           i i i !,-;!、  ':,_rハiノ|   .|     .綺
           レV!. i.ハ_r! 、  "" i |.   |     で
            i.八"    _   ノ |.  |      あ
            l.|ゝ.>,,、__,,.. イノ レハ  |      っ
            レ| l  | ,.イ-ーニノト.ー 、i |     た
             .| l ,.ヘ、ニ_ノノ  `ヽ!
              | / //不\ヽ    `ヽ
710デフォルトの名無しさん:2009/05/26(火) 22:34:16
>706
回答ありがとうございます。

>ダイアログにファイルをドロップした時→ダイアログにWM_DROPFILESがポストされる。
こちらはOKですが、
>リストコントロールにファイルをドロップした時→リストコントロールにWM_DROPFILESがポストされる。
こちらの場合の処理手順がわからないのでマウス位置判別の方法で試してみます。

どうもありがとうございました。
711デフォルトの名無しさん:2009/05/26(火) 22:50:52
>こちらの場合の処理手順がわからない
CListCtrl の派生クラスを作成して当該リストコントロールに結びつけ、
その派生クラスでWM_DROPFILESメッセージを処理する。
712710:2009/05/26(火) 23:13:35
>711
試行錯誤しながら試したらうまくいきました。
ありがとうございました。
713デフォルトの名無しさん:2009/05/27(水) 23:39:01
デバッグ中にステップインでプログラムを進めているのですが、いつの間にか終わってしまいます
「何かキーを入力してください」の画面も出ません
ウォッチ式のところも文字がグレーになってしまいます
ループのところでハマっているかとも思いましたが、そういうわけでもありませんでした
これはどういう状態なのでしょうか?
714デフォルトの名無しさん:2009/05/28(木) 10:22:58
出力ウィンドウには何か出てない?
715デフォルトの名無しさん:2009/05/28(木) 12:26:06
リリースビルドだったら許さん
716デフォルトの名無しさん:2009/05/28(木) 12:35:47
アクセスバイオレーションで続行して飛んでるとか
オブジェクト残ってて実は終わってないとか
717デフォルトの名無しさん:2009/05/28(木) 17:26:40
猫でもわかるプログラミングさんのサイトを使っていたんですが、
WindowsSDKのプログラムを打ちこんだのですがVisual C++ 2008 EEではビルド出来なくて困っています
Visual C++ 2008 EEのアプリケーション開発入門用のサイトで
お勧めなのはありませんか?
718デフォルトの名無しさん:2009/05/28(木) 18:19:08
ビルドできないってどんな理由で?
ユニコード文字セットのせいじゃないの?
719デフォルトの名無しさん:2009/05/28(木) 18:32:09
ttp://www.kumei.ne.jp/c_lang/sdk/sdk_00.htmのコードをそのままコピペして使いました
そしてビルドしたところ以下のようなエラーメッセージが出ました

sample01.cpp(38) : error C2664: 'CreateWindowExW' : 2 番目の引数を 'char [25]' から 'LPCWSTR' に変換できません。(新しい機能 ; ヘルプを参照)
1> 指示された型は関連がありません。変換には reinterpret_cast、C スタイル キャストまたは関数スタイルのキャストが必要です。

この他に二つエラーが出ましたが、
そちらは型変更のキャストを入れています
720717:2009/05/28(木) 18:38:56
すみません、>>719>>718の返答ですorz
721デフォルトの名無しさん:2009/05/28(木) 18:42:55
>>719
まさに>>718
マルチバイトとUNICODEが混在してる。
プロジェクトのプロパティと使用してる文字セットを見直して。
722デフォルトの名無しさん:2009/05/28(木) 18:57:36
>>721
助かりました
Unicodeからマルチバイトに変更したら問題なく通りました
半日悩んでたので、ようやくすっきり出来ましたw
723デフォルトの名無しさん:2009/05/29(金) 02:03:34
mfcの求人がないお(;ω;)

mFCこそしきょくの現代プログラミングだとおもうんだお(^ω^)
724デフォルトの名無しさん:2009/05/29(金) 02:17:42
>>723
あー、わかる
ホント仕事ないよなぁ・・・
っていうか別にこれに限らずプログラム組む仕事ならちょっとなれれば
なんでもできるからどこへでもまわしてくれって思うけどね
725デフォルトの名無しさん:2009/05/29(金) 08:04:27
MFCの求人がないお
というレスに対してのレスとしてそれは正しいのか?

仕事がないおじゃなくてMFCの求人がないおだぞ
的外れにもほどがあるお
726デフォルトの名無しさん:2009/05/29(金) 08:17:32
Webじゃ作れない業務に強くなるしか無いんじゃない?
ムスレの話題じゃないなw
727デフォルトの名無しさん:2009/05/29(金) 16:36:55
ここで質問すべきなのか分かりませんが。

8FFFFFFFU と 1U では

_BitScanForwardした結果を返すスピードは
変わらないのでしょうか?

上位のほうにあろうと下位のほうにあろうと関係ないのでしょうか。
728デフォルトの名無しさん:2009/05/29(金) 16:52:55
自分で試しても違いがわからなかったら変わらないと言える。
729デフォルトの名無しさん:2009/05/29(金) 16:53:31
>>727
http://homepage1.nifty.com/herumi/diary/0811.html
のページによると_BitScanForwardはアセンブラレベルでは
bsfの1命令に落ちるみたいなので、変わらないんじゃないの

確実な答えがしりたいなら人に聞くんじゃなくて、Intelのサイトとかで
対象CPUの命令のスペックを調べること
730デフォルトの名無しさん:2009/05/29(金) 19:51:56
今、学校の課題をやっているところなのですが、
「関数 'erfc' は定義されていません。」と出てしまいました。
erfc()はmath.hのエラー関数の関数で、
ぐぐったところ、標準ライブラリ(拡張)と出てきました。
どうすればいいでしょうか。お願いします。
731デフォルトの名無しさん:2009/05/29(金) 20:20:17
なんだ、まだ解決してないのか
先生に聞いてみな
732デフォルトの名無しさん:2009/05/29(金) 20:44:58
>>725
ないのはしょうがねぇじゃんw
でもそれ以外不可ってのが俺的にネックだなぁ・・・
って感じでレス書いてる内に俺の都合レスになったw
733デフォルトの名無しさん:2009/05/29(金) 20:58:57
>729
1命令で収まりそうですね。
ビットを探すためにループ処理はしていませんね。
ありがとうございました。
734デフォルトの名無しさん:2009/05/29(金) 22:38:59
>>724
畑違いだとめっちゃしんどいぞ。
735デフォルトの名無しさん:2009/05/29(金) 22:40:12
>>734
っていっても俺はじめゲーPGだしw
736デフォルトの名無しさん:2009/05/30(土) 17:33:07
関数を作ると、

関数に 2 個の引数を指定できません。

と出るんですが、どうすればいいでしょうか

737デフォルトの名無しさん:2009/05/30(土) 18:00:51
関数プロトタイプを見直せ。
738デフォルトの名無しさん:2009/05/30(土) 18:01:23
それは作ったほうじゃなくて呼び出したほうのエラー
具体的にどうやったのか?
739デフォルトの名無しさん:2009/05/30(土) 18:49:23
>>737,>>738
分かりました、ありがとうございます
いままで関数のほうばかり見て、
関数プロトタイプの括弧の中を記述し忘れていました
740デフォルトの名無しさん:2009/05/30(土) 20:01:17
さっきVisual C++ 2008 Express Edition をインスコしたとこで、とりあえず簡単なプログラム実行させようとしたんだけど、

include ファイルを開けません。'iostream.h': No such file or directory
って出てコンパイル通らんという状態なんだが

Cygnusでは実行できたからソースコードが悪いわけではないと思うんだが・・・
それとも新規プロジェクトはWin32コンソールアプリケーションじゃあ駄目だったのか?
741デフォルトの名無しさん:2009/05/30(土) 20:13:08
インクルードパスに追加すればいいだけでは?
742740:2009/05/30(土) 20:16:25
#include <iostream.h>は#include <iostream>にしたらエラー吐かなくなった。 
なんか新しい書式だと.hを付けないから古いほうだとエラーになるとかなんとか…?
でも俺らの参照する文献(ネット上も含めて)には旧バージョンもまだまだあるだろ…迷惑な

でも#include <iomanip.h>のほうはエラー吐き続けるんだが・・・
743デフォルトの名無しさん:2009/05/30(土) 20:32:56
#include <iomanip>
744デフォルトの名無しさん:2009/05/30(土) 20:48:24
すみません。書籍スレと迷ったんですが、こっちで聞かせてください。

大分、MFCにもなれ、自作アプリを3個くらい手の込んだのを作りました。ある程度のアプリなら
ネットやら書籍で検索しながら作れるような気はしてます。
書籍もオークションやらブックオフで色々あさって技術評論社とかAsCIIのを
12冊くらい持ってます。で、色々お勧め本をみるとハーバートシルトのMFC6.0という分厚いやつがお勧めらしいですが
本屋でぱっと見た限りほとんど知ってる事だと感じました。実際読んでないんでわかりませんが、
それでも含蓄あるから買ったほうがいいとか
そういうことありますか?
745デフォルトの名無しさん:2009/05/30(土) 21:00:59
人それぞれだと思うよ。
もっとも、趣味範囲でのプログラミングなら、参考書に載っていない部分を、工夫しながら作っていくのが面白いのだけどな。
746デフォルトの名無しさん:2009/05/30(土) 21:13:51
他に持ってる本で用が足りてれば買ってもしょうがないだろうけど
そんなの全部内容比較しなきゃ誰にもわからんだろ
747デフォルトの名無しさん:2009/05/31(日) 01:45:45
プログラミングに限らず大抵の分野について初心者用の本ばかりなんじゃないの。
中級向けの本なんて作るの大変なうえに売れないし、作る人いないんじゃないかな。
雑誌でちょっとずつ高度な話を連載して書籍化ってパターンがあるけど雑誌が売れなくて消えてく時代だし。
748デフォルトの名無しさん:2009/06/03(水) 00:07:40
すいません。教えてください。
#include <string>
#include <iostream>
using namespace std;

class User
{
private:

public:
User()
{
cout << "デフォコン" << endl;
}
};

int main()
{
User x;
User y();
return 0;
}

User y();でデフォルトコンストラクタが呼ばれないのは何でですか?
749デフォルトの名無しさん:2009/06/03(水) 00:16:32
>>748
User型の戻り値を持つ関数yのプロトタイプ宣言とみなされてるとか
750デフォルトの名無しさん:2009/06/03(水) 00:25:40
>>749
ありがとうございます
cout << typeid(x).name() << endl;
cout << typeid(y).name() << endl;
してみたら、さらに納得がいきました。

てか、よんでる入門書にそういう記述があったので・・・
本の正誤表に出てるかもしれないですね。

ありがとうございました
751デフォルトの名無しさん:2009/06/03(水) 00:40:11
>>750
てか、このパターンはぱっと見関数宣言と変数定義の区別が
つかないような気がするのでコンパイラによっては(VCでもバージョンによっては)
動作が異なるのかも知れない

C++相談室スレとかにいけば、どう解釈するのか正しいのか教えてもらえるかも
752デフォルトの名無しさん:2009/06/03(水) 01:10:44
Visual Studio 2008付属のVisual C++で、ダイロアグベースのMFCアプリケーションを
作り始めてみました。

エディットコントロールの使い方について教えてください。

エディットコントロールの使い方として、
・変数の追加で、カテゴリControlの変数を追加する。
 →GetWindowText()で内容を取得する。
・同様にカテゴリValueの変数を追加する。
 →UpdateData()で変数を更新して内容を取得する。
・変数を追加しない。
 →GetDlgItem()とGetWindowText()を使って内容を取得する。
このようにいくつか方法があると思っています。

それぞれの方法の長所や短所、使い分ける時の基準、みたいなものはありますか?
753750:2009/06/03(水) 01:18:26
http://www.geocities.jp/bleis_tift/cpp/defaultctor.html
こんなの見つけました。
コンパイラによっては警告を出してくれんですね

ちなみに私が使ってたのはVC++ 2008です

ありがとうござました
いろいろ氷解しました
754デフォルトの名無しさん:2009/06/03(水) 01:26:20
>>753
リンク先にもあるようにVisual C++は警告を出すコンパイラなんだけど気付かなかった?
そうなら、警告もエラーと同じくらいよく目を通したほうがいいよ。
755デフォルトの名無しさん:2009/06/03(水) 06:18:35
>752
数値の場合はDDX DDVが便利。
ただ複雑なことはできないのとUpdateDataが面倒
文字の場合は直にGetWindowTextが手っ取り早い
毎回GetDlgItemが面倒ならメンバ変数にしておく。
あとCEditのメンバ関数と使い分け
756デフォルトの名無しさん:2009/06/03(水) 06:21:25
と思ったけどDDX DDVの中味を自作する方法もあったな
757デフォルトの名無しさん:2009/06/03(水) 19:24:40
入門書を一通り読み終えて
簡単なアプリを作りながらVisualC++の使い方を覚える本をはじめたのですが
最初の方で
String^ msg = now.ToString();
という記述が出てきました。
この^は見た覚えがないのですがなんか演算子なのですか?

今この書き込みかいててちょっと思いついたんですけど
もしかしてクラス名が
String^
ってことはないですよね?
758デフォルトの名無しさん:2009/06/03(水) 19:39:37
それは、C++のようでC++でない.NET用の拡張C++/CLIの構文。
759757:2009/06/03(水) 19:41:40
ありがとうございます。

すいません。取り除いてコンパイルしてエラー文検索で見つけました。
http://msdn.microsoft.com/ja-jp/library/ms235261(VS.80).aspx
ですね。
760デフォルトの名無しさん:2009/06/03(水) 19:51:48
どっちみちC++とは違うものだし、.netがやりたいなら普通はC#にする。
761デフォルトの名無しさん:2009/06/03(水) 20:08:17
satou
762757:2009/06/03(水) 20:51:42
>>760
C++を選んだのはオブジェクト指向でネイティブアプリが作りたかったんですけど
CLIはネイティブじゃないんですよね。

C++でwindowsのネイティブアプリを作るとなるとVisual Studio 2008 Standard Editionあたりを買って
MFCで作るのですか?

そもそも見た目をグラフィカルに配置して、モデル部分やボタンなどのアクションをC++で書くというのを
イメージしてたのですが、製品版買えば、MFCアプリをフォームエディタでのようにペタペタはって
作れるのですか?

アマゾンでC++ MFCを検索すると2003年から新刊出てないようなのでMFCってもういまさらって感じですか?

何かをプラスでインストールしないと動かないアプリっていうのがいやなんですよね。

いろいろ聞いてすいません・・
763757:2009/06/03(水) 21:12:16
なんか色々あってややこしいですね・・・

いろいろ見てみたけど
勉強するならWin32APIですかね?
764デフォルトの名無しさん:2009/06/03(水) 21:13:51
とりあえずネイティブは無料版でも扱える(MFCは有料のみ)
俺的考えはビスタ以降は標準で.NETがインストールされてるからそこまで嫌う必要はないと思ってる
765デフォルトの名無しさん:2009/06/03(水) 21:25:55
757はなにをやりたいのかさっぱり分からん
例えばゲーム作りたいならC++とネイティブとDX、
ブラウザとかのツール系なら.NETのほうが開発しやすいし、
win系OS全部に対応させたいならWin32APIのみで開発するし
目的によって勉強する言語は変わってくるんだがなー
766デフォルトの名無しさん:2009/06/03(水) 22:25:24
mfc使ってみようと思う時はribbon触りたくなった時くらい
767デフォルトの名無しさん:2009/06/03(水) 23:06:10
そのリボンもWindows 7からWin32 APIの仲間入り。
768デフォルトの名無しさん:2009/06/03(水) 23:41:00
ループを抜け出すときにはbreakを使いますが、これを自分で手定義した関数から実行することは出来ますか?
void aaa()
{
break
;}
int main(){
for(int i=0;i++;i>5)
{
aaa()
;}
return 0;}
のような感じです

769デフォルトの名無しさん:2009/06/03(水) 23:44:04
不可。
770デフォルトの名無しさん:2009/06/03(水) 23:52:55
>>769
ありがとうございます
771デフォルトの名無しさん:2009/06/04(木) 00:39:32
VC++2005でCStringを使おうとすると以下のエラーが出てしまいます。
何か設定など必要なのでしょうか?

error C2065: 'CString' : 定義されていない識別子です。
772デフォルトの名無しさん:2009/06/04(木) 00:48:17
#include <tchar.h>
#include <atlstr.h>
773デフォルトの名無しさん:2009/06/04(木) 01:01:37
>>771
VC++2005eeじゃね?
有料版じゃないとMFCは使えないよ
774771:2009/06/04(木) 04:55:54
>>772様 >>773様 御回答ありがとうございます。

VC++2005eeにて文字列変数のコピーをするにはどうしたらよいのでしょうか?
775デフォルトの名無しさん:2009/06/04(木) 07:11:09
lstrcpy
776デフォルトの名無しさん:2009/06/04(木) 07:28:37
文字列変数というのがchar*なら>>775

#include <string>してstd::string使うとか。
C++/CLIならSystem::Stringもあるけどまあ別物か
777デフォルトの名無しさん:2009/06/04(木) 08:11:08
もしかして標準C/C++の基本がまだできてないなら
C/C++スレへ行け
778757:2009/06/04(木) 11:55:50
>>764
C++と.NETだとC++のランタイムがスタティックリンクができないので
.NETが入ってたとしてもC++のランタイムのインストールが必要って聞いたんですけど
そんなことないですか?


プロジェクトのプロパティでランタイムライブラリを
マルチスレッド デバッグ (/MTd)
に変えてリビルドしたら
コマンド ライン error D8016 : コマンド ライン オプション '/MTd' と '/clr:pure' は同時に指定できません。
と言われました。
マルチスレッド デバッグ (/MT)でも同じ感じです。

>>765
作りたいのは「ブラウザとかのツール系」です。
.NETなのかな〜

まあ、両方ザックリ本読んで考えて見ます。


779デフォルトの名無しさん:2009/06/04(木) 13:44:07
RPGゲームを作っています

main関数の中でとりあえず作ってみたのですが、
これをそのままクラスにするいい方法はありますか?
コード自体はたいした量ではないので、作り直すのは簡単なのですが
後学のためにも教えてください。

それとも戦闘画面をメインにし、フィールドを歩くときは別フォームを呼び出したりするほうが良いでしょうか
780デフォルトの名無しさん:2009/06/04(木) 14:11:49
地道に作り直せ
781デフォルトの名無しさん:2009/06/04(木) 14:29:42
VS2003で作成されたActiveXコントロールの更改をしているのですが、
最適化オプションが、
・プログラムサイズ
・実行速度
の時は問題ないのですが、
・無効
・最大限の最適化
・カスタム
にして、リビルドを行うと、Regsvr32で以下のエラーが発生します。
「LoadLibrary("○○.dll")に失敗しました。指定されたモジュールが見つかりません。」
原因が全くわかりません。
どなたか原因をご存知の方教えて下さい。
782デフォルトの名無しさん:2009/06/04(木) 14:41:48
>>780
うーん、残念です
ありがとうございました〜
783デフォルトの名無しさん:2009/06/04(木) 15:18:13
>>781
Dependency Walker などを使って依存しているライブラリに違いが
ないか調べてみるとか
784デフォルトの名無しさん:2009/06/04(木) 16:12:10
元々自分で作った物じゃないから作りを理解してないんだろ
785781:2009/06/04(木) 18:13:26
>>783
素晴らしいToolの紹介をありがとうございました。

最適化無効でビルドされたDLLと最適化実行速度でビルドされたDLLを
調べてみたところ、Regsvr32が失敗する方(最適化無効)で開けないDLLがあるというようなエラーが出ました。
そのDLLをプロジェクトに配置してみたら、ビルド後イベントのRegsvr32が成功し、エラーはなくなりました。

リビルドではエラーはでなくなったのですが、コマンドでRegsvr32を実行すると、
やはり同様のエラーが出て登録はできません。(リビルド時に登録されたDLLを登録解除もできません。)
786781:2009/06/04(木) 18:15:00
続きです。

これは何がいけないのでしょうか…?

引き続き、ご存知の方教えてください。
787デフォルトの名無しさん:2009/06/04(木) 18:55:51
class Test1
{
virtual ~Test1() = 0 {}
};
class Test2
{
virtual ~Test2() = 0 {}
};
class Test3 : virtual public Test1, virtual public Test2
{
virtual ~Test3() = 0 {}
};
これをコンパイルすると、
warning C4505: 'Test3::~Test3' : unreferenced local function has been removed
という警告が出るのですが、何が問題なんでしょうか?
788デフォルトの名無しさん:2009/06/04(木) 18:58:19
>>785
気になるのはDLLの配置場所かな

確かDLLのロードは
- 環境変数PATHで指定されたディレクトリ
- exeのある場所
- カレントディレクトル
などを参照したと思うけど、
VC上からビルドして実行すると、たまたまカレントディレクトリが上記の <project>
になるので、DLLは <project> 直下においても読み込んでくれる
しかし、コンソールから実行する場合、カレントディレクトリやPATHに注意しないと
うまくロードされないとか
789781:2009/06/04(木) 19:25:52
>>788
まさにその通りでした。配置場所をバイナリファイルと同じ場所に配置することで解消しました。
(一層上のプロジェクトファイルに配置してました。)

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

ただ、最適化オプションの違いでエラーになったり、ならなかったりするのが
不明のままなのが気になりますが…。
790デフォルトの名無しさん:2009/06/04(木) 19:44:00
C++初心者です。
TextBoxを画面に表示したいんですが上手く作成できません。
プロジェクト作成でWIN32を選択してからテキストボックスを作りたいと思っています。

TextBox textBox1;
textBox1 = gcnew TextBox;
textBox1->Location = Point(100, 16);
Controls->Add(textBox1);

をソースに追加したのですが

error C2065: 'TextBox' : 定義されていない識別子です。
error C2146: 構文エラー : ';' が、識別子 'textBox1' の前に必要です。
error C2065: 'textBox1' : 定義されていない識別子です。
error C2065: 'gcnew' : 定義されていない識別子です。
error C2146: 構文エラー : ';' が、識別子 'TextBox' の前に必要です。
error C2227: '->Location' : 左側がクラス、構造体、共用体、ジェネリック型へのポインタではありません。
型は ''unknown-type'' です。
error C3861: 'Point': 識別子が見つかりませんでした
error C2065: 'Controls' : 定義されていない識別子です。
error C2227: '->Add' : 左側がクラス、構造体、共用体、ジェネリック型へのポインタではありません。
型は ''unknown-type'' です。

というコンパイルエラーが出ます。
テキストボックスはフォームでないと作成できないのでしょうか?
環境はMicrosoft Visual C++ 2005です。
791デフォルトの名無しさん:2009/06/04(木) 21:02:55
いろいろ間違いすぎてどこから説明したものやら・・・
とにかく最初から最後まで間違ってる
792デフォルトの名無しさん:2009/06/04(木) 21:32:30
>>790
そのTextBoxは.NETのWindows Formsの一部。
CLRプロジェクト以外では使えない。
おとなしく.NET Frameworkの世界にいなさい。
793デフォルトの名無しさん:2009/06/04(木) 23:08:25
一体どこからそういう情報もってきてんだ?
情報仕入れたとこに全部書いてるだろ
794デフォルトの名無しさん:2009/06/04(木) 23:09:20
入門書を4〜5冊はやらないと全体が見えないよな
795デフォルトの名無しさん:2009/06/04(木) 23:11:38
>>793>>778にレスね
796デフォルトの名無しさん:2009/06/04(木) 23:17:58
VC6 での質問です
変数の値が変更された時にブレークポイントがひっかかるようにする方法って
どのようにすればできるのでしょうか?
797デフォルトの名無しさん:2009/06/04(木) 23:41:39
[編集] メニューの [ブレークポイント] をクリックします。


[ブレークポイント] ダイアログ ボックスで、[データ] タブをクリックします。


[評価される式を入力してください] ボックスに変数名を入力ます。


[OK] をクリックしてブレークポイントを設定します。
798デフォルトの名無しさん:2009/06/04(木) 23:53:07
>>797
できました
ありがとうございます
799デフォルトの名無しさん:2009/06/05(金) 15:50:52
VC2008EEでデバッグしています。
forのループ内にブレークポイントを置いてステップアウトしているんですが、
ループの回数が1000単位なので、1回ずつ変数の状態を見るのは手間がかかりすぎてしまいます。
例えば100回に1回だけ変数の状態を見たい場合、いい方法はないですか?
800デフォルトの名無しさん:2009/06/05(金) 15:55:42
>>799
>>796-797の応用
801デフォルトの名無しさん:2009/06/05(金) 17:22:52
>>800
6と2008EEの違いのせいか、>>797の項目が見つからず、
いろいろいじってたらヒットカウントというぴったりの物がありました。
どうもでした。
802デフォルトの名無しさん:2009/06/05(金) 18:21:37
いまここに、Ansi C で書いたスタティックライブラリ c.lib があります。
そのライブラリをつかって、C++で書いたアプリケーション(GUIに依存しない部分を記述したもの)myapp があります。
GUI はお手軽に C# で書きたいので、アプリケーション部分 myapp を dll 化して、それを C# から呼び出したいです。

そこで、myapp.dll をつくりたいのですが、いざビルドしてみると、myapp から c.lib の関数を参照している部分でリンカエラーになります。
c.lib をスタティックリンクさせた状態で myapp.dllをつくるにはどうすればよいでしょうか?
c.dll を作るのがめんどくさいので、myapp.dll が c.lib を内包してくれるとありがたいのですが。


803デフォルトの名無しさん:2009/06/05(金) 20:22:08
できるはずだから、リンカオプションがまずいだけ。
804デフォルトの名無しさん:2009/06/05(金) 22:17:43
extern "C"
{
#include "[c.libの関数のヘッダ]"
}
でもリンクエラーが出る?
805デフォルトの名無しさん:2009/06/05(金) 22:19:15
リンカオプションですか....
c.lib をスタティックリンクするのって、もしかして
myapp.dll のソースで #pragma comment(lib, "c.lib")
だけではダメだったりしますか?
(もちろん c.lib のあるディレクトリにパスが通ってるのが前提として)
806デフォルトの名無しさん:2009/06/05(金) 22:34:56
それであっている。EXEでLIB使うときと同じ。
そういえば、そのLIBとDLLでCRTの設定は同じ?
異なっているといるとよくリンカに怒られる。
807デフォルトの名無しさん:2009/06/05(金) 23:58:52
現在デバッグビルドで試していますが、ランタイムライブラリの設定は c.lib と myapp.dll の両方で
「マルチスレッドデバッグ (/MTd)」で統一してあります。

呼び出し規約が c.lib だとデフォルトの設定のままで __cdecll に、
mydllではDLLのお約束(?)に従って __stdcall になっているのが気になりますが、
これは問題があったとしても実行時にでるものであって、リンカエラーとは関係ないですよね...
書き忘れましたが、リンカエラーというのは

未解決のシンボル "int __stdcall AAA()" (?AAA@@BBB@@CCC@D" が関数 "public: int __thiscall EEE::FFF() (?FFF@EEE@@GGG) で参照されました

というのがつらつらでてくるものです。
myapp(C++)もともと exe として作っていて、そこから c.lib を参照するために、
cライブラリには既に extern "C" が記述してあります。

そしてその exe はきちんとビルドできて、実行できていました。

それでも念のため、ライブラリの #include をさらに extern "C" で囲んでみると、
なぜか Direct3D のヘッダ d3dx9math.h で大量の

"operator *" Cのリンゲージ関数はC++のクラス D3DXVECTOR2を戻せません

メッセージがでました。

もうすこし試してみます。
808デフォルトの名無しさん:2009/06/06(土) 00:34:48
呼び出し規約の違いはdefファイル使わねえとそのまま名前装飾に影響する
809デフォルトの名無しさん:2009/06/06(土) 00:54:26
そういうことで惑うなら、呼出規約はソースコードに
いちいち書いたほうがいいよ。コンパイラオプションにて一括で指定するのではなく。
810デフォルトの名無しさん:2009/06/06(土) 02:08:13
MFCのMDIで秀丸みたいなマルチドキュメントにしたいんだけど(タブ形式)
普通にEditビューじゃタブ形式にならないんだけど、どうすればいいの?
811デフォルトの名無しさん:2009/06/06(土) 03:03:48
なるだろ?
2008のSP1限定だけど
812807:2009/06/06(土) 11:32:31
なるほど、呼び出し規約を変えたら嘘のようにエラーがなくなりました。
いままで呼び出し規約を気にした事はなかったので、良い勉強になりました。どうもありがとう。
813デフォルトの名無しさん:2009/06/06(土) 12:15:31
なるほどなるほど
814デフォルトの名無しさん:2009/06/06(土) 12:30:33
VC++でWin32プログラムを作成しています。
VS2008の雛形を元に、DialogBoxを追加しようとしているのですが上手く出来ません。
現在はファイルとヘルプの2個だけです。
やったこと
(1)WndProc()のmessage引数で、WM_CREATEが渡された場合に
DialogBox(hInst, MAKEINTRESOURCE(IDD_XXXBOX), hWnd, Xxx);
と書いた
(2)Xxxは以下のような関数です
INT_PTR CALLBACK Xxx(HWND, UINT, WPARAM, LPARAM);

コンパイルは出来たのですが、DialogBoxは増えませんでした。
どうかやり方を教えてください。

815デフォルトの名無しさん:2009/06/06(土) 12:46:35
その手順で普通にやればできるから、コードがどこかおかしい。
816デフォルトの名無しさん:2009/06/06(土) 13:02:13
ShowWindowしてないだけだったりして。
817デフォルトの名無しさん:2009/06/06(土) 13:07:01
通常はそれも不要だが。
818デフォルトの名無しさん:2009/06/06(土) 13:21:55
モーダルで停止
819デフォルトの名無しさん:2009/06/06(土) 13:26:23
ダイアログボックスなら「表示」と書くと思うが「追加」だとか「増えません」だとか表現している点が気になる。

・・・見当違いのことをやろうとしているのではあるまいか?
820デフォルトの名無しさん:2009/06/06(土) 14:06:02
libjpegのライブラリにjpegtran機能も組み込みたいと思ってるのですが、
ソース・ヘッダファイルにjpegtranプロジェクトに入ってるもの(transupp等)を足しても、
そっちで宣言されている関数だけ、
ライブラリを呼ぶ側のアプリでリンクエラー(外部参照未解決)が出てしまいます。
その他の標準でlibjpegプロジェクト内で既に宣言されていた関数は(使えるかはともかく)エラー出ません。

ソースはIJGのではなく、VC++のプロジェクトファイルも入ってる高速化版(ソフトウェア工房α)です。
nasmも入れてあり、コンパイル自体はエラー吐くことなく成功します。

ビルドの仕組みを理解できてなくてSource/Header Files に入れるだけでは駄目っぽい以外解らず助言頂けませんでしょうか。
ただし、lib自体の容量は大きくなります。

VC++のバージョンは6.0です。Win32アプリ開発。
821デフォルトの名無しさん:2009/06/06(土) 14:36:50
しかし、
Vc6の開発者おおいね。。libjpegとかつかったなあ。VC6ってGDI+つかえるんだっけ。。
822デフォルトの名無しさん:2009/06/06(土) 17:47:15
ライブラリの開発者に直接聞かないで全然関係ない掲示板で質問されてもな
823デフォルトの名無しさん:2009/06/06(土) 18:52:55
>>821
使える。
824820:2009/06/06(土) 19:40:49
ライブラリそのものは自分でビルドしてます。
また、ソースコードはほぼIJGそのままで、IJG提供のソースを、調べたnmakeでのコンパイルしても
transupp等の組み込みが出来てないので、同様のエラーを吐きます。

日経ソフトウェアダウンロード からプロジェクトファイルを落として見たものの同様の状況で
jpegtranに使用される関数をライブラリに組み込む事が出来ませんでした。
ただSource/Header Filesに入れるだけではライブラリ作成時にエラーが出なくとも呼び出し側でリンクエラー同じです。

bccでlibjpegライブラリを使ってjpegtranの無劣化回転処理を組み込んでいる方が居たので、
可能な事は確かなのですが・・・。(そのライブラリはVC++からでは使用できず)
825デフォルトの名無しさん:2009/06/06(土) 20:05:58
すみませんひとりごとでした
826デフォルトの名無しさん:2009/06/06(土) 20:08:50
そこで#pragmaですよ。。
827デフォルトの名無しさん:2009/06/07(日) 07:29:11
Win32アプリケーションを選択してC++でプログラムを書いてるのですが、
std::cout<<message<<std::endl;
とかやってもどこにもメッセージが出力されません。どうすればよいですか?
828デフォルトの名無しさん:2009/06/07(日) 08:01:24
AllocConsole()とかを使おうかと思ったのですが、よく分からなかったので
HWNDをMessageBox()に渡して、メッセージを出すことにしました。
ありがとうございました。
829デフォルトの名無しさん:2009/06/07(日) 10:41:00
下のように、クラスAAのインスタンスを、メモリーに割り当てたときに。
コンストラクタとデストラクタをどうやって起動したらいいのでしょ?

class AA { int i1,i2; AA(); ~AA(); }
void func()
{
 char dat[100];
AA *dat;
 dat = (AA *)dat;
}
830デフォルトの名無しさん:2009/06/07(日) 10:44:43
割り当てたら勝手に実行されるんじゃないの
解放したらまた同じく
831デフォルトの名無しさん:2009/06/07(日) 10:46:14
上の場合、ポインターがセットされるだけなので、実行されないです。
この場合の実行の仕方を知りたいです。
832デフォルトの名無しさん:2009/06/07(日) 10:46:35
Win32アプリケーションとWindowsフォームアプリケーションでは、何が違いますか?
833デフォルトの名無しさん:2009/06/07(日) 10:48:55
>>832
フォームの使用・非使用
834デフォルトの名無しさん:2009/06/07(日) 11:46:45
WinMain/main
835デフォルトの名無しさん:2009/06/07(日) 12:38:05
VisualStudio 2008 EEのVC++で公開ソースをビルドしようとしたのですが、
afxwin.hがないとエラーが出たので”Visual C++ 2005 Express Edition と Microsoft Platform SDK を一緒に使う”
を見て設定しました。そして、ビルドをしたら
error C4430: 型指定子がありません - int と仮定しました。メモ: C++ は int を既定値としてサポートしていません
というエラーがでます。ソースは

_AFXWIN_INLINE CMenu::operator==(const CMenu& menu) const
  { return ((HMENU) menu) == m_hMenu; }
_AFXWIN_INLINE CMenu::operator!=(const CMenu& menu) const
  { return ((HMENU) menu) != m_hMenu; }
_AFXWIN_INLINE HMENU CMenu::GetSafeHmenu() const
  { ASSERT(this == NULL || m_hMenu == NULL || ::IsMenu(m_hMenu));
    return this == NULL ? NULL : m_hMenu; }

となっており、2行目と4行目でエラーがでます。
どう書き換えればエラーが直るでしょうか。
836デフォルトの名無しさん:2009/06/07(日) 12:45:37
MFCはEEじゃ使えないからダメ。
837835:2009/06/07(日) 13:03:46
>>836
ということはソースを修正しても無駄ということですね。ありがとうございました。
838デフォルトの名無しさん:2009/06/07(日) 13:57:38
>>829 の質問別スレで聞いて見ます。
839デフォルトの名無しさん:2009/06/07(日) 14:10:05
実体がないのにコンストラクタは働かない。
840デフォルトの名無しさん:2009/06/07(日) 14:53:27
小生、昨日、サッカーを久しぶりにテレビ観戦して
試合後、ニュー速で試合を見て思ったことを、色々書いたら
ぼっこぼこ馬鹿にされたなりよ。やっぱ小生がそこそこ偉い発言できるのはMFCしか無いと思ったなりよ。
841デフォルトの名無しさん:2009/06/08(月) 10:00:06
DLLなど複数プロジェクトが含まれるソリューションを開発する時、
ソース内のincludeパスの指定どうしてますか?
VC++の場合はProjectDirとSolutionDirの2つがデフォルトで
使えると思いますがこれの使い分けとか気にしてます?
842デフォルトの名無しさん:2009/06/08(月) 11:21:47
VS2008で、Cのプログラムをコンパイルするとき、CとしてコンパイルするかC++として
コンパイルするかというのは、自分で決められますか?
843デフォルトの名無しさん:2009/06/08(月) 11:27:48
できる。
IDE内ならオプションにあるべ。
コマンドラインでも指定できるし、何も指定しないと拡張子から区別される。
844デフォルトの名無しさん:2009/06/08(月) 12:40:49
>>843
ありがとうございます。
別ファイルにある
double func();
というのをmain()から呼んでる時、main()のすぐ上でint func();という宣言があるので
C++では呼び出せてたのですが、ふとこれがCだったら呼び出せてなかったっけ、と気になった
ので…。
845デフォルトの名無しさん:2009/06/08(月) 14:15:29
ソースを書いてる時のコメントの色が見づらいので変更したいのですが色とかはどうやって変更したらいいですか?
846デフォルトの名無しさん:2009/06/08(月) 14:19:03
ツール - オプション - 環境 - フォントおよび色
847デフォルトの名無しさん:2009/06/08(月) 14:36:58
>>846
ありがとうございます!!
848デフォルトの名無しさん:2009/06/08(月) 19:17:07
VC6 いまだに使ってますけど
ゲーム作成にしか使わないんですがバージョンアップする必要ってあります?

値段とファイルサイズだけがバージョンアップされあまり期待できないのですが
849デフォルトの名無しさん:2009/06/08(月) 20:00:50
>>848
VC6はもうC++対応じゃないと思った方がいい。VC6言語だと思った方がいいくらい、標準と違う。

それを踏まえると、標準C++を学びたいわけでもなく、
現状のゲーム作成で困ってないなら変えない方がいいんじゃないかな?
850デフォルトの名無しさん:2009/06/08(月) 20:02:05
Microsoft Visual C++ 2008 Express Edition
無償で公開されているから体験してみるもよかれ!
851デフォルトの名無しさん:2009/06/08(月) 20:08:53
便乗質問・・・

VC6のStandardでしこしこ
アプリ作ってんだけど、
ぷろになりたいと思ってきた。その場合、Proffessional
editionの方がいいのかえ?
852デフォルトの名無しさん:2009/06/08(月) 20:17:07
VC6のサンプルプログラム見せるよりは、新しいVCのサンプルの方が可能性は高い
853デフォルトの名無しさん:2009/06/08(月) 20:18:38
サンプル −> 自作ソフトのサンプル
854デフォルトの名無しさん:2009/06/08(月) 20:21:19
>>850
EE版だとMFC動かないんだよね
.netFrameworkは開発者のオナニーがたくさんつまった作品
オナニーたくさんやった挙句なにも便利になっていない
相変わらず細かいことをするにはいつもどおりの苦労を迫られるし
今度はやけにネットの情報が少ない
855デフォルトの名無しさん:2009/06/08(月) 21:01:31
.NETで楽するならC#やVB.NETのような新言語でやらないとだめだ。
C++でやったら両方の悪いとこ同士が増幅されるだけ。

>>851
VC6の頃だと、Standardでは作ったものの商用利用が認められていなかった気がする。
そういう意味でProfesionalが必要だった。
あと、Stdでは最適化が使えない。

VC2005 (VC8)の辺りから、エディション問わず商用利用可能になっている。
最適化も基本的なものは全エディションで使えるし。
856デフォルトの名無しさん:2009/06/08(月) 21:05:55
Visual C++ Express Editionにboostを入れようとしています。

(1) boost のダウンロードhttp://www.boost.org/ のWelcome - Download から
 boost_1_38_0.zip とboost-jam-3.1.17-1-ntx86.zip をダウンロード

(2) boost_1_38_0.zip を展開し、内容をC:¥develop へ展開する。(他のディレクトリでも可)

(3) boost-jam-3.1.12-1-ntx86.zip を展開し、bjam.exe をC:¥develop¥boost_1_38_0 へコピー

(4) コマンドプロンプトを開き、ディレクトリを移動。
CD C:¥develop¥boost_1_38_0

(5) "C:¥Program Files¥Microsoft Visual Studio 9.0¥Vc¥bin¥vcvars32.bat" を実行

(6) bjam --build-type=complete msvc stage を実行

(7) Visual Studio を起動し、[ツール] > [オプション] を開き[プロジェクトおよびソリューション]>[VC++ディレ
クトリ] を開く。
右上の「ディレクトリを表示するプロジェクト」で「インクルードファイル」を選び、新しい行を作って
"C:¥develop¥boost_1_38_0" を追加する。おなじく「ライブラリファイル」に"C:¥develop¥boost_1_38_0¥
stage¥lib" を追加する。

と手順どおりにしているのですが、

fatal error C1083: include ファイルを開けません。'boost/array.hpp': No such file or directory

というエラーがでてコンパイルができません。
どうしたらいいですか??
857デフォルトの名無しさん:2009/06/08(月) 21:17:20
そのエラーメッセージに書いてある通り
858デフォルトの名無しさん:2009/06/08(月) 23:39:12
クリティカルセクションの質問なのですが、
main()でInitializeCriticalSection()やって、その後_beginthreadex()します。
その後以下の処理を行うスレッドを100個起動させます。
EnterCriticalSection()
カウンターをインクリメント
LeaveCriticalSection()
そして、main()関数内でWaitForMultipleObjects()で全スレッドの終了を待ちます。
WaitForMultipleObject()の直後にカウンターの数を表示させているのですが、
これが100になりません。(95とか55とか)
クリティカルセクションの使い方が間違ってるのでしょうか?
859デフォルトの名無しさん:2009/06/08(月) 23:43:40
カウントの処理に問題があるのでは?
860デフォルトの名無しさん:2009/06/08(月) 23:58:22
WaitForMultipleObject()が全スレッドの終了まで待っていないようです。
861デフォルトの名無しさん:2009/06/09(火) 00:12:24
>>858
それ以前に、そのスレッドちゃんと全部生成されていることを確認したか?
862デフォルトの名無しさん:2009/06/09(火) 00:21:34
>>861
確認しました。やっぱりWaitForMultipleObject()がスレッドの完了待ちをしてませんでした。
WaitForMultipleObjects(100, hThreads, TRUE, INFINITE);
この形で呼び出していて、戻り値は-1でした。
863デフォルトの名無しさん:2009/06/09(火) 00:31:03
とりあえず自己解決しました。
main()の最後に
while(count!=100)
;
みたいなループを入れると動きました。なんとか動きそうです。
864デフォルトの名無しさん:2009/06/09(火) 00:39:48
WaitForMultipleObject の第一パラメタ(最大ハンドル数)は 64 まで
865デフォルトの名無しさん:2009/06/09(火) 00:50:56
>>864
ええーっ、64ですか?
そうか、MAXIMUM_WAIT_OBJECTSですか…

じゃあ65以上のスレッドを待ちたい時はどうすんのかと思ってMSDN見たら、
64個のスレッドを待つまとめスレッドを作って、そのスレッドを待つようにしろ、
と書いてました。そんなの今からかけないよ〜

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


866デフォルトの名無しさん:2009/06/09(火) 08:26:07
スレッドが100個とかどういうとき必要になるんだろう。
867デフォルトの名無しさん:2009/06/09(火) 10:37:05
HTTPサーバみたいなサーバプロセスを書いているのですが、コネクションが来るたびに
スレッドを生成してWorker Threadパターンでやってます。今朝は100個のコネクション
が一挙にキタ場合のテストをやろうとして、ああなってしまいました。
868デフォルトの名無しさん:2009/06/09(火) 15:53:55
アルゴリズムってなんですか?
分かりやすい例えを教えてください
869デフォルトの名無しさん:2009/06/09(火) 16:17:33
>>868
アルゴリズムすなわち解法
問題と答えをつなぐものがアルゴリズム。

たとえば「1〜10の総和はいくら」という問題に

Aさんは 1+2+3+4+5+6+7+8+9+10
Bさんは 11×5

と考えるだろう。
Aさんの解法もBさんの解法も「1〜10の総和はいくら」の答えを求めるアルゴリズム。
870868:2009/06/09(火) 16:19:35
当然正しい答えが出なきゃならんし,有限の時間で答えが出なきゃならん。

ってかスレ違いだと思われ。
871デフォルトの名無しさん:2009/06/09(火) 17:44:48
ググれ
872デフォルトの名無しさん:2009/06/09(火) 19:37:15
MFCについて質問があります。
ダイアログ上のボタンを押下したときに、エディットボックスを追加する関数を加えたいのですが、
エディットボックスを追加する関数というのはあるのでしょうか?
また、エディットボックスを追加すると同時にメンバ変数も追加することができるのでしょうか?
873デフォルトの名無しさん:2009/06/09(火) 20:50:02
>エディットボックスを追加する関数
動的に追加するならCEdit::Create();

動的に追加せずとも、非表示でエディットボックスを作成しておき、ボタンをクリックしたときに表示させる
という手法もある。

>メンバ変数も追加することができるのでしょうか
メンバ変数はあらかじめ用意しておく必要がある。
874デフォルトの名無しさん:2009/06/09(火) 20:59:32
CObject は動的生成機能もサポートしています。これは実行時に特定のクラスのオブジェクトを作成する機能です。
875デフォルトの名無しさん:2009/06/09(火) 21:03:27
>>873さん
ありがとうございます。
876デフォルトの名無しさん:2009/06/09(火) 22:09:10
仮想関数やWindowsハンドラをオーバーライドして
基低クラスの関数を最後に呼び出すかどうかってオーバーライドする関数によって違うみたいなんだけど
初心者じゃそこらへんわからないよね(´・ω・`)
877デフォルトの名無しさん:2009/06/09(火) 22:12:00
「非標準の拡張機能が使用されています : 右辺値のクラスが左辺値に使用されます。」って警告ってどうやったら取れるんでしょうか
めっちゃいっぱい出ていて困っています
878デフォルトの名無しさん:2009/06/09(火) 22:12:48
>>876
何を...>>876君、君が何を言っているのか分かんないよ
879デフォルトの名無しさん:2009/06/09(火) 22:14:44
>>877
とりあえず再現するソースを公開しろ
880876:2009/06/09(火) 22:17:22
たとえばPrecreateWindow関数をオーバーライドすると
BOOL CMyNaviView::PreCreateWindow(CREATESTRUCT& cs)
{
// TODO: この位置で CREATESTRUCT cs を修正して Window クラスまたはスタイルを
// 修正してください。

return CView::PreCreateWindow(cs);
}
って、最後にreturn CView::PreCreateWindow(cs);の一文が入るんだけど、
本を読んでるとこれをreturn TRUE;に変更するとか、初心者じゃわからないよね(´・ω・`)
881デフォルトの名無しさん:2009/06/09(火) 22:30:54
PreCreateWindow()の戻り値の意味を知っていればわかるだろ。

で、君がわからないのか、それとも他人がわからないことを嘆いているのか、どっちだ?
882876:2009/06/09(火) 22:34:36
わしがわからんのじゃけど。
883デフォルトの名無しさん:2009/06/09(火) 22:38:24
PreCreateWindow()が FALSE を返すとウィンドウは作成されない。
じゃ、CView::PreCreateWindow() はどういう時に FALSE を返すのか、オーバーライドした関数ではどうすべきか、
なんてなことを勉強していくしかないな。AAAA
884デフォルトの名無しさん:2009/06/09(火) 22:39:33
うう、すまぬ。最後のAAAAは無視してくれ。
Shiftキーと同時に押しちまった。
885876:2009/06/09(火) 22:42:07
わかりました。ありがとう。

道は長そうだけど、そういうふうに意識して勉強していきます。

ありがとう。
886デフォルトの名無しさん:2009/06/10(水) 01:08:54
_beginthreadex()で作ったWindowsのスレッドに、各スレッドごとに独自のデータを
保持させることはできますか?
887デフォルトの名無しさん:2009/06/10(水) 01:18:39
>>886
つTlsAlloc, TlsFree 等
888デフォルトの名無しさん:2009/06/10(水) 01:34:25
>>886
生成するスレッドにはパラメタを1つ渡せるので、スレッドの単位で作成したクラスや構造体の
インスタンスアドレスを渡せば良い
889デフォルトの名無しさん:2009/06/11(木) 23:29:45
フォルダごとコピーしてデスクトップに持ってきてデバッグしようとしたらデバッグ情報が読み込めません、シンボルが一致しません
って警告が出るんですけどどういう意味ですか?
890デフォルトの名無しさん:2009/06/11(木) 23:39:29
>>889
デバッグ情報にはソースファイル位置などがフルパスで格納されているから
フォルダを移動すると正常にデバッグできない
891デフォルトの名無しさん:2009/06/11(木) 23:40:12
>>890
じゃあ、どうすればいいんです?
892デフォルトの名無しさん:2009/06/11(木) 23:42:49
元の位置でデバックする
893デフォルトの名無しさん:2009/06/11(木) 23:47:20
それじゃ意味ねええええっうぇwっうぇえww
894デフォルトの名無しさん:2009/06/11(木) 23:52:43
シンボルサーバ作ればいいだけだろ
895デフォルトの名無しさん:2009/06/12(金) 00:02:50
    /::::::::::::::::::(  /::::::::::ヾ ヽ ヽゞ::::::::::::::::ヽ
   /::::::::::::::::::::::::::::::::::ヾ  i i ソ::::::::::::::::: ヽ
  /:::::::::::::::::::::::::::::::::::::ゞ ! i ゞ::::::::::::::::::ヽ
 /:::::::::::::::::::::──< ̄● ̄>─ | i |─< ̄● ̄>─:::::::ヽ
 |:::::::::::::::::::::/    ̄   ̄    ─ 、   ̄  ̄   ヽ::::::::|
. |:::::::::::::::::::/            /   ヽ         ヽ:::::::|
..|::::::::::::::::::/              i       |          \:::::|ぶぁぁか
.|:::::::::::::::::/              ヾ     丿        _ \::::|
..|::::::::::::::::/       ̄ ─ _    ` ─ ̄ '      ─ ̄    ヽ:::|
 |::::::::::::::::             ─ ー  | |  ー─ ̄        ヽ:|
 ヽ:::::::::::::: |     ━ ─ ─ ー ─ - | |  ─  ー ⌒ ─     |
  ヽ:::::::::::::|          _ _─ ─││ ──/ヽ_ヽ      |
   ヽ::::::::::::|      ─ ̄           _─ ̄  ノ  /─    |
    ヽ:::::::::::|          _ _ ─  ̄      / 丿     |
     ヽ::::::::::|        ヽ ̄    / ̄ - -_    / /      /
      \:::::::::|        \   ノ    -_ _ ) / /     /
       \:::::::|          \      ノ ─' ノ       /
         \:::::|            ─ _ __ ー '       /

896デフォルトの名無しさん:2009/06/12(金) 00:06:23
リモートログインしちゃえよ
897デフォルトの名無しさん:2009/06/12(金) 02:02:02
MFCのために¥15000だしたいんだけど、金無いなりよ。
898デフォルトの名無しさん:2009/06/12(金) 02:03:59
>>897
学生ならドリスパでタダでVS2008プロを落とせる
899デフォルトの名無しさん:2009/06/12(金) 09:55:20
VC++eeなんですけど
プロジェクトフォルダで、自分の書いたソースファイルとかプロジェクトの設定が書いてあるファイルなどと、
ビルドした時の中間ファイル?とかビルドファイルとフォルダを変える事ってできますか?

どこでも参照できるように自鯖のサブバージョンに入れてみたんですけど、容量がどんどん肥大化していく・・・
900デフォルトの名無しさん:2009/06/12(金) 10:01:52
ドリスパって何?
901デフォルトの名無しさん:2009/06/12(金) 11:19:53
サッカーのチーム
902デフォルトの名無しさん:2009/06/12(金) 13:22:13
>>899
プロジェクトのプロパティの全般カテゴリに中間ディレクトリ指定できんだろ。
んまーそこで困ってるならsvnの無視プロパティ活用しろよとは思うが。
903デフォルトの名無しさん:2009/06/12(金) 14:27:59
>>898
学生じゃない人はどうするんだ?やはりStandardのうpグレード買うと1万5千円かかるだろ・・

まあ、俺様は合法的にStandard+XXXXXXXを取得する方法を知ってるんだがな。
しりたけりゃググルことだ。これはあくまで合法だ。30000円のが12000で買える。むほほ。
904デフォルトの名無しさん:2009/06/12(金) 20:07:58
>>900
DreamSpark
905デフォルトの名無しさん:2009/06/12(金) 20:10:26
>>904
サンクス
906デフォルトの名無しさん:2009/06/12(金) 20:12:44
ぶっちゃけ学生証なくてもVS2008プロとかダウンロードできるお
タダだお
907デフォルトの名無しさん:2009/06/12(金) 20:30:01
普通にダウンロードしたVisual C++2008 Express Editionと学生用プロ用って何が違うんですか?
908デフォルトの名無しさん:2009/06/12(金) 21:33:39
学生用は商用利用ができん。
ProEditionはクリスタルレポートとかOffice開発用の部品というかモジュールが付属する。
StandardはVC++でのMFCというライブラリの利用ができたり、アイコン作成用のソフトが付属する。
909デフォルトの名無しさん:2009/06/12(金) 21:36:56
うろおぼえか思い込みで書いてるだからあてにしない方がいいよ
910デフォルトの名無しさん:2009/06/12(金) 21:39:59
んじゃあ、>>909!ちみが教えてやればいいじゃん。俺は神聖な心を持って>>907氏におしえた。
911デフォルトの名無しさん:2009/06/12(金) 21:47:31
Visual C++2008 Express Editionは商用利用できたっけ?十分だろ
912デフォルトの名無しさん:2009/06/12(金) 22:20:07
自分でメーカー(マイクロソフト)に訊けばわかるよーな質問を、こんなところに書きこんで
自分の頭と時間を使わず他人の時間と頭を使わせようとする人間の質問に答えてやるほど
酔狂なヤツはいないだろう。
913デフォルトの名無しさん:2009/06/12(金) 22:32:40
>>912って苛められてそう
914デフォルトの名無しさん:2009/06/13(土) 15:45:23
Visual C++ Express は商用利用できますが、何か?
915デフォルトの名無しさん:2009/06/13(土) 17:20:44
ぼくにもできますか?
916デフォルトの名無しさん:2009/06/13(土) 17:37:18
無理
917デフォルトの名無しさん:2009/06/13(土) 21:49:46
Visual Studio 2008 proを
使い始めたのですが

SDIでフレームサイズを変更の方法を教えてください。


CMainFrame::PreCreateWindow()
の関数内を
if( !CFrameWndEx::PreCreateWindow(cs) )
から
if( !CFrameWnd::PreCreateWindow(cs) )
に変更して
cs.cy
cs.cx
を追加し、ビルドして実行したら起動できませんでした。

vc6では問題なかったのですが、何が変わったのでしょうか?

918デフォルトの名無しさん:2009/06/13(土) 22:03:23
>if( !CFrameWndEx::PreCreateWindow(cs) )
>から
>if( !CFrameWnd::PreCreateWindow(cs) )
>に変更して

CFrameWndEx::PreCreateWindow(cs) の中で CFrameWnd::PreCreateWindow(cs) を呼んでいるので
変更する必要はないと思うが、変更する理由は何?
919デフォルトの名無しさん:2009/06/13(土) 22:25:10
>>918さん

if( !CFrameWndEx::PreCreateWindow(cs) )
でもいいと思うのですが、これだとサイズ指定しても
実際にサイズが変更されません。

if( !CFrameWnd::PreCreateWindow(cs) )にすれば
変更できるのではないかと思いました。

フレームの変更の方法が間違っているのでしょうかね?

ヘルプのサンプルを見ると、if( !CFrameWnd::PreCreateWindow(cs) )を使用しているので、
そのまま見習って使おうとしようと
なぜかvc2008では、使えない状態でした。
920918:2009/06/13(土) 22:40:48
CWinAppEx、CFrameWndExは その名の通り CWinApp、CFrameWnd の拡張版なのだが、
これにはレジストリへのウィンドウ情報の書き込み/読み込みという機能も含まれている。

>これだとサイズ指定しても
>実際にサイズが変更されません。

なのは、このウィンドウ情報の書き込み/読み込み機能が働いているためで、PreCreateWindow() 内で
サイズを変更しても、その後、レジストリに登録されたウィンドウのサイズに再変更されてしまう。

ウィンドウサイズの再変更が実行されないようにするためには CWinAppEx::LoadWindowPlacement() が FALSE を
返すようにすればいい。
マニュアルには、CWinAppEx::EnableLoadWindowPlacement( FALSE) を実行しろと書いてあるのだが、
MFCのソース読んでも実行するタイミングがよくわからんので、とりあえずはこの方法で回避している。

VC6の時代にはこういった機能は当然なかったので、君の言う通り問題は発生しなかったわけだ。
921デフォルトの名無しさん:2009/06/13(土) 22:44:36
>>920さん

おおー

詳しい説明ありがとうございます。

なるほど、助かりました。
922デフォルトの名無しさん:2009/06/13(土) 23:59:55
練習でブラウザを作っています。
JavaScriptを無効にしてページを開けるようにしたいと考えています。
Windowsフォームアプリケーションの関数だけで可能でしょうか。
それともCOMなどの知識が必要でしょうか。

環境はVC++2008EEです。
923デフォルトの名無しさん:2009/06/14(日) 00:28:42
VistaやWindows7において、アプリだけで拡張子を関連付けさせるのは難しいですか?
拡張子絡みのレジストリは旧OSと同じっぽいけど・・。

ユーザに拡張子ダブルクリックでアプリに関連付けさせるか
インストーラを作るかしないといけないのだろうか。
924デフォルトの名無しさん:2009/06/14(日) 00:32:55
>>923
vistaだと従来のやり方じゃダメなんだ?
925デフォルトの名無しさん:2009/06/14(日) 00:35:04
>>923
HKCUへの書き込みなら特に問題ないはず。
HKCU\Software\Classesで、アプリを実行しているユーザだけを対象に設定できる。
926デフォルトの名無しさん:2009/06/14(日) 00:37:47
>>923
簡単にというならコマンドプロンプトのコマンドにあるからバッチとかsystem関数でできる気がする
assoc
ftype
927デフォルトの名無しさん:2009/06/14(日) 00:48:48
vc++ee2008を使ってるんですけど、C++のことよりもコンパイラの機能や使い方について詳しく解説してあるサイトってありませんかね?
928デフォルトの名無しさん:2009/06/14(日) 00:52:13
929デフォルトの名無しさん:2009/06/14(日) 00:52:33
>>927
たしかにvc6のころと変わっててイライラすんだよな
さんざん探した挙句実はできなくなったってのもあるにはあるw
930デフォルトの名無しさん:2009/06/14(日) 02:03:16
>>925
メチャメチャサンクス!!!
旧OS用の関連付け処理を HKCU\Software\Classes 用に作り替えて
Windows7上で試したら関連付け、解除ともに問題なくできた!

というか、バカは俺か・・・
今まで HKEY_CLASSES_ROOT を直接いじってたからVistaや7で通らなくなっただけみたいだし・・。

>>924 >>926 もレスサンクス!
ようやう寝れる。
931デフォルトの名無しさん:2009/06/14(日) 02:05:37
>>927
2002が最悪だったんで、最強のVS98から2003/2005をすっとばして2008に換えたけど
IDEの使いにくさ以上に、MSDNが役立たずで困ってる。

結局、VC絡みだったらVC6のMSDNを使っちゃったり。
つーかVC6で主要部分を組んじゃって、頃合いをみてVS2008に上げたり。
932デフォルトの名無しさん:2009/06/14(日) 02:11:12
>>930
念のため言っておくが9xだとHKCUは使えないからな。
933デフォルトの名無しさん:2009/06/14(日) 02:11:35
>>931
俺もMSDNは最悪だわ
なんもヒットしねぇ上にたびたびリンク切れみたいになる
しかも、みにくいし遅い、重い
934デフォルトの名無しさん:2009/06/14(日) 03:36:25
引数がない場合の関数は()を省略できるようにしてくれ
function();
何もない括弧書き方なんかかっこわるい。
935デフォルトの名無しさん:2009/06/14(日) 03:39:38
カッコがあるから関数だとピンとくるんじゃん。カッコがなきゃ変数だか関数だかわかんなくなって
カッコ悪いだろ。
936デフォルトの名無しさん:2009/06/14(日) 04:19:20
MSDNが使いにくいとおもっているやつが
俺以外にもいたか
937デフォルトの名無しさん:2009/06/14(日) 04:30:56
>>933
もう最近はF1を押すことはまずないな。起動は遅いし変なものばかり引っかかるし。
ググった方がよっぽど早い。
938デフォルトの名無しさん:2009/06/14(日) 04:39:55
MSDNってググるもんだと思ってた俺って…
939デフォルトの名無しさん:2009/06/14(日) 06:12:25
MSDNダウンロードできないのかね?
あまりの遅さにイライラする
940デフォルトの名無しさん:2009/06/14(日) 08:31:37
>>932
更にサンクス! それじゃOSバージョンで切り替えるように――というか
95/98/SE/Meはいい加減サポートから外しても良いか・・・起動できないようにしちまおう。
941デフォルトの名無しさん:2009/06/14(日) 10:07:12
2008で作れば自動的にそれらでは起動できなくなるw
942デフォルトの名無しさん:2009/06/14(日) 10:26:44
>>922について分かる人はいませんか?
943デフォルトの名無しさん:2009/06/14(日) 10:29:21
>>934
予約語は被らない限りは略せるとかだと楽なのにって思ったことはある。gnuplotみたいな感じで
class -> cl、public: -> pub:、とか
944デフォルトの名無しさん:2009/06/14(日) 10:32:52
>>942
その質問の回答には、エスパー能力が必要、それはすなわち、
質問の内容がまったく足りないと言うことだ。
945デフォルトの名無しさん:2009/06/14(日) 10:34:30
>>942
エスパーーーーーーーー!!!!!!!!!!!
問い1 足りる
問い2 無くてもいい
946デフォルトの名無しさん:2009/06/14(日) 10:40:04
>>944
何の情報が足りませんか?

WebBrowserでウェブサイトを表示できるようにしています。
規定ブラウザはIEの場合です。
IEにあるようなアクティブスクリプトの有効無効の設定をできるようにしたいのです。
947デフォルトの名無しさん:2009/06/14(日) 11:12:42
>>946
目的
目標
現在までに行ったこと
考えられる原因
質問の内容

最低でもコレに答えろ
948デフォルトの名無しさん:2009/06/14(日) 11:39:40
>>947

目的:
練習

目標:
IEのようなブラウザをVC++ee2008(Windowsフォームアプリケーション)を用いて作る。

現在までに行ったこと:
http://codezine.jp/article/detail/246
を参考にしてみました。

考えられる原因:
バージョンが古かった事、
COMを利用している事、
VB、VC#に限定したソースだった事、
それによりvc++ee2008の環境で書き換える事ができない。

質問の内容:
JavaScriptのOnOffを自由に切り替えられる機能を付けるにはどうすれば良いですか?
見つけたソース、COMを用いて書かれた環境は2003です。
現在のバージョンは2008なのでもっとシンプルに簡単に書く方法はないでしょうか。
949デフォルトの名無しさん:2009/06/14(日) 12:18:54
>VB、VC#に限定したソースだった事、
>それによりvc++ee2008の環境で書き換える事ができない。
書き換えることができないのは君のスキル不足。

http://codezine.jp/article/detail/246 に「IInternetSecurityManagerを実装する」と書いてあるのだから、
この「IInternetSecurityManager」をキーワードにして検索すれば、情報はいくらでも出てくる。
「いろいろと苦労してます」というように見せかけてはいるが、実は何の努力もしていない。
それが感覚的に分かるから、他の人から叩かれるわけだ。

http://www.usefullcode.net/2009/04/50_tabbrowser.html
950デフォルトの名無しさん:2009/06/14(日) 12:46:26
>>949
すいません、私のスキル不足です。
新しく参考を紹介いただき有難うございます。

Windowsフォームアプリケーションならフォームを作る事は勿論、
ウェブブラウザを設置する事もツールボックスからドラッグするだけ。
イベントも簡単なプログラムだけで可能なようになっていますよね。
それならアクティブスクリプトの制御くらい、
一行で済むような命令があってもおかしくないと思ったわけです。
IEにも搭載されている機能ですし、
今のバージョンは2008ですし。

それを簡単に実現できないようにされているのはどうしてでしょうか。
951デフォルトの名無しさん:2009/06/14(日) 12:56:08
その疑問はMSにぶつけるべきじゃない?
部品を貼り付けるだけでガワを作れると言ってもなんでも簡単に出来る訳じゃないぞ
IEコンポーネントに不満なら別の物を使う選択肢もある
952デフォルトの名無しさん:2009/06/14(日) 12:56:23
>それを簡単に実現できないようにされている

フォームアプリケーションでいうところのフォームの作成等が簡単に実現できるようにされているだけ。
発想が逆。
953デフォルトの名無しさん:2009/06/14(日) 13:15:06
ご返答有難うございます。

とりあえず、COMの基礎知識を付けようと思います。
今回のようなウェブブラウザのセキュリティに関する操作には、
他にどのような知識も付けておくべきなのでしょうか。
954デフォルトの名無しさん:2009/06/14(日) 13:19:37
一つ、腹ペコのまま学校へ行かぬこと
一つ、天気のいい日に布団を干すこと
一つ、道を歩く時は車に気をつけること
一つ、他人の力を頼りにしないこと
一つ、土の上をはだしで走り回って遊ぶこと
955デフォルトの名無しさん:2009/06/14(日) 13:45:33
using namespace System;
using namespace System::Drawing;
using namespace System::Windows::Forms;

ref class myform:Form{
protected:
virtual void OnPaint(PaintEventArgs^ e) override {

Font^ font2=gcnew Font("MS ゴシック",10);
}
};

void main()
{
Bitmap^ bmp=gcnew Bitmap(100,100);

Font^ font1=gcnew Font("MS ゴシック",10);
}

仮にこうした場合font2の方がエラーになるのは
System::Windows::Formsの方と競合しているからですか?
956デフォルトの名無しさん:2009/06/14(日) 14:22:32
>>943
#define cl class
#define pub public
ただし
#define BEGIN {
#define END }
と同レベルだが。
957デフォルトの名無しさん:2009/06/14(日) 14:24:55
>>939
MSDN Library for Visual Studio 2008 SP1 (2008年12月更新版)
http://www.microsoft.com/downloads/details.aspx?displaylang=ja&FamilyID=7bbe5eda-5062-4ebb-83c7-d3c5ff92a373
もっとも、上で重い重いと行っている人間の何割かはオフライン版のことを言っているような気もするけど。
958デフォルトの名無しさん:2009/06/14(日) 16:54:08
ヘッダーの階層わけってどうやるのでしょうか?

ヘッダーファイルにフォルダを作ってそこに
hoge/Test.h
とヘッダを作って
mainのcppで
#include "hoge/Test.h"

とやると

No such file or directoryと怒られるのですが
959デフォルトの名無しさん:2009/06/14(日) 17:02:18
そのファイル右クリックしてプロパティから完全パス見てみ
ソースと同じ所にあるだろ?
実際にディレクトリ作ってそこに入れればそういう指定もできる。
960デフォルトの名無しさん:2009/06/14(日) 17:16:31
>>958
日本語が意味不明なので、質問は 日本語の文法に沿って書いてください。

> ヘッダーファイルにフォルダを作って
ファイルにフォルダを作るって何ですか?
ヘッダーファイルを格納するためのフォルダを用意してってことですか?

> mainのcppで
> #include "hoge/Test.h"
この場合、そのmainのcppファイルからの相対パスを#includeに記述します。
すなわち、そのmainのcppファイルのフルパスが
C:\MY_PROG\TEST\*********\MyDir\main.cpp
とかだったとするなら
C:\MY_PROG\TEST\*********\MyDir\hoge\Test.h
という風にファイルが保存されている時はじめて#include "hoge/Test.h"が有効なパスになります。
961デフォルトの名無しさん:2009/06/14(日) 17:20:59
パスの指定がわからないのですね パスです すいません
962デフォルトの名無しさん:2009/06/14(日) 17:28:48
>>960 はここがVC++のスレとわかって書いてるのか?
IDEあまり使ってないのかな。
963960:2009/06/14(日) 17:42:49
ああ
>ヘッダーファイルにフォルダを作って
って左のツリーのアレだったのか。
すまんかった。
964958:2009/06/14(日) 20:35:11
皆様レスありがとうございます。

総合するとVC++のソリューションウィンドウの階層は実階層と何の関係もなく
実階層で階層を切れば
#include "hoge/Test.h"
のような指定も出来ると。

VC++側でファイルの完全パスを変更するのは
プロパティとか見たけど無理そうなので
VC++で開発をつづけるのならば
#include "hoge/Test.h"
ような指定をするのは現実的に難しいということですね。

Flashと似てますね。でもあっちは対応するパスを変えられるので、あっちのほうがすぐれてますが。

というか、もしかすると私が使ってるのがeeだからですかね?
製品版買えばリンク先変えられたりするんでしょうか?
965デフォルトの名無しさん:2009/06/14(日) 20:38:10
コマンドプロンプトのclって使い勝手はどうですか?
966958:2009/06/14(日) 20:39:24
あ、既存の項目の追加
をすればいいのか
967デフォルトの名無しさん:2009/06/14(日) 22:31:27
.NET ってつまるところ MFC のバージョンアップ?
968デフォルトの名無しさん:2009/06/14(日) 22:36:00
初心者ですが>>923ってなんでWindows7の話をしててみんな答えてるの?まだ出てないよね?
969デフォルトの名無しさん:2009/06/14(日) 22:43:36
Microfost の社員も使ってるよ ここ
970デフォルトの名無しさん:2009/06/14(日) 22:45:45
>>968
Vistaのときもそうだがβ版が随分前から出てたんだが・・・?
971デフォルトの名無しさん:2009/06/14(日) 22:57:44
>>968
興味があるならダウンロードしてみ。
http://www.microsoft.com/japan/windows/windows-7/download.aspx
972デフォルトの名無しさん:2009/06/14(日) 23:08:56
サンクス
面倒くさいからやめとくけど
973デフォルトの名無しさん:2009/06/15(月) 03:33:38
>>967
俺はWin32APIのバージョンアップだと思ってる
974デフォルトの名無しさん:2009/06/15(月) 03:42:22
>>968
Vistaと変わっていないことを前提にVistaの場合の話を答えた。
もっとも、XPはおろか2000でも同じなんだけど。

もっとも、関連づけのやり方自体は、XP、Vistaで、
新しい方法が増えているみたいなんだけど
(プログラムから開くとか既定のプログラムとか)
自分は追い付けていない。
975デフォルトの名無しさん:2009/06/15(月) 04:11:43
Visual Studio 6.0 Service Pack 6について質問です。

・無料で使用できるのでしょうか
 (HPには無料と書いてあるが、
 昔は10万とかした製品だったと思うので)
 (また、「最新のアップデートを提供します」と書いてあるので、
 商品を買った上で、バッチみたいなのではないのでしょうか)

・商用ソフトは作れるのでしょうか(作ったソフトを販売する)
 (確かアカデミックではダメとかあった気がします)
 (無料版では、ソースが丸見えになってしまうとかもないでしょうか)
976デフォルトの名無しさん:2009/06/15(月) 04:58:51
>>975
SPはあくまでもSPなので、ライセンスは君が利用しているVisual Studioによる。
VisualStudioなしで、SPだけダウンロードして使えるかという質問なら、それは無理。
977975:2009/06/15(月) 05:24:20
>>976
ありがとうございます。
なるほど、やはりバッチみたいなのなんですね。

VS6SP6の項目があるのに、VS6本体の項目が無いのは
サービスが停止されたみたいだからですね。
ttp://msdn.microsoft.com/ja-jp/subscriptions/dd179309.aspx

新しいVCだと、ソースが筒抜けになったり(C#だから?)、
9x系で操作できなかったりするみたいなので(.net関連?)、
VC6を使いたかったのですが、残念です。
978デフォルトの名無しさん:2009/06/15(月) 07:16:09
>>977
どうでもいいけど「パッチ」だからな。patch。
979975:2009/06/15(月) 08:46:58
>>978
素で間違えていましたorz
980デフォルトの名無しさん:2009/06/15(月) 11:29:45
もう9x系に拘る必要なくね?
981デフォルトの名無しさん:2009/06/15(月) 11:57:05
ソースがどうのってのは最新のVC++だって.NETで書かなきゃ関係ないだろ。
むしろ人に見られることを常に意識してコード書いたほうがいいと思うけどね。
誰も見ないだろうけど。
982975:2009/06/15(月) 14:39:04
>>980
メインPCがMeなのと、動作可能環境に9x系もある方が評価も高いかなと。

>>981
PHPやAS3とかは、インタプリタ?なので見られることが前提なんですけど、
Cのは、同じ同人作品やマイライブラリを長年作っているのもあり、
見せたくないと思っていました。
983デフォルトの名無しさん:2009/06/15(月) 14:59:36
>>982
9x系はマイクロソフトのサポートが終了しているので、仮に不具合がOSに起因していたとしても
君が面倒を見なければならなくなるぞ。
984デフォルトの名無しさん:2009/06/15(月) 16:16:17
個人でやっていたら、9xからVistaまで対応とか言っても、動作確認がめんどうくさすぎる。
まあ「meで動作確認しました。それ以降のOSなら動くはずです」とかですむのかもしれんけど。
985デフォルトの名無しさん:2009/06/15(月) 16:45:40
/* 閏年か平年かを判定するプログラム */
#include <stdio.h>

main()
{
int n;

printf("西暦年を入力して下さい:");
scanf("%d", &n );

if( n % 400 || n % 100 != 4 )        ←
printf("%d 年は閏年です。\n", n );
else
printf("%d 年は平年です。\n", n );
}
/* end */

矢印の行ですが、「400の倍数の年、または、100の倍数でない4の倍数」とするにはどうすれば良いのか教えてください。
考えれば考えるほど分からなくなってしまいました
986デフォルトの名無しさん:2009/06/15(月) 16:53:05
if (y % 400 == 0 || (y % 100 != 0 && y % 4 == 0))

こうかな?
987デフォルトの名無しさん:2009/06/15(月) 16:58:51
一つ一つ置き換えてみると良いと思うよ
アホはアホなりに地道にやるしかないとアホが言ってみる
988デフォルトの名無しさん:2009/06/15(月) 20:25:47
結果的に同じ状態になるからといって、変に効率的な感じを目指して書いたって、
得られるメリットよりも、パッと見で分かりづらい、ソース読んで考えないと正しいと
判断できない、というデメリットがあるんだよな

一週間後の自分という他人に保守させるのであれば、ダサくて地道なコードくらいが
ちょうどいいのだよね
989デフォルトの名無しさん:2009/06/15(月) 20:35:18
一週間後の自分はさておき、3年後の自分に笑われないコードを書きたいとは思う。
良く笑ってしまうんだけどね...
990デフォルトの名無しさん:2009/06/15(月) 20:36:01
>>986
ありがとうございます
できました
991デフォルトの名無しさん
>>971
おお、オフライン版あったのねって
かんじんなところだけ英語orz