★初心者にVisual C++ ..
[2ch|▼Menu]
899:デフォルトの名無しさん
09/02/14 20:18:20
>>897
str1[i] == L'あ'でできると思う。

900:デフォルトの名無しさん
09/02/14 20:29:48
>>899
なるほど!!おかげさまで無事できました、ありがとうございます。

901:デフォルトの名無しさん
09/02/15 09:21:53
Source Filesの下に、Main.cppというソースがあって、そこから
Source Filesの隣にあるResource Filesというフォルダの下のHoge.txtファイルを
オープンしたいのですが、
FileOpenFunc(_T("..\\Resource Files\\Hoge.txt"));
と書いてもファイルが見つかりません。どう書けばよいですか?


902:デフォルトの名無しさん
09/02/15 11:52:48
実行時のフォルダからのパスを書かなきゃだめだから

903:デフォルトの名無しさん
09/02/15 11:58:07
カレントディレクトリからのパスじゃねぇっけ?
たしかファイルダイアログを呼び出すたびにホイホイかわってすっげーぷっつんくる仕様だった希ガス
アクセスするときには必ずフルパス直してアクセスしないとつながんねーとかアリガチ?

904:デフォルトの名無しさん
09/02/15 12:07:19
まあ、そういう作りだったらexeのパスを取得してフルパスにした方が確実だな

905:デフォルトの名無しさん
09/02/15 12:31:12
GetModuleFileとかそんな感じの、実行ファイル名をフルパスでゲット出来る関数があったはずだから、
それとShlwApiとかそれっぽい名前の関数群を使えばいいかもしれない気がしないでもない。

906:デフォルトの名無しさん
09/02/15 19:58:59
RegisterClassってなにをやってるんですか?
CreateWindowとRegisterClassって1個にまとめちゃえばいいような気がする。


907:デフォルトの名無しさん
09/02/15 20:04:11
>>906
なんかはじめのメインウィンドウ作るときぐらいしか使わない記憶あるけど
俺のきのせい?

908:デフォルトの名無しさん
09/02/15 20:19:56
RegisterClassは、Windowsに、「こういうスタイルを登録するよ。名前はUSERね」ってやってるだけ。
次に、CreateWindowで、「こういうウインドウ作ります。スタイルはUSERです」ってWindowsに通知する。
CreateWindowで、STATIC とか、EDIT って指定するだろ?アレは、そういうスタイルがWindowsが持ってるわけだ。
RegisterClassで指定してるのは、これから使う、ユーザ独自のスタイル。
んなもんWindowsのしったこっちゃないから、あらかじめ登録しちゃうわけ。
CreateWindowで、RegisterClassで登録した名前を指定するのはそういうわけ。登録して、使う。


909:デフォルトの名無しさん
09/02/15 21:12:57
ようするに1つのクラスをテンプレートにして、いくつものウィンドウを作れる。
だから別々に分かれている。

910:デフォルトの名無しさん
09/02/16 01:53:46
RegisterClassはウィンドウの動作に関する事を指定する
CreateWindowはウィンドウの見た目に関する事を指定する

911:初心者
09/02/16 02:23:14
「botton1をクリックしたとき、〜する」っていうような、コードを教えてください。
ほんとに、初心者ですみません。

912:デフォルトの名無しさん
09/02/16 02:36:41
ボタンを貼り付ける。
そんで、そのボタンをダブルクリックする。
生成されたコードの中に処理を書く

913:初心者
09/02/16 02:50:39
コードをkwskお願いします

914:デフォルトの名無しさん
09/02/16 02:56:20
ダイアログベースの場合は上記の通り。
ボタンをはっつけて、それをダブルクリックするだけで勝手にコードが自動生成される。
んで、そこに書き込む。

WinAppの場合は、ウインドプロシージャでやる。
詳しくはここを読め。
URLリンク(homepage2.nifty.com)


915:初心者
09/02/16 03:07:57
すみません、説明不足でした。
if型で、「botton1をクリックしたときに、〜する」というコードです。
ほんとに、すみません

916:デフォルトの名無しさん
09/02/16 03:10:02
とりあえずボタンをダブルクリックするまでやってみなよ

