トップページ⇒tech
987コメント318KB

□□□VC 初心者質問スレ 2□□□

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさんNGNG
□□□VC++初心者質問スレ□□□
http://piza.2ch.net/test/read.cgi?bbs=tech&key=984812029
0153151NGNG
>>152さん

さっそくのお返事どうもありがとうございます。
初期化。。。
やってみます。
0154デフォルトの名無しさんNGNG
意味わから〜〜〜〜〜〜ん。
ねえ、DVDを作りたいのー。
誰か、相談乗って★
0155デフォルトの名無しさんNGNG
>>151

ポインタだけで実体がないのでは。
FuncB() 呼ぶ前に CA の実体できてる?
0156151NGNG
>>155さん
ご指摘どおり実体がありませんでした。
本当にどうもありがとうございました。
0157デフォルトの名無しさんNGNG
#include <stdio.h>
int main(void)
{
for(;;) printf("\t\b\b\b");
return 0;
}
すいません、Windows2000でどうしてもこのプログラムが
動かないんですけど、よくわかりません…誰か助けて…
0158競れ損 ◆mQ/jMyIo NGNG
>>157
何がしたいのかよくわかりませんが。
ネタ?
0159157NGNG
>>158
問題のあるコードだけを抜き出して、簡略化したものです。
実際はもっと複雑です。

これでは何も表示されないはずなんですが、私のWindows2000では、
動かないんです、試してみてください。

