[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 2chのread.cgiへ]
Update time : 08/02 03:19 / Filesize : 168 KB / Number-of Response : 617
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

くだすれVisual C++(超初心者用)その4



1 名前:デフォルトの名無しさん [2006/11/29(水) 17:00:54 ]
このスレッドは、他のスレッドでは書き込めない超低レベル、
もしくは質問者自身何が何だか分からない質問を勇気を持って書き込むスレッドです。
Visual C++使いが優しくコメントを返しますが、
お礼はVisual C++の布教と初心者の救済をお願いします。

■過去スレ
前スレ
pc8.2ch.net/test/read.cgi/tech/1150105712/
前々スレ
pc8.2ch.net/test/read.cgi/tech/1141087248/

■遠い親戚スレ
くだすれC++/CLI(初心者用)
pc8.2ch.net/test/read.cgi/tech/1142144110/l50

■関連ページ
Visual C++ Home Page
www.microsoft.com/japan/msdn/visualc/



41 名前:デフォルトの名無しさん [2006/12/30(土) 22:41:53 ]
VC++6.0でプログラムを始めたものです

プログラムの設定をiniファイルで管理しようと思っているんですが
iniに0xを記述しなくても16進数のデータを読み込む方法は無いでしょうか?
現在は数値読み込みを使って
test=0xFFFFFF
のようにして読み込んでいるのですが、他のプログラムのiniで
test=FFFFFF
の形で読み込んでいるものがあり、方法を調べたんですが見つからなかったので質問しました

ご存知の方、是非教えてください。お願いします。

42 名前:デフォルトの名無しさん mailto:sage [2006/12/30(土) 22:47:00 ]
>>41
GetPrivateProfileString()して、strtol()かstrtoul()でもできる。

43 名前:デフォルトの名無しさん mailto:sage [2006/12/30(土) 22:48:02 ]
>>41
またお前か
おなじこと何回も聞くな

44 名前:41 [2006/12/30(土) 22:50:45 ]
>>42
レス有難う御座います
その方法でやってみます


45 名前:41 [2006/12/30(土) 22:55:15 ]
>>43
このスレで発言したのは初めてだったんですが、過去に同じ質問をした方がいたようで申し訳ないです。
最低限過去ログは読むべきでした。
今後は過去ログを読んだ上で質問させていただきたいと思います。
連レスすみませんでした


46 名前:デフォルトの名無しさん mailto:sage [2006/12/30(土) 22:55:20 ]
pc10.2ch.net/test/read.cgi/tech/1166172047/216

47 名前:39 [2006/12/30(土) 23:06:51 ]
>>40
デバッグ中に、"逆アセンブル"ウインドウを表示する事は出来るのですが、
混合モードについてはは影も形もありません。
何か特別な設定が必要なのでしょうか


48 名前:デフォルトの名無しさん mailto:sage [2007/01/02(火) 17:44:27 ]
>>47
ブレーク中にも表示されないの?

49 名前:デフォルトの名無しさん mailto:sage [2007/01/03(水) 13:13:10 ]
debugモードでビルドしたか



50 名前:デフォルトの名無しさん [2007/01/05(金) 14:54:42 ]
VC++ 2005で以下のDLL作成を考えています。
1.C言語で作成されたDLL関数を読み込む
2.関数を別名称にしDLL化する。
3.vb.netで作成したDLLを使用する。

1、2を実現するため以下のソースを記載したのですが
構文的におかしくないでしょうか?



51 名前:50 [2007/01/05(金) 14:55:19 ]
#include "stdafx.h"
#include <stdio.h>
#include "api.h"
#ifdef _MANAGED
#pragma managed(push, off)
#endif

BOOL APIENTRY DllMain( HMODULE hModule,
DWORD ul_reason_for_call,
LPVOID lpReserved
)
{
return TRUE;
}
#pragma comment(lib,"api.lib")
extern "C" __declspec(dllimport)
BOOL __stdcall APIOPEN(LPTSTR lpHostName ,LPTSTR lpNetmserviceName);
__declspec(dllexport) BOOL CAPIOPEN(LPTSTR host,LPTSTR netmservice)
{
BOOL r = APIOPEN(host,netmservice);
return r;
}
#ifdef _MANAGED
#pragma managed(pop)
#endif


