★初心者にVisual C++を教えるスレ★ Part38
レス数が950を超えています。1000を超えると書き込みができなくなります。
0001デフォルトの名無しさん
2011/11/03(木) 00:54:48.61お兄ちゃんお姉ちゃん達が優しく、時には厳しく回答してくれるスレッドです。
■質問するにあたって
・エラーや警告のときはエラーメッセージを書きましょう。
・開発環境も書きましょう、特にWindowsForm、MFC、Win32アプリケーションの区別。
・できるだけ具体的に。
質問の仕方については次のページが大変参考になります。
http://www.hyuki.com/writing/techask.html
■回答するにあたって
・回答する場合はその答えに至るための「コツ」も書いてあげると良いでしょう。
(MSDNのどの項目だとか、何のキーワードでGoogleするとか)
・ネタや煽りは軽く流しましょう。
【過去スレ】
Part37 http://hibari.2ch.net/test/read.cgi/tech/1299982561/
Part36 ttp://hibari.2ch.net/test/read.cgi/tech/1273939582/
Part35 ttp://pc12.2ch.net/test/read.cgi/tech/1256645713/
Part34 ttp://pc12.2ch.net/test/read.cgi/tech/1245382769/
Part33 ttp://pc12.2ch.net/test/read.cgi/tech/1235292263/
0851デフォルトの名無しさん
2013/03/16(土) 12:09:50.180852デフォルトの名無しさん
2013/03/16(土) 12:39:59.190853デフォルトの名無しさん
2013/03/16(土) 15:23:00.130854デフォルトの名無しさん
2013/03/16(土) 20:54:35.810855デフォルトの名無しさん
2013/03/16(土) 20:56:33.910856デフォルトの名無しさん
2013/03/17(日) 23:06:50.030857デフォルトの名無しさん
2013/03/18(月) 00:49:12.01マジで何のつもり?
0858デフォルトの名無しさん
2013/03/18(月) 08:39:59.40#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 という結果になるのですが、
なぜ一時間ずれるのでしょう?
0859デフォルトの名無しさん
2013/03/18(月) 09:49:21.610860デフォルトの名無しさん
2013/03/18(月) 10:28:57.200861デフォルトの名無しさん
2013/03/18(月) 13:56:02.150862デフォルトの名無しさん
2013/03/18(月) 21:50:58.55t.tm_mon を 7 とかにするとずれないね
0863デフォルトの名無しさん
2013/03/19(火) 10:45:03.30じゃなくて1から12までやってどれがずれてどれがずれないのよ。
って本人だよね?他にもずれる人いるの?
ずれてる人、PCの時刻設定でタイムゾーンどうなってる?
0864デフォルトの名無しさん
2013/03/19(火) 11:29:18.270865デフォルトの名無しさん
2013/03/19(火) 13:54:58.72全部大文字で書け!
話はそれからだ。
0866デフォルトの名無しさん
2013/03/19(火) 14:33:35.32>>862はどうなんだ?
あと自分の環境でtm_isdstに何かセットして試してないだろ?
0867デフォルトの名無しさん
2013/03/19(火) 14:51:39.610868デフォルトの名無しさん
2013/03/19(火) 17:09:06.65ずれる環境を用意できないゴミは参加資格なし。
0869デフォルトの名無しさん
2013/03/19(火) 21:49:56.960870デフォルトの名無しさん
2013/03/19(火) 21:51:38.82Lと1の区別が付かないな。
大文字で書け。
0871デフォルトの名無しさん
2013/03/19(火) 23:53:52.390872デフォルトの名無しさん
2013/03/20(水) 00:03:40.36MS Pゴシック 12 pt
0873デフォルトの名無しさん
2013/03/20(水) 13:08:26.88d.hatena.ne.jp/peryaudo/20100512/1273671808 を参考にして書いてみましたが、 NOTIFYICONDATAが宣言されていな いと言われ、コンパイルが通りません でした。
0874デフォルトの名無しさん
2013/03/20(水) 14:24:44.91#define WINVER 0x0501
とか入れるんじゃなかったっけ
0875デフォルトの名無しさん
2013/03/20(水) 15:55:28.760876デフォルトの名無しさん
2013/03/20(水) 18:41:37.41有難う御座います。自己解決しました。
0877デフォルトの名無しさん
2013/03/20(水) 18:46:24.440878877
2013/03/20(水) 18:46:54.360879デフォルトの名無しさん
2013/03/27(水) 21:40:36.360880デフォルトの名無しさん
2013/03/27(水) 22:23:33.360881デフォルトの名無しさん
2013/03/27(水) 22:31:38.82thisを基底クラス型にキャスト
0882デフォルトの名無しさん
2013/03/27(水) 23:16:03.19何がやりたいんだ?
0883デフォルトの名無しさん
2013/03/27(水) 23:31:25.22やはりそうするしかないのでしょうか
コンストラクタやデストラクタは派生クラスの側で明示的に書かなくとも良い
0884デフォルトの名無しさん
2013/03/27(水) 23:41:09.62コンストラクタやデストラクタは明示的に書かなくとも良いのにという思いです
>>883
今回やりたかったのは、参照カウントを持った基底クラスを継承することでコピーを管理するというものです
例えばLast()という関数で参照カウントが1であることを確認してからリソースを開放するなど
もちろん継承を使わなければ実装できないものではありませんが、クラス名の横にごにょごにょ書くだけで済むなら便利かなと考えたわけです
0885デフォルトの名無しさん
2013/03/27(水) 23:45:37.12{...}
base_class::operator=(value);
0886デフォルトの名無しさん
2013/03/27(水) 23:47:59.38派生クラスのコピーコンストラクタから、基底クラスのコピーコンストラクタを呼び出したいと言うこと?
0887デフォルトの名無しさん
2013/03/28(木) 00:10:47.140888デフォルトの名無しさん
2013/03/28(木) 00:19:04.01そういうことです
勝手に呼ばれるものだと思っていたのですが、どうもそういう訳ではないようですね
>>885
これでうまくいきました
コピーコンストラクタでもこの書き方が出来たのは知りませんでした
レスありがとうございました
コンストラクタは何も書かなくとも自動的に呼ばれるのに対し、コピーコンストラクタは派生クラス側で明示的に呼び出してやる必要があるということのようです
やや不思議ではあります
>>884に書いたことはコピーや代入は使わずに適当にAddRef関数でも作っときます
0889デフォルトの名無しさん
2013/03/28(木) 00:31:01.980890デフォルトの名無しさん
2013/03/28(木) 00:31:28.73参照カウントの値だかポインタだかを渡さないといけないのでコピーやらはしなければなりません
まあ何でもいいですね、質問の本旨でもないですし
0891デフォルトの名無しさん
2013/03/28(木) 00:34:20.720892デフォルトの名無しさん
2013/03/28(木) 09:48:07.28暇があったとしてもとっくに他のコミュニティに移動してる
こんな匿名の叩き煽りが日常茶飯事で自分にメリットが薄いようなところは
最高の頭脳でなくともまともな人間でもさっさと去るよ
他にコミュニティがない10年前なら最高の頭脳もいたかも知れないが、
いつの間にかいなくなって今ではその幻想だけが残ってる
最高の頭脳持ってる奴は他のコミュニティに行っても入っていけるから困らなかっただろう
そしてそういったコミュニティで相手にされない奴が集まってるのが2ch
0893デフォルトの名無しさん
2013/03/28(木) 10:10:45.28コンストラクタで自動で呼ばれるのは、デフォルトコンストラクタのみだけどね。
デストラクタは自動で呼ばれるけど、これは唯一にしか存在しないからだね。
c++は基本的に、全て明示するのが基本で、例外的にいくつかの自動があると思った方が良いよ。
0894デフォルトの名無しさん
2013/03/28(木) 15:34:23.650895デフォルトの名無しさん
2013/03/28(木) 19:37:00.710896デフォルトの名無しさん
2013/03/29(金) 02:02:02.08空のプロジェクトを作成した時に
ソース ファイル
リソース ファイル
ヘッダー ファイル
この3つのフィルタがデフォルトで作成されるのですが
デフォルトで作成されるフィルタが
Main
ProjectName
みたいにカスタマイズした状態で作成されるようにしたいです
デフォルトで作成されるフィルタを変更するにはどうすればいいですか?
0897デフォルトの名無しさん
2013/03/29(金) 06:35:58.930898デフォルトの名無しさん
2013/03/29(金) 07:53:53.23ありがとうございました!
0899デフォルトの名無しさん
2013/03/29(金) 12:25:27.41カスタムウィザード項目が無い
0900デフォルトの名無しさん
2013/03/29(金) 14:40:56.740901デフォルトの名無しさん
2013/03/29(金) 17:56:46.48できる
0902デフォルトの名無しさん
2013/03/30(土) 02:58:10.24ウィザードではなくて
default.js
Templates.inf
.vsdir
.vsz
これらを直接変更加えて追加したら出来ました
ありがとうございました
0903デフォルトの名無しさん
2013/03/30(土) 14:35:55.540904デフォルトの名無しさん
2013/04/02(火) 01:21:39.22A.dllのエディットコントロールではキー入力が処理されるのに
B.dllでは処理されません
どうすればB.dllのエディットコントロールでもキー入力が処理されるようになりますか?
0905デフォルトの名無しさん
2013/04/02(火) 02:33:56.940906デフォルトの名無しさん
2013/04/02(火) 09:49:30.13var config = proj.Object.Configurations('Debug');
config.WorkingDirectory = Path;
でいけるはずだがエラーになるな
Default.vcxprojに
<LocalDebuggerWorkingDirectory>Path</LocalDebuggerWorkingDirectory>
追加したらいい
0907デフォルトの名無しさん
2013/04/02(火) 10:21:55.84MainでTranslateMessageとDispatchMessageを呼んだら実現できました
さらにリターンキーでデフォルトボタンが押された動作にしたかったので
メッセージループ内でDLLダイアログハンドルを保持させるstatic変数を宣言
→DLL内でFindWindowを使用してMainウィンドウハンドルを取得
→ユーザーメッセージを使用してDLLからMainへダイアログハンドルを送信
→IsDialogMessageで通常通りの分岐
最終的にはこのような感じに落ち着きました
ありがとうございました
0908デフォルトの名無しさん
2013/04/04(木) 17:55:52.74http://itpro.nikkeibp.co.jp/article/Watcher/20130331/467401/
0909デフォルトの名無しさん
2013/04/04(木) 18:54:58.461つのソリューション内に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に依存)するだけではダメでした。
0910デフォルトの名無しさん
2013/04/04(木) 22:13:57.31既にあるプロジェクトにリンク指定したいのか
新たに作成されるプロジェクトに初期値としてリンク指定したいのか
どっち?
0911デフォルトの名無しさん
2013/04/04(木) 22:44:46.84それが必要なプロジェクトにCへの依存関係を設定する。
0913デフォルトの名無しさん
2013/04/04(木) 23:00:25.130914デフォルトの名無しさん
2013/04/04(木) 23:30:54.25全般->出力ディレクトリ->
リンカー->全般->出力ファイル->
この2箇所を変更したのですが
warning MSB8012: TargetPath() が Linker の OutputFile プロパティ値 () と一致しません。
このため、プロジェクトが正常にビルドされない可能性があります。
この問題を解決するには、$(OutDir)、$(TargetName)、および $(TargetExt) の各プロパティ値が、%(Link.OutputFile) で指定されている値と一致することを確認してください。
と警告が出てしまいます
dllファイルとexpの出力場所を変更してさらにこの警告が出ないようにするにはどうすればいいですか?
#pragmaの警告無視以外の方法があれば教えてください
0915デフォルトの名無しさん
2013/04/05(金) 00:49:02.080916デフォルトの名無しさん
2013/04/05(金) 12:26:57.71ありがとうございました!
0918デフォルトの名無しさん
2013/04/17(水) 20:31:53.57手段が見つかりません。
3D点(x,y,z)の点(データ)×数万個を線で結びつけて、色付けしたものです。
チャートコントロール(mschar)では等高線をサポートしておらず、実現できません。
System::Windows::Forms::DataVisualization::Charting::Chart
どなたかご教授くださいませ!
[環境]
visual c++ 2008 express
vs2012へ更新検討中
0919片山博文MZパンク ◆0lBZNi.Q7evd
2013/04/17(水) 21:00:16.72自分で描画したいなら、遠近法で(x/(z+α),y/(z+α))みたいにして奥の方から描画。OpenGLの方が簡単で無難。
0920片山博文MZパンク ◆0lBZNi.Q7evd
2013/04/17(水) 21:25:28.09自前で描画する場合はウィンドウのDCを取得。
OpenGLで描画する場合はウィンドウにピクセルフォーマットを設定。
0921デフォルトの名無しさん
2013/04/17(水) 23:17:56.11>>920
書き込みありがとうございます。
遠近法、自前で描写、…難しそうです
変数->ADD(xの値,yの値,zの値);
変数->全ての点を線で結ぶ;
変数->zの値を元に色付けする;
っていうレベルで考えてます
OpenGLとかDirectXなら可能でしょうか?
0922デフォルトの名無しさん
2013/04/17(水) 23:21:27.31>>920
追加で…
ググってみたところ、Microsoft.Office.Tools.Excel.Char でグラフを作成できるのかな、
と思いました。(Excelだと等高線グラフを簡単に作成できるため)
Microsoft.Office.Tools.Excel.Charは何をするためにあるものでしょうか?
望みのことができますか?
できるなら、どのように導入(参照設定やら名前空間やらツールボックスやら)できますか?
0923デフォルトの名無しさん
2013/04/17(水) 23:24:46.610924デフォルトの名無しさん
2013/04/17(水) 23:42:53.85Mathematica使う
0925片山博文MZパンク ◆0lBZNi.Q7evd
2013/04/18(木) 00:03:54.180926片山博文MZパンク ◆0lBZNi.Q7evd
2013/04/18(木) 00:24:38.33初心者ならEXCELのVBAでやるのが一番楽
0927デフォルトの名無しさん
2013/05/12(日) 02:37:22.35言い切るならコードを示してみろよ
0928デフォルトの名無しさん
2013/05/17(金) 23:02:29.59ホイ
http://stat.ameba.jp/user_images/20111009/17/wwww0628/e9/e6/j/o0350034511535747985.jpg
0929デフォルトの名無しさん
2013/05/18(土) 11:06:55.100930デフォルトの名無しさん
2013/05/20(月) 20:49:35.79_popen()で開いた子プロセスに対して,コマンドを投げて,その結果をもらって,また次のコマンドを投げて・・・
ということをやりたい。
条件として,子プロセスに対して,改変を加えるのはなしの方向で。
Linux上ではできるみたいだが,Windows上ではできるのだろうか。
どなたか教えてください。
[環境]
Visual C++ 2010
Windows 7/8
0931デフォルトの名無しさん
2013/05/20(月) 21:12:17.37可能でしょうか?
その場合、参考となるAPIを1つでいいので教えてください。
(それをもとに検索して他にも色々調べます)
0932デフォルトの名無しさん
2013/05/20(月) 21:17:12.100934片山博文MZパンク ◆0lBZNi.Q7evd
2013/05/20(月) 23:48:16.04CreateProcessとパイプ
0936デフォルトの名無しさん
2013/05/24(金) 09:53:35.870937デフォルトの名無しさん
2013/05/24(金) 12:30:27.480938936
2013/05/24(金) 15:02:37.67久々にVCいじってみたら綺麗に忘れてる。
なんか勘違いしてるのかも。
0939デフォルトの名無しさん
2013/05/24(金) 17:08:04.500941デフォルトの名無しさん
2013/05/26(日) 04:59:13.131,
TODOコメントを入れる時に日付とか名前を自動で入れられるようにできないですか?
要するにTODOコメントのテンプレを作りたいってことです
2,
switchとかclass(アクセス指定子)とかのインデントを個別に設定出来ませんか?
0942デフォルトの名無しさん
2013/05/28(火) 23:26:59.24うまくいきません。
苗字とクラスをコンボボックスから選んで、該当する組み合わせがあれば
コピー専用のテキストボックスに所属している部活動名が表示されるプログラムです。
if文を使って処理をしようと思っているのですが、項目の編集で登録した
苗字、クラス名の要素をどうやって取得していいのかわかりません。
どうすれば、AddRange(gcnew cli:: array< System::Object^ >(数値) {}); から要素を取得し、
仕様通りに動くプログラムを作ることができるのでしょうか?
作りかけのプロジェクトを置いておきます。
http://kie.nu/11at
0943デフォルトの名無しさん
2013/05/29(水) 01:01:47.38そもそもどうやって、名字とクラスと部活を結びつけようとしてんの? どこにもなさそうなんだが。
簡単な方法としては、上の3つを要素として持つクラスを作成して、その配列に生徒?を登録。
条件を入力されたら、上の配列の名字とクラス名とで照らし合わせて一致してれば
その同じ要素にある部活名を表示でいいんじゃね。
検索の方法は、for ループで配列をまわして if でチェックでもいいし、LINQ が使えるならそれ使ってもいいし。
あと、ここで言うのもなんだが。その内容なら C# でやった方が。。。
0944デフォルトの名無しさん
2013/05/29(水) 21:16:22.37_tmainのコンソールアプリのプロジェクトでMFCのクラスを使いたいのですが、
この場合はどのようにするのでしょうか?MFCのアプリだと派生クラスで定義しているのは
参考にしているプロジェクトで分かるのですが、コンソールアプリだとどうしたらよいのでしょうか
0945デフォルトの名無しさん
2013/05/29(水) 21:18:34.590946デフォルトの名無しさん
2013/05/29(水) 21:36:39.30すみません説明不足でした。
参考にしているMFCアプリのソースがありまして、それは派生クラスを使って、外部のクラスを呼び出しているところまでは分かりました。
コンソールアプリでMFCのチェックを入れれば、とりあえず、同じ外部のクラスを読み込ませることはできたのですが、
読み込ませただけで、どのようにしたら使えるようになるのかがわかりません。
_tmainの場合とMFCの派生させて使う場合の使いわけが、混乱しています。
0947デフォルトの名無しさん
2013/05/29(水) 21:45:41.87それはエスパーじゃないと答えれないな
0948デフォルトの名無しさん
2013/05/30(木) 08:33:58.880949デフォルトの名無しさん
2013/06/08(土) 21:21:20.98にて下記のようにエラーが出力されます。
----
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型配列を動的に確保する方法がありましたら、
ご教示お願いします。
0950デフォルトの名無しさん
2013/06/08(土) 22:33:19.81○ 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を超えています。1000を超えると書き込みができなくなります。