くだすれVisual C++(超初心者用)その3
レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん
2006/06/12(月) 18:48:32もしくは質問者自身何が何だか分からない質問を勇気を持って書き込むスレッドです。
Visual C++使いが優しくコメントを返しますが、
お礼はVisual C++の布教と初心者の救済をお願いします。
■過去スレ
前スレ
http://pc8.2ch.net/test/read.cgi/tech/1141087248/
前々スレ
http://pc8.2ch.net/test/read.cgi/tech/1135817069
■遠い親戚スレ
くだすれC++/CLI(初心者用)
http://pc8.2ch.net/test/read.cgi/tech/1142144110/l50
■関連ページ
Visual C++ Home Page
http://www.microsoft.com/japan/msdn/visualc/
0002デフォルトの名無しさん
2006/06/12(月) 22:59:30Visual C++ Proffesional EditionでC++のプロジェクトでコーディングをしているのですが、
急にデバッグする時、ブレークポイントにきちんと停止してくれなくなってしまいました。
ブレークポイントは現在の設定ではヒットしません。ソースコードが元のバージョンと異なります。
と言われます。
ググってみると
http://msdn.microsoft.com/library/ja/default.asp?url=/library/ja/vsdebug/html/vxtskDebuggingClassLibraries.asp
の
デバッグをどの方法で始める場合でも、クラス ライブラリのデバッグ バージョンを先にビルドして、
アプリケーションが参照する場所にデバッグバージョンを配置するようにします。
この手順を忘れると、アプリケーションが別のバージョンのクラスライブラリを参照して読み込む可能性があります。
その場合、プログラムは実行を続け、設定されたブレークポイントにヒットしません。
という記述が関連していそうな気がするのですが、よく意味がわかりません。
分かる方、アドバイスお願いします。
0003デフォルトの名無しさん
2006/06/12(月) 23:07:09乙
0004デフォルトの名無しさん
2006/06/13(火) 01:56:07関数でCStringのポインタを使って、直接文字列をいじりたいんですけど、
それをやろうとしてもエラーが出たりします。本を見たりネットを見たりして
色々と試したんですが、どれもうまくいきません。
char型のように関数で文字列を直接扱うことはできるんでしょうか?
0005デフォルトの名無しさん
2006/06/13(火) 02:02:49できるよ
どう扱うのかわからんからサンプルくれ
あと、
CString str;
strcpy( &str, "hoge" );
とかはするなよ!絶対!!
0006デフォルトの名無しさん
2006/06/13(火) 02:31:35for(int i = 0; pattern[i] != NULL; i++){
if(index = text[i] - pattern[i] != 0) break;
}return index;}
char* Strstr(char* text, char* pattern, int len, int n){
char* end = text + len - n + 1;
while(text != end){
if(Strcmp(text, pattern) == 0) return text;
text++; } return NULL;}
void table(char* pattern, int* TABLE){
int x = 1, y = 0; TABLE[0] = 0;
while(pattern[x] != NULL){
if(pattern[x] == pattern[y]) TABLE[x++] = ++y;
else{ if(y == 0)TABLE[x++] = y;
elsey = TABLE[y];}}
char* bmp(char* text, char* pattern, int len, int n){
int y = 0; int* TABLE = new int[strlen(pattern)];
table(pattern, TABLE);
while(*text != NULL){
if(*text == pattern[y]){text++;
if(pattern[++y] == NULL)return text - n;
}else{ if(y == 0)text++;
elsey = TABLE[y - 1];
} } return NULL; }
void main(){
char a[] = "fhsoeriojtotetototo"; char b[] = "totetototo"; char* c; char* d;
int len = strlen(a); int n = strlen(b);
c = Strstr(a, b, len, n);//単純法 d = bmp(a, b, len, n);//KMP法}
こんな感じで、charのところをCStringを使って扱いたいわけです。
0008デフォルトの名無しさん
2006/06/13(火) 07:11:46それは止めたほうがいいよ。引数の char* を const char* にすれば CString を
(暗黙のキャストで)渡せるようになるから、それくらいで満足しておくべき。
UNICODE でもOKにするなら const TCHAR * で。
0009デフォルトの名無しさん
2006/06/13(火) 08:18:02教えてください。携帯からですみません。
0010デフォルトの名無しさん
2006/06/13(火) 10:57:53自分で計算して描画 or DirectXを使う
0011デフォルトの名無しさん
2006/06/13(火) 13:51:44つまり、const char* 以外の方法は無いって事でしょうか?
CStringで文字列を格納して、関数で受けるときはcharを使った方が良いという事でしょうか?
0012デフォルトの名無しさん
2006/06/13(火) 14:06:41CString a = "fhsoeriojtotetototo";
CString b = "totetototo";
const char * c = Strstr(a, b);
// でいいじゃん。で、文字列長はStrstr()内でstrlen()すればいいし。
//# 文字列長を引き数で渡す積極的理由があるならそれはそれでいいが。
0013デフォルトの名無しさん
2006/06/13(火) 14:41:20なるほど〜
文字列長を引数で渡しのは検索を連続で行うためなんですよ。もっと長い文字列ときに同じ単語がいくつかでるので、
関数内でだと、strlenが何度も呼び出されるからです。
って、参考にしたサイトで書いてましたw
あと、CString.FindやReplaceで検索や置換を行った方が処理は早いんでしょうか?
それとも、BM法でやった方が処理は早いんでしょうか?
質問ばかりですみません。お願いします。
0014デフォルトの名無しさん
2006/06/13(火) 15:11:11ユーザー関数の戻り値が帰ってくるまでの時間がランダムの
場合、その戻ってくる時間分だけ待機させるのってどうしたらいいでしょう?
CheckISSError :ユーザー関数
for( i = 0 ; i < 15 ; i++){
iRet = CheckISSError( i );
if(iRet < 0){
エラーの場合の処理
}
::Sleep(700);
}
現状では ::Sleep(700); をいれることでもたつきますが正常に動作してます。
WaitForSingleObjectを使用すればいいのでは?とご教授頂いたのですが
どのように利用すればいいのかもわからない状態です。
何方かご存知の方 ご教授願えませんでしょうか?
0015デフォルトの名無しさん
2006/06/13(火) 15:13:02CStringならGetLengthで文字数が得られる。
元がbmp(a, b, len, n);なんだろ。
そこへ自分で多重定義してやればいいだろ。
const char* bmp(const char* a, const char* b)
{
return bmp(a, b, std::strlen(a), std::strlen(b);
}
const char* bmp(const CString& a, const CString& b)
{
return bmp(a, b, a.GetLength(), b.GetLength());
}
0016デフォルトの名無しさん
2006/06/13(火) 15:42:23なるほど。多重定義ですか!
全然思いつかなかったw
大変勉強になりました☆ありがとうございます☆
0017デフォルトの名無しさん
2006/06/13(火) 17:19:41strlen程の速度を気にするんだったら、
CStringを使わずchar*とintで文字列と文字数を渡してやる方がよくね?
0018デフォルトの名無しさん
2006/06/13(火) 19:48:18>>9です。なんとか解決しました。ありがとうございました。
0019デフォルトの名無しさん
2006/06/13(火) 20:05:10コマンドプロンプトに出力されません。
どこか設定おかしいのでしょうか?
よろしくお願いします。
0020デフォルトの名無しさん
2006/06/13(火) 20:10:08貴方の頭の設定がおかしいんですよ。
0021デフォルトの名無しさん
2006/06/13(火) 20:25:25ある関数でDebugモードでは正常に機能するのに
Releaseモードでは戻り値が空になって返ってくるようになってしまいました.
ちなみに,その現象がお起こるファイルは,
ブレイクポイントにて
現在実行されていると表示されている行と
実際実行されている行とでは数行の開き
(実際は5〜7行崎を実行中)
があるようなのです(MesseageBoxにて確認)
このような症状ってどうやれば直るのでしょうか?
0022デフォルトの名無しさん
2006/06/13(火) 20:30:44プロジェクトを作るときには何を選んだ?
ただのC/C++ならWin32コンソール アプリケーションだよ。
0023デフォルトの名無しさん
2006/06/13(火) 20:45:55全てリビルド。
GetBuffer / ReleaseBuffer しないで書き込んでるとか、
その類のことではないだろうか。
002421
2006/06/13(火) 22:07:30リビルドしても,Release/Debugフォルダ全消去しても同じでした.
GetBufferというか,CStringそのままでしか使っていないので関係ないと思いますが...
ほかに何かないでしょうか?
002519
2006/06/13(火) 22:22:51もちろんプロジェクトはWin32コンソールアプリケーションです。
で、設定でコンソールアプリケーションを選択。
追加オプションの空のプロジェクトにチェック入れました。
0026デフォルトの名無しさん
2006/06/13(火) 22:26:35ReleaseビルドでBreakPointがずれているように見える現象は、最適化ゆえ。
Releaseビルドでも最適化しないようにすればずれないよ。
0027デフォルトの名無しさん
2006/06/13(火) 22:57:31ちゃんと標準出力に出力してる?
標準出力のハンドルは合ってる?って普通は合ってるやな
002819
2006/06/13(火) 23:19:26#include<iostream>
using namespace std;
int main(){
cout << "Hello World" << endl;
return 0;
}
0029デフォルトの名無しさん
2006/06/14(水) 00:27:06そうですねぇw
それは確かに思いました。
ただ、どっかのサイトで統一した方が良いと書いてありましたのでw
17さんなら、どうしますか?
0030デフォルトの名無しさん
2006/06/14(水) 00:38:28http://www.sm.rim.or.jp/~shishido/kaiten.html
↑でBITMAP回転処理を解説されていますよみましたか?
003117
2006/06/14(水) 00:40:07速度が必要なら自分でゴリゴリ書くけど
そうじゃないなら汎用性と読みやすさ重視だね。
そーいやstl::stringを使うという選択肢もあるな
0032デフォルトの名無しさん
2006/06/14(水) 01:31:48なるほど〜 うまくいきました☆
で、さらに問題が・・・検索した文字列を置換をしたいんですが、
constを外すと、当然なんですが、エラーが出ます。
この場合はどうしたら良いでしょうか?
0033デフォルトの名無しさん
2006/06/14(水) 01:58:13class A
{
template < int T > void F();
template <> void F<0>F(){...};
}
なんてコードを書くと、クラスビューにこのクラスが認識されなくなるんだが。
これって俺だけ?
ちなみに特殊化したFを消すと再認識される
003433
2006/06/14(水) 01:59:190035デフォルトの名無しさん
2006/06/14(水) 02:04:09どこをどう直せばよいのでしょうか?
#include <stdio.h>
#include <math.h>
#include <stdlib.h>
#define NX 41
#define NY 41
void SetBoundaryCondition(double T[NY][NX])
{
int x;
int y;
for (x = 0; x < NX; x++)
{T[0][x] = 0.5;}
for (x = 0; x < NX; x++)
{T[NY-1][x] = 0.0;}
for (y = 0; y < NY; y++)
{T[y][0] = 1.0;}
for (y = 0; y < NY; y++)
{T[y][NX-1] = 0.0;}
*つづく*
0036デフォルトの名無しさん
2006/06/14(水) 02:06:25int main(void)
{
const double dx = 1.0 / NX;
const double dy = 1.0 / NY;
const double C1 = 0.5 * dx*dx / (dx*dx + dy*dy);
const double C2 = 0.5 * dy*dy / (dx*dx + dy*dy);
int i;
int j;
double errorMax;
double previousValue;
SetBoundaryCondition(T[NY][NX]);
do
{
errorMax = 0.0;
for (i = 1; i < NY-1; i++)
{
for (j = 1; j < NX-1; j++)
{previousValue = T[i][j];
T[i][j] = C1*(T[i+1][j] + T[i-1][j]) + C2*(T[i][j+1] + T[i][j-1]);
if (errorMax < fabs(T[i][j] - previousValue))
{errorMax = fabs(T[i][j] - previousValue);}}}
} while (errorMax > 0.00001);
for (i = 0; i < NY; i++)
{for (j = 0; j < NX; j++)
{printf("%d\t%d\t%15.15f\n", j, i, T[i][j]);}
}
return 0;}
よろしくお願いします。
0037デフォルトの名無しさん
2006/06/14(水) 02:55:59CStringで+していくか、出来上がったバッファをCStringに代入。
前者:
CString foo = "abc";
foo += "def";
後者:
CString foo = "abc";
char buf[20];
sprintf(buf, "%sdef", foo);
foo = buf;
0038デフォルトの名無しさん
2006/06/14(水) 07:26:51だったらCString&なんかを渡せばいいだろ。
0039デフォルトの名無しさん
2006/06/14(水) 08:34:49置換じゃ置換後の文字列長さが不定なので全然違ってくる
お手軽にやりたいんならCStringを渡すのが楽。
CStringを使わないなら自分で領域確保してそのアドレスを戻す。
0040デフォルトの名無しさん
2006/06/14(水) 08:37:00どこがうまくいかない?
エラーメッセージは?
0041デフォルトの名無しさん
2006/06/14(水) 09:25:08ありがとうございます☆
確かにそれなら、簡単にできそうです!!
感謝です☆
0043デフォルトの名無しさん
2006/06/14(水) 10:26:07エラーメッセージ貼るなら、どの行か判るようにしてくれ。
で、恐らくmain()で配列Tが宣言されていないのでエラーになっていると思われる。
関数の呼び方も間違っている。訂正するならこんな感じか。
>SetBoundaryCondition(T[NY][NX]);
↓
>double T[NY][NX];
>SetBoundaryCondition(T);
004435
2006/06/14(水) 11:11:07ありがとうございます。無事ビルドできました。
しかし今度はデバッグで
'熱伝導.exe': 'C:\Documents and Settings\服部 正太郎\My Documents\Visual Studio 2005\Projects\熱伝導\debug\熱伝導.exe' を
読み込みました。バイナリはデバッグ情報と一緒にビルドされませんでした。
'熱伝導.exe': 'C:\WINNT\system32\NTDLL.DLL' を読み込みました。必要な DBG ファイルが見つからないか、開けません。
'熱伝導.exe': 'C:\WINNT\system32\KERNEL32.DLL' を読み込みました。必要な DBG ファイルが見つからないか、開けません。
プログラム '[2216] 熱伝導.exe: ネイティブ' はコード 0 (0x0) で終了しました。
と出ました。何故でしょうか?
Visual C++ 2005 Express Editionを使っているのですが。
0045デフォルトの名無しさん
2006/06/14(水) 11:22:10オマイ、名前、名前!!
004635
2006/06/14(水) 11:30:370047デフォルトの名無しさん
2006/06/14(水) 11:35:290048デフォルトの名無しさん
2006/06/14(水) 12:06:46本名に1票!!
0049デフォルトの名無しさん
2006/06/14(水) 12:47:490050デフォルトの名無しさん
2006/06/14(水) 13:52:29デバッグ用んp設定とリリース用の設定が混じってる希ガス
環境設定間違ってね?
もっかい新規作成からやってみれば?
ソースはコピペすればいいんだし
005135
2006/06/14(水) 15:29:230052デフォルトの名無しさん
2006/06/14(水) 15:34:15よく嫁!
そして無視しろ
以上
0053デフォルトの名無しさん
2006/06/14(水) 15:54:16処理をおこなうようにしたいのですが、キー入力してもエラー音が出て
WM_CHAR:の処理をおこなってくれません。
あまり関係なさそうなところを省くと、ソースは下のようになってます。
int WINAPI WinMain(HINSTANCE hCurInst, HINSTANCE hPrevInst,LPSTR lpsCmdLine, int nCmdShow)
{
DialogBox(hCurInst, MAKEINTRESOURCE(IDD_DIALOG1), NULL, (DLGPROC)DlgProc);
return 0;
}
LRESULT CALLBACK DlgProc(HWND hWnd, UINT msg, WPARAM wp, LPARAM lp)
{
switch (msg) {
case WM_INITDIALOG:〜
case WM_CHAR:〜
case WM_COMMAND:〜
}
ダイアログだけで済むものを考えているので、WindowProcはありません。
なにか分かることがありましたら、お願いします。
0054デフォルトの名無しさん
2006/06/14(水) 16:12:08入力フォーカスって関係ある?
005533
2006/06/14(水) 16:25:420056デフォルトの名無しさん
2006/06/14(水) 16:37:30ありがとうございます。
キーを押されたらそれに応じて、スタティックテキストを書き換えるように
してたので、エディット欄は設けていませんでした。
エディット欄を設けると、当然そこには入力できるのですが、やはりWM_CHAR:
に記述した処理はおこなってくれません。
キーが押されると、WM_CHARのメッセージが渡されるという理解で
間違ってないでしょうか?
0057デフォルトの名無しさん
2006/06/14(水) 16:49:56WM_KEYDOWN あたりを見ると幸せに・・・なれたらいいなぁ
>>55
すまん。テンプレートは苦手じゃ
0059デフォルトの名無しさん
2006/06/14(水) 22:52:23CPU情報を表示するソフトを作りたいのですが
CrusoeのCPUが判定できる 外部DLLってありますか?
[作りたいもの]
c:\>cpuinfo
と打つと
Crusoe 933MHz
と表示される
0060デフォルトの名無しさん
2006/06/14(水) 23:24:07OS:win2k or winXP
VC++でブレークポイントを設定すると固まることがまれにあります。
解決方法をご存知の方がいらっしゃいましたらご教示願います。
スレッドを作成しています。
0061デフォルトの名無しさん
2006/06/14(水) 23:35:25DirectInput だかなんだかの問題じゃなかったっけ・・・
http://www.microsoft.com/japan/msdn/directx/techart/nodelaydirectinput.asp
0062デフォルトの名無しさん
2006/06/14(水) 23:38:21http://support.microsoft.com/default.aspx?scid=kb;ja;418661
0063デフォルトの名無しさん
2006/06/15(木) 01:11:37情報どうもありがとうございます
ただ、DirectInput は使用していません
MFC使用、SDI,スレッドにmessageループ(PostThreadMessage->GetMessage)を使用しています
スレッドにブレークポイントを設定したときに固まる傾向にあります。
>>62
Windows XP Service Pack 1 以上も当てています(たぶんService Pack 2)し、
Win2kでもおきます。
プログラムが糞だから起きるのでしょうか?たぶんそうです
0064デフォルトの名無しさん
2006/06/15(木) 01:13:570065デフォルトの名無しさん
2006/06/15(木) 03:41:15「libc.libファイルが開けません」というエラーが出たのでググってみたのですが
『libc.libはVS2005では削除されて、代わりにマルチスレッド用libcmt.libがある』
とのこと。
これはどうやって解決したらよいのでしょうか。
よろしくお願いします。
0066デフォルトの名無しさん
2006/06/15(木) 05:46:03プロジェクトの設定を見直す。
0067デフォルトの名無しさん
2006/06/15(木) 07:26:110068デフォルトの名無しさん
2006/06/15(木) 21:19:06/*****************
* hello *
* world *
*****************/
#include <stdio.h>
int main()
{printf("Hello World!");
return 0;}
っていう入門書に書いてあったやつをそのまま作ったんですが、実行すると一瞬だけ表示されてすぐに消えてしまいます。
たぶん写し間違えとかはないと思うんですが・・・
なにとぞご教授ください。
0069デフォルトの名無しさん
2006/06/15(木) 21:30:56それでおそらく合ってます
出来たexeファイルをコマンドプロンプトから実行してみてください
0070デフォルトの名無しさん
2006/06/15(木) 23:22:30int main()
{printf("Hello World!");
while(1); //←この行を追加しましょう
return 0;}
0071デフォルトの名無しさん
2006/06/15(木) 23:50:20こらこら。いたずらは程ほどに。
0072デフォルトの名無しさん
2006/06/16(金) 00:33:04は〜い
実行すると一瞬だけ表示されてすぐに消えるのは、
windowsの標準設定にてプログラムが終了したら窓を閉じる
という設定になっているためです。
解決方法は2種類
1.プログラムがすぐに終了しないような処理を書く
⇒70の無限ループや、キー入力待ちの処理を入れる方法
2.窓を勝手に閉じなくする
⇒69や、プロパティでプログラム終了したら窓を閉じるという
チェックボックスを外す方法
があります。以上
0073デフォルトの名無しさん
2006/06/16(金) 09:52:58コンソールアプリは、処理が終わると同時に
コンソールウィンドウも閉じる
ただ、コメントの内容は
ちゃんとこのプログラムは・・・をするプログラム
ってかんじで書いたほうがよいです。
でも、ちゃんとコメントを書くってのは良いことです。
0074デフォルトの名無しさん
2006/06/16(金) 12:08:58CStringで入力した数値をint型に変換するにはatoi関数を使うとわかったのですが、
CString型をdoubleまたはfloat型に変換するには何を使ったらよいんでしょうか?
調べても見つかりませんorz
お願いします。
0075デフォルトの名無しさん
2006/06/16(金) 12:23:500076デフォルトの名無しさん
2006/06/16(金) 13:28:35できた。�dクス。
0077デフォルトの名無しさん
2006/06/17(土) 15:57:42実行したウインドウをなんども移動させたりすると、メモリーリーク??を起こしているのか
途中から画面が真っ白になってしまいます。何が悪いのでしょうか。
LRESULT CALLBACK WndProc(HWND hWnd,
UINT message,
WPARAM wParam,
LPARAM lParam)
{
static HWND hWndDesktop;//デスクトップのHWND
static HDC hDCDesktop;//デスクトップのHDC
switch(message)
{
case WM_CREATE:
hWndDesktop = GetDesktopWindow();
return 0;
case WM_PAINT:
hDCDesktop = GetDC(hWndDesktop);
BitBlt(GetDC(hWnd), 0, 0, 100, 100, hDCDesktop, 0, 0, SRCCOPY);
ReleaseDC(hWndDesktop,hDCDesktop);
return 0;
case WM_DESTROY:
PostQuitMessage(0);
return 0;
default:
return DefWindowProc(hWnd, message, wParam, lParam);
}
}
0078デフォルトの名無しさん
2006/06/17(土) 16:03:53WM_PAINTではGetDC(hWnd)ではなくBeginPaintを使え。
BeginPaintを呼ぶことでWindowsはそのウィンドウへ描画されていると認識する。
勿論EndPaintを忘れないように。
あと、デスクトップのウィンドウハンドルからGetDCしなくても、単にGetDC(0)で良いはず。
008077
2006/06/17(土) 16:33:40画面が真っ白になるのは解消されました。
そこで質問なのですが、hDCDesktop;(画面全体のHDC)は
開放しなくていいのでしょうか?
HDC hDCDesktop;//デスクトップのHDC
HDC hDC;//コピー先のHDC
PAINTSTRUCT ps;//BeginPaintのために宣言(使用しない?)
switch(message)
{
case WM_PAINT:
hDCDesktop = GetDC(0);
hDC = BeginPaint(hWnd, &ps);
BitBlt(hDC, 0, 0, 100, 100, hDCDesktop, 0, 0, SRCCOPY);
EndPaint(hWnd, &ps);
return 0;
008177
2006/06/17(土) 16:42:21なぜか再描画がされないときもありますが、だいぶちゃんと動くようになりました。
こんな感じでいいのかなあ・・・。ありがとうございました。
static HWND hWndDesktop;//デスクトップのHWND
HDC hDCDesktop;//デスクトップのHDC
HDC hDC;//コピー先のHDC
PAINTSTRUCT psDesktop, ps;//BeginPaintのために宣言(使用しない?)
switch(message)
{
case WM_CREATE:
hWndDesktop=GetDesktopWindow();
case WM_PAINT:
hDCDesktop = BeginPaint(hWndDesktop, &psDesktop);
hDC = BeginPaint(hWnd, &ps);
BitBlt(hDC, 0, 0, 100, 100, hDCDesktop, 0, 0, SRCCOPY);
EndPaint(hWnd, &ps);
EndPaint(hWndDesktop, &psDesktop);
return 0;
0082デフォルトの名無しさん
2006/06/17(土) 18:33:39double sum(double x[],int n)
double average(double x[],int n)
を使って作成したいのですが全く分かりません。
どなたか作成して頂けないでしょうか。
クレクレ君ですみません
0083デフォルトの名無しさん
2006/06/17(土) 20:51:34BeginPaintが使えるのはWM_PAINTが来た時
かつそのWM_PAINTを受け取ったウィンドウに対してのみ。
だからデスクトップに対してはGetDC(0)しろ。
GetDCには常にReleaseDCが必要と思え。
0084デフォルトの名無しさん
2006/06/17(土) 20:53:26宿題なら宿題スレへ。
0086デフォルトの名無しさん
2006/06/18(日) 09:52:38失礼しました。
0087デフォルトの名無しさん
2006/06/18(日) 15:03:05詳細を見たらcstdioやcstlibで構文エラーが出てます。
どうしたらコンパイルできますぁ。
0088デフォルトの名無しさん
2006/06/18(日) 15:32:02自分のソースを見直した上で、リビルド。それでもダメなら新規プロジェクトでやり直してみるとか。
008987
2006/06/18(日) 16:50:55visualc++を再起動したら直りました。
ありがとうございました。
0090デフォルトの名無しさん
2006/06/19(月) 16:12:58実行するとデスクトップの色に関わらずRGB(255,255,255)と表示されます。
いったん、デスクトップのコンパチブルDCを作成してそこにBitBltし、
そのコンパチブルDCの座標をGetPixelというちょっと面倒な事をしています。何が原因なんでしょうか。
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam){
static HDC hDCDesktop;
HDC hDCTemp;
TCHAR s[80];
COLORREF clr;
int ix = 200, iy = 200;//任意の座標(200,200)
switch(message){
case WM_KEYDOWN:
hDCDesktop = GetDC(0); //デスクトップのDC
hDCTemp = CreateCompatibleDC(hDCDesktop); //デスクトップのコンパチブルDC
BitBlt(hDCTemp, 0, 0, 500, 500, hDCDesktop, 0, 0, SRCCOPY);
clr = GetPixel(hDCTemp, ix, iy);
ReleaseDC(0, hDCTemp);
ReleaseDC(0, hDCDesktop);
wsprintf(s, "COLOR: R [%d] G[%d] B[%d]",
GetRValue(clr), GetGValue(clr), GetBValue(clr));
MessageBox(hWnd, s, "CHECK", MB_OK);
return 0;
case WM_DESTROY:
PostQuitMessage(0);
return 0;
default:
return DefWindowProc(hWnd, message, wParam, lParam);
}
}
0091デフォルトの名無しさん
2006/06/19(月) 16:42:14CreateCompatibleDCでDCを作ると、描画対象のビットマップはシステムで共有される
1x1ピクセルのものが設定されています。CreateCompatibleBitmap で bitmap を作って
SelectObject で設定してあげないといけない。
それから CreateCompatibleDC で作った DC は DeleteDC で開放する。このとき、
事前に最初に設定されていたビットマップをSelectObjectで設定しなおすこと。
hdc = CreateCompatibleDC()
hbitmap = CreateCompatibleBitmap()
tmp = SelectObject(hdc, hbitmap)
作ったDCを使用
SelectObject(hdc, tmp); // 元に戻す
DeleteDC(hdc)
DeleteObject(hbitmap)
009390
2006/06/19(月) 18:07:12LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam){
HDC hDC,hDCDesktop;
HBITMAP hBitmap, hBitmapOld;
TCHAR s[80];
COLORREF clr;
const int ix = 200, iy = 200;//任意の座標(200,200)
switch(message){
case WM_KEYDOWN:
hDCDesktop = GetDC(0);
hDC = CreateCompatibleDC(hDCDesktop);
hBitmap = CreateCompatibleBitmap(hDCDesktop, 500, 500);
hBitmapOld = (HBITMAP)SelectObject(hDC, hBitmap);
BitBlt(hDC, 0, 0, 500, 500, hDCDesktop, 0, 0, SRCCOPY);
clr = GetPixel(hDC, ix, iy);
SelectObject(hDC, hBitmapOld);
DeleteObject(hBitmap);
DeleteDC(hDC);
ReleaseDC(0, hDCDesktop);
wsprintf(s, "COLOR: R [%d] G[%d] B[%d]",
GetRValue(clr), GetGValue(clr), GetBValue(clr));
MessageBox(hWnd, s, "CHECK", MB_OK);
return 0;
case WM_DESTROY:
PostQuitMessage(0);
return 0;
default:
return DefWindowProc(hWnd, message, wParam, lParam);
}
}
0094デフォルトの名無しさん
2006/06/20(火) 13:31:54自分の作ったアプリを他人のPCに持って行って動かした時に落ちてしまいます
その時に
アドレス0x12345678から無効なアドレス0x0000000Cを参照した
というようなダイアログが出ます。
このアドレスをメモしておいて、自宅に帰った後、どの関数で落ちているのか調べたいのですが
そのようなことはどうやったらできるでしょうか
どうかご教示願います
VC2005です
0095デフォルトの名無しさん
2006/06/20(火) 14:11:26やり方さえ知ってれば、というかあるツールさえあれば、簡単にそのアドレスから
ソースコードの行番号に変換することができます。(それを使う前準備が必要
なんですが)
『.NET & Windows プログラマのためのデバッグテクニック徹底解説』という書籍に
詳しい解析方法が載っています。
そのツールとはCrashFinderという名前のもので、ググればどこかにころがって
いるかもしれません。
0096デフォルトの名無しさん
2006/06/20(火) 14:31:37ありがとうございます
その本を読んでみます
0097デフォルトの名無しさん
2006/06/20(火) 22:09:36値段を見てみたら1万円なんですね…
立ち読みしようと思って大きな本屋に行きましたが見つからなかったです…orz
009895
2006/06/20(火) 23:59:17では、ググるためのキーワードをいくつか。
・クラッシュアドレス
・MAP
・pdb
英語でも検索してみてください。
どこかに懇切丁寧にやり方を解説しているページがあるかもしれません。
0099デフォルトの名無しさん
2006/06/21(水) 00:09:18リソースファイルの追加ダイアログでToolBarだけ存在しません。
バージョンによって違うのですか?
0100デフォルトの名無しさん
2006/06/21(水) 01:14:55自作クラスからMFCが作成したクラスにメッセージを投げる方法を教えて頂けないでしょうか?
コンソールアプリで動く自作クラスでマルチメディアタイマーをつけてみました。
このクラスをMFCに組み込んで、タイマーが呼び出すコールバック関数から
MFCが作成したクラスにメッセージを(SendMessage又はPostMessageで)投げたいのですが、
うまくゆきません。
・・・効率悪いとか言われそうですが、脳が足りない私に知恵を分けて頂けませんか?
宜しくお願いします。
0101デフォルトの名無しさん
2006/06/21(水) 11:08:00いや、普通に投げられるよ
ウィンドウハンドルが間違ってるか、メッセージがフィルタリングされてるか、どっちかじゃない?
投げてるメッセージはWM_APP以降だよな?
0102デフォルトの名無しさん
2006/06/22(木) 02:35:53返答ありがとうございます。
ぅ〜ん。WM_APP以降かどうかもわからないレベルです、すいません。
やっていることは
�@MFCで作成したCxxxViewにWM_TIMERをうけとるOnTimerを実装した。
�A自作クラスCHogeにSetCWnd( void* HWND )という、void*型でメインウィンドウのアドレスを取得する関数を実装。
�BMFC内で生成したCHogeのインスタンスにメインウィンドウのAfxGetMainWnd()で取得したアドレスを格納。
�CCHogeのコールバック関数から
ret = SendMessage( (HWND)cmusic->GetWnd(), WM_TIMER, 0, 0 )
を実行
ちなみにretの値は「届いてませんよ」の0が入ってます。
・・・という感じです。
おろかですが、アドバイスお願いします。
0103デフォルトの名無しさん
2006/06/22(木) 02:57:30100です
すいません
自分に礼をいってますた
0104デフォルトの名無しさん
2006/06/22(木) 04:52:18なんだかなぁ。
やりたいことをちゃんと説明して、「こういうときはどうすればいいんでしょう」と聞いた方が早い希ガス。
0105デフォルトの名無しさん
2006/06/22(木) 10:14:31VC2005でコンパイルしたところ
error C2512: 'A' : クラス、構造体、共用体に既定のコンストラクタがありません。
というエラーが出たのですが、どうしてエラーになるのでしょうか?
AやBにコンストラクタを追加しても解決せず、class Cの宣言をAより下に持っていくとエラーがなくなりました。
class A;
class B;
class C
{
B* b;
public:
C() : b(new A){}
};
class B
{
public
~B(){}
}
class C
{
public:
~C(){}
}
0106デフォルトの名無しさん
2006/06/22(木) 10:15:53{
public:
~C(){}
}
はclass Aの間違いです。
0107デフォルトの名無しさん
2006/06/22(木) 12:54:54クラスの定義の終わりにはセミコロン付けろ
0108デフォルトの名無しさん
2006/06/22(木) 13:23:17ああ、ごめんなさい。もちろんつけております
0109デフォルトの名無しさん
2006/06/22(木) 13:39:16いわゆる「前方参照」は、ポインタの場合にしか使えない。
class Cのコンストラクタのnew Aの前に、前方参照宣言ではなくclass Aの実際の宣言が必要。
0110デフォルトの名無しさん
2006/06/22(木) 13:56:11class A;
という宣言だけではクラスAのコンストラクタがクラスAのメモリのどこにあるか、クラスCには分からないことじゃないかな
class A{
public:
A(); // 仕様だけでいい
};
まで書かないとだめなはず
というかこれはclass Cの宣言をAより下に持っていくって事なんだけど
一番手っ取り早い解決は
仕様のA();を.h、実装のA(){}を.cppに書いて計(A,B,Cの3クラス×2で)6つのファイルに分けて書くこと
それが嫌で仕様と実装でファイルを分割しない場合で循環参照をしたい場合は
純粋仮想関数や継承といったテクニカルなことをしないとC++では出来なかったと思う
0111デフォルトの名無しさん
2006/06/22(木) 14:12:09class AGhost{
public:
virtual bool foo() = 0;
};
class B{
AGhost *p;
public:
B(){
p = new AGhost;
}
void goo(){
p->foo();
}
};
class A : public AGhost{
public:
bool foo(){
printf("helloworld");
}
};
あ、間違ってたり普通にもっと良い方法があったらすいません
指摘していただけると嬉しいです
0112デフォルトの名無しさん
2006/06/22(木) 15:53:53>>109が全てだから
0113デフォルトの名無しさん
2006/06/23(金) 21:13:280114デフォルトの名無しさん
2006/06/23(金) 22:53:570115デフォルトの名無しさん
2006/06/23(金) 23:04:48それはそうだけど、今回の例だとnewがあるから無理。
newは前方宣言だけではできないはず。
0116デフォルトの名無しさん
2006/06/25(日) 17:39:09一旦CDにでも焼いてからHDDから消そうかと考えているのですが
意外と分量があるので容量を幾らかダイエットさせようと思っています
debug フォルダの中なら消しても問題ないような気がするので
delete *.obj みたいな感じのバッチファイルを書こうかと思ってるのですが
拡張子が .idb .ilk .obj .pch .pdb あたりのファイルは消しちゃっても大丈夫なんでしょうか?
いや多分大丈夫だと思うのですが、例外的なケースがあって困ることはないかと不安で・・・
0117デフォルトの名無しさん
2006/06/25(日) 17:44:10クリーン時に削除する拡張子ってのがプロジェクトごとに設定されてるから
それ見て消せばいいと思うよ。あとはncbとか。
0118デフォルトの名無しさん
2006/06/25(日) 17:44:20例外的なケースをどこまで想定するかにも拠る。
まぁ、外部から*.objを持ち込むとか、バイナリパッチするとか、そういうことをしてなければ大丈夫だ。
0119デフォルトの名無しさん
2006/06/25(日) 17:49:50レスありがとうございます。
私が思っていたほど単純な話ではなかったようですが
注意しながら消していくことにします
0120デフォルトの名無しさん
2006/06/25(日) 17:51:03まとめてばっさりやってOKです。
0121デフォルトの名無しさん
2006/06/25(日) 21:05:200122デフォルトの名無しさん
2006/06/25(日) 22:13:470123デフォルトの名無しさん
2006/06/26(月) 00:02:36昔どっかでみつけた VCClean.exe というのを自分は使っている。
蛇足だが、フォルダ毎 lzh 圧縮して MO に保存。
640MB MO が一杯になると CD-ROM ヘ。
0124デフォルトの名無しさん
2006/06/27(火) 21:46:50オープンソースアプリをVC++6.0でコンパイルしようとしているのですが、
sys/param.hやsys/socket.h、そのほか大勢が無いと弾かれてしまいます。
調べてみた所、それらのヘッダはunixには存在するらしいのですが、
windowsには標準では入っていない様です。
こういう場合は、unixからヘッダファイルだけ抜き出して
VC++のincludeフォルダ内に入れたりして解決するのでしょうか?
もしもっと賢い解決法があれば教えていただけると有難いです。
0125デフォルトの名無しさん
2006/06/27(火) 21:53:140126デフォルトの名無しさん
2006/06/27(火) 21:59:540127デフォルトの名無しさん
2006/06/27(火) 22:10:220128デフォルトの名無しさん
2006/06/27(火) 22:11:58そのオープンソースの名称を具体的に教えてくれ
0129デフォルトの名無しさん
2006/06/27(火) 22:16:40>>125
それもそうなんですが……
メールアドレスだけしか書かれていないので気後れしてしまいまして。
>>126
今cygwinをインストールしています。
unixをインストールしなくても良いのは便利そうですね。
>>127
一応、Windows対応版のソースを拾ってきたんですけどね……
>>128
stoneです。googleでトップに出てきます。
0130デフォルトの名無しさん
2006/06/27(火) 22:24:22速度だったので断念w
0131デフォルトの名無しさん
2006/06/27(火) 22:25:030132デフォルトの名無しさん
2006/06/27(火) 22:26:460133デフォルトの名無しさん
2006/06/27(火) 22:29:22すいません……サッパリです。
超初心者以下なようでご迷惑おかけします…
0134デフォルトの名無しさん
2006/06/27(火) 22:31:12clという名前のコンパイラはVC++以外にあるのかい?
0135デフォルトの名無しさん
2006/06/27(火) 23:33:040136デフォルトの名無しさん
2006/06/27(火) 23:44:360137デフォルトの名無しさん
2006/06/28(水) 08:14:19あとはmakeするだけ
馬鹿でもできる。
0138デフォルトの名無しさん
2006/06/28(水) 10:16:490139デフォルトの名無しさん
2006/06/28(水) 10:31:270140デフォルトの名無しさん
2006/06/28(水) 10:52:08unix専用のヘッダはVCは参照しないようになってるが。
0141デフォルトの名無しさん
2006/06/28(水) 21:25:38int i=123;
String str = String.Format( {0} , i );
一応ぐぐったりしてこんなコードを書いたんですが、コンパイルするとエラーが出ます・・・
メッセージ通りに手を加えても通りません。
きっと初歩的なことなんでしょうけど何処が悪いんでしょうか?
0142デフォルトの名無しさん
2006/06/28(水) 22:04:10それ本当にVCか?
0143デフォルトの名無しさん
2006/06/28(水) 22:12:18ってか、"{0}"じゃね?
0144デフォルトの名無しさん
2006/06/28(水) 22:43:32これで通った
謎だ・・・
>>141の{0}はタイプミスですが、今まで必死になって{"0"}を通そうとしていました。
どう見ても通りません。
本当にありがとうございました。
ところで ^ って何なんでしょうか・・・
MSDNに聞いてもでてこないし・・・
0145デフォルトの名無しさん
2006/06/28(水) 23:08:080146デフォルトの名無しさん
2006/06/28(水) 23:09:12C++/CLIのトラッキングハンドルを意味する。
ようするに.NETのポインタのようなものだと思えば良い。
あと、String::Formatを使わなくても、単にi.ToString()で良いと思うのは気のせいか?
0147デフォルトの名無しさん
2006/06/29(木) 09:57:59"" + i とかしてたよ。orz
0148デフォルトの名無しさん
2006/06/29(木) 11:42:550149デフォルトの名無しさん
2006/06/29(木) 11:44:14dequeでソレをすることはできないのでしょうか?
capacityとreserveすら使えないのですが、FIFOバッファのコンテナとして使いたいので
vectorではちょっとパフォーマンスが不安なんです
0150デフォルトの名無しさん
2006/06/29(木) 17:15:57は
a = std::auto_ptr<A>(new A);
と等価ですよね
a = new A;
とは書けないんですか?
できないのならコンパイルエラーが出るべきだと思ってたんだけどランタイムエラーになってしまいました。
たぶん、このコードいっぱいあるのでsxzd;jzhp
0151デフォルトの名無しさん
2006/06/29(木) 21:36:17>>149と
>>150
の言っている意味を教えてください
0152デフォルトの名無しさん
2006/06/29(木) 22:10:480153デフォルトの名無しさん
2006/06/29(木) 22:17:390154デフォルトの名無しさん
2006/06/30(金) 20:34:23double x ;
char str ;
x = 1.11 ;
sprintf(str, %f, x) ;
SetWindowText(hwnd, str) ;
これで表示される値が0.000になってしまうのです。
%fを%ld等に変えるとしっかり整数部分だけはでるのですが・・
どうしてだか教えてください(´・ω・`)
0155デフォルトの名無しさん
2006/06/30(金) 20:37:21strはchar配列にしないとだめだろ。
0156デフォルトの名無しさん
2006/06/30(金) 20:43:48あ、書き間違えていました
char str[30]
という配列を宣言していました
0157デフォルトの名無しさん
2006/06/30(金) 22:17:26sprintf(str,"%f",x)にはしたが。
文字セットはマルチバイトセットで確認した。
0158デフォルトの名無しさん
2006/06/30(金) 23:12:14doubleにしたらできました
本当に申し訳ございませんでしたorz
0159デフォルトの名無しさん
2006/07/01(土) 21:56:27デバッグに使えたら便利…というか、今現在使いたいと思っています。
ご存知の方いらっしゃいましたらよろしくお願いいたします。
0160デフォルトの名無しさん
2006/07/01(土) 22:09:50LPT1を監視して、他のアプリケーションが印刷ジョブを流したら、
そのデータを読み取りたいです。印刷は行います。
0161デフォルトの名無しさん
2006/07/01(土) 22:13:40AllocConsoleしてWriteFile
0162デフォルトの名無しさん
2006/07/01(土) 22:54:53そこから横流しすればいいじゃん。
0163デフォルトの名無しさん
2006/07/01(土) 22:56:12おお、表示できました。ありがとうございます。
こいつぁ便利だ〜(`・ω・´)
0164デフォルトの名無しさん
2006/07/02(日) 00:29:47ここのdirectXのサンプルプログラムをvisual c++ 2005でビルドしてみたのですがコンパイルまではできたのですが、リンクの段階で
dx_audio.obj : error LNK2019: 未解決の外部シンボル __imp__CoCreateInstance@20 が関数 "int __cdecl AdoInit(void)" (?AdoInit@@YAHXZ) で参照されました。
dx_audio.obj : error LNK2019: 未解決の外部シンボル __imp__CoInitialize@4 が関数 "int __cdecl AdoInit(void)" (?AdoInit@@YAHXZ) で参照されました。
dx_audio.obj : error LNK2019: 未解決の外部シンボル __imp__CoUninitialize@0 が関数 "void __cdecl AdoRelease(void)" (?AdoRelease@@YAXXZ) で参照されました。
win_main.obj : error LNK2019: 未解決の外部シンボル __imp__ShowCursor@4 が関数 _WinMain@16 で参照されました。
win_main.obj : error LNK2019: 未解決の外部シンボル __imp__FindWindowA@8 が関数 _WinMain@16 で参照されました。
というようなエラーが大量にでてきました。解決方法わかりますでしょうか。
スレ違いでしたらごめんなさい。
0165デフォルトの名無しさん
2006/07/02(日) 03:58:15Visual C++ 2005 Express Edition にて、Windowsフォームアプリケーションを作成しようとすると、
以下のダイアログが出て先(? Delphiみたいなフォームが出る?)に進めません。
---------------------------
Visual C++ 2005 Express Edition
---------------------------
f:\Documents and Settings\username\デスクトップ\test2\test2\Form1.h
ファイルを開けません。
---------------------------
OK
---------------------------
これは普通の動作なのでしょうか??
エラーのタブには↓のようなメッセージが表示されます。
警告1保護されているメモリに読み取りまたは書き込み操作を行おうとしました。他のメモリが壊れていることが考えられます。0
0166デフォルトの名無しさん
2006/07/02(日) 08:37:48OLE32.LIBとUSER32.LIBをリンクするようにしろ。
0167デフォルトの名無しさん
2006/07/02(日) 13:25:03なるほど。Platform SDKのその2つのライブラリを自分でリンクする必要があったんですね。
おかげでだいぶエラーが減りました。質問ばかりで申し訳ないのですが
win_main.obj : error LNK2019: 未解決の外部シンボル __imp__GetStockObject@4 が関数 "int __cdecl SysCreateWindow(struct HINSTANCE__ *,int)" (?SysCreateWindow@@YAHPAUHINSTANCE__@@H@Z) で参照されました。
d3dx8dt.lib(d3dx8core.obj) : error LNK2019: 未解決の外部シンボル __imp__GetObjectA@12 が関数 _D3DXCreateFont@12 で参照されました。
d3dx8dt.lib(d3dx8dbg.obj) : error LNK2019: 未解決の外部シンボル __imp__RegCloseKey@4 が関数 "int __stdcall D3DXDebugAssert(char const *,int,char const *)" (?D3DXDebugAssert@@YGHPBDH0@Z) で参照されました。
といったエラーがまだ残っています。
あとは同じようなエラーなのでこれさえ解決できれば実行できるような気がするのですが・・。
よろしくお願いします。
0168デフォルトの名無しさん
2006/07/02(日) 13:31:24advapi32.lib
MSDNで関数名を検索して必要なライブラリを割り出せ。
0169デフォルトの名無しさん
2006/07/02(日) 13:33:32なるほどです。
参考になるサイトとかご存知ですか?
なかなか見つからないす。
0170デフォルトの名無しさん
2006/07/02(日) 14:02:590171デフォルトの名無しさん
2006/07/02(日) 15:19:05なるほど、そういう方法があったんですね。
実行することができました。ありがとうございました。
0172デフォルトの名無しさん
2006/07/02(日) 15:55:53すが、ウインドウの右端にある「サーバーエクスプローラ」や「プロパティ」が表示
されている垂直のタブ(名前わからなくてスミマセン)を、どこかに移動する(また
は消す)ということはできないでしょうか。
画面が狭いので、自動的に隠れる状態にして使ってるんですが、スクロール
バーを動かそうとしてちょっとずれると出てきちゃうのです。
もし、環境はスレ違いでしたらごめんなさい。その際は誘導していただけると
助かります。
0173171
2006/07/02(日) 16:11:18プログラムを実行することができたのですが、
プロパティ→構成プロパティ→リンカ→入力
のところに実行するたびに入力しなおさないと消えてしまいます。
これって毎回入力するしかないのでしょうか。
0174デフォルトの名無しさん
2006/07/02(日) 16:15:41VC++2500EEの基本。やった?
http://www.microsoft.com/japan/msdn/vstudio/express/visualc/usingpsdk/
0175デフォルトの名無しさん
2006/07/02(日) 16:30:430176デフォルトの名無しさん
2006/07/02(日) 21:51:09一体どれだけの進化を果たしているんだろう。
0177デフォルトの名無しさん
2006/07/02(日) 22:18:08安心汁。確実に退化してるだろうから。
0178デフォルトの名無しさん
2006/07/03(月) 02:09:33最近までC++Builderを使っていたのですが、Visual C++ 2005 Expressに
乗り換えることに決意し、試行錯誤しています。
自作ソフトにファイルのダンプをする機能を入れたいのですが、C++Builderでいう
コンポーネント(ファイルダンプまたはバイナリエディター)はないでしょうか。
ご存じのかた、よろしくお願いします。
0179デフォルトの名無しさん
2006/07/03(月) 03:40:49一応やったつもりだったのですがやり足らなかったところがあったようです。
おかげさまで毎回リンクする必要がなくなりました。
ありがとうございます。
0180デフォルトの名無しさん
2006/07/03(月) 07:40:210181デフォルトの名無しさん
2006/07/03(月) 16:09:33映像(AVI)を読み込んで、その画像列などを表示するプログラムを作っています。
画像での表示はできているのですが、IEなど別のウィンドウに切り替えたとたんに、今まで表示されていた画像が消えてしまいます。
アクティブな部分(例えば映像再生中のピクチャ)は表示されるのですが、そうでない部分は表示が消えたままになります。
どのようなプログラム(命令?)を追加すれば解決できるのでしょうか?
環境はVisual C++ 6.0です。
よろしくお願いします。
0182デフォルトの名無しさん
2006/07/03(月) 16:41:47隠れた部分が表にでたら更新が必要
やりかたは普通のウインドウの更新と同じ
0183デフォルトの名無しさん
2006/07/03(月) 17:00:05解決しました。
ありがとうございました。
0184デフォルトの名無しさん
2006/07/03(月) 23:08:31エクスプローラでファイルを移動しただけだとリンクエラーになる
移動したいヘッダファイルをプロジェクトから一旦削除して、
移動した後のファイルをプロジェクトに追加するしかないん?
0185デフォルトの名無しさん
2006/07/05(水) 18:55:16C++のタブでカテゴリのダイアログボックスからプリプロセッサを選択。
インクルードファイルのパス(N)にパスを書けばOK。
(相対でも絶対でも可)
追加ライブラリ本体のパスは同じくプロジェクトの設定ダイアログの
リンクのタブでカテゴリのダイアログボックスからインプットを選択。
追加ライブラリのパス(D)にパスを書く。
0186デフォルトの名無しさん
2006/07/08(土) 19:03:48フォームを作成してForm1.hというファイルができあがり、そのファイル中にコードを記述しているのですが、
ネットや、この掲示板、参考書を見るかぎり、やってること(書いてる場所)が全く違う気がして疑問に思っているのですが、
VC++.NETで開発する際、実際にコードを打つファイルはForm1.hではなく、別の.cppファイルを作成して
それをForm1.h側から参照するようにするのが普通なのでしょうか?
0187デフォルトの名無しさん
2006/07/08(土) 19:31:29それもう秋田
0188デフォルトの名無しさん
2006/07/08(土) 21:22:240189デフォルトの名無しさん
2006/07/09(日) 00:48:47error C3867: 'Project::Form1::OnTimedEvent': 関数呼び出しには引数リストがありません。メンバへのポインタを作成するために '&Project::Form1::OnTimedEvent' を使用してください
'System::Timers::ElapsedEventHandler' : delegate コンストラクタには 2 つの引数が必要です
この二つのエラーがでます。
MSDNのサンプルを真似たはずなんですけど何処が悪いんでしょうか?
private: System::Void StartTimer_Click(System::Object^ sender, System::EventArgs^ e) {
System::Timers::Timer^ aTimer = gcnew System::Timers::Timer;
aTimer->Elapsed += gcnew ElapsedEventHandler(this->OnTimedEvent);
aTimer->Interval = 1000;
aTimer->AutoReset = true;
aTimer->Enabled = true;
}
private:
void OnTimedEvent(Object^ source, ElapsedEventArgs^ e )
{
Now += 1;
throw(gcnew System::NotImplementedException);
}
0190デフォルトの名無しさん
2006/07/09(日) 20:28:23このファイルがShift-JISなんでUnicodeに変換しないと行けません。
どうやってやればよいのですか?
0191デフォルトの名無しさん
2006/07/09(日) 20:32:350192190
2006/07/09(日) 20:50:38今、自分で書き込んだキーワード入れたら出てきたんだな・・・
30分以上ぐぐったのに・・・
0193デフォルトの名無しさん
2006/07/09(日) 21:41:120194デフォルトの名無しさん
2006/07/09(日) 21:46:090195デフォルトの名無しさん
2006/07/09(日) 22:11:15error C3867: 'Project::Form1::OnTimedEvent': 関数呼び出しには引数リストがありません。メンバへのポインタを作成するために '&Project::Form1::OnTimedEvent' を使用してください
'System::Timers::ElapsedEventHandler' : delegate コンストラクタには 2 つの引数が必要です
この二つのエラーが
System::Timers::Timer^ aTimer = gcnew System::Timers::Timer;
aTimer->Elapsed += gcnew ElapsedEventHandler(this->OnTimedEvent); ←ここ
この部分で発生します。どう直せばいいのでしょうか?
0196デフォルトの名無しさん
2006/07/09(日) 23:09:32つーか、何故初心者がC++/CLIに?
0197デフォルトの名無しさん
2006/07/09(日) 23:50:18gcnew ElapsedEventHandler(this, &ほげ::OnTimedEvent)だと思う。
ほげにはthisのクラス名を当てはめろ。
0198デフォルトの名無しさん
2006/07/10(月) 00:56:43ソースとヘッダにコード書くのめんどい。
プリコンパイルヘッダもあるし、全部ヘッダに書いても、
そんなコンパイル重くならない気がするんだけど、どうなのかな。
0199デフォルトの名無しさん
2006/07/10(月) 05:22:41ヘッダのみは見たことないな
ソースがないとコンパイルできないだろ
0200デフォルトの名無しさん
2006/07/10(月) 15:47:070201デフォルトの名無しさん
2006/07/10(月) 15:58:43Visual C++はMicrosoftが作ったC++処理系とIDEその他の製品名。
0202デフォルトの名無しさん
2006/07/10(月) 18:47:000203デフォルトの名無しさん
2006/07/10(月) 18:56:29C++にはWin32APIとかMFCとかいう単語は出てこない(使いコトはできる)
0204デフォルトの名無しさん
2006/07/10(月) 19:09:420205デフォルトの名無しさん
2006/07/10(月) 19:11:320206デフォルトの名無しさん
2006/07/10(月) 19:21:51標準C++のみじゃほとんど何の役にも立たない。
0207デフォルトの名無しさん
2006/07/10(月) 19:26:06あんたにとって、「役に立つ」とはGUIの派手なアプリ限定なのか?
例えば数値シミュレーションやパズルの解析、ファイル処理などは想像もつかないのかな?
0208デフォルトの名無しさん
2006/07/10(月) 19:32:03お前は道具は使い分けることも知らない馬鹿ですか
0209デフォルトの名無しさん
2006/07/10(月) 19:35:510210デフォルトの名無しさん
2006/07/11(火) 10:39:06アドインか何かで似たような機能を実現してくれるものってないでしょうか。
0211デフォルトの名無しさん
2006/07/11(火) 18:51:14Cで書かれた簡単なクライアントとサーバのプログラム例ってどこかにないでしょうか?
Javaでいうとここぐらいの感じで。
http://www.hellohiro.com/socket.htm
よろしくお願いいたします。
0212デフォルトの名無しさん
2006/07/11(火) 18:59:02, イ)ィ -─ ──- 、ミヽ
ノ /,.-‐'"´ `ヾj ii / Λ
,イ// ^ヽj(二フ'"´ ̄`ヾ、ノイ{
ノ/,/ミ三ニヲ´ ゙、ノi!
{V /ミ三二,イ , /, ,\ Yソ
レ'/三二彡イ .:ィこラ ;:こラ j{
V;;;::. ;ヲヾ!V ー '′ i ー ' ソ
Vニミ( 入 、 r j ,′
ヾミ、`ゝ ` ー--‐'ゞニ<‐-イ
ヽ ヽ -''ニニ‐ /
| `、 ⌒ ,/
| >┻━┻'r‐'´
ヽ_ |
ヽ _ _ 」
ググレカス [ Gugurecus ]
( 2006 〜 没年不明 )
0213211
2006/07/11(火) 18:59:41コンソールプログラムで十分です。(むしろその方がいい)
0214211
2006/07/11(火) 19:14:50コンソールプログラムで十分です。(というよりそのほうがいい)
0215211
2006/07/11(火) 19:16:48自己解決しました。
0216デフォルトの名無しさん
2006/07/11(火) 21:55:54学校のVC6では太くなってくれません。
どこかで設定すればいいのでしょうか?それともこのバージョンでは不可能なのでしょうか?
0217デフォルトの名無しさん
2006/07/11(火) 22:05:200218デフォルトの名無しさん
2006/07/13(木) 13:08:570219デフォルトの名無しさん
2006/07/15(土) 00:55:59自作のアイコンを使いたいのですが、設定の仕方が分かりません。
ソリューションに、既存の項目追加で、アイコンを追加するところまではできたのですが、
そのアイコンをどうやってアプリケーションのアイコンにするのかが分かりません。
使用しているのは、VisualC++.net standard 2003 です。
よろしくお願いします。
0220デフォルトの名無しさん
2006/07/15(土) 05:41:030221219
2006/07/15(土) 09:04:58KH IconRewrite98というツールで書き換えようと思ったら、
exeファイルが、「対応していない形式です」というエラーが出て書き換えできませんでした。
が、いろいろいじくっているうちになんとか自作のアイコンを使う事ができました。
既存の項目追加ではなく、リソースとして追加する事で解決しました。
0222デフォルトの名無しさん
2006/07/15(土) 11:47:21リソースエディタで.rcファイルを書き換えないとだめなんじゃないかな。
俺はVC++2005 Express Editionだからリソースエディタないけど、
中身は普通のテキストファイルだから、覗けば一目瞭然だと思うよ。
0223デフォルトの名無しさん
2006/07/15(土) 11:59:310224デフォルトの名無しさん
2006/07/15(土) 15:18:29Googleじゃ|ι´Д`|っ < もうだめぽ
0225219
2006/07/16(日) 17:42:56作成したアプリケーションを実行した時、
タイトルバーの左端にある小さいアイコンを、
自作のアイコンに変更したいのですが、どうすればいいでしょうか?
とりあえず16*16の小さいアイコンを用意し、リソースに組み込んだのですが、
タイトルバーの小さいアイコンに設定する方法がわかりません。
>>223
プロジェクトの中に元々アイコンのリソースが入っておらず、
今までは、ウインドウズ標準の実行ファイルのアイコン(白い四角いアイコンです)が表示されていました。
現在タイトルバーのアイコンも、この標準のアイコンが表示されています。
0226デフォルトの名無しさん
2006/07/16(日) 19:09:57ウィザード使ってないんだと、どんなプログラムか想像つかないから答えようがない。
0227224
2006/07/18(火) 01:50:51コントローラを管理してるサービスプログラム(MxLCDLib.exe)が
C#の参照で読み込めました。
4年半前買ったパソコンなのに・・・.NET思考の恩恵かな?
ありあとーございました
0228デフォルトの名無しさん
2006/07/18(火) 22:21:23定義されてないとかエラーになるんですけど。
0229デフォルトの名無しさん
2006/07/18(火) 22:31:480230デフォルトの名無しさん
2006/07/19(水) 00:27:42__try, __finally使ったら、
warning C4509: 非標準の拡張機能が使用されています :
'Hoge::Test2' は SEH と デストラクタ を含む 'str1' 使われています。
error C2712: オブジェクト アンワインディングが必要な関数内で __try を使用できません。
とか言われるし・・・
0231デフォルトの名無しさん
2006/07/19(水) 00:45:23エラーメッセージのとおり。
1つの関数内でC++ EHとSEHは共存できない。(できてもおかしくは無いとは思うけど)
ここで言うC++ EHには自動変数のデストラクタも含まれる。
その割には/EHa使うと構造化例外が起きたときに
自動変数のデストラクタが呼ばれるのはなんか変な感じだが。
やっぱりC++ではデストラクタを使うのが一番だよ。
0232デフォルトの名無しさん
2006/07/19(水) 19:41:26別のプロジェクトの出力 b.lib に含まれるオブジェクトを
全部まとめて c.lib にすることは出来ますか?
コンパイルオプションは全く同一にそろえています。
0233デフォルトの名無しさん
2006/07/19(水) 19:59:06void stub(void){} みたいなダミーのコードとリンクしたら
全部一体になった lib 吐けました。
0234デフォルトの名無しさん
2006/07/19(水) 22:46:36EOF <<
文字列
>>
↑こんなんありましたよね?たしかPHPじゃあったはず。
コレなんて言うんすか?
0235デフォルトの名無しさん
2006/07/19(水) 22:50:510237234
2006/07/19(水) 23:00:48大量の文章を扱う時に楽な方法ってありますか?
0238デフォルトの名無しさん
2006/07/19(水) 23:07:530239デフォルトの名無しさん
2006/07/19(水) 23:09:230240デフォルトの名無しさん
2006/07/20(木) 15:26:23ttp://www.vector.co.jp/soft/win95/prog/se251850.html
上のアドレスから落とせる、
amediousというプログラムをVC++で動かしたいのですが、
amediousに付いてくるhtmの説明を見てもよく分かりませんでした。
プロジェクトにソースファイルを追加するところまでは出来たのですが
追加してビルドすると、
LIBCD.lib(crt0.obj) : error LNK2001: 外部シンボル "_main" は未解決です
Debug/unit00.exe : fatal error LNK1120: 外部参照 1 が未解決です。
link.exe の実行エラー
というエラーが出てしまいます。
さらに、その先の「2、準備」からの説明も良く分からなくて・・・。
当方超ド初心者のため、
初心者にも分かりやすく使い方を教えてくださると嬉しいです。
どうか、よろしくお願いします。
0241デフォルトの名無しさん
2006/07/20(木) 19:18:370242デフォルトの名無しさん
2006/07/20(木) 21:11:17ディレクトリをぬいてファイル名だけを取り出したりするような
便利ユーティリティの詰まったライブラリってないのかな。
0243デフォルトの名無しさん
2006/07/20(木) 21:27:42/イハ/レ:::/V\∧ド\
/::^'´::::::::::::i、::::::::::::::::::::::::::::\
‐'7::::::::::::::::::::::::ハ:ハ::|ヽ:::;、::::::::::::丶
/::::::::::::::/!i::/|/ ! ヾ リハ:|;!、:::::::l
/´7::::::::::〃|!/_,,、 ''"゛_^`''`‐ly:::ト
/|;ィ:::::N,、‐'゛_,,.\ ´''""'ヽ !;K
! |ハト〈 ,r''"゛ , リイ)|
`y't ヽ' //
! ぃ、 、;:==ヲ 〃 作ればいいと思うよ。
`'' へ、 ` ‐ '゜ .イ
`i;、 / l
〉 ` ‐ ´ l`ヽ
/ ! レ' ヽ_
_,、‐7 i| i´ l `' ‐ 、_
,、-‐''"´ ノ,、-、 / 、,_ ,.、- {,ヘ '、_ `ヽ、_
/ i ,、イ ∨ l.j__,,、..-‐::-:;」,ハ、 '、` ‐、_ ,`ヽ
/ l ,、‐'´ // ',/!:::::::::;、--ァ' / `` ‐ `'7゛ ',
/ l i ´ く ';::::::l / / / ',
/ ! l \ ';:::l , ' / i/ ',
0244デフォルトの名無しさん
2006/07/20(木) 21:30:230245デフォルトの名無しさん
2006/07/20(木) 21:44:380246デフォルトの名無しさん
2006/07/20(木) 21:47:23('A`) メガネメガネ
ノ ノ)_
0247デフォルトの名無しさん
2006/07/20(木) 21:54:520248デフォルトの名無しさん
2006/07/20(木) 22:25:500249デフォルトの名無しさん
2006/07/20(木) 22:30:14特に理由がない限りWindowsネイティブなものを直接使うだろ
0250242
2006/07/20(木) 22:36:23あ、boostにそんなのあったんだ。
boost::pathとかまさに.NETのPathクラスみたいな機能あるね。
ちなみにATL/WTLでActiveXのプログラム書いてるんだけど、
文字列ってCStringかstd::wstringどっちを汎用的に使う方が良いかなぁ。
0251デフォルトの名無しさん
2006/07/20(木) 22:39:390252デフォルトの名無しさん
2006/07/20(木) 23:10:56242の要求は251の言うとおりshlwapiで満たされるだろうが、
shlwapiはIE4以上が必要。これはshlwapiを使わない・使いたくない理由としては十分だと思う。
0253デフォルトの名無しさん
2006/07/20(木) 23:19:280254デフォルトの名無しさん
2006/07/20(木) 23:24:540255デフォルトの名無しさん
2006/07/20(木) 23:27:400256デフォルトの名無しさん
2006/07/21(金) 02:21:48どのサンプルをみてもInternetReadFileを数回読み込むだけで全部取得できているのですが、どこが悪いのかわかりません。
0257デフォルトの名無しさん
2006/07/21(金) 09:45:070258デフォルトの名無しさん
2006/07/23(日) 14:01:56デバッグのステップ実行時、ステップインで、特定のファイルには入らないという指定はできないでしょうか?
例えば、Func(_T("hoge"), _T("hogehoge")): という処理があったとして、
Func に入るためには、二度も _T() に入る必要があり、手間がかかります。
よろしくお願いします。
0259デフォルトの名無しさん
2006/07/23(日) 14:23:300260デフォルトの名無しさん
2006/07/23(日) 14:28:24楽なのはfopen&fgetsで1行づつ読むたびに、
MultiByteToWideChar()
で変換かなと思ってます。
ただ、ファイル名もwstringで受け取るようになっているので
fopenへ渡すときにどうすべきか悩んでます。
wstringをSJISに変換して渡さないといけないのでしょうか?
その場合、日本語ファイル名や空白の入ったファイル名もちゃんと読めるのか不安です。
0261デフォルトの名無しさん
2006/07/23(日) 15:00:58Visual C++には_wfopenという関数がある。
また、fgetwsを使えば直にwchar_tのワイド文字列として読み込める。
(読み込むときにマルチバイト文字列からワイド文字列へ変換される)
がしかし、wstringに入れるんだったら、std::wifstreamとstd::getlineで決まりだろ。
wifstreamのコンストラクタとopenにもVC++独自にワイド文字列を引数のとるものが多重定義されている。
それが嫌なら自分でワイド文字列を受け取るストリームバッファ・ストリームクラスを作れば無問題。
但し激しく面倒という諸刃の剣。素人にはお勧めできない。
C/C++でワイド文字を扱うときにはlocaleの設定をお忘れなく。
0262260
2006/07/23(日) 23:10:00setlocale(LC_ALL, "Japanese_Japan.20932");
stream.open(path.c_str());
stream.getline(buffer, 1024);
とかやってるんですが、日本語は化けますね・・・
0263260
2006/07/23(日) 23:14:440264デフォルトの名無しさん
2006/07/24(月) 00:49:030265デフォルトの名無しさん
2006/07/24(月) 01:25:00C++のはC++のlocaleを設定する必要がある。
<locale>をインクルードして、std::locale::global(std::locale(""));
localeの文字列を空にするとデフォルトの設定になる。
ようするにWindowsの言語とか使用者が設定した言語とかになるので、
特に必要がなければ空にするのが個人的なお勧め。
ついでに言うとstd::locale::globalを呼ぶと、内部でstd::setlocaleも呼ばれる。
0266260
2006/07/24(月) 07:07:58ちなみにifstreamでも引数にwchat_tのpathを受け取るオーバーロードがありました
。
なんでifstreamでgetlineして、MultiByteToWideCharするようにしました。
0267デフォルトの名無しさん
2006/07/24(月) 09:27:40待て、なんでstream.getlineなんだ。
メンバ関数でないほうのgetlineはstringを引数に取るぞ。
0268デフォルトの名無しさん
2006/07/24(月) 11:05:530269240
2006/07/25(火) 16:53:36微妙にスレ違いでした、ごめんなさい。
ありがとうございました、失礼します。
0270デフォルトの名無しさん
2006/07/25(火) 17:46:14VC++6.0で、メンバの自動表示が上手く機能しません。
ほとんどは何も表示されず、たまーに運が良いと表示される程度です。
プロジェクトの設定からブラウザ情報の生成にもチェックを
入れてみましたが、相変わらずです……。
どなたか解決策をご存知でしょうか?
0271デフォルトの名無しさん
2006/07/25(火) 21:41:310272デフォルトの名無しさん
2006/07/25(火) 22:02:310273デフォルトの名無しさん
2006/07/25(火) 22:10:40会社がVC6.0しか使わせてくれないのか
0274デフォルトの名無しさん
2006/07/25(火) 22:21:06今から始めるなら2005だろうけど
0275デフォルトの名無しさん
2006/07/26(水) 00:47:48未だに6.0なのは、C++とWin32APIの勉強がしたいからでして……
.NET以降はManagedになったり/CLIになったりでよく分からないですし
重いそうなので敬遠していました。
やっぱり2005EEに移った方が良いでしょうか?
0276デフォルトの名無しさん
2006/07/26(水) 01:00:430277デフォルトの名無しさん
2006/07/26(水) 18:46:21\nだとCR+LFになってしまいます。
0278デフォルトの名無しさん
2006/07/26(水) 18:48:480279デフォルトの名無しさん
2006/07/26(水) 19:02:040280デフォルトの名無しさん
2006/07/26(水) 19:10:020281277
2006/07/26(水) 22:21:10バイナリモードで再オープン以外で無いでしょうか?
%cを使わずに
printf("\0x0a");
みたいな書式できたらいいんですが、、、
(これではダメでした)
0282デフォルトの名無しさん
2006/07/26(水) 22:22:550283デフォルトの名無しさん
2006/07/26(水) 22:51:43釣り乙。
>>281
printf()のレベルではなく、その先のレベルで'\r'が補われるのだからそれがputchar()になってもやっぱり無理。
0284デフォルトの名無しさん
2006/07/27(木) 00:22:500285デフォルトの名無しさん
2006/07/27(木) 05:57:20どうすればこれを無効化出来ますか?
0286デフォルトの名無しさん
2006/07/27(木) 08:32:02インターネットオプションの詳細設定のブラウズの
スクリプトエラーごとに通知を表示するをオフにし、
スクリプトのデバッグを使用しないをオンにする。
たぶんこれででなくなると思う。
0287デフォルトの名無しさん
2006/07/27(木) 15:04:28背景色はSetBackgroundColorで変わるんですが。
0288デフォルトの名無しさん
2006/07/27(木) 15:27:05私も知りたい。
210 名前:デフォルトの名無しさん[] 投稿日:2006/07/11(火) 10:39:06
Visual C++ 2005ってコードスニペット機能がついていませんよね。
アドインか何かで似たような機能を実現してくれるものってないでしょうか。
0289デフォルトの名無しさん
2006/07/27(木) 19:27:39#include <iostream>
#include <cstdlib>
#include <memory>
#include <vector>
#pragma hdrstop
//指定したパスに存在するファイル名/ディレクトリ名をすべて出力する。
#pragma argsused
using namespace std;
int main(int argc, char* argv[])
{
if(argc!=3){
cerr<<"USAGE AllDirFileNames.exe TargetName mode(f|d|ft|dt)"<<endl;
//system("PAUSE");
return -1;
}
//argv[1]で指定されたパス以下のファイル名のリストを作成
TSearchRec sr;
std::auto_ptr<TStringList> sl(new TStringList());
AnsiString dot(".");
AnsiString dotdot("..");
つづく
0290デフォルトの名無しさん
2006/07/27(木) 19:28:56//モードの判定
bool file,directory,target;
file=directory=target=false;
if(!strcmp(argv[2],"f")) { file=true;}
else if(!strcmp(argv[2],"d")) { directory=true;}
else if(!strcmp(argv[2],"ft")) { file=target=true;}
else if(!strcmp(argv[2],"dt")) { directory=target=true;}
//対象ファイルを取得
vector<AnsiString> targetNames;
char buf[256];
if(!target){
targetNames.push_back(AnsiString(argv[1]));
}
else{
FILE* fp=fopen(argv[1],"r");
if(fp==NULL){
cerr<<"Can't open file "<<argv[1]<<endl;
return -1;
}
while(fscanf(fp,"%s",buf)!=EOF){
targetNames.push_back(AnsiString(buf));
}
}
つづく
0291デフォルトの名無しさん
2006/07/27(木) 19:32:33if(file){ //fileを探す
if(!FindFirst(targetNames[i]+"/*",faAnyFile,sr)){
do{
if(sr.Attr!= faDirectory&& sr.Name!=dot && sr.Name!=dotdot)
sl->Add(sr.Name);
} while (FindNext(sr) == 0);
FindClose(sr);
}
}
else if(directory){ //directoryを探す
if(!FindFirst(targetNames[i]+"/*",faDirectory,sr)){
do{
if(sr.Attr==faDirectory)
if(sr.Name!=dot && sr.Name!=dotdot)
sl->Add(sr.Name);
} while (FindNext(sr) == 0);
FindClose(sr);
}
}
つづく
0292デフォルトの名無しさん
2006/07/27(木) 19:34:22if(sl->Count==0){
cerr<<"not found"<<endl;
continue;
}
for(int j=0;j<sl->Count;j++){
cout<<targetNames[i].c_str()<<"/"<<sl->Strings[j].c_str()<<endl;
}
sl->Clear();
}
//system("PAUSE");
return 0;
}
ボーランドで組んだんですけどVCに移植するいい方法ありませんか?
0293デフォルトの名無しさん
2006/07/27(木) 19:39:580294デフォルトの名無しさん
2006/07/27(木) 19:51:510295デフォルトの名無しさん
2006/07/27(木) 20:11:47みごと直りました。THX SOOOOO MUCH!
0296デフォルトの名無しさん
2006/07/27(木) 23:12:48そうなんです、clx.hでエラー出るんです
自分で探してみたんですけど無くて・・・
互換性のあるヘッダーファイルってありますか?
0297デフォルトの名無しさん
2006/07/27(木) 23:20:530298デフォルトの名無しさん
2006/07/28(金) 00:04:150299デフォルトの名無しさん
2006/07/28(金) 00:27:51clxってborlandじゃなかったっけ?
0300デフォルトの名無しさん
2006/07/28(金) 00:31:13ごめんね。
お母さん三行しか読めないから、ごめんね。
0301デフォルトの名無しさん
2006/07/28(金) 00:49:49質問ばっかりですいません
0302デフォルトの名無しさん
2006/07/28(金) 07:47:03Windows APIのFindFirstFile 〜 FindNextFile 〜 FindCloseでいいと思うが。
0303デフォルトの名無しさん
2006/07/28(金) 16:13:16ダイアログにCStaticとCListBoxを配置して,CStaticのキャプションをファイル名(&F)の用に設定してALT+Fのアクセラレータを定義しています.
それで,ALT+Fをした時にCListBoxにフォーカスが移るようにしたいのですが,やり方を教えて頂けないでしょうか?
調べた事
・PreTranslateMessageでWM_KEYDOWNでメッセージを捕まえる方法
・リソースにアクセラレータを追加してOnInitDialogでLoadAccelerators読みこみ,PreTranslateMessageでTranslateAcceleratorを処理
・RegisterHotKey()でALT+Fを定義
CStaticの通知にチェック有り無しにしても駄目でした
参考アプリ
ttp://www.vector.co.jp/authors/VA000007/
これのRegDiffの ALT+1,ALT+2,ALT+3の様なイメージです.
宜しくお願いします.
0304デフォルトの名無しさん
2006/07/28(金) 16:35:450305303
2006/07/28(金) 16:40:00ALT+Fを捕まえてSetFocusする方法というか手順が判らないのです.
ALT+FがCStaticに食べられてしまい親のCDialogに処理が来ない感じなのです.
0306デフォルトの名無しさん
2006/07/28(金) 18:14:03NPlotのようなグラフ描画のdllがあったら教えてください。
但し、MS-OFFICEが必要なものは除きます。
0307デフォルトの名無しさん
2006/07/28(金) 18:19:160308デフォルトの名無しさん
2006/07/28(金) 18:25:43もし、c++でのNPlotの使用例などを紹介しているサイトがあればご紹介
いただけないでしょうか?
0309デフォルトの名無しさん
2006/07/28(金) 18:29:160310デフォルトの名無しさん
2006/07/28(金) 21:05:23符号付演算、浮動少数演算のみ行う形式)VC++でサンプルソース
を探してます!どなたかお勧めのサイト教えていただけないで
しょうか?ちなみに開発環境はVisual Stdio6.0です。
0311デフォルトの名無しさん
2006/07/28(金) 21:09:34ダイアログに処理を食われたくない場合は、WM_GETDLGCODE の動作を乗っ取る・・・だったと思う。
ところで Alt + ??? は、WM_KEYDOWN じゃなくて WM_SYSKEYDOWN じゃなかったっけか
0312デフォルトの名無しさん
2006/07/28(金) 21:11:30もうちょっと知りたいことを絞って。
ダイアログの作り方が知りたいのか、演算解析アルゴリズムが知りたいのか、など。
0313310
2006/07/28(金) 21:24:47ダイアログベースで作りEditbox、ボタン配置はできました。またEditboxに
、ボタンを押すと対応した数字が1桁だけ表示されるところまではいけたの
ですが、そのあと続けて複数桁表示する方法、数値入力処理、演算処理の
アルゴリズムを教えていただきたいです。
0314デフォルトの名無しさん
2006/07/28(金) 22:53:190315デフォルトの名無しさん
2006/07/29(土) 00:25:08私が考えるにCreateWindowだと作れそうだが、リソースのダイアログ内でCONTROL指定した
場合は無理っぽいですがどうでしょうか?えろい人、どうぞ教えてくださいませ。
http://techtips.belution.com/ja/vc/0009/
0316デフォルトの名無しさん
2006/07/29(土) 00:47:09普通に10キー入力をEditBoxに反映させるくらい簡単だから自力で頑張れ。
それができたらEditBoxをもう二個用意し、演算キーが押されたら片方に
演算子を、もう片方にもとのEditBoxのコピーを格納する。
ここまで準備ができたら=キーで演算してそれぞれのEditBoxにセットするだけだ。
#勿論、完成の暁には後からの二つのEditBoxを非表示すればいい。
それをスピンボタンで16進で数値を変更できるようにしたいのですが、可能ですか?
0319デフォルトの名無しさん
2006/07/29(土) 14:06:11何か方法を教えて頂けると助かります。
あと効果音を複数鳴らしたいのですが、簡単に実現できる方法はありますか?
0320仕様書無しさん
2006/07/29(土) 14:39:25可能です
0321デフォルトの名無しさん
2006/07/29(土) 15:27:30きてぃちゃん登場でつか? プ
0322デフォルトの名無しさん
2006/07/29(土) 15:37:020323デフォルトの名無しさん
2006/07/29(土) 17:30:400324デフォルトの名無しさん
2006/07/30(日) 20:58:06表示するときに一番後ろの文字(この場合e)だけ削除して表示する
方法教えてくれませんか?
0325デフォルトの名無しさん
2006/07/30(日) 21:03:11char * str = "abcde";
size_t len = strlen(str);
char * p = new char[len - 1 + 1];
sprintf(p, "%.*s", len - 1, str);
// エディットボックスにpをセット
delete[] p;
0326324
2006/07/30(日) 21:17:30回答ありがとうございます。ちなみにCString型の"abcde"の場合の
方法もありますか?表示方法もSetWindowTextでしたいのですが。
0327デフォルトの名無しさん
2006/07/30(日) 21:21:17少しは自分で考えてみたら?文字列操作なんてもんは基本はどんな言語でも
同じなんだから。
0328324
2006/07/30(日) 21:31:390329デフォルトの名無しさん
2006/07/30(日) 21:35:47ググるのはいいんだが、求めるものとまったく同じでなければわからないって
話でもあるまい?全ては応用問題だ。
とりあえず>325をCStringに書き直してみればいい。それで足りない要素がある
のならそこだけを考えればいい。
あと、質問に答えたら即座に違う質問をするってのは、質問に答えてくれた
>325に失礼なんだってこと。少しは間を置いたり、別の質問として分けるなどの
気遣いが欲しい。
0330324
2006/07/30(日) 21:43:44complex<double> x と書けば、実数部と虚数部がそれぞれdouble型として定義されますよね?
その後、それぞれに任意の値を代入するために、どのようにして各部にアクセスすれば
良いのでしょうか?
x.real、x.imagというようにしてもコンパイルエラーがでました。
↓エラーの内容
「メンバー関数は呼び出すかそのアドレスをとらなければならない」
0332デフォルトの名無しさん
2006/07/30(日) 23:08:250333325
2006/07/30(日) 23:08:35complexのrealは参照を返す関数かconst参照を返すconst関数。
従って、値をセットするには前者を使ってx.real() = 3; x.imag() = 4;などとすればいい。
個別に値を取り出したい場合は後者を使ってprintf("%g, %g\n", x.real(), x.imag());だな。
>>329
>>325に失礼なんだってこと。
ま、別に気にしないけどね。
0334331
2006/07/30(日) 23:16:30ありがとうございます。
しかし、その書き方をしてみたところ、コンパイルで
「左辺値が必要」と言われてしまいました。
何がまずいんでしょうか?
0335デフォルトの名無しさん
2006/07/31(月) 08:02:04何やっても解決しないんだけど何これ、MSのバグか?
0336デフォルトの名無しさん
2006/07/31(月) 08:26:100337デフォルトの名無しさん
2006/07/31(月) 08:28:13お前が理解できてないだけ。
0338デフォルトの名無しさん
2006/07/31(月) 08:31:06もったいぶらずに教えてくれよ。
ソースファイルの一つだけが急にブレークポイント指定できなくなって困ってるんだ。
0339デフォルトの名無しさん
2006/07/31(月) 08:36:10いったいどこでブレークすればいいのか
ソースには実行コードのアドレスなんて書いてないぞ
0340デフォルトの名無しさん
2006/07/31(月) 08:38:22外せば一応動くようには見えるが、これチェック外すのはまずいよな。
何とか元通りに動くようにしたいんだが。
0341デフォルトの名無しさん
2006/07/31(月) 08:41:29でもプロジェクトのプロパティを最近変更したりしてないんだよ。
前からデバッグ情報吐くようにしてるしビルドの構成も変えてないし、
いろいろ触ったけど治らないんだ。
0342デフォルトの名無しさん
2006/07/31(月) 08:42:27ライブラリのソースもいじるやつがいそうだな
0343デフォルトの名無しさん
2006/07/31(月) 08:49:420344デフォルトの名無しさん
2006/07/31(月) 08:57:35ちゃんと入っているぞ。
0345デフォルトの名無しさん
2006/07/31(月) 09:07:06それに、Borlandは持ってないからなあ。
仕方ない、使える間はバージョンチャック外して誤魔化すしかないかな。
0346デフォルトの名無しさん
2006/07/31(月) 09:12:530347デフォルトの名無しさん
2006/07/31(月) 09:15:570348デフォルトの名無しさん
2006/07/31(月) 11:09:08それはさておき、全部リビルドすれば済む話なんじゃないか?
0349デフォルトの名無しさん
2006/07/31(月) 19:36:07単なるリビルドだけじゃダメだった。
でも治ったので一応報告。
1.Release、Debugフォルダをフォルダごと削除して、インテリDB(*.ncb)も削除。
2.ツール>オプション>デバッグ>全般で「元のバージョンと完全に一致するソースファイルを必要とする」
のチェックを外してからブレークポイントを一箇所指定してDebug構成でリビルド、実行。
3.この時点でブレークポイントが有効になるのを確認して、再度1.の作業をする。
4.ツール>オプション>デバッグ>全般で「元のバージョンと完全に一致するソースファイルを必要とする」
のチェックを入れてからブレークポイントを一箇所指定してDebug構成でリビルド、実行。
これで治った。(他にも何かやったかもしれんけど覚えてる限り書いてみた)
>>2もまだダメなら試してみて。
0350デフォルトの名無しさん
2006/08/01(火) 17:37:24unicodeにも対応したWindowsプログラムを作っています。
マクロでUNICODEを定義してTEXTマクロやlstr***関数や
文字列の型をTCHAR型を使ったりしています。
しばらくそれでやっていたのですが、WinMainを変えるのを忘れたと思い
_tWinMain を使って第3引数をPTSTRにしたらリンクエラーが出たので
調べたらtchar.hを使えばいいみたいなので使うと
そのエラーは消えたのですが、C2731が出てしまいます。
エラーはPSTRに戻せばなくなるのですが、せっかく_tWinMainを使っているのに
意味がわからないです。
試しに、tchar.hを使わないで直接自分で_tWinMainマクロを
作ってやると、PTSTRを使っても何も問題なく出来ました。
もちろんwWinMainと直接書いてやっても大丈夫です。
その場合リンクのエラーも出ません。
一応、tchar.hを見てみると_tWinMainを使ったときにwWinMainとWinMainが
選択出来るようにされているような気がするのですが
なぜなのでしょう?
ちなみに、使用しているのはTOOLKIT2003です。
よろしくお願いします。
0351デフォルトの名無しさん
2006/08/01(火) 17:55:24tchar.hはUNICODEじゃなくて、_UNICODEなんだけど。
0352デフォルトの名無しさん
2006/08/01(火) 18:13:53申し訳ない…目が潰れてたようです。
確かにそう書かれてました。ありがとう
でも、webで解説してるところってそれに触れてないところが多いなぁ…
他のバージョンではまた違うのかな
0353デフォルトの名無しさん
2006/08/01(火) 18:36:22<tchar.h>を<windows.h>やその他Platform SDKのヘッダより
後にインクルードするとそんな悲劇は起こりにくい。
どこかのヘッダで、UNICODEが定義されているのに_UNICODEが定義されていないと
それを定義したり、あるいはその逆を行ったりしているはずだから。
0354デフォルトの名無しさん
2006/08/09(水) 20:36:01deleteしてたんだけど、一見正常に動いていた。
delete文を削除するとしっかりメモリリーク起こすけど、
delete文があると正常動作する。
これは正しい結果なんでろうか?
本読んでもググってみても別物として説明されてるんだけど・・・
0355デフォルトの名無しさん
2006/08/09(水) 21:20:29たまたま動いてるのはおそらく
内部でfree()かそれに相当する処理を呼ぶような実装だからだと思う
0356デフォルトの名無しさん
2006/08/09(水) 21:48:34サンクス、やっぱり別物なんだね。
free()に直しときます。
0357デフォルトの名無しさん
2006/08/09(水) 21:50:51俺なら質問する前に直しているだろうなぁ。
0358デフォルトの名無しさん
2006/08/09(水) 22:05:28そのままdeleteを使わないって意味で書いただけだよ。
でもfree()が中で何やってるか判ると面白いんだけど
定義があるだけでソースは覗けないんだね。
0359デフォルトの名無しさん
2006/08/09(水) 22:51:02お前プログラマに向いてないから、さっさとやめてしまえ
0360デフォルトの名無しさん
2006/08/09(水) 23:05:250361デフォルトの名無しさん
2006/08/09(水) 23:19:450362デフォルトの名無しさん
2006/08/09(水) 23:19:50意味の無い煽りか?
>>354のような考え方をするプログラマなぞ、この世にいらんのだが。
0363デフォルトの名無しさん
2006/08/09(水) 23:25:41デバッグモードにして、逆アセンブルの表示にしてステップ動作をすると
覗ける。但しアセンブラの知識が必要だけどな。
0364デフォルトの名無しさん
2006/08/10(木) 14:36:09万年デスマ要員乙www
0365デフォルトの名無しさん
2006/08/10(木) 23:05:2214:30に「www」か?ごくろーさん
0366デフォルトの名無しさん
2006/08/11(金) 00:29:400367デフォルトの名無しさん
2006/08/11(金) 10:52:330368デフォルトの名無しさん
2006/08/13(日) 01:06:04くだスレだ好きに居座っとけよ
www使いの低脳
0369デフォルトの名無しさん
2006/08/13(日) 01:59:17ただちょっと激務で寝てなくて脳に毒がたまってるんだ
0370デフォルトの名無しさん
2006/08/13(日) 02:06:550371デフォルトの名無しさん
2006/08/13(日) 02:20:08ここで好きなだけ愚痴るといいと思うよ
0372デフォルトの名無しさん
2006/08/13(日) 06:35:18struct man{
char name[32];
int age;
};
int main()
{
struct man student;
strcpy(student.name,"山田太郎");
student.age=16;
printf("生徒の名前は%sです\n",student.name);
printf("年は%sです\n",student.age);
return 0;}
これどこか間違ってるところありますか?
本に書いてあったやつをそのまま写したつもりなんですが
strcpy識別子は、引数依存の照合を使用しても見つかりません
ってなります
0373デフォルトの名無しさん
2006/08/13(日) 06:37:57つ[#include <string.h>]
あー、処でC++としてコンパイルしていないか?
混乱するといけないからCとしてコンパイルした方がいい気もするが。
0374デフォルトの名無しさん
2006/08/13(日) 06:39:040375デフォルトの名無しさん
2006/08/13(日) 14:45:180376デフォルトの名無しさん
2006/08/13(日) 17:04:300377デフォルトの名無しさん
2006/08/17(木) 22:56:010378デフォルトの名無しさん
2006/08/17(木) 23:01:350379デフォルトの名無しさん
2006/08/17(木) 23:07:250380377
2006/08/17(木) 23:22:50C(C99?)だけでは使えない?
0381デフォルトの名無しさん
2006/08/17(木) 23:24:26mallocaでも使っとけ。
0382デフォルトの名無しさん
2006/08/17(木) 23:32:460383デフォルトの名無しさん
2006/08/17(木) 23:38:440384デフォルトの名無しさん
2006/08/18(金) 00:29:550385デフォルトの名無しさん
2006/08/18(金) 00:37:460386デフォルトの名無しさん
2006/08/18(金) 02:19:19っていう話が開発チームあたりから出てた気がする
0387デフォルトの名無しさん
2006/08/18(金) 02:27:430388デフォルトの名無しさん
2006/08/18(金) 02:37:330389デフォルトの名無しさん
2006/08/18(金) 07:55:24C++のTR1には、C99で拡張された標準ライブラリが含まれている。
0390デフォルトの名無しさん
2006/08/18(金) 09:11:00CがC++に合わせた方がいい
0391デフォルトの名無しさん
2006/08/19(土) 00:02:58http://pc8.2ch.net/test/read.cgi/tech/1140806916/
今はデータ落ちしていますが、上記スレの267さんが
> Professional Editionだろうと何だろうと使ってるライブラリの名称は入れる仕様らしい。
と書かれていますが、Microsoft製以外のランタイムライブラリの名称も入れる仕様でしょうか。
0392デフォルトの名無しさん
2006/08/19(土) 00:19:020393デフォルトの名無しさん
2006/08/19(土) 00:19:440394デフォルトの名無しさん
2006/08/19(土) 01:48:37const char *text = "xxxxx";
this->textBox1->Text = text;
と入力しても、System::Stringに変換できなくてエラーを吐きます。
どうしたら良いでしょうか。アドバイスお願いします。
0395デフォルトの名無しさん
2006/08/19(土) 02:50:19TextBox1->Text = gcnew String(text);
C++/CLIはこちらのスレの方が適当かもしれん。
つ くだすれC++/CLI(初心者用)
0396デフォルトの名無しさん
2006/08/19(土) 11:29:10C++/CLIならtextBox1->Text = gcnew System::String(text);
Managed C++ならgcnewをnewにすればよい。
0397394
2006/08/19(土) 14:04:460398391
2006/08/19(土) 17:47:310399デフォルトの名無しさん
2006/08/19(土) 17:49:43質問内容をまとめて、改めて質問しなおせ
0400デフォルトの名無しさん
2006/08/19(土) 18:58:09説明不足ですみません。
使ってるライブラリの名称を入れるというのは、
コンパイルした実行可能ファイルに
使ってるライブラリの名称を埋め込むということです。
0401デフォルトの名無しさん
2006/08/19(土) 21:37:59http://www.microsoft.com/japan/msdn/vstudio/express/visualc/usingpsdk/
↑のURLに書いてある通りにしてそのままコンパイルすると
空のウィンドウとメニューバーを作成するプログラムが出来ますが
このプログラムは再配布が必要なDLLに依存しているのでしょうか。
0402デフォルトの名無しさん
2006/08/19(土) 22:02:08# コマンドラインで使える、似たようなツールある?
0403デフォルトの名無しさん
2006/08/19(土) 22:25:480404デフォルトの名無しさん
2006/08/19(土) 22:32:470405デフォルトの名無しさん
2006/08/19(土) 22:38:340406デフォルトの名無しさん
2006/08/19(土) 22:49:100407400
2006/08/20(日) 00:03:090408デフォルトの名無しさん
2006/08/20(日) 00:24:44よく分からないので、勘で書く。
あるEXE内に、使用するライブラリ名称の文字列が埋め込まれるかどうかという話であれば、
それがMS製かどうかにかかわらず埋め込まれる。
そうしないと、ロードできないので。
0409デフォルトの名無しさん
2006/08/20(日) 01:03:38分かりにくかったですか、すみません。
その勘で合っています。回答ありがとうございました。
0410デフォルトの名無しさん
2006/08/20(日) 01:21:390411409
2006/08/20(日) 02:02:11Microsoft Visual C++ Runtime Library
という文字列を消して配布するとライセンス違反になるらしいのですが、
本当でしょうか。
0412デフォルトの名無しさん
2006/08/20(日) 02:49:19ライセンス関連はメーカーに聞いたほうがいいぞ。
> * 再頒布可能コードにおける著作権、商標または特許の表示を改変すること。
俺が、削除することはは改変に当たらないと思って、
問題ないと答えれば、間違ってたとき、困るのはお前だ。
0413デフォルトの名無しさん
2006/08/20(日) 03:06:470414デフォルトの名無しさん
2006/08/20(日) 19:27:45その使用許諾書には次のようにありました。(便宜上、下の文は適時改行を行っています。)
5. アクティベーション (ライセンス認証) の義務。
本ソフトウェアは、許可されていない使用を防止するため、
アクティベーションが必要な場合があります。
インストールの際に提示される手順でアクティベーションを実行しない場合、
本ソフトウェアが使用できなくなります。
本ソフトウェアのアクティベーションは、インターネットで行うことができます。
アクティベーションに際して、インターネットの通信料金が発生することがあります。
お客様がコンピュータのハードウェア構成を変更した場合や、
本ソフトウェアの設定を変更した場合には、
本ソフトウェアのアクティベーションを再度行う必要が生じることがあります。
本ソフトウェアは、アクティベーションが実行されるまで、
アクティベーションが必要なことをお知らせします。
検索して調べてみると、ハードウェア構成や設定を変更した時に、Web/ISOのどちらから
インストールした場合でも、アクティベーションが必要になることはないと書かれていましたが
これは事実でしょうか。
0415デフォルトの名無しさん
2006/08/20(日) 20:36:030416デフォルトの名無しさん
2006/08/21(月) 03:48:35作成したアプリケーションの
インストーラを作ろうとしているのですが、
setupのプロジェクトをビルドしている間に
インストールの準備画面が出て、
1706エラー で
有効なソースが見つかりません。
という感じのことを言われてしまい
setup.exeもできません。
1706 エラー などでぐぐって見ましたが
解決策を見つけることができませんでした。
どなたか、解決策をご教授ください。
0417デフォルトの名無しさん
2006/08/21(月) 16:15:25win32プロジェクトを開いてそのままビルドしようとしたら
undefined keyword or key name: DS_MODALFRAME
ってなりました
誰か助けてください
0418416
2006/08/21(月) 18:42:440419デフォルトの名無しさん
2006/08/21(月) 18:46:170420416
2006/08/21(月) 18:46:360421417
2006/08/21(月) 21:11:57使い物にならないオタクどもは死ね
0422417
2006/08/21(月) 21:16:070423デフォルトの名無しさん
2006/08/21(月) 22:11:17後続のために解決法を書くくらいしろよ。
まあ>>417はネタっぽいが。
0424デフォルトの名無しさん
2006/08/21(月) 22:31:540425416
2006/08/21(月) 23:05:37いやいや、自己解決してません。
あなただれ?
きっと2chに慣れてない私への嫌がらせなんでしょう。
これでショックを受けてしまった私って
2chに書き込むべきではない??
0426425
2006/08/21(月) 23:19:500427デフォルトの名無しさん
2006/08/21(月) 23:20:500429デフォルトの名無しさん
2006/08/21(月) 23:22:19メンバ登録の、もっと親切なサイトに行ったら。
0430425
2006/08/21(月) 23:28:13わかりました。ありがとうございました。
0431425
2006/08/21(月) 23:32:44お騒がせして申し訳ありません。
最初の私の質問がきっと悪かったのですね。今度からはもう少し自分で努力を
してから質問を書くようにします。
しばらく私はこのスレには書き込みません。今後出てくるのは私の偽者ですので
無視してください。
0432425
2006/08/21(月) 23:37:490433デフォルトの名無しさん
2006/08/21(月) 23:39:540435デフォルトの名無しさん
2006/08/22(火) 02:34:390436デフォルトの名無しさん
2006/08/22(火) 03:35:47俺もなったが、再インストールで直った。
0437デフォルトの名無しさん
2006/08/22(火) 03:37:500438デフォルトの名無しさん
2006/08/22(火) 05:17:240439417
2006/08/22(火) 09:35:540440デフォルトの名無しさん
2006/08/22(火) 09:43:581706 16 System table '%.*s' was not created, because ad-hoc updates to system catalogs are not enabled.
0441デフォルトの名無しさん
2006/08/22(火) 09:44:180442417
2006/08/22(火) 10:15:280443417
2006/08/22(火) 10:16:440444417
2006/08/22(火) 10:27:29してねーよ
しつこいよあんた
0445デフォルトの名無しさん
2006/08/22(火) 12:51:370446デフォルトの名無しさん
2006/08/22(火) 22:26:22Visual C++で作ったC++アプリケーションがその動作に
.NET Framework2.0を要求するなんて事って、あるんでしょうか。
友達に作ったアプリを渡したら.NET Framework2.0を入れたら動いた、と言われました。
別にC++/CLIとか使っていないんですが・・・。
どなたか分かる方お願いします。VSのバージョンはVisual Studio 2005 Standard Editionです。
0447デフォルトの名無しさん
2006/08/22(火) 22:41:280448デフォルトの名無しさん
2006/08/22(火) 23:04:53いえ、ちゃんとWIN32コンソールアプリケーションにしました。
あと、プロジェクトの構成プロパティの「共通言語ランタイム サポート」も
「共通言語ランタイム サポートを使用しない」にしています。
0449デフォルトの名無しさん
2006/08/22(火) 23:07:11購入を検討しております。
今月まで学生で、来月から仕事始まるんですけど、いまアカデミックパック
を買ったは良いが今後のサポート等が学生ではないから打ち切られる
なんて事になったりはしないですか?
また、購入したは良いがインストール時に学生証が必要になって、
卒業後はインストールが出来ないとかいう罠に陥ったりしないか心配です。
0450デフォルトの名無しさん
2006/08/22(火) 23:11:350451デフォルトの名無しさん
2006/08/22(火) 23:15:54ランタイムライブラリを動的リンクしているのはないだろうか。
.NET Framework 2.0にはVC++ 2005用のランタイムも含まれているので、
それをインストールして通常のC++アプリケーションが動くようになるということは十分考えられる。
0452デフォルトの名無しさん
2006/08/23(水) 00:50:08CランタイムをMT で静的にリンクする。
または、STD版以上ならインストーラを作る。
または、これを別途インストールさせる。
ttp://www.microsoft.com/downloads/details.aspx?familyid=32BC1BEE-A3F9-4C13-9C99-220B62A191EE&displaylang=ja
0453デフォルトの名無しさん
2006/08/23(水) 03:20:580454デフォルトの名無しさん
2006/08/23(水) 03:22:300455デフォルトの名無しさん
2006/08/23(水) 03:23:46他のライブラリを使用してネィティブな機械語コードの作成は可能ですか?
0456デフォルトの名無しさん
2006/08/23(水) 03:32:310457455
2006/08/23(水) 04:18:120458デフォルトの名無しさん
2006/08/23(水) 04:21:220459デフォルトの名無しさん
2006/08/23(水) 10:26:46>>452
ありがとうございます!
Dependency Walkerで調べたところ、
MSVCR80.DLL
MSVCP80.DLL
に依存しているみたいです。
「Microsoft Visual C++ 2005 再頒布可能パッケージ (x86)」をインストールすると
二つのDLLなどを含むVC++アプリを実行するために必要なものがシステムに入るという
理解で良いのでしょうか。
あと、再配布可能ということは、これをパッケージをそのまま相手に渡してもかまわない
ということでしょうか。
0460デフォルトの名無しさん
2006/08/24(木) 02:54:52初歩的質問ですが
whileループで連続文字入力中にEOFで入力終了を検知させるのに
Ctrl + Z
を押しても無視されるのを使えるようにしたいんですが
どうしたらいいでしょうか?
0461デフォルトの名無しさん
2006/08/24(木) 03:16:16ソースをさらしたほうが早い気がする。
0462デフォルトの名無しさん
2006/08/24(木) 08:32:57標準入力が^Zで閉じられるのを回避したいのなら、標準入力を諦めてその他の入力手段を使え。
0463デフォルトの名無しさん
2006/08/24(木) 12:57:20.NET Framwork 2.0 SDKにMASMは付属しているでしょうか?
0464デフォルトの名無しさん
2006/08/24(木) 13:14:24知らん!
Visual C++ 2005 Expressインスコしてるなら、
http://www.microsoft.com/downloads/details.aspx?FamilyId=7A1C9DA0-0510-44A2-B042-7EF370530C64&displaylang=en
でインストール可能。商用不可。
0465デフォルトの名無しさん
2006/08/24(木) 19:21:33たとえば、
while ((ch = getchar()) != EOF) {
ch = toupper(ch);
putchar(ch);
}
において、Ctrl + Z(UNIXでは Ctrl + D )
でループを抜けると書籍にありますが
無視されるようです(Win2000使ってます)。
検索してみると
「Ctrl+Z」は「Undo」のショートカットキーになっているためか、
その後の printf() などの出力を打ち消してしまう
この現象はWindows9xとMeのDOS窓のバグのようです。
とあります。
eclipseというのではキーバインディングを変えるとか出てますが
ttps://bugs.eclipse.org/bugs/show_bug.cgi?id=34052
0466デフォルトの名無しさん
2006/08/24(木) 19:39:47あと、chの型は?
0467デフォルトの名無しさん
2006/08/24(木) 22:21:47int ch;
です。
Ctrl + C
だと強制終了みたいです
0468デフォルトの名無しさん
2006/08/24(木) 22:48:38ソースコードを修正なしで、VC++ Professionalのunmanagedコードとして
コンパイルすることって可能ですか?
0469デフォルトの名無しさん
2006/08/25(金) 00:58:16それはEclipse内での話じゃないのか?
cmd.exeの話なら普通にCtrlZが使えるぞ。
0470デフォルトの名無しさん
2006/08/25(金) 23:52:45>>335
「ブレークポイントは、現在の設定 ではヒットしません。ソースコードが元のバージョンと異なります。」
おれも今なって、なんとか解決した。
ビルドの設定とかは全く関係ない。
大体、突然発生したものだし。
問題は、ブレークポイントが設定できないCPPファイルのテキストコードがおかしくなってて
正常に読み込めなくなっているからだった。
このCPPファイルをバイナリエディタで読み込んで、全コードをコピーしようとしたら必ずエラーが発生した。
分割して何とか全コードをコピーしてみてみると、バイナリエディタに表示されたコードと異なって、
途中に00がたくさん出てくるコードになってた。
新規テキストドキュメントを作成して、CPPファイルをコピーしても同じだった。
で結局、オレの場合は、1行何百桁だか何千桁の行が1つあって、それを複数行にしたら直った。
一時的にテストで、大きな配列に1000個くらいのテキストデータを代入したものだったが、馬鹿だった。
他に、キャリッジリターンのコードが変で、「ブレークポイントは、現在の設定 ではヒットしません。
ソースコードが元のバージョンと異なります。」が出た人もいるようだ。
オレの場合はこれは関係なかった。
http://www.freeml.com/message/[email protected]/0000411
0471470
2006/08/26(土) 00:10:49バイナリエディタでコピーがエラーになるのは、単にファイルがでかくなりすぎてたからでした・・・orz
でも、長すぎた1行を50行に分割したら直ったのはホンマです。
0472デフォルトの名無しさん
2006/08/26(土) 01:10:05>一時的にテストで、大きな配列に1000個くらいのテキストデータを代入したものだったが、馬鹿だった。
いや、まあ、その、なんだ。
自分でもわかってるんだろうし、いいや。
0473デフォルトの名無しさん
2006/08/26(土) 18:10:48「ブレークポイントは、現在の設定 ではヒットしません。ソースコードが元のバージョンと異なります。」 がでた。
Ctrl+Zで削除した関数を復活させて/* */で囲んだら出なくなった。いらん関数が消せねー。
結局、VSのバグだな。
0474デフォルトの名無しさん
2006/08/26(土) 18:33:07ユニコード関連のバグと一緒かもな。
0475デフォルトの名無しさん
2006/08/27(日) 00:54:13MFCとか使ってなきゃ可能だろ
0476デフォルトの名無しさん
2006/08/27(日) 19:00:56VC6、SDK環境で開発してるのですが
MFCのCMonthCalCtrlコントロールは
SDKではなんと呼ばれているんでしょうか
ダイアログ画面のツールチップでは月間予定表と表示されますが
これでググってもCMonthCalCtrlや.NET
そして関係なさそうな情報がいっぱいヒットしますorz
0477デフォルトの名無しさん
2006/08/27(日) 19:05:34ttp://www.kumei.ne.jp/c_lang/sdk2/sdk_178.htm
0479デフォルトの名無しさん
2006/08/27(日) 20:13:27477の"date and time picker control"はMFCではCDateTimeCtrl
MFCのCMonthCalCtrlは"month calendar control"
猫の中だとこっちのページ↓
ttp://www.kumei.ne.jp/c_lang/sdk2/sdk_181.htm
0480デフォルトの名無しさん
2006/08/27(日) 20:15:24すみません
ソースを提出しろって言われた場合具体的に何を提出すればいいんですか?
○○○.cppってやつでいいんですか?
0481デフォルトの名無しさん
2006/08/27(日) 20:26:56コンパイルが通るソースファイル群、一セットじゃね?
その○○○.cppだけでコンパイルが通ってモノが出来るなら、
それだけでいいと思われ。
0482425
2006/08/27(日) 20:27:19出せと言った奴に聞け。条件によって異なる。
0483デフォルトの名無しさん
2006/08/27(日) 20:29:01>480 は学生に10シュクダイ
0484476
2006/08/27(日) 21:02:54どもです!
最初質問したほうはこっちのほうなんですね
複数選択もできるみたいなのでじっくり見てきます
スケジュール管理ソフトを作ろうとしてたので助かりました!
0485デフォルトの名無しさん
2006/08/27(日) 21:16:25VC++2005を使っているのですが
サンプルが使えない所が多く困っています。
0486デフォルトの名無しさん
2006/08/28(月) 01:14:030487デフォルトの名無しさん
2006/08/28(月) 14:08:070488デフォルトの名無しさん
2006/08/28(月) 14:21:31その回答はProfessional→Expressの時の話だから的外れ。
確かにPro→Expの場合はMFCとか使わないならいけるけど。
まあ、Exp→Proの場合も何の修正なしにでもいけるだろう。
0489デフォルトの名無しさん
2006/08/28(月) 15:55:23Visual C++を立ち上げようとしたら、
『プライマリプラットフォームがありません。
ビルドシステムは使えません。セットアップがインストールしたアドオンプラットフォーム(.PKG)のロードに失敗した可能性があります。』
ってメッセージが出て、起動できないのですが、
どうすれば直るか、ご存知の方、いらっしゃいませんか?
もう4,5回アンインストール、インストールを繰り返していますが、
うまくいきません。
ご存知の方いらっしゃいましたら、お助けください
0490489
2006/08/28(月) 15:56:35Visual Stadio6.0→Visual Studio6.0
0491476
2006/08/28(月) 22:41:12VC6、SDK環境です
MFCのクラスや<time.h>以外で
よく使われてそうな日付を扱うクラスってありますか?
0492デフォルトの名無しさん
2006/08/28(月) 23:16:55ttp://wisdom.sakura.ne.jp/system/winapi/win32/win48.html
0494デフォルトの名無しさん
2006/08/30(水) 00:56:32レスありがとうございます。
ProfessionalとExpressは、MFC等を除いて
基本的にどちらも同じプログラムで良いということですか?
0495デフォルトの名無しさん
2006/08/30(水) 03:50:170496デフォルトの名無しさん
2006/08/30(水) 09:33:080497デフォルトの名無しさん
2006/08/30(水) 09:35:580498デフォルトの名無しさん
2006/08/30(水) 09:51:440499デフォルトの名無しさん
2006/08/30(水) 10:04:38GetProcAddressの引数に関数名が要りますし、先にDLLの中を確認できれば安心して開発できそうでつ。
0500デフォルトの名無しさん
2006/08/30(水) 10:05:510501デフォルトの名無しさん
2006/08/30(水) 10:13:19真ん中のペインに関数が見れます田。これは便利なツールでつね。
M$CでWinソフトを作ってたときから今日まで知りませんでした。
0502デフォルトの名無しさん
2006/08/30(水) 10:48:27これってどういう意味なんでしょう?
0503デフォルトの名無しさん
2006/08/30(水) 10:54:050504デフォルトの名無しさん
2006/08/30(水) 11:04:24これって何者で、
>サポートされてないよ。
どのコンパイラが対応してるんでしょ?
0505デフォルトの名無しさん
2006/08/30(水) 11:43:15シングルにはわけあって出来ません
クラス内からスレッドを作る時にクラスのポインタを渡しています
スレッド内からポインタを参照してメンバ変数にアクセスすると未設定値が帰ってきます
値は設定済みです
このクラスは複数実行されるのでグローバル変数は使えません
メンバ変数は数値や配列やクラスなどいろいろあります
このメンバ変数に設定された値を正常に取得するにはどうしたらいいのでしょうか?
0506デフォルトの名無しさん
2006/08/30(水) 11:44:340507デフォルトの名無しさん
2006/08/30(水) 11:55:440508デフォルトの名無しさん
2006/08/30(水) 12:01:04再現する最小のコードにする過程で問題が解決するか、そもそもその能力がないから。
0509デフォルトの名無しさん
2006/08/30(水) 15:08:16配布するには、どーすりゃいいんですか?
2005expressが入っていないマシンで動かしてもらったら、動かないといわれたんですが
0510デフォルトの名無しさん
2006/08/30(水) 15:12:40>Salford run-time library
>Stack Overflow: Re-link program with bigger stack value.
>(stack:reserve,commit)
>.Wll attempt to trace back
エラーが出ます。
少しずつアプリのStack Sizeを大きくしましたが現象は同じで、
0x2,000,000でアプリが起動しなくなりました。
どうしたら良いでつか?
0511デフォルトの名無しさん
2006/08/30(水) 15:23:44CLR使ってるなら.NET Frameworkの再配布モジュールを入れさせる。
ATLやMFCなども使ってたら別にvcregist_x86も必要。
どっちもMSのサイトからダウンロードできる。
もしDEBUGビルドを渡してるならReleaseで作り直せ。
0512デフォルトの名無しさん
2006/08/30(水) 15:26:34ところでそのDLLにインポートライブラリは付いてないのか?
付いてるならそれを使ったほうがいいぞ。
0513510
2006/08/30(水) 15:32:14確か、DLLからインポートライブラリ作れるんですよね?
0514デフォルトの名無しさん
2006/08/30(水) 17:57:110515デフォルトの名無しさん
2006/08/30(水) 23:05:59多分大丈夫だと思うよ。
試したことないんで、試したことのある人は報告でも頼む。
0516デフォルトの名無しさん
2006/08/31(木) 04:09:53色々調べてみてもダイアログに関することしか載ってないのですが、こういう場合はウィンドウを作らずにダイアログボックスをメインウィンドウの代わりにする・・・様な方法を使うしかないんでしょうか?
0517デフォルトの名無しさん
2006/08/31(木) 11:08:03できましたー。
どもです。
0518デフォルトの名無しさん
2006/08/31(木) 19:27:36どんなことでもできるよ
いろいろやり方が違うだけ
スプリッターにはめこむのと、上の乗せるだけでもやり方が違う
0519デフォルトの名無しさん
2006/08/31(木) 19:35:32基本を覚えとくと理解しやすいので教えときますと
フレームクラスは外枠のみだと思ってください
外枠にはなにも乗せられません
この外枠にはめこまれてるのがウィンドウクラスです
ウィンドウクラスはすべての部品クラスの原型です
ダイアログもボタンもすべてウィンドウクラスです
例えば外枠にダイアログをはめ込むなんてこともできます
つまりはめ込ませた先のウィンドウクラスにならボタンを貼り付けることができます
0520デフォルトの名無しさん
2006/08/31(木) 20:17:13ReBar で検索してミソ。
やりたいことによってはReBarでいけるかもしれん。
0521デフォルトの名無しさん
2006/08/31(木) 21:45:46フレームクラスもウインドウですよ
上にViewが乗っかってる場合が多いけど
0522デフォルトの名無しさん
2006/08/31(木) 22:22:21だれも内部的な話はしてなねーよ
概念の話してんだよ
0523デフォルトの名無しさん
2006/09/02(土) 18:22:37頻繁に固まるようになってしまっていい加減ぶち切れ気味なので、
OS入れなおしついでにVS2005買って入れようかと思います。
C++/CLIとか新しいのがあるみたいですが、
C/C++とWin32APIの勉強しかしてなくて、ついでに.NET Frameworkを
配布先のPCに要求するのも嫌なので、入れなくてすむようにしたいと思うのですが、
GUI構築の機能はなにやら便利そうなので使ってみたいんですけど、
.NET Framework無しでも利用できる手段ってありますか?
0524デフォルトの名無しさん
2006/09/02(土) 19:19:29先ずはExpressEditionをダウンロードして試してみたら?
で、2005EEスレに行けばデザインツールも紹介されていたと思う。
0525デフォルトの名無しさん
2006/09/02(土) 21:35:06>C/C++とWin32APIの勉強しかしてなくて、ついでに.NET Frameworkを
>配布先のPCに要求するのも嫌なので、入れなくてすむようにしたいと思うのですが、
散々出てることなのだがこれは間違い。配布先はvcredist_x86.exeでおk〜。
http://www.microsoft.com/downloads/details.aspx?FamilyId=32BC1BEE-A3F9-4C13-9C99-220B62A191EE&displaylang=ja
0526デフォルトの名無しさん
2006/09/03(日) 15:50:240527デフォルトの名無しさん
2006/09/03(日) 15:55:070528デフォルトの名無しさん
2006/09/03(日) 15:56:12直ダメ
0529デフォルトの名無しさん
2006/09/04(月) 00:28:010530デフォルトの名無しさん
2006/09/04(月) 03:57:470531デフォルトの名無しさん
2006/09/04(月) 14:59:441. スケルトンを生成(Win32 アプリケーション)。
2. F5。
3. ウィンドウが出てこない。
4. デバッグメニューからデバッグ停止。
5. 「デタッチできません」とか言われてとりあえずデバッガは止まる。
6. タスクマネージャからプロセスを殺す。
7. タスクマネージャがフリーズ。
上記の手順3番目以降、シャットダウン、再起動不能。
電源落とすしか・・・
という現象に陥ってます。
解決法を教えてください。
ちなみに、MFCアプリケーションで
生成したスケルトンでも同様の現象になります。
OS win2k
VisualStudio .NET 2003
0532デフォルトの名無しさん
2006/09/04(月) 18:51:530533デフォルトの名無しさん
2006/09/04(月) 18:59:280534デフォルトの名無しさん
2006/09/07(木) 21:35:240535デフォルトの名無しさん
2006/09/08(金) 06:21:440536デフォルトの名無しさん
2006/09/08(金) 08:21:440537デフォルトの名無しさん
2006/09/08(金) 08:34:220538デフォルトの名無しさん
2006/09/08(金) 08:57:05つか、存在するの?
0539デフォルトの名無しさん
2006/09/08(金) 09:01:37ただの検定試験だろ
実社会では何の意味も持たないよ
0540デフォルトの名無しさん
2006/09/08(金) 12:38:06下記のようにタイトル部を中央配置にして、データ部を左配置にしたいのですが。
| (タイトル) |
|データ1 |
|データ2 |
|データ3 |
|_______|
0541デフォルトの名無しさん
2006/09/08(金) 13:14:03hogeを構成するcppファイルやヘッダファイル内部のすべてのhogeをmogeに置換して
(cppファイルやヘッダファイルの)ファイル名も
それらが入ってるフォルダ名もhogeが使われているものはすべてmogeにしたのですが
生成されるexeはhoge.exeのままです。
どうやったら完全にhogeプロジェクトをmogeプロジェクトに生まれ変わらせられるのですか?
0542デフォルトの名無しさん
2006/09/08(金) 17:22:35メニューからダイアログを呼び出すプログラムを作ってるんだけど。
「猫でもできる」を参考にしたらできるけど、
.NETで自動生成された骨組を使って作ったら表示されません。
なにかサンプル載ってるサイトとかないかな?
0543素人
2006/09/08(金) 18:13:25ソリューションエクスプローラから[リソースファイル]-[○○○.ico]を
ダブルクリックすると、イメージエディタに○○○.icoが表示されようですが、
ペイントで表示されてしまいます。
ちなみに『Microsoft Visual C++ 2005アプリケーション開発入門』(日経BPソフトプレス)
には、上記の方法でやれば、できると書いています。
設定とか必要でしょうか?
0544デフォルトの名無しさん
2006/09/08(金) 18:33:01猫なんぞを使うなら、frameworkは使えない。
0545デフォルトの名無しさん
2006/09/08(金) 18:36:37と言ってた
0546デフォルトの名無しさん
2006/09/08(金) 18:39:59どっか変換が不完全なのか、中間ファイルが消えてないんでない?
検索してもhogeが見つからずリビルドしてもだめなら、中間ファイルを根こそぎ消してみるといいかも。
0548素人
2006/09/08(金) 19:57:380549デフォルトの名無しさん
2006/09/08(金) 20:10:290550素人
2006/09/08(金) 20:21:00ピクセルとかその辺の設定ができるソフトがないので。
0551デフォルトの名無しさん
2006/09/08(金) 20:40:310552デフォルトの名無しさん
2006/09/09(土) 09:06:40IEのお気に入りのようにツールバーにアイコンがあって、
それを押すと左側に出したり消したりできるウィンドウが作りたいのですが
こういうウィンドウを作ろうと思ったら
一般的にはMDIを利用することになるのでしょうか?
0553541
2006/09/09(土) 12:28:41ファイルを隅から隅まで手動で検索してもhogeの文字はなく
中間ファイルを(手動/自動で)消したりDebugビルドのフォルダそのものを消してみたりしましたが
やっぱり生成されるのはhoge.exeです。
もうわからなくなってきた…
0554デフォルトの名無しさん
2006/09/09(土) 12:37:09シーンクラスはCSceneを継承するとして、シーン基本クラスを
virtual void Init(CD3DManager *pD3DManager, CInputManager *pInputManager) = 0;
virtual void Update() = 0;
virtual void Draw() = 0;
と定義し、CSceneManagerにシーンスタックを持たせようと考えたのですが、
vector<CScene> m_SceneStack;
で定義すると、 抽象クラスをインスタンス化できません。というエラーが出ます。
vectorを使うのは初めてで、どうも解決法が思いつかないのですが、どうすればよいでしょうか…?
0555デフォルトの名無しさん
2006/09/09(土) 12:38:53新規で空のmogeプロジェクト作って、ファイル追加したほうが早くない?
0556デフォルトの名無しさん
2006/09/09(土) 12:38:55抽象クラスをインスタンス化できないのは、vectorは無関係。それはそういうもの。
ポインタを使え。
0557デフォルトの名無しさん
2006/09/09(土) 12:41:53ああなるほど。
単純なミスですね・・・orz
即レスありがとうございます。
0558541
2006/09/09(土) 12:49:45ソリューションエクスプローラの左上のmogeソリューションのプロパティから
リンカ→出力ファイルを選んで「hoge.exe」から
「moge.exe」に書き換えるとOKでした。
>>555
もうちょっとやってダメだったらそうしようと思ってましたw
0559554
2006/09/09(土) 13:02:43例えばCSceneManagerというクラスがCSceneの制御をする構造で、
CSceneクラス側からも、若干の制御をしたいのですが、
CSceneはCSceneManagerが見えていないのでポインタを持つことも出来ません。
つまり、
CSceneManager → CScene は見える
CScene → CSceneManager は見えない
という状況でCScene側からCSceneManagerを制御する方法ってありませんかね?
以前作ったプログラムではCSceneにフラグを持たせて、
毎回CSceneManagerがチェックするという方法を取ったのですが、
どうもスマートじゃないな、と思ったので。
0560デフォルトの名無しさん
2006/09/09(土) 13:31:43CSceneのコンストラクタにCSceneManagerへのポインタを渡してやる
0561デフォルトの名無しさん
2006/09/09(土) 15:08:34どう見ても、ソリューションファイル内の文字列を書き換えてナインジャマイカ。
0563デフォルトの名無しさん
2006/09/09(土) 15:38:30へ?なんで?呼び出せるじゃん
0564554
2006/09/09(土) 15:56:10[CSceneManager.h]
#include "CScene.h"
class CSceneManager{
private:
vector<CScene> *m_pSceneStack;
};
[CScene.h]
#include "CSceneManager.h"
class CScene{
private:
CSceneManager *m_pSceneManager;
};
これでビルドすると、CSceneManagerがCSceneを定義するのは認められるのですが、
CScene.h内でCSceneManagerというオブジェクトが定義されていないよー、
というエラーがでるんです…。
0565デフォルトの名無しさん
2006/09/09(土) 15:59:500566デフォルトの名無しさん
2006/09/09(土) 16:01:250567デフォルトの名無しさん
2006/09/09(土) 16:39:520568554
2006/09/09(土) 16:56:03[CScene.h]にて
Class CSceneManager:
の前方宣言で解決しました。
助言して下さった皆様、本当にありがとうございました。
0569デフォルトの名無しさん
2006/09/09(土) 21:16:11visualbasicみたいな、命令の違いってあるんですか?(ツッコミどころ満載だけど、超初心者なので許してクレ-)
0570デフォルトの名無しさん
2006/09/09(土) 21:26:06大文字小文字w
うそ、ごめん、おれはわかんね
0571デフォルトの名無しさん
2006/09/09(土) 21:27:18当然新しい方が準拠度は高い
0572デフォルトの名無しさん
2006/09/09(土) 23:29:21ご回答ありがとうございます!!
準拠度が高いってことは、オリジナルのC++に近くなってるってことですかね。
実際よくわかりませんが、とりあえず、ExpressEditionで勉強してみます。
ついでといってはなんですが、お勧めのVC++勉強用の書籍とかサイトとかがあったら
ゼヒ教えてください
>>570
ご指摘ありがとうw
0573デフォルトの名無しさん
2006/09/09(土) 23:34:25C#かVBかJAVAにしとけ
0574デフォルトの名無しさん
2006/09/09(土) 23:34:32VC++勉強用の書籍とかサイトじゃなくて
C++勉強用の書籍とかサイト
0576デフォルトの名無しさん
2006/09/09(土) 23:37:23VC++でC++もできるけどそれはVC++じゃなくてC++です。
0577デフォルトの名無しさん
2006/09/09(土) 23:38:000578デフォルトの名無しさん
2006/09/09(土) 23:48:50VBも考えたのですがランタイムが必要だし、色々な心意気の面で、ちょっと...
javaはC++の後にやろうと思ってます、でもC#の方がC++より習得し易いんですかね、
初めて知りますた。
0579デフォルトの名無しさん
2006/09/09(土) 23:51:000580デフォルトの名無しさん
2006/09/09(土) 23:51:53言語使用はともかくMFCが糞。
0581デフォルトの名無しさん
2006/09/09(土) 23:53:40やっぱり、C++自体を学んだほうがいいんですよね、がんばってみます
二回もスマソ
0582デフォルトの名無しさん
2006/09/10(日) 04:04:11悪くないよね?
0583デフォルトの名無しさん
2006/09/10(日) 04:18:19ものを作りたいのですが
CString FileName; // パス
CFileDialog *myDlg; // コモンファイルダイアログ
myDlg = new CFileDialog(TRUE,_T("bmp"),_T("*.bmp"),OFN_FILEMUSTEXIST | OFN_HIDEREADONLY | OFN_PATHMUSTEXIST,_T("*.bmp | *.bmp|"));
if(myDlg->DoModal() == IDOK)
{
// 選択ファイル名取得
FileName = myDlg->GetPathName();
}
ダイアログは出てくるのですが、これ以上がわかりません><
リソース画像をはっつけるやり方はわかってるんですが参照した場合こっからどうすればいいですか?
LoadBitmapとかじゃだめですよね?わかりません><
どなたかよろしくお願いしますm(_ _)m
0584デフォルトの名無しさん
2006/09/10(日) 04:41:30つ 猫でもわかる
0585デフォルトの名無しさん
2006/09/10(日) 04:56:07猫はWinアプなんでいまいちわからんのですよ・・・。
パスを取得するってのはあってますよね?そっからどうやれば??
0586デフォルトの名無しさん
2006/09/10(日) 06:00:11つ[CImage]
MSDNにサンプルがあるんだけどな。
http://msdn2.microsoft.com/ja-jp/library/ms177536.aspx
0587デフォルトの名無しさん
2006/09/10(日) 16:00:13マジレスすると、「猫でもわかるプログラミング」という神のページがある。
WinプログラミングのFAQ的疑問は、そこ見れば大抵一発で解決する。
詳しくはググれ。
0588デフォルトの名無しさん
2006/09/10(日) 16:55:050589デフォルトの名無しさん
2006/09/10(日) 17:07:59一人でどんだけ書いてんだよと。
0590デフォルトの名無しさん
2006/09/10(日) 18:00:23と>>585は言ってるであろう
0591デフォルトの名無しさん
2006/09/11(月) 05:10:30そのとおりでございますだ。。。
Win32とかMFCダイアログとかMFCフォームで書き方が初心者にはバラバラに見えますたい。
0592デフォルトの名無しさん
2006/09/11(月) 05:25:120593デフォルトの名無しさん
2006/09/11(月) 05:53:050594デフォルトの名無しさん
2006/09/11(月) 23:40:13リソースエディタが無いんですか???
0595デフォルトの名無しさん
2006/09/11(月) 23:43:010596デフォルトの名無しさん
2006/09/12(火) 01:16:25安いんだから。
0597デフォルトの名無しさん
2006/09/13(水) 12:44:40VS.NET2003のMFCを使っています。
テキストファイルの中身を表示するプログラムを作っているのですが、
エディットボックスに出力する文字列の色を変えることは出来ますか?
出来れば一行ごとに色が変えられるといいなぁ。
0598デフォルトの名無しさん
2006/09/13(水) 13:27:35Run-Time Check Failure #2 - Stack around the variable 'max_tbl' was corrupted.
(実行時チェックの失敗#2 - 可変的な『max_tbl』のあたりのスタックは、腐敗しました。)
[中断] [継続]
そのまま継続を選択したら、仕様書どおりの結果が返ってきました。
これは何が原因なのでしょうか?
0599デフォルトの名無しさん
2006/09/13(水) 13:44:380600デフォルトの名無しさん
2006/09/13(水) 13:48:22すいません、自力で解決できました。
エラー文通り、テーブルの要領が小さすぎて溢れただけでした
0601デフォルトの名無しさん
2006/09/13(水) 15:51:41リッチテキストボックス rt に、
rt->SelectionColor=Color::Red;
rt->SelectedText="red\n";
rt->SelectionColor=Color::Blue;
rt->SelectedText="blue\n";
でどうでしょ?
0602デフォルトの名無しさん
2006/09/13(水) 17:58:53なるほど、エディットボックスは色表示出来ないのですね。
ちょっとわかってきました。
ありがとうございました!
0603デフォルトの名無しさん
2006/09/13(水) 19:08:56double と long double は同精度なのですか?
80 bit 精度はコプロセッサでも SSE でも
サポートされてないから、ってことでしょうか?
0604デフォルトの名無しさん
2006/09/13(水) 19:45:260605デフォルトの名無しさん
2006/09/13(水) 19:46:330606デフォルトの名無しさん
2006/09/13(水) 19:50:21double = 64bit精度
long double = 80bit精度
だったような記憶があったもので。
0607デフォルトの名無しさん
2006/09/13(水) 19:53:37店員に変な質問して得意がってるやつとか
0608デフォルトの名無しさん
2006/09/13(水) 20:16:17確かに今のVC++では、doubleもlong doubleもsizeofの結果は同じだ。
だが、どちらにしてもFPUレジスタは80bitあるので、
最適化されれば演算の中間結果は80bitで保持されるようにはなる。
(もちろんSSEなどを使うようにしていない場合だ)
0609デフォルトの名無しさん
2006/09/14(木) 01:43:420610デフォルトの名無しさん
2006/09/14(木) 02:00:330611デフォルトの名無しさん
2006/09/14(木) 02:03:10とか使わないで素のままだと、精度がとんでもないことになるのを思い出した。
0612デフォルトの名無しさん
2006/09/14(木) 09:45:16と
StreamReader^ sr = gcnew StreamReader("test.txt");
って何が違うの?
0613デフォルトの名無しさん
2006/09/14(木) 10:09:09while ( (s = sr->ReadLine()) != null ){
ってかくと
error C2065: 'null' : 定義されていない識別子です。
って出るんですが、nullって無いの?
0614デフォルトの名無しさん
2006/09/14(木) 10:12:51nullptr
0615デフォルトの名無しさん
2006/09/14(木) 12:11:150616デフォルトの名無しさん
2006/09/14(木) 14:26:18ただ使う分には両者特に違いはない。
StreamReaderはTextReaderから派生しているので、
前者のようにStreamReaderのオブジェクトをTextReaderとして扱うことができる。
TextReaderから派生したクラスはほかにもあるので、
関数の仮引数には、TextReaderにするほうが、関数の使える幅が広がって嬉しいことがあるかもしれない。
0617デフォルトの名無しさん
2006/09/14(木) 14:39:380618デフォルトの名無しさん
2006/09/14(木) 14:40:52この度、VC6からVC2005に変えて勉強しています。
質問ですが、VC2005はCreateWindow()は使えないのでしょうか?
また、文字列を引数とする関数全てに
「LPCWSTRに変換できません」
というエラーになってしまいます。(MessageBox()など)
LPCWSTRでキャストすれば通るのですが、文字列指定する関数には
毎回LPCWSTRでキャストしないといけないのでしょうか?
低レベルな質問で申し訳ないですが、よろしくお願いします。
0619デフォルトの名無しさん
2006/09/14(木) 14:52:02LPCWSTRな文字列ならキャストいらない。
LPCWSTRじゃない文字列をキャストしてもLPCWSTRにはならない。
0620デフォルトの名無しさん
2006/09/14(木) 15:01:07レスありがとうございます。
更に質問なのですが、
>CreateWindow()は環境により使える。
CreateWindowEx()で対処で問題ないですか?
>LPCWSTRな文字列ならキャストいらない。
MessageBox( hDlg, "aaa", "aaa", MB_OK );
だとLPCWSTRに変換できないと言われ、
MessageBox( hDlg, (LPCWSTR)"aaa", (LPCWSTR)"aaa", MB_OK );
にしたら、通ってしまいました。
私はもっと根本的なミスをしているのでしょうか?
0621デフォルトの名無しさん
2006/09/14(木) 15:07:40プロジェクト->プロパティ->構成プロパティ->全般 の中にある
文字セットを[Unicode 文字セットを使用する]から[マルチバイト文字セットを使用する]
に変更で、いつもどおり文字列を使えるようになりました。
お騒がせしました。
0622デフォルトの名無しさん
2006/09/14(木) 15:09:16どっかで定義を用意してあるので6.0ではwindows.hにあるが消されたのか?
LPCWSTRのLPCとはポインタを表す表記でWSTRはユニコードを表す表記です
つまりユニコード文字のポインタという意味です
ソースファイルがSJISなら"aaa"はSJISなのでそのまま渡すとエラーになります
SJIS終端コードが\0なのに対しユニコードの終端コードが\0\0だからです
ていうかユニコードしか扱えなくなったのか?
0623デフォルトの名無しさん
2006/09/14(木) 15:13:46デフォルト設定が多分ユニコードしか使えない設定になっていたと思います。
ここみたら、私と同じような質問をしている人がいたので、試してみたら出来ました。
ttp://oshiete.nikkeibp.co.jp/kotaeru.php3?qid=2236318
>LPCWSTRのLPCとはポインタを表す表記でWSTRはユニコードを表す表記です
つまりユニコード文字のポインタという意味です
なるほど。ありがとうございます。とても助かります。
0624デフォルトの名無しさん
2006/09/14(木) 15:36:01今回の数値と比較して、一致すればf_flgに1を入れ、一致しなければ0を入れるサンプルを作っているのですが
更新するたびにf_stockに前回入力した数値が入らず、0が入ります。
どうしたら、更新しても変数の内容を変えないようにできるのでしょうか?
0625デフォルトの名無しさん
2006/09/14(木) 15:43:130626デフォルトの名無しさん
2006/09/14(木) 16:33:23staticだと更新は行けたけど、終了してたら変数は0になります。
終了しても変数を初期化したくないんですが無理なんでしょうか?
0627デフォルトの名無しさん
2006/09/14(木) 16:44:260628デフォルトの名無しさん
2006/09/14(木) 16:48:16c++ってインターフェースってできないんでしょうか、、
class A{
public:
double GetSignal(int i,int j);
}
class B{
public:
double GetSignal(int i,int j);
}
みたいのがあって、どっちも引数でとれる
double GetSignal(??? C){
return C.GetSignal(5,5);
}
みたいな関数を書きたいんですが。。
0629デフォルトの名無しさん
2006/09/14(木) 16:51:020630デフォルトの名無しさん
2006/09/14(木) 16:52:43すいません
小出しにするつもりはないんですが、うまいこと説明できないんです。
0631デフォルトの名無しさん
2006/09/14(木) 16:55:32double GetSignal(??? C)の???にはそのクラスを指定。
0632デフォルトの名無しさん
2006/09/14(木) 16:57:18検索してやってみて、でけた!
ありがとう神様
0633デフォルトの名無しさん
2006/09/14(木) 16:59:04ほぉほぉ
それもいいっすね
0634デフォルトの名無しさん
2006/09/14(木) 17:03:58さんきゅです。
0635デフォルトの名無しさん
2006/09/14(木) 17:06:27レジストリかini使えと言いたいけど
言っても無駄になる確立が90%以上だな
0636デフォルトの名無しさん
2006/09/14(木) 17:08:41longよりも大きな数扱える型ない?
符号付きの10^16を扱える整数型なら問題ないんだけど。
0637デフォルトの名無しさん
2006/09/14(木) 17:08:45virtual double GetSignal(int i,int j) = 0;
};
class A : public C {
double GetSignal(int i,int j);
};
class B : public C {
double GetSignal(int i,int j);
};
C* instance[] = {
new A(), new B()
};
instance[0]->GetSignal( i, j );
instance[1]->GetSignal( i, j );
0638デフォルトの名無しさん
2006/09/14(木) 17:10:46まず自分がどういう処理で何をしたいのか明白にする事をお勧めする。
うまく説明できない = サブルーチン含めて完成系が想像できていない
0639デフォルトの名無しさん
2006/09/14(木) 17:12:26LONGLONG
LARGE_INTEGER
0640639
2006/09/14(木) 17:15:290641デフォルトの名無しさん
2006/09/14(木) 17:48:23流れですがこのような感じです
登録クラス:
入力画面で1〜50の通常数字を6個と1〜50の特殊数字1個を入力する
登録すると、数字を","ごとに区切ってtxtファイルに格納される
その際、特殊数字を変数に入れる。
次回入力の祭、通常数字6個と前回格納した特殊数字を比較する
数字が一致すれば1 一致しなければ0をtxtファイルに立てる (例 02,11,15,17,27,29,26,1
今回の特殊数字を変数に入れなおす。
解析クラス:
画面で1-50のエディタを用意して、特殊数字がヒットした回数を表示させる
0642デフォルトの名無しさん
2006/09/14(木) 18:22:28サンクス!
0643デフォルトの名無しさん
2006/09/14(木) 18:38:33ロト6の解析プログラムでも作ろうと思ってるのかw
しかし意味わからんな
人に説明できないソフトが作れるのか?
もっと抽象的に話をするか、もっと具体的に話しないと
変数なんて言葉が出てくると訳わからなくなるぞ
0644デフォルトの名無しさん
2006/09/14(木) 18:46:40抽象的に言うと、>>641の比較用の特殊数字をプログラムを終了しても残す方法を教えていただきたい。
0645デフォルトの名無しさん
2006/09/14(木) 18:54:430646デフォルトの名無しさん
2006/09/14(木) 18:56:19あれに穴あけるんだよ
0647デフォルトの名無しさん
2006/09/14(木) 19:00:34writeprivateprofileint
getprivateprofilestring
これでググレばいいよ
0648デフォルトの名無しさん
2006/09/14(木) 19:01:36writeprivateprofilestring
getprivateprofilestring
で
0649デフォルトの名無しさん
2006/09/14(木) 19:02:21JavaやC#のようなインターフェースを作りたいなら631方式が一番しっくり当てはまる。
???のクラスをインターフェースに見立て、メンバ関数は全て純粋仮想関数とするわけだ。
0650デフォルトの名無しさん
2006/09/14(木) 19:10:46なる直前に追加した行を削除したらなおった。
バグ?
0651デフォルトの名無しさん
2006/09/14(木) 20:31:020652デフォルトの名無しさん
2006/09/15(金) 00:15:12特殊数字がうんたらかんたらじゃなくて、要は作成したツールに入力した値を
ツール再起動しても保持する方法を知りたいだけだろ?
だったら、>>635と>>645が既に答えを教えてくれている。
iniを使いたければ、>>648の言うこと聞いた方がいい。
>>645の言うとおりゲームのセーブデータみたいにバイナリファイルを落とすのも手。
後は起動時に毎回落としたファイルを読み込めばおk。
君の場合レジストリは使わない方がいい。
0653デフォルトの名無しさん
2006/09/15(金) 09:25:35ぐぐって調べます。ありがとうございます
>>652
レジストリはよく分からないのでiniを使ってみます
0654デフォルトの名無しさん
2006/09/15(金) 13:58:48現在 ttp://www.alpha-net.ne.jp/users2/uk413/vc/VCT_INI.html のHPでiniのサンプルを使ったのですが
iniを読込めません。
そのままコピーしたのがいけないのでしょうか?
0655デフォルトの名無しさん
2006/09/15(金) 14:23:07(゚д゚)ハァ?
0656デフォルトの名無しさん
2006/09/15(金) 15:58:22超初心者スレッドだから、大サービスで回答するけど
その書き込みじゃ誰も回答なんてくれないぞ
どう動かないのか?読み込めないということは書き込めているのか?
とか具体的な症状を書かないと
だいたい、648が関数名まで指定してググレと書いてあるのに
なぜ別の関数を使ってるんだよ
MSDNでCWinApp::WriteProfileStringの項目調べたのか?
MSDNでさえ、日本語版は疑ってかかれというご時世
HPに書かれていることを完全に鵜呑みにするのはダメ
0657デフォルトの名無しさん
2006/09/15(金) 16:54:13大サービス感謝です。
MSDNは見てたんですが
CWinApp::WriteProfileInt
CString strSection = "My Section";
CString strStringItem = "My String Item";
CString strIntItem = "My Int Item";
↑これの意味が分からず、色々ググってあのHPにたどり着いたんです。
CWinApp* pApp = AfxGetApp();
pApp->WriteProfileString(strSection, strStringItem, "test");
CString strValue;
strValue = pApp->GetProfileString(strSection, strStringItem);
ASSERT(strValue == "test");
pApp->WriteProfileInt(strSection, strIntItem, 1234);
int nValue;
nValue = pApp->GetProfileInt(strSection, strIntItem, 0);
ASSERT(nValue == 1234);
上の例を実行すると
[テスト][テスト]
[1234] になるのですか?
0658デフォルトの名無しさん
2006/09/15(金) 16:59:01ヴォケ
0659デフォルトの名無しさん
2006/09/15(金) 17:08:20ロベールの部屋
プログラマーの友 第八報:メモリリークと crtdbg.h
ttp://www1.kcn.ne.jp/~robe/pf/pf008.html
↑のサイトに書いてあるように行い、new int のような一つのオブジェクトを
作成する場合のメモリーリークの検出はできるようになりました。
では、new int[10] のように配列を取得する場合は
どうすればいいのでしょうか?
よろしくお願いします。
0660デフォルトの名無しさん
2006/09/15(金) 18:20:50動的にDISABLEになっているコントロールの色を持ってくることは可能ですか?
0661デフォルトの名無しさん
2006/09/15(金) 18:42:37デバッグ用に特殊なコード書く必要あるんだったら
そういう機能使う意味ないと思うが
0662デフォルトの名無しさん
2006/09/15(金) 19:05:550663デフォルトの名無しさん
2006/09/15(金) 19:40:41iniファイルってのは、テキスト形式だから、開けば読める
xpでやってるんだったら
c:\windows\
フォルダに、xxx.iniって形で入ってるんだからテキストエディタで開いてみればいい
(xxxはアプリケーション名)
どういう形になってるかわかるだろ
大体、[テスト]って何処から出てきてるんだよw
0664add
2006/09/15(金) 21:20:51Visual Studio 6と
Visual Studio 2005 Expressは共存できないのでしょうか?
Visual Studio 6でコンソールアプリが急にコンパイルできなくなったので…
0665デフォルトの名無しさん
2006/09/15(金) 21:45:19普通に出来とるが何か?
0666デフォルトの名無しさん
2006/09/15(金) 21:56:080667デフォルトの名無しさん
2006/09/15(金) 22:19:18パスの指定どっちが優先になってるかみてる?
とりあえず、コンパイラのバージョンを見てみれば
0668デフォルトの名無しさん
2006/09/15(金) 22:41:54コマンドプロンプトの場合はどちらも環境変数に登録はしないで、
必要なvcvars32.batを呼び出すようにバッチファイルを用意する。
.cppとかの拡張子の関連付けが気になるなら新しいほうが後からがいいだろう。
0669デフォルトの名無しさん
2006/09/15(金) 23:26:11http://vista.xii.jp/img/vi5832930499.jpg
の状態でインストール先ディレクトリが変更できません。
何が原因なんでしょうか?
0670デフォルトの名無しさん
2006/09/16(土) 00:30:48ひとつ前の画面に戻ってみ?
0671デフォルトの名無しさん
2006/09/16(土) 08:55:01ini使わないなら、
C言語のファイルの読み込み・書き出し勉強してきな。
0672デフォルトの名無しさん
2006/09/16(土) 14:04:16君の場合は下手にiniなんて使わないで、fopen()を使った方がいいと思う。
0673デフォルトの名無しさん
2006/09/16(土) 14:11:58「5年前のデータを復元してください」て無茶な要望あったりするけど
バイナリ保存は厳しいが、INIのデータ変更パッチとかなら何とかなる
0674デフォルトの名無しさん
2006/09/16(土) 14:19:33理解に苦しむようなら。。
0675デフォルトの名無しさん
2006/09/16(土) 14:44:100676デフォルトの名無しさん
2006/09/16(土) 23:17:230677デフォルトの名無しさん
2006/09/17(日) 11:20:440678デフォルトの名無しさん
2006/09/17(日) 14:05:530679デフォルトの名無しさん
2006/09/17(日) 19:04:18無料版のVC2005EEを使ったほうがいいでしょうか?
参考書も古いものばかりなので、変更点なども心配です。
0680デフォルトの名無しさん
2006/09/17(日) 21:51:550681デフォルトの名無しさん
2006/09/17(日) 21:53:020682デフォルトの名無しさん
2006/09/17(日) 21:59:02VisualC++ランタイムをダウンロードしたいのですが
Vectorのどれをダウンロードすれば良いでしょうか?
0683デフォルトの名無しさん
2006/09/17(日) 22:32:040684デフォルトの名無しさん
2006/09/17(日) 23:00:470685669
2006/09/17(日) 23:29:52やはり
http://vista.xii.jp/img/vi5832930499.jpg
のままです。
前頁に戻ってもプロダクトキーの入力画面でした・・・
0686デフォルトの名無しさん
2006/09/18(月) 00:03:450687デフォルトの名無しさん
2006/09/18(月) 01:46:30俺も、vs6、ずっと使い続けてきたが、,netでの開発が必要になってvs2005pro買った
proだと、msdn subscriptionつけても15万程度(vsだけだと12万位)なので、そんなに高くない
vcだけだったら正直vc6のままでもいいかも・・・って感想だけど、c#は思った以上に良い言語だね
参考書の件だけど
使ってる言語が何かによるけど、vbだったらvb6までの参考書はほとんど役に立たないと思う
違う言語として考えたほうがとっつきやすい
vcだったら、cwとかなくなったので最初は戸惑うけどmfcとかはほとんど違いはないから問題ないと思う
0688デフォルトの名無しさん
2006/09/18(月) 04:18:39プログラムを起動中に指定したフォルダの中のファイルが更新されたかどうかを判断するMFCかAPIはありますでしょうか?
0689デフォルトの名無しさん
2006/09/18(月) 07:43:140690デフォルトの名無しさん
2006/09/18(月) 13:41:24VC2006.net を使用しています。
クラス内から、アプリ側の関数を呼び出したいので、
アプリ側から関数を登録するようにしました。
以下の記述でコンパイルエラーが出てしまい解決がわかりません。
(続く)
0691デフォルトの名無しさん
2006/09/18(月) 13:42:32[ヘッダファイル]
class CDlgAAA : public CDialog
{
public:
bool CDlgAAA::TourokuFunk(int n);
};
[ソースファイル]
bool CDlgAAA::TourokuFunk(int n)
{
if(…略…)return true;
elsereturn false;
}
アプリ内の関数にて
CSubClassZZZ* pKKK;
pKKK->SetAPFunk( TourokuFunk ); // �@
(続く)
0692デフォルトの名無しさん
2006/09/18(月) 13:43:46[ヘッダファイル]
class CSubClassZZZ : public CListCtrl
{
private:
bool(* lpfnAPFunk)(int n);
public:
voidSetAPFunk( bool (*lpfn)(int n) );
}
[ソースファイル]
voidCSubClassZZZ::SetAPFunk( bool (* lpfn)(int n) )
{
lpfnAPFunk = lpfn;
return;
}
クラス内のメンバ関数にて
(*lpfnAPFunk)(i) ;
�@でエラーが出ます。
「1番目の引数を'bool(int)'から'bool (__cdecl *)(int)'に変換できません。」
どうしたら良いですか?
0693デフォルトの名無しさん
2006/09/18(月) 14:15:10クラスの非静的メンバ関数は、thisが存在するため、通常の関数とは扱いが異なる。
まあメンバへのポインタでググれ。
手っ取り早く解決するにはBoost使え。
こんな感じ。
#include <boost/function.hpp>
class CSubClassZZZ
{
public:
typedef boost::function<bool (int)> APFuncType;
void SetAPFunk(const APFuncType& fn);
private:
APFuncType fnAPFunk;
};
void CSubClassZZZ::SetAPFunk(const APFuncType& fn)
{
fnAPFunk = fn;
}
そんでもってこう使う。<boost/bind.hpp>のインクルードが必要。
CSubClassZZZ* pKKK;
pKKK->SetAPFunk(boost::bind(&CDlgAAA::TourokuFunk, this, _1));
CDlgAAAの中でなければ当然thisを何かに書き換えろ。
CDlgAAAへのポインタでも参照でも受け付けてくれる。
静的メンバ関数や非メンバ関数は、関数へのポインタのように、
そのままboost::functionへ初期化や代入ができる。
0694デフォルトの名無しさん
2006/09/18(月) 14:33:220695デフォルトの名無しさん
2006/09/18(月) 15:23:37単独実行できる)でもあるようなDLLって作れる?
可能ならやり方おせーて
0696デフォルトの名無しさん
2006/09/18(月) 17:03:570697デフォルトの名無しさん
2006/09/18(月) 17:56:30JoyStickを4つ使用するプログラムを書いているのですが,
JoySetCapture関数を使って2つまで認識させることができたのですが,
3つめ,4つめはキャプチャに失敗してしまいます.
JOYSTICKIDは1と2しか定義されていないようですし,
これは3つ以上は使えないということでしょうか?
0698デフォルトの名無しさん
2006/09/18(月) 18:26:00なんか、2個しか出来なさそうな雰囲気だね
DirectInputとか使ってみたら
0699デフォルトの名無しさん
2006/09/18(月) 18:27:02その場合DllMainはどうなるの?書いておかなきゃだめ?
0700デフォルトの名無しさん
2006/09/18(月) 18:30:52ありがとう
DirectInputの方向で頑張ってみます
0701デフォルトの名無しさん
2006/09/18(月) 18:37:29VC2005で、リソースエディタでダイアログを作ったのですが、どのように呼べば良いですか?
VC6の頃は、リソースエディタで作ったら、リソースヘッダを自動で作成してくれたのですが、2005では作成してくれません。
呼び出しは
DialogBox( hInst, MAKEINTRESOURCE( IDD_DIALOG ), NULL, (DLGPROC)DlgProc );
で呼び出していますが、呼び出しも間違っていたら、指摘してもらえると助かります。
0702デフォルトの名無しさん
2006/09/18(月) 18:43:290703デフォルトの名無しさん
2006/09/18(月) 18:46:090704デフォルトの名無しさん
2006/09/18(月) 18:53:08それはともかく2005でもヘッダは作られているはずだと思うが。
0705デフォルトの名無しさん
2006/09/18(月) 18:57:37了解です。
>それはともかく2005でもヘッダは作られているはずだと思うが。
マジですか?!う〜ん。。今確認しても出来ていない。。
でも自動で作成されると分かったので、色々いじってみます。ありがとうございました。
0706デフォルトの名無しさん
2006/09/18(月) 19:21:04無事解決しました。ありがとうございます。
【原因】
ファイル→新規作成→ファイル→VisuialC++→リソーステンプレートファイル(rct)
で作成。
【解決】
プロジェクト→新しい項目の追加→リソースファイル(rc)
で作成。
拡張子がrctなので、おかしいとは思っていました。。
>>704さんありがとうございました。
0707デフォルトの名無しさん
2006/09/18(月) 22:02:21>693
ありがとうございます。解決しました。
>694
リストコントロール?なんだろ?
0708デフォルトの名無しさん
2006/09/19(火) 01:36:58この度PC上で起きるイベント(作業ウィンドウの変更やウェブページの移動等)を記録するプログラムを作る事になりました。
ネット上等を調べてどうやらSetWindowsHookExという関数を使う事は分かったのですが、具体的なコードの書き方(例題等)が分かりません。
どこか詳しく述べているサイト等を知っている方が居ましたら教えてください。
流れ的には、作業ウィンドウ変更→プログラムが感知(フック)→その内容をテキストに書き込み、という感じにしたいです。
よろしくお願いします。
0709デフォルトの名無しさん
2006/09/19(火) 01:52:220710デフォルトの名無しさん
2006/09/19(火) 05:02:06ウェブページの移動の記録はできなくてもいいの?
0711デフォルトの名無しさん
2006/09/19(火) 13:54:150712デフォルトの名無しさん
2006/09/19(火) 15:48:400713デフォルトの名無しさん
2006/09/19(火) 17:36:46殆どCなwin32コンソールアプリ
void main(){
printf("hell,world");
}
をビルドしてできたexeを配布するには
どうすりゃいいですか?
.NETFrameWorks2をインストールしたマシンならOKでしょうか?
0714デフォルトの名無しさん
2006/09/19(火) 17:43:05何らかのDLLをLoadLibraryし、何らかの関数のアドレスをGetProcAddressして、その関数を実行します。
関数はちゃんと実行できるのですが、main関数を抜けると(return 0;すると)プログラムの外でアクセス違反が発生します。
gccで同じコードをコンパイルして比較すると、gccではこのような事は起こりません。
どうすればいいですか('A`)
ExitProcessならクラッシュしないので、一応の回避策として今は
#if (_MSC_VER >= 1300)
ExitProcess(0);
#else
return 0;
#endif
こんなことをしていますが…
0715デフォルトの名無しさん
2006/09/19(火) 18:15:58Win32プロジェクトで作れば、.NET Frameworkは要らない。
せいぜいランタイムを動的リンクにしていればそれが要るだけ。
0716デフォルトの名無しさん
2006/09/19(火) 18:20:25ExitProcessで問題ないならそれでいいじゃん
0717デフォルトの名無しさん
2006/09/19(火) 18:49:26>せいぜいランタイムを動的リンクにしていればそれが要るだけ。
その場合の再配布モジュールはこっち vcredist_x86
.NET Frameworkでもmsvcr80.dllだけはインストールされたりするので誤解が多い。
0718713
2006/09/19(火) 20:22:44>>717
デフォルトの状態から、
プロパティ/Release/構成プロパティ/全般/MFCの使用=スタティック ライブラリで MFC を使用する
とすると、なんかダイジョウブそうなんですが、どうでしょうか?
転がっていた、NT4サーバーに入れたら動いたんですが。
0719デフォルトの名無しさん
2006/09/19(火) 20:35:14コード生成のランタイムライブラリも関係する。
まあ何もいじっていなければ静的リンクするほうになっているはずだけど。
0720デフォルトの名無しさん
2006/09/19(火) 20:39:17これだけあれば十分かなぁ。
構成プロパティ>全般
スタッティックライブラリでMFCを使用する(MFCを使う場合)
ATLを静的にリンク(ATLを使う場合)
構成プロパティ>C/C++>コード生成
マルチスレッド(/MT)
.net framework2.0のインストールは何で時間がかかるのか〜と思ってたら、
クラスライブラリ全体にngen走らせてるのね。そらかかるわ。
0721デフォルトの名無しさん
2006/09/19(火) 21:11:59まあ自動でやってくれるんだからPortageみたいなもんか。
0722デフォルトの名無しさん
2006/09/19(火) 23:02:11静的ライブラリ Lib1 で Func0.cpp と Func1.cpp というファイルがあります。
Func0.cpp では Func0 を実装しています。
Func1.cpp では Func1 を実装しています。
Func0 は Func1 からしか使用されないので
本来 static なのですが、別ファイルにしているので、static にしていません。
このとき、静的ライブラリ Lib1 をビルドすると、Func0 もエクスポートされてしまいます。
ここまでは問題ありません。
次に、同じような静的ライブラリ Lib2 を作成し、
Func0.cpp では Func0 を実装し
Func2.cpp では Func2 を実装したとします。
このとき、静的ライブラリ Lib2 をビルドすると、Func0 もエクスポートされてしまいます。
ここでもまだ問題はありません。
Test1.exe プログラムで、Lib1 の Func1 と Lib2 の Func2 を使用したいとき、
Lib1.lib と Lib2.lib をリンクすると、Func0 が二重定義されているという
リンカ エラーが発生します。
このエラーを回避するには、どうしたらよいでしょうか。
Func0 を別ファイルに実装するという設計は変えたくない。
0723デフォルトの名無しさん
2006/09/19(火) 23:08:53似ているなら合体して1つにしてしまえ。似たようなものがいくつもあるのは良くない兆候。
そうでなければ、Lib1とLib2の中身をそれぞれ名前空間で閉じ込めたらどうか?
0724722
2006/09/19(火) 23:11:29> Lib1とLib2のFunc0の中身は似ているか?
いえ、プロトタイプ自体違うものです。
> Lib1とLib2の中身をそれぞれ名前空間で閉じ込めたらどうか?
うーん、実は C++ じゃなくて C を使っているんです。
0725デフォルトの名無しさん
2006/09/19(火) 23:54:380726デフォルトの名無しさん
2006/09/20(水) 00:06:020727デフォルトの名無しさん
2006/09/20(水) 00:14:28なんでライブラリを分けたいのかな?ひとつにまとめるじゃダメ?
cl /c func0.cpp func1.cpp func2.cpp
lib /out:libx.lib func0.obj func1.obj func2.obj
0728デフォルトの名無しさん
2006/09/20(水) 00:16:04ああ名前が同じだけで別物なのか。別物なら別の名前をつけるこれが原則。
0729デフォルトの名無しさん
2006/09/21(木) 10:42:370730デフォルトの名無しさん
2006/09/21(木) 10:44:550731デフォルトの名無しさん
2006/09/21(木) 10:45:48istream::read(vhar*str, streamsize count)
0732デフォルトの名無しさん
2006/09/21(木) 10:46:09○char
0733デフォルトの名無しさん
2006/09/21(木) 10:46:490734デフォルトの名無しさん
2006/09/21(木) 10:47:540735デフォルトの名無しさん
2006/09/21(木) 10:59:41どうもありがとう
0736デフォルトの名無しさん
2006/09/21(木) 18:07:250737デフォルトの名無しさん
2006/09/21(木) 18:43:40__int64をtypedefしてLONGLONGが作られている。
VC7からはC99のlong longも使える。
0738デフォルトの名無しさん
2006/09/21(木) 23:07:55bool と BOOL の違いって何ですか?
0739デフォルトの名無しさん
2006/09/21(木) 23:26:490740デフォルトの名無しさん
2006/09/21(木) 23:41:00迷ったらboolにするほうが俺のお勧め。
0741デフォルトの名無しさん
2006/09/22(金) 00:39:51VC++{
・SDK{WinAPI=Win32}
・MFC
}
という感じでしょうか?
中括弧は「含まれる」みたいな意味で。
0742デフォルトの名無しさん
2006/09/22(金) 00:47:43MFC m_MFC;
};
class MFC {
SDK m_SDK;
};
class SDK{
void API();
};
0743デフォルトの名無しさん
2006/09/22(金) 00:58:10Win32を使うためのインターフェースがWin32API。
だから等号には少々違和感を感じる。
0744デフォルトの名無しさん
2006/09/22(金) 01:28:28追加で
class VC++
{
0745デフォルトの名無しさん
2006/09/22(金) 14:25:18Wuapi.hっていうファイルがあって、ファイルの最初に
/* File created by MIDL compiler version 6.00.0347 */
/* Compiler settings for wuapi.idl:
Oicf, W1, Zp8, env=Win32 (32b run)
protocol : dce , ms_ext, c_ext, robust
error checks: allocation ref bounds_check enum stub_data
VC __declspec() decoration level:
__declspec(uuid()), __declspec(selectany), __declspec(novtable)
DECLSPEC_UUID(), MIDL_INTERFACE()
*/
//@@MIDL_FILE_HEADING( )
って書いてあるんだけど、
MIDL(Microsoft IDL)って一体どういう風に使うの?
ググっても、msdnライブラリのヘルプ見ても、よくわからんかった。
wuapi.libってファイルは一応あるんだけど、
自分で新たにwuapi.libを用意する場合、
どっかからソース持ってきて、自分でコンパイルしなきゃだめなのだろうか?
0746デフォルトの名無しさん
2006/09/22(金) 14:59:33それ位の英文読めよ。
そのWupai.hは、wuapi.idlをそこに書いてあるとおりのオプションでMIDLコンパイラにかけて作られた。
こういう旨が書いてあるだけだろ。
もはやWuapi.hは単なるヘッダなんだからC/C++ソースから普通にインクルードして使ってよい。
0747デフォルトの名無しさん
2006/09/22(金) 15:28:47何故ですか?SDKってレベルが低いのでしょうか?
ちなみに私はMFCは勝手にソースに書き込む&専用DLLが必要(exeに組み込むとサイズ喰う)ので
SDKで組んでいます。
0748デフォルトの名無しさん
2006/09/22(金) 16:54:170749デフォルトの名無しさん
2006/09/22(金) 17:42:10あ、言い方悪かったです。
コントロールを作成すると、勝手に記述されてしまうって意味です。
0750デフォルトの名無しさん
2006/09/22(金) 17:42:270751デフォルトの名無しさん
2006/09/22(金) 17:55:210752デフォルトの名無しさん
2006/09/22(金) 19:45:56MFCを使うかどうかと直接の関係はないと思うんだ。
0753745
2006/09/22(金) 20:49:07知りたいのは、
(1)MIDL compiler は、どういう風にしたら使うことができるのか?
(環境はVC6.0です。)
(2)wuapi.libやWuapi.hを自分で入手したい場合、
どこかのサイトでダウンロードできるのか?
(ファイル自体は持ってるし、使用方法も分かっているが
その出所が知りたい)
よろしくお願いします。
0754デフォルトの名無しさん
2006/09/22(金) 20:57:49いっそ、WTLで組んでさらに笑われてみるとかw
いや、俺はWTL好きだけどね
専用DLLが無いので軽量だし
つーか、MFCだって別にウィザード使わなくたって組めるけどな
0755デフォルトの名無しさん
2006/09/22(金) 21:30:52確実に言えることは、そんなことで笑うようなやつのレベルが低いということ。
0756デフォルトの名無しさん
2006/09/22(金) 21:36:21コマンドプロンプトからmidlというコマンド。
wuapi.libもwuapi.hも基本はPlatform SDKに入っているものを使うのが原則だが、
libのほうは、DLLからインポートライブラリを作るツールがあるし、
wuapi.hはmidlでwuapi.idlから作れる。そのwuapi.idlは、Platform SDKにしか入っていないんだけどな。
0757デフォルトの名無しさん
2006/09/22(金) 21:55:38まったくだな、そんなやつ無視すりゃいいよ
ただ、745も
MFCが使えるけど、明確な理由で使っていないというならいいが
MFCくらいは出来るようにしといたほうがいいけどな
0758745
2006/09/22(金) 22:45:53おお〜!レスどうもです!
midlコマンドは、今日やってみましたが、
「そのコマンドは認識されていません」でした。
msdnヘルプに書いてある設定画面にいかないので
そこで止めて、web検索に走ってしまいました。
.hと.libファイルは、psdkのCD-ROMがあるので、
それを調べるかインスコフォルダ調べれば良さそうですか。
問題解決まで、もう少しのような気がします。
とりあえずサンクスです。
0759デフォルトの名無しさん
2006/09/23(土) 10:01:53.NETのクラスライブラリは使わないでプログラム作ってるんだが
出来上がったプログラムは.NET Frameworkなくても動く?
0760デフォルトの名無しさん
2006/09/23(土) 10:34:550761デフォルトの名無しさん
2006/09/23(土) 10:38:00.NET Framework 2.0 インスコすると勝手に
VC++8 のランタイムも入るから、見た目には
.NET Framework 2.0 が無いと動かないように錯覚するので注意。
0762デフォルトの名無しさん
2006/09/23(土) 10:57:07そういうことだったのか。
サンクス。
0763デフォルトの名無しさん
2006/09/23(土) 18:00:070764(^-^) ◆MONSOON/qo
2006/09/23(土) 18:09:20編集→置換
で全て置換
0765デフォルトの名無しさん
2006/09/23(土) 18:11:15>>764
・・・
0766(^-^) ◆MONSOON/qo
2006/09/23(土) 18:23:465 = '5' - 48だよ
0767デフォルトの名無しさん
2006/09/23(土) 18:26:4648なんてマジックナンバー使うな。せめて'0'と書け。
0768デフォルトの名無しさん
2006/09/23(土) 18:33:28今あるソースコードをコンパイラー(VC++ 6.0)でコンパイルしようとしています。
コマンドプロンプトからの実行を行いたいのですが、
エラーとして、
nmakeはバッジファイルとして認識されません
と表示されます。
どうもVCVARS32という名前のバッチファイルの環境変数を設定しないといけないみたいのですが、
全く何をどう設定したらいいものか分かりません。
どうかご教示をお願いします。
0769デフォルトの名無しさん
2006/09/23(土) 19:01:49実行するだけ
0770デフォルトの名無しさん
2006/09/23(土) 22:47:26環境
OS WinXP
コンパイラ Visual C++
if文を用いたプログラムを作りたいので質問します
最初に[F5]を押し、もしパケットの受信(なんらかの通信)があったなら、5秒後にまた[F5]を押し
もし、パケットの受信がなければ、そこでプログラム停止
というプログラムを作りたいのですが、全くわかりません ある程度のコマンドを表記してもらえれば後は自分で独学するので
使うコマンドだけ教えてくれませんか?
2ちゃんねるの実況などのオートリロードに役立てたいのです(Janeですと、制限があるので…)
0771デフォルトの名無しさん
2006/09/23(土) 22:54:56パケット云々言ってるが、更新ボタンを押せば、
何かしらパケットのやりとりはするだろうだから、
そんなものチェックしても意味無しと思われ。
0772デフォルトの名無しさん
2006/09/23(土) 22:57:500773デフォルトの名無しさん
2006/09/23(土) 23:00:15では、パケットが〜以上の場合、〜未満の場合
って分けれる事はできますか?
0774デフォルトの名無しさん
2006/09/23(土) 23:01:14では、とりあえず、[F5]を何秒か語とに押すプログラムは作れますか?
0775(^-^) ◆MONSOON/qo
2006/09/23(土) 23:05:24http://www.h7.dion.ne.jp/~umiumi/
0776デフォルトの名無しさん
2006/09/23(土) 23:07:43できれば、一から自作してみたかったのですが、とりあえずこれ使わせてもらいます
どうもありがとうございます
0777デフォルトの名無しさん
2006/09/23(土) 23:48:580778768
2006/09/24(日) 00:23:55えーと、設定しないと実行出来ないのですが・・・
0779デフォルトの名無しさん
2006/09/24(日) 00:49:03何が設定されるかというと、nmakeその他のコマンドを実行できるようにするために環境変数を設定する。
0780768
2006/09/24(日) 01:19:47その、nmakeのコマンドを実行できるようにするための設定(環境変数の設定)は
どのようにすればいいのでしょうか??
0781デフォルトの名無しさん
2006/09/24(日) 01:36:060782768
2006/09/24(日) 01:49:35VCVARS32.BATをクリックすることで環境変数が設定される!
ってことですね!?
しかし、やっぱり、nmakeは・・・認識されていません。
ってなるのですが、他に考えられる原因ってあるのでしょうか??
0783デフォルトの名無しさん
2006/09/24(日) 02:01:06設定はひとつのcmd.exeの中のみ有効。画面内で全部実行する。
0784768
2006/09/24(日) 02:09:51解決しました。
0785デフォルトの名無しさん
2006/09/25(月) 11:40:56構成プロパティ→全般→プロジェクトの規定値→文字セット
って、プロパティシートでは設定することができませんよね?
特に指定しない限り UNICODE にしたいのですが、どうすればいいでしょうか?
0786デフォルトの名無しさん
2006/09/25(月) 11:52:28CWnd*myWnd= (CWnd*)GetDlgItem(IDC_FIGURE);
CDC*myDC1= myWnd->GetDC();
myDC1->Ellipse(点を書く場所);
これでIDC_FIGURE内に点を描いているのですが、これをメモリ上(or BMPなどの画像フォーマット)で保存するのは可能ですか?
よろしくお願いします。
0787デフォルトの名無しさん
2006/09/25(月) 12:22:440788デフォルトの名無しさん
2006/09/25(月) 12:39:58Cbitmapに読み込むにはどうしたらいいでしょうか。
0789デフォルトの名無しさん
2006/09/25(月) 12:41:16CWnd に関連図けられたDCに操作を行えばCWndを表示しているデバイスに操作が行われます
ビットマップに描画してやりたければビットマップをターゲットにしたDCを作ればいいんです
ビットマップはビット深度などでいろいろな種類があってその辺はDCでもカバーできないので
指定しないといけません
一番簡単な方法はCWnd互換のビット深度を持ったビットマップを生成する方法です
CreateCompatibleBitmap及びCreateCompatibleDCというAPIがあります
普通はビットマップを保存するなどの必要がある場合は二度手間になるのでビットマップだけに描画して
BitBltを使ってそれぞれのデータをコピーして画面に出すという方法が一般的です
このコピーの作業もDCがデバイスの差異を吸収して一発で出来ます
0790デフォルトの名無しさん
2006/09/25(月) 12:42:16ビットマップを自前で解析してメモリに割り当てないといけません
サードパーティのライブラリを使ったほうがいいです
0792デフォルトの名無しさん
2006/09/25(月) 14:00:45Win APIのLoadImageで読み込み、
CBitmap::FromHandleでCBitmapのオブジェクトを作ったらどうか。
0793デフォルトの名無しさん
2006/09/25(月) 14:27:19788=790=791の自演だろうけど。
0794734
2006/09/25(月) 20:16:17読み込む関数があると思いますが、例えばa.bmp b.bmp c.bmpという3つ
のファイルをdata.datというファイルにまとめた場合、
どうやってそのライブラリでa.bmp b.bmp c.bmpを読み込めばよいのでしょうか?
data.datを自分でメモリ上に展開して、ライブラリ側でメモリからロードできる関数を使う
と考えているのですが、そういう関数が無い場合など、他に考えられる方法はありますか?
0795デフォルトの名無しさん
2006/09/25(月) 20:36:240796デフォルトの名無しさん
2006/09/25(月) 20:36:31あとはdata.dat内をシークして読み込めばdata.datをメモリ上に展開する必要ないし
0797デフォルトの名無しさん
2006/09/25(月) 20:53:32レスありがとうございます
>>796
連続で質問で申し訳ないですが、data.dat内をシークして読み込むというは大体どんな感じのコードになるんでしょうか?
0798デフォルトの名無しさん
2006/09/25(月) 21:22:35その後は16byteのファイル名+4byteのオフセットxN
とか適当にファイルのヘッダ形式を決めておく
例えばb.bmpを読みたい場合、
data.datを先頭から読み込んでファイル数を取得
ファイル数分ループしてファイル名とオフセットを取得
b.bmpを見つけたらオフセットも取得できている筈なんで
そこにfseek
あとは単体のb.bmpと同じ様に読み込む
※オフセットはdata.datの先頭からのオフセットでもいいし、
ヘッダ部を除いたところからの相対オフセットでもいい
..なんか分かり難いな
>メモリからロードできる関数
がない場合>>795で
Windowsならファイルマッピングとか使えるかも
0799デフォルトの名無しさん
2006/09/25(月) 23:49:52>そういう関数が無い場合など、他に考えられる方法はありますか?
無ければ自分で作ればいいじゃん。
0800デフォルトの名無しさん
2006/09/25(月) 23:57:59昔Javaで書いた奴なら出てきたんだが、読むかい?
ソースが5KBほどあるんで、流石にここに貼り付けるわけにはいかんが。
0801デフォルトの名無しさん
2006/09/26(火) 00:12:02>あとは単体のb.bmpと同じ様に読み込む
ここでhoge(char* filename)に渡せるんでしょうか?
どうもイメージがつかめません・・・
>>799
作り方がわからないというか
ファイル処理というものがどうなっているのかわからない
>>800
読んでみたいです
0802デフォルトの名無しさん
2006/09/26(火) 00:22:45大したもんじゃないけどね。Javaだし。
どこか適当な捨てメアドかアプロダ指定してくれたら、送るよ。
0803デフォルトの名無しさん
2006/09/26(火) 00:31:45>ファイル処理というものがどうなっているのかわからない
普通のファイル操作と本質は何も変わらんよ?
バイナリで全部読んで、ファイルフォーマットに応じた操作をすればおけ。
bitmapはbit深度によってパレット周りの操作が違ったりして、多少面倒だけど、
画像自体をコードの仕様に合わせれば良し。
0804デフォルトの名無しさん
2006/09/26(火) 00:31:55ttp://gamdev.org/up/
ここでどうでしょうか?
0805デフォルトの名無しさん
2006/09/26(火) 01:38:20bmpを例として挙げましたけど
ファイルフォーマットの資料が少ないものや複雑なものの場合
ファイル名を渡すだけでライブラリがオブジェクトを構築してくれるのは楽かなと思ったんです
0806デフォルトの名無しさん
2006/09/26(火) 03:47:56うpた!7671.zipん中。
こっちは連結器だけだけど、読むのもすぐ作れると思う。
0807デフォルトの名無しさん
2006/09/26(火) 04:09:120808デフォルトの名無しさん
2006/09/26(火) 04:20:54すっぴんのtarを使う分には問題はないけど、
展開部分のコードをパクって来るわけにもいかないしなー。
ああ見えてtar、ソースだけなら結構でかいし。
tar自体のファイル構造はシンプルだけどさ。
0809デフォルトの名無しさん
2006/09/26(火) 04:23:190810デフォルトの名無しさん
2006/09/26(火) 04:25:210811デフォルトの名無しさん
2006/09/26(火) 11:49:34しようとしているのですが、
Delegate void SetTextCallback(String text);
が「無効なトークン 'void' が クラス、構造体またはインターフェイスのメンバ宣言で使用されています。」
とエラーになってしまいます。これはどうしてなのでしょうか?。
0812811
2006/09/26(火) 11:56:35移動します
0813デフォルトの名無しさん
2006/09/26(火) 14:21:39ファイル入力で取得したファイル名(xxx.mid)をCString型の変数fnameに格納し、
次にメニューからMIDIの再生を選択したときに
fnameからファイル名を取り出しMIDI再生ルーチンへ渡したいのですが、
なぜかfnameにはファイル名ではなく、コンストラクタで初期化した値が入っています。
ファイル入力の後、一度fnameに格納されていることは確認済みです。
どのようにすれば正しくファイル名を取り出せるのでしょうか?
0814デフォルトの名無しさん
2006/09/26(火) 14:42:560815813
2006/09/26(火) 15:19:08ReadSMF.cpp
// SMFの読み込み
BOOL CReadSMF::ReadSMF(CArchive& ar)
{
BOOLret = FALSE;
CFile* cf;
cf = ar.GetFile();
PutFilename(cf->GetFileName());
〜省略〜
return ret;
}
void CReadSMF::PutFilename(CString fn)
{
CSMFDocm_doc;
m_doc.PutFilename(fn);
};
0816813
2006/09/26(火) 15:19:46SMFDoc.cpp
// コンストラクタ
CSMFDoc::CSMFDoc()
{
fname = "";
}
// ファイル名の格納
void CSMFDoc::PutFilename(CString fn)
{
fname = fn;
}
// ファイル名の取得
CString CSMFDoc::GetFilename()
{
return fname;
}
// メニュー【MIDIの再生】
void CSMFDoc::OnPlay()
{
CMainFrame* Frm = new CMainFrame;
CString SmfName = GetFilename(); //ここでファイル名を取得できない。
Frm->MidiPlay(SmfName, TRUE);
}
よろしくお願いします。
0817デフォルトの名無しさん
2006/09/26(火) 15:36:02{
CSMFDocm_doc;
m_doc.PutFilename(fn);
};
このメンバ関数が呼ばれた間にしか存在しないから
0818デフォルトの名無しさん
2006/09/26(火) 15:39:250819813
2006/09/26(火) 15:58:30ありがとうございます。
fnameはCSMFDocクラス内で定義しているのに
CReadSMF::PutFilenameが呼ばれた間しか存在していないのですか?
では、どうしたらCSMFDoc::OnPlayでファイル名を扱えるようにできますか?
0820デフォルトの名無しさん
2006/09/26(火) 16:07:32class CSMFDoc
{
public:
CString fname;
OnSelect();
OnPlay();
};
CSmfDoc.cpp
CSMFDoc::OnSelect(){
fname = ファイル選択
}
CSMFDoc::OnPlay(){
CMainFrame* Frm = new CMainFrame;
Frm->MidiPlay(SmfName, TRUE);
}
0822デフォルトの名無しさん
2006/09/27(水) 19:53:58スプリッタウィンドウってMFCでしか利用できないんでしょか?
0823デフォルトの名無しさん
2006/09/27(水) 20:04:500824デフォルトの名無しさん
2006/09/27(水) 22:34:520825564
2006/09/27(水) 23:49:43ノウハウなんかをまとめたサイトってご存知ないですか
手元には2001?のアカデミー版と2005のExpressがありますが
かなり違うみたいで、また図書館で借りた2003準拠の本もまた違うようです。
なお2001はもっぱらC#を使っていました。
0826デフォルトの名無しさん
2006/09/28(木) 00:07:300827デフォルトの名無しさん
2006/09/28(木) 01:25:10ありがと
0828827
2006/09/28(木) 03:47:23WTLのはCSplitterWndのラッパーのようだったので
結局MFCのライブラリが必要ぽいので断念しました
VCのMFCのフォルダにソースがあったので(afxext.h & WINSPLIT.CPP)
これを見ながら自分で実装することにします
0829デフォルトの名無しさん
2006/09/28(木) 08:49:30イベントを登録しようとすれば、ボタンをダブルクリックすればそれが登録され
ひながたがソースプログラムに作成されます。ボタンならクリック以外の
イベントを登録しようとは思わないが、たとえばテキストボックスなら
チェンジとかクリックとかいろいろなイベントがあるわけですが、
それを登録するにはどうするのですか。以前のバージョンならクリックして
フォーカスをあわせて右クリックすればできたようですが。
0830デフォルトの名無しさん
2006/09/28(木) 08:54:32WTLは全くMFCに依存していない。(ATLにはべたべただが)
MFCと同名・似た名前のものもMFC抜きで使える。
0831デフォルトの名無しさん
2006/09/28(木) 10:34:36プロパティーのとこの雷マーク
0832デフォルトの名無しさん
2006/09/28(木) 12:10:18できました、ありがとうございます。
0833デフォルトの名無しさん
2006/09/28(木) 14:38:27ファイル操作関係で、CStdioFileも駄目なんですよね。
0834デフォルトの名無しさん
2006/09/28(木) 15:05:29CStdioFileはMFCの一部だから使えない。
0835デフォルトの名無しさん
2006/09/28(木) 15:14:19自己レスですがC#の事を思い出して
using namespace System::IO;
を入れたらコンパイルが通りました。
0836デフォルトの名無しさん
2006/09/28(木) 15:15:510837デフォルトの名無しさん
2006/09/28(木) 15:16:22入れ違いになりましたが、使えそうです。
C++がどんどんC#に似てきていますね。
0838デフォルトの名無しさん
2006/09/28(木) 15:17:54またまた入れ違いですが、納得です。
0839デフォルトの名無しさん
2006/09/28(木) 15:37:300841デフォルトの名無しさん
2006/09/29(金) 22:20:00C++の入門書を読んでクラステンプレートを使ってみました。
ヘッダーファイルに全部記述しないとダメみたいですが使用できることがわかりました。
型が違うだけの同じクラスを、沢山作らなくていいので超便利です。
そこで、調子こいて、クラステンプレート内で、こんな感じで
map.insert( pair< int, T* >)( iKey, aaa ) );
とSTLのmapやvectorを使ってみたのですが、そうすると
「typedef 識別子に、クラス メンバ アクセス演算子 (->) を使用しました。」
とかエラーがでてしまいました。
そこで質問です。STLの関数の引数にクラステンプレートのクラスを
指定するのは可能なんですか?
よく考えたらSTLもクラステンプレートだから無理なんですか?
0842デフォルトの名無しさん
2006/09/29(金) 22:52:42>map.insert( pair< int, T* >)( iKey, aaa ) );
↑の括弧の付け方がおかしいだろ。下のようにしてみたら?
map.insert( pair< int, T* >( iKey, aaa ) );
0843デフォルトの名無しさん
2006/09/29(金) 22:57:58それmap.insert(pair<int, T*>(iKey, aaa));だと思う。
余計な閉じ括弧が付いている。あと、make_pair便利だよ。
まあそんなんでコンパイルできるようになるとは思えないけどな。
そもそもVC++ 6は、テンプレート周りがだめだめなことで有名。
それどころか現在の標準C++からもだいぶ外れている。
VC++ 8 (2005)がただで使えるからそっちも試してみるといいよ。
0844841
2006/09/29(金) 23:08:38本当だ!orz
余計な「)」を取り除いたらコンパイルできました!ありがとうございます。
これからいろいろ勉強しようと思っているので、VC8とか入れてみようと思います。
0845デフォルトの名無しさん
2006/09/30(土) 07:29:59文字列5000個の配列を作るにはどうすればいいですか。
個数指定なしでは array<String^>^ aName; でコンパイルはいけますが
実行エラーが出るので、サイズが関係していると思い
array<String^>^ aName = gcnew String[5000];
だとコンパイルエラーになります。
0846デフォルトの名無しさん
2006/09/30(土) 08:40:35プログラムの移植(ry - C++/CLI移行ガイド
- マネージ型 - CLR配列の宣言
を参照するといい。
0847デフォルトの名無しさん
2006/09/30(土) 09:48:48ありがとうございます、コンパイルは通りました。
ご教示の場所はこれから見てみます。
0848デフォルトの名無しさん
2006/10/01(日) 03:18:14現在親ウィンドウに子ウィンドウを一つだけ貼り付けています
子ウィンドウでキーボード入力を処理したかったので
SetFocusを使うとキーボード入力を受け付けました
しかし、キーを一つ入力すると、
すぐに親ウィンドウにフォーカスが移動します
特に何もしてないのに勝手に親ウィンドウにフォーカスが移動するのは
なぜなのでしょうか
# MSDN(ウェブ)の検索のコツってあるんですかね
# フォーカスがないとWM_KEYDOWNがこないというのも
# 個人のホームページで見つけるまでわからず。
0849848
2006/10/01(日) 03:38:430850デフォルトの名無しさん
2006/10/02(月) 03:05:30PhotoShop,Painter,Sai等の様なレイヤーコントロールのGUIを作りた
いと思っているのですが,どのように実装したらよいでしょうか?
リストビューを使って行列表現をしてアイコン画像を表示する方法が
一般的かと思いますが,他に良い方法があったら教えてください?
0851デフォルトの名無しさん
2006/10/02(月) 05:14:36作ろうという意気込みは立派なもんだ
でも、PhotoShopしかり、あんな値なソフト
を、一朝一夕でつくるのは厳しい。
でも、がんばっちゃえ。
0852デフォルトの名無しさん
2006/10/02(月) 17:12:03Visual C++.net(2002)で画面を閉じてプログラムを終了するのって何ですか。
C++2005やC#ではthis.Close();
なのですが
0853デフォルトの名無しさん
2006/10/02(月) 17:22:50this->EndDialog(0);
でうまくいったようですが、これでいいのですか。
0854デフォルトの名無しさん
2006/10/02(月) 17:28:320855デフォルトの名無しさん
2006/10/02(月) 17:39:170856デフォルトの名無しさん
2006/10/03(火) 00:42:14>>853
MFCのダイアログを閉じるとかなら、まあそれでも。
外から閉じたい時の常道は、WM_CLOSEをSendMessageする、
CloseWindowを呼ぶ等。
0857デフォルトの名無しさん
2006/10/03(火) 06:07:04結局これでいいのですか?
0858デフォルトの名無しさん
2006/10/03(火) 09:37:21852です。
先に
this->CloseWindow();
をやったけど最小化するだけどした。
メニューもなく×ボタンも無いのでデバッグのデバッグの停止で終了させると
いう動作になりました。
0859デフォルトの名無しさん
2006/10/03(火) 10:12:590860デフォルトの名無しさん
2006/10/03(火) 10:16:43Visual C++.netではコンパイルエラーになります。
0861デフォルトの名無しさん
2006/10/03(火) 10:32:330862デフォルトの名無しさん
2006/10/03(火) 10:35:02VC環境の無いPCで実行しようと思ったらできなかったんだけど
何か特別なことしないといけないのかな?
0863デフォルトの名無しさん
2006/10/03(火) 10:35:37と、宣言した配列変数aを事情があって、プログラム実行中に
a[11]に増やしたいんですけど、どうすればいいのでしょう?
もちろん、それまでa[1]〜[10]に入ってた値はそのままで
0864デフォルトの名無しさん
2006/10/03(火) 10:49:090865デフォルトの名無しさん
2006/10/03(火) 10:56:41リリースしたなら大丈夫
何か特別なことはいらない。
0866デフォルトの名無しさん
2006/10/03(火) 11:30:45this->Close();
ならC++2005でコンパイル通ります。
this.Close()はC#ですね。
0867デフォルトの名無しさん
2006/10/03(火) 17:51:19プロジェクト作るとき、何を選択したか書けよ…
C++2005だって、プロジェクトの種類によってはそれは通らんよ。
0868デフォルトの名無しさん
2006/10/03(火) 18:27:42C++ならstd::vector使え、Cならmallocを使え。
0869デフォルトの名無しさん
2006/10/03(火) 18:32:230870デフォルトの名無しさん
2006/10/03(火) 19:38:360871デフォルトの名無しさん
2006/10/04(水) 14:16:52サンクス。
mallocは、何回か使うと、メモリ関連が原因で不安定になると書いてあったので
躊躇してたのですが、std::vectorでいってみます。
0872デフォルトの名無しさん
2006/10/04(水) 14:48:46それに独自のアロケータ書かない限り、同じヒープから割り当てられると思うよ。
0873デフォルトの名無しさん
2006/10/04(水) 14:50:12>mallocは何回か使うと、メモリ関連が原因で不安定になると書いてあった
何その糞本。今すぐ焼いて捨てた方がいいよ。
0874デフォルトの名無しさん
2006/10/04(水) 15:16:020875デフォルトの名無しさん
2006/10/04(水) 18:35:410876デフォルトの名無しさん
2006/10/04(水) 20:44:47char str[] = "我輩は猫である。";
とすると配列の長さをあわせてくれますが、
char *s;
s = (char *)malloc(100);
strcpy (s, "我輩は猫である");
この、文字列の長さに合わせて配列を宣言したいのですが、
どうしたらよいでしょうか?
char str[] = s; とか char str[strlen(s)+1]; とかしても
型が変換できないというエラーが出るものでわかりません。
0877デフォルトの名無しさん
2006/10/04(水) 20:46:330878デフォルトの名無しさん
2006/10/04(水) 20:58:540879876
2006/10/04(水) 21:00:42スレを間違えました。
0880デフォルトの名無しさん
2006/10/04(水) 21:13:400881デフォルトの名無しさん
2006/10/05(木) 03:04:470882デフォルトの名無しさん
2006/10/05(木) 12:48:38VCで作ったプログラムのテスト項目書を作りたいんですが
どういった項目を作ったらいいか分かりません
こういうことを解説してるサイトとかありますか?
0883デフォルトの名無しさん
2006/10/05(木) 16:52:27すぐ側に居眠りして仕事してないのがいるだろ?
0884デフォルトの名無しさん
2006/10/05(木) 19:07:13本屋に行ってテストの本を買え
0885デフォルトの名無しさん
2006/10/06(金) 00:30:33馬鹿みたいな動作をツリー状に派生させていけばおk
0886デフォルトの名無しさん
2006/10/06(金) 10:00:52「びっくりするほどユートピア」 からどう派生しよう・・・?
0887デフォルトの名無しさん
2006/10/06(金) 20:52:01そのメッセージの内容を取得し、ダイアログを表示する代わりに画像を表示したいのですがどうしたら
よろしいでしょうか。
0888デフォルトの名無しさん
2006/10/06(金) 21:10:590889デフォルトの名無しさん
2006/10/06(金) 21:25:44ええ。そうだと思います・・。
0890デフォルトの名無しさん
2006/10/06(金) 21:31:170891デフォルトの名無しさん
2006/10/06(金) 21:48:46□ ポインタのポインタ
↓
□ ポインタ
↓
□ 変数
0892デフォルトの名無しさん
2006/10/06(金) 21:56:560893デフォルトの名無しさん
2006/10/06(金) 23:18:390894デフォルトの名無しさん
2006/10/06(金) 23:19:550895デフォルトの名無しさん
2006/10/07(土) 00:06:21ポインタで出来る事を考えろ。
ポインタとは何かを考えろ。
行儀良いグローバル変数の使い方が出来るようになる…かもな。
0896デフォルトの名無しさん
2006/10/07(土) 00:37:54おすすめあったら教えて。
Ctl+DELで次の単語まで削除とか知ったとき嬉しかった。
カスタマイズしたらviみたくできるの?
0897デフォルトの名無しさん
2006/10/07(土) 00:57:29(Alt + W)×2
前のタブ
Ctrl + Tab
キーマクロ
Ctrl + Shift + R
Ctrl + Shift + P
現在の単語の終わりまで移動する方法ない?(≠次の単語の先頭)
マクロ組むときに欲しい
0898デフォルトの名無しさん
2006/10/07(土) 01:13:120899デフォルトの名無しさん
2006/10/07(土) 02:43:59まあ、ちょっと中途半端な動作するよな。
馴染んじまったので、嫌いな動きじゃないんだけども。
0900デフォルトの名無しさん
2006/10/07(土) 03:34:010901デフォルトの名無しさん
2006/10/07(土) 09:30:050902デフォルトの名無しさん
2006/10/07(土) 09:33:120903デフォルトの名無しさん
2006/10/07(土) 11:25:45電話すると30分以内に門を持ってきてくれる商売
0904デフォルトの名無しさん
2006/10/07(土) 14:38:24どうすれば直りますか?
0905デフォルトの名無しさん
2006/10/07(土) 14:54:30それだと、次の単語の先頭、なんだよな
もちろんそれも大事なんだけど、それとは別に欲しいんだよ('A`)
0906デフォルトの名無しさん
2006/10/07(土) 15:01:29フォントをarialとかにする。
0907デフォルトの名無しさん
2006/10/07(土) 15:18:54それはさておき素朴な疑問だが、"/"の隣には"."とSHIFTしかないのだが。
0908デフォルトの名無しさん
2006/10/07(土) 15:24:540909デフォルトの名無しさん
2006/10/07(土) 15:57:43ariaに直そうと思うんですが
officeのオプションで確認するとarial unicode msとなっているのに
バックスラッシュを押しても¥が出ます
0910デフォルトの名無しさん
2006/10/07(土) 16:14:48日本語キーボードのアサインだとそれが普通じゃない
0911デフォルトの名無しさん
2006/10/07(土) 16:34:03どうすればいいのでしょうか?
0912デフォルトの名無しさん
2006/10/07(土) 16:41:20まず、何に使いたいのかを聞きたいんだけど
0913デフォルトの名無しさん
2006/10/07(土) 16:56:250914デフォルトの名無しさん
2006/10/07(土) 17:57:430915デフォルトの名無しさん
2006/10/07(土) 18:30:53ていうか元の質問の回答はreallocだろ。
0916デフォルトの名無しさん
2006/10/08(日) 12:33:51MFCを使ってダイアログ表示させたいんだが
むり?
0917デフォルトの名無しさん
2006/10/08(日) 18:29:44int型にキャストして戻しても大丈夫?
0918デフォルトの名無しさん
2006/10/08(日) 20:58:470919デフォルトの名無しさん
2006/10/08(日) 22:08:51いざ実行し表示させてみると、スライダーの背景が白になってしまい、
スライダー以外の背景が灰色なのでどうも違和感が出てしまいます。
どうすればスライダーの背景色を灰色にできるのでしょうか?
開発環境はVisualC++6.0でWindowsXP、MFCは使わずWin32APIで作っています。
どうか、よろしくお願いします。
0920デフォルトの名無しさん
2006/10/08(日) 22:11:51ツール→オプション→互換性→「バックスラッシュを円記号にする」のチェックをオフにし、OKを押す。
初期状態でこれがオンになっており、オンになっているとMS Wordでは欧文フォントを使っていても、
バックスラッシュを円記号の字体を持っている日本語フォントで表示するようになる。
もちろんこれは見かけだけの問題であり、>>914のいうとおり。
0921デフォルトの名無しさん
2006/10/09(月) 00:06:220922デフォルトの名無しさん
2006/10/09(月) 00:19:03MSDNを「チュートリアル」で検索して、めぼしい所から読み進めていけ!
0923デフォルトの名無しさん
2006/10/09(月) 13:52:29小文字のboolから、大文字のBOOLに変更するとうまくいきました。
boolとBOOLって違うのですか?
0924デフォルトの名無しさん
2006/10/09(月) 16:47:32BOOL の上にマウスカーソルを持っていって右クリック、
出てくるコンテキストメニューにある [定義に移動] を左クリック。
0925デフォルトの名無しさん
2006/10/09(月) 17:38:230926デフォルトの名無しさん
2006/10/09(月) 17:58:34boolはC++の組み込み型。
BOOLはWindows APIの一部としてintからtypedefして作られた型。
>>925
慌てるな、まだ早い。
0927デフォルトの名無しさん
2006/10/09(月) 20:18:05知らんかった。感動した。
0928デフォルトの名無しさん
2006/10/09(月) 20:19:25カーソル合わせて F12 でもおk
0929デフォルトの名無しさん
2006/10/10(火) 00:02:540930デフォルトの名無しさん
2006/10/10(火) 00:55:200931デフォルトの名無しさん
2006/10/10(火) 01:57:01F2 とよく間違うwwwwww
0932デフォルトの名無しさん
2006/10/10(火) 03:49:37どうもありがとうございました。おかげでスッキリしました♪
0933デフォルトの名無しさん
2006/10/10(火) 11:46:49わけあってC++でプログラミングをしなければならなくなった者です。
プログラミングの完全なる初心者で、参考書の最初のほうの初歩レベルでストップしてます。
…こんなプログラムを作りたいんだけどどうしたら良いですか?
みたいな質問も受け付けてくれますか?
0934デフォルトの名無しさん
2006/10/10(火) 11:49:55君には到底無理
0935デフォルトの名無しさん
2006/10/10(火) 11:50:23そのプログラムがどうしても、VC++でないと作れないということでしたらどうぞ。
そうでなくても叩かれる覚悟があるならどうぞ。
0936デフォルトの名無しさん
2006/10/10(火) 11:52:57既に>934で叩かれてるねw
>>933
「わけあって」のわけ次第だな。
仕事でお鉢が回ってきて、周囲にプログラミングを判るのが誰もいないなら、
案外プログラムを作る以外の解決策があるかもしれない。
他の部署からプログラミングに配置転換ということなら、諦めた方が早いがな。
0937デフォルトの名無しさん
2006/10/10(火) 11:58:54ありがとうございます。
C++Builder 6を用いて、画像解析をしたいのですが…
まずは、『画像ファイルを開く』
『画像のピクセルデータ(R・G・B)の取り出し』
『計算結果の可視化』
『可視化画像の保存』
という4つが出来ればいいものと考えています。
説明不足でしょうか?
0938デフォルトの名無しさん
2006/10/10(火) 12:00:270939デフォルトの名無しさん
2006/10/10(火) 12:04:13『わけ』は、アカハラってことで。
さらにご説明を…
2枚のデジタルカメラ画像をそれぞれR・G・Bに分解して、そのデータ同士で計算します。
NDVIっていう値をご存知でしょうか?
0940デフォルトの名無しさん
2006/10/10(火) 12:18:17ネチケットというものを知らないらしい。
あんたあれか?
40歳前後の技術者で、急に触った事も無いプログラミングが必要になって焦ってるのか?
0941デフォルトの名無しさん
2006/10/10(火) 12:19:35アカデミックハラスメントが理由だし、植生指標なんてどう見ても専門ネタだし。
この板で解決策が得られる可能性は完全に消えたな。
0942デフォルトの名無しさん
2006/10/10(火) 12:22:27植生関係か。取り敢えず学会誌に登録しているアドレス宛てにメールでもばら撒くか。
0943デフォルトの名無しさん
2006/10/10(火) 12:23:00お騒がせいたしました。ありがとうございました。
0944デフォルトの名無しさん
2006/10/10(火) 12:23:390945デフォルトの名無しさん
2006/10/10(火) 12:30:550946デフォルトの名無しさん
2006/10/10(火) 12:34:30http://www.sweetnote.com/board/moeroda/
0947デフォルトの名無しさん
2006/10/10(火) 12:36:240948デフォルトの名無しさん
2006/10/10(火) 19:04:17c++の基礎からすべてを教えるとなるととても1スレじゃ足りない
とっかかりが解らないのならばまず参考書を眺めなさい
そして実際にサンプルでもいいので動かすことです
そうすると次に何をしないといけないかが明確になってきます
それをただひたすら繰り返すだけです
途中でどうしても行き詰ったら専門のスレに質問してみましょう
何がわからないのか明確であれば大抵は質問の必要性はありません
大抵の情報はネット上にいくらでも転がっているからです
質問するのは、どうしても情報が見つからないマニアックなネタか
ただの馬鹿です
マニアックネタは運が良くないと叩かれるだけですw
0949デフォルトの名無しさん
2006/10/10(火) 23:56:11お前たちゃ何か、初心者さんが釣れるのを待って袋叩きにしたい人々か。
0950デフォルトの名無しさん
2006/10/11(水) 00:02:140951デフォルトの名無しさん
2006/10/11(水) 00:04:21>C++Builder 6を用いて、
人を馬鹿にするのも大概にしてもらいたいね。
0952デフォルトの名無しさん
2006/10/11(水) 00:12:23せめて、BDS2006を使えよ。
0953デフォルトの名無しさん
2006/10/11(水) 00:16:050954デフォルトの名無しさん
2006/10/11(水) 00:17:310955デフォルトの名無しさん
2006/10/11(水) 00:24:560956デフォルトの名無しさん
2006/10/11(水) 00:50:410957デフォルトの名無しさん
2006/10/11(水) 01:10:46は何を思ってこのスレッドを質問対象にしたのだろう
そんなことを考えて眠れなくなりそうだ
0958デフォルトの名無しさん
2006/10/11(水) 01:11:44明日4時おきなのに・・・
0959デフォルトの名無しさん
2006/10/11(水) 01:25:27後26時間もあるんだから、今眠れなくても問題ないだろ。
0960デフォルトの名無しさん
2006/10/11(水) 01:30:07間違った、今日の4時
あと2時間半でおきなきゃ
0961デフォルトの名無しさん
2006/10/11(水) 01:33:05さもなくばスヌーズつきの目覚ましをきっちり止めて棚に戻したことも
記憶に残らずそのまま寝直す漏れがきましたよ。
0962デフォルトの名無しさん
2006/10/11(水) 08:37:49スレ違いなんでこれ以上はレスしないけど。
MFCなら一応CBitmap, BCBならTBitmapというのがあるけど画像処理用では無いので細かい
ピクセル扱うには使い辛い、画像処理系ならこの辺は自作が基本、詳しくはCreateDIBSection等
でぐぐってみ、後画像のロードもヘッダ解析して自前でロードが基本、その辺が面倒なら描画
は遅いけどGDI+等のライブラリなどを使う方法もある、MSから落とせたりその辺にヘッダ込み
で置いてたりするけどVC++では無くBCBの場合はそのままでは使えないのでインポートライブラリ
は自分で用意の事。
0963デフォルトの名無しさん
2006/10/11(水) 12:59:20って感じで自分は手抜きしてる。ヘッダ解析('A`)マンドクセ
0964デフォルトの名無しさん
2006/10/11(水) 14:52:43OleLoadPictureは使った事無いけどLoadImageってDDBじゃなかったっけ、ピクセル
参照するのにGetDIBitsでオリジナル以外にコピー作成するし、メモリ転送のオーバヘッド
や保存する場合結局BITMAPINFOでヘッダ作る必要があったりでイマイチ効率的で無い気が、、、
0965デフォルトの名無しさん
2006/10/11(水) 19:14:490966デフォルトの名無しさん
2006/10/11(水) 22:42:07スレ違いなので、これで最後
結局1時間だけ眠って、日帰り出張行ってきたよ
往復7時間の移動+防塵ルーム5時間の過酷なスケジュールだったけど
なんとかソフトも立ち上がって無事帰ってこれたw
さすがに眠い
0967デフォルトの名無しさん
2006/10/12(木) 17:34:48自分で関数を作ってそれを使おうと思ったらこのようなエラーがでました。
[ファイル名]Dlg.cpp ファイルの中に書いてあります。
error C3861: 'Get8': 識別子が見つかりませんでした
error C2365: 'Get8' : 再定義; 以前の定義は '以前は不明な識別子' でした
これはどういうことでしょうか?
関数自体は正しく書けてるのですが、その関数を実際使おうとするとこのエラーになります。
お願いします><
0968デフォルトの名無しさん
2006/10/12(木) 17:57:39「Get8」という名前が有効でない場所で使おうとしている。
それだけでは、これしか言えない。
0969デフォルトの名無しさん
2006/10/12(木) 17:59:47Dlg.hにGet8のプロトタイプ書いてないなんてオチは勘弁な
0970デフォルトの名無しさん
2006/10/12(木) 18:22:39別にプロトタイプなんて要らないじゃん。
#つーことは、>967はそれ以前の状態か。
0971デフォルトの名無しさん
2006/10/12(木) 18:37:080972デフォルトの名無しさん
2006/10/12(木) 20:46:32datってなんだ?
exeは
system("a.exe aaaaabbbbcccc");
とか?
0973967
2006/10/12(木) 22:12:46うーん、それ以前の状態と。。。
私はただ、ボタンがクリックされた時のアクションとかを書くところに
void CpictORGDlg::OnBnClickedButton4()
{
・・・
a=Get8(2, i, j, pDC);
}
Get8(int a, int b, int c, CDC* pDC)
{
return ほにゃらら;
}
みたいにすぐ下にGet8を書いただけなんですけど他にやるべきことがあったのでしょうか?
0974デフォルトの名無しさん
2006/10/12(木) 22:22:38{
return ほにゃらら;
}
void CpictORGDlg::OnBnClickedButton4()
{
・・・
int a=Get8(2, i, j, pDC);
}
0975デフォルトの名無しさん
2006/10/12(木) 22:29:02関数が使えるのはなぜでしょうか?
0976967
2006/10/12(木) 22:44:48入れ替えるだけでできました><
すいません、こんな単純なことで><
0977デフォルトの名無しさん
2006/10/12(木) 22:56:48C++ではなく、Cならプロトタイプ宣言(の含まれたヘッダをインクルードすること)なしでも関数を呼び出せる。
決して勧めはしないが。
0978デフォルトの名無しさん
2006/10/12(木) 23:40:44VC++2005でもできましたが?
やはり、ヘッダ書いた方が動作が速かったり、誤作動起こさない
っていうのがあるのでしょうか?
0979デフォルトの名無しさん
2006/10/12(木) 23:45:390980デフォルトの名無しさん
2006/10/13(金) 00:34:05逆に言えば、定義がない場合や定義より先に使いたい場合には必要となる。
0981デフォルトの名無しさん
2006/10/13(金) 05:41:42間違えました、batです。
systemはbatも実行できますか?
0982デフォルトの名無しさん
2006/10/13(金) 06:32:32やってみれや
0983デフォルトの名無しさん
2006/10/13(金) 06:38:27ありがとうございました。
0984デフォルトの名無しさん
2006/10/13(金) 07:41:16寿命の短い範囲にHANDLE変数を宣言して、頻繁に生成と破棄を繰り返すのは邪道ですか?
0985デフォルトの名無しさん
2006/10/13(金) 08:20:32インクルードしなくても動作するのになぜインクルードしないと
いけないのですか?利点はなんですか?
0986デフォルトの名無しさん
2006/10/13(金) 08:54:430987デフォルトの名無しさん
2006/10/13(金) 08:59:08好きにするがいい
0988デフォルトの名無しさん
2006/10/13(金) 12:03:49標準関数についてならば、標準インクルードファイルをインクルードすると型チェックが正しく働くと言うメリットがある。
例えば、string.hをインクルードせずにstrcpy()と書くとコンパイルはできるが当然まともには動かない。
0989デフォルトの名無しさん
2006/10/13(金) 15:28:58ロードするプログラムを作っているのですが、
コンパイルした後、EXEを別の場所にもっていって
実行すると、bmpファイルが見つからないエラー
が発生します。
DebugおよびReleaseフォルダに作成される
Script1.rcには間違いなく画像データが組み込まれて
いるのですが、これは何故なのでしょうか。
0991989
2006/10/13(金) 15:45:21別のリソース(Xファイル)からbmpを
コールしているところがありましたorn..
0992デフォルトの名無しさん
2006/10/13(金) 16:51:38VC++ 2005だって拡張子がcのファイルをコンパイルさせればCコンパイラとして働く。
0993デフォルトの名無しさん
2006/10/13(金) 21:24:30CListCtrl* pTeikouCtl = (CListCtrl*)GetDlgItem(IDC_LIST);
for(int iCnt = 0; iCnt < (int)m_Vector.size(); iCnt++){
pTeikouCtl->InsertItem(iCnt, vector[iCnt]);
}
UpdateData(FALSE);
実行してみたのですがリストには何も入っていませんでした。
どこか間違いなどありましたらご指摘をお願いいたします。
開発環境 VS2005 MFC WinXP SP2
0994デフォルトの名無しさん
2006/10/13(金) 21:32:29今DialogクラスのOnInitDialog内でリストにデータを挿入するコードを記述しております。
CListCtrl* pListCtl = (CListCtrl*)GetDlgItem(IDC_LIST);
for(int iCnt = 0; iCnt < (int)vector.size(); iCnt++){
pListCtl ->InsertItem(iCnt, vector[iCnt]);
}
UpdateData(FALSE);
実行してみたのですがリストには何も入っていませんでした。
どこか間違いなどありましたらご指摘をお願いいたします。
開発環境 VS2005 MFC WinXP SP2
0995デフォルトの名無しさん
2006/10/13(金) 21:39:19IDC_LISTはリストビューコントロールのIDか?
リストビューの表示タイプ(Icon,Report等)は?
表示タイプがReportの場合カラムヘッダはちゃんと追加してあるか?
InsertItemの戻り値は?
0996994
2006/10/13(金) 21:49:35リストビューではなくリストボックスでした。リストビューに変更したほうがよろしいでしょうか?
ちなみにInsertItemの戻り値はすべて0でした。
0997995
2006/10/13(金) 21:57:36好きなほう使えばいい。
リストボックスを使うならGetDlgItemの戻り値をCListBoxにキャストして
AddStringすればいい。
0999デフォルトの名無しさん
2006/10/13(金) 22:22:171000デフォルトの名無しさん
2006/10/13(金) 22:29:1210011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。