52 名前:デフォルトの名無しさん mailto:sage [2007/01/05(金) 15:11:50 ]
構文チェックはコンパイラの仕事

53 名前:50 [2007/01/05(金) 16:03:49 ]
>52 失礼しました。
ビルドを実行するとCVTRES の致命的なエラー CVT1100
が発生しました。
MSDNで検索すると/TLBID オプションを変更するとなっているのですが
変更しても同様のエラーが発生します。

54 名前:デフォルトの名無しさん mailto:sage [2007/01/06(土) 02:19:52 ]
プロパティにカテゴリをつけたい場合
IDLファイルにどう書けばいいの?

55 名前:デフォルトの名無しさん mailto:sage [2007/01/06(土) 02:42:40 ]
ICategorizePropertiesを自力実装

56 名前:デフォルトの名無しさん [2007/01/10(水) 11:27:08 ]
Win32APIをいぢってプログラムを作ってるんですが、
エディットボックスで日本語入力がうまく行えません。
ウィンドウプロシージャでWM_CREATEのメッセージ処理に、
//ctrls.chatBar⇒HWND
//cs⇒LPCREATESTRUCT
ctrls.chatBar = CreateWindow(TEXT("EDIT"),TEXT(""),
    WS_CHILD | WS_VISIBLE,
    0,425,531,20,
    hWnd,
    (HMENU)CHAT_BAR,
    cs->hInstance,
    NULL
    );
と書いてエディットボックスを貼り付けてます。
日本語を入力する際、何か他に書かないことはあるのでしょうか

57 名前:デフォルトの名無しさん mailto:sage [2007/01/10(水) 11:34:53 ]
フォント

58 名前:デフォルトの名無しさん [2007/01/10(水) 12:02:26 ]
HFONT hFont;
hFont = CreateFont(20, 0, 0, 0,
FW_NORMAL, FALSE, FALSE, 0,
SHIFTJIS_CHARSET,
OUT_DEFAULT_PRECIS,
CLIP_DEFAULT_PRECIS,
DEFAULT_QUALITY, DEFAULT_PITCH, "MS Pゴシック");
SendMessage(ctrls.chatBar, WM_SETFONT, (WPARAM)hFont1, MAKELPARAM(FALSE, 0));
で、フォントを変えてみましたが何もかわりませんでした

59 名前:デフォルトの名無しさん [2007/01/10(水) 15:14:12 ]
A,B,Cと3つのボタンを配置し、Aのclick処理を行っている最中にBとCのボタンを先行してclickすると、
Aの処理が終了後B->Cと処理が続きますが、
このBとCの先行入力分のclickイベントを破棄して、無かった事にする方法ってありますか?
B,Cがclickされていても、Aの処理終了後は何もしない仕組みが作りたいのですが...

VS.NET 2003



60 名前:デフォルトの名無しさん [2007/01/10(水) 15:21:55 BE:15528724-2BP(202)]
Aの処理のアタマでBとCをdisable。

61 名前:名無しさん mailto:sage [2007/01/11(木) 18:56:37 ]
終了した後にもう一度繰り返し動作させたいのですが、
exit(0);のように簡単に終了させつつ、
繰り返し最初からやり直すコマンドみたいなものはないんでしょうか?

初心者のまま卒業した先輩のプログラムをいじることになったのですが、
クラスやヘッダなど分からないままやらされてます。
どうもバグがあるらしく、先輩のプログラムは終了しないプログラムでした。
(本当は作業が終わったら終了しなくてはならないプログラムです)
return;を使ってもどこに返して居るか分かりません。

main文に無理やり戻して次の関数を続行などできたらベストなのですが・・・

62 名前:デフォルトの名無しさん mailto:sage [2007/01/11(木) 19:39:16 ]
無理やり戻したところで、続きを正常に実行できる保障がどこにある。

63 名前:デフォルトの名無しさん mailto:sage [2007/01/11(木) 19:56:59 BE:19410825-2BP(202)]
>>61
>main文に無理やり戻して次の関数を続行などできたらベストなのですが・・・