917:初心者
09/02/16 03:14:22
botton1と、botton2があり、それを選んでbotton3を押すと、
それぞれ動き方が違うというプログラムを作りたいです。

918:デフォルトの名無しさん
09/02/16 03:32:01
ん?IF型ってなぁに?
まずダイアログベースアプリなのか、SDIアプリケーションなのか、Win32アプリケーションなのか、
それ以外なのかちゃんと書こうぜ。

919:デフォルトの名無しさん
09/02/16 03:44:40
ボタンを選択するってことはラジオボタン?
もしかしてこんなかんじかな?

IDC_RADIO1、2はラジオボタンで、スタイルがプッシュボタン型。
で、通常のボタン(ボタン3)を押した場合の処理が以下。(名前はOnBnClickedButton1だけどな)

void CzzzDlg::OnBnClickedButton1()
{
  // TODO : ここにコントロール通知ハンドラ コードを追加します。
  if( ((CButton *)GetDlgItem(IDC_RADIO1))->GetCheck() == TRUE )
  {
    MessageBox("Radio1");
  }
  else if( ((CButton *)GetDlgItem(IDC_RADIO2))->GetCheck() == TRUE )
  {
    MessageBox("Radio2");
  }
}


920:デフォルトの名無しさん
09/02/16 03:47:10
あ、間違えた^^;
== TRUEではなくて、== BST_CHECKED だな。


921:初心者
09/02/16 06:50:13
説明不足が多く、すみませんでした。
>>919
ありがとうございました!!

922:デフォルトの名無しさん
09/02/16 10:01:49
textBox1 の「1」の部分に変数を使いたいのですが
方法が分かりません ><

923:デフォルトの名無しさん
09/02/16 10:30:44
フォーム?MFC?

924:デフォルトの名無しさん
09/02/16 10:32:33
フォームです

925:デフォルトの名無しさん
09/02/16 11:07:02
>>908-910
すげぇ、、、
説明がすぅっと頭に入ってきました。
Win32の達人の方ですね。


926:デフォルトの名無しさん
09/02/16 11:07:29
array<System::Windows::Forms::TextBox^>^ textBox;
でメンバー持っておいて、
this->textBox = gcnew array<System::Windows::Forms::TextBox^>(2);
してから
this->textBox[0] = textBox1;
this->textBox[1] = textBox2;
するとか。

927:デフォルトの名無しさん
09/02/16 11:17:47
>>926
うーむ。なるほど

ここに、変数を使うのは、あまり一般的ではないですか?

928:デフォルトの名無しさん
09/02/16 11:25:13
>>926
あ。ありがとうございました!

929:デフォルトの名無しさん
09/02/16 17:37:54
Visual C++ 6.0
Windoes XP Pro SP3
を使用しています。

グローバルに構造体を作って、クラス内でexturnをしようすると、
exturnのところでエラーが出て怒られてしまいます。
グローバルでの定義部分ではエラーは出てないものの、ちゃんと出来ているかも正直怪しいかもしれません。
何か良い方法は無いでしょうか?

930:デフォルトの名無しさん
09/02/16 17:38:16
Visual C++ 6.0
Windoes XP Pro SP3
を使用しています。

グローバルに構造体を作って、クラス内でexturnをしようすると、
exturnのところでエラーが出て怒られてしまいます。
グローバルでの定義部分ではエラーは出てないものの、ちゃんと出来ているかも正直怪しいかもしれません。
何か良い方法は無いでしょうか?

931:デフォルトの名無しさん
09/02/16 17:39:04
すいません、二重書き込みしてしまいました…

932:デフォルトの名無しさん
09/02/16 17:41:01
しかもexternだろw

言いたいことがよくわからん。
どんなコードなんだ?

933:デフォルトの名無しさん
09/02/16 18:10:00
>>932
すいません、externでした。

グローバルに
struct st{
char id[ID_SIZE];
char name[NAME_SIZE];
struct st *next;
};
と定義して、それをクラスAやクラスBで
extern struct st{
char id[ID_SIZE];
char name[NAME_SIZE];
struct st *next;
};
とすると、まず「空白の宣言が見つかりました。」というエラーが出て止まってしまいます。

