トップページ⇒tech
986コメント346KB

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

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん2011/11/03(木) 00:54:48.61
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/
0037デフォルトの名無しさん2011/11/16(水) 16:17:52.35
不可能
0038デフォルトの名無しさん2011/11/16(水) 16:54:55.76
>>36
msenvui.dllの中に入っている文字列リソースのようなので、
それを自己責任で書き換えてしまえばできるかもしれないけど。
0039デフォルトの名無しさん2011/11/16(水) 19:38:05.16
(`●ω●´)  < ふ か の う〜

と某スレでは書きます。
0040デフォルトの名無しさん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;
}

あとは共有設定したいのですが続きをお願いします。
0041デフォルトの名無しさん2011/11/16(水) 22:58:37.71
ttp://eternalwindows.jp/security/share/share02.html
0042デフォルトの名無しさん2011/11/17(木) 04:52:33.57
mkdir
net share ...
のバッチで十分な気がしないでもない
0043デフォルトの名無しさん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 だったかを追記するようにという記述を思い出したので、
試してみたら、リンクエラーが無くなって解決できました。
そして、逆に、どうして必要・不要なのか気になってきました。

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

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

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

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

とか。
0052デフォルトの名無しさん2011/11/20(日) 11:36:14.21
インテリセンスorz
0053デフォルトの名無しさん2011/11/20(日) 14:27:27.61
PDB,LIBファイルとはどういうファイルなんですか
プロパティページの追加のライブラリィディレクトリの項目にそれらが入っている場所
が指定されていたんですが それらを開けなくて困ってます
0054デフォルトの名無しさん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で宣言した関数が定義されてないと言われるのを解消したいんですけどどうすればいいですか?
0055デフォルトの名無しさん2011/11/20(日) 17:19:45.68
startをグローバル変数にしろ
0056デフォルトの名無しさん2011/11/20(日) 17:26:37.28
>>55
できました!ありがとうございます。
0057デフォルトの名無しさん2011/11/20(日) 19:25:22.58
開発環境:VS2008
種類:DLL

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

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

一度作った構造体にメンバを追加したのですが、デバッガでステップを
追うと、どうもメンバが更新前の古いままのようです。
キャッシュが効いているという事でしょうか?
そのキャッシュは、どこで手動更新出来るのでしょうか?
0059デフォルトの名無しさん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 かなにかに残ってるんじゃね。
0060デフォルトの名無しさん2011/11/20(日) 20:59:47.32
>>57
public:
static array<T>^ arr = gcnew array<T>(N){...};
0061582011/11/20(日) 21:52:29.05
>>59
クリーンすると言うのはどういう事でしょうか?
ディレクトリ削除、これは私にもすぐ理解出来たので、同じ問題が
出たらやってみようと思います。

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

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

慌てて基本設定に戻しましたが復元せず。
どこをいじれば良いのでしょうか。
0064デフォルトの名無しさん2011/11/22(火) 00:47:04.44
どーしてもなおんなかったら、再現する最小構成をどっかに晒せや。
0065デフォルトの名無しさん2011/11/26(土) 11:18:25.95
age
0066デフォルトの名無しさん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では無理でしょうか?
0067デフォルトの名無しさん2011/11/29(火) 00:04:30.98
GUIの部分に使ってるだけだろうから
無くてもいけるだろうけど
visualStudioのprofessional買った方が早い気がするな
0068デフォルトの名無しさん2011/11/29(火) 00:19:11.44
>>67
早速の返信ありがとうございます!
やはり購入したほうがスムーズなんですね・・・
下調べが足りずに買ってしまった自分がバカだったんですけどこれ以上は資金的な余裕が・・・
MFCとやらがGUIだけに使われていてセンサーからの数値取得自体には必要とされていなければ気合でなんとかなりますでしょうか
0069デフォルトの名無しさん2011/11/29(火) 00:25:36.33
ここにソース貼るかリンクすれば
ネトウヨさんがMFCなしで動くように治してくれるよ
0070デフォルトの名無しさん2011/11/29(火) 00:49:07.31
>>69 
申し訳ありません・・・自力では目的達成が可能なのか不可能なのかもわからないレベルでお恥ずかしい限りです。
サンプルプログラムのフォルダをzip形式にしてUPしてみました。

http://www.dotup.org/uploda/www.dotup.org2320354.zip.html
0071デフォルトの名無しさん2011/11/29(火) 00:49:37.47
SDKとにらめっこすればいけるんじゃね
0072デフォルトの名無しさん2011/11/29(火) 01:07:56.34
>>71
ほんのちょっとかじった程度でいきなりこの挑戦は思い上がりすぎだったかもしれないと反省している所ですorz
一応見渡すための3D空間とカメラ等はDXライブラリのサンプルを参考に作ってあるので、
頭の角度の数値さえ取得できればあとはなんとか自力で・・・という所です。
あきらめず自分なりにもにらめっこ挑戦してみます。
0073デフォルトの名無しさん2011/11/29(火) 01:53:23.01
環境:VC++2010
int* ptr = nullptr;
ってメインスレッドでして、サブスレッド内で
ptr = new int[10];
としてすぐにサブスレッドは終了。確実に終了したことを確認した上で
メインスレッドで
delete[] ptr;
とやりました。
で、#include <crtdbg.h> を使ったところ、ptrは解放されてない、
とメモリリークが検出されました。
スレッドをまたぐメモリ確保はやっちゃだめでしょうか?
それとも単にcrtdbgが解放を検出できてないだけでしょうか?
0074732011/11/29(火) 02:02:34.01
スマポ使ったらメモリリーク無し、と出たので間違いなく自分のコードが
どこかおかしいことがわかりました。ということで無視してください。
0075デフォルトの名無しさん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;
}

リークしないなぁ
0076デフォルトの名無しさん2011/11/30(水) 13:27:13.73
>>74
0077デフォルトの名無しさん2011/12/01(木) 11:07:39.23
>>76
0078デフォルトの名無しさん2011/12/01(木) 11:19:27.31
>>77
0079デフォルトの名無しさん2011/12/01(木) 20:19:51.53
ぬるぽ
0080デフォルトの名無しさん2011/12/01(木) 20:22:44.22
がっ
0081デフォルトの名無しさん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の定義が生成しなくてはならないとありましたので
   記載

コードは次レスです。
0082デフォルトの名無しさん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;
}
0083デフォルトの名無しさん2011/12/04(日) 03:46:24.60
>>80で忘れていましたが、
プロジェクト作成時のテンプレートは
「CLRコンソールアプリケーション」です。

CoCreateInstance呼び出しで
HRESULTのhrが【0x80004002】になってしまいます。
インターフェースがわからない??
お願いします。助けて下さい。
0084デフォルトの名無しさん2011/12/04(日) 07:25:18.00
COMじゃない方使えよ
0085デフォルトの名無しさん2011/12/04(日) 08:57:24.97
馬鹿には無理
0086812011/12/04(日) 17:53:04.67
お願いします。age
0087デフォルトの名無しさん2011/12/04(日) 18:22:41.92
ほぼ同じ環境で上のコードをコピペしてやってみたが、ふつーに通ったぞ。
なにか必要なライブラリかなにかが入ってないんじゃねーの?
0088デフォルトの名無しさん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"
0089822011/12/05(月) 18:31:17.70
ちなみに最近WindowsUpdateに失敗します。
0090デフォルトの名無しさん2011/12/05(月) 21:00:00.12
C#を1年くらいしかやったことないんだけど、
今からC++のWin32を勉強始めても何か役に立ちますかね?
C#ってやっぱり重いし、デザインもモッサリしてるし、
ネイティブなC++のほうが難しそうだけど良いのかな?と思いました。
でも時代は64bitだし、VS2010EEでできるのはWin32ですよね。
0091デフォルトの名無しさん2011/12/05(月) 22:15:47.24
IDEにEE使ってもx64バイナリを吐かせることはできる
0092デフォルトの名無しさん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 の下のノードの名前?みたいだな。おまえのも一緒だし。
0093デフォルトの名無しさん2011/12/05(月) 22:35:37.67
>>90
C++ を自在に操れるレベルになれば、他の言語なんか怖くない。
でも大抵は C# で事足りる。十分すぎるくらい。しかも凄く簡単、ってか楽。
どこまでやるかによる。
0094デフォルトの名無しさん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)なみだ
0095デフォルトの名無しさん2011/12/05(月) 23:03:08.60
まあなんだ。頑張れ。w
逆にインストールしたら欠けてた部分が補完されて正常に、なんて都合のいいことはないか。
0096デフォルトの名無しさん2011/12/05(月) 23:04:22.92
0x800B010B こいつなんとかし netFx_core.mzz のセキュリティ検証で落ちるぞ
0097デフォルトの名無しさん2011/12/06(火) 00:40:04.02
これさー これやん

IID_IWinHttpRequest
0098822011/12/06(火) 00:44:55.21
事故解決しました

感謝
http://www.sol.dti.ne.jp/~yoshinor/ni/ni0002.html
http://moz-addon.g.hatena.ne.jp/ZIGOROu/20071015/1192454217
http://www.vector.co.jp/soft/dl/win95/prog/se359660.html

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

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

じゃないの?
0104片山博文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
0105デフォルトの名無しさん2011/12/09(金) 12:31:39.86
dllを使うプログラムをつくったのですけど、
そのdllが無くても起動してしまって、困りました。

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

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

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

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

と宣言したのを

mybrush->Color = Color::Blue;

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

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

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

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

みたいになってしまっているとき
printf();
printf();
0118デフォルトの名無しさん2011/12/21(水) 07:08:54.94
範囲選択して
Ctrl+K Ctrl+F
0119デフォルトの名無しさん2011/12/29(木) 18:11:12.18
VCだと「test->」とか打つと自動で一覧表示されるじゃん?
でも俺が作ったライブラリでだけ表示されないんだけどなんぜ?
0120デフォルトの名無しさん2011/12/30(金) 22:03:52.61
期待age
0121デフォルトの名無しさん2011/12/31(土) 04:59:24.80
>>119
あ?
0122片山博文MZ ◆0lBZNi.Q7evd 2011/12/31(土) 13:08:04.10
>>119
http://msdn.microsoft.com/ja-jp/library/ks1ka3t6%28v=vs.80%29.aspx
0123デフォルトの名無しさん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
0124デフォルトの名無しさん2012/01/01(日) 18:32:38.79
クラスを構造体代わりに使ってるんですが、動的に作成したクラスは
デストラクタで破棄しないといけないんですか?
0125デフォルトの名無しさん2012/01/01(日) 20:20:07.85
動的にってnewを使ってってことか?
0126デフォルトの名無しさん2012/01/01(日) 21:10:00.53
>>124
何を言っている?
デストラクタにはそのクラスが破棄されたときに必要な処理を書く。
デストラクタで破棄するわけじゃない。
0127デフォルトの名無しさん2012/01/01(日) 21:27:11.09
>>124
何を聞きたいのかよく分からないが、

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

あるクラスAのインスタンスに付随する情報をクラスBとして動的に作成した場合の、クラスBを破棄するタイミングの話なら
クラスAのデストラクタで削除するのが自然ではある
0128デフォルトの名無しさん2012/01/02(月) 01:35:11.70
コンストラクタ内でいくつかのメンバ(ポインタ)に
newで別のインスタンスを生成し
デストラクタでdeleteしているのですが
コンストラクタ途中で例外か例外じゃなくても
new出来なかったりで中断する必要がある場合
途中まで生成していたメンバのインスタンスが
デストラクタで解放されることは期待出来ますか?
0129デフォルトの名無しさん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;
}
};
0130デフォルトの名無しさん2012/01/02(月) 02:39:13.46
ありがとう
A() : x(NULL), y(NULL) {
と書くのは良くないですか?
0131デフォルトの名無しさん2012/01/02(月) 02:48:58.29
>>130
メンバ初期化リストを使う方が正解
0132デフォルトの名無しさん2012/01/02(月) 11:03:39.23
delete NULL は有効だからdelete時にNULLチェックは無駄
0133デフォルトの名無しさん2012/01/04(水) 22:31:34.51
>>132 delete []も?
0134デフォルトの名無しさん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
0135デフォルトの名無しさん2012/01/12(木) 21:32:10.22
VC++2010, SDKで開発しています。

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

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

よろしくお願いします。
0136デフォルトの名無しさん2012/01/12(木) 23:02:12.54
EM_SETCUEBANNER
■ このスレッドは過去ログ倉庫に格納されています