それは別のバグを仕込むだけの愚行。
まず規定の処理で正しく終了するようにしれ。

64 名前:デフォルトの名無しさん [2007/01/17(水) 14:29:56 ]
助けてください
Visual C++ 2005 Express Editionを昨日インストールした本当の超初心者なのですが
インストールはしっかりできたのですが、新しいプロジェクトを開いても、何の反応
もしない新しいプロジェクトとかかれたものしか出てきません。どうしたらよろしいですか?
教えてください、お願いします

65 名前:デフォルトの名無しさん [2007/01/17(水) 16:20:02 ]
MAME32をジョイスティックで動かすことをしたいのですが
keybd_eventをつかっても動きません
メモ帳で試してみたら、動きました

何か他の方法があるのでしょうか


66 名前:名無しさん mailto:sage [2007/01/17(水) 16:24:50 ]
>>62
続きはありません。
メインじゃないプログラムで「この文章を読み込んだら終了」
ってことになってるんですが、終了させる方法が分かりません。
プログラムが少しできる人に付き添って貰ってreturn;ってのを付けて行ったんですが
だめでした。
>>63
初期化の関数が別にあります。
return;を付けていってもダメなのでmain文に何とか戻す方法は無いか困ってます



67 名前:デフォルトの名無しさん mailto:sage [2007/01/17(水) 18:07:07 ]
>>66
Cを知らないのにソースをいじろうってのが根本的に間違ってます。

68 名前:デフォルトの名無しさん mailto:sage [2007/01/17(水) 18:25:00 ]
>>66
ソースうpすれば訂正してあげるよ

69 名前:デフォルトの名無しさん mailto:sage [2007/01/17(水) 18:58:39 ]
まあ試しにsetjmp/longjmpを試すのも面白いかもw



70 名前:デフォルトの名無しさん mailto:sage [2007/01/17(水) 19:01:45 ]
>>64
意味がわからん、新規作成じゃだめなのか

71 名前:名無しさん mailto:sage [2007/01/17(水) 19:01:58 ]
>>67
Cは約半年程授業で習ったのですが、C++は初めて触るような感じです
素人に毛が生えた程度なので超初心者用とタイトルのあるここに書き込みしました
>>68
このプログラム自体は卒業した先輩の卒論ですので、
アップロードのような行為はできないです
サイズとしても26.2Mあります。

このプログラムを使って工場のようなものを擬似的に再現して実験するのですが
実験後、待ち状態のまま終了しないことが分かり弄らされてます。

72 名前:デフォルトの名無しさん [2007/01/17(水) 19:09:16 ]
#include <iostream>
using namespace std;

int main(void)
{
unsigned char x,y;

cout << "2つの値を入力してください。\n";

cin >> x >> y;

x -= '0';
y -= '0';

int a = x + y;
int b = x * y;

printf("x = %d, y = %d, x + y = %d, x * y = %d",x,y,a,b);

return 0;
}

これで出力したら10以上の数値が出ないんですが、
どうしたら出るようになるか教えてください。

73 名前:デフォルトの名無しさん [2007/01/17(水) 19:26:55 ]
>>70様 新規作成したあと新しいプロジェクトとでて、どのボタン押してもフーリズ
したままです

74 名前:デフォルトの名無しさん [2007/01/17(水) 20:11:04 ]
Visual Studio 2005でC++のMFCでダイアログベースのアプリを作っているのですが、
C○○DlgクラスのメソッドでgetParent()を使うとNULLが返ってきます。
getWindow(GW_OWNER)も試しましたがNULLが返ってきました。
どんな原因が考えられますか?

やりたい事はCProgressCtrl::Create()なのですが、これの引数に親ウィンドウのポインタが必要になります。
アプリ内で子ウィンドウを立ち上げる事はしていないのですが、
この場合親ウィンドウが無いのでそのせいでしょうか?

75 名前:デフォルトの名無しさん mailto:sage [2007/01/17(水) 21:03:36 ]
>>74
そりゃCreateしないとウィンドウは存在しないべ

