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

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

■質問するにあたって
・エラーや警告のときはエラーメッセージを書きましょう。
・開発環境も書きましょう、特に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/
2デフォルトの名無しさん:2011/11/03(木) 00:57:26.21
【関連スレ】
■MFC相談室 mfc22d.dll■
http://hibari.2ch.net/test/read.cgi/tech/1316080347/
Win32API質問箱 Build97
http://hibari.2ch.net/test/read.cgi/tech/1318439361/
【C++】 DirectX初心者質問スレ Part36 【C】
http://hibari.2ch.net/test/read.cgi/tech/1319032065/
C言語なら俺に聞け(入門篇) Part 54
http://pc12.2ch.net/test/read.cgi/tech/1254829314/
C++相談室 part91
http://hibari.2ch.net/test/read.cgi/tech/1315922506/
C/C++の宿題片付けます 152代目
http://hibari.2ch.net/test/read.cgi/tech/1312201995/
3デフォルトの名無しさん:2011/11/03(木) 00:58:12.13
4デフォルトの名無しさん:2011/11/03(木) 00:58:56.91
誰かおしえてください><
Win7の64bitマシンを使っています

Visual C++2010を使用しています。
アクティブソリューションぷらっとホームには、x64を追加することが出来たのですが
その下のプロジェクトのぷらっとホームにx64が出ません。何故ですか?
http://up3.viploader.net/ippan/src/vlippan243062.jpg
5デフォルトの名無しさん:2011/11/03(木) 02:31:12.00
6デフォルトの名無しさん:2011/11/03(木) 03:33:05.20
>>1
乙です

40代のLinux鯖屋ですが未だにVC6でたまに仕事がありますw
未だに作法がわからず、とりあえず動くものを納品してます。
よろです。
7デフォルトの名無しさん:2011/11/03(木) 07:30:15.00
>>5
それわたしです
SDK入れたり色々してみたんですが
やっぱりうまく行きません
8デフォルトの名無しさん:2011/11/03(木) 17:58:21.43
ウインドウアプリケーションを作っているんですが
基本ネットにつないであるデスクトップの32ビットVistaに入れたVC++2008EEはthis->とか入れたらドロップリストみたいなのが出て自動入力できるんですが
ノーパソの64ビット7に入れたVC++2010EEでは全く出てくれません。どうしてでしょうか?
9デフォルトの名無しさん:2011/11/03(木) 18:48:11.40
>>8
「#include <」とか、
「#include "」とかって書くとどうなります?
2010からヘッダファイルもインテリセンスしてくれるので動作確認できます。
ちなみに、インテリセンスさんは頻繁に気絶されるので、動かないときは再起動してあげてください。

↑で何も変化ないなら、設定切れてるかインストール失敗したのでは?
10デフォルトの名無しさん:2011/11/03(木) 18:54:46.30
>>9
ありがとうございます
#include <と書くとヘッダファイルのドロップリストがいっぱいでてきました
でもメンバは全く出ないのです
11デフォルトの名無しさん:2011/11/03(木) 18:56:42.39
Ctrl+Jでおk
12デフォルトの名無しさん:2011/11/03(木) 19:08:29.44
Ctrl+J?何もおこりませんが
13デフォルトの名無しさん:2011/11/03(木) 19:47:33.80
ソリューションを全クリーンして、自分で .pdb (だっけ?)を削除した上でリビルドしてもかわんない?
14デフォルトの名無しさん:2011/11/03(木) 20:50:26.09
.ncb も削除しとけよ
15デフォルトの名無しさん:2011/11/05(土) 08:00:18.97
MethodInvokerデリゲートをC++で使いたいのですが、C++だけサンプルがなくて使い方がよく分からないです。
ttp://msdn.microsoft.com/ja-jp/library/system.windows.forms.methodinvoker.aspx#Y0

コンパイルしようとするとかっこの対応関係でエラーが出てしまいます。
どなたかC++での書き方を教えて頂けませんか。
16デフォルトの名無しさん:2011/11/05(土) 11:21:49.18
そのサンプルのままやろうとしたの?
匿名メソッドって使えたんだっけ?
17デフォルトの名無しさん:2011/11/05(土) 12:05:03.42
はい。
サンプルのままやろうとしました。

C++/CLIはサンプルが少ないので、いつもC#を参考にして色々試しているのですが、今回はどう変えればいいのか分かりませんでした。
18デフォルトの名無しさん:2011/11/05(土) 13:33:37.66
C++/CLI には匿名メソッドがなかったような気が。
※ this.Invoke の行から始まるヤツのこと

でもデリゲートはあったはずだから、匿名メソッドの部分を通常?の関数?にして
やってみればいいんじゃね。それも分からないなら、デリゲートをちゃんと勉強してからだと思う。

で、あやふやな記憶で書いてる。間違ってたらごめん。
19デフォルトの名無しさん:2011/11/06(日) 22:05:29.05
デリゲートの概念がすぐに理解できずにちょっと躓きましたが、なんとか解決できました。
関数化は簡単でしたが、関数で引数を受けなければならない場合、Invokeの引数は(デリゲートのインスタンス,引数)となるんですね。

アドバイスを下さった方々、ありがとうございました。
20デフォルトの名無しさん:2011/11/06(日) 22:40:02.81
やっと立ったのね
遅いわよ>>1
21デフォルトの名無しさん:2011/11/07(月) 00:22:30.65
ネストがややこしいのですが細かく考えすぎないほうがいいのでしょうか?
22デフォルトの名無しさん:2011/11/07(月) 00:40:07.38
ネストが深くなるなら、深い部分を関数かするとかは同等手段だね。
try 〜 catch とか古くは do 〜 while(false) を使って流れの中では正常ケースしか存在しないようにするとかも。
23デフォルトの名無しさん:2011/11/07(月) 00:40:30.80
x同等
o常套
24デフォルトの名無しさん:2011/11/07(月) 01:24:06.69
すみません、ここ最近参考書を買って独学しているものです
頭では理解しているのですがいざこういう処理をするプログラムを書けって言われて書けないことが多々あるのですがまずいのでしょうか?
また対策として何かありますか?
25デフォルトの名無しさん:2011/11/07(月) 01:29:12.57
>>24
それが普通。
その度に調べて自分の血肉にしていくしかない。
26デフォルトの名無しさん:2011/11/07(月) 01:37:02.45
そうなんですか
自分語りのつもりはないのですが学生時代はアホだったものでこれも向いてないのかなと不安になりました
素早いレスありがとです
27デフォルトの名無しさん:2011/11/07(月) 23:18:21.83
インストール時に保存先を別のディスクに選んでもへ殆どがC:に保存されるけど後でコピーして別のディスクにいれて起動できる?
28デフォルトの名無しさん:2011/11/11(金) 01:06:18.33
VC ってプロジェクトの設定に OutDir のようなマクロ変数を使いますよね。
これの中身を外部のプログラムなどから覗くことは出来ないでしょうか。

プロジェクトファイルが XML で書かれているので、その中に定義があると思ってたのですが、見あたらなかったです。
29デフォルトの名無しさん:2011/11/14(月) 18:27:40.34
現在実行中のスレがどのような呼び出し階層でそこに居るのか調べて、std::stringに文字列を代入したいのです。
なんという関数を利用すれば解決できるかわかりません。

び出し階層、ログ、アサート、assertで検索してみましたが、節穴でみつけられていません。
ヒントをください。
30デフォルトの名無しさん:2011/11/14(月) 19:13:20.15
>>29
スタックトレースという
こういうのを使ってごにょごにょやるようだ
http://msdn.microsoft.com/ja-jp/library/cc428994.aspx
31デフォルトの名無しさん:2011/11/14(月) 23:56:35.07
質問です。
メモリリークの検出方法を調べていたんですが。

@最初に_CrtSetDbgFlagを記述する方法と
// メイン関数
int main(int argc, char* argv[])
{
_CrtSetDbgFlag ( _CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF );
  :
}

A最後に_CrtDumpMemoryLeaksを呼び出す方法があるようなのですが
int main(int argc, char* argv[])
{
  :
_CrtDumpMemoryLeaks();
}

@だとメモリリークが検出されずAだと数箇所のメモリリークが検出されてしまいます。
どちらが信用できるのでしょうか?ソースを追ってみたところ
メモリリークが発生しそうな箇所はありませんでした。
32デフォルトの名無しさん:2011/11/15(火) 08:09:01.13
>>31
mainのスコープのデストラクタは_CrtDumpMemoryLeaks();を呼んだ時点で
まだ呼ばれてはいないぞ。ヒープの解放予定のあるオブジェクトがあったら
当然誤検知
だからどちらも信用できる
ただ@のほうが自動で全部終わったあとに調べるから使い勝手はいいと思われ
33デフォルトの名無しさん:2011/11/16(水) 12:45:25.00
xmlのフォーマットで書かれたテキストファイルを読み込みたいのですが、
そもそも、ファイルの内容がXMLとしておかしくないかチェックしてくれる便利なライブラリを紹介いただけないでしょうか?
<root>
 <piyo>ababababa<hoge></piyo>
 Hello World</hoge>
</root>
の場合は、<piyo>に値があるのに、閉じられる前に次のタグが始まっているからパースエラー、というようなチェックをして欲しいのです。
よろしくお願いします。
3433:2011/11/16(水) 13:07:54.11
33です。
rapid_xml(もしくは、boost::property_tree)でxmlのパースができることを見つけたのですが、閉じタグをチェックしてくれないので少し困っています。
ここまでのチェックは、他のライブラリも含めて、してくれないものなのでしょうか?

<root>
 <aa>えー</cc>
 <bb>びー</bb>
</root>
この例の場合、<aa>の閉じタグが何故か</cc>になっているのでパースエラーになってほしいのですが、rapid_xmlだと問題なしにされてしまいます。
欲を出すと、boostライセンスのように取扱が簡単なものがよいのですが…。
MSXMLも試してみます。(…MSのは、どうしてこんなに複雑なのだろう…。)
3533:2011/11/16(水) 13:10:16.30
33です。スレッド間違えました。
【初心者歓迎】C/C++室 Ver.76【環境依存OK
↑のスレッドのつもりで書き込んでいました。申し訳ないです。あちらへ移動します。
36デフォルトの名無しさん:2011/11/16(水) 16:12:15.70
ビルド結果の文字列の並びを変更することって可能でしょうか?

========== ビルド: 1 正常終了、0 失敗、0 更新不要、0 スキップ ==========

