★初心者にVisual C++を教えるスレ★ Part35at TECH
★初心者にVisual C++を教えるスレ★ Part35 - 暇つぶし2ch151:デフォルトの名無しさん
09/11/26 00:10:25
>>148
ALL_ONE(&Matrix[0][0], 50, 10);としておけ、VC++でもコンパイル通るしGCCでも警告が出なくなる。
これがエラーになるか警告しかでないかの差異はC++かCかの違い。
VC++でもCとしてコンパイルすれば警告になるし、GCCでもg++ならエラーになる。

152:デフォルトの名無しさん
09/11/26 00:19:37
Visual C++ 2008 Expres Edition を使っています。
1~9の数字を並べて表示させようと思っていて、

int C[9]={1,2,3,4,5,6,7,8,9};
を最初に作ってます。
そして一度でも使った数字には0を当てはめます。
k=0;
do{
printf("数を選んで下さい\n");
while(k<9){
if(C[k]!=0){
printf("%d\n",C[k]);
k++;
}

最初に1~9を表示させるにはどうすればよいですか?


153:デフォルトの名無しさん
09/11/26 00:20:52
C言語なら俺に聞け(入門編)にいきなさい


154:デフォルトの名無しさん
09/11/26 00:25:26
スレチなのですね。すみませんでした。

155:デフォルトの名無しさん
09/11/26 06:21:44
今のVC++ってVB6の感覚でできるんでしょうか?
VC6のとき、さっぱり意味がわからずに挫折した者なんですが
今のVCならいけるでしょうか?

156:デフォルトの名無しさん
09/11/26 11:23:56
あんまかわらん
C#にしとけ

157:デフォルトの名無しさん
09/11/26 15:14:07
VC++使いっています。
CStringに入っている文字列を
UTF-8形式のテキストファイルに書き出したいのですが、
よく分かりません。
CStringWに変換して
wfopen_s
で書き出せばいいかと思うのですが、書き出すサイズが
GetLength()で取得すると、文字数しかわからず、実際のサイズが分かりません。
やってること自体見当違いでしょうか・・・。
ご教授いただけますと幸いです。

158:デフォルトの名無しさん
09/11/26 15:55:33
>>157
まずはUTF-8とUTF-16とUnicodeの違いを調べたほうがいい。

MultiByteToWideCharとWideCharToMultiByteを使って以下のように変換をする。
char(sjis?) -> wchar_t(utf-16) -> char(utf-8)
wfopen_sとfopen_sの違いはファイル名をUnicodeで指定するかどうかだけ。書き込みには関係ない。
書き込むサイズはWideCharToMultiByteの戻り値を見れば分かる。

159:デフォルトの名無しさん
09/11/26 20:29:10
>>157
>>156も言っているが、ファイルを開くのにはwfopen_sでもfopen_sでも同じ。
ファイル名もCStringで与えるなら、_tfopen_sがおすすめ。

ただし、2番目の引数を"w,ccs=UTF-8"と指定すること。UTF-8への変換はCRTがやってくれる。
これだけで、あとはいつもどおり、fprintf_s/fwprintf_s/_ftprintf_sやfputs/fputws/_fputts、
putchar/putwchar/_puttcharなどFILE*に書き込む関数が使える。

160:デフォルトの名無しさん
09/11/26 22:12:06
148です。149さま,150さま,151さま
皆様ありがとうございました。

>>151さま
ALL_ONE(&Matrix[0][0], 50, 10);
でいけました!!!
ありがとうございます。
今後は、「配列の位置」をまじめに記述するよう心がけます。
考えてみれば、当然のことですね。。
&Matrix[0][0]でなくても&Matrix[5][0]でも良い訳ですからね。

>>149さま
ありがとうございます。
「まじめに動けばいい!」と思ってwarning は全て無視してました。
精進いたします。ちなみに
void ALL_ONE(int (*Px)[50][10], int NofRow,int NofCol){
はアウトでした。

>>150さま
gcc は ALL_ONE(Matrix,50,10); でいけまました。
visual C++ .net の教科書は & をつけろとありました。
ちなみに、visual C++で、配列が1次元のときは & なしで大丈夫でした。
私の想像ですが、ALL_ONE(Matrix,50,10);の記述は、コンパイル時、内部マクロで、ALL_ONE(&Matrix[0],50,10);に書き換えられてコンパイルされるのかと。。。ふと思いました。

おかげで、助かりました。再度、皆様方に厚く御礼申し上げます。

161:デフォルトの名無しさん
09/11/26 23:25:08
>私の想像ですが、ALL_ONE(Matrix,50,10);の記述は、コンパイル時、内部マクロで、ALL_ONE(&Matrix[0],50,10);に書き換えられてコンパイルされるのかと。。。ふと思いました。

死ね

162:デフォルトの名無しさん
09/11/27 00:06:08
マクロっていうのはおかしいけど、&HOGE[0]とHOGEが同一という認識は正しいよ。

163:デフォルトの名無しさん
09/11/27 23:08:47
自慢じゃないが、"&"と"*"は、ウォッチウィンドウで確認しながら、つけたり外したりするのが確実。
自慢じゃないけどね。

164:139
09/11/28 14:23:20
>>142
どうもありがとうございます。遅れてしまい、すみません。。
質問したこと忘れてました。。

メンバ関数の追加でやればいいんですね。自分は以前Java業でして、倉庫の奥の
VC6.0を引っ張り出して、遊んでいます。いまいちIDEの機能がつかめなく
どうすればいいかわかりませんでした。

助かりました。これから、やってみます。ありがとうございました。
ググッても必要な情報がでてこなかったので・・・

165:デフォルトの名無しさん
09/11/30 02:58:06
static double func[][4] = {
{ 1.0, 0.0, 0.0. 0.0 },
{ 0.0, 1.0, 0.0, 0.0 },
{ 0.0, 0.0, 1.0, 0.0 },
{ 0.0, 0.0, 0.0, 1.0 },
};

とあるソースに書いており、それは動いたのですが、他のプロジェクトのソースにこのまま写すと
error C2143: 構文エラー : ';' が '}' の前にありません。
error C2059: 構文エラー : '}'
error C2143: 構文エラー : ';' が '{' の前にありません。
error C2447: '{' : 対応する関数ヘッダーがありません (旧形式の仮引数リスト?)
error C2059: 構文エラー : ','

とエラーがでて動きません。
なぜでしょうか

166:デフォルトの名無しさん
09/11/30 10:35:14
>{ 1.0, 0.0, 0.0. 0.0 },

コンマがピリオドになっている。

167:デフォルトの名無しさん
09/11/30 20:12:03
追加ライブラリと同じように、追加インクルードファイルディレクトリを
ソース内でpragmaなどを使って指定する方法はありますか?

168:デフォルトの名無しさん
09/12/01 10:26:01
#pragma comment(linker, "/libpath:~")
でできないかな?

169:デフォルトの名無しさん
09/12/01 10:27:28
ってインクルードかいな

170:デフォルトの名無しさん
09/12/01 17:40:11
直接指定したらいいじゃんw

171:デフォルトの名無しさん
09/12/01 18:20:35
>>168-170
stdafx.hあたりに、>>168のようなライブラリフォルダと同じような書き方で
インクルードフォルダを指定できたらと思っているのですが、
やっぱり無いんでしょうかね。

172:デフォルトの名無しさん
09/12/01 18:29:16
pragmaでinclude関連はinclude_aliasしかわからん。
これと>>170組み合わせたら?

173:デフォルトの名無しさん
09/12/01 18:29:56
つーかインクルードパスをソースから指定する理由がわからん。

174:デフォルトの名無しさん
09/12/01 18:36:34
自分が使わないものまで全部知ってる必要ないからな
正確な情報が必要ならサポートに相談すべき

175:デフォルトの名無しさん
09/12/03 13:53:27
出力ウィンドウに、ファイルパス+(行数)みたいな形で出力すると、
VC++標準のコンパイルエラーなどの出力と同じように、ダブルクリックとかF8キーでジャンプできるようになりますが
決まった形式とかあるんでしょうか。今はVC++の出力を真似て書いてます。

176:デフォルトの名無しさん
09/12/03 14:35:23
はなくそってうめぇな、おい

177:デフォルトの名無しさん
09/12/03 14:37:54
失礼します。
VisualC++ 2008 Express Editionを使用しているのですが、
グローバルな文字列の配列を宣言するには、どのようにすれば良いのでしょうか?

private: System::String^ PrivateString[1000];
これではエラーになってしまうので、何か良い方法がありましたらご教授よろしくお願いします。

178:デフォルトの名無しさん
09/12/03 15:14:38
どんなエラー?ほんとにC++/CLIなの?
もしそうなら↓で聞いた方がいいかも。

C++/CLI part3
スレリンク(tech板)

179:デフォルトの名無しさん
09/12/03 16:29:01
>>178
エラーはこれです。

1>d:\cpp\Form1.h(986) : error C2728: 'System::String ^' : ネイティブ配列はこのマネージ型を含むことはできません
1> 'array<System::String ^>' を意図しましたか?

arrayを使えば良いのかな?でも
private: array<System::String ^> PrivateString = gcnew array<System::String ^>(1024);
ではダメでした

1>d:\cpp\Form1.h(987) : error C3149: 'cli::array<Type>' : トップレベルの '^' なしに、この型をここに使用することはできません
1> with
1> [
1> Type=System::String ^
1> ]
1>d:\cpp\Form1.h(987) : error C3845: 'HC3::Form1::PrivateString': ref クラス または値型の内部で、スタティック データ メンバのみ初期化することができます



180:デフォルトの名無しさん
09/12/03 16:36:39
array<System::String ^>^
じゃないのか

181:デフォルトの名無しさん
09/12/03 16:54:03
>>180
ありがとうございます。
加えてstaticにすることで、動作しました。

private: static array<System::String ^>^ PrivateString = gcnew array<System::String ^>(1024);


182:デフォルトの名無しさん
09/12/04 04:37:58
度々失礼します。

VisualC++ 2008 Express Editionで、iniファイルの操作を行おうと思っているのですが、カレントディレクトリの取得から躓いてしまいました。
URLリンク(msdn.microsoft.com)
を、参考に記述してみたのですが、最初の
String^ path = Directory::GetCurrentDirectory();
の、ところでエラーが発生してしまいました。

1>d:\cpp\Form1.h(1049) : error C2039: 'GetCurrentDirectoryW' : 'System::IO::Directory' のメンバではありません。
1> c:\windows\microsoft.net\framework\v2.0.50727\mscorlib.dll : 'System::IO::Directory' の宣言を確認してください。
1>d:\cpp\Form1.h(1049) : error C2660: 'GetCurrentDirectoryW' : 関数に 0 個の引数を指定できません。

namespaceは宣言していますし、GetCurrent~は::の後の予測変換で表示されているのを選んでいるので、メンバになっていると思うのですが・・・。
すいませんが、よろしくお願いします。

183:デフォルトの名無しさん
09/12/04 05:11:21
>>182
たぶんこれ。
URLリンク(social.msdn.microsoft.com)

ていうか GetCurrentDirectoryW でぐぐったら最初にでてきたぞ。

184:デフォルトの名無しさん
09/12/05 01:38:33
>>183
ありがとうございます。
'GetCurrentDirectoryのところで'GetCurrentDirectoryW'の説明があったから、そっちは検索してませんでした。
CLIもいろいろとめんどくさいのですね。

185:デフォルトの名無しさん
09/12/05 11:21:14
他スレからの誘導です。
可変長の符号をファイルに出力したいのですが
どのようなプログラムにすればいいでしょうか?

例.値(10進)「3 3 6 3 6 2」

3・・・00
6・・・01
2・・・100

出力後のファイル(2進)「0000010001100」

最低1バイト単位でファイルに出力したいのですが。

186:デフォルトの名無しさん
09/12/05 11:45:25
1バイトのバッファにビット演算で格納して言って、溢れたらファイルに出力でいいんじゃないの?

187:デフォルトの名無しさん
09/12/05 13:52:44
単なる文字列の置き換えじゃん。


188:デフォルトの名無しさん
09/12/05 19:27:45
プロジェクトをテンプレートとして登録したいのですが、それらしきメニューが見当たりません。
調べているとVC++2005では出来ないそうですが、VC++2008は出来ますか?
エディションはExpressです。

189:デフォルトの名無しさん
09/12/05 19:46:59
>>184
最近のWindows SDKだとその問題への対処がなされていて、>>182のように書いてもエラーが出なくなっている。
いつからだかは分からないけど、すくなくとも最新のWindows SDK 7.0はそうなっている。

190:デフォルトの名無しさん
09/12/06 10:44:56
>>188
これじゃないの?
URLリンク(www.atmarkit.co.jp)
2005EEはもう消してしまったけど、VS2005ProとVC#2008EEにはテンプレートのエクスポートの項目あるけどなあ


191:デフォルトの名無しさん
09/12/06 13:18:43
>>190
ありがとうございます。
それがVisual C++ にはエクスポートの項目が見つからないのです。

192:デフォルトの名無しさん
09/12/08 12:02:08
最近、VisualC++ 2008 Express Editionを使い始めたのですが、
テキストエディタのことで質問させて下さい。

カーソルのある行をコピー、カーソルのある行を選択、
もしくはカーソルのある行を削除というショートカットコマンドはあるんでしょうか?
MSDNで探して見たのですが、見当たりません。
もし、そのようなショートカットを使いたい場合はどうしたらいいのでしょうか?

193:デフォルトの名無しさん
09/12/08 12:49:20
カーソルのある行の最左端をマウスクリックすりゃその行全体を選択できるけど、それじゃダメなのか?
あとは Ctrl+X, とか Delete すりゃいいんだが。

194:デフォルトの名無しさん
09/12/08 14:32:20
RGB値に簡単に倍率を掛ける方法はないですか?
RGB(r*x,g*x,b*x)みたいな事をしたいんですが
これだと3色の値を覚えないといけないので
作られた後の色に対して倍率を掛けたいのです

195:デフォルトの名無しさん
09/12/08 15:27:06
RGB値って何?

196:デフォルトの名無しさん
09/12/08 17:22:22
RGB( r, g, b ) * x

これで何が不満だというのだ。

197:デフォルトの名無しさん
09/12/08 17:24:05
それは倍率になってないだろ。w

198:デフォルトの名無しさん
09/12/08 17:29:07
>>194
GetRValue GetGValue GetBValueでRGB値から各値は取れますよ。

199:デフォルトの名無しさん
09/12/08 19:09:23
>>192
1文字も選択していない状態でCtrl+Cすると、カーソルのある行をコピーすることになる。
Ctrl+Xで切り取りも同様。

200:194
09/12/08 21:59:21
>>198
ありがとうございました

201:デフォルトの名無しさん
09/12/09 00:38:44
>>193
回答ありがとうございます。
以前はそれで済ませてましたが、キーボードから手を離してマウス操作だと、
めんどくさく感じていたので・・・。

>>199
回答ありがとうございます。
やりたかった動作です。
本当に助かりました。

202:デフォルトの名無しさん
09/12/09 10:15:24
ぬるぽ

203:デフォルトの名無しさん
09/12/09 11:34:04
ガッ
といったところで1つ質問良いでしょうか
作成手段:「空のプロジェクト」から窓作成
目的:リソースビューで追加したウィンドウのハンドルを取得したい

コード抜粋
/**********winmain.cpp***********/
HINSTANCE hInst; //instance
HWND hEdit; //edit control
wndProc(HWND hWnd,UINT uiMsg,WPARAM wParam,LPARAM lParam)
{
  HWND hDlog;//ダイアログのハンドル
  switch(uiMsg){
    case WM_CREATE://ウィンドウ作成時
      hDlog = CreateDialog(hInst, MAKEINTRESOURCE(IDD_PROPPAGE_MEDIUM),
        hWnd, DialogProc);//エディットボックスを持ったダイアログを作成
      hEdit = /*???   エディットボックスのハンドルを取得   ???*/
      /*** なんじゃもんじゃ ***/
  }
  /*** なんじゃもんじゃ ***/
}

/**********resource.h***********/
#define IDC_EDIT1            1020
#define IDD_PROPPAGE_MEDIUM   106

グローバル変数hEditにエディットボックスのハンドルを取り付けたいのですが
findwindowとかでは出来ないっぽいので、どーしたらよいものかと・・・
IDD_PROPPAGE_MEDIUMの中身はただのエディットボックスを持ったダイアログということでお願いします

204:デフォルトの名無しさん
09/12/09 11:41:33
GetDlgItemとか?

205:デフォルトの名無しさん
09/12/09 14:26:03
GetDigItem・・・
hEdit=GetDlgItem(hDlog, IDC_EDIT1);
でnullっぽい(unused)でした。
なんぞやり方間違ってるのか。ハテ

206:デフォルトの名無しさん
09/12/09 14:43:22
>>205
ほんとに0x00000000だったのか?
unusedは気にしないでいいぞ

207:デフォルトの名無しさん
09/12/09 15:04:46
SetWindowText(hEdit,MAKEINTRESOURCE(int value));

文でnullリファレンス例外が飛んでるっぽいのでnullだと考えてたのですが
じゃあどこか別のところを見ているのか・・・

208:デフォルトの名無しさん
09/12/09 15:09:56
>>207
>SetWindowText(hEdit,MAKEINTRESOURCE(int value));
そりゃないだろ、MAKEINTRESOURCEは数値を文字列に変換するわけじゃないぞ。
とりあえず、SetWindowText(hEdit, _T("Hello")); で試すとどうなる?

209:デフォルトの名無しさん
09/12/09 15:20:35
herroが出てきました・・・getdigitemは問題ないぽいです
value(int)を文字列の頭に入れておく・・・という感じでしょうか

数値文字列変換苦手だー

210:デフォルトの名無しさん
09/12/09 15:26:31
とりあえず万能のsprintf()を覚えておけばいいと思うよ。

211:デフォルトの名無しさん
09/12/09 17:18:58
sprintfの%.数字gで対応~

ありがとうございます。山越えたみたいです・・・

212:デフォルトの名無しさん
09/12/09 17:39:00
VC++ 2008eeでC++の勉強を始めたのですが
この先どのように勉強を進めて良いのか分かりません
皆さんはどのようにマスターされたのでしょうか?
やさしいC++ 第3版の内容は一通り終わっています

213:デフォルトの名無しさん
09/12/09 17:39:41
なんか作る

214:デフォルトの名無しさん
09/12/09 17:42:51
基本的な文法が理解できるようになったのなら、後は何がしたいのかによる。

215:デフォルトの名無しさん
09/12/09 19:08:12
しょうもない質問
struct struct{
int i;
}

main(){
 for(0から10回){
  func1();
 }
}
func(){
 static struct a ={0};
 a.i++;
}

もうここまで書いたなら試せって話だが。これってa.i=10でいいよね

216:デフォルトの名無しさん
09/12/09 19:14:25
C++スレでやってくれ

217:デフォルトの名無しさん
09/12/09 20:27:06
>>214
自分が作りたいものによって学ぶべきものが変わってくるという事ですね
色々調べてみます
ありがとうございます

218:デフォルトの名無しさん
09/12/09 21:40:01
日本語話せます程度の話だからな

219:デフォルトの名無しさん
09/12/09 21:59:46
日本語の単語を知ってます、程度じゃね
話せるようになるには数作るしかない

220:デフォルトの名無しさん
09/12/09 23:16:33
エラーで困っているので助けてください。

error LNK2001: 外部シンボル ""public: virtual void __thiscallCDialog::OnInitDialog(void)" (?OnInitDialog@CDialog@@UAEXXZ)" は未解決です。
error LNK2001: 外部シンボル ""public: virtual void __thiscallCDialog::OnInitDialog(void)" (?OnInitDialog@CDialog@@UAEXXZ)" は未解決です
error LNK2001: 外部シンボル ""public: virtual void __thiscallCDialog::OnInitDialog(void)" (?OnInitDialog@CDialog@@UAEXXZ)" は未解決です。
error LNK2019: 未解決の外部シンボル "public: virtual void __thiscallCDialog::OnInitDialog(void)" (?OnInitDialog@CDialog@@UAEXXZ) が
関数"public: virtual int __thiscall CprototypeApp::InitInstance(void)"(?InitInstance@CprototypeApp@@UAEHXZ) で参照されました

とエラーが出ていますが、原因がわからず困っています。

同じソースを別の人の環境で実行すると何もエラーも出ずにコンパイル・リンカーが通ります。
私も昨日までは通っていましたが、コーディングを設定ファイル?とかがおかしくなってしまったのか、
昨日のデータを使ってもリンカーエラーが出て困っています。

環境として、
自分   VisualStadio 2008 VC++(MFC)
別の人  VisualStadio 2008 VC++(MFC)

本当に困っています。何か知っている方がいらっしゃったら力を貸してください。

221:デフォルトの名無しさん
09/12/10 00:17:32
必要なライブラリをリンクしてない

222:デフォルトの名無しさん
09/12/10 12:42:23
>>220
ソリューション丸コピーでビルドが通らないの?ならVisual Studioをインストールしなおすのがいいだろう。
プロジェクトファイル(.vcproj)やソリューションファイル(.sln)もソースファイルだよ。
プログラマが操作した設定が書かれている。

223:デフォルトの名無しさん
09/12/10 13:02:26
MFCスレとマルチ

224:デフォルトの名無しさん
09/12/10 17:40:48
MFC+VC2005です。

BYTE配列で持ってるBMPファイルのデータを
(CFileでWriteするとbmpファイルになるデータです)
JPEGに保存する方法はどういうのがあるでしょうか。

無駄なディスクI/Oは避けたいので
一度保存して、それをCImageで開くと言うのは最終手段と思っているのですが。


225:デフォルトの名無しさん
09/12/10 17:47:42
IStreamで

226:デフォルトの名無しさん
09/12/10 18:16:51
IStreamが嫌なら、CreateDIBitmapしてCImageのAttachを呼ぶなど。

227:デフォルトの名無しさん
09/12/10 18:37:01
①コマンドプロンプトを開く
②バッチファイル実行
③cl sample.cppと打つ
この手順で勉強しているのですが、毎回毎回これをやるのがつらいので、
sample.cppをドラッグアンドドロップすると上記手順を実行してくれるようなソフトや方法はありませんか?


228:デフォルトの名無しさん
09/12/10 18:56:07
そういうやり方が好みならコンパイル用のバッチ作って、そこへsample.cppをドラッグアンドドロップだな
あと、コマンドラインでやりたいなら、VCじゃなくて他のコンパイラの情報を参考にした方がいいし、
コンパイラもそっち使った方がいいかもしれない。

229:デフォルトの名無しさん
09/12/10 19:18:44
なるほど、Windowsのバッチで出来るのですか。
Linuxでg++でプログラミングしたことはあるのですが、WindowsでやるならVisual C++をやりたいなぁと思っておりまして。
申し訳ありませんが、
Windowsのバッチを書いて下さりませんか?
m(_ _)m

230:デフォルトの名無しさん
09/12/10 19:42:48
こんな感じかな。vcvars32.batは2番のバッチファイルのことだから適当に置き換えること。
@echo off
call vcvars32.bat
cd /d %~dp1
cl "%~nx1"
pause

231:デフォルトの名無しさん
09/12/10 20:01:39
どうもありがとうございます。
これ、ちょっと応用すればいろいろ使えそうですね。


232:224
09/12/11 09:18:48
>>225-226
試してみます、ありがとうございます

233:デフォルトの名無しさん
09/12/11 15:03:58
VC++って何気に変数名とかクラス名とかに日本語使えるけど
別に良いよね(ry

234:デフォルトの名無しさん
09/12/11 15:22:02
一応vcもNMAKEってのがあるぞ、Linuxやってるとのことなので一応

235:デフォルトの名無しさん
09/12/11 17:56:53
msdev もコマンドラインから使えるよ。
.dsp とターゲット("~~ release" とか)を指定してビルドできる。


236:229
09/12/12 00:15:30
ありがとうございます!!!

237:デフォルトの名無しさん
09/12/12 16:40:09
Visual C++ 2008 Express EditionでCLRのWindowsフォームアプリケーションを作ろうとしています。

標準状態で、画面のDPI設定を通常サイズ(96DPI)と125%(120DPI)にした場合で実行時のフォント及びフォームサイズが変わってしまいのす。
変わらないようにする方法は無いのでしょうか?

画面のDPI設定を無視して常に同じ大きさのフォームを表示がしたいです。

CLRを使うことがそもそもの間違いならそう指摘してください。


238:デフォルトの名無しさん
09/12/12 16:43:13
>変わらないようにする方法は無いのでしょうか?

考え方が間違っている。
96DPIと120DPIの双方に対応できるようにするのが正解。

239:デフォルトの名無しさん
09/12/12 17:09:48
winの仕様だから、おまかせで作るとそうなる。
気に入らないなら自分で調整するか、最初から自分で出す。

240:デフォルトの名無しさん
09/12/12 19:29:32
サイズを変えてるのに変わってしまうという文句はどういうことだ?
変えてるんだから変わるのは当たり前だろ?

241:デフォルトの名無しさん
09/12/13 10:27:02
プログラム次第ですが、変わって構わない場合と、変わると不味い場合がある。

不特定環境での実行を想定するなら、サイズが違うことを前提で画面サイズ固定のプログラムを作るのは当たり前ですよね。

242:デフォルトの名無しさん
09/12/13 13:49:57
Visual C++ 2008 expressでdataGridViewを使用しようとしています。
環境としては.NETを用いて、CLR-Windowsフォームアプリケーションの
プロジェクトにしています。

 double 型の配列データをdataGridViewに表示させようとしています。
例えば、test[0]~test[10]にdouble型の数値データが入っていると
します。
 フォームにdataGridViewを配置します。名前はデフォルトのまま
dataGridView1とします。自動的に出てくるメニューで列の追加を選び、
ヘッダーテキストをtestにして追加を押します。そして閉じます。
次に、Form1.Load()で

dataGridView1.Rows.Add(test);

と書くと、ここで

error C2228: '.Rows' の左側はクラス、構造体、共用体でなければな
りません

とエラーが出てしまいます。どのようにすればよろしいのでしょうか。
記してあること以外は、全てデフォルト設定になっています。


243:デフォルトの名無しさん
09/12/13 14:41:40
>>242
dataGridView1->Rows->Add(test);

244:デフォルトの名無しさん
09/12/14 13:31:30
初心者です教えてください。
LinuxでC言語であるプログラムを作り、その途中に「scanf("%d",&a);」
というのをいれて、プログラムをそこで一度ストップさせ、
なにか入力があったときに開始する といったようなものを作りました。(説明下手ですみません)
VCではコマンドラインがありませんが、同じようにできますか??

245:デフォルトの名無しさん
09/12/14 13:36:33
できるよ
Win32コンソールアプリケーションで作ればいい

246:デフォルトの名無しさん
09/12/14 13:59:53
ありがとうございます

板違いかもしれませんが、VCで作ったプログラムを
matlabでmexして動かそうと思っているのですが、コンソールアプリケーションをmexしたらできますか?

247:デフォルトの名無しさん
09/12/14 14:09:14
すみません 246の者です
日本語が意味不明な気がしたため、追記させていただきます。
244で書いたようなことをmatlabでmexして動かしたいと思っています。
それは可能ですか?


248:デフォルトの名無しさん
09/12/14 14:23:57
わからんけどmatlabとかmexとかVisualStudioでググるとそれらしきことを書いたとこはあるみたいだが

249:デフォルトの名無しさん
09/12/14 17:46:35
リソースエディタというのは無料では使えないんでしょうか?
vc++2008eeを使ってるんですがどこを探しても見つからないもんで・・・

250:デフォルトの名無しさん
09/12/14 17:47:52
VisualStudio付属のリソースエディタはStandard以上、EEには無い。
ただし、リソースコンパイラ等は付属しているので、テキストでrcファイルを書くか、
外部のリソースエディタを使って組み込むことは可能。

251:デフォルトの名無しさん
09/12/14 17:49:52
ありがとうございます
外部ツール導入してみます

252:デフォルトの名無しさん
09/12/15 07:19:29
URLリンク(www.wilsonc.demon.co.uk)

253:デフォルトの名無しさん
09/12/15 23:25:00
すみません。VC++6.0で作成したソフトをVC2008でもう一度作成しようとすると
変更点とか多いですか?

友達がVC6.0で作ってくれたサンプルコードをくれたので、VC2008でやってみたいんですが。
もちろんMFCです。ちなみにVC2008は、StandardEditionをかおうかどうか迷っています。

容易にできるなら、買いたいと思っています。

254:デフォルトの名無しさん
09/12/16 00:26:33
StandardEditionは2010で廃止だお
今買わないとPro買うしかなくなるお

255:デフォルトの名無しさん
09/12/16 01:35:10
VC++2008EEでwindowsSDKを使っています。
createprocessで起動したアプリのウィンドウサイズを取得取得したくて調べていたら
EnumWindowsでプロセスIDの一致でウィンドウハンドルを取得するのが一般的みたいなので
URLリンク(akky.cjb.net)
ここのサンプルを試していたのですが、うまく動いてくれません。
プロセスID一致のifの中にブレークポイントを置くと止まるので、一致までは行ってるみたいなんですがメモ帳が終了しません。
どこがおかしいのでしょうか。


256:デフォルトの名無しさん
09/12/16 10:07:57
ブレークポイントで止まるなら、spy++とか実行してその時のウインドウハンドル比べたり
WM_CLOSEがたしかに投げられてるか調べてみては。

257:デフォルトの名無しさん
09/12/16 10:19:15
サンプルは説明を簡素化するのにメモ帳使ってるだけで
きちんとデバッグしたかったら自分で作ったプログラム使えばいい。

258:デフォルトの名無しさん
09/12/16 15:27:16
>>255

そこ、MFC使ってるじゃん。

あなたは、MFCのついてないExpressEditionだから、そのサンプルのままじゃ動かないでしょう。

259:デフォルトの名無しさん
09/12/16 15:33:48
まあちょっとやってみたけど(Afx)MessageBoxの変更でEEで動かしたよ
CreateProcessの第2引数はリテラルじゃダメで変数にしたけどな。
ちゃんとメモ帳起動して終了した。

260:デフォルトの名無しさん
09/12/16 15:58:46
>>255

これを追加 #include <windows.h> の下の行に追加
   ↓
#include <tchar.h>


以下の箇所を書き換え

AfxMessageBox(_T("メモ帳を終了させます。"));
      ↓
MessageBox(NULL, _T("メモ帳を終了させます。"), "メッセージボックス", MB_OK);

if(AfxMessageBox(_T("強制終了させますか?"), MB_YESNO) == IDYES)
      ↓
if(MessageBox( NULL, _T("強制終了させますか?"), "メッセージボックス", MB_YESNO ) == IDYES)




261:デフォルトの名無しさん
09/12/16 16:24:33
質問者はブレークポイントで止まると書いてるんだし、
実行とメモ帳起動まではうまくいってるとわかるだろう

262:デフォルトの名無しさん
09/12/16 18:28:45
ソース貼れよ

263:デフォルトの名無しさん
09/12/16 18:53:29
VC++2008EEで、CrossWalkSDK(3DCGソフト間のデータ
コンバータ用のSDK)を勉強しているのですが、SDK内の
ヘッダのクラスの定義部分でエラーが出てしまいます。
===================================================
#include "SIBCNode.h"
#include "SIBCString.h"

//エラーの出る部分
class XSIEXPORT CdotXSIParam : public CSIBCNode
{
 public:
CdotXSIParam(); // Default constructor.
 //-- 以下メンバ関数が続く ---------------
};

//--- Global Functions ----------------------
XSIEXPORT CdotXSIParam* CreatedotXSIParam();
XSIEXPORT void AllocateLocalXSIArray(SI_TinyVariant*, SI_Long);

<エラーの内容>
error C2470: 'CdotXSIParam' : 関数定義のようですが
パラメータリストがありません。外見上の本体をスキップします。
===================================================
CdotXSIParamがクラス名である事は分かるのですが、
エラーの元になっているクラス名の前やグローバル関数の
戻り値の前にある「XSIEXPORT」の部分の意味が分かりません。

こういう書き方は自分の持っているC++の本(独習C++)では
載っていないので推測なのですが、VisualC++で設定される機能
なのでしょうか? よろしくお願いいたします。

264:デフォルトの名無しさん
09/12/16 19:06:28
XSIEXPORTに右クリックで定義を表示させれば出てくることもあるけど
たぶん#defineで関数規約か__declspec(・・・)とか書いてあるんだと思うよ
XSIの文字で固有のものだってわかるだろう

265:デフォルトの名無しさん
09/12/16 19:35:31
クラス宣言の前に呼び出し規約っぽい定義はあんま知らんな、クラス宣言が関数に思われてるし
定義XSIEXPORTの中身がわからんとなんともいえんが 他のファイルの後にincludeしなきゃならんとかか


266:263
09/12/16 19:51:57
>>264さん、>>265さん、ありがとうございます。
仰るとおりファイル内を検索してみると

#ifndef XSIEXPORT
# define XSIEXPORT __declspec(dllexport)
#endif

という記述が見つかり、VC++でプリプロセッサや
追加の依存ファイル等をいろいろ設定していたら無事に
コンパイルできるようになりました。
declspec等の呼び出し規約キーワードというものがあるのも
知りませんでした…orz

267:デフォルトの名無しさん
09/12/16 23:17:01
255です。
レスありがとうございました。
今までWM_CREATE内にサンプルをコピペして実行していたのですが
ボタンを作って実行したら正常に動きました。
URLリンク(www.dotup.org)






268:デフォルトの名無しさん
09/12/16 23:20:30
そういうオチだったのか・・・・・・ ゴクリ 予想できなかった。。。。

269:デフォルトの名無しさん
09/12/17 01:27:01
だれか、漏れに最新版のVisualStudioを寄付してほしいお。

寄付してくれたら、ひまだからご希望のソフトをつくってあげるお。

270:デフォルトの名無しさん
09/12/17 01:29:06
最新版のVisualStudioが当たるプレゼントコーナーとかどこかにないかお?

MFCがいるから、StandardEdition以上だお( ^ω^)

271:デフォルトの名無しさん
09/12/17 09:53:04
評価版の有効期限を延ばす方法
ネットで知ったのですが、評価版の有効期限を延ばす方法が存在します。実際にやってみたのですが、うまくいきました。
あまりおおっぴらにできることではないので内緒です。でもちょっと調べれば判るとおもいます。
どうしても判らない人は、Express Editionで我慢しましょう。


272:デフォルトの名無しさん
09/12/17 15:39:14
Visual Studio2008 Standard EditionではExpress Editionでは出来なかった、.NET無しでのフォームアプリケーションの視覚開発できますか?


273:デフォルトの名無しさん
09/12/17 17:03:28
フォームは.net

274:デフォルトの名無しさん
09/12/17 17:17:16
フォームを使わない、リソースエディタでのダイアログやMFCのFormViewということなら可能

275:デフォルトの名無しさん
09/12/17 22:31:20
Expressでもできるけどね

276:デフォルトの名無しさん
09/12/18 07:58:44
SDKなら無料で配布してたよね

277:デフォルトの名無しさん
09/12/19 16:44:00
俺のチンポも無料で配布してんだけど・・・なかなか

278:デフォルトの名無しさん
09/12/19 17:45:13
>>277
なかなか人柱になってくれる人がいないわけね。

279:デフォルトの名無しさん
09/12/21 06:02:43
プログラム以前の質問なんですが
新規作成からプロジェクトを選んでCLR→空のCLRプロジェクト
プロジェクト名を入力し、ソリューションのディレクトリ作成にチェックを入れてOKを押すと
画面左側にソースファイルやヘッダーファイルなどのソリューションのディレクトリが表示されるはずなんですが
何をしてもディレクトリが表示されません、そのおかげでソースファイルを右クリック→追加新しい項目からcppファイルを追加したいのにそれができません…
何か解決方法はありませんでしょうか?
visual c++ 2008 express editionを使用していて、過去に同じことをやったらソースファイルが出ていたはずなんですが今は出てこないんです…

280:デフォルトの名無しさん
09/12/21 06:12:44
279です
すみません、自己解決できました
バーのプロジェクト→新しい項目の追加からcppファイルを追加し動作させることができました
スレ汚し申し訳ありませんでした

281:デフォルトの名無しさん
09/12/21 07:46:21
ドンマイ

282:デフォルトの名無しさん
09/12/23 23:00:51
VC++2005を使ってスレッドを使うプログラムを作成しています。
AfxBeginThread()を用いてスレッドにウィンドウハンドルとデータを与え、
計算を行った後メッセージを贈ってスレッドの作成元に計算結果を送信するようにしているのですが、
実行すると2~3回に1回の頻度で

「一般エラー:ウィンドウハンドルが無効です」

とエラーメッセージが表示されます。
実行するたびに出るわけではないので、どこでエラーが出ているのかが良く分からないのですが、
問題としてはどういったことが考えられるのでしょうか。

283:デフォルトの名無しさん
09/12/23 23:08:02
一番単純でありがちなのが、スレッドのパラメータとして渡すのがメインスレッドのローカル変数で、サブスレッドが値を読む前に破棄されているということ。

284:デフォルトの名無しさん
09/12/24 19:28:39
>>282
メインスレッドのほうが見に行かないと

285:282
09/12/24 21:39:05
色々レスありがとうございます。

>>283
調べてみましたが、どうも問題は変数部分ではなくて
計算を行うスレッド内で動かしていたプログレスバーの部分だったようでした。
最初の書き込みで一切触れていない部分ですみません。
>>284
メインのほうが見に行くということは、計算のスレッド部分の関数を呼び出すなりして
値を取り出すということでしょうか

まだ上手く動作できるようになっていませんので、まだ何か思いつく所があったらお願いします。

286:デフォルトの名無しさん
09/12/30 00:37:50
age

287:デフォルトの名無しさん
09/12/31 23:07:51
VC++2008を使ってCの勉強をしている者なんですが、最初はCの入門書籍・入門サイトを見ながら、
「ソリューションの中のプロジェクトにソースファイル(cppファイル)を追加して、コード
(例えばHalloWorldの練習)を書く。
書けたらデバッグなしで開始→上手くいったらHalloWorldの練習コードを全部消して次のコード
(例えばscanfの練習)を書く→上手くいったらscanfの練習コードを全部消して次のコード……(以下繰り返し)」
のような手順で勉強していました。

でも最近になって1つのソリューションの中に複数のプロジェクトを作れるのを知って、試しに

ソリューション
L__プロジェクト1
  L__HalloWorldの練習.cpp
L__プロジェクト2
  L__scanfの練習.cpp

のような構成にしてみました。
それでこれを「デバッグなしで開始」してみると、いつもHalloWorldしか実行されません。
scanfの練習.cppを真ん中のエディタ画面に出していても、HalloWorldが実行されます。
ソリューションの中の一番上のプロジェクト以外を実行したい場合はどうすればよいのでしょうか?

自分で色々試してる最中に、メニューに「プロジェクトのビルド順序」というのを見つけたので
「プロジェクトの依存関係」というところをいじって「ビルドの順序」タブで
scanfの練習.cppが一番上に来るようにしてみたのですが、上手くいきませんでした。

見当違いな質問をしていたらすみません……。


288:デフォルトの名無しさん
09/12/31 23:14:31
>>287
ソリューションエクスプローラーで、プロジェクトを右クリックして
「スタートアッププロジェクトに設定」を選ぶ。


289:287
09/12/31 23:22:38
>>288
できました! ありがとうございます!!
「スタートアッププロジェクトに設定」って、てっきり「VC++を起動した時に、勝手に
そのプロジェクトを開いてくれる」(ブラウザのスタートページに指定みたいな)機能」だと
思い込んでました。
これで前の練習用のコードを見返すのも楽になりそうです、ありがとうございました!!


290:デフォルトの名無しさん
09/12/31 23:52:43
入門レベルでそういう方法は非常に珍しいと思う。

291:デフォルトの名無しさん
10/01/03 23:39:44
フォームのスクリーンキャプチャをしたくて、下記のように書いたのですが、
コンパイルは通るのに、肝心の中身はキャプチャされていなくて真っ黒になってしまうのですが、
どうしてでしょうか?

いろいろ試したのですが、どうしても解決できないので、解決策を教えて下さい。よろしくお願いします。


Graphics^ g1 = this->CreateGraphics();

Bitmap^ img = gcnew Bitmap(this->Width, this->Height, g1);
Graphics^ g2 = Graphics::FromImage(img);

IntPtr dc1 = g1->GetHdc();
IntPtr dc2 = g2->GetHdc();
HDC hDC1 = static_cast<HDC>(dc1.ToPointer());
HDC hDC2 = static_cast<HDC>(dc2.ToPointer());

BitBlt(hDC2, 0, 0, img->Width, img->Height, hDC1, 0, 0, SRCCOPY);


292:デフォルトの名無しさん
10/01/04 21:18:20
ノートPCでVisualStudio2008を使いたいのですが、推奨解像度はどれくらいでしょうか?
実用的な解像度を教えていただけると助かります。

293:デフォルトの名無しさん
10/01/04 21:54:50
可能な限り大きいやつを。
XGAあれば何とか使えるが、高ければ高いほど能率上がる。


294:デフォルトの名無しさん
10/01/05 17:20:47
CStringで躓いているのですが教えていただけないでしょうか?
下記のようなソースで構造体にCStringを使っているのですが
そこに値をセットしようとするとメモリアクセス違反に
なってしまいます。どうにも問題ないように見えるのですが
何か間違いがあるのでしょうか?

typedef struct _st {
 CString cstr;
} ST;

int _tmain(int argc, TCHAR* argv[], TCHAR* envp[])
{
 void *hoge = malloc(sizeof(ST));
 ST *st;
 st = (ST *)hoge;
 st->cstr = "";
}


295:294
10/01/05 17:28:18
ごめんなさい。わかりました。

296:デフォルトの名無しさん
10/01/05 22:40:20
敢えて言おう。mallocを使うのはお勧めしない

297:デフォルトの名無しさん
10/01/06 03:56:35
>>291
DrawToBitmapはだめ?


298:デフォルトの名無しさん
10/01/06 07:29:32
CStringについて教えてください。
Cstring buff = "hogehoge";
buff = buff.Left(4);
とするとbuffを4文字で切れますが、これだと無駄にメモリを
使ってしまうと思います。
char *buff[10];
strcpy(buff, "hogehoge");
buff[4] = '\0';
みたいにぶつ切りできないでしょうか?

299:デフォルトの名無しさん
10/01/06 08:02:28
>>298
Truncateメンバ関数

300:デフォルトの名無しさん
10/01/06 08:11:53
>>299
ひゃっほー
ありがとう!

301:デフォルトの名無しさん
10/01/06 10:28:02
CStringからchar*への変換は下記のような方法があるようですが
このようにメモリをコピーする方法しかないでしょうか?
CString str = "test";
char *p = new char[str.GetLength()+1];
strcpy( p, str );
delete [] p;

char *p;
p = str.char_pointer();
みたいにできればありがたいのですが。



302:デフォルトの名無しさん
10/01/06 10:35:14
URLリンク(msdn.microsoft.com)

303:デフォルトの名無しさん
10/01/06 10:59:07
>>302
英語のリファレンスただ置くだけで回答だと思うなよ。てかCStringの日本語ドキュメントなかったっけ?

俺自身CStringあんまり使わないから仕様は詳しく知らないんだが、メンバ関数にoperator const char*()が存在してるなら

p = (char*)(const char*)str;

でいいんじゃないかと思った。
ただまぁせっかくCStringクラスを使っているんだから生のポインタなんて使わない処理にした方がいい気がするんだが。

304:デフォルトの名無しさん
10/01/06 11:05:00
>>303
うひょー
天才すぎる

305:デフォルトの名無しさん
10/01/06 11:15:02
>>303
いや、こいつ調べなさすぎだろ、と思って皮肉でURLだけおいたんだが。

306:303
10/01/06 11:18:02
>>304
ごめん俺何か変なこと言ったかな。皮肉られてる気がするんだが

307:デフォルトの名無しさん
10/01/06 11:20:11
>>306
いえ。とんでもない。助かりました。
VB厨なので調べるのも難しくorz

308:303
10/01/06 11:30:00
リロードしてから書き込むべきだった

>>305
そういうことかスマソ

>>307
ただの被害妄想だったか
参考までに今調べたら「CString ポインタ 変換」でまんまの解決策があったとだけ言っておこう

309:デフォルトの名無しさん
10/01/06 12:27:50
>>303
これならコピーした方がいいだろ。
内部へのポインタをconstはずして
使うとか、トラブルのもと。

310:デフォルトの名無しさん
10/01/06 12:28:54
>>307
const char* ではなく char* に変換するのが「書き換えたいから」という目的なら、
p = (char*)(const char*)str;
は危険。

書き換えないのなら
char* p ではなく const char* p にすればよいだけ。

311:デフォルトの名無しさん
10/01/06 17:51:37
>>297
助かりました。大変ありがとうございました。

312:デフォルトの名無しさん
10/01/06 18:22:14
298の
buff = buff.Left(4);
これってまずくないの?
(298はTruncateを使うようにしたみたいなんで分岐した話として)

313:デフォルトの名無しさん
10/01/06 22:15:04
>buff = buff.Left(4);
>これってまずくないの?

なぜまずいと思ったのか言ってごらん。

314:デフォルトの名無しさん
10/01/06 22:19:01
>>312
それは別に問題ないんじゃないの?

Truncateって知らんからMSDN見てみたけど、載ってない。
なんでだ。
URLリンク(msdn.microsoft.com)(VS.80).aspx

315:デフォルトの名無しさん
10/01/06 23:03:24
教えてください。

VC2003 でアンマネージなプロジェクトに一部マネージを混ぜて使ってます。
(ファイルごとのプロパティで /clr をつけてます)

ここで、アンマネージの関数(クラスの静的メソッド)の引数にマネージオブジェクト
(System::Cllectios::ArrayListなど)をつけて普通に呼び出す分には問題なく実行できます。
が、この関数を関数ポインタ経由で呼ぼうとすると例外が発生して不正終了します。
以下のようなコトをしたいのです。
アンマネージの関数ポインタ?がマネージオブジェクトの引数に対応してないのでしょうか。

void func( System::Collections::ArrayList* list )
{}

void hoge()
{
System::Collections::ArrayList* list = __gc new System::Collections::ArrayList();
void(*test)( System::Collections::ArrayList* ) = func;

func( list ); // ok
(*test)( list ); // ng
}

316:デフォルトの名無しさん
10/01/07 01:27:25
>>314
CStringTの基底クラス、CSimpleStringのメンバ。
URLリンク(msdn.microsoft.com)

>>315
<gcroot.h>をインクルードして、funcとtestの型をgcroot<Systaem::Collections::ArrayList*>にしたらきちんと動いているようだった。
ちなみに、VC++ 2008では元のコードのままで動いた。おそらく2005でもそうだと思う。

> アンマネージの関数ポインタ?がマネージオブジェクトの引数に対応してないのでしょうか。
これが原因だと思う。gcroot<>自体はアンマネージ型で、
アンマネージクラスにマネージクラスオブジェクトを置きたいなどというときに使える。

317:デフォルトの名無しさん
10/01/07 09:27:14
CStringみたいな途中でサイズ変る前提のやつは
ブロック単位でメモリ管理してるから
ちまちまバイト単位でメモリ節約しても何の意味もなかったと思う。

318:デフォルトの名無しさん
10/01/07 11:42:49
C++でdllを作成しています。
他のdllをリソースとして、自分が今作成しているdllに組み込むことは可能でしょうか?

具体的には、SQLiteのdll、sqlite3.dllを自分が作成しているdllにリソースとして組み込みたいと思っています。

319:デフォルトの名無しさん
10/01/07 12:09:51
組み込まなくても使えると思うけど、ばれないようにパクリたいということ?

320:318
10/01/07 12:38:38
>>319
返信ありがとうございます。簡単にいうとそうです。
sqlite3.dllを使用していることをバレるのが困るというより、
sqlite3.dllを使用しているので SQLite形式のファイルをどこかで使かわれていることが、簡単にばれるのが少し困るので
この方法を考えています。バイナリで見られたらすぐにわかりますが(笑

リソースとしてdllを読み込む方法を知らなかったので質問しました。 可能ということでよろしいでしょうか?




321:デフォルトの名無しさん
10/01/07 12:40:41
sqliteってソースあるね。あれを取り込んだら?

322:319
10/01/07 15:28:18
>>321

・・・オープンソースがあることを知りませんでした・・・
ありがとうございます。 それを使ってみますm(_ _)m

323:312
10/01/07 16:13:18
>>313,314
i=i++; と似た匂いを感じてしまったんだが、考え直してみたら i=i+1; と同じか。
Left()はconstだからいいんだな。

324:315
10/01/07 21:25:27
>>316
それで出来ました。
すごく助かりました。これで似たようなコードをあちこちに置かなくてすみます。
ありがとうございます。

325:デフォルトの名無しさん
10/01/08 22:14:12
回転寿司でお稲荷さんが回ってなかったから注文したら、
渡されるところで隣に座ってた人に横からお稲荷さん取られた
それは私のお稲荷さんだ!って言ったら反対側に座ってた人がイクラを噴出した
私も一瞬後で気づいて、たぶん顔真っ赤になってたろうけど全部食べた

326:デフォルトの名無しさん
10/01/09 20:11:17
みなさんはCStringを使わないとのことですが
何を使っているのでしょうか?

327:デフォルトの名無しさん
10/01/09 20:34:35
>>326
いや、ふつーに使ってるよ。
使わないって半可通だろ?

328:デフォルトの名無しさん
10/01/09 22:06:28
へー

329:デフォルトの名無しさん
10/01/09 22:20:25
std::string

330:デフォルトの名無しさん
10/01/10 06:55:30
>>327
Windowsプログラマはそうだろうけど。

・・・ま、ここはVCのスレだし、いいのか・

331:デフォルトの名無しさん
10/01/10 18:15:33
解決法を教えてください。
MS VisualC++2008でcvBlobを使おうとしたのですが、エラーがでてビルドが完了しません。(下記にエラーメッセージ)
OpenCV1.0は既にインストールしてあり、PC上での動作は確認してあります。
OSはWindows XP SP3です。
足りない情報がありましたら教えてください。
よろしくお願いします。

////////エラーメッセージ//////////

\cvblob.cpp(27) : fatal error C1083: include ファイルを開けません。'opencv/cv.h': No such file or directory
opencv\cv\include\cvcompat.h(784) : warning C4819: ファイルは、現在のコード ページ (932) で表示できない文字を含んでいます。データの損失を防ぐために、ファイルを Unicode 形式で保存してください。
test.cpp(3) : fatal error C1083: include ファイルを開けません。'cvblob.h': No such file or directory
cvlabel.cpp(27) : fatal error C1083: include ファイルを開けません。'opencv/cv.h': No such file or directory


332:デフォルトの名無しさん
10/01/10 18:40:11
文字コードはとりあえずおいといて、
インクルードパスの設定の仕方をだな

333:デフォルトの名無しさん
10/01/11 03:13:23
>332
cvBlobは使いたいプロジェクトのディレクトリに入れるだけでOK…
という話を見たのですが、インクルードパスの設定が必要になるんですね。
もう少し格闘してきます。
アドバイスありがとうございました!

334:デフォルトの名無しさん
10/01/11 04:52:44
全くの初心者ですが教えてください。

まず適当に設置したボタンをクリックするとエディットボックス1(m_edit1)に表示されている文字列のうち、マウスでドラッグして選択した部分のみを別のエディットボックス2(m_edit2)に表示させたいです。
次にm_edit2に表示された文字列を取得してgoogle検索やWikipedia検索をさせるボタンを配置したいです。

わからないことは以下の二つ
1.選択文字列を取得して、新たに定義したCStringにコピーする方法
2.任意の文字をgoogle、wikipedia検索させる方法

2に関してはVC++じゃないような気もするのですが、教えてください…

335:334
10/01/11 07:35:08
すみません自己解決しました

336:デフォルトの名無しさん
10/01/11 13:25:04
VC++2008EEでCTRL+ALT+DLLを無効にするGINAを作成したく

URLリンク(7ujm.net)

上記にあるサンプルをビルドしてXP pro sp3に入れてみましたが
「MSGINA.DLLを読み込めませんでした」と出てログオンできません。
初心者でソース自体に不備があるのか、ビルドの仕方が悪いのか判断できない状況です。

アドバイスお願いします






337:デフォルトの名無しさん
10/01/11 13:42:32
そんなこともわからない人が手を出すのは危険だと思うが
ビルドした時とインストールしたものは同じ環境?
まずは普通にDLL作って普通に動作させるとこからやってみては

338:デフォルトの名無しさん
10/01/11 13:43:26
もし違う環境ならDLLの前にEXEもやってみて

339:336
10/01/11 14:38:41
>>337
アドバイスありがとうございます。

インストールしたものは別環境です。
たしかに仮に動かせたとしても今の私では危険ですね。

VB厨なので敷居は高く感じますが、ものぐさせずに一からやってみます。

340:デフォルトの名無しさん
10/01/11 14:58:11
環境違うのなら、まずはReleaseビルドとランタイムライブラリ関連かな
とりあえずデフォルトが/MDなのでredist入れるか/MTにするかかな。

341:336
10/01/11 16:17:00
>>340
/MTに変更して動作しました。
ありがとうございました!



342:デフォルトの名無しさん
10/01/12 08:21:46
exeを下記のような動きにする場合はどのようにすればいいのでしょうか

・exe実行時の引数に何も指定しなかった場合はFormを表示してwindowsアプリとして振舞う
・exe実行時の引数に特定のコマンドが指定されていた場合はFormを表示せず
動作を実行したのち終了

開発環境はvc++ 2008 Express Edition SP1です



343:デフォルトの名無しさん
10/01/12 08:40:11
>>342
lpCmdLineに文字列があるかどうかで分岐させればいいんじゃないの?

344:デフォルトの名無しさん
10/01/12 09:37:25
>>343
ありがとうございます。
できました

もしかして・・・vc++ 2008 Express Edition SP1の場合CLRを使わないと
Formなどを使うことはできませんか?


345:デフォルトの名無しさん
10/01/12 09:42:59
>>344
Express Editionにはリソースエディタついてないからな

346:デフォルトの名無しさん
10/01/12 10:12:25
Formは.net専用

347:デフォルトの名無しさん
10/01/12 15:04:44
>>344
窓アプリ作れるかって事ならできるよ
やりかたは↓でわかるよ
URLリンク(www.kumei.ne.jp)

348:デフォルトの名無しさん
10/01/12 20:05:27
今日windows7が家に届いて、c++を本格的に勉強しようと思っています
おすすめのコンパイラってあります?

349:デフォルトの名無しさん
10/01/12 20:13:00
>>348
Visual C++ 2008 Express Edition

350:デフォルトの名無しさん
10/01/12 20:42:11
>>348
GNU C++コンパイラ (G++)

351:デフォルトの名無しさん
10/01/12 21:25:37
char a = "no";
string s;
s = "aho"+a+"sakata";

↑はエラー出るけど、こんな感じの書き方はできませんか?
+= や copy使うとパッと見すごく分かりづらいです。
char aをstring型で複製するのも嫌です。

352:デフォルトの名無しさん
10/01/12 21:34:21
char a = "no";

この時点でなぁ

353:デフォルトの名無しさん
10/01/12 21:43:01
char* a = "no";
std::string s;
s = std::string("aho")+a+"sakata";

こんなんで?

354:デフォルトの名無しさん
10/01/12 21:51:29
>>353
ありがとうございます
まさにこんなのです

355:デフォルトの名無しさん
10/01/14 20:46:30
if(a = b + c){ }
とやったら、b + c != 0の場合にif文の中に入るんでしょうか?

356:デフォルトの名無しさん
10/01/14 21:49:01
そうだよ。

357:デフォルトの名無しさん
10/01/14 22:41:59
>>355
まあa, b, cは組み込み型だよね?
そうじゃないとしたら+や=のオーバーロード次第でなんとでもなる。

358:デフォルトの名無しさん
10/01/18 11:07:28
教えてください。

VisualC++6.0で他人が作ったものを修正することになりました。
現在はVisualC++2005しかないため、6.0のdspファイルを開き2005用に変換しました。

プロジェクト→プロパティ→MFCの使用で、
「スタティックライブラリで使用」を選択し、ビルドしたところ、
下記のようなエラーが出てしまいます。

1>nafxcwd.lib(afxmem.obj) : error LNK2005: "void __cdecl operator delete(void *)" (??3@YAXPAX@Z) は既に LIBCMTD.lib(dbgdel.obj) で定義されています。
1>nafxcwd.lib(afxmem.obj) : error LNK2005: "void __cdecl operator delete[](void *)" (??_V@YAXPAX@Z) は既に LIBCMTD.lib(delete2.obj) で定義されています。
1>.\Debug/lc8_kensa.exe : fatal error LNK1169: 1 つ以上の複数回定義されているシンボルが見つかりました。

「共有DLLで使用する」を選択すれば、ビルドできます。
(もちろん警告は山のようにでますが・・・)

原因と解決方法を教えて頂けますか?


また、取り急ぎ、「共有DLLを使用する」でビルドしたアプリケーションを配布し、
実行したところ、「例外 不明なソフトウェア例外(0xc0000409)がアプリケーションの0x00411741で発生しました」
と表示され、エラーとなってしまいます。

この原因は「スタックライブラリで使用」にしてないので、起こったと思っているのですが、
違いますか?

よろしくお願い致します。


359:デフォルトの名無しさん
10/01/18 12:50:00
>原因と解決方法を教えて頂けますか?

エラーも警告も無視せずに対処しよう

360:デフォルトの名無しさん
10/01/18 13:33:08
>エラーも警告も無視せずに対処しよう

対処したいのですが、原因がわからず、対処方法がわかりません。
教えて頂けないでしょうか?
警告に関しては原因がわかっておりますので、対処したいと思います。

361:デフォルトの名無しさん
10/01/18 13:52:06
元のやつの設定がどうなってるかわからんが、
プロジェクトのプロパティのコード生成のランタイムライブラリのあたり弄ってごらん

362:デフォルトの名無しさん
10/01/18 14:47:34
仕事の手伝いはお金を払ってもらわないとな

363:デフォルトの名無しさん
10/01/18 17:25:33
>>361
ランタイムライブラリを適当にいじってみましたが、残念ながらうまくいきませんでした。

>>362
すいません。仕事じゃないです。
私事です。すいません。。。

364:デフォルトの名無しさん
10/01/18 17:34:39
自分で作ったやつじゃなくて他人が作ったやつをいじりたいとか
正直ソフト板あたりでやってほしいと思う、

365:デフォルトの名無しさん
10/01/18 17:41:42
>>363
とりあえず、何をどうしたか全部書け。
まずはビルドするとき、クリーン→リビルドでやれ

366:デフォルトの名無しさん
10/01/18 18:03:25
>>364
すいません。ソフト板っていうのがあるんですか!?
初心者でよく知らず、申し訳ありません。

>>365
まず、6.0で作成されたプロジェクトをフォルダごと、自分のプロジェクトフォルダに移しました。
\\My Documents\Visual Studio 2005\Projects\***
という具合です。
そこで、dspファイルを開くと、

プロジェクト '***.dsp' は現在の Visual C++ プロジェクト形式に変換されなければなりません。変換した後、このプロジェクトを旧バージョンの Visual Studio で編集することはできません。
変換してこのプロジェクトを開きますか?

と出てくるので、「はい」を選択して開きました。
これの「MFCの使用」を「スタティックライブラリ」に選択すると、
>>358のようなエラーが出てしまいます。。。

クリーン→リビルドでやるので正しいやり方なんですね!
これまではビルドしかしてませんでした。。。
勉強になります。
ありがとうございます!

367:デフォルトの名無しさん
10/01/18 18:09:29
そのソースをうpすればコンパイルしてやらんこともないよ

368:デフォルトの名無しさん
10/01/18 18:29:14
正しいやり方つーか、、、設定変えたら状況によっては必要。
これではまるやつも多いので・・・

369:デフォルトの名無しさん
10/01/18 19:08:27
それよりVS2010と.NET4で開発すると中途半端なのを何とかしてくれ。
WCFやEntityFramework4を使ったプロジェクトで作成しても、開発環境内でしか動作しない。
IISでホストできない構成ファイルとかアセンブリ参照とか、、、もう鬱になる。

370:デフォルトの名無しさん
10/01/19 05:16:27
完全に初心者ですが、困っています。
助言よろしくお願いしますorz

VC++6.0にて、
あるプログラムの閾値をスライダーで調整できるようにしろ、との実習が出たのですが、
ResourceViewタグのDialogでウィンドウ内にスライダーを作ったところでつまずいています。

スライダーとプログラムはどうすれば関連付けられるのでしょうか。

371:デフォルトの名無しさん
10/01/19 09:22:15
ボタン、テキストボックス、その他コントロールと同じ

372:デフォルトの名無しさん
10/01/19 10:05:34
VS初心者じゃなくプログラミング初心者でVS等無料ツールを使いつつ学習できるサイトありますか?

373:358
10/01/19 11:37:32
スタティックでビルドできました。

参照URL:URLリンク(support.microsoft.com)

プロジェクト→プロパティ→構成プロパティ→リンカ→入力を選択
「特定のライブラリの無視」に Nafxcwd.lib Libcmtd.lib を入力
「追加の依存ファイル」にも Nafxcw.lib Libcmt.lib を入力

で、ビルド成功しました!
皆様、アドバイスありがとうございました!

しかーし!!
「例外 不明なソフトウェア例外(0xc0000409)がアプリケーションの0x00411741で発生しました」
と表示され、エラーとなってしまいます。
ググってみても、SPのバージョンが低いとかセキュリティの問題と出てきますが、
他に考えられる原因はありますか?




374:デフォルトの名無しさん
10/01/19 11:58:10
いろいろ間違ってるw

375:373
10/01/19 13:51:25
>>374
いろいろって何ですか?
教えてくらはい(>_<)

376:デフォルトの名無しさん
10/01/19 14:00:44
>>375
いやです(>_<)w

377:デフォルトの名無しさん
10/01/19 20:09:19
ものすごく初心者なのでサルにもわかるようにお願いします
ドキュメントにhellowprld.cppといファイル名でテキストで
#include <iostream>
using namespace std;

int main()
{
cout << "Hello world!" << endl;

return 0;
}
と入力、helloworld.cppという名前で保存
Visual C++ 2008 Express Editionのコマンドプロントを開いて
[cd \]と入力さらに[cd cpp]とうつと指定されたパスが見つかりませんになります
なぜでしょうか?



378:デフォルトの名無しさん
10/01/19 20:23:18
保存したところにcdしろよ

379:デフォルトの名無しさん
10/01/19 20:25:26
[cd cpp]と打つ前に、[mkdir cpp]と打ってみたらどうですか。

380:デフォルトの名無しさん
10/01/20 12:01:19
>[cd \]と入力さらに[cd cpp]とうつと指定されたパスが見つかりませんになります
>なぜでしょうか?

ドライブが違うんだろ

381:デフォルトの名無しさん
10/01/20 12:25:25
いやいやいやいや、そもそも
>helloworld.cppという名前で保存
この保存場所さえ把握してないのではw

382:デフォルトの名無しさん
10/01/20 12:27:26
>>372
プログラムを学習できるサイトならググればいくらでもあるよ。
VisualStudioの使い方なら↓を参照。
URLリンク(www.atmarkit.co.jp)
URLリンク(msdn.microsoft.com)

383:デフォルトの名無しさん
10/01/20 12:28:30
>>372
プログラムを学習できるサイトならググればいくらでもあるよ。
VisualStudioの使い方なら↓を参照。
URLリンク(www.atmarkit.co.jp)
URLリンク(msdn.microsoft.com)

384:デフォルトの名無しさん
10/01/25 11:49:20
僕のVisual C++では#pragma region hoge が働いてくれません。
2005からの機能らしいですけど、2005のアカデミックバージョンは対象外ですか。
関数の定義など、他の部分でのコードの折り畳みはできるんですが……。

385:デフォルトの名無しさん
10/01/25 16:39:39
VC2008 Expressを使ってみたのですが、
Windowsフォームアプリケーションで作るとC++/CLIになるのですね?
CLIを使用しないで、フォームを使用したアプリケーションを作成するには、どうしたら良いのでしょうか?

386:デフォルトの名無しさん
10/01/25 16:45:00
無理。フォームは.NET Frameworkの一部
ダイアログリソースということなら、外部のリソースエディタ使って組み込むのはできる。

387:デフォルトの名無しさん
10/01/25 16:59:28
>>385
std買ってMFC

388:385
10/01/25 17:04:27
ありがとうございます。
C++/CLIでは.NET用のライブラリしか使えず、C++用のライブラリを使用したいのですが、
どうやって作成していいのか混乱してしまって・・・。

ダイアログソースで作成する場合、どのようなリソースエディタを使用すれば良いのでしょうか?

389:デフォルトの名無しさん
10/01/25 17:30:51
>>384
自分もVS 2005のアカデミックで今試してみたけど、
#pragma region hoge ~ #pragma endregionは使えているよ。
何か間違えていない?

390:デフォルトの名無しさん
10/01/25 17:40:13
>>388
>>387がいいとは思うけど、リソースエディタでググれば2,3種類くらいに絞れると思うよ。
組み込むには、VC++EEに付属のrc.exeをビルドイベントとかで設定してやればいい

391:385
10/01/25 18:03:01
>>387
>>390
ありがとうございます。
MFCがどんな物か、VS2010βを使用してみたのですが、MFCで作成しようとするとなんかややこしそうですね。

リソースエディタはresEditを使用している人が多そうですね。
URLリンク(www.hor-net.org)
ここの説明わかりやすかったので、使ってみようと思います。
ありがとうございました。

392:384
10/01/25 18:03:01
// main.cpp
#include <windows.h>
int function(int n) {
return n * 2;
}
#pragma region hoge
int WINAPI wWinMain(HINSTANCE, HINSTANCE, LPWSTR, int) {
return func(0);
}
#pragma endregion

こういう単純なコードですら、働いてくれません。しかも、この場合だとwWinMainまで死にます。
このコードに間違いはありますか?

393:デフォルトの名無しさん
10/01/25 18:38:36
デバッガのウォッチウィンドウでstd::vecterなどを見ると、単純にクラスメンバが表示されるのではなく、配列の要素数などが一目で分かる形で書かれているのですが、あれはどういう方法を使っているのですが?

394:393
10/01/25 18:39:56
×vecter
○vector
恥ずかしい死にたい

395:393
10/01/25 20:04:15
×使っているのですが
○使っているのですか

もう俺死んだ方がいい

396:デフォルトの名無しさん
10/01/25 20:17:27
ちょっと訛っただけだろ?w
細けえことは気にすんな!

397:デフォルトの名無しさん
10/01/26 00:54:54
VC2008ExpressEdition .Net環境でFormにスクロールバーを出して使おうとしています。
HorizontalScroll->Valueの値をスクロールイベントでいじっても0に戻ってしまいます。
回避する方法はないものでしょうか?

Formにはその他のコントロールは一切無し、したがってAutoScrollはFalseです。
Show時にHorizontalScrollをVisibleにしてファイルをドロップした段階でEnableにします。

デバッグ用に値を観察しているのですが、スクロールイベント終了時には値は正常なようです。
しかし再度イベントが発生した時にValueが0からやり直し、といった具合です。

主な目的は画像の貼り付けと表示です。
よろしくお願いします。

398:デフォルトの名無しさん
10/01/26 09:51:24
やりかた間違ってんじゃないの

399:デフォルトの名無しさん
10/01/26 22:19:11
VS 2005 SDI MFC です
現在View に表示されているテキストが、ファイルから読みこんだものか、
それ以外(コピペまたは、キーボードからの入力)を識別するAPI や方法があれば教えてもらえないでしょうか。

400:デフォルトの名無しさん
10/01/28 04:53:40
ちょっと調べていて疑問に思ったんですが、
MSペイントのキャンバスサイズをアンカーポイント?でつかんでサイズを自由に変更できるようになっているんですが、
あの処理は一から自分で組まないといけないのでしょうか?
それとも設定するだけで簡単に組み込めるようなクラスなどがあるのでしょうか?

401:デフォルトの名無しさん
10/01/28 20:02:24
Visual C++を初めて使っている者です。
私はC++でなく、C言語でプログラミングをしたいのですが、
どのように操作すればソースをコードできるのでしょうか。

教えて下さい。お願いします。

402:デフォルトの名無しさん
10/01/28 20:07:37
>>401
.cっていう拡張子のファイルにソースを書いて開けばビルドできるんじゃなかった?

403:401
10/01/28 20:11:24
VC++のデバッガの機能を使用するから、VC++上にコードかけって言うんです。

404:デフォルトの名無しさん
10/01/28 20:52:34
ソリューションエクスプローラのプロパティ→C/C++→詳細→コンパイル言語の選択
でも指定できる。
プロジェクト全体でもファイル個別でも。

405:デフォルトの名無しさん
10/01/30 22:55:41
VC++のデバッガを使うこととVC++上でコードを書くことはイコールにならんがな
{devenv,vcexpress} /debugexe hoge.exeでいいわけで

406:デフォルトの名無しさん
10/01/31 13:35:27
独学でやってるなら入門書に書いてある通りにやればいいだけなんだが、
誰かに指示されてるならそいつに聞けよ。

407:デフォルトの名無しさん
10/02/02 10:43:09
test

408:デフォルトの名無しさん
10/02/09 00:39:19
スレ違いだったらすいません。

一週間くらい前からプログラミングに興味を持ち、C++2008をダウンロードして
やっているのですが、初めてのプログラミングはこのソフトからでいいのでしょうか?
ほかにもっとわかりやすいのがありました教えて欲しいのですが・・・

409:デフォルトの名無しさん
10/02/09 01:46:52
とりあえずそれでいいっていうか「何を作りたいか」目的がはっきりしてた方が良い
「そのために何が必要か」ってアプローチが結果的に早道になると思う

410:デフォルトの名無しさん
10/02/09 07:22:29
から、って言うけど別ので初めて後からVC++を使う気か?
どうせ使う気があるなら最初からVC++で慣れればいいじゃん

411:デフォルトの名無しさん
10/02/09 10:58:36
>>408
悪いことはイワン
C#にしとけ

412:デフォルトの名無しさん
10/02/09 19:08:19
>>408
いやC#はやめとけ
未来が暗い。
C++かC言語にしとけ。


413:デフォルトの名無しさん
10/02/09 19:43:45
>>409
>>410
>>411
>>412
返答ありがとうございます。

このままC++を使うことにしました。
411さん、自分にはあまりC#はあってないと思ったのでC++にします。
せっかく返答していただいたのに申し訳ありません。

皆さんありがとうございました。



414:デフォルトの名無しさん
10/02/09 19:52:47
でもよ、VC++2008を無料で落としても、
初心者がWinのプログラムを始めるには.Netしかないだろ?
そうするとCLIでやんなきゃならん。
だったらC#でいいんじゃないか?

415:デフォルトの名無しさん
10/02/09 19:56:33
まずはプログラミングというものに慣れてからC++やらないと
挫折するよ

416:412
10/02/09 20:27:48
C#はやめた方が良いだろう。

>>415の言うことは大抵は真実。
たまに才能があるヤツは別だけど、
いきなりやると嫌になるだけな気がするんだぜ。


417:デフォルトの名無しさん
10/02/10 16:38:16
C#は便利すぎて他に移るのが苦痛になるから
何かと併用するならいいけど、それから始めるのはまずいかもね。

418:デフォルトの名無しさん
10/02/10 18:54:35
> C#は便利すぎて他に移るのが苦痛になる
そうか?
C#よりP言語系のが便利だし、
就職できるかどうかの勝負なら便利言語以外も習得
するようになるだろう。

まああれだ、要するに
P言語(Python, Pascal, PHP)かC言語の
どっちか両極端からやるのがオススメ。


419:デフォルトの名無しさん
10/02/10 18:55:48
VS2005で
あるスタティックライブラリの一部を利用するスタティックライブラリを作成したいのですが
どのように設定すればいいでしょうか

420:デフォルトの名無しさん
10/02/10 19:25:08
>>418
Rubyをわすれないでください

421:デフォルトの名無しさん
10/02/10 22:24:23
逆に1個もライブラリ使わずに作る方がむずかしい

422:デフォルトの名無しさん
10/02/11 22:47:40
すみませんvc++2005を使っているのですが
スタティックライブラリのプロジェクトでcpp内でreplacement newが使えないのです
#include <new>も書いています.
どなたか解決法をご存じの方がいましたらよろしくお願いします

423:デフォルトの名無しさん
10/02/11 23:12:37
replacement new??

424:デフォルトの名無しさん
10/02/11 23:19:15
おっと re はいりません
すみません

425:デフォルトの名無しさん
10/02/11 23:24:42
使えないってどういう状態を指してるのかわからないけど、変なヘッダとか入れてるんじゃないか。
10行くらいのnewヘッダだけ使った最小コードでも使えないの?
VC++2005Academicだとこんなコードで動くけどさ。
URLリンク(codepad.org)

#include <new>
#include <iostream>
int main() {
const int ARRAYSIZE = 100;
int *parray = new int[ARRAYSIZE];
for (int i = 0; i < ARRAYSIZE; i++)
new (parray + i) int(i);
for (int i = 0; i < ARRAYSIZE; i++)
std::cout << parray[i] << std::endl;

delete [] parray;
return 0;
}

426:デフォルトの名無しさん
10/02/11 23:34:43
自分の環境でもそのコードで動きました
チェックしてみます.ありがとうございます.

427:デフォルトの名無しさん
10/02/11 23:40:58
ご指摘の通りメモリリーク検出用のライブラリを使用していました...
ありがとうございます

428:デフォルトの名無しさん
10/02/14 11:18:49
今でもTCHARって使ったほうがいいのでしょうか?
今さら9x対応にするメリットもないし、書き方が冗長になるし
無駄な努力のように思えてきました。
皆さんの見解はどうですか?

429:デフォルトの名無しさん
10/02/14 11:44:38
ライブラリとして提供するなら考慮してもいい
自分だけで完結するならいらんだろう

430:デフォルトの名無しさん
10/02/14 12:29:54
なるほど、やはりその程度のものなんですね。
よくわかりました、ありがとうございます。

431:デフォルトの名無しさん
10/02/15 03:26:16
VN.NET質問スレの方に誘導して戴きました。

Visual C++ .NET環境で下のようにIMEモードをNoControlにしているのですが、自作アプリケーションで
全角にした後に他のウィンドウにフォーカスを移して、また戻すと半角に戻ってしまっています。
ユーザーが設定した情報をフォーカスを変えても保持するようにするにはどうしたら良いのでしょうか?
よろしくお願いします。

this->ImeMode = System::Windows::Forms::ImeMode::NoControl;

432:431
10/02/15 03:27:39
>>431訂正
×VN
○VBの間違いです

433:デフォルトの名無しさん
10/02/15 10:53:36
>>431
あなたが使ってるのはC++ではなくC++/CLIという別の言語です。
C++/CLIには専用のスレもありますが、その手の質問はC++/CLIスレでも嫌われるので
C#かVB.NETの書き方を覚えてそっちで聞いた方がいいと思います。全く同じなので。

434:431
10/02/15 16:38:22
>>433
回答ありがとうございます。このスレの方が良いと誘導されたのですが、
VB.NETスレに戻って質問した方が良いと言う事でしょうか?

435:デフォルトの名無しさん
10/02/15 16:43:20
>>431
他のウィンドウのほうが悪さをしてる

436:デフォルトの名無しさん
10/02/15 17:30:58
悪さっつーか、他でIMEコントロールされたら返ってきたときに変わるわな

437:デフォルトの名無しさん
10/02/15 23:38:33
C++/CLIの罠はえげつないな

438:デフォルトの名無しさん
10/02/16 09:40:00
中途半端にWinFormsのデザイナなんか付けるから勘違いするんだよな
相互運用専用の言語なのでそんなものが必要になるようなら使い方が間違ってる

439:デフォルトの名無しさん
10/02/17 00:26:57
Win7 64bitでVC++2008EEを使ってるんですが、コード入力中に一瞬フリーズしたようになって1、2秒ですぐ入力を受け付けるようになるんですけど何ででしょうか
XP32bitを使っていたときも同じ症状があったんですけど、フリーズするタイミングがいつもバラバラでなにが原因なのかよくわからないんですけど・・・

440:デフォルトの名無しさん
10/02/17 00:44:17
>>439
オートセーブみたいな機能([ツール]→[オプション]→[環境]→[自動バックアップ])


441:デフォルトの名無しさん
10/02/17 01:25:07
>>440
レスありがとうございます。
保存のたびに一瞬止まってたんですね

442:デフォルトの名無しさん
10/02/17 14:59:22
VisualC++2008にて、iTunesCOMWindowsSDKを使ってプログラミングしようと思っていて、
そのためにはiTunes 1.1 Type Libraryを参照に追加しなければならないようなのですが、
この参照に追加する方法が分かりません。
どのようにすれば設定できるのでしょうか?

443:デフォルトの名無しさん
10/02/17 15:10:30
単にプロジェクトの参照に入れるだけで簡単に使えるのはC#かVBの話

444:デフォルトの名無しさん
10/02/17 15:19:33
C++/CLIならプロジェクト右クリックで参照...から
C++なら付属のhとc組み込む

445:442
10/02/17 15:30:05
C#での方法について解説したページを見てしまっていたようです。
どうもありがとうございました。

446:デフォルトの名無しさん
10/02/18 21:55:56
Visual C++ 2008 ExpressEditionを使っているのですが、挿入メニューが
どうしても見つかりません。
リソースを挿入したいのですが…。

447:デフォルトの名無しさん
10/02/18 22:22:40
エディションの制約によりリソースの編集は出来ないです
まあハック的手法を使えばリソース挿入できない事もないけどVCだけでは出来ない

448:デフォルトの名無しさん
10/02/19 13:32:15
>>446
rcを手書きか、 RcEdit使いなはれ

449:デフォルトの名無しさん
10/02/19 17:05:34
Visual C++ 2008 ExpressEditionでプログラムのデバッグをしていて、
途中でデバッグの停止をしたらコマンドプロンプトのウィンドウが残ったままになってしまいました。
このウィンドウを消したいのですが、×ボタンを押しても、右クリックで閉じるを選んでも消えてくれません。
どうすれば消すことが出来るのでしょうか。

450:デフォルトの名無しさん
10/02/19 17:10:05
タスクマネージャで抹殺する

451:デフォルトの名無しさん
10/02/19 17:19:26
タスクマネージャを見てもcmd.exeがありませんでした。

452:デフォルトの名無しさん
10/02/19 17:20:51
待つ

453:デフォルトの名無しさん
10/02/19 17:23:03
windowsって再起動したら大抵直るよね。

454:デフォルトの名無しさん
10/02/19 17:36:52
再起動しようとしたところ、このコマンドプロンプトのウィンドウだけが残って再起動できなかったので、
仕方なく電源ボタン長押しで強制的に切ってきました。


455:デフォルトの名無しさん
10/02/19 17:42:50
途中で送信してしまった・・・

パソコンを起動して、再びデバッグ中に停止したら同じ症状に陥りました。
再起動以外の方法で何とかウィンドウを消せないでしょうか。

456:デフォルトの名無しさん
10/02/19 17:48:58
>>447
>>448
手書きでリソース書くことにしました。
ありがとうございます。

457:デフォルトの名無しさん
10/02/19 19:38:10
>>455
うちはならない
VC++を再インストールしてみたら?

458:デフォルトの名無しさん
10/02/19 19:42:08
>>455
多分メニューからデバッグの停止
CTRL+Cで停止するとそうなったような

459:デフォルトの名無しさん
10/02/19 19:49:01
Ctrl + Alt + Break で終了出来る

460:デフォルトの名無しさん
10/02/19 22:11:10
Visual C++再インストールしてみます。
ありがとうございました。

461:デフォルトの名無しさん
10/02/19 23:22:44
デバッグ開始後すぐにVC++が強制終了してしまう場合は何が原因なんでしょうか?

462:デフォルトの名無しさん
10/02/19 23:33:15
>>461
そんな特殊な状況、他に発生するのか?w

463:デフォルトの名無しさん
10/02/20 03:23:25
vc++2008インストしたんだけど
ウィンドウにボタン配置したりする画面
あれどうやって出すの?

464:デフォルトの名無しさん
10/02/20 03:30:44
プロジェクト作成するときに、CLRのフォームアプリケーションを選択するとできると思うよ。

465:デフォルトの名無しさん
10/02/20 04:26:44
出来ますた
素早い回答ありがとうございます

466:デフォルトの名無しさん
10/02/20 11:17:58
初心者用のCの教科書(林さんのp.294)を読んで勉強してます。
分からないことがあるので、どうか教えて下さい。

main関数を、int main(int argc, char *argv[])
のように、引数対応型にして、
コマンドラインから引数を渡すのではなく、
VC++のGUI上で引数を渡してビルドできるようになりたいです。

よろしければ、どうすれば良いか教えて下さい。

ちなみに、コマンドプロンプトではソースファイルをコンパイルできるんですが
GUIでは、何故かコンパイルできません。

467:デフォルトの名無しさん
10/02/20 11:33:58
ソリューションのプロパティ→構成プロパティ→デバッグ→コマンド引数
で、デバッグ実行時のコマンドライン引数を与えることはできるけど。

468:デフォルトの名無しさん
10/02/20 17:04:32
そういうことはGUIでやると、かえって手間がかかると思うが

469:デフォルトの名無しさん
10/02/20 20:01:49
まったくゼロから始める初心者なんんですけど本屋に行ったらVisual C++とか
C++とか、いろんな本が売ってるんですけど、C++って書いてある本を買えば
まちがいないですか?

470:デフォルトの名無しさん
10/02/20 20:08:03
>>469
初心者向けとか、特定のコンパイラ向けとかあるから、目的にかなったのを
選択しないとだめ。

471:デフォルトの名無しさん
10/02/20 20:18:51
>>470
いろんなのが出ててまよってました。ありがとうございます。

472:デフォルトの名無しさん
10/02/20 21:20:21
>>469
間違いだらけです
初心者向けとか入門書とかはすぐ使えなくなるから買っちゃだめ

473:デフォルトの名無しさん
10/02/20 21:24:59
引数がめちゃくちゃ多くて
毎回入力するのが面倒なら
あらかじめ設定しとくのも
悪くはないと思うんだけど
普通はテストのために引数
変えながら試すはずだから
もしそういうことを自動で
やりたいなら敢えてテスト
用のプログラムを書いてね

474:デフォルトの名無しさん
10/02/20 21:47:36
>>473
どれのことなんだ。

475:デフォルトの名無しさん
10/02/20 21:59:40
>>466-468

476:デフォルトの名無しさん
10/02/20 22:55:43
enumって何て読むの?

477:デフォルトの名無しさん
10/02/20 23:00:59
C++スレでどうぞ。

478:デフォルトの名無しさん
10/02/20 23:04:50
>>477
enumはCにもあるだろ。

479:デフォルトの名無しさん
10/02/24 23:54:14
どこに書けばいいのか迷いましたが
一応visualC++のプロジェクトだったので質問します。

WMPの視覚エフェクトがつくりたくて
URLリンク(blogs.wankuma.com)
のサイトを見ながらVisual Studio2008でプロジェクトを作成するまでは
上手くいったのですが、ビルドの際に、

'midl.exe' の起動中にエラーが発生しました。

とのエラーがでてビルドできません。
midlのパスが間違ってるとかそういうことじゃないのかなぁと思うのですが、
調べてもよくわかりませんでした。
助けてください。

480:479
10/02/25 00:34:03
追記です。
ハードディスク内をmidl.exeで検索すると2種類でてきたので
VC\binにつっこんだらエラーが

error MIDL2398 : cannot execute MIDL engine

に変わりました。
これもmidlを起動できないとのメッセージですが英語になりました。


481:デフォルトの名無しさん
10/02/25 09:50:13
wankumaに行って作った本人に直接聞けよ

482:デフォルトの名無しさん
10/02/26 21:37:54
はじめまして。ソフトバンクの「基礎からのC」という本の通りにやってるのですが
下のようになって進めません。

Setting environment for using Microsoft Visual Studio 2008 x86 tools.

C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC>cd /D C:\c-lang\chapter03

C:\c-lang\chapter03>cl hello.c
Microsoft(R) 32-bit C/C++ Optimizing Compiler Version 15.00.30729.01 for 80x86
Copyright (C) Microsoft Corporation. All rights reserved.

hello.c
hello.c(1) : fatal error C1021: プリプロセッサ コマンド 'inclube' が無効です。

C:\c-lang\chapter03>


どうすればいいか教えてくれたらうれしいです。
visual studio 2008を使ってます。

483:デフォルトの名無しさん
10/02/26 21:40:48
いんくるーべじゃなくていんくるーどだよお

484:482
10/02/26 22:24:40
いや本当にinclubeってあったんですけど・・・?

485:デフォルトの名無しさん
10/02/26 22:26:48
>>484
includeでやってみろよ

486:デフォルトの名無しさん
10/02/26 22:29:14
>>484
スレリンク(tech板:772番)


487:482
10/02/26 22:29:30
すいませんホント始めたばっかりなのでそれもどうすればいいか・・・orz


488:デフォルトの名無しさん
10/02/26 22:31:20
inclube → include に書き換える

489:482
10/02/26 22:38:36
その場所はどうやってもなんにもできません
書き換えようとしてもけすことも書くことも無理です

490:デフォルトの名無しさん
10/02/26 22:40:30
hello.c を、inclube で検索して、include に書き換える

491:デフォルトの名無しさん
10/02/26 22:42:00
hello.cってソースファイルに
#inclube って書いてあんだろ?
それを書き換える

何にもできないのはなぜだ?

492:482
10/02/26 22:45:17
すいませんできました。みなさんありがとうございます。いらいらさせてごめんなさい。


最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch