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

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

■質問するにあたって
・エラーや警告のときはエラーメッセージを書きましょう。
・開発環境も書きましょう、特にWindowsForm、MFC、Win32アプリケーションの区別。
・できるだけ具体的に。

質問の仕方については次のページが大変参考になります。
http://www.hyuki.com/writing/techask.html

■回答するにあたって
・回答する場合はその答えに至るための「コツ」も書いてあげると良いでしょう。
 (MSDNのどの項目だとか、何のキーワードでGoogleするとか)
・ネタや煽りは軽く流しましょう。

【過去スレ】
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/
Part32 ttp://pc11.2ch.net/test/read.cgi/tech/1225422971/
Part31 ttp://pc11.2ch.net/test/read.cgi/tech/1217494948/
2デフォルトの名無しさん:2010/05/16(日) 01:47:52
【関連スレ】
■MFC相談室 mfc21d.dll■
http://pc12.2ch.net/test/read.cgi/tech/1250919279/
Win32API質問箱 Build82
http://pc12.2ch.net/test/read.cgi/tech/1253699773/
【C++】 DirectX初心者質問スレ Part26 【C】
http://pc12.2ch.net/test/read.cgi/tech/1256403984/
C言語なら俺に聞け(入門篇) Part 54
http://pc12.2ch.net/test/read.cgi/tech/1254829314/
C++相談室 part74
http://pc12.2ch.net/test/read.cgi/tech/1256397778/
C/C++の宿題片付けます 131代目
http://pc12.2ch.net/test/read.cgi/tech/1255709298/
【初心者歓迎】C/C++室 Ver.69【環境依存OK】
http://pc12.2ch.net/test/read.cgi/tech/1256022655/
3デフォルトの名無しさん:2010/05/16(日) 01:50:08
4デフォルトの名無しさん:2010/05/17(月) 01:09:30
ぬるぽ
5デフォルトの名無しさん:2010/05/17(月) 01:59:50
Visual C++ 2010 Express上で「Quick C最初の一歩」という本に書いてある

main()
{
printf("コマノウエノゴマ");
}

というソースコードをビルドするとエラーが起こるのですが
この本で使われているQuick C Ver.2.0のC言語は
Visual C++ 2010 Expressの物とは全くの別物なんですか?
ttp://www.odnir.com/cgi/src/nup47890.jpg
6デフォルトの名無しさん:2010/05/17(月) 02:18:22
>>5
それをVisual C++ 2010 Express上でやってみた
ttp://loda.jp/_pluto_/?id=12.exe
↑の実行ファイルをコマンドプロンプトにドラッグ&ドロップしてEnterキー押せば普通に終わると思うが・・・
7デフォルトの名無しさん:2010/05/17(月) 08:36:02
>>005
どんなエラー?それを書かないとわからない。
8デフォルトの名無しさん:2010/05/18(火) 14:24:48
Visual C++ 2010 上でビルド時に以下のようなエラーが出ています。

1>DXUT.obj : error LNK2019: 未解決の外部シンボル __imp__InitCommonControls@0 が関数 "long __stdcall DXUTInit(bool,bool,wchar_t *,bool)" (?DXUTInit@@YGJ_N0PA_W0@Z) で参照されました。
1>DXUTmisc.obj : error LNK2019: 未解決の外部シンボル _DXTraceW@20 が関数 "long __stdcall DXUTTrace(char const *,unsigned long,long,wchar_t const *,bool)" (?DXUTTrace@@YGJPBDKJPB_W_N@Z) で参照されました。

色々調べてみて以下のようにすることで一応ビルドと実行はできたのですが
#pragma comment(lib, "comctl32.lib")
#pragma comment(lib, "dxerr.lib")

そもそもこのライブラリがあるディレクトリをライブラリ ディレクトリに登録しており、そのディレクトリに該当のlibがあることも確認できました。
ただ、エラー内容からっておそらくライブラリディレクトリの設定が間違っているのではないと予想しているのですが、どこが間違っているでしょうか?

1) ソリューションエクスプローラからプロジェクトを選択
2) 表示メニュー→その他のウィンドウ→プロパティウィンドウを開く
3) プロパティページボタンを押してダイアログを開く
4) 構成プロパティ→VC++ ディレクトリ→ ライブラリディレクトリ 

で設定してます。
9デフォルトの名無しさん:2010/05/18(火) 14:31:30
すみません。設定を見直していたら
構成プロパティ→リンカ→入力の”追加の依存ファイルにcomctl32.lib dxerr.libを書き込んだら解決しました。

しかし、これで合っているのでしょうか?
ライブラリ一つ一つ指定するのって労力がかかりすぎると思うのですが・・・・・。
10デフォルトの名無しさん:2010/05/18(火) 14:47:40
初期状態で勝手に呼び込むやつとそうでないやつがあるんだよ。
他のコンパイラでも通るようにするためにはソースに書き込んだ方が良い。
11デフォルトの名無しさん:2010/05/18(火) 15:13:50
勝手に読み込むのとそうでないものがあるんですね。
危険なオブジェクト知らないうちに使われないようにするためかな・・・。
ちょっと調べてみます。

とりあえず複数人での開発まで考えるとヘッダファイルにでも書いておいた方が何かと便利そうですね。
12デフォルトの名無しさん:2010/05/21(金) 00:28:35
visual c++ 2010 expressをDLしようと思ってWebインストール押したら
Microsoft Searchに飛ばされるんだけどなんでなの??
一応自己解決しようと努力はしたんだけど
yahoo知恵袋で同じ質問あったけど解決方法書いてなかったんだ。
環境はWindousXPです
1312:2010/05/21(金) 00:48:35
オフラインインストールとやらで解決できそうです
お騒がせしました
14デフォルトの名無しさん:2010/05/21(金) 11:04:46
良かったね
15デフォルトの名無しさん:2010/05/24(月) 15:47:40
まったくの初心者なのですが、質問させてください。
VisualC++でマウスの名称を持って来たいだけなのですが、
何をどう定義する必要があるのかすらわかりません。

出来ましたら、VisualC++にて「Windowsフォームアプリケーション」を
サラで作成した状態で何処に何を記述するのか教えてください。
16デフォルトの名無しさん:2010/05/24(月) 21:17:06
どこか有効な、開発者コミニティーかユーザーズフォーラムなど
あったら教えてください。
17デフォルトの名無しさん:2010/05/24(月) 21:19:32
18デフォルトの名無しさん:2010/05/24(月) 21:45:58
>>15
なんか以下でマウスの接続チェックは出来るらしい…。

  BOOL GetSystemMetrics( SM_MOUSEPRESENT );

  一応、#include "Windows.h" は定義しましたが必要なのかは良く解っていない。

じゃ、以下って何なの??? どうやって使うのでしょうか???
  『Mouse クラス』 や 『MouseDevice クラス』


VisualC++ は超初心者で何を定義する必要があるのかまったく解っていません。
19デフォルトの名無しさん:2010/05/25(火) 02:43:01
あたまが弱いんじゃねえの
20デフォルトの名無しさん:2010/05/25(火) 15:50:35
以下を実行してみると、「From1.h」では動くのですが、「xxx.cpp」では
『グローバル関数にアクセスするための 'this' ポインタがありません』で動きません。
これはなぜ?


// Initializes the variables to pass to the MessageBox::Show method.
String^ message = "You did not enter a server name. Cancel this operation?";
String^ caption = "No Server Name Specified";
MessageBoxButtons buttons = MessageBoxButtons::YesNo;
System::Windows::Forms::DialogResult result;

MessageBox::Show( this, message, caption, buttons );

21デフォルトの名無しさん:2010/05/26(水) 01:06:18
>>20
大雑把に言うと、「その」thisが使えるのは、Form1.hの中にあるclassの中だけ。
22デフォルトの名無しさん:2010/05/26(水) 15:03:53
MFCってどうやって使うんでしょうか?

VisualC++2008でテンプレート(Windowsフォームアプリケーション)を使って
新規にプロジェクトを作成した後、
「test000.cpp」内にて【CString str;】と変数を指定してみたのですが、

  'CString' : 定義されていない識別子です。

で、エラーになってしまいます。
ヘッダーには「#include "Windows.h"」を指定して見たのですが、
変わりありませんでした。

MFCが何者なのかは、色んなページを参照してなんとなくは解ってきたのですが、
実際はどの様にすれば利用できるのかが良く解りません。
この辺を詳しく紹介している、ページなどありましたら合わせてお教えいただけると
ありがたいです。
23デフォルトの名無しさん:2010/05/26(水) 16:52:23
>>22
ExpressにはMFCついてないから
あきらめた方がいい
24デフォルトの名無しさん:2010/05/26(水) 17:51:48
>>23
Expressでは無いです、

  Microsoft Visual Studio 2008 Professional です。

25デフォルトの名無しさん:2010/05/26(水) 21:03:40
>>24
新規プロジェクト作成時に MFC アプリケーションを選べ。
26デフォルトの名無しさん:2010/05/26(水) 21:36:01
>>24にMFCはかなりハードルが高そうに思えるが
そもそもC++言語を少しは使えるのだろうか
27デフォルトの名無しさん:2010/05/26(水) 21:38:22
>>25
MFCにてプロジェクトを作成して、まっさらなダイアログにボタン「Button1」を
作成し以下の様にしてみたのですが、今度は『MessageBox::Show』が使えなくなって
しまいました。
理由がわかりません。

void CtestDlg::OnBnClickedButton1()
{
// TODO: ここにコントロール通知ハンドラ コードを追加します。

CString str;

// MessageBox::Show("test");

}

「CString」は使える様ですが、結局『Windowsフォームアプリケーション』と
『MFCアプリケーション』の違いがわかりません。
28デフォルトの名無しさん:2010/05/26(水) 21:53:01
>>27
『Windowsフォームアプリケーション』って CLR だろ?
それは、.NET アプリケーションになる。
MessageBox::Show も .NET だ。

いろんなページを見たら、どこかに MFC での
メッセージボックスの書き方は書いてあると思う。
MessageBox("〜"); とか。

CLR は managed
MFC は ネイティブ
29デフォルトの名無しさん:2010/05/26(水) 22:08:24
>>28

> CLR は managed
> MFC は ネイティブ

と、言う事は…。
別のプラットフォームと捕らえた方が良いってことでいいですか?

ある意味別の言語みたいなんですね。
30デフォルトの名無しさん:2010/05/26(水) 22:15:58
ついで、
もし、お答え頂けるなら。

CLR の『Windowsフォームアプリケーション』でプロジェクトを作成し、
デバイスの情報を取りに行きたい時に、MFCを利用したいときは、
どの様にするのがベストでしょうか?
31デフォルトの名無しさん:2010/05/26(水) 23:59:01
文字列から5文字目以降の文字列をゲットして違う配列に入れたいのですがどうすれば良いですか?
32デフォルトの名無しさん:2010/05/27(木) 15:24:02
MFCはあくまでC++ソースのクラスライブラリだでよ
.NETで使う事は想定されてないと思われ
33デフォルトの名無しさん:2010/06/05(土) 02:39:02
64bitアプリ作りたいんだけど、製品版じゃないと無理?
34デフォルトの名無しさん:2010/06/05(土) 17:04:50
35デフォルトの名無しさん:2010/06/08(火) 00:01:27
http://blog.livedoor.jp/unvirus/archives/1224849.html

私はVisual C++はもちろんプログラミングについて何の知識も無いのですが、どうしても上のcppをexeに変換したいのです。
そこでVisual C++ 2010 Expressをインストールし試行錯誤してみましたが、さっぱりダメです。
(新しいプロジェクト→Win32プロジェクト→空のオブジェクト
→ソースファイルに上のcppをぶち込み、デバッグ開始→ビルド失敗)

どうすればexeファイルに変換できるのでしょうか。どなたかご教授願います。
環境はWin XP SP3です。
36デフォルトの名無しさん:2010/06/08(火) 00:15:27
あんたのレベルじゃ無理
それにチートなんて周りの迷惑になるからやめとけ
3735:2010/06/08(火) 00:36:02
おkあきらめます
3835:2010/06/08(火) 00:54:56
あ、出来ました。お騒がせしました
39デフォルトの名無しさん:2010/06/08(火) 00:56:07
コンパイルしようとしたらデバックなしで開始(デバック開始も)が使えません。なんで?
40デフォルトの名無しさん:2010/06/12(土) 12:14:00
>>4
ガッ
41デフォルトの名無しさん:2010/06/12(土) 19:16:59
>>39
新規作成→プロジェクト
42デフォルトの名無しさん:2010/06/13(日) 14:12:12
char[50]をSystem::String ^に変換する方法は?

error C2664 が出てしまいます。変換すれば良いだけなのでしょうが、
どうすれば良いかお教えください。
43デフォルトの名無しさん:2010/06/13(日) 14:34:58
>>42
char sz[50] = "hoge";

// VC++ 2008以降
#include <msclr/marshal.h>
using msclr::interop::marshal_as;
System::String^ s = marshal_as<System::String^>(sz);

// VC++ 2005
System::String^ s = gcnew System::String(sz);
44デフォルトの名無しさん:2010/06/13(日) 15:00:21
概念を把握したいのですが、

VC++2005の方で、
System::String^ s = は、文字列の入れ物と捕らえて、

gcnew System::String(sz); の方は、新しくメモリ上に(System::String)リマップし直した
との認識をして問題ないでしょうか?


VC++2008では何であんなに複雑になってるか良く解りません…。
変換用の関数を利用しているでいいのかな???
このページでしょうか??
http://msdn.microsoft.com/ja-jp/library/bb384865%28v=VS.100%29.aspx

45デフォルトの名無しさん:2010/06/13(日) 15:11:16
marshal_asも中でやっていることは結局gcnew System::String。

ただ、marshal_asはchar配列とSystem::String以外の変換にも活用できるので、
せっかくだから取り上げてみた。
46デフォルトの名無しさん:2010/06/19(土) 18:39:44
教えてください。VC++でhttpクライアントを作っています。
mfcのafxinet.hを使ってページの取得まではできましたが、
ユニコードへの変換の仕方がわかりません。
どうすればいいんですか?
プロジェクトはユニコードを使ってます。

CString strBuf;
while ( lpHttpFile->ReadString(strBuf) )
{
this->m_listbox.AddString((LPCTSTR)str);
}
47デフォルトの名無しさん:2010/06/20(日) 03:35:07
CStringは勝手に変換してくれるからunicodeに変換とか要らないと思うが
48デフォルトの名無しさん:2010/06/20(日) 14:42:22
質問です。VC++2008を使用しています。
下記のURLに載っている1~3のプログラムをstringからmallocで動的なメモリの割り当てにしたいのですがどこをどのように変えれば実現できるのでしょうか?
http://www.ogis-ri.co.jp/otc/hiroba/technical/newface/index.html
49デフォルトの名無しさん:2010/06/20(日) 16:28:09
>>47
それが、ReadStringの時点で漢字ばかりの文字列に化けてます。
lpHttpFile->Readを使ってchar配列に入れたら日本語はだめだけど
読める文字列にはなりました。
50デフォルトの名無しさん:2010/06/20(日) 22:00:12
TCHAR *fontName=_T("富士ポップ");
LOGFONT lf = {fontsize, 0, 0, 0, fontWidth, 0, 0, 0, SHIFTJIS_CHARSET, OUT_TT_ONLY_PRECIS,
CLIP_DEFAULT_PRECIS, PROOF_QUALITY, FIXED_PITCH | FF_MODERN,fontName};
をコンパイルすると
error C2440: '初期化中' : 'TCHAR *' から 'CHAR' に変換できません。
この変換が可能なコンテキストはありません。
と表示されてコンパイルできません。
fontNameに文字の入った変数を渡すにはどうすればいいんでしょうか。
fontNameに直接_T("富士ポップ")と入れれば実行できます。
環境はvisal studio2008を使用しています。
5150:2010/06/20(日) 23:35:33
自己解決しました。
構造体の初期化を使わず
strcpy(lf.lfFaceName,fontName);
にしたら出来ました。
52デフォルトの名無しさん:2010/06/21(月) 16:58:53
Cとかjavaの{これってなぜ最後に{がくるのですか。
わたしは aaa( ){aaaaaaa}となったほうがわかりやすいように
思うのですが。
53デフォルトの名無しさん:2010/06/21(月) 17:04:15
>>52
慣れの問題です。
ちなみに僕は
aaa()
{
  aaaaaa
}
と書いています。
54デフォルトの名無しさん:2010/06/21(月) 17:09:28
教えていただいてありがとうございます。
{aaaaaaaa}のように書いていてはだめということでは
ないのですね。
55デフォルトの名無しさん:2010/06/21(月) 17:15:50
>>54
コンパイルが通れば何でもいいというのであればそれでいいが
大抵はいくつかの主流の書き方に合わせるか、職場のコーディング規約に合わせる
56デフォルトの名無しさん:2010/06/21(月) 17:22:03
私はこの言語を作ったひとがなぜこのような括弧の
書き方を考えたのか解せないのです。
わざわざ見た目を難しくしているような気がします。
私のような初心者だと括弧を{を前に}を後ろに
書き換えたほうがプログラムの流れがよく理解
出来るような気がします。
57デフォルトの名無しさん:2010/06/21(月) 17:26:11
53のかたのアドバイスの意味やっとわかりました。
58デフォルトの名無しさん:2010/06/22(火) 23:43:52
今からMFC覚えても意味ある?
59デフォルトの名無しさん:2010/06/23(水) 00:10:14
.netやった方がいいと思う
しかもC++/CLIよりC#がいい
仕事でMFC使う予定があるなら別だが
6058:2010/06/23(水) 00:12:34
>>59
ずさー^−^

C#はある程度できます。。VC++スレの人にまでそういわれるなら、やめます。。

1つの言語覚えるのも結構時間かかりますもんね。ありがとう。
61デフォルトの名無しさん:2010/06/23(水) 00:17:22
C++使うのなら
本当に高速化したい時だけでいいよ
62デフォルトの名無しさん:2010/06/24(木) 13:06:05
ファイル移動で、移動先に同名があった時上書きの確認するダイアログを出したいのですが
あれを表示させるにはどうやったらいいのですかね?
63デフォルトの名無しさん:2010/06/24(木) 13:55:23
windows限定だけど
SHFileOperation
64デフォルトの名無しさん:2010/06/24(木) 14:17:41
vcのSHFileOperationのなかなかいいサンプルが見つからんっちゃ
構造体ぶっ込んで・・・と
65デフォルトの名無しさん:2010/06/24(木) 15:32:16
できました!ありがとう
66デフォルトの名無しさん:2010/06/24(木) 18:13:26
文字コードもわからんやつがネットツール作ろうとか百年早い
67デフォルトの名無しさん:2010/06/25(金) 01:53:23
そういうお前は人と会話するの千年早い
68デフォルトの名無しさん:2010/06/25(金) 13:58:59
何事もトライする心が重要なんじゃないかな
シュートしなきゃ点は入らない
買わなきゃ宝くじは当たらない
69デフォルトの名無しさん:2010/06/30(水) 07:11:38
浮動小数点演算をSSEのみ(x87を全く使用しない)で行うように
VCを設定することは可能でしょうか?
x64ではなくSSE2が使用可能なx86環境での実行を前提にしています。
70デフォルトの名無しさん:2010/07/01(木) 20:19:28
Windowsのイベントをフックしなきゃいけなくなって、CでDll作る事になったんだけど、
SQL Serverとも通信しなければならん。

VCからADO使えるのは分かってるんだけど、C#のが慣れる俺にアドバイスくれまいか。

今どきVCからADOなんて使いたくねー!って言ったら、使ってる人に怒られるよなw

DB周りの処理はC#で作ってライブラリにして、Cから呼ぶのって大変かな。
71デフォルトの名無しさん:2010/07/01(木) 20:31:21
DB周りはWebサービスにすればおk
72デフォルトの名無しさん:2010/07/01(木) 20:46:42
>>71
VC初心者ですまん。
Webサービス化するのは出来るんだけど、Cから呼び出す方法がさっぱりだわ。

コマンドラインオプションに/MT付けてると/clr付けられんみたいなんだが、マネージドコード使えねって事なんかな。
フックするためには/MTは外せないっぽい。
73デフォルトの名無しさん:2010/07/02(金) 17:50:00
>>72
わかった
74デフォルトの名無しさん:2010/07/03(土) 17:29:17
>>72
C#部分はEXEとして作って、フックDLLとはプロセス間通信するのが一番楽だと思う。
あと、フックDLLは/MT必須というのは誤解。

ただ、フックDLLとそこから読み込むDLLでマネージコードを使うのはお勧めしない。
CLR 1.0〜2.0は1プロセス内に共存できない(4で可能になったけど)とか、
DLLのアンロードをどうすんのとか、
Windowsと.NETの暗黒面に次々と出くわすだろうことが明らかなので。
75デフォルトの名無しさん:2010/07/03(土) 19:56:53
>> 41
むちゃくちゃ遅れましたがありがとうございます。
76デフォルトの名無しさん:2010/07/04(日) 03:12:16
Windows XP 32bitではBeep関数でパソコンの内部スピーカーからビープ音を
鳴らすことができていましたが、Windows 7 64bitでは外部スピーカー
からしか音がしなくなりました。Windows 7 Ultimate 64bitでビープ音を
鳴らすにはどうしたらいいでしょうか?

開発環境は VC++8.0 です。
77デフォルトの名無しさん:2010/07/04(日) 03:38:28
78デフォルトの名無しさん:2010/07/04(日) 19:22:53
>>74
レスありがとう。

VB6でCOM作って、import使って呼び出せそうだわ。
プロセス間通信もやったことないんだけど、簡単なんかな?

exe作って引数でデータ渡すのもありだね。
投げっぱなしジャーマンで、成否だけ分かればいい場合だけ
だけど。
79デフォルトの名無しさん:2010/07/05(月) 12:26:34
VC++6.0でcuda使えますか?
80デフォルトの名無しさん:2010/07/06(火) 18:11:49
Coda kumi?
81デフォルトの名無しさん:2010/07/06(火) 18:45:09
>>79
はい使えますん
82デフォルトの名無しさん:2010/07/07(水) 08:40:45
VC++2008で、IriaやIrvineのようなダウンロード支援ソフトは作ることできますか?
こういった通信を行うソフトが作りたいのですが
83デフォルトの名無しさん:2010/07/07(水) 08:49:41
できる
作れる技術があるかどうかは別だが
84デフォルトの名無しさん:2010/07/07(水) 08:54:17
できるか、できないかすら分からないレベルなのでそれを聞いて安心しました
TCP/UDPとかSocketとか難しそうですけど地道に勉強していきたいと思います
85デフォルトの名無しさん:2010/07/07(水) 10:06:11
マルチプラットフォーム志向で変態PGならBoost.Asio + OpenSSLでFA.
86デフォルトの名無しさん:2010/07/10(土) 03:00:13
#pragma comment(lib,"〜.lib")でライブラリをリンクするとき
#pragma comment(lib,"debug/〜.lib")のようにディレクトリを指定してリンクすることは出来ないのでしょうか?

実際にやってみると
LINK : fatal error LNK1104: ファイル 'debug/〜.lib' を開くことができません。
というエラーをはいてしまいます
87デフォルトの名無しさん:2010/07/10(土) 03:44:06
>>86
それって、カレントがどこになると思ってるの?
exeと同じ場所に置くのが無難だと思うけど。
絶対パスでもできた希ガス。
88名無しさん@そうだ選挙に行こう:2010/07/10(土) 13:09:27
>>86
link.exeプロセスのカレントディレクトリと%LIB%から探されるから、そんな指定はやめとけと
89名無しさん@そうだ選挙に行こう:2010/07/10(土) 13:47:58
そうすると自分用のlibディレクトリにパスを通したあと
デバッグ用のlibとリリース用のlibを使い分けたい場合どうしたらいいのでしょうか?
90名無しさん@そうだ選挙に行こう:2010/07/11(日) 20:47:33
普通プロジェクトの設定
91デフォルトの名無しさん:2010/07/19(月) 21:02:43
フォームに置くコントロールについてなのですが。
プログレスバーみたいな感じで、バーコードみたいな部分部分で色が変っているような表示(デフラグの時に下のほうに表示されるプログレスバーみたいな帯です。)
をさせたいんですが、どうやったら実現できますでしょうか。

また.NETにはそれ用のコントロールってありますですか?
92デフォルトの名無しさん:2010/07/19(月) 21:38:19
線引いて色を塗る
93デフォルトの名無しさん:2010/07/19(月) 22:21:44
挫けそうです。orz
94デフォルトの名無しさん:2010/07/20(火) 03:01:18
デバッグ情報を埋め込まずに最適化もせずにコンパイルする方法はないでしょうか?
95デフォルトの名無しさん:2010/07/20(火) 03:08:33
96デフォルトの名無しさん:2010/07/20(火) 07:23:58
>>95
ありがとうございます。上手く設定することができました。
97デフォルトの名無しさん:2010/07/20(火) 19:00:59
Visual C++2010を使ってC++を知らなくても1から学べる入門書って今は全くない状態なんですか?
98デフォルトの名無しさん:2010/07/20(火) 20:20:38
あるよ
99デフォルトの名無しさん:2010/07/20(火) 20:26:07
教えてプリーズ
ググってもマネージコードうんちゃらという本一冊しかかからないんですぅ
100デフォルトの名無しさん:2010/07/20(火) 21:09:07
C++スレ行けばいい
101デフォルトの名無しさん:2010/07/20(火) 22:36:19
エディットボックスの文字位置を揃えるにはどうすればいいですか?
例 1バイトのiとkをそれぞれ5個ずつ表示させると横幅が小さい
iが狭いです。
iiiii
kkkkk 
こんな感じになってしまいます。これを直したいです。願いします。
102デフォルトの名無しさん:2010/07/20(火) 22:38:29
等幅フォントを指定すればいい
103デフォルトの名無しさん:2010/07/22(木) 18:15:53
>>102 解決しました。ありがとうございました。
104デフォルトの名無しさん:2010/07/26(月) 21:03:26
>>97
それ系は買う必要ないと想うが
105デフォルトの名無しさん:2010/07/28(水) 08:48:37
Releaseフォルダに出来た.exeファイルの中に***.pdbファイルのフルパス情報が埋め込まれて
しまってるのですが、これを乗せないようにする方法ってないのでしょうか?
106デフォルトの名無しさん:2010/07/28(水) 08:50:08
書き忘れ Visual Studio .NET 2003 を使ってます
107デフォルトの名無しさん:2010/07/30(金) 07:53:19
解決しました。ありがとうございました。
108デフォルトの名無しさん:2010/08/02(月) 20:08:28
VC+2010、Win32でプログラムを作っています.
実行ファイルのパス名を取得するために、下記のようにしています
(パスとファイル名の分離は省略)

TCHAR fName[_MAX_PATH];
GetExeFilePath(NULL, fName, wcslen(fName);
----
これをDEBUGモードでコンパイルしで,デバガのウォッチ式でfNameを
見ると,正しく c:\test\debug\test.exe のように表示されます。
ところがReleaseモードでコンパイルすると fName が c:\ になります.
(実際の実行ファイルは c\test\release\test.exeにある)。

なぜこうなるのでしょうか? 解決方法を教えてください.
109デフォルトの名無しさん:2010/08/02(月) 20:24:03
GetModulePath
110デフォルトの名無しさん:2010/08/03(火) 10:01:24
>108 の自己レスですが、

//TCHAR fName[_MAX_PATH];
TCHAR fName[500];
GetExeFilePath(NULL, fName, wcslen(fName));

としたら,Release/Debugモード両方で正しく動くようになりました.
stdlib.hで_MAX_PATHは260に定義されていますが,
TCHAR fName[260];ではうまく動きませんでした。
ドライブ名などを含めて、英文字40字程度のファイル名ですので
そんなに長くはないのですが..

理由は分かりませんが、動いたので良いことにしまう
111デフォルトの名無しさん:2010/08/03(火) 10:09:03
GetExeFilePath でぐぐってもほとんどヒットしないから
ほとんど誰も使ってないだろうし、確かにどうでもいい。
112デフォルトの名無しさん:2010/08/03(火) 12:40:35
>>110
GetExeFilePath が何なのか知らんが wcslen(fName) は駄目でしょ。
_countof(fName) とかに書き直せよ。
113デフォルトの名無しさん:2010/08/03(火) 12:56:51
おおおお

TCHAR fName[_MAX_PATH];
GetExeFilePath(NULL, fName, _countof(fName));

で出来ました!!
UNICODE指定時には、TCHARは _wchar_tと同じになるって
書いてあったので,wcslen(fName)で良いと思ってました
114デフォルトの名無しさん:2010/08/03(火) 13:10:31
>>113
wcslen() が何をする関数なのかよく調べとけ。
115デフォルトの名無しさん:2010/08/03(火) 19:02:35
ティーチャー
116デフォルトの名無しさん:2010/08/04(水) 02:37:37
間違えてC++の方に書いちゃったんですが
4>C:\Program Files\Microsoft Visual Studio 10.0\VC\atlmfc\include\atlconv.h(757): warning C4995: 'wcscpy': 名前が避けられた #pragma として記述されています。

こういう警告がでます.

1.wcscpy_s wcscat_s vsprintf_s vswprintf_s を使う
2.可能な限り早く、(たとえば、stdafx.hの先頭で)
#define _CRT_SECURE_NO_WARNINGS
する
3.可能な限り早く、(たとえば、stdafx.hの先頭で)
#pragma warning( disable : 4995 )
する

と教わりました.1についてatlconv.hはVisualStudioインストールフォルダのものなんですが変更してもいいんでしょうか?
117デフォルトの名無しさん:2010/08/04(水) 06:00:51
2 3 はwarningのメッセージを消すだけだからあってもなくてもいい。
118デフォルトの名無しさん:2010/08/04(水) 12:12:07
1が一番いいのかなと考えているんですがprogram filesのファイルを変更するのに抵抗がありまして・・・
119デフォルトの名無しさん:2010/08/04(水) 12:49:46
atlmfcが入ってない初心者向けのエディションでも使ってればいいと思うよ
120デフォルトの名無しさん:2010/08/04(水) 13:21:26
Expressでしょうか?
入れなおしてみます
121デフォルトの名無しさん:2010/08/04(水) 15:42:58
気になる鼻毛を引っ張って抜いたら2cmくらいあった
122デフォルトの名無しさん:2010/08/06(金) 16:19:34
ここで質問することじゃないかもしれないですが
どこで質問すればいいかわからずググッても解決法が判らないのでここで質問させていただきます

最近パソコンが重いのでプログラムの追加と削除を見てみると、
上位にMicrosoft visual C++ 2008 express edition SP1 という知らないプログラムがありました
調べてみると開発者ツールのようで、消してもいいかなって思ったんですけど
入れた覚えが無い上に大きいので、もしかしたら初めから入っている重要なプログラムなのでは?と思い
削除に踏みきれません。

それとその直下に日本語用の修正プログラムが6つほどありました

これらのプログラムは一体なんなのでしょうか?

余談ですが、かなり前からDドライブに意味不明なファイル(何かSQLとかがある)が大量に発生し、
しかもそれが削除できないという問題がありまして
もしかしてそれの原因はこれ(C++)なのかな?と思っています
123デフォルトの名無しさん:2010/08/06(金) 17:39:57
そのPCは中古?新品?いつ買ったの?
124デフォルトの名無しさん:2010/08/06(金) 17:58:45
8年位前に買って、1年前にリカバリしました
金が無いので買い替えはしません
125デフォルトの名無しさん:2010/08/11(水) 21:14:35
Visual C++ 2010 Express の新規作成で Win32 プロジェクト を作り、
stdafx.h の #include <windows.h> に続いて
#include <mmsystem.h>
#pragma comment(lib, "winmm.lib")
の2行を足したところ、
c:\program files\microsoft sdks\windows\v7.0a\include\mmsystem.h(802): error C2065: 'int_PTR' : 定義されていない識別子です。
c:\program files\microsoft sdks\windows\v7.0a\include\mmsystem.h(802): error C2146: 構文エラー : ')' が、識別子 'uDeviceID' の前に必要です。
c:\program files\microsoft sdks\windows\v7.0a\include\mmsystem.h(802): warning C4229: 旧形式が使用されています : データの修飾子は無視されます。
c:\program files\microsoft sdks\windows\v7.0a\include\mmsystem.h(802): error C2491: 'waveOutGetDevCapsA' : dllimport データ の定義は許されません。
c:\program files\microsoft sdks\windows\v7.0a\include\mmsystem.h(802): error C2059: 構文エラー : ')'
のような5行1組のエラーが14組、mmsystem.h内14箇所の int_PTR に対応して表示されました。
このエラーに回避方法があればお教え下さい。
126デフォルトの名無しさん:2010/08/11(水) 23:08:20
Expressをやめる
127デフォルトの名無しさん:2010/08/13(金) 15:37:27
Windows 7でVC++ 2010 Expressを使っています。(文字セットはUnicodeです)
OpenGLで日本語を表示するために、FTGLというライブラリを使っています。
http://sourceforge.net/projects/ftgl/

しかし、日本語を表示させようとすると文字化けしてしまいます。
参考: http://d.hatena.ne.jp/yukkepc/20090913/1252822373

この問題は、コントロールパネルからシステムロケールを英語にすると、ちゃんとコンパイルできます。
ただ、この状態だと日本語のファイルパスが全部文字化けしちゃうので開発以外の使用に支障が出てしまいます。
システムロケールを日本語にしたまま、ちゃんとコンパイルするにはどうすれば良いでしょう??

ライブラリはソースも手に入れているので、ソース内をいじることも可能です。

setlocaleする等、色々と試みましたが、解決に至りません。

システムロケール変えればコンパイルできるため、
今は開発時にはいつもシステムロケールを英語にして再起動してるのですが・・・・。
128デフォルトの名無しさん:2010/08/13(金) 17:36:12
ファイルパスに日本語が混ざっていない場所に置けば?
129127:2010/08/13(金) 19:30:29
>>128
あ、いえファイルパス日本語うんぬんは、開発とは関係ない話です。
もちろん開発用のパスは全部英語で統一してます。
分かりにくくてスマソ。

システムロケールを英語にすると、一部の日本語(パスの日本語とか
メニューバーの中の日本語とか)が文字化けしちゃうんですね。

↓こんな感じ
http://iup.2ch-library.com/i/i0136041-1281693513.jpg

なので、開発するときは毎回コンパネでシステムロケールを
英語/日本語で切り替えて再起動させてから始めるんですが、
システムロケール変えずにコンパイル通す方法はないかな、と・・・・。

charをUnicodeに変換するとこが悪いのかと思ってwchar_t使ってみたり、
色々と試してるんですが、ダメぽです・・・・。
130デフォルトの名無しさん:2010/08/13(金) 21:26:11
JaneStyleがUnicode対応していない糞ソフトだということは良くわかった
131デフォルトの名無しさん:2010/08/13(金) 22:40:37
リッチエデット(複数行)のカレットから文字インデックスを求めたいとき
CRichEditCtrl クラス のCRichEditCtrl::LineIndex を使うと
カレットがある行の先頭までの文字インデックスは取得出来ますが、
そこからカレットまではどのように求めればよいのでしょうか?
132デフォルトの名無しさん:2010/08/15(日) 20:19:10
上の131質問はバイト数をプログラムで求めて解決しますた。
133127:2010/08/18(水) 14:59:56
Adobeインストールして愕然・・・。
日本版のイラレもUnicode対応じゃないんですね。
(システムロケールを日本語にしてくれと怒られて起動もできない)

何とか解決する方法はないですかねぇ・・・・。

ふつうにVC++あきらめてMinGW + Eclipseに乗り換える方が良いかな・・・・?
134デフォルトの名無しさん:2010/08/18(水) 15:32:09
MinGW + Eclipseに乗り換えてもシステムロケールの問題は残るだろう
そもそもコンパイルできないって言っているが
コンパイルが失敗して実行ファイルが作られないのか
コンパイルは成功していて実行時に文字化けしてるのか
後者ならソース書き換えれば日本語ロケールでも問題なく動くように出来るだろう
135デフォルトの名無しさん:2010/08/18(水) 15:50:46
開発はvmwareですればいい
136デフォルトの名無しさん:2010/08/18(水) 20:28:13
>>127
これどう?
Microsoft AppLocale Utility
http://www.microsoft.com/downloads/details.aspx?FamilyID=8c4e8e0d-45d1-4d9b-b7c0-8430c1ac89ab&displaylang=ja

ググればWindows 7でインストールする方法も見つかる。
137デフォルトの名無しさん:2010/08/18(水) 22:36:55
VC++ 2010 Express Editionです
わざと失敗させるとnewを呼んだ時点でクラッシュして固まります
つまり、どのcoutも通らないのでエラー処理ができません。どうすればいいですか
int throwBadAlloc(size_t) {
cout << "例外投げ\n" ;
throw bad_alloc();
return 0;
}
int main() {
double *p = NULL;
unsigned long uil = 999999999UL;
_set_new_handler(throwBadAlloc);
try {
p = new double[uil];
cout << "割り当て成功\n" ;
} catch (bad_alloc xa) {
cout << "例外発生\n" ;
if ( !p )// NULLのままかどうか調べている
cout << "p==NULLのまま\n";
}
delete[] p; return 0; }
138デフォルトの名無しさん:2010/08/18(水) 22:43:45
すんません自分で解決しました
数値がでかすぎたみたいです
139デフォルトの名無しさん:2010/08/19(木) 00:55:34
新しく書くコードでは、<new>をインクルードしてstd::set_new_handlerを使うほうがいいと思う。
標準規格に入っているのはこっちだし。
140デフォルトの名無しさん:2010/08/22(日) 06:53:58
自作したライブラリtest.libを他のプロジェクトから#pragma commentで追加する場合

#pragma comment(lib, "絶対path/test.lib") //OK
#pragma comment(lib, "相対path/test.lib") //OK

オプション→プロジェクトおよびソリューション→VC++ディレクトリ
よりライブラリファイルの項目に"絶対path"を追加して
#pragma comment(lib, "Debug/test.lib") //NG
とするとlink1104エラーが発生してしまいます

どう解決すればいいのでしょうか?
141デフォルトの名無しさん:2010/08/22(日) 09:21:00
共有フォルダは無理
142デフォルトの名無しさん:2010/08/23(月) 10:00:31
すみませんが誘導されたので質問を転記します(少し修正)

http://hibari.2ch.net/test/read.cgi/tech/1274395127/792
>visual c++ 2008 express editionなのですが例えばデバッグ出力で
>  ファイル名(行番号) : 内容
>みたいにファイルパスを省いてもジャンプすることができるんですが
>検索結果やエラー表示などでもこんなふうにパスを省くことはできないでしょうか?
>無駄にパス表示が長くて必要な部分を表示するために折り返し・スクロールしないといけません

なにか良い方法はないでしょうか
143デフォルトの名無しさん:2010/08/23(月) 10:35:11
誘導先がおかしいぞ
こっちへいけ
Visual Studio 2008 Part 20
http://hibari.2ch.net/test/read.cgi/tech/1269602041/
144デフォルトの名無しさん:2010/08/23(月) 12:11:28
>>143
すみません、使ってるのがvisual c++なのでこっちに来てみましたが
確かに内容的にもツール寄りですね、向こうに行ってきます
145デフォルトの名無しさん:2010/08/27(金) 13:49:17
VC6 MFC で開発中です。
ファイル選択ダイアログを開いてファイル名を取得する際に、
ファイル名を選択せずに開くことはできないのでしょうか。

CFileDialog を使用していて、
dwFlgには下記を設定してみましたが、
ファイル名未入力を行えませんでした。
OFN_HIDEREADONLY | OFN_PATHMUSTEXIST

ファイル選択ダイアログで下記の動作がしたいのです。
存在するファイル名の場合:正常
存在しないファイル名の場合:異常
ファイル名が選択されない場合:正常

よろしくお願いします。
146デフォルトの名無しさん:2010/08/28(土) 00:54:17
いま電卓を作ってるのですが割り算で躓いてしまいました…
初歩的な質問で申し訳ないのですが、整数と整数の割り算で整数と小数の答えを出す式はどう書くのでしょうか?

int n,a,b,c,d,e,f,g,h;
double i=g/h;


case 4:
printf("aを入力してください----");
scanf("%d",&g);
printf("bを入力してください----");
scanf("%d",&h);

printf("%d÷%dは%f\n",g,h,i);
break;
}
147デフォルトの名無しさん:2010/08/28(土) 03:42:18
初期化時に計算すんな

double i;

scanfのあとで
i=g/(double)h;

それからdoubleにiを使うのも感心せんな
148デフォルトの名無しさん:2010/08/28(土) 19:55:02
146です出来ました!ありがとうございます
入門書見直したらキャスト演算子てしっかり載ってましたすいません

iだとint型みたいで紛らわしいですねsyousuにしときました
149デフォルトの名無しさん:2010/09/02(木) 00:27:53
vc6 MFC環境で開発しています。

目的:postmessageで飛ばした処理が終わるのを待ってから
処理を続行したいと考えています。

sendmessageも考えましたが、
処理終了までの間で、postmessage先でpostmessageを使っていて・・・

下記のような処理を考えたのですが、何かの方法でwaitが浮かびません。
何か方法はないでしょうか。
WaitForSingleObjectで" 待機可能なタイマ"を待機できるとありましたが、
タイマを待つ方法が見つけられませんでした。
===================================
postmessage();
int aa;
aa = settimer(NULL,1,100,NULL);
何かの方法でwait(); (100ms*100で抜けたい)
処理続行
===================================
ontimer(nIDEvent)
{
if(1 == nIDEvent)
{
if((TRUE == 処理終了フラグ) or (100 == m_timercnt++)){
KillTimer(1);
}else{
aa = settimer(NULL,1,100,NULL);
}
m_timercnt++;
}
150nezmeyland:2010/09/02(木) 10:36:33
vc6 -> vc2005(vc8) へコードを移植をしたいのですが,
DoModal の返り値の型が
INT -> INT_PTR に変わっているのは無視しても良い?
つまり,
INT nResponse = dlg.DoModal();
から
INT_PTR nResponse = dlg.DoModal();
に,いちいち修正しなくても良い?
151デフォルトの名無しさん:2010/09/02(木) 13:52:18
64ビットにする気が永劫無ければいいんじゃねえの
152デフォルトの名無しさん:2010/09/04(土) 11:53:44
Visual C++ 2010でソースをCとしてコンパイルする/C++としてコンパイルするみたいな切り替えはできないのでしょうか?
153デフォルトの名無しさん:2010/09/04(土) 11:56:30
拡張子を替える
154デフォルトの名無しさん:2010/09/04(土) 19:07:39
設定画面で対象言語を変えるとかアホだよね
155デフォルトの名無しさん:2010/09/05(日) 15:09:03
質問なのですが
例えば"xyz…"と確保したchar配列(というか配列)ではデバッグで[+]を開いていくと
[0] xxx 'x'
[1] xxx 'y'
  …
というように見ることができます
配列専用かと思いきやstd::stringでもそのように見ることが出来ています
一方newで配列を作り、その先頭ポインタを確保したとき
その時のデバッグ窓では開いていっても実質
p = (アドレス) "xyz…"
しか確認できません(それ以上開いても先頭文字しか確認できない)

どういう風に作ればstd::stringのようにメモリの動的確保でも配列っぽく確認ができるようになるでしょうか?
156デフォルトの名無しさん:2010/09/05(日) 15:35:33
メモリのダンプで充分だろ
157デフォルトの名無しさん:2010/09/05(日) 15:47:41
autoexp.dat でググれ
158デフォルトの名無しさん:2010/09/05(日) 16:15:58
>>156
メモリのダンプとは>p = (アドレス) "xyz…" のことでしょうか?
確かに実質的にはこれで十分ではあるんですがstd::string(というかクラス)での配列表示が気になって

>>157
正しくドンピシャでした
std::stringもこれで解釈されてたんですね、なんだかとても面白い物の情報ありがとうございました
159デフォルトの名無しさん:2010/09/10(金) 22:52:58
$(ProjectDir)Main.cpp
$(ProjectDir)Hoge.cpp
$(ProjectDir)Hoge\Hoge.cpp

以上のようなファイル構成でビルドしたら
ひょっとしてHoge.objは上書きされてビルドエラーになっちゃいますか?
ビルドすると関数が見つからないと言われてしまいます

160デフォルトの名無しさん:2010/09/10(金) 23:08:10
名前変えて通るなら名前の問題だろうし、だめならそれ以前の問題
それぐらい試してから質問しろ
161デフォルトの名無しさん:2010/09/10(金) 23:56:43
>>159
そういうケースは Hoge\* だけで先にライブラリのプロジェクト作るかな
162デフォルトの名無しさん:2010/09/10(金) 23:57:35
>>159
objの衝突を避けるには、

cppの片方をHoge_0とか書き換える
または、
cppを右クリック→プロパティ
構成プロパティ→C/C++→出力ファイル→オブジェクトファイル名
の項目を編集すればおk
たとえば、$(IntDir)%(Filename)1.obj
とか
163デフォルトの名無しさん:2010/09/11(土) 11:35:54
>>160
すいません^^;

>>161
さすがにそれはプロジェクトが乱立して大変なことになりそうです

>>162
これなら現実的ですね
ソースフォルダのルートからの相対パスを-で区切ってobj名にすることにしました


皆さんレスどうもでした
164デフォルトの名無しさん:2010/09/11(土) 17:50:12
$(ProjectDir)Main.cpp
$(ProjectDir)Hoge.cpp
$(ProjectDir)Hoge-Hoge.cpp
$(ProjectDir)Hoge\Hoge.cpp

ようなファイル構成でビルドしたら
またエラーになるんですねわかります
165デフォルトの名無しさん:2010/09/11(土) 17:53:07
サブフォルダをなくして
Hoge\Hoge.cpp
のかわりに
Hoge-Hoge.cpp
を使えばいいんじゃないかって思った
ちょっと見苦しいけど
166デフォルトの名無しさん:2010/09/11(土) 18:57:55
サンプルビルドする時とか
いちいち手で設定直すの面倒な時はスクリプトで片付ける
もしかすると正当でスマートなやり方があるのかも知れないけど
調べるより自分でプログラム書いたほうが早い
167デフォルトの名無しさん:2010/09/14(火) 01:07:37
スレ違いすみません。需要がありそうなんでここに。。

@〔ソフトバンククリエイティブ〕【明快入門 Visual C++ 2005 ビギナー編】/ 林 晴比古 (著)
 定価: 3,990 円(税込み)

A〔秀和システム〕【VisualC++逆引き大全500の極意】(開封済み・CD付き)/ 住吉乱(著)
 定価: 2,520 円(税込み)


↑をセットで、 3000 円+送料で売ります。
(参考までに送料は、最も安いと思われる「ゆうメール」だと、3kg 以下で590円です。)


プログラマに憧れてましたが、あまりに難しく、適性がないので、もうこの道は諦めることにしました・・orz
なのでほとんど使用感はありません。(笑)
書店でつけてもらったカバーをそのままつけたまま使ってましたので、帯もカバーも折れもシミもありません。
最初は張り切ってたので、@は数ページ、蛍光マーカーが引いてある箇所がありますがw
Aなんか、ほとんど開いてもいませんw

「逆引き」の方は、既に絶版重版未定になってるようで、中古の価格相場が分からなかったのですが、
状態の良さにしてはかなり安く設定したつもりです。

これからVC++を始める方、お勉強にどうぞw
メールくだされば、画像や、詳細等、晒します。
よろしくお願いします。


スレ汚し、失礼いたしました。
168デフォルトの名無しさん:2010/09/14(火) 01:09:52
2chではご法度
169デフォルトの名無しさん:2010/09/14(火) 09:09:23
「逆引き」シリーズは値段のわりにサンプル豊富なイメージがあったから
使えそうと思って買ったら、VCの逆引きは手抜きがひどくて失敗だった。
タイトルに「500の極意」とうたってるから、無理やり500個項目埋めた感じ

例えば
095 オーバーラップウインドウ
096 ポップアップウインドウ
097 レイヤードウインドウ
099 子ウインドウ

こんな感じでウインドウスタイルのフラグ変えただけで項目数だけ無意味に消化していく
170デフォルトの名無しさん:2010/09/14(火) 09:14:58
これはひどい
似たような本はときどき見かける
171デフォルトの名無しさん:2010/09/14(火) 22:40:27
VisualC++のWinフォームアプリケーションでフォルダのアクセスログを収得する
ツールを作りたいのですが、フォルダのアクセルログの収得の仕方が分かりません
172デフォルトの名無しさん:2010/09/14(火) 22:57:37
http://itpro.nikkeibp.co.jp/article/COLUMN/20061127/254976/
あとはイベントビューアーのデータの読み取り用APIで
173デフォルトの名無しさん:2010/09/14(火) 23:07:58
ぐぐったらそれ見つけたけどserver 2003と書いてあった
174デフォルトの名無しさん:2010/09/14(火) 23:20:17
で?
175デフォルトの名無しさん:2010/09/14(火) 23:22:01
よく知らないのにぐぐって教えてるんだろうなと思った
176デフォルトの名無しさん:2010/09/14(火) 23:32:58
で?
177デフォルトの名無しさん:2010/09/14(火) 23:41:38
そうか Win95 での方法が知りたかったんだな
こりゃ配慮が足りなかった スマソ スマソ
178デフォルトの名無しさん:2010/09/15(水) 18:04:16
すみません質問です
minGWで作ったdllをVC++のソースから利用出来ますか?
また逆に
VC++で作ったdllをminGWの方で利用出来ますか?
出来たら方法も教えてください。
179デフォルトの名無しさん:2010/09/15(水) 18:50:35
DLLの依存関係を調べる
180デフォルトの名無しさん:2010/09/15(水) 20:09:19
それが出来ないんだったらMinGWで作ったバイナリはWindowsで動かないな
181デフォルトの名無しさん:2010/09/15(水) 20:11:08
どうなんだろ、VC++で作ったdllならlibも一緒に作られるでしょ。
試しにリンクしてみればいいんじゃないかな。
182デフォルトの名無しさん:2010/09/15(水) 20:26:19
*.libはlib*.aにリネームすれば -l にそのまま使えるという事実はあまり知られていない
183デフォルトの名無しさん:2010/09/15(水) 20:50:13
質問があります。
Visual C++でstrcpy_sって例外catchできますか?

先輩曰く、Cのランタイムエラーがでるから
どうにかすれば例外をcatchできるはずだって言ってました。

ちなみに、以下の文をなんとかcatchしたいと思っています。
const char string2 = NULL;
char string[80];
strcpy_s(string,sizeof(string),string2);

ご教授ください。よろしくお願いします。
184デフォルトの名無しさん:2010/09/15(水) 20:53:49
ぬるぽ
185デフォルトの名無しさん:2010/09/15(水) 21:02:29
相手がthrowしてくれないとcatchできないから、無理じゃないのかな。
試しに catch ( ... ) で例外全部拾ってみれば?
これでだめならダメじゃないかと。
186デフォルトの名無しさん:2010/09/15(水) 21:08:30
>>185
だめでした。
でも、納得してくれないんですよ。
調べが足りないんじゃないの?って
MSDN見ても例外返さないとしか読めないんですが・・・。

人格否定チックな言われ方でちょっと鬱です。
187デフォルトの名無しさん:2010/09/15(水) 21:20:44
例外なんざ来ねえよ
_invalid_parameterから_invoke_watson、_call_reportfaultと呼び出して最後はTerminateProcessで終了だ
どうにかする時は_set_invalid_parameter_handlerだ


http://msdn.microsoft.com/ja-jp/library/ksazx244.aspx
>指定した関数がアプリケーションを終了する場合、無効なパラメーターを受け取った関数に制御が戻ります。
日本語ひでぇ
終了するのにもどんな
188デフォルトの名無しさん:2010/09/15(水) 22:02:37
構造化例外じゃないの?try, catchじゃなくて、__try, __exception。
よくは知らないんだけどw
189デフォルトの名無しさん:2010/09/15(水) 22:12:05
>>179
意味が良くわかりません

>>180
やっぱりそうですよね

>>181
試してみます

>>182
なるほど
期待出来そうです

みなさんありがとうございました
190デフォルトの名無しさん:2010/09/15(水) 22:46:25
FAQにもろ書いてあった
191デフォルトの名無しさん:2010/09/15(水) 22:51:06
>>188
/EHaにしようと何も来ない
試せば分かる
http://codepad.org/nArXn4tu
192デフォルトの名無しさん:2010/09/15(水) 23:36:31
>>185>>187>>188>>191
ありがとうございました
そう報告してみます
193デフォルトの名無しさん:2010/09/16(木) 15:23:35
どなたか詳しくてわかりやすい参考書がありましたら教えてください
194デフォルトの名無しさん:2010/09/16(木) 16:26:17
//Number of vehicles within the problem
VehicleNo = data->getFleetVehicles().size();

//Number of vertices within the problem
DemandNo = data->getVertexs().size()-1;

//Getting the capacity of the first vehicle in the fleet vehicles map
VehicleCapa = data->getFleetVehicles().begin().value()->getCapacity();

というプログラムがあったのですが、これはクラスの継承とやらを行っているのですか?
勉強を始めたばかりの素人なので全くわかりません
正直 size(), begin(), value() や何故2番目が size()-1 かもわからないです
説明か、手がかりになることだけでも教えていただけるとありがたいです
スレ違いでしたらすいませんが、よろしくお願いします
195デフォルトの名無しさん:2010/09/16(木) 16:33:11
>193
10年前なら勧められる本はあったけど、
今からあえてVCやるやつが何考えてるか全然理解できない。
196デフォルトの名無しさん:2010/09/16(木) 16:37:50
>>194
それC++ならC++スレへ
197デフォルトの名無しさん:2010/09/16(木) 17:52:37
>>194
入門書を読みましょう
198デフォルトの名無しさん:2010/09/16(木) 18:55:55
>>195
>今からあえてVCやる
横から失礼
ならば今からやるならおすすめはなんなんでしょう?

今まさに何か言語を勉強しようと思って色々見ててここに来ました
ウィンドウズ上で何か簡単なゲームやアプリが出来ればいいななんて考えてます
199デフォルトの名無しさん:2010/09/16(木) 19:03:21
C♯に決まってるやん
200デフォルトの名無しさん:2010/09/16(木) 19:08:40
>>196
すいません、スレ違いでしたか

>>197
読んでもよくわからなかったもので
すいません
201デフォルトの名無しさん:2010/09/17(金) 20:24:20
case WM_CREATE:
// TIMER_IDは 1
// TIMER_ELAPSEは 20 で DEFINE してある
SetTimer(hWnd,TIMER_ID,TIMER_ELAPSE,NULL);

case WM_DESTROY:
KillTimer(hWnd,TIMER_ID);

こんな感じで作ってるんだけど

case WM_TIMER:

のハンドラに一切来てくれない。 orz

SetTimerもKillTimerも戻り値を調べると
正常に実行されている(エラー値は返してない)。
ただ、デバッガで見ると、ウィンドウを最小化させる時だけ
case WM_TIMER: の部分に来てる。
最小化させないと10秒待とうが20秒待とうがWM_TIMERのとこには処理が行かない。

どういった問題が考えられる?
202デフォルトの名無しさん:2010/09/17(金) 20:49:20
>>201
WM_CREATEがきたときは
CreateWindowが戻り値を返していなくて、
hWndに有効なウィンドウハンドルが入っていないとかあるかもしれない
確認してみてはどうだろう
203201:2010/09/17(金) 21:00:51
>>202
どうもありがとう。

WM_LBUTTONDOWN:
の中で SetTimer してみたり、いろんなメッセージで
試してみたけど、どれも同じ(出来ない)・・・

前に別の(SetTimer使う)プログラムをやった時もこういう風になった。

その時は諦めてしまった orz
204デフォルトの名無しさん:2010/09/17(金) 21:13:57
>>203
できるだけ小さい構成でうpしてみたらどうだろう
これだけの情報だと原因を探るのがきびしいんじゃないだろうか?
205デフォルトの名無しさん:2010/09/17(金) 21:30:19
case文のミスでKillTimer
206デフォルトの名無しさん:2010/09/17(金) 21:52:30
breakが抜けているってオチは?w
207198:2010/09/17(金) 22:09:29
>>199
他に回答がないってことはC#でFAなのかな?
んじゃちょっくらC#覗いてみまふ
208デフォルトの名無しさん:2010/09/17(金) 23:38:51
>>206
1・2・3・それだぁ
209デフォルトの名無しさん:2010/09/17(金) 23:44:20
>>208
おばかさんw

ま、俺もやったことあるからw
210デフォルトの名無しさん:2010/09/17(金) 23:58:51
211デフォルトの名無しさん:2010/09/18(土) 00:05:38
しかしswitchがbreakで継続・離脱を選択できる利点って欠点を覆すほどあるんだろうか
それとも全然別の理由で存在するのか
212デフォルトの名無しさん:2010/09/18(土) 00:08:37
>>207
Python
213デフォルトの名無しさん:2010/09/18(土) 00:13:03
>>211
うーん、まあ、便利なときは便利だよw

つか、今から変えるとなったら、そっちの方が影響甚大だから、単純に合理的とかって理由では
変えられないわw
214デフォルトの名無しさん:2010/09/18(土) 01:09:25
便利な場面がちょびっとあったとしても書き忘れと判断されかねないから
そんな書き方はまずいよなぁ
215デフォルトの名無しさん:2010/09/18(土) 01:14:31
>>214
そうだよね
コメントで「ここはスルーするからbreak不要」とか書いておかないと
あとで他人がメンテするときに勝手に入れられたりするかもねw
216デフォルトの名無しさん:2010/09/18(土) 01:16:09
まあ、swtich caseはCが最初だからな。
後発は、breakの有用性を勘案して、switchに関しては、breakを不要としたのが多いけれど。

でも、Cという言語の性格を考えると、breakを必要とする、という今の方が、合っている、と
も言える。
217デフォルトの名無しさん:2010/09/18(土) 01:19:02
>>214-215
そこまでアホじゃなくても
case : の順番を入れ替えたりするときに酷い目に遭うよな
218デフォルトの名無しさん:2010/09/18(土) 02:27:12
switchスルーは前置特殊処理(ただし一つ)はできるけど後置特殊処理ができないのがな
そしてスルーを多用するswitch文があったら脳がねじれそうだ
219デフォルトの名無しさん:2010/09/18(土) 07:59:16
switchにbreakがあるのはアセンブリ言語の名残って聞いたことある
220デフォルトの名無しさん:2010/09/18(土) 08:08:59
>>219
んー、名残り、というか、そもそもアセンブラをそもそも高級言語の皮かぶせたみたいのが、
Cで、そういう部分を色濃く表しているのがswitch-case

昔はMACROSとかあってだね、その辺見ると、すぐわかるぞw
221デフォルトの名無しさん:2010/09/18(土) 08:10:21
つまり、あれだ、アセンブラはとにかく何かしらでJUMPしない限りは逐次実行するのだw
222デフォルトの名無しさん:2010/09/18(土) 08:29:30
>>218
そこで goto ですよ
223デフォルトの名無しさん:2010/09/19(日) 14:41:51
SDKのプログラムで、ただウィンドウを表示するだけのプログラムなんですが
Enterキーを押すとウィンドウが閉じてしまいます。
WM_KEYDOWNやWM_CHARも送られてないみたいなんですが
これってどういう理由が考えられるでしょうか?
(DelphiのFormはEnterキーを押しても閉じない)
224デフォルトの名無しさん:2010/09/19(日) 15:07:34
ESCでも閉じる?
ダイアログはEnterでOKボタン、ESCでキャンセルボタン押したのと同じ動作する。
225デフォルトの名無しさん:2010/09/19(日) 15:09:00
OKボタンにフォーカスが当たってるから
226デフォルトの名無しさん:2010/09/19(日) 16:14:44
>>224,225

ESCでも閉じます。
ただ、ダイアログではなく、CreateWindowで作ったウィンドウなんですが・・・
(勘違いしてたらすみません。)
227デフォルトの名無しさん:2010/09/19(日) 22:36:40
Visual C++ 2010 Expressを使っているのですが、標準出力に出力する
簡単なプログラムを実行すると、自動でDOS窓が開いて結果が出力されるの
ですが、すぐにDOS窓が自動で閉じられてしまいます。
で、以前のバージョンだと、CTRL+F5で実行すると、結果出力後もDOS窓は
キーを押さない限り、閉じられなかったのですが、2010でそれをやっても
閉じられてしまいます。自分で予めDOS窓を開いておいて実行すれば大丈夫
ですが、それも面倒です。
何か方法があるのでしょうか?
228デフォルトの名無しさん:2010/09/19(日) 22:42:12
つ getchar()
229デフォルトの名無しさん:2010/09/19(日) 22:45:23
コードの方で制御するということですか。
ありがとうございました。

しかし、なぜ機能が変わったんでしょうかね…
230デフォルトの名無しさん:2010/09/19(日) 22:56:32
こっちのが正常
231デフォルトの名無しさん:2010/09/19(日) 23:18:32
そんな簡単なプログラムでいちいちVC立ち上げて
プロジェクト作ってとかやってる方がよっぽど面倒
232デフォルトの名無しさん:2010/09/19(日) 23:27:23
DOS窓用のプログラム作ってるのにDOS窓苦手なんだろ
233デフォルトの名無しさん:2010/09/19(日) 23:33:17
みなさんは簡単なプログラムはどのようにコンパイル、実行してるのですか?
234デフォルトの名無しさん:2010/09/19(日) 23:55:15
普通にVC立ち上げてプロジェクト作ってる。
235デフォルトの名無しさん:2010/09/20(月) 00:11:24
>>223
break; が抜けてるんじゃないの?
236デフォルトの名無しさん:2010/09/20(月) 02:48:12
( ゚д゚)
237デフォルトの名無しさん:2010/09/20(月) 06:37:13
_CrtSetReportMode(_CRT_WARN, _CRTDBG_MODE_WNDW);
_CrtSetReportFile(_CRT_WARN, _CRTDBG_FILE_STDOUT);
_CrtSetDbgFlag(_CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF);

この3行を加えてみた。
で、例えばmallocでメモリ確保 → 開放せず、だとメモリリークの
メッセージで怒られるが
SetTimerして → KillTimerをしない、だとメッセージが出ない。

1.これってAPIが原因のメモリリークは検出できない?
2.テキストファイルに出力する方法ってない?

(プログラムはC++でなくC+SDK)
238デフォルトの名無しさん:2010/09/20(月) 07:45:38
>>237
> 1.これってAPIが原因のメモリリークは検出できない?
YES。あくまでCランタイムのメモリリーク検出機能だからね。

> 2.テキストファイルに出力する方法ってない?
コピー&ペースト。
239237:2010/09/20(月) 12:52:34
>>238
そっか。APIは無理なんだ。
情報ありがとう。
240デフォルトの名無しさん:2010/09/21(火) 00:32:42
現在、C/C++言語(拡張含む)によるWindowsアプリケーションの作成にあたって
もっとも主流なスタイルは次のどれなん?
・Win32API(Win64API)
・MFC
・C++/CLI

なんかプロになるにはWin32APIの知識がいるとか聞いたけど…
241デフォルトの名無しさん:2010/09/21(火) 00:45:12
あ、あと
・WTL
なんて選択肢もあったね
242デフォルトの名無しさん:2010/09/21(火) 00:54:33
Qt
243デフォルトの名無しさん:2010/09/21(火) 01:33:45
まあ、Win32APIの知識がないと、結局のところ、MFCを理解するのは難しいからね。
244デフォルトの名無しさん:2010/09/21(火) 02:21:32
WTLってMFCの簡易版みたいなもの?
245デフォルトの名無しさん:2010/09/21(火) 03:38:14
wxWidgets
246デフォルトの名無しさん:2010/09/21(火) 15:37:44
これまで、WINDOWS98でVC++4.0を使っていて、
この前、WINDOWSXPのノートパソコンを中古で買って、
VC++2008をダウンロードしてプログラミングし直そうと思いました。
(VC++2010は次のパソコンを買ったときにする予定)
だけど、これらの言語が、文法とか関数が異なり過ぎていて、
しかも、VC++2008のヘルプがわかりにくくて使えないです。
こういう場合、VC++2008の初心者用の本を買ったほうがいいでしょうか。
あるいは、必要最低限の知識をまとめて習得できるサイトとかあればいいのですが、
ない場合は、ここのスレで1つの疑問を1回1回聞かなければいけないでしょうか。
とりあえず、ここのスレに来てわかったこと。
MessageBoxは、MessageBox::Show("〜")と書く。
他には、実行ファイルのアドレスの取得法。まだ試してないですが。
VC++4.0ではできなかったので。
247デフォルトの名無しさん:2010/09/21(火) 15:58:37
>>246
せっかくだからC#に移行したほうがいいよ
248デフォルトの名無しさん:2010/09/21(火) 16:55:32
>>246
C++/CLRだろ
それC++の名前をかぶった変態だから
初心者が使うもんじゃない
>>247が言うようにC#に行くことをお勧めする
249246:2010/09/21(火) 18:36:37
C#は、VC++2008をある程度やり通したあとでやってみます。
数年後にWINDOWSVISTAか7のパソコン買ってVC++2010やったあとにやろうとも思ったけど、
最近買った今持ってるWINDOWSXPのパソコンでC#を早く始めても良い、ということで?
それに、VC++4.0の次にC#では飛び過ぎない?
それと、プログラミングに関しては、初心者ではありません。10年以上はやってます。ただゆっくりなもので。
何しろ、VC++4.0にはコンテナ(vector、list等)がなくて、別のC++でマスターしてます。
もう1つ。VC++4.0で作ってたのは、フォームというかダイアログというか、のプログラムでした。
250デフォルトの名無しさん:2010/09/21(火) 19:46:55
すごく香ばしいです。
251デフォルトの名無しさん:2010/09/21(火) 19:48:13
釣りならよそに行ってくれ
252デフォルトの名無しさん:2010/09/22(水) 22:18:13
VC2010に挑戦しているのですが、ツールボックスからSerialPortリソースを
フォームデザインにドラッグアンドドロップで登録できるのですが、
別のclassにて using namespace System::IO::Ports;を宣言し
public: SerialPort^ port;とテーブル宣言すれば利用できるのですが
それぞれの使い方に何か違いはあるのでしょうか?
253デフォルトの名無しさん:2010/09/22(水) 23:50:45
違いがわからないないなら違わないのと同じ
254デフォルトの名無しさん:2010/09/27(月) 13:45:04
VC2008で作成中のアプリケーションに
独自のコマンドラインオプションを追加しました。

そのコマンドラインオプションごとの動作のデバッグを行おうとすると、
プロジェクトのプロパティ内の「デバッグ - コマンド引数」を
こまめに設定しなおすしかないのでしょうか?
255デフォルトの名無しさん:2010/09/27(月) 21:55:17
すみません。int型(4バイト)の変数のバイトを逆順にバイトスワップさせる関数って有るのでしょうか?
stdlibのswap関数は見つけたのですが別物なようで・・。
256デフォルトの名無しさん:2010/09/27(月) 21:56:16
_byteswap_ulong
257255:2010/09/27(月) 22:50:40
>>256
ありがとうございますっ
258デフォルトの名無しさん:2010/09/27(月) 23:06:46
すみません。BYTE配列中からint型(4バイト)のデータを以下のような
int num = (int)&barray[6]; これに近い文法で抜き出す方法はないでしょうか・・?
259デフォルトの名無しさん:2010/09/27(月) 23:36:06
*(int *)&
260デフォルトの名無しさん:2010/09/28(火) 03:56:15
すいません、C++、というかプログラム自体初心者ですが、
シリアル通信で短点と長点を組み合わせた符号を受信すれば、
符号に応じたアルファベットのキー出力がkeybd_eventで行われる、
というVisual C++2003で書かれたフリーウェアソースコードの修正?をしています。
.vcprojや.rcファイルなどいくつかのファイルがなかったので、
見よう見真似で頑張って作ってみてエラーなしにコンパイル出来るようにはなりました。

出来たアプリケーションを立ち上げてシリアル通信でモールス符号を送信してみれば、
問題なく動くのですが、ただひとつだけ…
キー出力「p」を出すための符号「.--.」を送信した場合だけ何故か大文字の「X」(エックス)が
出てしまいます。

「p」の符号と他のアルファベットの符号を入れ替えてみても何故か「p」を出力する時だけ
「X」が出てしまいます。なので「.--.」という符号の形に問題があるわけではなさそうです。
ためしにkeybd_eventでキーを出力する直前にAfxMessageBox();で符号の中身を見て見ると、
「p」の時にはちゃんと「.--.」が入っています。

ソースコードとにらめっこしてみてもこれ以上は自分には荷が重いとギブアップして
しまいました。

どなたかファイルをアップロードするのでおかしそうなところを教えていただけると
ありがたいです。

一応パスワードをかけておきます
pass:vc

http://www1.axfc.net/uploader/H/so/116543

この手のプログラム系スレッドで質問するのは初めてなので質問の仕方に過不足あったら言ってください。
261デフォルトの名無しさん:2010/09/28(火) 04:03:42
Xは「-..-」だな
プログラムの方じゃなくて符号のテーブルが間違ってるんじゃないか
262デフォルトの名無しさん:2010/09/28(火) 04:25:04
>>261
符号のテーブルは書き出したアプリケーション.exeファイルと同フォルダに
.txtファイルとして存在してユーザーが自由に変更出来るようになってます。
自分も真っ先にそこを疑ったんですが、
そこでどう変更しても他は問題なくても「p」だけは「X」として出力されてしまうんです。

ちなみにコンパイルしたアプリケーションも先ほどのアップロードファイルの中に含まれてます。
263デフォルトの名無しさん:2010/09/28(火) 04:26:55
morse.txt の中に
-..- X
-..- x
の二つあるね
全然関係ないとは思うけどちょっと気になった
264デフォルトの名無しさん:2010/09/28(火) 04:33:40
>>262
電鍵持ってないんだけど
どうやって入力すればいい?
265デフォルトの名無しさん:2010/09/28(火) 04:35:40
元ネタはこれかな
ttp://www.musenken.net/project/denken/
266258:2010/09/28(火) 04:41:21
>>259
感謝・・!
267デフォルトの名無しさん:2010/09/28(火) 04:43:38
BeepとMessageBox以外は変えてないのか
268デフォルトの名無しさん:2010/09/28(火) 04:53:21
>>260
ZIP で 8MB あるけど Debug と Release の中の *.pch はいらないから消してからあげて
269デフォルトの名無しさん:2010/09/28(火) 09:27:33
MessageBoxじゃなくてデバッガ使えるようになろう
270デフォルトの名無しさん:2010/09/28(火) 12:57:41
>>263
いちおう片一方、もしくは両方消してみたけど関係ありませんでした

>>264
そ、それは…
とりあえずKeyboard.cppの中のInput()関数を直接「.--.」の符号でどこかから呼び出してみる、
とか?

>>265,267
そうです、Beep関係はコンパイルエラーが出たのでそれ系の関数は全部削除しました。
もともと音はいらないので。
あ、あとリンカの追加の依存ファイルにあれこれ付け足してみたような…。

>>268
次からは消します、ありがとうございます

>>269
そう…ですね。
271デフォルトの名無しさん:2010/09/28(火) 13:17:35
>>270
こんなコードを書いたらどうなる?
GetDlgItem(IDC_EDIT1)->SetFocus();
Global::SendKey(".--.");
272デフォルトの名無しさん:2010/09/28(火) 13:33:15
>>271
やってみました、同じですねえ、「X」が出ちゃいます
273271:2010/09/28(火) 14:28:57
>>272
VS2008でシリアル関係を削除したコードでやってみたけど"p"が出たよ。
274デフォルトの名無しさん:2010/09/28(火) 14:35:03
>>273
こっちはVisual Studio2003です。
バージョンの違いが関係あるんでしょうか…。
あとハッピーハッキングキーボードという
ちょっと変わった(?)キー配置のキーボード使ってるんですが、
キーボードのコードを引っこ抜いてもダメでした。

ただ作者さんのサイトにあるアプリケーションファイルを落として
そちらを起動すると問題なく動作しました。
275デフォルトの名無しさん:2010/09/28(火) 15:22:44
Service Pack入れてなくてMSKB832904もろとか無いよね?
276デフォルトの名無しさん:2010/09/28(火) 15:48:27
>>275
> MSKB832904もろ

っていうのはよくわかりませんでしたが、Service Packは入れてませんでした。
XPだとこちらのSP1でいいんですよね?

http://www.microsoft.com/downloads/details.aspx?familyid=69D2219F-CE82-46A5-8AEC-072BD4BB955E&displaylang=ja

今ちょっと出先なので家に帰ったら一応入れてみます。
277260:2010/09/29(水) 01:37:22
途中で失敗して二時間くらいかけてSP1インストール成功したんですが、
やっぱりダメでした(TДT)PC再起動しても無理です。
なんでだ…

「p」を出力できたという方、改編したソースコードいただけたら嬉しいです
278デフォルトの名無しさん:2010/09/29(水) 01:42:42
あ、SP1当てたので一応ソリューションのリビルドやってから確認しました。
コンパイルの時警告は

LINK : warning LNK4089: 'OLEAUT32.dll' へのすべての参照は /OPT:REF によって廃棄されます。

のみです。
279デフォルトの名無しさん:2010/09/29(水) 02:15:42
なんで VC++2003 にこだわるの?
VC++2010 とかじゃだめなん?
280デフォルトの名無しさん:2010/09/29(水) 12:50:28
簡単な質問なのですが、よろしいでしょうか?

構造体内のポインタ関数へのアクセスの書き方は
普通に(*構造体名 . 関数名)();という書き方でよろしいのでしょうか?
281デフォルトの名無しさん:2010/09/29(水) 13:38:10
実際にやってみりゃいいのに
282271:2010/09/29(水) 13:52:52
>>277
色々と試してみたら現象が出たよ。
最適化が影響してるみたいだけど詳細は分からん。
最適化を無効にしたらどうなる?
283デフォルトの名無しさん:2010/09/29(水) 15:31:01
ポインタ関数ってなによ
284デフォルトの名無しさん:2010/09/29(水) 15:31:45
>>280
アクセスだけなら
ふがふが = 構造体名 . 関数名(ほげほげ);
285デフォルトの名無しさん:2010/09/29(水) 16:59:37
struct で クラスを作ってるのでわ?
286260:2010/09/29(水) 17:10:03
>>282
最適化無効にしたらできました!
マジ嬉しくて泣きそうです!

>271さんも皆さんもありがとうございました!
287デフォルトの名無しさん:2010/09/29(水) 20:43:29
VisualStudio2003を使っているんですが、
gccのリンカスクリプトみたいにセクションを自由に
配置するにはどうすればいいでしょう?

ある変数(数十MB)を1MB境界に配置したいんです。

#pragma data_seg()でセクションは生成できるけど、
アドレスは自由に配置できない。
attribute(align())も上限が8192。
288デフォルトの名無しさん:2010/09/29(水) 20:50:57
アライメントしたいだけなら_aligned_malloc使ったほうが幸せになれるんじゃないか?
289287:2010/09/29(水) 21:01:31
>>288
ありがとうございます。
2003だと_aligned_mallocが無いみたいです。
290260:2010/09/29(水) 23:37:00
うわ、今家帰って来て実際に符号打って確かめたんですが、
たしかに最適化無効にすると「p」が「X」になることはなくなりました、
が、今度は何故か「a」が「S」になっちゃいます。

最適化オプションを変更してみると以下のことがわかりました。

「a」→「S」
最適化無効
最大限の最適化
カスタム

「p」→「X」
プログラムサイズ
実行速度

カスタムにしてその下のパラメーターをあれこれ変更しても「a」→「S」になります。
ちなみにもともと配布されてるアプリケーションは問題なく全ての文字を打ち込むことができました。
291デフォルトの名無しさん:2010/09/30(木) 02:26:18
VC2003をやめろって言ってるのに
292デフォルトの名無しさん:2010/09/30(木) 03:25:44
お金がないんですよー
293デフォルトの名無しさん:2010/09/30(木) 07:51:09
Global.cpp line:43
mapVKey["l" + (1, 'a'+i)] = Shift('A' + i);
おかしいのここじゃないの?
294デフォルトの名無しさん:2010/09/30(木) 08:44:50
自分で作ったプログラムならともかく、
拾ってきたゴミいじっても、ろくなことない。
さっさと捨てた方が吉
295デフォルトの名無しさん:2010/09/30(木) 12:41:20
すみません。
1つのBYTE配列を「長さが毎回異なるBYTE配列3つの連結」で作っているのですが、
データの繋ぎ目(変わり目)の良い表し方は無いでしょうか?

できるだけ常にBYTE配列のサイズを小さく抑えたく、
特定の値を目印に・・とは考えるのですが、偶然少数などで同じビット配列が来たら酷い事になるのでは・・等と
心配になってしまいます。 何か良い方法は無いでしょうか・・?
296デフォルトの名無しさん:2010/09/30(木) 12:57:57
VC初心者スレで質問する意図がわからない
297デフォルトの名無しさん:2010/09/30(木) 13:11:13
ひとりごと
298デフォルトの名無しさん:2010/09/30(木) 13:29:25
(´・ω・`) しょぼん・・
299298:2010/09/30(木) 13:42:38
確かにスレ違いっぽいですね、よそで聞いて来ようかと思います。失礼しました。
300デフォルトの名無しさん:2010/09/30(木) 14:07:33
>>290
293さんが書いてるから、もう分かったと思うけど
mapVKey["l" + (1, 'a'+i)] = Shift('A' + i);
を消すか
mapVKey[string(1, 'A'+i)] = Shift('A' + i);
に書き換えれば良いのでは?
301デフォルトの名無しさん:2010/09/30(木) 14:34:31
>>293
>>300
今電鍵打てる環境にないのでとりあえず300さんに教えて頂いた書き換えをして、
SendKey()で全ての符号を直接呼び出してみました。
問題なく全て表示されました!

長々と付き合って頂いて本当にありがとうございます!
302デフォルトの名無しさん:2010/09/30(木) 18:55:18
なーんてこったい
303デフォルトの名無しさん:2010/09/30(木) 19:33:36
( 'A') ('a' )
304デフォルトの名無しさん:2010/10/01(金) 05:00:38
A
305305:2010/10/01(金) 05:07:29
Visual C++ 2010 Express初心者です。windows7を使っています。
http://www.maroon.dti.ne.jp/koten-kairo/works/dsPIC/dsPIC_start.html
↑で勉強中で、Windowsフォームアプリケーション でのLED制御には成功しました。
これを参考によりシンプルなコードで制御を行うため、空のCLRプロジェクト から作成しようと考えているのですが、うまく行きません。
以下がその全ソースコードです。

#using <System.dll>
#include <windows.h>
using namespace System;
using namespace System::IO::Ports;

int main()
{
SerialPort^ port = gcnew SerialPort(L"COM4",
1115000, Parity::None, 8, StopBits::One);
port->WriteTimeout = 2000
port->Open();
port->Write(L"right\r");
Sleep(1000);
port->Write(L"right\r");
Sleep(1000);
port->Close();
};

USB-Serial変換ケーブルを使用しています。
TeraTermを使用して right を送信したところ、LEDを光らせることには成功しました。
エラー、警告は出ないのですが、上記コードをデバックしてもLEDは光りません。
これを光るようにしたいです。お願いします。
306デフォルトの名無しさん:2010/10/01(金) 08:50:40
どうみても単に文字列送ってるだけて
LED光らせてるようには見えないけど
LEDが光るかどうかは文字を受けた側の判断だろ
307デフォルトの名無しさん:2010/10/01(金) 11:39:22
昔クロスケーブルでつないでデバッグしたの思い出した
308デフォルトの名無しさん:2010/10/01(金) 11:52:30
>>305
まずはArduinoでテストすべき
309デフォルトの名無しさん:2010/10/01(金) 11:59:02
> 1115000
115200?
310305:2010/10/01(金) 20:36:25
ご返事遅れてすいません。
115200にしたら、LEDが光りました。
皆様、ご協力頂きありがとうございました。
311デフォルトの名無しさん:2010/10/01(金) 21:12:11
orz = 3
312デフォルトの名無しさん:2010/10/01(金) 21:14:42
これはひどい
313デフォルトの名無しさん:2010/10/01(金) 21:29:59
なにが
314デフォルトの名無しさん:2010/10/01(金) 21:35:59
頭が
315デフォルトの名無しさん:2010/10/01(金) 21:48:32
どんなふに?
316デフォルトの名無しさん:2010/10/02(土) 00:22:40
ふに?
317デフォルトの名無しさん:2010/10/02(土) 09:49:17
Express初心者=他人に投げるのがExpressな初心者
318デフォルトの名無しさん:2010/10/02(土) 13:36:42
ヾ(o゚ω゚o)ノ゙ ふにふに!ふにふに!
319デフォルトの名無しさん:2010/10/03(日) 10:37:48
Visual C++ 2010 Express  Windows 7の環境で
sdl + opengl + win32 でゲームのプログラミングをやってるんですが
クラスにint型の変数ひとつを追加しただけで今まで動いていたプログラムが
途中で落ちるようになりました。
変数追加以外の操作はやっていません。
ほかにもいろいろ試してたんですがint型の配列を101個以上の要素で追加すると
正常に動作すること確認できました。
原因がよくわからなくて気持ちわるいんですが、知ってる人がいたら教えてください。
320デフォルトの名無しさん:2010/10/03(日) 10:52:40
バグ
321デフォルトの名無しさん:2010/10/03(日) 11:13:48
>>319
1、スコープの関係で変数名がかぶってバグが
2、スタックメモリの使いすぎ
とか?
なんにしてもこれだと情報が足りないと思われ
322デフォルトの名無しさん:2010/10/03(日) 12:03:05
2ならメッセージ出るし、101個以上の要素で追加なら正常と言ってるからありえない
323デフォルトの名無しさん:2010/10/03(日) 14:19:25
319です。自己解決しました。
配列で未定義の領域にアクセスする可能性のあるコード
があったので、そこを直したら動くようになりました。
変数を追加する前と101個の要素の配列を追加した後も
実際は正常には動いてなかったみたいです。

レスをくれた人、ありがとうございました
324デフォルトの名無しさん:2010/10/04(月) 03:50:10
すいません、VS2003、XP SP2という環境ですが
OSCPackというUDP通信のソースコードを下記から拾ってきて(oscpack_1_0_2.zip)
http://www.audiomulch.com/~rossb/code/oscpack/

examplesフォルダにあるSimpleReceive.cppをビルドするために、
Win32アプリケーションプロジェクトを作成し、
エラー無しでコンパイル出来るまでは出来ました。

しかし、Debugフォルダに出来た.exeファイルをクリックして起動させると、

"Debbug error! this application has requested the runtime"

みたいなアラートが出て停止してしまいます。

どなたか問題点のわかる方、アドバイス願えますでしょうか?
325デフォルトの名無しさん:2010/10/04(月) 08:44:22
そこに書いてある通り
326デフォルトの名無しさん:2010/10/04(月) 13:28:31
>>325
OSCPackの使い方サイトに

> リンカの追加の依存ファイルに「ws2_32.lib」(winsock用)と「winmm.lib」(timeGetTime?用)を追加する

と書いてあったのでそれはやったのですが…
327324:2010/10/05(火) 21:38:57
今上記OSCpackのexampleの内、ためしに送信(SimpleSend.cpp)の方を
コンパイルして実行してみると問題なく動作し、また値の方も正確に送信されていました。

やはり受信のサンプルだけRuntimeエラーが出るみたいです。
どなたかアドバイスいただければ幸いです。
328デフォルトの名無しさん:2010/10/05(火) 22:27:43
作った本人に聞けよ
329324:2010/10/05(火) 23:12:10
デバッガを使うとこのアラートが出て停止します。

> a.exe の 0x7c812a6b でハンドルされていない例外が発生しました : Microsoft C++ exception: std::runtime_error @ 0x0012faa0。
330デフォルトの名無しさん:2010/10/05(火) 23:30:01
MFCで theApp宣言しておわりっていうのはコンストラクタですべての処理をやっているわけですよね
しかしコンストラクタの中身を書いていないので
theApp::InitInstance()ってどこで実行されるんですか?
派生元のコンストラクタから実行されるんですか?
調べてみたけど静的仮想関数?混乱してます
初心者スレってことでよろしくお願いします。
331324:2010/10/06(水) 01:09:02
一ヶ月立ち上げっぱなしのPCを再起動したらなおりました、失礼しました
332デフォルトの名無しさん:2010/10/06(水) 01:48:14
誰か蹴っといて。
333デフォルトの名無しさん:2010/10/06(水) 05:41:04
>330
コールスタック(呼び出し履歴)
334デフォルトの名無しさん:2010/10/06(水) 17:38:49
>一ヶ月立ち上げっぱなしのPCを再起動したらなおりました、失礼しました

そんな使い方する人も居るんだな
335デフォルトの名無しさん:2010/10/06(水) 18:41:30
WindowsUpdateはたまにはやっとけよ
336デフォルトの名無しさん:2010/10/09(土) 00:35:23
すいません、複数に分けたcppファイルからIDC_EDIT1に値を入れたいだけなんですが、
下記の○○に入れる内容がわかりません…。
「this」を入れるとメンバーではないと言われるし、
ダイアログのCHogeDlg.hをインクルードして「CHogeDialog」を入れると

'CHogeDlg' にはオーバーロードされたメンバ 'operator ->' がありません。
'->GetSafeHwnd' : 左側がクラス、構造体、共用体へのポインタではありません。

みたいに言われるし…


HWND hWnd =○○->GetSafeHwnd();
HWND hDlgItem = GetDlgItem(hWnd, IDC_EDIT1);
SetDlgItemText(hDlgItem,IDC_EDIT1,"unko");
337デフォルトの名無しさん:2010/10/09(土) 08:51:46
C++の入門書にクラスのデータメンバーにクラス外からアクセスする方法が
書いてあるはずだから、その辺勉強するといい。
別にプライベートメンバーじゃなくても他人の持ち物には直接さわらないのが礼儀
338デフォルトの名無しさん:2010/10/09(土) 13:28:55
>>337
ありがとうございます
入門サイトとかまわって下記のように書いてコンパイル出来るまでにはなったのですが、
結局IDC_EDIT1に値が入りませんでした。

クラス外からアクセスする方法が間違っているのか
その他の部分が間違ってるのかもうわからなくなってしまいました…


CHogeDlg *app = (CHogeDlg*)AfxGetApp();

HWND hWndow =app->GetSafeHwnd();
HWND hDlgItem = GetDlgItem(hWndow, IDC_EDIT1);
SetDlgItemText(hDlgItem,IDC_EDIT1,"unko");
339デフォルトの名無しさん:2010/10/09(土) 13:58:40
App はウインドウじゃありませんよ
340デフォルトの名無しさん:2010/10/09(土) 17:43:46
ある行を超えたら一行上にスクロールさせるコードのつもりなんですけど
どこがおかしいのかわかりません
ご教授よろしくお願いします

void CtestMFCDlg::OnBnClickedButton1()
{
    int n =pEdit_1.GetWindowTextLengthW();
  pEdit_1.SetSel(n,n,FALSE);
    int linecount=pEdit_1.GetLineCount();
    pEdit_1.ReplaceSel(_T("test成功です\r\n"));
    if(linecount>3) pEdit_1.LineScroll(-1);
}
341デフォルトの名無しさん:2010/10/09(土) 18:39:50
デバッガぐらいついてるはずだけど
342デフォルトの名無しさん:2010/10/09(土) 21:05:59
>>339
AfxGetMainWndでもダメでした。

CHogeDlg *dialog = (CHogeDlg*)AfxGetMainWnd();

HWND hDialog =dialog->GetSafeHwnd();
HWND hDlgItem = GetDlgItem(hDialog, IDC_EDIT1);
SetDlgItemText(hDlgItem,IDC_EDIT1,"unko");
343デフォルトの名無しさん:2010/10/09(土) 21:42:23
何やってもダメです…

CHogeDlg dialog;

CEdit* edit = (CEdit*)GetDlgItem(dialog,IDC_EDIT1);
SetDlgItemText(edit->GetSafeHwnd(),IDC_EDIT1,"unko");
344デフォルトの名無しさん:2010/10/09(土) 22:43:28
目先の問題の解決よりオブジェクト指向をちゃんと理解してほしい。
345デフォルトの名無しさん:2010/10/09(土) 22:55:39
とりあえずやり方を変えて
■hogeDlg.hのpubulicに
void CHogeDlg::ChangeEdit1(char* text);
を追加

■hogeDlg.cppに
void CHogeDlg::ChangeEdit1(char* text)
{
CEdit* edit1 = (CEdit*)GetDlgItem(IDC_EDIT1);
edit1->SetWindowText(text);
}

■hogehoge.cppに
void HogeHoge::EditChange()
{
CHogeDlg cdd;
char* t="unko";
cdd.ChangeEdit1(t);
}

これで出来るだろと思ってhogeDlg.cppからhogehoge.cppのEditChange()を呼び出したとたん
EXEが落ちる…。

高橋マナとか言う人の「やさしいC++」買って読みながらやってるんですけど出来ません…
346デフォルトの名無しさん:2010/10/09(土) 23:35:42
あ、すいません。
hogeDlg.hでの関数宣言の部分を訂正します。

× void CHogeDlg::ChangeEdit1(char* text);
○ void ChangeEdit1(char* text);
347デフォルトの名無しさん:2010/10/10(日) 00:04:04
hogeDlg.cppの
edit1->SetWindowText(text);
の一文を消すととりあえずEXEが落ちることはなくなりました。

なんか問題は外部からの呼び出しではない気がしてきたのですが…。
348デフォルトの名無しさん:2010/10/10(日) 00:25:36
補足です。
先のように
edit1->SetWindowText(text);
を消して代わりに
AfxMessageBox(text);
の一文を入れてやると、ちゃんと呼び出されてtextに文字が代入されているのが確認できました。

またedit1->SetWindowText(text);を消さないで、
CHogeDlgクラスの別の関数内から呼ぶと問題なくIDC_EDIT1に文字が代入されます。

つまり外部からCHogeDlg::ChangeEdit1関数の呼び出しは出来ているものの
その中の
edit1->SetWindowText(text);
のところでEXEが落ちるようです。

同クラス内の別関数からChangeEdit1を呼ぶと大丈夫です。
349デフォルトの名無しさん:2010/10/10(日) 00:34:18
hogeDlg.hの内容を書き出しておきますね、こんな感じです。

#pragma once
#include "afxwin.h"
#define WM_NOTIFYICON (WM_USER+1)

class CHogeDlg : public CDialog{
public:
CHogeDlg(CWnd* pParent = NULL); // 標準コンストラクタ
enum { IDD = IDD_Hoge_DIALOG };

protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV サポート

private:
NOTIFYICONDATA m_Icon;

protected:
HICON m_hIcon;
afx_msg HRESULT OnNotifyIcon(WPARAM wPram, LPARAM lParam);
virtual BOOL OnInitDialog();
DECLARE_MESSAGE_MAP()

public:
afx_msg void OnBnClickedStart();

protected:
virtual LRESULT DefWindowProc(UINT message, WPARAM wParam, LPARAM lParam);

public:
void ChangeEdit1(char* text);
afx_msg void OnSysCommand(UINT nID, LPARAM lParam);};
350デフォルトの名無しさん:2010/10/10(日) 01:41:49
とりあえず MFC スレに行った方がいいんじゃないか
351デフォルトの名無しさん:2010/10/10(日) 01:57:23
ちょっと鳥食ってくる!
352デフォルトの名無しさん:2010/10/10(日) 02:55:40
「やさしいC++」まで買ったのにMFCスレか(;´Д`)
ちょっと行ってきます
353デフォルトの名無しさん:2010/10/10(日) 23:26:24
visualC++2003だとMFCって使えるのですか??
354デフォルトの名無しさん:2010/10/10(日) 23:29:46
>>353
使えますよ。
355デフォルトの名無しさん:2010/10/10(日) 23:40:06
VC2005expressだと使えませんよね。
2003の方がよかったってことですよね。残念だ
356デフォルトの名無しさん:2010/10/11(月) 00:22:07
>>355
VC 2003 ExpressはMFCを使えませんよ?
357デフォルトの名無しさん:2010/10/11(月) 00:39:43
libpngをVS2010Expressでコンパイルして使いたいんですがやり方が良く分かりません。
zlibを先にコンパイルしてそのlibをincludeすればいいんでしょうか?
どこかに詳しいやり方を書いたURLかコンパイル済みのlibはないですか?
358デフォルトの名無しさん:2010/10/11(月) 00:50:39
VC++でEXCITEのような英訳ツールは作れますかね?
359デフォルトの名無しさん:2010/10/11(月) 01:37:15
>>351
つKFC
360デフォルトの名無しさん:2010/10/11(月) 15:17:06
矢印が絡むキーバインド変更のimport/exportが正しく認識されないのだが仕様?
vssettingsをexportするとキー名が下矢印とかなってるんだが
そのままインポートすると認識できないとか言われる。
vssettingsの該当箇所を'↓'に変えてやると一応メッセージは正常とかでるけど実際にはキーバインド変更されていない…
'Down'とか'DownArrow'とかも試してみたけど認識しない。回避手段とかないですか?
vs2005と2008exで確認。vs2010はインストールしていない
361デフォルトの名無しさん:2010/10/11(月) 15:19:47
正規品ならサポートセンターへ
362デフォルトの名無しさん:2010/10/11(月) 16:52:47
一応メールでバグ報告だけするつもりでMSのサイト逝ったんだが、
相変わらずサインインが煩雑かつ有償サポートじゃないのになぜかクレカ要求されたんで戻る押してきた
ちなみに公式フォーラム覗いてみたけど同様の問題は挙がってなかった。
どうしても困るようなものじゃないので>>360の件はそういうものとして諦めます。
どうもでした。
363デフォルトの名無しさん:2010/10/11(月) 17:56:05
Microsoft Connectはクレカ要求されなかったぞ。
サインイン周りが面倒なのは変わりないけど。
http://connect.microsoft.com/VisualStudioJapan/Feedback
364デフォルトの名無しさん:2010/10/11(月) 23:47:01
Visual Studio 2008 Standard Editionにて、[新規作成]→[Win32]→[Win32 プロジェクト]、
アプリケーション種類:[Windows アプリケーション]を作成後、
リソースの追加にて拡張子が.wavのファイルを約82MByte分リソースとしてインポートして
アクティブ ソリューション構成を「Release」にして、
ソリューションのビルドを行うと以下のように出力されビルドに失敗します。
▼▼▼ 失敗例
------ ビルド開始: プロジェクト: res_test, 構成: Release Win32 ------
コンパイルしています...
stdafx.cpp
・・・ 中略 ・・・
リンクしています...
コード生成しています。
コード生成が終了しました。
マニフェストを埋め込んでいます...
プロジェクト : error PRJ0002 : エラーの結果 31 が 'C:\Program Files\Microsoft SDKs\Windows\v6.0A\bin\mt.exe' より返されました。
ビルドログは "file://k:\41_開発\streaming_res_test\res_test\res_test\Release\BuildLog.htm" に保存されました。
res_test - エラー 1、警告 0
========== ビルド: 0 正常終了、1 失敗、0 更新不要、0 スキップ ==========
▲▲▲
アクティブ ソリューション構成を「Debug」にして、ソリューションのビルドを行うとビルドは正常終了します。
また、アクティブ ソリューション構成が「Release」の場合でも、リソースにインポートするwavのファイルが
約13MByte分の場合も正常終了します。

Releaseのビルドの時に失敗する理由は単に、インポートするリソースの容量が大きすぎるからでしょうか。
この失敗を回避する方法をご存知の人がいらっしゃれば、お教えしていただけないでしょうか。
Visual Studio 2008 Standard Editionなのが悪いのでしょうか、Standardより上のエディションでは成功するのでしょうか。

よろしくお願いします。
365デフォルトの名無しさん:2010/10/12(火) 00:04:13
SDKでダイアログベースのTPを作ろうとしているのですが、
DialogBox関数を実行してもダイアログが表示されません。
GetLastError() でエラーを取得すると、
「トップレベルの子ウィンドウを作成できません。」
を意味するエラーが返ってきました。

開発環境: Visual C++ 2010
SDK で「空のプロジェクト」からプロジェクトを作り、
 リソースからDialogを追加して、IDを ID_MYDLG にしています。
以下の main.cpp を作りましたが、上記のような状態です。

#include <windows.h>
#include "resource.h"

BOOL CALLBACK MyDlgProc(HWND, UINT, WPARAM, LPARAM);

int WINAPI WinMain(HINSTANCE hCurInst, HINSTANCE hPrevInst, LPSTR lpsCmdLine, int nCmdShow) {
DialogBox(hCurInst, MAKEINTRESOURCE(IDD_MYDLG), NULL, (DLGPROC)MyDlgProc);
   DWORD err = GetLastError();
   return 0;
}

BOOL CALLBACK MyDlgProc(HWND hDlg, UINT msg, WPARAM wp, LPARAM lp) {
   // ブレークポイントを設定しても、ここを通過しませんでした
   switch (msg) {
      // 省略します
   }
return FALSE;
}

以上です。どこがおかしいでしょうか。。。よろしくお願いいたします。
366364:2010/10/12(火) 02:16:33
マニフェストの生成で失敗していることがわかりました。
アクティブ ソリューション構成が「Release」の状態にて、
メニューより[プロジェクト]→[XXのプロパティ]を選択すると
「XXプロパティ ページ」のウィンドウが表示されます。
ここで、[構成プロパティ]→[リンカ]→[マニフェスト ファイル]を選択して、
「マニフェストの生成」を『いいえ』にして、ビルドを行うと
ビルドの失敗を回避することができ、Releaseの実行モジュールが
作成されました。

その実行モジュールをWindowsXP SP2 OSをインストールしたての
(他のものを一切インストールしていない)PCで動かすと動きました。

マニフェストというのがどういう役割をするものなのかわかりません。
また、マニフェストの生成をした実行モジュールとマニフェストの生成を
しなかった実行モジュールを動かしてみて見た目の比較をしたのですが、
何が違うのかわかりませんでした。

下記の3点について、ご存知の人がいらっしゃれば教えていただけないでしょうか。
@ビルドの失敗を回避することができましたが、この回避方法は正しいのでしょうか。
Aマニフェストというのはどういう役割をするものなのでしょうか。
B「マニフェストの生成」を『はい』にしてビルドした実行モジュールと
 『いいえ』にしてビルドした実行モジュールを比較して、後者は実行時に
 何か弊害が起こりうるのでしょうか。あるとすればどのような弊害なのでしょうか。

よろしくお願いします。
367デフォルトの名無しさん:2010/10/12(火) 17:59:21
iniファイルに書き込む為のプログラムを作ったのですが、
書き込むと最初に書いてあったキーと値が消えてしまいます。どうすればいいでしょうか。
void writeINI(char *key,int num)
{
char str[MAX_PATH];
const int maxBuf=100;
char numChar[maxBuf];
int length;
if((length = sprintf_s(numChar, maxBuf, "%s=%d",key, num)) < 0)error("INIへ書き込み失敗",NULL);
if (length < maxBuf)numChar[length+1] = '\0';
getDirectry(str,"\\data\\setting.ini");
WritePrivateProfileSection("top",numChar,str);
}
368デフォルトの名無しさん:2010/10/12(火) 18:32:03
特に難しい点はないはずだし、サンプルも沢山あるはずだから
まともなサンプルを参考に作りなおせばいい。
369367:2010/10/12(火) 21:55:15
同じセクションに書き込むと消えるって仕様があったんですね。。
370デフォルトの名無しさん:2010/10/12(火) 22:37:24
自分もときどきマニフェストツールがなぜか失敗する現象に遭遇する。
ただ、そんなに大きなリソースを含むプロジェクトではないし、
もう1度ビルドし直せばうまくいくので、自分の場合は特に問題になっていないのだけど。
371デフォルトの名無しさん:2010/10/13(水) 01:42:31
フォームアプリケーションを触り始めた初心者です。
いろいろ調べて、イベントを監視しフォームを表示し続ける無限ループのような処理であると理解してます。
これに対して、別の無限ループ処理(たとえば、USBカメラの入力があるか調べて画面に表示)を付け加えたいのです。
無条件に発生するイベントがあればよいのですが、MSDNを調べてもそのようなものはありませんでした。
どなたかうまい実装法を知ってる人がいたらご教授お願いします。
372デフォルトの名無しさん:2010/10/13(水) 02:40:57
そのようなものはありません
373デフォルトの名無しさん:2010/10/13(水) 03:19:08
タイマーセットして定期的にカメラの画像を取得、表示でおk。
カメラがDirectShowのじゃない場合あきらめんしゃい。
374デフォルトの名無しさん:2010/10/13(水) 13:28:59
処理中で画像ファイルを読み込んだりするとき、相対パスの指定が、
VC++の実行ボタンで起動したときはソリューションかプロジェクトのファイルがある階層を基準にするのに対し、
実行ファイルを直接起動した場合は実行ファイルがある階層を基準にするので、
実行ファイルか画像ファイルのいずれかを移動してから実行しないといけません。
VC++から実行した場合でも、実行ファイルがある階層を基準にするように設定できませんか?
375デフォルトの名無しさん:2010/10/13(水) 13:55:00
>>374
プロジェクトのプロパティの「デバッグ」-「作業ディレクトリ」

でも、実行時のカレントフォルダなんて、
ショートカットのプロパティなどでいくらでも別の場所になる可能性があるので、
常に「実行ファイルがある階層」を指定したいのなら、
自分自身のパスなどを使って絶対パスで指定しないと危険。
376デフォルトの名無しさん:2010/10/13(水) 18:45:54
つ GetModulePath
377374:2010/10/13(水) 20:28:23
なるほど……
< VC++から実行した場合でも、実行ファイルがある階層を基準にするように設定
は>375さんが教えてくださった方法で実現できるけど、
いざ第三者に配布したときに、予想外のパスをカレントにされる可能性もあるんですね。
だから「実行ファイルと同じフォルダ内や、その下層にあるファイルを確実に取得したければ、
自分自身のフルパスを取得してからそれ基準で指定するべき」なんですね。
>376さんの関数名(ですよね?)等で検索して、調べてみます。
ご指導ありがとうございました。
378デフォルトの名無しさん:2010/10/13(水) 20:42:24
というか、実行ファイルのフルパスを基準にするということ自体をしない方がいい
379デフォルトの名無しさん:2010/10/13(水) 21:32:21
それだとインストーラが必要になるから初心者向きじゃない。
380デフォルトの名無しさん:2010/10/13(水) 21:48:35
>>376
GetModuleFileNameでは?
381364:2010/10/13(水) 23:07:34
>>370
レスありがとうございます。
結局大きなリソースを乗せる方法をやめました。
382デフォルトの名無しさん:2010/10/14(木) 03:54:19
VC++2008 Express Editionを使いはじめた者です。

カレントディレクトリを取得しようと思い
URL1 - http://msdn.microsoft.com/ja-jp/library/cc429301.aspx
を読んで、なんとか思い通りのことができましたが
URL2 - http://msdn.microsoft.com/ja-jp/library/system.io.directory.getcurrentdirectory(v=VS.80).aspx
のC++のタブにて、同名かつ引数の違うメソッドが説明されており、混乱しています。

(1) 2つのページを眺めてみたものの、恥ずかしながら体系の違いがわかりません。
  2つはどういう関係にあるものでしょうか。

(2) URL1の関数に与えるパラメータ、DWORD nBufferLength の一般的な適正値ってあるのでしょうか。
  パスの長さとして十分であればいいのでしょうが…もし指針や慣例があれば教えてください。
383デフォルトの名無しさん:2010/10/14(木) 04:06:13
ネイティブC++で使うものとC++/CLI他.NETで使うもの

MAX_PATH
384382:2010/10/14(木) 10:22:41
>>383
ありがとうございます!
なんとなく分かってきました…。もうちょっと質問させてください。

2つの使い分けを試してみようと、コードの冒頭に
#include <windows.h>
を追加し、これでネイティブの関数が動くようになったと思うのですが
(そもそも windows.h が何者なのかもよく分かっていない初心者です)
「ネイティブC++を使いたいときは windows.h をincludeすればよい」 という認識は正しいでしょうか。

またこのとき、 .net に用意されている同名の関数が動かなくなってしまいます。
(要求されている引数が違うので当然ながらエラーになります)
クラスファイルを別々に用意し、windows.h をincludeするもの・しないものと分けたところ
ネイティブの関数が動くクラス・ .netの関数が動くクラス、と分けることができました。
同一ファイル内で両方の関数を使う手段はあるのでしょうか。
それとも、両方を使いたい場合はクラスファイルを分けるもの、と覚えればよいでしょうか。

朝から長文続きですみません。
385デフォルトの名無しさん:2010/10/14(木) 10:53:20
名前空間: System.IO
386382:2010/10/14(木) 11:35:49
ありがとうございます。
名前空間で分けられるということですかね。ちょっと試行錯誤してみます。
とりいそぎお礼まで。
387デフォルトの名無しさん:2010/10/14(木) 12:50:23
違いすらわからない段階で両方使うとかでたらめもいいとこだな
388デフォルトの名無しさん:2010/10/14(木) 13:12:44
ある関数Aから関数Bを呼び出したとします。
関数Bでは関数Cを呼び、関数Cは関数Dを呼び・・・と何層にもなっているとします。
ここで、関数Cや関数Dから、goto文のように直接関数Aにreturnすることはできるでしょうか?
389デフォルトの名無しさん:2010/10/14(木) 13:30:39
スタックについて
390デフォルトの名無しさん:2010/10/14(木) 13:32:28
C言語かC++スレあやりでやってくれ
391デフォルトの名無しさん:2010/10/14(木) 13:45:41
どうもです
392デフォルトの名無しさん:2010/10/14(木) 13:53:30
longjump
393デフォルトの名無しさん:2010/10/14(木) 14:04:55
スタックについて
394デフォルトの名無しさん:2010/10/15(金) 17:57:36
ソリューションにプロジェクトが何故か2つ登録されてしまいました。
片方消したいのですがどうやればいいんでしょうか。
395デフォルトの名無しさん:2010/10/17(日) 21:35:22
tes
396デフォルトの名無しさん:2010/10/18(月) 13:25:29
Visual C++初心者のもです。odeを使ってシュミレーションシステムの開発をしていこうと思っています。
しかし、サンプルプログラムをビルドしようとしても。
fatal error C1083: ソース ファイルを開けません。'..\..\roboSimu\src\amotor.cpp': No such file or directory
というエラーが出てきて開くことが出来ません。とても初歩な質問ですいませんがどなたか
答えてくれるとうれしいです。
397デフォルトの名無しさん:2010/10/18(月) 13:28:20
シュミレーション
398デフォルトの名無しさん:2010/10/18(月) 13:46:13
間違えました。シミュレーションでしたね
399デフォルトの名無しさん:2010/10/18(月) 15:25:09
>>396
検索したら同じような質問があった
これで解決するかどうかは知らないが
ttp://demura.net/9ode/538.html
400デフォルトの名無しさん:2010/10/18(月) 16:40:10
回答ありがとうございます。確認してみたところリソースファイルはあったの
でそこが問題ではないと思います。
401394:2010/10/18(月) 16:41:24
レスがないってことは情報が足りなかったからでしょうか。
visual studio 2008を使ってます。
402デフォルトの名無しさん:2010/10/18(月) 17:18:26
>401
ツールの細かい操作方法なんか暗記するものでもないし、
わざわざそういう状況作って試してみないと答えようがないだろ
自分なら直接定義ファイルいじればどうにでもなるから興味ないし
403デフォルトの名無しさん:2010/10/18(月) 21:35:15
フォームの上にあるボタンなどコントロールを置いて、
その上に文字を描画するのってどうやったら出来ますか?

ニコニコみたいに動画プレイヤの上に文字を乗せたいのですが、
まずはコントロールの上にどうやったら文字を描画出来るのかなぁと。
404デフォルトの名無しさん:2010/10/18(月) 22:08:25
>>403
「windows サブクラス化」とかでググればサンプルコードでてくると思う。
405デフォルトの名無しさん:2010/10/18(月) 22:16:55
ボタンは普通に字がでるだろ
406デフォルトの名無しさん:2010/10/18(月) 22:33:07
>>404
なるほど、単純に出来るのかと思ったら、、
ちょっとググって調べてみます。ありがとうございます。

>>405
すみません、そういう意味ではないです。
407394:2010/10/19(火) 00:52:17
プロジェクトを右クリックで削除をしたら普通に消せました。
408デフォルトの名無しさん:2010/10/19(火) 08:29:22
ttp://www5b.biglobe.ne.jp/~suugaku/vc++kougi/kiso/dai2koudai3wa.html
このサイトの問題2を解いているのですが
String^ e;
という風にeを変数に定義するとエラーをおこしてしまいます
dやfやgならエラーがおきないのですが、eは使ってはいけないのですか?
409デフォルトの名無しさん:2010/10/19(火) 08:29:40
VS2005でVC++を使用しているのですが
コードを書いてる途中にIntelliSenseを更新中となったままIntelliSenseが効かなくなったり
VC++を終了できない状態が度々発生します。
これはどうすれば解決するでしょうか?

母艦DeskTopPCではおこらずモバイルノートPCで使用中に発生します
OSはwin7starter
VisualStudio2005を使用しています
410デフォルトの名無しさん:2010/10/19(火) 08:44:05
>>408
引数にeという名前の変数がもう使われてるから
411デフォルトの名無しさん:2010/10/19(火) 08:54:08
>>410
eは自分が使ってないところで既に使われてるってことなんでしょうか
ありがとうございました
412デフォルトの名無しさん:2010/10/19(火) 11:07:15
413デフォルトの名無しさん:2010/10/19(火) 11:53:25
バカなんだろうね
414デフォルトの名無しさん:2010/10/21(木) 00:18:25
今使ってるノートPCsempron3600+だけど
コンパイルに時間が2分くらいかかる
PCそろそろ変えろってことだろうか
415デフォルトの名無しさん:2010/10/21(木) 00:18:47
VC++2008で、例えば、

String^filename1,^filename2;
・・・
FileStream^fs1,^fs2;
fs1=gcnew FileStream(filename1,FileMode::Open);
fs2=gcnew FileStream(filename2,FileMode::Open);
・・・
fs1->Close();
fs2->Close();

といったようなプログラムで、filename1==filename2だった場合、
別のプロセスで使用されているため・・・アクセスできません。
というようなエラーが出ます。
これはつまり、fs1のあとfs2でも同じファイルを読もうとしたためで、
すなわち、同じファイルを異なるシステムが同時にアクセスできないようになっているという、システム全体の仕様だと思われますが、
それでも何とかしてできるようにするための手段はあるでしょうか。
416デフォルトの名無しさん:2010/10/21(木) 00:22:24
>>415
アクセスを許可すればよい。
417デフォルトの名無しさん:2010/10/21(木) 03:06:30
reopen
418デフォルトの名無しさん:2010/10/22(金) 23:23:14
今VC++2005Standardアカデミックパックを使っているんですが、
コンパイラの最適化性能においてVC++2008や2010のほうがより性能向上しているでしょうか?
リアルタイムな処理を行うプログラムを作るので、より高速に動くようになるとうれしいです。
419デフォルトの名無しさん:2010/10/23(土) 16:22:45
最近勉強を始めたばかりの初心者です。Visual C++ 2008 Expressを使っています
.NET Framework 4で追加されたメソッドを使いたいのですがどうすればいいですか?
.NET 4をインストールしてみたですがそれだけでは使えないようです
420デフォルトの名無しさん:2010/10/24(日) 08:00:28
まずは適切なスレを選ぶ知能を得るのが先決
421デフォルトの名無しさん:2010/10/24(日) 13:18:06
>>418
2005で十分。具体的にボトルネックを判断できるようになってからコンパイラやライブラリを選べばいい。自分で性能評価ができないと判断できないよ。
>>419
VC++は.netじゃないから使えません。C++/CLIで呼べなくないけど、C++/CLIは初心者にはお勧めできません。
422デフォルトの名無しさん:2010/10/24(日) 17:57:22
423418:2010/10/24(日) 23:30:27
>>421
分かりました!
ありがとうございました!
424デフォルトの名無しさん:2010/10/26(火) 09:37:18
VS2008のメニューのファイルのテンプレートのエクスポートが灰色で押せない
何か条件があるの?
425sage:2010/10/26(火) 17:51:57
今入門書を見ながらvisual C++ 2005で色々なサンプルプログラムを作っているのですが、
似たようなものばかりで、あまり実用的なものがありません。

このスレの方で、昔自分が作ったプログラムを公開している方とかいますか?
もしいるのならURLなどを教えてもらえないでしょうか?

よろしくお願いします。
426デフォルトの名無しさん:2010/10/27(水) 08:23:20
なかみの分からないdllがあります
なんとなくこんな関数名がありそうというのは予想つくのですが
cから呼ぶことはできますでしょうか
427デフォルトの名無しさん:2010/10/27(水) 08:55:00
試してみればいいじゃん
428デフォルトの名無しさん:2010/10/27(水) 09:37:13
cから呼べるけど馬鹿には呼べない
429デフォルトの名無しさん:2010/10/27(水) 09:49:40
呼ぶのは簡単
戻ってくるとは限らない
430デフォルトの名無しさん:2010/10/27(水) 09:59:18
Dependency Walkerつかえ
431デフォルトの名無しさん:2010/10/27(水) 10:03:35
てか関数名わかってて何の問題があるのと
432デフォルトの名無しさん:2010/10/27(水) 22:12:26
#pragma once

class myClass
{
public:
myClass(void);
~myClass(void);
};

クラスの作成を行うと~myClass(void);ってのが出ます。
その上はコンストラクタって分かるんですが、~myClass(void);は何ですか?
433デフォルトの名無しさん:2010/10/27(水) 22:30:45
C++の勉強なら入門書買うなり入門サイト見るなりしろよ
434デフォルトの名無しさん:2010/10/27(水) 22:55:47
>>433
オススメの入門サイト教えて下さい
無料ソフトのみで開発環境を整える方法と
『おはよう』ってフォームに表示されるサンプルソースの作成・実行方法までが知りたいです

VC#でググっても全然わかんない(>_<)
435デフォルトの名無しさん:2010/10/27(水) 23:46:33
>>434
MSDNでチュートリアルから全部見たほうがいいよ
436デフォルトの名無しさん:2010/10/28(木) 00:22:14
>>435
こんなクソみたいな質問に答えてくれて本当にありがとう
色んなサンプル実行してみて勉強してみます
環境の整え方がさっぱりだったので助かりました(^0^)/
437デフォルトの名無しさん:2010/10/28(木) 09:45:54
if(!(sage()))age();
438デフォルトの名無しさん:2010/10/31(日) 12:34:47
Visual C++でできることって、単にウィンドウを作って、クライアント領域に
文字や図形を描画することくらいしかできないらしいな。
つまり実用性なしなんだな。
439デフォルトの名無しさん:2010/10/31(日) 12:38:21
リソースエディタでダイアログにボタンやテキストボックスを置いて、
それをメンバ変数に結び付けて、イベントハンドラに、C言語ライクな
コードを差し込むことがやっとできるくらいだし。
つまり、Visual C++だから何かできるわけではないんだな。
単に、今まで作ってきたコマンドプロンプトのプログラムを、
Windowsプログラムの画面を借りて、イベントハンドラにコードを差し込む
ことができるだけにすぎないんだな。
440デフォルトの名無しさん:2010/10/31(日) 12:53:39
本を一冊分学習しても、とても実用的とはいえない単発な処理の紹介で
終わってるものばっかりで、こんなんでどうやって商業的なプログラム
を生産できるのかとがっかりだ。
441デフォルトの名無しさん:2010/10/31(日) 13:26:43
ツール使えば馬鹿でもなんとかなるようにVBみたいなのがあるんだろ
442デフォルトの名無しさん:2010/10/31(日) 18:14:49
今vc++ 2005でwindowsアプリケーションの勉強をしているのですが、
MFCでいうOnDraw関数のようなものは、windowsアプリケーションには
用意されていないのでしょうか?
443デフォルトの名無しさん:2010/10/31(日) 18:19:23
エスパーしか答えられそうにない質問だ。
エスパーにトライ:
   windowsアプリケーションには表面的にOnDraw関数のような物は見えません。
444デフォルトの名無しさん:2010/10/31(日) 18:40:13
OnPaint
445デフォルトの名無しさん:2010/10/31(日) 18:41:38
WM_PAINTのことか?
446デフォルトの名無しさん:2010/10/31(日) 18:42:44
>>445
それじゃね?
つエスパー1級
447デフォルトの名無しさん:2010/10/31(日) 23:09:52
WM_PAINT の処理は MFC で言えば OnPaint とちゃうん?
MFC やったことないからわからへんけど。
448デフォルトの名無しさん:2010/11/01(月) 01:06:21
longjumpもあるけどC++なら例外でいいんではないか。

デストラクタすら理解してない人は、Windowsプログラムなんか作るのは無理だろう。
Windowsプログラムの学習を中止して、C++の学習に専念してるんだが、それで正しいよな。
まずはコマンドプロンプトで上級まで行ってから、Windowsプログラムを学習してもいいよな。
449デフォルトの名無しさん:2010/11/01(月) 01:16:51
巣に帰れ
450デフォルトの名無しさん:2010/11/01(月) 01:41:38
(・∀・)ニヤニヤ
451デフォルトの名無しさん:2010/11/01(月) 17:15:56
vc++初心者がデータベース(Access)を使ったプログラムを作りたいとしたら、
MFCと.NET(MSフォームアプリ)どっちが作りやすいと思いますか?
452デフォルトの名無しさん:2010/11/01(月) 17:18:22
.netだったら、あえてVC使う必要ないだろ
453デフォルトの名無しさん:2010/11/01(月) 17:28:31
C#がいい
454デフォルトの名無しさん:2010/11/01(月) 23:20:49
>>452
VC++のテンプレートの中にあるWindowsフォームアプリケーションのことを
通称で.netって言ってるんだと思ってました。 

>>453
VC++でやってみたいんです。申し訳ないです。
455デフォルトの名無しさん:2010/11/02(火) 00:35:48
VC++でやるならMFCがいいだろJK
456デフォルトの名無しさん:2010/11/02(火) 10:10:07
ネイティブ C++ でやるなら
API でちまちまいっぱいコード書いていくのが楽しい
457デフォルトの名無しさん:2010/11/02(火) 15:15:00
>>456
API直叩き面白いよね
458デフォルトの名無しさん:2010/11/02(火) 17:19:55
AccessのDBいじるならAccessでやるのが普通に一番いいjk
459デフォルトの名無しさん:2010/11/02(火) 21:57:36
VC++2008について。Windowsフォームアプリケーションのプログラムで、
まず、フォームにラジオボタンを2つ置きます。次に、その1つのイベントプログラムに、次の文を書きます。
MessageBox::Show("〜","〜");(〜は何でも良い。上の方にusing namespace System::Windows::Forms;を書く必要のある場合も)
そして、ビルドのあと実行させてみます。文を書いた方のラジオボタンをクリックすると、メッセージボックスが出ます。
そしてすぐに別のラジオボタンを押すと、なぜか同じようなメッセージボックスが出ます。
イベントプログラムに書いてないはずなのに出ます。もう1回押したときは出ませんが。
これはバグでしょうか。それとも何らかの仕様でしょうか。
460デフォルトの名無しさん:2010/11/02(火) 22:08:53
仕様
461デフォルトの名無しさん:2010/11/02(火) 22:17:50
>>459
ON→OFF チェック状態が変わった
OFF→ON チェック状態が変わった

3つ置けば分かるかと。
462デフォルトの名無しさん:2010/11/02(火) 23:14:05
463デフォルトの名無しさん:2010/11/03(水) 18:55:26
vc2010 expressにて、
プロジェクトにヘッダを追加する際に、
デフォルトで拡張子を.hppにする方法はありますか?
464デフォルトの名無しさん:2010/11/04(木) 00:14:30
STLのmapを使おうと思って#include <map>して使ったら
「外部シンボルは未解決です、外部参照 1 が未解決です」というエラーが出ました

何か参照を追加しなければならないようなので、いろいろググって見たけどわかりません
どうすれば解決できますか?

VistaSP2 VC++2008EE Win32Projectです
465デフォルトの名無しさん:2010/11/04(木) 00:16:54
>>464
エラーの内容を全部かけ
問題はお前が省いてるところにある
466デフォルトの名無しさん:2010/11/04(木) 00:19:22
初心者って自分の解らないことには目を瞑るっていう
盲目フィルタ掛かってる香具師が多いな
467デフォルトの名無しさん:2010/11/04(木) 00:47:16
>>465
すいません、省いているところに問題がありました

class hoge {
private:
static map<UINT, hoge*> hogePtr;

}

というふうにクラス内でstaticで宣言してましたが、staticをはずしたら
エラーにならなくなりました

mapはstaticでは使えないのでしょうか?
468459:2010/11/04(木) 00:55:00
>>460-461
なるほど、わかりました。
イベントプログラムは、ラジオボタンが押されているかいないかが変化したときに起こる、ということで。そこで・・・
if(○×△□->Checked==true)
MessageBox::Show("〜","〜");
としてみたら、ちゃんと、文のあるラジオボタンが押されたときのみ、メッセージボックスが出ました。
あるいは、他にちゃんとしたやり方とかございます?
469デフォルトの名無しさん:2010/11/04(木) 00:55:37
>>467
mapじゃなくてもスタティックなメンバ変数は定義を書かないとエラーになる
適当なcppファイルに
map<UINT, hoge*> hoge::hogePtr;
と書いとけばいい
470467:2010/11/04(木) 01:16:46
>>469
ありがとうございます、staticでmapが使えるようになりました

超初心者でスタティックなメンバ変数を初めて使ったので定義を書かないと
いけないとはまったく知りませんでした。おかげさまでいい勉強になりました

本当に感謝感謝です
471デフォルトの名無しさん:2010/11/04(木) 01:19:38
エラーメッセージくらい読めよw
472デフォルトの名無しさん:2010/11/04(木) 11:24:36
質問させてください。
クラスを定義しているdllとそのlibがあります。
Release版のdllとlibをリンクさせた場合、
Releaseビルド時は正常に動作しているのですが
Debugビルド時におかしな値が返ってきます。
また、Debug版のdllとlibをリンクさせた場合はその逆です。
dllはDebug版とRelease版の両方を公開する必要があるのでしょうか?
473デフォルトの名無しさん:2010/11/04(木) 12:40:11
>468
ラジオボタンはボタンの一種だからボタン押したというメッセージがちゃんとある
474デフォルトの名無しさん:2010/11/04(木) 13:48:01
>>472
そんなもの公開されても迷惑なだけ
475472:2010/11/04(木) 14:02:17
>>474
それはRelease版のみでいいということでしょうか?
それとも「公開」という単語の問題でしょうか?
提供と言い直した方がいいかもしれませんね。
476デフォルトの名無しさん:2010/11/04(木) 14:05:50
自分の環境ですらまともに動かないゴミクズを
他人のPCに入れさせて迷惑かけるなよ
477472:2010/11/04(木) 14:18:43
>>476
私としてはまともに動かしたいのですが、
(Release版のdllとlibを提供するだけで動く)
原因がよくわからないため
dllとはそういうものなのかどうかを知りたいのです。
dllとして正常な動作でないのであれば原因を特定したいです。
(もちろん現在調査を行ってはいます。)
478デフォルトの名無しさん:2010/11/04(木) 17:24:11
一般的に配布されているプログラムがどうなってるか見たらわかりそうなもんだけど、
あまり一般的でない開発用途や業務用途ということなんだろうか?
479472:2010/11/04(木) 17:38:14
>>478
ということは、Release版のみで問題ないはずですよね?
ありがとうございました。調べ続けてみます。
480デフォルトの名無しさん:2010/11/04(木) 18:36:37
ソースも提供した方がいい
481デフォルトの名無しさん:2010/11/05(金) 02:59:45
再配布していけないのはデバッグ版ランタイムDLLだけだとずっと思ってたわやっべ
http://msdn.microsoft.com/ja-jp/library/aa985618.aspx
http://msdn.microsoft.com/en-us/library/aa260978.aspx
482デフォルトの名無しさん:2010/11/05(金) 11:30:02
再配布と配布は別物
483デフォルトの名無しさん:2010/11/05(金) 23:09:20
一般的なことを聞きたいのですがビットマップ表示ソフト(子ウインドウをたくさん出すタイプ)の
リスト構造は親ウインドウのプロシージャでstatic宣言するものでしょうか?
今は子ウインドウプロシージャでstatic宣言していて親ウインドウの方でファイル読み込みダイアログを開いて子ウインドウをつくり
子ウインドウのWM_CREATEの処理でプロシージャに渡された
ウインドウハンドルでリストをつなげています
(つまり1ビットマップ1子ウインドウハンドルのイメージです)
親ウインドウ側の処理でリストを作った方がいいのか混乱しています。
子ウインドウの破棄の際のリストのメモリ解放で失敗していて・・・

使ってるのはネイティブAPIとCです
484デフォルトの名無しさん:2010/11/06(土) 05:48:57
リストを作った方がいい
485デフォルトの名無しさん:2010/11/06(土) 09:05:58
どっからstatic宣言するものなんて考えが出てきたんだろ
staticなのにメモリ解放とか意味わからん
486デフォルトの名無しさん:2010/11/06(土) 09:43:41
子ウインドウプロシージャ
{
static 最後に読み込まれたリストへのポインタ;
static 検索用ポインタ;
static リストの先頭(NULL);
WM_CREATE:
リストデータ用メモリ確保;
読み込み;
挿入;
WM_DESTORY:
今破棄されようとしているウインドウハンドルが入っているリストデータへ検索用ポインタを移動;
データ破棄(メモリ解放);
ウインドウ破棄
}
上のstatic宣言からデータ破棄までは親ウインドウ側のプロシージャでできるので
一般のソフトはどのように作られているものなのか聞いてみたかったのです
そもそもマルチウインドウの操作にリストを使っていないかどうかも
487デフォルトの名無しさん:2010/11/06(土) 11:56:57
C++にはバイナリイメージの規定がないって欠点があってな、
C++のlibの場合には呼び出し元とlibのビルド環境がコンパイルオプションも
含めて完全に一致していないと動作を保証できない。
必然的にソースコードも丸ごと提供するか、
両者に対して個別対応してサポートするか、
どちらかしかない。

もしソースコードを提供せずに互換性を維持したいなら、
COMかレガシーDLLとして提供する必要がある。
488デフォルトの名無しさん:2010/11/06(土) 12:24:52
intって64ビットwindowsを使うと64ビットになってしまうんですか?
489デフォルトの名無しさん:2010/11/06(土) 12:48:54
490デフォルトの名無しさん:2010/11/06(土) 13:07:50
>>489
ありがとうございます。
64ビットでもintは64ビットになるとは限らないってことですね。
INTにすればどんなCPUでも確実に32ビットになるってことでいいんですか?
491デフォルトの名無しさん:2010/11/06(土) 13:27:20
どうしてそのURLを読んでそういう結論になるのか理解できない
492デフォルトの名無しさん:2010/11/06(土) 13:54:46
「ほとんどの」を全部だと思い込むひとはよくいる
493デフォルトの名無しさん:2010/11/06(土) 15:11:29
データサイズを仮定しないプログラムをつくるようにこころがけないと。
もし int 型が 8bit の環境だとどうするんだ
494デフォルトの名無しさん:2010/11/06(土) 15:24:17
short≦int≦longでshortが2バイト以上、longが4バイト以上と
標準規格で決まってるんで規格に従ってる限りはintが8bitはありえない
495デフォルトの名無しさん:2010/11/06(土) 15:33:32
もし、ビット数固定の型が欲しければここら辺使え。

VC++ 2010以上またはVC++以外のコンパイラしか使わない
<stdint.h>や<cstdint>のint8_t、int16_t、int32_t、int64_t、uint8_t、uint16_t、uint32_t、uint64_t

VC++2008以下も使う(ただしWindows限定)
<windows.h>のINT8、INT16、INT32、INT64、UINT8、UINT16、UINT32、UINT64

ほかには、Boostの<boost/cstdint.hpp>(int8_t……がboost名前空間にある)なども。
496デフォルトの名無しさん:2010/11/06(土) 16:52:42
>>495
ありがとうございます。
参考になりました。
497デフォルトの名無しさん:2010/11/08(月) 20:16:48
VC2003でいう
構成プロパティ>デバッグ>環境
な項目は
VC2003だとどこで設定したらいいんでしょうか?
498デフォルトの名無しさん:2010/11/08(月) 20:17:37
×VC2003でいう
○VC2008でいう
499デフォルトの名無しさん:2010/11/09(火) 23:10:56
今日初めて触る初心者なんですがネットで勉強してて
         int a;
int b;
int c;
int d;
int f;
int w;
a=int::Parse(textBox1->Text);
b=int::Parse(textBox2->Text);
c=int::Parse(textBox3->Text);
d=int::Parse(textBox4->Text);
f=int::Parse(textBox5->Text);
w=a+b+c+d+f;
if(w>=300)textBox6->Text=L"合格です";
if(w<300)textBox6->Text=L"不合格です";
って入力したら
1>その5.cpp(19): fatal error C1075: 左側 中かっこ '{' に対応するものが 'c:\users\shintaro\documents\visual studio 2010\projects\その5\その5\Form1.h(225)' で見つかる前に EOF が検出されました。
って出たんだけどどういうことか教えてください
500デフォルトの名無しさん:2010/11/09(火) 23:28:21
>>499
括弧の閉じ忘れ
501デフォルトの名無しさん:2010/11/09(火) 23:44:12
>>500
どこで閉じたらいいんすか?
502デフォルトの名無しさん:2010/11/09(火) 23:49:21
>>499
お前が決めろ
503デフォルトの名無しさん:2010/11/09(火) 23:50:11
というかC++って初心者がさわっていいの?
504デフォルトの名無しさん:2010/11/10(水) 00:30:43
テキストボックスで数字以外が入力されたら
parse() が例外出すから
このコードじゃアプリケーション落ちちゃうね
505デフォルトの名無しさん:2010/11/10(水) 00:33:18
>>503
だれでもみんな最初は初心者
506デフォルトの名無しさん:2010/11/10(水) 01:15:32
Visual C++2010でWindows mobileのソフト作ろうと持ったが
どうすればいい?
507デフォルトの名無しさん:2010/11/10(水) 01:20:20
>>506
Windows Mobile SDK
で検索
508デフォルトの名無しさん:2010/11/10(水) 01:25:35
>>507
ありがとうございます!!。
509デフォルトの名無しさん:2010/11/14(日) 00:05:58
プロジェクトページの文字コードは
Unicodeとマルチバイト どっちがいいのでしょうか?
ttp://wisdom.sakura.ne.jp/system/winapi/win32/win6.html
の最初のやつUnicodeだと化けたんで今はマルチバイトにしてます
510デフォルトの名無しさん:2010/11/14(日) 00:13:35
VC++2008以降でマルチバイト文字版APIを呼ぶ奴はアホ
キャストでエラーを潰す奴はもっとアホ
511デフォルトの名無しさん:2010/11/14(日) 03:56:22
Kitty
512デフォルトの名無しさん:2010/11/14(日) 09:16:47
マルチバイトか Unicode かは
アプリケーションが呼び出す Windows API を
ANSI版かUnicode版のどちらにするかでもあるけど
Windows NT系列(NT/2000/XP/Vista/7/それ以降)で、
ANSI版を呼び出しても内部で Unicode 版を呼び出し直すから
そのアプリケーションを WIndows 9x で動かせるようにしたい場合以外は
パフォーマンス的にも無駄。

ちなみに Visual Studio 2008 以降では Windows 9x で動くバイナリは
吐けないんだったかな
513デフォルトの名無しさん:2010/11/14(日) 09:18:08
あと、ANSI版のAPIは新しい Windows では呼び出せなくなる可能性も想定しておくべきかな。
514デフォルトの名無しさん:2010/11/14(日) 09:52:57
それはないわ
515デフォルトの名無しさん:2010/11/14(日) 10:03:32
その辺で、もっさりして使えないと思った経験ないからどうでもいい。
516デフォルトの名無しさん:2010/11/14(日) 20:24:04
結局ライブラリ側が対応してないって事で切り捨てたりするよね。
517デフォルトの名無しさん:2010/11/14(日) 21:39:02
よろしくです
visual studi 2008 express なのですが
$(IntDir)とかのように、長いパスをマクロで定義したいのですが、どこで行うのでしょうか?
518デフォルトの名無しさん:2010/11/14(日) 22:22:10
visual c++ 2010 expressがダウンロードできません
ホームページのWebインストールを押すとよくわからない検索サイトに飛ばされます
http://www.microsoft.com/japan/msdn/vstudio/express/
なぜでしょうか?
519デフォルトの名無しさん:2010/11/14(日) 22:25:45
馬鹿よけ
520デフォルトの名無しさん:2010/11/17(水) 12:10:00
ウインドウを作成しないで、他のウインドウの上に(或いはデスクトップのルートウインドウ上に)描画したい。
全画面表示の他のプログラムの上にも描画したい。

同様に、他のプログラムの特定の位置から色を取得したい。全画面の他のプログラムの特定の位置からも色を取得したい。

どのようにしたらいいでしょうか。

gccを使ってプログラムをいじったことはかなりあるんですが、Windowsのプログラムはやったことがないです。
521デフォルトの名無しさん:2010/11/17(水) 12:49:42
ウインドウを作成しない〜はウイルスの作り方を参考に
他のプログラム〜はウインドウのハンドルを取得
522デフォルトの名無しさん:2010/11/17(水) 14:10:57
ウイルスですかw。
とりあえず、OnekoのWindows版のソース落として読んでみます。
523デフォルトの名無しさん:2010/11/17(水) 14:28:58
ウィルスの作り方なんか参考にしなくても
ウィンドウを作成しないウィンドウなんて簡単に作れるだろ
他のアプリに描画するのもHWND/HDC取れれば可能
他のプロセスにもぐりこませるのはDLLインジェクションで可能
524デフォルトの名無しさん:2010/11/17(水) 14:49:16
わかりました。がんばるっす。
ああ、もしかすると、相手はプロセス名とか隠蔽されてるプログラムかもしれませんけど、その節はまたお世話になります。
525デフォルトの名無しさん:2010/11/21(日) 11:57:15
ウォッチウィンドウで変数を2進数で表示することは可能ですか?
可能ならどうやるのですか?
学校には製品版のVisualStudio2008もあります。
526デフォルトの名無しさん:2010/11/21(日) 13:58:15
ウォッチウィンドウで右クリックすれば「16進数で表示(&H)」ってのがあるけど、
それで代用できないかな。
HRESULT型なんかだと勝手にS_OKって文字列で表示されるから便利でもあるし、不便でもあるけど。
527デフォルトの名無しさん:2010/11/21(日) 16:16:09
528デフォルトの名無しさん:2010/11/21(日) 17:15:26
普通は16進で充分
っつーか2進だと見にくくね?
529デフォルトの名無しさん:2010/11/21(日) 21:57:17
VS2008 VC++で、デバッグ中に例外した場所で止めたいんだけど。
方法有りませんか? 上位のcatchまで飛んでしまうのは辛い。
530デフォルトの名無しさん:2010/11/21(日) 22:11:04
デバッグメニューから例外からC++ Exceptionsを選択する
531デフォルトの名無しさん:2010/11/21(日) 22:38:57
ありがとうございます。
532デフォルトの名無しさん:2010/11/23(火) 15:37:58
VC++2008です
makeファイルからプロジェクトを作る方法ってないのですか
533デフォルトの名無しさん:2010/11/24(水) 14:24:38
ポインタについての初歩的な質問なんですが
初めにポインタを2つ用意してその後各ポインタのサイズを指定した場合、
2つ目のポインタが上書きされてしまう恐れはありますか?

unsigned int data = sizeof(unsigned int) * 256;

int* arrayA; //@
int* arrayB; //A

arrayA = (int*)malloc(data); //B
arrayB = (int*)malloc(data);

上の例でですが、この順に実行した場合、AarrayBの番地情報がBの領域確保時に上書きされてしまうのでしょうか?
@とAの番地データはメモリ上で連番で確保されているのでしょうか?
534デフォルトの名無しさん:2010/11/24(水) 14:41:21
>AarrayBの番地情報がBの領域確保時に上書きされてしまうのでしょうか?
意味不明だが、エスパーするとされない。
>@とAの番地データはメモリ上で連番で確保されているのでしょうか?
連続の場所になるかは未定義。 普通はされない。
535デフォルトの名無しさん:2010/11/24(水) 15:31:43
>>534
回答ありがとうございます。
ということは、
Bで[確保した領域の始点アドレス]を[@に代入]すると言うだけで、
(@,Aで連番で確保されていたとしても)Aが上書きされることは無いということなんですね。
ありがとうございました

頭の中では
[A][B][ ][ ][ ] Aの時点でこうなり
[A][0][1][2][..] Bでこうなると思ってました。
536デフォルトの名無しさん:2010/11/24(水) 15:34:24
ポインタのサイズとか言ってる時点でポインタがなんだかわかってないやろ
537デフォルトの名無しさん:2010/11/24(水) 16:15:25
>>535
おおむねOK
arrayA = (int*)malloc(data); //B
arrayB = (int*)malloc(data);
これで、たまたま連番で確保されたとしても、、Aに確保された下に確保されるので。
重なる事はない。実際には、確保以外にメモリー管理領域があるので。
連続に確保されたとしても、管理分のメモリーが間に入る。
538デフォルトの名無しさん:2010/11/24(水) 16:26:19
自演うぜー
539デフォルトの名無しさん:2010/11/24(水) 16:48:47
>>538
w
540デフォルトの名無しさん:2010/11/24(水) 17:15:00
言語スレでやれよ
541デフォルトの名無しさん:2010/11/24(水) 22:16:09
1>DataAccess.obj : error LNK2028: 未解決のトークン (0A000016)
"extern "C" unsigned __int64 __stdcall mysql_affected_rows(struct st_mysql *)"
(?mysql_affected_rows@@$$J14YG_KPAUst_mysql@@@Z) が関数 "public: int __clrcall
Cosme_System::DataAccess::Delete_Order(class System::String ^)"
(?Delete_Order@DataAccess@Cosme_System@@$$FQ$AAMHP$AAVString@System@@@Z)
で参照されました。

こういったエラーがやまほどでるんですが何が原因かさっぱりわかりません
宜しくお願い致します。

VC++2008、DBはmysql5.1です
542デフォルトの名無しさん:2010/11/24(水) 22:17:57
error LNK2028 でぐぐる
543デフォルトの名無しさん:2010/11/25(木) 01:22:20
ライブラリをリンクしてないだけじゃね
544デフォルトの名無しさん:2010/11/25(木) 02:38:59
必要なリンクはしてると思うんですがやっぱりわかりません
545デフォルトの名無しさん:2010/11/25(木) 03:03:23
>必要なリンクはしてると思うんですが

構成貼ってから言え
546デフォルトの名無しさん:2010/11/25(木) 03:35:35
dataaccess.hには下記2つとフォームのヘッダを4つinclude

#include <winsock.h>
#include "mysql.h"

dataaccess.cppには
#include "StdAfx.h"
#include "DataAccess.h"
#include <string>

mysql.hを使ってるのでプロジェクトのプロパティ→C/C++の追加インクルードに
"C:\Program Files\MySQL\MySQL Connector C 6.0.2\include"

リンカ→入力→追加の依存ファイルに
"C:\Program Files\MySQL\MySQL Connector C 6.0.2\lib\opt\libmysql.lib" $(NOINHERIT)

547デフォルトの名無しさん:2010/11/25(木) 03:36:54
接続は
int DataAccess::DatabaseConnect(void){

//データベース接続
mysql_real_connect(mysql,"localhost","","pass","database",0,"null",0);

//データベース接続エラーチェック
if(mysql_errno(mysql) != 0)
{
String^ err = gcnew String( mysql_error(mysql) );
Debug::WriteLine("エラー発生:" + err);
return -1;
}
return 0;
}

こんなところですが、どうでしょう
548デフォルトの名無しさん:2010/11/25(木) 04:42:39
> __int64

32bit版のlibをリンクしてるとか?
549デフォルトの名無しさん:2010/11/25(木) 05:36:07
OSはvistaの64bitですが落としてきたConnector
mysql-connector-c-6.0.2-winx64.msiなので
大丈夫かとは思ったのですが

マジでわからんですorz
550デフォルトの名無しさん:2010/11/25(木) 05:54:42
コンパイルオプションやリンカオプションを取りあえず晒してみればいいと思うよ。
程よい画像が見つからなかったので英語版で悪いけど、
こんな感じの奴。
 ↓
ttp://www.openrtm.org/OpenRTM-aist/figs/VCBuildTips/vc2005porting/IntelC++CompilerCommandLine.png
551デフォルトの名無しさん:2010/11/25(木) 07:16:44
例に習って晒してみます
よろしくです
ttp://002.harikonotora.net/software/img/811-1.jpg
552デフォルトの名無しさん:2010/11/25(木) 09:27:29
mysql-connector-c-6.0.2-winx64.msiって
x86のプロジェクトにx64のライブラリをリンクさせようとしてるだろ。
32bitのプロジェクトにリンクするには32bitのライブラリもDLしてインストールしないとならない。
553デフォルトの名無しさん:2010/11/25(木) 19:53:43
>>552
目からウロコでした
みなさん丁寧にありがとうございました

おかげでできました
554デフォルトの名無しさん:2010/11/26(金) 16:46:58
インクルードファイルでコンパイルエラーがあると、インクルードしている総ての.CPP
でエラーが出まくって、数千にもなってしまいます。
これを、100ぐらいで止める方法有りませんか?
555デフォルトの名無しさん:2010/11/26(金) 17:00:48
比較的新しいバージョンなら100個でC1003が出て止まるが
556デフォルトの名無しさん:2010/11/26(金) 17:02:42
VC2008EEです
557デフォルトの名無しさん:2010/11/26(金) 21:25:25
どこぞのビタミン剤かとおもた
558デフォルトの名無しさん:2010/11/26(金) 23:08:55
C1003タケダ
559デフォルトの名無しさん:2010/11/27(土) 01:05:53
10005938349
560デフォルトの名無しさん:2010/11/29(月) 22:03:02
Windowsエクスプローラーに代表されるツリーコントロールの上にあるツールバーは
どのように実装すればいいのでしょうか。
今まで普通のツールバー(メニューのすぐ下の)しかしたことなくてわかりません。
561デフォルトの名無しさん:2010/12/01(水) 22:20:15
>>560
ReBar
562デフォルトの名無しさん:2010/12/02(木) 01:08:28
ttp://www.atmarkit.co.jp/fdotnet/dotnettips/603byteimage/byteimage.html
↑のサイトを参考にVC++でImage型をバイト列に変換するコードを書いたのですがC2664エラーが出てしまいます。
どこが間違っているのでしょうか。

using namespace System;
using namespace System::Drawing;
using namespace System::IO;
using namespace System::Net;

ref class imgConv{
ImageConverter^ imgconv;
public:
imgConv(void){
imgconv = gcnew ImageConverter();
}
System::Drawing::Image^ ByteToImage(array<Byte>^ b){
System::Drawing::Image^ img =dynamic_cast<System::Drawing::Image^> (imgconv->CanConvertFrom(b));
return img;
}
cli::array<Byte>^ ImageToByte(System::Drawing::Image^ img){
cli::array<Byte>^ b = dynamic_cast<cli::array<Byte>^> (imgconv->ConvertTo(img,typeid::cli::array<Byte>^));
return b;
}
};
563デフォルトの名無しさん:2010/12/02(木) 09:47:22
^
564デフォルトの名無しさん:2010/12/02(木) 19:00:06
ttp://www.firefly-vj.net/imagery/2009/06/04/media-session-%e3%82%92%e4%bd%bf%e3%81%a3%e3%81%a6%e5%8b%95%e7%94%bb%e3%82%92%e5%86%8d%e7%94%9f22/
↑このページを参考にしてプログラムを書いていて、
VC++2008Expressを使用しているのでATLが利用できないため、ATLを使わないよう書き直しつつやっていたのですが
hr=m_MFSession->BeginGetEvent(this, NULL);

のところで、グローバル関数にアクセスするための 'this' ポインタがありません。
とエラーが出て、詰まってしまいました。
この場合、代わりに何を指定すればいいのでしょうか?
565デフォルトの名無しさん:2010/12/02(木) 19:06:42
その鯖おちてるよ
566デフォルトの名無しさん:2010/12/02(木) 22:53:00
コールバック
567デフォルトの名無しさん:2010/12/02(木) 22:58:40
     ____
   /__.))ノヽ
   .|ミ.l _  ._ i.)
  (^'ミ/.´・ .〈・ リ
  .しi   r、_) |
    |  `ニニ' /
   ノ `ー―i´