========== ビルド: 正常終了 1、失敗 0、更新不要 0、スキップ 0 ==========
37デフォルトの名無しさん:2011/11/16(水) 16:17:52.35
不可能
38デフォルトの名無しさん:2011/11/16(水) 16:54:55.76
>>36
msenvui.dllの中に入っている文字列リソースのようなので、
それを自己責任で書き換えてしまえばできるかもしれないけど。
39デフォルトの名無しさん:2011/11/16(水) 19:38:05.16
(`●ω●´)  < ふ か の う〜

と某スレでは書きます。
40デフォルトの名無しさん:2011/11/16(水) 22:49:02.71
したいこと: スタートアップフォルダにソフトを置いて、PC起動時にRAMディスクドライブに
"z:\test\"という共有フォルダを作成したい。

#include "stdafx.h"
#include <direct.h>
int _tmain(int argc, _TCHAR* argv[])
{
_mkdir("z:\test\");
return 0;
}

あとは共有設定したいのですが続きをお願いします。
41デフォルトの名無しさん:2011/11/16(水) 22:58:37.71
42デフォルトの名無しさん:2011/11/17(木) 04:52:33.57
mkdir
net share ...
のバッチで十分な気がしないでもない
43デフォルトの名無しさん:2011/11/17(木) 10:09:42.41
プロジェクトのプロパティの
構成プロパティ>リンカー>入力>追加の依存ファイル
とは、何を入力する欄なのですか?

visual c++ 2010 Express を利用してプログラムの学習をしていて、
boost c++ libraryをインストールした際は、
Program Files\Microsoft SDKs\Windows\v7.0A
にヘッダとライブラリをコピーするだけで利用できたのに対して、
libxml2をインストールした際は、上記に加えて、
構成プロパティ>リンカー>入力>追加の依存ファイル
に対して、libxml2.lib を追記しないとリンクに失敗して、LNK2001・LNK2019が発生していたことが質問の背景にあります。

以前、何かのまねをしてプロジェクトを作っていたときに、
追加の依存ファイルに、ws_32.lib だったかを追記するようにという記述を思い出したので、
試してみたら、リンクエラーが無くなって解決できました。
そして、逆に、どうして必要・不要なのか気になってきました。

よろしくお願いします。
44デフォルトの名無しさん:2011/11/17(木) 10:36:02.61
>>43
ライブラリは明示的にリンクしろと書かないかぎりリンクされない
追加の依存ファイルはリンクするライブラリを指定する場所
boostはヘッダに
#pragma comment(lib, "〜.lib")
と書いてリンカに自分のライブラリを指定しているから追加の依存ファイルに書かなくてもリンクが通る
45デフォルトの名無しさん:2011/11/17(木) 19:13:06.02
テンプレートクラスが気持ち悪い
4643:2011/11/17(木) 21:30:26.01
>>44
ありがとうございます。
ところで、どこでそんなことを知るのですか?
47デフォルトの名無しさん:2011/11/19(土) 14:06:07.11
現在VC2008で汎用のテンプレートクラスを作成していて
エラー出力の方法を模索しています
コンソールアプリならコンソールに
GUIアプリならアラートという風に出力先を静的に切り変えたいのですが
そのためのdefine定義がVCに既定であったりするのでしょうか?
48デフォルトの名無しさん:2011/11/19(土) 14:20:39.40
_CONSOLE
ちょっとプロジェクト作ってプリプロセッサの定義を見れば書いてあるぞ。

でもそんなんで切り替えるんじゃなくて、例外かなにかをそのクラスを使う側で捕捉できるようにして、
捕捉した側で出力を行うようにした方が設計的に良くないか?
49デフォルトの名無しさん:2011/11/19(土) 14:50:36.64
今作成しているエラー処理がリリース時には必要のないもので
外部にまでひっぱりだすのが面倒臭いのでクラス内に直接書くつもりです。
本来のエラー処理の関してはおっしゃる通りだと思います。
50デフォルトの名無しさん:2011/11/20(日) 07:34:01.71
privateのインスタンスメソッドのユニット試験がとても面倒です。
というか、やり方がわかりません。
教えて欲しいです。

C言語であれば、全ての関数はグローバル的な感じなので、適当なファイルにmain()を作って、そこから呼び出すだけだったのですが…。
自宅で趣味でプログラムをしているだけなので、殆ど試験をしていません。
が、何か寂しいです。

何かよい方法があれば教えてください。よろしくお願いします。
51デフォルトの名無しさん:2011/11/20(日) 11:23:37.44
#ifdef [ユニット試験識別用のマクロ]
#define private public
#endif

とか。
52デフォルトの名無しさん:2011/11/20(日) 11:36:14.21
インテリセンスorz
53デフォルトの名無しさん:2011/11/20(日) 14:27:27.61
PDB,LIBファイルとはどういうファイルなんですか
プロパティページの追加のライブラリィディレクトリの項目にそれらが入っている場所
が指定されていたんですが それらを開けなくて困ってます
54デフォルトの名無しさん:2011/11/20(日) 17:07:14.00
【開発環境】
Visual studio 2008 pro 
Windowsフォームアプリケーション

【やりたいこと】
ソフト起動時から、ボタンを押した時点までの時間を表示するプログラムを作りたい

【ソース】
#include <windows.h>
#include <mmsystem.h>
#pragma comment (lib, "winmm.lib")
#include <time.h>

     (中略)

private: System::Void Form1_Load(System::Object^ sender, System::EventArgs^ e) {
DWORD start;
start = timeGetTime();
}

private: System::Void button13_Click(System::Object^ sender, System::EventArgs^ e) {
DWORD end;
end = timeGetTime();
MessageBox::Show(String::Format("{0}msです。",end - start));

【出力】
'start' : 定義されていない識別子です。

Loadで宣言した関数が定義されてないと言われるのを解消したいんですけどどうすればいいですか?
55デフォルトの名無しさん:2011/11/20(日) 17:19:45.68
startをグローバル変数にしろ
56デフォルトの名無しさん:2011/11/20(日) 17:26:37.28
>>55
できました!ありがとうございます。
57デフォルトの名無しさん:2011/11/20(日) 19:25:22.58
開発環境:VS2008
種類:DLL

ref classに配列を定義する場合、
staticとして定義したものと同様に扱えて(以前の内容を保持して)、
かつ、各インスタンスからは独立するようにするのはどうしたらいいのでしょうか?

58デフォルトの名無しさん:2011/11/20(日) 20:02:53.88
つい先日2010Expressを導入しました。
ベターCとして使っています。

一度作った構造体にメンバを追加したのですが、デバッガでステップを
追うと、どうもメンバが更新前の古いままのようです。
キャッシュが効いているという事でしょうか?
そのキャッシュは、どこで手動更新出来るのでしょうか?
59デフォルトの名無しさん:2011/11/20(日) 20:20:59.14
>>53
そんなもん、自分で調べろよ。いや、本当に。
http://www.google.co.jp/#sclient=psy-ab&hl=ja&source=hp&q=vc+.pdb&pbx=1&oq=vc+.pdb&aq=f&aqi=g-C2&aql=&gs_sm=e&gs_upl=11418l11721l1l12597l3l3l0l0l0l2l174l497l0.3l3l0&bav=on.2,or.r_gc.r_pw.,cf.osb&fp=775e48388cd17464&biw=1642&bih=812
http://www.google.co.jp/#sclient=psy-ab&hl=ja&source=hp&q=vc+.lib&pbx=1&oq=vc+.lib&aq=f&aqi=g1g-C3&aql=&gs_sm=e&gs_upl=13554l14989l2l15321l6l6l0l0l0l0l207l795l2.3.1l6l0&bav=on.2,or.r_gc.r_pw.,cf.osb&fp=775e48388cd17464&biw=1642&bih=812

>>57
それが何やるクラスなのかわかんないからアレだけど、
その配列を保持するのを独立させてシングルトンにしてみたら?
で、各クラスはそれを参照するようにするとか。

>>58
一度、クリーンするとか debug/release フォルダを削除してからしてリビルドしてみてもそうなる?
たぶん古い情報が .pdb かなにかに残ってるんじゃね。
60デフォルトの名無しさん:2011/11/20(日) 20:59:47.32
>>57
public:
static array<T>^ arr = gcnew array<T>(N){...};
6158:2011/11/20(日) 21:52:29.05
>>59
クリーンすると言うのはどういう事でしょうか?
ディレクトリ削除、これは私にもすぐ理解出来たので、同じ問題が
出たらやってみようと思います。

で私は、問題の出た周辺に意味のない代入式を色々置いたり
メンバの変数名を変えたりして、無理やりねじ伏せました。
お答え有り難うございました。
#と言うか、よく起きる事なのでしょうか。
62デフォルトの名無しさん:2011/11/20(日) 22:28:14.26
>>61
>クリーン

オブジェクトファイル等の中間生成物や、exeファイル等を
削除する。
手作業ではなくて、ビルドメニューにそういうのがある。
6358:2011/11/21(月) 23:42:06.24
>>62
ビルドと言うメニュー自体ないのですが・・・と思ったら、
上級者設定にしたら出現しました。
なるほど。
しかし、今度はデバッグ中に構造体のメンバの値が
表示されなくなりました。先頭アドレスのみ表示されて。

慌てて基本設定に戻しましたが復元せず。
どこをいじれば良いのでしょうか。
64デフォルトの名無しさん:2011/11/22(火) 00:47:04.44
どーしてもなおんなかったら、再現する最小構成をどっかに晒せや。
65デフォルトの名無しさん:2011/11/26(土) 11:18:25.95
age
66デフォルトの名無しさん:2011/11/29(火) 00:00:20.94
完全初心者なのにヘッドマウントディスプレイを使って3D空間を見渡せるプログラムを作ってみたいと思い、
先日勢いでVR920というセンサー付きのヘッドマウントディスプレイを購入しました。
公式サイトhttp://www.vuzix.com/_jp/support_downloads_drivers.html
からSDKをDLしてHelloTracker3というサンプルを参考に頭の向きや角度の数値を取得する最低限のコードを模索しようとしていた所
そもそも公式のHelloTracker3がコンパイル出来ず

1>cl : コマンド ライン warning D9035 : オプション 'Wp64' の使用は現在推奨されていません。今後のバージョンからは削除されます。
1>stdafx.cpp
1>c:\program files\vuzix corporation\vuzixsdk\examples\hellotracker3\stdafx.h(34) : fatal error C1083: include ファイルを開けません。'afxwin.h': No such file or directory
1>ビルドログは "file://c:\Program Files\Vuzix Corporation\VuzixSDK\examples\HelloTracker3\Debug\BuildLog.htm" に保存されました。
1>HelloTracker3 - エラー 1、警告 1
========== すべてリビルド: 0 正常終了、1 失敗、0 スキップ ==========

というエラーが表示され完全に出鼻をくじかれてしまいました。
調べてみた結果MFCというものを利用しているのでExpress2008では開発出来なさそうという事実に行き着いてしまったのですが
やはり上記のようなセンサーからの数値取得はExpress2008では無理でしょうか?
67デフォルトの名無しさん:2011/11/29(火) 00:04:30.98
GUIの部分に使ってるだけだろうから
無くてもいけるだろうけど
visualStudioのprofessional買った方が早い気がするな
68デフォルトの名無しさん:2011/11/29(火) 00:19:11.44
>>67
早速の返信ありがとうございます!
やはり購入したほうがスムーズなんですね・・・
下調べが足りずに買ってしまった自分がバカだったんですけどこれ以上は資金的な余裕が・・・
MFCとやらがGUIだけに使われていてセンサーからの数値取得自体には必要とされていなければ気合でなんとかなりますでしょうか
69デフォルトの名無しさん:2011/11/29(火) 00:25:36.33
ここにソース貼るかリンクすれば
ネトウヨさんがMFCなしで動くように治してくれるよ
70デフォルトの名無しさん:2011/11/29(火) 00:49:07.31
>>69 
申し訳ありません・・・自力では目的達成が可能なのか不可能なのかもわからないレベルでお恥ずかしい限りです。
サンプルプログラムのフォルダをzip形式にしてUPしてみました。

http://www.dotup.org/uploda/www.dotup.org2320354.zip.html
71デフォルトの名無しさん:2011/11/29(火) 00:49:37.47
SDKとにらめっこすればいけるんじゃね
72デフォルトの名無しさん:2011/11/29(火) 01:07:56.34
>>71
ほんのちょっとかじった程度でいきなりこの挑戦は思い上がりすぎだったかもしれないと反省している所ですorz
一応見渡すための3D空間とカメラ等はDXライブラリのサンプルを参考に作ってあるので、
頭の角度の数値さえ取得できればあとはなんとか自力で・・・という所です。
あきらめず自分なりにもにらめっこ挑戦してみます。
73デフォルトの名無しさん:2011/11/29(火) 01:53:23.01
環境:VC++2010
int* ptr = nullptr;
ってメインスレッドでして、サブスレッド内で
ptr = new int[10];
としてすぐにサブスレッドは終了。確実に終了したことを確認した上で
メインスレッドで
delete[] ptr;
とやりました。
で、#include <crtdbg.h> を使ったところ、ptrは解放されてない、
とメモリリークが検出されました。
スレッドをまたぐメモリ確保はやっちゃだめでしょうか?
それとも単にcrtdbgが解放を検出できてないだけでしょうか?
7473:2011/11/29(火) 02:02:34.01
スマポ使ったらメモリリーク無し、と出たので間違いなく自分のコードが
どこかおかしいことがわかりました。ということで無視してください。
75デフォルトの名無しさん:2011/11/29(火) 02:09:37.73
#include <crtdbg.h>
#ifdef _DEBUG
#define _CRTDBG_MAP_ALLOC
#define new ::new( _NORMAL_BLOCK, __FILE__, __LINE__ )
#endif // _DEBUG
#include <Windows.h>
#include <process.h>
unsigned int WINAPI thread(void *p) {
int* &pp = *(int**)p;
pp = new int [ 100];
_endthreadex(0);
return 0;
}
int main()
{
int *p;
HANDLE hThread;
hThread = (HANDLE)_beginthreadex(NULL, 0, thread, (void*)&p, 0, NULL);
WaitForSingleObject(hThread, INFINITE);
CloseHandle(hThread);
delete [] p;
_CrtSetDbgFlag(_CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF);
return 0;
}

リークしないなぁ
76デフォルトの名無しさん:2011/11/30(水) 13:27:13.73
77デフォルトの名無しさん:2011/12/01(木) 11:07:39.23
78デフォルトの名無しさん:2011/12/01(木) 11:19:27.31
79デフォルトの名無しさん:2011/12/01(木) 20:19:51.53
ぬるぽ
80デフォルトの名無しさん:2011/12/01(木) 20:22:44.22
がっ
81デフォルトの名無しさん:2011/12/04(日) 03:41:10.78
環境
Windows Vista SP2 32bit
Visual C++ 2010 Express

こちらにあるようにWinHttpRequestを使用したいと思いました。
http://msdn.microsoft.com/en-us/library/windows/desktop/aa384045(v=vs.85).aspx


デバッグしようとしたところ下記のエラーが出て対応をしました。

 ・error C2872: 'IServiceProvider' : あいまいなシンボルです。
   "using namespace System;" と "#include <windows.h>"
   を同じ名前空間に記述することが問題だとなってましたので
   "using namespace System;"をコメントアウト

 ・error C2653: 'WinHttp' : 識別子がクラス名でも名前空間名でもありません。
   #import "winhttp.dll" named_guids
   と記述してGUID型のCLSIDやIIDの定義が生成しなくてはならないとありましたので
   記載

コードは次レスです。
82デフォルトの名無しさん:2011/12/04(日) 03:42:14.63
#include "stdafx.h"
#include <windows.h>
#include <stdio.h>
#include <objbase.h>
#pragma comment(lib, "ole32.lib")
#pragma comment(lib, "oleaut32.lib")
#import "winhttp.dll" named_guids
//using namespace System;
// IID for IWinHttpRequest.
const IID IID_IWinHttpRequest = {
0x06f29373,
0x5c5a,
0x4b54,
{0xb0, 0x25, 0x6e, 0xf1, 0xbf, 0x8a, 0xbf, 0x0e}
};

int main(array<System::String ^> ^args){
HRESULT hr;
hr = CoInitialize(NULL);

WinHttp::IWinHttpRequest * pIWinHttpRequest = NULL;
CLSID clsid;
hr = CLSIDFromProgID(L"WinHttp.WinHttpRequest.5.1", &clsid);

if (SUCCEEDED(hr)){
hr = CoCreateInstance(clsid,NULL,CLSCTX_INPROC_SERVER,IID_IWinHttpRequest,(void **)&pIWinHttpRequest);
}
CoUninitialize();
return 0;
}
83デフォルトの名無しさん:2011/12/04(日) 03:46:24.60
>>80で忘れていましたが、
プロジェクト作成時のテンプレートは
「CLRコンソールアプリケーション」です。

CoCreateInstance呼び出しで
HRESULTのhrが【0x80004002】になってしまいます。
インターフェースがわからない??
お願いします。助けて下さい。
84デフォルトの名無しさん:2011/12/04(日) 07:25:18.00
COMじゃない方使えよ
85デフォルトの名無しさん:2011/12/04(日) 08:57:24.97
馬鹿には無理
8681:2011/12/04(日) 17:53:04.67
お願いします。age
87デフォルトの名無しさん:2011/12/04(日) 18:22:41.92
ほぼ同じ環境で上のコードをコピペしてやってみたが、ふつーに通ったぞ。
なにか必要なライブラリかなにかが入ってないんじゃねーの?
88デフォルトの名無しさん:2011/12/05(月) 18:30:36.09
>>87
ありがとう。そして少し聞きたい。プログラムで取得できたCLSIDとレジストリに設定されているProgID、WinHttp5.1の数値が違うのだが、
あなたは一緒でしょうか?

自分はプログラムで取得したCLSIDは「00389130-0000-0000-54EF-1C00F036C15D」でした。

hr = CLSIDFromProgID(L"WinHttp.WinHttpRequest.5.1", &clsid);

- clsid {00389130-0000-0000-54EF-1C00F036C15D} _GUID

以下レジストリをWinHTTP.dllで検索しました

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\CLSID\{2087c2f4-2cef-4953-a8ab-66779b670495}]
@="WinHttpRequest Component version 5.1"

[HKEY_CLASSES_ROOT\CLSID\{2087c2f4-2cef-4953-a8ab-66779b670495}\InProcServer32]
@=hex(2):25,00,53,00,79,00,73,00,74,00,65,00,6d,00,52,00,6f,00,6f,00,74,00,25,\
00,5c,00,73,00,79,00,73,00,74,00,65,00,6d,00,33,00,32,00,5c,00,77,00,69,00,\
6e,00,68,00,74,00,74,00,70,00,2e,00,64,00,6c,00,6c,00,00,00
"ThreadingModel"="Apartment"

[HKEY_CLASSES_ROOT\CLSID\{2087c2f4-2cef-4953-a8ab-66779b670495}\ProgID]
@="WinHttp.WinHttpRequest.5.1" ←◆ここです!!

[HKEY_CLASSES_ROOT\CLSID\{2087c2f4-2cef-4953-a8ab-66779b670495}\TypeLib]
@="{662901fc-6951-4854-9eb2-d9a2570f2b2e}"

[HKEY_CLASSES_ROOT\CLSID\{2087c2f4-2cef-4953-a8ab-66779b670495}\Version]
@="5.1"
8982:2011/12/05(月) 18:31:17.70
ちなみに最近WindowsUpdateに失敗します。
90デフォルトの名無しさん:2011/12/05(月) 21:00:00.12
C#を1年くらいしかやったことないんだけど、
今からC++のWin32を勉強始めても何か役に立ちますかね?
C#ってやっぱり重いし、デザインもモッサリしてるし、
ネイティブなC++のほうが難しそうだけど良いのかな?と思いました。
でも時代は64bitだし、VS2010EEでできるのはWin32ですよね。
91デフォルトの名無しさん:2011/12/05(月) 22:15:47.24
IDEにEE使ってもx64バイナリを吐かせることはできる
92デフォルトの名無しさん:2011/12/05(月) 22:33:44.33
>>88
プログラムでの CLSID の取り方なんて忘れたよ。w
コードの clsid の中身を並べてみたけど、これで良かったんだっけか?

[プログラムコードから取得したID]
2087c2f4-2cef-4953-a8ab-66779b670495

[レジストリの値]
[HKEY_CLASSES_ROOT\CLSID\{2087c2f4-2cef-4953-a8ab-66779b670495}\ProgID]
ProgID = WinHttp.WinHttpRequest.5.1
TypeLib = {662901fc-6951-4854-9eb2-d9a2570f2b2e}
Version = 5.1

‥‥ ::CLSIDFromProgID() で取得した値はレジストリの CLSID の下のノードの名前?みたいだな。おまえのも一緒だし。
93デフォルトの名無しさん:2011/12/05(月) 22:35:37.67
>>90
C++ を自在に操れるレベルになれば、他の言語なんか怖くない。
でも大抵は C# で事足りる。十分すぎるくらい。しかも凄く簡単、ってか楽。
どこまでやるかによる。
94デフォルトの名無しさん:2011/12/05(月) 22:55:27.47
>>92
いえ、
私は00389130-0000-0000-54EF-1C00F036C15Dです。

今.netframework4アンイントールができなくて困ってます(T_T)

これやったり
regsvr32 Softpub.dll /s
regsvr32 Wintrust.dll /s
regsvr32 Initpki.dll /s
regsvr32 Mssip32.dll /s

HotFixかけたり

修復したり

復元したり

(T_T)なみだ(T_T)なみだ
95デフォルトの名無しさん:2011/12/05(月) 23:03:08.60
まあなんだ。頑張れ。w
逆にインストールしたら欠けてた部分が補完されて正常に、なんて都合のいいことはないか。
96デフォルトの名無しさん:2011/12/05(月) 23:04:22.92
0x800B010B こいつなんとかし netFx_core.mzz のセキュリティ検証で落ちるぞ
97デフォルトの名無しさん:2011/12/06(火) 00:40:04.02
これさー これやん

IID_IWinHttpRequest
9882:2011/12/06(火) 00:44:55.21
99デフォルトの名無しさん:2011/12/06(火) 12:04:47.40
>>93
レスありがとうございます。
やはり細かなところまで要求するとC++なんですよね。
でも大概はC#で事足りる。プログラミング歴1年の僕にでも「とりあえず」出来てしまいましたから。
C++も新規格が出たようですし、今から勉強始めても損は無さそうですね。
100デフォルトの名無しさん:2011/12/06(火) 18:41:14.84
>>98
tlhファイルを見なさい!!
101デフォルトの名無しさん:2011/12/06(火) 20:33:24.31
#importで定義を吐き出すとなんでヘッダーファイルと定義が違うの?
102デフォルトの名無しさん:2011/12/07(水) 00:31:57.55
OBJ obj[15];
OBJ obj1[5];
OBJ obj2[5];
OBJ obj3[5];

とあって、objの中にobj1〜obj3を順に格納したいんですが、
ポインタを使うとどう書くんですか?
ポインタがいまいち分かってません。
103デフォルトの名無しさん:2011/12/07(水) 00:39:57.99
OBJ* obj[15];
obj[ 0 ] = &obj1[ 0 ];
(以下略)

じゃないの?
104片山博文MZ ◆0lBZNi.Q7evd :2011/12/08(木) 13:16:19.78
>>102
#define BAKA for(int i = 0; i < 5; i++) obj[i] = *p++;
OBJ *p;
p = obj1; BAKA
p = obj2; BAKA
p = obj3; BAKA
105デフォルトの名無しさん:2011/12/09(金) 12:31:39.86
dllを使うプログラムをつくったのですけど、
そのdllが無くても起動してしまって、困りました。

変なパスが通っているのかと思って、環境変数の「Path」を眺めていたら、怪しいのをみつけました。
で、それを削除して実行したところ、dllがないと言われました。
あるアプリをインストールしたら、たまたま同じdllがインストールされて、それを使って動いていました。

自分で用意したdllを強制的に使うようにしたいのですけど、どうすればいいのでしょうか?
出来れば実行ファイルのサブフォルダに格納して、それを参照させたいです。出来なければ諦めます。
106デフォルトの名無しさん:2011/12/09(金) 12:48:41.08
LoadLibrary とバージョンチェックしかないんじゃない
107デフォルトの名無しさん:2011/12/09(金) 16:08:16.55
自分が用意したDLLならEXEと同じフォルダに置くのが一番だと思う
108デフォルトの名無しさん:2011/12/09(金) 22:37:06.31
ファイル名とか関数名をあんまり使わないようなものにしちゃうとか。
109デフォルトの名無しさん:2011/12/12(月) 22:30:49.92
>>107 でFA?
必ずexeの場所のdllが最初に検索される?
110デフォルトの名無しさん:2011/12/14(水) 09:23:42.13
検索順序はちゃんと書いてあるだろ。
111デフォルトの名無しさん:2011/12/18(日) 19:59:13.30
質問です

ブラシ(Brush)の色は宣言したあとに変えることは出来るのでしょうか?

Brush^ mybrush = gcnew SolidBrush(Color::Red);

と宣言したのを

mybrush->Color = Color::Blue;

みたいなことは出来ないのでしょうか?(↑は勿論エラーになります)
Penの色や線の太さを変更できるのにBrushではできないので疑問に思いました。
112デフォルトの名無しさん:2011/12/18(日) 20:41:14.78
((SolidBrush^)mybrush)->Color = :Color::Red;
では?

Color プロパティは Brush クラスではなくて、SolidBrush クラスで定義されてるね。
とりあえずエラーが出たときは、その説明とか使うクラスの MSDN とかをちゃんと確認すると良いと思うぞ。
113デフォルトの名無しさん:2011/12/18(日) 20:48:57.85
>>112
解決しました。ありがとうございます

クラスの説明のサイトを見ても良く分からなかったので今まであまり見ていませんでした;;
114デフォルトの名無しさん:2011/12/21(水) 03:00:39.63
test
115デフォルトの名無しさん:2011/12/21(水) 03:03:18.26
メニューバー>ビルド>ソリューションのビルド
メニューバー>ビルド><プロジェクト>のビルド
を常にバッチビルドにする方法ありますか?
バッチビルドを開いてマウスを移動させてOKを押すのが面倒です。
Alt+BTBを覚えるのも面倒です。
116デフォルトの名無しさん:2011/12/21(水) 06:13:21.41
改行を揃えたいときどうしたらいいですか?
変な日本語で申し訳ないのですが
printf();
printf();

みたいになってしまっているとき
printf();
printf();
というように左端を揃えたいです。
何かいい方法があれば教えてください。
117デフォルトの名無しさん:2011/12/21(水) 06:17:01.64
printf();
-----printf(); ← -はスペースです

みたいになってしまっているとき
printf();
printf();
118デフォルトの名無しさん:2011/12/21(水) 07:08:54.94
範囲選択して
Ctrl+K Ctrl+F
119デフォルトの名無しさん:2011/12/29(木) 18:11:12.18
VCだと「test->」とか打つと自動で一覧表示されるじゃん?
でも俺が作ったライブラリでだけ表示されないんだけどなんぜ?
120デフォルトの名無しさん:2011/12/30(金) 22:03:52.61
期待age
121デフォルトの名無しさん:2011/12/31(土) 04:59:24.80
>>119
あ?
122片山博文MZ ◆0lBZNi.Q7evd :2011/12/31(土) 13:08:04.10
123デフォルトの名無しさん:2011/12/31(土) 13:17:05.17
韓国LGディスプレーの中国工場でスト、大赤字の同社に打撃

中国経済網は29日付で「ストライキの原因は年末のボーナス削減と韓国人従業員への差別的待遇に対する中国人従業員の不満だ」と報じた。
LGDの南京工場では26日から28日にかけて生産ラインが完全に停止し、関連工場にも影響が出た。

南京市経済開発区管理委員会に所属する呉主任は「今回の件はストライキでもサボタージュでもなく、工場が臨時休業しているだけ」と述べたが、
記事は「LGディスプレーは2011年、約670億円の赤字を出したことで、従来までは月給3カ月分だった年末ボーナスの支給そのものが難しくなった。
これは従業員の不満を招いたことに起因するストライキだ」と報じている。

http://news.searchina.ne.jp/disp.cgi?y=2011&d=1230&f=business_1230_116.shtml
124デフォルトの名無しさん:2012/01/01(日) 18:32:38.79
クラスを構造体代わりに使ってるんですが、動的に作成したクラスは
デストラクタで破棄しないといけないんですか?
125デフォルトの名無しさん:2012/01/01(日) 20:20:07.85
動的にってnewを使ってってことか?
126デフォルトの名無しさん:2012/01/01(日) 21:10:00.53
>>124
何を言っている?
デストラクタにはそのクラスが破棄されたときに必要な処理を書く。
デストラクタで破棄するわけじゃない。
127デフォルトの名無しさん:2012/01/01(日) 21:27:11.09
>>124
何を聞きたいのかよく分からないが、

new で動的に作成したクラスを使い終わったらどうするかという話なら
delete で削除するのが正解、デストラクタは利用者が呼び出すものではない

あるクラスAのインスタンスに付随する情報をクラスBとして動的に作成した場合の、クラスBを破棄するタイミングの話なら
クラスAのデストラクタで削除するのが自然ではある
128デフォルトの名無しさん:2012/01/02(月) 01:35:11.70
コンストラクタ内でいくつかのメンバ(ポインタ)に
newで別のインスタンスを生成し
デストラクタでdeleteしているのですが
コンストラクタ途中で例外か例外じゃなくても
new出来なかったりで中断する必要がある場合
途中まで生成していたメンバのインスタンスが
デストラクタで解放されることは期待出来ますか?
129デフォルトの名無しさん:2012/01/02(月) 02:15:47.55
>>128
コンストラクタ内で例外を発行したら、インスタンス生成は完了しないので、デストラクタも呼ばれない
以下のような感じで処理するとか、ひと工夫必要になる

class A{
X* x;
Y* y;
A(){
try{
x = y = NULL;
x = new X; y = new Y;
catch(...) {
clear();
throw;
}
}
~A(){
clear();
}
clear(){
if (x != NULL) delete x;
if (y != NULL) delete y;
}
};
130デフォルトの名無しさん:2012/01/02(月) 02:39:13.46
ありがとう
A() : x(NULL), y(NULL) {
と書くのは良くないですか?
131デフォルトの名無しさん:2012/01/02(月) 02:48:58.29
>>130
メンバ初期化リストを使う方が正解
132デフォルトの名無しさん:2012/01/02(月) 11:03:39.23
delete NULL は有効だからdelete時にNULLチェックは無駄
133デフォルトの名無しさん:2012/01/04(水) 22:31:34.51
>>132 delete []も?
134デフォルトの名無しさん:2012/01/05(木) 17:01:41.04
人民元暴落間近、実はマイナス成長の中国GDP

アメリカの研究者の中には、今年の中国のGDPはマイナス10%ぐらいではないかと推計する人もいます。
そもそも中国の国家統計局が出している数字は、「架空の物語」です。

全国人民代表大会で決まった成長率を覆すような数字を、地方政府が上げるはずがない。16%だの24%だの、ありえない数字を出してきます。
みんなそれを知っていますから、加減してほどよい数字を作り上げる。それが国家統計局の仕事なんです。

中国の現状からすればGDPが上がるとは思えません。個人消費は明らかに減っています。住宅はといえば6500万戸が空き家状態。
企業は設備投資どころではなく、政府の財政支出も限界に来ています。

日本の新聞もようやく中国の不動産バブル崩壊について書き始めました。しかし内容は必ずしも正しくない。
不動産価格が上海で25%、北京で20%下落したといいますが、実際には40%ぐらい下がっていると思われます。

JBPRESS
http://jbpress.ismedia.jp/articles/-/34131?page=2


世界のGDP(単位10億ドル)

1位 アメリカ 14,526.55
2位 中国 5,878.26
3位 日本 5,458.80



1位 アメリカ 14,526.55
2位 日本 5,458.80
3位 中国 5290.43
135デフォルトの名無しさん:2012/01/12(木) 21:32:10.22
VC++2010, SDKで開発しています。

EditBoxに関する質問なのですが、
入力が空っぽの場合には、グレー文字で入力のヒントを
表示する機能は持っていますでしょうか?

MFCのCEditクラスには該当するもの(SetCueBanner)が
見つかりましたが、SDKでは自分で
ゴリゴリ書くしかないのでしょうか?

よろしくお願いします。
136デフォルトの名無しさん:2012/01/12(木) 23:02:12.54
EM_SETCUEBANNER
137デフォルトの名無しさん:2012/01/13(金) 00:15:17.21
>>136
ありがとうございます。
まさか名前そのままでしたか。

WM_INITDIALOGで、
SendMessage(EditBoxのハンドル指定, EM_SETCUEBANNER, 1, (LPARAM)TEXT("ヒントです"));

と書きましたが、ヒントは表示されませんでした。
OSはWin7の64bitです。
138デフォルトの名無しさん:2012/01/13(金) 09:34:25.12
>>137
UNICODEアプリにしてる?
139デフォルトの名無しさん:2012/01/13(金) 09:51:43.02
>>138
すみません。
コモンコントロールの使用に必要な
マニフェスト作成を忘れていただけでした。
動作確認できました。

また、ユニコードで作っています。
140デフォルトの名無しさん:2012/01/13(金) 18:24:07.97
プロジェクトのプロパティページの"構成"に
アクティブ(Debug)
Debug
Release
すべての構成
とあります。DebugとReleaseで設定を変えるということは分かるのですが
アクティブ(Debug)とすべての構成とは、何のため、どういうときに使われるものなのでしょうか?
よろしくお願いします。
141デフォルトの名無しさん:2012/01/13(金) 19:23:06.29
アクティブは今IDE上で選んでるもの。
IDE上でDebugを選んでると、アクティブはアクティブ(Debug)となり、
構成でDebugを選んでもアクティブ(Debug)を選んでも同じ。

すべての構成は、すべての構成で共通するもの。
構成がDebugとReleaseの二つしかない場合、
その二つで同じ設定になっているものは表示され、
違う設定になっているものは空の表示がされる。
どれか設定をするとDebugとReleaseの両方に同じ設定がされる。
142デフォルトの名無しさん:2012/01/14(土) 03:43:14.60
ありがとうございます
やはりそうでしたか
143デフォルトの名無しさん:2012/01/14(土) 21:47:14.24
コンボボックス内の文字列がリソースファイルのDLGINITで設定されているVCのプログラムを見ました。
これはどのようにしたらこのやり方ができるのでしょうか。
DLGINITでググっても解説等が見つかりませんでした。
どうやらActiveXを使うことと関係があるらしいのですが。
144デフォルトの名無しさん:2012/01/14(土) 23:06:50.33
その見たというVCのプログラムを調べりゃいいだろ
145デフォルトの名無しさん:2012/01/14(土) 23:12:29.11
>>144
VisualStudioの使い方のことです。
146デフォルトの名無しさん:2012/01/15(日) 03:39:10.47
>>143
VC6ではダイアログにコントロールを配置するときにコンボボックスを
右クリックしてプロパティを表示すると初期文字列を設定できるけど
VS2002以降は分からない
147デフォルトの名無しさん:2012/01/15(日) 12:18:40.28
2010じゃMFCだとできるけど、Win32だとグレーになって入れられないな。
148デフォルトの名無しさん:2012/01/15(日) 14:30:37.69
vs2003だとコンボボックスのプロパティの「動作」にある
Dataに文字列入れたらできた。複数文字列はセミコロン区切りで。
Dataはmfcアプリのみ入力可能。
149デフォルトの名無しさん:2012/01/17(火) 21:08:32.14
大ざっぱな質問になってしまうのですが
C++で指定のswfのアニメーション流すことは可能なのでしょうか?

WEBカメラで画像をチャプターし、その画像の結果で
指定のswfアニメーションを流したいと考えています。
開発環境はVC2008です。

よい方法などありましたら、アドバイスお願いします。
150デフォルトの名無しさん:2012/01/17(火) 21:31:11.24
COM使えば
151デフォルトの名無しさん:2012/01/18(水) 00:33:47.61
馬鹿には無理
152デフォルトの名無しさん:2012/01/18(水) 10:28:48.35
VCで作ったアプリのハンドルリークを検出する方法は、どのようなものがありますか?
deleteし忘れのときのように出力してくれると便利なのですが。
153デフォルトの名無しさん:2012/01/18(水) 11:27:50.98
・タスクマネージャのパフォーマンスタブ
・CRT デバッグ ヒープ関数
・市販のツール

でも delete 忘れとかなら、最初の初期化と、解放後の初期化を確実にやって、
プログラムやインスタンスが終了するタイミングで、自分の持ってるポインタが NULL になっていることを
確認するのがいちばん早いと思うんだ。
154デフォルトの名無しさん:2012/01/20(金) 21:39:50.94
失礼します。
VC++でWindowsフォームのプログラムを組んでいるのですが、
別ファイルでextern宣言したクラス(の配列)をform1.h等で参照したいのですがコンストラクタが上手く働いてくれないのか、宣言の場所が悪いのか
ゴミ値ばかりで上手く動作してくれません。
何かヒントもらえませんか?
155デフォルトの名無しさん:2012/01/20(金) 22:19:53.46
>>154
VC++と言うと、今だに(と言うかC++/CLIが見捨てられてるだけなんだが)MFCでのプログラミング前提だから、聞くならC++/CLIと明示されてるスレで聞いた方がいい

くだすれC++/CLI(初心者用)part2
http://toro.2ch.net/test/read.cgi/tech/1268613679/
156デフォルトの名無しさん:2012/01/20(金) 22:46:28.91
>>155
他スレでもそちらに誘導されてしまいました。。
なんかマルチみたいで申し訳ないです。
そちらで質問したいと思います。
わざわざ有難うございます。
157デフォルトの名無しさん:2012/01/21(土) 17:37:56.09
みたいで
158デフォルトの名無しさん:2012/01/21(土) 22:34:23.48
VC++を使い始めて2週間目です。
コンソールアプリケーションでしばらく遊んでいたのですがこの度windowsフォームアプリケーションへ挑戦することにしました。

>>8でも出ているのですが、コンソールアプリケーションの時には自動でインデントしてくれていたのに、ウィンドウズフォームアプリケーションではインデントしてくれなかったり
this->と打っても反応がなかったりするのは64bitに非対応ということなのでしょうか?
ちなみにVBのVSでは正常に動いていたように思います。

一応再インストールはしてみたのですが効果なし、他の64bit使いの方のお話をお聞かせ下さい
159デフォルトの名無しさん:2012/01/21(土) 22:40:27.58
this->と入力すると、ステータスバーにIntelliSense: 'C++/CLIで使用できません'と出るのですが64bitでは使えないのでしょうか
160デフォルトの名無しさん:2012/01/21(土) 22:44:15.76
連投ごめんなさい2010ではまだ使えないのですね
161デフォルトの名無しさん:2012/01/21(土) 22:59:36.47
このスレで言うことじゃないけど。
C++/CLI を使うんなら、ネイティブな C への橋渡しとかを考えている場合以外は C# でやった方がいいよ。
162デフォルトの名無しさん:2012/01/21(土) 23:00:14.43
また一人犠牲者が出てしまったか
163デフォルトの名無しさん:2012/01/22(日) 01:30:21.35
C++/CLIは半ば放置されてるからな…
164デフォルトの名無しさん:2012/01/26(木) 17:29:08.37
1つのソリューションの中に2つのプロジェクトがあって、

Solution
 Project1
 Project2

Project1で定義されているクラスを、Project2で使用する方法を教えていただけないでしょうか?
依存関係を設定すれば使えると思ってたんですが、ハマってしまって。。。

ヘッダーをインクルードして、クラスを実体化しようとするとエラー「LNK2019: 未解決の外部シンボル」が出てしまいます。

環境はVC2002です。よろしくお願いします。
165デフォルトの名無しさん:2012/01/26(木) 17:30:31.05
.lib
166デフォルトの名無しさん:2012/01/26(木) 17:37:16.76
素早いw
両プロジェクトともexeの場合ってダメなんでしたっけ?
良く考えればダメですよね。。。

もうちょっと具体的に言うと、Project1が開発アプリで、Project2がテストアプリで
Project1のクラスをProject2で実体化してテストしたいんです。

良いやり方があればご教授いただきたいです。
167デフォルトの名無しさん:2012/01/26(木) 18:02:54.86
ん、単純にProject2にソースコード追加すればいいだけですねorz
すみません、お騒がせしました
でもここに書き込んだら考えが整理された気がしますw

もっと良いやり方ってありましたっけ?有るようでしたら教えて頂ければと思います。
どうもありがとうございました。
168デフォルトの名無しさん:2012/01/26(木) 22:05:16.82
ん? ふつうに出来たんだが。w
VisualStudio2010 の C++/CLI で以下の通り。

1. 同じソリューション内に form アプリケーション(Project:A)と
  クラスライブラリ(Project:B)を作成
2. Project:A で参照の追加を設定し、Project:B をプロジェクトごと参照設定する
3. Project:B に適当にクラス(ClassB)とそのメソッド(ClassB::test)を作る
4. Project:A の適当なところで、 B::Class のインスタンスを作成する
5. そのクラスのインスタンスからメソッドを呼び出す (gcnew B::Class())->test()

うん。ふつーに出来た。
名前空間はちゃんと設定した? 上の例だと A とか B のことだけど。

ちなみにヘッダファイルのインクルードはやってない。
上は exe & dll だけど、マネージの実行ファイルなら exe & exe でも同じように出来る。
169デフォルトの名無しさん:2012/01/27(金) 00:47:40.44
exeをサービスに登録して動かしているんですが、
サービスより起動しようとするとすぐに停止になってしまいます。
イベントビューアからログを見るとイベントID7034でした。

これまでは普通に起動していたんですが、
exeの中で使用しているメッセージ出力に使うファイルを、
配置してやったとたんになってしまいました。

特にこれが問題になってるとは思ってなくて、
(Visual Studio 2005でコンパイルしたexeでは問題なかったため)
Visual Studio のバージョンを変えてコンパイルしたので、
何かあるのかなと思ってます。

Visual Studio 2008でサービスを起動するコーディングをする際に、
2005と違う点は何かあるんでしょうか?
170デフォルトの名無しさん:2012/01/27(金) 12:32:25.27
>>169
アプリケーションのイベントログにエラーが出てないか?
171デフォルトの名無しさん:2012/01/27(金) 21:04:33.86
その情報でどうしろと。w
172デフォルトの名無しさん:2012/01/27(金) 23:18:13.39
>>170
それが7034ですね。

>>171
ですよねー。w
コーディングを載せるわけにもいかなくて、
何を載せるべきかと。。。w
173デフォルトの名無しさん:2012/01/28(土) 00:26:52.91
わかってんじゃねーか。w

それ、「プログラムは予期せず終了した」だよな。
169 だとどうとでも読めるけど、もとはサービスじゃなくて普通の exe として起動してたの?
サービスとして起動したんだとしても、やることは変わらないだろ。

・元の状態に戻して動作確認
・元の状態で VS2010 でビルドして動作確認
・いろんなところを削って、とにかくただ起動するだけの状態にして動作確認
・少しずつ元の状態に戻していきつつ、どこで異常終了するようになるかを確認

最後のが確認できれば解決したも同然だろ。

もう忘れちゃってるけど、マネージならサービスプログラムとして作ってても他の実行ファイルから
簡単に中身を参照することができるから、普通のプログラムとして起動した後にすぐに
そのサービスプログラムを参照する試験用プログラムを組めばデバッグも楽そうだよな。

まあ触りのない部分だけでもソースを晒してくれたら協力してやるよ。w
174デフォルトの名無しさん:2012/01/28(土) 01:54:40.26
>>173
いえ、最初からサービスとして起動するためのexeですよ。
んで、ちゃんと起動するんですよ。
ただ。

その処理の中で、ログを吐く処理があるんですね。
そのログは設定ファイルを読み込んで、そのファイルの中の文言を吐いてるんですけど、
設定ファイルを指定のディレクトリに置いたとたん。
起動しなくなってw

そのファイルを置いてなければ動くんですが、置いたら動かない。。。
よーわからん状態w
ただ、サービスが停止するまでのログはちゃんと吐いてるんで読み込まれてないとか、
読み込みでエラーになってるわけではなさそう。。。
175デフォルトの名無しさん:2012/01/28(土) 11:42:43.39
いや、だから。

・単純に起動するだけ
・単純に起動するだけ & その設定ファイルを読み込むだけ

の状態にしてどうなるかを確認。
これで設定ファイルを読み込むようにして不正終了するのを確認できたら犯人が確定だろ。
現状ではそう思い込んでるだけかもしれんだろーが。まずは実証確認をするべきだ。

で、ログ出力機能があるなら、最悪、全ステップの前後にログをはさんで、場所を確定。
それで解決できないならそもそもおまえじゃどうしようもないってことじゃないのか。

どういう構造かは知らんけど、素人が動くだけのプログラムを作ったのなら、
エラー時のフォローなんて入れてないんだろうから、たとえば設定ファイルが xml 形式なら
参照先のノードがなかったり、名前空間が違ってたり、文字コードが違ってたりして
パーサが出してる例外を捕捉してないだけなんて事例はくさるほどある。

171 を自覚しててまだ続けるなら、ほんとうに触りのないレベルに削ったコードを晒せ。
以降はそしたら手伝ってやるよ。
176デフォルトの名無しさん:2012/01/30(月) 18:17:45.78
>>172
7034がアプリケーションログに出てるの?
システムログじゃなくて?
まあどっちでもいいや
見るべきところがはっきりしてるのにグダグダやってるようじゃ
「お前には無理」としかいいよがない
177デフォルトの名無しさん:2012/01/31(火) 18:56:00.30
Visual C++ の std::copy 関数を
POD型の std::vector なんかで使うと
バイナリコードでは最適化されて
REP MOVSQ 命令になってくれたりしますか?
178デフォルトの名無しさん:2012/01/31(火) 21:13:33.26
浅学でよく知らんのだが、それって関係あるのか?
179177:2012/01/31(火) 23:51:38.39
巨大な行列を扱うライブラリを書いているんですが
コピー処理はアセンブラ使った方が速いのかな・・・と。
180デフォルトの名無しさん:2012/02/01(水) 04:47:43.05
Visual Studio 2008 Pro って案外不安定。
20行程度の参考書のIF文のサンプルコードを書き込み、
デバッグで実行しただけで固まりそうになる。

VS 2010を買うべきか、VS11まで待つべきか。
181デフォルトの名無しさん:2012/02/01(水) 04:59:27.61
買うべき
VS11が出たらまた買えばいい
182デフォルトの名無しさん:2012/02/05(日) 15:12:37.88
質問です。空のWin32プロジェクトを作成し、次のコードを入力します。

#include <Windows.h>
static const CHAR str[] = "いやんばか〜ん";
static CHAR func(int x)
{
return str[x];
}
int WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
{
return 0;
}

ご覧の通り、strはfunc()から参照されていますが、
func()はどこからも参照されていない状態です。
これのReleaseビルドを行うと、不要なはずの"いやんばか〜ん"が
なぜかexeファイルの中に埋め込まれてしまうのですが、
これが埋め込まれないようにする方法があれば教えてください。
Visual C++の2005でも、2010 Expressでも結果は同じでした。
いずれもプロパティはデフォルトのまま使っているので、
"/OPT:REF"は有効になっているはずなのですが・・・。
183デフォルトの名無しさん:2012/02/05(日) 15:18:54.65
#ifdef _DEBUG
static const CHAR str[] = "いやんばか〜ん";
#endif
184デフォルトの名無しさん:2012/02/05(日) 15:20:29.46
str変数は削除されてもリテラル文字列が消えるわけない
どこで使われてるかわかったもんじゃないし、実行時の速度に影響するわけでもなし。
185デフォルトの名無しさん:2012/02/05(日) 15:34:06.36
・/OPT:REF がデフォルトで設定されているって記述は見つからなかった
・「はず」じゃなくて、自分で設定して試してみた?
・VC2010 の Win32 コンソールプログラムで試した
 - "return str[x];" の行をそのまま      -> 実行ファイルに文字列あり
 - "return str[x];" の行を retuen NULL; に -> 実行ファイルに文字列なし

結論
 /OPT:REF を付けても実行ファイルに出力されない関数内とかを含めてどこかで参照してると
 実行ファイルにその参照してるデータも出力されるっぽい。

対策案
 しかたないので、使わない部分を #ifdef で囲って切り替えられるようにするとか?
186デフォルトの名無しさん:2012/02/05(日) 17:40:20.25
お返事をいただき、ありがとうございます。

>>183
#ifdefはどうしてもという場合の最終手段ですねw

>>184
そういうものなんですかねぇ・・・。
static宣言をしていますし、少なくともそのファイル内で
参照されていなければ不要なのは明らかだと思ったのですが・・・。
ちなみにリテラル文字列ではなく配列要素を直接指定しても同じでした。

>>185
すみません、言い方が悪かったです。プロジェクト作成直後の
Releaseビルドの設定は/OPT:REFになっているので、
参照されない関数やデータは削除される「はず」という意味でした。

その後、いろいろ試してみたところ次のことが分かりました。(いずれも2010 Express)
・exeに埋め込まれているのはデータのみで、関数本体は削除されている。
・constを外してもやはりデータは残る(セクションの位置は移動する)。
・データを関数の外ではなく、関数内で直接定義すればデータも削除される。
・複数の関数から同じデータを参照する場合でも、それぞれの関数内で定義すれば
不要であればデータは削除されるし、必要な場合でも1つにまとめられる。

というわけで、たとえ同じデータであっても関数の外には出さずに、
各関数内で定義することでこちらが望む動作になるようです。
とりあえずこれで何とかなりそうです。どうもありがとうございました。
187デフォルトの名無しさん:2012/02/06(月) 20:05:05.09
visual studio c++ 上でlibjpegを使ってBMPからJPEG画像として保存
しようと頑張っているのですが、どうしてもjpeg_create_compressで落ちてしまいます。

struct jpeg_compress_struct comp;
struct jpeg_error_mgr jerr;

comp.err = jpeg_std_error(&jerr);
 jpeg_create_compress(&comp); ←ここでおちます;;
188デフォルトの名無しさん:2012/02/06(月) 20:12:32.88
GDI+でも使えば?
189デフォルトの名無しさん:2012/02/06(月) 20:57:36.39
gdiplusを使ってできました。ありがとうございます。
190デフォルトの名無しさん:2012/02/12(日) 18:13:21.14
Visual C++ 2008 Express Editionを使っています。
hとかcppファイルは関連付けられていてvisualstudioで開くでのですが、
これらを他のツールから開くときにコマンドラインパラメータ等で行数を指定したりできますか?
開いた瞬間に指定行に移動するようにしたいのですが。
191デフォルトの名無しさん:2012/02/12(日) 18:32:37.85
>>190
そのツールにそういう機能があるかどうか、による。
192デフォルトの名無しさん:2012/02/12(日) 18:41:43.95
>>191
すいません、書き方が悪かったです。
他のツールからVCExpress.exeを指定してVCExpress.exeで開くという意味です。
どうもググってみましたがそういうスイッチは見当たらないようですね。
193デフォルトの名無しさん:2012/02/12(日) 21:00:59.01
UWSCから起動&操作するとか
194デフォルトの名無しさん:2012/02/14(火) 13:10:30.96
Lや_T()マクロを使わずに文字列をそのままUnicodeのものとして扱いたいのですが、方法はありますか?
195デフォルトの名無しさん:2012/02/14(火) 13:35:11.20
196デフォルトの名無しさん:2012/02/19(日) 11:14:57.83
VC++2008で、「デバッグ開始」でコンソールプログラムを実行すると、
最後まで処理した後、勝手にコンソール画面を閉じて終了してしまいますが、
「デバッグなしで開始」で実行すると、コンソール画面を表示したままにしてくれます。

このような違いはなぜ起こるのでしょうか?
「デバッグ開始」のこの仕様は不便に思うのですが、
そのようにしてまで大事なことが他にあるのでしょうか?
197デフォルトの名無しさん:2012/02/19(日) 11:39:00.30
それはマイクロソフトの技術者に聞いてくれとしか。
似たような疑問はたくさんあるみたいだから、ぐーぐる先生に質問してみるとか。

if ( ::IsDebuggerPresent() ) system("pause"); みたいなコードを勝手に付けてるんじゃない?
198デフォルトの名無しさん:2012/02/19(日) 15:07:35.26
>>196
デバッグしてるのに、終了まで流すのは普通ありえないから
199196:2012/02/19(日) 15:10:27.22
>>197
調べてみたんですが、最後止まらずに終わってしまう理由については分かりませんでした。

>>198
なるほど、そういう前提での仕組みですね。
ありがとうございました
200デフォルトの名無しさん:2012/02/19(日) 17:11:34.75
三日前にVisual C++2010をDLした超初心者です。

1.ラベルと変数を3つずつ(時間、分、秒)用意
2.ボタンを押すとタイマー(intervalは1000=1秒)が起動
3.イベントが発生する度に「秒」の変数を+1する
4.「秒」の変数が59以上になったら「秒」の変数に0を代入して「分」の変数を+1する。分→時間も同様

Windowsフォームアプリケーションのテンプレートから、上のようなタイマーをつくろうとして、
自分が他のタイマーツールと比較した時はズレはなかったのですが、
他の人が試したところ、1分経つ毎に1秒ズレているようなんです。

これはSystem.Windows.Forms::Timer(?)が何かに依存していてダメなんでしょうか?
それともそんなことはなく、文に問題があるのでしょうか?
201デフォルトの名無しさん:2012/02/19(日) 17:22:55.60
>>200
現在時間をタイマーに依存するのがダメ、そこまでの精度はない
タイマーイベントの中で現在の時刻を都度取得すればいい
202デフォルトの名無しさん:2012/02/19(日) 18:00:05.23
現在時刻とか取得できるんですね・・・
つまり
1.変数:時間、分、秒、基準時刻を用意
2.タイマーを起動するボタンを押した時の現在時刻を取得、変数:基準時刻に代入
3.タイマーイベント内で現在時刻を取得、基準時刻と現在時刻の相対時刻を取得。変数:時間、分、秒に代入
4.現在時刻を変数:基準時刻に代入

こんな感じにすれば一時停止にも対応出来るって感じですかね
なんとなくつかめました、ありがとうございます
203デフォルトの名無しさん:2012/02/25(土) 16:34:01.56
project eulerの問12を解きました。
↓問題です。
http://odz.sakura.ne.jp/projecteuler/index.php?cmd=read&page=Problem%2012

自分はこのようにプログラムを書いたのですが、
実行時間が長すぎることが気にかかります。
http://codepad.org/csyM6H64

どのように改善すれば時間短縮することができるのでしょうか。
お願いします。

このプログラムは、偶数か奇数かなら、
偶数の方が約数の数が多いだろう と思って作ったので、偶数だけを対象にしています。
204デフォルトの名無しさん:2012/02/25(土) 21:47:13.56
>>203
宿題スレに行くべきだね
完全力技でなく、map などを使って
1. 一旦素因数分解して、素因数分解の結果から解を求める
2. 素因数への分解仮定で、すでに計算結果の出てるものは再利用する
とかやればいくらか早くなりそうな感じはするけど
205204:2012/02/26(日) 02:13:52.34
>>203
失礼、見直したら宿題というわけではないのか
Visual C++でもない気がするけどどのスレなのか分からないから答えておくと
以下の2点だけでそれなりに改善できそうな気がする (>>204は考えてみたら面倒な割にコストが微妙そうだった)

1. 除算するとき、除数と商は対になるはずなので、計算は半分で良い
20の約数(1,2,4,5,10,20)なら
20/4が割り切れた時点で、4と5の両方が求められる
2. sqrt(sum)で除数と商が等しい状態になる、それ以上は計算しなくてよい

具体的には
sum2 = sum >> 1;
for(int idx = 3; idx < sum2; idx++){

int sum2 = int(sqrt((double)sum));
for(int idx = 3; idx < sum2; idx++){
として、

if (!(sum % idx)) {count++;}

if (!(sum % idx)) {
 count++;
 int div = sum / idx;
 if (div != idx) {count++;} //除数と商が等しい場合を除き、対としてカウントする
}
とする

あと、数値が連続なら特定以上の約数を持つ最小の数値が2で割り切れるのは確実と思うけど、
対象が連続でないので、偶数であることは保証されないと考えるほうが安全と思う
206デフォルトの名無しさん:2012/02/26(日) 14:44:39.25
>>205
なるほど!
約数を根本的に考えればそうなりますね!
そんなことにも気づかないなんてばかでした・・・。

それと、
if (!(sum % idx)) {count++;}

if (!(sum % idx)) {
 count++;
 int div = sum / idx;
 if (div != idx) {count++;} //除数と商が等しい場合を除き、対としてカウントする
}
とする
のところは、

for(int idx = 3; idx < sum2; idx++){
  if(!(sum % idx)){
   count += 2;
  }
}

if(idx == sum2){
count--;
}
とした方が若干速いと思います。

ありがとうございました!
207デフォルトの名無しさん:2012/03/10(土) 21:55:24.62
練習としてフォームに線を引くプログラムを書いています

フォーム上にあるButtunを押すとフォーム上に線が出てくるようにしたいです。
んでそれは完成しました。

以下、質問です。
クラスウィザードを使って描画クラス(Draw.hとDraw.cpp)を作り、
描画オブジェクトを分離しようとしました。
しかし、Draw.hからFormに線を引くオブジェクトを作成する方法が分かりません。
フォーム上のボタンに書き込んだ
Graphics^ gr2 = this->CreateGraphics();
のthisの部分を
System::Windows::Formsに書き換えるだけじゃ駄目なんですか?

ちょっと分かりにくい質問ですがどなたか回答いただけると幸いです
208デフォルトの名無しさん:2012/03/10(土) 21:55:47.64
ageてしまいましたすみません
209デフォルトの名無しさん:2012/03/12(月) 02:02:52.54
駄目
210デフォルトの名無しさん:2012/03/12(月) 09:25:48.15
これってアセンブリコード吐けるの?
211デフォルトの名無しさん:2012/03/12(月) 09:58:12.99
そりゃはける
212デフォルトの名無しさん:2012/03/12(月) 10:41:04.85
ゲロゲロ
213デフォルトの名無しさん:2012/03/12(月) 11:05:01.11
>>207
そのレベルでC++/CLIは無駄な気がする。
FormやりたきゃC#、C++やりたきゃCLIじゃないほう
両方同時にやってもC++/CLIやるよりまし。
214デフォルトの名無しさん:2012/03/12(月) 21:21:25.38
>>207
基本的に上に同じなんだが。

やり方の方ね。
そりゃダメだろ。コンパイルも通らないんじゃないの?
是非はともかく、一番簡単な方法は form のクラスに this->CreateGraphics(); を返すメソッドなりを作って、
Draw.cpp の方でそれを受け取って描けばいいんじゃね?
215デフォルトの名無しさん:2012/03/13(火) 12:58:49.23
質問なのですが、出力タブに特定の警告を出さないようにすることはできないでしょうか?

具体的には、
「'BOOL' : ブール値を 'true' または 'false' に強制的に設定します」という
警告が大量に出てきて本当にエラーが出ているところが分からなくなるので、
なるべくソースコードは変更せず警告を消す方法が無いかを探しています。

何とかならないでしょうか
216デフォルトの名無しさん:2012/03/13(火) 12:59:59.72
すいません。

VisualC++2008ExpressEditionを使用しています。
217デフォルトの名無しさん:2012/03/13(火) 13:12:57.34
#pragma disable でなんとかなるか、、、
typedefで定義しちゃうとか
218デフォルトの名無しさん:2012/03/13(火) 13:47:58.95
#pragma warning(disable:xxxx)
だったな。
219デフォルトの名無しさん:2012/03/13(火) 14:08:07.02
220デフォルトの名無しさん:2012/03/13(火) 19:32:12.17
上手くいきました!
先生方あざ〜す。
221デフォルトの名無しさん:2012/03/13(火) 20:59:11.97
てーか、それ最後の手段だと思うんだが。

BOOL a = TRUE;
bool b = a;

とかやってんだろ? だったら、

bool c = ( a != FALSE );

とかって書き直してやれば済むじゃん。
222デフォルトの名無しさん:2012/03/15(木) 14:09:34.11
配列の中身が重複してるかどうか調べるには
#include<string>を使えばいいんですかね?

具体的に言えば、
array[0] = 1
array[1] = 2
array[2] = 3
array[3] = 1
array[4] = 2
array[5] = 3

となっているときに、
array[0]~array[2]までを連結させた数字(123)と、
array[3]~array[5]までを連結させた数字とが等しいですね

って出力してくれる関数を探してます。
find()とか使うといいのかなと考えてたんですが、
文字列にしか使えないって書いてあるので、
配列自体に簡単に使える関数はありますか?
223デフォルトの名無しさん:2012/03/15(木) 14:25:32.76
ないよ
自分で作るしかない
224デフォルトの名無しさん:2012/03/15(木) 15:08:29.50
>>223
わかりました。
ありがとうございます。
225デフォルトの名無しさん:2012/03/15(木) 20:18:14.02
C言語の配列ならメモリ的にも連続だから、比べる配列サイズが等しいなら、
memcmp(&array[0], &array[3], sizeof(array[0])*3)
とかで代用できそう
226デフォルトの名無しさん:2012/03/16(金) 15:31:25.54
VC2008が最近頻繁にバグります。
命令には全く書いていない変数を勝手にインクリメントするのでマジうざいです。
そのプロジェクトを削除してソースコードだけ新規プロジェクトに移植すると直ります。
これはどうしてなんでしょうか?
227デフォルトの名無しさん:2012/03/16(金) 15:34:32.57
vc2010を入れる
228デフォルトの名無しさん:2012/03/16(金) 15:41:31.29
コード書いてないのにグローバル変数の内容が勝手に変わるのはなぜなんですか?
内容が変わる位置は特定してるんですが、手の出しようがありません。
229デフォルトの名無しさん:2012/03/16(金) 16:02:23.83
デバッグ->ブレークポイントの作成->データブレークポイント で値が変更されたときに止まるから調べてみ
230デフォルトの名無しさん:2012/03/16(金) 16:21:43.31
>>229
ある配列の値が変更された際に、変更した分だけグローバル変数の値が変わるようです。
もちろん配列にセットしているわけじゃありません。

変数名で全文検索しましたが、明示的に指示してはいませんでした。
スコープを考えてもそれは考えにいです。
231デフォルトの名無しさん:2012/03/16(金) 17:47:27.22
アドレスかぶってんだろ、自分でいれたバグかと
232デフォルトの名無しさん:2012/03/16(金) 19:14:37.54
ポインタを理解していない人のコードって怖いよね
233デフォルトの名無しさん:2012/03/16(金) 19:21:57.82
理解してても実際管理しようと思ったら死ぬる
234デフォルトの名無しさん:2012/03/22(木) 23:32:35.36
GUI付きのプログラム作るときって
GUIから作るのかデータ構造から作るのかどっちなの?
235デフォルトの名無しさん:2012/03/22(木) 23:43:12.85
どっちから先に作ってもいいがな(´・ω・`)
経験的には顧客に見せるためにGUIが先に出来上がるケースが多いが
しかし作ること自体は同時進行(´・ω・`)
236デフォルトの名無しさん:2012/03/22(木) 23:43:23.27
M作って
V作りながらVM作る
BOOL CStudioView::PreCreateWindow(CREATESTRUCT& cs)
{
if (!CWnd::PreCreateWindow(cs))
return FALSE;

cs.lpszClass = AfxRegisterWndClass(
CS_HREDRAW | CS_VREDRAW | CS_DBLCLKS,
::LoadCursor(NULL, IDC_ARROW),
(HBRUSH)::GetStockObject(LTGRAY_BRUSH),
NULL);
return TRUE;
}
BOOL CStudioView::PreCreateWindow(CREATESTRUCT& cs)
{
BOOL bool1 = CWnd::PreCreateWindow(cs);
if (!bool1)
return FALSE;

UINT nClassStyle = (UINT)(CS_HREDRAW | CS_VREDRAW | CS_DBLCLKS);
/* WINUSERAPI */ HCURSOR /* WINAPI */ hCursor = ::LoadCursor(NULL, IDC_ARROW);
/* WINGDIAPI */ HGDIOBJ /* WINAPI */ hGDIObj = ::GetStockObject(LTGRAY_BRUSH);
HBRUSH hbrBackground = (HBRUSH)hGDIObj;
cs.lpszClass = AfxRegisterWndClass(nClassStyle, hCursor, hbrBackground, NULL);
return TRUE;
}
普通の人は>>237のようにコード書く人が多数のようだが、
>>238のようにコードを書くのは異常かいな。
そんなことないと思うけど。
自分も程度の差はあるけど 237 ダイレクトな書き方はあんまりしない。
だって、bool1にしてもnClassStyleにしてもhbrBackgroundにしてもたった一回しか使ってないじゃない
変数の準備と書き込みと破棄の3つの動作がまるまる無駄になってる
この関数が1秒間に何回も呼び出されるようなシロモノだとパフォーマンスにクリティカルなダメージが出る

といっても、コンパイラが潰してくれるかな^^
PODの生成破壊なんてダメージほぼないだろ。
243デフォルトの名無しさん:2012/04/30(月) 16:46:18.04
VCで自作DLLを勉強しています。

Test.dllでCTestClsクラスを __declspecエクスポートし、これを同じくVC側のEXEで使用すると、
実行時に「プロシージャエントリポイント ??1CTestCls@@UAE@XZがダイナミックリンクライブラリTest.dllから見つかりませんでした」
というエラーが出て終了します。DLL、EXEともにビルドは通っています。

ttp://www.kab-studio.biz/Programing/Codian/DLL_Hook_SClass/05.html

を完全に再現する手順を踏んでいます。
EXEのコードはMFC Appウィザードから作ったスケルトンにCTestClsを宣言を追加し

BOOL CWindowtestApp::InitInstance()
{
  :
  CTestCls test;
}

のみ。CTestClsはメソッド、メンバ変数のない空クラスにしています。
ちなみに、Test.dllで同様にエクスポートした関数は正常に動作します。

原因と対処法を教えてください。

環境
OS:Windows Vista Home
IDE:Visual Studio 6.0 SP2
244デフォルトの名無しさん:2012/04/30(月) 17:54:33.94
test.dllが他にもあるんじゃないか
245243:2012/04/30(月) 21:05:36.55
>>244
ありがとうございます。

書き忘れましたので追加します。
ビルド構成はdebugでプロジェクトからF5実行してテストしています。

レスを頂く前に、プロジェクトフォルダに置いたtest.dllをdebugフォルダにコピーして
deubgフォルダのexeを起動したら正常動作し、
何の気なしに再度プロジェクトを走らせたらエラーは消えました。

なので、原因は同名DLLが複数あることではなかったと想像します。

次に、動作の異なるtest.dllを作ってそれぞれに配置するとdeubgフォルダの方が動くようですが、
debugフォルダのDLLを削除したり名前を変更するとプロジェクトフォルダのDLLが適用されます。
逆にプロジェクトフォルダのDLLを削除したらdebugフォルダのtest.dllが動きます。

現状がこのように変わりましたので、エラーの原因が未だ不明ですし、
VSがdebug→プロジェクトフォルダと上位に向かってDLL検索してるのも気持ち悪いです。
246デフォルトの名無しさん:2012/04/30(月) 21:12:53.83
デフォでプロジェクトフォルダが作業フォルダになるから当たり前だろ
247243:2012/04/30(月) 21:27:03.02
>>246
それなら同名DLLが両方にあった場合にdebugフォルダの方が動くのはおかしいですよね。

とりあえず優先順位についてはこっちでどうこう言ってもしょうがないのでそれと憶えれば解決しますが、
エラーメッセージの原因が知りたいです。
248デフォルトの名無しさん:2012/04/30(月) 21:57:41.77
要するにtest.dllが複数バージョンあったことが原因だろ
249243:2012/04/30(月) 22:16:02.72
>>248

>>245で書いたように、現在は複数あってもエラーが出ないから原因はそれではないだろうと考えているのです。
昔は複数あったことでエラーになったと仮定して、今は複数あって正常ならその差はなんですか、ということです。
プロジェクトやIDEの設定は変更していません。

バージョンを分けたのは、どっちのフォルダに置いても動くので優先順位を確認するためにしたという
手順によるもので、エラーが出ていた時に複数バージョンあったわけではありません。
250デフォルトの名無しさん:2012/04/30(月) 22:25:15.25
>>247
エラーメッセージの原因って
>??1CTestCls@@UAE@XZがダイナミックリンクライブラリTest.dllから見つかりませんでした
って、いってるんだから、原因はそれでしょ

あとはどう調査するかで、Test.dllで公開してる名前の一覧を
> dumpbin /exports test.dll
で確認してみるとか
仮にdllが正しかったとしても、ビルド時の.libファイルが古かった可能性もあるかもしれん
その場合はexe側のimport情報も出力して付き合わせてみるとか

あと、dllの検索順は
1. 実行ファイル(exe)が存在するディレクトリ
2. windowsシステムディレクトリとか
3. カレントディレクトリ
4. 環境変数 PATH に設定されてたディレクトリ
みたいになるので、debugフォルダ=>プロジェクトフォルダは別に上位に向かってdll検索するわけではなく、フォルダ検索の優先順位があるだけの話
よくわからなくて質問してるはずなのに246のアドバイスをおかしいとか断言するのはどうかと思う
251デフォルトの名無しさん:2012/04/30(月) 23:08:48.05
>昔は複数あったことでエラーになったと仮定して、今は複数あって正常ならその差はなんですか、ということです。

うわがきしてるじゃねーか
252243:2012/04/30(月) 23:13:21.01
>>250
「エントリポイントが見つからない」というメッセージから、
直接の原因がそれだという程度の想像はつきます。見つからない原因が分らないという意味でした。

>よくわからなくて質問してるはずなのに246のアドバイスをおかしいとか断言するのはどうかと思う

>>246さんの言うとおりプロジェクトフォルダがデフォルトなら、
他のものが優先されるのが「当たり前」というのは筋が通らないと思いませんか?
デフォルトに優先するものがあるなら、優先順位を決定する設定値があるか、
そもそもデフォルトがプロジェクトフォルダではないと考えるのが正当ではないかと思った次第です。

検索順については副次的な疑問だったのですが、丁寧にありがとうございます。

もう一度最初から作り直してエラーを再現させてから、教えて頂いた方法で探ってみます。
ありがとうございました。
253デフォルトの名無しさん:2012/04/30(月) 23:21:16.52
元々古いバージョンがロードされたままだったんじゃね?
254243:2012/04/30(月) 23:38:02.45
>>251
二つのフォルダに完全に同一のDLLファイルがあり、その片方にさらに同一のものをコピーして
ファイルに差分は無くとも「上書きした」という情報を得てエラーを解消するということがあるということですか?

単にオペレーションの差という点でのご指摘であれば、そもそもdebugフォルダに
test.dllがあったかどうかは憶えていないので、上書きかどうかは不明です。
255243:2012/04/30(月) 23:54:14.06
>>253
エラーが出なくなった時点ではバージョンはひとつでした。
時系列では以下のようになります。

0.DLLビルド(debug構成の出力のみ。以下同様)、EXEプロジェクト作成(libファイルのフォルダ指定はDLLプロジェクトのdebugフォルダ)
1.EXEプロジェクト実行→エラー(エントリポイントが見つかりません)
2.EXEプロジェクトフォルダのdllをdebugフォルダにコピーしてdeubgフォルダのexe起動→正常
3.EXEプロジェクト実行→正常
4.なぜEXEプロジェクトが正常動作するようになったのか不明なため、片方のフォルダからdllを削除したり
  バージョンを分けて両方のフォルダにバージョン違いのdllを配置して優先順位の検証

そんなこと有り得ないというのであれば、私の記憶違いがあると思います。

アドバイスを下さった皆様ありがとうございます。
これらを元に0からチェック項目を作ってやり直してみます。
256デフォルトの名無しさん:2012/05/01(火) 11:07:16.24
>>252
優先順位はちゃんとドキュメントに書かれてるだろ
あたりまえなの
257デフォルトの名無しさん:2012/05/01(火) 11:49:55.54
プロジェクトフォルダ(カレント)がデフォだと言ってる奴が間違ってるんだろ。
258デフォルトの名無しさん:2012/05/01(火) 14:07:46.60
Windows95/98に対応しているVC環境教えてください。2003.NETあたりまでなら使用できそうですか?
259デフォルトの名無しさん:2012/05/01(火) 14:12:52.82
>>246がおかしいな。
実行モジュールがある場所がデフォだからdebugフォルダが優先されるのは当たり前、
と書くべきなのに、
「プロジェクトフォルダがデフォだからdebugフォルダが優先されるのは当たり前」
というのが滅茶苦茶。
260デフォルトの名無しさん:2012/05/01(火) 14:12:15.04
2010 でも可能
261デフォルトの名無しさん:2012/05/01(火) 14:15:01.04
>>260

マジか? Win95/98でも2010使えるのか(めっちゃ重そうだけど)。
ということはexpressが使えるわけか。正直インストールできるか不安だけど。
262デフォルトの名無しさん:2012/05/01(火) 14:42:12.15
>>259
作業フォルダのデフォルトがプロジェクトフォルダだって書いてるだけだろ
別に言ってることはおかしくない
それに優先に関しては言及してない
263デフォルトの名無しさん:2012/05/01(火) 15:52:56.16
>>262
優先順位について言及してなければ>>246の主語・主節はなんだ?
何が当たり前なんだ? それは文章としておかしいぞ。
つーか、デフォルトの作業フォルダはexeの出力先だろ。
264デフォルトの名無しさん:2012/05/01(火) 16:29:37.45
>>263
>debugフォルダのDLLを削除したり名前を変更するとプロジェクトフォルダのDLLが適用されます。
ここだろ
>つーか、デフォルトの作業フォルダはexeの出力先だろ。
違うよ
〜.vcxprojがあるフォルダが作業フォルダになる
265デフォルトの名無しさん:2012/05/01(火) 17:26:52.52
>>264
お前頭おかしいんじゃないの?

>debugフォルダのDLLを削除したり名前を変更するとプロジェクトフォルダのDLLが適用されます。

「当たり前」の主語が↑ということは間接的に優先順位に言及してるんだけど。
しかもなんで書いた本人にしか分らない主語を省略してるんだよwww
266デフォルトの名無しさん:2012/05/01(火) 18:09:12.11
配列の添え字に負の数や、制限を超えた時に
動作時、VBのようにエラーでとめるような手法はありますか?

int a[10];
int b ;

// OK
b = 5;
a[b] = 3;

// NG
b = -1;
a[b] = 3;

// NG
b =  15;
a[b] = 3;

Cの場合普通に動いてしまい、
メモリリークした値をそのまま使い続け
とまるときととまらないときがあって困っています。
267デフォルトの名無しさん:2012/05/01(火) 18:18:37.34
std::vectorを使う
268デフォルトの名無しさん:2012/05/01(火) 19:02:08.69
ASSERT( sizeof( a ) / sizeof( aの型 ) > b );
とか出来なかったっけ。
269デフォルトの名無しさん:2012/05/03(木) 19:11:21.90
std::vectorもいいが、std::arrayも使える。

// #include <array>
std::array<int, 10> a; // VC++ 2008だとstd::tr1::arrayだったはず。
int b;

b = 15;
a.at(b) = 3;

a[b] = 3;とも書ける。ただし、この場合、チェックされるのはデバッグビルドのときだけ。
270片山博文MZボット ◆0lBZNi.Q7evd :2012/05/05(土) 17:07:17.98
古い環境には<array>はないようだな。
271デフォルトの名無しさん:2012/05/08(火) 18:28:47.55
VS2010C++インストール後、SDK7を入れてx64用のを作れるようにするというのは
x86のPCで64bit用のを作れるのか、それともx64のPCで64bit用のを作れるようになるのか
どっちなんでしょ


参考URL
ttp://d.hatena.ne.jp/torutk/20100927/p1
272デフォルトの名無しさん:2012/05/08(火) 18:52:16.04
後者
273デフォルトの名無しさん:2012/05/08(火) 18:53:07.72
なるほど、ありがとうございます
274デフォルトの名無しさん:2012/05/17(木) 22:25:37.08
VC++でGUIの作り方がさっぱりわかりません。
コントロールがVC#やVB.NETと比べると段ちだし・・・

やりたいことは、listとtreeを結合したようなVS2010のウォッチウィンドウを
作りたい
275デフォルトの名無しさん:2012/05/17(木) 22:27:45.08
codepadあたりにそんなのあった気がする
276デフォルトの名無しさん:2012/05/17(木) 22:47:29.61
>>275
作りたい
277デフォルトの名無しさん:2012/05/17(木) 22:52:47.07
馬鹿には無理
278デフォルトの名無しさん:2012/05/17(木) 22:56:07.95
>>277
説得力のあるお言葉ですねw
279デフォルトの名無しさん:2012/05/17(木) 23:09:06.89
WindowsでWindowsっぽいGUIやりたいならC#使えば?
どうせアマチュアでしょ?
280デフォルトの名無しさん:2012/05/17(木) 23:24:36.65
アマチュアって?

仕事以外でそんなことするほど、暇じゃないし。
ヲタでもありません。
281デフォルトの名無しさん:2012/05/17(木) 23:33:10.24
作りたいんじゃないのか
282デフォルトの名無しさん:2012/05/17(木) 23:43:50.63
283デフォルトの名無しさん:2012/05/18(金) 00:08:56.59
>>281
好き好んで作りたいわけでない

作らざるを得ない
284デフォルトの名無しさん:2012/05/18(金) 00:20:47.41
仕事なら自分でやれ

アマチュアなら教えてやったんだがな
285デフォルトの名無しさん:2012/05/18(金) 00:21:06.71
なんでそんなにエラそうなんだよ。w
揚げ足取りをすると、自分で「作りたい」って書いてるし。

で、そんなこたどうでもいいんだが、結局どうして欲しいんだよ。
技術者の端くれなら、その程度の説明くらいはちゃんとしろ。
286デフォルトの名無しさん:2012/05/18(金) 00:28:19.21
>>284
なんとでもいえるわなwww
287デフォルトの名無しさん:2012/05/19(土) 15:59:31.16
>>274
リソーススクリプトを覚えれば自由自在にGUIを作れるよ
MSDNの英語版に詳しく載ってるから勉強してみたら
288デフォルトの名無しさん:2012/05/20(日) 05:26:03.56
------ ビルド開始: プロジェクト: testtttt, 構成: Release Win32 ------
printf.c
printf.c(1): fatal error C1083: include ファイルを開けません。'stdio.h': No such file or directory
========== ビルド: 0 正常終了、1 失敗、0 更新不要、0 スキップ ==========

このエラーにはどうすればいいのでしょうか
サンプルを使っている為ソースコードには問題ないのでしょうが・・・

WinXP
289288:2012/05/20(日) 05:26:59.12
すいません
途中送信してしまいした

WinXP SP3
VC2010です
よろしくお願いします
290デフォルトの名無しさん:2012/05/20(日) 07:09:28.51
プロジェクトを作り直してプリコンパイル済みヘッダを使用しないにチェック入れろ
291デフォルトの名無しさん:2012/05/25(金) 19:10:45.19
2010のEEですけどインテリセンスと自動構文チェック無いんですか?
C#から手を広げてみたらIDEまで扱い辛い・・・
292デフォルトの名無しさん:2012/05/25(金) 20:43:10.20
c#は馬鹿でも使える、っていうか、馬鹿に使ってもらおうとしてるものだから仕方ないよ
ネイティブが生成できないから、c#で作ってもなんの役にも立たんがw
293デフォルトの名無しさん:2012/05/26(土) 00:11:38.84
C#アプリの起動があまりにも遅いんで、VC+++MFCに乗り換えようと思ってるのですが
ものすごく壁が高い・・・

まったくGUIが作成できないんですが、VC+++MFCってGUIを作成するものじゃなくて、
ビジネスロジックだけを記述するものとしての扱いなのでしょうか?
294デフォルトの名無しさん:2012/05/26(土) 00:17:38.37
リソースエディタ使えよ
295デフォルトの名無しさん:2012/05/26(土) 00:52:08.27
VC++はぜんぜんVisualじゃないからなー。
っていうかリソースエディタなんてまどろ☆コシイもの使わないで
自前でCreateWindowしようず
296デフォルトの名無しさん:2012/05/26(土) 01:36:54.13
馬鹿には無理
297デフォルトの名無しさん:2012/05/26(土) 05:12:39.12
>>293
.NETFrameworkの中にFormアプリのパーツが入ってんでしょ
298デフォルトの名無しさん:2012/05/26(土) 10:37:46.68
VC が Visual じゃないとか、幸せな世代だよな。。。
おっさん言われることを承知で書いてみる。

自分の場合は、敢えてテキストエディタで GUI 部分書いたり、Windows API だけで書いたりして遊んでたんだがな。
299デフォルトの名無しさん:2012/05/26(土) 10:58:27.25
簡単なものなら、そうだろうな
3DSMAXのようなGUIを作ろうとすると、かなり苦労するよ
300デフォルトの名無しさん:2012/05/26(土) 12:27:52.15
むしろおっさんこそ、VCは全然Visualじゃなかったって想い出すねぇ。
単にリソースを手書きしないですむだけだったVC++4に対して、
ポトペタのDelphiやVisual Cafe(ただし不安定w)やVB4が全盛だったから。
なつかしす。
301デフォルトの名無しさん:2012/05/28(月) 18:39:48.24
2.0までは全然Visualじゃなかったなw
302片山博文MZボット ◆0lBZNi.Q7evd :2012/05/30(水) 11:17:09.67
>>293
アプリを常時起動しておいて、PCを使わないときはアプリを起動したまま、
休止状態にする。休止状態にするには、終了オプションでHを押す。
303デフォルトの名無しさん:2012/05/30(水) 13:38:57.35
GUIの話題が出てたので一言

「男は黙ってリソーススクリプト」
304デフォルトの名無しさん:2012/05/30(水) 16:46:27.92
アニメといえば米国製が主流だったインドで、日本アニメのファンが急増している。さまざまな作品が衛星テレビで放送され、
日本政府による積極的なPRも奏功。若者の心をとらえ、西部ムンバイでは愛好会の活動も本格化している。

「ストーリーが奥深く、登場人物に感情移入しやすい。シリアスな展開の中に笑いがあるなど、飽きが来ない構成も魅力」
アニメファンが集う「ムンバイ・アニメ・クラブ」会長のラチタ・サハさん(23)が日本アニメの魅力を説く。

同クラブは2010年に約10人で発足し、今では会員数が1000人を超える。月1回の会合では、
アニメソングのカラオケや、アニメの登場人物に似せた衣装を着用する「コスプレ」も楽しむ。

インドでは今秋から、国民的球技クリケット版「巨人の星」の放送が決まっているが、関心はまだ低く、
視聴可能な「クレヨンしんちゃん」などのほか、日本でも話題の「ONE PIECE(ワンピース)」が人気だ。

「作品からあふれ出る日本文化に興味がある」(サハさん)。他国のアニメに比べて緻密に表現された日本の街並みなどの描写や、高度な映像技法などへの評価も高い。

日本の経済産業省が3月にムンバイで開いた日本アニメなどを紹介する見本市は好評だった。
アニメソングを熱唱したメンバーのミニスカートのコスプレ姿は、全身を包む女性の伝統衣装サリーが一般的な同国の観衆の目をくぎ付けにした。

ファン層は確実に広がりつつあるが、インドでは新作DVDなどの入手が難しいのも現実だ。
「もっと手軽にアニメ関連商品が手に入るようになれば」とサハさんは期待している。

http://www.sankeibiz.jp/macro/news/120530/mcb1205300502005-n1.htm
305デフォルトの名無しさん:2012/05/31(木) 15:24:53.13
なんでこのレベルの奴がこの板にいんだよ年々レベル下がってるじゃねーか死ね
306デフォルトの名無しさん:2012/06/01(金) 21:17:53.03
305 :デフォルトの名無しさん:2012/05/31(木) 15:24:53.13
305 :デフォルトの名無しさん:2012/05/31(木) 15:24:53.13
305 :デフォルトの名無しさん:2012/05/31(木) 15:24:53.13
305 :デフォルトの名無しさん:2012/05/31(木) 15:24:53.13
305 :デフォルトの名無しさん:2012/05/31(木) 15:24:53.13
307デフォルトの名無しさん:2012/06/01(金) 21:36:04.50
どいつもこいつも遠い目をしやがって。

お前たちの時代は終わった
308デフォルトの名無しさん:2012/06/02(土) 17:49:00.64
>>303
真の男は黙ってCreateWindow
309デフォルトの名無しさん:2012/06/03(日) 00:21:45.14
VC++ってダイアログじゃなきゃ、コントロールを貼り付けたりできないの?

310デフォルトの名無しさん:2012/06/03(日) 00:22:40.05
はい
311デフォルトの名無しさん:2012/06/03(日) 00:56:01.71
どんなコントロールを貼り付けるつもりなんだ。
ウィンドウの一種としてのコントロールなら、やりようはあったんじゃなかったっけ。
312デフォルトの名無しさん:2012/06/03(日) 01:27:10.29
貼るだけなら出きる
イベントとかデータ受け渡しとか面倒なだけ
313デフォルトの名無しさん:2012/06/03(日) 03:53:22.77
プログラミングWindowsを読むんだ。
コントロールもWindowであり
もちろんダイアログもWindowsなので
結果として、コントロールはありとあらゆる場所に描画できる。
314デフォルトの名無しさん:2012/06/03(日) 03:53:58.09
誤:もちろんダイアログもWindowsなので
正:もちろんダイアログもWindowなので
315デフォルトの名無しさん:2012/06/03(日) 04:22:08.43
>>313
しょぼいコントロールしかCreateWindowできないようですが?
C#にあるような、グリッドコントール(チェック、コンボ等あるやつ)を貼り付けたいです。
316デフォルトの名無しさん:2012/06/03(日) 04:25:57.82
コモンコントロールにそんな高度な機能を期待するもんじゃない
codepadあたりから探してくるか自分で作るしかない
317デフォルトの名無しさん:2012/06/03(日) 11:17:03.25
リッチなコントロールをポトペタしたいなら、VC++という選択肢自体がありえんよ…
C#にあるようなリッチなコントロールの一部はMFCにもないからな。
318デフォルトの名無しさん:2012/06/03(日) 12:30:41.38
VC++MFCは、本格的なアプリの作成には向かないのでしょうか?
319デフォルトの名無しさん:2012/06/03(日) 12:31:58.54
「本格的」がせいぜいパンツレスリング程度のいみならMFCは向いているよ。
320デフォルトの名無しさん:2012/06/03(日) 14:09:59.74
なんでも出来るよ。ある意味最強。
ただし作る人の腕による。
321デフォルトの名無しさん:2012/06/03(日) 19:11:51.31
日本のサイトは大抵おんなじことばっかですよね
listctrlやtreectrlの使い方とかばっか、そんなのMSDN見れば誰でもわかるっての

listctrlを改造して、セルにコンボボックスやプログレスバーやスライダやツリーを合体させた
コントロールの作り方なんて全くない・・・

英語が苦手じゃなかったらな〜
322デフォルトの名無しさん:2012/06/03(日) 20:15:46.06
リストコントロールのセルにプログレスバーとかスライダとかツリーとか合体させんの?
イメージ出来んが。w

真面目に。
リストコントロールや Microsoft FlexGrid Control とかにコンボボックス貼り付けて入力可能にしたり、の
複数コントロールをまとめてひとつのコントロールに見せるな程度のことなら昔作ってたぜ。
その「大抵おんなじことばっか」の日本語サイトを参考にしつつ。
おまえって 309 ? だったら足りないのはサイトじゃなくておまえの情報収集能力だよ。
つまんない言い訳してないでとっととやれよ。
323デフォルトの名無しさん:2012/06/03(日) 20:29:02.74
>>321
そんなコントロールの使い道があるのか?w
324デフォルトの名無しさん:2012/06/03(日) 20:38:56.28
まぁ、大抵おんなじことばっかですよね
ってのは当たらずとも遠からず

どのHPも、本にのってるサンプルプログラムを書いているだけのが多い

VC++で最初に躓くところだろうな。
通り一辺倒のアプリはすぐ作れるようになるけど、ちょっと変わった要求がきたら
とたんに、どこをどういじればいいかわからなくなる。

325デフォルトの名無しさん:2012/06/04(月) 21:21:06.07
それは素振りもせずにいきなり試合をするような入門書ばっかり読んでるからじゃないか?
プログラミングWindowsみたいに、基礎からしっかり教えてくれる本なら、
どんな要求にも答えられる実力がつく。
326デフォルトの名無しさん:2012/06/04(月) 21:25:51.54
プログラミングWindows
を読んだことがあるのか?

当たり前のことしか書いてないぞ
何が名著なのかさっぱり???
327デフォルトの名無しさん:2012/06/04(月) 21:26:14.97
WindowsnのしくみとC++の仕様とVCの環境の知識は別だからなー

最近だと.NET FrameworkとC#とかもごっちゃになってるね
328デフォルトの名無しさん:2012/06/04(月) 21:58:33.68
VC プログラミングでもっとも参考になったのは MFC の中身だったな。結局。
初心者には敷居が高すぎる気もするが。
329デフォルトの名無しさん:2012/06/04(月) 22:29:52.05
当たり前のことすら理解しないで、いきなりポトペタやろうとするから躓くんだよ。
プログラミンWindowsはその当たり前を懇切丁寧に教えてくれる。

世界が認める名著なんだから、それが名著でないと思えるなら、
おまえはよっぽどの天才か、よっぽどのアホか、どっちかだw
330デフォルトの名無しさん:2012/06/04(月) 22:37:35.80
>>329
Windowsでプログラムを作ってる人なら誰でも知ってることばっかだぞ
まぁ、VBやC#みたいな似非なら目からうろこだろうな
331デフォルトの名無しさん:2012/06/04(月) 22:43:37.89
だから俺は最初から「プログラミングWindowsみたいに、基礎からしっかり教えてくれる本」と書いてるじゃないか。
基礎なんだから、「Windowsでプログラムを作ってる人なら誰でも知ってることばっか」
に決まってるだろ。何をいいたいんだ、おまえはw
332デフォルトの名無しさん:2012/06/04(月) 22:45:24.69
だったら、「Windowsでプログラムを作ってる人なら誰でも知ってることばっか」 と指摘されて
なにを、顔真っ赤にしてんの?

何をいいたいんだ、おまえはw

333デフォルトの名無しさん:2012/06/04(月) 22:51:31.23
>プログラミングWindows
>を読んだことがあるのか?

>当たり前のことしか書いてないぞ
>何が名著なのかさっぱり???

だめだ、こいつはw
アホだったよ。
334デフォルトの名無しさん:2012/06/04(月) 23:14:17.08

キチガイ?
335デフォルトの名無しさん:2012/06/05(火) 00:57:06.78
なんでオマエらって質問そっちのけでケンカ始めるんだよ。
コミュ障を自慢して嬉しいのか。
336デフォルトの名無しさん:2012/06/05(火) 07:11:55.84
PGスレは他に取り得の無いニートが多いからね
337デフォルトの名無しさん:2012/06/05(火) 12:42:16.25
http://news.searchina.ne.jp/disp.cgi?y=2012&d=0605&f=national_0605_024.shtml
韓国テレビの番組で日本海表記の地図を使用し、非難殺到=韓国
 韓国MBC放送の日曜番組『出発! ビデオ旅行』の3日の放送で、「日本海」と表記
した地図を使用していたとして、韓国世論から非難が巻き起こった。多数の韓国メディアが4日、大きく取り上げた。
 『出発! ビデオ旅行』は新作映画の紹介から名作など、さまざまなジャンルの映画を
紹介する番組。3日の放送で日本海が「SEA OF JAPAN」と表記された世界地図を
使用したという。
 番組放送後に視聴者掲示板には、抗議や非難の書き込みが殺到した。番組の制作陣は
世論の非難を受けた当日、公式サイトに謝罪文を掲載し「今後はこのようなミスを絶対に
しないように最善を尽くす」との立場を表明した。しかし、同番組の5月6日の放送分で
も日本海と表記された地図を使用したことが発覚し、番組やテレビ局への非難はしばらく続く見通しだ。
 韓国メディアは「目を疑う場面が電波に乗った」「東海ではなく日本海と表記した地図
を使用して視聴者の怒りを買った」などと伝えた。現在MBC放送は2月から突入した
ストライキがまた続いており番組に支障をもたらしていることも「ミス」の原因とみるメディアもある。
338デフォルトの名無しさん:2012/06/05(火) 18:35:00.57
他人をキチガイ認定する奴もキチガイ
339デフォルトの名無しさん:2012/06/05(火) 23:41:35.49
矛盾
340デフォルトの名無しさん:2012/06/06(水) 11:14:21.18
自己表現ではあるが矛盾ではないだろう
341デフォルトの名無しさん:2012/06/06(水) 19:12:58.27
char* word[]



char *word[] でポインタの位置が違うのですが、これには違いがあるんですか?
342デフォルトの名無しさん:2012/06/06(水) 19:23:00.05
馬鹿には無理
343デフォルトの名無しさん:2012/06/06(水) 20:17:59.16
74 :可愛い奥様:2012/06/06(水) 17:05:45.85 ID:vRJcvd5t0
フジテレビ電話したら今日の番組の変更は無いと言われた
「皇族の方が亡くなられたのに変更はしないんですか?」
と聞いたら
「今のところありません。よろしくお願いします」だと


国の一大事に捏造人気アイドルの茶番をやるつもりらしい




津田大介 @tsuda
別にAKBに恨みはないし、がんばっていただきたいなと思うけど、国民的に大きく報じる話題は
ほかにもっともっとたくさんありますよねじっさい……。テレビは特に貴重な電波資源使ってるんだし。
http://twitter.com/tsuda/status/210265622502842368

東浩紀 @hazuma
同意。
http://twitter.com/hazuma/status/210266350730481664
344デフォルトの名無しさん:2012/06/06(水) 22:35:02.26
>>341
とりあえず他人様に理解していただけるように書き直せ。
345デフォルトの名無しさん:2012/06/07(木) 09:14:27.26
>>341
*の前後のスペースはあってもなくても良い
つまりどっちも一緒

>>344
理解してやれよ
346デフォルトの名無しさん:2012/06/07(木) 11:54:09.83
char * word[]
でもいいし
347341です:2012/06/07(木) 15:23:59.99
ありがとうございましたm()m
348デフォルトの名無しさん:2012/06/07(木) 15:32:54.98
社民党 

三笠宮寛仁さまの逝去に当たって(談話)

社会民主党党首 福島みずほ

本日、 三笠宮寛仁さまが入院先の病院で逝去されました。
「ヒゲの殿下」の愛称で親しまれ、障害者問題をはじめスポーツ、青少年育成などの諸活動に熱心に取り組まれた
三笠宮寛仁さまのご訃報に接し、悲しみの念を禁じ得ません。つつしんでご冥福をお祈り申し上げます。

http://www5.sdp.or.jp/comment/2012/dannwa120606.htm


民主党 http://www.dpj.or.jp/
なし

自民党 http://www.jimin.jp/
なし

公明党 http://www.komei.or.jp/
なし

共産党 http://www.jcp.or.jp/
なし
349デフォルトの名無しさん:2012/06/23(土) 23:20:53.46

1000 :uy ◆xVOGOO9ev6 :2012/06/23(土) 12:35:29.68
俺は動的言語の問題点をいくつあげてもwwwww
静的言語よりはマシだと確信してるわwwwwwwwwwwwwwwwww


静的言語の問題点をなぜ挙げないかって??

見放してるから、問題点を指摘さえしないってことだよwwwwwwwwwww
気づけバカwwwwwwwwwwwwwww
350デフォルトの名無しさん:2012/06/23(土) 23:54:03.54
余計なモンを引き込むなよ。
351デフォルトの名無しさん:2012/06/27(水) 23:35:49.89
Visual C++ 2010ExpressとResEditでプログラムを作成しています。
OSはWindows7 homeです。
ResEditでのボタンのグラフィックは
グラデーションのかかったVB2010で作った時と同じ形のボタンなのですが
Visual C++からCreateDialogParamでこのリソースを呼び出すと
四角いXPのときのようなグラフィックのボタンになってしまいます。
他のコントローラもXPのようなかくばった感じのグラフィックになってしまいます。
機能は問題ないのですが、VB2010でつくったボタンのようにみせたいのですが
原因わかりましたら教えてください。
352デフォルトの名無しさん:2012/06/27(水) 23:43:41.69
.manifest作れ
353デフォルトの名無しさん:2012/06/28(木) 10:06:10.88
x XPのような
o 2000のような
でした
すみません
354デフォルトの名無しさん:2012/06/28(木) 13:59:11.16
>>352
ありがとう なおりました
355デフォルトの名無しさん:2012/06/30(土) 08:45:45.74
プラプラ
356デフォルトの名無しさん:2012/07/05(木) 21:30:07.35
Expressを2008と2010の両方入れて見たんだけど
メンバに対してじゃなく、1文字目から自動的にインテリセンスがポップする"IntelliSense Everywhere"
って機能は体験版には付いていないでしょうか?

一応ctrl+スペースで強制的に起動はできるけど、オプションに自動で起動しそうな項目はなかったし
ヤフーでしらべると怪しげなパッチばかりヒットする・・・
357デフォルトの名無しさん:2012/07/06(金) 00:54:44.18
VC初心者です(MFCダイアログでちょこっと遊んだ程度)

既存のC言語で書かれているプログラムを、Windows上で実行しようとしています。
C言語で書かれているプログラムはGUIで、大きく分けて、実際に処理が書かれているファイル(ソース)と、
線や枠などの図形の(視覚的な)情報が書かれているファイルの2種類です。

質問:既存のファイルを使って作成したいのですが、新規プロジェクト作成で、プロジェクトの種類は何で作り始めれば良いでしょうか?

いろいろネットで調べてみたところ、最終的に作りたい形はSDIで複数ビューがある感じが一番近いと思いました。

環境
Visual C++ 6.0
Windows XP(そのうちWindows7予定)

358デフォルトの名無しさん:2012/07/06(金) 01:00:49.03
つ CreateViewsByUsingOldFileOnNewProject
359デフォルトの名無しさん:2012/07/07(土) 21:05:50.46
CString c(_T("あ"));
TRACE(_T("%s\n"), c);

_CrtDbgReport: String too long or IO Error_CrtDbgReport

とエラーが出力されます
「あ」と表示をを期待しているのですが、どうすればいいの?

360デフォルトの名無しさん:2012/07/07(土) 21:13:26.15
OutputDebugString(c);

じゃダメかしらん?
361デフォルトの名無しさん:2012/07/07(土) 22:19:42.95
ロケール設定しろ
362デフォルトの名無しさん:2012/07/08(日) 11:17:11.18
ロケール設定のやり方がわかりません
363デフォルトの名無しさん:2012/07/08(日) 11:29:42.65
::setlocale(LC_ALL, "");

じゃダメかしらん?
あるいは Japanese_Japan.932
364デフォルトの名無しさん:2012/07/08(日) 11:36:15.99
OKでした、ありがとうございます。

>>360さんのやりかたでもOKでした。
365デフォルトの名無しさん:2012/07/08(日) 13:30:42.30
ここで質問するのが適切なのか分かりませんが、質問させて貰います。

昔のプログラムなんですけど、

int86(0x5,&inregs,&outregs); //←(0x5の他にも「0x11」「0x14」「0x17」「0x21」「0x5f」もありました。)

このような関数が出てきました。
調べたところによると、<dos.h>で宣言されているようで、DOSファンクションコールみたいです(?)。
上記0x5(また、他5つ)の処理は具体的にどのような処理を行っていて、それをVisual C++内で記述(C言語化orC++言語化)するには
どうすれば良いでしょうか?

環境は
windows 7
VC6
366デフォルトの名無しさん:2012/07/08(日) 13:46:18.88
基本今のOSでは使わないほうがいい。
アセンブラの知識無いと理解困難。
ほとんどの機能は標準関数で使える。

それでも興味あるならDOS ファンクションコールで検索してみて。
367デフォルトの名無しさん:2012/07/08(日) 13:55:03.60
まあ同じことやるAPIや関数に置き換えることだな
368デフォルトの名無しさん:2012/07/08(日) 14:05:51.12
cmd.exe では int 21h とか使えないんだろうか
369デフォルトの名無しさん:2012/07/08(日) 16:52:44.71
370デフォルトの名無しさん:2012/07/08(日) 18:27:46.92
先日、C言語の学習のためにMicrosoft Visual C++ 2010 Expressをインストールしました
参考書に載ってるサンプルプログラムをどんどん手打ちして実行したいのですが、
同じプロジェクトの中にプログラムを複数置いてビルドすると、
「main()関数が複数定義されてます!」というような内容のメッセージが出て怒られてしまいます
これを回避するには、サンプルプログラムごとに新しいプロジェクトを作成するしかないのでしょうか?
371デフォルトの名無しさん:2012/07/08(日) 18:30:20.09
適当に以前のmainをmain1とかにしちゃえよ
372デフォルトの名無しさん:2012/07/08(日) 19:05:12.45
いまさらC言語なんて学習してなにになるの?
osでも書くつもりか?
373デフォルトの名無しさん:2012/07/08(日) 19:11:49.22
空のプロジェクトの
ソースファイルのフォルダに →main.cpp , sub.cpp
ヘッダファイルのフォルダに →main.h , sub.h
を作り

main.cpp内で、"main.h"をインクルード
main.h内で、<iostream> と "sub.h"をインクルード
sub.cpp内で、"sub.h"をインクルード
sub.hでは何もインクルードしない
(sub.hでサンプルクラスなどを宣言をして、sub.cppでそのメンバ関数などの処理を記述しています)

という風にしているのですが
main.cpp内でsubで定義したクラスを使おうとすると、コンパイラに「そんなものないよ」って言われてしまいます。
(VCは同プロジェクト内に突っ込んでいれば勝手に分割コンパイルしてくれるんですよね?)

試しにmain.h内のインクルードを"sub.h"から"sub.cpp"にしたらコンパイル通って希望通りに動くのですが
cppファイルをインクルードすると分割してる意味がないんですよね?(コンパイルの速度など
374デフォルトの名無しさん:2012/07/08(日) 20:10:10.56
>372
お前が生きててなんになるの?
人体実験サンプル?
375デフォルトの名無しさん:2012/07/08(日) 21:40:36.33
>>373
main で参照してる sub のメンバ関数や変数なりの宣言を本当にすべて sub.h でやってる?
もしやってるならよくわかんないな。ソースをどっかにあげてくれたらみれるかも。

ちなみに自分なら、sub.h のインクルードは main.cpp でやる。
ヘッダファイルにインクルードがあると後で面倒なことになることもあるから。
376デフォルトの名無しさん:2012/07/08(日) 22:12:47.24
VC++でのWinodwsフォームアプリーションを選択してプロジェクトを作成すると
.net のアプリになるんですか?

vc++でのネイティブアプリは作成できなくなったんですか?
377デフォルトの名無しさん:2012/07/08(日) 22:17:42.30
フォームじゃなければネイティブで作れる
378デフォルトの名無しさん:2012/07/08(日) 22:54:21.95
プロジェクトを新規作成すると、
VC++
 + CLR
 + Win32
みたいなツリーが出てこない? これの Win32 以下のを選ぶとネイティブなのになるよ。
※ Express の場合
379デフォルトの名無しさん:2012/07/09(月) 03:54:06.94
IDがありません
とエラーがでます。

解決方法を教えてください!
380デフォルトの名無しさん:2012/07/09(月) 08:27:14.13
馬鹿には無理
381デフォルトの名無しさん:2012/07/09(月) 09:58:16.32
>>376
フォームアプリ==.NETだから
これは昔からそうだろ
382デフォルトの名無しさん:2012/07/09(月) 21:30:33.62
>>375
コード晒してなくてすみません、色々試したり調べたりした結果、
どうもテンプレートを使っていたのが問題だったみたいです。

質問する上で重要なことじゃないと思ったのに犯人だったとは・・・。初心者で申し訳ないです
383デフォルトの名無しさん:2012/07/09(月) 21:52:09.11
>>382
まあ頑張れ。w
384デフォルトの名無しさん:2012/07/11(水) 20:55:25.47
BUTTONにグラデーションをかけたいのですが、できますか?
385デフォルトの名無しさん:2012/07/11(水) 22:28:47.17
オーナードロー
386デフォルトの名無しさん:2012/07/11(水) 22:32:46.29
そのBUTTONのオーナーはステータスバーなのでオーナードローできなくて困っています。
387デフォルトの名無しさん:2012/07/11(水) 22:57:43.24
BUTTONのオーナーはステータスバー???

イミフ
388片山博文MZボット ◆0lBZNi.Q7evd :2012/07/12(木) 00:26:28.17
>>384
ステータスバーをサブクラス化
389デフォルトの名無しさん:2012/07/14(土) 17:00:30.95
Visual C++ 6.0 のWin32API でプログラム(C言語)を作成しています。
Win32APIでのプログラムは始めてで、いろいろと調べながら少しずつやっています。

描画について分からないことがあるので教えてください。
ttp://www.geocities.jp/ky_webid/win32c/009.html
などを参考に描画を学んでいますが、描画の記述は全てウィンドウプロシージャ内のWM_PAINTに書かないといけないのでしょうか?
自分が今作ろうとしているのは、
1.複数のページ(?)からなる。
2.各ページのウィンドウのクライアント領域内に、多くの線や図形、文字を描画する。
3.図形の領域内を左クリックするとページ移動
このような作品を構想中です。

イメージとしては、まずメインとなる目次のページ(親ページ)を描画(線、図形、文字)。
親ページには、各章(子ページ)に飛ぶための図形が複数用意されている。
図形の領域内で左クリックが起こったら、目次のページの描画を消して、子ページの描画を行う(子ページへ飛ぶ)
子ページには、親ページに戻る図形や、孫ページに進む図形が用意されている。
孫ページには、親ページにまで戻る図形や、子ページに戻る図形(場合によってはひ孫に進む図形)がある。

まとめますと、ウィンドウのクライアント領域のある範囲(図形内)をクリックすると、元の描画とは違った新しい描画を行いたいのです。

サンプルプログラムみたいに、WM_PAINT内に描画処理を全て書くとなると、すごく長くなってしまう気がします。
1ページに少なくても20個の描画処理は作るつもりです。(それが複数ページ)
何か良い方法はないでしょうか?
390デフォルトの名無しさん:2012/07/14(土) 17:45:25.94
関数に分けろよ
391デフォルトの名無しさん:2012/07/14(土) 20:55:51.47
ダブルバッファリング(だっけ?)をググると良いかも。

一般的(だと思ってる)な考え方として、Windows のイベントを処理する関数には 0.1 秒ルールってのがあったと思う。
時間(手間)の掛かる処理は別のところでやっておいて、それ系の関数はすぐに処理を終える(呼び出し元に返す)っての。
この場合は、描画は別のところでやっておいて OnPaint(仮) ではあらかじめ描いておいた絵をコピーして終わりにする。
392デフォルトの名無しさん:2012/07/15(日) 15:24:31.74
MemoryDCに描画する
HDC dc=GetDC(hwnd);
HDC memdc=CreateCompatibleDC(dc);
あとは >>391 さんの言う通り
393デフォルトの名無しさん:2012/07/15(日) 15:53:22.30
.net全盛のこのご時世にc+win32

ごくろうなこってw
394デフォルトの名無しさん:2012/07/15(日) 16:00:13.02
そりゃvcなんだからwin32使うだろ
395デフォルトの名無しさん:2012/07/15(日) 16:59:53.35
Win32APIスレのひとよりまし
396デフォルトの名無しさん:2012/07/15(日) 19:26:31.82
オフスクリーン用のDDBを作成する際のサイズってどうやって決めるんですか?

CADみたいなアプリを作成していまして

ユーザからの入力は1234.567mmのオーダーでテキストボックスより入力されてきます。
397デフォルトの名無しさん:2012/07/15(日) 20:17:01.77
1234567×1234567のサイズで作成すればいいだけじゃん
アフォですか?
398デフォルトの名無しさん:2012/07/15(日) 23:40:07.88
pixel <-> 人間が認識する長さの単位 の変換ってのはググればいくらでも出てきそうなんだけれど。

質問をするならなにが分からないのか具体的に聞くようにしようよ。
CAD みたいなアプリを作ってるってことは素人さんじゃないんだよね?
399デフォルトの名無しさん:2012/07/16(月) 00:58:28.63
検索しましたが、どこも同じことばっかりしか書いてなくて・・・
やりたいことは、
1234.567mmのオーダーでユーザが入力する
その際のオフスクリーン用のDDBを作成する際のサイズの決定の仕方がわからない

400デフォルトの名無しさん:2012/07/16(月) 07:22:24.50
1234567×1234567のサイズで作成すればいいだけじゃん
アフォですか?
401デフォルトの名無しさん:2012/07/16(月) 09:04:25.96
フジ「助けて!韓流とK-POP流しまくったら視聴率が下がったの(´;ω;`)」
http://engawa.2ch.net/test/read.cgi/poverty/1342345292/


