★初心者にVisual C++を教えるスレ★ Part33
Visual C++入門者・初心者からの質問を、
お兄ちゃんお姉ちゃん達が優しく、時には厳しく回答してくれるスレッドです。
■質問するにあたって
・エラーや警告のときはエラーメッセージを書きましょう。
・開発環境も書きましょう、特にWindowsForm、MFC、Win32アプリケーションの区別。
・できるだけ具体的に。
質問の仕方については次のページが大変参考になります。
http://www.hyuki.com/writing/techask.html ■回答するにあたって
・回答する場合はその答えに至るための「コツ」も書いてあげると良いでしょう。
(MSDNのどの項目だとか、何のキーワードでGoogleするとか)
・ネタや煽りは軽く流しましょう。
過去スレ、関連スレなどは
>>2-5辺り。
2 :
デフォルトの名無しさん:2009/02/22(日) 17:45:47
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()は何の意味があるのでしょうか?必要なんでしょうか?
>>7 文字列連結は、String同士だけでなく、StringとObjectでも可能。
前者だと+の中に挟まれたint型の変数は
Object型にボックス化されてから連結されるというわけ。
だから、前者でもうまくいくけど、ボックス化は高コストなので
それを避けている後者のほうが望ましい。
>7
VBをお勧めする
11 :
デフォルトの名無しさん:2009/02/22(日) 22:46:54
ファイルのプロパティで表示される情報を取り込む方法を教えてくれよ。
api使う
13 :
デフォルトの名無しさん:2009/02/23(月) 05:25:52
ひまわりの方がいいんじゃね?
14 :
デフォルトの名無しさん:2009/02/23(月) 09:15:44
VC++2008です。
プロジェクトディレクトリをそのまま、別のPCにコピーして作業を再開したら、
「ファイルが移動された」というコンパイルエラーが出て、リリース(デバッグは出来る)
出来なくなってしまいました。
ファイルの位置の再定義はどこで出来ますか?
普通は他人が作ったサンプルだってそのままビルドすれば動くし、
プロジェクトなしでソースのみの場合は新しくプロジェクト作ってそこへソース突っ込むだけだし。
自分が書いた?ソースさえビルドできない状況が全く理解できない。
16 :
デフォルトの名無しさん:2009/02/23(月) 12:34:39
>>15 でも・・でも・・(´;ω;`)ブワッ
stdfxだっけか、が移動したとか出て。
確かに、前のPCのディレクトリの名前が参照されてるのですよ
一度クリーンしてリビルドしてみ
なるほど、クリーンで・・・。
ありがとうございます!
フォームアプリケーションで作ったフォームを
印刷する方法が分かりません><
教えてください。
どんなフォームよ。
ボタンが並んでるウィンドウを印刷したいのか?
21 :
デフォルトの名無しさん:2009/02/23(月) 18:21:16
そうです。ボタンと、テキストボックスに文字が入っています。
MFCでこういうことが出来るんだと思ったら、CFormViewにすると
なぜか、印刷機能が付けられなかったんです。
>CFormViewにすると
>なぜか、印刷機能が付けられなかったんです。
仕様。
フォームアプリの場合、計算結果を(参考書がやってるみたいに)
textBoxとかの中身を抽出して、フォントとか指定して、印刷に出力
するのが一般的?
VC++ 6.0でFLASHを再生するソフトウエアを作る場合、
shockwaveflashのocxコンポーネントを追加しますが、
そのときにコントロールに対してInvokeHelper関数で、
swfファイルのオリジナルの幅や高さって取得できるでしょうか?
25 :
デフォルトの名無しさん:2009/02/25(水) 17:39:49
visualC#の参考書って、visualC++用に購入してもおk?
一つだけというのならやめとけ
27 :
デフォルトの名無しさん:2009/02/25(水) 18:04:35
超入門書はc++の持ってるんだけど、
パーフェクトマスターシリーズがC#しかないんよ。
「.」が、「::」とか「->」になるだけだよね。
CLRアプリ作るつもりなら、役に立つと思う。
visual studio2008 XPです。
印刷機能の実装が分からないです。
フォームのtextBox1に計算結果が返されるとして、
例えば、textBox1の中身を印刷するには、
最低限何をすればいいですか?
環境によるけど、文字列をプリンターに出す程度なら
そこらのサンプルコード切り貼りだけでいけるぞ。
32 :
デフォルトの名無しさん:2009/02/26(木) 11:27:32
C#しか無くないですか?
C++に変換しても、ビルドできません><
付属のドキュメントのサンプル切り貼りでいけたが。
プロジェクト新規作成して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 );
}
ウホッ。ありがとうございます。ただ・・
(this, &Form1::document_PrintPage);
↑の部分で
error C2039: 'document_PrintPage' : '印刷2ch::Form1' のメンバではありません。
と、出てしまうんですが・・。
それは
void document_PrintPage( Object^ /*sender*/, System::Drawing::Printing::PrintPageEventArgs^ e )
この関数だから、それに合わせればいい。
じゃぁ、こうですね(・∀・)
(this, &Form1::printDocument1_PrintPage);
あ、サンプル通りクラス定義内に書いたからクラス名省略されてるけど
メンバー関数だよ、どれも
なぜか、ファイルに出力されるんですが・・。
あ、いけました。でかいフォントですな。
ありがとうございます!!
初めてVisual C++を使ってみました。
int main(array<System::String ^> ^args)
いきなり ^ という単項演算子らしき物が出来たのですが、コレはなんですか??
とりあえずarray以下無視しても問題なく動いたのですが。
C++をやりたいのかC++/CLIをやりたいのかで返答は変わる
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' に追加するか、プリコンパイル済みヘッダーをビルドし直します
が出てきます。
>>42 なら作ったプロジェクトが間違ってる。
>>40はC++/CLIのプロジェクト。
>>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
48 :
デフォルトの名無しさん:2009/03/02(月) 06:55:04
Senderみつおに聞けば教えてくれる
ナハナハ
50 :
40:2009/03/02(月) 20:13:26
>>44 ありがとうございます。
では標準C++でコンソールアプリケーションを作りたいときは
プロジェクトの種類
をWin32にして
Win32 コンソール アプリケーション
にすれば良いですか?
訊く前にマニュアル読むなり試すなりしなさい
52 :
40:2009/03/02(月) 22:09:19
>>50 とりあえずそれでやってみて問題無いようです。
おそらくコレで良いということですね。
53 :
40:2009/03/02(月) 22:10:02
>>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
CreateFileMappingが失敗してるか確かめろ
57 :
デフォルトの名無しさん:2009/03/06(金) 14:00:07
>>56 CreateFileMappingは成功してると思います。
if (!hMapFile1)の部分にも引っかからず、GetLastErrorでも0を返してきましたので…
>>57 OpenFileMappingの後のGetLastErrorは何を返す?
それが…
CreateFileMappingは0を返して正常だといってるのに
OpenFileMappingの後のGetLastErrorは2を返してきて…
指定されたファイルが見つかりませんと。
60 :
55:2009/03/06(金) 15:25:36
55です。長時間悩み、調べ
自分のタイプミスからマッピングオブジェクトの名前の不一致など疑い
試行錯誤した結果…
CloseHandle(hMapFile1)をコメント化し、無効にすると
OpenFileMappingが成功しました。
たぶん解決の糸口になるのでCloseHandleなどのタイミングなどを
調べていけばいいかなという結果に。。。
アドバイスをくれた
>>56,
>>58さん、サンクスでした
61 :
デフォルトの名無しさん:2009/03/06(金) 22:54:18
VC++2008EEでcout<<" "<<endlはどうやって使うのでしょうか?
普通はそんなの使わない
63 :
デフォルトの名無しさん:2009/03/06(金) 23:03:23
>>62 普通はどんなものを使うのですか?
手元の本はそれを使った説明ばかりなもので・・・
>手元の本はそれを使った説明ばかりなもので・・・
使い方は、その本の最初のほうに書いてある。
書いていなかったら、そんな本は参考にならんから捨てろ。
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
>>65 もし、その本に#include <iostream.h>とか書いてあるんだったら捨てるべき。古本屋でもいいけど。
それは古代のものだからVisual C++ 2008には搭載されていないというだけのこと。
マウスがのってるウインドウ選択するの意外に簡単だな
WindowFromPoint だけ知ってれば作れる
70 :
デフォルトの名無しさん:2009/03/07(土) 19:49:30
>>66-67の者です。
Spy++と同等のウインドウ選択ツールもどきは無事使うことが出来ました。
しかし選択後(ウインドウ上でマウスを放した後も)
選択されたウインドウの周囲には枠の表示が残ってしまうので、
それをなんとか消したいと思っています。
選択されたウインドウハンドルが手にはいるので、
::SendMessage(選択されたハンドル,WM_PAINT,0,0); なり
::SendMessage(選択されたハンドル,WM_ERASEBKGND,0,0); なり
いろいろメッセージを送ってみたのですが、なぜか消えてくれません。
Spy++を利用して選択ウインドウにメッセージが送られていることは確認しているのですが・・・
この原因について見当の付く方教えてください。お願いします。
表示ができたものを消せないわけがない
>::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)は表示されるんだけど。。。
C++勉強してみようと思うんですけど取り合えずは猫でも分かる〜を全部終わらせてみるってのが良いでしょうか?
2Dシューティングゲームを作っているのですが、クラスの扱いに困っています。
敵の弾クラス(cBullet)を用意したのですが、それをうまく活かせません。
敵がそれぞれcBullet Bullet[100]といったように個別に弾を持ったのでは効率が悪い気がします。
一括して管理したいのですが、どういう構造にするとよいのでしょうか。
>>75 自分がわかりやすいと思ったとこを参考にすればいい。
そこのやりかたが絶対唯一じゃないことさえ認識していればなんとかなるでしょ。
>>76 自分の思った通りにやってみればいい。
画面上に存在できる弾の数だけグローバルで配列持ってもいいし。
>>78 なるほど、まずはそれでやってみます。
ありがとうございました
80 :
75:2009/03/08(日) 20:32:46
猫でも分かるー見てやってみたら最初っからつまづいた
VC++2008EEで説明してるサイト教えてもらえませんか・・・
VCは初心者向けの情報は少ないし、あっても古い。
もしかしたらあるかもしれないが初心者用のサイトなんか興味ないから知らん
>>75 自分が作りたいと思ったものを作ってみるのが一番の勉強法
83 :
デフォルトの名無しさん:2009/03/09(月) 00:38:45
いや、それよりvc2008eeは入門サイトほとんど駄目だからつらいな
.netフレームワーク使うとこうなんのか?
スタンダード金出せば猫さん家も役に立つが
ソフトに金払う余裕ないだろうなぁ
スタンダード金出さないと使えないのはMFCとリソースエディタ
win32なら無料で使えるから猫が全然使えないわけじゃない
ただあそこは古すぎるからコンパイルエラーぐらい自力で解決できないと無理
ダイアログエディタが使えないのはちときついかな。
入門探すより、自分であれこれいじってみては。
>>84 なあ古すぎる癖にシェアウェアとか猫はふざけてるよな
VCEEで勉強するときは
#pragma warning(disable : 4996)
や
Unicode
あたりの情報は必須だな
そして、WinAPIでまた引っかかるとw
VCEEって、セキュリティが強化された関数は使えないのか?
使えるけどその関数を使った例題がほとんどないからでしょう
すみません、どなたか教えてください
親クラスA、子クラスBともに仮想関数func()が実装されているとします
この時Aクラスのポインタ(A* pA)にBクラスのインスタンスのポインタを代入し
pA->func()
を呼び出した場合クラスAとBどちらのfunc()が呼ばれるのでしょうか
会社で実験しようと思ったんですが残業規制のせいで調べられなかったんでご存知の方ご教示くださいm(__)m
C++の質問ならC++スレでした方がいい
クラスA
93 :
90:2009/03/09(月) 18:43:24
自己解決しました
クラスBですね
>>91 すみませんでした
環境
VisualC++.NET(2003)
MFCを使ったアプリケーションを作っています。
フォームにエクセルのような格子で区切られた表のようなコントロールを貼り付けたいのですが
Webで調べてMicrosoft DataGrid Control 6.0とかMSFlexGridを使えばいい野ではないかというところまでは分かったのですが、
・MSFlexGridなんてものが.NET frameworkコンポーネントにもCOMコンポーネントにも存在しない。
・.NET frameworkコンポーネントにDataGridがあるが、そもそも初めからチェックが入っている。
それなのにツールバーには表示されてない。
一旦チェック外して再びチェックしなおすとツールバーにそれらしきものが追加されたが非アクティブになってて使えない。
・そもそも.NET frameworkコンポーネントの中はほぼ全部チェックが入っているのに
ツールバーに一切無いのが理解出来ない。
・一度間違えてデフォルトの「ボタン」のコントロールをツールバーから削除してしまったので、
COMコンポーネントから探したが同じものが無かった(プロパティが別物だった)
アイテムの追加と削除ダイアログでリセットボタンを押して直す事が出来たが、
デフォルトでツールバーにあるアイテムはCOMコンポーネントじゃないなら一体何者なのか?
行き詰っています。どなたか教えていただけないでしょうか?
>>95 ありがとうございます。
ですがリンク先の指定どおりにActiveXの挿入を行っても、
Microsoft FlexGrid Control, version 6.0が選択肢の中にありません。
98 :
94:2009/03/09(月) 23:10:50
自分のPCを検索して見ましたがMSFLXGRD.OCXは存在しないようです。
あと実行環境でレジストリへの登録が必要になるような面倒な作業をユーザーに強いたくない
(自分ですらめんどくさいのにもっと素人なら嫌気がさしてやめてしまうかもしれない)
のですが、そうなるともう自力でピクチャーボックスに描画するような形で作るしか無くなってしまうのでしょうか?
ブラウザのActiveXコントロールと同じだからインストールは楽だよ
>実行環境でレジストリへの登録が必要になるような面倒な作業をユーザーに強いたくない
ソフトのインストール時にREGファイルを食わせてやればいいだけ。
それをユーザに強いたら・・・そりゃダメだよな。
ま、Windowsの文字コード表程度の表なら、自前で作っても手間はそんなにかからないがね。
VC++2005でMFCアプリに名前空間名に"interface"って使えない?
c2059というコンパイルエラーになる。
/clrオプションは使っていないし、
非MFCアプリやstdafx.hをincludeしないとコンパイル通るし
C++/CLIで予約語になってるeventとか他の単語は
使えるから単なるバグですかね?
最近変なやつ多いな
同一人物?
>>101 COM関係のヘッダのどれかで、#define interface structと定義されている。
#include <stdio.h>
int main(void)
{
printf("Hello!\n");
return 0;
}
と
#include <iostream>
int main()
{
std::cout <<"Hello!" << std::endl;
return 0;
}
見るサイトによって書き方が違うけど結果は似たようなのがでるんですけど
これはどういう違いがあるんですか?
C/C++
ggrks
Visual Studio 2005 Vistaです。
6つのピクチャボックスに表示させた6枚の画像
(横3枚の2段)から1枚を選択(ダブルクリック)して、
選択した画像を左上のピクチャボックスの表示し、
選択した以外の画像は消去する、
といったことはどのようにして実現できますでしょうか。
表示と消去ができるならクリックしたタイミングで好きなようにやればいい
>>110 ・6つのピクチャボックスに SS_NOTIFY スタイルを付加する。
・あとは STN_DBLCLK メッセージが通知されたときに、親ウィンドウに対して
InvalidateRect( NULL) を投げればいい。
それが 「初期の描画なのか」 「ダブルクリック後の描画なのか」 「どれが選択されたのか」
を判断する仕組みは、当然必要だがね。
113 :
110:2009/03/12(木) 18:40:15
VisualC++.NET(2003)を使ってます。
今まで作ってたソリューションをセカンドマシンでもいじるために
メインマシンの共有フォルダにソリューションのフォルダごとコピー
↓
セカンドマシンにブリーフケース作ってそのフォルダを持ってくる。
という風にしようとしたのですが、メインマシンのソリューションをコピーした段階で
元々正常にビルドできて実行できてたものが正常に動きません。
コピー先ソリューションの動作
@開始ボタンを押すと毎回「プロジェクトの構成が変更されています。ビルドしますか?」のダイアログが出る。
・@でいいえを選ぶと何事も無く動く
・@ではいを選ぶと元々出なかったエラー「ビルドエラーが発生しました。続行しますか?」というダイアログが出る。
・BuildLog.htmを見ると 'CDHtmlDialog' : 定義されていない基本クラスが宣言されています。などを筆頭に
ずらずらとエラーが出ている。
これは元のフォルダでは出ない。
初心者でソリューションの構成ファイルなどのどこかに絶対パスがあるのか、見当も付きません。
プログラム自体は絶対パスを指定するような部分は有りません。
どなたか、解決のヒントでも教えていただけないでしょうか?
また、個人で2PCでプログラム開発する場合VSSのような物(多分有料ソフトですよね?)
を使わずに同期とったりバージョン管理する良い方法があれば教えて頂けないでしょうか?
115 :
114:2009/03/13(金) 20:48:02
もう一度やってみたら上手くいきました。
何故なのか分かりませんが一回目にやったコピーでファイルがおかしくなっていたのかもしれません。
エラー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個あった。
ソースおかしい?
>>116 名前空間(namespace)について勉強しろ
>>116 stdafx.h を開いて
using namespace std;
と書け。
>>118 それやっちゃうと名前空間を定義してる意味がなくなるので
あまり人にすすめることではないかと…
ますます訳が分からなくなった。
namespaceで何処を囲えば良いのかさっぱり。
どこかで名前が被ってるからnamespace使えってことで合ってるんだよね?
知らない間にエラーが102個に増えた。
何処が駄目で何でnamespaceが必要なのかまだ理解できてない俺・・・
>>120 要は、std という名前空間をどこで使いたいか、だ。
int main() のなかだけで使いたいなら int main() の中に書けばいい。
int main() の書かれている cpp ファイルの中で使いたいなら、#include <iostream> の下あたりに書く。
いつでもどこでも使いたいなら stdafx.h に書く。(このときの注意点は
>>119)
バカみたいな質問で申し訳ありません。猫でもで勉強してて今まで、VC++2008でCの勉強をやってたんですが、C++をやり始め、
1>.\ex01.cpp(1) : fatal error C1083: include ファイルを開けません。'iostream.h': No such file or directory
というエラーが出ました。これはiostream.hが標準ライブラリにないという事ですよね。
色々、ググってみたんですが、標準ライブラリの宣言で躓くなんてバカな奴はいないのか、
どこでダウンロードするのかどうやって標準ライブラリに追加するのかさっぱりわかりません。
教えていただけると助かります<m(__)m>
C++初心者用のスレへ行った方がいい
>>123 <iostream.h>は昔の存在。だから最近のVisual C++には入っていない。
<iostream>をインクルードして、coutとかcinとかはstd::cout、std::cinなどのようにstd::を付けろ。
詳しくは最近の入門書を読め。
拡張子を.cppにしたときから
インクルードファイルは全て.h抜きを覚悟すべきだな
>>123 猫でも…(ryは、難点として、標準ライブラリのインクルードがおかしいってのがある。
あきらめて書籍買え。その方が実りあるよ。
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もありがとう,助かったよ。
デフォルトエントリポイント
コンソールアプリケーション→main
Windowsアプリケーション→WinMain
※マルチバイト文字セットの場合
>>129 ありがとう。
int WINAPI WinMain( HINSTANCE, HINSTANCE, LPSTR, int)
でやってみたけど、デバッグはエラーないけど
デバッグなしで開始しても何も出てこない・・・
これはもう少しC++が分かるようになれば出てくるんだよね?
ちゃんとしたウィンドウとかダイアログが出せるようになるのが楽しみだ
>デバッグなしで開始しても何も出てこない・・・
Windowsアプリケーションなんだから、ウィンドウを作らないことには何も出てこない。
132 :
デフォルトの名無しさん:2009/03/14(土) 15:19:49
ある環境をリンク中に、下記エラーが出るようになってしまいました。
>LIBCMTD.lib(dllcrt0.obj) : error LNK2019: 未解決の外部シンボル __imp__GetCurrentThreadId@0 が関数 __CRT_INIT@12 で参照されました。
PlatoformSDKの関数らしいですが、どのライブラリが足りないかご存じの方いませんか?
CRT_INITで参照するものが不足するか?
環境の問題だろ
>>130 C++ができるかどうかとWindowsプログラミングは全く関係ないぞ。
現に、猫でものWin32編は基本的にCだけでそういうことをやっている。
>>131 確かにWindow作らなきゃ何も表示されなくて当たり前だった。
>>134 ごめん、まだC++否プログラミング始めて1日くらいしか過ぎてないんだ。すまない
Windowsプログラミングとは関係ないのか、猫でもにはWindowsSDKとかあったな。
if関数に少しだけ感動した,いろいろ応用が利きそうな関数だ。
if関数は初めて聞いた
VBAにiif関数があってそれのことかと思た
138 :
132: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
としてました。。。(笑
こんなんですごい時間かかった(汗
139 :
123:2009/03/14(土) 22:21:55
ありがとうございますm(__)m
明日、本屋行って標準ライブラリ集でも買ってきて、猫で続きをやろうと思います。
140 :
デフォルトの名無しさん:2009/03/16(月) 17:45:39
入力支援がちっとも支援してくれません。
たまに入力候補一覧のリストボックスが出てきたと思っても、
必要なものを探すのにエライ手間がかかります。
どうしたらいいですか。
あれはMFCのためにある
142 :
デフォルトの名無しさん:2009/03/17(火) 00:54:01
初歩的な質問ですが、
どこかの設定を無意識に変えてしまったせいなのか
構成の種類をDLLにした場合でも、自動でLIBを作成してくれなくなりました
どこの設定をかえればいいのか教えていただけるとありがたいです。
VC++2008EEを使用しています。
自己解決しました
EXPORTを書き忘れてましたorz
144 :
デフォルトの名無しさん:2009/03/18(水) 19:59:37
窓の杜にあるようなソフトもvc++で作れますか?
>>144 作れます。初心者を脱出してC++とWinのAPIをめっちゃ勉強すれば。
sdkddkver.hを見る限り、_WIN32_WINNTを適当な値に設定して、
その他WINVER等の定義は任せてしまった方が良いのでしょうか。
ヘッダファイルの読み込み順序による。
ありがとうございます。たしかにそうかもしれませんね。
いつもwindows.hからインクルードしてたので、順番のことは気にも留めてませんでした。
始めようと思うんですが、公式ページの「Web インストール (ダウンロード)」をクリックしても
エラーページに飛ばされてダウンロードできません。
同じ症状の方いますか?
Firefoxのエラー文によると
>サイトアドレスは有効なようですが、接続を確立できませんでした。
download.microsoft.comに繋がらないようです。
自分だけ?
と今日の日記に書いておこう
コメントを関数の前に書くと
その前の関数のグループになってしまいます
コメントがグループの初めになるように任意に修正する方法はないでしょうか
ご存知の方お願いします
154 :
デフォルトの名無しさん:2009/03/24(火) 21:57:11
Microsoft PressのVisual C++.NET実践講座 Vol.1基礎編の本には、
Console::WriteLine(S"Hello World");
のようにダブルクォートで囲った文字列の前にSが付いていて、それについて
何の説明も書いてないけど、このSって何。
わかったSystem::String*だ
156 :
デフォルトの名無しさん:2009/03/25(水) 02:18:26
visual cで作られたアプリケーションがあるのですが、
これを改造して自分のほしい機能を付け加えています。
自分で追加した変数やマクロなどとそうではない箇所とで、識別子(関数名、変数名、マクロ名)を明確に分けたいのですが、
新たに追加した部分にルールをつけるだけでなく、
改造元の識別子のすべてに対して、「kaizoumoto_」「KAIZOUMOTO_」のような接頭語をつけたいと考えました。
そのようなことを一括で行うことは可能でしょうか。
改造元から現在の状態までの間の追加は失われてかまいません。(改造元があって、それの識別子を一括で変更したいです。)
というか、Visual Cと全然関係ないですか。すみません。
ご存知でしたら、Helpをお願いします。
VC++のエディタウィンドウの行間をひらげることってできますか?
フォントやエディタの設定項目を調べて見ましたが、うまくできませんので、お願いします。
158 :
デフォルトの名無しさん:2009/03/26(木) 12:45:11
2008 Express Edition使ってて外部エディタで編集してるから
これのエディタは見るだけにしたいんだけど
編集禁止状態に出来ない?
俺が思うに閉じたら見られないのではなかろうか
VS2005, XPでWin32プロジェクトを作成中です。
CreateWindowでウィンドウをつくり、さらにCreateWindowでボタンを追加しました。
マウスによる指定とカーソルキーによって、
メインウィンドウのある領域でカーソルが移動するようになっています。
(WM_LBUTTONDOWN, WM_KEYDOWN)
しかし領域外につくったボタンを押すと、
マウスによるカーソルの移動は受け付けるものの、カーソルキーを押しても反応がありません。
一度ウィンドウを非アクティブにし、再びアクティブに戻すと動作は正常に戻ります。
ボタンはWM_COMMANDで処理を行わずとも、押した時点で動作がおかしくなってしまうようです。
ご教示お願い致します。
カメラ目線
一応、ソースプログラム出さない?
ソースもなにもカーソル戻すだけだろ
167 :
163: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;
168 :
165:2009/03/28(土) 20:13:06
case Button25: を押したら、break; の前にコントロールを戻すために何かするんじゃないか。
何の関数呼べばいいのかわからないけど、ここまでだ。
ソース見る必要あったのか?
>>163です
SetFocus( hWnd ); でした!
解決致しました。ありがとうございます!
1. マネージC++のインターフェイスは、純粋仮想関数だけを持つ抽象クラスみたいなものか。
2. マネージC++のシールクラスは、自分の作った知的財産であるクラスを「お前らなんかに
継承してパクらせてやるわけにはいかん」ためにあるのか。
3. マネージC++の例外の__finnallyブロックは、例外の有無に関係なく実行するということ
だが、そんなのなくても、いずれの場合もcatchブロックの次を普通に実行するみたいで、
どのように違いがあるのかよくわからん。
4. 派生クラスで基底クラスのメンバー関数をオーバーライドできるのは、別に仮想関数でな
くても可なのか。
5. 4が正しいと仮定して言う。派生クラスのアドレスを、基底クラスのポインターに代入して、
そのポインターを使って、派生クラスでオーバーライドされたメンバー関数を呼び出した
ときの扱いはどうなのか。非仮想関数なら、基底クラスのメンバー関数を呼び出して、仮想
関数なら、派生クラスのメンバー関数を呼び出すのではないかと思うが、それで正しいか。
誤爆です
違う誤爆ではない。
邪魔しないでくれ。
あっ、確か__finayllyはreturnされると呼び出し元に戻る前に、そのブロックが
実行するってことか。何かに書いてあったような記憶が。
あっ、良く確かめずに書いてすみません
ちゃんと調べてから書き直します
C++/CLIスレのがよさげ
あと、試してみたほうが早い気が
以上すべて自演でした
どうも失礼しました
これからは自分で試してから書くことにします
どなたか
>>157について、よろしくお願いしますm(_ _)m
無理じゃない?
行間の空くフォント探してくるとか
できないことはないな
ただ全然興味ないから完全スルー
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プロジェクトで空のプロジェクト選択をし、プロジェクトのプロパティで
プリコンパイル済みヘッダーを使用するに設定してもできませんでした。
よろしくお願いします。
スケルトンだったら自分で作ったスケルトンとくらべてみればわかるだろ
186 :
184:2009/03/31(火) 22:29:16
私自身はスケルトンプログラムは作っていません。
0からのゲームプログラミングというサイトで、
サイト管理人が作ったスケルトンプログラムをダウンロードし、
ビルドしてくださいとあったので流れに従って進めたところ、
エラーが表示され先へ進めなくなったしまったんです。
そこのサイト管理人にビルドできないと言ってやればいいだけ
stdafx.cpp→プリコンパイル済みヘッダーを作成する
2004年ごろから放棄されてるサイトのようだから
今大幅修正しないと使いものにならなくて投げ出したんだろ
「プリコンパイルヘッダーを使用しない」にしてみるという知恵は回らんのかw
一行追加すればいいじゃん
>>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を継承したものです。
リソースエディタ以外で手動で作ったコントロールも自分で削除しなくてもいいのでしょか?
new したものは delete しなきゃダメ
196 :
デフォルトの名無しさん:2009/04/01(水) 22:32:38
>195
CButtonはCWndの継承ですがディストラクタで勝手に
NCDestroyで勝手にやってはくれないのでしょうか?
私自身もあんまりよく分かっていないのですが。
CButtonのデストラクタにブレイクポイント置いて、デバッグ開始したらわかるんじゃね?
>>196 CWnd のソース読めばわかることだろ。MFC のソースは HDD の肥やしじゃないぞ。
>>197 んなことしなくても、デバッグモードで実行したら、終了時にメモリーリークがあれば表示される。
ちなみに、CWnd::PostNcDestroy() のソースはこうなっている。
void CWnd::PostNcDestroy()
{
// default to nothing
}
>newを使っているのにDestroyWindowを使っている形跡がありません
そもそもこのふたつには関連性がないだろうに
DestroyWindow
指定されたウィンドウが親ウィンドウやオーナーウィンドウのときは、
その子ウィンドウやオーナー付きウィンドウも自動的に破棄します。
このとき、先に子ウィンドウやオーナー付きウィンドウを破棄してから、
親ウィンドウやオーナーウィンドウを破棄します。
なのでDestroyWindowは不要
ただしクラストやメモリ管理とは別問題
202 :
デフォルトの名無しさん:2009/04/02(木) 00:12:30
>ただしクラストやメモリ管理とは別問題
確かに別問題ですね。
新Visual C++6.0 シニア編にdelete処理が
載っていないのでおかしいと思ってたのですが
それとWindowの破棄とは直接関係ないですね。
どこかでdelete処理されているのではないかと思って
相談したのですが自分でやらないとダメですね。
そろそろ、新Visual C++6.0 シニア編を燃やして
本格的にWindowsプログラミングを学んではいかがでしょうか。
C++でDTM支援ソフトを作ったことがある人はいませんか?
Dominoみたいなのが作れるようになるまでになりたい…。
出来る限りフリーで…。
16bitのころシーケンサ書いたけどな、、、最近はそっち方面やってないな
って聞いてどうすんだw
206 :
デフォルトの名無しさん:2009/04/02(木) 13:04:20
ぶっちゃけCでも何でも余程技術がない限りライブラリを使うことになりますよね
だったら最初からスクリプト言語でいいじゃんって思ったんですが
間違ってます?
それでいいと思うならそれでいいだろ。
人に聞くことでもないな。
>>206 現実スクリプト言語が流行ってない事を考えれば自ずと答えは導き出せるのでは
スクリプトキディってことじゃね?
でもスクリプト言語ってはっきり言っているような。
>>206 がスクリプト言語という言葉を理解しているという仮定の下で話すと、
>ライブラリを使うことになり
↓
>スクリプト言語でいいじゃん
ここの論理的な演繹がおかしいと感じるのは俺だけではないはずだ。
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));
そう言えば、このスレにConsole::WriteLineのソースが無いじゃないか。
何でだ、だれもプログラムしないのか。
Console使う人は珍しいと思う
オメガチャートをリアルタイムもしくは20分遅れでデータ取得したいのですが、
さっぱりどうしたらいいのかわかりません
カバでもわかるように教えていただけませんか
>>214 おまいには無理
誰か親切な人がコンパイル済みのをうpしてくれるのを待て
そんな奇特なお方おらんやろ〜
いやわからんぞ
2ちゃんで一番親切なイケメンがいる板だからな
俺の出番が来ましたね。しばらくお待ちを。
この板にイケメンなんかいたのか
イケてるとはかぎらないじゃない
>>218 ありがとうございます親切な方
気長に待ってますのでお願いします
.NET Frameworkのサンプルコードは、VB.NETとC#でコード書かれてて、C++が無い。
C#のコードの、ドット演算子をスコープ解決演算子に置き換えたらC++になるのかどうか。
ほかにどう変換すべきか。
場合による
クラス・構造体にref/valueを付ける。
組込型の変化、long→long longやchar→wchar_t、byte→unsigned charなど。
参照型にハンドルを付ける。ただしusingを自動変数にする。場合によってはできないので、auto_handleを使用する。
unsafeの消失。hoge*はpin_ptr<hoge>に対応するが、interior_ptr<hoge>やhoge*にできる場合もある。
……いろいろあって挙げていったらきりがない。
225 :
214:2009/04/04(土) 10:50:52
何とか自分でできました
ありがとうございました
typedef structで構造体を定義してるんですが、
新しく変数を追加しようとしても追加されなくて困っています。
同じ構造体の他の変数はマウスカーソル合わせるとunnamed〜と表示されるのですが
新しく追加した変数はintと表示されています。
どなたか原因を教えてくれないでしょうか?
「追加されない」って、IntelliSence に追加されないってだけの話じゃないのか?
>>228 説明不足でした。すみません。
実際はエラーは出てないんですが、
候補一覧に出てこないので、不安になって質問しました。
時間置いたら今は出るようになっていました。
この候補一覧に出るようにするにはビルドする以外にも何かする必要があるのでしょうか?
>時間置いたら今は出るようになっていました。
通常は、これがすべて。詳細はヘルプの「IntelliSense の使用方法 」を参照すべし。
>>230 ありがとうございました。
IntelliSenceの使い方をやっと理解できました
ははは
エクセルのデータで、1の列が文字列、2〜をint型で読み込んで構造体に入れたいんですが、どうしたらいいでしょうか?
CSVファイルに、カンマ区切りかタブ区切り形式で先ずテキスト化する。
235 :
233:2009/04/06(月) 19:25:21
エクセルのマクロ使ってという事ですよね。
ありがとうございます。やってみますm(__)m
すでにエクセルのデータではなくなっている。^-^;
そっち方面ならC++/CLIで.NETのが楽かも
でもそれならC#にしちゃうか
体験版のVC++Proを入れた後に
VC++Expressを入れてもMFCは使えるようになりませんか?
ヘッダやライブラリが揃っていればコンパイルはいけるんじゃね
241 :
デフォルトの名無しさん:2009/04/08(水) 12:51:11
>>238 使えるようになるけど、Express上でMFC使ったアプリを
作っても配布してはならない。ライセンスでそうなってる。
MFCは無料じゃなくて有料です。勉強なら許すって感じかな。
242 :
デフォルトの名無しさん:2009/04/08(水) 15:03:31
スタートページのニュースヘッダーみたいなのって出なくできますか?
あれで引っかかるような挙動したりして気持ちが悪い
オプションで設定できるのに、何でそれくらい自分でできないの?
FAQだな。
ちょっと探せばわかるけど、EEの場合オプションの全表示のチェック入れてなくて
無いと思い込んでる場合も
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.
>>246 返事ありがとうございます。
1Byteのサイズに2Byte分入れようとしてるから、という事でしょうか?
以下の例で、ちゃんと値が代入できていたので、可能という認識なのですが。
(キャストしなきゃWarningが出るのはおいといて)
あと、私の書き方が悪かったですね・・・Yearだけでなく
年月日時分秒全てがうまく行きませんでした。
char Data1 = 0;
short Data2 = 10;
Data1 = Data2;
>>247 不可能。
BYTE byte; // typedef unsigned char BYTE;
SYSTEMTIME SysTim;
GetLocalTime(&SysTim);
byte = (BYTE)SysTim.wYear;
で試してごらん。無理だから。
1Byte = 8 Bit = 2 ^ 8 = 256 < 2009;
>>248,249
お返事ありがとうございます。
すいません、言いたかったのは代入後の値が0なのは何故かということです。
環境によるのだとは思いますが、普通は下位1byteが入っているはずでは?という認識です。
年以外に関しては、255以下ですし。
>>247に挙げた例で、下位1byteを代入できているので
同じような事をしてるのに、何故うまく行かないのかというところです。
とりあえず、明日もう少し考えてみます。
>>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' : この名前を指定された名前空間は存在しません。
と言われエラーになります。
何が足りなく、いけないのでしょうか?
さっぱりよく分っていないのですが、よろしくおねがいします。
Microsoft::VisualBasic::FileIOというのを定義してないか
定義してあっても参照できない
>>252 ソリューションエクスプローラーでプロジェクトを右クリックして参照(F)...を選択
Frameworkと参照が選択されている状態で、[新しい参照の追加(N)...]ボタンを押して
.NETタブから、Microsoft.VisualBasicを選択してOKを押す。
XMLなら別の方法も、、、チュートリアルか何かを参考にしてるのか?
ってXMLじゃなくてCSVか
>>254は2008での話で2005で確認したら[Frameworkと参照]の部分は[参照設定]だった
まあわかるとは思うけど念のため。
ははは
>>250 はずしてるかもだけど、
ループの中身をYearだけ代入するよにしたらどうなる?
期待してる動作は、下位1Byteだけは代入されるだろうってことよね?
259 :
258:2009/04/09(木) 18:55:20
ごめん、後半は書いてたね
無視してくださいorz
260 :
252:2009/04/09(木) 23:14:16
書かれた通りにやったら、出来た感じです。
どうもありがとうです。
261 :
デフォルトの名無しさん:2009/04/09(木) 23:53:21
MFCでVisualBasicをオーバーライトできます?
日本語で言ってくれ
263 :
デフォルトの名無しさん:2009/04/10(金) 00:04:32
だから、MFCでVB7のプログラムをアルゴリズムから設計までそっくりそのままで
上書きして、同じプログラムをつくれるかな?ってことです。
264 :
デフォルトの名無しさん:2009/04/10(金) 00:21:33
VB7って何だ?
Visual Basic で作ったプログラムと同じ動作をするものを VisualC++ で作れるか? という問いなら YES。
上書きだとかオーバーライドだとかといった既定の単語を、自分勝手な意味をつけて使っても他人にゃわからんよ。
だってプラグインしながらコンバートする感じでつくりたいんです
構造体やクラスを作って実際に使おうとすると、インスタンス.と打つとメンバがズラッと出てくるはずですけど表示されなくなってしまいました。原因わかりますか?
インスタンスをマウスオーバーすると構造体はちゃんとポップアップ表示されます。
よくあることなので諦めましょう
>>267 「.」を打ったり消したりを繰り返してれば復活しない?
後は、一回ビルドしなおすとか、ncbファイル消してみるとか・・・
何度かやってると復活するな
文法が間違ってたりすると反応しないから、何度もやって復活しないなら文法ミス
テンプレートかインクルードファイルが多すぎると、バグか知らないけど認識してくれないことが多い気がする。
2005/2008的には、仕様です。って感じだな。
273 :
デフォルトの名無しさん:2009/04/11(土) 00:49:19
Windows7でたら、パソコン買おうとおもうんだけど、今のWin2000じゃスペック的にも無理があるから・・
Windows7でもVC++6.0ってインストールできるのかな・・いまだに結構使ってるから、入れたいんだ。
>273
もうサポートも終わった環境なんて捨てろw
>>273 VC++6.0なんて仕様がイミフだからもうヤダ。。。
>>273 VMWareで2000動かしてそこにインストールするのがお薦め。
次期モデルC++0xはどれだけ対応しているのか期待したい
>>275 VC9になったところで仕様イミフだろ。
280 :
デフォルトの名無しさん:2009/04/13(月) 12:34:48
エディットボックスコントロールや、立地エディットコントロール以外に
ActiveXとかでエディタコンポーネントってありませんか?
作れば何でもある
エディットボックスというのは初めて聞いた
VC++の得意分野って何?みんな何作るの?
GUIアプリならC#で作った方が早いじゃんか。
.NET Frameworkなんて死んでも入れないという人のためのアプリを作るためとか。
285 :
280:2009/04/13(月) 19:58:06
>>281 はい、ありがとうございます。この際作ろうと思います。
>>282 ?私のVCのツールバーにエディットボックスってあるんですが・・普通はないのかな?
で、自作しようと思いますが、CEditクラスを継承しようと思いますが、
自動インデントやらの独自機能を追加しようとおもいます。
その場合、ActiveXという形式で作成するのか、普通のC++クラスとして作成汁のかどっちがいいんでしょうか?
なにぶんVC++はあまり知らないので、おしえてください。
286 :
デフォルトの名無しさん:2009/04/13(月) 20:53:15
vc++2008のエディタをウィンドウ分割したときに
上側のウィンドウへフォーカスを切り替えたいとき
キーボードでやるにはどうすればいいの?
質問です。
VC++.net2003で、VB6.0のTextBoxと思われるもの(spy++によると、"ThunderRT6TextBox")より、
WM_GETTEXTで文字列を取得するアプリを作りました。
ただ、TextBoxの格納上限 > WM_GETTEXT取得上限のようで一定量を超える入力があると
全てを取得することが出来ません。
EM_GETTEXTEXで試したのですが、リッチエディットコントロールではないのか、何も返してきません。
何かいい方法ありませんでしょうか。
(スレあってますよね・・・?)
MFCのクラス階層図を網羅したExcelファイルはどこかにないかね。
291 :
デフォルトの名無しさん:2009/04/19(日) 15:32:03
VC++2008EEなのですがビルドしようとすると
general error c1010070: Failed to load and parse the manifest.
と出てきて何もできません。どうすればよいのでしょうか?
プロジェクトのプロパティの構成プロパティのマニフェストツールの入力と出力に
変なファイル指定してない?
293 :
デフォルトの名無しさん:2009/04/19(日) 16:19:03
入力リソースマニフェスト→指定なし
出力マニフェスト ファイル→$(TargetPath).manifest
となってます^^;
それ消すか、埋め込みマニフェストにしてみては
あと、新規プロジェクトでゼロから作ってもそれ出る?
295 :
デフォルトの名無しさん:2009/04/19(日) 16:27:05
消しても埋め込みマニフェストにしても無理でしたorz
新規で作っても出ます;;
むむむ、、、、再インストール・・・かなあ
297 :
デフォルトの名無しさん:2009/04/19(日) 17:43:02
再インストールしても無理でしたorz
ためしに、[ツール]-[設定のインポートとエクスポート]から
すべての設定をリセットしてみてはどうか。
WIN32アプリケーションで、
マルチディスプレイでプログラムをフルスクリーン表示にしている時に、
セカンダリ画面でクリックなどするとプログラムが最小化してしまいます。
この最小化を抑制する方法があるみたいなのですが、どうすれば可能なのでしょうか。
最小化するか?
はい、Winキーを押した時の様になります。
それはお前の作ったプログラムでしか起きない問題なのか?
要するにお前が作ったプログラムに原因があるのか、
それとも元々OSがそういう仕様なのかぐらいはっきりしろ。
元々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のヘッダファイルでエラーが出まくります。
プロジェクトの設定が悪いのでしょうか?
どういうエラーよ
306 :
304: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 ↑ここを参考にしました。
307 :
304:2009/04/21(火) 18:23:26
すいません!自己解決しました。
#include <winsock.h>をしたらエラーが出なくなりました。
ここでwinsockが出てくるとは…。
ああ、そういえばmysql.h見てて書こうと思ってて他の作業入ってて書きそびれたわ
mysql.h をinclude するまえにwindows.hをincludeしては、と書こうとしてた。
Visual Studio C++ 2008で
#include <boost/random.hpp>
を使いたいんですけどこれはブーストをダウンロードした後どうすればいいのですか?
>>310 ご親切にありがとうございます。
なるほどー
SP1当ててないのでダウンロードしてみます。
インストール後はもう#include <boost/random.hpp>を使える状態になるのですか?
今環境がないため試せないんです;
インクルードディレクトリの設定やったことないのか?
インストーラーがやってくれるならそのままでいいし、ダメなら自分で設定すればいいだけ
313 :
デフォルトの名無しさん:2009/04/25(土) 00:03:11
すみません。一般的に画像を保存する際、.bmp形式より.jpg形式の方が画像サイズが小さくなります。
今度作成しようとおもっているのは、Alt+Prt Scキーにより、クリップボードにコピーされた
アクティブな画面キャプチャを.jpg形式のファイルで保存しようとおもうんですが、
私のアルゴリズム?では、bmp形式のサイズで保存されてしまうのが予想されます。
私のアルゴリズムは以下です。
1.クリップボードの画像データをビットマップオブジェクトにコピーし、ファイルを保存する。
2.ファイル名の拡張子を.jpgに変換する。
以上です。
以前、Alt+Prt Scキーで取得した画面キャプチャ画像をアクセサリのペイントに貼り付けてjpegファイルに変換しても
画像サイズが変わらなかったので、上に書いたアルゴリズムでは同様のことになってしまうと思います。
jpegファイルの軽さで最初からファイルを保存するようにするにはどうしたらいいでしょうか?
画像関係のソフト制作、VC++は不慣れなものですので、すみませんが教えてください。よろしくお願いします。
Express以外を使っているなら、ATL::CImageもおすすめ。
316 :
413:2009/04/25(土) 00:52:22
>>314さん、
>>315さん。
どうもありがとうございます。教えていただいた、
キーワードでググってやってみようと思います。ちなみに
MFCですので。。
コンビニいって、立ち読みしてたので、お礼が遅くなりました。すみません。
とりあえずファイルの拡張子変えただけじゃjpgにはならんよ…
>>317 俺も最初の頃は
xxx.jpg.bmp
なんてファイルがあったな
いい例えが思いつかなくて放置してたんだけど
昼飯食ってたらとたんに思いついた
アナログテレビにペンで 「デジタル」 って書くだけじゃ地デジは映らないよ!
ペイントブラシは拡張子変えるだけでファイルフォーマットも変えるからなあw
ペイントブラシじゃなくてペイントか
いきなりですが、質問させてください。
VC++2008 ExpressEditionで、windowsアプリケーションを作成しようとしています。
CreateWindow関数の引数が多く、横に書いていくと見にくいので、途中で改行をしました。
すると、それ以後、コンマを入力するとエラー音(プンッというような音)が鳴ります。
これはどういった問題が起きているのでしょうか。
分かる方、どなたか教えていただけるとありがたいです。
すみません。物凄く素人な質問で恐縮なのですが。
ボタンを沢山配置したときに、リソース上で整列させたいのですが、
元々ダイアログに表示されている、ボタン位置の調整が出来る青い枠は
増やせないのでしょうか……?
リソース上で座標だけ見てボタンの微調整をするのはかなり苦痛です。
宜しくお願いします……!
どのリソースエディタかしらないけどコントロールの整列ボタンとかないの?
rcをテキストエディタで開いてみると
DEFPUSHBUTTON "OK", IDOK, 129, 7, 50, 14, BS_DEFPUSHBUTTON
PUSHBUTTON "キャンセル", IDCANCEL, 129, 24, 50, 14, BS_PUSHBUTTON
こんな感じになってるから手入力でやってもたいした労力じゃないかもしれないよ
325 :
323:2009/04/27(月) 02:46:51
>324さま
使用しているのはVisualStudio2008のリソースエディタです。
複数ボタンを選択した後に右クリックして、左揃え上揃えがあるのを確認しました。
早とちりしてすみません(汗)
微調整は324さまの仰られた通り、テキストエディタで編集する事にします。
ありがとうございました。
>>325 騙されたと思って、ダイアログエディタのガイドをクリックしてみろ。
先日からVC++2008を使い始めましたが、基本的な操作方法が分かりません。
ライブラリを追加するのはどこからやればいいのでしょうか?
2005ではプロジェクト→設定…とやっていたのですが。
プログラム自体初心者なのですが回答お願いします。
プロジェクト→設定…とやればいい
プロジェクト→プロパティだった
>>327 >プログラム自体初心者なのですが回答お願いします。
こういうの要らないだろ。
どうしてこういうの付けてくるヤツって耐えないんだろう。
…でもまあスレタイ的には今回は例外的に問題無いのか。
>>327 それくらい2005とろくに変わっていないだろ。
図解つきのマニュアルで1ステップずつ解説みないと使えないレベルなんじゃないか?
333 :
323:2009/04/28(火) 01:45:05
>>326さま
位置調整用の青点線増えました。助かりました。ありがとう。
334 :
327:2009/04/28(火) 10:48:06
プロジェクト→プロパティと開いたのですが、その後の項目で何を選べばいいのか分かりません。
2005ではリンクからライブラリの一覧が見れましたが、2008でリンカを選んでもそれらしい項目がありません。
他の項目も見ましたが、どこから追加すればいいのか分かりませんでした。
詳しく教えていただけないでしょうか。
詳しくも何もヘルプに書いてあるだろ。探せなきゃ「リンカ入力としての .lib ファイル」でググれ
>2005ではリンクからライブラリの一覧
これ、何のこと言ってる?
もしかしてC++/CLIか?
VC++用のXML SDKってどこからダウンロードすればいいでしょうか?
>>337 一応、VC付属のSDK・MSDNライブラリにもMSXML関連のものは入っていたはず。
望みのバージョンのものかどうかはともかく。
341 :
デフォルトの名無しさん:2009/05/01(金) 15:15:49
MFCやWin32APIでつかうGDI+について、書かれてる本ってないですか?割とくわしめに書いてある本。。
洋書でもいいです。近くの大本屋4件くらいまわってもなかったもんで・・
もしあれば、Amazonで買おうと思います。
またお前か
343 :
デフォルトの名無しさん:2009/05/01(金) 21:04:33
すみません。IEの現在表示してるアドレスを取得する事って可能ですか?
vcだけじゃ無理で、IEのSDKとかつかうんですかね・・
344 :
343:2009/05/01(金) 21:10:14
事故解決しました。ググッたら色々でてきました。うへぇ〜。
346 :
344:2009/05/01(金) 21:18:50
>>345 どうもありがとうございます><;そこは詳しく載ってますね><;
私がググって見つけたページよりも実践的なサンプルが載っています。
連休中にタスクバーに常駐するお気に入り管理ツールを作ろうと思いまして・・
ブラウザのお気に入り機能って使いにくいですよね><;
StretchDIBitsとStretchBltの違いってなんですか?
メモリ上がなんとかとなってるんですが意味がわかりません
>>347 StretchBlt: コピー元がHDC
StretchDIBits: コピー元がBITMAPINFO/void*
main()関数のソースファイルが、同じソリューションかつプロジェクト内の他の
ソースファイルにリンクできてないようで、ビルドするとリンクエラーが出ます。
error LNK 2001:外部シンボル 〜〜〜〜 は未解決です。
fatal error LINK1120: 外部参照4が未解決です。
のメッセージが出ます。
正しくリンクできるように設定するにはどうするんでしょうか。
Visual Studio .NET 2003 Professional
作成したプロジェクトは Visual C++ プロジェクトの「コンソールアプリケーション(.NET)」です。
インクルードしてないとかいう落ちだろ
CLRならC++のみだし、、、Cリンケージの問題でもなさそうか?
参照設定してないとかいう落ちとか
原因わかった。ファイルは実はリンクできてた。
vectorコンテナを使ってる箇所を直す必要がある。
前に単一のソースに書いてBorland C++ Compilerで正常にコンパイル成功
していたプログラムを拡張しようとしたが、他のファイルで定義したクラスの
変数宣言は問題無いが、
std::vector<class fileman> fman_databox1;
で定義して
fsize1 = fman_databox1[n1].getfsize();
のように、vectorコンテナに添え字演算子で要素を取り出したものから、
メンバー関数を使おうとする箇所があるとエラーが出るということがわかった。
fatal error
実はリンクできてた
直す必要がある
分裂症ですか?
一度ポインターにアドレスを代入してからメンバー関数を呼ぶように変更しよう
としたけど、そうやってもエラーになった。
IDEはちゃんとリスト選択が出てくるのに。
inlineを取ればリンクできた。
そんなことがあるのか、何でインライン関数にすればエラーになるんだ。
インライン関数の展開って、コンパイル時に行われるからじゃないのか?
テンプレートクラスで静的メンバ変数を使おうとすると、
>LNK2019: 未解決の外部シンボル
のエラーが出るのですが、どういった風に解決するのが一番でしょうか。
テンプレートなのに何で静的なんだよ
クラスごとにインスタンス数を数えたいのですが、
CountingObject : BasicCounting< CountingObject >と継承して、
BasicCountingのコンストラクタ、デストラクタでBasicCounting::countの値を増減しようと考えています。
テンプレートクラスで静的メンバ変数というのは、おかしいのですか?
そんなくだらない話はC++スレでやれ
>>356 クラステンプレートでないクラスの場合と同じで、変数の定義が必要。
class Foo
{
static int Hoge;
};
int Foo::Hoge;
tempate<typename T>
class Bar
{
static int Hoge;
};
template<typename T>
int Bar<T>::Hoge;
なお、クラステンプレートの静的変数は実体化させる必要があるので、
クラステンプレートのメンバ関数などと同様、通常はヘッダに定義を書く。
コンパイル時にエラーがあるとVSでエラー箇所教えてくれるしエラーメッセージも出るからアサートって書く必要ないですよね
構文エラー等ならコンパイル時にエラーになるが、0 division 等はエラーにならない。
よってアサートは必要。
コンパイルエラーが出るうちはデバッグは楽だ。
実行時エラーになるととたんに対処が面倒になる。
コンパイルエラーとアサートと同次元で語るやつが理解できない。
>>364 まあまあ、ココは初心者スレだからいいじゃないか。
実行時エラーと言いたかったんじゃないかなあ
それは違くね?
そうか?
アサートとコンパイルエラーが同レベルで出てくるなんて
初心者だってありえないだろ
>>368 「ありえない」か?確率0%か?
いや、初心者ならそのくらいありえるのではないか?
およそ、初心者に「ありえない」ことは「ありえない」んでは?
アサートという言葉を知ってるのにか?
当人に聞いてみなけりゃ分からないけど、
ありえないと言えるくらい見当違いなことだよ
たぶん釣りじゃないのかw
372 :
デフォルトの名無しさん:2009/05/05(火) 20:20:07
MFCでなんか面白いもの作りたいんだけど、思いつかない。
サンプルが載ってるページってありますか?自力で作るのもいいんだけど・・お代が無いし。
じゃ、タスクマネージャでも作ってみろ
374 :
デフォルトの名無しさん:2009/05/05(火) 22:54:51
>>373 タスクバーに入れる方法がわからないから、却下でござる。
C言語始めようかと思って先ほどマイクロソフトのVisual C++ Express Editionってのをダウンロードしました
試しに参考書に載ってる簡単な足し算を表示するプログラムを書き写してみたんですが、
どうやってその書いたプログラムが動くのかが分かりません・・・
F6でコンパイル F5で実行、だが・・・多分出てすぐ消ええる。
VCの入門本買って読むべし
378 :
375:2009/05/05(火) 23:55:05
[新しいプロジェクト]のとこから色々弄ったら実行出来ました!
二桁の数字が表示されただけでしたが色々作れそうで楽しいっすね
スレ汚し失礼しました
以下の2行をmainの最後に入れれば、実行後終了前にリーターンキー入力を待つ
printf("リターン入力で終了\n");
getchar();
>>377 プログラムはあなたの思ったようには動かなくても
プログラムはあなたの書いたようには動く
という格言がある。
これから先何度も何度も味わい続ける事になるだろうが、
これを忘れないようにね。
んでオススメは、Windows環境限定で良ければ
#include <conio.h>
でgetch();を使うのが良いと思うよ。いかなるキーでも何か入力すれば終了するようになる。
#include <conio.h>
int main()
{
//処理
getch();
return 0;
}
>>377 main()の最後の } にブレイクポイントを置けばいいよ。
Ctrl+F5でいいよ
VSとかでプログラムを作らないとデバッグって出来ないのですか
コマンドラインでそれ用のオプションつけてコンパイルしてあれこれして
デバッガー使うことは出来ますか?
デバッグ自体はコンパイル方法関係ないよ
Cじゃなくてもできるし
↑追加で実行ファイル開いたら問題なく出来ました
ごめんなさい
386 :
デフォルトの名無しさん:2009/05/07(木) 00:03:37
文字リテラルと文字列リテラルが分かれていますが、
どう言ったメリットデメリットがあるんでしょうか?
一文字の文字列を""で囲んでも何の問題もないような気がしますが
メモリの使用量が少ないんでしょうか
C言語からやり直せw
388 :
デフォルトの名無しさん:2009/05/07(木) 00:20:01
すいません、今日C++始めたばっかりなんです
VBは型ぐらいなら分かるんですがどうしてもふに落ちないもので
自分もC始めたばっかりなんだけど
char string[] = "ABCDE";
char chararray[] = { 'A', 'B', 'C', 'D', 'E', '\0' };
文字列は文字の配列だよって理解でいいの?
>文字列は文字の配列
読んで字の如し
>>388 VBやったことあるなら、AscとChr$は知っているだろ。
めちゃくちゃ乱暴に言うと文字リテラル'A'は、Asc("A")と同じ。
Ascの戻り値とChr$の引数、VBではLongとかで扱っていただろうが、
Cではcharという独立した型が与えられていると思えばいい。
n文字型があれば1文字型は不要ではという質問だと思うが、
文字の比較や判定の基本はバイト単位だな
32bitや64bit単位でできないこともないけど
ああunicodeもあるから
文字単位で比較か
>>386 文字と文字列の理解が怪しいな。
そもそもポインタとか分かってる?
いきなりC++にいくのは自殺級に難しいと思うからC言語から学んだ方が良いと思うよ。
>>389 > 文字列は文字の配列だよって理解でいいの?
いいんじゃない。文字列は文字型変数の配列ね。
あと実際に文字列は扱えないからその先頭アドレスで扱うことになるってことを理解してくれ。
例えば
"ABCDE"=="ABCDE"
がtrueになるかどうかは処理系依存。
左の"ABCDE"と右の"ABCDE"が別に確保されていればアドレスが異なるから
これはfalseだが、コンパイル時にコンパイラが気付いてメモリ節約のために
同一文字列をマージすればtrueとなる。
> char string[] = "ABCDE";
> char chararray[] = { 'A', 'B', 'C', 'D', 'E', '\0' };
これは全く同じになりますよ。
で、結局メリットデメリット誰も言えないわけで
データ型が違うという事実があるだけで、メリットもデメリットもない
メリットは使うときがくれば分かるとしか言いようがないな
使わない人にとっては面倒なだけと言えばデメリットにもなるだろうが、それは何にしてもそうだろう
これだからVB厨はコンピュータのこと何もわかってないと
言われるんだよ
Cやったあとはマイコンもやれよ
で電子回路やってFPGAもやれ
そこでやっとプログラマといえる
まぁ、いいんじゃないの一つずつ覚えていけば
VBは直感でも何となくできるし、プログラマへの足がかりぐらいにはなってると思うよ
偉そうだったらぶっ飛ばしたなくるけどw
>>399 しかたないさ、何てったってvisualかつbasicだもんなw
そりゃしょーがない
別にVBでもいいじゃん。
ただし
>>396 > で、結局メリットデメリット誰も言えないわけで
全く見当違いな質問に対して答えないだけで
「言えない」発言をする低能を除く!
そろそろソフトウェアとハードウェアを一緒に考えてしまってるプログラマが
えらそうにしている風習を改めないと。
一方しかわからないやつに偉そうにされるのはもっと嫌だw
同じプロジェクトのソースをいろいろなビルド構成や複数バージョンのVCで
ビルドしているのですが、ビルド構成やVCのバージョンごとに、
リソースのFILEVERSIONやPRODUCTVERSIONの右端の数字を
違う値にしたいと思っています(どういう構成でビルドされたものかを示すため)。
ビルドするたびに手動で書き換えていると絶対に忘れてしまうことがあるので、
ビルド時にこの数字を自動で書き換えたいのですが、
VC6、VC2005、VC2008に共通の方法はありますでしょうか?
それぞれの構成で 別々のコンパイラオプション /D "文字列" を定義する。あとはコード内で
#ifdef "文字列"
MSC_VER見たいな定数がそれぞれ決まってたような気がするから
プリプロセスでその値を見て文字列を選ぶ
408 :
デフォルトの名無しさん:2009/05/07(木) 22:56:01
数値にインクリメントは使えないのでしょうか
cout<<2++;
で3になると思いましたがエラー出ました
>>408 C言語の基礎だぞ。
++は変数に対してのみ使える演算子です。
しかも百歩譲ってインクリメントできたとしても
cout<<2++;
では結局2が出力されるだけ。
その上言いたいことは
>エラー出ました
エラーメッセージを100回読め。
マネージ拡張C++する奴はおらんのか。
VB.NETでやるならまだしも、C#みたいな中途半端言語で.NETやってるのか。
C#でやるよりも、C++の標準ライブラリを生かせていいと思わないか。
411 :
デフォルトの名無しさん:2009/05/07(木) 23:50:37
じゃあ、マネージ拡張を勉強するので、本を贈ってください。
マネージ拡張C++はある意味中途半端なんよ。
C#かC++のように極端のほうがいい。
C#でどうしてもスピードが足りないときのみか、C++資産使うときだけ。マネC++
VC2008EEのデバッガを使ってデバッグ中、
値が見れない(デバッグのウィンドウに表示されない)変数があるんですけど、なぜなんでしょう?
その変数はforの{}内で宣言した変数なんですけど関係ありますかね?
停止している場所がforの外なら見れない。中なら見れる。
>>414 forの中なのに見れませんでした。
何か別に原因があるのかなぁ・・・。
再現するソースを見せろ
最適化無効にしてないとか?
多分みるところ間違ってるのとたまたま表示されてないだけだろ(よくあるよねw)
俺はReleaseデバッグの時はよくある
421 :
413:2009/05/09(土) 23:00:59
遅くなりましたがレスありがとうございます。
>>416 全部のせるのは長くなりそうなので・・・。
>>417 最適化は有効のままでした。
>>418 シンボルが見つかりませんってエラーが出ます。
>>419 見たのは自動変数とローカルです。
>>420 Releaseでビルドしたものをデバッグしてました。
Debugでビルドにしたらちゃんと変数が表示されました。
デバッガ使う時はDebugでビルドしないとだめでしたか。
>>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…ってなってしまいます。
どこがおかしいんでしょうか?
あああぁぁorz
ありがとうございます
nulデータを使うとエラーが出てしまうのですが、変数は絶対に初期化しなければなりませんか?.
VBみたいにnull=0又は0文字の文字列という扱いには出来ないものでしょうか
windef.h で NULL = 0 と定義されているが、このことと 「変数は絶対に初期化しなければなりませんか?.」は
直接関係しない。
ありがとうございます!!
どういうわけか、最近のC関連の説明とか本ってオペランドの説明ばっかな。
オペランドを説明することが解説だと思ってるようだ。だから初心者にとっては
わかりにくいんだよ。コンピュータの基本がわかってない奴が本を書くように
なってるんじゃないのかって感じる。
一理あるが、オペラント(あるいはオペレータ)がわからんと、先には進めない。
初心者スレなんだからもう少し心を広く持った方が
>426
0文字の文字列を作るときはnulで初期化であってる
配列のインデックスの最大値を取得するにはどうすればよいでしようか?
ぐぐってもvbばっかり出てきます
sizeof()
435 :
デフォルトの名無しさん:2009/05/10(日) 19:47:38
>>433 配列の名前をpenisとするとだな、
sizeof(penis);で取得できる。
>>435 penisは動的配列なんだな。
sizeof(penis)が一定値にならないぞ。
sizeof(penis) = 0 の場合もある
struct penis { int used; } myson;
sizeof myson;
って括弧なしでかけるんだな
最近知った。
>>437 いや実際には・・・
・・・もう止めようw
どうusedどするのか詳しく
>>434>>435 ありがとうございます、合計バイト数は出せました。
あとはデータ型に応じたバイト数で割ればインデックス最大値が出せるのですが、それも分かりません・・
変数penisのデータ型はどうやって調べるんでしょうか
sizeof(penis) / sizeof(int);
?
>>442 int型は環境によってバイト数が変わると聞いたので・・
LBoundみたいな関数は無いものでしょうか
それとも僕はよほど変なことをしているのでしょうか
>>443 環境によって変わるからsizeof(int)してるんだよ
変わらなかったら4とか決めうちでいいじゃん
>変数penisのデータ型はどうやって調べるんでしょうか
変数penisを宣言しているのは誰だ?
何故、正体不明のデータを扱うのだろう?
sizeofとかあとで変更あったときに直しやすくするだけのことで
その辺理解できない馬鹿だったら自分で固定で数決めとけ
>>444 成る程!!すいませんでした、気づいてませんでした
マンコ
デバックしたら自動的に保存されてしまうようですが、オフにすることってできますか
何が保存されるんだ?
ソースコードだろ?
保存されたファイルを見てコンパイルするから無理じゃね?
VC出身の俺からしたら保存されねぇほうが気持ち悪いけど
他の環境出身者には保存されるのは気持ち悪いもんなのかねw
ソースコードです
切ることは出来ないのですか、残念です
ちなみにVB・VBA・HSP出身(というほどやってませんが)です
スクリプトじゃないんだからコンパイルしなきゃデバッグできんし、保存しなきゃコンパイルもできまい。
土曜から日曜にかけて1日かかって、スタティックコントロールに文字列出すことに
成功した、ハンドル使わない方法でやっとだ。
そこでだ、ものは相談だ。ハンドル使うSendMessage()とか、SetWindowText()
のやりかた教えろや。
しごいて調べろっていうわけにはいんかだろうしなあああ
>変数penisのデータ型はどうやって調べるんでしょうか
ハンドル使わないSendMessage()とか、SetWindowText()があるのか
>>457 それはないでしょう。
ですから、ハンドルの使いかた教えてくれって言ってる意味ととって
くださってもいいです。すみませんです。
>>457 おおかたリソーススクリプトや(親のハンドル使うけど)SetDlgItemTextでも使ったんだろう。
そのとおりです。これだって本格的には、ハンドルを使うわけでしょ。
それがわからんから・・・↓こうなってるわけでして。
SetDlgItemText(IDC_STATIC1,"testest");
TCHAR szText[] = _T("文字列");
SetWindowText( hWnd, szText);
SendMessage( hWnd, WM_SETTEXT, 0, (LPARAM)szText);
あ、忘れていた。つまり、455=458=460です
463 :
455:2009/05/12(火) 00:30:12
>>461 その場合、hWndは、どこで宣言し、どうやって代入してるわけですか?
ああ、そこからスタートか。
HWND hWnd = GetDlgItem( hDlg, IDC_STATIC1);
hDlg はわかるよな。ダイアログプロシージャの第一引数だ。
465 :
455: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
・・・・・もっと下ですか?
466 :
455:2009/05/12(火) 01:16:05
それとも、hDlgは、予約語っつーかシステムからの引数(定数)っていうことですか?
ダイアログ内なら無宣言で、どこでも使える定数。
MFCなら先にそう言えよ。
MFCはウィンドウハンドルを意識しないでいいように作られているから、HWND型はあまり使わない。
468 :
455:2009/05/12(火) 01:22:23
>>467 でも、とにかくハンドルを使わないと、別のプロシージャからは、
別イのダイアログに貼り付けられたコントロールは外部参照できない
わけでしょ。↓のどれを使おうが。
SetWindowText( hWnd, szText);
SendMessage( hWnd, WM_SETTEXT, 0, (LPARAM)szText);
何をやりたいのかを述べよ。
「別イのダイアログ」なんつうのが今ごろでてくると、何をやりたいのかわからん
470 :
455:2009/05/12(火) 01:27:02
>>467 >ウィンドウハンドルを意識しないでいいように
なら、SetDlgItemText(IDC_STATIC1,"testest");
と同じく、同一ダイアログプロシージャ内なら、SetWindowText()やSendMessage()
も、ハンドル引数(hWnd)は省略していいってことですか?
MFCなら CWnd::SendMessage()、CWnd::SetWindowText() を使う。
両者のパラメータにウィンドウハンドルはない。
CWnd* pStatic = GetDlgItem( IDC_STATIC1);
pStatic->SetWindowText( _T("文字列"));
473 :
455:2009/05/12(火) 01:36:24
>>469 つまり、別のフォームで、RoketDlg.cppで、設定したり計算したデータを、終了前に
hddに保存する場合、別なフォームから参照して保存したり、RoketDlg.cppで計算を
始める前に、RoketDlg.cppのプログラム計算を開始する前に、hddに保存したファイルから
データを読んで別なダイアログでリストアップして、一覧の中から選んでRoketDlg.cppの
各コントロールのテキスト(キャプション)に値を設定する。それを読みながら計算
させる、とかです。
474 :
455:2009/05/12(火) 01:54:36
475 :
455:2009/05/12(火) 01:55:57
vb版は、数日中に軍事板でリリースの予定です。
476 :
455:2009/05/12(火) 02:01:50
日本だって、造る気になったら、ICBMなんか、H2やMVを魔改すればすぐ造れるんだ。
って北の将軍様や工作員に見せて、「だから日本を脅かしたってビタ一文出さない。
日本を恐喝したって金にならない。早く被拉致者を返せ。」って教えるためです。
477 :
455:2009/05/12(火) 02:19:42
478 :
455:2009/05/12(火) 02:35:46
>>471 その場合、CWndは、どこで、値が決まってるんですか?
>>471と
>>472の連携がわからないです。
↓これは記法ではないっていうことですか?
CWnd::SetWindowText()
つまり、上の記述の意味は、実際の記法は、
「Cwnd:」は、「CWnd* pStatic」の意味で、
「:SetWindowText(_T("文字列"));」は「pStatic->SetWindowText( _T("文字列"));」 である
という意味ですか?
479 :
455:2009/05/12(火) 02:41:06
↓これはあくまでも、同一ダイアログ内での話ですよね?
(IDC_STATIC1は、別なフォームにもあるかもしれないわけで)
CWnd* pStatic = GetDlgItem( IDC_STATIC1);
DirectXを使わないでディスプレイの垂直同期?にあわせて描画する方法ってありますか?
一度VC2008++で作成したソリューションファイルは、2005では使えませんか?
家にあるのが2005しかないもので困ってます…
>>455 あなたはクラスを使ったことがありますか?
ソリューションファイルはテキストだから
適当なエディタで開いてバージョンあたり
書き換えれば2005でも開ける
484 :
455:2009/05/12(火) 11:05:05
結局、VC++では、あるプロシージャで使われるオブジェクト(スタティックコントロールにせよ
エディトコントロールにせよ)、そのハンドルの値というのは、その、プロシージャに
行った時(そのプロシージャが実行されたとき)しか取得(代入)できないということですか?
(コンパイル時に、実行ファイルが各「ハンドル」を自動的に管理する変数としてバックグランド
で管理、保有するようにはなってない、と。)
だから、他のプロシージャから、他のプロシージャで定義、生成されたコントロールとかを
外部参照したい場合は、前もって、そのプロシージャに行った(実行された)時点で、
プロシージャ間で共有できる変数(パラメーター用の変数に)代入しておいて
、プロシージャ間でパラメータとして渡せ、と。
結局、ダイアログにせよ、メモリにロード(画面に出)されてなきゃ、その中のコントロールは
参照できっこないわけだから。
画面に出てるとか、とにかくその外部参照される他のプロシージャ部がメモリにロードされてる
うちは、ディスティネーション(アドレス、ポインタ)としての「定数」であって「変数」では
ないのだからパラメータになりうるから、プログラマー自身が渡せと。
485 :
455:2009/05/12(火) 11:07:54
>>482 「クラス」の意味もよくわからないわけで。「クラスとは、変数の次元でのツリー構造の一部」
という概念ですね。自分としては。
>484
結局、VC++では?
そんな意味不明なまとめだったら
日記かブログにでも書いとけ
もしかしてウインドウのハンドルのことを言ってるのなら
apiだからVC++は関係ない。
>>455 そのうちわかるからとりあえず汚くても動くように書いてみな
後で俺ってなんてVB厨だったんだと思うだろうけど仕方ないよ。
489 :
455:2009/05/12(火) 11:41:54
>>486 「まとめ」じゃなくハンドルを意識する場合として出発点の概念(心がまえ)としてですよ。
これだから、・・・
490 :
455:2009/05/12(火) 11:43:34
>>488 いや別にVBなんて、北がミサイル撃ったのでここ一月いじっただけで。
うぜー
492 :
455:2009/05/12(火) 11:51:16
Cで、ずいぶんと長いこと今でもやってる女房(独身時代はある大手建設会社のシステムで
「PLワン」とかやってたって言ってます。)女房から、「そういうソフト、どうしても造りたい
っていうならVB6でつくったほうが楽ですよ。私もVC++はよくわからない。」って
言われて造ったんであって・・・
VB6でつくったほうが楽だよって言われたのになんでVCで作ってんの?
C++をやってればわかるのにCやってたってすぐにはわからないよ。
494 :
455:2009/05/12(火) 11:56:13
>>487 OSファンクションだからっていっても、ファンクションコールの仕方、記法は、
言語別でしょ。MASMとVC++のファンクシションコールの仕方は同じですか?
495 :
455:2009/05/12(火) 11:58:52
>>493 スタックが怖くなってきたから。
あと、SLEEP使うと、途中停止できないから。
そのへんはMFCがラップしてるんだって何度言えばいいんだ
498 :
455:2009/05/12(火) 12:07:52
>>
NET使うとVBでもスタック拡大できるわけ?
499 :
455:2009/05/12(火) 12:09:33
VB.NETでスタック拡大できるなんて初耳だな。
できる
501 :
455:2009/05/12(火) 12:10:17
どうやるの?
502 :
455:2009/05/12(火) 12:13:36
ヘルプ、とかネット検索で、スタック、STACKで、何度やっても、
VBについてSTACKでヒットしたことは一度もないな、
503 :
455:2009/05/12(火) 12:16:47
いま、VBのほうでは、↓つかってるけど、これだってVC++なら記法は違うでしょ。
Public Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Public Const TOOLTIPS_CLASS = "tooltips_class32"
スタックってなんだよ
>503
意味的にまったく同じで何も違いがない
EditBinで書きかえるかカスタム定数で
507 :
455:2009/05/12(火) 12:30:17
>>505 中身はそうださ。OSが同じなんだから。
だけどプログラミング(言語としての言葉使い)の実践としては違うでしょ?
っていうことです。
意図する中身が同じだって、言語が違えば話かたは違うのと同じことでね。
例えば、日本で「オリーブ」でも、米語じゃ「あらぶ」なわけで。
中身は同じでも米国人に「オリーブ」って言っても通じない。
日本人に「あらぶ」っていうと「オリーブ」じゃなくアラブ(の国)
って言う意味にとられる。(笑
まずは入門書なり読めよw
509 :
455:2009/05/12(火) 12:35:21
何も違わないという認識があれば言語が変ってもすぐに使いこなせる。
511 :
455:2009/05/12(火) 12:38:38
>>508 VC++の入門書、4冊あるけど、どれにもハンドルの変数の代入の仕方、
を系統的には書いてない。ほとんど説明してない。索引にも載ってない。
じゃあVC++の前に生のWindowsプログラミングを入門しろ
513 :
455:2009/05/12(火) 12:47:26
いや、VBでSTACKが拡大できるなら、何も、無理して、こめんどうなVC++でGUIする
必要はない。計算はC(.DLL)でやって、VBに渡せばいいだけで。若干は、DLLから
直接的にVBのLABELのキャプションに書きこむくらいはしなきゃならないだろうけど。
画面いじるのは、VBのほうがぜんぜん楽でしょ。その場合は開発時間はずいぶん短く
なるよ。
ランタイムシステムがどうのこうのって嫌がらなければ・・・、だけど。
どんな画面かしらんがダイアログベースならVBもVCも
たいして変わらんけどな
515 :
455:2009/05/12(火) 12:54:13
そういうことか。WINDOWS3.1時代あたりのMS-VCの本を読んでないと、
ハンドルの理解は難しいってこと?
VS4.0の本はマニュアルまで女房は、廃棄しちまったらしい。
517 :
455:2009/05/12(火) 13:04:05
>>516 どこにハンドルの型宣言、値の代入の仕方(オペランド)、その値の効力の
範囲が説明してあるの?
文法(記法)だけなら「解説書」は不要だよ。MSDNでいいわけだから。
そんなのヘッダーファイル見ればわかるだろ
519 :
455:2009/05/12(火) 13:07:30
たしかに、VC++の本にはハンドルの説明は系統的にはまったく書いてない。
ハンドルの文法は、ウィンドウができたことによるものだから、その基本は
当時の本を読まないと、ダメかもしれん。
女房も当時はUNIXをやってたから、だからVC++は弱いんだわ。
ハンドルの型宣言にこだわる理由がわからん。
MFCはウィンドウハンドルを意識しないと上のほうに書いてあったのに。
521 :
455:2009/05/12(火) 13:11:38
あいつは、学校ではFORTRANで、会社のシステム部になってからは、
PLIだったし、それ以後はUNIXで育ってるからな。
まあUNIXは少ない知識でまわせるからな
523 :
455:2009/05/12(火) 13:15:58
>>520 >ハンドルの型宣言にこだわる理由がわからん。
>MFCはウィンドウハンドルを意識しないと上のほうに書いてあったのに。
何度も言ってるが、値の代入の仕方とか、パラメーターとしての扱いかた
がわかりにくいていうのよ。
「型宣言」といったのは「今の解説書は系統的(網羅的)には説明してない。」
という面で言ってる。
だから何がわからないのかわからないの
525 :
455:2009/05/12(火) 13:20:03
>>520 だって、プログラムは、一字間違っても、コンパイルできないわけでね。
初心者の場合は、文法上の必要な各要素について説明が網羅的な説明でない
場合、省略した要素があれば、省略されたとこは理解できない。
理解できない要素はネックとなって、それ以後は先に進まない。
偉そうに理解できないと言われてもねw
527 :
455:2009/05/12(火) 13:23:30
MFCなら値を代入しなくてもいいし、パラメータにウィンドウハンドルは存在しない。
すべては「オブジェクト」単位で管理する。
Aというダイアログのオブジェクトを DlgA、BというダイアログのオブジェクトをDlgBとすれば、
ダイアログBにある IDC_STATIC1 は、DlgB.GetDlgItem( IDC_STATIC1) でアクセスできる。
テキストを変更したいなら、DlgB.GetDlgItem( IDC_STATIC1)->SetWindowText( _T("テキスト")); だ。
DlgAのメンバ変数としてDlgBのポインタを保持しておけば、DlgAからDlgBにはすぐにアクセスできる。
上記の文中にでてくる用語の意味が不明なら、ここで質問する前にC++について勉強しろ。
C/C++の入門書でファイルハンドルの使い方でも勉強すれば
一般的なハンドルの概念が理解できると思う。
こんなウザいのをよく根気強く相手するなぁ
もう女房はいいからwww
533 :
455:2009/05/12(火) 13:37:46
>>528 だって、
>>471は、MFCなんだろ?
()の中であろうが外であろうが、CWnd::って、c++として記法だろうが、
とにくハンドルみたいなもんじゃないの?
ハンドルとは呼ばないかもしれんが。
1,で、とにかく、Cwndの実数はどこでどうやって取得するのか?
2,またそのCWndの使いかた(値が代入された後のCWnd)は、どう使用
すればいいのか。
つまり
>>471のような記述の仕方なのかどうか?
単に「Cwnd::*****」(
>>471)でいいのか?
ってことだよ。
>>472では「CWnd::*****」ではないわけだから。
ま、そりゃc++の記法だろうけどさ。
>>472はc++でなかったら、どう記述する?
PL/Iだろ
あれ?やっぱりクラスすらわかってないんじゃね?
536 :
455:2009/05/12(火) 13:41:07
>>534 文字として書けばそうらしいな。俺は夫婦の会話用語で言ってただけ。
537 :
455:2009/05/12(火) 13:49:42
>>535 CWndが「クラス」っていうことはわかったよ。だけど
何にせよ、ディスティネーション(例。コントロールの固有アドレスを示すもの。)値
がなきゃ、他のプロシージャからは、目的のコントロールに、exeファイルは到達できない
わけでしょ。
だから、そのハンドル(つまりはオフセット・アドレスポインタ)の値の取得(代入)
の仕方と、使い方を教えろって言ってるんだよ。
だからここで質問する前にC++を勉強しろって言ってるんだよ。
だめだ。いくらなんでもここでC++教えるのは無理だw
540 :
455:2009/05/12(火) 13:58:00
vc++では、IDはワークスペース(プロジェクト)としてはは固有ではないから、
(別なダイアログのコントロールが、同じ”IDC_STATIC1"というID名を持つことはありうるから)
↓これは、やはりスタティックコントロールを持ってる外部プロシージャ(ダイアログ2)から
↓ダイアログ1のIDC_STATIC1を参照したい場合は意味のない記述でしょ。
CWnd* pStatic = GetDlgItem( IDC_STATIC1);
>>472
中途半端な知識で抽象的で意味不明な用語ならべて質問するから
本題からどんどん遠ざかってるような気がする。
そのGetDlgItemはAPIじゃなくてCWndのメソッドのほうのGetDlgItem
543 :
455:2009/05/12(火) 14:04:27
なんだって?
ますますわかんなくなってきた。
ここ無駄な時間をすごさずVB.NETに行ったほうがいいのでは?
開発環境
やりたいこと
これだけ書いて質問すればすぐにまともな回答もらえたかもな
546 :
455:2009/05/12(火) 14:15:10
>MFCは・・・パラメータにウィンドウハンドルは存在しない。
>>528 ()の中でのハンドルの指定はない、ていうことは、うすうすは、わかったような
気がする。うすうすだけど。
では、外部プロシージャから(例えば、ダイアログ2に貼ってあるBUTTONが押されたとき、
ダイアログ1のスタティックコントロールを参照したい場合。
ダイアログ2にもスタティックコントロールは貼ってあって、両方が同じID名の場合。
547 :
455:2009/05/12(火) 14:17:25
その答を書くにはC++のクラスの基本から書かなくちゃいけない。だから答えない。
「C++を勉強しろ」というのが回答。
549 :
455:2009/05/12(火) 14:22:32
ハンドルはC++関係ないでしょ
外部プロシージャ
ダイアログ1
ダイアログ2
唐突にこんなものが出てきたって誰も関係が理解できない
外人
かばん1
かばん2
これで関係理解できるか?
551 :
455:2009/05/12(火) 14:25:52
↓俺には「外部参照の仕方はわかりません。単一ダイアログの遊びのソフトしか造ったことありませんが、
↓一流プログラマーのように威張りたいです。」ってしか聞こえない。
548 :デフォルトの名無しさん:2009/05/12(火) 14:20:06
その答を書くにはC++のクラスの基本から書かなくちゃいけない。だから答えない。
「C++を勉強しろ」というのが回答。
じゃ、何を言ってもムダだな
553 :
455:2009/05/12(火) 14:36:17
「ダイアログ」でなく「ダイアログボックス」って書けってか?
「プロシージャ」という言葉は許すけど、「外部」がつくとわからん、っていうのは
「++」以前、「C」言語の基本がわかってないというか、それ以前、プログラムの基本
がわかってないとしか言いようがないけどな。
「スタックって何?」とかって聞いてる人が先生ぶってるのと同じでさ。
>hDlg はわかるよな。ダイアログプロシージャの第一引数だ。
>>464 >504 :デフォルトの名無しさん:2009/05/12(火) 12:16:49
>スタックってなんだよ
554 :
455:2009/05/12(火) 14:38:00
「スタック」「外部参照」の言葉の意味が理解できないのが「C(++)の先生」やってるわけ?
GetDlgItem( IDC_STATIC1) は this->GetDlgItem( IDC_STATIC1) と同じ
VBでもなんでも、てっとり早くスタックサイズ大きくしたいなら
editbin で /STACKオプションつければいい
557 :
455:2009/05/12(火) 14:44:46
>>546 ダイアログ1にスタティックコントロールを公開するメソッドを作る
ダイアログ2からはダイアログ1->そのメソッド()
という形でアクセスする
559 :
455:2009/05/12(火) 14:46:52
↓これは間違いだと思うよ。最近のVB2005とか2008わどうかわからないけどさ。
>VBでもなんでも、てっとり早くスタックサイズ大きくしたいなら
>editbin で /STACKオプションつければいい
560 :
455:2009/05/12(火) 14:48:58
VCは、当初からコンパイル時のオプションとして当初からあったけどね。
dumpbin /headersしてみりゃわかる
間違いってやってみたのか?
editbin は使ったことあるのか?
↓これを間違いだと言われても困るわな
564 :
563:2009/05/12(火) 15:02:38
AからBにアクセスしたい場合に外部じゃ全然説明になってないだろ
AとBが全然関係ないんじゃアクセスしようがない。
566 :
455:2009/05/12(火) 15:03:31
++とハンドルの定義やハンドルの動作は関係ないでしょ。
++は記法だけの問題であって。
VBは、やっぱSTACK拡大できないと思うよ。2008でも、STACKをヘルプのキーワードに入れても
ヒットしない、あるなら、こんな基本的で重要なこと抜くわけないもの。
試しにヘルプでやっても、スタックフレームっていうことは出てくるが、メモリ朗域の拡大ではない¥
スタック怖かったから、2008に期待をかけてダウンロードして調べてみたが、
↓のVB2008のヘルプで、"STACK"でヒットしたのは「実行中」の「検査」の話でね。
↓そもそも実行中にスタックメモリ領域(コード領域も意味する)の大きさ変えれるわけないんだから(笑
スタック フレームの検査のサンプル
このサンプルでは、任意のポイントでの呼び出し履歴の情報を、実行中のプログラムのコード内から取得する方法を説明します。呼び出し履歴を使用すると、現在のプロシージャに至るまでにアプリケーションが実行したプロシージャの順番を確認できます。
567 :
455:2009/05/12(火) 15:07:45
>>563 Cは「当初
>>560」からあったけど、マイクロソフトのVBはないって言ってるんだよ。
そのMSDNに書いてあるのは、CとかMASMの話だよ。
だから外部という認識だからアクセスできない
馬鹿だよな
こいつ人の言ったこと何も聞いてないのな。
スタックサイズはリンク時に決定される。
コンパイルは関係ない。
リンク後でもEXEのヘッダー書きかえればサイズは変更できる。
そのためのツールがeditbin
あれあれあれだよ
あれってどれだよ
572 :
455:2009/05/12(火) 15:13:14
↓「スタック」も理解できないおまえらは他人にいつも何を言ってるの?
569 :デフォルトの名無しさん:2009/05/12(火) 15:09:55
こいつ人の言ったこと何も聞いてないのな。
568 :デフォルトの名無しさん:2009/05/12(火) 15:09:06
だから外部という認識だからアクセスできない
馬鹿だよな
>571
これじゃないのがあれだろ
日本語も知らないのか?
575 :
455:2009/05/12(火) 15:16:11
↓とにかく、VBではできない
570 :デフォルトの名無しさん:2009/05/12(火) 15:11:58
スタックサイズはリンク時に決定される。
コンパイルは関係ない。
リンク後でもEXEのヘッダー書きかえればサイズは変更できる。
そのためのツールがeditbin
で、結局この人はなにをやりたいの?
577 :
455:2009/05/12(火) 15:23:20
↓
>>568と
>>569は、異なるダイアログボックス間で、別のダイログボックスにある、同じ名前のIDC_STATIC1を
↓参照できるって言ってるのと同じこと。C++とかなんとかの問題でなくプログラムの基本がわかってないと
↓思うけどね。
GetDlgItem( IDC_STATIC1)
578 :
455:2009/05/12(火) 15:24:53
俺は、同じこと何度も答えてるよ。
>>455の最初の質問を読んでみた。
一番の近道はMFCを使わないで
CでWindowsプログラミングをすることだと思った。
多少記述は多くなるけど問題ないと思う。
580 :
455:2009/05/12(火) 15:31:22
↓これはあくまでも、実行中のダイアログプロシージャ内で通用する話であって、
↓別のダイアログプロシージャ(外部プロシージャ、つまり別のダイアログボックス)
↓のコントロ−ルを参照してることではないだろ。この言ってる意味がわからないかねえええ
GetDlgItem( IDC_STATIC1)
別のダイログだったらコントロールのIDが同じだって識別可能
使いまわすときにいちいち変えてたら面倒くさくてしょうがない。
別のダイアログだろうがやることが同じなら
同じコードで実現できる。
というか同じでやった方がいい。
>>580 リソースファイルをテキストエディタで開いてみな
584 :
455:2009/05/12(火) 15:42:27
いくつも同じ名前(ID)のコントロールがある場合、実行ファイルはどうやって特定認識するの。
(通常はデフォルトの動作。つまり、カンレント(実行中)のプロシージャで動作するわけでしょ。)
(じゃ別のダイログプロシージャ(別のダイアログボックス)につくられるコントロ−ルには、
どうやって参照するの?って聞いてるのよ。この質問がわからないのかねえええ)
↓はあくまでも実行中のダイアログプロシージャ(ダイアログボックス)が自分に貼られてる
↓コントロールのアドレスに関する値を渡すという関数でしょ。
GetDlgItem( IDC_STATIC1)
586 :
455:2009/05/12(火) 15:45:27
>>584 あー
もう
考え方がCすぎるんだよ
ダイアログにはクラスがひもづくでしょ
ダイアログを表示するには
そのクラスのインスタンスを作って表示するでしょ
ってことはそのインスタンス内のIDC_STATIC1は一つでしょ
だからダイアログのインスタンス->GetDlgItem()になるの!
588 :
455:2009/05/12(火) 15:54:52
528?
そうか。なんだ。すまん。
>>528 んじゃ、DlgBの値は、どこで、どうやって取得するわけ?
実際の記述は、取得したときにDlgBという変数を使ったら、
そのまま
DlgB.GetDlgItem(IDC_STATIC1)→でいいわけ?
ダイアログB(DlgB)の実体を生成したときに、ダイアログA(DlgA)のメンバ変数(自分で定義)に値をぶちこむ。
やっぱりクラスという用語だけしってて中身を知らない感が
ひしひしと伝わってくる。
Cだけ知ってれば他の言語は全部わかったも同然っていう
感じがする。
591 :
455:2009/05/12(火) 16:04:53
>>589 だから、その手法は、
>>484で聞いてたんだよな。俺。
DlgB.を先走って「ハンドル」って言ったのは間違いだったかもしれんが。
でもハンドルみたいなもんだろ。とにかく「固有」(結局はアドレスだから)の数値なんだから。
ハンドルで表わされる物がオブジェクト指向でのオブジェクトとなるのは
別に難しい概念じゃないと思うのだが
それに何で関数のヘルプ読まないの?
芋蔓式にそれに必要な物とやり方がわかると思うんだけど
TBSの記者みたいなやつだな
594 :
455:2009/05/12(火) 16:14:17
>>592 ヘルプに書いてある?
「コントロールのアドレス(又はポインタ)はダイアログが実行中しか取得できません。」
とかって、どっか書いある?
595 :
455:2009/05/12(火) 16:16:41
訂正
・・・ダイアログが実行中しか取得できません。」
・・・その親ダイアログが実行中(フォーカス中)しか取得できません。」
おまえはゆとりかw
597 :
594:2009/05/12(火) 16:21:45
>>592 >>594は取り消し
根本的に質問が間違った。質問の本意は、
「ヘルプには、他のダイアログ(外部プロシージャ)にあるコントロールを
直接参照はできません。」とかって書いてある?
だった。
」
>>597 だからね。そこはC++を勉強してたらそういう疑問は出ないの。
それが当たり前なの。
他のインスタンスの変数を直接参照できないように設計するのは
オブジェクト指向の初歩の初歩なの。
599 :
594:2009/05/12(火) 16:30:08
>ダイアログB(DlgB)の実体を生成したときに、ダイアログA(DlgA)のメンバ変数(自分で定義)に値をぶちこむ。
とにかく、だから、俺は、そのことを
>>484で問い正していたんだよ。
そうしたら日記に書けとかなんとかって・・・・
ウィンドウハンドルだろうがオブジェクトのインスタンスだろうが、プログラムを実行中にしか取得できないわけだが、
ひょっとしてコード内に固定値でアドレスを書こうとしているのか?
「実行中」の用語が間違ったな。
「生成中」、または「フーカスになったとき」だな。
vbだと共有変数にいちいち保存しなくても、プロシージャ(ダイアログやコントロール)の
名前だけで、その「擬似ハンドル」みたいなものは自動的に値は持ってるからね。
例えば、
Form2.Label1
って書けば別に、Form2のほうで共有変数(Public)に代入なんかしてなくてもいいわけで。
別に共有変数でなくてもいいんだろ?
当然にパラメータで渡せばいいんだろ?
455専用スレかよw
他の人が質問できない雰囲気になるぞ
すまん
なんだ結局質問の内容は
VBのForm2.Label1をどうやったらいい?
たったこれだけか
455専用スレ立てようぜ
MFCだったらいちいちGetDlgItemしないで
Form2.Label1みたいにメンバ変数にするのもありだな
アクセス頻度が高ければ当然そうする。常識だろ。
VisualC++でPro*Cの統合開発環境を整えたいのですが
Oracleにのっているやり方が2002、2003等でのマニュアルなので開発環境の構築に手間取っています
誰かやりかたのわかるかたいますでしょうか?
ぐぐっても出ないので質問しました
>>611 わかるけど全部教ええる気にはならん
どこまでできてるんだ?
613 :
611:2009/05/12(火) 22:54:20
とりあえずは
実行ファイルのパス追加
インクルードの追加はしました
その後の.pcを追加した時に出るなんたら規則の設定からマニュアルと違う風になっており止まっています
>>613 すまん。.pcファイルはいつもコマンドプロンプトで
proc hoge.pc
とかやって.cにプリコンパイルしてからVCでコンパイルしてたw
つーわけで、他の人にまかす。
615 :
611:2009/05/12(火) 23:02:40
>>614 わざわざありがとうございます
できないっていうことはないので何とか努力してみます
スタック領域を増やさないといけないロジックってどんなの?
俺はしがない業務系プログラマなのでそんなロジック組んだこと無い。
>617
たぶんVBの環境の話だから続きはVBスレでやってくれ
すたっっくぅ〜〜!
実際に体験してやったことがある人が「こうすればできる。」って言うことと、
、やったことのないものが「こうすればできるはざずだ。」って権威を傘に
他人に受け売りで言うことを、同じレベルで考える人が多いけどさ、それが、
「未熟」っていうことなんだ。
>>616 本人は最初から言ってるわけだから、どの程度のレベルか。
↓「引き出した」んじゃなく「忘れてた」んだろ。スレタイと同時に。
>土曜から日曜にかけて1日かかって、スタティックコントロールに文字列出すことに
>成功した、ハンドル使わない方法でやっとだ。
455 :デフォルトの名無しさん:2009/05/12(火) 00:07:15
土曜から日曜にかけて1日かかって、スタティックコントロールに文字列出すことに
成功した、ハンドル使わない方法でやっとだ。
そこでだ、ものは相談だ。ハンドル使うSendMessage()とか、SetWindowText()
のやりかた教えろや。
>>616 おまえの考えなら
★Visual C++を教えるスレ★ Part01
って別のスレを建てるか、又は、次からスレタイを
★初心者にVisual C++を教えるスレ★ Part33
↓
★Visual C++を教えるスレ★ Part34
にするか、どっちかだわな。
なんか必死になってるぞw
単なる初心者相手ならいいが、自己防衛の言い訳だけが多い奴の相手は時間の無駄だな。
そもそも尿簿の話が出てくるからわからなくなる
組んでるのは誰なんだと
尿簿の経歴はどうでもよくて組んでるやつの経歴を
言えっつーのw
にょうぼ、て何?
女房の新しい言い方
627 :
625:2009/05/14(木) 14:32:28
嫁かぁ サンク^2
628 :
デフォルトの名無しさん:2009/05/14(木) 23:36:07
女なんてマンコがくせえビッチだろ。
童貞乙
>>628 お前のつきあった女はみんなマンコがくせえビッチだったのか。
かわいそうすぎるww
MFCでの作成していますが、
既存のチェックボックス、ボタン、ラジオボタンを自分の作成したイメージ(画像)に変更したいと思います。
チェックボックスやボタンのイメージを自作して、表示させる方法を教えていただけないでしょうか?
「オーナードロー」でググってみ
633 :
631:2009/05/17(日) 19:47:12
>>632 ありがとうございます。調べてみます。
ボタンに関してはCBitmapButtonが使えそうですよね。
634 :
デフォルトの名無しさん:2009/05/19(火) 15:43:36
DOS窓に出力したいんですが、どうすればいいのですか?
AllocConsole()
ボタンの文字に色を付けるってのが鬼畜級の難易度だコレ
オーナードローの初歩だ
最後の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 );
}
printf("上底:%f、下底:%f、高さ:%fの台形の面積は、%fです。\n", a, b, c, d );
>>639 ありがとうございます。
すごく簡単な事だったんですね・・・半日掛かりきりだったのにorz
641 :
デフォルトの名無しさん:2009/05/20(水) 00:43:48
お願いします。
VC++2008を使っています。
今、エディタの背景色やフォント色を変更しているのですが
ソリューションエクスプローラの背景色やフォント色を変更する場所が見つかりません。
どこから設定するのでしょうか?
VSC++使ってるんですけど、デバッグの時に出力メッセージが出なくなりました
成功、失敗、エラーなど一行も表示されません
ソースをコピーして新しいファイルに貼り付けたら表示されるようになりましたが・・どこを触ってしまったんでしょうか?
>成功、失敗、エラー
はビルド時のメッセージ。
ソースに変更がない限り自動的にビルドされないから必ず出る必要はない。
文字列と数字の混じってる要素{1,2,3,4,5}があり、
配列[2]の時は1,2
配列[5]の時は1,2,3,4,5
と入りきらない分は単純に切り捨てたいときはどんな風に記述するのがいいでしょうか?
>文字列と数字の混じってる要素{1,2,3,4,5}があり、
俺には全部数値に見えるが。
>>644 すごい意味不明に見える。
コンパイル時に決定するものとしないものの違いとか分かってます?
VC++でstring変数を使って,文字列処理を山のようにしたら。
読込みー>+計算ー>””化 読込みー>+計算ー>””化 読込みー>+計算ー>””化
システムメモリーは、細かい断片化になってしまうのでしょうか?
648 :
デフォルトの名無しさん:2009/05/21(木) 20:56:12
VC++2008ExpressEdition(CLR、Windowsフォームアプリケーション)で
ネット上にあるhtmlファイルを取得して保存とか文字列操作して表示とか
したいのですが、どういうクラスや関数を使ったらいいですか?
イメージ的には2ch専ブラみたいに特定のウェブページを取得して
テキストボックスとかに表示したいです。
WinInetとか
650 :
648:2009/05/21(木) 21:35:23
>>649 レスありがとうございます。
wininetについて今ネットで調べてみたのですがこれってwin32APIですよね。
win32APIはプログラミングが面倒だという印象を持っているんですが
C++でもwebページの取得はwininetが常套手段なのでしょうか?
VisualC++で使える便利なクラスみたいのはないのでしょうか?
わがまま言ってスイマセン。
>>650 便利なMFCのクラスはあるけど、ExpressEditionじゃ使えない。
それに、Windowsプログラミングの基本はやはりWin32APIだから、それが面倒というなら
VBなりC#なり、C++以外でプログラミングすればよろし。
>>648 boost::asioとかでいいんじゃないの?
特定のウェブページを取得してテキストボックスとかに表示だったら
特に難しい処理はないだろ
やっつけで用が足りる
>>648 WebClientとかSystem.Net名前空間の中あされ。
CLRアプリならC#スレでそれとなく聞くのがお勧め。
655 :
648:2009/05/22(金) 00:55:27
>>650-654 皆さんありがとうございました。
WebClientよさそうですね。あとWebRequestもいけるかな・・・
とりあえずこの辺りから勉強してみる事にします。
とは言っても正直VCもC++も全く解らなくてまず何から
手をつけていいのか混乱している状態です。
Microsoft Visual C++ 2008 Express Edition
をインストールしたのですが、
コマンドラインからコンパイルできません。
clと入力しても
'cl' は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。
と言われてしまいます。
どうすればコマンドラインからコンパイル出来るようになるでしょうか?
ありがとうございます。
普通のコマンドプロンプトからは出来ないのでしょうか?
g++と同じ感覚で使えると便利だと思っているのですが。
パス通せばできるだろ
VCVARS32 入ってないのか
VCVARS32というバッチファイルでコンパイルするんですか?
少しは自分で調べたらどうだ? VCVARS32 でググりゃいくらでもでてくるだろ。
もちろん調べたんですが分かりませんでした。
確かにいくらでも出てきましたが
実行しても何もおこりません。
VCVARS32を実行したら、そのコマンドプロンプトではそれ以降clが使えるようになるよ・・・
・・・もしかしてOSを再起動してないからclが使えないのでしょうか。
今度OSを再起動できるようになったら試してみます。
ありがとうございます。
>>665見て俺も実行してみた
が、アクセサリのほうのcmdからはclは使えなんだ
>>667 「そのコマンドプロンプトで」って
>>665 に書いてあるだろ?
アクセサリのコマンドプロンプトで VCVARS32 を実行しなきゃ、アクセサリのコマンドプロンプトでは使えんよ。
初めてやったが問題なく使えた、edlin があるのに驚いた
671 :
667:2009/05/23(土) 22:23:52
あ、出来た
672 :
666:2009/05/23(土) 23:23:52
できました!
ありがとうございました。
システムの環境変数に登録しとけば?
てか、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
としています。
ほかに何か不備があるのでしょうか?
よろしくお願いします。
なぜそのwikiで質問しない?
ここはそのサイトと関係ないだろ
677 :
デフォルトの名無しさん:2009/05/24(日) 12:53:20
>>675 すみませんでした。。
そちらのお世話になってきます。
VisualStudio2005でMFCアプリをつくろうとしています。
それでコマンドライン引き数をプログラムに渡したいのですが、
スケルトンのままでビルドしてコマンドラインから、
ttt>hogehoge.exe test1(ret)
と実行すると、test1というファイルをさがしに行ってしまい、
ファイルが見つからないというメッセージを出して終了してしまいます。
普通にコマンドラインを渡すにはどこをいじればいいのでしょうか?
その文章だと本人の思い込みの可能性が強く感じられるから
アドバイスは遠慮する。
___arg
アンダーバーのついたargとかいうもんがあった希ガス
ヘルプのdocument explorerの文字を大きくするにはどうすればいいのですか?
初心者過ぎる質問ですがよろしくお願いします。
「ヘルプに関するヘルプ (Microsoft Document Explorer ヘルプ)」を読め。
683の言われたとおりにヘルプからで探したところ、
インターネットオプションで「WEBページのフォントサイズを使用しない」を選択すればよいことがわかりました。
ありがとうございます。
>>684 オンラインのページだと、文字のサイズを変えても、ページ内の文字の大きさが変わりませんでした。
>>679 CCommandLineInfoでぐぐったら何とかなりました。Thxです。
>>681 それ以前にまったくアプリが立ち上がらなかったので。
アプリか
自分もいつか作ってみたいもんだね
>>686 ドキュメント/ビュー アーキテクチャを無理に使う必要はないんだぞ。:-)
>>688 ドキュメントビューアーキテクチャって何を作って欲しいのか不明だよね
>何を作って欲しいのか不明
それは君の経験不足だと思うが。
最近VisualC++を使い始めたのですが、ソフトの特性を理解できていなくて困っているので一つ質問させてください。
main関数を含む単独のcppプログラムを2つ並行して使っているのですが、
それぞれ1つずつのVC++ウィンドウを開いて、それぞれにソリューションを表示してコンパイル(ビルド?デバッグ?)しています。
この2つを1つのウィンドウで開き、タブを切り替えてそれぞれ個別にコンパイルできるような構成にはできないでしょうか?
1つのソリューションに2つのプロジェクトを作って1つずつソースファイルを入れてCtrl+F5を押しても片方のソースだけが実行されてしまって悩んでいます。
Microsoft Visual C++ 2008 再頒布可能パッケージ (x86)をインストールしたいんだけど、インストーラーでドライブ直下に展開されちゃう。
どなたか保存場所の指定の仕方わかります?
>>691 後者の状況で、ソリューションエクスプローラ上のプロジェクトのアイコンを右クリック、
メニューの中の「スタートアッププロジェクトに設定」を選ぶと、
Ctrl+F5などを押したときに起動するのがそっちになる。
あと、ソリューションのプロパティで両方同時になどといった設定もできる。
頻繁に切り替えることを考えた作りに見えないし、
望みどおりになるのは難しいと思う。
本質的に別のなら、最初みたいに別々のソリューションにするほうがいいと思う。
クラスを使ってゲーム作成などをし始めたのですが、作ってるうちにこんがらがってしまいます
配列はとても扱いやすくいので何もかも配列で処理させれば問題なく出来るんですが、
こういう場合はどうすればいいんでしょうか
無理してクラスは使わなくていいんでしょうか?それとも僕はC++に向いてないんでしょうか?
>>694 その配列に処理するための関数がくっついていれば便利だと思うことはないかね?
697 :
694:2009/05/25(月) 23:03:34
ありがとうございます!
>>695 説明では何度も読んでいるんですが、どうしても使いこなせないんですよね。多分理解できてないんでしょう・・
計算はmain関数、データは配列に格納って固定概念がいつまでも離れないんです
>>696 ありがとうございます。とりあえずあまり考えずに何か色々作ってみます。
その内なにかひらめくかもしれませんね
プログラミングのノウハウ、作り方や設計等、デザインパターンもそう。
本だけの知識で修得できるものじゃない、体で覚える方が大切。
判るなぁ、その気持ち
大きいのと小さいのは判るんだけど、それを使って何かやろうとすると
ウゼーと思ってオブジェクト化崩しちゃう
最後まで設計するのが面倒でコーディングに走っちゃうのが
駄目なんだろうな
この人はグローバル変数やめるところから始めるべきだ
質問です。
開発環境はVisual C++2005です。
静止画を連続表示してGIFアニメのように見せるソフトを考えています。
今、連続画像AとBがあって、同時に再生スタートして、
ずれないように毎画像(毎フレーム)ごとにお互いの同期を取りながら再生させるには、
どのようにすればよいでしょうか?
よろしくお願いします。
>>701 すれ違いではあるまいか。
答えは、同期なんかとらなくても、同じスレッドで表示すればいいだけだろ。
┌┐ / //
[二 ] __ 〔/ /
| |/,ー-、ヽ /
/ / _,,| | ./
レ1 | / o └、 ∠/ ∧_∧
.|__| ヽ_/^ ,/ ( ´∀`) ))
__ / /つ( ̄`ヽO_ノ⌒ヽ
[二二_ ] / ノ ) \ ))
// {.. (__丿\ヽ :: ノ:::: )
/ ∠__  ̄フ.. 丿 ,:' ))
∠___ / / (( (___,,.;:-−''"´``'‐'
_ / / \
/ o ヽ/ / /
ヽ__ / \
VC++2008 MFCダイアログベースでアプリを作成しているのですが
ダイアログにファイルをドロップした時に、
ダイアログ上に設置されたリストコントロール上にドロップされたのと、
それ以外のダイアログ上の場所にドロップされたのとで別の処理をしたいのですが、
どう判別したらいいのかわかりません。
教えてください。
よろしくお願いします。
ダイアログにファイルをドロップした時→ダイアログにWM_DROPFILESがポストされる。
リストコントロールにファイルをドロップした時→リストコントロールにWM_DROPFILESがポストされる。
むろん、ダイアログもリストコントロールも Accept Files を True にしておく。
[別解]
ダイアログだけ Accept Files を True にしておき、ドロップされた時のマウス位置で判別する。
最近プログラムの流れをノートに書いてるんですが、
こういう流れの図ってなんていうんでしたっけ?
フローチャート
\
 ̄ヽ、 _ノ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
`'ー '´ ,. -- 、
○ ,' , '⌒,ノ
O .__ i/ ´
o ,,.. '"´ ̄ (__)r'ヽ と
。 / ` ´`ヽ 思
,' ,、 ─- ', う
! 、 ,.i- i ハi,;-ァ!、 i i 神
i i i !,-;!、 ':,_rハiノ| .| .綺
レV!. i.ハ_r! 、 "" i |. | で
i.八" _ ノ |. | あ
l.|ゝ.>,,、__,,.. イノ レハ | っ
レ| l | ,.イ-ーニノト.ー 、i | た
.| l ,.ヘ、ニ_ノノ `ヽ!
| / //不\ヽ `ヽ
>706
回答ありがとうございます。
>ダイアログにファイルをドロップした時→ダイアログにWM_DROPFILESがポストされる。
こちらはOKですが、
>リストコントロールにファイルをドロップした時→リストコントロールにWM_DROPFILESがポストされる。
こちらの場合の処理手順がわからないのでマウス位置判別の方法で試してみます。
どうもありがとうございました。
>こちらの場合の処理手順がわからない
CListCtrl の派生クラスを作成して当該リストコントロールに結びつけ、
その派生クラスでWM_DROPFILESメッセージを処理する。
712 :
710:2009/05/26(火) 23:13:35
>711
試行錯誤しながら試したらうまくいきました。
ありがとうございました。
デバッグ中にステップインでプログラムを進めているのですが、いつの間にか終わってしまいます
「何かキーを入力してください」の画面も出ません
ウォッチ式のところも文字がグレーになってしまいます
ループのところでハマっているかとも思いましたが、そういうわけでもありませんでした
これはどういう状態なのでしょうか?
出力ウィンドウには何か出てない?
リリースビルドだったら許さん
アクセスバイオレーションで続行して飛んでるとか
オブジェクト残ってて実は終わってないとか
猫でもわかるプログラミングさんのサイトを使っていたんですが、
WindowsSDKのプログラムを打ちこんだのですがVisual C++ 2008 EEではビルド出来なくて困っています
Visual C++ 2008 EEのアプリケーション開発入門用のサイトで
お勧めなのはありませんか?
ビルドできないってどんな理由で?
ユニコード文字セットのせいじゃないの?
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 スタイル キャストまたは関数スタイルのキャストが必要です。
この他に二つエラーが出ましたが、
そちらは型変更のキャストを入れています
720 :
717:2009/05/28(木) 18:38:56
721 :
デフォルトの名無しさん:2009/05/28(木) 18:42:55
>>719 まさに
>>718 マルチバイトとUNICODEが混在してる。
プロジェクトのプロパティと使用してる文字セットを見直して。
>>721 助かりました
Unicodeからマルチバイトに変更したら問題なく通りました
半日悩んでたので、ようやくすっきり出来ましたw
723 :
デフォルトの名無しさん:2009/05/29(金) 02:03:34
mfcの求人がないお(;ω;)
mFCこそしきょくの現代プログラミングだとおもうんだお(^ω^)
>>723 あー、わかる
ホント仕事ないよなぁ・・・
っていうか別にこれに限らずプログラム組む仕事ならちょっとなれれば
なんでもできるからどこへでもまわしてくれって思うけどね
MFCの求人がないお
というレスに対してのレスとしてそれは正しいのか?
仕事がないおじゃなくてMFCの求人がないおだぞ
的外れにもほどがあるお
Webじゃ作れない業務に強くなるしか無いんじゃない?
ムスレの話題じゃないなw
727 :
デフォルトの名無しさん:2009/05/29(金) 16:36:55
ここで質問すべきなのか分かりませんが。
8FFFFFFFU と 1U では
_BitScanForwardした結果を返すスピードは
変わらないのでしょうか?
上位のほうにあろうと下位のほうにあろうと関係ないのでしょうか。
自分で試しても違いがわからなかったら変わらないと言える。
730 :
デフォルトの名無しさん:2009/05/29(金) 19:51:56
今、学校の課題をやっているところなのですが、
「関数 'erfc' は定義されていません。」と出てしまいました。
erfc()はmath.hのエラー関数の関数で、
ぐぐったところ、標準ライブラリ(拡張)と出てきました。
どうすればいいでしょうか。お願いします。
なんだ、まだ解決してないのか
先生に聞いてみな
>>725 ないのはしょうがねぇじゃんw
でもそれ以外不可ってのが俺的にネックだなぁ・・・
って感じでレス書いてる内に俺の都合レスになったw
733 :
デフォルトの名無しさん:2009/05/29(金) 20:58:57
>729
1命令で収まりそうですね。
ビットを探すためにループ処理はしていませんね。
ありがとうございました。
関数を作ると、
関数に 2 個の引数を指定できません。
と出るんですが、どうすればいいでしょうか
関数プロトタイプを見直せ。
それは作ったほうじゃなくて呼び出したほうのエラー
具体的にどうやったのか?
>>737,
>>738 分かりました、ありがとうございます
いままで関数のほうばかり見て、
関数プロトタイプの括弧の中を記述し忘れていました
740 :
デフォルトの名無しさん:2009/05/30(土) 20:01:17
さっきVisual C++ 2008 Express Edition をインスコしたとこで、とりあえず簡単なプログラム実行させようとしたんだけど、
include ファイルを開けません。'iostream.h': No such file or directory
って出てコンパイル通らんという状態なんだが
Cygnusでは実行できたからソースコードが悪いわけではないと思うんだが・・・
それとも新規プロジェクトはWin32コンソールアプリケーションじゃあ駄目だったのか?
インクルードパスに追加すればいいだけでは?
742 :
740:2009/05/30(土) 20:16:25
#include <iostream.h>は#include <iostream>にしたらエラー吐かなくなった。
なんか新しい書式だと.hを付けないから古いほうだとエラーになるとかなんとか…?
でも俺らの参照する文献(ネット上も含めて)には旧バージョンもまだまだあるだろ…迷惑な
でも#include <iomanip.h>のほうはエラー吐き続けるんだが・・・
#include <iomanip>
744 :
デフォルトの名無しさん:2009/05/30(土) 20:48:24
すみません。書籍スレと迷ったんですが、こっちで聞かせてください。
大分、MFCにもなれ、自作アプリを3個くらい手の込んだのを作りました。ある程度のアプリなら
ネットやら書籍で検索しながら作れるような気はしてます。
書籍もオークションやらブックオフで色々あさって技術評論社とかAsCIIのを
12冊くらい持ってます。で、色々お勧め本をみるとハーバートシルトのMFC6.0という分厚いやつがお勧めらしいですが
本屋でぱっと見た限りほとんど知ってる事だと感じました。実際読んでないんでわかりませんが、
それでも含蓄あるから買ったほうがいいとか
そういうことありますか?
人それぞれだと思うよ。
もっとも、趣味範囲でのプログラミングなら、参考書に載っていない部分を、工夫しながら作っていくのが面白いのだけどな。
他に持ってる本で用が足りてれば買ってもしょうがないだろうけど
そんなの全部内容比較しなきゃ誰にもわからんだろ
プログラミングに限らず大抵の分野について初心者用の本ばかりなんじゃないの。
中級向けの本なんて作るの大変なうえに売れないし、作る人いないんじゃないかな。
雑誌でちょっとずつ高度な話を連載して書籍化ってパターンがあるけど雑誌が売れなくて消えてく時代だし。
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();でデフォルトコンストラクタが呼ばれないのは何でですか?
>>748 User型の戻り値を持つ関数yのプロトタイプ宣言とみなされてるとか
750 :
デフォルトの名無しさん:2009/06/03(水) 00:25:40
>>749 ありがとうございます
cout << typeid(x).name() << endl;
cout << typeid(y).name() << endl;
してみたら、さらに納得がいきました。
てか、よんでる入門書にそういう記述があったので・・・
本の正誤表に出てるかもしれないですね。
ありがとうございました
>>750 てか、このパターンはぱっと見関数宣言と変数定義の区別が
つかないような気がするのでコンパイラによっては(VCでもバージョンによっては)
動作が異なるのかも知れない
C++相談室スレとかにいけば、どう解釈するのか正しいのか教えてもらえるかも
Visual Studio 2008付属のVisual C++で、ダイロアグベースのMFCアプリケーションを
作り始めてみました。
エディットコントロールの使い方について教えてください。
エディットコントロールの使い方として、
・変数の追加で、カテゴリControlの変数を追加する。
→GetWindowText()で内容を取得する。
・同様にカテゴリValueの変数を追加する。
→UpdateData()で変数を更新して内容を取得する。
・変数を追加しない。
→GetDlgItem()とGetWindowText()を使って内容を取得する。
このようにいくつか方法があると思っています。
それぞれの方法の長所や短所、使い分ける時の基準、みたいなものはありますか?
753 :
750:2009/06/03(水) 01:18:26
>>753 リンク先にもあるようにVisual C++は警告を出すコンパイラなんだけど気付かなかった?
そうなら、警告もエラーと同じくらいよく目を通したほうがいいよ。
>752
数値の場合はDDX DDVが便利。
ただ複雑なことはできないのとUpdateDataが面倒
文字の場合は直にGetWindowTextが手っ取り早い
毎回GetDlgItemが面倒ならメンバ変数にしておく。
あとCEditのメンバ関数と使い分け
と思ったけどDDX DDVの中味を自作する方法もあったな
757 :
デフォルトの名無しさん:2009/06/03(水) 19:24:40
入門書を一通り読み終えて
簡単なアプリを作りながらVisualC++の使い方を覚える本をはじめたのですが
最初の方で
String^ msg = now.ToString();
という記述が出てきました。
この^は見た覚えがないのですがなんか演算子なのですか?
今この書き込みかいててちょっと思いついたんですけど
もしかしてクラス名が
String^
ってことはないですよね?
それは、C++のようでC++でない.NET用の拡張C++/CLIの構文。
759 :
757:2009/06/03(水) 19:41:40
どっちみちC++とは違うものだし、.netがやりたいなら普通はC#にする。
761 :
デフォルトの名無しさん:2009/06/03(水) 20:08:17
satou
762 :
757:2009/06/03(水) 20:51:42
>>760 C++を選んだのはオブジェクト指向でネイティブアプリが作りたかったんですけど
CLIはネイティブじゃないんですよね。
C++でwindowsのネイティブアプリを作るとなるとVisual Studio 2008 Standard Editionあたりを買って
MFCで作るのですか?
そもそも見た目をグラフィカルに配置して、モデル部分やボタンなどのアクションをC++で書くというのを
イメージしてたのですが、製品版買えば、MFCアプリをフォームエディタでのようにペタペタはって
作れるのですか?
アマゾンでC++ MFCを検索すると2003年から新刊出てないようなのでMFCってもういまさらって感じですか?
何かをプラスでインストールしないと動かないアプリっていうのがいやなんですよね。
いろいろ聞いてすいません・・
763 :
757:2009/06/03(水) 21:12:16
なんか色々あってややこしいですね・・・
いろいろ見てみたけど
勉強するならWin32APIですかね?
とりあえずネイティブは無料版でも扱える(MFCは有料のみ)
俺的考えはビスタ以降は標準で.NETがインストールされてるからそこまで嫌う必要はないと思ってる
757はなにをやりたいのかさっぱり分からん
例えばゲーム作りたいならC++とネイティブとDX、
ブラウザとかのツール系なら.NETのほうが開発しやすいし、
win系OS全部に対応させたいならWin32APIのみで開発するし
目的によって勉強する言語は変わってくるんだがなー
mfc使ってみようと思う時はribbon触りたくなった時くらい
そのリボンもWindows 7からWin32 APIの仲間入り。
ループを抜け出すときにはbreakを使いますが、これを自分で手定義した関数から実行することは出来ますか?
void aaa()
{
break
;}
int main(){
for(int i=0;i++;i>5)
{
aaa()
;}
return 0;}
のような感じです
不可。
VC++2005でCStringを使おうとすると以下のエラーが出てしまいます。
何か設定など必要なのでしょうか?
error C2065: 'CString' : 定義されていない識別子です。
#include <tchar.h>
#include <atlstr.h>
>>771 VC++2005eeじゃね?
有料版じゃないとMFCは使えないよ
774 :
771:2009/06/04(木) 04:55:54
>>772様
>>773様 御回答ありがとうございます。
VC++2005eeにて文字列変数のコピーをするにはどうしたらよいのでしょうか?
lstrcpy
文字列変数というのがchar*なら
>>775 #include <string>してstd::string使うとか。
C++/CLIならSystem::Stringもあるけどまあ別物か
もしかして標準C/C++の基本がまだできてないなら
C/C++スレへ行け
778 :
757: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関数の中でとりあえず作ってみたのですが、
これをそのままクラスにするいい方法はありますか?
コード自体はたいした量ではないので、作り直すのは簡単なのですが
後学のためにも教えてください。
それとも戦闘画面をメインにし、フィールドを歩くときは別フォームを呼び出したりするほうが良いでしょうか
地道に作り直せ
781 :
デフォルトの名無しさん:2009/06/04(木) 14:29:42
VS2003で作成されたActiveXコントロールの更改をしているのですが、
最適化オプションが、
・プログラムサイズ
・実行速度
の時は問題ないのですが、
・無効
・最大限の最適化
・カスタム
にして、リビルドを行うと、Regsvr32で以下のエラーが発生します。
「LoadLibrary("○○.dll")に失敗しました。指定されたモジュールが見つかりません。」
原因が全くわかりません。
どなたか原因をご存知の方教えて下さい。
782 :
デフォルトの名無しさん:2009/06/04(木) 14:41:48
>>780 うーん、残念です
ありがとうございました〜
>>781 Dependency Walker などを使って依存しているライブラリに違いが
ないか調べてみるとか
元々自分で作った物じゃないから作りを理解してないんだろ
785 :
781:2009/06/04(木) 18:13:26
>>783 素晴らしいToolの紹介をありがとうございました。
最適化無効でビルドされたDLLと最適化実行速度でビルドされたDLLを
調べてみたところ、Regsvr32が失敗する方(最適化無効)で開けないDLLがあるというようなエラーが出ました。
そのDLLをプロジェクトに配置してみたら、ビルド後イベントのRegsvr32が成功し、エラーはなくなりました。
リビルドではエラーはでなくなったのですが、コマンドでRegsvr32を実行すると、
やはり同様のエラーが出て登録はできません。(リビルド時に登録されたDLLを登録解除もできません。)
786 :
781:2009/06/04(木) 18:15:00
続きです。
これは何がいけないのでしょうか…?
引き続き、ご存知の方教えてください。
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
という警告が出るのですが、何が問題なんでしょうか?
>>785 気になるのはDLLの配置場所かな
確かDLLのロードは
- 環境変数PATHで指定されたディレクトリ
- exeのある場所
- カレントディレクトル
などを参照したと思うけど、
VC上からビルドして実行すると、たまたまカレントディレクトリが上記の <project>
になるので、DLLは <project> 直下においても読み込んでくれる
しかし、コンソールから実行する場合、カレントディレクトリやPATHに注意しないと
うまくロードされないとか
789 :
781:2009/06/04(木) 19:25:52
>>788 まさにその通りでした。配置場所をバイナリファイルと同じ場所に配置することで解消しました。
(一層上のプロジェクトファイルに配置してました。)
本当にありがとうございました。
ただ、最適化オプションの違いでエラーになったり、ならなかったりするのが
不明のままなのが気になりますが…。
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です。
いろいろ間違いすぎてどこから説明したものやら・・・
とにかく最初から最後まで間違ってる
>>790 そのTextBoxは.NETのWindows Formsの一部。
CLRプロジェクト以外では使えない。
おとなしく.NET Frameworkの世界にいなさい。
一体どこからそういう情報もってきてんだ?
情報仕入れたとこに全部書いてるだろ
入門書を4〜5冊はやらないと全体が見えないよな
VC6 での質問です
変数の値が変更された時にブレークポイントがひっかかるようにする方法って
どのようにすればできるのでしょうか?
[編集] メニューの [ブレークポイント] をクリックします。
[ブレークポイント] ダイアログ ボックスで、[データ] タブをクリックします。
[評価される式を入力してください] ボックスに変数名を入力ます。
[OK] をクリックしてブレークポイントを設定します。
VC2008EEでデバッグしています。
forのループ内にブレークポイントを置いてステップアウトしているんですが、
ループの回数が1000単位なので、1回ずつ変数の状態を見るのは手間がかかりすぎてしまいます。
例えば100回に1回だけ変数の状態を見たい場合、いい方法はないですか?
>>800 6と2008EEの違いのせいか、
>>797の項目が見つからず、
いろいろいじってたらヒットカウントというぴったりの物がありました。
どうもでした。
いまここに、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 を内包してくれるとありがたいのですが。
できるはずだから、リンカオプションがまずいだけ。
extern "C"
{
#include "[c.libの関数のヘッダ]"
}
でもリンクエラーが出る?
リンカオプションですか....
c.lib をスタティックリンクするのって、もしかして
myapp.dll のソースで #pragma comment(lib, "c.lib")
だけではダメだったりしますか?
(もちろん c.lib のあるディレクトリにパスが通ってるのが前提として)
それであっている。EXEでLIB使うときと同じ。
そういえば、そのLIBとDLLでCRTの設定は同じ?
異なっているといるとよくリンカに怒られる。
現在デバッグビルドで試していますが、ランタイムライブラリの設定は 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を戻せません
メッセージがでました。
もうすこし試してみます。
呼び出し規約の違いはdefファイル使わねえとそのまま名前装飾に影響する
そういうことで惑うなら、呼出規約はソースコードに
いちいち書いたほうがいいよ。コンパイラオプションにて一括で指定するのではなく。
810 :
デフォルトの名無しさん:2009/06/06(土) 02:08:13
MFCのMDIで秀丸みたいなマルチドキュメントにしたいんだけど(タブ形式)
普通にEditビューじゃタブ形式にならないんだけど、どうすればいいの?
なるだろ?
2008のSP1限定だけど
812 :
807:2009/06/06(土) 11:32: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は増えませんでした。
どうかやり方を教えてください。
その手順で普通にやればできるから、コードがどこかおかしい。
ShowWindowしてないだけだったりして。
通常はそれも不要だが。
モーダルで停止
ダイアログボックスなら「表示」と書くと思うが「追加」だとか「増えません」だとか表現している点が気になる。
・・・見当違いのことをやろうとしているのではあるまいか?
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+つかえるんだっけ。。
ライブラリの開発者に直接聞かないで全然関係ない掲示板で質問されてもな
824 :
820:2009/06/06(土) 19:40:49
ライブラリそのものは自分でビルドしてます。
また、ソースコードはほぼIJGそのままで、IJG提供のソースを、調べたnmakeでのコンパイルしても
transupp等の組み込みが出来てないので、同様のエラーを吐きます。
日経ソフトウェアダウンロード からプロジェクトファイルを落として見たものの同様の状況で
jpegtranに使用される関数をライブラリに組み込む事が出来ませんでした。
ただSource/Header Filesに入れるだけではライブラリ作成時にエラーが出なくとも呼び出し側でリンクエラー同じです。
bccでlibjpegライブラリを使ってjpegtranの無劣化回転処理を組み込んでいる方が居たので、
可能な事は確かなのですが・・・。(そのライブラリはVC++からでは使用できず)
すみませんひとりごとでした
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()に渡して、メッセージを出すことにしました。
ありがとうございました。
下のように、クラスAAのインスタンスを、メモリーに割り当てたときに。
コンストラクタとデストラクタをどうやって起動したらいいのでしょ?
class AA { int i1,i2; AA(); ~AA(); }
void func()
{
char dat[100];
AA *dat;
dat = (AA *)dat;
}
割り当てたら勝手に実行されるんじゃないの
解放したらまた同じく
上の場合、ポインターがセットされるだけなので、実行されないです。
この場合の実行の仕方を知りたいです。
832 :
デフォルトの名無しさん:2009/06/07(日) 10:46:35
Win32アプリケーションとWindowsフォームアプリケーションでは、何が違いますか?
WinMain/main
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行目でエラーがでます。
どう書き換えればエラーが直るでしょうか。
MFCはEEじゃ使えないからダメ。
837 :
835:2009/06/07(日) 13:03:46
>>836 ということはソースを修正しても無駄ということですね。ありがとうございました。
実体がないのにコンストラクタは働かない。
840 :
デフォルトの名無しさん:2009/06/07(日) 14:53:27
小生、昨日、サッカーを久しぶりにテレビ観戦して
試合後、ニュー速で試合を見て思ったことを、色々書いたら
ぼっこぼこ馬鹿にされたなりよ。やっぱ小生がそこそこ偉い発言できるのはMFCしか無いと思ったなりよ。
DLLなど複数プロジェクトが含まれるソリューションを開発する時、
ソース内のincludeパスの指定どうしてますか?
VC++の場合はProjectDirとSolutionDirの2つがデフォルトで
使えると思いますがこれの使い分けとか気にしてます?
842 :
デフォルトの名無しさん:2009/06/08(月) 11:21:47
VS2008で、Cのプログラムをコンパイルするとき、CとしてコンパイルするかC++として
コンパイルするかというのは、自分で決められますか?
できる。
IDE内ならオプションにあるべ。
コマンドラインでも指定できるし、何も指定しないと拡張子から区別される。
844 :
デフォルトの名無しさん:2009/06/08(月) 12:40:49
>>843 ありがとうございます。
別ファイルにある
double func();
というのをmain()から呼んでる時、main()のすぐ上でint func();という宣言があるので
C++では呼び出せてたのですが、ふとこれがCだったら呼び出せてなかったっけ、と気になった
ので…。
845 :
デフォルトの名無しさん:2009/06/08(月) 14:15:29
ソースを書いてる時のコメントの色が見づらいので変更したいのですが色とかはどうやって変更したらいいですか?
ツール - オプション - 環境 - フォントおよび色
VC6 いまだに使ってますけど
ゲーム作成にしか使わないんですがバージョンアップする必要ってあります?
値段とファイルサイズだけがバージョンアップされあまり期待できないのですが
>>848 VC6はもうC++対応じゃないと思った方がいい。VC6言語だと思った方がいいくらい、標準と違う。
それを踏まえると、標準C++を学びたいわけでもなく、
現状のゲーム作成で困ってないなら変えない方がいいんじゃないかな?
Microsoft Visual C++ 2008 Express Edition
無償で公開されているから体験してみるもよかれ!
851 :
デフォルトの名無しさん:2009/06/08(月) 20:08:53
便乗質問・・・
VC6のStandardでしこしこ
アプリ作ってんだけど、
ぷろになりたいと思ってきた。その場合、Proffessional
editionの方がいいのかえ?
VC6のサンプルプログラム見せるよりは、新しいVCのサンプルの方が可能性は高い
サンプル −> 自作ソフトのサンプル
>>850 EE版だとMFC動かないんだよね
.netFrameworkは開発者のオナニーがたくさんつまった作品
オナニーたくさんやった挙句なにも便利になっていない
相変わらず細かいことをするにはいつもどおりの苦労を迫られるし
今度はやけにネットの情報が少ない
.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
というエラーがでてコンパイルができません。
どうしたらいいですか??
そのエラーメッセージに書いてある通り
858 :
デフォルトの名無しさん:2009/06/08(月) 23:39:12
クリティカルセクションの質問なのですが、
main()でInitializeCriticalSection()やって、その後_beginthreadex()します。
その後以下の処理を行うスレッドを100個起動させます。
EnterCriticalSection()
カウンターをインクリメント
LeaveCriticalSection()
そして、main()関数内でWaitForMultipleObjects()で全スレッドの終了を待ちます。
WaitForMultipleObject()の直後にカウンターの数を表示させているのですが、
これが100になりません。(95とか55とか)
クリティカルセクションの使い方が間違ってるのでしょうか?
カウントの処理に問題があるのでは?
860 :
デフォルトの名無しさん:2009/06/08(月) 23:58:22
WaitForMultipleObject()が全スレッドの終了まで待っていないようです。
>>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)
;
みたいなループを入れると動きました。なんとか動きそうです。
WaitForMultipleObject の第一パラメタ(最大ハンドル数)は 64 まで
865 :
デフォルトの名無しさん:2009/06/09(火) 00:50:56
>>864 ええーっ、64ですか?
そうか、MAXIMUM_WAIT_OBJECTSですか…
じゃあ65以上のスレッドを待ちたい時はどうすんのかと思ってMSDN見たら、
64個のスレッドを待つまとめスレッドを作って、そのスレッドを待つようにしろ、
と書いてました。そんなの今からかけないよ〜
でもありがとうございました。
スレッドが100個とかどういうとき必要になるんだろう。
867 :
デフォルトの名無しさん:2009/06/09(火) 10:37:05
HTTPサーバみたいなサーバプロセスを書いているのですが、コネクションが来るたびに
スレッドを生成してWorker Threadパターンでやってます。今朝は100個のコネクション
が一挙にキタ場合のテストをやろうとして、ああなってしまいました。
アルゴリズムってなんですか?
分かりやすい例えを教えてください
>>868 アルゴリズムすなわち解法
問題と答えをつなぐものがアルゴリズム。
たとえば「1〜10の総和はいくら」という問題に
Aさんは 1+2+3+4+5+6+7+8+9+10
Bさんは 11×5
と考えるだろう。
Aさんの解法もBさんの解法も「1〜10の総和はいくら」の答えを求めるアルゴリズム。
870 :
868:2009/06/09(火) 16:19:35
当然正しい答えが出なきゃならんし,有限の時間で答えが出なきゃならん。
ってかスレ違いだと思われ。
ググれ
MFCについて質問があります。
ダイアログ上のボタンを押下したときに、エディットボックスを追加する関数を加えたいのですが、
エディットボックスを追加する関数というのはあるのでしょうか?
また、エディットボックスを追加すると同時にメンバ変数も追加することができるのでしょうか?
>エディットボックスを追加する関数
動的に追加するならCEdit::Create();
動的に追加せずとも、非表示でエディットボックスを作成しておき、ボタンをクリックしたときに表示させる
という手法もある。
>メンバ変数も追加することができるのでしょうか
メンバ変数はあらかじめ用意しておく必要がある。
CObject は動的生成機能もサポートしています。これは実行時に特定のクラスのオブジェクトを作成する機能です。
876 :
デフォルトの名無しさん:2009/06/09(火) 22:09:10
仮想関数やWindowsハンドラをオーバーライドして
基低クラスの関数を最後に呼び出すかどうかってオーバーライドする関数によって違うみたいなんだけど
初心者じゃそこらへんわからないよね(´・ω・`)
「非標準の拡張機能が使用されています : 右辺値のクラスが左辺値に使用されます。」って警告ってどうやったら取れるんでしょうか
めっちゃいっぱい出ていて困っています
880 :
876: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;に変更するとか、初心者じゃわからないよね(´・ω・`)
PreCreateWindow()の戻り値の意味を知っていればわかるだろ。
で、君がわからないのか、それとも他人がわからないことを嘆いているのか、どっちだ?
882 :
876:2009/06/09(火) 22:34:36
わしがわからんのじゃけど。
PreCreateWindow()が FALSE を返すとウィンドウは作成されない。
じゃ、CView::PreCreateWindow() はどういう時に FALSE を返すのか、オーバーライドした関数ではどうすべきか、
なんてなことを勉強していくしかないな。AAAA
うう、すまぬ。最後のAAAAは無視してくれ。
Shiftキーと同時に押しちまった。
885 :
876:2009/06/09(火) 22:42:07
わかりました。ありがとう。
道は長そうだけど、そういうふうに意識して勉強していきます。
ありがとう。
886 :
デフォルトの名無しさん:2009/06/10(水) 01:08:54
_beginthreadex()で作ったWindowsのスレッドに、各スレッドごとに独自のデータを
保持させることはできますか?
>>886 つTlsAlloc, TlsFree 等
>>886 生成するスレッドにはパラメタを1つ渡せるので、スレッドの単位で作成したクラスや構造体の
インスタンスアドレスを渡せば良い
フォルダごとコピーしてデスクトップに持ってきてデバッグしようとしたらデバッグ情報が読み込めません、シンボルが一致しません
って警告が出るんですけどどういう意味ですか?
>>889 デバッグ情報にはソースファイル位置などがフルパスで格納されているから
フォルダを移動すると正常にデバッグできない
元の位置でデバックする
それじゃ意味ねええええっうぇwっうぇえww
シンボルサーバ作ればいいだけだろ
/::::::::::::::::::( /::::::::::ヾ ヽ ヽゞ::::::::::::::::ヽ
/::::::::::::::::::::::::::::::::::ヾ i i ソ::::::::::::::::: ヽ
/:::::::::::::::::::::::::::::::::::::ゞ ! i ゞ::::::::::::::::::ヽ
/:::::::::::::::::::::──< ̄● ̄>─ | i |─< ̄● ̄>─:::::::ヽ
|:::::::::::::::::::::/  ̄  ̄ ─ 、  ̄  ̄ ヽ::::::::|
. |:::::::::::::::::::/ / ヽ ヽ:::::::|
..|::::::::::::::::::/ i | \:::::|ぶぁぁか
.|:::::::::::::::::/ ヾ 丿 _ \::::|
..|::::::::::::::::/  ̄ ─ _ ` ─ ̄ ' ─ ̄ ヽ:::|
|:::::::::::::::: ─ ー | | ー─ ̄ ヽ:|
ヽ:::::::::::::: | ━ ─ ─ ー ─ - | | ─ ー ⌒ ─ |
ヽ:::::::::::::| _ _─ ─││ ──/ヽ_ヽ |
ヽ::::::::::::| ─ ̄ _─ ̄ ノ /─ |
ヽ:::::::::::| _ _ ─  ̄ / 丿 |
ヽ::::::::::| ヽ ̄ / ̄ - -_ / / /
\:::::::::| \ ノ -_ _ ) / / /
\:::::::| \ ノ ─' ノ /
\:::::| ─ _ __ ー ' /
リモートログインしちゃえよ
897 :
デフォルトの名無しさん:2009/06/12(金) 02:02:02
MFCのために¥15000だしたいんだけど、金無いなりよ。
>>897 学生ならドリスパでタダでVS2008プロを落とせる
899 :
デフォルトの名無しさん:2009/06/12(金) 09:55:20
VC++eeなんですけど
プロジェクトフォルダで、自分の書いたソースファイルとかプロジェクトの設定が書いてあるファイルなどと、
ビルドした時の中間ファイル?とかビルドファイルとフォルダを変える事ってできますか?
どこでも参照できるように自鯖のサブバージョンに入れてみたんですけど、容量がどんどん肥大化していく・・・
ドリスパって何?
サッカーのチーム
>>899 プロジェクトのプロパティの全般カテゴリに中間ディレクトリ指定できんだろ。
んまーそこで困ってるならsvnの無視プロパティ活用しろよとは思うが。
>>898 学生じゃない人はどうするんだ?やはりStandardのうpグレード買うと1万5千円かかるだろ・・
まあ、俺様は合法的にStandard+XXXXXXXを取得する方法を知ってるんだがな。
しりたけりゃググルことだ。これはあくまで合法だ。30000円のが12000で買える。むほほ。
ぶっちゃけ学生証なくてもVS2008プロとかダウンロードできるお
タダだお
普通にダウンロードしたVisual C++2008 Express Editionと学生用プロ用って何が違うんですか?
学生用は商用利用ができん。
ProEditionはクリスタルレポートとかOffice開発用の部品というかモジュールが付属する。
StandardはVC++でのMFCというライブラリの利用ができたり、アイコン作成用のソフトが付属する。
うろおぼえか思い込みで書いてるだからあてにしない方がいいよ
Visual C++2008 Express Editionは商用利用できたっけ?十分だろ
自分でメーカー(マイクロソフト)に訊けばわかるよーな質問を、こんなところに書きこんで
自分の頭と時間を使わず他人の時間と頭を使わせようとする人間の質問に答えてやるほど
酔狂なヤツはいないだろう。
Visual C++ Express は商用利用できますが、何か?
915 :
デフォルトの名無しさん:2009/06/13(土) 17:20:44
ぼくにもできますか?
無理
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では問題なかったのですが、何が変わったのでしょうか?
>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では、使えない状態でした。
920 :
918: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と同じっぽいけど・・。
ユーザに拡張子ダブルクリックでアプリに関連付けさせるか
インストーラを作るかしないといけないのだろうか。
>>923 vistaだと従来のやり方じゃダメなんだ?
>>923 HKCUへの書き込みなら特に問題ないはず。
HKCU\Software\Classesで、アプリを実行しているユーザだけを対象に設定できる。
>>923 簡単にというならコマンドプロンプトのコマンドにあるからバッチとかsystem関数でできる気がする
assoc
ftype
vc++ee2008を使ってるんですけど、C++のことよりもコンパイラの機能や使い方について詳しく解説してあるサイトってありませんかね?
>>927 たしかにvc6のころと変わっててイライラすんだよな
さんざん探した挙句実はできなくなったってのもあるにはあるw
>>925 メチャメチャサンクス!!!
旧OS用の関連付け処理を HKCU\Software\Classes 用に作り替えて
Windows7上で試したら関連付け、解除ともに問題なくできた!
というか、バカは俺か・・・
今まで HKEY_CLASSES_ROOT を直接いじってたからVistaや7で通らなくなっただけみたいだし・・。
>>924 >>926 もレスサンクス!
ようやう寝れる。
>>927 2002が最悪だったんで、最強のVS98から2003/2005をすっとばして2008に換えたけど
IDEの使いにくさ以上に、MSDNが役立たずで困ってる。
結局、VC絡みだったらVC6のMSDNを使っちゃったり。
つーかVC6で主要部分を組んじゃって、頃合いをみてVS2008に上げたり。
>>930 念のため言っておくが9xだとHKCUは使えないからな。
>>931 俺もMSDNは最悪だわ
なんもヒットしねぇ上にたびたびリンク切れみたいになる
しかも、みにくいし遅い、重い
引数がない場合の関数は()を省略できるようにしてくれ
function();
何もない括弧書き方なんかかっこわるい。
カッコがあるから関数だとピンとくるんじゃん。カッコがなきゃ変数だか関数だかわかんなくなって
カッコ悪いだろ。
MSDNが使いにくいとおもっているやつが
俺以外にもいたか
>>933 もう最近はF1を押すことはまずないな。起動は遅いし変なものばかり引っかかるし。
ググった方がよっぽど早い。
MSDNってググるもんだと思ってた俺って…
MSDNダウンロードできないのかね?
あまりの遅さにイライラする
>>932 更にサンクス! それじゃOSバージョンで切り替えるように――というか
95/98/SE/Meはいい加減サポートから外しても良いか・・・起動できないようにしちまおう。
2008で作れば自動的にそれらでは起動できなくなるw
942 :
デフォルトの名無しさん:2009/06/14(日) 10:26:44
>>934 予約語は被らない限りは略せるとかだと楽なのにって思ったことはある。gnuplotみたいな感じで
class -> cl、public: -> pub:、とか
>>942 その質問の回答には、エスパー能力が必要、それはすなわち、
質問の内容がまったく足りないと言うことだ。
>>942 エスパーーーーーーーー!!!!!!!!!!!
問い1 足りる
問い2 無くてもいい
946 :
デフォルトの名無しさん:2009/06/14(日) 10:40:04
>>944 何の情報が足りませんか?
WebBrowserでウェブサイトを表示できるようにしています。
規定ブラウザはIEの場合です。
IEにあるようなアクティブスクリプトの有効無効の設定をできるようにしたいのです。
>>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 すいません、私のスキル不足です。
新しく参考を紹介いただき有難うございます。
Windowsフォームアプリケーションならフォームを作る事は勿論、
ウェブブラウザを設置する事もツールボックスからドラッグするだけ。
イベントも簡単なプログラムだけで可能なようになっていますよね。
それならアクティブスクリプトの制御くらい、
一行で済むような命令があってもおかしくないと思ったわけです。
IEにも搭載されている機能ですし、
今のバージョンは2008ですし。
それを簡単に実現できないようにされているのはどうしてでしょうか。
その疑問はMSにぶつけるべきじゃない?
部品を貼り付けるだけでガワを作れると言ってもなんでも簡単に出来る訳じゃないぞ
IEコンポーネントに不満なら別の物を使う選択肢もある
>それを簡単に実現できないようにされている
フォームアプリケーションでいうところのフォームの作成等が簡単に実現できるようにされているだけ。
発想が逆。
ご返答有難うございます。
とりあえず、COMの基礎知識を付けようと思います。
今回のようなウェブブラウザのセキュリティに関する操作には、
他にどのような知識も付けておくべきなのでしょうか。
一つ、腹ペコのまま学校へ行かぬこと
一つ、天気のいい日に布団を干すこと
一つ、道を歩く時は車に気をつけること
一つ、他人の力を頼りにしないこと
一つ、土の上をはだしで走り回って遊ぶこと
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の方と競合しているからですか?
>>943 #define cl class
#define pub public
ただし
#define BEGIN {
#define END }
と同レベルだが。
958 :
デフォルトの名無しさん:2009/06/14(日) 16:54:08
ヘッダーの階層わけってどうやるのでしょうか?
ヘッダーファイルにフォルダを作ってそこに
hoge/Test.h
とヘッダを作って
mainのcppで
#include "hoge/Test.h"
とやると
No such file or directoryと怒られるのですが
そのファイル右クリックしてプロパティから完全パス見てみ
ソースと同じ所にあるだろ?
実際にディレクトリ作ってそこに入れればそういう指定もできる。
>>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"が有効なパスになります。
パスの指定がわからないのですね パスです すいません
>>960 はここがVC++のスレとわかって書いてるのか?
IDEあまり使ってないのかな。
963 :
960:2009/06/14(日) 17:42:49
ああ
>ヘッダーファイルにフォルダを作って
って左のツリーのアレだったのか。
すまんかった。
964 :
958:2009/06/14(日) 20:35:11
皆様レスありがとうございます。
総合するとVC++のソリューションウィンドウの階層は実階層と何の関係もなく
実階層で階層を切れば
#include "hoge/Test.h"
のような指定も出来ると。
VC++側でファイルの完全パスを変更するのは
プロパティとか見たけど無理そうなので
VC++で開発をつづけるのならば
#include "hoge/Test.h"
ような指定をするのは現実的に難しいということですね。
Flashと似てますね。でもあっちは対応するパスを変えられるので、あっちのほうがすぐれてますが。
というか、もしかすると私が使ってるのがeeだからですかね?
製品版買えばリンク先変えられたりするんでしょうか?
コマンドプロンプトのclって使い勝手はどうですか?
966 :
958:2009/06/14(日) 20:39:24
あ、既存の項目の追加
をすればいいのか
.NET ってつまるところ MFC のバージョンアップ?
初心者ですが
>>923ってなんでWindows7の話をしててみんな答えてるの?まだ出てないよね?
Microfost の社員も使ってるよ ここ
>>968 Vistaのときもそうだがβ版が随分前から出てたんだが・・・?
サンクス
面倒くさいからやめとくけど
>>967 俺はWin32APIのバージョンアップだと思ってる
>>968 Vistaと変わっていないことを前提にVistaの場合の話を答えた。
もっとも、XPはおろか2000でも同じなんだけど。
もっとも、関連づけのやり方自体は、XP、Vistaで、
新しい方法が増えているみたいなんだけど
(プログラムから開くとか既定のプログラムとか)
自分は追い付けていない。
Visual Studio 6.0 Service Pack 6について質問です。
・無料で使用できるのでしょうか
(HPには無料と書いてあるが、
昔は10万とかした製品だったと思うので)
(また、「最新のアップデートを提供します」と書いてあるので、
商品を買った上で、バッチみたいなのではないのでしょうか)
・商用ソフトは作れるのでしょうか(作ったソフトを販売する)
(確かアカデミックではダメとかあった気がします)
(無料版では、ソースが丸見えになってしまうとかもないでしょうか)
>>975 SPはあくまでもSPなので、ライセンスは君が利用しているVisual Studioによる。
VisualStudioなしで、SPだけダウンロードして使えるかという質問なら、それは無理。
977 :
975:2009/06/15(月) 05:24:20
>>977 どうでもいいけど「パッチ」だからな。patch。
979 :
975:2009/06/15(月) 08:46:58
もう9x系に拘る必要なくね?
ソースがどうのってのは最新のVC++だって.NETで書かなきゃ関係ないだろ。
むしろ人に見られることを常に意識してコード書いたほうがいいと思うけどね。
誰も見ないだろうけど。
982 :
975:2009/06/15(月) 14:39:04
>>980 メインPCがMeなのと、動作可能環境に9x系もある方が評価も高いかなと。
>>981 PHPやAS3とかは、インタプリタ?なので見られることが前提なんですけど、
Cのは、同じ同人作品やマイライブラリを長年作っているのもあり、
見せたくないと思っていました。
>>982 9x系はマイクロソフトのサポートが終了しているので、仮に不具合がOSに起因していたとしても
君が面倒を見なければならなくなるぞ。
個人でやっていたら、9xからVistaまで対応とか言っても、動作確認がめんどうくさすぎる。
まあ「meで動作確認しました。それ以降のOSなら動くはずです」とかですむのかもしれんけど。
/* 閏年か平年かを判定するプログラム */
#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の倍数」とするにはどうすれば良いのか教えてください。
考えれば考えるほど分からなくなってしまいました
if (y % 400 == 0 || (y % 100 != 0 && y % 4 == 0))
こうかな?
一つ一つ置き換えてみると良いと思うよ
アホはアホなりに地道にやるしかないとアホが言ってみる
結果的に同じ状態になるからといって、変に効率的な感じを目指して書いたって、
得られるメリットよりも、パッと見で分かりづらい、ソース読んで考えないと正しいと
判断できない、というデメリットがあるんだよな
一週間後の自分という他人に保守させるのであれば、ダサくて地道なコードくらいが
ちょうどいいのだよね
一週間後の自分はさておき、3年後の自分に笑われないコードを書きたいとは思う。
良く笑ってしまうんだけどね...
>>971 おお、オフライン版あったのねって
かんじんなところだけ英語orz