拙い説明で申し訳ないです。

934:デフォルトの名無しさん
09/02/16 18:23:03
まだわかんねー。
何がやりたいんだ。
構造体の定義と、変数の宣言とその変数のextern宣言が必要だが、そもそも変数(実体)がない。

935:デフォルトの名無しさん
09/02/16 18:29:52
#include "st.h"
でいいんじゃないの?何がしたいのかまったくもってわからない。

936:デフォルトの名無しさん
09/02/16 18:30:27
ageスマソ

937:デフォルトの名無しさん
09/02/16 19:10:08
externでぐぐるぐらいしてから来たらいかがですかね
定義、宣言、参照について全く理解していない気がします。

938:デフォルトの名無しさん
09/02/16 19:10:14
グローバルに構造体の型を宣言しています。
さらに、実体もグローバルに定義しています。

実体に値が入っていて、
その値をスレッド内でグローバルで定義した実体を通して
参照したいです。

グローバル変数を使う知識として、
externを付けることは知っているのですが、
そもそも、スレッド内からグローバルに定義した
構造体にアクセスできるかどうかわかりません。

何か方法がありましたら、教えてください。

>>935
やってみたのですが、そのようなヘッダはありませんと怒られてしまいました。

939:デフォルトの名無しさん
09/02/16 19:14:55
あと、拙い説明にもかかわらず
ご返事いただきありがとうございます。

>>937
結構ぐぐったのですが私の理解力が足らず申し訳ございません・・・

940:935
09/02/16 19:15:48
// FILE : st.h
struct st { ... };
extern st g_st;

// FILE : st.cpp
#incluede "st.h"
st g_st;

// FILE : a.h
#include "st.h"
class A { ... };

ってことね。とりあえず何を参考に勉強してるのかしりたい。

941:デフォルトの名無しさん
09/02/16 20:08:02
すいません、聞きたいのですが。。。
Windowsファームアプリケーションを作成したのですが、ほかのPCで動作しません。
「このアプリケーションの構成が正しく・・・」と表示されます。
リリースコンパイルもしましたが動きません。
「プロパティ」の「C++」の「コード生成」の「ランタイムライブラリ」を「マルチスレッド」にすると、コンパイルすることができません。
いったいどうすれば動くのでしょうか?
ほかのPCに、ランタイムを入れない方法を探しています。
お願いします。

942:デフォルトの名無しさん
09/02/16 20:34:19
>>941
×ファーム
○フォーム

純粋なWin32アプリや標準ライブラリだけを使うコンソールアプリなら
ライブラリを静的にリンクすればよいと思うけど、
Windowsフォームアプリケーションでランライムに依存しないのは無理じゃないの?

943:デフォルトの名無しさん
09/02/16 21:04:01
> Windowsファームアプリケーション

C++/CLIだったりして・・・。そのPC、.netframework入れてないとかw

944:デフォルトの名無しさん
09/02/17 07:42:27
>>941
>ランタイムを入れない方法を探しています。
無理
フォームアプリはランタイム(.NET Framwork)必須


945:デフォルトの名無しさん
09/02/17 11:57:12
いろいろ試した結果、パスに日本語が入ってると読み込めないようです
どうすれば読み込めるようになりますか?
char fname[] = "C:\\テスト\\test.txt";
ifstream fin;
fin.open(fname);
char c;
while (fin.get(c)) {
printf("%c", c);
}
fin.close();
if (getch()) return 0;

946:デフォルトの名無しさん
09/02/17 12:42:13
locale設定した?

947:デフォルトの名無しさん
09/02/17 13:04:17
setlocale(LC_ALL, "japanese");
ifstream fin;
こうすれば読み込めるようになりました、ありがとうございます

948:デフォルトの名無しさん
09/02/17 18:05:29
先物の夕場は証券自己とかの約定させる気のない発注・取り消しに個人が振り回されて
値がついてる感じだな

949:デフォルトの名無しさん
09/02/18 00:28:05
VC++とVB&C#の違いは大まかに言うと
オブジェクト->プロパティ
オブジェクト.プロパティ
という理解でいいんでしょうか?