K-POP起用で露骨に視聴率が下がる!?フジテレビは「韓流偏向」を方向転換か?

韓流、K-POPでは視聴率が取れない
2012年7月10日、日刊サイゾーが、韓流やK-POPでは視聴率が取れないという声がフジテレビ内部から
上がっていると報じた。昨年、高岡蒼佑のツイッターの発言に端を発した「韓流偏重」のフジテレビに
対する反発が予想以上に大きなダメージを与えているとのことである。

日刊サイゾーではフジテレビ関係者に取材したコメントとして、K-POPアイドルを出演させると番組の
視聴率が露骨に落ちるという話を紹介している。このことにスタッフは悩んでいるという。
このため、フジテレビが韓流ブームを演出し続けることは近く困難になってくるだろうとしている。

フジテレビ番組の異変
確かにこの報道を裏付けるような現象が出ている。当サイトでもすでに報じているが、8月8日の
「FNSうたの夏まつり」にK-POPアーティストの名前がない。
また、7月9日放送の2時間特番「夏がた!!HEY!HEY!HEY!お台場“生”の歌祭り」でも
K-POPアーティストで出演するのは東方神起だけであった。以前であればもっと多くのK-POP、
韓流アイドルが出演していたのである。

果たして、フジテレビは視聴率の低下により「韓流偏向路線」の方向転換を余儀なく
されるのであろうか?
今後の動きをよく観察していきたい。