568デフォルトの名無しさん:2010/12/04(土) 13:38:58
>>564
http://msdn.microsoft.com/en-us/library/ms701637.aspx
IMFAsyncCallbackオブジェクトへのポインタ。

そのあとの「Topology を制御する」のところで、CMyWindowをIMFAsyncCallbackから派生させているだろ。
だから、お前も次のどっちかをしたらいい。
a. ウィンドウをクラスにしている→そいつをIMFAsyncCallbackの派生にしてthisを渡す。
b. ウィンドウをクラスにしてない→別途IMFAsyncCallbackの派生クラスを作ってそいつを渡す。
569デフォルトの名無しさん:2010/12/04(土) 15:03:06
Visual C++とC++は違うのでしょうか?
また、違うのなら何が違うのでしょうか?
それとなぜみなさんはコードを書いたり出来るのでしょうか?やはり努力ですか?
570デフォルトの名無しさん:2010/12/04(土) 15:10:16
鉛筆と紙は違うのでしょうか?
また、違うのなら何が違うのでしょうか?
571デフォルトの名無しさん:2010/12/04(土) 15:10:39
Visual C++ = Visual Studio C++ MS社の商品名
C++ と言った場合、言語のC++全体を指す。
>違い
商品名と一般的な俗称。C++で規格の事を示す場合もある。