76 名前:デフォルトの名無しさん mailto:sage [2007/01/17(水) 21:08:25 ]
>>73
新しいプロジェクトってどこにでるの?
通常は、ファイル-新規作成-プロジェクトでWin32を選べば
Win32コンソールアプリケーションが出ると思うけど。

77 名前:73 [2007/01/17(水) 21:31:09 ]
>>76様 ありがとうございます
Win32っていう選択肢もでてこないんです。ファイルに新規作成という言葉がなくて
類似する言葉は新しいプロジェクトぐらいしかありません。その新しいプロジェクト
のなかにはテンプレート、プロジェクトという項目があります。

お手数おかけしますが、どうぞおねがいします



78 名前:デフォルトの名無しさん mailto:sage [2007/01/17(水) 21:31:22 ]
>>74
親ってCProgressCtrlの親だから、DlgからCreateするならthisポインタでOK

79 名前:74 mailto:sage [2007/01/17(水) 21:32:29 ]
>>78
thisポインタも試したのですが、
ビルドは通ってもランタイムに不正落ちします。

どんな原因が考えられるでしょうか?



80 名前:デフォルトの名無しさん mailto:sage [2007/01/17(水) 21:33:47 ]
コード見ないと分からない。

81 名前:デフォルトの名無しさん mailto:sage [2007/01/17(水) 21:34:15 ]
>>79
どこでCreateしてるのだ
ダイアログのOnCreate以降じゃないとだめだぜ?

82 名前:デフォルトの名無しさん mailto:sage [2007/01/17(水) 21:36:51 ]
>>77
デフォルトのテンプレートがインストールできてないのかな?
インストールしなおしてみては

83 名前:デフォルトの名無しさん mailto:sage [2007/01/17(水) 21:41:53 ]
Express EditionってなんかファイルをいじらないとWin32のプロジェクトが出てこないとか言うことはなかったっけ?

84 名前:73 [2007/01/17(水) 21:46:21 ]
>>82様 ありがとうございます。やってみます。


85 名前:デフォルトの名無しさん mailto:sage [2007/01/17(水) 22:51:09 ]
久々にVC++インスコしてみたら書式が変わってるんですがこれはいったい何事ですか?
なんかすべての処理がヘッダファイルに書かれていてcppの方はヘッタファイルのインクルードしかないんですけど・・・
マネージコード、アンマネージコードとかいうヤツのせい?
それとも.NETとかいうヤツから変わったの?

86 名前:デフォルトの名無しさん mailto:sage [2007/01/17(水) 23:01:09 ]
>>83
MSのサイトにそういうのあったようなきがす。
PlatformSDKあたりに。

87 名前:デフォルトの名無しさん mailto:sage [2007/01/17(水) 23:21:53 ]
>>85
ウィザードの種類によっては、cppファイルの生成とかいうオプションがあったと思うよ。

88 名前:デフォルトの名無しさん mailto:sage [2007/01/18(木) 02:54:45 ]
>>87
だから、それで生成したcppファイルが・・

89 名前:デフォルトの名無しさん mailto:sage [2007/01/18(木) 03:08:11 ]
よーわからん、クラスのプロパティ出してメッセージ選ぶとハンドラが作成される。

ってそういう話でまくて?



90 名前:デフォルトの名無しさん mailto:sage [2007/01/18(木) 06:36:05 ]
どーせVC++がVC#っぽくなってるってことだろう

91 名前:73 [2007/01/18(木) 17:11:06 ]
たびたびすいません、>>82様のいうとおりやったのですが、document and settingなどと書かれたものが 有効な
win32アプリケーションではありませんとでました。
どうしたらよろしいですか?市販のVisual C++ 2005 Express Editionを買えば
できるでしょうか?

92 名前:デフォルトの名無しさん mailto:sage [2007/01/18(木) 19:39:13 ]
>>91
ログ読まずにいきなり回答してみる
こういうことで合ってる?
ttp://www.microsoft.com/japan/msdn/vstudio/express/visualc/usingpsdk/

93 名前:73 [2007/01/19(金) 12:57:22 ]
>>92様どんレスですいません、ありがとうございます
やってみます