どうかご助言を。
0160デフォルトの名無しさんNGNG
>>159
動かない、とは具体的にどういった状態を示すのか説明しろ。
0161デフォルトの名無しさんNGNG
>159
いや、試したけどきちんと動作するぞ。ブルーサンダーが(藁
0162デフォルトの名無しさん NGNG
>>157
見たところコンソールアプリのようですが、なにも表示しないコンソールアプリを
Win2000で実行させてプログラムが動いたか動いてないかをどうやって判断しているのですか?

>>157はfor(;;)で無限ループになっているので動きっぱなしで終了しないように見えますが? 
0163 ◆yjzZLKY2 NGNG
はぁ・・・
0164デフォルトの名無しさん NGNG
>>163
昼飯喰って元気出せ
0165デフォルトの名無しさんNGNG
>>157 のソース
OS ごとオチタ…。症状言ってないトコ見る限りネタだと思われ。
要するに、タブの後にバックスペース 3 個でシステムの使ってる領域壊しに行ってるんだと思う。
実行しちゃダメだよ。
0166デフォルトの名無しさんNGNG
>157のソース
NT系OSのコンソールの問題らしいfj.os.ms-windows.programmingで
話題になってるとのこと(まだ見に行ってない)
\tよりも多い量の\bで打ち消すとOSが飛ぶらしい
0167デフォルトの名無しさん NGNG
>>157
よくがんばった、感動した!でも2度と来んなよ!
0168デフォルトの名無しさんNGNG
プログラムの勉強をしてみようと思いVC++6,0を購入してしまったんですが
全くのプログラム初心者で買った教本もCが前提?になっていてよくわからなくて
プログラムの出来るらしいネットの知り合いに聞いてみたら
BASICもCも全くわからない初心者がVC++は無謀だと言われたんです(涙)
独学でプログラム初心者がVC++を学ぶのに良いサイトや本をご教授願えませんでしょうか。
0169デフォルトの名無しさんNGNG
>>168
MSDNのScribleチュートリアル
0170???NGNG
最初はCかC++で
プログラミングの勉強を
した方がいいよ。
BCCコンパイラー無料だし。
0171デフォルトの名無しさんNGNG
>>170
VC 持ってるなら、VC でコンソールアプリ書いて勉強すればよし。なんでわざわざ BCC を
勧めるのか謎だ。
0172168NGNG
とりあえずはC言語の勉強から始めなければいけないみたいですね。
MSDNのScribleチュートリアルは実行してみましたが
MSDN自体がC++修得済みのWINDOWSプログラミングのヘルプ集みたいなんできついですわ。

勉強する方法としてはC言語を勉強>C++修得>MSDNで学ぶっていう感じなのでしょうか?
0173デフォルトの名無しさんNGNG
C++からでもいいんじゃない?
0174168NGNG
初心者がC++を最初から学ぶみたいな本ってあるんでしょうか?
C言語を学ばないで直でいけます???
0175デフォルトの名無しさん NGNG
>>174
いけるさ、頑張れば。っていうかいきなりVC++でもなんとかなる。
日経BP社の「VisualC++5.0 3週間完全マスター」を薦めるよ。
同シリーズでVC++6.0のもあるけどこれは入門書としては不適。
0176.NGNG
>>168
個人的には、文法だけでも普通のCをきっちりとやってからの方がいいと思う。
LSI-Cも無料だからこれで十分。
0177デフォルトの名無しさんNGNG
>>176
VC 持ってるなら、VC でコンソールアプリ書いて勉強すればよし。なんでわざわざ LSI-C を
勧めるのか謎だ。
0178デフォルトの名無しさんNGNG
>>168
猫でもわかる・・・を検索せよ
0179.NGNG
>>177
どうもANSI準拠のCはコマンドラインからというイメージがあるんで。
makeとかも覚えられるし。
それにVC重い。
0180デフォルトの名無しさんNGNG
>>179
VCにもnmakeあるし、コマンドラインから使えるぞ
それに、いまどきVC重いってどんな環境だよ(藁

あと、ココのすれタイトル参照
0181デフォルトの名無しさんNGNG
VCってコマンドラインからmakeできるの?
0182.NGNG
どっちにしろ、メモリはそれなりに食うでしょ。
ANSIの小さなプログラムくむのにVCを立ち上げるのも気がひける。

>ココのすれタイトル参照
なんでもかんでもVCでやらなきゃいけないスレなのか?ここは
0183デフォルトの名無しさんNGNG
メモリをそれなりに喰うってどんな環境だよ
いまどき64Mしか積んでないとか言うわけでもないだろ
0184.NGNG
>>183
PIII-1Gで256M、Win98SE。
Win9xが悪いって言われそうだけど、IF-SEGAのドライバが
W2Kでないため(w移行してない。

V30のHDDなしの頃からやってるんで、VC(VS)立ち上げるのはやぱ抵抗がある。
0185デフォルトの名無しさんNGNG
最初の一歩。

(1)VC立ち上げる
 ↓
(2)メニューバー[ファイル(F)]の[新規作成(N)]選択
 ↓
(3)新規作成ダイアログがひらくので
 [プロジェクト]タブの[Win32 Console Applicaton]選択。
 右側の[位置(C)]で開発用に使いたいディレクトリを選択して、
 その上の[プロジェクト名(N)]を入力。
 [OK]ボタンを押す。
 ↓
(4)Win32 Console Applicaton - ステプ1/1 ダイアログがひらくので
 ラジオボタンの[空のプロジェクト(E)]を選択。
 [終了(F])]ボタン押す。
 ↓
(5)新規プロジェクト情報ダイアログがひらくので
 そのまま[OK]ボタン押す
 ↓
(6)メニューバー[ファイル(F)]の[新規作成(N)]選択
 ↓
(7)新規作成ダイアログがひらくので
 [ファイル]タブの[C++ソースファイル]を選択。
 右側の[ファイル名(N)]に適当な名前を入れる(拡張子はいらない)。
 [OK]ボタンを押す。
 ↓
(8)プログラム入力たとえば・・・

#include <stdio.h>
int main()
{
int i;
for(i=0;i<=4;i++) printf("( ´∀`)");
return 0;
}

 ↓
(9)[F7]キーを押す(ビルド)
 ビルドエラーがでたら、エラーがなくなるまでプログラム修正
 ↓
(10)
Windowsのコマンドプロンプトを起動。(3)で選択したディレクトリへ移動。
さらにその下のDebugディレクトリへ移動。
dirすると exeファイルがあるのでそれを実行。
 ↓
(11)( ´∀`)( ´∀`)( ´∀`)( ´∀`)( ´∀`)
0186185NGNG
初心者にとっては言語そのものよりもVCの使い方のほうが
ハードル高いとおもわれ。
0187デフォルトの名無しさんNGNG
>>184
9xが悪いなんていわないが。
それだけスペックがあるなら普通は問題ないだろ。

ところで、なんでVC=VSなんだ?
コマンドラインから使えばいいじゃねーか。
俺だってVSなんてデバッグとプロファイルのときしか使わないよ
0188デフォルトの名無しさんNGNG
わざわざコマンドライン使うメリットもあんまりない。
Meadowみたいな別のアプリ内から使うならわかるが。
0189デフォルトの名無しさんNGNG
VSのテキストエディタに慣れてるならそれもいいだろ。
0190デフォルトの名無しさんNGNG
>>182
Visual Studio の統合開発環境と C/C++ コンパイラの区別がついていないヤツ発見。
VC をインストールするときに、環境変数を登録するようにしておけば、コマンドプロン
プトから cl コマンドを使ってコンパイルできます。make は nmake.exe を使えばよろ
し。

>>184
じゃあ往年の名コンパイラ Turbo C でも使ってなよ。個人の趣味としては何を選ぼうが
かまわんが、太古の常識を他人に押し付けるのはやめとけ。
0191デフォルトの名無しさんNGNG
>>188
大ありだぞ。

頭を冷やしてよく考え直せ。
趣味で一人でしか使ってないならその限りではないがな。
0192デフォルトの名無しさんNGNG
>>190
TurboCはいいね。
これも無料で落せる
0193190NGNG
C++
 BCC - win32
 GCC - cygwin/win32(mingw32)/dos(djgpp)
 watcom-c/c++ - dos/win16/win32/OS2/WARP

C
 TC - dos
 LSI-C3.30c試食版 - dos
 lcc - win32

この辺が無料で公開されてるコンパイラか。
0194デフォルトの名無しさんNGNG
>>193
それをみると、いまさらLSI-Cの試食版っていう気もするな。
TCやwatcomはフルスペック?
0195188NGNG
>>191
そりゃわかってる。
コマンドラインでビルドする環境が整っているならば話は別。
でも、レスの流れから「VCインストールしてさあどうするか」
という段階での話をしたのが188
0196デフォルトの名無しさんNGNG
>>191
> 趣味で一人でしか使ってないならその限りではないがな。
コマンドラインの使用と、この文のつながりが分からんのだが。

うちでは Visual Studio に統合されるソースコード管理ツールを使っているので、複数人でソースを
いじる場合でも統合環境を使ってますが……って、そういう話じゃなくて?
0197デフォルトの名無しさんNGNG
>>196
191じゃないけど

複数のdllやocxやcomを組み合わせたアプリなんかを
全部まとめてビルドしよう!とかいうとき、
もしかしていちいちプロジェクトを開いて順番にビルドしてる?

nmakeを呼び出すmakefileやbatchを組んで
debug/releaseをまとめてビルド&リリース用ディレクトリにコピーとかって
やってるけどなあ。
0198デフォルトの名無しさんNGNG
>>197
ワークスペースに関係するプロジェクトをまとめて登録、依存関係を設定した上でビルド
してます。
0199168NGNG
レスしてくださった皆さん、ありがとうございます。

>>185さんのおかげで、初めてのプログラムできまして、
数字のとこをいじったりしてなんとなく感嘆したりしました( ´∀`)
とりあえずは
>>178さんに紹介してもらったサイトの通り実行してると上手くいきそうなんで、
そのサイトでVCを使って勉強をしていこうかと思います。
>>175さん
私が猫未満の場合には購入を考える事にしますね。( ´∀`)
0200デフォルトの名無しさんNGNG
うむ、猫は丁寧で入門には最適だけど、使ってるVCがだいぶ古い。
だから初心者がVC6で挑戦するときにはプログラム以前のとこでとまどうとおもう。
とりあえず、プログラムがmain関数で動いているうちは>>185の手順で大丈夫
。WinMainという関数が出てきたらちょっとだけやり方変わる。
0201デフォルトの名無しさん NGNG
>>197-198とその少し前のあたりのレス
こんなのどっちのやり方に慣れてるか(知っているか)ってだけの問題じゃん。
宗教戦争はやめれ。
0202196NGNG
>>201
それは穿ち過ぎ。

私は 191 が「コマンドラインを使わないと問題がある」と断言したので、具体的に何か問題なのか
尋ねただけです。用途によっては、私が知らないだけでホントに問題あるのかもしれないし。

慣れてるって点では、私は Visual Studio よりも BSD pmake の方が。
0203デフォルトの名無しさんNGNG
NT系のOSでシャットダウン・再起動する方法を教えてください。
0204デフォルトの名無しさんNGNG
>>203
MAGURO Onlineにサンプルがあるよ
0205203NGNG
>>204
ありがとうございます。
助かりました。
0206.NGNG
上の方にもあるのですが、コマンドラインからMAKEしたいのですが、

>nmake /f test.mak
などとやっても
"構成が指定されていません。デフォルトの D3DSkelton - Win32 Debug を設定します。"
などとでてMakeできません。
どなたかご教授を....。または、詳しいHPなどありましたら教えてください。

VC6を使用しています。
0207196NGNG
>>206
nmake CFG="D3DSkelton - Win32 Debug" /f test.mak
0208.NGNG
>>207さん、ありがとうございます。
ですが、それを実行すると一瞬でおわってしまい、何も行われていない
ようなのですが.......
0209デフォルトの名無しさんNGNG
>>208
すでにビルドが完了してるんじゃないの? もしくは *.mak ファイルが古いとか。
0210 NGNG
>>185
それだったら、gccでも十分では?
VC使う意味がない。
0211デフォルトの名無しさんNGNG
>>210
168の対するレスだろ。
0212デフォルトの名無しさんNGNG
jpegをbitmapのように扱いたい
そういう関数ないですかね・・・

HJPEG hJpeg = LoadJpeg(hInstance, FilePath, x, y, LR_LOADFROMFILE);
SetJpeg(hJpeg);
DeleteJpeg(hJpeg);
みたいにできたら・・・

いや、それよりJPEGのフォーマット知りたいです。
ビットマップ(DIB)なら
BITMAPFILEHEADER
BITMAPINFOHEADER
(palette)
bits
ですよね
JPEGのフォーマットって検索してもなかなか見つかりません
0213デフォルトの名無しさんNGNG
>>212
OleLoadPicture 使えば JPEG ファイル読み出して描画するまでは、簡単にかける。google で
検索かけるとサンプル見つかるよ。
0214デフォルトの名無しさんNGNG
Wordpad のウィンドウにリッチテキストを流し込むのってどうやるんでしょう?
「文字列パレット」というのかな、クリックすると定型文が入力される感じで。
0215デフォルトの名無しさんNGNG
>>212
JPEGの画像情報は、可変長のセグメントブロックが任意の順に並んでいるから、
BITMAPみたいに単純な構造体では表現できないよ。

でもGIFと違ってライセンス問題が無いから探せばWebで情報見つかるはず・・・
いま、いいサイトが手元に無いけど、とりあえずこのへんはどうかな・・・

http://funada11.denshi.numazu-ct.ac.jp/ichikawa/gazo/graphicfile/format/jpeg/jpeg2.html
http://www.mikeneko.ne.jp/~lab/grp/analyzer/

JPEGで探すよりJPEGに使われてる技術で検索したほうが見つかるかも。
ハフマン符号とか量子化テーブルとか離散コサイン変換とか。
0216デフォルトの名無しさんNGNG
>>212
http://www.jpeg.org/
0217デフォルトの名無しさんNGNG
VCでコンパイルオプションに
-subsystem:consoleと入れたときに何か定義されるシンボルとかないでしょうか?
コンソールか、ウインドウアプリケーションかでソースを切り替えたいのですが
0218デフォルトの名無しさんNGNG
>>217
自分でシンボルを定義できない理由でもありますか?
0219212NGNG
皆さんご親切にどうもです(^^
0220212NGNG
ここのHP参考にしてますが、
http://www06.u-page.so-net.ne.jp/ca2/uo05025/OleLoadPicture.html

最後の方の
iPicture->lpVtbl->Render(iPicture,hDC, 0, 0, lWidth/32, lHeight/32, 0, lHeight, lWidth, -lHeight, NULL); //描画
が良くわからないです
6以降の引数おかしいような気がしますが↓
『 0, lHeight, lWidth, -lHeight,』
ではなくて
『 0, 0, lWidth, lHeight,』
の間違いですよね・・・
最後尾の説明によると
『 画像の幅・高さを32で割っているのは
OLEイメージを変換する方法がわからないため』
となってますが、
『OLEイメージを変換する方法がわからない』とはどういうことか
それが私にはわかりません(^^;
それとなぜ4、5の引数32で割るんでしょう?
0221デフォルトの名無しさんNGNG
 
0222デフォルトの名無しさんNGNG
>>220
俺のソースからコピペ

iPicture->get_Width(&himetric_width);
iPicture->get_Height(&himetric_height);
width = ::MulDiv(himetric_width, ::GetDeviceCaps(hdc, LOGPIXELSX), 2540);
height = ::MulDiv(himetric_height, ::GetDeviceCaps(hdc, LOGPIXELSY), 2540);

iPicture->Render(hdc, 0, 0, width, height, 0, himetric_height, himetric_width, -himetric_height, NULL);

32で割るのは正しくない。
あと、DIBは上下が逆なので、-heightとするんだと思った。
0223デフォルトの名無しさんNGNG
>>222
SetMapMode(hDC, MM_HIMETRIC); もアリかな。
0224デフォルトの名無しさんNGNG
MFCをつかわずにIWebBrowserを使用しているサンプルってどこかにありませんか?
MFCのソースを追ってみたのですが、m_xOleClientSiteでつまってしまいました。
0225デフォルトの名無しさんNGNG
質問いいかな?

GetAsyncKeyStateとGetKeyStateってまったく同じなの?
0226デフォルトの名無しさんNGNG
>>225
MSDNを読(以下略
0227デフォルトの名無しさんNGNG
えっと、質問なのですがいいでしょうか?
ボタンとかのコントロール作るときにそのフォントを変えたくて

hdc = GetDC(hWnd);
hFont = CreateFont(12,0,0,0,FW_NORMAL,0,0,0,SHIFTJIS_CHARSET,OUT_DEFAULT_PRECIS,
CLIP_DEFAULT_PRECIS,DEFAULT_QUALITY,DEFAULT_PITCH,"");
SelectObject(hdc, hFont);

//コントロール作成
hControl = CreateWindow("BUTTON", "TEST",
WS_CHILD | WS_VISIBLE,
10, 10, 120, 15,
hWnd,
(HMENU)(IDC_TEST),
hInstance,
NULL);

SendMessage(hControl, WM_SETFONT, (WPARAM)hFont, lParam);

ってやったんですけど、
どうも機種によって変わったり変わらなかったりするみたいなんです。
もしかしたら、WINDOWS2000では変らないのかもしれないです。

どこがだめなのかわかる方がもしいたら教えていただけないでしょうか?
0228.NGNG
まずfontがちゃんと登録されているか調べておいたほうが良いと思う
0229デフォルトの名無しさんNGNG
>>227
どんなフォントに変えたいわけ?
高さが12ピクセルって他は何も指定がないけど?
もともと12ピクセルのフォントを使ってる環境だったら、そりゃ変わらないでしょう。
もっと大きいフォントにしたり、フォント名を指定したりしないと、変化がわからないと思われ。

それからSendMessageの最後のlParamってなんだ。TRUEにしとけ。
0230デフォルトの名無しさんNGNG
>>228-229
レスありがとうです。
えっと、正確にはサイズを変えたいんです。
どうも文字のサイズが大きいので小さくしたいんですね。

ちなみに、デフォルトにしようとして、フォントを作らずに
SendMessage(hControl, WM_SETFONT, (WPARAM)GetStockObject(DEFAULT_GUI_FONT), lParam);
にしたら直りました。
どうも登録とかがされてないようですね。
0231デフォルトの名無しさんNGNG
お薦めの入門書を教えて下さい
今学校でCOBOLをやってるんですけど全然使えなさそうなので
CとかVisualCをやりたいんです。
基本が分かりやすく覚えれる本ってありますか?
0232デフォルトの名無しさんNGNG
エクスプローラみたいなのを作りたいのですが
どうやったらいいのかさっぱりわかりません。
ダイアログベースだと、TreeControlを貼り付けて
ツリービューを作ったりもできるんですが。

AppWizardでSDIを指定し、プロジェクトのスタイル
で「エクスプローラスタイル」としてみましたが、
どうやってデータを表示させたらいいのかが
わかりません。
教えてください。
0233デフォルトの名無しさんNGNG
VC++のStudioっていう開発環境を使ってプログラム開発
することになったんですが、入門用(環境のカスタマイズ
、VC++プログラミング)の参考書でいいのがあったら
教えてください。
0234デフォルトの名無しさんNGNG
>>233
他のスレッドで何度か書いたけど。

「プログラミング Windows 第五版」
通称 Petzold 本
0235234NGNG
>>234
早速逝ってきます。どもです。m(__)m
0236デフォルトの名無しさんNGNG
>>235の名前欄
234=233 重ねがさねスマソ
0237new BYTE[n]でいいのか?(^^; NGNG
mallocとGlobalAllocはどのように使い分けるのでしょう?

単独質問スレ立ててしまって怒られて(^^;、こちらにお邪魔させていただきました。アドバイスを頂ければ幸いです。

クリップボードなんかの一部の特殊なモノを除いて、特にGlobalAllocを使う必要は無いというコトをよく聞きますが、では具体的にはどのような使い分けをしたほうがいい/しなければならないのでしょうか?

#C++なら%名前%だっつ〜話もありますが(^^;

私の認識は、本やWebを漁って

「基本的にmalloc。単発exeやシングルスレッドのモノはGlobalAllocなんかいらない(マルチスレッドでも、一つのスレッドで収まっていればmallocでOK)。
 スレッド間でバッファを共有したりDLL作ったりするときはGlobalAlloc。ハンドルを渡して使うときだけGlobalLockして終わったらGlobalUnlockする」

と思っているのですが、この世界、本やWebに載っているコトが正しい確率はゴニョゴニョ、という世界ですので(^^;
実戦経験のある方のご意見を伺いたかったのです。


ちなみにやろうとしていることは、Bitmapをいぢる新しいクラスを作ろうとしてて、コンストラクタでバッファをmalloc、デストラクタでfreeで済ませようとしておりますぢゃ。これでOK?(^^;
0238デフォルトの名無しさんNGNG
つかいわけ、ってもなー、結局VCのmallocもnewのメモリ確保も最後はHeapAllocとか
呼ぶわけだしなー。GlobalAllocも、WIN32ではちっともglobalちがうし。
そーゆー、オーバーヘッドとか、デバッグサポートとか嫌なら、
GlobalAlloc使うのもいいんじゃないかな?

VirtualAllocとの比較はそれはそれでおもしろいかもしれんけどなー。
0239デフォルトの名無しさんNGNG
グローバルアロックはnew、mallocと違ってアプリ起動中に
解放するとOSに返されるそうだよ
つまり、newやmallocは1度確保すると
そのアプリが終了するまで解放してもその確保したメモリ領域は
他のアプリは使用できない
もちろん当のアプリはもう一度new、mallocで確保すれば
その解放した領域を優先して割り当てられる


だと思いますが、間違ってたら訂正して下さい(−−
0240デフォルトの名無しさんNGNG
実際問題、VCのmallocの実装では、__sbh_threshold (デフォルトで1KB)以上の
アロケートに対してはHeapAllocを呼んでるし、GlobalAlloc ≒ HeapAllocなんで、
機能的に差はないかと。

あと、仮想メモリ機構と、プロセスメモリの関係で、実メモリは他のアプリでも
使えるし、(freeしたとしても)そのリニアメモリをほかのプロセスが使うことは
無いかとも思いますが。そのあたりの説明、ってのはどうなんでしょうかね。
0241デフォルトの名無しさん NGNG
文字コードを判別してくれるフリーのライブラリがほしいんですが、いいのありますか。
UnicodeやSJISやEUCを判別する機能に、変換する機能もほしいのですが。
APIやMFCのマクロには判別してくれるやつが見つからないのですけど。
0242デフォルトの名無しさんNGNG
>>240
malloc(), free() と HeapAlloc(), HeapFree() の比較と言うことなら、前者は C ランタイムライブラリ関数
であるのに対し、後者が Win32 API であるのが最大の違いかと。

同一の処理系で閉じている場合はともかく、複数の処理系を使っていて、一方で確保したメモリを他方
で解放、などとしたい場合には API を使わないと死にます。
0243デフォルトの名無しさんNGNG
>>241
SJISやEUCはともかく、UnicodeはAPI使った方が楽。
ていうか、統計取る以外に判別する方法はない。
Unicodeに至っては、ヘッダ無しのプレーンテキストをプログラムで判別
する有効な手段は無い。
0244デフォルトの名無しさんNGNG
>>243
文字列を渡すと統計取ったりして解析して文字コードを判別してくれるライブラリはないでしょうか?
あとAPIはMultiByteToWideCharとかのことですか?
これはSJISもEUCもUNICODEに変換してくれるのですかね?
0245デフォルトの名無しさんNGNG
>>244
Vectorに逝け。
0246デフォルトの名無しさんNGNG
文字列が入っているCString型の配列をqsort関数を使ってソートしたいんですがうまく整列できません。
struct構造体のchar型の文字列はqsortで整列できたのですが…
どのようにすればできるか教えてください。
0247デフォルトの名無しさんNGNG
>>246
CString::LPCTSTRで返されるポインタは一時的なものです。
CStringを使うならCStringArrayとかの配列クラスを使い、qsortを
カスタマイズする必要あり。
0248デフォルトの名無しさんNGNG
>>247
返答ありがとうございます。
VC難しいですね。CStringのまわりからよく読んでみます。
0249new BYTE[n]でいいのか?(^^; NGNG
>>238-242

アドバイスありがとうございました。特に239の情報は初耳でした。大きなバッファを扱う場合は、シングルスレッド/単発exeでもGlobalAllocを使う意味がありそうですね。
0250デフォルトの名無しさんNGNG
>>249
おいおい、信じるなよ。free() すると、条件が整ってれば HeapFree() 呼び出すぞ。CRT のソース読め。

マルチスレッドの場合でも malloc() で確保したメモリ領域は、Mutex や CriticalSection オブジェクトを
使ってアクセスを排他制御すれば、複数スレッドから読み書きしても何ら問題ない。また GlobalLock()
は単にデータの移動/廃棄を禁止するだけで、アクセスの排他制御/シリアライズはしてくれない。
0251デフォルトの名無しさんNGNG
嘘を嘘と(以下略
0252デフォルトの名無しさんNGNG
char array[256]
で確保したメモリの先頭アドレスをインラインアセンブラで取得するにはどうすれば良いのでしょうか?

__asm { mov esi, array }

だと出来ませんでした
■ このスレッドは過去ログ倉庫に格納されています