>それとなぜみなさんはコードを書いたり出来るのでしょうか?
興味+趣味+努力+楽しさ。
572デフォルトの名無しさん:2010/12/04(土) 15:26:12
>>569
求めよ
さらば得られん
573デフォルトの名無しさん:2010/12/04(土) 19:15:38
>>571
ありがとうございます。これからがんばってみます。
574デフォルトの名無しさん:2010/12/04(土) 19:19:00
やはり勉強するには本などを買うのがいちばんでしょうか?
575デフォルトの名無しさん:2010/12/04(土) 19:22:01
一番簡単なのは、知ってる人に教えてもらう。
576デフォルトの名無しさん:2010/12/04(土) 19:24:49
>>575
それが全くいないんですよ。
577デフォルトの名無しさん:2010/12/04(土) 19:42:05
今はニコニコ動画に講座がいっぱいあるから
それ見ればおk
578デフォルトの名無しさん:2010/12/04(土) 19:50:50
>>577
ありがとうございます。
579デフォルトの名無しさん:2010/12/04(土) 20:36:58
>>577
まじかいやw
580デフォルトの名無しさん:2010/12/04(土) 20:43:01
581デフォルトの名無しさん:2010/12/04(土) 21:39:22
>>568
どちらを試してみても、抽象クラスをインスタンス化できません。と言われてしまいます。
1>        'HRESULT IUnknown::QueryInterface(const IID &,void **)' : は抽象型です
1>        C:\Program Files\Microsoft SDKs\Windows\v6.0A\include\unknwn.h(116) : 'IUnknown::QueryInterface' の宣言を確認してください。
1>        'ULONG IUnknown::AddRef(void)' : は抽象型です
1>        C:\Program Files\Microsoft SDKs\Windows\v6.0A\include\unknwn.h(120) : 'IUnknown::AddRef' の宣言を確認してください。
1>        'ULONG IUnknown::Release(void)' : は抽象型です
1>        C:\Program Files\Microsoft SDKs\Windows\v6.0A\include\unknwn.h(122) : 'IUnknown::Release' の宣言を確認してください。
1>        'HRESULT IMFAsyncCallback::GetParameters(DWORD *,DWORD *)' : は抽象型です
1>        c:\program files\microsoft sdks\windows\v6.0a\include\mfobjects.h(2944) : 'IMFAsyncCallback::GetParameters' の宣言を確認してください。
1>        'HRESULT IMFAsyncCallback::Invoke(IMFAsyncResult *)' : は抽象型です
1>        c:\program files\microsoft sdks\windows\v6.0a\include\mfobjects.h(2948) : 'IMFAsyncCallback::Invoke' の宣言を確認してください。
582デフォルトの名無しさん:2010/12/04(土) 22:27:49
>>580
これわちょっとw
まじめでいいと思うけどぉ
583デフォルトの名無しさん:2010/12/04(土) 22:29:46
>>580
この板的にはこっちだろ
http://www.nicovideo.jp/watch/sm8517855
584デフォルトの名無しさん:2010/12/04(土) 22:39:43
>>583
VCじゃねーしw
585デフォルトの名無しさん:2010/12/04(土) 22:58:50
えっ?
586デフォルトの名無しさん:2010/12/04(土) 23:13:28
えっ?
587デフォルトの名無しさん:2010/12/05(日) 02:47:11
VC++2010でCを書いてます。
ファイルの読み出しでハマったので質問させてください。