94 名前:デフォルトの名無しさん mailto:sage [2007/01/19(金) 15:02:17 ]
エディットボックスに入力した日本語を、ボタンを押すとtestという
関数に取り込みたいのですが下のようにしてみたんですがうまくいきません。
どのように変更すれば取り込めるのか教えていただけないでしょうか?
よろしくお願いします。

char ss;
m_edit.GetWindowText(ss);

void test(char *ss)
{
while(*ss != '\0'){
・・・・処理・・・
ss++;
}
}

95 名前:デフォルトの名無しさん mailto:sage [2007/01/19(金) 15:21:15 ]
何がどううまくいかないのか説明しろ。話はそれからだ。

96 名前:デフォルトの名無しさん mailto:sage [2007/01/19(金) 15:45:46 BE:23292162-2BP(222)]
>char ss;
>m_edit.GetWindowText(ss);

コンパイル通らん。

97 名前:94 mailto:sage [2007/01/19(金) 16:38:11 ]
すいませんchar ss;じゃなくて、CString ss;でした。
エディットボックスにコントロール変数m_editをつくって、
ssに取り込んで、そのデータをtestにとりこんで処理をしたいと考えています。
*ssでよめるようにするには、エディットボックスからどのようにとればいいの
かわかりません。よろしくお願いします。

98 名前:デフォルトの名無しさん mailto:sage [2007/01/19(金) 17:59:42 ]
void test(LPCTSTR ss)で受け取る

99 名前:デフォルトの名無しさん [2007/01/20(土) 16:26:02 ]
MFCのダイアログベースのプログラムからスレッドを生成した場合、
生成した子スレッドに対してダイアログの方は親スレッドと考えて良いのでしょうか?
つまりスレッドの識別子などがあるのでしょうか?



100 名前:デフォルトの名無しさん mailto:sage [2007/01/20(土) 19:58:56 ]
スレッド間に親子関係は無い。
ライブラリの初期化・終了処理を考慮しなければ、全て同等。
スレッドの識別子は両方にある。

101 名前:デフォルトの名無しさん [2007/01/20(土) 21:38:38 ]
ifの条件が増えたとき、下のどちらの記載が望ましいのでしょうか?

if ( (条件1)&&(条件2)&&(条件3)&&(条件4)&&(条件5)&&(条件6) ){
 ;
}

if ( (条件1)&&(条件2) ){
 if ( (条件3)&&(条件4) ){
  if ( (条件5)&&(条件6) ){
   ;
  }
 }
}

102 名前:デフォルトの名無しさん mailto:sage [2007/01/20(土) 21:45:22 ]
>>101
スレ違い

103 名前:デフォルトの名無しさん mailto:sage [2007/01/20(土) 21:51:11 ]
>>101
関数化しろ

104 名前:デフォルトの名無しさん mailto:sage [2007/01/20(土) 23:24:15 ]
>>101
どっちでもいいけど自分なら前者で書くかな。
条件部分が長すぎて画面からはみ出るなら適度に改行したり。
if((条件1)&&(条件2)&&
(条件3)&&(条件4)&&
(条件5)&&(条件6)){
;
}

105 名前:デフォルトの名無しさん mailto:sage [2007/01/21(日) 17:55:25 ]
>>100
返信ありがとうございます。

では、生成されたスレッドからダイアログの方へメッセージを投げたい場合は
どうすればいいのでしょうか?
スレッドを生成する際に引数としてダイアログのスレッドIDを渡す、など必要になるのでしょうか?

106 名前:デフォルトの名無しさん mailto:sage [2007/01/21(日) 19:48:13 ]
ダイアログなんだからウィンドウハンドルでも渡しておけばいいのでは?

107 名前:101 mailto:sage [2007/01/21(日) 20:41:18 ]
>>103-104
トンクス
ifを分割すれば余分な条件を弾けて得かなって思ったので質問しました。
クラス内で関数化するのが一般的かもしれませんが、
if() の括弧の中を全て#defineに入れてみようと思います。



108 名前:デフォルトの名無しさん mailto:sage [2007/01/21(日) 21:25:49 ]
スレ違い

109 名前:デフォルトの名無しさん mailto:sage [2007/01/21(日) 23:24:17 ]
実行ファイルにjpgなどを格納することはできますか?
使用しているのはVC++.net2003です。