http://www.otonano-kaisha.com/news_SOeAukIik.html
http://www.otonano-kaisha.com/files/655/b22d79919f3b18b0d3ac4c59d9d14056.jpg
402デフォルトの名無しさん:2012/07/16(月) 09:15:04.14
ほんと、レベル低いな
403デフォルトの名無しさん:2012/07/16(月) 10:37:34.57


           ゙'.    '.;`i  i、 ノ  .、″
             ゙'.     ,ト `i、  `i、    .、″
                |    .,.:/""  ゙‐,. `    /
             `  .,-''ヽ"`    ヽ,,,、   !
                、,、‐'゙l‐、      .丿 : ':、
               、/ヽヽ‐ヽ、;,,,,,,,,,-.ッ:''`  .,"-、
              ,r"ツぃ丶  ``````   ../  `i、
          ,.イ:、ヽ/ー`-、-ヽヽヽ、−´    .l゙`-、
         _,,l゙-:ヽ,;、、             、、丶  ゙i、,,、
        ,<_ l_ヽ冫`'`-、;,,,、、、、.............,,,,、.-`":    │ `i、
      、、::|、、、ヽ,、、.    ```: : : ```      、.、'`  .|丶、
     .l","ヽ、,"、,"'、ぃ、、,、、、、.、、、.、、、_、.,,.ヽ´    l゙  ゙).._
    ,、':゙l:、、`:ヽ、`:、  : `"```¬――'''"`゙^`     : ..、丶  .l゙ `ヽ
   ,i´.、ヽ".、".、"'ヽヽ;,:、........、           、、...,,,、−‘`   、‐   |゙゙:‐,
  ,.-l,i´.、".`ヽ,,,.".`   `゙゙'"`'-ー"``"``r-ー`'":      _.‐′  丿  ,!
 j".、'ヽ,".、".、"`''`ー、._、、、           、._,、..-‐:'''′   .、,:"  丿
 ゙l,"`"`''ヽヽ"`"`  ```゙'''"ヽ∠、、、、ぃ-`''''": `      、._./`  ._/`
  `'i`ヽヽヽ`''ーi、、、: :                   、.,-‐'`   、/`
   ``ヽン'`"`  : `~``―ヽ::,,,,,,,,,,.....................,,,,.ー'``^    ,、‐'"`
      `"'゙―-、,,,,..、、               : ..,、ー'"'`
           : `‘"`―---------‐ヽ``"''''''""
404デフォルトの名無しさん:2012/07/16(月) 11:35:46.31
>>399
いや、だから。
「同じようなことしか書いてない」記事のどこが分からないのか具体的に書いてみそ。
この質問はさ、おまえがなにをどの程度理解してるかを判断する物差しにもなるんだよ。
こんなのを一から書いてやれるほど人が良くないモン。自分は。

で、その上で。

「画面に描画する」だけなら、実際の長さなんてどうでもいい。
ユーザが見た目で「自分が入力した値が反映されている」と思えばいいわけでさ。
要するに(たとえば)画面に表示してる「白紙の大きさが」ユーザが入力した縦横比になってればそう感じるだろ?
これはたとえば拡大縮小表示をするときのことを考えてみれば理解しやすいと思う。

ほんとうに pixel <-> ユーザの指定したサイズ の変換を考えなければならないのは印刷のときくらいじゃねぇかな。
と、起き抜けの寝ぼけた頭で書いてみた。

あと、同じような分野の質問だと思うから書くけど、違ってたらごめんな。
おまえさんが 389 なら、前の質問への対応をちゃんとしてから次のことを書くようにした方がいいよ。
405デフォルトの名無しさん:2012/07/16(月) 11:50:57.77
>>404
389ではありません。

CClientDC cdc(this);
bitmap.CreateCompatibleBitmap(&cdc,::GetSystemMetrics(SM_CXSCREEN),::GetSystemMetrics(SM_CYSCREEN));
memDC.CreateCompatibleDC(&cdc)
memDC.SelectObject(&bitmap);

memDC.SetMapMode(MM_ANISOTROPIC);
memDC.SetWindowExt(1,-1);
memDC.SetViewportExt(1,1);

このメモリデバイスコンテキストに
(0,0)から(1234567,1234567)までLineTo して
デバイスコンテキストにBitBltしたいです。 (ディスプレイ上に実際の長さではなくていいです)

ようするに、AutoCadみたいに、大きな構造物でもディスプレイ上に表示できるようにしたい
406デフォルトの名無しさん:2012/07/16(月) 14:12:06.73
>>405
経緯見てないけど
データは独自に持っていて
必要に応じて描画時にスケールすればいいだろ
407デフォルトの名無しさん:2012/07/16(月) 18:50:27.57
で、「(0,0)から(1234567,1234567)までLineTo して」の部分の調査結果は?
上のを見るとデバイスコンテキストを作成してるだけだよね。
それぞれの行の処理の意味は分かってるのかな。
あと、前の自分のレスの真ん中辺りを読んでる?

たとえば WindowsAPI かなにかで pixel <-> ユーザの指定したサイズ の変換をするようなのはないと思う。
プログラムを作る上で、「1mm を * ドットで表現するね」って規則を自分で作っちゃっていいんだよ。
おまえさんの例なら、「スクリーン1画面分を A4 横の大きさとして表示する」とか。(※あくまで例)
そこまで決めちゃえば簡単だろ。
A4 の長い辺の長さがスクリーンの横方向の解像度ってことになるんだから、変換式は自動的に出る。
自分ならその辺りの変換を勝手にやってくれる中間クラスを間にはさむ。

で、その上で、なんだが。
印刷するときにはプリンタの性能を考えてあげなくちゃならない。
印刷 vc dpi とかでググればヒントは沢山あると思うが。( dpi = dot per inch )
408デフォルトの名無しさん:2012/07/16(月) 19:22:24.33
>で、「(0,0)から(1234567,1234567)までLineTo して」の部分の調査結果は?
???

GetSystemMetrics(SM_CXSCREEN) ⇒1920
GetSystemMetrics(SM_CYSCREEN): ⇒1080

なので、1920×1080のビットマップを作成しているのに、(1234567,1234567)までLineToなんてできますか?

だから、サイズの決定の仕方がわからない
といっているのですが・・・みなまでいわないとわからないかな・・・
409デフォルトの名無しさん:2012/07/16(月) 19:39:18.73
1234567x1234567のビットマップ作成すればいいじゃん
410デフォルトの名無しさん:2012/07/16(月) 19:55:41.51
>>409
作ってみれば・・・
411デフォルトの名無しさん:2012/07/16(月) 19:56:29.59
もろちん韓国ネタもくそうざくて視聴率低下の要因ではあるんだろうけど
ソレ以外の番組も吉本芸人とかがクチャクチャくだらねえことやってるだけだし
そっちも問題視しろよwww
いやなら見るなとかホザいてたのも吉本芸人だっけ?ざまあねえなwww
412デフォルトの名無しさん:2012/07/16(月) 21:29:30.21
レスをちゃんと読んでる?
求める答えしか目に入れる気がないのかね。
413デフォルトの名無しさん:2012/07/16(月) 21:45:56.11
ロッテ製品不買運動 韓国200万人の自営業者が

飲食店など韓国の自営業者が全国規模で、流通大手ロッテグループ製品の不買運動に乗り出した。

大型スーパーの進出で商圏を奪われ生き残りの危機に立たされているとし、コルモク(路地)商圏
生存消費者連盟と有権者市民運動が、酒類を扱う飲食店や宿泊業など小規模商工業者団体の
会員らとともに16日、不買運動を開始した。

これら団体は先月末、韓国チェーンストア協会に対し、大型スーパーの義務休業の順守やクレジット
カード手数料体系の改編受け入れなどを要求した。しかし成果が得られなかったことから、今月13日、
ロッテグループに闘争の意志を書面で伝えた。要求が受け入れられるまで無期限で不買運動を続ける。

ロッテグループのウイスキー「スコッチブルー」は国産ウイスキー市場で現在3位、焼酎「チョウムチョロム」
は「チャミスル」と激戦を繰り広げている。飲食店やカラオケ店でこれら酒類やミネラルウォーター、
清涼飲料が販売されなくなれば、ロッテは大きな打撃を受ける。

また、小規模商工業者側とその家族、市民団体を合わせた約600万人は、ロッテ百貨店やロッテマート、
ロッテスーパーなどの小売店を利用しないことにした。菓子類や氷菓、ハンバーガーなども不買運動の
対象とする。

さらに、外食分野などの小規模商工業者団体や市民団体にも、不買運動への協力を呼びかけている。
http://m.yna.co.kr/mob2/jp/contents_jp.jsp?cid=AJP20120716001400882&domain=6&ctype=A&site=0100000000&mobile

関連記事
韓国・ロッテ製菓など製造のアイスクリーム8種から基準値以上の細菌検出
http://news.livedoor.com/article/detail/6723748/

414389です:2012/07/17(火) 00:01:07.73
書き込める環境にいなかったので遅くなりましたが、>>390-392さんありがとうございます。

ダブルバッファリングを調べながら作ってみました。
ttp://blog.goo.ne.jp/masaki_goo_2006/e/d3c18365234ffb3383f5c30e32c83cf5
ここを参考に、
WM_CREATE→オフスクリーンのDC作成
WM_PAINT→オフスクリーンを表画面にコピー
動作確認の為に、WM_LBUTTONDOWN→描画する関数呼び出し
描画する関数→MoveToとLineToで線1本だけの処理

このように作ってみました。
しかし、初期は真っ白の表画面が、クリックすると真っ黒になってしまい、思ったような動作を確認することが出来ませんでした。
サンプルプログラムをほぼコピペしているのですが、どう言った原因なんでしょうか?
415デフォルトの名無しさん:2012/07/17(火) 00:09:24.37
コピペが原因では?
416デフォルトの名無しさん:2012/07/17(火) 00:36:25.00
どういった原因なんでしょうか、って言われても。w
コピペを理解しないままやってて必要な処理が抜けてるんだろ。でもそんなのこれだけの情報で分かるわけないだろが。

その練習用?のコードをどっかにあげてごらん。暇な人が教えてくれるから。
417デフォルトの名無しさん:2012/07/17(火) 01:49:40.52
418デフォルトの名無しさん:2012/07/17(火) 01:50:03.43
いまどきGDIのダブルバッファリングって・・・
12,13年前はよくやったがな
419デフォルトの名無しさん:2012/07/17(火) 06:01:47.25
最近はBufferedPaintとか使うんかな
420デフォルトの名無しさん:2012/07/17(火) 07:42:24.38
前原さん「南北朝鮮の統一費用は日本も援助しますから安心してください。私も募金します」
http://engawa.2ch.net/test/read.cgi/poverty/1342475312/


統一費用準備で募金 前原氏

 韓国統一省によると、ソウル訪問中の民主党の前原誠司政調会長は16日、柳佑益統一相との会談の席
で、李明博政権が将来の南北統一に備えて設けた「統一勘定」の積み立てに協力するとして、柳氏に募金
を託した。募金額は不明。

 柳氏は「これは前原氏だけでなく日本国民の思いがこもったもの」と述べ、前原氏に感謝した。

 韓国政府は、20年後に南北が統一すれば最低55兆ウォン(約3兆8千億円)のコストがかかるとの試算
を受け、統一を意識し備える風潮をつくろうと統一勘定を設け、国民に募金を呼び掛けている。(共同)


ソース:MSN産経ニュース 2012.7.16 23:13
http://sankei.jp.msn.com/world/news/120716/kor12071623150005-n1.htm
421デフォルトの名無しさん:2012/07/17(火) 22:57:22.28
えらそうなことぬかしてたけど、けっきょくこたえれねーのかよw
422デフォルトの名無しさん:2012/07/17(火) 23:12:35.11
なんのこと?
423デフォルトの名無しさん:2012/07/17(火) 23:35:55.44
おのれのむねにてをあててかんがえてみたら、よろし
424デフォルトの名無しさん:2012/07/18(水) 00:13:20.06
ああ。あとは心優しいエスパーさんが相手してくれるよ。
425389です:2012/07/18(水) 00:27:55.82
>>414のWM_CREATEでオフスクリーンのDCを作成する時に、白で塗りつぶす(背景を白にする)ことによって、
初期の真っ白画面→右クリック→描画された画面
となることが確認出来ました。いらないと思って一部省いていた処理を追加することで出来ました。

まだ、ダブルバッファリングの下準備の確認が出来た程度で、本来のプログラムは手付かずですが、調べながら頑張っていきます。
また分からなくて詰まった時に質問するかもしれないので、その時はよろしくお願いします。
426デフォルトの名無しさん:2012/07/18(水) 09:03:42.13
【大赤字】 韓国万博にK-POPスターを呼んでも客が来ないため、チケット69円で投売り開始
http://engawa.2ch.net/test/read.cgi/poverty/1342528699/


麗水エキスポ:1000ウォンの深夜入場券発行へ

麗水エキスポの入場者数が目標を大幅に下回っていることを受け、
韓国政府は1000ウォン(約69円)の深夜入場券を発行することを決めた。
http://www.chosunonline.com/site/data/html_dir/2012/07/17/2012071701101.html


427デフォルトの名無しさん:2012/07/22(日) 00:48:28.12
先ほど誤って、↓の過疎ってるスレに質問投げてしまいました。
http://kohada.2ch.net/test/read.cgi/prog/1201041826/66

「export」キーワードが実装されたVC++のバージョンを教えてください。
428デフォルトの名無しさん:2012/07/22(日) 00:51:15.23
ありません
ちゃんとそのスレにここに書いた趣旨書いとけよ
429デフォルトの名無しさん:2012/07/22(日) 00:58:10.22
>>428
ありがとうございます。趣旨の件、了解です。
ところでないんですか?未実装な処理系って結構多いんでしょうか?
430デフォルトの名無しさん:2012/07/22(日) 02:33:15.38
>>429
イエス、ほとんどの処理系で実装されていない。
だから、2011年のC++の標準規格改定でexportの機能は廃止された。
431デフォルトの名無しさん:2012/07/22(日) 11:37:50.16
Galaxy S3の画面の”焼付き”を韓国メディアが検証!→24時間連続点灯で焼き付き、しかも戻らない
http://engawa.2ch.net/test/read.cgi/poverty/1342832178/

画面に残像が残る、いわゆる”焼付き現象”は今に始まったことではありませんが、Galaxy S IIIのマニュアルに記載されている「画
面劣化によるムラが発生した場合、サムスンは責任を負いません。」という一文(韓国版のみ?)が原因で、議論がいつもより激し
くなっているようです。サムスンはこの記述に対し謝罪し、内容の修正を行うとコメントしたそうです。

そうした中、Galaxy S IIIの焼付き現象について、韓国メディアのetnewsが検証を行いました。

検証に用いたのは、韓国版Galaxy S III LTEと、IPS液晶を搭載する「Optimus LTE II」。それぞれに白と黒のチェック柄を24時間連
続で表示させ続け、表示を元に戻した時の残像の様子を確認しました。
http://www.youtube.com/watch?v=OIqqnnb1LBw

結果、Galaxy S IIIでは、ホーム画面に戻った後にも、テスト用のチェック柄が画面に残りました。背景を青色にすると顕著です。一
方、液晶を採用するOptimus LTE IIでは画面の異常は確認できませんでした。

そしてその後12時間電源をOFFにし、再度確認してみても、残像は表示され続けたままでした。

焼き付きの原因は、AMOLEDで使われる赤、緑、青の発行体のそれぞれで寿命が異なることにあります。寿命が異なることで、同
じ時間発光させ続けることで、一部分だけが暗くなり、画面にムラが生じるというわけです。特に青は寿命が極端に短いとされてい
ます。

AMOLEDは高いコントラスト、応答性、構造的に薄くできるなど、液晶と比べて多くの利点もあります。しかし”寿命が短い”という欠
点も抱えているようです。今のところ根本的な解決は不可能で、寿命を延ばすことが最善策であるとされています。

しかし24時間でこうも簡単に焼き付くものなのですね。ここまで顕著な結果を望まなければ、あるいは数時間で焼付きを体験できる
かもしれません。しかも一度焼き付くと、元に戻すことはできません。

http://www.datacider.com/28903.php
http://www.datacider.com/wp-content/uploads/2012/07/galaxys3_barn.jpg
432デフォルトの名無しさん:2012/07/22(日) 17:57:44.16
http://www-higashi.ist.osaka-u.ac.jp/~k-maeda/vcpp/

みたいなHPってどうよ
ほかのページにも書いてあることをそのまま書いて自己満足してるだけじゃね?
車輪の再発明

この程度で、winプログラマなんて思ってるじゃないだろうねw
433デフォルトの名無しさん:2012/07/22(日) 18:07:40.54
プロジェクト名の変更の仕方を教えてください。

プロジェクト名にAbcとすると、
CAbcApp,CAbcView,CAbcDocクラスが作成されますが、
これのプロジェクト名をDefに変えたいのですがどうすればいいですか?
434デフォルトの名無しさん:2012/07/22(日) 18:49:55.10
こんな感じでやったことがあったようななかったような。
・事前に中間ファイルなど、なくてもいいファイルをすべて削除する
・ファイルやフォルダの名称を変更する
・grep置換が出来るテキストエディタで、プロジェクトフォルダ以下のすべてのファイルを全置換する
435デフォルトの名無しさん:2012/07/22(日) 19:11:58.57
CLSIDが重複するんですねわかります
436デフォルトの名無しさん:2012/07/22(日) 23:47:08.59
visualC++について質問です。
データグリッドビューを使ったプログラムなんですが、
入力したパラメータの大小でそのパラメータの入力されている
セルの背景色を変えるようなプログラムを組みたいのですが、どうしたらいいでしょうか?
437デフォルトの名無しさん:2012/07/22(日) 23:51:14.14
オーナードロー
438デフォルトの名無しさん:2012/07/23(月) 00:33:00.09
データグリッドビューって .net の?
だったら vc++ DataGridView セル 背景色 あたりでグーグル先生に聞いてくれ。(そっちの方が早い)

もし、アンマネージのグリッドのことでも、Microsft なんとかって最初から付いてたやつのことなら、普通に変えてたような気がするんだけど。
どっちか分からんのに調べるのもな。。。
環境はちゃんと書くようにしてくれ。
439デフォルトの名無しさん:2012/07/23(月) 00:35:16.02
あ。パラメータの値で背景色を自動的に変える方法を聞いてるのかな。
それは、、一から教えるのは勘弁。
自分なら入力値の変更イベントで勝手に色を変えるラッパークラスなりを作るだろうけど。
440デフォルトの名無しさん:2012/07/23(月) 00:43:28.62
>>438
スレタイを声に出して読んでみて
441デフォルトの名無しさん:2012/07/23(月) 01:04:13.93
ん? C++/CLI ってのもあるんだけれども。
442デフォルトの名無しさん:2012/07/23(月) 01:07:03.22
>>441
スレタイの 「を」 以降を声に出して読んでみて
443デフォルトの名無しさん:2012/07/23(月) 02:50:44.15
すみません、「を」までしか読んでいませんでした。
444デフォルトの名無しさん:2012/07/23(月) 04:50:56.38
馬鹿には無理
445デフォルトの名無しさん:2012/07/24(火) 17:55:09.70
朝鮮猿っていつまで経っても、結局日本の後追い猿真似しか出来ない寄生虫民族なんだよね
属国の歴史しか無くて、ずっと独自文化がゼロなのはなぜなのか本当に良く判るわw


  < #`Д´> <うぎゃああああ!!フランス人までネトウヨの嫌韓厨だったニダーーー!!!ネトウヨ!ネトウヨ!ネトウヨ!!


■フランスメディア「KPOPに独自性は感じられない」「日本や米国の模倣」「商業主義」「つまらない」

パリで韓流コンサート「日本文化から韓国を知った」
2011/06/14(火) 09:45

  一方、コンサートが終了した現在、当日の模様について報道しているフランスのメディアは
比較的少ない。この状況下、コンサートの模様を報じているのは、フランスのニュースサイト「Rue89」だ。

  中でも目立つのが、K−POPは特に独自性が感じられないという意見だ。これまでフランスでファン層を
増やしてきたJ−POP、ひいては米国のポップスを踏襲しており、商業主義的な音作りだという意見や、
演奏がコンピューター管理されているためか野性味に欠けるといった意見が寄せられている。

http://news.searchina.ne.jp/disp.cgi?y=2011&d=0614&f=national_0614_016.shtml
446デフォルトの名無しさん:2012/07/24(火) 19:18:30.86
shtmlまで読んだ
447デフォルトの名無しさん:2012/07/28(土) 09:12:38.31
win32apiでキーボード入力を使ったプログラムを作っています。(C言語)
使用するキーは、「0」〜「9」の数字キー、プラスマイナスを判定する「-」キー、少数点の「.」キー、決定の「Enter」キーです。
WndProc(ウィンドウプロシージャ)内のWM_KEYDOWNメッセージで押されたキーを認識してるのですが、
case WM_KEYDOWN:
if( wp == VK_RETURN ){
エンターキー処理;
} else if( wp == '0'){
「0」キー処理;
}

こんな感じで数字とエンターキーは認識出来たのですが、「 - 」「 . 」この2つが認識できませんでした。
「 - 」「 . 」この2つが押されたことを認識する方法を教えてください。

XP VC++6
448デフォルトの名無しさん:2012/07/28(土) 09:19:33.16
WM_CHAR じゃね
449デフォルトの名無しさん:2012/07/29(日) 15:38:09.00
これって解説したの?

うちとこでは WM_KEYDOWN の、

switch( wp ) {
case VK_SUBTRACT: // '-'
case VK_DECIMAL: // '.'
break;
}

で普通に行けたけど。
エンターキーとかが拾えてるなら、そこにブレークポイントを置いてキーを押してみればどんな値が来るか分かるじゃん。
分かったら例示にある VK_RETURN の「定義で移動」で定義元に飛んで、上で確認した値に該当する define 定義を見つけられるよ。
450デフォルトの名無しさん:2012/07/29(日) 15:38:36.41
上。
x 解説
o 解決
451デフォルトの名無しさん:2012/07/29(日) 15:44:29.60
自演乙としか
452デフォルトの名無しさん:2012/07/29(日) 20:12:47.40
そっか、自演をしちゃったのか自分は。w
453デフォルトの名無しさん:2012/08/02(木) 17:50:09.68
Visual C++で .Net Frameworkを使いたいのですが下記のようになってしまいます
どうやって使うのですか?

using namespace System;

int main()
{
return 0;
}

エラー
'System' : この名前を指定された名前空間は存在しません。

454デフォルトの名無しさん:2012/08/02(木) 17:55:33.04
455デフォルトの名無しさん:2012/08/02(木) 19:17:26.38
>>454
ありがとうございました
456デフォルトの名無しさん:2012/08/07(火) 02:43:20.16
デバッグのやり方を教えてください。

C言語でシリアル通信を行ってデータの送受信を行おうと思っています。(Visual c++ 6のwin32api)
CreateFileやReadFile、WriteFileなどの関数を使って送受信をしようと思っています。
しかし、自分側のプログラムは(多分)出来たのですが、(通信)相手側がまだ完成していないので、
自分側のプログラムだけでも正しく動作してるのか確認(デバッグ)したいのです。
そこでPC2台を繋げて、自分のプログラムが通信(送信・受信)したいタイミングで、もう1台のPCからデータを送ったり、
受信した内容を確認したいのですが、どのように行えば良いでしょうか?
教授の助言では、teratermを使って・・・とのことですが。。。
teratermの使い方をいろいろ調べた結果、両方のPCでteratermを起動させ、A側で「a」を押すと、B側のteratermにaが表示される(その逆も)
くらいは出来たのですが、この方法を用いてVC6で作ったwin32apiの動作を確認する方法が分かりません。
457デフォルトの名無しさん:2012/08/07(火) 08:34:21.71
両方のPCでteratermを動かしてどうする
相手側のアプリの替わりにteratermを使うんだよ
458デフォルトの名無しさん:2012/08/07(火) 10:44:06.56
宿題は宿題スレって約束忘れちゃったのかおまえら
459デフォルトの名無しさん:2012/08/07(火) 21:09:11.54
てか、自分の側のプログラムは(一応)完成してるんだろ?
それをちっと弄って相手側の役割をするように変えてやればいいんじゃねーか?
460デフォルトの名無しさん:2012/08/15(水) 01:15:26.56
Visual C++ Express 2010で質問があります。

Windowsフォームアプリケーションを使用して、フォルダ作成プログラムを作ろうとしているのですが、
どうもうまくいきません。

フォームはテキストボックス、ボタンからなり、テキストボックスに文字列を入力し、ボタンを押すと
入力した文字列名でフォルダが作成されるというプログラムです。

書いたコードを以下のサイトに張り付けたので、どうすればうまくいくかご教示お願いします。

http://ideone.com/TWwHO
461デフォルトの名無しさん:2012/08/15(水) 01:56:41.54
>>460

using namespace System::Runtime::InteropServices;

private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) {
System::String ^ str = this->textBox1->Text;
char* str1 = (char*)(void*)Marshal::StringToHGlobalAnsi(str);
_mkdir(str1);
}
462デフォルトの名無しさん:2012/08/15(水) 10:10:11.14
また、いばらの道に初心者が迷い込んだか
463デフォルトの名無しさん:2012/08/15(水) 10:19:51.11
なぜ初心者はC++/CLIなんて変態言語に手を出してしまうのだろう
464デフォルトの名無しさん:2012/08/15(水) 12:49:30.44
フォームアプリが選択肢に並んでるせいだな
465デフォルトの名無しさん:2012/08/15(水) 21:42:56.31
C/C++ -> MFC って来て、net に行こうとしたら C++/CLI に行きたくなるだろ、ふつう。
どんなトラップなんだと。w
466デフォルトの名無しさん:2012/08/16(木) 16:32:01.02
hash_map > 超えられない壁 > map
467デフォルトの名無しさん:2012/08/22(水) 18:02:31.68
VC++での開発初心者です。質問なのですが、
XMLファイルを読み込んで、配列かArrayListに格納するコードを書こうと思っています。
上記のようなことを行うにはどのような方法が簡単かつ適切でしょうか?
また、C#のようにXMLスキーマを用いて、データセットにXMLの値を格納する方法はC++でも可能でしょうか?
ぐぐっても半端な情報が散見するばかりで、少し途方に暮れています。
468デフォルトの名無しさん:2012/08/22(水) 18:19:07.00
469デフォルトの名無しさん:2012/08/22(水) 19:18:28.91
>>468
ありがとうございます。
ただ、Boost導入は難しい環境にて作成しております。(情報不足で申し訳ありません
Boostを使わずに実現する方法はないでしょうか?
470デフォルトの名無しさん:2012/08/22(水) 20:30:02.72
xmllite
471デフォルトの名無しさん:2012/08/23(木) 01:25:19.39
_CrtSetDbgFlagを使用すれば動的に確保されたメモリが解放されていない場合教えてくれるのですが
・DeleteObject
・DeleteDC
・ReleaceDC
・DestroyMenu
・FreeLibrary
・DragFinish
・FreeConsole
・GlobalUnlock
・ReleaseMutex
・CloseHandle
・etc
なども処理されて無い場合確認できるものが存在するのですか?
472デフォルトの名無しさん:2012/08/23(木) 01:33:38.73
しない
473デフォルトの名無しさん:2012/08/23(木) 17:51:53.90
そうだったんですね
ありがとうございました
474デフォルトの名無しさん:2012/08/26(日) 21:06:18.92
同じ実行ファイルを実行した時に
XP以前ならクラシックスタイル
XPならXPスタイル
VistaならVistaスタイル
7なら7スタイル
で表示するようにするにはどうすればいいですか?
それぞれ別の設定でビルドするしかないですか?
475デフォルトの名無しさん:2012/08/26(日) 21:52:41.14
GetVersionExでOSごとに描画を変える
476デフォルトの名無しさん:2012/08/26(日) 22:45:28.41
動的に確認できるんですね
ありがとうございました
477デフォルトの名無しさん:2012/08/26(日) 22:56:28.91
マニフェストファイルの以下の部分に指定した文字列は実行ファイルをメモ帳とかで開いた時しか見えませんか?
<assemblyIdentity
・・・
name="この部分"
・・・
/>
<description>この部分</description>
タスクマネージャのプロセスタブにある「説明」の欄に表示されたり
プロパティでは表示されないみたいですが
また別物なんですか?
478デフォルトの名無しさん:2012/08/26(日) 23:04:24.06
リソースのバージョンインフォじゃね
479デフォルトの名無しさん:2012/08/26(日) 23:42:01.08
ありがとうございます
内部で使用されるだけなんですね
480デフォルトの名無しさん:2012/08/27(月) 00:43:56.58
ビジュアルスタイルを適用するマニフェストファイルのprocessorArchitectureの値(x86)は
ソース上だと#defineで分岐するとビルド時のシステムに搭載されているCPUを気にしなくてもいいのですが
.xml上で自動で搭載されているCPUに合った値を使用する方法はありますか?
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<dependency>
<dependentAssembly>
<assemblyIdentity
type="win32"
name="Microsoft.Windows.Common-Controls"
version="6.0.0.0"
processorArchitecture="x86"
publicKeyToken="6595b64144ccf1df"
language="*"
/>
</dependentAssembly>
</dependency>
</assembly>

またOSによってビジュアルスタイルが変わると思うのですが
dllを読み込むのだからOSが使用できるビジュアルスタイルが自動的に描画される
という認識であってますか?
481デフォルトの名無しさん:2012/09/04(火) 01:45:17.53
質問です。VC++6.0でダイアログを作成しています。
ダイアログにはリストボックスがあり、スレッドの中でリストボックスにアイテムを追加したいと考えています。
MFCを使用しています。スレッドは_beginThreadで呼び出しています。

リストボックスのオブジェクトを取得するために以下のようにして取得をしたいと考えています。
CListBox* List = (CListBox*)GetDlgItem(リストボックスのID);
この処理はダイアログ::OnInitDialog()のような継承を行った部分の中では問題なく使用できるのを確認したのですが、
これを使ってスレッド内でオブジェクトを取得するにはどうしたらいいか悩んでいます。
スレッドは以下のような関数を呼び出しています。
void Thread(void* p){
  //処理
}
スレッドの中でリストボックスのオブジェクトを取得してリストボックスにアイテムを追加する方法の知恵を授けては頂けませんでしょうか
482デフォルトの名無しさん:2012/09/04(火) 01:47:56.44
スレッドにListを渡してやればいい
483デフォルトの名無しさん:2012/09/04(火) 02:05:55.94
>>482
なるほど
先にCListBox* List = (CListBox*)GetDlgItem(リストボックスのID);として
_beginThread(Thread,0,List);のように引数にListを渡すということでしょうか?
この考え方が間違ってたら申し訳ありません。
484デフォルトの名無しさん:2012/09/04(火) 02:10:28.96
はい
485デフォルトの名無しさん:2012/09/04(火) 02:21:04.38
スレッドの中でオブジェクトが取れなければ外で取ればいいじゃないということですね。
それだと複数引数で渡したい場合は構造体にでも入れて渡せば問題なさそうです。
回答ありがとうございます。非常に助かりました。
486デフォルトの名無しさん:2012/09/04(火) 21:56:06.00
もう解決したみたいだけど。
そもそもワーカースレッドの中で画面アイテムの更新て出来たっけ?

そう言う場合、リストボックスに入れるデータを格納したバッファなりを作って、スレッドではそこにデータを格納。
続けてウィンドウメッセージかなにかでウィンドウにメッセージを送ってメインスレッド(て言うんだっけ)でリストを更新、
て流れでいつも作ってた。
487デフォルトの名無しさん:2012/09/04(火) 22:20:13.57
内部ではSendMessageしてるから大丈夫
488デフォルトの名無しさん:2012/09/05(水) 11:30:23.73
教えて下さい!
Photoshop CS5のプラグインを作りたくて
Visual Studio 2010 Express (C++)をインストールして

次に、
PhotoshopCS5 SDK(forWindows)
ttp://www.adobe.com/devnet/photoshop/sdk.html
をダウンロード

試しにサンプルでもと思い。
「\adobe_photoshop_cs5_sdk_win\pluginsdk\samplecode\selection\selectoramashape\win」内の
「SelectoramaShape.vcproj」をダブルクリック!!

VS「変換ウィザードへようこそ」???→なんか知らんが、完了!
VS「変換中にエラーがあったよ」→閉じる。。。
ソリューションファイルからならイケる!(ってどっかのサイトに書いてあった)
VS「変換ウィザード。。。。

みたいな事になってます。

環境はWindows7で
変換レポートの中のエラーは
「Converting project file '***\SelectoramaShape.vcproj'Failed to upgrade platform 'x64'. Please make sure you have it installed under '%vctargetspath%\platforms\x64'
VCWebServiceProxyGeneratorTool is no longer supported. The tool has been removed from your project settings.
Attribute 'Detect64BitPortabilityProblems' of 'VCCLCompilerTool' is not supported in this version and has been removed during conversion.
Failed to upgrade 'Debug|x64'. Please make sure you have the corresponding platform installed under '%vctargetspath%\platforms\x64'
The project configuration dimension name/value "(Platform, Win32)" was not found in the project manifest.
プロジェクトはアップグレードに失敗しました。
」です。

お願いします。助けて下さい。
489デフォルトの名無しさん:2012/09/05(水) 11:51:15.84
>>488
環境は64bit?
そのVC++はSDK追加して64bitコンパイルできるようにしてる?
490デフォルトの名無しさん:2012/09/05(水) 11:54:32.79
あとちょっと見てみたけど、変換が入るのはこれがViisualStudio2008用だからだな。
2010用に書き換えるか、とりあえず2008で試してみては
491sage:2012/09/05(水) 12:07:50.84
>>489
>>490
なるほど。そういうことだったんですね。
ちょっと2008インスコしてきます。
2008も64bitコンパイルできるように設定しないとだめっすか?
492デフォルトの名無しさん:2012/09/05(水) 12:21:23.20
他のサンプルにx64入ってないやつあるからそれ試せばいいんじゃないか?
あとx64使えるようにするのは2008は面倒だよ。
そのエラーが出てプロジェクト開けないの?
開けてるならWin32のみ使えばいいんで問題ないと思うけど。
493デフォルトの名無しさん:2012/09/05(水) 12:49:22.38
>>492
あやうく2010消すとこでした。^^;
エラーが出てプロジェクトが開けないんです。
左のソリューションエクスプローラーに
・SelectoramaShape(利用不可)
 プロジェクト ファイルはアンロードされました。
みたいな感じで表示されてます。



494デフォルトの名無しさん:2012/09/05(水) 12:52:48.98
x64は最新のSDK入れれば使えるんじゃないか?
ググって試してみりゃいい。
あとvcprojをテキストエディタで開いてx64のブロック消すとか
495デフォルトの名無しさん:2012/09/05(水) 14:00:07.48
>>493
VC++2008で64bitでビルド実行できるようになって、その後2010で使いたいなら
2008を残したまま2010インストール
→2010で64bitビルド実行できるようにする(テストプログラムでも作って確認)
→2010でSelectoramaShape?のソリューションを開く
→ウィザード変換
→プロジェクトのプロパティ->構成プロパティ->全般->プラットフォーム ツールセットv90でリビルド
→エラー無し確認後v90をv100にしてリビルド
→エラー無し確認
これで以降はVC++2010のみで管理可能になると思う
496デフォルトの名無しさん:2012/09/05(水) 16:37:05.62
struct FOO{ int a; int *b; long c; char *d; };
__declspec(noinline) void __stdcall foo1(FOO h){
printf("%d %x %d %s", h.a, h.b, h.c, h.d);
}
__declspec(noinline) void __stdcall foo2(int a, int *b, long c, char *d){
printf("%d %x %d %s", a, b, c, d);
}
typedef void (__stdcall *FOO1)(FOO);
typedef void (__stdcall *FOO2)(int, void *, long, char *);
int _tmain(int argc, _TCHAR* argv[]){
FOO h = { 6, &h.a, 8, "abc", };
foo1(h);
((FOO1)foo2)(h);
foo2(h.a, h.b, h.c, h.d);
((FOO2)foo1)(h.a, h.b, h.c, h.d);
return 0;
}

最適化するとfoo2はfoo1と同じと見なされ、消えてしまいました。
しかし、呼び出し方は全く異なります。
foo2はpushで引数を入れていますが、
foo1はスタックポインタを進めて、全部movしていました。
するとfoo1は呼び出しコストが高くなるので
FOO2にキャストしてから呼んでみたところ
foo2と同じようにpushで引数を入れてくれました。
このような、引数と構造体の置き換えは、
アライメントが違ったり、浮動小数が入っていると
できない場合もあると思いますが、他にできないパターンが
あったら教えてください。
497デフォルトの名無しさん:2012/09/06(木) 04:13:40.82
>するとfoo1は呼び出しコストが高くなるので

え? 逆じゃないの?
プッシュはmuvより複雑で面倒な命令だから、実行時間が長くなるんじゃない?

試しに何回も呼び出しを繰り返させて実行時間を計ってみ?
498デフォルトの名無しさん:2012/09/06(木) 11:03:53.54
>>するとfoo1は呼び出しコストが高くなるので
>え? 逆じゃないの?
>プッシュはmuvより複雑で面倒な命令だから、実行時間が長くなるんじゃない?

すみません、おっしゃる通りでした。
以下のようにベンチしたところ、若干foo1呼び出しの方が速かったです。
http://ideone.com/2rTrd

コードが明らかに長くなるので、それだけ見て勘違いしておりました。

となると、サイズより速度を優先する最適化で、pushをmovに置き換える
コードが生成されないのはなぜですか?

また、((FOO1)foo2)(h);の行が入っていない場合、
foo2はfoo1に統合されませんでした。

しかも、関数自体はfoo1より、統合されないfoo2の方が速かったです。

謎だらけです。
499デフォルトの名無しさん:2012/09/06(木) 14:08:24.61
>>494
>>495
ありがとうございます。
なんとかできました。
できたはできたんですが、

自分が作りたかったプラグインはすでに存在してました orz
500デフォルトの名無しさん:2012/09/06(木) 15:42:04.15
構造体へのアクセスが単純変数へのアクセスよりも遅いって事だろ。

呼び出し時に構造体から変数に置き換えるか、関数内で置き換えるかの違いかと。
501デフォルトの名無しさん:2012/09/06(木) 15:59:16.26
えっ!?
502デフォルトの名無しさん:2012/09/06(木) 16:20:31.70
まあコンパイルは遅くなるかもなw
503デフォルトの名無しさん:2012/09/06(木) 21:38:56.41
構造体の変数を引数として渡して
関数内では構造体使わない方が速い

グローバル構造体宣言して使いまわすとか無しな
504デフォルトの名無しさん:2012/09/07(金) 14:46:45.00
質問ですが、VC++6.0にて
time_t time = time(NULL);
struct tm *ptime = localtime(&time);
として、YYYYMMやMM:DDのような書式にあわせた日付を取得する方法としてどのような方法があるのでしょうか?
YYYYと書式を設定したら2012、YYYY/MMと設定したら2012/09のようになるイメージです。

505デフォルトの名無しさん:2012/09/07(金) 16:52:48.33
506デフォルトの名無しさん:2012/09/07(金) 16:55:36.66
507デフォルトの名無しさん:2012/09/09(日) 04:03:06.58
どんな構成でプロジェクト作ってる?
フィルタの振り分けとか

Main
->main.cpp
->main.h

ProjectName
->ProjectName.cpp
->ProjectName.h

自作外部ファイル用
->FileName1.cpp
->FileName1.h
->etc

こんな感じ?
508デフォルトの名無しさん:2012/09/09(日) 13:41:30.09
そう
509デフォルトの名無しさん:2012/09/10(月) 09:34:58.52
遅れて申し訳ありません。規制に巻き込まれてしまいました。
>>505 >>506
こんな関数があったんですね。わざわざURLまで貼っていただいてありがとうございます。
510デフォルトの名無しさん:2012/09/11(火) 21:03:25.31
すいません。
UDP通信の簡単なアプリケーションを作成中なのですが、
recvfrom()を実行するとデータを受信するまで終了できませんです。

511デフォルトの名無しさん:2012/09/11(火) 21:09:48.75
終了するまで自分にパケット送りつける事にすればいいでしょうか?
512デフォルトの名無しさん:2012/09/11(火) 22:12:18.61
ref クラスのプロパティに構造体の配列を持ちたいのですが、
混合型はサポートされていませんと出ます。
どうすればいいですか?
513デフォルトの名無しさん:2012/09/11(火) 22:47:17.96
C++/CLIを使う->間違い
C#を使う->正解
514デフォルトの名無しさん:2012/09/13(木) 17:53:59.24
MC Vsual C++6.0 をつかっています
ソフトがクラッシュすると、デッバッグが起動するんですけど
これを解除するにはどうすればいい?
515デフォルトの名無しさん:2012/09/13(木) 21:35:37.48
>>514
標準デバッガの設定だな。
XP以前だったらDrワトソンを標準デバッガに設定し直せば良い。
drwtsn32.exe -i
だったかな。いま7だから試せんわ。

もしOSがVISTA以降だったら、そもそもDrワトソンが無いので、レジストリの
HKEY_LOCALMACHINE\SOFTWARE\Microsoft\WindowsNT\CurrentVersion\AeDebug
を弄れは良い。
見て想像は付くと思うが、解らんかったらググれ。
516デフォルトの名無しさん:2012/09/13(木) 21:40:19.12
質問です。
VC++6.0を使用してtry catchで例外処理をしているのですが、VC++6.0ではVBのようにexceptionのような色々なエラーをキャッチできて、
詳細なエラーメッセージを取得することができる手段はないのでしょうか?
517デフォルトの名無しさん:2012/09/13(木) 21:52:41.37
例外を投げる時に詳細なエラーメッセージも一緒に投げればいいんじゃないかな
518デフォルトの名無しさん:2012/09/13(木) 21:59:51.79
いまざっとググってみたけど、その exception ってのが、VC で言うところの System::Exception なんじゃねぇの?
519デフォルトの名無しさん:2012/09/13(木) 22:36:46.06
ref Class
なにこれ??使いにくいぃぃぃいいいいい!!
皆さん使ってますか??
520デフォルトの名無しさん:2012/09/13(木) 22:37:29.82
C++CLIで下記のよなプログラムを書いてます。で下のエラーメッセージが出ました。

error C4368: cannot define '_test_main' as a member of managed 'NAMAI::Form1': mixed types are not supported
error C2678: binary '=' : no operator found which takes a left-hand operand of type 'NAMAI::TEST_main' (or there is no acceptable conversion)
could be 'NAMAI::TEST_main &NAMAI::TEST_main::operator =(const NAMAI::TEST_main &)' while trying to match the argument list '(NAMAI::TEST_main, NAMAI::TEST_main *)'

別ファイルのTEST_mainをフォーム1で生成したいのですが、エラーの解決方法を教えていただけないでしょうか。
よろしくお願いします。
>>HOGE.h
namespace NAMAI
{
class TEST_main { public: void TEST(void); };
}
>>Form1.h
#pragma once
#include "HOGE.h"

namespace NAMAI {
public ref class Form1 : public System::Windows::Forms::Form
{
public:
TEST_main _test_main;

Form1(void){
InitializeComponent();
InitializeTEST();
}
void InitializeTEST() { _test_main = new TEST_main; }
};
}
521デフォルトの名無しさん:2012/09/13(木) 23:07:34.35
C++/CLIはC++じゃありません
522デフォルトの名無しさん:2012/09/17(月) 17:23:05.36
>>521
じゃあなんあのさぁああああああああああああ!!!!!
523デフォルトの名無しさん:2012/09/17(月) 17:36:08.09
C++/CLIはC++/CLIだな、うん
524デフォルトの名無しさん:2012/09/23(日) 03:01:33.57
自前で_CrtSetDbgFlagの機能を実装するのってどんな考え方したらいいかな?
malloc/freeでfree忘れを検知するだけでいい

それができたらそこにGetDC/ReleaseDCとかも判定できるようにしようと思ってんだけど
525デフォルトの名無しさん:2012/09/24(月) 18:07:31.98
VC6の質問です

彼女が出来ません、どうしたら良いですか
526デフォルトの名無しさん:2012/09/24(月) 18:17:35.73
コードをかきまくります
527片山博文MZボット ◆0lBZNi.Q7evd :2012/09/24(月) 18:59:17.08
>>524
プリプロセッサーでフック。
#define malloc mymalloc
...
atexit関数かstaticオブジェクトのデストラクタでチェック。
528デフォルトの名無しさん:2012/09/24(月) 19:10:38.89
__FILE__ __LINE__
529デフォルトの名無しさん:2012/09/24(月) 19:56:58.97
クラス定義でメソッドをインラインで書くとき
{} の後ろに ; が要らないのはなぜですか?
たとえば
class Hoge {
  int a;
public:
  Hoge() : a(0) {};
  ~Hoge() {};
  void Hage(void);
  void Fuga(void) {a=1;};
};
みたいなとき
class Hoge {
  int a;
public:
  Hoge() : a(0) {}
  ~Hoge() {}
  void Hage(void);
  void Fuga(void) {a=1;}
};
で良いんですよね?
だとすると逆に
  void Hage(void)
で怒られるのも謎
530デフォルトの名無しさん:2012/09/24(月) 20:02:56.43
関数の宣言と定義の違い
531デフォルトの名無しさん:2012/09/24(月) 20:04:29.16
>>529
関数書くときもいらないだろ
いつもわざわざ
void func() { };って書いてたのか?
532デフォルトの名無しさん:2012/09/24(月) 20:06:53.19
class は定義なのか宣言なのか } の後ろに ; が必要ですね。
533デフォルトの名無しさん:2012/09/24(月) 20:08:11.70
構造体には付けてただろ
534デフォルトの名無しさん:2012/09/24(月) 20:08:28.47
あれは宣言と同時にインスタンスを作れるようになってるから必要
535デフォルトの名無しさん:2012/09/25(火) 21:35:14.70
C++初心者の人はまず何から始めたほうがいいですかね?
536デフォルトの名無しさん:2012/09/25(火) 22:24:58.02
まず禊をして身を清め
断食で煩悩を断ってください
537デフォルトの名無しさん:2012/09/25(火) 23:31:20.62
>>535
興味のあるライブラリをさわってみる
サンプルをうごかしてみる
ちょっと変更してうごかしてみる
538デフォルトの名無しさん:2012/09/25(火) 23:44:32.53
>>537
やっぱり普通に言語の勉強するよりも動かしたほうがいいんですね
539デフォルトの名無しさん:2012/09/26(水) 08:21:09.71
if(hoge){huga;};
って書き方してるソースも見たことあるわ
540デフォルトの名無しさん:2012/09/26(水) 13:29:08.57
ある例外(型はポインタ)が投げられた(受け取った)とき、
そのポインタの値がNULLかどうかチェックする必要はありますか?
具体的には、
try{
  do something;
}
catch(char *hoge){
  printf("received exception: %s", hoge);
}
としたい場合、
catch(char *hoge){
  if(hoge){
    printf("received exception: %s", hoge);
  }
}
と書くべきかどうかです。
この場合は throw してる側で hoge が動的か静的かで違うと思いますが、
動的に hoge が生成されるような場合についてです。
541デフォルトの名無しさん:2012/09/26(水) 13:31:52.59

誤 received exception

正 caught exception

542デフォルトの名無しさん:2012/09/26(水) 13:55:26.10
必要ない
543デフォルトの名無しさん:2012/09/26(水) 14:03:10.45
仮にそこに渡されるポインタがNULLだとすると
既に別の例外が発生しているか
強制終了されている状況じゃないかな
544デフォルトの名無しさん:2012/09/26(水) 14:45:04.26
>>540
それよりお前
delete hoge;
し忘れてるぞ
545デフォルトの名無しさん:2012/09/26(水) 21:26:41.46
いや、それはこの際どうでもいいだろ。w

>>540
それって状況によるかも知れないから、どうしても心配ならこんな風に書いたりすることもある。
まあこれもどうでもいいかもしれんが。
printf("received exception: %s", hoge == NULL ? "NULL" : hoge );
546デフォルトの名無しさん:2012/09/26(水) 23:34:50.18
Visual C++ Expressを使用しています。64ビットでの開発をしようと
http://msdn.microsoft.com/ja-jp/library/9yb4317s.aspx
に書かれている通り行ったのですが、試しに sizeof(void*) を出力させたところ 4 となりました
これは通常だと8となるはずなのですがどうなのでしょう
547デフォルトの名無しさん:2012/09/26(水) 23:58:08.73
64bitのバイナリになってないんでしょう
548デフォルトの名無しさん:2012/09/26(水) 23:59:56.26
>>547
どうやって設定するのですか
549デフォルトの名無しさん:2012/09/27(木) 09:59:33.25
構成マネージャーでx64作成
550デフォルトの名無しさん:2012/09/28(金) 19:51:36.48
>>527,528
ありがとう
551デフォルトの名無しさん:2012/09/29(土) 10:04:12.90
ちょっと質問です。

VisualStudio 2010 で C++ を使い、Win32 アプリを作っています。
アプリ実行時に、IDE 上に任意のログを出力する機能ってありますでしょうか?

やりたいのは、Eclipse / Android 開発で、Log.e を Logcat で捕まえるようなものです。
リアルタイムで実行状況を確認したいときに使いたいです。
552デフォルトの名無しさん:2012/09/29(土) 10:17:37.47
OutputDebugString
553551:2012/09/29(土) 10:47:50.91
いけました!ありがとうございます!
554デフォルトの名無しさん:2012/10/01(月) 02:46:20.20
SDKプログラムで、ボタンをオーナードローを使って描画しているのですが
Vistaや7のAeroのGUIで、ボタンにカーソルを合わせると徐々に青っぽくなって
カーソルをはずすと、また元に戻っていくようなアニメーションっぽいのを
やりたいんですが、この処理は自分でタイマー使ってやる以外に方法はありますか?
555デフォルトの名無しさん:2012/10/01(月) 04:51:11.16
自分でタイマー使ってやる
556デフォルトの名無しさん:2012/10/05(金) 12:04:40.08
printf の "%.*s" ってどういう意味ですか?
557片山博文MZボット ◆0lBZNi.Q7evd :2012/10/05(金) 16:16:50.27
>>556 引数で最大表示文字数を指定する。
printf("%.*s\n", 4, "TESTTEST"); // TESTと表示。
558デフォルトの名無しさん:2012/10/05(金) 19:29:48.17
>>557
やさしさ乙
559デフォルトの名無しさん:2012/10/05(金) 20:13:25.32
thx!
560デフォルトの名無しさん:2012/10/05(金) 20:17:05.38
fgets() はどうして取得出来た文字数を返さないのでしょう?
561デフォルトの名無しさん:2012/10/05(金) 20:37:52.16
while(fgets(buffer, sizeof(buffer), fp) != NULL){
  hogehoge;
}
これだとバグ出るよね
562デフォルトの名無しさん:2012/10/05(金) 21:19:10.75
bufferの型によるな
sizeof(buffer) / sizeof(buffer[0])かポインタでなければ_countof(buffer)がいい
563デフォルトの名無しさん:2012/10/06(土) 16:03:54.56
> sizeof(buffer) / sizeof(buffer[0])

これって buffer が配列じゃなくてポインタのときは駄目じゃない?
564デフォルトの名無しさん:2012/10/06(土) 16:48:03.89
_countofなら大丈夫
565デフォルトの名無しさん:2012/10/06(土) 16:52:19.50
char *buffer = (char *)malloc(sizeof(char) * N);
printf("%d", _countof(buffer));
566デフォルトの名無しさん:2012/10/06(土) 16:58:29.23
>>565
ちゃんとコンパイルエラーになるから大丈夫
567デフォルトの名無しさん:2012/10/06(土) 17:14:27.83
char buffer[N];
○ sizeof(buffer) / sizeof(buffer[0])
○ _countof(buffer)

char *buffer = (char*)malloc(sizeof(char) * N);
× sizeof(buffer) / sizeof(buffer[0])
× _countof(buffer)
○ int size = sizeof(char) * N;
568デフォルトの名無しさん:2012/10/06(土) 17:17:14.26
ああ
コンパイルエラー出すための仕組みなんか
誤解してたわ
569デフォルトの名無しさん:2012/10/06(土) 17:25:52.36
char *buffer = (char*)malloc(sizeof(char) * N);
× sizeof(buffer) / sizeof(buffer[0]) // コンパイルエラーにならなくて実行時誤動作
× _countof(buffer) // コンパイルエラーになるから大丈夫
570デフォルトの名無しさん:2012/10/07(日) 01:23:43.90
visual studioの仕様に慣れない初心者です・・・

次のエラーが解決できず、かなり苦労しています

LINK : fatal error LNK1104: ファイル 'glut32.lib' を開くことができません。

調べてでてきた
・glut32.dllを"C:\Windows\System32"に入れる
・glut32.dllを"〜〜.vcproj"と同じフォルダに入れる
・プロジェクト→既存項目を追加→glut32.dllを選択
をすべて試してみたのですが、エラーが消えません・・・

環境はVisual C++ 2008、Windows7の64bit、プロジェクト自体は"Win32"です。
どうかよろしくお願いします・・・
571デフォルトの名無しさん:2012/10/07(日) 01:56:52.25
glut32.lib
572デフォルトの名無しさん:2012/10/07(日) 01:59:53.67
glut.libの指定してる所はどう書いてる?
573デフォルトの名無しさん:2012/10/07(日) 02:05:55.88
       //
     /  /   バカッ
     //⌒)∩__∩
    /.| .| ノ     ヽ
    / | |  ●   ● |     
   /  | 彡  ( _●_) ミ 馬鹿には無理
   /  | ヽ  |∪|  /_
  // │   ヽノ  \/
  " ̄ ̄ ̄ ̄ ̄ ̄ ̄(..ノ
574デフォルトの名無しさん:2012/10/07(日) 02:49:45.32
>>571
>>572
glut32.libがあるディレクトリを含めていませんでした!!
ありがとうございます、無事にコンパイルが通りました!!
575デフォルトの名無しさん:2012/10/07(日) 12:03:00.67
本当に初心者スレっぽくてなごんだ。
576デフォルトの名無しさん:2012/10/07(日) 15:19:15.62
「ごめん」って言うと
「遊ぼう」って言う。
「もう遊ばない」って言うと
「ごめんね」って言う。
そうして、あとでかわいそうになって
「遊ぼう」って言うと
「もう遊ばない」って言う。
こだまでしょうか?
いいえ、馬鹿には無理です。
577デフォルトの名無しさん:2012/10/07(日) 15:57:37.45
AH アーホー
578デフォルトの名無しさん:2012/10/07(日) 16:36:41.54
同じことをするプログラム(ソース)で
Cでコンパイルしたときと
C++でコンパイルしたときとでは
出来上がるプログラムのサイズは変わりますか?
579デフォルトの名無しさん:2012/10/07(日) 16:52:07.07
ありますん
580デフォルトの名無しさん:2012/10/07(日) 17:55:47.96
全く同じソースで?
リンケージの名前のつけかた違うからちょっとは違うだろうけど、、
581デフォルトの名無しさん:2012/10/07(日) 17:59:07.25
exe になったら一緒じゃないか
582デフォルトの名無しさん:2012/10/07(日) 20:06:38.43
その同じことをするための機械語プログラムのアルゴリズムは無数にあるだろ。
583デフォルトの名無しさん:2012/10/07(日) 20:52:56.23
最適化がどうかかるかとかあるだろ
584デフォルトの名無しさん:2012/10/07(日) 23:01:33.29
OSが同じとは書いてないな
585デフォルトの名無しさん:2012/10/08(月) 18:24:19.31
何でその疑問が沸いたのか、から書いてくれないと何と言っていいかわからんな
586デフォルトの名無しさん:2012/10/10(水) 13:43:23.50
すみません。
いくつかのサイトを見ても解決しなかった疑問があるので教えてください。
配列として new したポインタの delete について、
あるサイトでは、

>重要なのはdelete演算子の使い方です。
>new演算子を使って配列を確保した場合、delete演算子にも[]を付けなけ ればなりません。
>これを付けないと、正しく解放できません
>(恐らく、配列の先頭の要素についてだけ解放されるが、 それすらも保証されている訳ではない)。
>この[]の付け忘れは非常によくある間違いです。コンパイルは普通に成功 してしまうので気をつけて下さい。

と書かれていました。
一応言われている意味は判るのですが、なぜ [] を付けると「正しく解放できる」のかが判りません。

たとえば、内部で int *p = new int[n]; した int *p を返す関数 Hoge があるとします。
int *Hoge(size_t n){
  int *p = new int[n];
  return p;
}
これを main 側で受け取って delete[] するケースですが、
int *q = Hoge(N);
delete [] q;
と書くのが正常である。ということになると思いますが、
delete q; だと先頭の 1 要素だけ削除され(るかもしれない)、
delete [] q; だと N 個の要素が削除されるという意味になると思うのですが、
そもそもここで q のサイズを把握することはコンパイラには可能なのでしょうか?
実行時にしか決まらないと思います。
delete [N] q; と書くべきですよね?(書けないけど)
587デフォルトの名無しさん:2012/10/10(水) 13:46:18.40
逆に、
int *q = Hoge(N);
delete [] q;
で、正しく N 個の要素を削除出来る仕組みが(確保されたオブジェクトの方とかに)あるのなら、
そもそも、
delete q;
と書いても大丈夫のような気がするのです。
588デフォルトの名無しさん:2012/10/10(水) 13:47:13.04
age 忘れました。
よろしくお願いします。
589デフォルトの名無しさん:2012/10/10(水) 13:49:58.26
[] つけないとデストラクタが最初のやつしか呼ばれない
試して味噌
590デフォルトの名無しさん:2012/10/10(水) 13:50:28.58
アセンブラ吐いてみたら?
591デフォルトの名無しさん:2012/10/10(水) 13:51:41.94
>>589
それは判るんです。
疑問点は [] があるときは要素数がなぜ判るのか?って所です。
592デフォルトの名無しさん:2012/10/10(水) 13:55:23.89
そんなもんわかる様に作ってあるからだろ。
ほんとの疑問点は、配列だとわかってるくせに
なぜ [] を指定しないとちゃんと呼んでくれないの?

じゃないのか?
593デフォルトの名無しさん:2012/10/10(水) 13:56:55.44
int *p = new int[n];
するとp[-3]あたりに確保した要素数が入ってあったり
594デフォルトの名無しさん:2012/10/10(水) 13:59:54.45
>>590
やってみます。

>>593
それが出来るなら、delete p; でも良いような気がしてるんです。
595デフォルトの名無しさん:2012/10/10(水) 14:01:41.88
実行時に配列かどうか確かめなきゃならんのは無駄だろう
596デフォルトの名無しさん:2012/10/10(水) 14:01:46.27
>>592
>>593
あと、sizeof(p) とかは動的な場合は取れない(コンパイルエラー?)ですが、
「本当は判る。」ってことになりますよね?
597デフォルトの名無しさん:2012/10/10(水) 14:02:32.11
>594
じゃあ一個だけ消したいときはどうすんの?
598デフォルトの名無しさん:2012/10/10(水) 14:03:46.08
>>593
>>595
ああ、
free だと p[-3] を使って常に全部解放されるけど、
delete だと p[-3] は見なくて、
delete [] のときだけ、p[-3] を見るってことですか。
599デフォルトの名無しさん:2012/10/10(水) 14:04:49.35
>>597
それはもちろん、
delete p[0];
とかで可能ではないですか?
600デフォルトの名無しさん:2012/10/10(水) 14:09:19.96
delete は C++ の仕様のバグ。
それに気付いた禿が delete [] を追加した。
601デフォルトの名無しさん:2012/10/10(水) 14:19:21.28
>>590
VC++ 2008 Express でアセンブラ出力してみましたが、
delete q; も delete [] q; も同じコードが吐かれてますね。・・・ orz
602デフォルトの名無しさん:2012/10/10(水) 14:38:30.96
ソース変えたら違いが出ました。
さっきのは最適化されてたのだろうか。・・・ orz
603デフォルトの名無しさん:2012/10/10(水) 14:41:25.06
デストラクタが無ければ同じになるだろうな
604デフォルトの名無しさん:2012/10/10(水) 14:43:43.18
>>589
確かにそうなってますね。
そもそも、 delete で配列全部のデストラクタ呼べば良いのに、
(個別の要素を消したければ、 delete p[] で可能。)
なんでわざわざこんな変な仕様にしたんだろ。
間違いコード誘発しまくりですよね。
605デフォルトの名無しさん:2012/10/10(水) 14:54:38.31
>>593
*(size_t *)((unsigned char *)&p[0] - 4)
で参照したら確保した要素数と同じ数が取れました。
本当にありがとうございました。
606デフォルトの名無しさん:2012/10/10(水) 14:57:41.96
>>604
>>600


>>605
それ64bitだと動かなくなるよ
607デフォルトの名無しさん:2012/10/10(水) 15:03:42.61
>>604
禿も言ってるようにvector使え
そもそもdelete &p[n]で個別の要素が消せるとして何が嬉しいんだ
配列の要素を消したら最後forで処理できなくなるだろうに
608デフォルトの名無しさん:2012/10/10(水) 15:20:09.52
>そもそもdelete &p[n]で個別の要素が消せるとして何が嬉しいんだ

それはどうでもいいんです。
delete と delete [] の使い分けがどうして必要なのかなと思ったので。
609デフォルトの名無しさん:2012/10/10(水) 15:21:29.50
610デフォルトの名無しさん:2012/10/10(水) 15:22:59.74
>589 見たいな仕様にして禿は何が嬉しかったんだろう
611デフォルトの名無しさん:2012/10/10(水) 15:24:21.43
そもそも配列に対してdeleteした結果は未定義動作だろ
612デフォルトの名無しさん:2012/10/10(水) 15:25:01.44
_countof() みたいにコンパイルエラーに出来ないのが問題なんだね
613デフォルトの名無しさん:2012/10/10(水) 15:33:46.06
>612
>607
614デフォルトの名無しさん:2012/10/10(水) 16:44:34.25
p[-3]はなんなんだ?
615デフォルトの名無しさん:2012/10/10(水) 17:08:25.96
616デフォルトの名無しさん:2012/10/10(水) 17:53:43.60
でもベクトルはお遅いんでしょう?
617デフォルトの名無しさん:2012/10/11(木) 05:52:17.82
int *p = new int[N] や
char *p = new char[N] のときは
delete p; で桶なんだな
618デフォルトの名無しさん:2012/10/11(木) 09:22:31.85
プリミティブ型の配列とクラスオブジェクトの配列で扱いが違うということ?
619デフォルトの名無しさん:2012/10/28(日) 21:46:47.23
>>591

コンパイラの実装にもよるが、確かポインタpが指す先頭byteの前の
4byte領域にnewで確保した領域のサイズ(バイト数)が記憶されていた
ような。

delete [] p;

した時はこのサイズを読みに行って正しく解放している。
620デフォルトの名無しさん:2012/10/28(日) 23:19:37.75
>619
>605
621デフォルトの名無しさん:2012/10/31(水) 17:10:08.11
Visual C++ で、どのプロジェクトを実行しようとしても同じプロジェクトが実行されてしまういます。

ソリューションプロジェクトの中にいくつかプロジェクトを用意しているのですが、どのプロジェクトを実行しようとしても、必ず一番上にあるプロジェクトが実行されてしまいます。

手順としては
1.ソリューションエクスプローラーから特定のプロジェクトを右クリックしてリビルド
2.デバッグなしで開始
です。

別のソリューションプロジェクトを作成すれば別のプロジェクトを一つだけ実行できるようになるのですが、大変面倒なため一つのソリューションプロジェクト内で個々のプロジェクトを実行できるようにしたいです

Visual C++2010 , WIndows 7 64ビット
622デフォルトの名無しさん:2012/10/31(水) 17:13:40.44
まあ確実なのはその右クリックでスタートアッププロジェクトに設定、
してやればいけるけど、デバッグなしで開始を右クリックメニューに入れちゃうとか
623デフォルトの名無しさん:2012/10/31(水) 17:20:51.31
>>621
その一番上のプロジェクトが太字になってたら
>>622の言う通りスタートアッププロジェクトに指定されてる
624デフォルトの名無しさん:2012/10/31(水) 17:51:31.75
おお、なるほど。ありがとうございます
ちなみにスタートアッププロジェクトをどのプロジェクトにも設定しない方法はありますか?
難しいプログラムは作らないためにひとまとめでデバッグするような機会はないので、可能であれば外したいです
625デフォルトの名無しさん:2012/10/31(水) 17:59:05.75
そんなの実行しなきゃいいだけだろ
626デフォルトの名無しさん:2012/10/31(水) 18:01:29.97
>>624
どのプロジェクトにも設定しないと言う事は実行しない事になる
つまりビルドだけすれば望みの動作になる
627デフォルトの名無しさん:2012/11/01(木) 06:18:27.78
ダブルバッファリングというのをやろうとしてるのですが、

無料版2010で使えるソフトが、手持ちの有料版2003だと
DC_PEN
DC_BRUSH
SetDCPenColor
SetDCBrushColor

あたりでエラーになります。

参照:
http://blog.goo.ne.jp/masaki_goo_2006/e/d3c18365234ffb3383f5c30e32c83cf5

他の関数使うとか代替方法あります?
なければ2003より上のを買わなきゃダメですかねぇ。
628デフォルトの名無しさん:2012/11/01(木) 08:27:21.79
エラーの内容をコピペしろよ
629デフォルトの名無しさん:2012/11/01(木) 11:06:01.91
Win32APIへ帰れ
630デフォルトの名無しさん:2012/11/01(木) 14:59:17.34
あっちに答え書いてあったな
631デフォルトの名無しさん:2012/11/03(土) 13:32:34.11
VC++2008のプロジェクトの設定で文字セットを選択できます。
「マルチバイト文字」と「Unicode」は分かるのですが、
「設定なし」とは具体的にどういう扱いになるのでしょうか??

「マルチバイト文字」としたときの記述法でコンパイルできるので、
「マルチバイト文字」になっているのでしょうか??
632デフォルトの名無しさん:2012/11/03(土) 17:48:58.88
そういう処理系依存の記述は互換性をそこなうので避けるべき

VC2005デコンパイルすると誤動作するとか、もしくは2010や2012で誤動作するとかが起きかねないから。
逆に、他の処理系から移植しようとして(つまり手元にあるのが2008じゃない)の質問ならしかたないが...
633デフォルトの名無しさん:2012/11/03(土) 18:57:26.74
1、リストボックスにflvのドラッグドロップしたファイル名を表示
2、ボタンを押したらファイルを一つずつ指定のアプリで開く
3、開いたアプリにキー操作を送る
4、CPU使用率で2の動作を連続してできるようにする


これがやりたいことなんだけど1の段階で躓いてます。
ヒントお願いします。
634デフォルトの名無しさん:2012/11/03(土) 19:48:48.03
DragAcceptFiles
635631:2012/11/03(土) 22:24:51.72
>>632
>そういう処理系依存の記述は互換性をそこなうので避けるべき
処理系依存とはどの設定のときのことを指すのでしょうか?

Unicodeの場合、w付きのAPIやリテラル文字列の前にLを付けたりと、
気持ち悪いので使いたくないです。

Unicode、マルチバイト文字のいずれでもコンパイルできるようにする
t付きのマクロも同様です。

これらを付けなくてもよい「設定なし」あるいは「マルチバイト文字」が
良いのですが、デメリットは何でしょうか?
多言語対応が難しいかもしれませんが、日本語だけでよいです。
636デフォルトの名無しさん:2012/11/03(土) 23:22:40.63
コンパイラのバージョンが変わったりWindowsバージョンが違ったりすると挙動が変わる危険があり、
予期せぬ誤動作でデバッグ作業が長引く恐れがある。

>Unicodeの場合、w付きのAPIやリテラル文字列の前にLを付けたりと、気持ち悪いので
とか、
>Unicode、マルチバイト文字のいずれでもコンパイルできるようにする、t付きのマクロも
とかが、まさに、その危険を避けるための手順。

Windowsバージョンが変わると動作しなかったり動作異常を引き起こしたりしてユーザが苦労するソフトを作る茨の道へまっしぐらだぞ、それ。
637631:2012/11/03(土) 23:32:07.17
>>636
分かりました。
w付きAPIやL付きリテラル文字のほうがまだマシなので、
Unicodeが書くことにします。

ありがとうございました。
638デフォルトの名無しさん:2012/11/03(土) 23:43:01.63
まあ、長く使う可能性がなくて今だけ動けば充分、
今後の再利用の可能性も無い。

という条件だったら、移植性とか互換性を考える必要は無い。
639デフォルトの名無しさん:2012/11/04(日) 00:02:34.05
初歩の第一歩な質問で恐縮ですが、お助け下さい。
メッセージボックスが出ません・・・
 MessageBox(NULL,"Hello,world!","Foo", MB_OK);
とすると、NULLとMB_OKが「定義されていない識別子」でコンパイルエラーとなります。
どうすれば解決できますか。

C++でコンソールアプリケーションはゴリゴリ書けますが
Windowsフォームアプリケーションは今日始めたばかりです。
環境はVisualC++ 2010 Express、Windows7 64bitです
640デフォルトの名無しさん:2012/11/04(日) 00:05:36.09
C++/CLIに手を出すのはやめろ
641639:2012/11/04(日) 00:13:08.19
>>640
Windowsアプリを作りたいだけなので、他に良い手段あればそれにしようと思います。
おすすめあればご教示頂けませんか。
C++しか知りませんが、必要とあれば他の言語も覚えます。
スレチでしたら誘導頂けると有り難く・・・
642デフォルトの名無しさん:2012/11/04(日) 00:18:02.99
win32apiゴリゴリしてもいいけど
フォーム使おうとしてC++/CLIはありえん
C#覚えて使った方がよっぽどいい
643デフォルトの名無しさん:2012/11/04(日) 08:15:00.90
C++/CLIってそんなにいけないものなの?
C++/CLIでフォーム作って処理は全部C++&APIで書いているけど
画面周りだけならそんなに使い勝手悪くないよ
644デフォルトの名無しさん:2012/11/04(日) 11:00:12.13
まあそれしか知らないならそれでもいいよ
645デフォルトの名無しさん:2012/11/04(日) 11:44:39.43
>画面周りだけならそんなに使い勝手悪くないよ

C# で同じ処理を書いた後に同じことを言えるかというと。。。

言語として悪くはないと思うけど、C# と同じことを出来るようにするためにメンドくさくなってるなら、
初めから C# で書いた方が色々と素直なので、自分は C# で書くことの方が多い。
自分は C++ 好きだから、最初は C++/CLI で書いてたんだけどね。

で、後学のために、いろいろなことを知ってる >>644 さんに問題点をご教示いただきたいなぁ。
646デフォルトの名無しさん:2012/11/04(日) 17:49:20.04
DLLで異種言語結合しなければならないならC++/CLIもあるかもしれないけど。

しかし、GUI部分はC#、カーネル部分はC++、でファイルを通してデータの
受け渡しができるならGUIにはC#を使う。
647デフォルトの名無しさん:2012/11/05(月) 11:15:48.38
1、リストボックスにflvのドラッグドロップしたファイル名を表示 クリアー
2、ボタンを押したらファイルを一つずつ指定のアプリで開く
3、開いたアプリにキー操作を送る
4、CPU使用率で2の動作を連続してできるようにする

何とか1はクリアーしました。2のリストボックスに表示された拡張子がflvの
ファイルを開くというので止まってます。

理想は、リストボックスに表示されてる複数のファイルを関連付けされてる
アプリで開きキー操作を送ることです。ヒントください。
648デフォルトの名無しさん:2012/11/05(月) 12:03:46.49
>リストボックスに表示されてる複数のファイルを関連付けされてる
アプリで開きキー操作を送ること

複数選択した項目を取りだす方法はわかってるの?
関連付けされたアプリを起動する方法がわからないの?
開いたアプリにキー操作を送る方法がわからないの?

どれよ
649デフォルトの名無しさん:2012/11/05(月) 12:13:16.29
>>648
全部わかりません。
そもそもなんだけどリストボックスにファイル名を表示することもあってるかどうか・・・

リストボックスに表示されてるflvファイルを順に開きキー操作を送るというプログラムなんだけど

1、ボタンを押しリストボックスのファイル開きキー操作送る
2、CPU使用率を確認し1の動作をする
3、リストボックス表示のファイル全てを1、2の動作で終了させる
650デフォルトの名無しさん:2012/11/05(月) 15:51:23.67
>>649
Win32APIの範囲になってしまってるよ
とりあえずShellExecuteで関連付けを使用したオープンができる
後はあっちで聞いた方がいい
651デフォルトの名無しさん:2012/11/05(月) 15:58:17.05
一個ずつ解決した方がよさげ。
答える方も個別なら回答しやすい部分もあるだろうし。
652デフォルトの名無しさん:2012/11/05(月) 17:30:45.15
>>650
了解
移動します
653デフォルトの名無しさん:2012/11/07(水) 20:47:24.49
wstring で a = L"3A5f"; みたいな文字列を
uint とか ulong に変換する関数はありますか?
654デフォルトの名無しさん:2012/11/07(水) 21:02:06.55
unsigned long h;
wistringstream w(a);
w >> hex >> h;
655デフォルトの名無しさん:2012/11/07(水) 22:53:54.01
>>654
ありがとうございます!!!
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

と、なるそうなんですが、何がおかしいのでしょうか? 教えて下さい。
657デフォルトの名無しさん:2012/11/07(水) 23:50:43.64
ttp://ideone.com/WGqtfs
別にならんが
4行目ってどこだよ
658デフォルトの名無しさん:2012/11/08(木) 00:11:25.16
>>656
でコンパイルエラーになったときのメッセージを含めてそのまま貼って
659デフォルトの名無しさん:2012/11/08(木) 00:45:40.01
>>658

Run-Time Check Failure #3 - The variable'x' is being used
Without being initialised.
(Press Retry to debug the application)

とでます
660デフォルトの名無しさん:2012/11/08(木) 00:51:53.90
そのまんまの意味だろ…
661デフォルトの名無しさん:2012/11/08(木) 01:32:02.52
>初期化されていないローカル変数 'x' が使用されます

printf("%d\n", x); /* xの値は不明*/

意図してやっているんだから、それで良いんじゃない?
それでコンパイルが通らないなら、nt x=750; とかする
662デフォルトの名無しさん:2012/11/08(木) 01:34:29.64
コンパイルエラーじゃなくてランタイムエラーだと思うの
663デフォルトの名無しさん:2012/11/08(木) 02:08:15.23
どうして750になるんだ?
どういう値になるか不明なんじゃないの?
664デフォルトの名無しさん:2012/11/08(木) 02:14:03.19
その古い本とやらには不定値になるって書いてるんじゃないか?
ただ例として出しただけで
665デフォルトの名無しさん:2012/11/08(木) 03:42:24.83
その本に載せるためにテストした結果が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,
どのように処理すればいいのでしょうか?
667デフォルトの名無しさん:2012/11/08(木) 20:57:57.06
宿題は宿題スレに
668666:2012/11/08(木) 21:05:41.81
番号がオーメンに・・・

>>667
学生ではないのですが、通信仕様を渡されてやっといてという事なので、一応宿題になるのですかね?
授業単元とかないので迷ったのですが、向こうで聞いてみます。
ありがとうございました。
669デフォルトの名無しさん:2012/11/08(木) 21:26:18.27
670デフォルトの名無しさん:2012/11/09(金) 13:01:20.92
ShellExecute(NULL, "open", "http://www11.plala.or.jp/studyhall/", NULL, NULL, SW_SHOW);

この文を消すもしくはコメントアウトすると

エラー1error LNK1123: COFF への変換中に障害が発生しました: ファイルが無効であるか、または壊れています。

というエラーがでます。なんで文を消すだけでエラーになるのかがわからない。
671デフォルトの名無しさん:2012/11/09(金) 13:30:26.31
今確認したらまったくなにも書いてない状態でのデバックでも
同じエラーでる・・・ファイルがひらけないってやつが
672デフォルトの名無しさん:2012/11/09(金) 14:17:31.56
失敗して終了してるつもりが
ウィンドウの見えない
ゾンビプロセスが残ってるんだろ
タスクマネージャで心当たりのあるexeを終了させてみれば桶
673デフォルトの名無しさん:2012/11/09(金) 15:07:26.48
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 スキップ ==========

こんなエラーがでる。まったくプログラムとか記載する前の状態です。
674デフォルトの名無しさん:2012/11/09(金) 16:14:53.20
path
675デフォルトの名無しさん:2012/11/09(金) 18:10:13.16
駄目だ・・・全てにおいてビルドできない
676デフォルトの名無しさん:2012/11/09(金) 19:12:54.11
再インストールしても駄目ってなんだよ・・・
俺のc++人生終わったかw

まだ入門レベルなのに('A`)
677デフォルトの名無しさん:2012/11/09(金) 19:16:23.80
1つ質問。
VC++って、1文字目が数値のプロジェクトって作れるんですか?
678デフォルトの名無しさん:2012/11/09(金) 19:32:15.69
>>676
OSの再インストール
679デフォルトの名無しさん:2012/11/15(木) 06:57:05.16
vc2008をコマンドラインで使ってるんですがc1074 idbはpdbファイルには無効な拡張子です
とでるんですがmain(){}だけのファイルをコンパイルしてもでます。
解決方法ありましたらおねがいします
680デフォルトの名無しさん:2012/11/15(木) 11:37:40.47
CString が含まれる定義体でメモリ確保したい場合はどうすればいいですか?

typedef struct _HOGE
{
 CString str1;
 CString str2;
 CString str3;
} HOGE;

HOGE *hoge = (HOGE*)HeapAlloc(GetProcessHeap(), 0, sizeof(HOGE));
681デフォルトの名無しさん:2012/11/15(木) 12:25:07.10
HOGE *hoge = new HOGE;
682デフォルトの名無しさん:2012/11/15(木) 12:41:15.23
構造体には実体じゃなくてスマポ突っ込めば?
683デフォルトの名無しさん:2012/11/15(木) 13:22:50.91
>>681
ありがと
684デフォルトの名無しさん:2012/11/19(月) 23:12:15.06
CString str[3];
685デフォルトの名無しさん:2012/11/27(火) 01:33:59.97
2010アカデミックってとっくのとうに販売終わってたんだな……
686デフォルトの名無しさん:2012/12/02(日) 14:07:19.69
VC++でフォームアプリケーションを作ろうと思い、プロジェクトを新規で作ったのですが
コードをそのまま(変更せず)にビルドしようとするとエラーが出ます
どうしたらいいですか?
687デフォルトの名無しさん:2012/12/02(日) 15:05:08.26
please show us error messages
688デフォルトの名無しさん:2012/12/05(水) 23:25:32.18
This problem not an error. It's my wife. hahaha
689デフォルトの名無しさん:2012/12/07(金) 01:28:27.62
リソースダイアログを使わずに、IEの表示部分(IEコンポーネント?)を特定のウィンドウの子コントロールとして追加したいです。
が、検索してみるとリソースダイアログ上で張り付けたコントロールの取得方法ばかり見つかり、結局方法が分かりませんでした…。

コモンコントロール(EditとかTreeViewとか)と同じような感じで使用したいだけなのですが、
どのようにすると可能でしょうか。

Doc/Viewの分離はしておらず、CHtmlViewは利用できませんでした。
comでIWebBrowser2をCoCreateInstanceしてみた所、成功してはいたようだったのですが
HWNDの値の取得もCreateWindowもしておらず、どのようにサイズ変更すればよいのかなど分かりませんでした。

技術的な面では、Vista以降あたりで動作してくれればよいと考えております。
ご助力お願いいたします。
690デフォルトの名無しさん:2012/12/07(金) 06:31:51.54
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の部分は不要で、
数値だけ取得して、ソケット通信で別プログラムに渡せば実現可能だと
考えていますが、サンプルを眺めてもどこをどういじればいいのか分からない状態です。
692デフォルトの名無しさん:2012/12/11(火) 16:13:08.23
サンプル見てもわかりませんの人に
ちょちょいっと教えてどうにかなるとはとてもじゃないが思えないんだが
なのでこんな場所ではなく、まともな人に対価を支払って教えてもらうのが一番正しい選択だと思いました。
693デフォルトの名無しさん:2012/12/14(金) 21:45:02.01
コンストラクタでエラーをNULLで返したいのですが
戻り値を指定出来ません
例外をださずにNULLを返すにはどうすればいいのでしょう?
694デフォルトの名無しさん:2012/12/14(金) 22:00:46.70
失敗するような処理は、別のメンバ関数などに外だし?する。
695デフォルトの名無しさん:2012/12/19(水) 20:58:29.02
中だし派だけどどうしたらよいですか
696デフォルトの名無しさん:2012/12/19(水) 21:04:56.22
ゴムでも付ければ?
697デフォルトの名無しさん:2012/12/20(木) 10:41:23.77
俺は昆布だしだな
698デフォルトの名無しさん:2012/12/20(木) 11:12:49.54
かつお風味の
699教えてちゃん:2012/12/20(木) 12:45:14.11
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 );



よろしくおねがいします
700デフォルトの名無しさん:2012/12/20(木) 12:59:36.97
普通にパイプには使えないだけなんでしょう
701699:2012/12/20(木) 13:03:23.31
>>700
パイプはタイムアウト設定できないんですか?
702699:2012/12/20(木) 13:47:31.72
情報すくないながら、できないようなこと書いてる人がいました。
とりあえずあきらめます。

http://stackoverflow.com/questions/13767989/named-pipe-reading-timeout
703デフォルトの名無しさん:2012/12/21(金) 02:27:00.96
Win32APIのGetOpenFileNameをコールするとVC++2008EEで
「Win32スレッド」というスレッドが3つ立ち上がり、
ダイアログを閉じた後でもそのまま居残り続けます。

何なんすかこれ?
704デフォルトの名無しさん:2012/12/21(金) 02:31:06.88
適当にコールスタック見ればわかるのでは?
705デフォルトの名無しさん:2012/12/22(土) 21:22:36.15
>>703
気にする必要なし
706703:2012/12/22(土) 21:37:31.37
>>704
オープンダイアログが開くところでブレークかけてコールスタック見てみましたが、
GetOpenFileNameをコールしている自分の関数より上のものは見られませんでした。

>>705
了解です!
707デフォルトの名無しさん:2012/12/25(火) 23:56:48.48
.hと.hppの違いは何でしょうか
708デフォルトの名無しさん:2012/12/25(火) 23:58:29.98
h->cのヘッダファイル hpp->cppのヘッダファイル
709デフォルトの名無しさん:2012/12/26(水) 00:13:13.78
確かにそうなんですけども、拡張子の表記以上の違いはないのでしょうか
.hでも.hppでも動作に違いが無いように思います
単にコンパイラがC++だから両方ともC++としてコンパイルされているということでしょうか
710デフォルトの名無しさん:2012/12/26(水) 00:45:27.63
hpp は C++ のテンプレートとかを使用していてコードをヘッダファイルに書かなければならない場合に
「使われることもある」拡張子じゃなかった?

C++ でも普通のヘッダファイルは .h だろ。
711デフォルトの名無しさん:2012/12/26(水) 10:32:52.59
C++は
#include <cstdio>
とか
#include <strstream>
とか
.h
無いのが普通
712デフォルトの名無しさん:2012/12/26(水) 11:27:55.25
別に拡張子なんてただの決めごとで、動作に違いなんて出るわけない
713デフォルトの名無しさん:2012/12/26(水) 22:40:44.84
トップウィンドウに対して SetWindowSubclass や SetWindowLongPtr でサブクラス化する場合に多重にサブクラス化するとエラーになってしまうので、既にサブクラス化済みかを判定するにはどうしたら良いですか?
714デフォルトの名無しさん:2012/12/26(水) 22:43:10.91
トップウィンドウに対して SetWindowSubclass や SetWindowLongPtr でサブクラス化する場合に多重にサブクラス化するとエラーになってしまうので、既にサブクラス化済みかを判定するにはどうしたら良いですか?
715デフォルトの名無しさん:2012/12/27(木) 04:12:25.92
GetWindowLongPtrでDefaultProcじゃなければでいいんちゃう?
716デフォルトの名無しさん:2012/12/27(木) 08:09:17.01
>>715
すみません、説明が抜けていました...別プロセスのウィンドウがサブクラス化されているか判定したいのです。
717デフォルトの名無しさん:2012/12/27(木) 17:54:51.80
>712
そう思い、VC++でソースファイル名をxxx.cで書いてコンパイルエラーがorz
718デフォルトの名無しさん:2012/12/31(月) 10:24:56.51
includeなら変わらん。
コンパイルオプション付けるくらいなら拡張子替えるけどな。
719デフォルトの名無しさん:2013/01/07(月) 20:07:13.66
>>716
多重にサブクラス化して
(そのサブクラス化をやめようとする以外の状況で)
どういうエラーになるのか分からないけど、
GetClassInfoExで元々のウィンドウプロシージャが取得できるかもしれない。
別プロセスのウィンドウに対してGetClassInfoExでそれが取得できるのか知らないけど。
720デフォルトの名無しさん:2013/01/07(月) 20:09:54.18
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軸の範囲を決めて使うことって可能でしょうか?
よろしくお願いします
721デフォルトの名無しさん:2013/01/12(土) 15:19:31.20
あるクラスの中でRegisterClassEx関数とCreateWindowEx関数を別個のメソッドの内部で呼び出すとCreateWindowEx関数がエラーを出す
GetLastError関数によるとエラーは1407(Cannot find window class)とのこと
一方で、一つのメソッドの中で順に呼び出すとエラーなく実行された
MSDNによるとCreateWindowEx関数が失敗する原因は、
?パラメータに無効な値が指定された。
?システムクラスを登録したモジュールが別のモジュールである。
?WH_CBT フックがインストールされており、失敗コードを返した。
?WM_CREATE または WM_NCCREATE のウィンドウプロシージャが失敗した。
の四つであるそうで、二つ目の「?システムクラスを登録したモジュールが別のモジュールである。」の項にあることが原因であるように思われます

つきましては、質問なのですが、この「?システムクラスを登録したモジュールが別のモジュールである。」というのはどういう意味なのか(モジュールとは一体何のことを指して言っているのか)、
二つの関数を別のメソッドで呼び出すことはできないのかについて、どなたかご教示頂けないでしょうか
722デフォルトの名無しさん:2013/01/12(土) 17:33:46.73
hInstanceの値が二つの関数で一致してないと言う意味じゃないかな
723デフォルトの名無しさん:2013/01/12(土) 23:59:18.83
>>722
ありがとうございます!
このレスで自らの過ちが明確にわかりました。自分がまぬけでした
RegisterClassEx関数を呼び出すメソッドの方に、「this->hInstance = hInstance;」と書き加えたところ正常に動作しました
724デフォルトの名無しさん:2013/01/16(水) 15:23:13.91
Web browserで広告クリックすると強制的にIEで開いてしまう
のですが、強制的にweb browserの中で開く方法を教えてください
VisualBasic2010
725デフォルトの名無しさん:2013/01/20(日) 18:58:09.52
template関数の実装はヘッダ内部で書かないとリンクエラーを起こすようなのですがどうしてなのでしょうか
googleで検索してみたもののはっきりと説明のされたサイトが見つかりません
726デフォルトの名無しさん:2013/01/21(月) 00:05:24.85
ヘッダに全部書いとかないと
たとえばstd::vector<int>とかしたときに定義が作成できないから
727デフォルトの名無しさん:2013/01/21(月) 00:19:29.40
別にヘッダに書かなくても、関数の具体化の宣言をテンプレート関数のある翻訳単位に
まとめておけばいいんだっけ?
それが嫌なら全部ヘッダに書け、と
728デフォルトの名無しさん:2013/01/21(月) 00:20:49.28
>リンクエラー
729デフォルトの名無しさん:2013/01/21(月) 15:49:20.79
ソースファイルを複数に分けて作業するときに変数の宣言や受け渡しを分かりやすく説明してるサイトや書籍はありますか?
730デフォルトの名無しさん:2013/01/21(月) 15:51:14.27
ここで聞けばいいよ
731デフォルトの名無しさん:2013/01/21(月) 16:02:15.64
何かを作っているってわけではないのですが
ソースファイルを一つですることに慣れてしまってコンパイルに掛かる時間だったり公開するときに恥ずかしかったりで分けてできるようになりたいたいと思ったのですが今までと勝手が違ったりで
732デフォルトの名無しさん:2013/01/21(月) 16:41:12.37
>>729
C言語入門書の次に読む本

みたいなタイトルの本には、それっぽいのが載ってた

まあ、分割コンパイルでググれば良いと思う
733デフォルトの名無しさん:2013/01/21(月) 16:55:07.48
丁度自分の欲しそうな本だったので早速ぽちりました
ありがとうございます!
734デフォルトの名無しさん:2013/01/22(火) 07:29:01.77
リンカの概念は難しいよな
今でもテンプレートとか使うとわかんなくなる
735デフォルトの名無しさん:2013/01/24(木) 01:54:05.47
visual c++ 2008にでopencvを使ってプログラムを組み
while文を終了した時にcmd.exeが終了しません。
コマンドプロンプトのアプリケーションの終了でも
プロセスの終了でも終了できず、パソコンの電源ボタンを
押すしか対処できません。
ビルドも正常にできて、正常に実行されますが、
終了がうまくいきません、どうしたらいいのでしょうか?
736デフォルトの名無しさん:2013/01/24(木) 02:37:22.00
atexit()すればいいんじゃないかな
737デフォルトの名無しさん:2013/01/24(木) 14:49:38.58
CPUは正常に暴走しています
738デフォルトの名無しさん:2013/01/27(日) 00:17:51.13
propertyキーワードって何をしているんでしょうか?
また使う意味は?
739デフォルトの名無しさん:2013/01/27(日) 00:48:10.49
740デフォルトの名無しさん:2013/01/27(日) 01:59:20.84
>>739
つまり
propertyキーワードの中にgetとsetの定義がされてあって
入力のときはset,出力のときはgetが自動で使われるということ?
741デフォルトの名無しさん:2013/01/27(日) 12:28:37.67
まあそんな感じ
C#の機能の一つだったものを、VC++独自の拡張として導入したもの
「C# property」で検索すれば出てくる
742デフォルトの名無しさん:2013/01/30(水) 11:55:40.70
>>735
デバッガ上ではどうなるの?
743デフォルトの名無しさん:2013/02/02(土) 21:29:21.69
cURLとlibcurlのライブラリを使うにはプロジェクトのプロパティにどう設定すればいいのでしょうか?
ファイルはlibcurl-7.19.3-win32-ssl-msvc.zipとcurl-7.28.1.zipをDLしました。
環境はwindows7 64bit、Visual C++ 2010 Expressで、WIN32コンソールアプリです。
744デフォルトの名無しさん:2013/02/03(日) 11:24:20.61
>>743
普通にincludeとlibの設定すれば行けると思うけど。
プロパティで言えば
VC++ディレクトリのライブラリティレクトリ、
C/C++の追加のインクルードディレクトリ、
リンカー 入力 の追加の依存ファイル、
の3つかな。
DLL使うならそれなりの設定やコピーもね。
745743:2013/02/03(日) 15:27:59.79
>>744
リンカー 入力 の追加の依存ファイルを設定したら動きました。
ありがとうございました。
746デフォルトの名無しさん:2013/02/04(月) 21:50:40.98
VC++を使ってマウスショートカット的なアプリケーションを作りたいのですが、
特定のアプリケーションごとに動作を切り替えるような処理を作るのに
参考になるようなページはありますか?

もしくはこういうワードで調べると出てくる、といったものでも結構です。
ご存知のかたお願いします。
747デフォルトの名無しさん:2013/02/04(月) 21:55:35.51
GetForgroundWindow
748デフォルトの名無しさん:2013/02/05(火) 14:59:36.63
A.hファイルで構造体を宣言し、B.cppで実体宣言してるはずなんだけど
C.cppでメンバに値を代入すると波線が引かれ定義されていないと言われる
でもそこで右クリックから宣言へ移動や定義へ移動をするとB.cppの実体宣言したところに飛ばされる

いろいろ試行錯誤したけどついに意味がわからなくなりました
どういうことなんでしょうか VC++です
749デフォルトの名無しさん:2013/02/05(火) 15:04:27.75
C.cppでA.hをincludeしてないんだろう
750デフォルトの名無しさん:2013/02/05(火) 15:32:23.37
B.cppの実体はC.cpp上、もしくはincludeファイル上でextern宣言されてる?
751デフォルトの名無しさん:2013/02/05(火) 16:04:18.04
ただのインクルードしわすれだろ
752デフォルトの名無しさん:2013/02/05(火) 22:05:19.20
ちなみに、ビルドしてエラーになる?
インテリセンスでそういうのなら、正常な状態でもたまになったような。
753デフォルトの名無しさん:2013/02/05(火) 22:15:31.78
試しにファイル名変えたら開けませんって返ってくるから
インクルードは大丈夫なはず

ファイル分割前は
typedef struct tagABC
{
typedef struct tagXYZ
{
inti;
doublej;
}XYZ;
XYZ xyz[10];
}ABC;
ABC abc[5];

abc[0].xyz[0].i=1;

みたいに書いてたんだけど (すいませんレス分けます)
754デフォルトの名無しさん:2013/02/05(火) 22:17:43.40
これを分割しようとして
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と同じようにしようとしたらエラー吐かれる
755デフォルトの名無しさん:2013/02/05(火) 22:29:01.41
>>750 を読んで理解してる?
756デフォルトの名無しさん:2013/02/05(火) 22:32:19.06
>>754
A.h内でextern ABC abc[5];
A.hをB.cpp C.cppでインクルード
使用したい.cppではextern無しでABC abc[5];
757デフォルトの名無しさん:2013/02/05(火) 22:45:03.04
すみませんでした
なんか焦ってて飛んでました
わざわざtodoまで書いて下さってありがとうございます
758デフォルトの名無しさん:2013/02/06(水) 00:09:52.82
みんな優しくてよかったね
759デフォルトの名無しさん:2013/02/06(水) 17:07:25.80
同名関数の引数の型違いのつもりで
bool Hoge(bool);
int Hoge(int);
を定義したのですが
コンパイルしようとすると
区別出来ないと言われてるみたいです
どうすれば回避できますか?
760デフォルトの名無しさん:2013/02/06(水) 17:08:24.49
間違った
int Hoge(bool);
int Hoge(int);
です
761デフォルトの名無しさん:2013/02/06(水) 17:24:16.72
762デフォルトの名無しさん:2013/02/06(水) 17:25:53.78
関数名を違うものにする
763デフォルトの名無しさん:2013/02/06(水) 17:26:49.76
BOOLはダメだよ、BOOLそのものはintのtypedef
764デフォルトの名無しさん:2013/02/06(水) 19:24:08.77
bool と BOOL まちがえてたのか
765デフォルトの名無しさん:2013/02/06(水) 19:49:50.78
>>747
ありがとうございました。
Express使おうと思ってますのでWTLでも入れてみようかと思ってるんですが
MFCじゃなくてもこの関数って使えますか
766デフォルトの名無しさん:2013/02/07(木) 08:14:46.38
>>761-764
まさにそれです
ありがとうございますた
767デフォルトの名無しさん:2013/02/07(木) 10:23:35.03
こんないいスレだったのか
768デフォルトの名無しさん:2013/02/07(木) 10:46:05.55
どうせ自演なんだし
マスゴミのやらせや印象操作と同じで
捏造やりたい放題
769デフォルトの名無しさん:2013/02/07(木) 11:03:41.06
自演、自演ってうるさい。おまえこそ常習犯だろ。
ふつうは、自演なんていう発想をしない
770デフォルトの名無しさん:2013/02/07(木) 11:04:20.70
ブラウザ
771デフォルトの名無しさん:2013/02/07(木) 19:30:51.75
最近 急に大量のpdbを開くようになっちゃったんだけど
そのせいでデバッグが始まるのに10秒くらいかかる

ntdllのpdbなんていらないよー
どうしたらいいの
772デフォルトの名無しさん:2013/02/08(金) 12:29:12.61
オプション→デバッグ→シンボルのリストのチェックを外す
773デフォルトの名無しさん:2013/02/09(土) 11:05:32.28
ソースの総行数知りたいです
774デフォルトの名無しさん:2013/02/09(土) 16:23:20.51
VS のcl で定義済みマクロ一覧を表示するにはどうしたら良いでしょうか?
gcc -E -dM -x c++ -std=c++11 /dev/null | sort
みたいなのと同じことができればOKです
cl /E までは同じようなオプションがあるんだけど、 -dM 相当のオプションってどれなんでしょうか?
cl /? 見てる限りだとわからないです・・
775デフォルトの名無しさん:2013/02/10(日) 02:57:35.94
ヘルプ。
途方もないコードのデバック途中で寝たくなったときってどうしてる?
今、言ったん寝て昼から同じ所スタートでデバックし直したいんだけど…
776デフォルトの名無しさん:2013/02/10(日) 10:31:57.09
>>775
状況が許されるなら寝ればいい。頭が硬くなってるならそれ以上のものはない。
許されないなら、エナジードリンク系でものみながらしなない程度に頑張れ。
777デフォルトの名無しさん:2013/02/10(日) 11:33:41.86
起きる手段があるなら20分くらいの仮眠が効く
778デフォルトの名無しさん:2013/02/10(日) 12:20:45.97
チームでやってるなら、リーダーに要請して順に1時間くらいずつ仮眠を取るのが最善なんだけどね。
疲れてるときに単純にひとりで寝た日には起きたときにはすべてが終わってたりするから怖いよな。。
779デフォルトの名無しさん:2013/02/10(日) 12:37:56.25
1時間だと脳が睡眠体勢に入ってしまうので、、、寝るための準備時間というのなら
そんなもんかなあ。
780デフォルトの名無しさん:2013/02/11(月) 19:53:41.10
>>772
ありがとう!設定をいじってみる
781デフォルトの名無しさん:2013/03/03(日) 11:01:21.58
今まで初期状態でメインプロシージャまでやってくれる形でやってたけど
自分の型みたいなのが出来たから空のプロジェクトで作るようになった

今までに作ったソースを全て自分の型Verに書き換えないと
なんか仕事やり残した感があって気持ち悪い

他の人はこういう経験ある?
あるけど書き換えずに新しいのだけ自分の型Verにしてる?
782デフォルトの名無しさん:2013/03/03(日) 11:15:36.09
気になったやつだけやってる
783デフォルトの名無しさん:2013/03/03(日) 11:25:21.95
プロとしてなら、完成品に対しては出来ない。品質以前に必要な手順がありすぎだし。
趣味としてなら、次に必要になったときに最初から作り直す。
784デフォルトの名無しさん:2013/03/03(日) 13:04:30.30
>>781
分かる分かるw

自分の場合は、新しく作るときに適用するようにして、
過去のは基本的にいじらないなぁ。

でも、新しく作る度に洗練されていく感があって楽しいよ。
785デフォルトの名無しさん:2013/03/03(日) 13:05:00.80
他の人も経験あるんですねありがとうございました
786デフォルトの名無しさん:2013/03/03(日) 21:10:13.68
サブクラス化されたプロシージャ外の変数へアクセスする方法は
ユーザー定義のメッセージを使用してアドレスを渡すくらいしかないですか?
サブクラス化する時に一緒に渡せると楽なのですが
787デフォルトの名無しさん:2013/03/03(日) 21:22:09.76
グローバル変数
788デフォルトの名無しさん:2013/03/03(日) 21:35:51.87
いっぱいありすぎて困る
メッセージの方法知ってるならそれ使えばいい。どんな方法でも渡せればいいんだから多少効率悪くても気にするなって
データ量や用途によって使い分けるものだから、それでも気になるならマルチしてないでぐぐって解決しとけ
789デフォルトの名無しさん:2013/03/03(日) 21:36:32.22
SetWindowSubclass(hWnd, Proc, id, data);
RemoveWindowSubclass(hWnd, Proc, id);
DefSubclassProc(hWnd, Msg, wParam, lParam);
でいいんじゃね
790デフォルトの名無しさん:2013/03/03(日) 21:40:20.39
マルチ見当たらないぞ
レス付きにくくさせるために言ってるのか?
791デフォルトの名無しさん:2013/03/03(日) 21:47:51.70
VIPでやってたんだよ
792デフォルトの名無しさん:2013/03/03(日) 21:53:14.62
URL無しって事は後はわかるな
793デフォルトの名無しさん:2013/03/03(日) 23:25:29.88
>>789
ありがとうございます
dataとして一緒に渡せました
794デフォルトの名無しさん:2013/03/10(日) 16:49:11.64
プログラミング初めて間もない者です
2010のCLRのWindowsフォームアプリで

一問一答形式の問題を作ってるんですが
回答を入力した後、正解かどうか判別して結果表示するプログラムはどうすれば作れますか?

問題文のLabelに文を入れ、回答欄と結果表示用のTextBoxとLabelを置くところまではできたんですが
795デフォルトの名無しさん:2013/03/10(日) 16:50:50.23
C#じゃいかんの?
796デフォルトの名無しさん:2013/03/10(日) 17:03:12.39
VC++のスレで何言ってんの?
797デフォルトの名無しさん:2013/03/10(日) 17:05:18.71
だからいかんのか聞いておる
798>>794:2013/03/10(日) 17:11:23.86
>>795>>797
VisualC#最適ってことはよく聞くけど、実感としてにどれくらい便利か分からない(理解できる知識もない)から
C#を独自に学ぶべきか判断できない感じです
799デフォルトの名無しさん:2013/03/10(日) 17:41:36.81
>2010のCLRのWindowsフォームアプリ
これをそのレベルから始めるなら、C#で同じことやるやり方覚えてから
C++に戻った方が進みが早い気はする・・・

回答したらボタンかなんか押して、そのタイミングで判定するんじゃないの?
ボタン並べてダブルクリックすれば、メソッドできるからそこでやればいいと思うよ。
800デフォルトの名無しさん:2013/03/10(日) 21:47:51.94
たとえば、カンマ区切りのテキストファイルかなにか用意しといて(こんなの)
1,質問1,選択肢a,選択肢b,選択肢c,答えb<CR+LF>
2,質問2,選択肢d,選択肢e,選択肢f,答えd<CR+LF>
3,質問3,選択肢g,選択肢h,選択肢i,答えi<CR+LF>

テーブルに突っ込んで、順次それ表示して「答え合わせ」ボタン押したら答えと比較して合否表示
する感じでいいんじゃねーの?まずは
801デフォルトの名無しさん:2013/03/10(日) 22:09:29.01
ラベルに文字列を表示する方法
TextBoxに文字列を表示する方法
フォームに答えを選ぶボタンをおいて、そのボタンが押されたかどうかを判別する方法
まずはこの3つができるようにならないと。
802デフォルトの名無しさん:2013/03/10(日) 22:34:38.16
>>798
言語問わないならどれで書いてもいい、むしろ求める方向(言語学習したいのか、ものが出来上がればいいのか)
にしたがえばいいのだよ
803デフォルトの名無しさん:2013/03/11(月) 18:12:52.07
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です
804デフォルトの名無しさん:2013/03/11(月) 18:15:54.47
4.DXライブラリを使用するためのプロジェクトの設定を行う
を全部行ってないから
805デフォルトの名無しさん:2013/03/11(月) 18:34:30.68
>>803
サイト見てみたけど、そのエラーは
↓がうまくできてない
E 『追加のインクルードディレクトリ』の項目にDXライブラリのパッケージ内に入っている
        『プロジェクトに追加すべきファイル_VC用』フォルダのパスを入力してから、
         再度ダイアログ右下にある『適用』ボタンを押します。
    ( パスの例→  c:\DxLib_VC\プロジェクトに追加すべきファイル_VC用
      なお、DXライブラリをマイドキュメントフォルダに入れるとこれらのパス指定が面倒になりますので
      DXライブラリはなるべく浅いフォルダに入れておくことをお勧めします )
806デフォルトの名無しさん:2013/03/11(月) 22:33:25.37
HelloWorldできた!!!
807デフォルトの名無しさん:2013/03/11(月) 23:16:04.13
おめでとう!!
808デフォルトの名無しさん:2013/03/11(月) 23:45:42.18
ありがとう!!!!!
809デフォルトの名無しさん:2013/03/12(火) 00:28:48.97
セキュアな関数について質問なのですが
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」の無い関数を使ったほうがいいのでしょうか?
810デフォルトの名無しさん:2013/03/12(火) 00:40:22.08
nはbuf1のサイズを指定する。
それ以下でも動くけど使い方としては間違っている。
811デフォルトの名無しさん:2013/03/12(火) 00:49:44.72
代入先のバッファーサイズ指定だから、質問的に根本的に理解できてないと思う
中途半端に_sを使うぐらいなら、警告無視して従来のでやってた方がいいと思うよ
812809: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引数の計算式もあってるか不安になりますし。
でもやっぱり下では何か問題があるのでしょうか?
813デフォルトの名無しさん:2013/03/12(火) 02:05:58.43
ふええ…変数こわいよぉ…
814デフォルトの名無しさん:2013/03/12(火) 03:35:05.30
無駄に思えるも何も、_sを使う意味合いを根本的に間違えてるから、_sを使わなくていいと思うよ
815デフォルトの名無しさん:2013/03/12(火) 08:17:17.77
>>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);
これなら正しい
816デフォルトの名無しさん:2013/03/12(火) 09:36:09.64
charが1byteかどうか分からないから、つかうならsizeof(char)で割っておくべき
817デフォルトの名無しさん:2013/03/12(火) 09:43:16.76
charは1byteだと規格で決まっています
818デフォルトの名無しさん:2013/03/12(火) 09:58:41.64
そういう思い込みはドツボることがあるからやめたほうがいいと思うよ
819デフォルトの名無しさん:2013/03/12(火) 10:11:11.76
charは1バイトだろ
1バイトの幅が8ビットとは限らないけど。
820デフォルトの名無しさん:2013/03/12(火) 12:07:26.45
BYTE型はいつでも1バイトだと思ってたことがありました…
821809:2013/03/12(火) 12:12:41.81
>>814
少し調べ直しました。意図しない領域への書き込みを防ぐためですよね。
書き込み先のサイズが書き込むサイズより大きいのが明らかなら
この問題は起こりえないので_s無しの関数を使った"方がいい"、と解釈してもいいですか?
警告を消すためだけに_s付きの関数を使ってその上書き込み先のサイズの計算を大着するのはやっぱ言語道断なんでしょうか・・・

>>815
それは考えてなかったです。
確かに計算したアドレスが有効と断定するのは良くないですよね。
ただ実際有効で無いと困るので3行目と4行目の間に
if (buf1 - buf < 3 ) return 0;
を挿入しようと思います。これなら問題無い・・・ですよね?
822デフォルトの名無しさん:2013/03/12(火) 12:17:04.95
適当なことやるくらいなら
_CRT_SECURE_NO_WARNINGS
定義した方がまだまし。
823809:2013/03/12(火) 12:53:07.25
>>822
そういう風に警告を消せる事は知りませんでした。
これを定義して書き込み先のサイズが大きいところは_s無しの関数を使うことにします。

みなさんありがとうございました。
824デフォルトの名無しさん:2013/03/12(火) 12:53:45.87
>>822だな。仕事なら中途半端に使われると逆に困る。趣味なら_sは要らないと思う

>>812の例なら
strchrでNULLが返ったときのチェック
buf[-1]やbuf[100]に書き込まないようにチェック
この2つのエラー処理をしておけばいいというか、_sを使うよりそうしといた方がいいし、
もっと言えばstrcpyやstrcpy_sなんて捨ててCStringA::Replace使った方がいいでしょ
825809:2013/03/13(水) 14:37:13.19
>>824
趣味です。
ありがとうございます、大変参考になります。
826デフォルトの名無しさん:2013/03/13(水) 17:50:33.34
CreateWindowExのdwStyleパラメータに、既存のウィンドウからGetWindowLongで取得した値を使うとエラーが出ます(87, パラメータが違います)
そもそもCreateWindowExで新しいウィンドウを作った直後にGetWindowLongでdwStyleを取得すると、最初に指定した値とは全然関係のない値が帰ってきていました
どうすればいいのでしょう
827デフォルトの名無しさん:2013/03/13(水) 22:23:30.13
>>826
ウィンドウのクラス名とスタイルの値をさらせ
828デフォルトの名無しさん:2013/03/14(木) 01:00:39.27
http://codepad.org/wt2IZYYA
明解C言語入門編では このコードに12と入力すると0 1 2 3・・・
と数字の間に間隔が空くはずなのですがコードを打ってデバッグしてみると間隔があきません。
01234・・・ という感じになってしまいます。
環境はVisual C++2010 Expressです。
何回も見なおしたのでコードの打ち間違いではありません。
どうすれば間隔が空くのでしょうか?
829デフォルトの名無しさん:2013/03/14(木) 01:08:14.94
830デフォルトの名無しさん:2013/03/14(木) 01:08:29.02
%d が
831デフォルトの名無しさん:2013/03/14(木) 01:08:41.44
printf("%d ",i++);
832830:2013/03/14(木) 01:10:31.16
すみません、間違えて送信してしまいました。
>>828
%d が数字部分だから
" %d"または "%d "のように前か後ろに空白を入れればよい
833デフォルトの名無しさん:2013/03/14(木) 07:26:52.38
>>832
ありがとうございます。
よーく見てみたら本には空白空いてました・・・
putcharが原因かと思ってたのにここだったとは
834デフォルトの名無しさん:2013/03/14(木) 16:45:08.73
本も読めないヴァカ
835デフォルトの名無しさん:2013/03/14(木) 20:38:03.86
何故急に煽ったしww
836デフォルトの名無しさん:2013/03/14(木) 23:25:31.85
>何回も見なおしたのでコードの打ち間違いではありません。
837デフォルトの名無しさん:2013/03/14(木) 23:29:31.57
>>836
まあええやん
838デフォルトの名無しさん:2013/03/14(木) 23:49:00.89
>>836
まぁまぁw
839デフォルトの名無しさん:2013/03/14(木) 23:55:08.40
理由がわからないのに、自分の間違いではないと確信する雑魚は死んだ方がいい。
840デフォルトの名無しさん:2013/03/15(金) 00:05:58.73
初心者スレで煽ってるヤツこそ。
841デフォルトの名無しさん:2013/03/15(金) 01:17:44.86
その本がどういう書き方してるのか知らないが
内容的にループと文字出力の極初期の基本的なサンプルなんだから動作内容の説明があるだろうに
全く理解せずただ漫然と入力して結果だけ確認しようとしてる姿勢には眉を顰めるな
842デフォルトの名無しさん:2013/03/15(金) 05:33:45.76
おまえらプログラム1つ書けない初心者のくせして厳しいな
843デフォルトの名無しさん:2013/03/15(金) 09:11:43.60
初心者が文法などより先に覚えなければいけない鉄則

・自分が間違っている可能性が一番高い
・自分は間違っていないという判断が間違っている可能性が一番高い
・自分は間違っていないという判断は間違っていないという判断が間違っている可能性が一番高い
844デフォルトの名無しさん:2013/03/15(金) 09:28:38.57
思い込みが一番危険
自分のコードを読み返すときは書いたことを忘れて
一旦頭を真っ白にしてから読むこと
845デフォルトの名無しさん:2013/03/15(金) 09:29:36.03
ここはごく数人のヘタレどもがチンシコする糞スレです
うまく答えられないときはエラそうになんだかんだいちゃもんつけてきます
看板に偽りスレなので素人が質問しても時間の無駄です
わかったら相手にせず黙って去りましょう
846デフォルトの名無しさん:2013/03/15(金) 22:07:33.54
このスレわかりやすいです。ありがとうございます。
847デフォルトの名無しさん:2013/03/15(金) 23:04:43.32
初心者が初心者に嘘を教えるスレです
848デフォルトの名無しさん:2013/03/16(土) 09:54:42.90
良く読み返してみると、「教える側も、勘違いしている部分」も、
ないとはいえないわな。
849デフォルトの名無しさん:2013/03/16(土) 10:46:12.68
それはある意味あって当たり前だろ。
意図してウソ教えるのとは違う。
850デフォルトの名無しさん:2013/03/16(土) 11:20:21.58
初心者が初心者に上級者のフリして教えてたら
それはうそと言って良い
851デフォルトの名無しさん:2013/03/16(土) 12:09:50.18
姉は精神障害者
852デフォルトの名無しさん:2013/03/16(土) 12:39:59.19
俺は統合失調症
853デフォルトの名無しさん:2013/03/16(土) 15:23:00.13
弟は知的障害者
854デフォルトの名無しさん:2013/03/16(土) 20:54:35.81
兄は松崎しげる
855デフォルトの名無しさん:2013/03/16(土) 20:56:33.91
妹はヤンキー
856デフォルトの名無しさん:2013/03/17(日) 23:06:50.03
父は腎不全
857デフォルトの名無しさん:2013/03/18(月) 00:49:12.01
御前等歯1級精神障害者
マジで何のつもり?
858デフォルトの名無しさん:2013/03/18(月) 08:39:59.40
#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 という結果になるのですが、
なぜ一時間ずれるのでしょう?
859デフォルトの名無しさん:2013/03/18(月) 09:49:21.61
普通はずれないと思うけどそれは謎だな
860デフォルトの名無しさん:2013/03/18(月) 10:28:57.20
サマータイムある場所?
861デフォルトの名無しさん:2013/03/18(月) 13:56:02.15
tm_isdstがクリアされてない。
862デフォルトの名無しさん:2013/03/18(月) 21:50:58.55
>>858
t.tm_mon を 7 とかにするとずれないね
863デフォルトの名無しさん:2013/03/19(火) 10:45:03.30
>7 とか
じゃなくて1から12までやってどれがずれてどれがずれないのよ。
って本人だよね?他にもずれる人いるの?
ずれてる人、PCの時刻設定でタイムゾーンどうなってる?
864デフォルトの名無しさん:2013/03/19(火) 11:29:18.27
>>861で解決でしょ。解決後にのこのこ出てきてボケる芸風?
865デフォルトの名無しさん:2013/03/19(火) 13:54:58.72
>>858
全部大文字で書け!
話はそれからだ。
866デフォルトの名無しさん:2013/03/19(火) 14:33:35.32
>>864
>>862はどうなんだ?
あと自分の環境でtm_isdstに何かセットして試してないだろ?
867デフォルトの名無しさん:2013/03/19(火) 14:51:39.61
時差9時\
868デフォルトの名無しさん:2013/03/19(火) 17:09:06.65
>>866
ずれる環境を用意できないゴミは参加資格なし。
869デフォルトの名無しさん:2013/03/19(火) 21:49:56.96
どうしてこう場外乱闘が好きなんだ。おまえら。
870デフォルトの名無しさん:2013/03/19(火) 21:51:38.82
>>858
Lと1の区別が付かないな。
大文字で書け。
871デフォルトの名無しさん:2013/03/19(火) 23:53:52.39
どんなフォント使ってんだw
872デフォルトの名無しさん:2013/03/20(水) 00:03:40.36
>>871
MS Pゴシック 12 pt
873デフォルトの名無しさん:2013/03/20(水) 13:08:26.88
アイコンをシステムトレイに格納する 方法をどなたかご教授いただけないでしょ うか? 使用環境はWindows7 HomePremium VC++2010 Express です。

d.hatena.ne.jp/peryaudo/20100512/1273671808 を参考にして書いてみましたが、 NOTIFYICONDATAが宣言されていな いと言われ、コンパイルが通りません でした。
874デフォルトの名無しさん:2013/03/20(水) 14:24:44.91
windows.hをincludeする前に、
#define WINVER 0x0501
とか入れるんじゃなかったっけ
875デフォルトの名無しさん:2013/03/20(水) 15:55:28.76
馬鹿には無理
876デフォルトの名無しさん:2013/03/20(水) 18:41:37.41
>>874
有難う御座います。自己解決しました。
877デフォルトの名無しさん:2013/03/20(水) 18:46:24.44
すげぇ・・・
878877:2013/03/20(水) 18:46:54.36
いや、自己解決だから違う理由かw
879デフォルトの名無しさん:2013/03/27(水) 21:40:36.36
基底クラスと派生クラス両方のコピーコンストラクタ、代入演算子を呼び出すにはどのようにすれば良いのでしょうか
880デフォルトの名無しさん:2013/03/27(水) 22:23:33.36
はよ
881デフォルトの名無しさん:2013/03/27(水) 22:31:38.82
>>879
thisを基底クラス型にキャスト
882デフォルトの名無しさん:2013/03/27(水) 23:16:03.19
ちょっと待て
何がやりたいんだ?
883デフォルトの名無しさん:2013/03/27(水) 23:31:25.22
>>881
やはりそうするしかないのでしょうか
コンストラクタやデストラクタは派生クラスの側で明示的に書かなくとも良い
884デフォルトの名無しさん:2013/03/27(水) 23:41:09.62
誤って書き込んでしまいました
コンストラクタやデストラクタは明示的に書かなくとも良いのにという思いです

>>883
今回やりたかったのは、参照カウントを持った基底クラスを継承することでコピーを管理するというものです
例えばLast()という関数で参照カウントが1であることを確認してからリソースを開放するなど
もちろん継承を使わなければ実装できないものではありませんが、クラス名の横にごにょごにょ書くだけで済むなら便利かなと考えたわけです
885デフォルトの名無しさん:2013/03/27(水) 23:45:37.12
derived_class::derived_class(const derived_class& d) : base_class(...)
{...}

base_class::operator=(value);
886デフォルトの名無しさん:2013/03/27(水) 23:47:59.38
>>884
派生クラスのコピーコンストラクタから、基底クラスのコピーコンストラクタを呼び出したいと言うこと?
887デフォルトの名無しさん:2013/03/28(木) 00:10:47.14
はよ
888デフォルトの名無しさん:2013/03/28(木) 00:19:04.01
>>886
そういうことです
勝手に呼ばれるものだと思っていたのですが、どうもそういう訳ではないようですね

>>885
これでうまくいきました
コピーコンストラクタでもこの書き方が出来たのは知りませんでした

レスありがとうございました
コンストラクタは何も書かなくとも自動的に呼ばれるのに対し、コピーコンストラクタは派生クラス側で明示的に呼び出してやる必要があるということのようです
やや不思議ではあります
>>884に書いたことはコピーや代入は使わずに適当にAddRef関数でも作っときます
889デフォルトの名無しさん:2013/03/28(木) 00:31:01.98
はよ
890デフォルトの名無しさん:2013/03/28(木) 00:31:28.73
なんかとんちんかんなこと書いてるな…
参照カウントの値だかポインタだかを渡さないといけないのでコピーやらはしなければなりません
まあ何でもいいですね、質問の本旨でもないですし
891デフォルトの名無しさん:2013/03/28(木) 00:34:20.72
はよ
892デフォルトの名無しさん:2013/03/28(木) 09:48:07.28
最高の頭脳はこんなところで油を売ってる暇はないし
暇があったとしてもとっくに他のコミュニティに移動してる

こんな匿名の叩き煽りが日常茶飯事で自分にメリットが薄いようなところは
最高の頭脳でなくともまともな人間でもさっさと去るよ

他にコミュニティがない10年前なら最高の頭脳もいたかも知れないが、
いつの間にかいなくなって今ではその幻想だけが残ってる

最高の頭脳持ってる奴は他のコミュニティに行っても入っていけるから困らなかっただろう
そしてそういったコミュニティで相手にされない奴が集まってるのが2ch
893デフォルトの名無しさん:2013/03/28(木) 10:10:45.28
>>888
コンストラクタで自動で呼ばれるのは、デフォルトコンストラクタのみだけどね。
デストラクタは自動で呼ばれるけど、これは唯一にしか存在しないからだね。
c++は基本的に、全て明示するのが基本で、例外的にいくつかの自動があると思った方が良いよ。
894デフォルトの名無しさん:2013/03/28(木) 15:34:23.65
なんかとんちんかんなこと書いてるな…
895デフォルトの名無しさん:2013/03/28(木) 19:37:00.71
おい一つ上のスレッド開こうとしたらマウスがずれてこの開いただろうが糞スレ上げんな氏ねキチガイ
896デフォルトの名無しさん:2013/03/29(金) 02:02:02.08
VC++2010をVistaで使用しています

空のプロジェクトを作成した時に
ソース ファイル
リソース ファイル
ヘッダー ファイル
この3つのフィルタがデフォルトで作成されるのですが
デフォルトで作成されるフィルタが
Main
ProjectName
みたいにカスタマイズした状態で作成されるようにしたいです
デフォルトで作成されるフィルタを変更するにはどうすればいいですか?
897デフォルトの名無しさん:2013/03/29(金) 06:35:58.93
wizardの生成用jsファイルを自分の好みに応じて編集すればいい
898デフォルトの名無しさん:2013/03/29(金) 07:53:53.23
カスタムウィザードのキーにたどり着いたのでやってみます
ありがとうございました!
899デフォルトの名無しさん:2013/03/29(金) 12:25:27.41
Express Editionで>>897をやる事ってできる?
カスタムウィザード項目が無い
900デフォルトの名無しさん:2013/03/29(金) 14:40:56.74
検索能力が皆無のお前には無理
901デフォルトの名無しさん:2013/03/29(金) 17:56:46.48
>>899
できる
902デフォルトの名無しさん:2013/03/30(土) 02:58:10.24
>>901
ウィザードではなくて
default.js
Templates.inf
.vsdir
.vsz
これらを直接変更加えて追加したら出来ました
ありがとうございました
903デフォルトの名無しさん:2013/03/30(土) 14:35:55.54
構成プロパティにある作業ディレクトリをDefault.jsで指定するにはどうすればいいですか?
904デフォルトの名無しさん:2013/04/02(火) 01:21:39.22
Main.exeからA.dllを呼んでA.dllからB.dllを呼んだ場合
A.dllのエディットコントロールではキー入力が処理されるのに
B.dllでは処理されません
どうすればB.dllのエディットコントロールでもキー入力が処理されるようになりますか?
905デフォルトの名無しさん:2013/04/02(火) 02:33:56.94
TranslateMessageとDispatchMessageをちゃんと呼んでるか確認
906デフォルトの名無しさん:2013/04/02(火) 09:49:30.13
>>903
var config = proj.Object.Configurations('Debug');
config.WorkingDirectory = Path;
でいけるはずだがエラーになるな

Default.vcxprojに
<LocalDebuggerWorkingDirectory>Path</LocalDebuggerWorkingDirectory>
追加したらいい
907デフォルトの名無しさん:2013/04/02(火) 10:21:55.84
>>905
MainでTranslateMessageとDispatchMessageを呼んだら実現できました

さらにリターンキーでデフォルトボタンが押された動作にしたかったので
メッセージループ内でDLLダイアログハンドルを保持させるstatic変数を宣言
→DLL内でFindWindowを使用してMainウィンドウハンドルを取得
→ユーザーメッセージを使用してDLLからMainへダイアログハンドルを送信
→IsDialogMessageで通常通りの分岐
最終的にはこのような感じに落ち着きました
ありがとうございました
908デフォルトの名無しさん:2013/04/04(木) 17:55:52.74
909デフォルトの名無しさん:2013/04/04(木) 18:54:58.46
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デフォルトの名無しさん:2013/04/04(木) 22:13:57.31
>>910
既にあるプロジェクトにリンク指定したいのか
新たに作成されるプロジェクトに初期値としてリンク指定したいのか
どっち?
911デフォルトの名無しさん:2013/04/04(木) 22:44:46.84
プロジェクトC(LIBプロジェクト)を作成し、そこに共有モジュールを登録する。
それが必要なプロジェクトにCへの依存関係を設定する。
912909:2013/04/04(木) 22:53:29.64
>>910
前者のほう、既にあるプロジェクト間でのリンクです。

>>911
なるほど、その手がありますね。
明日会社でやってみます。
913デフォルトの名無しさん:2013/04/04(木) 23:00:25.13
その手がってより、王道だけどな。
914デフォルトの名無しさん:2013/04/04(木) 23:30:54.25
dllプロジェクトを作成してビルドする時に.expファイルとかのdll以外のファイルもdllと同じ場所に出力されるのが嫌なので
全般->出力ディレクトリ->
リンカー->全般->出力ファイル->
この2箇所を変更したのですが

warning MSB8012: TargetPath() が Linker の OutputFile プロパティ値 () と一致しません。
このため、プロジェクトが正常にビルドされない可能性があります。
この問題を解決するには、$(OutDir)、$(TargetName)、および $(TargetExt) の各プロパティ値が、%(Link.OutputFile) で指定されている値と一致することを確認してください。

と警告が出てしまいます
dllファイルとexpの出力場所を変更してさらにこの警告が出ないようにするにはどうすればいいですか?
#pragmaの警告無視以外の方法があれば教えてください
915デフォルトの名無しさん:2013/04/05(金) 00:49:02.08
ビルド後イベントに必要なファイルだけをどっか適当なところにコピーするバッチファイルでも仕込む。
916デフォルトの名無しさん:2013/04/05(金) 12:26:57.71
そういう手段しかないのですね
ありがとうございました!
917909:2013/04/05(金) 20:19:11.56
>>911
できました!
理想通りです!
ありがとうございました!

>>913
勉強になりました!
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の方が簡単で無難。
920片山博文MZパンク ◆0lBZNi.Q7evd :2013/04/17(水) 21:25:28.09
ピクチャコントロールのウィンドウハンドルを取得。
自前で描画する場合はウィンドウの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は何をするためにあるものでしょうか?
望みのことができますか?
できるなら、どのように導入(参照設定やら名前空間やらツールボックスやら)できますか?
923デフォルトの名無しさん:2013/04/17(水) 23:24:46.61
マルチ
924デフォルトの名無しさん:2013/04/17(水) 23:42:53.85
>>918
Mathematica使う
925片山博文MZパンク ◆0lBZNi.Q7evd :2013/04/18(木) 00:03:54.18
ヒント:OLE
926片山博文MZパンク ◆0lBZNi.Q7evd :2013/04/18(木) 00:24:38.33
本当にVC++でやりたいの?

初心者ならEXCELのVBAでやるのが一番楽
927デフォルトの名無しさん:2013/05/12(日) 02:37:22.35
一番楽 キリッ

言い切るならコードを示してみろよ
928デフォルトの名無しさん:2013/05/17(金) 23:02:29.59
929デフォルトの名無しさん:2013/05/18(土) 11:06:55.10
ここは初心者にURLの貼り方を教えるスレではない
930デフォルトの名無しさん:2013/05/20(月) 20:49:35.79
windows上で,読み書きの両方ができる_popen()の拡張を作るにはどうしたらいいだろうか。
_popen()で開いた子プロセスに対して,コマンドを投げて,その結果をもらって,また次のコマンドを投げて・・・
ということをやりたい。

条件として,子プロセスに対して,改変を加えるのはなしの方向で。

Linux上ではできるみたいだが,Windows上ではできるのだろうか。
どなたか教えてください。
[環境]
Visual C++ 2010
Windows 7/8
931デフォルトの名無しさん:2013/05/20(月) 21:12:17.37
DialogBoxを、リソースファイルなしで、プログラムから動的にデザイン(サイズ、コントロールの追加など)することは
可能でしょうか?
その場合、参考となるAPIを1つでいいので教えてください。
(それをもとに検索して他にも色々調べます)
932デフォルトの名無しさん:2013/05/20(月) 21:17:12.10
「動的ダイアログ作成 vc」で検索
933931:2013/05/20(月) 21:32:37.16
>>932
ありがとうございました。
934片山博文MZパンク ◆0lBZNi.Q7evd :2013/05/20(月) 23:48:16.04
>>930
CreateProcessとパイプ
935930:2013/05/24(金) 08:41:11.60
>>934

大変遅くなりましたが,ありがとうございます。
キーワードを元にがんばってみます。
936デフォルトの名無しさん:2013/05/24(金) 09:53:35.87
VC2008で AfxMessageBox()でコンパイル出来ない
937デフォルトの名無しさん:2013/05/24(金) 12:30:27.48
Express ってオチか?
938936:2013/05/24(金) 15:02:37.67
あれ 出来そうな感じね。
久々にVCいじってみたら綺麗に忘れてる。
なんか勘違いしてるのかも。
939デフォルトの名無しさん:2013/05/24(金) 17:08:04.50
AfxMessageBoxはMFCの関数。プロジェクトはMFCサポートしてるか?
940936: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
943デフォルトの名無しさん:2013/05/29(水) 01:01:47.38
コード見たけど。
そもそもどうやって、名字とクラスと部活を結びつけようとしてんの? どこにもなさそうなんだが。

簡単な方法としては、上の3つを要素として持つクラスを作成して、その配列に生徒?を登録。
条件を入力されたら、上の配列の名字とクラス名とで照らし合わせて一致してれば
その同じ要素にある部活名を表示でいいんじゃね。

検索の方法は、for ループで配列をまわして if でチェックでもいいし、LINQ が使えるならそれ使ってもいいし。



あと、ここで言うのもなんだが。その内容なら C# でやった方が。。。
944デフォルトの名無しさん:2013/05/29(水) 21:16:22.37
C++を始めて間もないのですが教えてください。

_tmainのコンソールアプリのプロジェクトでMFCのクラスを使いたいのですが、

この場合はどのようにするのでしょうか?MFCのアプリだと派生クラスで定義しているのは

参考にしているプロジェクトで分かるのですが、コンソールアプリだとどうしたらよいのでしょうか
945デフォルトの名無しさん:2013/05/29(水) 21:18:34.59
プロジェクト作るときにMFCにチェック
946デフォルトの名無しさん:2013/05/29(水) 21:36:39.30
>>945
すみません説明不足でした。

参考にしているMFCアプリのソースがありまして、それは派生クラスを使って、外部のクラスを呼び出しているところまでは分かりました。

コンソールアプリでMFCのチェックを入れれば、とりあえず、同じ外部のクラスを読み込ませることはできたのですが、

読み込ませただけで、どのようにしたら使えるようになるのかがわかりません。

_tmainの場合とMFCの派生させて使う場合の使いわけが、混乱しています。
947デフォルトの名無しさん:2013/05/29(水) 21:45:41.87
MFCを利用してるサードパーティ製のクラスの利用方法が聞きたいってことか。
それはエスパーじゃないと答えれないな
948デフォルトの名無しさん:2013/05/30(木) 08:33:58.88
AfxWinInit関係を調べます。
949デフォルトの名無しさん:2013/06/08(土) 21:21:20.98
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型配列を動的に確保する方法がありましたら、
ご教示お願いします。
950デフォルトの名無しさん:2013/06/08(土) 22:33:19.81
× 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;
951デフォルトの名無しさん:2013/06/09(日) 02:05:10.00
>>950
丁寧に教えていただきありがとうございます
952デフォルトの名無しさん:2013/06/09(日) 02:59:48.98
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]=[いいい]
953デフォルトの名無しさん:2013/06/09(日) 03:02:33.22
見にくいソースで申し訳ないのですが、
>>952について教えて欲しいです。
VC++ 2008 の win32 console(マルチバイト文字セットを使用する)環境で実行しました。

std::vector を使い CStringA型の配列のメモリを動的に再割り当てするプログラムです。
vector::resize の成功か失敗かを知りたいのですが、この関数はvoid型なので、
戻り値がありません。

10行目、12行目にて、メモリの再割り当てが成功か失敗か判断しているつもりですが、
「成功(要素数が増加している)、失敗(要素数に変化なし)」という判断方法で、
合っていますでしょうか。

ご存じの方がいらっしゃれば、よろしくお願いします。
954デフォルトの名無しさん:2013/06/09(日) 03:07:29.31
例外知らないとかお前なにを勉強してたんだ
955デフォルトの名無しさん:2013/06/09(日) 03:18:48.52
>>954
すみません。あまり慣れていない手段(例外)は使いたくなかったので避けていました
>>952では失敗を検知するのは例外(try , throw , catch)を使う方法しかないのでしょうか
956デフォルトの名無しさん:2013/06/09(日) 03:24:07.71
ない
957デフォルトの名無しさん:2013/06/09(日) 07:43:53.94
>>956
ありがとうございます
了解しました
958デフォルトの名無しさん:2013/08/06(火) 00:20:27.85
教えてください
959片山博文MZパンク ◆0lBZNi.Q7evd :2013/08/06(火) 00:34:10.55
>>958
インストールハ、オワッタカ?
960デフォルトの名無しさん:2013/08/06(火) 00:50:20.67
お断りします
961デフォルトの名無しさん:2013/08/07(水) 00:38:57.77
ひどいわ
962デフォルトの名無しさん:2013/08/08(木) 04:33:10.39
Visual c++でCを使う方法を教えて下さい。基本情報受けたいです。
963デフォルトの名無しさん:2013/08/08(木) 08:29:49.60
ファイル拡張子をCにしたら?
964デフォルトの名無しさん:2013/08/08(木) 08:46:24.86
ありがとうございます、普通にフォルダで見るとCのファイルに変わってるんですが、VisualC++ を開いた時、左側のソリューションのところでは画像がC++のファイルのままです。これは変わってるんですか?
965デフォルトの名無しさん:2013/08/08(木) 08:48:15.00
よく分からんが変わってるんじゃない?
CもC++も同じだから気にするな
966デフォルトの名無しさん:2013/08/08(木) 11:25:18.90
967デフォルトの名無しさん:2013/08/08(木) 20:01:00.14
ファイルの拡張子を表示する設定にしてないとか
968デフォルトの名無しさん:2013/08/08(木) 22:14:37.79
>基本情報受けたい

って意味がよく分からん
969デフォルトの名無しさん:2013/08/08(木) 22:17:32.82
試験勉強に使いたいって意味だろ気にすんな
970デフォルトの名無しさん:2013/08/09(金) 02:07:59.95
VC使ってのに未だにfreadとか平気使う
私もいますよ。
971デフォルトの名無しさん:2013/08/09(金) 06:56:10.87
つうか何でもぶちんで動けばいいやって考えはやばいですか
972デフォルトの名無しさん:2013/08/09(金) 08:44:32.96
仕事じゃなきゃそれがいいよ
書かない、動かないのほうがやばい
973デフォルトの名無しさん:2013/08/10(土) 02:39:35.25
Cのアパコンパチなんでコンパイル、リンクが出来て
テストパスすればいんでしょうけど、
やぱC++のfstreamとかiosとかでやりたいってのはあるよねぇ。
974デフォルトの名無しさん:2013/08/11(日) 21:03:08.50
2ヶ月空いてるのに食いつき方きめえな
特におまえは>>959シコシココード書いてろ
975デフォルトの名無しさん:2013/08/11(日) 23:07:28.68
こいつこそ、5 日も空けてから入れるツッコミじゃないと思うが。
976デフォルトの名無しさん:2013/08/12(月) 00:16:32.62
誰が誰だか
977デフォルトの名無しさん:2013/08/12(月) 09:33:36.84
まあまあ
978デフォルトの名無しさん:2013/08/28(水) 09:43:27.31
野良関数はどこのファイルに書いていいのですか?
mainだけ?
ほかのクラスの.cppに適当に放り込んでもいいのですか?
979デフォルトの名無しさん:2013/08/28(水) 11:34:31.58
どこでもいいけど
後で困らないように分けといたら?
980デフォルトの名無しさん:2013/08/28(水) 12:07:23.13
ありがとうございます
コードは書いてあっても
ファイル分けまで説明してない本が多くて
基礎を読んだ後いざ作ろうとするとよくわからなくなってしまいました

>ほかのクラスの.cppに適当に放り込んでもいいのですか?
これはクラスのメンバ関数とは別にそのまま呼び出せるのでしょうか
981デフォルトの名無しさん:2013/08/28(水) 12:09:42.17
そのまま呼び出せなきゃ困るだろ
982デフォルトの名無しさん:2013/08/28(水) 12:16:52.56
はい
わかりました
983デフォルトの名無しさん:2013/08/28(水) 12:30:53.83
そこからか。
プロトタイプ宣言をヘッダにまとめて、使いたいとこでinclude
そのファイルでしか使わないなら、上の方にプロトタイプ宣言書けばいい。
関数定義を上に持っていく、というものぐさはあとで困るかもw
984デフォルトの名無しさん:2013/08/28(水) 12:53:58.79
俺は野良関数でも野放しにしないで、野良関数用のclass作っておくな
985デフォルトの名無しさん:2013/08/28(水) 13:36:40.11
ためしにでたらめなものでやってみましたが
そのプロトタイプ宣言は
ヘッダにも書けるし
mainにも書けるのですね
せっかく別ファイルに書いたのにmainに書いていては意味無いですが
986デフォルトの名無しさん