FILE fh;
long pos;
_tfopen_s( &fh, _T( "textfile.txt" ), _T( "r,ccs=UTF-8" ) );

と、UTF-8として開いたファイルからfread()や_fgetts()なんかでデータを読み出した後に

pos = ftell( &fh );

でファイルの位置を読み出すとマイナス値になったり、そうでなくても変な値が返ってきます。
データ自体は正常な文字列で、正しく読み出せています。

とりあえず_ftelli64()を使ったら正常な値が返ってきたのでlongにキャストして使ってるんですが、これって仕様なんでしょうか?

MSDNみてもそれっぽい事書いてないし、なにか予め呼ばなければならない関数なんかがあったりするんでしょうか。
588デフォルトの名無しさん:2010/12/05(日) 02:48:28
FILE *fh;
589デフォルトの名無しさん:2010/12/05(日) 02:52:43
書き込んで読み直して更新したらもうレスが!

ごめんなさい。
実際は、ライブラリのような物の中の問題で実際のコードをコピペできなかったので、
再現するであろうコードを頭なの中で作って書きました。

実際はちゃんとFILE*ですし、_tfopen_sにはポインタのポインタを渡しています。
あとftell( &fh );も誤りで、実際はftell( fh );になってます。
590デフォルトの名無しさん:2010/12/05(日) 06:46:30
大抵のバグは本人が関係ないと思って省略している場所に原因がある
591デフォルトの名無しさん:2010/12/05(日) 13:36:55
なるほど、たしかにそれは否定できませんので、再現するコード書いてきました。
これはVC++2010Expressでビルド通してきました。

#include <stdio.h>
#include <Windows.h>
#include <tchar.h>
int _tmain(int argc, TCHAR* argv[])
{
FILE *fh;
long pos;
TCHAR buf[32];
_tfopen_s( &fh, _T( "D:\\test.txt" ), _T( "r,ccs=UTF-8" ) );
_fgetts( buf, 32, fh );
pos = ftell( fh );
_tprintf( _T( "offset %d\n" ), pos );
fclose( fh );
Sleep( 10000 );
return 0;
}

D:\\test.txtの中身は
ABCDEFG
HIJKLMN
OPQRSTU
VWXYZ

このコードで、_fgetts()は正しくbufに「ABCDEFG」を書き込みます。
しかし、ftell()は-12を返してきます。
592デフォルトの名無しさん:2010/12/05(日) 13:52:12
fseek(fh,0,SEEK_END);
をftell()の前に入れればいいよ。
_fgettstって何なの?
593デフォルトの名無しさん:2010/12/05(日) 14:29:33
ggrks
594デフォルトの名無しさん:2010/12/05(日) 14:48:19
>>592
fseek( fh, 0, SEEK_END );
いれたら末尾のオフセットが返ってくるだけですよね。
読み出した後の位置を保持したいので、ダメなようです。
_fgetts()はfgetsのtcharマクロです。


test.txtは改行文字がCRLFなので、ftell()は9を返してこないといけないはずです。
……と思ったら_ftelli64()もなぜか10と返してきますね。
ccs=UTF-8を外すと、ftell()も_ftelli64()も9を返すようです。
UTF-8で開くと_chsize_s()もなぜか失敗しますし、何か変じゃないですかこれ?
595デフォルトの名無しさん:2010/12/05(日) 17:36:49
ttp://home.att.ne.jp/banana/akatsuki/doc/atlwtl2/window01/index.html
このページを参考に、プログラムを打ち込んでいたのですが。
全部打ち終わり、コンパイルすると以下のようエラーが出てしまいます。

1>main.obj : error LNK2001: 外部シンボル ""void __stdcall ATL::__FreeStdCallThunk(void *)" (?__FreeStdCallThunk@ATL@@YGXPAX@Z)" は未解決です。
1>main.obj : error LNK2001: 外部シンボル ""void * __stdcall ATL::__AllocStdCallThunk(void)" (?__AllocStdCallThunk@ATL@@YGPAXXZ)" は未解決です。
1>D:\Documents\Visual Studio 2008\Projects\ATL\Release\ATL.exe : fatal error LNK1120: 外部参照 2 が未解決です。

試しに、上のページにあるプロジェクトからもコンパイルしてみましたが、結果は同様でした。
どうすればこのエラーを解決できるでしょうか?
596デフォルトの名無しさん:2010/12/05(日) 17:41:55
プロジェクトDLしてコンパイルして実行しても、何も問題なかったけど。
たぶんライブラリーの環境設定だな。
プロジェクトをDLして比較してみ。
597デフォルトの名無しさん:2010/12/05(日) 20:08:24
ExpressにWDKあたりからATL 7.1を持ってきたんだろう。
atlthunk.libとリンク。
598デフォルトの名無しさん:2010/12/05(日) 21:26:49
>>597
その通りでした、
エラーなくコンパイルできました、有難うございます。
599デフォルトの名無しさん:2010/12/06(月) 12:15:29
600デフォルトの名無しさん:2010/12/06(月) 13:34:59
すいません学生のころポケコンでC触った位のど素人です。
VC++Ex2010でハードウェアからのデータを受け取り、その値を計算した数値をウィンドウ上に表示するプログラムを作成しています。
ヘッダAで変数
int Ix1,Iy1,Ix2,Iy2;
int Ix3,Iy3,Ix4,Iy4;
int Brf,Brb,Blf,Blb;
int Mrf,Mrb,Mlf,Mlb,Msum;
int Brf_offset,Brb_offset,Blf_offset,Blb_offset;
を宣言し、ハードウェアからのデータを取り込むところまで行っています。
メインでは
以上のヘッダをincludeして
HDC hdc;
RECT rt;
static char *str = "button1,button2,(double)(Msum)/100,Mrf,Mrb,Mlf,Mlb)";
を定義した状態で、
BeginPaint(hWnd, &ps);以下に
DrawText (hdc, str,-1,&rt, DT_WORDBREAK);
と記述し、コンパイルして実行すると、変数の値ではなく、"button1,button2,(double)(Msum)/100,Mrf,Mrb,Mlf,Mlb)"
がそのままテキストとして現れます。
DOS上ではprintfで問題なくハードウェアの数値が現れたので、ヘッダファイル側の問題は少ないと思います。
これらを変数の値として表示するには何が足らないもしくは間違っていたのでしょうか?

601デフォルトの名無しさん:2010/12/06(月) 13:38:17
>>600
sprintf
602デフォルトの名無しさん:2010/12/06(月) 18:37:37
ハードウェアからうんたらとか全然関係ない前置き長いわりに質問くだらなすぎて笑った
603デフォルトの名無しさん:2010/12/08(水) 00:52:10
開いてるタブのソースの一部を切り取りしてデバッグした後
ctrl+zせずにタブ閉じちゃったんですけど元に戻せませんか?
604デフォルトの名無しさん:2010/12/08(水) 01:17:56
bool型の動的配列を作るにはどうすればいいでしょうか?
vectorではイテレータがうまく動いてくれませんでした

605デフォルトの名無しさん:2010/12/08(水) 03:50:32
VC++2008EEなんですが
デバッグ開始 →コメントアウト
デバッグなしで開始 →コメントアウトされない
という状態にしたいのですができますか?
#if defined(DEBUG) | defined(_DEBUG)
#endif
これの逆をしたいのですが、#if !(defined(DEBUG) | defined(_DEBUG))としてもデバッグなしで開始の時もコメントアウトされてしまいました。
よろしくお願いします
606デフォルトの名無しさん:2010/12/08(水) 06:31:58
IsDebuggerPresent()
607デフォルトの名無しさん:2010/12/08(水) 10:42:35
ドモルガンくらい覚えとけよ
608デフォルトの名無しさん:2010/12/08(水) 15:24:29
>>605
開始/デバッグなしで開始は、デバッガを使うかどうかの実行時の話
デバッグビルド/リリースビルドは、実行以前のコンパイル時の話
609デフォルトの名無しさん:2010/12/08(水) 15:43:58
>>605
シンプルに
#ifdef NDEBUG
ではダメ?
610デフォルトの名無しさん:2010/12/08(水) 15:48:21
>>604
ttp://www.geocities.jp/ky_webid/cpp/library/002.html
ここの一番下に分かりやすく解説があった
bitset使わずシンプルにchar配列でも作って0をfalse、それ以外trueでもいんでね?
611デフォルトの名無しさん:2010/12/08(水) 18:47:29
x #if !(defined(DEBUG) | defined(_DEBUG))