950:デフォルトの名無しさん
09/02/18 00:29:58
出直して来い

951:デフォルトの名無しさん
09/02/18 00:32:44
すごい理解

952:デフォルトの名無しさん
09/02/18 15:46:47
>>949
親読んでこい
説教してやる

953:デフォルトの名無しさん
09/02/18 17:59:43
VC++ 2005ExpressEditionでWin32アプリ作ってます。

int WINAPI WinMain( HINSTANCE hi, HINSTANCE hip, LPSTR sc, int ic )
{
   MSG    Msg;
   char    *str;
   memset( &Msg, 0, sizeof( MSG ) );


   return ( int )Msg.wParam;
}

strが0xcccccccc<不適切なPtr>となるのはなぜですか。
C++ならstring使えっていう事なんですか?

954:デフォルトの名無しさん
09/02/18 18:01:33
何が疑問なのかわからん。
そのstrは単に初期化してないポインタだからそのままじゃ使えないだろう。

955:デフォルトの名無しさん
09/02/18 18:02:27
strが初期化されていないから不定値。
デバッグ時に0xccで埋められてるだけ。
実際にアプリケーションを動かすと、不定値。

char *str = NULL;
とかで初期化する。

956:デフォルトの名無しさん
09/02/18 18:10:20
なるほど。
newしてあげれば不適切Ptrではなくなるんですね。
ありがとうございます。


あのぉ。。。もひとつ疑問がでちゃったんですが、いいですか?

newして例外出てんのに期待通りの動作してるのはなぜですか
これが解決できたら1年ぐらいROMしときます。


957:デフォルトの名無しさん
09/02/18 18:26:16
例外の内容によるでしょう。
具体的にコード出してこういう例外が出たと書いてくれないとわからんよ。

958:デフォルトの名無しさん
09/02/18 18:35:51
>>956
>newしてあげれば不適切Ptrではなくなるんですね。
なんもわかってねぇじゃん
まず、入門書と紙と鉛筆用意して全文書き取りからはじめたほうがいいぞ

959:デフォルトの名無しさん
09/02/18 19:22:49
すいません。3日かかってどうしても直らないエラーがあるので教えて下さい。

ビルドすると、
fatal error C1083: include ファイルを開けません。'afxwin.h': No such file or directory e:\visual studio 2005\projects\キャプチャ\irsystem\stdafx.h 43
というエラーが出ます。
環境は
Visual Studio 2005 Professional Edition sp1
OS:Vistaです。
Visual Stadio Professionalかつフルインストールしているので、
MFCが入っているはずなのですがどうしても動きません。
どなたかわかる方いらっしゃいますでしょうか。
わかる方がいましたら教えて下さい。


960:デフォルトの名無しさん
09/02/18 19:42:35
>>959
うーん、なんかVC2008eeででるんと同じようなエラー内容だなぁ・・・
なんか設定する必要あんのかな?

961:デフォルトの名無しさん
09/02/18 19:43:35
そのinclude文のとこ右クリックして開いてみ
それで見つからないならインクルードパスの設定すればいい

962:デフォルトの名無しさん
09/02/18 19:52:04
ツール - オプション - プロジェクト - VC++ ディレクトリ で
「インクルード ファイル」の設定内容をチェック

バージョンの違いでちょっと文言が違う鴨試練

963:デフォルトの名無しさん
09/02/18 20:03:24
URLリンク(support.microsoft.com)

これかなぁ・・・なんか違う?

964:デフォルトの名無しさん
09/02/18 20:25:58
ライブラリのパスの直下のlibファイルはリンクできるのですが、
サブディレクトリのlibファイルは、下記のようにはリンクできないのですか?
OK #pragma comment(lib, "mylib.lib")
NG #pragma comment(lib, "lib/mylib2.lib")

965:デフォルトの名無しさん
09/02/18 21:48:11
hhj


966:デフォルトの名無しさん
09/02/18 22:07:10
#pragma comment(lib, "lib\\mylib2.lib")

