★初心者にVisual C++を教えるスレ★ Part38
1、リストボックスにflvのドラッグドロップしたファイル名を表示 クリアー
2、ボタンを押したらファイルを一つずつ指定のアプリで開く
3、開いたアプリにキー操作を送る
4、CPU使用率で2の動作を連続してできるようにする
何とか1はクリアーしました。2のリストボックスに表示された拡張子がflvの
ファイルを開くというので止まってます。
理想は、リストボックスに表示されてる複数のファイルを関連付けされてる
アプリで開きキー操作を送ることです。ヒントください。
>リストボックスに表示されてる複数のファイルを関連付けされてる
アプリで開きキー操作を送ること
複数選択した項目を取りだす方法はわかってるの?
関連付けされたアプリを起動する方法がわからないの?
開いたアプリにキー操作を送る方法がわからないの?
どれよ
>>648 全部わかりません。
そもそもなんだけどリストボックスにファイル名を表示することもあってるかどうか・・・
リストボックスに表示されてるflvファイルを順に開きキー操作を送るというプログラムなんだけど
1、ボタンを押しリストボックスのファイル開きキー操作送る
2、CPU使用率を確認し1の動作をする
3、リストボックス表示のファイル全てを1、2の動作で終了させる
>>649 Win32APIの範囲になってしまってるよ
とりあえずShellExecuteで関連付けを使用したオープンができる
後はあっちで聞いた方がいい
一個ずつ解決した方がよさげ。
答える方も個別なら回答しやすい部分もあるだろうし。
wstring で a = L"3A5f"; みたいな文字列を
uint とか ulong に変換する関数はありますか?
unsigned long h;
wistringstream w(a);
w >> hex >> h;
655 :
デフォルトの名無しさん:2012/11/07(水) 22:53:54.01
656 :
デフォルトの名無しさん:2012/11/07(水) 23:39:43.50
古いC++本のサンプルプログラムなんですが、
#include <stdio.h>
int main()
{
int x;
printf("%d\n", x); /* xの値は不明*/
printf("%d\n", x=4); /*代入式 x = 4の値を表示:*/
printf("%d\n", x); /* x に4が代入されたかを確認*/
x = 6; /*xに別の値を代入*/
printf("%d\n", x); /* xに6が代入されたかを確認*/
x = x + 4; /*x の値を 4 大きくする*/
printf("%d\n", x); /*それを確認*/
return 0;
}
をVisualStudio2010で実行すると、必ず 4行目 x; のところでコンパイルエラーになります。
本の通り書いてるのですが、本当なら、表示が
750
4
4
6
10
と、なるそうなんですが、何がおかしいのでしょうか? 教えて下さい。
>>656 でコンパイルエラーになったときのメッセージを含めてそのまま貼って
>>658 Run-Time Check Failure #3 - The variable'x' is being used
Without being initialised.
(Press Retry to debug the application)
とでます
そのまんまの意味だろ…
>初期化されていないローカル変数 'x' が使用されます
printf("%d\n", x); /* xの値は不明*/
意図してやっているんだから、それで良いんじゃない?
それでコンパイルが通らないなら、nt x=750; とかする
コンパイルエラーじゃなくてランタイムエラーだと思うの
どうして750になるんだ?
どういう値になるか不明なんじゃないの?
その古い本とやらには不定値になるって書いてるんじゃないか?
ただ例として出しただけで
その本に載せるためにテストした結果が750になっただけで
どの環境でも750になるわけではない
666 :
デフォルトの名無しさん:2012/11/08(木) 20:55:53.60
環境:Windows XP(32bit)、VC++ 2005
ある与えられた文字列をバイナリに変換して16バイトのバイト配列に入れる
与えられる文字列は、バイナリ変換した時に128bitまでに収まる数値の文字列とする
という問題で困ってます
例:
"1234"
→1234(4D2h)
→00h,00h,00h,00h,00h,00h,00h,00h,00h,00h,00h,00h,00h,00h,04h,D2h
で、QWORD以上は整数値にできずに困っています。
"18446744073709551616"
→10000000000000000h
→00h,00h,00h,00h,00h,00h,00h,01h,00h,00h,00h,00h,00h,00h,00h,00h,
どのように処理すればいいのでしょうか?
宿題は宿題スレに
668 :
666:2012/11/08(木) 21:05:41.81
番号がオーメンに・・・
>>667 学生ではないのですが、通信仕様を渡されてやっといてという事なので、一応宿題になるのですかね?
授業単元とかないので迷ったのですが、向こうで聞いてみます。
ありがとうございました。
ShellExecute(NULL, "open", "
http://www11.plala.or.jp/studyhall/", NULL, NULL, SW_SHOW);
この文を消すもしくはコメントアウトすると
エラー1error LNK1123: COFF への変換中に障害が発生しました: ファイルが無効であるか、または壊れています。
というエラーがでます。なんで文を消すだけでエラーになるのかがわからない。
今確認したらまったくなにも書いてない状態でのデバックでも
同じエラーでる・・・ファイルがひらけないってやつが
失敗して終了してるつもりが
ウィンドウの見えない
ゾンビプロセスが残ってるんだろ
タスクマネージャで心当たりのあるexeを終了させてみれば桶
1>------ ビルド開始: プロジェクト: 999, 構成: Debug Win32 ------
1> stdafx.cpp
1> 999.cpp
1> AssemblyInfo.cpp
1> コードを生成中...
1> .NETFramework,Version=v4.0.AssemblyAttributes.cpp
1>LINK : fatal error LNK1104: ファイル 'OLDNAMES.lib' を開くことができません。
========== ビルド: 0 正常終了、1 失敗、0 更新不要、0 スキップ ==========
こんなエラーがでる。まったくプログラムとか記載する前の状態です。
path
駄目だ・・・全てにおいてビルドできない
再インストールしても駄目ってなんだよ・・・
俺のc++人生終わったかw
まだ入門レベルなのに('A`)
1つ質問。
VC++って、1文字目が数値のプロジェクトって作れるんですか?
vc2008をコマンドラインで使ってるんですがc1074 idbはpdbファイルには無効な拡張子です
とでるんですがmain(){}だけのファイルをコンパイルしてもでます。
解決方法ありましたらおねがいします
CString が含まれる定義体でメモリ確保したい場合はどうすればいいですか?
typedef struct _HOGE
{
CString str1;
CString str2;
CString str3;
} HOGE;
HOGE *hoge = (HOGE*)HeapAlloc(GetProcessHeap(), 0, sizeof(HOGE));
HOGE *hoge = new HOGE;
構造体には実体じゃなくてスマポ突っ込めば?
CString str[3];
2010アカデミックってとっくのとうに販売終わってたんだな……
686 :
デフォルトの名無しさん:2012/12/02(日) 14:07:19.69
VC++でフォームアプリケーションを作ろうと思い、プロジェクトを新規で作ったのですが
コードをそのまま(変更せず)にビルドしようとするとエラーが出ます
どうしたらいいですか?
please show us error messages
This problem not an error. It's my wife. hahaha
リソースダイアログを使わずに、IEの表示部分(IEコンポーネント?)を特定のウィンドウの子コントロールとして追加したいです。
が、検索してみるとリソースダイアログ上で張り付けたコントロールの取得方法ばかり見つかり、結局方法が分かりませんでした…。
コモンコントロール(EditとかTreeViewとか)と同じような感じで使用したいだけなのですが、
どのようにすると可能でしょうか。
Doc/Viewの分離はしておらず、CHtmlViewは利用できませんでした。
comでIWebBrowser2をCoCreateInstanceしてみた所、成功してはいたようだったのですが
HWNDの値の取得もCreateWindowもしておらず、どのようにサイズ変更すればよいのかなど分かりませんでした。
技術的な面では、Vista以降あたりで動作してくれればよいと考えております。
ご助力お願いいたします。
self.ie = iewin.IEHtmlWindow(self, -1, style = wx.NO_FULL_REPAINT_ON_RESIZE)
self.ie.LoadUrl(self.current)
self.ie.Navigate(URL)
691 :
デフォルトの名無しさん:2012/12/11(火) 16:06:33.83
C言語のみ経験があるプログラミング初心者です。
>>66の人と全く同じことをしたいと考えています。
ヘッドマウントディスプレイのセンサー値を取得して、
別プログラムの中での視点移動に連動できるようにしたいです。
公式のサンプルは問題なく実行できました。
ウィンドウに表示したりといったGUIの部分は不要で、
数値だけ取得して、ソケット通信で別プログラムに渡せば実現可能だと
考えていますが、サンプルを眺めてもどこをどういじればいいのか分からない状態です。
サンプル見てもわかりませんの人に
ちょちょいっと教えてどうにかなるとはとてもじゃないが思えないんだが
なのでこんな場所ではなく、まともな人に対価を支払って教えてもらうのが一番正しい選択だと思いました。
コンストラクタでエラーをNULLで返したいのですが
戻り値を指定出来ません
例外をださずにNULLを返すにはどうすればいいのでしょう?
失敗するような処理は、別のメンバ関数などに外だし?する。
中だし派だけどどうしたらよいですか
ゴムでも付ければ?
俺は昆布だしだな
かつお風味の
GetComm○○、SetComm○○系の関数が1つも成功しないです。
OSはXPSP3、開発はVS2010を使用、
プログラムの内容は下記と大体同じで、違うのはCOM1ではなくてパイプを使っている点。
http://msdn.microsoft.com/en-us/library/aa363201.aspx 書いているプログラム(クライアント側)
HANDLE hpipe = CreateFile(L"\\\\.\\pipe\\test", GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, 0, NULL);
if(hpipe == INVALID_HANDLE_VALUE) return;
BOOL ret;
COMMPROP prop;
DCB dcb;
COMMTIMEOUTS timeout;
ret = GetCommProperties(hpipe, &prop); // ステップ実行で確認→1つも成功しない。 @err=1
ret = GetCommState(hpipe, &dcb);
ret = GetCommTimeouts( hpipe, &timeout); // SetCommTimeoutsもできない。
// ReadFile, WriteFile は成功する。
CloseHandle( hpipe );
よろしくおねがいします
普通にパイプには使えないだけなんでしょう
701 :
699:2012/12/20(木) 13:03:23.31
>>700 パイプはタイムアウト設定できないんですか?
702 :
699:2012/12/20(木) 13:47:31.72
Win32APIのGetOpenFileNameをコールするとVC++2008EEで
「Win32スレッド」というスレッドが3つ立ち上がり、
ダイアログを閉じた後でもそのまま居残り続けます。
何なんすかこれ?
適当にコールスタック見ればわかるのでは?
706 :
703:2012/12/22(土) 21:37:31.37
>>704 オープンダイアログが開くところでブレークかけてコールスタック見てみましたが、
GetOpenFileNameをコールしている自分の関数より上のものは見られませんでした。
>>705 了解です!
.hと.hppの違いは何でしょうか
h->cのヘッダファイル hpp->cppのヘッダファイル
確かにそうなんですけども、拡張子の表記以上の違いはないのでしょうか
.hでも.hppでも動作に違いが無いように思います
単にコンパイラがC++だから両方ともC++としてコンパイルされているということでしょうか
hpp は C++ のテンプレートとかを使用していてコードをヘッダファイルに書かなければならない場合に
「使われることもある」拡張子じゃなかった?
C++ でも普通のヘッダファイルは .h だろ。
C++は
#include <cstdio>
とか
#include <strstream>
とか
.h
無いのが普通
別に拡張子なんてただの決めごとで、動作に違いなんて出るわけない
トップウィンドウに対して SetWindowSubclass や SetWindowLongPtr でサブクラス化する場合に多重にサブクラス化するとエラーになってしまうので、既にサブクラス化済みかを判定するにはどうしたら良いですか?
トップウィンドウに対して SetWindowSubclass や SetWindowLongPtr でサブクラス化する場合に多重にサブクラス化するとエラーになってしまうので、既にサブクラス化済みかを判定するにはどうしたら良いですか?
GetWindowLongPtrでDefaultProcじゃなければでいいんちゃう?
>>715 すみません、説明が抜けていました...別プロセスのウィンドウがサブクラス化されているか判定したいのです。
>712
そう思い、VC++でソースファイル名をxxx.cで書いてコンパイルエラーがorz
includeなら変わらん。
コンパイルオプション付けるくらいなら拡張子替えるけどな。
>>716 多重にサブクラス化して
(そのサブクラス化をやめようとする以外の状況で)
どういうエラーになるのか分からないけど、
GetClassInfoExで元々のウィンドウプロシージャが取得できるかもしれない。
別プロセスのウィンドウに対してGetClassInfoExでそれが取得できるのか知らないけど。
Visual Studio 2010 で windws form
にて chart control でグラフ表示をしています
そこでchart controlの使い方で質問なんですが
たとえばタイマーなどで以下のようなプログラムをループさせていて
for(int i= 0; i>100; i++){
chart1->Series[0]->Points->Add(i);
}
コンパイルしてグラフをみていくとX軸が1づつ増えて自動でX軸のMAXを延長してくれますが
このときにX軸を0からMAXまでではなく最新の20だけ(iが80ならminが60、max80)みたいに
X軸の範囲を決めて使うことって可能でしょうか?
よろしくお願いします
あるクラスの中でRegisterClassEx関数とCreateWindowEx関数を別個のメソッドの内部で呼び出すとCreateWindowEx関数がエラーを出す
GetLastError関数によるとエラーは1407(Cannot find window class)とのこと
一方で、一つのメソッドの中で順に呼び出すとエラーなく実行された
MSDNによるとCreateWindowEx関数が失敗する原因は、
?パラメータに無効な値が指定された。
?システムクラスを登録したモジュールが別のモジュールである。
?WH_CBT フックがインストールされており、失敗コードを返した。
?WM_CREATE または WM_NCCREATE のウィンドウプロシージャが失敗した。
の四つであるそうで、二つ目の「?システムクラスを登録したモジュールが別のモジュールである。」の項にあることが原因であるように思われます
つきましては、質問なのですが、この「?システムクラスを登録したモジュールが別のモジュールである。」というのはどういう意味なのか(モジュールとは一体何のことを指して言っているのか)、
二つの関数を別のメソッドで呼び出すことはできないのかについて、どなたかご教示頂けないでしょうか
hInstanceの値が二つの関数で一致してないと言う意味じゃないかな
>>722 ありがとうございます!
このレスで自らの過ちが明確にわかりました。自分がまぬけでした
RegisterClassEx関数を呼び出すメソッドの方に、「this->hInstance = hInstance;」と書き加えたところ正常に動作しました
Web browserで広告クリックすると強制的にIEで開いてしまう
のですが、強制的にweb browserの中で開く方法を教えてください
VisualBasic2010
template関数の実装はヘッダ内部で書かないとリンクエラーを起こすようなのですがどうしてなのでしょうか
googleで検索してみたもののはっきりと説明のされたサイトが見つかりません
ヘッダに全部書いとかないと
たとえばstd::vector<int>とかしたときに定義が作成できないから
別にヘッダに書かなくても、関数の具体化の宣言をテンプレート関数のある翻訳単位に
まとめておけばいいんだっけ?
それが嫌なら全部ヘッダに書け、と
>リンクエラー
ソースファイルを複数に分けて作業するときに変数の宣言や受け渡しを分かりやすく説明してるサイトや書籍はありますか?
ここで聞けばいいよ
何かを作っているってわけではないのですが
ソースファイルを一つですることに慣れてしまってコンパイルに掛かる時間だったり公開するときに恥ずかしかったりで分けてできるようになりたいたいと思ったのですが今までと勝手が違ったりで
>>729 C言語入門書の次に読む本
みたいなタイトルの本には、それっぽいのが載ってた
まあ、分割コンパイルでググれば良いと思う
丁度自分の欲しそうな本だったので早速ぽちりました
ありがとうございます!
リンカの概念は難しいよな
今でもテンプレートとか使うとわかんなくなる
visual c++ 2008にでopencvを使ってプログラムを組み
while文を終了した時にcmd.exeが終了しません。
コマンドプロンプトのアプリケーションの終了でも
プロセスの終了でも終了できず、パソコンの電源ボタンを
押すしか対処できません。
ビルドも正常にできて、正常に実行されますが、
終了がうまくいきません、どうしたらいいのでしょうか?
atexit()すればいいんじゃないかな
CPUは正常に暴走しています
propertyキーワードって何をしているんでしょうか?
また使う意味は?
>>739 つまり
propertyキーワードの中にgetとsetの定義がされてあって
入力のときはset,出力のときはgetが自動で使われるということ?
まあそんな感じ
C#の機能の一つだったものを、VC++独自の拡張として導入したもの
「C# property」で検索すれば出てくる
cURLとlibcurlのライブラリを使うにはプロジェクトのプロパティにどう設定すればいいのでしょうか?
ファイルはlibcurl-7.19.3-win32-ssl-msvc.zipとcurl-7.28.1.zipをDLしました。
環境はwindows7 64bit、Visual C++ 2010 Expressで、WIN32コンソールアプリです。
>>743 普通にincludeとlibの設定すれば行けると思うけど。
プロパティで言えば
VC++ディレクトリのライブラリティレクトリ、
C/C++の追加のインクルードディレクトリ、
リンカー 入力 の追加の依存ファイル、
の3つかな。
DLL使うならそれなりの設定やコピーもね。
745 :
743:2013/02/03(日) 15:27:59.79
>>744 リンカー 入力 の追加の依存ファイルを設定したら動きました。
ありがとうございました。
746 :
デフォルトの名無しさん:2013/02/04(月) 21:50:40.98
VC++を使ってマウスショートカット的なアプリケーションを作りたいのですが、
特定のアプリケーションごとに動作を切り替えるような処理を作るのに
参考になるようなページはありますか?
もしくはこういうワードで調べると出てくる、といったものでも結構です。
ご存知のかたお願いします。
GetForgroundWindow
A.hファイルで構造体を宣言し、B.cppで実体宣言してるはずなんだけど
C.cppでメンバに値を代入すると波線が引かれ定義されていないと言われる
でもそこで右クリックから宣言へ移動や定義へ移動をするとB.cppの実体宣言したところに飛ばされる
いろいろ試行錯誤したけどついに意味がわからなくなりました
どういうことなんでしょうか VC++です
C.cppでA.hをincludeしてないんだろう
B.cppの実体はC.cpp上、もしくはincludeファイル上でextern宣言されてる?
ただのインクルードしわすれだろ
ちなみに、ビルドしてエラーになる?
インテリセンスでそういうのなら、正常な状態でもたまになったような。
試しにファイル名変えたら開けませんって返ってくるから
インクルードは大丈夫なはず
ファイル分割前は
typedef struct tagABC
{
typedef struct tagXYZ
{
inti;
doublej;
}XYZ;
XYZ xyz[10];
}ABC;
ABC abc[5];
abc[0].xyz[0].i=1;
みたいに書いてたんだけど (すいませんレス分けます)
これを分割しようとして
A.hに
typedef struct tagABC
{
typedef struct tagXYZ
{
inti;
doublej;
}XYZ;
XYZ xyz[10];
}ABC;
B.cppに
ABC abc[5];
で、C.cppで
abc[0].xyz[0].i=1;//識別子abcが定義されていません (abcに波線)
で、ビルドしたら
C.cpp(○○): error C2065: 'abc' : 定義されていない識別子です。
っていう状況
多分B.cppの実体宣言がちゃんと出来てないんだと思う
あとXYZはこのままでいいのか疑問
でもB.cppでABCと同じようにしようとしたらエラー吐かれる
>>754 A.h内でextern ABC abc[5];
A.hをB.cpp C.cppでインクルード
使用したい.cppではextern無しでABC abc[5];
すみませんでした
なんか焦ってて飛んでました
わざわざtodoまで書いて下さってありがとうございます
みんな優しくてよかったね
759 :
デフォルトの名無しさん:2013/02/06(水) 17:07:25.80
同名関数の引数の型違いのつもりで
bool Hoge(bool);
int Hoge(int);
を定義したのですが
コンパイルしようとすると
区別出来ないと言われてるみたいです
どうすれば回避できますか?
間違った
int Hoge(bool);
int Hoge(int);
です
関数名を違うものにする
BOOLはダメだよ、BOOLそのものはintのtypedef
bool と BOOL まちがえてたのか
>>747 ありがとうございました。
Express使おうと思ってますのでWTLでも入れてみようかと思ってるんですが
MFCじゃなくてもこの関数って使えますか
こんないいスレだったのか
どうせ自演なんだし
マスゴミのやらせや印象操作と同じで
捏造やりたい放題
自演、自演ってうるさい。おまえこそ常習犯だろ。
ふつうは、自演なんていう発想をしない
ブラウザ
最近 急に大量のpdbを開くようになっちゃったんだけど
そのせいでデバッグが始まるのに10秒くらいかかる
ntdllのpdbなんていらないよー
どうしたらいいの
オプション→デバッグ→シンボルのリストのチェックを外す
ソースの総行数知りたいです
VS のcl で定義済みマクロ一覧を表示するにはどうしたら良いでしょうか?
gcc -E -dM -x c++ -std=c++11 /dev/null | sort
みたいなのと同じことができればOKです
cl /E までは同じようなオプションがあるんだけど、 -dM 相当のオプションってどれなんでしょうか?
cl /? 見てる限りだとわからないです・・
ヘルプ。
途方もないコードのデバック途中で寝たくなったときってどうしてる?
今、言ったん寝て昼から同じ所スタートでデバックし直したいんだけど…
>>775 状況が許されるなら寝ればいい。頭が硬くなってるならそれ以上のものはない。
許されないなら、エナジードリンク系でものみながらしなない程度に頑張れ。
起きる手段があるなら20分くらいの仮眠が効く
チームでやってるなら、リーダーに要請して順に1時間くらいずつ仮眠を取るのが最善なんだけどね。
疲れてるときに単純にひとりで寝た日には起きたときにはすべてが終わってたりするから怖いよな。。
1時間だと脳が睡眠体勢に入ってしまうので、、、寝るための準備時間というのなら
そんなもんかなあ。
今まで初期状態でメインプロシージャまでやってくれる形でやってたけど
自分の型みたいなのが出来たから空のプロジェクトで作るようになった
今までに作ったソースを全て自分の型Verに書き換えないと
なんか仕事やり残した感があって気持ち悪い
他の人はこういう経験ある?
あるけど書き換えずに新しいのだけ自分の型Verにしてる?
気になったやつだけやってる
プロとしてなら、完成品に対しては出来ない。品質以前に必要な手順がありすぎだし。
趣味としてなら、次に必要になったときに最初から作り直す。
>>781 分かる分かるw
自分の場合は、新しく作るときに適用するようにして、
過去のは基本的にいじらないなぁ。
でも、新しく作る度に洗練されていく感があって楽しいよ。
他の人も経験あるんですねありがとうございました
サブクラス化されたプロシージャ外の変数へアクセスする方法は
ユーザー定義のメッセージを使用してアドレスを渡すくらいしかないですか?
サブクラス化する時に一緒に渡せると楽なのですが
グローバル変数
788 :
デフォルトの名無しさん:2013/03/03(日) 21:35:51.87
いっぱいありすぎて困る
メッセージの方法知ってるならそれ使えばいい。どんな方法でも渡せればいいんだから多少効率悪くても気にするなって
データ量や用途によって使い分けるものだから、それでも気になるならマルチしてないでぐぐって解決しとけ
SetWindowSubclass(hWnd, Proc, id, data);
RemoveWindowSubclass(hWnd, Proc, id);
DefSubclassProc(hWnd, Msg, wParam, lParam);
でいいんじゃね
マルチ見当たらないぞ
レス付きにくくさせるために言ってるのか?
VIPでやってたんだよ
URL無しって事は後はわかるな
>>789 ありがとうございます
dataとして一緒に渡せました
794 :
デフォルトの名無しさん:2013/03/10(日) 16:49:11.64
プログラミング初めて間もない者です
2010のCLRのWindowsフォームアプリで
一問一答形式の問題を作ってるんですが
回答を入力した後、正解かどうか判別して結果表示するプログラムはどうすれば作れますか?
問題文のLabelに文を入れ、回答欄と結果表示用のTextBoxとLabelを置くところまではできたんですが
C#じゃいかんの?
VC++のスレで何言ってんの?
だからいかんのか聞いておる
>>795>>797 VisualC#最適ってことはよく聞くけど、実感としてにどれくらい便利か分からない(理解できる知識もない)から
C#を独自に学ぶべきか判断できない感じです
>2010のCLRのWindowsフォームアプリ
これをそのレベルから始めるなら、C#で同じことやるやり方覚えてから
C++に戻った方が進みが早い気はする・・・
回答したらボタンかなんか押して、そのタイミングで判定するんじゃないの?
ボタン並べてダブルクリックすれば、メソッドできるからそこでやればいいと思うよ。
たとえば、カンマ区切りのテキストファイルかなにか用意しといて(こんなの)
1,質問1,選択肢a,選択肢b,選択肢c,答えb<CR+LF>
2,質問2,選択肢d,選択肢e,選択肢f,答えd<CR+LF>
3,質問3,選択肢g,選択肢h,選択肢i,答えi<CR+LF>
テーブルに突っ込んで、順次それ表示して「答え合わせ」ボタン押したら答えと比較して合否表示
する感じでいいんじゃねーの?まずは
ラベルに文字列を表示する方法
TextBoxに文字列を表示する方法
フォームに答えを選ぶボタンをおいて、そのボタンが押されたかどうかを判別する方法
まずはこの3つができるようにならないと。
>>798 言語問わないならどれで書いてもいい、むしろ求める方向(言語学習したいのか、ものが出来上がればいいのか)
にしたがえばいいのだよ
http://homepage2.nifty.com/natupaji/DxLib/dxuse_vc2010express.html これやってるんだけど最後のデパックでエラーになってしまう
1>------ ビルド開始: プロジェクト: test, 構成: Debug Win32 ------
1> DrawPixel.cpp
1>c:\users\www\documents\visual studio 2010\projects\test\test\drawpixel.cpp(1): fatal error C1083: include ファイルを開けません。'DxLib.h': No such file or directory
========== ビルド: 0 正常終了、1 失敗、0 更新不要、0 スキップ ==========
てでるんだけどどこが悪いんですか?
VisualC++ 2010 Express Edition のWin32です
4.DXライブラリを使用するためのプロジェクトの設定を行う
を全部行ってないから
>>803 サイト見てみたけど、そのエラーは
↓がうまくできてない
E 『追加のインクルードディレクトリ』の項目にDXライブラリのパッケージ内に入っている
『プロジェクトに追加すべきファイル_VC用』フォルダのパスを入力してから、
再度ダイアログ右下にある『適用』ボタンを押します。
( パスの例→ c:\DxLib_VC\プロジェクトに追加すべきファイル_VC用
なお、DXライブラリをマイドキュメントフォルダに入れるとこれらのパス指定が面倒になりますので
DXライブラリはなるべく浅いフォルダに入れておくことをお勧めします )
HelloWorldできた!!!
おめでとう!!
ありがとう!!!!!
セキュアな関数について質問なのですが
strcpy_s(buf1, n, buf2)
strncpy_s(buf1, n, buf2, m)
memcpy_s(buf1, n, buf2, m)
memmove_s(buf1, n, buf2, m)
のn > mが明らかな時は
strcpy_s(buf1, m + 1, buf2)
strncpy_s(buf1, m + 1, buf2, m)
memcpy_s(buf1, m, buf2, m)
memmove_s(buf1, m, buf2, m)
としても問題ない・・・ですよね?
またn > 100, m < 10の時
memcpy_s(buf1, 50, buf2, m)
みたいに適当な値を入れるのはあまりよくないのでしょうか?
これならいっそのこと警告を無視して「_s」の無い関数を使ったほうがいいのでしょうか?
nはbuf1のサイズを指定する。
それ以下でも動くけど使い方としては間違っている。
代入先のバッファーサイズ指定だから、質問的に根本的に理解できてないと思う
中途半端に_sを使うぐらいなら、警告無視して従来のでやってた方がいいと思うよ
812 :
809:2013/03/12(火) 02:03:10.05
すいません、例えば
char buf[100] = "aaabbbcccdddeee";
char *buf1 = strchr(buf, 'd');
char buf2[] = "CCCDDD";
memcpy_s(buf1 - 3, sizeof(buf) - (buf1 - 3 - buf), buf2, 3);
みたいな時
memcpy_s(buf1 - 3, 3, buf2, 3);
としても期待した結果(buf:aaabbbCCCdddeee)が得られたので計算するのが何だか無駄に思えて・・・
上の第2引数の計算式もあってるか不安になりますし。
でもやっぱり下では何か問題があるのでしょうか?
ふええ…変数こわいよぉ…
無駄に思えるも何も、_sを使う意味合いを根本的に間違えてるから、_sを使わなくていいと思うよ
>>812 >すいません、例えば
>char buf[100] = "aaabbbcccdddeee";
>char *buf1 = strchr(buf, 'd');
>char buf2[] = "CCCDDD";
>memcpy_s(buf1 - 3, sizeof(buf) - (buf1 - 3 - buf), buf2, 3);
strchr(buf,'d')で得られるポインタの3文字前が有効なんて仮定の話はしたくない。
>memcpy_s(buf1, sizeof(buf) - (buf1 - buf), buf2, 3);
これなら正しい
charが1byteかどうか分からないから、つかうならsizeof(char)で割っておくべき
charは1byteだと規格で決まっています
そういう思い込みはドツボることがあるからやめたほうがいいと思うよ
charは1バイトだろ
1バイトの幅が8ビットとは限らないけど。
BYTE型はいつでも1バイトだと思ってたことがありました…
821 :
809:2013/03/12(火) 12:12:41.81
>>814 少し調べ直しました。意図しない領域への書き込みを防ぐためですよね。
書き込み先のサイズが書き込むサイズより大きいのが明らかなら
この問題は起こりえないので_s無しの関数を使った"方がいい"、と解釈してもいいですか?
警告を消すためだけに_s付きの関数を使ってその上書き込み先のサイズの計算を大着するのはやっぱ言語道断なんでしょうか・・・
>>815 それは考えてなかったです。
確かに計算したアドレスが有効と断定するのは良くないですよね。
ただ実際有効で無いと困るので3行目と4行目の間に
if (buf1 - buf < 3 ) return 0;
を挿入しようと思います。これなら問題無い・・・ですよね?
適当なことやるくらいなら
_CRT_SECURE_NO_WARNINGS
定義した方がまだまし。
823 :
809:2013/03/12(火) 12:53:07.25
>>822 そういう風に警告を消せる事は知りませんでした。
これを定義して書き込み先のサイズが大きいところは_s無しの関数を使うことにします。
みなさんありがとうございました。
>>822だな。仕事なら中途半端に使われると逆に困る。趣味なら_sは要らないと思う
>>812の例なら
strchrでNULLが返ったときのチェック
buf[-1]やbuf[100]に書き込まないようにチェック
この2つのエラー処理をしておけばいいというか、_sを使うよりそうしといた方がいいし、
もっと言えばstrcpyやstrcpy_sなんて捨ててCStringA::Replace使った方がいいでしょ
825 :
809:2013/03/13(水) 14:37:13.19
>>824 趣味です。
ありがとうございます、大変参考になります。
CreateWindowExのdwStyleパラメータに、既存のウィンドウからGetWindowLongで取得した値を使うとエラーが出ます(87, パラメータが違います)
そもそもCreateWindowExで新しいウィンドウを作った直後にGetWindowLongでdwStyleを取得すると、最初に指定した値とは全然関係のない値が帰ってきていました
どうすればいいのでしょう
827 :
デフォルトの名無しさん:2013/03/13(水) 22:23:30.13
>>826 ウィンドウのクラス名とスタイルの値をさらせ
http://codepad.org/wt2IZYYA 明解C言語入門編では このコードに12と入力すると0 1 2 3・・・
と数字の間に間隔が空くはずなのですがコードを打ってデバッグしてみると間隔があきません。
01234・・・ という感じになってしまいます。
環境はVisual C++2010 Expressです。
何回も見なおしたのでコードの打ち間違いではありません。
どうすれば間隔が空くのでしょうか?
%d が
printf("%d ",i++);
832 :
830:2013/03/14(木) 01:10:31.16
すみません、間違えて送信してしまいました。
>>828 %d が数字部分だから
" %d"または "%d "のように前か後ろに空白を入れればよい
>>832 ありがとうございます。
よーく見てみたら本には空白空いてました・・・
putcharが原因かと思ってたのにここだったとは
本も読めないヴァカ
何故急に煽ったしww
>何回も見なおしたのでコードの打ち間違いではありません。
理由がわからないのに、自分の間違いではないと確信する雑魚は死んだ方がいい。
初心者スレで煽ってるヤツこそ。
その本がどういう書き方してるのか知らないが
内容的にループと文字出力の極初期の基本的なサンプルなんだから動作内容の説明があるだろうに
全く理解せずただ漫然と入力して結果だけ確認しようとしてる姿勢には眉を顰めるな
おまえらプログラム1つ書けない初心者のくせして厳しいな
初心者が文法などより先に覚えなければいけない鉄則
・自分が間違っている可能性が一番高い
・自分は間違っていないという判断が間違っている可能性が一番高い
・自分は間違っていないという判断は間違っていないという判断が間違っている可能性が一番高い
思い込みが一番危険
自分のコードを読み返すときは書いたことを忘れて
一旦頭を真っ白にしてから読むこと
ここはごく数人のヘタレどもがチンシコする糞スレです
うまく答えられないときはエラそうになんだかんだいちゃもんつけてきます
看板に偽りスレなので素人が質問しても時間の無駄です
わかったら相手にせず黙って去りましょう
846 :
デフォルトの名無しさん:2013/03/15(金) 22:07:33.54
このスレわかりやすいです。ありがとうございます。
初心者が初心者に嘘を教えるスレです
848 :
デフォルトの名無しさん:2013/03/16(土) 09:54:42.90
良く読み返してみると、「教える側も、勘違いしている部分」も、
ないとはいえないわな。
それはある意味あって当たり前だろ。
意図してウソ教えるのとは違う。
850 :
デフォルトの名無しさん:2013/03/16(土) 11:20:21.58
初心者が初心者に上級者のフリして教えてたら
それはうそと言って良い
851 :
デフォルトの名無しさん:2013/03/16(土) 12:09:50.18
姉は精神障害者
俺は統合失調症
弟は知的障害者
854 :
デフォルトの名無しさん:2013/03/16(土) 20:54:35.81
兄は松崎しげる
妹はヤンキー
父は腎不全
御前等歯1級精神障害者
マジで何のつもり?
#include <stdio.h>
#include <time.h>
int main(int ac, char **av)
{
time_t time;
struct tm t, *l;
t.tm_year = 2013 - 1900;
t.tm_mon = 3 - 1;
t.tm_mday = 18;
t.tm_hour = 8;
t.tm_min = 0;
t.tm_sec = 0;
time = mktime(&t);
printf("%ld\n", time);
l = localtime(&time);
printf("%d-%02d-%02d %02d:%02d:%02d\n",
l->tm_year + 1900, l->tm_mon + 1, l->tm_mday,
l->tm_hour, l->tm_min, l->tm_sec);
return 0;
}
これで 1363557600 2013-03-18 07:00:00 という結果になるのですが、
なぜ一時間ずれるのでしょう?
普通はずれないと思うけどそれは謎だな
サマータイムある場所?
tm_isdstがクリアされてない。
862 :
デフォルトの名無しさん:2013/03/18(月) 21:50:58.55
>>858 t.tm_mon を 7 とかにするとずれないね
>7 とか
じゃなくて1から12までやってどれがずれてどれがずれないのよ。
って本人だよね?他にもずれる人いるの?
ずれてる人、PCの時刻設定でタイムゾーンどうなってる?
>>861で解決でしょ。解決後にのこのこ出てきてボケる芸風?
865 :
デフォルトの名無しさん:2013/03/19(火) 13:54:58.72
>>864 >>862はどうなんだ?
あと自分の環境でtm_isdstに何かセットして試してないだろ?
時差9時\
>>866 ずれる環境を用意できないゴミは参加資格なし。
どうしてこう場外乱闘が好きなんだ。おまえら。
870 :
デフォルトの名無しさん:2013/03/19(火) 21:51:38.82
>>858 Lと1の区別が付かないな。
大文字で書け。
どんなフォント使ってんだw
872 :
デフォルトの名無しさん:2013/03/20(水) 00:03:40.36
アイコンをシステムトレイに格納する 方法をどなたかご教授いただけないでしょ うか? 使用環境はWindows7 HomePremium VC++2010 Express です。
d.hatena.ne.jp/peryaudo/20100512/1273671808 を参考にして書いてみましたが、 NOTIFYICONDATAが宣言されていな いと言われ、コンパイルが通りません でした。
windows.hをincludeする前に、
#define WINVER 0x0501
とか入れるんじゃなかったっけ
馬鹿には無理
すげぇ・・・
878 :
877:2013/03/20(水) 18:46:54.36
いや、自己解決だから違う理由かw
基底クラスと派生クラス両方のコピーコンストラクタ、代入演算子を呼び出すにはどのようにすれば良いのでしょうか
はよ
881 :
デフォルトの名無しさん:2013/03/27(水) 22:31:38.82
ちょっと待て
何がやりたいんだ?
>>881 やはりそうするしかないのでしょうか
コンストラクタやデストラクタは派生クラスの側で明示的に書かなくとも良い
誤って書き込んでしまいました
コンストラクタやデストラクタは明示的に書かなくとも良いのにという思いです
>>883 今回やりたかったのは、参照カウントを持った基底クラスを継承することでコピーを管理するというものです
例えばLast()という関数で参照カウントが1であることを確認してからリソースを開放するなど
もちろん継承を使わなければ実装できないものではありませんが、クラス名の横にごにょごにょ書くだけで済むなら便利かなと考えたわけです
derived_class::derived_class(const derived_class& d) : base_class(...)
{...}
base_class::operator=(value);
>>884 派生クラスのコピーコンストラクタから、基底クラスのコピーコンストラクタを呼び出したいと言うこと?
はよ
>>886 そういうことです
勝手に呼ばれるものだと思っていたのですが、どうもそういう訳ではないようですね
>>885 これでうまくいきました
コピーコンストラクタでもこの書き方が出来たのは知りませんでした
レスありがとうございました
コンストラクタは何も書かなくとも自動的に呼ばれるのに対し、コピーコンストラクタは派生クラス側で明示的に呼び出してやる必要があるということのようです
やや不思議ではあります
>>884に書いたことはコピーや代入は使わずに適当にAddRef関数でも作っときます
はよ
なんかとんちんかんなこと書いてるな…
参照カウントの値だかポインタだかを渡さないといけないのでコピーやらはしなければなりません
まあ何でもいいですね、質問の本旨でもないですし
はよ
最高の頭脳はこんなところで油を売ってる暇はないし
暇があったとしてもとっくに他のコミュニティに移動してる
こんな匿名の叩き煽りが日常茶飯事で自分にメリットが薄いようなところは
最高の頭脳でなくともまともな人間でもさっさと去るよ
他にコミュニティがない10年前なら最高の頭脳もいたかも知れないが、
いつの間にかいなくなって今ではその幻想だけが残ってる
最高の頭脳持ってる奴は他のコミュニティに行っても入っていけるから困らなかっただろう
そしてそういったコミュニティで相手にされない奴が集まってるのが2ch
>>888 コンストラクタで自動で呼ばれるのは、デフォルトコンストラクタのみだけどね。
デストラクタは自動で呼ばれるけど、これは唯一にしか存在しないからだね。
c++は基本的に、全て明示するのが基本で、例外的にいくつかの自動があると思った方が良いよ。
894 :
デフォルトの名無しさん:2013/03/28(木) 15:34:23.65
なんかとんちんかんなこと書いてるな…
おい一つ上のスレッド開こうとしたらマウスがずれてこの開いただろうが糞スレ上げんな氏ねキチガイ
VC++2010をVistaで使用しています
空のプロジェクトを作成した時に
ソース ファイル
リソース ファイル
ヘッダー ファイル
この3つのフィルタがデフォルトで作成されるのですが
デフォルトで作成されるフィルタが
Main
ProjectName
みたいにカスタマイズした状態で作成されるようにしたいです
デフォルトで作成されるフィルタを変更するにはどうすればいいですか?
wizardの生成用jsファイルを自分の好みに応じて編集すればいい
カスタムウィザードのキーにたどり着いたのでやってみます
ありがとうございました!
Express Editionで
>>897をやる事ってできる?
カスタムウィザード項目が無い
検索能力が皆無のお前には無理
>>901 ウィザードではなくて
default.js
Templates.inf
.vsdir
.vsz
これらを直接変更加えて追加したら出来ました
ありがとうございました
構成プロパティにある作業ディレクトリをDefault.jsで指定するにはどうすればいいですか?
Main.exeからA.dllを呼んでA.dllからB.dllを呼んだ場合
A.dllのエディットコントロールではキー入力が処理されるのに
B.dllでは処理されません
どうすればB.dllのエディットコントロールでもキー入力が処理されるようになりますか?
TranslateMessageとDispatchMessageをちゃんと呼んでるか確認
>>903 var config = proj.Object.Configurations('Debug');
config.WorkingDirectory = Path;
でいけるはずだがエラーになるな
Default.vcxprojに
<LocalDebuggerWorkingDirectory>Path</LocalDebuggerWorkingDirectory>
追加したらいい
>>905 MainでTranslateMessageとDispatchMessageを呼んだら実現できました
さらにリターンキーでデフォルトボタンが押された動作にしたかったので
メッセージループ内でDLLダイアログハンドルを保持させるstatic変数を宣言
→DLL内でFindWindowを使用してMainウィンドウハンドルを取得
→ユーザーメッセージを使用してDLLからMainへダイアログハンドルを送信
→IsDialogMessageで通常通りの分岐
最終的にはこのような感じに落ち着きました
ありがとうございました
VisualC++2008Expressです。
1つのソリューション内に2つのプロジェクト、A(exeプロジェクト)、B(DLLプロジェクト)を作ったとします。
AとBは同じモジュール(C++コード)を共有しており、Aでコンパイルした結果の.objをBのコンパイルでリンクさせたいとします。
このとき、対象となる共有モジュールをBでリンクさせるためには以下の方法があります。
方法1:
・プロジェクトAに共有モジュールをソリューションエクスプローラに登録
・プロジェクトBに共有モジュールをソリューションエクスプローラ上でプロジェクトAからコピーしてやる
方法2:
・プロジェクトAに共有モジュールをソリューションエクスプローラに登録
・プロジェクトBのプロジェクトのプロパティのリンカ設定で追加の入力から共有モジュールの.objファイルを指定する
なお、共有モジュールは複数あり、以後追加されていきますし、DLL化対象は都度変更します。
上記いずれの方法にしても、いちいちコピーやプロパティの変更が面倒です。
もし、プロジェクトAで生成された.objファイルを自動でリンクしてくれたら楽チンです。
ソリューションエクスプローラ上で複数のプロジェクトに共有(リンク)されるようにできる登録方法はないでしょうか??
プロジェクトの依存関係を設定(BがAに依存)するだけではダメでした。
>>910 既にあるプロジェクトにリンク指定したいのか
新たに作成されるプロジェクトに初期値としてリンク指定したいのか
どっち?
プロジェクトC(LIBプロジェクト)を作成し、そこに共有モジュールを登録する。
それが必要なプロジェクトにCへの依存関係を設定する。
912 :
909:2013/04/04(木) 22:53:29.64
>>910 前者のほう、既にあるプロジェクト間でのリンクです。
>>911 なるほど、その手がありますね。
明日会社でやってみます。
その手がってより、王道だけどな。
dllプロジェクトを作成してビルドする時に.expファイルとかのdll以外のファイルもdllと同じ場所に出力されるのが嫌なので
全般->出力ディレクトリ->
リンカー->全般->出力ファイル->
この2箇所を変更したのですが
warning MSB8012: TargetPath() が Linker の OutputFile プロパティ値 () と一致しません。
このため、プロジェクトが正常にビルドされない可能性があります。
この問題を解決するには、$(OutDir)、$(TargetName)、および $(TargetExt) の各プロパティ値が、%(Link.OutputFile) で指定されている値と一致することを確認してください。
と警告が出てしまいます
dllファイルとexpの出力場所を変更してさらにこの警告が出ないようにするにはどうすればいいですか?
#pragmaの警告無視以外の方法があれば教えてください
ビルド後イベントに必要なファイルだけをどっか適当なところにコピーするバッチファイルでも仕込む。
そういう手段しかないのですね
ありがとうございました!
917 :
909:2013/04/05(金) 20:19:11.56
918 :
デフォルトの名無しさん:2013/04/17(水) 20:31:53.57
等高線グラフを表示させたいのですが、
手段が見つかりません。
3D点(x,y,z)の点(データ)×数万個を線で結びつけて、色付けしたものです。
チャートコントロール(mschar)では等高線をサポートしておらず、実現できません。
System::Windows::Forms::DataVisualization::Charting::Chart
どなたかご教授くださいませ!
[環境]
visual c++ 2008 express
vs2012へ更新検討中
919 :
片山博文MZパンク ◆0lBZNi.Q7evd :2013/04/17(水) 21:00:16.72
>>918 自分で描画したいなら、遠近法で(x/(z+α),y/(z+α))みたいにして奥の方から描画。OpenGLの方が簡単で無難。
ピクチャコントロールのウィンドウハンドルを取得。
自前で描画する場合はウィンドウのDCを取得。
OpenGLで描画する場合はウィンドウにピクセルフォーマットを設定。
921 :
デフォルトの名無しさん:2013/04/17(水) 23:17:56.11
>>919 >>920 書き込みありがとうございます。
遠近法、自前で描写、…難しそうです
変数->ADD(xの値,yの値,zの値);
変数->全ての点を線で結ぶ;
変数->zの値を元に色付けする;
っていうレベルで考えてます
OpenGLとかDirectXなら可能でしょうか?
922 :
デフォルトの名無しさん:2013/04/17(水) 23:21:27.31
>>919 >>920 追加で…
ググってみたところ、Microsoft.Office.Tools.Excel.Char でグラフを作成できるのかな、
と思いました。(Excelだと等高線グラフを簡単に作成できるため)
Microsoft.Office.Tools.Excel.Charは何をするためにあるものでしょうか?
望みのことができますか?
できるなら、どのように導入(参照設定やら名前空間やらツールボックスやら)できますか?
マルチ
ヒント:OLE
926 :
片山博文MZパンク ◆0lBZNi.Q7evd :2013/04/18(木) 00:24:38.33
本当にVC++でやりたいの?
初心者ならEXCELのVBAでやるのが一番楽
一番楽 キリッ
言い切るならコードを示してみろよ
ここは初心者にURLの貼り方を教えるスレではない
windows上で,読み書きの両方ができる_popen()の拡張を作るにはどうしたらいいだろうか。
_popen()で開いた子プロセスに対して,コマンドを投げて,その結果をもらって,また次のコマンドを投げて・・・
ということをやりたい。
条件として,子プロセスに対して,改変を加えるのはなしの方向で。
Linux上ではできるみたいだが,Windows上ではできるのだろうか。
どなたか教えてください。
[環境]
Visual C++ 2010
Windows 7/8
DialogBoxを、リソースファイルなしで、プログラムから動的にデザイン(サイズ、コントロールの追加など)することは
可能でしょうか?
その場合、参考となるAPIを1つでいいので教えてください。
(それをもとに検索して他にも色々調べます)
「動的ダイアログ作成 vc」で検索
933 :
931:2013/05/20(月) 21:32:37.16
934 :
片山博文MZパンク ◆0lBZNi.Q7evd :2013/05/20(月) 23:48:16.04
935 :
930:2013/05/24(金) 08:41:11.60
>>934 大変遅くなりましたが,ありがとうございます。
キーワードを元にがんばってみます。
VC2008で AfxMessageBox()でコンパイル出来ない
Express ってオチか?
938 :
936:2013/05/24(金) 15:02:37.67
あれ 出来そうな感じね。
久々にVCいじってみたら綺麗に忘れてる。
なんか勘違いしてるのかも。
AfxMessageBoxはMFCの関数。プロジェクトはMFCサポートしてるか?
940 :
936:2013/05/24(金) 22:10:48.74
>>939 あう チェックしてるみます。 でもそれっぽい ハジー
941 :
デフォルトの名無しさん:2013/05/26(日) 04:59:13.13
2010のExpressについて質問です
1,
TODOコメントを入れる時に日付とか名前を自動で入れられるようにできないですか?
要するにTODOコメントのテンプレを作りたいってことです
2,
switchとかclass(アクセス指定子)とかのインデントを個別に設定出来ませんか?
942 :
デフォルトの名無しさん:2013/05/28(火) 23:26:59.24
Visual C++ 2010 Express - CRLを使用して、部活動分類ツールを作っているのですが
うまくいきません。
苗字とクラスをコンボボックスから選んで、該当する組み合わせがあれば
コピー専用のテキストボックスに所属している部活動名が表示されるプログラムです。
if文を使って処理をしようと思っているのですが、項目の編集で登録した
苗字、クラス名の要素をどうやって取得していいのかわかりません。
どうすれば、AddRange(gcnew cli:: array< System::Object^ >(数値) {}); から要素を取得し、
仕様通りに動くプログラムを作ることができるのでしょうか?
作りかけのプロジェクトを置いておきます。
http://kie.nu/11at
コード見たけど。
そもそもどうやって、名字とクラスと部活を結びつけようとしてんの? どこにもなさそうなんだが。
簡単な方法としては、上の3つを要素として持つクラスを作成して、その配列に生徒?を登録。
条件を入力されたら、上の配列の名字とクラス名とで照らし合わせて一致してれば
その同じ要素にある部活名を表示でいいんじゃね。
検索の方法は、for ループで配列をまわして if でチェックでもいいし、LINQ が使えるならそれ使ってもいいし。
あと、ここで言うのもなんだが。その内容なら C# でやった方が。。。
944 :
デフォルトの名無しさん:2013/05/29(水) 21:16:22.37
C++を始めて間もないのですが教えてください。
_tmainのコンソールアプリのプロジェクトでMFCのクラスを使いたいのですが、
この場合はどのようにするのでしょうか?MFCのアプリだと派生クラスで定義しているのは
参考にしているプロジェクトで分かるのですが、コンソールアプリだとどうしたらよいのでしょうか
プロジェクト作るときにMFCにチェック
946 :
デフォルトの名無しさん:2013/05/29(水) 21:36:39.30
>>945 すみません説明不足でした。
参考にしているMFCアプリのソースがありまして、それは派生クラスを使って、外部のクラスを呼び出しているところまでは分かりました。
コンソールアプリでMFCのチェックを入れれば、とりあえず、同じ外部のクラスを読み込ませることはできたのですが、
読み込ませただけで、どのようにしたら使えるようになるのかがわかりません。
_tmainの場合とMFCの派生させて使う場合の使いわけが、混乱しています。
MFCを利用してるサードパーティ製のクラスの利用方法が聞きたいってことか。
それはエスパーじゃないと答えれないな
948 :
デフォルトの名無しさん:2013/05/30(木) 08:33:58.88
AfxWinInit関係を調べます。
VC++ 2008 の win32 console(マルチバイト文字セットを使用する)
にて下記のようにエラーが出力されます。
----
0xC0000005: 場所 0xcdcdcdc9 を読み込み中にアクセス違反が発生しました。
0xC0000005: 場所 0xcdcdcdc9 を読み込み中にアクセス違反が発生しました。
プログラム '[15796] test.exe: ネイティブ' はコード -1073741819 (0xc0000005) で終了しました。
----
▽▽▽ ソース
#include <stdio.h>
#include <atlstr.h>
int main(int argc, char* argv[])
{
CString *pstr;
pstr = (CString *)malloc(sizeof(CString) * 2);
pstr[0].Format("test0");
pstr[1].Format("test1");
printf("%s\n", (char *)(LPCTSTR)pstr[0]);
printf("%s\n", (char *)(LPCTSTR)pstr[1]);
free(pstr);
return 0;
}
△△△
CString型配列を動的に確保する方法がありましたら、
ご教示お願いします。
× pstr = (CString *)malloc(sizeof(CString) * 2);
○ pstr = new CString[2];
× pstr[0].Format("test0");
○ pstr[0].Format(_T("test0"));
×printf("%s\n", (char *)(LPCTSTR)pstr[0]);
○printf("%s\n", (CStringA)pstr[0]);
× free(pstr);
○ delete[] pstr;
>>950 丁寧に教えていただきありがとうございます
01: #include <stdio.h>
02: #include <atlstr.h>
03: #include <vector>
04:
05: int main(int argc, char* argv[])
06: {
07: std::vector<CStringA> vstr;
08: int bk_cnt, cnt = 0;
09:
10: bk_cnt = cnt;
11: vstr.resize(cnt + 1);
12: if( bk_cnt == vstr.size() ) return 0; // メモリ再割り当て失敗の場合は終了する
13: printf("bk_cnt=[%d] size=[%d]\n", bk_cnt, vstr.size());
14: vstr[ cnt++ ].Format("あああ");
15: printf("vstr[%d]=[%s]\n", bk_cnt, vstr[bk_cnt]);
16:
17: bk_cnt = cnt;
18: vstr.resize(cnt + 1);
19: if( bk_cnt == vstr.size() ) return 0; // メモリ再割り当て失敗の場合は終了する
20: printf("bk_cnt=[%d] size=[%d]\n", bk_cnt, vstr.size());
21: vstr[ cnt++ ].Format("いいい");
22: printf("vstr[%d]=[%s]\n", bk_cnt, vstr[bk_cnt]);
23:
24: return 0;
25: }
26: ----【実行結果】----
27: bk_cnt=[0] size=[1]
28: vstr[0]=[あああ]
29: bk_cnt=[1] size=[2]
30: vstr[1]=[いいい]
見にくいソースで申し訳ないのですが、
>>952について教えて欲しいです。
VC++ 2008 の win32 console(マルチバイト文字セットを使用する)環境で実行しました。
std::vector を使い CStringA型の配列のメモリを動的に再割り当てするプログラムです。
vector::resize の成功か失敗かを知りたいのですが、この関数はvoid型なので、
戻り値がありません。
10行目、12行目にて、メモリの再割り当てが成功か失敗か判断しているつもりですが、
「成功(要素数が増加している)、失敗(要素数に変化なし)」という判断方法で、
合っていますでしょうか。
ご存じの方がいらっしゃれば、よろしくお願いします。
例外知らないとかお前なにを勉強してたんだ
>>954 すみません。あまり慣れていない手段(例外)は使いたくなかったので避けていました
>>952では失敗を検知するのは例外(try , throw , catch)を使う方法しかないのでしょうか
ない
958 :
デフォルトの名無しさん:2013/08/06(火) 00:20:27.85
教えてください
959 :
片山博文MZパンク ◆0lBZNi.Q7evd :2013/08/06(火) 00:34:10.55
お断りします
ひどいわ
Visual c++でCを使う方法を教えて下さい。基本情報受けたいです。
ファイル拡張子をCにしたら?
ありがとうございます、普通にフォルダで見るとCのファイルに変わってるんですが、VisualC++ を開いた時、左側のソリューションのところでは画像がC++のファイルのままです。これは変わってるんですか?
よく分からんが変わってるんじゃない?
CもC++も同じだから気にするな
ファイルの拡張子を表示する設定にしてないとか
968 :
デフォルトの名無しさん:2013/08/08(木) 22:14:37.79
>基本情報受けたい
って意味がよく分からん
試験勉強に使いたいって意味だろ気にすんな
VC使ってのに未だにfreadとか平気使う
私もいますよ。
つうか何でもぶちんで動けばいいやって考えはやばいですか
仕事じゃなきゃそれがいいよ
書かない、動かないのほうがやばい
Cのアパコンパチなんでコンパイル、リンクが出来て
テストパスすればいんでしょうけど、
やぱC++のfstreamとかiosとかでやりたいってのはあるよねぇ。
2ヶ月空いてるのに食いつき方きめえな
特におまえは
>>959シコシココード書いてろ
こいつこそ、5 日も空けてから入れるツッコミじゃないと思うが。
誰が誰だか
まあまあ
野良関数はどこのファイルに書いていいのですか?
mainだけ?
ほかのクラスの.cppに適当に放り込んでもいいのですか?
どこでもいいけど
後で困らないように分けといたら?
ありがとうございます
コードは書いてあっても
ファイル分けまで説明してない本が多くて
基礎を読んだ後いざ作ろうとするとよくわからなくなってしまいました
>ほかのクラスの.cppに適当に放り込んでもいいのですか?
これはクラスのメンバ関数とは別にそのまま呼び出せるのでしょうか
そのまま呼び出せなきゃ困るだろ
はい
わかりました
そこからか。
プロトタイプ宣言をヘッダにまとめて、使いたいとこでinclude
そのファイルでしか使わないなら、上の方にプロトタイプ宣言書けばいい。
関数定義を上に持っていく、というものぐさはあとで困るかもw
俺は野良関数でも野放しにしないで、野良関数用のclass作っておくな
ためしにでたらめなものでやってみましたが
そのプロトタイプ宣言は
ヘッダにも書けるし
mainにも書けるのですね
せっかく別ファイルに書いたのにmainに書いていては意味無いですが
あ