110 名前:デフォルトの名無しさん mailto:sage [2007/01/21(日) 23:34:54 ]
>>107
>103

111 名前:デフォルトの名無しさん mailto:sage [2007/01/21(日) 23:36:46 ]
>>109
できます。この板のどこかのスレでそんな話題を見かけました。

112 名前:デフォルトの名無しさん mailto:sage [2007/01/22(月) 17:36:56 ]
fgets や std::getline を使わずにテキストファイルからデータを一行ずつ読み込みたいのですが、
ReadFile で改行文字か EOF が来るまで1バイトずつ読み込んでバッファに取り込むという方法しか
思いつきません。もっといい方法ってありますか?
ReadFile でファイルを全部読み込んでから、一行毎に分解するという方法は出来れば避けたいです。

扱いたいのは200万行以上あるファイルです。
いまだにVC6

113 名前:デフォルトの名無しさん mailto:sage [2007/01/22(月) 17:54:39 ]
>もっといい方法ってありますか?

あなたにとって、どういうものが良いものなのか説明してください。

114 名前:デフォルトの名無しさん mailto:sage [2007/01/22(月) 18:11:46 ]
>>112
素直にfgets()やstd::getline()を使うことにするのが、「もっといい方法」だと思います。

115 名前:デフォルトの名無しさん mailto:sage [2007/01/22(月) 18:34:12 ]
ならメモリマップトファイルはどうだ。

116 名前:112 mailto:sage [2007/01/22(月) 19:16:40 ]
回答ありがとうございます。

>>113-114
std::getline() でやってたのですが、処理に時間が掛かるのでどうにかならないかなと思いました。
根拠はありませんが、 API で同様の機能が提供されていればもっと効率よく出来そうだとも思ったのですが
どうやら無さそうですね。
素直に std::getline() のままで処理内容を見直すことにします。

>>115
CreateFileMapping() とMapViewOfFile() でファイルをメモリ空間にマップできるんですね。
これはこれで面白そうなので別件で試してみようと思います。

117 名前:デフォルトの名無しさん mailto:sage [2007/01/22(月) 19:41:58 ]
全部読む必要があれば結局同じことだけどな

118 名前:名無しさん(66) mailto:sage [2007/01/22(月) 21:27:44 ]
待ち状態のまま終わらないプログラムの
int nRet = WaitForMultipleObjects(NUM_OF_THREADS, hThread, TRUE, INFINITE);

このWaitForMultipleObjectsを終了させるか、
INFINITEYのまま何かを読み込んだらタイムアウト、
のような動作はできるものなのでしょうか?

>>69さんのsetjmp/longjmpを使ってみたのですが、
WaitForMultipleObjectsの後ろにジャンプすると、何故か
ジャンプした後にプログラムが勝手に終了してしまいます。

119 名前:デフォルトの名無しさん mailto:sage [2007/01/22(月) 21:38:05 ]
WaitForMultipleObjectsExとQueueUserAPCという手がなくはないが、
なんかお前がいきあたりばったりで使いそうで嫌だ。



120 名前:デフォルトの名無しさん mailto:sage [2007/01/22(月) 21:52:50 ]
>>118
スレッドのいずれかが終了すればWaitFor....から制御が返る。
戻り値から終了したスレッドを特定できるので、それ以外のスレッドを終了させればOK。

66でreturnしても駄目だったと書いてるけど、何が駄目だったのか不明。

121 名前:デフォルトの名無しさん mailto:sage [2007/01/22(月) 21:55:27 ]
あ、第3パラメタTRUEか。120じゃだめです。


122 名前:デフォルトの名無しさん mailto:sage [2007/01/22(月) 21:57:12 ]
FALSEにして120すれば良い気もする

123 名前:デフォルトの名無しさん mailto:sage [2007/01/23(火) 00:25:46 ]
でも結局>>67なんだよな……。

124 名前:デフォルトの名無しさん [2007/01/23(火) 01:05:12 ]
Visual C++ 2005 Expressエディションでまずは Hello Worldからと思い
新規プロジェクトでCLRコンソールアプリケーションを選びました。
そうしたら、もうビルドするだけになってるんですね。
まぁこれはいいんですが、このときこんな感じで自動生成されたんですが、

