1 :
デフォルトの名無しさん :
2006/02/28(火) 09:40:48 BE:163872427-
ム板ではかんたんに立つんだよな、なぜか。 パート○○とか、ダサイっしょ
3 :
デフォルトの名無しさん :2006/03/01(水) 00:46:57
if(3get){ for() }
4 :
デフォルトの名無しさん :2006/03/01(水) 04:44:38
Visual Studio 2005 Express Editionとの違いを教えてください
>>4 Express Edition : Microsoftが作っている
BCB : Borlandが作っていた
>>4 Visual Studioは本来、VC++だけでなくVB (.Net)やVC#などもセットになったIDE。
このスレはその中でもVC++のスレ。VC++ならどんなバージョンでも受け付ける。
エスパー?
9 :
デフォルトの名無しさん :2006/03/04(土) 00:20:00
すいません! 初心者なんですが C#とC++のどちらをやればいいのか迷ってます! やはり初心者にはC#の方が良いのでしょうか? いつかはネットワークプログラミングをできるようになりたいです! どちらを選択したら良いのか教えてください!
両方。 ネットワークプログラミング → C
11 :
デフォルトの名無しさん :2006/03/04(土) 02:31:39
「猫でもわかる〜」 を買ってwin32アプリの製作を目指しているものなのですが、 LinuxのコンソールでC言語を習得したつもりでもまったく違う環境と あまりに多いAPIに悩まされています。 最初は「おまじない」みたいな感じでソースを書いて流し読みでも良いのでしょうか・・・・
>>11 コードよりも概念が重要
理論がわかってれば細かいコードはどうでもよくなる
>>12 その概念って、どうやって理解すればいいの?
推薦図書とかあったら教えて。
>>13 自分は Mac から移行したから GUI の扱いに抵抗はなかったが、DOS から Mac に
移行したときは参った。Mac -> Windows 移植では、Mac の API と互換の関数を
最初に作ったのだが、振るまいが分からないときは、送られて来る msg を逐一
ファイルに取ったりした。で、
static FILE *fd;
#ifdef TEST
if ((fd = fopen("err.txt", "a+"))!=NULL){
fprintf(fd, "...", x, y, ...);
fclose(fd);
#endif
なんてのぶち込んだ。1ステップずつ追うときはデバッグ実行でもいいが、
要所要所を見るときは、この方が楽だと思った。大体の処理傾向がつかめると
他への応用も効くようになる。余り基本的でない部分ではサンプルのままで
やって置くのがいいと思う。慣れるとキャストしながらポインタを使いまわす
ようになるが、やりすぎると痛い目に会う。幸運を祈る。
15 :
デフォルトの名無しさん :2006/03/04(土) 13:05:36
error LNK2001: 外部シンボル ""int __stdcall WSACleanup(void)" (?WSACleanup@@$$J10YGHXZ)" は未解決です。 こんなエラーがWSACleanup();を使うと出てしまうんですが、何が原因なんでしょうか・・・・ サンプルソースすらコンパイルできないなんて・・・・ #include <stdio.h> #include <winsock2.h> int main() { TCHAR str[1024]; WSADATA wsaData; WSAStartup(2 , &wsaData); printf("バージョン = %d.%d\n記述 = %s\n状態 = %s\n" , (BYTE)wsaData.wHighVersion , wsaData.wHighVersion >> 8 , wsaData.szDescription ,wsaData.szSystemStatus ); WSACleanup(); return 0; }
17 :
デフォルトの名無しさん :2006/03/04(土) 14:11:21
>>17 関数はライブラリをリンクしないと使えない。
何もしなくても基本的なライブラリはリンクされるようになっているから、
printfなんかのC標準関数や一般的なWinAPIの関数はヘッダをインクルードするだけで使えている。
自分の使いたい関数がどのライブラリを要求するかはWindows関係ならMSDNを引けば書いてある。
19 :
デフォルトの名無しさん :2006/03/04(土) 14:27:01
20 :
15 :2006/03/04(土) 15:18:22
できた!!!! ありがとうございました!!
VCEEなりBCCなり使ってコンパイルすればいんじゃないの? そこから先は、環境によったりするからコンパイルを試して からじゃないとわからないと思う。 共通して言えるのは 1.SDKやらPSDKなりの必要な物を入れる。 2.ライブラリ等にパスを通す。 3.未解決ってエラーが来たら、Googleなりで調べて使用している ライブラリを追加or2をやる。
先回の900スレあたりでいろいろと教えてもらった者です ( `・ω・´)ノヨロシクー テキストボックスから読み込んだ文字列を、16進数に変換するプログラムで 16進数以外を入力したら "変換が正常に行われませんでした" を出したいのだけど private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) { errno=0; pin_ptr<const wchar_t> text = PtrToStringChars(textBox1->Text); //16進数に変換 wchar_t* pEnd; unsigned long ul = std::wcstoul(text, &pEnd, 16); /*整合性のチェック(16進数かどうか) if(errno != 0){ /* errno has changed, so error has occurred */ MessageBox::Show("変換が正常に行われませんでした"); } } なぜか数字は、8桁迄は問題無いけど、9桁以上入力すると "変換が正常に行われませんでした" が表示されるし A-Fを8桁以上入れると "変換が正常に行われませんでした" A-F以外なら何桁でも何も出てこない 本来意図する反対の様な振る舞いなんだが 漏れが意に反するコードを書いているためだと思うが (´ε`;)ウーン…ワカラン なんで?
>>24 サンクス
では変換する文字列の頭にに0xを付けたら16進数と認識してくれるってこと?
MSDNで調べたらpEndってオブジェクトに対応するテキストの最後の文字へのポインタですってあるけど、
wchar_t* pEnd;
では駄目なのかな?
>>25 pEndは、wcstoul()呼び出し後にチェックすることで変換終了点を検出するために用意したのではないのか?
そうでないなら、要らない。
「str/wcsto〜」系の関数は正しく変換できたかを確かめるのに*pEnd == L'\0'かどうかを見るんだよ。
こういうこと? //if(errno != 0){ if(*pEnd != L'\0'){
>>27 なるほど
25=28ですが
if(*pEnd != L'\0'){
でコンパイラも通ったし、結果も意図する事となったポイんだが
errnoの使い方が中途半端というか、全然分からないのだけど
errnoで判定する為にはどうしたらよろしか?
射精思想
>>29 24のURL読んだ?
オーバーフローまたはアンダーフローが発生したときにerrnoが設定されると書いてあるだろ。
つまりその他の場合にはerrnoは何も設定されない。
もちろんこれはMSの独自仕様ではなく、ISOの決めたこと。
>>29 ですが
たしかに、そうだけど
変換を実行できなかった場合は 0 を返します
ともあるので
16進数以外の場合0を返すってことではないのかな?
仕様にない細かい部分はライブラリのソースみればわかる。 もしライブラリのソース持ってなかったら、 いろいろなケースを想定して納得がいくまでテストすればいい。
>>29 ダス
errnoで16進数か、否かを判定するのは標準的ではないという事でよろしだな
┐(´д`)┌ヤレヤレ
35 :
デフォルトの名無しさん :2006/03/04(土) 21:41:08
質問です。XP、VS8 です。 素朴な疑問なのですが、 プロジェクトの設定の追加依存ファイルでライブラリを追加するのと、 どこかのヘッダに #pragma comment(lib, "hoge.lib") とするのでは、 何か違いがあるのでしょうか。
違うけど違わない
プロジェクトの設定の追加依存ファイルでライブラリを追加するのと、 どこかのヘッダに #pragma comment(lib, "hoge.lib") とするのが違う。
目的が同じで手段が違う
結果が同じで、目的と手段が違う
41 :
デフォルトの名無しさん :2006/03/04(土) 22:14:09
42 :
デフォルトの名無しさん :2006/03/04(土) 22:21:12
なんでwin32apiは、typedefをキチガイじみてるほどしているのだ? あれのせいで見慣れない記述がイッパイ出てくるから、 プログラムが理解しにくくなっているよな
その方が意味を取り違えたりしないからじゃねぇ?
VC8です wchar_t* arg_2; _ultow(arg_1,arg_2,16); こんな使い方したら、 : warning C4996: '_ultow' が古い形式として宣言されました。 : '_ultow' の宣言を確認してください。 と指導を受けました、_ultowをどう書き直したらいいの?
>>44 です
よく読んだら
_ultow_s (arg_1,arg_2,32,16);
最近はこう書くようですね
48 :
デフォルトの名無しさん :2006/03/05(日) 00:13:57
VC++ 2005 でMFCを使わない簡単なアプリを作ってみました。 できた実行ファイルをバイナリエディタでみてみると 最後のほうにPADDINGという文字がいくつも並んでいるのですが、 これは仕様でしょうか? この文字を削ってファイルサイズを小さくすることはできないのでしょうか?
>>48 #pragma comment(linker, "/opt:nowin98")
50 :
48 :2006/03/05(日) 00:29:43
>>49 早速のレスありがとうございます。
試してみたのですが、
main.obj : warning LNK4229: 無効なディレクティブ '/opt:nowin98' が見つかりました。無視します。
というメッセージが出てPADDINGという文字はそのまま残ってしまいました。
他に設定しなければいけない箇所があるのでしょうか?
wchar_t* hoge; という変数をテキストボックスに表示したいのですが 巧くいきません String型とかに変換しないと出来ないのでしょうか?
>>48 なんだろう?見てみたけど、VC++2005でも特にそういうのはなかったよ。
つまり仕様でないことは確か。
ファイルは1バイトずつじゃなくてブロック単位で読み書きするから 意味もなくサイズ削ってもしょうがない。
>>51 NT系限定でよいのならSetDlgItemTextWやSetWindowTextWなんかを使う。これが1番簡単。
9xでも動くようにしたければ、MSLUを使うか、
WideCharToMultiByteなどで一旦マルチバイト文字列へ変換してSetDlgItemTextAやSetWindowTextA。
或いはATLを使っているのなら、
SetDlgItemTextやSetWindowTextの引数にATL::CW2CT(hoge)でいける。
これはATL 7.0以上。それ以前だと少し違う。
>>54 さん
ありがとう
>>51 です
>>SetDlgItemTextWやSetWindowTextWなんかを使う。これが1番
これってMFCのライブラですよね、余りよく知らないのですが
CLRのフォームアプリケーションでプログラム作っているのですが
CLRでMFCのライブラリ使えるのでしょうか?
色々試してみたのですが
wchar_t hoge[] = L"Kitty on your lap";
textBox1->Text=Convert::ToString(*hoge);
こう書くとコンパイルは通るのですが
"Kitty on your lap"の最初のkしか表示できないんですよね(;^ω^)
>>55 CLR 使うならMFCは捨ててマネージドなオブジェクト
使う方がいいと思うけど・・・・
って、そういうことを言ってるんじゃない?
>>55 マネージドなら先に言え。
(const )wchar_t*はSystem::Stringのコンストラクタで変換できからこれでいけるはずだ。
textBox1->Text = gcnew System::String(hoge);
C++/CLIでなければgcnewをnewにでも直してみろ。
58 :
デフォルトの名無しさん :2006/03/05(日) 17:40:26
CStringList の POSITION の値をインデックスの番号に変換できるようなの無いですか?
59 :
58 :2006/03/05(日) 17:55:32
FindIndex( があったの思い出した。忘れてください
コンストラクタの中で、そのクラス自身のメンバ関数を呼び出しているのを時々見ますが、 これは間違いではないんですか? 一見、インスタンスの生成が完了してないのだから、危険な気がしますが・・・
age
62 :
デフォルトの名無しさん :2006/03/07(火) 21:38:43
age
別に問題ないよ。 複数のコンストラクタから 共通に初期化メソッドを呼び出すこともある。 もちろん初期化してないメンバ変数を 使うようなメソッドが呼び出されないように 注意する必要があるし、例外についても気をつける必要があるけど。
64 :
60 :2006/03/07(火) 22:01:06
CStringList m_strList; ・・・ int i = m_strList..GetCount(); # warning C4244: '初期化中' : 'INT_PTR' から 'int' に変換しました。データが失われているかもしれません。 INT_PTR は int から typedef されてるからいいじゃないですか。 いちいちキャストしたり INT_PTR で変数を宣言しなきゃいけないですか?
>>65 INT_PTRに限らず_PTRと付く型はWin32では32ビットだが、
Win64では64ビットになるという整数型。
だからLPCSTRとLPCTSTRのように本当は同じ型ではない。
Win32だから int で64ビットもいらないです
そうは言っても世の中何があるかわからない。 2000年問題だって2038年問題だってそう。
69 :
デフォルトの名無しさん :2006/03/08(水) 00:31:46
VisualC++ ExpressEditionとDirectX SDK、Platform SDKをインストールして とりあえずDirectXのサンプルを動かしてみようと思っても全然でけへんのです。 インクルードファイルとかライブラリのディレクトリ設定はできたと思うんですけど、 未解決の外部シンボルってエラーが100個以上でます。 サンプルも動かせないのかこいつは。文句言うな動けって感じです。
あれ、あれあれ。ひょっとしてこれ、ATLとかMFCとかって奴じゃないですよね。 金払えって事じゃないですよね。
>>69 プロジェクトに適切なlibファイルを指定したか?
72 :
デフォルトの名無しさん :2006/03/08(水) 02:34:38
VC++.NETでこのようなエラーが出ました。 ------------ error LNK2001: 外部シンボル ""protected: virtual struct AFX_MSGMAP const * __thiscall CAboutDlg::GetMessageMap(void)const " (?GetMessageMap@CAboutDlg@@MBEPBUAFX_MSGMAP@@XZ)" は未解決です。 ------------ 解決の方法が分からないのですが、どなたか教えていただけないでしょうか。
C++初心者です。 VisualC++を使ってC言語を学びたいのですが お試し版のような無料VisualBasicなどないのでしょうか? もちろん合法であるものですが、あれば知っている方教えてください。 Expressを試したのですがデバックやコンパイルが出来なかったので・・ Expressでも普通に計算させてExcelに表示させることぐらいはできるのでしょうか?
>>73 gcc 使えばいいんじゃない?
それと、Visual C++ 2005 Express Edition で
デバッグやコンパイルができない、なんていってるようじゃ、
使える物なんて無いと思うが。
gccでExcelに表示の方がはるかに難しいと思う。
>>76 へ
私がそのリンク先に行くのは早すぎる気がして、、初心者にすらなれていない超初心者など、、
でもなんとかExcel表示まで出来るようになりました。(気合で自己解決しました)
Express EditionというのはC++参考書のものとは少し違うのかな。
<表示までになんとなく変えたところ>
・#include <〜〜〜> ⇒ #include "〜〜〜"
これはExpressに限った事なのでしょうか?
・main(){〜〜〜} ⇒ int _tmain(int argc, _TCHAR* argv[]){〜〜〜}
メイン関数を一つのみのプログラムだったので今回は問題なかったのですが、
いくつかメイン関数を増やしてプログラムするときは上記を挿入すればよいのでしょうか?
何か他にも注意すべき点などあれば教えてください。
>>78 #includeのは<>で平気だと思うが。
_tmainはプロジェクトのプロパティの文字セットをUnicodeからマルチバイトにすれば、int main()が使える。
>>71 DirectXSDKのディレクトリにある、LibとIncludeを
それぞれライブラリフォルダとインクルードフォルダに設定すればいいはずですよね。
Libの中にあるx64とかx86とかに設定しなおしても駄目だし、こいつ何なのって感じです。
>>81 それはライブラリとインクルードファイルのありかを設定しただけ。
実際に使うと言わなければ使われない。
インクルードファイルは#includeで、
ライブラリファイルはプロジェクトのプロパティのリンカの追加の依存ファイルのところ。
VCでテストのためのコンソールアプリを書いたのですが、関数ポインタを 宣言しようとするとエラーにされます。 int _tmain(int argc, _TCHAR* argv[]){ WORD WINAPI (*GetVersion)(void); .... } とすると、「error C2059: 構文エラー : '('」を喰らいます。 どうやら WINAPI 宣言が引っかかっているようで、これを外すとコンパイルが 通ります。 しかし、関数ポインタで表現したい関数がそもそも WINAPIをつけて宣言されて いるわけですが、 1.関数ポインタに何故 WINAPI宣言を付けられないのか。 2.WINAPI宣言をつけなくとも問題なく動作するのか。 どうなんでしょうか?
-WORD WINAPI (*GetVersion)(void); +WORD (WINAP *GetVersion)(void);
ミスった。 +WORD (WINAPI *GetVersion)(void);
86 :
83 :2006/03/08(水) 13:56:00
>>85 今コンパイルが通ったので実行して確認しました。ありがとうございます。
浦島太郎で申し訳ないんですが、コンソールアプリで#include "stdio.h"とか #include "windows.h"とかやってしまったのに、インクルードできてる、って 変ですよね? 本来ならば#include <stdio.h>とか#include <windows.h>でなければならない はずなんですが。 #またMSの独自仕様か・・・。
>>87 いいえ。
見慣れない書き方だけど、間違ってはいない。
ISO C/C++の仕様で#include "〜"でヘッダなどが見つからなければ、
#include <〜>と見なして探すことになっている。
89 :
87 :2006/03/08(水) 15:59:08
レスサンクス。いや、そういう意味じゃなかったんだけど、書き方が悪かった ですね。すみません。 gccとかに慣れた身には、""で囲まれた部分へのパスはコンパイル時にコマンドラインで 指定するもんだ、と思っていたので。 たとえば、移植の際に障害になるようなシステム標準のヘッダファイルは、修整した コピーを独自のディレクトリにつっこんで、そこから読み出すような動作をさせたい 時があります。 だから、"〜"で指定したファイルが見つからないからといってシステムのディレクトリに 探しに行くような仕様では都合がわるいな、と思ったわけです。 またMSの独自仕様なのか、と思ったわけで。 他にも<iostream.h>じゃなくて<iostream>じゃないとダメとか、coutはダメでstd::coutとか・・・。
>>89 根本的なところでいろいろ誤解していそうだ。
""で囲んだインクルードファイルは、カレントになければ<>と同様に探すのはCの仕様。
<iostream.h>は過去のヘッダファイルで現在は<iostream>、
後者ではnamespaceを指定しない限り、namespace解決のためにstd::coutとする。
MSがどうとか厨臭いこと言う前に、もっと自分を磨きなさいな。
gccの俺様使用か
ついでに言うと、 >gccとかに慣れた身には、""で囲まれた部分へのパスはコンパイル時にコマンドラインで >指定するもんだ、と思っていたので。 この辺も大誤解。
>>89 >gccとかに慣れた身には、""で囲まれた部分へのパス
>はコンパイル時にコマンドラインで 指定するもんだ、
>と思っていたので。
もしかして -I オプションのこと言ってるの?
それは < > のインクルードパスじゃねぇの?
>それは < > のインクルードパスじゃねぇの? だからそれは""のときにも(ローカルになければ)探す対象になるんだってばさ。
95 :
デフォルトの名無しさん :2006/03/08(水) 19:30:46
>>82 やっと動きましたー!
API関係のライブラリ群がリンカの依存ファイルに
入れられてなかったのが原因だったみたいです。
存在しても宣言しなければ使えないんですねー。滅茶苦茶感動してます。
ありがとうございました。来てよかったです。
VC++で勉強し始めてふと疑問に思ったのだが VC++で作られたアプリってやっぱり全てWINMAINから始まっているんですかね?
いいえ
>>97 WINMAINから起動させない場合ってどういう時でしょうか?
どうやれば特定のメソッドから起動できます?
WinMainです。 というのを冗談にしても、VC++で用意されているものだけでもmain, wmain, wWinMain, _tmain, _tWinMainがある。 (DllMainは除いておく) さらに自分でエントリポイントを決められるので、奇抜なことをしたいならどうぞ。
バッファに良くMAX_PATH使うのですが、駄目なのでしょうか? ファイル名を扱う場合など、バッファのサイズはどのようにして決めれば良いのでしょう?
なぜ駄目だと思う?
バファリンだから。
103 :
デフォルトの名無しさん :2006/03/10(金) 15:31:28
半分は優しさでできてるんだけど、 あとの半分は?
The Unicode versions of several functions permit a maximum path length of approximately 32,000 characters composed of components up to 255 characters in length. To specify that kind of path, use the "\\?\" prefix.
105 :
デフォルトの名無しさん :2006/03/12(日) 11:24:36
すいません、どなたか教えて頂きたいのですが、VC++でダイアログ(例えば自分で生成したForm1クラス)を 別クラス内で表示する場合、 Form1* a = new Form1(); a->showDialog(); と正常に処理できるのですが、 Form1 a; a.showDialog(); だとエラーが出てしまいます。 どうして、ポインタ参照でしか表示することができないのでしょうか?
>>105 前者は明示的にdeleteされるまで生存するが、後者はその関数終了時までしか生存できないので。
テキストファイル(200行ぐらいの)を開いて、1行づつArrayに格納するには、どうすればいいのでしょうか?
テキストファイルを開いて、1行づつArrayに格納すればいい。
CStdioFile::ReadString テキストを 1 行読み込みます。
CArchiveがfstreamより明らかに使いにくいんですが、 何がいいんですかコレ?
111 :
デフォルトの名無しさん :2006/03/12(日) 17:31:46
すみません教えてください。 MSDNのC/C++リファレンスって日本語のは無いのでしょうか・・? F1を押すと英語が・・
112 :
デフォルトの名無しさん :2006/03/12(日) 17:44:45
いい機会だから英語で読めばいいと思う。
どこか初心者向けの解説をしているサイトは無いでしょうか 自分でググった所どうもヴァージョンが古いもので解説しているみたいでして・・・
114 :
デフォルトの名無しさん :2006/03/12(日) 17:52:12
>>113 がどんなバージョンを使っているか、誰も分からない。
115 :
デフォルトの名無しさん :2006/03/12(日) 17:54:43
・・・orz。 MFCのリファレンスとかは日本語で出るのに・・・。
116 :
デフォルトの名無しさん :2006/03/12(日) 17:57:03
>>114 すいませんでした、つい先ほど公式からDLしたので多分最新Ver.だと思います
117 :
デフォルトの名無しさん :2006/03/12(日) 19:45:15
>>114 連続ですいませn
Microsoft Visual Studio 2005
Version 8.0.50727.42 (RTM.050727-4200)
Microsoft .NET Framework
Version 2.0.50727
インストールされている Edition: VC Express
Microsoft Visual C++ 2005 76542-000-0000011-00125
Microsoft Visual C++ 2005
ver.は↑の奴です
>>117 なんか英語の多いよね。
インストールしたMSDNでは英語のAPI説明が、
Web上にあるMSDNでは日本語でひっかかったことあるよ。
まぁぐぐればどっか解説してるページにでもひっかかるし、その方が速いよ。
119 :
デフォルトの名無しさん :2006/03/12(日) 20:16:37
>>118 そうですか、がんばってググります
別の質問ですがビルドしたexeは何所にあるんでしょうか?
検索すれば分かるだろ、それくらいやれよ
121 :
デフォルトの名無しさん :2006/03/12(日) 20:48:39
ビルドしたexeを起動したんですが 0.何秒しか表示されないのですがこれは正常なんでしょうか?
122 :
デフォルトの名無しさん :2006/03/12(日) 21:09:16
>>121 すぐに処理が終わるコンソールアプリなら正常じゃないか?
Ctrl + F5 で起動してみれば?
123 :
デフォルトの名無しさん :2006/03/12(日) 21:17:17
>>122 ビルドエラーが発生しました。続行して最後に成功したビルドを実行しますか?
ではいを選択すると指定されたパスが見つからないとエラーメッセージが出ます・・・
124 :
デフォルトの名無しさん :2006/03/12(日) 21:21:45
>>123 そりゃ、ビルドエラーが発生してるんだから、
実行ファイルは生成されていないわけで、あたりまえ。
まずはビルドエラーを解消しなきゃね。
125 :
デフォルトの名無しさん :2006/03/12(日) 21:42:05
>>124 ビルドエラーですか・・・
一応ググってみます
126 :
デフォルトの名無しさん :2006/03/12(日) 22:01:26
全然ダメです・・・ 初心者向けのサイトがあったかと思えばVerが全然違ったりして・・・
127 :
デフォルトの名無しさん :2006/03/12(日) 22:01:57
>>125 いや、ググらなくても。
ビルドエラーが出てるってことは、コンパイルかリンクの
いずれかでエラーが発生しているってことだから、
エラータブか出力タブに詳細な表示が出てるはずなんだけど。
いくらなんでも酷いな・・・
いつも疑問に思うんだが、そこまで聞かなきゃわからないのに、 なんで分かりにくいVC++使うんだろう。素直にVBとかHSPとかにしておけばいいのに。 del6とかもあるんだし。
130 :
デフォルトの名無しさん :2006/03/12(日) 22:20:49
>>129 VBとかHSPとかってのは簡単なんでしょうか?
俺探し物したらあっという間に1時間とか経っちゃうけど
>>126 はたったの20分か。素早いな。
>>130 簡単。詳細はスレ違いだから、該当スレで聞いておくれ
VBでもHSPでも正しく書かなければエラーが発生するという点では同じだと思うが。
そりゃそうだ。 ただ、気にしなければいけない項目は大きく減る。 一眼レフとバカチョンカメラの違いのようなもんじゃないか?
インクルードやライブラリとかそのへんからつまずくだろう
馬鹿がプログラミングを仕様なんてのがそもそも間違いなんだが、 馬鹿に限って「プログラミング=VC++」なんて夢を抱いたりしちゃうもんだから土ツボにはまる罠。 馬鹿は大人しくVBAでもやってなさいってこった。
137 :
デフォルトの名無しさん :2006/03/13(月) 05:19:02
VisualStudio Spoke2003のヘルプでわからないことがあります。教えてください。 購入したときはウィンドウのなかに左に検索文字列を入力する画面があって 右に検索結果が表示されていて、右下に検索文字列にヒットした結果が表示されていました。 が、しかし検索文字列を入力する部分が別ウィンドウになってしまって元に戻らなくなりました。 購入したときのウィンドウに戻すにはどうすればいいでしょうか?お願いします。 購入したときは以下のような構成だった。 -------------------------------------------------- | | |検索文字列入力 | ここに検索結果にリンクしている記事 | | | | | | | | | | | | | |----------------------------------- | |検索結果 何件見つかりました | | | |
138 :
デフォルトの名無しさん :2006/03/13(月) 05:20:23
>> 137 申しわけありません、書き込むスレッド間違えたのでほかで質問します。
139 :
デフォルトの名無しさん :2006/03/13(月) 05:24:21
>>137 です SPOKEにもVISUAL C++はいってて 同じヘルプ画面だと思うので
教えてください、
>元に戻らなくなりました。 「元に戻せなくなりました」だろうなぁ。
コンソールアプリで、自分(コンソール?)のHWNDを取得するのはどうしたら よいのでしょうか? CWnd::GetSafeHwnd()を呼び出そうにも、そんな名前はシラネとか言われてしまいます。
( ゚д゚)ポカーン
143 :
デフォルトの名無しさん :2006/03/13(月) 07:16:50
コンソールウィンドウにそんなもんあったっけ? あったとすると、そのコンソールウィンドウに 描画できるんだろうか。無理だと思うけどなぁ。
144 :
137 :2006/03/13(月) 07:50:11
無事に解決できました。
145 :
141 :2006/03/13(月) 07:53:45
自己解決しました、ありがとうございます
>>141-143 FindWindowはできたと思う。
ウィンドウハンドルを使って何の意味があるかはわからないけど。
コマンドプロンプトに絵を描く。実用性皆無w #include <windows.h> BOOL IsWindows9x() { return (GetVersion() >= 0x80000000); } int main(int argc, char *argv[]) { HWND hWnd; HDC hdc; char szOldText[80], szId[32], szTemp[32]; int x, y; GetConsoleTitle(szOldText, sizeof(szOldText)); do { wsprintf(szId, "grph%08X", GetTickCount()); SetConsoleTitle(szId); do { Sleep(100); GetConsoleTitle(szTemp, sizeof(szTemp)); } while (lstrcmp(szId, szTemp)); if (IsWindows9x()) hWnd = FindWindowEx(NULL, NULL, "tty", szId); else hWnd = FindWindowEx(NULL, NULL, "ConsoleWindowClass", szId); } while (hWnd == NULL); SetConsoleTitle(szOldText); if (IsWindows9x()) hWnd = FindWindowEx(hWnd, NULL, "ttyGrab", NULL); hdc = GetDC(hWnd); for(y = 0; y < 256; y++) for(x = 0; x < 256; x++) SetPixelV(hdc, x, y, RGB(x, y, (510 - x - y) / 2)); ReleaseDC(hWnd, hdc); return 0; }
148 :
147 :2006/03/13(月) 10:57:23
Win9xに対応させるためにごちゃごちゃやっているが、W2K以降に限定すれば GetConsoleWindow()で十分だったりする.
149 :
デフォルトの名無しさん :2006/03/13(月) 13:32:42
>>147 よし、この調子で cygwin のコマンドプロンプトに
絵を書いちゃうぞ! コマンド名はもちろん sl.exe
Visual C++の1.0っていつリリースされたんですか? 知ってる人、教えてください。かなり昔なはずなんだけど。
スタンダード 40,000 プロフェッショナル 98,000
>>146-148 おぉ、ありがとうございます。
つか、ある出来あいのライブラリをコンソールアプリに結合してテストしようとしたのですが、
意味なく?WHNDを要求するので困ってました。
>>145 成りすましして楽しいか? 人間のクズは死ね。
>>154 死ねという人はヒドイと思います(><)
156 :
141 :2006/03/13(月) 21:51:21
>>154 その程度で本人証明できたつもりか? おめでてーな。
つーか、他人を屑呼ばわりすることも充分屑行為だぞ。
そういうときは、NULLとか、GetDesktopWindowとか渡してみるのはどうか?
>>155-156 お前らはリカーシブで屑。回線切って首吊れ。
>>157 サンクス。NULLでも動きましたが、ちょっと心配。
ちなみに、
>>147 のサンプルだと、char [] をLPCWSTRにキャストしやがれみたいな
エラーが出まくりです。VC8だと明示的にキャストしないとまずいようですね。
本質を知らずにキャストを行う者に、アナテマ。
160 :
141 :2006/03/13(月) 22:21:12
>>158 他人を屑呼ばわりする暇に、少しはこの辺のスレでもよんで勉強したらどうだ?
VC8はディフォルトでUnicodeを使う設定になっているはずだぞ。
それと、「ある出来合いの」ライブラリの仕様を確認しないでNULLを渡すなんて狂気の沙汰だ。
#あ、だから他人を屑呼ばわりするのか。
他人を屑呼ばわりする暇に、少しは検索でもして勉強したらどうだ?
162 :
141 :2006/03/13(月) 22:24:22
>>160 自分の文書を読み返せ。人格が分離してるぞ。低脳屑ww
163 :
141 :2006/03/13(月) 22:27:57
いいんだよ、漏れは元々屑なんだから。
>>漏れは元々屑なんだから 漏れ.....てんならシズクだな。
165 :
デフォルトの名無しさん :2006/03/15(水) 14:32:06
wchar_tとWCHARって同じ型だよね? どっちを使ったほうが良いとかってあるの? unsigned intとかよりもDWORD使った方が良いの?
166 :
デフォルトの名無しさん :2006/03/15(水) 20:10:24
すいません、vc++.netを使っているのですが stdafx.hというのはデフォルトでは用意されておらず、 自分で作るものなのでしょうか? プリコンパイル済みヘッダーがないとかなんとかエラーが出て #include "stdafx.h"をインクルードすればいいとあったのですが 今度はstdafx.hがないと怒られる始末です。
>>166 新しいプロジェクトを作るときに空のプロジェクトを選ばなければ、
stdafx.hは自動的に作られる。
だから新しいプロジェクトを作り直す方が楽。
オプションをプリコンパイル済みヘッダーを使用しないにした方が楽
>>165 wchar_tとWCHARは同じ。
ただしwchar_tはCのヘッダでtypedefされているかC++組み込み型。
WCHARはWindows.hの中の中でwchar_tからtypedefされている。
unsigned intとDWORDの関係は微妙。
unsgined intはただの符号無し整数型で、DWORDは32ビット符号無し型。
ただWin16のときにDWORDはunsgined longの意味で使われていたという前歴を持ち、
現在でもWinAPIで多用されていると言う実情がある。
>>169 う〜ん、要は特に規則とかはなく、好きな方使えってことか
詳しくありがとう
171 :
デフォルトの名無しさん :2006/03/15(水) 22:00:43
文字列を読みこんでEditboxに表示させるときはCStringを使っていますが、int型のタブ区切りを読みこんで表示させるにはどうすればいいでしょうか。 VC++6でやっています。
恥を忍んで聞かせてください。 インクルードファイルでクラス定義の参照が出来たり 出来なかったりで悩んでいます。 具体的にはClassA.hでClassAの定義、ClassB.hでClassBの定義、 ModuleC.cpp先頭でClassA.h、ClassB.hの順番でインクルードしています。 ClassB.h内ではClassA型のメンバ変数を宣言していますが、これが エラーになったりならなかったり・・・何が原因でしょうか? ClassB.h内でClassA.hをインクルードすれば確実に通りますが、 出来ればインクルードはModuleC.cpp内に統一したいと考えています。
皆さま、VC++でRPCってどういう方法を採用されていますか? 昔ながらのソケット通信のつもりでしたが、MSDNを読んでみると次のように 3つほど紹介されていたので迷っています。 1.ASP.net:Microsoft.NetのFoudationClassの豊富な機能が利用可能 2.ATLでWebサービスまたはISAPI:DCOMが簡単に作成可能 3..Netリモート処理:16bitOSでも利用可能 出来ればDataSetのやり取りを手軽に実現したいのですが、IISを立てるのが 許されない環境の場合はソケット通信しか無いでしょうか?
>>172 ClassB.h内でClassA.hをインクルードせず、
ClassAをインスタンス化するのは無理。
ただし、前方宣言してClassA*型、もしくはClassA&型のメンバにすればコンパイルは通る。
その場合にしても実装ファイル(たとえばClassB.cpp)内でClassA.hをインクルードしなければ、
インスタンス化できないし、メソッドもコールできない。
インクルードしなければClassBにとってClassAがなんだかわからない状態なんだから当たり前。
(サイズがわからなきゃインスタンス化できないし、メソッド名だってわからない)
>>171 int型のタブ区切りというのが良く判りませんが、
EditboxのDDX変数がm_strEditTextだとして
int iNum1=1;
int iNum2=2;
int iNum3=3;
m_strEditText.Format("%d %d %d", iNum1, iNum2, iNum3);
UpdateData(FALSE);
とかじゃ駄目ですか?
177 :
デフォルトの名無しさん :2006/03/15(水) 23:22:31
>>176 すみません日本語が変でした
int型のデータがタブ区切りで保存されているファイルを読みこんで〜、でした
ModuleCでa.h b.hの順序でincludeしてるならmodule.cppのコンパイルでは 問題ないでしょ?というか、何のエラーが出るんだ。 むろん、ほかの翻訳単位相手なら、常にb.hをincludeする前に、 a.hをincludeしているか確認する必要がある
int型のデータがタブ区切りで保存されている、ってこーゆーデータのことなのかい? int i[] = { 100, '\t', 200, '\t', 300}; fwrite(i, 1, sizeof i, fp );
180 :
デフォルトの名無しさん :2006/03/15(水) 23:27:11
>>179 そうです
1(タブ)2(タブ)3(タブ)4
5(タブ)6(タブ)7(タブ)8
9(タブ)10(タブ)11(タブ)12
・
・
・
という感じに保存しています
>>174 お答えありがとうございます。
私もそう思っていたのですが、なぜかこのパターン
(ClassB.h内でClassA.hをインクルードしない)で
コンパイルの通っているファイルがあるのです。
(同じプロジェクトに共存しています)
注意深く見比べてみましたが前方宣言のようなものも無く、
どちらのクラスもヘッダ内にメソッド定義までしている
所も同じなので原因が判らずにいます。
できれば、共通で使用するヘッダは一箇所にまとめたいと
思ったのですが・・・
ずーっと前の方の別のヘッダを経由してたりして、a.hが読み込まれていない、という 確証はもちろんあるわけだよね?
>>178 a.h b.hの順序でincludeしても、何故かエラーになってしまうのです。
今手元に環境が無いので正確には覚えていませんが、ClassA型の
メンバ変数宣言のところで
「;が必要です」
「ClassAは不明なデータ型です」
などのエラーが出てきます。
同じファイルでClassB.hにClassA.hをインクルードすると
コンパイル可能で、期待通りの動作をしてくれます。
>>182 はい、コンパイルの通っている別のクラス(ClassDとします)
ではヘッダ内にインクルード文はありません。
その代わり、stdafx.h内でインクルードされており、
stdafx.hはModuleC.cppの先頭でClassD.hよりも前にインクルード
されています。
185 :
デフォルトの名無しさん :2006/03/15(水) 23:39:16
>>167 ,168
thx!
空で作ったプロジェクトで、ないと怒られるのは理不尽だな〜
>>184 のstdafx.hはAppInit.hだったかもしれません。
追加するときは中身確認してますが、あの辺のヘッダ名うろ覚えなので・・・
>>172 >>174 の通りで、他には何もない。
とりあえず、ビルドじゃなくてリビルドすれば?
ヘッダファイルを書き換えたときに再コンパイルされてないんじゃないの?
それにしてもstdafx.hにユーザ定義のクラスを入れるとは怖いことしますね。
>>187 参照回数が多く、あまり変更されないプロジェクト専用のインクルード
ファイルをインクルードして良いと書いてあったと思うのですが
プロジェクト内で共通に参照するヘッダでもインクルードは避けるべき
でしょうか?
(現在の現場の既存のモジュール構成がこうなっているのです)
でも最初に見たときは違和感を感じましたので
>>187 さんが
>>174 で
ご指摘のとおり、使うクラスで都度インクルードすることにします。
>>189 そのページのソース、無茶苦茶だな。
参考にしない方が身の為だぞ。
>>180 普通にfscanf()でも使えば?
行単位であることに意味があるならfgets()+sscanf()で。
191 :
デフォルトの名無しさん :2006/03/16(木) 09:51:45
STLやBoostに含まれるテンプレートクラスライブラリを 使っているとき、テンプレートの展開でエラーが出る ことがあります。しかしエラーメッセージには テンプレートの定義のファイルと行が示されます。 自分のコードのどこで展開された結果エラーが出ているのかを 知る事はできないのでしょうか?
>>191 出力ウィンドウのほうを見れば、どこから呼び出しているかが書いてある。
193 :
デフォルトの名無しさん :2006/03/16(木) 16:53:32
オープンしたファイルの内容を 通常とは逆にファイルの終端から読み込んで 先頭で終わるプログラムはどう書けばいいですか? 読み込むファイルの行数は常に増えて不定です。
ファイルポインタ知らんのか
195 :
193 :2006/03/16(木) 17:31:47
わからないです
>>193 FILE * fp = popen("/bin/tail -r targetFile", "r");
デバッガが思うように機能してくれません。 具体的にはデバッグ実行中、一時停止の後F10キーを押しても飛ばされてしまう行があったりとか (この行にはブレークポイントも付けられませんでした。宣言文ではないのですが。) クィックウォッチで変数の値を見ようとしても、明らかにスコープ内なのに シンボル"var" が見つかりません。 と出たりしてしまいます。 過去ログにリビルドしたら直ったというのもあったので、試してみましたが駄目でした。 環境は Visual Studio 6.0 VC++6.0 Windows XP です。 何か思い当たる節などありましたらご助言頂けると幸いです。よろしくお願いします。
>>198 最適化してない?
勿論、Debugビルドだよね?
200 :
198 :2006/03/16(木) 20:56:41
>>199 おかげさまで直りました!
本当にありがとうございました。
---
最適化なんて知らなかったし…。
ワークスペース丸ごともらって来ちゃったからなぁ…。
201 :
デフォルトの名無しさん :2006/03/16(木) 23:27:06
ワークスペース!
VC8です、オリジナルのヘッダーファイル入れたいのですが 何処においたらいいでしょうか? パスの設定がわかればいいんだけど
どこでも好きな所へ
追加インクルードパスは何個でも好きなだけ追加できる。
LoadLibraryを使って、pstorec.dllを読み込みたいのですが MSDNを見て真似て見ましたが、巧くいきません ms-help://MS.MSDNQTR.v80.ja/MS.MSDN.v80/MS.TECHART.v10.ja/jpdllpro/html/_win32_loadlibrary.htm LoadLibrary 指定された実行可能モジュールを、呼び出し側プロセスのアドレス空間内にマップします。 追加のロードオプションを指定するには、LoadLibraryEx 関数を使います。 HMODULE LoadLibrary( LPCTSTR pstorec.dll // モジュールのファイル名 ); これだでは使えないのでしょうか?
>>206 まさかこれをコピペした?
HMODULE LoadLibrary(
LPCTSTR pstorec.dll // モジュールのファイル名
);
TextSS のWindowsXP(Professional)64bit化おながいします もしくは64bitにネイティブ対応したテキスト置換ソフトありますか?
すみません VC++をこれから勉強していくのですが、 お勧め本とか教えていただけないでしょうか?
213 :
211 :2006/03/22(水) 00:48:41
>>212 すみません、申し訳ありませんが逆引を薦められても困ります。
C言語、C++言語についてはまったくの初心者というわけではないです。
VC++に関しては初心者ですが・・。
できればVC++6の本をお勧めしていただければ幸いです。
とりあえず VC が言語名じゃなくて製品名なのを分かった上での質問か?
まったくの初心者なわけではない じゃわからん。 C++なら クラスがわかる 継承の概念がわかる オーバーロード、オーバーライドがわかる ストリームがわかる STLは使うくらいならできる operatorのオーバーロードがわかる 例外安全のテクニックがわかる C++でオブジェクト指向設計ができる STLを使いこなせる メタプログラミングに造詣が深い など
>>213 そのように取捨選択できるのなら、推薦書スレにでも行って
自分で選べばいいと思うんだが。
>>213 >>212 はIDEの使い方、MFCやATL、COMの使い方まで網羅してる
質問のレベルからしてまずこれ読んだ方がいいと思う
逆引きシリーズでVC6向けも出てる
その値段と内容から考えると中味薄そう まあ悩むほどの値段でもないし
219 :
211 :2006/03/22(水) 13:58:44
そうですね、失礼しました。 まったくの初心者ではないというのは 上の例でいくと クラスがわかる 継承の概念がわかる オーバーロード、オーバーライドがわかる ストリームがわかる STLは使うくらいならできる operatorのオーバーロードがわかる 例外安全のテクニックがわかる C++でオブジェクト指向設計ができる といった感じです。 UNIXのCとC++の経験ありで、一番長く付き合ったのは JAVAですので、ポインターも分かりますしオブジェクト指向も理解しているつもりです。 よろしくお願いします。
>>219 林 晴比古
新Visual C++ NET入門 ビギナー編
マルチには林の糞本で十分。
223 :
デフォルトの名無しさん :2006/03/22(水) 22:52:46
IEからJSCRIPTで操作できるActiveXのプログラムを作りたいと考えていて、 とりあえず手始めに下のHTMLをIEで表示したときに、ボタンをクリックすると HelloWorldという文字列をAlertダイアログで出力するようなものを作ろうと思っています。 どこかこのような初歩的なことを分かりやすく解説しているページかor書籍はないでしょうか? 標準講座MFC6.0という本を読んでいますがどうもよくわかりません。 私のスキルとしては、VCを使って、同様の動作をするダイアログベースのアプリケーションであれば何とかつくることができます。 <html> <head> <OBJECT ID="DAControl" CLASSID="?????????????????"> </OBJECT> <script language="javascript"> function hello(){ alert( DAControl.hello); } </script> </head> <body> <input type="button" onClick="hello()" value="hello"> </body> </html>
Visual C++ 2005 Express Edition で使える命令一覧と、 その命令を解説しているサイトはありませんか?
ありません
>>225 ググっても見つかりませんでした。
やっぱり無いのですか。
MSDN
MSDN以外でありませんか!!!???
練習に ansi-c のみで .h か .lib から抜き出してリストしたら。 sed だか awk でもできるのかな。よく知らんが。
C++で命令といえるのはpragmaくらいのものじゃね?
コンパイラやリンカのコマンドラインオプションのことじゃね?
ビルド後の処理
233 :
デフォルトの名無しさん :2006/03/25(土) 19:53:13
WIN32APIの勉強を始めました。 本を買ってきてリストを本文の通り打ち込んでも コンパイラエラーになって困っています。 何回も確認しましたがコードは一字一句間違っていません。 コンパイラにつけるオプションが原因なのでしょうか? オプションは/GXにしています。以下プログラムとエラーの一部です。 どなたか教えてください。 #include<windows.h> int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE , LPSTR, int ) { MSGmsg; HWNDhwnd; hwnd = CreateWindow( "STATIC", "スタティックコントロール", SS_CENTER | SS_NOTIFY | WS_VISIBLE , 100, 100, 100, 100, HWND_DESKTOP, NULL, hInstance, NULL ); Microsoft (R) Incremental Linker Version 7.10.3077 Copyright (C) Microsoft Corporation. All rights reserved. /out:test.exe test.obj test.obj : error LNK2019: 未解決の外部シンボル __imp__CreateWindowExA@48 が関 数 _WinMain@16 で参照されました。 test.exe : fatal error LNK1120: 外部参照 1 が未解決です。 NMAKE : fatal error U1077: 'cl' : リターン コード '0x2' Stop.
user32.lib
235 :
側近中の側近 ◆0351148456 :2006/03/25(土) 21:17:56
(っ´▽`)っ くたばれVisual C++(超初心者用) と読んでしまいました
236 :
デフォルトの名無しさん :2006/03/25(土) 23:21:44
EditBoxのメンバ変数でCString型のものがあるのですが、それをfoutでファイルに出力したら16進数?に出力されます。 int型のほかのメンバ変数だと普通に出力できてるのですが何故でしょうか。 VC+6使用です。
237 :
デフォルトの名無しさん :2006/03/25(土) 23:53:41
>>234 ありがとうございました。
cl /GX test.cpp user32.lib
としたらうまくいきました。
VC++ Expressを使い始めたのですが、これで標準のヘッダとか 見てると、グレーになった文字の部分がときおりあるのですが、 どういう部分がグレーになるのでしょうか? それとも自動ではなく、意図的にそこの部分をグレーに設定してる のでしょうか?
239 :
age :2006/03/26(日) 00:25:19
質問です。 特定のstructを適当にテキストに変換して、逆にテキストから復元出来るように したいのですが、C++で一般的な手法ってありますか? ちなみに、structには、ポインタ型やstd::vector等は含まないものです。
ISH
241 :
デフォルトの名無しさん :2006/03/26(日) 06:18:32
>>238 #if とか #ifdef なんかで
プリプロセッサではじかれるモノは
灰色になる。
とはいえ、どこまで実際のコンパイル時の
条件を追っかけてくれてるかはわかんないけど。
2005ExpressってSpy++ないんですか?
ねーよ、買え
ありがとう。 やっぱないのか、VCなんていらないんだけどなぁ
245 :
デフォルトの名無しさん :2006/03/26(日) 07:00:22
>>244 じゃぁ、使わなけりゃいいじゃんVC
VCいらないって言う人がなんでこのスレッドにいるの?
Spy++があるのかないのか質問しただけだろ そうムキになんなよ
VC++2005では、 export template<class T> ..... のようなexport指定子ってサポートされてないんだね。 最近できた仕様らしいので、間に合わなかったのか?
exportをサポートしているコンパイラなんかあったっけ?
ないのか・・・実は
すんまそ 当方今までC・C++でHELLO WORLDから入って ファイル操作や、計算だのやってきたものなのですが(CUIインターフェースしかやってない) GUIの勉強がしたいのです どのようにCでGUIを作成していくのか、どこか参考になるスレやサイト CでGUIを作成していく課程の簡単な説明などお教えください
>>250 ありがとうございます、いまその方法で解決しました。
251ですが、マルチになったので、こちらではスルーをお願いします
>>239 Boost.Serializationかな。
ttp://www.kumei.ne.jp/c_lang/sdk/sdk_04.htm ここにあるのをやってみようと思ったら
MSVCRTD.lib(wcrtexew.obj) : error LNK2001: 外部シンボル "_wWinMain@16" は未解決です
Release/test.exe : fatal error LNK1120: 外部参照 1 が未解決です。
と出てしまう。
環境 XP 使用ソフトVC++6.0パーソナル
WIN32 アプリケーションでプロジェクトを作成して、そこにソースぶちこんでるだけなのに
つーかこのサイトイントロダクションのところからエラーがあったりして萎えるんだけど
あとメールをしても返事がないらしい
以下にソースを載せるので、誰かどうしたら出来るか教えてください
#include <windows.h> #include <string.h> void ShowMyText(HWND); LRESULT CALLBACK WndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam) { switch (msg) { case WM_DESTROY: PostQuitMessage(0); break; case WM_PAINT: ShowMyText(hWnd); break; default: return(DefWindowProc(hWnd, msg, wParam, lParam)); } return (0L); } void ShowMyText(HWND hWnd) { HDC hdc; PAINTSTRUCT paint; LPCSTR str = "HELLO WORLD"; hdc = BeginPaint(hWnd, &paint); TextOut(hdc, 10, 10, str, lstrlen(str)); EndPaint(hWnd, &paint); return; }
あとuser32.libとかもリンクさせたのですが、何も変わらず 誰か助けて。。。もうこの理不尽なエラーにイライライライラして
自己解決しますた なんだよ、このサイト。すげぇわかりにくい 何がネコでもわかるだ。ネコにでも伝わるような文章かけよ、クズ
そりゃ、ネコ以下には伝わらんだろ
うっせーよ、俺はかわいいヌコだちくしょーめ
だからネコは地雷だって言ったろ?
264 :
デフォルトの名無しさん :2006/03/31(金) 10:05:23
猫のコードがすんなりコンパイル通らないなんてのは、 たいていは多バイト文字がらみとポインタを typedef した型名で L がついてる奴がらみだったり、くらいだろ? APIそのものの使い方が変わってる訳じゃないんだから、 そんなの時代の流れにあわせて自分でいじりながら コンパイル通せばいいと思うんだがなぁ。
自力でコンパイルエラー取れないようじゃ まだapi使うの早いだろ
>>258 そのプログラムの中味はこの2行ぐらいだぞ
あとはどうでもいい部分
LPCSTR str = "HELLO WORLD";
TextOut(hdc, 10, 10, str, lstrlen(str));
267 :
デフォルトの名無しさん :2006/03/32(土) 15:49:06
ちょっと質問です。XP, .NET 2005 です。 いい加減 Unicode 対策をしようと思って、Winmain を _tWinMain にしたら、リンクエラーが出ました。 > MSVCRTD.lib(crtexew.obj) : error LNK2019: 未解決の外部シンボル _WinMain@16 が関数 ___tmainCRTStartup で参照されました。 エントリポイントを _tWinMain にすればうまくいきましたが、 _tWinMain を使ってる人は、プロジェクトを作るごとにわざわざエントリポイントの設定を行っているのですか? 2005 はデフォルトで Unicode 対応になっているのに、ちょっと不自然に思っての質問です。 よろしくお願いします。
268 :
デフォルトの名無しさん :2006/03/32(土) 16:32:54
ネコでものサイト ネコの顔の絵が邪魔じゃなくて すげぇ読みやすい イライラしない
269 :
267 :2006/03/32(土) 17:06:22
色々と勘違いしていたようです。 tchar.h をインクルードすれば、エントリポイントを変更せずにすみました。 ありがとうございました。
>>268 まるで
ネコでものサイト
ネコの顔の絵が邪魔で
すげぇ読みにくい
イライラする
と言ってるようなもんだな。天才だよお前。
ちょっと質問よろしいでしょうか。 クラスAにクラスB・C・Dをそれぞれ保持させています。 そのクラスB・C・Dでそれぞれクラスxの機能を使用したいのですが それぞれにクラスxを保持させる以外にいい方法はないでしょうか。 アドバイスをお願いします。
誤爆?
ゴバクったかもしれませんorz
>>271 一応答えておくとBridgeパターン。
275 :
デフォルトの名無しさん :2006/04/03(月) 14:36:20
環境:VisualStdio.NET 言語:C++ Win32アプリケーション エディットボックスやボタンなどのプロパティ(FontSize、Visible等)を リソースエディタではなくプログラムの方で動的に変更することってできるのでしょうか
できます。
GetDlgItem() で dialog 上の個々の項目は HWND が取り出せる。 やったことはないが、edit box はその hWnd から edit control が取り出せる んじゃね。show, hide, enable, gray も hWnd 対象でできる。
278 :
デフォルトの名無しさん :2006/04/04(火) 13:17:18
MoveToとLineToで直線をピクチャボックス内に描画しようとすると、その外側にも 直線が描かれてしまいます。どうすればピクチャボックス内に収められますか?
SelectClipRgn()
外に書いたらピクチャボックスの意味がないのでは?
281 :
デフォルトの名無しさん :2006/04/04(火) 14:31:48
三次元空間内の点のピクチャボックス上での座標を計算して直線で結ぶ
処理をしたかったんです。
ピクチャボックス上での座標の計算値は必ずしもピクチャボックスには収まらないので
困っていましたが、SelectClipRgnで簡単にクリッピングできると知りました。
ありがとうございます。
>>279
282 :
デフォルトの名無しさん :2006/04/06(木) 16:40:24
VCの初心者です。 以下のようなソースコードの、二つ目のCMainDialogの「~」ってなんでしょうか? 調べてもよく分かりません。 よろしくご教授願います。 CMainDialog::CMainDialog(void) { m_dwID = IDD_MAIN; } CMainDialog::~CMainDialog(void) { }
c++の基礎をやれ
デストラクタ オブジェクトが破棄される前に一度呼ばれる
286 :
デフォルトの名無しさん :2006/04/06(木) 17:52:50
質問です CHAR型に#FFDDEEのようなカラーコードが入っていたら int型に0xFF、0xDDと個別に入れるようにするにはどうしたらいいのでしょうか よろしくお願いします
CHAR型はないけど GetBValue(), GetGValue(), GetRValue()
>>286 CHAR型がどんなものか知らんが、取り敢えず文字列ならこんなもんで。
{
char * str = "#ffddee";
int r, g, b;
sscanf(str, "#%2x%2x%2x", &r, &g, &b);
printf("%#x, %#x, %#x\n", r, g, b);
}
壁紙を色別に分けてるんだがDLした壁紙を毎週数百枚処理するのは大変だ 自動的に振り分けてくれるツールだれか作ってくれ
290 :
287 :2006/04/06(木) 18:10:28
文字列で入っていたのか、ドギャーン、驚愕の事実。 たしかにそんな感じだ。 プッ こいつCHAR型とか書いてるよ、とか思ってた自分がチョー恥さらし
291 :
288 :2006/04/06(木) 18:13:45
>>290 XWindowの色リソースやhtmlの色指定は#123456とか書くもんで。
このスレ的にはどうかと思ったんだがね。
292 :
287 :2006/04/06(木) 18:23:47
>#123456とか書くもんで。 そういえばそうだった、普段htmlとかないから、ここみて、 プッ こいつ16進の書き方もしらねーのかって思ってた。 >int型に0xFF、0xDD って、あるから、16進の書き方しらないってことはないんだよな、 こっちの勝手な勘違い。
293 :
286 :2006/04/06(木) 18:28:25
>>288 上記のコードで出来ました、ありがとうございました
>>287 次回から質問するときは万人に判るように質問したいと思いますorz
ありがとうございました
プロジェクト内のクラスで外部ヘッダファイルに書いてるクサスを参照していて そのヘッダはインクルードしてるから当然コンパイルは通るんだけどリンカで 外部参照が解決できないってエラーが出た。 何が原因として考えれれるでしょうか?
「外部ヘッダ」で定義されたクラスのメンバ関数とかが実装してある libなりcppなりも参加させよう
クラスだった、スマンコ
297 :
デフォルトの名無しさん :2006/04/06(木) 20:29:25
APIの頭についてる ::って何? プラットホームSDK? もしそうならどっちを使ったらいいの?
>>295 速レスありがとうございます。
リンカのオプションで追加参照、追加インクルードもしてます。
cppは参加してないけどlibが居ればリンクは出来るんですよね?
>>297 グローバル
aaa::bbb() ならaaaという名前空間のbbb()という関数のことを意味する。
::bbb()ならグローバルな名前空間のbbb()を意味する。
>>289 もう少し具体的に。
単色の壁紙じゃないんだから、「色別に分けろ」と人間に命令したってどうやって分けるか
判断できないだろ。
後、人に物を頼むときの口の利き方を覚えろ。
301 :
デフォルトの名無しさん :2006/04/06(木) 20:37:01
>>299 ありがとうございます。
#ちなみに今のが2ちゃんねる初書き込みです。どきどき。
Win32 APIを使う場合、あってもなくえも一緒って事ですかね
サンプルコードで、あったりなかったりするので・・・
>298 そのcppがコンパイルされた結果のobjが詰まっていたりするlibなら。
303 :
294 :2006/04/06(木) 20:40:41
あー、そうかなんとなく判ったぞ。
libのバージョンが古くて関数が実装されてないとかかもしれないです。
>>302 さん、ありがとう。
>>301 例えば、CWndの派生クラスを作ったとする。
その派生クラスの中でGetWindowRect()を呼ぶとCWnd::GetWindowRect()を呼ぶことになるし、
::GetWindowRect()を呼ぶとグローバルの(つまりAPIの)GetWindowRect()を呼ぶことになる。
だから必ずしも「あってもなくても一緒」というわけでもない
305 :
デフォルトの名無しさん :2006/04/06(木) 20:51:45
>>304 さん とってもよくわかりました!
MFCのCWndって各APIをラップしたメソッドが実装されてるって
事ですよね?
だから生のAPIを呼ぶ時は「::」つきで、CWndのメソッドを呼ぶ
時は無しでって事ですよね?
306 :
デフォルトの名無しさん :2006/04/06(木) 20:53:44
305です 追記: もちろんすべてのAPIがラップされてるわけじゃないと思います。
307 :
デフォルトの名無しさん :2006/04/06(木) 21:06:31
みなさんありがとうございました! ずっと「::」ってなんだろ?って気持ち悪かったので(^^;
308 :
デフォルトの名無しさん :2006/04/06(木) 21:21:53
SDKでも「::」つけてAPIコールしてる人がいるけど 通常の関数やメソッドとAPIの見分けがつけやすいからかなー?
通常の関数でも付けるだろ。
310 :
デフォルトの名無しさん :2006/04/06(木) 21:32:21
>>309 さん
動作的な事じゃなく、コーディング規則的な事なんですかねぇ?
>>310 だから最初に教えたとおり、::はグローバルだということを明示的に示しているわけで、
APIだからというのとはちょっと違う。
それといちいちageるな
>>311 さん ありがとうございます
よく分かりました。
>それといちいちageるな
これってみなさんがやってるようにE-Mailにsageとか書けって事ですよね?
弊害でも?(板違いでごめんなさい)
>>308 他にもIDEで::を打つと入力候補一覧が自動的に出てきたりもするから
使っているっていう人もいるようだよ。
>>300 失礼しました
全てのピクセルを見て一番多かった色のフォルダに入れれば大体振り分けられるのではないかと考えています
色は赤や白を赤=R200~255/G0~50/B0~50、白=R230~255/G230~255/B230~255など予め定義しておいて
それに基づいて判断すれば間違いないと思います
どうぞお願いしますこの野郎早くコーティングに入れや
>>313 さん
レスありがとうです!
なるほどー。最近のIDEは凄いっすねー。
316 :
デフォルトの名無しさん :2006/04/06(木) 23:07:52
下らない質問ですが、 visual C++のnew とかdeleteってスレッドセーフなのでしょうか? つかVC++でスレッドセーフじゃないAPIってありますか?
319 :
デフォルトの名無しさん :2006/04/07(金) 12:34:44
ちょこっと質問です 一行エディットでEnterを押すと複数行ではないのでビープ音が出るのですが、このビープ音を消したいと思い 自分なりに調べたらSystemParametersInfo()を使用するのかと思ったのですが 元々これでは出来ないのか、自分のコードがヘタレなのか消せませんでした。。 サブクラス化を使えばビープ音は鳴らなくなったんですが、関数だけで消せないでしょうか?
VC#で質問です。 テーブル処理がしたいのですが、デザイン画面でWindowsフォームのDataGridを配置しても列の設定ができないのは、そもそもDataGridを使うのが間違っているということでしょうか? エクセルの様にセルを置いて、セル内にデータを入れたり、それを計算するアプリが作りたいです。 エクセルでヤレ!っていわれそうだけど・・・
自己解決でけました。Datasetっての使うんですね。
322 :
デフォルトの名無しさん :2006/04/07(金) 16:53:59
質問です。 VC++の勉強を始めたのですが、Win32APIのサンプル集のサイトとかってないですか? MSDNには、サンプルはのっていないんですよねー。 いくら調べても見つかりません。 どなたかご教授願います。 よろしくお願いします。
MSDNにサンプルあるよ MFCとSDK ほかもいろいろ
324 :
デフォルトの名無しさん :2006/04/07(金) 18:21:30
>323 どこですか? URLを教えて下さい。 お願いします。
MSDNインストールしたら入ってなかったか? MSのサイトはしょっちゅう構成が変わるから自分で探すしかないな
327 :
デフォルトの名無しさん :2006/04/07(金) 18:50:48
328 :
デフォルトの名無しさん :2006/04/08(土) 00:00:29
VisualC++を触ってみた。 他人の書いたちょっとしたプログラムを読んだが、読み終わってからようやく全体が理解できてきた。MFCはMSDN見ながら理解した(つもり)。 で、見たソースはフラグ処理が多いのだが、これは一般的なのか? あとフラグの種類を列挙型で宣言せずに生の数字入れるのは一般的なのか?
エディットボックスに文字を表示したいのですが、 どうすれば良いですか? エディットボックス1、2、3と三つありまして、 「+」ボタンを押すと エディットボックス1と2の数字を足した物を3に表示したいのですが。 CString s1; CString s2; m_edit1.GetWindowText(s1); m_edit2.GetWindowText(s2); ans = num1 + num2; m_edit3.SetWindowText(ans); //この箇所の書き方がわかりません。。 num1とnum2とansはfloatでグローバル宣言しています。 具体的にコメントの箇所が分からないのですが、 全体的におかしい所ありましたら、指摘してください。 ショボショボのプログラムですみません。。。
get 数字かどうかチェック CStringをfloatに 計算 floatをCStringに set DDX DDVを使う方法もある
スゲー、天才じゃね!?
332 :
デフォルトの名無しさん :2006/04/08(土) 07:41:57
>>328 フラグ処理って何かさっぱり分からん。
ビットマスク使ってフラグを処理してるってこと?
そりゃそのプログラム作った人の趣味だろ。
enum 使わないのもその人の趣味だろ。
べつに Visual C++ がどうこうという問題じゃないし、
MFC のせいでもない。
334 :
長文すみません。 :2006/04/08(土) 15:08:32
VC++ .NETを使っています。 ビットマップをファイルから開くプログラムを作りたいと考え、 GetOpenFineName()を使って、以下のようにコーディングしました。 しかし、ファイルを繰り返し開くこうとすると、 BitPlayerAPI2.exe の 0x7d6414ae でハンドルされていない例外が発生しました : 0xC0000005: 場所 0x05ed2038 を読み込み中にアクセス違反が発生しました。 。 というエラーメッセージとともに、強制終了してしまいます。 何が悪いのでしょうか。 教えていただければ幸いです。
335 :
長文すみません。 :2006/04/08(土) 15:09:33
OPENFILENAME ofn;//ファイルオープンダイアログの初期化 TCHAR sfile[MAX_PATH]; ZeroMemory(&ofn, sizeof(ofn)); ZeroMemory(sfile, sizeof(TCHAR)*MAX_PATH); sfile[0] = '\0'; ofn.lStructSize = sizeof(ofn);// OPENFILENAME 構造体の初期化 ofn.hwndOwner = hWnd; ofn.lpstrFile = (LPSTR)sfile; ofn.nMaxFile = MAX_PATH; ofn.lpstrFilter = "ビットマップ(*.bmp)\0*.BMP\0\0\0"; ofn.nFilterIndex = 1; ofn.lpstrTitle = TEXT("ファイルを選択してください"); ofn.lpstrInitialDir = NULL; ofn.lpstrCustomFilter = NULL; ofn.nMaxCustFilter = 0; ofn.lpstrFileTitle = NULL; ofn.nMaxFileTitle = 0; ofn.nFileOffset = 0; ofn.nFileExtension = 0; ofn.lpstrDefExt = NULL; ofn.lCustData = 0; ofn.lpfnHook = 0; ofn.lpTemplateName = 0; ofn.Flags = OFN_PATHMUSTEXIST | OFN_FILEMUSTEXIST | OFN_HIDEREADONLY;
336 :
長文すみません。 :2006/04/08(土) 15:10:49
続き if (GetOpenFileName(&ofn))// GetOpenFileName() の呼び出し { ・・・//ファイル名を取得できたときの処理 delete[] (BYTE*)sfile; delete[] (BYTE*)&ofn; } else { ・・・//できなかったときの処理 delete[] (BYTE*)sfile; delete[] (BYTE*)&ofn; }
newしてないのにdeleteしてるとか
338 :
長文すみません :2006/04/08(土) 17:14:08
>>337 deleteを無しにしてもダメでした。
「GetOpenFileName バグ」でググッてみたところ、
同様の問題があったのですが、未解決でした。
というか、Win付属のメモ帳でも、「ファイル(F)-開く(O)」で、
何回も同じtxtを開くと、無言で落ちます。(俺のPCでは。)
(デバッグ中ではないので、
>>334 の様なメッセージは出ません)
俺のWinが逝っちゃってるんでしょうか(T_T)
ファイルハンドルをクローズしていないとか?
こんな時はみなさんどうしてますか? ダイアログプロシージャ内の処理で ・WM_INITDIALOG内で初期化エラーをメッセージボックスで出す 例)設定ファイルの存在確認エラーなど ・WM_PAINT内で初期化済みのリソース(メモリデバイスコンテキストなど) を使用して描画。 モーダルなメッセージボックスで処理を止めてもディスパッチされるので プロシージャにはWM_PAINTのメッセージは飛んでくるんですよ。 ここで、初期化エラーによりメモリデバイスコンテキストはまだ未初期化 なわけです。
自分は以下のような感じで対処したのですが、他に良い方法とかお約束とか あったら教えてください BOOL CALLBACK DialogProc(HWND hDlg,UINT Msg, WPARAM wParam,LPARAM lParam) static HANDLE hEvStart; //イベントハンドル if(hEvStart == NULL){ hEvStart = CreateEvent(NULL, TRUE, TRUE, NULL);//イベント生成 } if(WaitForSingleObject(hEvStart, 0) != WAIT_OBJECT_0){ return FALSE; } switch(Msg){ case WM_INITDIALOG: ResetEvent(hEvStart); //初期化開始 他の処理ガード 初期化 if(初期化失敗?){ MessageBox(); } SetEvent(hEvStart); //初期化終了通知 他の処理ガード解除 return TRUE; case WM_PAINT: 描画処理 return TRUE; } return FALSE; }
>>339 さん
if (GetOpenFileName(&ofn))
{
bitmap->hBitmap = (HBITMAP)LoadImage((HINSTANCE)GetWindowLong(hWnd,GWL_HINSTANCE),ofn.lpstrFile,IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE);
}
として、ファイルのパスだけ使っているので、ファイルハンドルとかはないと思うのですが、、、
ofn.lpstrFileの箇所を"something.bmp"として、GetOpenFileName()を使わなければ、問題なく画像は開けます。
ただし、当然ながらカレントディレクトリのsomething.bmpしか開けません。
逆に、
if (GetOpenFileName(&ofn))
{
}
と、if文の中身を空にしても、上記のバグが取れません。
>>338 さん
本当だ(゜゜;
メモ帳落ちる!知らなかった・・・
ちなみにWinXp proです
>>338 えぇー!
ひょっとしてWinの仕様ですか?
んなアホな!
>>340 デバイスコンテキストならNULL判定を噛ませればよいだけでは?
>>345 さん
お返事ありがとうございます。
確かに毎回NULL判定して、はじけば大げさにイベント作ったりしなくて
OKですが、メッセージボックスが出たタイミングでどのリソースが
未初期化かをチェックして、それを弾くというのがバグを生み出しそう
だったので・・・(見落としとかありそうで)
それならいっそ初期化が終わったタイミングで初めてプロシージャ内の
処理が流れる方が簡単&確実かなって思いました。
が、やっぱりなんか大げさな気も・・・。
そこで他の方の解決法が気になった次第です
347 :
343 :2006/04/08(土) 19:11:38
が、自作アプリはOKだな・・・・ ofn.lpstrFilter = "ビットマップ(*.bmp)\0*.BMP\0\0\0"; 最後の\0がひとつ多いから?
348 :
338 :2006/04/08(土) 19:12:56
GetOpenFileNameの問題ですが、 親父のPCで試したところ、メモ帳は落ちませんでした。 そして俺の駄プログラムも問題なさげに動く。。。 どちらのPCも、Win XP Home Edition Version 2002 Service Pack 2ですが、 親父のPCがPentium4、1GB RAMに対し、俺のはCeleron、480MB RAMです。 ちなみに俺のWinはGetSaveFileNameでも同じ問題が生じます。 はぁ〜 もうダメだ。 わからん(--;)
349 :
343 :2006/04/08(土) 19:24:30
マシンスペックは AMDのAthlon64X2 4600+でメモリが2Gですが。。。 OPENFILENAME ofn; はWin2kでサイズが増えたので Win2kでコンパイルしたのをWin98で実行させると落ちるとかあったけど・・・ sizeof()で大丈夫そうだしコンパイル環境と実行環境が同じだしなぁ・・・ なんだろー?
350 :
338 :2006/04/08(土) 19:27:34
>>343 さん
アドバイスありがとうございます。
>最後の\0がひとつ多いから?
試してみましたが、これも関係ないみたいです。
いろいろありがとうございます。
もうちょっと、自分で調べてみようと思います。
351 :
343 :2006/04/08(土) 19:31:23
ofn.nFilterIndex = 1; をゼロにしてデフォルトにしてみるとか これ以上はおいらのアプリと差があんまりみつからないなぁ でわがんばってー!
352 :
343 :2006/04/08(土) 20:19:35
もう見てないかもですが 騙されたと思って OFN.lStructSize = 88; ってしてみるとどうなります?現象は一緒?
ZeroMemoryしたのに あるものは '\0' あるものは 0 あるものは NULL を突っ込んでて非常に見苦しい。
354 :
338 :2006/04/09(日) 00:37:35
>>343 さん、
>>353 さん
ありがとうございます。
ofn.nFilterIndex = 1;
ofn.lStructSize = 88;
ともに変化はありませんでした。
このGetOpenFileNameの部分は、MSのサポート技術情報を参考にしました。
確かに、ZeroMemoryすれば、'\0'、0、NULLは必要ないですね。
勉強になりました。
355 :
デフォルトの名無しさん :2006/04/09(日) 21:35:20
CHoge& F() { return hoge; } CHoge hoge = F(); これコンパイル通るんですよね・・・。 CHoge& hoge = F() にするところを & が抜けて、デストラクタが余計に呼び出されて・・・orz こういうのを防ぐために、コピーコンストラクタおよび代入演算子を private にする、ってのは 設計的にありですか?
>>355 普通にやります。
デフォルトコンストラクタを呼び出したくない場合も同様です。
357 :
355 :2006/04/10(月) 00:54:06
>>356 ありがとうございます、安心して使います。
358 :
デフォルトの名無しさん :2006/04/10(月) 10:40:45
うぃっす コンパイルして出来たexeを直接実行しても結果が出ないでターミナルが閉じちゃうのはなぜ?
>>358 結果を折角表示しているのに、その結果をゆっくり見ることができるようにプログラミングしていないからだ。
解決策の例を挙げよう。
・プログラムが終了しないようにする。
・結果を見られるように適宜実行を中断する。
・CUI環境から起動する。
・デバッグ環境からデバッグ実行で起動する。
>>359 先輩最高です。
これからもよろしくおねがいします。
361 :
デフォルトの名無しさん :2006/04/10(月) 11:47:16
bool型の配列をZeroMemoryで初期化したとき、 全部falseの意味になりますか?
"くだ"らない質問"す"る奴は帰"れ"Visual C++(超初心者用)
>>361 Visual C++に限ってはたしかにそうなるはずだけど、他でどうなるかは知らない。
普通にstd::fillを使え。
366 :
デフォルトの名無しさん :2006/04/11(火) 06:15:22
ExpressEditionをインストールしてPlatformSDKも入れて 入門書のサンプルコードを打ち込んでみたら、 error C2664: 'lstrcpyW' : 1 番目の引数を 'char [80]' から 'LPWSTR' に変換できません。 とエラーが出ます・・・。 サンプルコードはこれです。何がいけないのでしょう?? int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow){ SYSTEMTIME tm; char s[80]; int iRet; GetLocalTime(&tm); if((tm.wHour >= 0) && (tm.wHour < 12)){ lstrcpy(s, "おはようございます"); }else if(tm.wHour < 17){ lstrcpy(s, "こんにちは"); }else{ lstrcpy(s, "こんばんは"); } iRet = MessageBox(NULL, s, "MsgBox", MB_OK); return 0; }
>>366 MS VC++2005はデフォルトの文字コードがUNICODEになったからそうなる。
プロジェクトのプロパティを探せば文字コードの設定があるはずだからMBCSに変更する。
368 :
デフォルトの名無しさん :2006/04/11(火) 07:06:48
>>367 そうだったんですか。できました、ありがとうございました。
そもそもlstrcpyに""とか、char[80]とかを渡すのが悪い。 ちゃんと_T("")とか、TCHAR[80]を渡せ。
370 :
デフォルトの名無しさん :2006/04/11(火) 07:30:23
>>369 どうもです。
まだ入門書の2章までしか進んでなくて、TCHARとかは次の章だったので
知りませんでした。
これだとUNICODEに自動変換してくれるのですね。
371 :
デフォルトの名無しさん :2006/04/11(火) 08:18:37
ところで、NT系のファイルパス用のバッファって、 MAX_PATH(=260)より32767 + 1(NULL用) + "\\.\"で32772が正解? TCHAR szPath[32772]; みたいな?
(°д ゚)ハァ?
それでおk
374 :
麻布卒www :2006/04/11(火) 18:17:52
質問です。 今C言語の勉強をしています。 コンパイラはボーランドの無償版、エディタは学習用のソフトをDLしました。 それで今日、BCC Developerなるものが存在する事を知り、こちらをDLしました。 これからはこれを無償版でコンパイルして勉強していこうかと思います。 そこで、製品版に BCC C++ Builder 6 professionalというものがアカデミックで3万円ですが、これから僕が選ぶ環境とどう違うんですか? また、Visual studioというのはなんですか? これを買ってはいけないのですか? 僕はVisual C++と僕が勉強中のC++の違いはなんですか? 教えてください。
375 :
デフォルトの名無しさん :2006/04/11(火) 18:26:46
>BCC Developerなるものが存在する事を知り、こちらをDLしました。 ここまでいえばあなたなら分かるでしょう。
377 :
麻布卒www :2006/04/11(火) 18:49:38
分からないorz Visualがつくとどう変わるんですか? 単なるコンパイラの製品名の差ですか?という事は全く文法も同じ? うわーん分からない〜Visualってなんだお〜 まじえろい人おしえて
378 :
デフォルトの名無しさん :2006/04/11(火) 19:13:13
>>377 勉強で利用なら、書き込んだログの秒1桁目が
偶数ならMicrosoft社→Visual C++ 2005
奇数ならBorland社→Borland C++ Builder 6 Professional
でもいいんじゃね?
C++はISOに国際規格がある。 それに基づいて色々な法人や団体がそれぞれC++コンパイラを作っていて、 自分の製品として売り物にしていたり無料で公開していたりする。 Microsoftが作ったC++コンパイラの製品名がVisual C++。 Borlandという会社が作ったのがC++ Builder。 (Visual StudioはVisual C++以外の言語のコンパイラも含まれている製品) どちらもコンパイラだけではなく、 プログラム作りがより便利になるような「統合開発環境」を含めての製品になっている。 ちなみにボーランドの無償版ことBoland C++ Compiler (BCC)はC++ Builderのうち、 C++コンパイラなどを抜き出したもの。少々バージョンが古い。 BCC Developerは(おそらく)BCCの利用者向けに作られた統合開発環境。 Bolandとは無関係な個人が作ったフリーソフト。
380 :
麻布卒www :2006/04/11(火) 19:27:45
なるほど。 まだ初歩しかしてないので、このフリーの統合環境をいじってみます。 将来的にはばっちりソフト開発が出来ないと困るのですが、BCC BuilderとVisual Studioどっちがオヌヌメですか? 高いものなので買ってみてゴミじゃねーか!!!ってなると学生の身分としてはきつくて;; って、Borlandのとマイクロソフトのコンパイラ、全く同じ作用をするならわける必要ないですよね? ってことはちょっと仕様が違ったりするんですか? Visual Studioの方は Visual Basic C# C++ J# 対応と書いてありますが、つまりこれは マイクロソフトはVisualのコンパイラ単体でも無償版を出していないという事ですね?
学生ならアカデミック買えるから良いじゃないかっ!
382 :
デフォルトの名無しさん :2006/04/11(火) 19:33:49
>>380 なんでやねん。
Visual C++ 2005 Express Edition
Visual Basic 2005 Express Edition
Visual C# 2005 Express Edition
全部無償じゃん。
どこをどう読んだら、無償版を出していないっていう結論になるんだYO
383 :
麻布卒www :2006/04/11(火) 19:35:49
いまやってるCはC++の上位互換という事でC++のコンパイラでコンパイル出来ますよね? という事でVisual C++ 2005 ExpressをDLしてみました。 インストール容量大きすぎてむりぽ。
384 :
麻布卒www :2006/04/11(火) 19:37:41
アカデミックでもBorlandが3万という事は確認しています。 3万というと、一ヶ月の食費並・・・とても出せない・・・。 大学、無料で配れ・・・Borlandと手を結んでくれ・・・。
385 :
デフォルトの名無しさん :2006/04/11(火) 19:43:41
ちゃんとHDD容量以外の必要環境も足りてるんだろうか・・・
387 :
麻布卒www :2006/04/11(火) 19:52:37
3年前のノートです。メビウス。 よく、フリーズします。基本的にHDD足りてない・・・3Dゲームできない。 シルクロードオンラインか、FF11がやりたいです。 PCください。 今やっと for whileあたりを少し使えるようになったくらいですが、雑魚ですか?
>>384 Visual Studio 2005のアカデミック(Standard相当)は4800円
389 :
麻布卒www :2006/04/11(火) 19:56:25
やすいですねー。 みんなは何使ってるの?
Visual Studio 2005 Professional
391 :
麻布卒www :2006/04/11(火) 20:01:51
いくら?
>>389 お前がそんなこと聞いて何かの役に立つの?
393 :
麻布卒www :2006/04/11(火) 20:07:39
え・・・なんでお前呼ばわりされるんですか・・・。 ただ純粋に聞いてるだけなんですけど。
394 :
デフォルトの名無しさん :2006/04/11(火) 20:20:04
俺も Visual Studio 2005 Professional つかってるなぁ。 でもそれは Visual Studio.NET 2003 theSpoke Premium 使っててタダでもらったやつなんだけどね。 IntelliSense (エディタ上での自動補完)の機能 だけでも Visual C++ 2005 使ったらいいと思うけどなぁ。
395 :
麻布卒www :2006/04/11(火) 20:24:27
つまり、多少間違っていても結構直してくれるって事ですか? 例えば printfをprinftとか書いた場合、直してもらえますか? これがdebug?
397 :
デフォルトの名無しさん :2006/04/11(火) 20:25:50
>>394 定数を拾ってくれるだけでも、ありがたいんですよね。
399 :
麻布卒www :2006/04/11(火) 21:08:01
ばかですいません・・・。
>>395 使ってみれば分かるよ。
たとえば、 prin まで入力したら
あとは printf みたいなものも候補として表示してくれる。
引数の型とかについてのヒントもくれる。
が間違ってるのを直してくれたりはしないな。
まぁ確かにこんなところで意味不明なコテ名乗っている馬鹿の頭は治せねぇな
403 :
デフォルトの名無しさん :2006/04/12(水) 15:22:26
VC++初心者です。 MFCでネイティブなアプリケーションを作るために、VC++を始めました。 作成されたEXEを別のパソコンに移して実行すると、 「ダイナミックリンクライブラリMFC71.DLLが指定されたパスに見つかりませんでした」 と出ます。 EXEだけで実行できるようにしたいのですが、どうしたらいいのでしょうか? 調べても、いい方法が 見つかりません。 ご存知の方、ご教授願います。
プロジェクトのプロパティとかでビルドの設定でMFCのDLLを使用しないとか スタティックリンクにするとかに設定する。 使ってるVC++のバージョン書かかないと正確な方法は答えられない。 MFCならウィザードの時、DLLかスタティックか選択できなかったっけ?
405 :
デフォルトの名無しさん :2006/04/12(水) 15:54:53
テンプレートクラスの定義を***.hで、実装を***.cppでやってコンパイルしようとしたら、 未解決の外部シンボルが云々と言われてしまいました。 定義の内部に実装を書かかずに解決する方法はないんでしょうか。 ***.h template <class T> class Kurasu { T data; Kurasu(); }; ***.cpp #include "***.h" template <class T> class Kurasu<T>::Kurasu() { ... } というふうに。
定期的に見かけるなこの質問
>>403 がつかってるのは、たぶん
Visual Studio .NET 2003 なんだろうなぁ。
MFC71.DLL ってことだから。
とりあえずスタティックなライブラリをリンクしておけばおk
408 :
デフォルトの名無しさん :2006/04/12(水) 18:04:20
>>404 >>407 「構成プロパティ→全般→MFCの使用」で、スタティックライブラリを選択したら、
EXEを実行できました。
ありがとうございました。
409 :
デフォルトの名無しさん :2006/04/12(水) 18:06:38
Windowsエクスプローラの詳細表示みたいに、 行の左端に小アイコンを表示させるリストコントロールを作りたいのですが、 アイコンが表示されません。(アイコンのスペースは確保されているが) OnInitDialog()内に以下のように記述しているのですが、何が問題なのでしょうか? ↓ //m_lstInfo:レポートタイプのリストコントロール m_lstInfo.SetExtendedStyle(m_lstInfo.GetExtendedStyle()| LVS_EX_SUBITEMIMAGES|LVS_EX_FULLROWSELECT); CImageList m_ImageList; m_ImageList.Create( 16, 16, ILC_MASK, 0, 0 ); CBitmap bmp1, bmp2; //IDI_ICON_FILE,IDI_ICON_FOLDER:アイコンリソース int idxIcon1 = m_ImageList.Add( AfxGetApp()->LoadIcon( IDI_ICON_FILE ) ); int idxIcon2 = m_ImageList.Add( AfxGetApp()->LoadIcon( IDI_ICON_FOLDER ) ); m_lstInfo.SetImageList( &m_ImageList, LVSIL_SMALL ); m_lstInfo.InsertColumn( 0, _T("サンプル"), LVCFMT_LEFT, 300 ); // CListCtrlにアイテム追加 m_lstInfo.InsertItem( 0, _T("アイテム@"), idxIcon1 ); m_lstInfo.InsertItem( 1, _T("アイテムA"), idxIcon2 ); ↑ 開発環境:VC++6.0
lpIconName ロードするアイコンのリソース名が入った、NULL で終わる文字列へのポインタを指定します。 上位ワードに 0 を、下位ワードにアイコンリソースの ID を入れた値を指定することもできます。 この値は、MAKEINTRESOURCE マクロを使用して作成できます。
411 :
409 :2006/04/12(水) 20:31:37
自己完結しました。 CImageList m_ImageList; をローカルで宣言してたせいでした。
412 :
デフォルトの名無しさん :2006/04/12(水) 20:32:00
VS2005のVCです。 ネットにある例を参考にCStringをcharに変換しようと思い CString str = "abc"; char *p = new char[str.GetLength()+1]; strcpy( p, str ); delete [] p; をコンパイルすると 「'strcpy' : 2 番目の引数を 'CString' から 'const char *' に変換できません。」 と出ます。 どうすればいいのでしょうか?
>>412 strcpy(p, CT2A(str));
>>405 コンストラクタがデフォルトのprivateになってるから・・・とか?
ヘッダがなくDLLのみが存在するとき、 EXPORTSされてる関数名と序数はdumpbinを使用して得ることができましたが、 それぞれの関数の戻り値・引数リスト(型や大きさ)を得る方法がわかりません。 どうすればできるか/そもそもそんなこたーできねーだァか教えてください。
つ 逆アセンブラ
418 :
デフォルトの名無しさん :2006/04/12(水) 22:51:48
visual studio 2005でMFC AppWizardを実行して、 CTえstViewクラスのOnDraw関数の中に以下のプログラムを追加したのですが、 うまく動きません。 void Ctest2View::OnDraw(CDC* /*pDC*/) { Ctest2Doc* pDoc = GetDocument(); ASSERT_VALID(pDoc); if (!pDoc) return; // TODO: この場所にネイティブ データ用の描画コードを追加します。 pDC->TexeOut(0,0,"ようこそvisualc++の世界へ"); } なぜですか?ちなみに手持ちの参考書と微妙に違う箇所が気になります。 上記の void Ctest2View::OnDraw(CDC* /*pDC*/) ですが、参考書では void Ctest2View::OnDraw(CDC* pDC) となっています。 エラーは error C2065: 'pDC' : 定義されていない識別子です。 error C2227: '->TexeOut' : 左側がクラス、構造体、共用体、ジェネリック型へのポインタではありません。 型は ''unknown-type'' です。 とでました。 まったくもって意味がわかりません。 お願いします。
おまえすごいな。
>>418 /*と*/で囲まれた部分はコメントとして扱われ、コンパイラに無視される。
i<´ }\ , - 、 ヽ.._\./ .ンく r-兮、 __ ∠`ヽ.! / ヾニEヲぐ ,ゝ-> さすがくだすれだ、 /_`シ'K-───‐-、l∠ イ あきれてものも言えねえぜ l´__,/l\、_ ̄0¨0)゙@Yヘ, -┤ . l'___|⌒ヾ''ー==、ーr='イ i二| / .」 i /./7r‐く lー! . f. ヽ‐i人.∠'< _i. l,.-ゝ. トiヘヘ「ト〈 `X トレi7__| 〉ト:トハj`! i. / トー┤lルj,リ /‐+----+‐l iー--i---ヾ'〃 . l_i____i__| |___i,__i_|
422 :
デフォルトの名無しさん :2006/04/12(水) 22:55:57
コメントをはずしてコンパイルしてみました。 error C2039: 'TexeOut' : 'CDC' のメンバではありません。 'CDC' の宣言を確認してください。 となりました。 どこを修正すれば良いですか?
425 :
デフォルトの名無しさん :2006/04/12(水) 23:05:38
こんな間違いが分からないヤツはいない。 おまえら釣られすぎ
申し訳ないですがわかりません。 すみませんが、教えて下さい。
427 :
デフォルトの名無しさん :2006/04/12(水) 23:23:36
VS.NETから/*pDC*/となるんだよなぁ・・・ コメント外すのメンドクセ
428 :
デフォルトの名無しさん :2006/04/12(水) 23:38:35
マジレスすると、 pDC->TexeOut(0,0,"ようこそvisualc++の世界へ"); この行を消せば直るよ! ハ_ハ ('(゚∀゚∩ なおるよ! ヽ 〈 ヽヽ_)
429 :
デフォルトの名無しさん :2006/04/13(木) 00:14:09
ねーさんTexeOutじゃなくて、TextOutだと思うなー
>>429 すみません。。。
コンパイルすると次のエラーがでました。
error C2664: 'BOOL CDC::TextOutW(int,int,const CString &)' : 3 番目の引数を 'const char [26]' から 'const CString &' に変換できません。(新しい機能 ; ヘルプを参照)
理由: 'const char [26]' から 'const CString' へは変換できません。
class 'ATL::CStringT<BaseType,StringTraits>' のコンストラクタが 'explicit' と宣言されています。
with
[
BaseType=wchar_t,
StringTraits=StrTraitMFC_DLL<wchar_t>
]
_T("文字列")
へえ、VC2005ってCStringはexplicitで宣言されるようになったんだ。 pDC->TexeOut(0,0,CString(_T("ようこそvisualc++の世界へ"))); これで直ると思われ。 C++の基礎からやった方がいいんじゃないか?
433 :
デフォルトの名無しさん :2006/04/13(木) 01:06:15
Visual C++2005の専門書が見当たらないのですが。 Visual C++.NET とVisual C++2005の主な違いはなんなんでしょうか? また、Visual C++2005を購入する場合、専門書はVisual C++.NET を買うべきでしょうか?それともVisual C++の本を買うべきでしょうか? どちらなんでしょう??
>>432 無事にでました。
ありがとうございました。
C++の基礎から勉強する事にします。
>>433 WindowsプログラミングはWin32 APIベース(API/MFC/VCL/...)か、.NET Frameworkベースかが
今選べるポピュラーな選択肢だ。
3〜4年前からMicrosoftは.NETベースへの移行を宣伝しているけれど、
現状ではまだまだ主流になったとはいえない状況。
Visual C++ 2005では、Win32(MFC)/.NET Frameworkどちらの開発もできる。
Win32 APIベースでは、いわゆるネイティブコードを生成できる。
これはつまり、実行効率(処理スピード)が期待できる。
それに対し.NETは…自分で調べた方がいいだろう(笑)
どちらをやるべきか決めた上で、専門書を買った方がよいとは思う。
436 :
デフォルトの名無しさん :2006/04/13(木) 04:02:07
配列の要素数の最大はいくつでしゅか?
3つくらいじゃないでしゅか。
BYTEって文字列に変換出来ないよね?
出来ないよ
>>439 サンクス、("%*",byte変数)なら表示出来るかな?
441 :
デフォルトの名無しさん :2006/04/13(木) 05:28:16
質問よろしいでしょうか? 下記のような、継承関係の無い2つのクラスがあった場合、 B::method()からA::aにアクセスすることは可能でしょうか? class A{ public : int a; } class B{ public: method(){ A::a = 100; }
よーく考えよ〜、頭は大事だよ〜♪
なんのためにおまえ A::a を public にしてんの?
444 :
デフォルトの名無しさん :2006/04/13(木) 06:58:54
|b"1 [^0, ]! f ./^)! [ 、ヽ l.」 | _。.。._ __。。. [ .ヽ .\ ]! | Y (゜ .l! 「 ]! /'.ヽ.\ .l゛ ゚ー| .\,, ./ ゚。。.。._)、゚l_.ヽ |[ \、 」 ヽ.\゚t.ヽ_ |! .l! .l! ゚l、\。.゜、[〈x_ | | ヽ_ ^ ゛ .\ .ヽ 」 .l! ゝ | 」 」 ,,,,,,,,,,.\ [ [ 〔 ____ (鬱! .\ [ [ ] _^鬱_ ─ )、こんにちは ] ] ] ^゜ | 。 .l! シーモンキーだよ。 」 [ | k。.J ./ [ | 〈 t |──''" / ./゜ どうせ明後日には忘れられると思うけど | | ヽ_ .\__ _g゛ ./゜ それまでよろしくね。 | .ヽ ゝ_ ^^゜" ./( _1 ^^''''''ー.。,, ^ー1.-f゚゜ \_ .\-.。F-、、 ゛-、。 __/ ^\ ゛ヽ。. ^'1'^^^ | .\。._______ ・ ・ || \ 」 |
445 :
412 :2006/04/13(木) 08:45:58
なんでもいいからコンパイル通ればいいということか
448 :
デフォルトの名無しさん :2006/04/13(木) 14:55:57
sTRINgをCHARにへんかんするにはどうするのか?
c_str()のことか?
すみません、基本
>>450 途中送信すみません。
ウィンドウクラスで自作アイコンを利用する為の***部分が分かりません。
LoadIcon( NULL, ***(アイコンのID) );
>>451 リソーススクリプトで自分が指定したID
>>452 問題の部分
wc.hIcon = LoadIcon( NULL, IDI_ICON );
リソース部分
#define IDI_ICON 101
これだと何故かエラーが出ました。
エラー内容
二番目の変数をint型からLPCSTR型に変更出来ません。
(C/C++6.0、WIN32Api)
MAKEINTRESOURCE
>>454 解決しました。 ありがとうございました。
VC++2003で作っています。 今まで親だったFORMを新たに作ったFORMの子にするにはどうしたらよいえしょうか? やりたいことは、今まで作ってたダイアログベースのアプリケーションを タスクトレイだけに表示するようにしたいです。 調べるとダミーの親FORMの子として、MainのFORMを作成して ダミーを見えなく?することで、完全にタスクトレイのみのアプリケーションとして見えるようです。 今まで作成していたFORMを別のFORMの子にできたらと思っています。
>>456 タスクトレイ以外で見えなくしたいだけなら子にする必要ないよ。
458 :
デフォルトの名無しさん :2006/04/14(金) 17:10:32
windowsプログラミング(MFCではない)で、ドロップしたファイル名を リストボックスに表示させるプログラムを作っています。 ファイル名を取得する所までは出来たのですが、 その情報をリストボックスに送る事が出来ずに困っています。 ダイアログボックスのみを表示するプログラムなのですが、 SendMessage(GetDlgItem(hWnd, IDC_LIST1), LB_INSERTSTRING, (WPARAM)(リスト番号), (LPARAM)(文字列)) の関数では駄目なのでしょうか? どなたか、ご回答をお願い致します。
どこかからサンプルを拾って来る所から始めようか。
460 :
458 :2006/04/14(金) 17:38:18
書き忘れました。言語はC++です。
>>459 検索しても該当するサンプルが見つからなかったのです。
C#ならあったのですが。
>(LPARAM)(文字列)) ここは具体的にはどうかいてるの?
462 :
458 :2006/04/14(金) 17:47:52
>>461 *str[]にファイル名を配列格納しています。なので
(LPARAM)(str[番号])
と指定しています。
単純に何か文字表示してみりゃいいだろ いきなり複雑なことやるから自力で原因がつかめなくなる 馬鹿なくせに背伸びするな
464 :
458 :2006/04/14(金) 19:10:16
>>463 ダイアログボックスが生成される時にデフォルトで表示させる事は出来ています。
それがドロップ対応になると、関数が通ってくれなくなるのです。
自分でもまだまだ調べている途中ですが、それでも解決出来なかったので、
こちらに書き込みさせて頂いたのです。
あーいえばこーゆう、こーいえばあーいう
いちいち配列に格納する必要性がわからん 1つずつ読んで1ずつ追加するだけだろ 最初の1個できればあとは同じ
ソース
醤油
マヨネーズ
ケチャップ
マスタード
タバスコ
473 :
デフォルトの名無しさん :2006/04/14(金) 20:41:12
すいません超初心者ですJAVAってなんですか??
コーヒー
ザ・ハット
すみません、C/C++でエディタボックスやリストボックス等の使い方があるサイトが知りたいのですが MFCアプリケーションではなくWin32アプリケーションです。
よかったのか(´・ω・`)
>>479 まあ、ある意味間違っては無いですし…
上の流れもありますからね。
CString text; text = "hoge\n"; text += "hoge" CFile fp; fp.Open( "tmp.txt", CFile::modeCreate | CFile::modeWrite ); fp.Write( text, text.GetLength() ); fp.Close(); をすると、「h o g e」 などと書かれてしまいます。 CFile fp; char* p; long len; fp.Open( "tmp.txt", CFile::modeCreate | CFile::modeWrite ); len = text.GetLength(); p = text.GetBuffer( len ); fp.Write( p, len ); fp.Close(); text.ReleaseBuffer() 等としても同様に「h o g e」になってしまうのですが、どうすれば良いのでしょうか? しかも最後まで書かれません。これはGetLength()で帰ってくる値が文字数であってバイト数では無いから、なのでしょうけども・・・。 どうすれば・・・。
>>481 プロジェクトがUNICODE用になってるね。
VS2005の話ならプロジェクトのプロパティでUNICODEを使うからマルチバイト文字セットを使うに変更。
>>481 >これはGetLength()で帰ってくる値が文字数であってバイト数では無いから
UNICODEプロジェクトなら文字数が帰ってくる。
だから
>fp.Write( text, text.GetLength() );
は
>fp.Write( text, text.GetLength() * sizeof(_TCHAR));
としないとだめ。
484 :
481 :2006/04/15(土) 12:57:46
おぉ〜感謝感謝! 文字列処理も結構するので、UNICODEで暫く頑張ろうと思ってまふ
485 :
481 :2006/04/15(土) 13:04:08
全文書き込める様になったけど、相変わらず文字と文字の間にスペース入りますねえ。 h o g e は変わらず・・・。うーん・・・
VS2005の挙動は良く知らないんだけど、 text = _T("hoge\n"); text += _T("hoge"); ではどう?
最初にBOM書き込むようにすれば?
488 :
481 :2006/04/15(土) 18:20:00
>>486 ダメですねえ。相変わらず h o g e になります。
>>487 BOMを最初に書く、どうやるのだろう・・・
CStringに入れた文字列をただただファイルに書きたいだけなのに・・・
こうなればFILE*か、と思ったらfopen等は古い形式と言われ
p = (char*)text.GetBuffer( text.GetLength() * sizeof( TCHAR ) );
FILE*fpw;
fopen_s( &fpw, "test2.txt", "w" );
fwrite( p, sizeof( TCHAR ), text.GetLength(), fpw );
fclose( fpw );
text.ReleaseBuffer();
をやったら、、、「h o g e」
やっぱ同じじゃーん・・・。
もうダメポ・・・。
すげえ馬鹿
TCHARというのは、ある時はchar、ある時はwachar_tになる型で、 ある意味charでもwchar_tでも無い型なわけだから、双方ともに変換がいるわけ //面倒だから#include <atlconv.h>しとけ。 USES_CONVERSION; char *p = T2A( LPCTSTR(text) ); FILE*fpw; fopen_s( &fpw, "test2.txt", "w" ); fwrite( p, 1, strlen(p), fpw ); fclose( fpw ); でいけるとおもう。 まあ、CStringじゃなくて、CStringAを明示的に使う手もか。
構造体を二重配列で持ちたいのですが、宣言と領域確保をどうすればいいのか教えてもらえないでしょうか? 具体的には、現在、下記のような構造体で m_structCONVERTSET[n] として使っているのを m_structCONVERTSET[n][m] として使いたいのです。(n,mは変動) typedef struct convertset{ BOOL bCodeConvert; CStringArray gCodeTableArray; } CONVERTSET; CONVERTSET*m_structCONVERTSET; int nMaxSize = 10;//最大値は変動。 m_structCONVERTSET = (struct convertset *)malloc( sizeof(struct convertset) * nMaxSize );//領域確保
std::vector< std::vector< CONVERTSET > >でよくね?
>>488 CString BOM(_T("\ufeff"));
CString text(_T("hoge"));
CString out = BOM + text + _T("\r\n");
CFile cf(_T("test2.txt"), CFile::modeCreate | CFile::modeWrite);
cf.Write(out, out.GetLength()*2);
cf.Close();
可変長の文字列を扱うなら素直にiostreamかstdioを使ったほうがいいと思うがな。
>>493 すいません、それをどう使えばいいのでしょうか。
タスクバーアプリを作りたいんだけど どうしても左隅にウィンドウが残ってしまいます。 どうしたよいでしょうか?
見なかったことにする・・・とか
498 :
481 :2006/04/15(土) 23:40:38
>>481 =484=485=488=498
そう短気にならずに粘って下さい。
ここの板は技術なのに、すぐ人格に言及しようとする性向の人が出て来ます。
2ちゃんねるは、そういう人も混じるところ。駅のホームかどこかで
ヒマにあかせて打っていたりする。欲求不満の捌け口にしている人もいる。
昔の言い方をすれば、お天道さまが見ている。そのうち天罰が当たるでしょう。
libファイルって何ですか?
>>500 Static Link Libraryのことだよ。
>>500 501の言う静的ライブラリの場合とDLLを参照するためのインポートライブラリである場合の2種類がある。
静的ライブラリは単にオブジェクトファイルを固めたようなもの。
インポートライブラリは、関数などの実体がDLLにあるという情報が書かれている。
503 :
500 :2006/04/16(日) 21:55:30
フリーで配布されてるDLLを使いたいんですが、 dllとdefファイルしか入ってないんです。 普通、libファイルないと組み込めないですよね?・・・ でも、皆さんそれだけて作ってるようなので libファイルって結局なんなのかなぁとか思って質問したのですが。 dllからlibファイルを生成するようなツールってあるんですか?
作ってるやつに直接聞くのが常識
libでdefファイルから生成できることがわかったんですが、 LKN1106エラーで結局作れてません・・・ ちなみに使おうとしてるのはSQLiteです。 VS2005落とさないとだめなのかなぁ・・
>>503 その場合、defファイルにDLLインポート用のことが書かれているはず。
つまりお前がlibに期待している役割を担っているはずということだ。
>>505 libを作らなくてもdefのまま使えなかったっけ?
508 :
500 :2006/04/16(日) 23:20:05
509 :
499 :2006/04/17(月) 07:46:20
アイフルの取立て屋の録音聞いていると、2チャンネルでたまにお見かけする 言葉使いだな。やっぱ、バチが当たったな。
>>508 APIのLoadLibraryを使えばできる。これでがんばれ。
LIB /DEF でインポートライブラリを作るときは元になるOBJも必要で、
この指定がないとカラのライブラリが出来る。
レガシーなDEFを使ってDLLとインポートライブラリを作るときは次のように指定するが
cl /LD xxx.cpp /link /DEF:xxx.def
説明のためにまどろっこしい順序で実行すればこう
cl /c xxx.cpp
lib /DEF:xxx.def xxx.obj ここでインポートライブラリができる。 xxx.objを忘れずに。
link xxx.obj xxx.exp ここでDLLができる
つまりDEFだけあってもインポートライブラリは作れない。
一箇所訂正 link xxx.obj xxx.exp link /DLL xxx.obj xxx.exp (正)
LoadLibarayでやるのは無理です。 インポートライブラリを作るときもオブジェクトファイルが必要なんですか。。。 ぅーん。困った。
誰も困ってないからどうでもいいや
>>512 インポートライブラリの目的は、defで定義された関数がobjのどこから見つかるかを知り
スムーズにDLLを呼び出すことにある。
DLL作ったやつ > DLL使うやつ > このスレで質問に答えるやつ 情報量はこの順に多いわけだし 俺ならDLL作ったやつに直接聞くけどな
516 :
デフォルトの名無しさん :2006/04/17(月) 21:22:37
517 :
デフォルトの名無しさん :2006/04/17(月) 21:35:23
VC6(MFC)なんですが ちょっと質問です ieをオプションつきで起動(メニューバーとかない状態)、 ブラウザ内のHTMLドキュメント読み込みがcmpleteまで待機、 ieのウィンドウハンドルを取得 までをやりたいのですが VBScriptだと簡単にできたのですが、 これをVCでやるには、、、、 VBだとちなみに CreateObject("Wscript.〜") でieを .Run で立ち上げてパラメータ絵をセットしていました
518 :
512 :2006/04/17(月) 22:01:34
俺が使おうとしてるのはSQLiteです。
始めまして、質問させてください。 超初心者でVisual C++ 2005 Express Editionを使って勉強し始めました。 とりあえずウィンドウを表示しようとしていますが、 fatal error C1083: include ファイルを開けません。 'windows.h': No such file or directory といったエラーが出てコンパイルできないのです。 どうしたらいいものでしょうか、2日ほどPCと睨めっこでそろそろ挫けそうです。
520 :
デフォルトの名無しさん :2006/04/18(火) 01:01:11
Visual C++ 2005 Express Edition では、.Net以外の開発はできないはず ようはC言語の勉強は無理です どうしてもというならば、そのファイルを度j個からかほろってくると
>>517 COM使うんなら基本的にやり方は同じ。
522 :
デフォルトの名無しさん :2006/04/18(火) 01:12:52
>>521 たとえば
var wShell = CreateObject("Wscript.Shell")
って一文をVCに直すにはどうすれば(;´д⊂)
2005って.netしか無理なの?
んなこたーない
>>519 Express Editionには Windows SDKがついてこないので、
windows.h系の開発がしたければ別途Windows SDKをダウンロードしてインストール。
どこかのスレに設定の方法がアップしてあったが流れて見当たらない。
ぐぐったら出てくると思うから探してみて。
つーか他のスレで同じ質問してるな。 Platform SDK だった。
>ようはC言語の勉強は無理です あふぉ? Windows の API や GUI まわりと 言語との間になんの関係が?
529 :
デフォルトの名無しさん :2006/04/18(火) 09:33:08
Win32コンソールアプリケーションを作っています。 ソースファイル(CPPファイル)に「IsRegistoryInstalled」という関数を作ったのですが、ビルドすると、「エラー2 error C3861:'IsRegistoryInstalled': 識別子が見つかりませんでした」と出てしまいます。 そこで、この関数をヘッダファイル(Hファイル)に移してビルドすると、 「エラー1 error C2065: 'strValue' : 定義されていない識別子です。」とでてきます。strValueはCString型です。どうも、ヘッダファイルではCString型を使えないようです。 ヘッダファイルにも、「#include "stdafx.h"」としたんですよ。ウイザードでも、MFCを使えるように選択しました。 ヘッダファイルでだけMFCが使えないなんておかしくないですか? Win32コンソールアプリケーションでMFCを使えるようにするにはどうしたらいいのでしょうか? ご存知の方、よろしくご教授願います。
>>529 まずC言語の基本的事項は分かってる?
プリコンパイルヘッダについても理解してる?
それに加えてC++の基本的なことも勉強してから
MFCに取り組んだ方がいいと思う。
あと、registry の綴りが間違ってる。
レジストーリー きっと、POS端末に物語をインストールするんだよ。
532 :
デフォルトの名無しさん :2006/04/18(火) 12:05:49
Win32コンソールアプリケーションを作っています。 ソースファイル(CPPファイル)に「IsRegistoryInstalled」という関数を作ったのですが、ビルドすると、「エラー2 error C3861:'IsRegistoryInstalled': 識別子が見つかりませんでした」と出てしまいます。 そこで、この関数をヘッダファイル(Hファイル)に移してビルドすると、 「エラー1 error C2065: 'strValue' : 定義されていない識別子です。」とでてきます。strValueはCString型です。どうも、ヘッダファイルではCString型を使えないようです。 ヘッダファイルにも、「#include "stdafx.h"」としたんですよ。ウイザードでも、MFCを使えるように選択しました。 ヘッダファイルでだけMFCが使えないなんておかしくないですか? Win32コンソールアプリケーションでMFCを使えるようにするにはどうしたらいいのでしょうか? ご存知の方、よろしくご教授願います。
適当にやるんじゃなくて、ちゃんと依存関係を考えて記述汁
Win32コンソールアプリケーションを作っています。 ソースファイル(CPPファイル)に「IsRegistoryInstalled」という関数を作ったのですが、ビルドすると、「エラー2 error C3861:'IsRegistoryInstalled': 識別子が見つかりませんでした」と出てしまいます。 そこで、この関数をヘッダファイル(Hファイル)に移してビルドすると、 「エラー1 error C2065: 'strValue' : 定義されていない識別子です。」とでてきます。strValueはCString型です。どうも、ヘッダファイルではCString型を使えないようです。 ヘッダファイルにも、「#include "stdafx.h"」としたんですよ。ウイザードでも、MFCを使えるように選択しました。 ヘッダファイルでだけMFCが使えないなんておかしくないですか? Win32コンソールアプリケーションでMFCを使えるようにするにはどうしたらいいのでしょうか? ご存知の方、よろしくご教授願います。
Win32コンソールアプリケーションを作っています。 ソースファイル(CPPファイル)に「IsRegistoryInstalled」という関数を作ったのですが、ビルドすると、「エラー2 error C3861:'IsRegistoryInstalled': 識別子が見つかりませんでした」と出てしまいます。 そこで、この関数をヘッダファイル(Hファイル)に移してビルドすると、 「エラー1 error C2065: 'strValue' : 定義されていない識別子です。」とでてきます。strValueはCString型です。どうも、ヘッダファイルではCString型を使えないようです。 ヘッダファイルにも、「#include "stdafx.h"」としたんですよ。ウイザードでも、MFCを使えるように選択しました。 ヘッダファイルでだけMFCが使えないなんておかしくないですか? Win32コンソールアプリケーションでMFCを使えるようにするにはどうしたらいいのでしょうか? ご存知の方、よろしくご教授願います。
普通に使えたけど どうしたら使えなくなるか教えてほしいなあ
ExpressEditionで勉強しています。 入門書の1冊目が終わったので、とりあえず何か作りたいと思います。 カレンダーを作るには、どうしたらいいのでしょうか? ヒントでもいいのでお願いします。 JavaのCalendarクラスのようなものは、C++にはないのでしょうか?
時計やカレンダのサンプルならいくらでもあるだろう コントロールでよければ貼るだけだし
このサンプルコードが
http://www5.airnet.ne.jp/tomy/cpro/etc20.htm error C2011: 'tm' : 'struct' 型の再定義
c:\program files\microsoft visual studio 8\vc\include\time.h(119) : 'tm' の宣言を確認してください。
error C2079: 'date' が 未定義の struct 'tm' で使用しています。
error C4430: 型指定子がありません - int と仮定しました。メモ: C++ は int を既定値としてサポートしていません
error C2027: 認識できない型 'tm' が使われています。
c:\program files\microsoft visual studio 8\vc\include\time.h(119) : 'tm' の宣言を確認してください。
error C2228: '.tm_mon' の左側はクラス、構造体、共用体でなければなりません
error C2027: 認識できない型 'tm' が使われています。
c:\program files\microsoft visual studio 8\vc\include\time.h(119) : 'tm' の宣言を確認してください。
error C2227: '->tm_mday' : 左側がクラス、構造体、共用体、ジェネリック型へのポインタではありません。
error C2027: 認識できない型 'tm' が使われています。
c:\program files\microsoft visual studio 8\vc\include\time.h(119) : 'tm' の宣言を確認してください。
error C2227: '->tm_mon' : 左側がクラス、構造体、共用体、ジェネリック型へのポインタではありません。
error C2027: 認識できない型 'tm' が使われています。
c:\program files\microsoft visual studio 8\vc\include\time.h(119) : 'tm' の宣言を確認してください。
などどエラーが53個出て動かないのですが、tmの宣言をどういうふうに
変えたらいいのでしょうか・・・?
Cでコンパイル
サンプルコードにあったのですが、 lpCmdLineの前に付いている*はどのようなときに付くのでしょうか? int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE, LPTSTR lpCmdLine, int nShow) { // データファイルから起動されたときの処理 if (*lpCmdLine) { // フルパスのファイル名をコピーする・ただし、両側の引用符を削除する strcpy(FileName, *lpCmdLine == '"' ? lpCmdLine+1 : lpCmdLine); int pos = strlen(FileName) - 1; if (pos > 0 && FileName[pos] == '"') FileName[pos] = 0; GetFileTitle(FileName, FileTitle, sizeof(FileTitle)-1); // 短い名前 bOpenStart = TRUE; // フラッグ }
そんなレベルじゃVCやるのは100年早い
100年後は生きていません
>>542 C或いはC++が身についているかどうか怪しいのに、
C或いはC++でWindowsプログラミングをしようなんて、狂気の沙汰。
フローチャート書くとこから始めればいいんぢゃね?
俺はCを一通り終わらせたあとにWinAPIやったが、そこで詰まることはなかったな LPTSTRのLPはポインタを表す。ポインタにつける*の意味は分かるよな?
>>522 #importを使っていけばこんな感じ。
#undef GetWindowStyle
#undef GetFreeSpace
#import <wshom.ocx>
int main()
{
IWshRuntimeLibrary::IWshShellPtr wShell;
HRESULT hr = wShell.CreateInstance(L"Wscript.Application");
}
550 :
初心者以下 :2006/04/18(火) 19:54:22
マイクロソフトのVisual Studio.netというソフトを自分のノートパソコンにインストールしたいのですが、プロバイダと契約していないのでインターネットからインストールできません。何か他にインストールする方法をご存知の方教えて下さい。
売ってる店を探す。あったらそこへ買いに行く。
553 :
初心者以下 :2006/04/18(火) 20:09:22
レス本当にありがとうございます。 3万円…かなりするもんですね…。一度インストールしてしまえばもう使わないのに。どうしよう…。
( ゚д゚)ポカーン
555 :
初心者以下 :2006/04/18(火) 20:18:13
3万円もしませんでしたね苦笑。通信販売で購入考えてみます。(たくさん種類があってよくわかりませんが…)本当にありがとうございました。本当に助かりました。
ttp://umeici.hp.infoseek.co.jp/files/aya5_240.zip ↑のソースをVC7SP1でビルドしようとしているのですが、
error C2955: 'std::collate' : クラスのテンプレート名で仮引数リストの指定がありません。
というエラーが出てビルド出来ません。
「boost::reg_expression<wchar_t>」は「boost::wregex」に置換してあります。
Boostは1.33.1でregex関係しか入れてません、ググっても全くわかりませんでした。
お願いします。
こんな馬鹿もVC使う時代になったのか ちょっと信じられない
558 :
初心者以下 :2006/04/18(火) 21:34:09
大学1年で、今月パソコン買ったばかりです。家にパソコンがなかったのでパソコンに関しては無知です。エクセルやワードすら最近使えるようになりました…
559 :
556 :2006/04/18(火) 21:46:14
ソース内ではcollateを呼び出してる箇所が見当たらないで、わけがわらなくて。 それとも何か、指定しないと駄目なんでしょうか。
>>553 一度インストールしてしまえばもう使わないとは、
つまりハードディスクの肥やしにするということですか?
562 :
519 :2006/04/19(水) 00:28:24
>526さん レスありがとうございます。 しかし、既に「Platform SDK」は既にインストールされています、インストールの仕方を間違えてるのかもしれません。 もうちょっとがんばってみます。
インストールしただけで、パスの設定をしていないだろ。
564 :
556 :2006/04/19(水) 18:32:20
変なことして、自己解決。 どっかでバグ出そうだけどしょうがない。
565 :
デフォルトの名無しさん :2006/04/19(水) 19:11:26
回答もらいたいからあげるけどさ 今まで何も疑問もなく使ってきた GetWindowTextとSetWindowTextだが エディットボックスに単独で「/」って入れると文字化けするのはなぜ? GetWindowTextって勝手に最後に\nか\0かつけてたっけ 解決法もキボン
566 :
デフォルトの名無しさん :2006/04/19(水) 19:20:37
どう文字化けするかといったら 「/」が「*s」になる。
すまんこ 俺が勘違いしてただけだった
なんだかよくわからないので、ここで質問 今、IMEを制御するプログラムをいじってるんだが、こんな風にするとパソコンが フリーズする。なぜだろうか? プログラムをデバッグモードで起動して→IMEを全角/半角キーで起動 →ウィンドウプロシージャの中にデバッグポイントを打って →そこでステップ移動をすると高確率でフリーズ・・・ どうも、IMEを起動してる状態でデバッグのステップ移動をしていると フリーズするみたいなのだが、どういうことだろうか? また、普通にデバッグをせずにプログラムを起動した時は普通に問題なく 動いてる。つまり、デバッグのステップ移動時にしか起こらない症状。 環境は .net2003+XPのsp2 回答を頼む。 ついでに、おーage age
VC7+IMEでフリーズ ってどこかで読んだような気がした
レジストリやiniファイルで設定された値を基に 起動時コンボボックスに表示する項目を変えたいのですが void ChogeDlg::OnPaint() { if (IsIconic()) { ................................. } else { // ここでコンボボックスリストの初期化 } } ここでいいのでしょうか? とりあえず上手く行ってはいますが、自信がありません。
鼻から牛乳噴いた。 WM_CREATEでやるもんじゃね?
571の人気に嫉妬
WM_INITDIALOG
576 :
571 :2006/04/20(木) 17:51:46
あぁ、すまん。ダイアログね。鼻から牛乳噴いてくるー
VisualStudio2003のVC++で派生クラスの親を基底クラスのvectorにすると、 基底クラスにCArrayを使うとコンパイルが通らなくなります。 ClassA : public ClassB な場合に、ClassBのメンバにCArrayを使えません。 (コピーコンストラクタが使えないと言われ、作るとマネージにしろと怒られる) CTypedMapPtrのCMapStrToObjでもVALUEに指定するクラスに多重継承を使うと CMapStrToObjのメソッドが使えなくなります。 CTypedMapPtr<CMapStrToObj, CString, ClassC*>な場合に、 ClassC : public ClassD, public ClassC ではCTypedMapPtrのメンバしか 見えなくなります。 これはどちらも仕様として諦めるしかないのでしょうか? 過去に同じような問題で解決できた方がいらっしゃいましたらご教示お願いします。
すみません、上の ClassC : public ClassD, public ClassC は、 ClassC : public ClassD, public ClassD の間違いです。
ClassC : public ClassD, public ClassE でした・・・orz
>>577 STLを使っているのにCArrayを使うと言うセンスが理解できない。
582 :
デフォルトの名無しさん :2006/04/21(金) 01:22:06
VC6にプラットフォームSDK 2003SP1 は入れても全てがきちんと動かないって書いてあるんだけど度 ie関連のATLだけこうしんできないかね?
>>581 実は上のケースでvectorのほかにも連想記憶を使いたかったのですが
同様の理由で無理だったのでCArrayにも実体を保持して誤魔化そうかと
考えていました。
今は単純な継承のCMapとCArrayで誤魔化していますが、STLではもっと
スマートな解決策があるのでしょうか?
調べては見たものの良い方法が見つからないのでぜひお教えください。
>派生クラスの親を基底クラスのvectorにする ここがいまいち分からないけど class D : public std::vector< B > ってこと?
vc++6.0使ってます。 リソースエディタでダイアログにリストボックス付けたのですが、 リストに文字列を設定するにはどうしたらいいですか?
おいおい、そんな調子でVC使っていけるのか?
大丈夫、わからないときはまた聞くから。
頭にぱっと10通りぐらい思いついたけど やってみないと実際使えるかどうかわからん。
MFCならクラスウィザードでそのダイアログのクラス作って 変数の追加でリストボックスのコントロール追加して メッセージのWM_INITDIALOGでリストボックスの変数にAddStringする これでよかったっけ
>>589 ご返答ありがとうございましたm(_ _)m
いろんな参考書を見つつやっていて、まだよくわかってないのですが
アドバイスいただいたキーワードを元に、もっと調べてみます;
SendInputの実験しようと思って、以下のようなコンソールアプリを作ってみたのですが、 「'INPUT' : 定義されていない識別子です。」 ってでてしまいコンパイルできません。 INPUT構造体はwinuer.hで定義されてるので、windows.hをincludeしとけば問題ないと思うのですが、 なにか他にやらなければいけないことがあるのでしょうか? 環境はWin2000+VC6です。 #include "stdafx.h" #include <windows.h> int main() { INPUT input; input.type = INPUT_MOUSE; input.mi.dwFlags = first | second; SendInput(1, &input, sizeof(INPUT)); return 0; }
winuer.h 使うならdllがいるのでは?
594 :
591 :2006/04/21(金) 15:46:04
#define _WIN32_WINNT 0x0500って追加してもまだ出てしまう・・・
コンソールアプリからAPIを使う方法を調べればいいんじゃないか?
596 :
568 :2006/04/21(金) 17:14:02
>>569 >>580 やっぱり、仕様っぽいですね・・
IMEの時は、デバッグのステップ移動をしないようにして
対処するしかないみたいだね。
ありがとう。安心した。
>>591 stdafx.hの中も見ておいたほうがよさそうな予感。
>>584 そうです、
>>577 の例で言うと
ClassA : public vector<ClassB>
としていましたが、ClassBにCTypedMapPtrやCArrayのメンバを追加して
複数のキーで検索できるようにしたいと思っていました。
今日仕事帰りに本屋によって数時間探してみたのですが、
mulitimapというのが使えるかもしれないので調べてみようと思います。
ヒントになる情報をくれた
>>581 さんもありがとう。
そもそもSTLのコンテナは継承されるような作りではない。
おれ、 std::vector<T> 継承しまくりw
this->push_back()できて[]で参照できて便利なんだよね。 連想配列メンバとoperator[]でも実装できるんだけど。
602 :
デフォルトの名無しさん :2006/04/22(土) 11:29:43
VC++V6.0で書かれたソースコードのメニューを
取っ払いたいんだがその方法が分からない。
どうやったら消えるのか教えてほしい。
リソースエディタで編集できるまでは分かったものの
それで消せるようには見えない。
リソースファイルやアイコンファイルをプロパティの設定で
「ビルドしない」にしてもしつこくメニューが出てくる。
ちなみにソースコードは
http://hirotake.web.infoseek.co.jp/ の
InverseKinematic.lzh (231KB) (Visual C++ Ver 6.0用)
(解凍したら「ワークスペースを開く」でInverseKinematic.dswをクリックするだけでビルド準備OK)
どうか教えてくれ。
VC6ということは理解してるようだが、 SDK MFC ATL WTL その他があることすら知らないようだ。
605 :
602 :2006/04/22(土) 13:19:31
いやMFCだが、それがこの問題と関係あるのか?
あまり無駄なやりとりで暇を潰している暇はないんで手短に頼む。
それともこのスレタイと
>>1 は偽りなのか?
それなら他で聞くが。
だったらさっさと他で聞け
質問者が回答者を怒らせてどうする
608 :
602 :2006/04/22(土) 13:33:39
いや、馬鹿回答者が既に十分俺を怒らせてるだろ。 以下、ここでは質問しない方がいいよ、ここの住人みんな馬鹿だから。 じゃーな、ばーーーーーーか。( ´,_ゝ`)プッ
ばいばーい
リソースエディタで編集できるとわかったのに、消せると思わないところが不思議だ。
どうせ違法コピーでヘルプもMSDNもろくに読んでないんだろうが くだすれにもホドがあると言う事だな
612 :
デフォルトの名無しさん :2006/04/22(土) 17:04:32
けんくぁわやめようよぉ〜
VS2005Expressが無償で手に入る時代に違法コピーをする意味がわからんだす
VC6.0を未だに使いつづける神経がわからんな。
>>613-614 公開した人間がVC6用だと書いているからVC6を入手したんだよ、きっと。
学校で、C++の授業が始まったんですが、 ハローワールド打っても、コマンドプロンプトみたいな画面でできます。 GUIのWinアプリの場合はその他に何を弁居売れ売いんでしょう?
>>616 お前の頭にウィンドウズプログラミングの知識を入れればよい。
ただし、お前がプログラミングを始めたばかりなら今すぐはやめとけ。
いわば、プログラミング言語の習得そのものを基礎とすれば
ウィンドウズプログラミングは応用・実践にあたることだから。
>>616 GUI なアプリなんて
学校の授業と関係ないだろ。
寝てろ。
620 :
616 :2006/04/22(土) 21:23:45
ありがとうございます。 vectorとかの作者さんたちはみなやっぱり凄腕なんですね! とりあえず、C++の授業がすべて終わったら、応用に取り掛かってみようと思います。
>>616 [゚д゚] デフラグガカンリョウシマシタ
/[_]ヽ
| |
++CGIUWin、、、。いいうががきしすすそたたっってでででででなにののののはままみもょれをんんアコトド
ドハプププマリルロロワンンーー他何合場売売始学居弁打授校業画面?
>>620 アレは一番最初が一番きつい。精神的に。
C++が全部終わるまで待つ必要は無いけど、向き不向きがはっきりしてくる団塊でもある。 つか、C/C++の授業なんか待ってないで独学でガシガシ読み進めるだけの貪欲な学習欲と 根性が無ければ長続きしないと思うよ。
素人・C++でGUIならBCB進めるけどね
BCBは恐ろしい言語だ。 C++はおろか、ポインタすら知らなくてもプログラムができてしまう。
BCBって何ですか?
左肩に打つはんこみたいな注射のことだよ。
それはBCG
ロマンティックが止まらない
それはCC………ガールズ
歌うときは D.D. GAPS になるはず。
632 :
デフォルトの名無しさん :2006/04/23(日) 20:42:42
ファイルの中身を○バイト分シフトして同じファイルに上書き保存するにはどうすればいいですか? シフトすることによって生まれた空間は無かった事にして上書き保存したいです。
いったん全部読み込んで fseekでバイト分移動してそこから書き込み始め
fseekしてそこから読み込んで書き込みだった
ありがおうとうあ
巨大なファイルだったら全部読み込めない事もあるから、 書き込み用と読み込み用に一つずつ開いて、読み込みの方は fseek()でずらしてから読み込み、書き込みファイルに転送。 全部終わったら、読み込みファイルを消去、次に書き込んだファイル を読み込みファイルと同じだったファイル名にリネーム。
書き込み用の一時ファイルは、他のファイル名と重ならない事が保証 されているtmpnam()を使って作成する。
unix系でしかプログラム作ったことがなかったのですが、どうしてもWindowsで 動くプログラムを書かなければいけない羽目になって、初めてVC(VS2005)の プログラムを参考書の山と格闘しながら作っています。 そのプログラムが無茶とは知りつつ通信系のプログラムで、CAsyncSocket を使ってTCP/IPで通信するものなのですが、文字コード変換をどうやって 良いのかわからずに困っています。過去ログから、プロジェクトのデフォルト 文字コードを変更すればなんとかなりそうなことはわかったのですが、できれば 内部処理はUNICODEのまま、外部との通信をシフトJISやEUCで行いたい のですが、簡単に使える変換ライブラリ(できれば、CStringとの相互変換)の ようなものは、どこかにありませんでしょうか。 あまりのドキュメントの多さと、訳の分からない型の多さ、そしてただソースを 読みにくくしているとしか思えない(笑)ハンガリアン記法と独自の命名規則で もう泣きそうです。TT
>>638 Cygwin(or Mingw)を使って、iconvを使えば殆どUnixのままのコードが動くのに。
>>638 Shift JISならCString類の変換演算子やコンストラクタを使って、
const char *を取り出したりconst char*から初期化・代入したりできる。
文字コードの変換はUnixだろうがWinだろうがやることは同じだぞ 標準ライブラリだけで可能だ
>>642 UnicodeとSjisの相互変換をやる標準ライブラリはなんですか?
EBCDICと(ry
>>644 流石にそれは高々100程度のエントリの配列を用意するだけだろ。
検索なんかしてる暇無いのではやく誰かおしえろ
標準ライブラリを使ったテキスト処理
xercesに入ってたっけ、単体は知らん。 unicode, sjisならWindowsのAPIにあった気がするが、unicodeは2byte固定だったかな。
>>643 Windows上の処理系ではロケールを"japanese"などに設定すれば、
マルチバイトをShift JIS(CP932)、ワイド文字をUTF-16として、
mbstowcs/wcstombs類を始めとしたC/C++のマルチバイト・ワイド文字変換のライブラリが使える。
また、ロケールを""にするとシステム標準を使うと言うことで、
日本語版Windowsでなら"japanese"相当だが、
他国語版Windowsならその地域に適切なものが選ばれるようにもなる。
templateについて今更ながら質問させてください。 デストラクタをcppファイル側に定義するとリンク時に外部参照エラーになり、 cppファイル側のデストラクタをコメントアウトしてヘッダ内でインライン定義 するとリンク出来て期待通りに動作もしてくれるのですが、デストラクタや 他の関数は大丈夫なため原因がよく判りません。 templateの場合はvirtual関数はインライン定義しか出来ないなどの制限が 有るのでしょうか?
653 :
638 :2006/04/25(火) 00:34:42
みなさん、いろいろありがとうございます。レス遅れてすみません。
>>639 ググったらいろいろ出てきてしまって、どれが一般的な方法かわからなかった
ので、ここで皆さんにお聞きしてしまいました。
>>640 作らなきゃいけないプログラムが、Linux上のサーバーにWindowsからアクセス
するサンプルなので、Cygwinとかは反則になってしまいます ^^;
>>641 Shift JIS限定で、CAltString… 系と組み合わせればとりあえず変換できる
ことがわかりました。ググって引っかかったものにもあったので、とりあえずは
これで実装して、後で修正することにしました。
>>642 C/C++の標準ライブラリにそのような機能があるとは知りませんでした。
すみませんが、もう少し詳しく教えていただければ助かります。
ちょっと前の今は亡きCマガジンに、参考になりそうな記事があったようです
が、残念ながら手元にありません。機会があったら、バックナンバー置いて
ありそうな本屋に行ってみます。
検索ダイアログを作ろうと考えています。 RegisterHotKeyで検索ダイアログをポップアップさせようとしているのですが、Visual C++のリソースエディタで作成したダイアログをポップアップさせることは可能なのでしょうか?
つ【CDialog】
ダイアログ出すのに悩むやつがいるんだ
悩む。 今朝もトイレで起きようか、まだガマンしようかと悩んだよ。ダイヤログより簡単だが。 人生は悩み多し。
>>653 流れ嫁。
>642はその後悉くからかわれている通り、何かの勘違いだ。
ずばりそれ専用のライブラリがないと何もできないんだろうかね?
ゆとりの賜物
馬鹿はVBでも使ってろ
>>659 EUC、SJIS、ISO-2022位は相互変換も簡単だが、Unicodeが絡むと面倒でね。
つーか、そんなことくらい承知の上での発言だよな。
A2Wいいよ
664 :
654 :2006/04/25(火) 21:33:26
>>655 ダイアログはCDialogは使っていません。
今手元にソースがないので忘れてしまいましたが、関数にリソースIDを渡して表示させる関数を私用しています。
ダイアログを表示させたいのではなく、Ctrl + Fなどのホットキーでダイアログをポップアップさせたいのです。
>>656 ダイアログを出すのに悩んでいるわけではありません。
(°д ゚)ハァ?
OnKeyDownとかOnChar辺りで何とかならんの?
普通はコマンドハンドラ当てておいてショートカットキーだよな。
>>667 だよな。664 は隠しキーとかやりたいんかな。
むかし NEC の文豪にはよくあって遊んだ。
669 :
591 :2006/04/26(水) 17:10:17
>591 「プリコンバイル済みヘッダーファイルを使用しない」 にプロジェクトの設定を変えたらビルドできた。 なんでこうなるのだろう?教えてエロイ人
プリコンバイル済みヘッダーの中に何か書いてあるから
671 :
654 :2006/04/26(水) 18:16:09
>>666 OnKeyDownはウィンドウのイベントハンドラですよね。
例えばエディタだったらメインウィンドウがひとつしかないから
それでよいかもしれないですが、どのウィンドウがアクティブになっていようが
たちどころに検索ダイアログを出すようにしたいわけです。
で、調べたら見つかったのがRegisterHotKeyだったのですが(猫でもわかる・・・の第193章)
ダイアログの作り方がだいぶ違い、それなりにコーディングしても
WM_HOTKEYに制御が来てなくて(ホットキー自体は設定できていたようですが)
そもそもVCのリソースエディタで作ったダイアログのプロシージャに
ホットキー制御を渡せるものかと疑問に思っている次第です。
>>667 隠しキーをしたいわけではないです。
相手するやつがいるから
>>671 >そもそもVCのリソースエディタで作ったダイアログのプロシージャに
そもそもダイアログリソースが何なのか理解できていない悪寒。
相手するやつがいるから
デバッグすると プロジェクト : error PRJ0003 : 'cmd.exe' の起動中にエラーが発生しました。 と表示されてしまいます。 システム環境変数で、%SystemRoot%\system32 とやったのですけど改善されないんですけど・・・ どうすればいいんでしょうか。
つ[諦め] つ[挫折]
それなんて言うライフカードのCM?
ファイル内容をリストコントロールで表示するプログラムをVC++6.0で作成しているのですが、 サイズ表示のソートが下記のようになってしまい、サイズの大小ソートにすることが出来ません。 どうすればよいのでしょう? 149byte 15byte 18954byte (InsertColumn時の列設定はLVCFMT_RIGHT)
てめぇのプログラムがバグってるから。
自分で比較用の関数用意する
俺の目にもソートされているように見える。
文字列としてはしっかりソートされてるね。
684 :
678 :2006/04/28(金) 12:46:04
windowsのエクスプローラでの表示のように、数値としてソートされたいのですが。
じゃあ数値としてソートすればいいんじゃねーの。
686 :
678 :2006/04/28(金) 14:30:31
カラムクリック時の自動ソートで実現したいのです。 (Winエクスプローラで言えば、『サイズ』をクリックすれば数値ソートされる。) InsertColumn時に引数に何か入れるのか、SetItem時の引数に何か入れるのか、 どちらでも無いのか分からないのです。
何でもかんでも自動でやれるなら、オマイ要らないやん。
実際要らない子なんだろ。
ここで聞けば自動的に教えてくれるじゃないですか
691 :
デフォルトの名無しさん :2006/05/02(火) 11:07:00
質問です。 プロジェクトを編集して、デバッグするためにF5を押すと「プロジェクトの構成が変更されています ビルドしますか?」と表示されますが、 これが何も編集せずにF5を押しても出てくるようになってしまいました。 コンパイルオプションを変更した時と同じようにソースコード全体をコンパイルしてしまい時間がかかります。 この現象はデスクトップPCからノートPCにプロジェクトをコピー後、ノートPCでプロジェクトを開くと起こるようになりました。 一体何が起こったのでしょうか。
取り敢えず、ディレクトリとファイルのパーミッションを疑ってみようか。
>>692 レスありがとうございます
ファイルを調べているうちに、やっと原因がわかりました
原因はOSの日付が間違って設定してあったせいでした。
つまりデスクトップの日付がノートPC現在の日時より何日か進んでいたために、デスクトップで作成されたソースコードが常に新しいファイルとしてVCに検知されてしまっていたのです。
日時を正しく設定することの大切さを学んだ気がします。
恐らくは、「プロジェクトファイルの日付が新しいままだから」だろうな。
695 :
デフォルトの名無しさん :2006/05/03(水) 21:54:19
VC.NET 、VC++7 で クラスの定義を .h に書き、実装を .cpp に書いて なおかつコンストラクタやメンバ関数に inline キーワードをつけるとコンパイルが通らなくなります inline を外すか、あるいはヘッダファイル中に実装まで全部記述すればいいようですが どうしてファイルを分けたらダメなのでしょうか
.hにあるプリプロセッサが.cppには・・・ いや分からんな
697 :
デフォルトの名無しさん :2006/05/03(水) 23:17:24
inet_ntoa()と同じような関数を教えてください。 それかどこかに同じようなライブラリ無いですか?凄く困ってるんで教えてください。 inet_ntoa()は諸事情により使えません。
自分で書いた方が早くね?
>>695 コンパイラが各cppファイル(翻訳単位)をそれぞれコンパイルした後、
できたオブジェクトファイルをリンカがくっ付けて1つの実行ファイルを作っている。
コンパイラは各翻訳単位を独立にコンパイルしている。
だから1つの翻訳単位を処理しているときには他の翻訳単位に目が行かない。
目が行かないから関数がヘッダに無い場合inlineかわからないし、わかってもインライン展開できない。
700 :
697 :2006/05/04(木) 00:48:16
inet_ntoa()のアルゴリズムを参考にしたいのですが、 WinSock.hの中身はどうしたら見れますでしょうか?
つ メモ帳
702 :
デフォルトの名無しさん :2006/05/04(木) 00:58:42
unsigned char *p = (unsigned char*)&in.s_addr; sprintf(str, "%d.%d.%d.%d", p[0], p[1], p[2], p[3]); こんな感じじゃねーの?
SDKにはwinsockのソースは入ってなかった。非公開?
705 :
697 :2006/05/04(木) 02:25:25
PlatformSDKには入ってた気がするんですがねぇ…。 ダウンロードするのが面倒だけど仕方無いか。
それ位ソース見ないで作れよ。
作れるけどどういう実装されてるか気になるだろ。
unsigned char型のデータをchar b[255]へ 代入したいんだけど、どうすればいい? × b = Array(a); × b = Convert::ToCharArray(a); 撃沈シマスタ、教えてくださいエロイ人
b[0] =a ;
710 :
708 :2006/05/04(木) 11:03:35
それもやったけど : error C2440: '=' : 'unsigned char' から 'char [255]' に変換できません。 配列型への変換はありませんが、参照またはポインタから配列への変換があります。 沈みました
うそをつけ。だとしたら、 unsigned char a = 'x'; char b[255]; b[0] = a; でもエラーになると言い張るつもりか?
aがunsigned charかunsigned char の配列かで話はかわるわけだが
RegisterHotKeyの質問です。 何度もすみません。 ダイアログから、以下のように親ウィンドウにホットキー設定をして RegisterHotKey(hParent, IDC_HOTKEY1, uMod, uVirtual) 親ウィンドウのプロシージャで LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) { switch (message) { case WM_HOTKEY: MessageBox(hWnd, "ホットキーが押されました!", "HOTKEY!", MB_OK); break; } return 0; } としてホットキーを捕まえようとしているのですが、WM_HOTKEYに制御が来ません。 ただ、親ウィンドウにホットキー設定はできているようで、Alt+F4などを設定すると デフォルトのウィンドウを閉じる動作が何も行なわれなくなります。 何か足りないのでしょうか? (ソースは抜粋ですみません)
VC++EEでもネイティブなGUIアプリって作れるんでしょうか? リソースエディタがないってことなので無理なのかな? C#みたいなエディタがついてないってこと?
リソースエディタなくても作れる
>>715 エディタがなくて作るって、コードでやるしかないんですよね?
GUIは手軽に作りたいんですけど・・
ただコントロール貼っただけだとVBぽくてかっこ悪い。 そういうダサいのでよかったらVB使った方が楽だし わざわざVC使う意味がないと思う。
718 :
714 :2006/05/06(土) 17:28:36
>>717 レスサンクスです
そうですか・・・でも、VBのコードの記述はどうも見た目が嫌なんですよね
文字だらけって感じで、あとゆくゆくは複雑な処理とかもやってみたいんで
ちなみに、かっこいいデザインってすごく興味湧きました
やった拘るならインターフェースもかっこよく行きたいんですけど
どこかでチラッと見たんですが、グラフィックソフトか何かで
GUIの部分ボタンなどを作ってその画像をはっつけてやるって手法があるみたいですが
そういうことをされてるんですか?
>ただコントロール貼っただけだとVBぽくてかっこ悪い。 これはちょっと・・・ 無駄に独自デザインのコントロールの方がよっぽどかっこ悪い。 本人はカッコよいと思ってるんだろうけど、傍から見るとかなり痛い。
んじゃVC使うなよカス
ビットマップ・アイコンはペイントとかフリーのお絵かきソフトで書けばいい、 リソースファイル(rc)自体はテキストファイルで自分で編集可能。 EEはMFCとかついてないからプラットフォームSDKいれてAPIをじかに呼び出すか、 GUIのライブラリも入れるかになるだろ、WTLも使えるみたいだし。 MFCはライセンス的に無理と思うのでMFC好きなら代わりにwxWidgets使ってろ。
722 :
714 :2006/05/06(土) 18:08:39
>リソースファイル(rc)自体はテキストファイルで自分で編集可能。 やっぱ、コードでやるんですね・・ どうもC++EEは無理っぽいです
>>708 const char* b = reinterpret_cast<const char*>(a);でも大体は間に合うと思うけど。
本当に代入したいなら、配列は代入できないので個々の要素を代入する必要がある。
aがunsigned char a[255]だとしたらたとえばこう。
using namespace boost::lambda;
std::transform(boost::begin(a), boost::end(a), boost::begin(b), ll_static_cast<char>(_1));
>>723 >708を読む限り、aはunsigned charなんじゃないか?
ならば_snprintfか?
726 :
デフォルトの名無しさん :2006/05/07(日) 04:31:37
C#を最近初めてAPIとかいじってると、 C++だと楽なんじゃないかなーと思い しかも、frameworkを入れなくてもいけるので 気軽に配布できるしってことで 学生時代に買って挫折してほったらかしだったVC++6.0を またはじめようと思うんだけど、もう書籍もないですし 今からじゃ遅いですか?
気合いです
>>713 もしかして、もう分かったのかもしれないけど、
その抜粋を見て思ったのが、もしかして
default:
return (DefWindowProc(hWnd, msg, wp, lp));
が抜けてるんじゃないかと。
コールバック関数で捕捉しないメッセージはwindowsに確実に投げ返してやらないと。
>>717 VCで作るGUIで効果を発揮するのはマルチWindowのときだよ(MFC使用)、
独自にカスタマイズすると子ウィンドウ(ダイアログではない)と親ウィンドウの間のイベント処理がアミダみたいになってくる。
そうじゃないなら、VB使うのがベストセレクションと思う。
JAVAのGUIもいまいちだし、WIN32APPで作っても、VBの方が遥かに楽だし。
729 :
728 :2006/05/07(日) 14:26:59
ちょっと猫さんまるごと持ってきて書き方間違えた default: return (DefWindowProc(hWnd, msg,wParam,lParam)); それともうひとつ case WM_COMMAND: switch(LOWORD(wParam)){ default: return (DefWindowProc(hWnd, msg,wParam,lParam)); } も要るよ。WM_COMMANDはダイアログ使ってるし、終了処理で必ず使ってると思うけど。
質問させてください。 Visual C++ 2005 ProfessionalでプロジェクトをRelease構成でビルドしたのですが、 ビルドは成功するものの、出力フォルダ(Release)の中にexeファイルが見あたりません。 Debug構成の時も、デバッグ実行できるのにDebugフォルダにはexeファイルがないのです。 exeファイル形式以外の出力設定になっている、という事なのでしょうか。 Visual C++からでなく、スタンドアローンで起動できるexeファイルを作るにはどうすればよいのでしょうか。
731 :
デフォルトの名無しさん :2006/05/07(日) 16:49:19
質問です。
最新のVCでビルドを行ったところ、
http://msdn2.microsoft.com/ja-jp/library/ms177253 (en-us,vs.80).aspx
ここに書いてあるような、ふるいVCでは通るが今回からは通らなく
なったようなコンパイルエラーが発生しました。
現在「C4430:型指定子がありません - int と仮定しました。メモ: C++ は
int を既定値としてサポートしていません」で躓いています。このエラーの
対象となっているヘッダファイルが
C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\Include\GdiPlusImaging.h
であり、MSが提供する共通のファイルですので、ここを修正するわけには
いかないと考えています。いったいどうすればよいのでしょうか?選択肢
としては以下のようなものを思いつきましたが・・・
1.バックアップをとって修正する。
→ 同様エラーが発生する場合に逐一修正を書ける必要があり、現実的ではない。
2.#pragma warningを使用する。
3.VCのバージョンを下げる
上記3項以外に妙案がありましたらご教授お願いします。
以上、よろしくお願いします。
>>730 自己解決しました。
出力ファイルのパスが自分の想定と違う階層に設定されていただけでした。
他に疑問点がまた湧いたのですが、
Releaseディレクトリ内にexe出力ファイルの階層を設定したのですが、今度は
プロジェクト直下(Releaseディレクトリの一つ上)のファイルを実行時に読めなくなりました。
どの階層をカレントディレクトリと見なすか、という指定をビルド構成として設定する事は
できないのでしょうか?
できる
>>733 具体的にはどの項目をいじれば良いんでしょう?
735 :
714 :2006/05/07(日) 18:20:45
>>728 >WIN32APPで作っても、VBの方が遥かに楽だし
これってVB6のこと?もう販売してないよね?
マニュアル読まない人マンセー
>>732 実際にどういう風にそのアプリを運用するんだ?
実行時には実行モジュールのある場所がカレントディレクトリである保証はないぞ。
IDE内から起動する場合についてはIDEの設定次第で変更できるし、
エクスプローラから直接起動する場合でもショートカットで変更できる。
>>735 >728の言うことはノイズと思ったほうがいい。
MFCにはMFCなりの長短所があるし、それは他の環境にもいえることだ。
>>731 目的がはっきりすれば、取るべき対策が決まるのではないか?
例えばVC8を使いたいのならば3の選択肢は有り得ないだろう。
>>737 レスありがとうございます。
とりあえずVC8使いたいので3はなしですね。
2を試してみましたが、4430は取れたんですけど、
ほかにもごろごろエラーは存在します(すべて
コンパイラのバージョン違いに起因するようなもの
です)
なので地道にpragma指定すればいつかは全部
とれそうなんですけど、MSはこういうのを想定して、
さくっと解決してくれる方法を提供してないんですかねぇ・・・
だめだ・・・・VB、C#やってきたが C++全然わからん・・・・ クラス宣言の仕方も、呼び出し方も、API使う方法も、 ていうか、ヘルプ・・・断片的な説明だけでわからん・・・ まったくの初心者から例えば電卓ソフトを作るまでの一貫したチュートリアル作ってくれよ・・・ 1週間たっても、Hellowしか打てないなんて・・・もうC++やめだ・・・
とっととやめてしまえ
電卓のGUI部分は簡単だな 中で計算する人が大変かも
イ`
743 :
デフォルトの名無しさん :2006/05/08(月) 13:46:50
>>739 そういわずに地道にやってけよ
最初はどんな作業でも混乱するし、わけわからんもんだし
CでもC++でもJAVAでもC#でもVBでも
本一冊読んですべてを理解できても使いこなせるなんて
わけ無いし。
諦めずに一歩ずつつ進みましょう。
趣旨は要するにチュートリアルが無くちゃヤダヤダってことだろ? おれも欲しい
C#できるならC++/CLIで練習すれば? 同じライブラリが使えるから文法の勉強に集中するにはよさそう
746 :
739 :2006/05/08(月) 16:56:39
>>745 >>744 >>743 どうも励ましありがとう。こんなやさしい人がいるとは
プログラマって根暗のキチガイしかいないと思ってたけど違うんですね
そうですねーいきなりAPIアプリってのが難しいんでしょうね
CLIなら初歩的な関数はヘルプみなくても書けるんでまずそこからのほうがいいですね
なんとなくわかってきたのが、frameworkなどの関数群に当たるのが
MFCだったりPratformSDKに含まれるAPI関数だったりするんですよね?
で、非MFCのAPIアプリを作る場合、API関数だけでイベント(メッセージ?)処理や
GUIへの操作をしなきゃだめってことかな?だとしたら、大変だな・・・
すいません。質問です。 Visual C++以外にも言えることなんですけど、Visual Studio 2005 Express Edition(無償) ではソフトの配布まで出来るのでしょうか? 本を買って読んでみたところアイコンファイル、画像ファイル作成、セットアッププロジェクトの作成は 出来ないと書いてあるのですが・・・どうなんでしょう
できる。 コンパイルしてできたexeを配布すればいい
そうですかーわかりました(*- -)(*_ _)ペコリ インストール形式では作れないということですね
>>749 販売もできるよ
アイコンエディタは標準ではついてないけど
あれで作る人もいないし、いらない機能
あと、インストール形式にもできるよ
そうなんですか!! 他のフリーソフトと組み合わせるってことですかね。
そこまで辿り着いたらまた質問させていただきます(*- -)(*_ _)ペコリ
754 :
デフォルトの名無しさん :2006/05/08(月) 20:01:49
Visual Studio 2005 Express Edition(無償)で コンパイルしてできたexe は .Net FrameWork2.0 がインストールされた環境でないと実効不可。
いいえ、それはトムです。
756 :
713 :2006/05/08(月) 22:15:30
>>729 ありがとうございます。一応ご指摘いただいた箇所はVC++の自動生成されたコードで満たされているようです。以下が完全なウィンドウプロシージャです。
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) {
int wmId, wmEvent; PAINTSTRUCT ps; HDC hdc;
INITCOMMONCONTROLSEX ic; // ← これが何か判らない
switch (message) {
case WM_COMMAND:
wmId = LOWORD(wParam); wmEvent = HIWORD(wParam);
// 選択されたメニューの解析 :
switch (wmId) {
case IDM_ABOUT: DialogBox(hInst, (LPCTSTR)IDD_ABOUTBOX, hWnd, (DLGPROC)About); break;
case IDM_EXIT: DestroyWindow(hWnd); break;
default: return DefWindowProc(hWnd, message, wParam, lParam);
}
break;
case WM_PAINT: hdc = BeginPaint(hWnd, &ps);
// TODO: 描画コードをここに追加してください...
EndPaint(hWnd, &ps); break;
case WM_DESTROY: PostQuitMessage(0); break;
case WM_CREATE:
ic.dwSize = sizeof(INITCOMMONCONTROLSEX); // ← 猫さんとこと同じ書き方で書いてみた
ic.dwICC = ICC_HOTKEY_CLASS;
InitCommonControlsEx(&ic); break;
case WM_HOTKEY: MessageBox(hWnd, "ホットキーが押されました!", "HOTKEY!", MB_OK); break;
default:
return DefWindowProc(hWnd, message, wParam, lParam);
}
return 0;
}
なぜ出来ないのかが本当にわからず、Webを探しても完全なサンプルが見つからず本屋で何冊も良いサンプルがないか立ち読みしたんですが解決には至っていません。
757 :
713 :2006/05/08(月) 22:16:51
756の書き込みですが、改行制限があるため、多少改行を減らしていて 見づらくなっています。すみません m(_ _)m
小規模ならVB 大規模ならVC とよく聞きますけど なぜなんでしょうか? VBで小規模を手軽に作れるなら大規模でも簡単に作れそうな気ガしますが
セロテープは小規模用 ガムテープは大規模用
小さいプログラムなら遅さが目立たないが 大きくなると無視できなくなる。
正直、名前空間が無い言語は大規模開発がキツイ
762 :
デフォルトの名無しさん :2006/05/09(火) 03:11:34
リソースを追加したていった時にIDを変えると新たに またそのIDに対して番号ふられるけど、元の番号を resource.hから削除していった方が良いんでしょうか それとも元のIDはIDで保存しとくべきなんでしょうか 追加してIDを変更して新たなIDをあてがっても番号 は衝突しなさそうなのですが、なんとなく無駄な気がします そこのところはどうなんでしょうか? 教えてほしいです。
#define だからEXEの容量は変わらない。 気になるなら好きにすればいい
dllにクラス記述しても使えないんでしたっけ?
んなこたー(ry
766 :
713 :2006/05/09(火) 10:15:57
WM_HOTKEY に制御が来ない理由がわかりました。 RegisterHotKey() の第一引数に渡している HWND が 対象としている HWND ではないのが原因でした。 以下のように書き換えたところ、とりあえずホットキーが取れました。 ---- static hWnd_parent; LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) { ... hWnd_parent = hWnd; DialogBox(hInst, (LPCTSTR)IDD_ABOUTBOX, hWnd, (DLGPROC)About); LRESULT CALLBACK About(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam) { static HWND hParent = GetParent(hDlg); ... // RegisterHotKey(hParent, IDC_HOTKEY1, uMod, uVirtual); // これだとうまくいかない RegisterHotKey(hWnd_parent, IDC_HOTKEY1, uMod, uVirtual); ---- GetParent(hDlg) で取れた hParent と DialogBox(hInst, (LPCTSTR)IDD_ABOUTBOX, hWnd, (DLGPROC)About) に渡した hWnd が違うモノなのがいまいちよく理解できていませんが、調べてわかったらまた報告します。
GetParentを2回呼べばよかったと思う
GW_OWNER だった
769 :
デフォルトの名無しさん :2006/05/09(火) 13:47:44
開発環境に .net 使い始めたのですが、ペイン間のフォーカス移動を行う ショートカットキーを教えてください。 Ctl+TABでソース間の移動はできるのですが、 ソースから出力結果のウィンドウへの移動が行えません。 もちろんマウス使えばできます。 ペインという用語は間違ってるかもしれません。よろしくです〜
772 :
769 :2006/05/09(火) 14:02:32
>>770 それ言い出したら、ショートカットキーとか、アクセスキー不要になりません?
>>771 それって、Ctr+Tabですよね、ソースウィンドウの切り替えしかできないんですけど;;
F6
VC6は可能だな
775 :
769 :2006/05/09(火) 14:42:32
>>773 ありがと〜
F6は無反応でしたが、Shift+AltF6で移動しました。
猫193章のHOTKEYだけど、できたよ。 ただし、リソースのプロパティでIDを MYMENU→"MYMENU" MYDLG→"MYDLG" に変えて。もちろんcomctl32.libはプロジェクトの設定でリンクさせる
それ知らないとはまる MAKEINTRESOURCEも使える
779 :
デフォルトの名無しさん :2006/05/10(水) 09:35:23
質問です。 あるクラスの実装などで、メモリーを確保した時、必ず後でメモリーを開放しなければいけないのでしょうか? また、開放するコードが必要なタイミングを教えて下さい。
状況による
サーバープログラムでもない限りメモリの開放など必要無い
うわ、変なの来た・・・
783 :
デフォルトの名無しさん :2006/05/10(水) 10:09:47
>780 C#や、VB.Netの場合、 スコープがクラスで確保する以外は開放するコードが不要で、コンパイラが自動でしてくれるらしいのですが、 C++の場合、実装コード自体、どのレベルで実装しているのかがイマイチ分からないんです。 全ての実装で最後に開放するコードを書くのは、全体のコードが長くなって大変で面倒。
>>783 自分で書く分に関しては、極力newやmalloc()を使わないようにし(標準コンテナを使う)、
もし使う場合は関数内で確保と解放を対にするかデストラクタで保証する。
C++で.NETアプリ作ってる奴って頭痛いと思うんですがどうですか?
ほっといてやれ
C#や、VB.Netの延長でろくに勉強しないで使うつもりなんだ
4日前から初めてC++のプログラミングの勉強を始めたんですが、 if文で躓きました。。 1900年〜2000年までの西暦を入力して元号(香A氏A潤A~)を 表示するプログラムを作れ。入力範囲を超える場合、「入力範囲を超えています。」 と表示。 という問題なのですが、どなたか教えていただきたいです。
4日でできると思うなボケ。
>>788 したいことを順番に、大体でいいから文章で書いてみよう。
たとえば
int main()
{
//変数の宣言
//西暦を入力
//もし、入力された数値が範囲を超えていたら
//「入力範囲を超えています」と表示
//そうでないなら
//元号がいつか調べる
//元号を表示
return 0;
}
こんな風にしてから、一つずつプログラムに書いていくと流れが分かりやすいよ。
if ( 条件 )
{
処理
}
もし、条件が合う時、処理をする。
宿題スレ行けば誰かやってくれるよ
>>720 UIしか担当できないやつでもC++を語るかw
VCはUIのためと断言できる境地はすごいと思います、これからも頑張ってください
元の質問がGUIの話だからな
794 :
デフォルトの名無しさん :2006/05/15(月) 00:05:06
テキストボックスである種の文字列を表示すると斜めに傾いて見えるのですが、 これをなんとかしてまっすぐに表示できませんか?
795 :
デフォルトの名無しさん :2006/05/15(月) 00:12:07
たとえばどんな文字列?
796 :
デフォルトの名無しさん :2006/05/15(月) 00:23:02
たとえばこういうのです↓ 非マナー非マナー非マナー非マナー非マナー非マナー 非マナー非マナー非マナー非マナー非マナー非マナー 非マナー非マナー非マナー非マナー非マナー非マナー ーナマ非ーナマ非ーナマ非ーナマ非ーナマ非ーナマ非 ーナマ非ーナマ非ーナマ非ーナマ非ーナマ非ーナマ非 ーナマ非ーナマ非ーナマ非ーナマ非ーナマ非ーナマ非 非マナー非マナー非マナー非マナー非マナー非マナー 非マナー非マナー非マナー非マナー非マナー非マナー 非マナー非マナー非マナー非マナー非マナー非マナー
VC++のアプリから標準のメーラを起動して、
凄く長い本文をつけられるような方法があれば教えてもらえませんでしょうか?
HINSTANCE hInst = ShellExecute(NULL, "open", "mailto:
[email protected] ?body=本文...", NULL, NULL, SW_SHOWNORMAL);
と今はしているのですが、これだとある程度文章が長くなると起動できなくなってしまうようでした。
よろしくお願いします。
798 :
デフォルトの名無しさん :2006/05/15(月) 00:58:48
visualC++で ネットワークプログラミングやってるんですが、 wininet 使ってinternetopen()関数やらを書いてみるとデバッグ エラー出るんです。。。 /////////////////////////////////////// 'InternetOpenW' : 1 番目の引数を 'const char [16]' から 'LPCWSTR' に変換できません。 /////////////////////////////////////// ってな感じです。
TCHARをきちんとハンドルするか、A関数を明示的に呼ぶか、 プロジェクトでUNICODEの設定を外せ
ネットワークプログラミングやっているなら、 マルチバイト文字とワイド文字については理解していた方がいいと思われ。
801 :
デフォルトの名無しさん :2006/05/15(月) 08:19:31
>>798 >>799 氏が指摘しているように、
#define UNICDE
もしくは
#define _UNICDE
がどっかで定義してある。
#define MBCS
に変更しる
VC.net2003で、以下のコードを実行するとAを通らず、Bを通ってしまいます。 何故でしょう。 #define TEST #define TEST_DEF defined(TEST) #if TEST_DEF // A #else // B #endif
何故ってそのまんまじゃん。
804 :
802 :2006/05/15(月) 14:13:46
>> 803 TESTが定義されているから、TEST_DEFは真になる。 TEST_DEFが真なら Aを通る、と思ったのですが、Bを通ります。 試しに #if defined(TEST) と書き換えると、ちゃんと Aを通ります。
>>804 #define TEST_DEF defined(TEST)
#define TEST
と逆にすればAになるから
#define TEST_DEF defined(TEST)
が
#define TEST_DEF defined()
と評価されているらしい。
g++だと逆にしなくてもAになる。どっちが標準なのかは知らないが評価順序の違いじゃね。
#ifでマクロ展開してdefinedが出てきたときの動作は未定義っぽぃな。
807 :
802 :2006/05/15(月) 14:57:01
素早い回答ありがとうございます。 >> 805 なるほど。 調べてみたらたしかに「#ifなどの条件付き取り込みの評価に先だって、 置換処理によって definedが生成される場合は動作は未定義」(X3014 16.1.4) とありました。 >> 804 未定義だから、なんでしょうね。
808 :
デフォルトの名無しさん :2006/05/16(火) 00:08:40
UNICODEの設定はずしてみたら今度は、 C:\WINDOWS\system32\ntdll.dll' を読み込みました。シンボルが読み込まれていません。 というのがやたらでます・・・
それはエラーではない
810 :
デフォルトの名無しさん :2006/05/16(火) 20:20:39
age
インクリメンタルリンクって何ですかね? ぐぐるとエラー解決法とかは出てくるんですが 意味見たいのがなかなか見当たらなくて困ってます
812 :
デフォルトの名無しさん :2006/05/16(火) 21:02:56
以下のような感じでsystem()関数を使って、my.exeという別のプログラムをループで繰り返しています。 param.txtファイルの中身は、毎回変わります。 int main() { for(i=1 ; i<=10 ; i++){ param.txtファイルの作成をこのあたりで行う; system("my.exe param.txt"); } } その場合、不正なparam.txtファイルを与えると、my.exeがエラーして "問題が発生したため、my.exe を 終了します" というポップアップウインドウが開くのですが、それを出さずに、エラーしたとしても無視して 引き続き次のループを実行したいのですが、可能でしょうか? つまり、何十時間もかかるようなループを自動で実行している時に、エラーで中断させたくないのです。 アドバイスよろしくお願いします。
>>812 my.exeの実行に時間が掛かるのでなければ、
CreateProcess()を使って並行動作させてしまえばいい。
どれかのmy.exeが落ちたとしても、そのプログラムは
動作しつづけられる。
#それよりも何よりも、不正なparam.txtを作らないとか、my.exeを修正するのが常道だが。
for 〜 if (ファイルオープン 失敗) { 失敗処理 continue; } 〜 }
815 :
デフォルトの名無しさん :2006/05/16(火) 21:38:59
みなさんアドバイス ありがとうございます。 my.exeは、ある種のシミュレーションプログラムで、 メモリもCPUリソースもたくさん消費するので、複数同時に実行させることはできないのです。 また、一回の計算(例えばi=1のとき)で、数時間かかるので、10回計算させるには数十時間かかります。 また、param.txtファイルに関しては、シミュレーションの初期設定のような感じの情報が 記述されていますが、内容が正しくても数時間の計算で途中でエラーしてしまうことがあるんです。 さらにそのmy.exeは、他の人が作っているプログラムなので、私が自由に変更できないんです。 そういういろいろな制約がありますので、とにかくポップアップウインドウを出さずに エラーしてもしなくても、最後まで連続で計算させたいのですが。
818 :
デフォルトの名無しさん :2006/05/16(火) 22:36:38
817さん 情報ありがとうございます。大変参考になります。 でもちょっと気がかりなのは、最後のほうに書かれている なお[重大なエラーが発生した場合は通知する]チェック・ボックスをオフにしたときでも、 Visual Studioなどの開発ツールをインストールしている場合は、以下のようなエラー通知 ダイアログが表示される。 とありますので、別のポップアップが開くようですね。困った。
配布された課題に、クラスの中で class ABC { public: ABC() : mr_d(NULL) { } ~ABC() { } て記述があるんですが5行目の:が1日かけて調べてもわかりません コンストラクタでmr_dを初期化してるように思うんですが 参考書では ABC(){mr_d=NULL;} という書き方しか載っていないんです.こういう書き方も存在すると考えていいんでしょうか? 他に同じように":"を用いる書き方ってありますか? 教えてください><
>>820 猫でも(ryかWisdomSoftに行け。
禿本買えよ。
823 :
820 :2006/05/16(火) 23:25:02
824 :
デフォルトの名無しさん :2006/05/16(火) 23:29:12
819さん ありがとうございます。 レジストリを変更する以外に方法はないでしょうか? わたしのPCであればそれで解決なのですが、他人のPCや、 お客さんのPCでも実行したいので、レジストリ変更の方法は 避けたいです。 よろしく。
CreateProcess使うとか偽DLL使うとかして、my.exeにInjectionさせて VectoredExceptionHandlerでも導入する手はどうか。
エラーレポートダイアログをポーリングで探して、検出したら 「はい」「いいえ」をソフトで押すアプリを作る手もあるな
タイムアウトを設定して、経過したらTerminateProcessしてしまうとか。
わかった、そのダイアログのボタン押し要員を確保すればいいんだよ。
829 :
デフォルトの名無しさん :2006/05/16(火) 23:50:41
825さん ありがとうございます。 実はCreateProcess()の方法でもトライしてみたのですが、エラーが発生すると やはりポップアップダイアログが表示されてしまうのですが。 それともCreateProcess()関数のパラメータの与え方を工夫すると、 ポップアップ表示を無効にできますか?
要するに他人が作ったプログラムを実行した時にエラーを出さないようにしたいということか どう考えてもVCと関係があるとは思えないな いいかげんにしてほしいものだ
しかしお粗末だな systemで他のプログラム呼んでるだけだぞ
833 :
デフォルトの名無しさん :2006/05/17(水) 00:46:58
831さん ありがとうございます。教えていただいたHP、 難しくて、よく理解できませんが勉強してみます。 でも本当はWindowsのVCとLinuxのgccの両方でコンパイルしたいので system()で簡単にできればと思っているのですが。無理のようですね。
834 :
デフォルトの名無しさん :2006/05/17(水) 03:53:53
VC++.netでサンプルプログラムをいじっているのですが、 cppファイルやrcファイルを変更しても反映されません。 ビルドしてコンパイルして起動すると最初のままです。 どうしてなのでしょうか。 パスの違いなどではないっぽいんですが。
もしやサンプルのソース或いはディレクトリなどがR/Oだったりしないだろうな。
836 :
デフォルトの名無しさん :2006/05/20(土) 10:21:31
Visual Studio 2005 Standard Editionをインストールしたのですが、コマンドプロンプトで cl.exeを実行しようとすると、「cl.exe - コンポーネントが見つかりません」 とエラーが出ます。「mspdb80.dllが見つからなかったため、このアプリケーションを 開始できませんでした。アプリケーションをインストールし直すとこの問題は 解決される場合があります。」と言っているのですが、他のマシンにインストールしても 同じエラーが出ます。実際には以下のフォルダに存在しているのですが… C:\Program Files\Microsoft Visual Studio 8\Common7\IDE C:\Program Files\Microsoft Visual Studio 8\VC\bin\amd64 環境変数はPATHにC:\Program Files\Microsoft Visual Studio 8\VC\binを加えた だけなのですが、他にも環境変数の設定が必要、ということなんでしょうか? ちなみに、Visual Studio上ではclは実行できています。
>>836 スタートメニューのプログラム→Visual C++ 2005 Express Edtion→Visual Studio Tools→Visual Studio 2005 コマンドプロンプト
vcvars32.bat
VC++(6.0)をさわり始めてみたのだがこれはこれでなかなか面白いな。 コントロールとか使う前にClassWizardでソースに追加しなきゃいけないのが、しばしわからなくていろいろやっててやっとわかった程度。 あの追加するときの種類で「コントロール」「値」はいいんだけど「Value」ってなんだ? ちなみに値って参照するだけ用なんだな。
ひとりごと
842 :
836 :2006/05/21(日) 08:51:41
どうもありがとうございました。大変助かります。
843 :
デフォルトの名無しさん :2006/05/21(日) 10:58:19
いえいえ、どういたしまして^^
すいません、VisualC++やろうと思うんですが、本によると「Microsoft Visual C++6」 というのがないと出来ないそうなので、Micrlsoftからそれをダウンロードして インストールしたんですが、プログラムの中に入ってないみたいで、学習できません。 どうすればいいでしょうか? すまんが上げさせてもらいます
煽る気も起きない
ツリじゃありません。おながいします
最近の釣りはレベル低いな
いやつーか、今色々ググってるんですが、見つかりません おながいですから、VisualC++がどうやったら出来るか教えてください
ここは初心者スレじゃないですか? おまえら態度悪いな、おまえらには聞いてねーよ。 親切な人教えてください。
答え:買う
854 :
デフォルトの名無しさん :2006/05/22(月) 21:41:25
お願いします。 VC++.NETで、 class abcd { 〜〜〜 } abcd.(エー、ビー、シー、ディー、ドット) ってやった時に、 今まではポップアップでクラスのメンバが選べたのですが、 急にポップアップがでなくなりました。 元に戻す方法を教えてください。
855 :
854 :2006/05/22(月) 21:44:00
すみません、焦りすぎました。 class ABCD { 〜〜〜 }; ABCD abcd; abcd. とりあえず今までは正常に動いてたということを前提でお願いします。
>>855 可能性は2つある。
1)***.ncbが壊れた
この場合そのプロジェクトのフォルダーにある***.ncbを削除すれば復活する
2)コードの途中で不注意に終わるべきものが終わってない場合
例
printf(" ajoasoa);
abcd.←ここでは上の引用符が閉じてないのでインテリ扇子は動作しない。
改行コードを'0A'でファイルを作る方法を教えてください。 printf("%s\n" , "123"); とすると改行コードが'0D0A'になってしまいます。
>>857 バイナリモードでファイルを開く。
stdoutに対してもfreopenが使えるから、
printfでも\nを\n(0A)として出力させるようにはできる。
859 :
857 :2006/05/23(火) 03:54:34
>>858 ありがとうございます。さっそく試してみます。
860 :
855 :2006/05/23(火) 06:53:47
>>856 おはようございます。
1の方法で治りました、ありがとうございましたー。
\fだか\rだかでよくね?
\rは0D
printf("%s%c" , "123", 0x0A); はどう?
なぜテキストモードとバイナリモードがあるか考えてみれ
865 :
デフォルトの名無しさん :2006/05/23(火) 10:48:11
VisualStudio6.0のリソースエディタで、ダイアログボックスにボタンなどをはりつけようとしたところ コントロール一覧のウインドウが表示されなくなっていました。 どうやればまた表示できますでしょうか。
>863 テキストモードでの 0A -> 0D 0A変換が、いったいどこで行われるのかを 気にかけるべきだと思うが。
868 :
857 :2006/05/23(火) 21:44:54
int result; result = _setmode( _fileno( stdin ), _O_BINARY ); とopenする前にしてみたんですが、result に-1が返ってきて バイナリモードに変換できません。どうしてでしょうか。
stdinだから
870 :
857 :2006/05/23(火) 21:49:00
>>869 あ、間違えました。stdoutもstdinも両方やってみましたが同じでした。
872 :
857 :2006/05/24(水) 01:21:01
>>871 freopenをする前に
result = _setmode( _fileno( stdout ), _O_BINARY );
するということではないのでしょうか?
外部ライブラリを利用しているのですが、デバッグでのビルドは成功するのに、 リリースでビルドしようとすると、外部ライブラリのシンボルが片っ端から 未解決になります。 プロジェクトの設定はデバッグ・リリース共同じなのですが。
デバッグとリリースはライブラリが別
>>872 freopen()の説明を読んだ?
読んだ上でそんな戯言を抜かすのなら阿呆だ。
#尤も、MSDNのfreopen()の項のサンプルは間抜けだが。
877 :
857 :2006/05/24(水) 23:58:01
>>876 setmodeはopenした後だったようですね。
fmodeでやってできました。ありがとうございます。
>>877 freopenでバイナリモード指定すりゃ済む話だろ。
コードの最適化って何?どうやって設定するの?
880 :
879 :2006/05/25(木) 19:46:17
VC2005EEで
>>879 Releaseビルドすれば最適化機能が有効になる。
おいおい
883 :
デフォルトの名無しさん :2006/05/25(木) 23:12:08
くだらない質問で恐縮なんですが・・・ TCHAR とかの T って何の略ですか?
ワイド文字とマルチバイト文字の自動切換え、でいいのかな >>TCHAR
885 :
884 :2006/05/25(木) 23:27:49
すまん。質問の意味が違ったか。 ヌルーしてくれ。
886 :
883 :2006/05/25(木) 23:51:57
実は思ったきっかけが、 例えば _tcscpy_s などは T Char String CoPY Safe(?) などと推測しているのですが、 _tsprintf_s には 'c' がないので何でかなーって思ったのです。
>>886 _tcscpy_sはそんな感じだと思う。
_stprintf_sのほうははワイド文字版の関数がswprintf_sだから、
それに合わせてcがないと思えばいいと思う。
_tcs/wcs〜となっているものはchar版がstr〜という名前になっている。
888 :
857 :2006/05/26(金) 01:39:37
>>878 そうでした。wb指定でできました。ありがとうございます。
だから>871からずっとそう指摘してきているのに…… なんでMSDNを読めといわれてさえ理解できないのだろう……_/ ̄|○
Win32コンソールアプリケーションでCstringを使いたいのですが ヘルプに書いてあったafx.hをインクルードしても使えませんが 何が原因でしょうか?
初心者な質問で恐縮ですが main() { }
>>891 は間違いです、途中で送信してしまいました(;´Д`)
main()内で生成されたインスタンスを別のクラス内などで使いたい場合は
どのような手段が有効なのでしょうか?
これは酷い・・・
895 :
デフォルトの名無しさん :2006/05/26(金) 20:28:00
コンソールアプリケーションを作ると press any key continue って文字が出てくるんですけど消す方法は無いのでしょうか?
>>895 コマンドプロンプトから実行したりEXEのアイコンをダブルクリックして実行したりすれば表示されない。
897 :
895 :2006/05/26(金) 23:05:43
898 :
895 :2006/05/26(金) 23:49:59
あと、もうひとつお聞きしたいんですが、 VCだとsystem関数は使えないんですか? なんか"error C2065: 'system' : 定義されていない識別子です。"ってでるんですが・・・ 画面をリセットさせたいんですけど・・・ DOSだと、" system("cls") "でできますよね? VC++でのやり方を教えて下さい(><)
899 :
895 :2006/05/26(金) 23:54:39
あわわ・・・ <stdlib.h>をインクルードし忘れてただけみたいでした・・・ どうもすみません(><)
900 :
デフォルトの名無しさん :2006/05/27(土) 00:02:47
>>898 WriteConsoleOutputを利用するんじゃなかったけ?
901 :
895 :2006/05/27(土) 08:06:35
>>898 WriteConsoleOutputとは何でしょう?
プログラム初心者なもので・・・
902 :
895 :2006/05/27(土) 08:07:38
うわw
間違えました・・
>>900 さんへのレスですw
>>901 API
Console Functionsで調べると解る
2003から2005に変えたらプログラムが動かなくなりました。 どうすれば直るのですか?
2003に戻す。
907 :
デフォルトの名無しさん :2006/05/27(土) 20:15:19
環境を別PCに移行したいのですが、文字色とかの設定をそのまま移行する方法はありませんか? それらしきファイルも見つからなかったのですが、手動で設定するしかないのでしょうか?
書き忘れました。VC++6です
909 :
907 :2006/05/28(日) 02:05:45
よく考えたらあんまカスタマイズしてなく、 設定に1分もかからないので手動でやりました(´・ω・`)
cout を使うときって、書式を指定するのが面倒くさいですよね。 GUIベースだとcout自体あまり使う機会は無いと思うのですが、 どうしても、というときはsprintf(foo,
>>910 つBoost.Format, (ATL::)CStringT::Format
VC++ 2005 Expless & PSDK でプログラミングしようかと思うのですが、 基本的なことを学習するのに良いサイトをお教え願います。
猫
犬
基本的な考えが間違ってる
916 :
デフォルトの名無しさん :2006/05/28(日) 20:43:34
917 :
905 :2006/05/28(日) 20:53:43
ヘッダ−をどう書き換えれば動くようになるのでしょうか? どう修正してよいか分かりません。
普通に作ってればそのままビルドすれば動くはず
919 :
905 :2006/05/28(日) 21:06:28
>>918 動かないから言ってるんですが。無責任なことを言わないで下さい。
>>905 そもそも何がどう動かないのか書いてくれないと手助けのしようも無い。
>>922 ほっとけ。質問の仕方も分からんやつはこのスレに来る資格は無い。
924 :
910 :2006/05/28(日) 22:57:53
>>911 サンクス。
朝書き込む途中でハングしたようで、半端に書き込まれてしまった…。
925 :
917 :2006/05/29(月) 11:48:51
>>919 がID無し板名物のなりすましか…
本物の917です、winnt.hの220行目修正したら動きました。
typfef void * PVOID,* POINTER_64;
を
typfef void * PVOID;typfef void * POINTER_64;
にしたら直りました。
質問の仕方が悪くてすみませんでした。
winnt.hを修正してしまう池沼
本物の方が斜め上を行っている罠
928 :
925 :2006/05/30(火) 22:25:12
まあ、エラーはヘッダーに出てたし、動かないと困るし。 未だに正しい修正方法探してるけど見付からないし。 まぁ今の所異常は出てないから暫くは平気でしょ、多分。
池沼はこれだから困るな。 どうせヘッダーファイルの検索順が変わったとかそういうことだろ。
>>925 好きに直してつかえ
929とかはタダのチキンなカス
>>928 POINTER_64でググったら、<windows.h>をインクルードする前に
#define POINTER64 __ptr64と書けばよいという話が見つかるが。
これが超初心者クオリティか・・・カスばっかだなwwwwww
超初心者スレにクオリティ求めるなよw
wwwwww wが多いやつにまともなやつはいない
みさくら誤変換機にかけてみた wwwwww wが多いぃやちゅにまともにゃやちゅはひぃにゃいぃのぉおお
みしゃくら誤変換機にかけてみたのぉおぉぉ゙お゙ッッーッvv、お゙お゙ーーっッvv なんだよこれはwwwwwwwwwww
VC++6で、あるファイルの更新日時を取得する一番楽な方法はどうすればいいでyそうか? GetFileTimeだと難しそうなのですが。
じゃあ、GetFileAttributesEx
VC++で使える画像形式を変換するライブラリを探しています。 メジャーで良い感じのってなんですか? jpg とか gif から raw RGB565 に変換したいです。
すみません,お伺いします. 通常のC++/MFCでプログラムしているのですが. その時にクラス構成などをXMLで出力したいと思ったとき XmlSerializerを使えば出来ると聞いたのですが. MFCとの共存が出来るのでしょうか もしくはXML出力だけDLLにした場合 C++/MFCのアプリから参照できるのでしょうか? どなたかお願いいたします.
942 :
55 :2006/06/07(水) 16:22:21
他の人が別なプラットフォームでつくったCのコードとMakefileから ビルドしようとしています。このMakefileを見たところ、mfcuia32.libが リンクに必要なようなのですが、私の環境(XP SP2+Visual Studio 2005 Standard Edition)ではこのファイルが存在しません。 このファイルは、XPのファイルでしょうか?それともVisual Studioのもの? デフォルトではインストールされず、何かインストール時にオプションを 選択せねばならなかったのでしょうか? Visual C++の質問じゃないような気もしますが、よろしくお願いします。
作った人に聞け
>>942 mfcuia32.libはVC6のLibには含まれてる。
Exports
ordinal name
1 _OleUIAddVerbMenu@36
8 _OleUIBusy@4
2 _OleUICanConvertOrActivateAs@12
6 _OleUIChangeIcon@4
7 _OleUIConvert@4
5 _OleUIEditLinks@4
3 _OleUIInsertObject@4
4 _OleUIPasteSpecial@4
10 _OleUIPromptUser
9 _OleUIUpdateLinks@16
945 :
942 :2006/06/07(水) 22:55:24
>>943 ごもっとも…
>>944 なるほど、VCのバージョンの違いによるものなんですかね…
さてどうするか。VC6をどうにかして手に入れるか…
OleDlg.libはどうよ?
ライブラリが何だか理解してるんだろうか? ライブラリ自体の名前はたいした意味はない。
listviewから派生したクラスのOnInitialUpdate()にコードを追加したのですが、 なぜかC1001エラーが出てコンパイルできません。 追加したコードをコメントアウトしても同様です。 hoge\foolistview.cpp(63): fatal error C1001: コンパイラで内部エラーが発生しました。 (コンパイラ ファイル 'msc1.cpp'、行 1392) コード追加直前までコンパイルできていたので、オプションは関係ないはずです。 何がまずいのでしょうか?
取り敢えずリビルドしてみたら。
>>949 リビルドしたら動きました。サンクス。
もうなにがなんだか…。
951 :
942 :2006/06/08(木) 15:33:07
>>946-947 すみません、ちゃんと理解してないと思います。
「あらかじめコンパイルされた関数群」程度の認識です。
952 :
デフォルトの名無しさん :2006/06/08(木) 17:48:47
CString ss = _T("ABC"); TRACE(_T("Data = %s\n"), ss); これを、Unicodeビルドでやると、結果が "Data = " になってしまいます。マルチバイトビルドだと上手くいきます。 Unicodeビルドで上記の様なTRACEをやりたい場合、どのように記述すれば良いのですか?
適当に%Sとか答えてみる。
>>953 "Data = A"
となりました・・・
>>952 適当にTRACE(_T("Data = %s\n"), static_cast<PCTSTR>(ss));
956 :
952 :2006/06/08(木) 18:31:24
VC++での構造についての質問です。 VC++ではドキュメントとビューのクラスを用いてプログラムしますよね。 データを管理するクラスA、ビューのクラスB、ドキュメントのクラスCが あるとすると、UIのイベントが発生して、データを変更する必要が生じた 場合、このAのメンバ関数を呼び出すのは、Cから呼び出すのが一般的だと 解釈して良いのでしょうか。 Bのクラスが直接Aのメンバ関数を呼び出すような形だと、Bのイベント処理 部分は、Aの実装に深く依存してしまいます。 (ただし小さいプログラムならば、これでもいいのでしょうが) UI(イベント)→B→C→Aみたいな順で処理が進むのが理想だと思うのですが。 Cはちょうどフックというか、緩衝になりますね。
>VC++ではドキュメントとビューのクラスを用いてプログラムしますよね。 いいえ、そうプログラムするのはあなたの勝手ですが、VC++にそんな制限はありません。
>>957 俺はBとCの間にも緩衝をいれることがよくある
UI→B→イベント仲介者→C→A
仲介者(Mediator)にはAppクラスを使うのがお手軽
>>958 言葉がたりませんでしたか。MFCを使うならば、といえばOK?
>>959 レスサンクス。
B-C間でイベントを仲介させるのはC→Aの処理の実装方法と何か関係が
ありますか?
Cの実装部分を変えれば、他のアプリに使いまわせるとか、そういう
概念でしょうか?
>>960 B-C間に仲介があると、ひとつのドキュメントに対して複数のビューが欲しいときに楽になる
からかと。
962 :
959 :2006/06/09(金) 13:31:36
いやC→Aをうまく実装してAを隠蔽できればそれでオッケー。
>>959 は、そのあとのBとCの結合に関する話です。
>>961 それそれ
>>961-962 おお、そうですね。
Aの変更が複数のビューにまたがって影響を及ぼす場合があるなら、
Cに処理を移す前に、1つのイベントで複数の処理に対処しなければ
ならない、ということですね。
ありがとうございます。
環境:WinXpHome VC++6.0 下記のような、ワード等のファイルを関連付けされたアプリで開いた後、 CTRL+A→CTRL+Cを行い、クリップボード内のテキストを取得しようとしたのですが、クリップボード内に入っていませんでした。 keybd_eventがファイル起動完了より先に来てしまうのが原因なのでしょうか? だとしたら、どう修正すれば良いのでしょうか? SHELLEXECUTEINFO shelli; ZeroMemory(&shelli,sizeof(SHELLEXECUTEINFO)); //SHELLEXECUTEINFO構造体に変数を展開。 shelli.cbSize = sizeof(SHELLEXECUTEINFO); shelli.fMask = SEE_MASK_FLAG_NO_UI | SEE_MASK_FLAG_DDEWAIT; shelli.hwnd = m_hWnd; shelli.lpVerb = _T("open"); shelli.lpFile = gFilePath;///ワードのパスを格納 shelli.lpParameters = NULL; shelli.lpDirectory = NULL; shelli.nShow = SW_HIDE; ShellExecuteEx(&shelli);//実行 keybd_event(VK_CONTROL, 0, 0, 0); keybd_event('A', 0, 0, 0); keybd_event('A', 0, KEYEVENTF_KEYUP, 0); keybd_event(VK_CONTROL, 0, KEYEVENTF_KEYUP, 0); keybd_event(VK_CONTROL, 0, 0, 0); keybd_event('C', 0, 0, 0); keybd_event('C', 0, KEYEVENTF_KEYUP, 0); keybd_event(VK_CONTROL, 0, KEYEVENTF_KEYUP, 0); //クリップボード内テキスト取得処理 (省略)
965 :
デフォルトの名無しさん :2006/06/09(金) 16:09:14
MFCで自作で簡易HTMLレンダリングエンジンって出来ませんか???????
できますよ
967 :
デフォルトの名無しさん :2006/06/09(金) 16:14:29
教えてくだされ!!!! 御願いします.>>
HTMLをテキストに変換 テキストを描画
969 :
デフォルトの名無しさん :2006/06/09(金) 16:33:53
ありがとう御座います 詳しく教えてください!!! 御願いします(泣)
971 :
デフォルトの名無しさん :2006/06/09(金) 16:54:01
>>970 ネタ・・・・
ジャ無いっすよう〜(T_T)
HTMLを読み込む、<BR>タグを改行に、その他のタグを消去、 エディットコントロールに貼り付けてはいおーしまい。 とか、言われても知らんぞ
まずはウィンドウに"Hello, world!"と表示するプログラムを作れ。 話はそれからだ。
974 :
デフォルトの名無しさん :2006/06/09(金) 20:43:55
VC++ 2005のリソースエディタでボタンやテキストボックスなどを 正確に(かっこよく?)配置する方法はありませんか? イメージとしてはC#のような。
975 :
デフォルトの名無しさん :2006/06/09(金) 22:53:46
dialogを教科書通りの方法で作成したのですが、 いざ、フォーム中のボタンなどを右クリックしてClassWisardを起動し、新規クラスの追加をしようとすると、 「クラス"○○"のファイル(C:\Documents ....)を開けません。」 と表示され、結局追加されません。 一応、cppとhファイルは作成されているようなのですが、ClassWisardには追加されていないので、 メンバ変数の設定なども出来ず、困っています。 このような場合、どのようにすればいいのでしょうか。ご教授をお願いします。
なぞなぞは苦手なんだな
977 :
デフォルトの名無しさん :2006/06/10(土) 19:15:04
大学でVC++とセンサつかってゲームつくる授業がでた 面白そうだと思って色々妄想膨らましてたけど いざ授業にでてみたら・・・ Visual C++ 1.5.1 何コレ・・・orz これって画像とか使えるの?・・・
DLLから関数を呼ぶとき_declspecを使う方法とDEFファイル使う場合があると思うが、 おまえらはどっち使ってる? もしくは、どう使い分けてる?
>>977 昔のバージョンの方がapi少ないしソースも短くて読みやすいし
ドキュメントもしっかりしてて学習には向いてる。
今では入手困難なプレミアムつきのバージョンだな。
でも、もしWin16だったら、それはそれで面倒事が多い気がする。
スレ梅に質問いいです? CPU情報を表示するソフトを作りたいのですが CrusoeのCPUが判定できる 外部DLLってありますか?
982 :
デフォルトの名無しさん :2006/06/12(月) 16:52:36
.netを使えばポトペタで作成できると聞いたのですが、 アプリケーションの実行速度はどうですか?javaと似たようなものですか? javaはあのもっさり感が何ともいえない。
>>982 .NETでポトペタはC#向きJAVAと比べるのもC#
俺はJavaほどのもっさりはないと感じている。
うめとこ
1
2
3
4
ご`ヽ、 ら,り⌒\ / ノ ゙ヽ { /`Y´ _) ヽ'^) >. )
6
7
8
9
996 :
デフォルトの名無しさん :2006/06/14(水) 16:23:19
あげといてやるよ
あ
ほ
999 :
デフォルトの名無しさん :2006/06/14(水) 16:27:07
で
す
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。