967:964
09/02/18 23:03:19
966
もちろんディレクトリ区切りを\\にしてもだめでした。
それにフルパスで記述したときに/で通るので、多分原因はそこではないと思います。
#pragma commentでライブラリファイルを指定するときに、サブディレクトリ内もちゃんと見るんですよね。
とりあえずそこの確認がほしいのです。

968:デフォルトの名無しさん
09/02/18 23:24:34
自分のプログラムとしてはなんかlibに関してはプロジェクトに追加してるかどうかだなぁw
ヘッダ読んでpraguma云々の記述はlibファイルなんかねーとこ指してるけど動いてるw
って状況やってみそ
ヘッダとlibファイルのプロジェクトへの追加な

969:デフォルトの名無しさん
09/02/18 23:40:56
./hoge/lib.lib

とかでもダメぽ?

970:964
09/02/19 00:17:33
ファイルの階層はこんな感じです。
C:\MyLibrary  ←VC++ディレクトリ-ライブラリとインクルードの一番上で指定。
  mylib.lib
  lib
    mylib.h (#include <lib/mylib.h>は失敗しない)
    mylib.lib (上では区別のためにmylib2.libと書いたけど、コピーしたもの)
プロジェクト-リンカ-追加の依存ファイルで指定しても

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

と出ます。
./lib/mylib.libも同様にpragma でも依存ファイルの指定でも失敗しますorz

971:デフォルトの名無しさん
09/02/19 01:19:58
まさか、lib\\mylib.h のなかに #pragma comment(lib, "lib/mylib.lib") って書いている
わけじゃないだろーな

972:デフォルトの名無しさん
09/02/19 01:23:57
コンパイルしようとしてるソースファイルはどこなんだよ

973:デフォルトの名無しさん
09/02/19 02:03:28
// main.cpp
// マイドキュメント-VS2008-Projects/Test/Test
// = プロジェクトディレクトリ
#include <lib/mylib.h> // OK
#pragma comment(lib, "lib/mylib.lib") // NG
//#pragma comment(lib, "C:/MyLib/lib/mylib.lib") // OK
//#pragma comment(lib, "mylib.lib") // OKだけど違うファイル
int main()
{
const int ret = test_func(2);
return 0;
}

// mylib.h
#pragma once
int test_func(int val);

//mylib.cpp
#include "mylib.h"
int test_func(int val) { return val * 100; }

改行を削るとこのような感じになります。
コンパイルすると970のエラーメッセージが出ます。。。
もう遅いし、解決できそうにないのであきらめてフルパスで書くことにします。
ありがとうございました。

974:デフォルトの名無しさん
09/02/19 02:41:48
同名の違うファイルにパスが通ってるのも問題じゃないか

975:デフォルトの名無しさん
09/02/19 03:16:25
つーか、自前のlibなら、#pragma comment(lib, "ほにゃらら")は ヘッダに書けよ。
したら、cpp にゃ、ヘッダをインクルードするだけで済むだろーが。

じゃないと、他のプロジェクトで mylib.h を使いまわす時に、lib をリンクし忘れるのがオチだ。

976:デフォルトの名無しさん
09/02/19 05:36:29
>>970
あるよ。
以上。
↓次の方どうぞ

977:デフォルトの名無しさん
09/02/19 11:22:48
>>926
このコードの真ん中って、「this->」いらなくない?

978:デフォルトの名無しさん
09/02/19 11:24:50
>>977
TextBoxと紛らわしかったので、説明上念のためつけただけ。

979:デフォルトの名無しさん
09/02/19 11:28:08
>>978
いや、エラーになるでしょ

980:デフォルトの名無しさん
09/02/19 11:36:27
>>978

array<System::Windows::Forms::TextBox^>^ textBox;


ひょっとして、これだけ、違うところに記述するんですか?

981:デフォルトの名無しさん
09/02/19 11:39:54
同じメソッド内に書いたらそこでしか使えないじゃない。
まあそれで済むならそれでいいけど。

982:デフォルトの名無しさん
09/02/19 11:50:06
>>981
すみません。いけました。
ありがとうございます

983:デフォルトの名無しさん
09/02/19 20:52:20



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

4356日前に更新/248 KB
担当:undef