--
#include "stdafx.h"

using namespace System;

int main(array<System::String ^> ^args)
{
  Console::WriteLine(L"Hello World");
  return 0;
}
--
ここで
int main(array<System::String ^> ^args)
の部分の意味がさっぱりわかりません。
多分引数を受け取る?配列?な気がしますが、良く分かりません。

C言語でやったように
int main( int argc , char *argv[] )
パラメタを処理できることが出来るのは判ったのですが、やっぱり
int main(array<System::String ^> ^args)
の意味と具体的なパラメタの処理方法が知りたいです。

よろしくお願いします。

125 名前:デフォルトの名無しさん mailto:sage [2007/01/23(火) 01:28:37 ]
>>124
くだすれC++/CLI(初心者用)
pc10.2ch.net/test/read.cgi/tech/1142144110/l50

普通のがよければWin32コンソールアプリを選べ

126 名前:デフォルトの名無しさん [2007/01/23(火) 01:37:22 ]
>>125
Visual Studio にインストールされたテンプレートってのが表示されて
その中に Win32コンソールアプリってのはありません
あるのは
クラスライブラリ    CLRコンソールアプリケーション
空のCLRプロジェクト Windowsフォームアプリケーション

の4つだけです。

それと知りたいのは、
int main(array<System::String ^> ^args)
の意味するところです。

できれば解説願えませんでしょうか?

あっ、くだすれC++/CLI(初心者用)で聞くべき質問ってことですか?
すみません、良く分かってなくて。

127 名前:デフォルトの名無しさん mailto:sage [2007/01/23(火) 01:47:31 ]
MSDN読めよ、糞が。

とか言いたくなっちゃうから、きちんとマニュアルは読もうな。
C++/CLIで探せばすぐ判るから。

128 名前:デフォルトの名無しさん mailto:sage [2007/01/23(火) 09:13:59 ]
MSは初心者にはC#やVBを推奨してるから
VCは使いにくい面があるかもしれない。
特に目的が決まってないならC#やVBをお勧めする。

129 名前:デフォルトの名無しさん mailto:sage [2007/01/23(火) 09:33:31 ]
PlatformSDK入れてMSDNの該当ページ(>>92)に従え



130 名前:デフォルトの名無しさん mailto:sage [2007/01/23(火) 21:23:48 ]
>>126
そりゃ左でCLRを選んでるからだろ
Win32選んでみな

131 名前:デフォルトの名無しさん mailto:sage [2007/01/24(水) 15:29:36 ]
Visual C++だとstring型のハンドルがありますが、
C++のstringは使えないでしょうか?
Visual C++はC++の拡張と聞きましたが、C++が分かっていても、
Visual C++はほとんど一から型とかライブラリの使い方を勉強する必要が
あるのでしょうか?


132 名前:デフォルトの名無しさん mailto:sage [2007/01/24(水) 22:08:59 ]
使いたければ使えばいい。

133 名前:デフォルトの名無しさん mailto:sage [2007/01/24(水) 23:02:30 ]
組み込み型じゃないからな

134 名前:デフォルトの名無しさん mailto:sage [2007/01/25(木) 02:00:37 ]
VC++.NET2002で質問です。
MFCアプリケーション上でダイアログボックスを作って、
DoModal()でモーダルダイアログボックスを表示してます。
ところが、そのダイアログボックスのOnInitDialog()内で
メッセージボックスAfxMessageBox( "HogeHoge");を表示すると
OKで閉じた後、なぜかモードレスダイアログになってしまいます。
(ダイアログ表示中でも親ウィンドウが操作できてしまう。)
これってこういう仕様なのでしょうか?


135 名前:質問者A mailto:sage [2007/01/25(木) 09:21:22 ]
Visual Studio C++ Express Edition使っています。
初めてwindowsプログラムします。
猫でもわかるプログラミングのWindowsSDK編第1部の
イントロダクションのsample01.cppをビルドしたんですが、
エラーが出てしまいます。