o #if !(defined(DEBUG) || defined(_DEBUG))
612デフォルトの名無しさん:2010/12/08(水) 21:14:13
今開いてる全部のウィンドウを同時画像保存したいんですが、
記述がわかりません。
Printscreenキーを押して、全画面を保存するようなものは作ったのですが、
Alt+Printscreenで撮ったような画像を希望しています。
諸先輩方、知恵をお貸しください。

VisualStudio2008 standard(MFC)です。

613デフォルトの名無しさん:2010/12/08(水) 21:29:12
くさるぐらいサンプルあるはずだけど
614デフォルトの名無しさん:2010/12/08(水) 21:29:48
>>610
ありがとうございます
イテレータが動かないわけも解説されていて納得です
bitsetを利用してみます
615612:2010/12/08(水) 21:34:48
>>613
プログラムの画面保存だと結構サンプルがありそうなのですが、
例えば電卓とか他のウィンドウも取得しようとするとなかなか見つからなくて困っているのです。
616デフォルトの名無しさん:2010/12/08(水) 22:09:02
重なっていても隠れた部分もキャプチャ
重なっていたら重なったままキャプチャ
いったん最小化を解除してキャプチャ後戻す
非表示のウィンドウを表示してキャプチャ後戻す
617デフォルトの名無しさん:2010/12/08(水) 23:09:42
Test
618デフォルトの名無しさん:2010/12/09(木) 05:18:14
class A : public B{として
よそでB型のポインタ変数を作ってあるのですが
Aの中だけで使われてるパブリックのメンバが->しても出てきません
アクセスする方法があったら教えてください
619デフォルトの名無しさん:2010/12/09(木) 05:32:12
A *a = (B*) Bの変数でできました
ありがとうございました
620デフォルトの名無しさん:2010/12/19(日) 15:00:43
>>619
せめてdynamic_cast使え。A* a = dynamic_cast<A*>(b);
621デフォルトの名無しさん:2010/12/20(月) 09:35:46
VC++2008 expressです。
これまでwin32concole applicationばかりつくってたけど、Qt使うために
メイクファイルプロジェクトていう形式で(よく分かってないんですが)
作り始めました。インクルードとか依存関係を指定するためにmakefileのファイル自体に
additional include, library directories, additional dependencies (XX.libとか)に関して
INCLUDEDIRS = /I "C:\boost\boost_1_38_0\include"
みたいに編集してやってもデバッグするとmakefileが元にもどってる。。。

うん、なんかとんでもない勘違いをしているようなんだけど、わけがわからないです。
メイクファイルプロジェクトでライブラリや依存を指定してやる(特にadditional dependencies )
にはどうすればいいんですか?
622デフォルトの名無しさん:2010/12/20(月) 09:48:07
メイクファイルプロジェクト使えと言ったやつに聞けばいいんじゃないの?
623621:2010/12/20(月) 10:21:54
>>622
ネットの数少ないサンプルやチュートリアルを真似てやってるんですが、Qtはビルドに
qmakeというやつを使わないといけないらしくて、それでメイクファイルプロジェクト
じゃないとだめっぽいです。というかそういう解釈をしてます。

win32concole applicationではプロジェクトのプロパティでいろいろ設定できたんですが、
メイクファイルプロジェクトではC++ generalやlinkerの設定がVCのメニューからは出来ない
みたいなんですよね。。。。
624デフォルトの名無しさん:2010/12/20(月) 10:37:38
>>623
ttp://hibari.2ch.net/test/read.cgi/tech/1292334148/
こっち行った方がいいんじゃない?
625デフォルトの名無しさん:2010/12/20(月) 23:36:26
プロジェクト作るたびに追加のインクルードディレクトリ指定するのが面倒なんだけど、
#pragma commentあたりで代用することはできない?
626デフォルトの名無しさん:2010/12/22(水) 05:26:52
>>625
オプションで指定しちゃだめなのか?
627デフォルトの名無しさん:2010/12/29(水) 22:40:28
初歩的な質問で申し訳ないんですが、
今までVisualC++2008使っててPC変えたから2010にしたんですけど、デバッグなしで開始てないんですかね?
Halloworldて実行したら一瞬だけ実行画面が出て勝手にウィンドウが消えるんですけど…どこの設定を弄ればいいんでしょうか
628デフォルトの名無しさん:2010/12/29(水) 22:42:10
>>627
return 0 の前にでも
iostreamインクルードして

std::cout.get();

とかでもいんでね?
629628 :2010/12/29(水) 22:42:55
間違えた
cin.get();
630デフォルトの名無しさん:2010/12/29(水) 22:48:33
getch()とかがベタだな。
631デフォルトの名無しさん:2010/12/29(水) 23:08:37
レスしてくれてありがとうございました
::て演算子がちょっとよく分からなくてググったんですけど、C++じゃなくてCの勉強してます
もしC言語のことだったんなら話のレベルについていけてませんでした…C3級程度です
632デフォルトの名無しさん:2010/12/29(水) 23:09:40
↑627です
633デフォルトの名無しさん:2010/12/30(木) 00:09:56
>>627
ツール->設定->上級者用の設定はどう?
634デフォルトの名無しさん:2010/12/30(木) 01:40:09
>>633
うまくいきました!ありがとうございました
635デフォルトの名無しさん:2011/01/04(火) 15:23:49
Visual C++の学習はこのようにやれば成功しますか。
1. C++の言語仕様を徹底的に学習して確実に理解していく。
  それまではWindowsプログラムのことは考えない。
2. MFCウィザードで作成したスケルトンコードや、MFC
 のサンプルプログラムコードを解読していく。
3.解読するために、MFCのクラス階層図を確認したり、MSDN
 を参照すると共に、C++の学習した知識を応用しながら、
 MFCのヘッダーファイルやソースファイルも調べていく。
4. そうやって理解しながら自分の追加したい機能をどの
 ようにすれば実装できるかを試行錯誤しながら検討していく。
636デフォルトの名無しさん:2011/01/04(火) 15:43:10
>>635
100%すべて完璧に理解しようとする勉強のやりかたは
おすすめできない。
必要なときに必要なことを調べられる能力の方が重要。
でもそれは人それぞれだと思うので、その方法が自分に
向いていると思えば、そうやってもいいし、興味のあるうちに
やった方がいいこともあるしね。
637デフォルトの名無しさん:2011/01/04(火) 16:13:10
>>636
そうですね。
出来る人は出来ない人に教えるって難しいのかも。

VCに関しては ダイアログベースでUIの色んなツールを
作るってのが楽しいかも。
sqliteブラウザとか楽しいのでわ?

ただC++に関しては コンソールの環境でコツコツやった方が
いいね。私はLinux使いなので、gccの環境が習得しました。
でも使えるのかどうかはわかりませんw
638デフォルトの名無しさん:2011/01/04(火) 17:44:07
何人だ?
639デフォルトの名無しさん:2011/01/04(火) 21:15:36
C++ は本にもよるけど、
クラスの手前までとプリプロセッサの処理とかをとりあえずやって、
Windows API でのプログラミング学んだ方が良いんじゃないかなぁ。
MFC は Windows API でのメッセージ処理とか標準コントロールの使い方覚えた後で
C++ のクラス勉強してその後で良いと思う。
640デフォルトの名無しさん:2011/01/06(木) 12:12:46
>>635
少なくとも2や3はしない方が良い
MFCは良質なサンプルじゃないから
641デフォルトの名無しさん:2011/01/07(金) 09:20:12
すまんが教えてくれ。
wsprintf を使うと C4995 のワーニングが出るんだが、これどうしたらいい?
無視するという方向はなしで。
642デフォルトの名無しさん:2011/01/07(金) 09:37:40
ぐぐったら解決した
643デフォルトの名無しさん:2011/01/07(金) 10:34:58
解決してねーw
644デフォルトの名無しさん:2011/01/07(金) 11:35:12
Security Alert
Using this function incorrectly can compromise the security of your application.
The string returned in lpOut is not guaranteed to be NULL-terminated.
Also, avoid the %s format -- it can lead to a buffer overrun.
If an access violation occurs it causes a denial of service against your application.
In the worse case, an attacker can inject executable code. Consider using one of the following alternatives:
StringCbPrintf, StringCbPrintfEx, StringCbVPrintf, StringCbVPrintfEx, StringCchPrintf, StringCchPrintfEx, StringCchVPrintf, or StringCchVPrintfEx.
645デフォルトの名無しさん:2011/01/07(金) 11:43:05
SDKのリファレンスでは
将来のバージョンで削除される可能性については一切触れてないな。

でも web 版でははっきりと使うなって書いてるな

Note Do not use. Consider using one of the following functions instead: StringCbPrintf, StringCbPrintfEx, StringCchPrintf, or StringCchPrintfEx. See Security Considerations.

646デフォルトの名無しさん:2011/01/07(金) 13:05:15
おお、ありがと。

安全性の問題については知ってたんだけど、てっきり _s がついた関数があるとか、そんなんだと思ってた。
自力だったらもうしばらくたどり着けないとこだったよ。
647デフォルトの名無しさん:2011/01/13(木) 09:16:44
神様教えて下さい!

VC6 のかなり昔の持ってるんだけど、たまにやろうかなとは思うんだけどVBに何度も出戻りしちゃうんだよね^^;
未だによく分からない事、それはリソース(.rc)の拡張子の中身はフォームの状況とかが羅列されてい入っているみたいなのはわかった。

でもこれはクリエイトうんちゃらーというAPI使って直接書いてない気がするんです。
これの仕組みがわからないのでIDE使うのがおっかなくてしょうがないんです。
#include "afxres.h"も関係しているのかな?
この.rc は何処の何が処理してコントロールとかウィンドウになるのか?

その辺の仕組みを神様方教えて下さいませ;;
648デフォルトの名無しさん:2011/01/13(木) 09:28:11
少し情報が足らなかったかもしれないです。

メニューリソースというものです。
BEGIN
END

とか

MENUITEM  や  MENUITEM SEPARATOR
とかです。

リソースは何がどうなるとCreateWindow とかを呼んでいるに等しくなるのかが知りたいのです。
ヘッダーの中?それとも何か特別なマクロ?
この辺を是非よろしくお願いします。
649デフォルトの名無しさん:2011/01/13(木) 09:44:03
exeに埋め込まれたリソースファイルを
windowsの中の人が読んでちゃんとやってくれるんだよ
650デフォルトの名無しさん:2011/01/13(木) 09:47:04
;;
えっと・・・
どの当りで何を定義してるんですか?
MSDNライブラリ見ても近しい近い何かは見つかりますが
その読み込みしている関数みたいなものの類がわかりません。

OLEとかオブジェクト関係なのでしょうか?
それともインターフェイス マップとかなんでしょうか?

今はインターフェイス マップの基礎 って所のヘルプ見てるんです^^;

見当違いのところを探すことはしょっちゅうですw
そろそろ見極めたい年頃なんです><;

良かったら何がどうなのか教えて下さい。
651デフォルトの名無しさん:2011/01/13(木) 09:50:02
LoadMenuとかそういうことを聞いてるのか?
なにが分からないのかわからない
652デフォルトの名無しさん:2011/01/13(木) 09:50:39
結局ですね、コントロールを作るのはせっかくIDE使っているので
APIから打ち込むのって無意味に感じるんです。

しかしですね、細かくコントロールをカスタマイズするのなら
そのexeファイルに埋め込まれたリソースを元にしていじるのは
余計に手間なのかとかもわからないんです。

結局リソースエディターにはカスタマイズの壁があるのかどうかとか
その当りも知りたいのです。

とりあえずですね・・・ そのリソースを変換してくれる関数の名前を知りたいです。
もしくはそのリソースをインクルードしている構文です。

よろしくお願い致します。
653デフォルトの名無しさん:2011/01/13(木) 09:58:28
なるほど! ロードメニューなんですね。
調べたら出てきました!

いっぱい沢山聞きたいことがあるんですが、
重要そうな要点だけお尋ねします^^;

LordMenuはWindows のコントロールの表現に限度がありますか?

例えばリージョンだけの多角形ウィンドウとかのリソースって作れるのでしょうか?
そして読み込めたりするものなのでしょうか?

どの程度までリソースを用いて開発した方が楽で、
どの程度以上は不可能か、しない方が無難でしょうか?

経験上感じた事でいいので是非お教え下さい><;
654デフォルトの名無しさん:2011/01/13(木) 10:10:53
>>653
>例えばリージョンだけの多角形ウィンドウとかのリソースって作れるのでしょうか?
無理
リソースファイルに期待しすぎじゃねーか
あんなのは使いまわしたいときにちょっとだけ楽するためのもんだ
655デフォルトの名無しさん:2011/01/13(木) 10:36:20
>>654
なるほど、有難う御座いました。

色々調べてみもみました、まとめですが、

リソースファイルはリソースエディタである程度のウィンドウが作れる
        |
リソースエディタはリソースを.rc 吐き出す
        |
.rcはLoadMenuで呼び出す。
        |
呼び出したリソースにはリソースを作成したときに決めたIDを
ウィンドウプロシージャでキャッチして使える様になる

こんな感じのイメージでよいのでしょうか?
656デフォルトの名無しさん:2011/01/13(木) 10:54:07
今までしたらばは上手に教えてくれない所だと思っていました。
下手な質問の仕方しかできないのですが、勇気を振り絞って聞いてみてよかったです。

私は全てに近いぐらい独学で学んでいます。

こんな事でも知らないだけで進めない事がいっぱいで、自分だけで調べるよりもとても為になりました。

ちょっと連絡が長い間取れなくなるので、先にお礼をさせて頂きます。

感謝しています。
本当に有難う御座いました。
657デフォルトの名無しさん:2011/01/13(木) 10:58:11
何処を聞いたのかはっきりしていなかったので、
終わっていない質問などを無視してしまったかもしれませんので
しっかり書いておきます。

>>657>>647~>>656 の質問をしている側の人間です。

>>649 >>651 >>654 様本当に有難う御座いました。
658デフォルトの名無しさん:2011/01/13(木) 11:46:48
なんだアスペか
659デフォルトの名無しさん:2011/01/13(木) 11:53:20
>>656
こんなの>>658いるよwしたらばはさw
日中で暇な奴は紙一重だぜw
660デフォルトの名無しさん:2011/01/13(木) 12:07:34
VCで連想配列みたいなのがしたければ、やっぱ構造体やクラスを使って関数を作るのがセオリーですか?
661デフォルトの名無しさん:2011/01/13(木) 12:21:36
>>660
stlのmapを使えばいい
662デフォルトの名無しさん:2011/01/13(木) 12:22:51
形無しならboost::any
663デフォルトの名無しさん:2011/01/13(木) 12:30:15
>>661 >>662 STLは便利そうです。
しかしコンパイルした時に大きさとスピードは、
自身で作ったメモリの確保、開放操作を含めたクラスと比べてどうでしょうか?
ライブラリに任せるのってなんか不安なのですが飛び越し苦労でしょうか?
664デフォルトの名無しさん:2011/01/13(木) 12:46:41
>>663ですが、実際にCやC++で可変長のクラスとかを作ったことはありません。
C++のバージョンによっては可変長関連の扱いが変わったコンパイラも存在している事は調べました。

私は他の言語で後から配列の大きさを変えられる言語や、配列の大きさを気にしなくて良い言語に慣れている為、
それらが可能かどうかを調べた事があり、作り方までは理解したのですが、
果たしてその自身で作る可変長配列を使うのが良いのか、良く聞くSTLをマスターして使うほうがいいのか、その辺が初心者にはわからないのです。
665デフォルトの名無しさん:2011/01/13(木) 12:50:27
あぁ、なんだかこう書いているうちに頭の中が纏まってきました。
一度私がやってみるべきですね。

有難う御座いました。
666デフォルトの名無しさん:2011/01/13(木) 12:56:13
>>663
自分にとって(他人にとっても)車輪作りは苦痛でしかないので
class Hoge{};
typedef shared_ptr<Hoge> HogePtr;
map<key,HogePtr> hogemap;
などとし
Hoge生成時のアロケーターにはboostのpoolでも使います

ま、お好きにどうぞ
667デフォルトの名無しさん:2011/01/13(木) 13:37:18
>>666
車輪つくりは苦痛でしかないのは、誰かに何かを追われてしまった場合でしょう。

実際物事を表現し創ることは楽しいことです。
私はデータベースのO/Rマッピングを長い間知りませんでした。

その言葉を知ってから世界観が大きく変わりました。
何か構造的なことを表現し整理がつけられる事が楽しくてしょうがありませんw

インスタンス上の話なのか、データの宣言の話なのか、インスタンス上のデータなのか
そういうことを考えるとデザインと一緒な気がします。
家具も整然としていると美しい様にw
何か綺麗に作れると、よりいっそうアイデアが湧きます!

また少し話しは変わりますが、やっぱり何を目的にして
プログラムを組むかが重要なんだとも実感しています。

他人が使うプログラムは汎用性を高めるべきだと思います。

STLが後々まで見通しが利くと思えるのならば是非使うべきだと思いました。

>>666さんサンプル有難う御座います。
しっかりと実感しながら物にしたいと思います。
668デフォルトの名無しさん:2011/01/13(木) 14:22:00
>>667
ごめん
何を言ってるのか分かんないし
何が言いたいのかも分かんない
とりあえず、頑張れ
669873:2011/01/13(木) 15:23:08
O/Rマッピングとか、DIとか流行ってるみたいだけど、
めんどくせえから、オブジェクトごとぶっこめるDB見たいの作った方がはやくね?
670デフォルトの名無しさん:2011/01/13(木) 15:36:09
O/Rマッピングはあまりよくない
671デフォルトの名無しさん:2011/01/13(木) 15:45:33
>>668
どんなプログラムでも
自分で考えるのは
楽しい
672デフォルトの名無しさん:2011/01/13(木) 16:03:08
ORMは土方用ツール
673デフォルトの名無しさん:2011/01/14(金) 10:51:36
>めんどくせえから、オブジェクトごとぶっこめるDB見たいの作った方がはやくね?
これを作るならO/Rマッピングは考えるよね?
設計=マッピングの仕方だと思う。

マッピングできる人は取り出したい取り出し方を明確に持っているという事。
これは個性そのもの、そう思う。

私は馬鹿なのだが、
私は馬鹿属性なのか? それとも馬鹿の中の部類なのか?とかいう考えか、
私は馬鹿プロパティを持つのか、馬鹿メソッド使いなのか、
捉え方そのものが個性。

>めんどくせえから、オブジェクトごとぶっこめるDB見たいの作った方がはやくね?
これが出来るのは一度何かを何度か作って、そのDBの生かし方を考えた事があるからだろうと思う。
しかし取り出し方は汎用性があってDBみたいなのを作るのが便利だが、
実質欲しいのは、私が馬鹿なのかどうか確認したいだけであり、
その汎用性だけで終わる部分は、馬鹿なのかどうか確認したい人には無駄な操作になる。

小さなことが知りたいのに大きなことを振り回すのは不便だから
それを便利に落とし込めるのは楽しいと思う。
その落とし込みも個性だと思うし、それもO/Rマッピングだと思う。

土方というのは納期があるとかデスマーチ系の職として考えた場合じゃないだろうかと思う。

私は楽しくプログラミングを覚えてしまったので、
これから職として役に立つかどうかの思想はまったく含めていないが、
あえて初めからその辛い事ばかり考えていてもIT技術者には成れないと思う。
イライラしていてはプログラムは集中して出来ないからだ。

少しばかり好き過ぎてしょうがないぐらいが一番気楽にその職に適していると思う。
自分のイラつきと向き合っていても好きな事も仕事も出来ないからだ。
674デフォルトの名無しさん:2011/01/14(金) 11:13:30
>>673
長文やめたほうがいいよ
馬鹿がばれやすくなる
全角英数もやめたほうがいいよ
この人は馬鹿なんじゃないかと穿った視点で見られるので
馬鹿がばれやすくなる
675デフォルトの名無しさん:2011/01/14(金) 11:14:48
バカバカバーカ
676デフォルトの名無しさん:2011/01/14(金) 12:27:30
何書いてるかわからない
677デフォルトの名無しさん:2011/01/14(金) 13:31:14
長文読めない方が馬鹿に見える
馬鹿に思うなら思えばいいんじゃないか?

別に分からない人とやり合う事ほど馬鹿な事ないからね。

価値が見出せない人には馬鹿で上等
678デフォルトの名無しさん:2011/01/14(金) 13:43:40
長文を解読するのはロマンがある。

短文は決め付けで終わり、内容が見えない。
長文は長いと読みにくい。

読みにくいのは敵ではない。読みにくいのは分かりにくいに繋がる。

何処が分かりにくいか聞き返すべきだ。
でなきゃ初めから話さないほうがいい。
679デフォルトの名無しさん:2011/01/14(金) 13:48:07
>>この人は馬鹿なんじゃないかと穿った視点で見られるので
馬鹿の定義を教えて欲しい。
これまじめに聞いている。ふざけている訳ではない。
ふざけている様に見えるなら貴方からしてみれば私が馬鹿に見えるんだろう。

しかし私にとっては他人の評価よりも、他人が何を言いたいかの方が大事なのだ。
是非お教え願いたい。
680デフォルトの名無しさん:2011/01/14(金) 15:15:06
読みにくい文章はたいてい内容も良くないという事で。
681デフォルトの名無しさん:2011/01/14(金) 15:31:48
君は馬鹿じゃないよ
飛び越し苦労だ
682デフォルトの名無しさん:2011/01/14(金) 16:29:22
そんな日本語あんのか
683デフォルトの名無しさん:2011/01/14(金) 17:19:16
新語誕生の瞬間に立ち会ってしまった
684デフォルトの名無しさん:2011/01/15(土) 13:36:15
VC でプロジェクトのプロパティで define 定義って出来る?

ソースファイル中で
#define MACRO1 "macro1"
ってやるようなことをプロパティで出来ないかなと。

やりたいことは
#define __MODULENAME__ $(ProjectName).exe
なんだけど。
685デフォルトの名無しさん:2011/01/15(土) 13:45:02
プロジェクト>プロパティ>C/C++>プリプロセッサ>プリプロセッサの定義

__MODULENAME__="$(ProjectName).exe"
を追加
686デフォルトの名無しさん:2011/01/15(土) 14:16:43
あそこで代入?もできたんだね。
ありがとう。
687デフォルトの名無しさん:2011/01/17(月) 13:23:45
すみません、初歩的なことな上にスレ違いかもしれませんが、
該当スレが見つからなかったので、質問です。

Microsoft Visual C++ 2010 Expressをインストールして使い始めたのですが、
このソフトにはオートコンプリート機能は無いのでしょうか?
一応、ctrl+スペースで補完自体はできるのですが、自動で補完して欲しい・・・。
なにか設定なり、プラグインなりでできるならやり方を教えてもらえませんでしょうか?
よろしくお願いします。
688デフォルトの名無しさん:2011/01/17(月) 13:24:29
ageておきます。
689デフォルトの名無しさん:2011/01/17(月) 13:40:04
無い
690デフォルトの名無しさん:2011/01/17(月) 21:41:40
>>687
メンバやらは補完してくれるから別に困ったことはないかな。
ctrl+スペースはくそおもすぎる・・・。
691デフォルトの名無しさん:2011/01/18(火) 22:43:26
youtubeで英文コメントをコピーするとスペースが文字化けすること
があってクリップボードのダンプ見ると1バイトデータが0x3f 0x20
の2バイトに変わってこのデータをメモ帳やダイアログのエディット
ボックスにペーストすると文字化けのまま出力するけどブラウザの
上のURL入力する所にペーストすると文字化けせずに出力される
ので、文字化けを回避する方法がありそうですが、どうすれば
良いでしょうか?
692デフォルトの名無しさん:2011/01/18(火) 22:54:02
unicodeで貰えばいい
693デフォルトの名無しさん:2011/01/18(火) 23:42:23
該当スレがわからないのでここで質問させてください。
Visual C++で、PDF文書に透かし文字を設定しようとしています。

ttp://kb2.adobe.com/jp/cps/511/511269.html

上記を参考にjavascriptのflattenPagesメソッドでPDFに
アクセスできるところまではなんとか行きました
(注釈使ってないので効果はわかりませんが、リターン値は正常でした)。

そこで、本題であるaddWatermarkFromTextメソッドに変更して同じように
invokeで呼び出そうとしたのですが、このメソッドは引数が20個近くあり、
中には設定値がjavascript側のクラス定数だったりするものもあり、
VARIANT構造体にどのように設定すればよいのかさっぱりわかりません。
とくに配列?を設定するらしいaColorという引数の設定値が不明です。

これら引数の設定方法を教えていただけませんでしょうか?
よろしくお願いいたします。

なお、とりあえず引数を必須項目になっている設定文字列だけにして実行してみたところ、
処理自体は成功しました(ただし、見た目は変化なし。Acrobat Standard 8.0から透かし設定を
追加や変更しようとすると、既存の透かしを変更していいか聞かれるため、なんらかの設定はされているもよう)。
694デフォルトの名無しさん:2011/01/19(水) 18:13:25
クラスオブジェクトを作って、開放処理でdelete クラスオブジェクト;をすると
error C2440: 'delete' : 'クラスオブジェクト' から 'void *' に変換できません。
と出ます。どうしてでしょうか。今までは同じようなことが問題なくできていました。
695デフォルトの名無しさん:2011/01/19(水) 18:37:50
class Hoge{};
int main()
{
/*
//error C2440: 'delete' : 'Hoge' から 'void *' に変換できません。
Hoge h;
delete h;
*/

//ok
Hoge *h = new Hoge();
delete h;

return 0;
}
696デフォルトの名無しさん:2011/01/19(水) 18:55:42
ああ本当だnewするの忘れてた
697693:2011/01/19(水) 22:07:02
すいません、自己解決できました。失礼しました。
698デフォルトの名無しさん:2011/01/20(木) 01:05:10
かわいいミスだ
699デフォルトの名無しさん:2011/01/21(金) 17:30:41

vc 6.0 のプログラムを 2005 vc に変換しようとしています。
> DialogBox( hi, "DLG_DATA", HWND_DESKTOP, (DLGPROC)dlgproc );
>1>c:\users\新しいフォルダー (13)\9章\list0910\list0910.cpp(11) : error C2664: 'DialogBoxParamW' :
2 番目の引数を 'const char [9]' から 'LPCWSTR' に変換できません。(新しい機能 ; ヘルプを参照)
1> 指示された型は関連がありません。変換には reinterpret_cast、C スタイル キャストまたは関数スタイルのキャストが必要です。

なんか良くわからん よろ
スレチと言われ此方に来ました。
700デフォルトの名無しさん:2011/01/21(金) 17:34:35
>>699
プロジェクト>プロパティ>全般あたりの文字セットをマルチバイトに
701デフォルトの名無しさん:2011/01/21(金) 18:15:16
>>700
流石だぜ 有難う 無事実行出来ました。

今まで、途方にくれていました。
何のエラーか?分からなかっただけ助かりました。

unicodeからマルチバイトに変換?
違いが分からない・・・ orz
702デフォルトの名無しさん:2011/01/21(金) 19:56:32
UNICODE は wchar ?
703デフォルトの名無しさん:2011/01/21(金) 20:20:48
凄く初歩的な質問かもしれませんが、.rcファイルは配布時に同封しなければならないのですか?
704デフォルトの名無しさん:2011/01/21(金) 20:32:48
バイナリを実行するためには必要ない
705デフォルトの名無しさん:2011/01/21(金) 20:33:49
?どういうこと?
706デフォルトの名無しさん:2011/01/21(金) 20:34:43
exeを配布: rc不要
ソースを配布: rc必要

とえすぱ
707デフォルトの名無しさん:2011/01/21(金) 20:36:12
ということは.rcはビルド時に自動的に.exeに取り込まれるものなのですか?
708デフォルトの名無しさん:2011/01/21(金) 20:41:17
ちょっと質問してみちゃっていい?

今まで、シュミで、XP+VC++6.0で開発してたんだけど、
今度PCを新調して(Windows7)、んでVS2005を中古で買おうとおもっているんだけど
なんか調べたらVS2005からUnicodeプロジェクトになるらしいんだ。

んで、そのVS2005でUnicodeプロジェクトで作ったVC++のアプリって(あ、ネイティブのね)
XPのマシンでは文字化けしたりしちゃうんかな?XP用にShift_JISの文字列を受け取ったら
Unicodeに変換するとかそういう関数っているのかな?
709デフォルトの名無しさん:2011/01/21(金) 20:57:38
sjisプロジェクトもいけるよ
710デフォルトの名無しさん:2011/01/21(金) 21:30:05
XPでもunicodeのビルドで作ったexeは動くよ。
文字の変換はファイルからとか外部からデータを取り込んだときに必要。
SJIS<->UNICODEの変換関数はある。
711デフォルトの名無しさん:2011/01/21(金) 21:32:04
>>707
そう。
712デフォルトの名無しさん:2011/01/21(金) 21:34:28
>>708
日本語扱ってるアプリケーションなら
日本語版OSで使う限り問題ない。
他言語版OS使うと適切に文字が表示されない。

あ、ASCIIコードについては正しく表示される。
713707:2011/01/21(金) 21:37:41
ちょっと今テストしてみたんですけど、.rc内でリンクしたファイルも取り込まれてる?
exeを他の場所に移しても作動した。
714デフォルトの名無しさん:2011/01/21(金) 21:44:13
アイコンとかビットマップのことなら
ちゃんと取り込まれてるよ
715デフォルトの名無しさん:2011/01/21(金) 21:44:51
716デフォルトの名無しさん:2011/01/21(金) 21:52:02
>>712
内容ちゃんと読まずにレスしてしまったわ
反省
Unicode でビルドし直すんだな。

Shift-JIS で受け取った文字列は
内部で使う限りは変換は必要ないよ。
っていうか、Unicode文字列を使う設定でプロジェクトを構成しても
Unicode 全く使わないフルマルチバイトプログラムくめるし、
それは正当なプログラム。
デフォルトで Unicode になってるのは
たとえば、MessageBox とかのジェネリックプロトタイプを
MessageBoxW に置き換えたりするだけだから。
717デフォルトの名無しさん:2011/01/21(金) 22:08:25
MBCSでビルドしてたプロジェクトをUNICODEでビルドし直すって話なら、
高確率でコンパイルが通らないと思う。
コンパイル通っても、バグってる確率高い。
718デフォルトの名無しさん:2011/01/21(金) 22:09:09
>>716
>たとえば、MessageBox とかのジェネリックプロトタイプを
>MessageBoxW に置き換えたりするだけだから。

それには何の意味があるのですか?
719デフォルトの名無しさん:2011/01/21(金) 22:20:09
たとえば、MessageBox っていう API を使っていたのなら
残念だけど実際にそういう名前のAPIは存在しない。

MessageBoxA か MessageBoxW
A がマルチバイト(日本語版では Shigy-JIS として扱われる)
W が unicode 版
プロジェクトの設定は単にこれを切り替えるだけのもの。

これは、ほかの文字列を引数に取るAPIに共通している。
ただし、Vista 以降は A も W もつかない Unicode 版のみが追加され始めてる。
720デフォルトの名無しさん:2011/01/21(金) 22:33:17
つまりどういうことです?
721デフォルトの名無しさん:2011/01/21(金) 22:49:03
世界は崩壊する
722デフォルトの名無しさん:2011/01/22(土) 01:18:39
MIDIを再生する時ってmmioReadを使うみたいだけど
fread使うのと何が違うんですか?
723デフォルトの名無しさん:2011/01/22(土) 11:24:17
mmio系はRIFF形式のチャンクを認識してよろしくやってくれる
724デフォルトの名無しさん:2011/01/22(土) 12:45:24
>>723
レスありがとうございました。
参考にします。
725デフォルトの名無しさん:2011/01/22(土) 21:30:15
int* a;



int *a;

の違い、使い分け方を終えてください。
726デフォルトの名無しさん:2011/01/22(土) 21:35:53
見た目が違う
それだけ
727デフォルトの名無しさん:2011/01/22(土) 21:41:22
int* a, b;

int *a, b;

int *a, *b;

int* a, *b;
728デフォルトの名無しさん:2011/01/22(土) 21:43:07
本質的な違いはない
見た目的には上はint*型という認識をしやすい
しかし、あくまで*の付いてる変数しかポインタにはならない(例 int* a, b;)
下はint型のポインタ変数と認識するかもしれない(上の認識の方が正しい)
ただ、上のような例で誤解が少なくなる
729デフォルトの名無しさん:2011/01/22(土) 22:01:50
なるほど。

ということは
複数のポインタ変数を宣言する場合ではない限り
変数名の方をメインに使ったほうが
いいのかもしれませんね。

int* a, b;  // success
int *a, *b;  // success

void test::func( int *a, int *b ); // success
void test::func( int* a, b ); // fault

ありがとうございました。
730デフォルトの名無しさん:2011/01/22(土) 22:06:35
> void test::func( int* a, b ); // fault
それは趣が異なる
731デフォルトの名無しさん:2011/01/22(土) 22:17:50
参照にしても int &aよりも int& aの方が好きだな。
732デフォルトの名無しさん:2011/01/22(土) 22:32:23
>>730
趣が異なる、というのはどういう意味でしょうか?
ビルドが通らなかったので
そういった記述ができないものと理解したのですが・・・。
733デフォルトの名無しさん:2011/01/22(土) 22:40:31
お、俺は釣られないぞ
734デフォルトの名無しさん:2011/01/22(土) 22:46:24
それ関数の宣言なら
b のデータ型が指定されてないだろう。

なんか最近何を狙ってるのかわからんが
わかってて質問してる変なやつがいるのかな
735デフォルトの名無しさん:2011/01/22(土) 23:36:37
プロジェクトのコピーをしていて疑問に思ったのですけど
複製したプロジェクトのフィルターのGUIDが一致してたら
何か問題はあるでしょうか?
コンパイルは通るので問題はないかと思っているのですが気になります。
736デフォルトの名無しさん:2011/01/23(日) 00:04:24
>>735
ソリューション内で同一GUIDのプロジェクトは管理出来ない
737デフォルトの名無しさん:2011/01/23(日) 00:09:14
>>734

コミュニケーションがとりたかったんだろ。
「こんなコード書いたけどどうっすか?」みたいな。

ググればすぐ分かるのに質問してくる初心者とか、
結論がでてるのにとぼけて質問してるようなやつとか、寂しいからだろ。
738デフォルトの名無しさん:2011/01/23(日) 00:15:27
かまってちゃんってやつだな
指摘すると釣れちゃっただし
そんなのを相手にしても何一つ得られる物はないからほっとくのがいいね
739デフォルトの名無しさん:2011/01/23(日) 00:20:29
>>735
IDEが勝手にGUIDを生成しなおすから問題にはならない
740735:2011/01/23(日) 01:19:56
>>736
>>739
すっきりしました。ありがとうございます。
741デフォルトの名無しさん:2011/01/24(月) 13:10:49
ATLのダイアログウィザードで作成したダイアログにて、
ピクチャボックスへ画像を表示したいのですが、

OnInitDialogで

CWindow imageBox = GetDlgItem(IDC_PICT);
HDC hdc = imageBox.GetDC();
HDC memory_dc = CreateCompatibleDC(hdc);
SelectObject(memory_dc, m_image);
BitBlt(hdc,0,0,bitmap.bmWidth,bitmap.bmHeight,memory_dc,0,0,SRCCOPY);
DeleteDC(memory_dc);

と書きましたが全く描画されません。
メンバ変数の作成もできず途方に暮れてます。

何か参考となる情報はありませんでしょうか。
742デフォルトの名無しさん:2011/01/24(月) 15:24:46
>>741
CStatic s = GetDlgItem(IDC_PICT);
LONG style = (LONG)::GetWindowLong( s.m_hWnd, GWL_STYLE );
style = ( style & 0xfffffff0 ) | SS_BITMAP;
::SetWindowLong( s.m_hWnd, GWL_STYLE, style );
s.SetBitmap(
::LoadBitmap(
(HINSTANCE)::GetWindowLong(m_hWnd,GWL_HINSTANCE),
MAKEINTRESOURCE(IDB_BITMAP1)));
743742:2011/01/24(月) 15:29:23
あぁ、BitBltでやりたいならOnPaint内でやればいいんじゃないかな。
744デフォルトの名無しさん:2011/01/24(月) 15:33:50
SelectObjectしたのは戻さないとDeleteDCに失敗するぞ
745デフォルトの名無しさん:2011/01/24(月) 16:27:55
>> 741, 743
お二方ともありがとうございます。
早速参考にさせていただこうと思いましたが、
atlctls.hが見つからずInclude出来ません。
過去にCStaticを使おうとした際にも同じ問題にあたりました・・・。
画像を表示させたければWTLにする必要がある、ということでしょうか?

また、環境はVisualStudio2008Proです。
746デフォルトの名無しさん:2011/01/24(月) 17:02:21
>>745
> WTLにする必要がある、ということでしょうか?
そんなこと無い。
Win32APIを直接呼び出すなり
リソースエディタのプロパティで設定すればいい

747デフォルトの名無しさん:2011/01/24(月) 20:22:00
VisualStudio2010で、WebBrowserコントロールを使って実行ファイルと同じ場所にあるtest.htmlを表示したいのですがエラーが出て表示できません。

やってみたことは相対パスでUrlプロパティに[./test.html]と入力したのですが、相対URLにナビゲートできませんと出ます。

test.htmlを表示させる方法があれば教えていただけませんか。
748デフォルトの名無しさん:2011/01/24(月) 20:31:00
絶対パスで指定しろ
IEコンポはそんな気の利いたことしてくれんぞ
749デフォルトの名無しさん:2011/01/24(月) 21:54:46
fopen("xxxx","rb")で動画ファイルを読み込ませたいのですが、
そのファイルはどこに置けばいいのでしょうか?
ファイルがない状態でデバッグすると「0x004121a7 でハンドルされていない例外が発生しました」と表示されます。
750デフォルトの名無しさん:2011/01/24(月) 22:29:36
>>749
vista とか 7なら、エクスプローラーでそのファイルのあるフォルダを
ひらいて、うえのコンピュータ > OS(C:) > tmp みたいな表示のあるところを
クリックしたら c:\tmp\ とか表示されるから、それをコピペして、

fopen("c:\\tmp\\xxx", "rb") みたいにファイル名の前につける。
751デフォルトの名無しさん:2011/01/24(月) 22:33:10
何の初心者なんだよw
752デフォルトの名無しさん:2011/01/25(火) 18:55:06
CryptGetHashParamで取得したMD5、SHA-1のハッシュ値がおかしいんです・・・。
1文字だとOK、2文字以上だとしれっと全然違う値を返してきます。

一体何が原因なんでしょうか?
753デフォルトの名無しさん:2011/01/25(火) 19:40:19
エスパーに聞いてくれ
754デフォルトの名無しさん:2011/01/25(火) 21:55:42
複数のソリューションを一括でビルドできるバッチファイルを作成したいのですが
簡単に作れるでしょうか?
755デフォルトの名無しさん:2011/01/25(火) 22:07:39
難しくはないが、VC++のバージョンによって書き方が変わるかもしれない
756754:2011/01/25(火) 22:30:43
失礼しました。2008になります
757デフォルトの名無しさん:2011/01/26(水) 00:49:39
devenv example.sln /build Release

こんな感じだったと思う
758デフォルトの名無しさん:2011/01/27(木) 14:28:55
C++をこれから始めようと思ったときに、
まずどういうものをつくろうとすれば勉強になりますか?
759デフォルトの名無しさん:2011/01/27(木) 14:45:23
2ちゃんブラウザ
760デフォルトの名無しさん:2011/01/27(木) 15:32:50
ハロワルド だろが ばかやろー
761デフォルトの名無しさん:2011/01/27(木) 15:50:01
>>758
はっきり言おう、何が作りたいか分からない場合、勉強しても続かないか中断する。
強いて上げるなら、入門書の問題やれ、それを書き換えた応用しろ。
762デフォルトの名無しさん:2011/01/27(木) 16:46:47
そですね。
テキストを読み込んで、文字コード変換するプログラムなんてどですか?
基本はフィルターとかコンバーターではないかと。
763デフォルトの名無しさん:2011/01/29(土) 15:56:36
いま、WinAPIでロープレつくってるノシ
764デフォルトの名無しさん:2011/01/31(月) 18:52:50
ふーん
765デフォルトの名無しさん:2011/01/31(月) 19:27:35
昨日から http://www.geocities.co.jp/SiliconValley-Bay/4543/Osero/index.html
こちらのサイトを参考にオセロのプログラミングを作成しようと奮闘しているのですが、
「AppWizard でプロジェクトを作成する」の手順6まで進め、ビルドし実行しようとしても、
「INK : fatal error LNK1104: cannot open file "Debug/Osero.exe"
Error executing link.exe.」となり、先に進めません。
様々なサイトを参考にし奮闘しているのですが、昨日丸一日かかっても解決できなかったので、質問させて頂きました。

Visual C++ 6.0 Standard Edition
VC++6.0 ServicePack 6
Platform SDK February 2003
DirectX 9.0 SDK Summer2004
こちらはインストール済みです。本当に困っています。どなたかご教授お願いします。
766デフォルトの名無しさん:2011/01/31(月) 19:45:36
Error executing link.exe
767デフォルトの名無しさん:2011/01/31(月) 21:02:38
インストールしたあと、まともに使えるか確認したんだろうか?
まさかそのサイトで筆おろしとか
768デフォルトの名無しさん:2011/01/31(月) 21:05:59
VC++6って最近のOSだと動かないよ
769デフォルトの名無しさん:2011/01/31(月) 21:06:38
つーかLNK1104出してるのがリンカだからlink.exeが実行できないわけじゃないな
Osero.exeを起動したままビルドしようとしてるってオチか
770デフォルトの名無しさん:2011/01/31(月) 21:16:00
あるある
771デフォルトの名無しさん:2011/01/31(月) 21:41:44
clを使ってコマンドラインでサブディレクトリのソースをコンパイルする場合
こんな感じにやってます cl /c ./hoge/hoge.cpp

そのままだとオブジェクトがカレントディレクトリに作成されてしまうのですが
これをサブの方に出力する方法はありますか?
772デフォルトの名無しさん:2011/01/31(月) 21:49:01
ideでコンパイルした時もコンソールと同じコンパイラが動いてるから
ideで可能だから当然可能だな
773デフォルトの名無しさん:2011/01/31(月) 22:01:43
>>771
cl /c ./hoge/hoge.cpp /link /OUT:./hoge/hoge.exe

IDEを使った方がいいよ
せめてmakefileを書いたほうがいいよ
774デフォルトの名無しさん:2011/01/31(月) 22:06:06
/c指定してるのにリンカオプションを書く男の人って・・・
775デフォルトの名無しさん:2011/01/31(月) 22:13:19
>>773
すみません出来ました。
実はmakefileの作成過程で気になったことだったのですが
/foオプションで出来ました

msdnは見てたんですが説明がただオブジェクトを作成するみたいに
素っ気なかったのでついスルーしていました
ありがとうございました
776デフォルトの名無しさん:2011/01/31(月) 22:16:05
>>775
正確には/Foでした申し訳ないです
777デフォルトの名無しさん:2011/01/31(月) 22:16:26
>>774
すまん
流し読みしてた
778デフォルトの名無しさん:2011/01/31(月) 22:26:33
.cpp{$(OUTDIR)}.obj:
  $(CPP) $(CPPFLAGS) /Fo"$*.obj" /Fd"$*.pdb" /FAs $<
779765:2011/02/02(水) 02:42:02
>>765の者です。
無事にオセロを作ることができました。お騒がせしました。
上の内容で続けて質問させて頂きたいのですが、
コンピューターが1手を打つまでに掛かった処理時間の計測を行いたいのです。
ネットで調べていろいろなプログラムを追加して試したのですが、なかなか上手くいきません。
ご教授頂けないでしょうか。
780デフォルトの名無しさん:2011/02/02(水) 03:15:26
time_t
781デフォルトの名無しさん:2011/02/02(水) 03:19:38
782デフォルトの名無しさん:2011/02/03(木) 13:43:34
VC++でIEのプラグインを作っているのですが、
プラグイン内部からHttpSendRequestでサーバへデータをPOSTすると、
IE側のセッションが切れてしまいます。

何かいい回避策はありませんでしょうか・・・。
783デフォルトの名無しさん:2011/02/03(木) 14:40:27
同時接続数の上限をあげればいいんじゃね
784デフォルトの名無しさん:2011/02/03(木) 18:14:44
標準では「2」に設定されてるんだったか
785デフォルトの名無しさん:2011/02/03(木) 22:48:12
>>779
> コンピューターが1手を打つまでに掛かった処理時間の計測を行いたいのです。
GetTickCount か GetTickCount64 を開始前と開始後にとってその差分を累積。
数字は1ミリ秒単位だけど、実際の分解能は15ミリ秒だったか16ミリ秒だったかなので、
細かい数字に期待しないこと。
もっと細かい数字を出したければ Multimedia API を使って分解能をあげなきゃいけない。
786デフォルトの名無しさん:2011/02/05(土) 14:07:35
>783
ありがとうございます。
結局同一サイト(&API側)への接続では問題回避できなかったので、
サイトとWebAPIを別アプリケーションにしました・・・。

あと、インストーラーをmsi形式で作成したのですが、
インストール直後はプラグインが有効になりません。
何か設定やコーディングが必要なのでしょうか?
787デフォルトの名無しさん:2011/02/05(土) 23:50:00
再起動は基本中の基本
788デフォルトの名無しさん:2011/02/06(日) 00:53:59
こんばんは。勉強手始めにクリップボードに日付を貼り付けるソフト作ろうとしてます。
日付はうまく取得できてそうなんですが、どうも文字化けしてしまいます。
悪い点ご教授願えないでしょうか。

-----------------------
WORD *pText;

…メモリ確保

GetLocalTime(&stTime);

*pText = stTime.wYear; //ここでは値入っていました

OpenClipboard(NULL);
EmptyClipboard();
SetClipboardData(CF_TEXT , hText);
CloseClipboard();
-------------------------
789デフォルトの名無しさん:2011/02/06(日) 01:05:37
>悪い点

ソースを全部貼らないこと
790デフォルトの名無しさん:2011/02/06(日) 01:12:39
>>788
hTextがどんなものか分からないので答えようが無いです
http://wisdom.sakura.ne.jp/system/winapi/win32/win90.html
http://homepage2.nifty.com/c_lang/sdk/sdk_94.htm
これらを読んでも理解できないなら
省略せずに張ってください
791デフォルトの名無しさん:2011/02/06(日) 01:52:00
「メイクファイルのエクスポート」って無くなったんですか?
6.0 の時はあったのに。
792デフォルトの名無しさん:2011/02/06(日) 01:52:49
msbuildに変っちゃったからな
793デフォルトの名無しさん:2011/02/06(日) 12:26:51
>>789
>>790
お返事ありがとうございます。悪いところを勝手に推定してしまいました。
ご教示いただけると助かります。

----------------------------------
HGLOBAL hText;
WORD *pText;
SYSTEMTIME stTime;

hText = GlobalAlloc(GHND, 3);
pText = (WORD *)GlobalLock(hText);

GetLocalTime(&stTime);
*pText = stTime.wYear;

GlobalUnlock(hText);

OpenClipboard(NULL);
EmptyClipboard();
SetClipboardData(CF_TEXT , hText);
CloseClipboard();
----------------------------------
環境:Visual C++ 2008 Express
794デフォルトの名無しさん:2011/02/06(日) 12:42:12
数値と数字は違うぞ
文字列にしてやらないとちゃんと表示してくれない
char *pText = (char*)GlobalLock(hText);
sprintf(pText, "%d", stTime.wYear);
795デフォルトの名無しさん:2011/02/06(日) 15:25:32
>>794
でました!超初心者ですみません。勉強になりましたありがとう!
796デフォルトの名無しさん:2011/02/06(日) 18:18:22
ほんとうにそれだったんかい。w
797デフォルトの名無しさん:2011/02/08(火) 20:26:51
通信プログラムについてはこちらで良いのでしょうか・・・?

現在、WinINETを用いてX-WSSE認証のヘッダを追加してサーバへ送信しようとしています。
IE8の環境では正常にヘッダが追加されますが、
IE7の環境だとHttpAddRequestHeadersの際に「ERROR_HTTP_HEADER_NOT_FOUND」(12150)のエラーとなります。

> ret = ::HttpAddRequestHeaders(hRequest,pszContentType,lstrlen(pszContentType), HTTP_ADDREQ_FLAG_ADD_IF_NEW);
最後のフラグ、HTTP_ADDREQ_FLAG_ADD, HTTP_ADDREQ_FLAG_REPLACEなども試しましたがだめでした。
IE8の環境だと全く問題なく通るのですが・・・。

何か方法がありましたらご教授下さい。
798デフォルトの名無しさん:2011/02/08(火) 20:58:13
799デフォルトの名無しさん:2011/02/09(水) 21:36:31
VC++でビルドする時のこと。同じくらいの修正量にもかかわらず、
すっごく時間かかる時と、全然かからない時があるんだけど、
あれって、どういう仕組みなんすか

使い勝手良くないんですが・・
800デフォルトの名無しさん:2011/02/09(水) 21:47:02
プリコンパイルヘッダ弄ったんじゃないの?
それかたくさんのソースからインクルードされてるヘッダ弄ったり
801デフォルトの名無しさん:2011/02/09(水) 21:55:09
勉強用で使い始めたけど、プロジェクトごとにライブラリパス通すのめんどくせえ。
Makefileで一発環境とか出来ないかなぁ
802デフォルトの名無しさん:2011/02/09(水) 21:57:15
設定できるでしょ
803デフォルトの名無しさん:2011/02/09(水) 22:22:56
>>800
う〜ん・・つまりヘッダに追加修正とか行った場合は、プリコンパイルヘッダが
無効になっちゃうからビルドしなおすことになる、、、ということ?

確かに、ヘッダをいじることもありますけど。。
804デフォルトの名無しさん:2011/02/09(水) 22:29:15
ヘッダはプリコンパイルヘッダでインクルードしてないなら関係ない
例えばa.cppとb.cppの両方がc.hをインクルードしている場合
c.hを書き換えるとa.cppとb.cpp両方の再コンパイルが必要になるから遅くなる
805デフォルトの名無しさん:2011/02/10(木) 00:01:30
どこで聞けばいいのか分からなかったので。
system("cls");
だとログまで消えてしまうんですけど、ログを残しつつ画面を綺麗にするコマンドがあれば教えてください。
806デフォルトの名無しさん :2011/02/10(木) 07:27:52
>>805
clsで消えるのは画面だけの筈だが、あなたの言うログってどれのこと?
807デフォルトの名無しさん:2011/02/10(木) 12:12:30
clsでログが消えるOSかもしれないぞ
808デフォルトの名無しさん:2011/02/10(木) 12:32:19
改行たくさんすれば綺麗になるよ
809デフォルトの名無しさん:2011/02/10(木) 21:06:23
Visual C++ 2008 (Express)で、プロジェクトテンプレートを自作する方法はありますか?
http://msdn.microsoft.com/ja-jp/library/ms185291(v=VS.90).aspx
↑のように手動でもいいのですが。(これはC#用ですよね?)

もしくは、自分でAppWizardを作る方法があれば教えてください。
オープンソースのWTLプロジェクトのAppWizardをパクろうとしましたが難解で挫折しました。
810デフォルトの名無しさん:2011/02/12(土) 13:21:57
コンボボックスに項目を追加するCComboBox::InsertStringなどを見ると、
「メモリ不足のために新しい文字列を挿入できない場合は、CB_ERRSPACE を返します」
なんて書いてあるんですけど、こんなエラーも皆さんちゃんとチェックしてますか?

CComboBox::InsertStringに限らず、この手の戻り値は結構あるようですが、
InsertStringできるところまで来ているのに新しい文字列が追加できない
という状態なんて、出会ったこと無いのですが。
811デフォルトの名無しさん:2011/02/12(土) 13:24:52
昔は64kbytesの壁っていう理不尽な制限があったからな
812デフォルトの名無しさん:2011/02/13(日) 11:42:02
初心者な質問ですがよろしいでしょうか?

私は関数の引数が無い場合には(void)と記述するのですが
知り合いからそれは間違っている( )にしろと言われました。

私の記述は間違っているのでしょうか?
またどうして間違っていると言われたのでしょうか?
813デフォルトの名無しさん:2011/02/13(日) 11:55:54
別に間違ってないよ。書かなくてもいいものを書くのは手間ってだけじゃね?

とはいいつつ、派生クラスでのvirtualや基底クラスのメンバ呼び出しのthis->とかは
冗長とわかっていてもあえてつけたほうがいいといわれることもある。

なんにせよそういう時はC++ Cording Standardsの教えが役に立つ。
そういう瑣末な違いは長々と議論するに値しない。
まともなプログラマはどんなスタイルでも読めるものだし
ひとつのソースファイルの中で一貫性が保たれていればそれで十分だ。
814デフォルトの名無しさん:2011/02/13(日) 12:04:25
なるほど ありがとうございます。
81532:2011/02/13(日) 12:11:10
Win32アプリケーションで質問です。(CLI上で動く.NETではない)
子スレッドから、メインスレッドのGUI部品へのアクセスするために、デリゲートのサポートってありますか?
C#やC++/CLIではデリゲート使えるけど、純粋なWin32アプリだとどうなんでしょーか。
816デフォルトの名無しさん:2011/02/13(日) 12:46:38
アンマネージでのプログラムってコトだよね?
メインスレッド?で処理をしたければ、ウィンドウメッセージを送って処理をさせるとか。
817デフォルトの名無しさん:2011/02/13(日) 12:48:08
SendMessage
818デフォルトの名無しさん:2011/02/13(日) 12:49:31
>アンマネージでのプログラムってコトだよね?
はい、そうです。

>メインスレッド?で処理をしたければ、ウィンドウメッセージを送って処理をさせるとか。
なるほど!WM発行すればメインスレッドで拾えそうですね。考え落ちしてた;;
819デフォルトの名無しさん:2011/02/13(日) 22:20:51
C++を勉強中なのですがダイアログボックスでつまづいてしまいました。
質問をするのも初めてなので、意味がわからなかったら申し訳ありません。

環境は下記だと思います。
Windows7
visual studio 2005
C++ win32(MFC?


ダイアログボックスのクラスDialogを作成し、メイン関数で下記のコードを書きました。

testdialog = new Dialog;
testdialog->Create(IDD_DIALOG1, CWnd::GetDesktopWindow());
testdialog->ShowWindow(SW_SHOW);

このコードでダイアログボックスが開き、こちらからボタンを押すことができると思ったのですが、
実際にデバッグしてみると、ダイアログボックスはビジー状態で、中身のボタンなどは表示されませんでした。

また、コードを抜けたあとすぐにダイアログボックスは消滅してしまいます。
何が足りないのか教えてください。
たぶん提示する情報が足りないと思うので、それについてもご教授ください。
820デフォルトの名無しさん:2011/02/13(日) 22:29:27
CreateじゃなくてDoModal呼べよ
もしCreateでダイアログボックス作るならメッセージループ作らないと
821820:2011/02/13(日) 22:33:34
>>820

DoModalでできました。
ありがとうございました。
822デフォルトの名無しさん:2011/02/13(日) 22:39:45
うむ。美しい流れだ。
823デフォルトの名無しさん:2011/02/13(日) 23:34:18
CString を Stringに変換するのってどうやるんでしょうか?

ネットで拾った方法1//error c2664
CString cstr;
std::string str(cstr);

ネットで拾った方法2//error c2679
CString cstr;
std::string str = static_cast<LPCTSTR>(cstr);

いったんchar[]などにしてみたんですがどうもうまくいきません。





824デフォルトの名無しさん:2011/02/13(日) 23:36:57
std:string str(cstr.c_str())
825デフォルトの名無しさん:2011/02/13(日) 23:39:12
std:string str((char*)cstr);
826デフォルトの名無しさん:2011/02/13(日) 23:39:40
std::wstring str = static_cast<LPCTSTR>(cstr);
827デフォルトの名無しさん:2011/02/13(日) 23:41:45
828デフォルトの名無しさん:2011/02/13(日) 23:52:30
>>825
error C2440: '型キャスト' : 'CString' から 'char *' に変換できません。

>>826
できたのですが、今度はwstringからstringの変換ができません…orz

>>827
ネットで拾った方法2で試してみました(error c2679 )
829デフォルトの名無しさん:2011/02/14(月) 00:04:15
>>828
>>826が成功したんなら設定がunicode文字セットを使うになってるはず
マルチバイト文字セットを使うに変更すればstd::stringでも通るよ
830デフォルトの名無しさん:2011/02/14(月) 00:06:57
wchar_t char 変換 でぐぐれ。
831デフォルトの名無しさん:2011/02/14(月) 00:07:40
>>829

できました!ありがとう
832デフォルトの名無しさん:2011/02/14(月) 01:54:17
またUNICODE対応出来ていない糞アプリが一つ増えたか
833デフォルトの名無しさん:2011/02/14(月) 01:59:44
ククク…奴は四天王の中でも最弱…
834デフォルトの名無しさん:2011/02/14(月) 13:36:38
C++のスレか迷ったんだけど
一応Windowsの事も入ってる質問なんでこっちで。

C++でクラスを自作して遊んでるんだが
クラスの中にウィンドウメッセージ(例えばWM_PAINT)の
処理の部分を書くってできる?

例えばビットマップを表示するクラスで
クラス内に「メインになるウィンドウにWM_PAINTが送られたら、ビットマップを表示するメンバ関数を実行」
ってな具合に。
とりあえず、今はメインウィンドウのWM_PAINTの所からビットマップ表示のメンバ関数を呼んでるんだが。

こういうことって、なんていう言葉で検索すればいいの?

下らん質問ですいませんが。
835デフォルトの名無しさん:2011/02/14(月) 16:25:43
イベントハンドラ
bind
emit
836819:2011/02/16(水) 02:25:51
ダイアログボックスについてなのですが、

testdialog = new Dialog;
testdialog->DoModal(IDD_DIALOG1, CWnd::GetDesktopWindow());
testdialog->ShowWindow(SW_SHOW);

上記のコードで生成したダイアログボックスのOKボタン(キャンセルボタンでも)を押すと、

Debug Assertion Failed!

Program F:\.......\MyProject.exe
File: F:\rtm\vctools\vc7libs\ship\atlmfc\src\mfc\winocc.cpp
Line: 329

上記のエラーが出てしまいます。(無視ボタンを押すとデバッグは先に進みます)
どちらのイベントハンドラはリソースから追加しました。

void myClass::OnBnClickedCancel()
{
OnOk();
}

特に初期化なども行っていません。
このエラーの原因はなんなのでしょうか?

837デフォルトの名無しさん:2011/02/16(水) 02:29:07
ShowWindowはいらん
838デフォルトの名無しさん:2011/02/16(水) 02:38:26
ショウなんですか。ありがとうございました。
839デフォルトの名無しさん:2011/02/16(水) 03:22:25
醤油うこと
840デフォルトの名無しさん:2011/02/16(水) 04:16:31
しょうもない
841デフォルトの名無しさん:2011/02/16(水) 09:57:59
ほどほどにしましょう
842デフォルトの名無しさん:2011/02/16(水) 13:29:03
はいはい
843デフォルトの名無しさん:2011/02/17(木) 15:06:09
開発環境 OS WinXP 32bit ・Visual Stadio 2010

GUIのコントロール(ボタン等)のプロパティにあるlocationについての質問です

例えばFormのサイズが300,200(pixel)だったとして
そこにButtonのサイズ100,30(pixel)を2つ付けるとします
これを左右均等に配置する場合
Button1のlocation(50,130)
Button2のlocation(150,130)
とした場合、縦方向は考えずに横方向だけ考えた場合真ん中ではないのでしょうか?

ツールバーのレイアウトでこのボタン2つ選択後、左右中央揃えした場合
Button1のlocation(46,130)
Button2のlocation(146,130)
みたいなことになります
(座標とサイズpixelで計算してるからおかしいことになる?)

直接手動で計算してもコントロールの配置(location位置)を出したいので
どういう仕組みで配置計算されているのか教えてください
844デフォルトの名無しさん:2011/02/17(木) 15:30:01
>>843
枠のサイズとか
845デフォルトの名無しさん:2011/02/17(木) 16:20:53
データを圧縮解凍できる関数ってありますか?
void assyuku(char *data);
void kaito(char *data);
って感じの奴があればベストなんですが。
846デフォルトの名無しさん:2011/02/17(木) 16:30:59
>>845
7-zip
847デフォルトの名無しさん:2011/02/17(木) 16:40:52
>>846
ありがとうございます。
調べてみます。
848845:2011/02/17(木) 16:58:09
7-zip調べたら使ったプログラムはソースを公開しないといけないのか。
ソースを公開しなくてもいい方法ってないですか?
849デフォルトの名無しさん:2011/02/17(木) 18:09:58
んなあほな
850デフォルトの名無しさん:2011/02/17(木) 21:08:09
そんなマイナーなもの使ってるやついるのか?
851デフォルトの名無しさん:2011/02/18(金) 00:35:43
zlib使えば良いのに。
7-zip使うならlzmaかxzでも良いかもね。
852845:2011/02/18(金) 10:25:07
>>851
ありがとうございます。
zlib使います。
853デフォルトの名無しさん:2011/02/18(金) 11:31:17
fwrite、freadのファイルの代わりに
メモリに読み書きできる版ってありますか?
854デフォルトの名無しさん:2011/02/18(金) 12:44:20
ifstream ofstream
855デフォルトの名無しさん:2011/02/18(金) 13:17:15
c++ でも普通にfread や fwrite を使ってしまうなぁ。
fstream の方がいんですか。
856853:2011/02/18(金) 13:20:45
>>854
レスありがとうございます。
ifstream調べたけどメモリに読み書きする機能が分かりませんでした。
やっぱ自分で作るしかないのかな。
857デフォルトの名無しさん:2011/02/18(金) 14:01:03
ぶっちゃけできればなんでもいいんじゃね?
一応
ttp://codepad.org/q0eT50RI
858853:2011/02/18(金) 15:45:39
>>857
ありがとうございます。
参考になりました。
859デフォルトの名無しさん:2011/02/18(金) 19:41:23
すみません。あるネット講座のVC++のページを勉強しているんですが、
毎度同じダイアログボックスをつかうので、リソースエディタで一々作っていると馬鹿らしくなります。

前のプロジェクトのダイアログボックスをインポートというか追加できないんでしょうか?
「プロジェクトへ追加→ファイル(F)」でリソーススクリプトとresource.hを追加したんですが、

インクルード ファイルがオープンできません。'resource.h': No such file or directory
↑のエラーがでます。。

どうやればいいんでしょうか?VC++6.0使用です。
860デフォルトの名無しさん:2011/02/18(金) 21:06:20
普通にコピペして使えばいいだけだと思うけど
861853:2011/02/18(金) 21:09:55
ifstreamやっぱ難しそうだったので自分で作りました。
これで公開できたかな?
http://codepad.org/6NrXVlY6
862デフォルトの名無しさん:2011/02/18(金) 21:58:25
cstdioを使った方がいいと思います
863853:2011/02/18(金) 23:09:48
>>862
レスありがとうございます。
cstdioを使うことにします。
864デフォルトの名無しさん:2011/02/20(日) 17:32:55.59
VC++2010 Expressでフォームからマウスが外れているときはフォームの透明度を
あげる(薄くする)と言うプログラムを組んでいます。
フォームのMouseLeaveイベントと、MouseEnterイベント発生時にOpacityプロパティ
を変えることで解決を目論んだのですが、ウインドウの外枠(サイズを変えるときにド
ラッグする部分や、上部のウインドウ名が書かれている部分)にマウスがあると、
MouseLeaveイベントが発生して、薄くなってしまいます。フォームから完全にマウス
カーソルがそれた時のみ透明度を高めたいのですが、どういうイベントを用いればよ
いんでしょうか?
865デフォルトの名無しさん:2011/02/20(日) 18:00:08.79
CLIスレか.netスレに行ったほうがいいとおもわれ
866デフォルトの名無しさん:2011/02/20(日) 23:13:54.56
クライアント領域でMOUSEEVENT取ってるからそうなる
ウィンドウに対して取得する必要がある
867859:2011/02/20(日) 23:18:50.68
>>860
亀ですが、できました。普通にresource.hをコピペするだけでいいんですね。
なんか、プロジェクトとの関連付け?とかいるのかなあと思いつつ、普通にコピペしてコンパイルしたら
通りました・・

ありがとうございました。なんか、拍子抜けっす。自分、素人なんで・・
868デフォルトの名無しさん:2011/02/20(日) 23:52:20.70
大きさが[16384][128]のchar型の2次元配列を動的に確保したのですが、
順番にアクセスしていくと、なぜか[1370][0]でエラーになってしまいます。

この配列を静的に[2000][50]の大きさで確保すると、[1370][0]でエラーにならないので
おそらく配列の確保の方法に問題があると思うのですが、何が悪いのか見当がつく方はいらっしゃいませんか?

確保は下記の3パターンで行いました。

char **char_matrix;
char_matrix = (char **)malloc( 16384 );
for(int i=0; i<16384; i++) char_matrix[i]=(char *)malloc( 128 );

char **char_matrix = new char*[ 16384 ];
for(int i=0; i<16384 ; i++) char_matrix[i]=new char[ 128 ];

char char_matrix[2000][50];
869デフォルトの名無しさん:2011/02/21(月) 00:07:00.30
fopen_s(fp, "ファイル名","w");
870デフォルトの名無しさん:2011/02/21(月) 00:09:23.94
すみません 途中送信してシマしました。

fopen_s(fp, "ファイル名","w");
で、ファイルの作成先がCDの場合はどうなるのでしょうか?
871デフォルトの名無しさん:2011/02/21(月) 00:25:33.03
>>868
newは成功してるかチェック済み?
済みでアクセス時におかしくなるなら
入ってるデータがおかしいんだろ。

>>870
ファイル名直書きでいいんじゃね?
872デフォルトの名無しさん:2011/02/21(月) 00:27:44.50
>>870
エラーになるんじゃね。
873868:2011/02/21(月) 01:06:04.54
>>871

newは成功しています。
初期値の代入時にエラーになるので、入ってるデータではないと思います。
また、順にアクセスしている間に他で動的確保はしていません。

デバッグでchar_matrix[0][0]をウォッチしていたら
char_matrix[1024][0]にアクセスすると式が評価できなくなりました。
このあたりが関係あるのでしょうか。

また、char_matrix[1370][0]はfscanfを使ったときに評価できなくなります。
ただ、このfscanfは成功しています。
874868:2011/02/21(月) 01:13:01.96
すみませんsscanfです。
875デフォルトの名無しさん:2011/02/21(月) 01:15:55.74
手元でコピペしたけど普通に動いたぞ。
なんか関係ないところでやっちゃってんじゃね?

//確保
char **char_matrix = new char*[ 16384 ];

for( int i = 0; i < 16384; i++ )
{
char_matrix[i] = new char[ 128 ];
}

//初期化
for( int i = 0; i < 16384 ; i++ )
{
for( int j = 0; j < 128 ; j++ )
{
char_matrix[i][j] = 0;
}
}
876デフォルトの名無しさん:2011/02/21(月) 20:44:05.85
VC++10 expressの環境で引き継いだコードがC99準拠だったのでintel parallel composer 2011を試用しているのですが、
error MSB6001: "icl.exe" のコマンド ライン スイッチが無効です。パラメーター "path" の長さを 0 にすることはできません。
と出て正常にコンパイルできません。ググったりしたのですが当該なものが見つからず・・・これってどう回避すれば良いのでしょうか?お願いします。
877デフォルトの名無しさん:2011/02/21(月) 23:54:40.63
WindowsVistaかWindows7搭載PCでvisual studioを用いてプログラムの練習をしようと思っています。
このとき、VC++でコンパイルしてできたexeファイルはWindows98やXPでも実行可能なのでしょうか?
878デフォルトの名無しさん:2011/02/22(火) 00:10:41.22
大丈夫だ!98で動かなくても文句言う奴ぁもういねぇッ!
879デフォルトの名無しさん:2011/02/22(火) 00:12:52.12
作り方によって可能にも出来るし不可能にも出来る
880デフォルトの名無しさん:2011/02/22(火) 00:32:57.79
VC++のバージョンによるね。
98がサポートされるのは2005まで。
2000がサポートされるのは2008まで。
XPがサポートされるのVC6のみ
881877:2011/02/22(火) 07:29:13.28
>>880

ありがとうございます。
VC++2005を使ってみます。

98で動くかどうかは実際に入れてみるしか確認する方法はないのでしょうか?
それとも、2005で開発すればほぼ確実に動きますか?
882デフォルトの名無しさん:2011/02/22(火) 07:37:55.17
作り方によって可能にも出来るし不可能にも出来る
883デフォルトの名無しさん:2011/02/22(火) 11:35:56.68
ターゲットマシンを設定してコンパイルすれば98で動くことを保障できる。
884デフォルトの名無しさん:2011/02/22(火) 14:49:01.25
プログラムの練習をしようと思っています
なんて人はWin98で動くかどうかなんて気にしなくていい
885877:2011/02/22(火) 18:41:12.57
>>883

今の自分の知識ではターゲットマシンを設定することができないのですが、
参考になる教材やウェブサイトがあったら教えていただけませんか?

>>884

最終的にWin98で動く業務アプリケーションが開発できたらいいなと考えています。

全然わからないのですが、例えば、実装環境と動作環境が違うと動かなかったり、
MFCを使ってコードを書くとWin98で動かないのかなと疑問に思い質問させていただきました。

実装環境はWin7、VC2005しか利用できず、
現状ではWin98が手元に無いため、確認しながら実装することができません。
886デフォルトの名無しさん:2011/02/22(火) 18:45:12.34
まずMSDNサブスクリプション会員になることから始めようか
887デフォルトの名無しさん:2011/02/23(水) 09:45:02.17
98ターゲットにするならMFCは使わない方が良いよ
888デフォルトの名無しさん:2011/02/23(水) 17:36:30.85
ようやくDLLができるようになりました。
次はCOM、ATL、ActiveXに挑戦します。これで、僕のWindowsプログラムも卒業です。
889デフォルトの名無しさん:2011/02/23(水) 18:27:14.75
206 デフォルトの名無しさん [sage] 2011/02/23(水) 00:30:05.97 ID: Be:
    かってに、google に甘い期待をしているんだけど、

    ttp://sourceforge.jp/magazine/11/02/22/104206

    これとかを見ると、google 的には、
    C++ は Web アプリみたいにして、
    Android に持っていくつもりなのかな。

    プログラマのヘマでセキュリティーホール作られるよりは、
    制限あっても、sandbox 内で…って感じで。

    Javaが選ばれた理由も、そんなんじゃなかったっけ?
890デフォルトの名無しさん:2011/02/23(水) 22:03:58.84
>>885
98なんかやめとけよ。
891デフォルトの名無しさん:2011/02/23(水) 23:02:43.58
何98ディスッてんだゴラァ!
ttp://image01.wiki.livedoor.jp/w/n/winostan/b273aa305e09d697.jpg
892853:2011/02/24(木) 01:18:04.38
>>891
win98ほしくなった
893877:2011/02/24(木) 20:35:59.66
>>886
会員になるとどうなるのでしょうか?

>>887
MFCはやはり対応していないのでしょうか?
一応VS2005はサポートプラットフォーム?に98があるのですが、
MFCはそれとは無関係ということですか?
894デフォルトの名無しさん:2011/02/25(金) 01:15:28.40
95〜2000はjvmの関連でDL出来ないよ
895デフォルトの名無しさん:2011/02/25(金) 10:24:32.23
VC++2008でDLLを作って、Webページから為替情報を取得したいんですが、
このためには参考書として何がおすすめでしょうか?

当方、CやVB.netを趣味でかじった程度の素人です。
VC++2008はダウンロードしたばかりで、何も知らない状態です。
896デフォルトの名無しさん:2011/02/25(金) 10:35:03.85
C#で作ったほうがいいよ
897デフォルトの名無しさん:2011/02/25(金) 11:57:59.69
C分かるんならVC++で作った方がいいでしょ
898デフォルトの名無しさん:2011/02/25(金) 12:27:49.82
maruchi
899デフォルトの名無しさん:2011/02/25(金) 12:50:53.66
>>896
C#のほうが情報が多いですか?
900デフォルトの名無しさん:2011/02/25(金) 12:52:52.22
すみません一回もVC++でプログラムしたことないんですが
#include <BluetoothAPIs.h>をつかってMS スタックの操作プログラムを作りたいと思っているのですが

本当に入門のところしかわからず困ってます。
関数の前にこのような記載をするらしいのですがこれはなんなんでしょうか?構造体?

BLUETOOTH_FIND_RADIO_PARAMS m_bt_find_radio = {sizeof(BLUETOOTH_FIND_RADIO_PARAMS)};
BLUETOOTH_RADIO_INFO m_bt_info = {sizeof(BLUETOOTH_RADIO_INFO),0,};

その他WinSDK入れてBluetoothAPIs.hはインストールされていると思うのですが
関数を記載するとエラーになってしまいます。
何を調べればよいかもわからないので助言をいただけませんか
901デフォルトの名無しさん:2011/02/25(金) 14:11:38.58
>>900
初めてBluetoothAPIs.hなんてのを知りましたが
#include <Windows.h>
#include <BluetoothAPIs.h>
902デフォルトの名無しさん:2011/02/27(日) 03:26:35.58
質問です。

別ディレクトリにあるが
同じファイル名(h&cpp)、同じクラス名、といったものは
C++で可能なのでしょうか?

名前空間で実現できるかと思っていたのですが
どうもリンカエラーが出てしまいます。

コインパイル後のobjファイルを見てみると
クラス名と同じ名のファイルが
一つだけしかできていないようなので
もしかしたら同じクラス名は宣言できない?と思い
質問させていただきました。

よろしくお願いします。

903デフォルトの名無しさん:2011/02/27(日) 05:27:34.13
>>902
中間ファイルの出力名が被らないようにすればいい
/Fo
904デフォルトの名無しさん:2011/02/27(日) 08:58:18.77
>>903
アホ
905デフォルトの名無しさん:2011/02/27(日) 11:21:38.02
>>904
俺には中間ファイルの出力名や出力先を
/Foで指定する事しか思い浮かばないので
変わりに教えてやってくれ
906デフォルトの名無しさん:2011/02/27(日) 15:07:59.12
VC2008にて、プロジェクトの設定によってユーザ名をプリプロセッサ定義したいのですが、方法はありませんか?
試したことは、プリプロセッサの定義欄に DEBUG_%%USERNAME:.=%% を追加したことと、
追加のオプションに /D DEBUG_%%USERNAME:.=%% と追加をしたことです。
どちらも%が1つだとエラーになりました。
907デフォルトの名無しさん:2011/02/27(日) 15:37:02.88
何がしたいのか分からんけど
追加のプリプロセッサに
DEBUG_$(USERNAME):.=
908906:2011/02/27(日) 15:51:35.66
>>907
試してみましたが、思ったような動作
( USERNAME=user.name の場合 DEBUG_username が定義 ) になりませんでした。
( プリプロセッサの定義欄に入力した際に全てのオプションを見ると、
 /D "DEBUG_user.name:.=" というように解釈されているようです。 )
ユーザ名に '.' が含まれているため、
それを省くか '_' で置き換えるかをしなければいけないのですが、
( #ifdef DEBUG_user.name だとエラーがでるため)
それを実現する方法はありませんか?
909デフォルトの名無しさん:2011/02/27(日) 16:07:04.46
>>908
エスパーするな。
何がしたいのか分からんけど
追加のプリプロセッサに
DEBUG_$(USERNAME)

#ifdef DEBUG_user.name
//...
#endif
910デフォルトの名無しさん:2011/02/27(日) 16:08:35.42
一応言っておくけど
:.=
ってのは君の希望に答えただけだからな。
911906:2011/02/27(日) 16:26:00.14
すみません。 #ifdef DEBUG_user.name ででるのはエラーではなくワーニングでした。

>>909
以下のようなコードをコンパイルしてもエラーが起こらないため、
思った通りに定義されていないようです。
#ifdef DEBUG_user.name
error // ここでエラーがでるはず
#endif

>>910
DEBUG_$(USERNAME):.= を設定したうえで
以下のようなコードをコンパイルしてもエラーが起こらないため、
思った通りに定義されていないようです。
お気を悪くさせてしまいましたら申し訳ありません。
#ifdef DEBUG_username
error // ここでエラーがでるはず
#endif
912デフォルトの名無しさん:2011/02/27(日) 16:42:26.59
>>911
> 909 名前:デフォルトの名無しさん[sage] 投稿日:2011/02/27(日) 16:07:04.46
> >>908
> エスパーするな。
> 何がしたいのか分からんけど
> 追加のプリプロセッサに
> DEBUG_$(USERNAME)
>
> #ifdef DEBUG_user.name
> //...
> #endif
913906:2011/02/27(日) 16:51:34.13
>>912
もしかして「追加のプリプロセッサ」という設定項目がどこかにあるということでしょうか?
今探してみたのですが、どこにあるかわかりませんでした。
914デフォルトの名無しさん:2011/02/27(日) 16:55:28.75
日本語で書いてるんだけどなー
915906:2011/02/27(日) 17:08:49.31
>>914
>>909を読み返して考えてみます。

>>907-914
ご回答ありがとうございました。
916デフォルトの名無しさん:2011/02/27(日) 22:28:41.81
VC++2008で正規表現を学べる本やサイトを知ってる人教えて。
917デフォルトの名無しさん:2011/02/27(日) 23:15:26.93
>>916
正規表現そのものについて、ではなくて、正規表現は既に
知っていてVC++2008 での正規表現の使い方を教えて
欲しい、ということでいいかな?
918デフォルトの名無しさん:2011/02/27(日) 23:21:29.69
>>917
はい。
919デフォルトの名無しさん:2011/02/28(月) 00:05:11.23
WindowsFormでツールボックスから配置したボタンを押したら
whileで常駐させて、ほしい情報を読み込んだら処理を行ってまた常駐する
っていうのを作りたいんですけど、途中でwhileを抜ける方法って何かありますか??

920デフォルトの名無しさん:2011/02/28(月) 00:06:07.47
break
921デフォルトの名無しさん:2011/02/28(月) 00:08:28.19
>>903
ありがとうございます。できました!
cpp単位で出力名を変更しました。

重ねて質問になってしまってもうしわけないんですが
本やサイト見ていても「クラス名の重複は名前空間でおk」と書かれています。
しかし今回は前述のとおり中間ファイル名の重複で躓いてしまいました。
対応方法もあまりスマートには感じれません。

自分は何か名前空間そのものを誤解しているのでしょうか?
それとも「そういうもんだ」なんでしょうか?

よろしくお願いします。
922デフォルトの名無しさん:2011/02/28(月) 10:08:07.73
rc2ファイルを見ると、「手動で編集されたりソースをここに追加します」と書いてあるのですが、
これって、MS社員のIME変換のミスで、「手動で編集されたリソース」のことですよね?

「リソース」を手書きする場所でよいのですよね?
923デフォルトの名無しさん:2011/02/28(月) 11:21:13.73
>>921
「クラス名、名前空間」の話と「分割コンパイルでの各ファイルの名前」ではレイヤが違う
前者は言語の文法の話
後者は開発環境がコンパイル結果を管理するやり方の話

違うものを同じ名前にするのはよくないと思うよ


>>922
その通り
ワロス
924デフォルトの名無しさん:2011/02/28(月) 12:44:31.23
904の降臨に期待
925デフォルトの名無しさん:2011/02/28(月) 18:35:01.13
Visual C++ 2005とVisual C++ 2010の機能面での違いを教えてください
926デフォルトの名無しさん:2011/02/28(月) 20:45:45.61
>>916
.net でもいいなら、VC++2008のヘルプを

.NET Framework の正規表現

で検索。使用例もあるよ。
927デフォルトの名無しさん:2011/03/01(火) 00:37:31.62
>>922
MSのIMEは誤変換が多いなw
928デフォルトの名無しさん:2011/03/01(火) 00:39:55.61
IME2010 手動で編集されたリソース
別におかしくないな
929デフォルトの名無しさん:2011/03/01(火) 01:48:57.44
WritePrivateProfileSectionでINIファイルに値を保存したいのですが
a=1\nb=2\nとlpStringに入れても
改行が抜けてa=1b=2と保存されてしまいます。
どうすればいいでしょうか。
930デフォルトの名無しさん:2011/03/01(火) 01:55:18.97
改行を$nとかに置換して読み込むときに\nに置換すればいい
931デフォルトの名無しさん:2011/03/01(火) 02:15:49.30
>>930
レスありがとうございます。
しかし、GetPrivateProfileIntで読み込みたいので
できれば保存する時改行を入れたいです。
何故改行が消えてしまうのか全然分かりません。
932デフォルトの名無しさん:2011/03/01(火) 02:17:19.83
それならaとbの2回に分けてWritePrivateProfileSectionすればいいよ
933デフォルトの名無しさん:2011/03/01(火) 02:17:59.11
\r\n
934デフォルトの名無しさん:2011/03/01(火) 02:59:32.93
的外れのレスが多すぎ。

"a=1\0b=2\0"
935デフォルトの名無しさん:2011/03/01(火) 03:02:25.57
936デフォルトの名無しさん:2011/03/01(火) 11:04:16.85
>>934
ありがとうございます。
出来ました。
937デフォルトの名無しさん:2011/03/01(火) 20:27:32.05
プログラミングに興味を持ち、やってみようかと思ったのですが、説明してくださっているサイトを見ると
"Visual Studio 2008"
を使っての説明をなさっているのですが、"Visual Studio 2010"を使っても同じような操作でできるでしょうか
別に2008の方を使っても困ることがないのなら2008のほうを使ってやろうと思うのですが…
938デフォルトの名無しさん:2011/03/01(火) 20:45:12.86
どっちでも操作はあまり変わらんが
共存できるんだから両方いれりゃいいよ
939デフォルトの名無しさん:2011/03/01(火) 20:50:36.95
>>938
そうですね
使う言語はどっちも一緒だからどっちをつかっても勉強できますしね
940デフォルトの名無しさん:2011/03/02(水) 09:00:43.21
シェルエクステンションの作り方のわかるサイトか本は
ないでしょうか?もしあれば教えていただけないでしょうか。
941デフォルトの名無しさん:2011/03/02(水) 09:04:27.90
942デフォルトの名無しさん:2011/03/02(水) 12:25:30.35
デバッグ中にF12を押すと
windowsによって○○.exeでブレークポイントが発生しました。
と出て落ちてしまうんですが、どうすればいいですか?
VC2008です。
943デフォルトの名無しさん:2011/03/02(水) 12:58:52.86
944デフォルトの名無しさん:2011/03/02(水) 18:06:12.20
F12の活用法が分からん
まったりBPセット出来るぐらい?
945デフォルトの名無しさん:2011/03/02(水) 20:30:06.47
アプリを非アクティブにせずに中断(一時停止)が出来る
946デフォルトの名無しさん:2011/03/04(金) 12:27:25.63
C#はドットネコプラットフォームだし、MFCは設計がもさいから
ネイティブで斬新的なC++言語を刷新してくれないかな。

どうせなら、買収したノキアのQtを新C++開発環境にしてもいい。
947デフォルトの名無しさん:2011/03/04(金) 20:49:57.87
>>946
C++Builderが安くなったじゃん。
948デフォルトの名無しさん:2011/03/04(金) 22:04:39.44
>>943
自動翻訳ひどすぎワロタw
949デフォルトの名無しさん:2011/03/04(金) 22:25:47.94
アロー演算子はいらない子だと思ってる
950デフォルトの名無しさん:2011/03/05(土) 02:13:17.22
イミフ
951デフォルトの名無しさん:2011/03/05(土) 07:23:12.09
二文字の演算子は嫌だなあ
おまけにアローの場合同時押しまで出てくるし
952デフォルトの名無しさん:2011/03/05(土) 18:06:31.74
しかも使用回数ぶっちぎりで一位だしな。
953341:2011/03/06(日) 02:50:49.90
スレッド間違えてしまいました。二重質問になることをお許しください。
DLLを作ってメインプログラムにlibファイルを追加したんだけど、
DLL内の関数を普通に呼び出してビルドすると以下の様なエラーになります。
どなたかわかる方いませんか?
test2.obj : error LNK2019: 未解決の外部シンボル "int __cdecl makehook(struct HWND__ *,int,unsigned int)" (?makehook@@YAHPAUHWND__@@HI@Z) が関数 "void __cdecl WM_Paint(void)" (?WM_Paint@@YAXXZ) で参照されました。
解決方法を教えてください。よろしくお願いします。
954デフォルトの名無しさん:2011/03/06(日) 02:56:23.29
__declspec( dllexport )
__declspec( dllimport )
くっつけた?

GCCと違って何をエクスポートし、何をインポートするのか
一つ一つ指定する必要があるよ
955341:2011/03/06(日) 12:00:16.43
#define DLL_EXPORT extern "C" __declspec (dllexport)
#else
#define DLL_EXPORT __declspec (dllexport)
#endif
と書いて関数の宣言時に先頭にDLL_EXPORTを付けることで解決できましたが、
プロジェクトによってはDLL_EXPORTなどと付けずに動作している物もありました、
これはどういった方法をとっているのでしょうか?
956デフォルトの名無しさん:2011/03/06(日) 12:55:46.81
>>955
.def ファイル作って、そこで export する関数を定義する場合、
dllexport は不要じゃなかったかな
957341:2011/03/06(日) 15:55:41.40
>>995
訂正
#ifdef __cplusplus
#define DLL_EXPORT extern "C" __declspec (dllexport)
#else
#define DLL_EXPORT __declspec (dllexport)
#endif
でした。defファイルの方調べてみます。
958デフォルトの名無しさん:2011/03/07(月) 09:33:29.83
ええと、超初心者ですが

Cから勉強してきたのでWinMainを使うってのが分かりやすいのですが

WinMainを使うというのは邪道なんでしょうか?MFCアプリってなに?

ウィザードを使うのがC++の常識なんでしょうか?わからんなぁ
959デフォルトの名無しさん:2011/03/07(月) 09:36:03.40
WinMain でいいよ
MFC は設計がダサイから嫌ってる人が多い
VC++ で別のフレームワーク使う人も多い
960デフォルトの名無しさん:2011/03/07(月) 12:19:55.69
>>959
thx

WinMain中心で学習していきます。
961341:2011/03/07(月) 16:29:08.14
LRESULT CALLBACK meshookproc1(INT hc,WPARAM wParam,LPARAM lParam)
{
PMSG pmsg;
HMODULE hModule;

pmsg = (PMSG)lParam;

if (hc >= 0){
if (hc == HC_ACTION)
{
hModule = GetModuleHandle("sampledll.dll");
if (LoadString((HANDLE)hModule,pmsg->message,szWinMsg,50))
{
if (pmsg->message == WM_NULL )
{
return CallNextHookEx(hhook, hc, wParam, lParam);
}
szWinMsg[sizeof(szWinMsg)+1] = 0;
wsprintf(szData,"%06X :%s :%04X : %04X\0",pmsg->hwnd,szWinMsg,pmsg->wParam,pmsg->lParam);
ghWndlist = FindWindow(NULL,"C MAGAZINE");
SendDlgItemMessage(ghWndlist,1070,LB_ADDSTRING,0,(LPARAM)(LPCTSTR)szData);
}
}
return CallNextHookEx(hhook, hc, wParam, lParam);
}
return CallNextHookEx(hhook, hc, wParam, lParam);
}

サンプルではこれで動作するのですが、
自作するとこれでLoadStringが動作せず0を返すのですが、
それとGetModuleHandleとは何をする関数でしょうか?
962デフォルトの名無しさん:2011/03/07(月) 17:05:48.61
ttp://msdn.microsoft.com/ja-jp/library/cc429129.aspx
そもそもsampledll.dllをリンクしてないかLoadlibraryしてないんだろう
963341:2011/03/07(月) 17:10:43.71
http://web.archive.org/web/20050412160347/http://www.cmagazine.jp/books/spice/
このサイトのソースを使いました。
sampledll.dllというファイルは存在しません。
どうして動作するのでしょうか?
964デフォルトの名無しさん:2011/03/07(月) 17:35:13.75
存在しなかったらNULL返すだけだから
てかまともな本買えよ
いろいろと理解が足りてないぞ
965341:2011/03/07(月) 17:49:48.16
どの本に具体的に載ってますか?
966デフォルトの名無しさん:2011/03/07(月) 18:17:08.02
967デフォルトの名無しさん:2011/03/08(火) 03:23:12.90
NTLという演算ライブラリを使っています。ZZ型という巨大整数を扱う型が
あるのですが、計算結果をファイルに書き込みたいのですが、char型の配列
に変換できずに困っています。I[i]=salt%256;salt=(salt>>8);とやっても
出来ませんでした。ZZ型をそのまま書きこむ方法があればいいのですが、
内部でどのような処理をしているのかが解りません。どなたか解る人が
いたら教えてください。よろしくお願いします。
968デフォルトの名無しさん:2011/03/08(火) 03:29:14.99
マルチするバカは氏ねばいいと思うよ
969デフォルトの名無しさん:2011/03/09(水) 22:07:57.06
現在JOYPADを接続して認識出来ているのですが、
Joytokeyの様に1ボタンを押したらキボードのキーが押されるといった操作を実現する為には、
キボードの出力メッセージを出せばいいと思いSendMessageでWM_KEYDOWN、WM_KEYUPしてみたのですがうまく動きません、
どうしたらいいのでしょうか?
970969:2011/03/10(木) 02:50:57.52
SendInput
使おうと思ったのですが、

LPINPUT bubu = {0};
と定義すると、

error C2065: 'LPINPUT' : 定義されていない識別子です。

といったエラーが出てしまいます。
#include <windows.h>
#include <winuser.h>
は書いてあります。
よろしくお願いします。
971デフォルトの名無しさん:2011/03/10(木) 02:53:23.84
972デフォルトの名無しさん:2011/03/10(木) 02:55:43.56
>>970
OSとVCのバージョンは?
973デフォルトの名無しさん:2011/03/10(木) 02:59:35.20
974969:2011/03/10(木) 03:20:32.36
見ました、何がおかしいんでしょうか?
975969:2011/03/10(木) 03:22:18.65
OS:WindowsXPSP3
VC2003
ですよろしくお願いします。
976969:2011/03/10(木) 03:27:31.76
>>973
マルチですみません。
そちらサイトを見てる方と2chを見てる方は違うと思ってました。
以後注意します。
977デフォルトの名無しさん:2011/03/10(木) 03:29:48.42
次スレちんちん。
978デフォルトの名無しさん:2011/03/11(金) 14:29:50.93
cscriptでvbsファイルを実行してその戻り値をvc++側で取得したいのですが

どのような方法がありますか?

CreateProcessとかsystemとかうまくいかなくて困っています。
979デフォルトの名無しさん:2011/03/11(金) 14:34:50.61
vbsが戻り値を返すようにしないとだめだよ
WScript.Quit(1)
とか
980デフォルトの名無しさん:2011/03/11(金) 14:39:15.58
>>979
ありがとうございます。

とれました
981デフォルトの名無しさん:2011/03/11(金) 21:32:43.74
982デフォルトの名無しさん:2011/03/12(土) 15:48:34.89
うめ
983デフォルトの名無しさん:2011/03/13(日) 06:21:28.94
ume
984デフォルトの名無しさん:2011/03/13(日) 10:12:09.72
985デフォルトの名無しさん:2011/03/13(日) 10:18:24.58
小梅
986デフォルトの名無しさん:2011/03/13(日) 10:32:36.09
次スレないのに埋めるの?葬り去りたいの?
987デフォルトの名無しさん:2011/03/13(日) 10:54:16.45
>>986
たてろよ。うめ
988デフォルトの名無しさん:2011/03/13(日) 11:14:31.93
下の方法でファイルを開こうとしても開けません。
数週間前は開けました・・・
file_nameにはファイル名が入っています。
ifs.is_open()で0が返ります。

std::ifstream ifs;
string file_name;

ifs.open(file_name.c_str());


989デフォルトの名無しさん:2011/03/13(日) 11:17:42.72
埋めたり文句言う前に自分で立てような。

★初心者にVisual C++を教えるスレ★ Part37
http://hibari.2ch.net/test/read.cgi/tech/1299982561/
990デフォルトの名無しさん:2011/03/13(日) 18:55:10.92
.
991デフォルトの名無しさん:2011/03/14(月) 04:14:43.53
うめ
992デフォルトの名無しさん:2011/03/14(月) 07:11:46.21
ちゃんと後処理しようぜ。
993デフォルトの名無しさん:2011/03/14(月) 07:14:08.57
立てるのはいいが、最後まで使ってから引っ越そうぜ。
994デフォルトの名無しさん:2011/03/14(月) 10:21:46.18
+
995デフォルトの名無しさん:2011/03/14(月) 17:40:05.83
1000まで10近く残して引っ越すと連投規制もあって埋める側も大変。
ム板は人の出入りが少ないから、案外と落ちなかったりする。
通常運行の場合は995、いや使い切ってからでも十分だよ。

あと自分で立てる気がないくせに人に立てさせようとする奴は嫌われるぞ。
996デフォルトの名無しさん:2011/03/14(月) 18:22:01.91
じゃあ埋めちゃおう。
997デフォルトの名無しさん:2011/03/14(月) 18:22:29.01
4
998デフォルトの名無しさん:2011/03/14(月) 18:22:35.30
3
999デフォルトの名無しさん:2011/03/14(月) 18:22:42.54
2
1000デフォルトの名無しさん:2011/03/14(月) 18:22:52.34
1
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。