★プロジェクトの作成方法
[ファイル]-[新規作成]-[プロジェクト]
[新しいプロジェクト]ダイアログで
[プロジェクトの種類]→Win32
[テンプレート]→Win32コンソールアプリケーション
と選択して、
プロジェクト名(lesson)を入力して
[OK]をクリック。

[Win32アプリケーションウィザード]
で、
[アプリケーションの種類]→Windowsアプリケーションにチェック
[追加オプション]
で、
[空のプロジェクト]→チェックせず(デフォルト)
[プリコンパイル済みヘッダー]→チェック(デフォルト)
で、[完了]ボタンを押しました。

136 名前:質問者A mailto:sage [2007/01/25(木) 09:21:54 ]
あらかじめ用意された↓をビルドすると正常終了します。

//lesson.cpp
#include "stdafx.h"


int _tmain(int argc, _TCHAR* argv[])
{
return 0;
}

137 名前:質問者A mailto:sage [2007/01/25(木) 09:22:33 ]
★プログラムの変更

これを猫でもわかるに変えたいんですけど、
関数名が@とAで違うので、
Aの関数名だけ@の名前(_tmain)に変えて
実行しました。

@↑
int _tmain(int argc, _TCHAR* argv[])

A猫でもわかるのサンプル
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPreInst,
LPSTR lpszCmdLine, int nCmdShow)





138 名前:質問者A mailto:sage [2007/01/25(木) 09:24:23 ]
すると、↓のようなエラーが出てしまいました。

★エラー内容
lesson.cpp
d:\lesson\lesson\lesson.cpp(24) : error C2440: '=' : 'HGDIOBJ' から 'HBRUSH' に変換できません。
'void*' から非 'void' 型への変換には明示的なキャストが必要です。
d:\lesson\lesson\lesson.cpp(26) : error C2440: '=' : 'char [25]' から 'LPCWSTR' に変換できません。
指示された型は関連がありません。変換には reinterpret_cast、C スタイル キャストまたは関数スタイルのキャストが必要です。
d:\lesson\lesson\lesson.cpp(40) : error C2664: 'CreateWindowExW' : 2 番目の引数を 'char [25]' から 'LPCWSTR' に変換できません。(新しい機能 ; ヘルプを参照)
指示された型は関連がありません。変換には reinterpret_cast、C スタイル キャストまたは関数スタイルのキャストが必要です。
d:\lesson\lesson\lesson.cpp(47) : warning C4244: 'return' : 'WPARAM' から 'int' への変換です。データが失われる可能性があります。
ビルドログは "file://d:\lesson\lesson\Debug\BuildLog.htm" に保存されました。
lesson - エラー 3、警告 1
========== ビルド: 0 正常終了、1 失敗、0 更新、0 スキップ ==========

プロジェクトの作成の仕方が悪いのでしょうか?
教えてください。

139 名前:質問者A mailto:sage [2007/01/25(木) 09:27:11 ]
変更後のプログラムです。(長いので分割して書きます。すみません)
#include "stdafx.h"
#include <windows.h>

LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
char szClassNme[] = "ウィンドウクラス・ネーム";





140 名前:デフォルトの名無しさん mailto:sage [2007/01/25(木) 09:51:35 ]
www.kumei.ne.jp/c_lang/

ここの2005と書いてある部分を参照

141 名前:質問者A: mailto:sage [2007/01/25(木) 10:09:30 ]
(「連続投稿です」と言われて書き込みが途中で止まっていました)

>>140
ありがとうございます。気付きませんでした。
[VS2005の設定方法]見ました。
>次に、Win32APIを利用したWindowsアプリケーションの設定です。
>「新しいプロジェクト」では、プロジェクトの種類を「Visual C++」、テンプレートを「Win32 プロジェクト」にします。
私の環境だと「Win32 プロジェクト」がありません。
「Win32コンソールアプリケーション 」のみです。
(これってVC++2005のExpressだと無理ということでしょうか?)
とりあえず「Win32コンソールアプリケーション 」として
残りはサイトに書かれている通り、
「アプリケーションウィザード」で、
アプリケーションの種類を「Windowsアプリケーション」
追加のオプションを「空のプロジェクト」
にしました。
しかし、>>138 と同じエラーがでてしまいました。







[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<168KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef