トップページ⇒tech
1001コメント323KB

VisualC++相談室 3

レス数が1000を超えています。これ以上書き込みはできません。
0001いさましいチビの女NGNG
VisualC++関連の話題を扱うスレッドです。

旧スレッド
http://piza.2ch.net/test/read.cgi?bbs=tech&key=981630730&ls=50
0002デフォルトの名無しさんNGNG
ダイアログボックスに背景画像を張りたいんですが。
ピクチャーを置いただけではボタンも隠れてしまいます。

どうしたら良いですか?
0003デフォルトの名無しさんNGNG
ピクチャーの上にボタン置けば?
0004デフォルトの名無しさんNGNG
>>3
ダイアログエディタでボタンが上に見えるように置いても
実行すると隠れてしまうんです・・・
0005デフォルトの名無しさんNGNG
GetDCで画面のデバコン取って書け。
0006デフォルトの名無しさんNGNG
>>2
ダイアログボックスをサブクラス化して、WM_PAINT乗っ取れ
0007デフォルトの名無しさんNGNG
>>6
が正解。(というか管理が楽)
付け足すなら、ダイアログボックスのフラグに子窓をクリップするか
どうかってのがあるから、それ入れとかないとチラつく。
0008デフォルトの名無しさんNGNG
プログラミング及びVC++初心者ですが、
コンピュータの理解を深め、プログラミングも上達するための
初心者向けの課題は何かないでしょうか?
0009デフォルトの名無しさんNGNG
コンピュータの理解を深めたかったらコンパイラを作ると良いと思うよ。

でも、そんなのいきなりは無理だよね。

最初は自分の作りたい物作ったら?

私なんかはBCBで、某エロゲー会社のセーブデータ保存ディレクトリ変更ツール作ってたりとかしたけど。といっても、内容はレジストリのエントリの値を変えるだけ。

それでも改造して遊んでくうちにプログラムのコツとかもわかっていくよ。
0010デフォルトの名無しさんNGNG
ワンボードマイコン買ってこい。
スイッチを押すとLEDが点灯するプログラム書くだけでも
コンピュータの理解は深まるぞ。
00118NGNG
>>9
8です。
書き込みありがとうございます。
プログラミングは面白いんですけど、コンピュータに関する知識が
なさ過ぎて、いまいち何をしたらいいのか分からず
目的がない状態だったもので。

コンパイラですか?面白そうですね。あとエミュレータなんかも
自分で作ってみたらきっと面白いんだろうと思います。
参考としておすすめの本などありましたら、おしえて下さい。
00128NGNG
>>10
8です。

>ワンボードマイコン買ってこい。
ワンボードマイコンってどういうものなのでしょうか?
なんか単純な作業でもささやかな喜びを感じれそうな作業はすきです。
0013デフォルトの名無しさんNGNG
>>9
そう!エロこそがプログラム上達の最強の原動力ナリ
0014デフォルトの名無しさんNGNG
>>6 >>7
さんきゅ〜、うまくいきました。
これしかないか、とは思ってたけど(^^;;
0015デフォルトの名無しさんNGNG
GLU ってなんだよ。あんな説明じゃわかんねーよ。
っていうか座標決め撃ちどかーんってできないの?
それともプログラムの中でCreateするときに指定してあげるの?
それともそれとも付属のリソースエディタは使っちゃダメなの?
0016デフォルトの名無しさんNGNG
GLU -> DLU だった・・・・・・・・・ハズッ!!
0017デフォルトの名無しさんNGNG
DirectXを使わないWINDOW上のゲームを作ろうと重い、メッセージループの中に描画や移動を入れました。しかしマウスが動くたびに表示がちらつきます。
どうすればよいのでしょうか。あと、メッセージループのなかに描画等を入れてよいのでしょうか。

while(GetMessage(-----------)){
/*ここに描画や移動を入れる*/


TranslateMessage(--------)
DispatchMessage(---------)
}
0018デフォルトの名無しさんNGNG
>>17
ダメです。
GDIに迎合するなら描画はWM_PAINTでやって下さい。
一定周期ごとに再描画が必要ならWM_TIMERかなんかで
一定周期ごとにInvalidateしてください。
0019デフォルトの名無しさんNGNG
なるほど。そうやるんですか。ありがとうございました。
0020ツッコミが無いのでNGNG
>9,10
>コンパイラ 〜
>ワンボードマイコン 〜
?

・・ちょっと待て
0021デフォルトの名無しさんNGNG
>>20
いや、とりあえずまちがっちゃいないだろ(w
0022もNGNG
>>20
「ハード面での知識を得たい」というのと
「ソフト面(例えばアルゴリズム)の知識を得たい」というのとでは
適切な教材は違ってくるわな・・・

全般的な知識だったら、情報処理試験を合格できるような受験勉強をすればいいし。
0023デフォルトの名無しさんNGNG
ageとく
0024厨房NGNG
vcや他のソフトにもあるけど、ウィザード形式のダイアログボックス
はコンポーネント等があるのでしょうか?
それとも、ダイアログのクラスにシコシコとコーディングでしょうか?
0025デフォルトの名無しさんNGNG
>>24
プロパティーシート
0026デフォルトの名無しさんNGNG
>>25
プロパティシートだ、鬱。
0027デフォルトの名無しさんNGNG
0000
0028デフォルトの名無しさんNGNG
練習でフィールドをキャラクターが歩くようなものを作ったのですが、
方向キーの受付がかなり不自然になってしまいました。
WM_KEYDOWNを捕まえているのですが、キーが押されているかどうかを
もっとスムーズに知る方法を教えてください。
0029もNGNG
>>28
SHORT GetAsyncKeyState(int vKey);
引数 vKeyで指定されたキーが、
「今現在」押下されているかどうかを判定する。

Asyncというのは非同期(Asynchronous)の略で、
「メッセージキューの内容と非同期である」ということ。

戻り値は16ビットの整数値で、
最上位ビット(&0x8000)が、1の時が押下状態、0の時が非押下状態。
最下位ビット(&0x0001)が、1の時がトグル状態、0の時が非トグル状態
0030デフォルトの名無しさんNGNG
エディットコントロールにSendMessageでWM_CHARを送るときに、
ひらがなや漢字などの2バイトの文字がうまく送れません。
なにか方法があるのでしょうか。おしえてください。
0031デフォルトの名無しさんNGNG
>>30
WM_IME_CHAR使え
003230NGNG
>>31
はい、使ってみます。
アリガトウございました。
003328NGNG
>>29
ありがとうございます。ところでトグル状態とは何でしょう?
0034>33NGNG
NumLock、CapsLockとかのロック状態
0035デフォルトの名無しさんNGNG
自分でクリエイトしたボタンのキャプションを改行したいのですが、
ボタンステイタスのどのパラメータを使えば複数行になるんでしょうか?
標準のボタンだとプロパティのスタイルタブにある複数行をチェックすれば済むのですが・・・
BS_MULTILINEでは改行されないんですけど・・・なんで?
0036デフォルトの名無しさんNGNG
>35
BS_MULTILINEでされるハズ
多分、天候のせいでしょう。
0037デフォルトの名無しさんNGNG
>>35
\r\nで改行・・・・だよね?
0038デフォルトの名無しさんNGNG
>>37
もちろん、でもボタンのキャプションにそのまま\r\nと出ますけど・・・
003928NGNG
すいません、また質問させてください。
SHORT GetAsyncKeyState(int vKey);
でいろいろ試してみたのですがvKeyで指定したキーをずっと押し続けいても
常に押下状態と返すわけではなく最上位ビットが0だったり1だったりするのですが
こんなもんでしょうか?
0040デフォルトの名無しさんNGNG
>>35です。
作りたいのはオペレーターが自分で機能付きのボタンを好きなところに貼れるアプリなんです。
テキストにボタン名、機能(あらかじめ決まってる5種類位、_CMD_Add_とか書く)、ボタンの位置、大きさ
を書くと
起動時にそのテキストを読んでユーザーのお好みでボタンを配置出来るというものなんです。
int buttonNumber;
CRect buttonRect;
CString buttonName;
UserButton[buttonNumber]->Create(buttonName, BS_OWNERDRAW | BS_PUSHBUTTON | BS_MULTILINE | WS_VISIBLE, buttonRect, this, __USER_BUTTON_ID__+buttonNumber);
でやっても駄目なんですけど・・・
0041デフォルトの名無しさんNGNG
>40
オーナードローでもテキストって出んの?
0042デフォルトの名無しさんNGNG
コンパイラ エラー C2896
'function1' : 関数テンプレート 'function2' を関数の引数として使用できません。

これってANSIの仕様ですか?
ごっついむかついちゃった。どうしよう・・・
004339NGNG
if文で}の位置が違っていた。
鬱になった。
0044デフォルトの名無しさんNGNG
あげてみっかな。
0045デフォルトの名無しさんNGNG
メニューの「最近使ったファイル」に追加されるファイル名をクリックした時の処理は
どのようになっているのでしょう?
例えば、ここでクリックしたファイルのファイルパスをダイアログボックスで
表示するようにしたい場合は、どのようにしたらよいでしょうか?

もしご存知の方がいましたら、よろしくおねがいします。m(_ _)m
0046デフォルトの名無しさんNGNG
>>45
CHogeDoc::OnOpenDocument() じゃだめ?
もっと前で捕まえたいなら、OnOpenDocumentにブレークポイント入れて、
そこでコールスタックを見て、適当な場所を探す。
0047eijNGNG
お世話になります。WIN98 VC6 MFC で組んでおります。

仮想画面にビットマップを転送しておいて、(再)描画時
に仮想画面から通常画面に転送するといったことを
しております。
初期描画:PatBlt→仮想画面、BitBlt→仮想画面、仮想画面→BitBlt
再描画時:仮想画面→BitBlt
としてます。
ここで、仮想画面に対して"PatBlt"を使った直後、残メモリが
ちょうど画像の サイズ分減少します。
"PatBlt"をコメントで抜いた場合は 仮想画面に対する"BitBlt"の
直後に同じように残メモリが減少します。つまり仮想画面に何か
データを転送した時点で起こります。 画像のサイズには関係なく
起こる症状です。 何が原因でこのような症状になるのかご教示
いただければありがたいです。

なお、残メモリは、"GlobalMemoryStatus"api関数で調べております。
以上よろしくお願いいたします。
0048デフォルトの名無しさんNGNG
>>47
どっちのスレで答えて欲しいのかも書いといてください。
0049eijNGNG
>>48 スマソ。以降こっっちで。
0050デフォルトの名無しさんNGNG
BitBlt とかのデータってメモリ上に残るんじゃないの?FIFOだかLRUだかの条件で
別処理実行してったり、終了時には開放されると思うが。
0051 NGNG
プログラムで、FDDを認識するのはどうすればいいのでしょうか?
MOやメディアリーダーと区別したいのですが・・・。
0052デフォルトの名無しさんNGNG
教えてくださいませ。

CView上に、CButtonをクリエイトしたんだけど、
CViewがBitBltするとボタンが消えちゃいます。
マウスポインタをボタン上に持っていくと突然現れます。

どうすれば、ずーっとボタンを出ているように
することができるのでしょうか?
0053デフォルトの名無しさんNGNG
>>52
>CViewがBitBlt
CViewにBitBlt ?
GetDC()がクリッピングをしないからです。ボタン位置のリージョンを作成し
反転してDCにSelectObject する。
こんなめんどくさいことは通常しません。
描画タイミングをペイントメッセージ時(OnDraw)にするか、ボタンに対して
Invalidate-Updateをかけてやりましょう。
0054追記NGNG
ペイントメッセージ時で起こっているなら、ボタンの親がCViewになってません。
それでだめならCViewのスタイルにWS_CLIPCHILDREN を追加しましょう
それでだめならCFormView を使いましょう。
0055eijNGNG
>>50 このとき減ったメモリが、仮想画面に割り当てたビットマップを
"DeleteObject"することによって解放されることを確認しました。
DeleteDC->DeleteObjectの順番なら成功(解放)するがその反対なら
失敗(リーク)する。こんなことってある?
今、24bit色のディスプレイ設定で、8bit色5MBの画像を表示する場合、
CreateDIBitmapで15MB、仮想画面で15MBの、都合30MB消費する
のですが、こんな設計は逝ってよしでしょうか?
0056デフォルトの名無しさんNGNG
>>55
DC に Select されている BITMAP (等) は DeleteObject できません。
ドキュメント読んだ?
0057デフォルトの名無しさんNGNG
>ドキュメント読んだ?

↑これ余計でした。心が荒んでいたもので。
ごめんなさい。
0058デフォルトの名無しさんNGNG
>>55
やっとなんとなく状況理解
SelectObject(hdcMem, oldbm); はやりましたか?
005958NGNG
ってそれじゃわかるわけないか、こんな感じの順番
テキトーにアレンジして

HDC hdcMem = CreateCompatibleDC(_draw_handle) ;
HBITMAP hbm = CreateBitmap(tw, th, 1, 1, NULL) ;
HBITMAP oldbm = (HBITMAP)SelectObject(hdcMem, hbm) ;
BitBlt(hdcMem, 0, 0, tw, th, xxxMem, 0, 0, SRCCOPY) ;
SelectObject(hdcMem, oldbm) ;
DeleteObject(hbm) ;
DeleteDC(hdcMem) ;
006058NGNG
他にも答えてる人が居たのね、ま、ワカってることならやりすごして
ちょうだい、じゃ
0061デフォルトの名無しさんNGNG
>>55
言葉で説明するよりも該当部分のソース見せたほうがアドバイスもらいやすいと思うけど (w
0062eijiNGNG
>>56-60 Selectで、DCからBMPを切り離すことはしてると
思います。今家なので確認は出来ないのですが。
>>61 そうですね、かなり混乱してて、デバッグ用のコードを
埋め込んだりしてソースがかなり汚くなっているので、整理して
簡潔にアップしたいと思います。ちなみに >>55 の最後で書いてる
このような設計自体に関してはどうでしょうか?逝ってよし?

皆さん色々ありがとう!こんなにレスつくとは思っていなかったので
励みになります。ではまた明日来ます。
0063デフォルトの名無しさんNGNG
>>このような設計自体に関してはどうでしょうか?逝ってよし?

ソースがないとその判断もできないって
0064デフォルトの名無しさんNGNG
>>62
直した方が良いけど、メモリリークだけなら終了時にゃ解放されるんで
連続して際限なくリークし続けるんでなければ、ごまかして納品されてる
ものは結構あんでしょ。今びなら30Mならまあ別に。
リソースリークでハンドル減ってんだとあんまし良くないと思う。
0065デフォルトの名無しさんNGNG
逆にシステムそのもののメモリ使用量で、切り詰めようもないのに、
メモリ食う食う、言ってウルサイ客もいるね。説得するのがタイヘン
0066eijiNGNG
ちょっと取り込んでるので後日来ます。
なお、現状では
メイン画面:CreateDIBitmap、オフ画面:CreateCompatibleBitmap
としてるんですが、メモリの消費がディスプレイ設定にかなり依存しております。
これはどのように思われます?
0067もNGNG
メモリの消費量がどうかと訊ねられても・・・。
全部を表示するためには、
どうやったってメモリ上においておかなくちゃいけないし・・・。

表示領域が一部分だけなのなら、バンディングでもしたら?
としか答えようがない。
昔だったら、GlobalNotifyでも使ってスワップアウトすれば・・・
とでも答えられたのだけど・・・
0068eijiNGNG
そうですな。要はスピードをとるかスペースをとるかバランスをとるかって
ことね。まぁ、用途に応じてってことですか。今スピードよかスペースが問題
になってきてるので、仮想画面なしの、DIB生成(CreateDIBSectionあたり)と
しますわ。
0069デフォルトの名無しさんNGNG
すみません、質問です。
プリコンパイル済みヘッダを使用しているプロジェクトと、
使用してないプロジェクト(VC++以外等)で変更無しで両用出来るように、

#include "stdafx.h"

をうまくマクロで制御出来ないでしょうか?
以前、どこかで見た気がして、いろいろ検索したのですが発見できませんでした。
ご存知の方いましたら、お教えください。
0070VC++NGNG
>>2
遅レスですが・・・・・
ボタンのタブオーダーをピクチャーの後にして
(たとえば、ピクチャーが7ならボタンが8)
ボタンの上にピクチャーを置けば良いかと・・・・・・
実行前はボタンは隠れてますが実行後は表示されます。
0071デフォルトの名無しさんNGNG
VCそのものの質問なんですが、デュアルCPUとかにしたとして
VCは何も設定しなくても並列コンパイルなるものをやってくれる
んでしょうか?なんか特殊なやり方が必要なんでしょうか。
StandardEditionだと出来ないとかだったらイヤだな(TwT
知ってる方教えてくだちい。
0072デフォルトの名無しさんNGNG
>>71
スレッド分ければOSが勝手にCPUリソース使ってくれるはず。
ただ、9x系はデュアルCPUサポートしてないんじゃなかったかな。
NT系じゃないとダメだったはず。
0073デフォルトの名無しさんNGNG
>>52
CViewのウィンドウスタイルを変更して
を子ウィンドウをクリップするという手もある
0074デフォルトの名無しさんNGNG
>>70
あ〜〜!そっか。
タブオーダーって表示の優先順位じゃなくて表示の順番になるのか・・。
ダイアログエディタだとタブオーダーの逆順に表示されるのに・・・。
サンクス!やってみます
0075もNGNG
>>71
汎用機じゃないから、別段CPUの数は意識しなくてもいい。
昔のNT4.0だと、Workstationで2CPU、Serverで4CPUまでOSが対応してくれる。
マルチスレッド処理を記述すれば、
優先順位に応じて空いているCPUを自動的にスレッドに割り振りしてくれるよ。
# あんまり賢いスケジューリングじゃないけど。

但し、マルチCPUの場合、
本当に複数のスレッドが同時に動くから、排他制御を
厳密にチェック・テストする必要があるね。
0076ななしさんNGNG
スパコンでないからそもそもデータフロー解析する
並列計算はできない。
アプリケーションが複数のスレッドを使えるだけ。
007771NGNG
たくさんレスありがとうございます!
えーと・・・・・
VC(てかコンパイラ)そのものがマルチスレッドアプリケーションってことで
いいんでしょうか。まだ少しよくわかんない・・・・・
自分でコード書いてビルドしたアプリがマルチスレッドで動作するかどうか
ではなくて、
VCのコンパイラがマルチスレッドでコードを高速にコンパイル(並列コンパイル)
してくれるかどうかが知りたかったんですが。
対応マザーにCPU2つブッ差せばVCは嫌でも並列コンパイルやってくれる、
ってことでいいんでせうか?(w
バカですんまそん。
0078デフォルトの名無しさんNGNG
翻訳単位が複数ある場合は、翻訳単位ごとにスレッド分けてコンパイルすれば簡単そうだが、
1つの翻訳単位をコンパイルした場合はかなり高度なことやらなくちゃいけなそうなきがするなぁ。

普通に使う場合、コンパイル作業の7割くらいは1翻訳単位のみビルドだと思うから、
結構この差は大きそう。
0079デフォルトの名無しさんNGNG
よくわからんけど、コンパイル中にプロセスモニタとかで
スレッド数を見たら?

gmake つかえば make -g あたりで並列コンパイルじゃなかったっけ。
自分でmakefile準備しようぜ
0080デフォルトの名無しさんNGNG
どーでもいいけど、非同期プログラミングするなら
必ず並列環境で開発しようね。うん。

よけいなお世話?
0081デフォルトの名無しさんNGNG
並列コンパイルとマルチスレッドアプリ作成の話は別モンだと思う
書き込んだアトでも勘違いしたと思ったら、訂正した方が良いと思うが
アンマリひきずらんで
0082デフォルトの名無しさんNGNG
”も”って人か...
0083もNGNG
>>
いや、鳥
0084もNGNG
コンパイル時間を短縮したかったのか・・・

VC++にそんな器用な芸当が出来るのか?
プリコンパイルドヘッダとか、インクリメンタルコンパイルくらいしか
見当たらない。
0085デフォルトの名無しさんNGNG
おい日本語が大丈夫か
0086デフォルトの名無しさんNGNG
マルチCPU使ったってコンパイル速くならんよ。
でもコンパイル中でもWEBみてMSDNみて、いろいろできるね。
快適に。

ああ、でも、恩恵にあやかりたかったらHDDは分けとこうね。
パーティションじゃないよ。物理的にね。
0087デフォルトの名無しさんNGNG
VC2個立ち上げて同時にコンパイルすれば速度の恩恵が受けられる?
ReleaseとDebugを同時にリビルドするとか。
言ってる自分が馬鹿馬鹿しいが。
0088デフォルトの名無しさんNGNG
だから
ファイルの書き込み速度以上に速くならないって。
008971NGNG
うわ、出来るもんだとばかり思ってたっす(涙
いやはや、たくさんのレスありがとうございます。
makefileのことちょっと調べてみます。
どもです!
0090デフォルトの名無しさんNGNG
GNU make
win屋はwinが当たり前だと思ってることがある
俺もVC屋だけどホンマに的外れ多いよ
0091デフォルトの名無しさんNGNG
マルチスレッド技術は、基本的に、アプリケーションやOSの応答性を高める
ための技術だと思ってね。
コンパイラ向きじゃないと思うのよ。うん。

IDEの方はマルチスレッドの恩恵を受けてるけど、cl.exeとそいつが呼び出す
下のプログラムはマルチスレッド対応してないとおもうよ。
恩恵があまりないからね。

で、gmakeで並列コンパイルしたとしてもメモリをたくさん食うだけで、
ファイル読み込み時間の合計はかわらんし、書き込み速度もかわらん。
たぶん君が使ってるCPU内のキャッシュメモリもあふれてかえって
遅くなってる可能性もあるよ。
0092デフォルトの名無しさんNGNG
〜だって
0093デフォルトの名無しさんNGNG
今、マウスカーソルの動作を制御するプログラムを作っていて、
ダイアログ上のボタンを自動的に押したりとかさせたいんですが、
その動作をどうやって実現させるかがわからなくて困ってます。
何か良い方法は無いでしょうか?
0094デフォルトの名無しさんNGNG
>>90
VCスレだから許せ。
0095デフォルトの名無しさんNGNG
>>93
たとえば、LBUTTONDOWNを送って、その後、LBUTTONUPを送れば、
「マウスでクリックした」という偽造メッセージを送れる。

ただし、送り先は対象となるボタンのウィンドウハンドルに送らないとダメみたい。

ちなみに、KEYDOWN, KEYUPはダメだった。
こっちの方法知ってる人いたら教えて欲しいです。
0096デフォルトの名無しさんNGNG
昔書いたソースからコピペ、もう忘れたんで詳しいことは自分で調べてね
mouse_event(MOUSEEVENTF_MOVE|MOUSEEVENTF_ABSOLUTE|MOUSEEVENTF_LEFTDOWN,65536*x/GetSystemMetrics(SM_CXSCREEN),65536*y/GetSystemMetrics(SM_CYSCREEN),0,0);
0097デフォルトの名無しさんNGNG
>>95
key_eventを使う。
0098デフォルトの名無しさんNGNG
>93
ボタンクリックをエミュレートするなら、ボタンにBM_CLICKを送るだけいい。
または、そのボタンを押したときに発生するWM_COMMANDを親のダイアログに直接送る。

ボタンがへこむアニメーションも再現したければ、BM_SETSTATEを使え。
0099デフォルトの名無しさんNGNG
Win2KとWinMeの両方で問題なく動くプログラム作るとしたら、
どっちでビルドした方がいいとかいうのはありますか?
0100デフォルトの名無しさんNGNG
>>99
まさか Win9x/Me 上でマジで開発しよう…なんてこと、考えてないだろうな。
いや、まさかとは思うが、念のため...。
0101デフォルトの名無しさんNGNG
>>100
いや、Win2kでビルドしたら動かずに、WinMeでビルドしたら動いたもんで。
詳しくはおいおい調査してくけど・・・。
0102デフォルトの名無しさんNGNG
>>98
最小化ボタンのアニメーションは再現できないんでは?
0103100NGNG
>>101
あ、そゆことね。スマソ。

ふむぅ..。しかしなんとも理不尽だね。
そういえば、そんなこと経験したことあるよーな気もするなぁ...。
0104デフォルトの名無しさんNGNG
ボタンの位置(座標)ってどうやって取るんですか?
できればCRectで受け取りたいんですけど・・・
0105デフォルトの名無しさんNGNG
>>104
GetWindowRect
0106デフォルトの名無しさんNGNG
>>101

それって
「Win2kでビルド→Win2k:×、WinMe×」で
「WinMeでビルド→Win2k:○、WinMe:○」ってこと?
0107デフォルトの名無しさんNGNG
>>104
そうですよね。その筈なんですけど
CRect BRECT;
CButton *myBT = (CButton*)GetDlgItem(IDC_BUTTON);
myBT->GetWindowRect(BRECT);
COXRoundedButton*Test = new COXRoundedButton();
Test->Create("Sample", BS_OWNERDRAW | BS_PUSHBUTTON | WS_VISIBLE, BRECT, this, ID_SAMPLE);
とやると位置がズレルのは何故何でしょうか?
0108デフォルトの名無しさんNGNG
>>106
「Win2kでビルド→Win2k:○、WinMe×」
「WinMeでビルド→Win2k:?、WinMe:○」
っす。
Meでビルドしたのはまだ2kに持って来てないっす。
010993NGNG
>96
ありがとう!
試してみたら、LEFTUP→LEFTDOWN→LEFTUPの順でやるとうまく動かせました。
(LEFTDOWN→LEFTUPだけだと、なぜかドラッグしたことになってしまった)

>98
最初、それでいこうかと思ったんだけど、
結局メッセージ送りつける相手のハンドルがわからなくて断念しました。
0110106NGNG
>>108

その場合、インストール(&使用)されているコンポーネントは本当に一致している?

わりとその辺で動作が違うのだと思う。まぁOS依存動作もあるけど、それはヘルプ見て確認してるんだよね?
0111デフォルトの名無しさんNGNG
>>107
CWnd::ScreenToClient()
CWnd::ClientToScreen()
この辺調べて見れ。
Createする場合、Windowのローカル座標で作るんじゃなかったか?
0112デフォルトの名無しさんNGNG
>>108
使うAPIにもよるよ。
ちゃんとヘルプとか読んでるの?
0113デフォルトの名無しさんNGNG
ちゃんとヘルプ読んでるやつはここに質問書かないって
0114デフォルトの名無しさんNGNG
>>106,>>112
う〜ん、CreateFileでCOMポート開いてただけなんだけどなぁ(^^;
当然HELPは読んでるけどね。

結局、
「Win2kでビルド→Win2k:○、VCインストール前のWinMe×、インストール後のWinMe○」

ってことで、なんか足りなかったのかなぁ??
再現させるにはまたWinMeのインストールからか・・・。
0115106NGNG
>>113

確かに「F1を押す」だけの事ができない奴多いものな>2ch。
0116デフォルトの名無しさんNGNG

HeapAlloc と GlobalAlloc の違いについて教えてください。
GlobalAlloc のメモリは再配置可能で HeapAlloc はそうでなく
HeapAlloc はメモリが断片化される可能性があるらしいのですがこれはどういうことですか?
例えば1MBのメモリを3回確保して最初に確保した1MBは開放してから再度1MB確保した場合
GlobalAlloc では開放された領域が再利用されて HeapAlloc の場合は開放された領域ではなく4MB目の位置に新しく確保されるということでしょうか?
確保できるメモリ量に違いなどはあるのでしょうか?
GlobalAlloc は一度に確保できるのは65535ハンドル数までらしいですが、ハンドルの数ではなくバイト数での制限はあるのでしょうか?
昔ウィンドウズで扱えるヒープのサイズは256MBとか噂で聞いた気もしますが、そのような制限はあるのでしょうか?
それと HeapAlloc と GlobalAlloc ではどちらを使うのが一般的ですか?
自分は今までは HeapAlloc を使っていたんですが。( GlobalAlloc はロックしないといけないので面倒 )

ご意見・ツッコミ・煽りなどをお寄せください。
どうぞよろしくお願いします。
0117名無しさんNGNG
GlobalAllocは640KBの壁があった前世紀の遺物。
江戸時代のプログラミング。
HeapAllocは独自のアロケーター作成用のツール。
mallocやnewを独自に作るための部品。
ベストはmalloc。
ソースを見るとちゃんと二進セマフォを
いじっているんで、マルチスレッドにも対応している。
0118デフォルトの名無しさんNGNG
自分以外の他のプログラムを終了させるような関数を教えてください。
例えばウィンドウズを終了させると一応すべてのプロセスが終わるのですが、
ここでは特定のプログラムを終わらせる方法が知りたいです。
0119デフォルトの名無しさんNGNG
FindWindowとPostMessageを繰り返すだけ。
普通はそれで問題なし。
0120デフォルトの名無しさんNGNG
>>116
GlobalAllocっていっても、
単にそのプロセスのデフォルトヒープを使ってるだけじゃなかったかな。

LocalAllocでも同じだけど、漏れが使うときはいつも LPTR な確保しかしないから、
ロックなんてしてない。

HeapAllocは DLL には便利だと思う。
ロードされたプロセスに極力迷惑かけないでメモリを使えるから。
DLL_PROCESS_ATTACH で HeapCreate して、
DLL_PROCESS_DETACH で HeapDestroy すれば、
プライベートヒープを丸ごと一気に解放しちゃえて、楽チン。

漏れはあの巨大な標準ランタイムライブラリ(msvcrt.dll だとしても、
それがメモリを消費することには変わりはない)を極力使いたくないから、
C++ なプログラムの場合だと、
operator new と operator delete を LocalAlloc/LocalFree で定義して、
使うことが多い。
このとき、それが DLL ならプライベートヒープを確保して使うな。

WIN32 API はほとんど thread free なので、排他制御を考える必要はない。
もちろん、メモリの利用効率という点では malloc に一歩譲ると思うが、
そもそも、それが大きく影響するようなら、逆にメモリの使い方が下手な証拠。

…と、漏れは思ふ。
0121デフォルトの名無しさんNGNG
>>118
プロセスを頃す方法はいくつかあるが、
/subsystem:windows な PE で、かつ、窓(見える/見えないは別として)を持っているなら
>>119 の方法が一番、素直。
ツボは、いかにして頃したいプロセスの ID を抜くか…ってところ。
0122デフォルトの名無しさんNGNG
GlobalAllocって、クリップボードで他のプロセスに渡すメモリに
使いませんでしたっけ?
0123名無しさんNGNG
そこがいわゆる負の遺産というか盲腸の手術後というか。
ほかにもGlobalFreeが必要なポインタを返すやつがいくつか
あるはず。
0124118ヽ(´ー`)ノ NGNG
>>119 >>121
ありがとうございます。
実験で、とあるプログラムに WM_CLOSE を送ったらちゃんと終了できました。

しかし、本当の目的のプログラムはどうしてもFindWindowでみつかりませんでした。
ちなみにツールバーには出ないタイプで、タスクトレイに小さいアイコンとして
常駐するタイプです。他の関数で HWND を調べるしかないのでしょうか?
0125121NGNG
>>124
EnumWindows
0126デフォルトの名無しさんNGNG
モデムで通信してて、
そこから01を読書きしたいんだけど誰か方法教えて!
検索してもATコマンドばっかり(T_T)
0127torayNGNG
ボタンを押すと、c:\test.exe
を100回実行するプログラムを書きたい。
どうやればいいでしょうか。
VBしかわかりません。おねいがいます
0128デフォルトの名無しさんNGNG
>>127
for(int i=0; i<100; i++) system("c:\\test.exe");
0129torayNGNG
system を使うのか

ありがとう。
0130vmwareNGNG
vmware をVisualC++でつくらなければならなくなりました。
アドバイスを!
0131デフォルトの名無しさんNGNG
>>130
頑張れ。
0132デフォルトの名無しさんNGNG
わけわからんけど、あながち不可能でもないからガンバレ>>131
0133デフォルトの名無しさんNGNG
>>130
出花をくじくようなことを書いて申し訳ないが、
他人にアドバイスを求めなければならないようでは、
チミには不可能と思われ

第一、あれには確か特許がかかっていたはずだから、
たとえ技術的に可能でも、法律的にはおそらく不可能と思われ
0134デフォルトの名無しさんNGNG
急にある自作クラスがクラスウイザードから見えなくなってしまいました。
こんな現象知りませんか?

ビルドは出来るし、ワークスペースにも見えるんですけど・・・・
0135デフォルトの名無しさんNGNG
>>134
クラスウィザードは .clw ファイルによって管理されています。
バージョンの不整合が起こったんでしょう。
.clw を削除してクラスウィザードを立ち上げるとナンダカンダと聞いて
きますので、それが早いと思います。
また、既存のまま新規クラスのウィザード取り込みもできるハズですので
そんでもよいでしょう
0136135NGNG
>バージョンの不整合
ちょっち言い方オカシイね。プロジェクト内のファイル更新の不整合
0137デフォルトの名無しさんNGNG
>>135
サンクスです。
どうやらMFCクラスから派生したものの、やっぱ不要と考えて手動で
書き換えたせいのようです(^^;
今までエラーが出なかったのは単に選択してなかっただけのようで。

お勉強になりました。
0138デフォルトの名無しさんNGNG

質問れす。
どうも最近PCがフリーズしまくりです。
プログラムの開発をしていると良くフリーズします。
「Ctrl+Alt+Del」で再起動しようとすると「ダイアログの表示待ちでシステムがビジーです。」って青い画面が表示されます。
これってプログラムが悪いんですかね。
逝く寸前にダイアログを表示しようとはしてないんですけど・・・
ビルドするとビルド中に逝くこともある。(コンパイルからリンクに移行するときに良く逝く)
他のプログラムでフリーズすることもあるが、自分のプログラムを動かした後に逝くことが多い。
これってどこが悪いんですかね?

ちなみに僕チンの頭は悪くありましぇん。
0139デフォルトの名無しさんNGNG
メモリがたりねぇんだよ!
そうじゃなかったら割り当てたメモリを解放しわすれてんだろ
0140RIP_MAPIRONGNG
システムリソースの残量は何パーセント?極端に減っていたら
使わないデバイスをデバイスマネージャーで無効にする。

クロックアップしているならFSBを落す。もしくは、ハイブリッドなメモリの構成
ならハイブリッドな構成を改める。
0141デフォルトの名無しさんNGNG
質問です。
リソースエディタで、ドキュメントに関連付けられた
アイコンをいくらいじっても、シェルの新規作成では
デフォルトの破れアイコンが出てきます。
icoファイルからいじっても同じ、シェルの
ファイルタイプの関連付けからやってもダメ(再起動すると元通り)でした。

関連付けの根本が分かってないです。
定番の本/検索ワードありましたら教えてください。
0142デフォルトの名無しさんNGNG
アイコンキャッシュに残ってた…なんてオチじゃねーだろなっ!
0143141NGNG
…そのオチでした。
すいません。

「アイコンキャッシュ」で検索して、
ShellIconCacheにたどり着きました。逝ってきます。
0144デフォルトの名無しさんNGNG
あほみたいな質問ですみません。

CBitmapを使って、256色のビットマップを作りたいのですが
どうしたらよいのでしょうか?
0145デフォルトの名無しさんNGNG
>>144に付け足しで、
画面はフルカラーで設定されていますが、
ビットマップのみ256色表示がしたいのです。
0146デフォルトの名無しさんNGNG
>>145
もうすこし具体的に何をしたいかを書いてください。
お絵かきソフトとかで256色に限定したいってこと?
0147デフォルトの名無しさんNGNG
>>146
そんな感じです。

フルカラーだと大きなビットマップが作れないので
256色にして大きなビットマップが作りたいのです。


CBitmap.Create(幅、高さ、1,8,0)
とやるところまでは解ったのですが、
CDCの方も何かをしてやらないと表示され無いんですよね?


よろしくお願いします。
0148デフォルトの名無しさんNGNG
>>147
またまた付け足しですみません。

ダブルバッファリング先のビットマップです。
スクロールしたりするときに、大きいビットマップが欲しいのです。
0149デフォルトの名無しさんNGNG
MsCommを使ってます。
ダイアログにコントロールを貼り付けずに使いたいのですが。
何故かというと、MDIでメニューから通信を使いたいのです。
隠しダイアログ作るとかいった泥臭技は最終手段として考えて
いるのですが、もっとすっきりした正攻法はないでしょうか。
0150デフォルトの名無しさんNGNG
>>147

>>59 をMFCにアレンジしな。CBitmapとCDCをのメンバ関数使ってな。
これで分からなかったら初心者スレあったと思うからそこ逝きな。
0151デフォルトの名無しさんNGNG
過去ログ逝き防止age
0152defaultの名無しさんNGNG
>>149
正攻法1:
RTS/CTSフロー制御をつける。
メッセージポンプの中で受信フラグを見る。
受信していれば→処理

正攻法2:
入力スレッドを立て、受信したらEventを立てる。
メッセージポンプの当たりでイヴェントをチェック。
0153149NGNG
>>152 レスありがとっ!

C***Docのメンバ変数として、CMSCommのインスタンスを作ってと
考えているのですが。
メッセージポンプって?今から調べてみます。
0154さとうNGNG
WS_CHILD | WS_VISIBLE | ES_WANTRETURN | ES_MULTILINE |
ES_AUTOVSCROLL | WS_VSCROLL | ES_AUTOHSCROLL | WS_HSCROLL ,
でウィンドウを作り,
strcat(str,call);
strcat(str,"\n\t");
Edit_SetText(hEdit, str);
でテキストを表示すると改行されず,改行マークが文字化けしてしまいます.
strには改行がちゃんと入っているのですが.
0155デフォルトの名無しさんNGNG
>>154
ひさびさかな?
改行は\r\nです。
0156デフォルトの名無しさんNGNG
char Moji[10];
Moji="Test";

とすると、Teだけを取り出し時はどのようにしたらいいですか?
0157デフォルトの名無しさんNGNG
>>156
にゃんか書いてる意味がよく分からんが、
Moji[2] = '\0' ってことか?
0158デフォルトの名無しさんNGNG
>>157
えぇと、Moji[0]はT、Moji[1]はeなんだけど。
それをつなげるには、どうしたらいいかな?と。
0159デフォルトの名無しさんNGNG
>>156
char *sptr = strstr( Moji, "Te" );
if( sptr )
 sptr[strlen("Te")] = '\0';

実行結果>Moji = "Te";

こういうことじゃなくて?
0160デフォルトの名無しさんNGNG
>>158
お前は、C言語そのものを勉強しろ。
ポインタあたりが全然解ってないだろ?
0161デフォルトの名無しさんNGNG
>>157
あ、、なんだか分からない命令文とかあるので
今から実装してみます。
ありがとうございまーす
0162>>147NGNG
あっちで返事した者だが、こっちでも答えてやる。
っていうか質問はどっか一箇所でした方が良いと思う。

8bit の HBITMAP が DC に Select できない、というのが
そもそもの問題(あっちのスレにそう書いてあるのだ)なら、
CreateDIBSection で DIB の HBITMAP 作ればたぶん Select
できるぞ。使い方はドキュメント読んで。
0163中学生NGNG
C言語でsinカーブを書くにはどうしたらいいの?
ソースコード見せて。
ちなみにコンパイラはVC++6.0
0164デフォルトの名無しさんNGNG
>>163

http://www.google.com/

好きなだけご覧ください。
0165デフォルトの名無しさんNGNG
いやんエッチ!
0166デフォルトの名無しさんNGNG
163>>
Y=Asin(Wt+(2PI)/λ)r) うろ覚え。
これじゃないの?
0167デフォルトの名無しさんNGNG
BeginPaint() とか EndPaint() とか
MoveToEx() とか LineTo() とか
0168デフォルトの名無しさんNGNG
>>163
サインカーブは厨房にはまず理解できないと思う。
まず、ラジアンって知ってるか?
0169168さん@今日は臨休NGNG
//ほれ、即席だ
//かなり他のソースを流用したから分かりにくいだろうが
//文句足れんじゃねえぞ
#include <windows.h>
#include <math.h>

LRESULT CALLBACK WndProc (HWND, UINT, WPARAM, LPARAM);

BOOL InitialProcess(HDC);

HINSTANCE hInst;
HWND hwnd;
LPBYTE Buf;
BITMAPINFO BMI;
0170168さん@今日は臨休NGNG
//続くぜ

int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,
PSTR szCmdLine, int iCmdShow){

MSG msg;
WNDCLASSEX wndclass ;

hInst=hInstance;

wndclass.cbSize = sizeof(wndclass);
wndclass.style = CS_HREDRAW | CS_VREDRAW;
wndclass.lpfnWndProc = WndProc;
wndclass.cbClsExtra = 0;
wndclass.cbWndExtra = 0;
wndclass.hInstance = hInstance;
wndclass.hIcon = LoadIcon (NULL, IDI_APPLICATION);
wndclass.hCursor = LoadCursor (NULL, IDC_ARROW);
wndclass.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);
wndclass.lpszMenuName = NULL;
wndclass.lpszClassName = "Test Window";
wndclass.hIconSm = LoadIcon (NULL, IDI_APPLICATION);

RegisterClassEx (&wndclass);

hwnd = CreateWindow ("Test Window",
"曲線絵画",
WS_OVERLAPPEDWINDOW,
50,50,
640+6,480+30,
NULL,
NULL,
hInstance,
NULL);

ShowWindow (hwnd,iCmdShow);
UpdateWindow (hwnd);
HDC hdc = GetDC(hwnd);
if(InitialProcess(hdc) != TRUE){
ReleaseDC(hwnd,hdc);
return msg.wParam;
}
ReleaseDC(hwnd,hdc);
while (GetMessage (&msg,NULL,0,0)) { // メッセージループ

TranslateMessage(&msg);
DispatchMessage(&msg);

}

return msg.wParam ;

}
0171168さん@今日は臨休NGNG

BOOL SetDIBInfo(LPBITMAPINFO BMI ,int Width,int Height)
{
BMI->bmiHeader.biBitCount = 24;
BMI->bmiHeader.biSize= sizeof(BITMAPINFOHEADER);
BMI->bmiHeader.biWidth = Width;
BMI->bmiHeader.biHeight = Height;
BMI->bmiHeader.biCompression = BI_RGB;
BMI->bmiHeader.biPlanes = 1;
return TRUE;
}
0172168さん@今日は臨休NGNG
BOOL InitialProcess(HDC hdc)
{
int i;
int x,y;
const double PAI = 3.141592;

Buf = (LPBYTE)malloc(640*480*3);
SetDIBInfo(&BMI,640,480);
for(i = 0;i<640*480*3;i++){
Buf[i] = 255;
}
for(x = 0;x<640;x++)
{
Buf[(240*640+x)*3]=0;Buf[(240*640+x)*3+1]=0;Buf[(240*640+x)*3+2]=0;
}
for(y = 0;y<480;y++){
Buf[(y*640+160)*3]=0;Buf[(y*640+160)*3+1]=0;Buf[(y*640+160)*3+2]=0;
Buf[(y*640+320)*3]=0;Buf[(y*640+320)*3+1]=0;Buf[(y*640+320)*3+2]=0;
Buf[(y*640+480)*3]=0;Buf[(y*640+480)*3+1]=0;Buf[(y*640+480)*3+2]=0;

}
for(x = 0;x<640;x++)
{
y = (int)240+sin((double)(2*PAI/640)*x)*120;
if(y < 480){
if(y >= 0){
Buf[(y*640+x)*3] = 0;Buf[(y*640+x)*3+1] = 128;Buf[(y*640+x)*3+2] = 128;
}
}
y = (int)240+cos((double)(2*PAI/640)*x)*120;
if(y < 480){
if(y >= 0){
Buf[(y*640+x)*3] = 128;Buf[(y*640+x)*3+1] = 128;Buf[(y*640+x)*3+2] = 0;
}
}
y = (int)240+tan((double)(2*PAI/640)*x)*120;
if(y < 480){
if(y >= 0){
Buf[(y*640+x)*3] = 128;Buf[(y*640+x)*3+1] = 0;Buf[(y*640+x)*3+2] = 128;
}
}
StretchDIBits(hdc,0,0,640,480,0,0,640,480,Buf,&BMI,DIB_RGB_COLORS,SRCCOPY);
if(GetAsyncKeyState(VK_ESCAPE)<0)
return FALSE;
}
return TRUE;
}
0173168さん@今日は臨休NGNG
//これで終わりだ

LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
PAINTSTRUCT ps;
HDC hdc;
hdc = GetDC(hWnd);

switch( message )
{
case WM_PAINT:
hdc = BeginPaint (hWnd, &ps);
StretchDIBits(hdc,0,0,640,480,0,0,640,480,Buf,&BMI,DIB_RGB_COLORS,SRCCOPY);
EndPaint( hWnd, &ps );
break;
case WM_DESTROY:
PostQuitMessage( 0 );
break;
default:
return DefWindowProc( hWnd, message, wParam, lParam );
}
ReleaseDC(hWnd,hdc);
return 0;
}
0174デフォルトの名無しさんNGNG
漏れも組んでみたよ

#include <windows.h>
#define WIDTH 600
#define HEIGHT 300

LRESULT CALLBACK WndProc(HWND hwnd,UINT uMsg,WPARAM wParam,LPARAM lParam){
 switch(uMsg){
 case WM_PAINT:
 PAINTSTRUCT ps;
  HDC hdc=BeginPaint(hwnd,&ps);
  MoveToEx(hdc,WIDTH-1,HEIGHT/2,0);
  for(int x=0;x<WIDTH;x++){
   double y=(1-sin(2*3.14*x/WIDTH))*HEIGHT/2;
   LineTo(hdc,x,(int)y);
  }
  EndPaint(hwnd,&ps);
 }
 return DefWindowProc(hwnd,uMsg,wParam,lParam);
}

int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR szCmdLine,int nCmdShow){
 WNDCLASS wc;
 memset(&wc,0,sizeof(WNDCLASS));
 wc.lpfnWndProc=WndProc;
 wc.hInstance=hInstance;
 wc.hbrBackground=(HBRUSH)GetStockObject(WHITE_BRUSH);
 wc.lpszClassName="CLASS";
 RegisterClass(&wc);
 CreateWindow("CLASS","",WS_POPUP|WS_VISIBLE,0,0,WIDTH,HEIGHT,0,0,hInstance,0);
 MessageBox(0,"OK を押すと終了",0,0);
}
0175デフォルトの名無しさんNGNG
む、ギリギリ省略されないと思ってたのに…欝墮齒腦
0176デフォルトの名無しさんNGNG
switch(uMsg){ の真下に次の2行追加。さらに欝

 case WM_NCHITTEST:
  return HTCAPTION;
0177さとうNGNG
>155さん
ありがとうございました。大変助かりました。
0178デフォルトの名無しさんNGNG
ウィンドウにボタンやコンボボックスのコントロールを配置しました。
TABキーでフォーカスを移動させたいのですが、VCに、VBのTabIndexのような設定を
行うための手段はありますか?
自分でWM_KEYDOWNを拾ってフォーカスを管理しないといけないのでしょうか?
教えてください。
0179デフォルトの名無しさんNGNG
>>178
CTRL+D
0180デフォルトの名無しさんNGNG
>>178
Ctrl+D又はタブオーダー
0181高校生NGNG
C言語ってグラフィックツールがないから、
どうやってグラフ描いたらいいか分からん。
計算はCでやってグラフ描画はExcelでやったほうがいいのかな?
0182デフォルトの名無しさんNGNG
>>181
それでもいいよ。

VCなら自分でグラフの描画できるけどね。
0183修士一年NGNG
非常に申し訳ない。
VC++を研究に使うんだが、グラフ表示
の関係上C言語のみでは不可能なのだと気づいた。
つきましてはVC++のいい入門書の紹介をお頼み申し上げる。
ちなみにCは分かる(つもりだ)。
0184デフォルトの名無しさんNGNG
>>183
とりあえず「猫でもわかるプログラミング」ってページを検索してください。
0185デフォルトの名無しさんNGNG
>>174 の描画部分をちょっと書き換えれば大抵のグラフは描けると思うが…
0186デフォルトの名無しさんNGNG
にょにょにょ。
ttp://www.kumei.ne.jp/c_lang/index.html
0187デフォルトの名無しさんNGNG
>>178
VBのTabIndexってどういうヤツ?
0188脂漏とNGNG
#include <stdio.h>

int main(void)
{
int i, j;
int kuku[4][5];

for(i=0;i<4;i++)
for(j=0;i<5;j++){
kuku[i][j] = i*j;
}

for(i=0;i<4;i++){
for(j=0;i<5;j++)
printf("%d ", kuku[i][j]);
printf("\n");
}

return 0;
}

どうも上のfor文で無限ループに突入するみたいなんですけど
どうしてでしょうか?
0189デフォルトの名無しさんNGNG
for(j=0;i<5;j++){
i<5→j<5じゃ無いの?
0190デフォルトの名無しさんNGNG
>>188
http://piza.2ch.net/test/read.cgi?bbs=tech&key=986528326&st=25&to=25&nofirst=true
0191脂漏とNGNG
>>189,190
ありがとうございました。
謎が解けました。
019290NGNG
>>191
コードはコピペしちゃいかんよ。
0193デフォルトの名無しさんNGNG
↑
0194デフォルトの名無しさんNGNG
↑
0195デフォルトの名無しさんNGNG
あああげげげ
0196デフォルトの名無しさんNGNG
ふと考えたんですが
RAMディスク使ってビルドの過程を高速化することってできないですかね
0197デフォルトの名無しさんNGNG
>>196
とっくにキャッシングしてると思われ。
0198デフォルトの名無しさんNGNG
そもそもリンカが使ってるファイルは実はファイルじゃなくてメモリマップトファイルだから
実メモリを山のように実装しておけばそれで済む。
0199デフォルトの名無しさんNGNG
10年前の発想>196
0200デフォルトの名無しさんNGNG
最近VC++を触りはじめたんだけど、MFCとやらを使わない場合は
メッセージによってswitchで分けたところに、ひたすらやりたいことを
する関数をMSDNで見つけて、書いてくだけでいいもんなの?
簡単なツールを作るのに勉強がてらVC触ってるだけなんだけど。
0201デフォルトの名無しさんNGNG
>>200
無理しないでMFC使えばよいと思うが・・・
0202デフォルトの名無しさんNGNG
>>201
小難しそうで_・)
他スレでC++しらきゃだめ、みたいなことも書いてあったので。
0203デフォルトの名無しさんNGNG
>>200
メッセージループ作るとこまで逝ったのなら、
大体そんなもんだ。
0204デフォルトの名無しさんNGNG
デバッグ実行中にOutPutWindowに以下のメッセージが
出るんだけど、ほっといて大丈夫?

>No handler for command ID 0xE125, disabling it.
>SENDING command id 0xE107 to CMDIView target.
0205デフォルトの名無しさんNGNG
あるボタンを押したときに単純なテキスト入力コントロール(Edit Box)を
表示させたいのですが、VBの場合は確かInputString関数を使えばできます。
VCのこれと同等の関数はないでしょうか。EditBoxだけのダイアログをあまり
作りたくないのです。
0206デフォルトの名無しさんNGNG
1つ作って、使いまわせば良いんじゃないかな?
0207デフォルトの名無しさんNGNG
↑
やっぱそうですかね。そうしまっす。ありがと〜。
0208デフォルトの名無しさんNGNG
>>202
C++を知らないでウインドウズプログラミングって組めるのか?
とりあえず思いっきり無理な気がするんだが。
0209デフォルトの名無しさんNGNG
>>208
出来るよ。
「猫でもわかる」(http://www.kumei.ne.jp/c_lang/) はほとんどCだし。

俺はやりたいとも思わんけど。
021090NGNG
>>208
C++が一般的になる前はCで書いてたよ。
もちろん今でも書けるけど、機会は減ったね。

MFCが出たてのどうしようもない頃は
わざとMFCなしで書いてたよ。

遠い昔だ...
0211デフォルトの名無しさんNGNG
SDKでの描画ダブルバッファについて教えてください

以下のソースで何も描画されないのは何故でしょうか?
GetDeviceCaps()でRC_BITBLTは確認してますし
CreateCompatibleDC(),BitBlt()も成功しています
下のソースではhdcにDrawすると描画され、hdcにDrawすると描画されません

環境VC++6.0 WindowsNT

case WM_PAINT:
 hdc = BeginPaint (hWnd, &ps);
 hdcnew = CreateCompatibleDC(hdc);
 RECT rt;
 GetClientRect( hWnd, &rt );
 DrawText( hdcnew, "AAAA\n", 5, &rt, DT_CENTER );
 BitBlt(hdc,rt.left,rt.top,rt.right-rt.left,rt.bottom-rt.top,hdcnew,0,0,SRCCOPY);
 EndPaint( hWnd, &ps );
 break;
0212デフォルトの名無しさんNGNG
>211
CreateCompatibleBitmap()とSelectObject()が抜けてるよ。
基本は、
「WM_CREATEで裏画面を作成」
      ↓
「WM_PAINTで裏画面からコピー」
だから、それから挑戦してみたら。
参考までに。
http://www-online.kek.jp/~keibun/win32prog/paint.html
http://www2s.biglobe.ne.jp/~maekawa/dev/vc/redraw/
0213デフォルトの名無しさんNGNG
抽象クラスの仮想関数をいくら増やしてもクラスのサイズが変わらない
のは何故かしら?あと、virtual 型名 の「型名」を変えても同じ。
どうして!?
0214デフォルトの名無しさんNGNG
>>213

「仮想関数テーブル」を検索してみてください。
0215211NGNG
ありがとうございます。

一旦ビットマップに保存して
差し替えなければならないのですね。
0216デフォルトの名無しさんNGNG
あのですね。C言語で、
ある指定した数までの素数を求めるプログラムを作った場合、
配列を使ったエラトステネスのふるいで求めるプログラムと、
線形リストによりポインタを使ったプログラムと、
普通にfor文で割っていって、割りきれた値が例えばi==jだったらそれは
素数であるといった3つの場合を考える時、
計算量とメモリの使用量はどう違うんでしょうか?教えてください!
0217デフォルトの名無しさんNGNG
自分で計測しろ>216
0218216NGNG
どーやって計測すればいいんでしょうか?
0219デフォルトの名無しさんNGNG
プロファイラ使うか、手作りで計測コードを埋め込む。

埋め込む場合、
計算量は単純に時間測定、
メモリ使用量はmalloc/freeの部分に、
使用サイズ、ピークを加減算する関数をはさむ。
これでだいたい判る。
0220デフォルトの名無しさんNGNG
>>218
計測しないとわからん程度ならどうだっていいじゃん。
0221デフォルトの名無しさんNGNG
VCで、今ネットに繋いでいる回線を切断する関数ってあります?
0222デフォルトの名無しさんNGNG
>>221
InitiateSystemShutdown()
0223221NGNG
>>222
それはシステムのシャットダウンですよ。
ねたじゃないなら覚えておいた方がいいですよ。
0224煽NGNG
>>221
system("net stop \"Network connections\")";

回線ってなによ。モデム?ならそういう風に書いてくれ。
LANカードとか刺さってたらどうするのよ?
0225221NGNG
>>224
これはコマンドですか?「net」って今やってみたら「コマンドまたはファイル名が違う」と言われました。

回線っていうか、今繋がっているダイヤルアップの接続を自分の意思で切ることが出来るのかな?ということなんです。
0226煽NGNG
TAPIを調べるがよい。

ついでにいうと、開発はNT系列でやるがよい。
0227221NGNG
>>226
わからない・・・
自分でも情けないと思うんですが、TAPIの関数群を色々調べたんですが、
lineClose() などの終了関数はすべてオープンしたときのハンドルが必要みたいで、
いい日本語の説明ページが見当たらないしちょっと手詰まり状態。
それに、すでに接続されている状態から自分のプログラムを立ち上げて
接続を切りたいのですが・・・
iriaとかのツールがやってるようなやつを。
ちなみに自分のマシン限定プログラムです(WIN98)。
0228さとうNGNG
VC++のリソースエディタでエディットボックスを作るとキーを押して
もWM_CHARやWM_KEYDOWNのメッセージがダイアログボックスに送られ
ないようです。キーを押されたかどうかを知るにはどうしたらいいの
でしょうか?
0229デフォルトの名無しさんNGNG
>>228
メッセージをフックするのが一番手っ取り早いかな。

ただ…、単に入力の有無とその文字を知りたいだけなら、
親ダイアログのWM_COMMANDでEN_CHANGEを捕まえて、
EM_GETLINEやGetWindowTextなどを使うだけで済むと思います
0230デフォルトの名無しさんNGNG
>>227
Ras。
0231デフォルトの名無しさんNGNG
vector< spelma > MeatBar;
というメンバベクトルが、DLL内のクラス内にあるのですが、
std::vector<class MeatBar,class std::allocator<class MeatBar> >' は __export キーワードを使って class 'Sex' にエクスポートしてください。
と警告されます。そのあとそのメンバを参照すると、強制終了します。
vectorをDLL内のクラスのクラスメンバとして持つにはどうすればよいのでしょう。
0232デフォルトの名無しさんNGNG
ちなみに、spelmaもクラスです。
0233デフォルトの名無しさんNGNG
回線で首つって死ねば解決するよ。
0234デフォルトの名無しさんNGNG
ちなみにネタではありません。このアプリケーションの仕様をオブジェクト指向で表しました。少し不自然なところがあるものの、7不思議ということで片付けておきました。では教えてください。
0235デフォルトの名無しさんNGNG
>>234
帰れ。

プログラマーズ・ジョーク
http://mentai.2ch.net/test/read.cgi?bbs=prog&key=983059592
ここでやれ。
0236デフォルトの名無しさんNGNG
マジですよ?
0237デフォルトの名無しさんNGNG
>228

エディットボックスをサブクラス化すればメッセージは拾える。
文字が知りたいだけなら、229のとおり。
0238カカNGNG
割り込みで失礼します。

VC++6.0で、テンプレート関数を

 func<int>( 123 );

というように型を明示的に指定すると、

d:\DATA\PROGRAM\VC++\Test\TaskTest.cpp(51) : fatal error C1001: 内部コンパイラ エラー
(コンパイラ ファイル 'msc1.cpp', 行番号 1794)
Visual C++ のサポート情報 コマンドを選択してください
ヘルプ メニュー、 またはサポート情報のヘルプ ファイルを参照してください

と、内部コンパイラ エラーになることがあるんです。
サンプルコードを載せたいところなのですが、これ単純なソースコードでは普通にできるんです。
200行くらいを超えると、ほぼ確実に発生してしまいます。

今までは型キャストでなんとかしてたんですが、今回キャストで解決しようとするとものすごく長い記述になってしまう部分で・・・。
どなたか同じような現象が発生している方はいないでしょうか?
0239デフォルトの名無しさんNGNG
関数テンプレートがらみのバグはよくあることなんで
なんかがんばって、回避策を探すとよいと思われ。

とりあえず関数を短めに分割してみれば?
0240デフォルトの名無しさんNGNG
>>238
SPはあてた?あててるならスマソ。
0241カカNGNG
バグってのは一番ヤな可能性だぁ。
一応SPは5です。

「MSDN」
関数テンプレートの引数は明示的に指定できます。次に例を示します。

template<class T> void f(T) {...}
void g(char j) {
f<int>(j); //generate the specialization f(int)
}

できないじゃないかMSDNメー。
0242デフォルトの名無しさんNGNG
>>241
テンプレ使うなってことだと思われ。
0243デフォルトの名無しさんNGNG
ウチでも同じ現象が発生してるので、解決策求むage
0244さとうNGNG
>229,237
メッセージをフックする方法でうまくできました。
大変ありがとうございました。
0245デフォルトの名無しさんNGNG
GDIでダブルバッファリングってどうやるんですか。下のようにやりましたが駄目でした。
BITMAP bm;
LoadBitmap(hInstance,"IDB_BITMAP1")
HDC hdc,hdc2,buf;
hdc=GetDC(hwnd);
buf=CreateCompatibleDC(hdc);
hdc2=CreateCompatibleDC(hdc);
SelectObject(hdc2,bm);
Bitblt(buf,0,0,600,600,hdc2,0,0,SRCCOPY);
Bitblt(hdc,0,0,600,600,buf,0,0,SRCCOPY);
0246デフォルトの名無しさんNGNG
すいません、VC++で開発中に、コンパイルして実行したあと、しばらくして落ちたんですが、そのあと再起動してもう一度環境を開くと、cppファイルがバイナリファイルに変化してしまって、そのファイルのソースコードそのものが消失しました。これはどういうことでしょう。
0247246NGNG
こんな現象が起こる可能性のあるもので開発するのは怖くないですか?
0248デフォルトの名無しさんNGNG
>>246
それは別にVCが悪い訳じゃなくて、FATがぶっ壊されてるだけ。
0249デフォルトの名無しさんNGNG
>>245
bufに対するビットマップオブジェクトがない。
0250デフォルトの名無しさんNGNG
VCでMITSって作れるんでしょうか。
作り方がわかる方教えてください。
0251デフォルトの名無しさんNGNG
>249
なるほど、そういうことですか。おかげでできました。どうもありがとうございました。
0252デフォルトの名無しさんNGNG
VCで
関数呼び出しを書くときに
括弧まで書いたら、引数一覧が出るのですが
この機能の名称ってなんですか?
あと、表示できない時があるのですか、表示可能な条件とかも教えてください。
(うちのノートだと表示するのですがデスクトップだと表示しないです)
構造体メンバを示す時にも表示できるのもおねがいします
0253いおNGNG
たしか
「IntelliSense」というやつだったよーな
0254デフォルトの名無しさんNGNG
>>252

パッケージ読め。
またはMSDN読め。

あとIntelliSenceはClassWizardから情報を引っ張ってきていて
ClassWizardはわりとよくこける。
こけるとメンバ表示されなくなる。

のでメンバが表示されなくなったらVCを再起動すれば
直ることが多い。

> 表示可能な条件
ClassWizardが情報を認識していること。以上。ClassView見れ。
0255252NGNG
「IntelliSense」って名称がわからなかったので、調べようにも。
名称わかったのでMSDN読んだ調べた。
わかりました。
ありがとうございます。
0256デフォルトの名無しさんNGNG
C++は、もう破滅寸前。
ここらでSTLに挫折した、全体の95%相当のプログラマが
不買運動を起こし、消滅します。

ありがとうC言語!そしてC++さようなら!(^_^)また会えるといいね!

http://piza.2ch.net/test/read.cgi?bbs=tech&key=995820118&ls=100
0257デフォルトの名無しさんNGNG
>>256
(゚Д゚)ハァ?
0258これってバグだべNGNG
#include <stdio.h>
#include <windows.h>
static char szMsg[] = "String";
static short wDlgData[] = { LOWORD(szMsg), HIWORD(szMsg) };
void main(void)
{
printf("%08lX\n", szMsg);
printf("%04X:%04X\n", wDlgData[0], wDlgData[1]);
printf("%04X:%04X\n", LOWORD(szMsg), HIWORD(szMsg));
}
上のソースをコンパイル & 実行すると結果が以下のようになる。
0040E030
0000:0040
E030:0040
コンパイラはVC++6.0、回避方法無いかナ〜?
0259デフォルトの名無しさんNGNG
>>258
なんでそんなわけわかんないコードにする意味が全く理解できないが、
static short wDlgData[] = { LOWORD(szMsg), HIWORD(szMsg) };
↓
static long num = (long)szMsg;
static short wDlgData[] = { LOWORD(num), HIWORD(num) };
で回避できるようだ。
0260デフォルトの名無しさんNGNG
>>259
おぉ!なるほど〜
> なんでそんなわけわか
コンパイルされたダイアログのリソース・スクリプトみたいなのをプログラム内部に定義したいな〜とか思ってさ。
0261デフォルトの名無しさんNGNG
>>260

だからって>>258のコードにする理由にはならないと思うけど。
0262デフォルトの名無しさんNGNG
>>258
> 理由にはならない
ストレージを少しでも少なくしようと思っての事だけど。そうゆう意味じゃなくて?
結局以下のようなコードで解決。
解決したのは0xFFFF。マクロは説明の為のオマケね。

#define DLGCMD_TEXT 0
#define DLGCMD_EDIT 1
#define DLGCMD_CHECK 2
#define DLGCMD_END -1

#define Def_DlgText(x,y,w,h,id,p) \
  DLGCMD_TEXT,x,y,w,h,id,(short)((unsigned long)(p)&0xFFFF),HIWORD(p)
#define Def_DlgCheck(x,y,w,h,id,p) \
  DLGCMD_CHECK,x,y,w,h,id,(short)((unsigned long)(p)&0xFFFF),HIWORD(p)

static char szMsg[] = "String";
static unsigned short wDlgData[] = {
  Def_DlgText(10,10,96,20,IDC_TEXT,szMsg),
  Def_DlgCheck(10,30,96,20,IDC_CHECK,szMsg)
  };
0263デフォルトの名無しさんNGNG
上の配列wDlgData、最後にDLGCMD_END入れるの忘れちゃった
0264デフォルトの名無しさんNGNG
MFCで、ダイアログのOnPaintでオフスクリーン描画しようと思って、
void CHogeDlg::OnPaint()
{
PAINTSTRUCT ps;
CDC *dc = BeginPaint( &ps );
// dc使って描画
EndPaint( &ps );
}
ってやったんだけど、ちらついてしまいます。
dcで描画してる所をトレースしてみたら、EndPaint前なのに描画されてしまっていました。
ダイアログだとダメなんでしょうか?
0265デフォルトの名無しさんNGNG
>>264
BeginPaint/EndPaint使ったからってオフスクリーン描画になるわけではない。
バックバッファを用意しろ。
0266258NGNG
>>262

ごめん、やっぱり言ってることもやってるコードも
意味不明だわ。

ただ、前述の奴バグは確認した。
スタックだと大丈夫だけど、それ以外に配置されると駄目みたいだね。


俺って厨だったんだな。鬱だ。
0267149NGNG
>>152 どうも。MSCommコントロールを貼り付けない方法(動的Create)で、
一応送受信はできたんですが、受信イベントをフックできないです。

>正攻法2:
>入力スレッドを立て、受信したらEventを立てる。
>メッセージポンプの当たりでイヴェントをチェック。

入力スレッドというのは、受信バッファを監視する用ということでしょうか。
0268262NGNG
>>259
これは、定義したshort配列をある関数に渡すと、内容に従って子ウィンドウをぽこぽこ作ってくれる為のデータ定義です。
子ウィンドウのタイプ・サイズなどはshortで定義出来ますが、キャプション文字列は配列に収まらないので、上位・下位ワードに分けてねじ込もうとしているのでした。
0269名無しさんNGNG
ReadFileで無限ループしてバッファリングして
それでSetEvent。
でもふつうは勝手に受信させといて
APIで受信バッファをみれば良い。
0270262NGNG
あと、子ウィンドウの種類によっては必要なパラメータ数が異なるので、
構造体として定義する事が出来ないのでした。(出来ない事もないケド)
0271デフォルトの名無しさんNGNG
>>270
なんでCreateDialogIndirectを使わないのか。
0272デフォルトの名無しさんNGNG
特に派生元を意識しない独自クラスを新規作成して、メンバにコントロールを
入れるとします。この場合、コントロールへのメッセージを受け取りたい場合は、
基本クラスを設定せねば(genericじゃだめ)なりませんよね?多分。
皆さんこのような場合は基本クラスを何にするんでしょうか。
あと、基本クラスを追加(存在しない場合)する場合の手順は何かいい方法が
あるでしょうか。
0273デフォルトの名無しさんNGNG
(゚Д゚)ハァ??
0274259 (!=261)NGNG
>>268
>>271に同じ。
どの道、構造体を使うべきでは。

どうしてもって言うなら、shortで確保しないで、longで確保した方が万倍スマートです。
そんな部分のメモリケチっても、先にリソースが底尽きます。
0275272NGNG
すいません。genericでも基本クラスを設定できますね。
genericで、基本クラスを設定しなかったという状態でお願いします。
0276デフォルトの名無しさんNGNG
>>272 = >>275
何がやりたいのか全く理解できない。
とりあえずサンプルコード晒せ。話はそれからだ。
0277デフォルトの名無しさんNGNG
>257
そもそもクラスに関して何か勘違いしてないか。
0278262NGNG
> shortで確保しないで、long
そうしようと思った矢先に、解決策を思いついたのでした。
まぁ良いじゃん、16bit時代からやって来たから、貧乏癖が染み付いてるんだよ。

> CreateDialogIndirect
今はWindowsでやってるけど、将来的に他のプラットフォームへも持って行きたいんで、
なるべくAPI依存しないようにやってるんだよね。
0279デフォルトの名無しさんNGNG
>>278
だったら、リソースをコンバートする方法を考えた方が建設的。
0280278NGNG
>>279
> リソースをコンバート
ふむ〜それはそうかも。
確かに、GUIをグラフィカルにデザイン出来ないってのは辛い物がある。
今は他にもやる事いっぱいで、脱線になっちゃうんでやんないけど、また同じような問題にぶつかったらやるかなぁ。
ありがと、良いアイデア出してくれて。
0281デフォルトの名無しさんNGNG
test
0282デフォルトの名無しさんNGNG
MSCOMM使ってます。純粋にポートが開かれてるかどうかを調べる方法は
ないのでしょうか?
GetPortOpenメンバ関数にしろ、GetCommIDメンバ関数にしろ、自分自身が
開いたポートに関しては分かるのですが、他のアプリによって開かれたポートに
関しては判定できません。
最悪CreateFile API関数を使おうかと思うのですが他に簡単な方法はない
でしょうか。
0283282NGNG
ポートオープンのアクションで例外拾えました。
やた!
0284デフォルトの名無しさんNGNG
ちょっと意図とは違うのですが、
コンパイラされた後のファイルから
ソースを見ることって出来ますか?

参考にしたいプログラムがあったので・・・
危ない話すんません。。
0285デフォルトの名無しさんNGNG
>>284
失せろマルチポスト野郎。
0286デフォルトの名無しさんNGNG
ハンドルされていない例外は・・・・ってエラーは
try,catch
で受け取れない?
0287286NGNG
ゴメン。受け取れはする。
try(...)
の中で。
でも、やっぱその後に”ハンドルされていない・・・”って
メッセージが出て終了する。回避可能?
0288デフォルトの名無しさん NGNG

現在3つの問題に頭を悩ましております。

1つ目はマウスの座標のことです。
GetCursorPos で取得できるのは整数単位の座標ですが
もっと精度の高い取得はできないのしょうか?
0.1ピクセル単位で取得したいのですが・・・

2つ目はプログラム終了時にOSが自動でプログラム内で
使用したオブジェクトを破棄してくれるみたいですが
自動破棄されないものってあるんですか?
メモリなんかは勝手に破棄してくれているように見えますが(システムモニターで見ていると破棄されているように見える)
メモリの破棄は任せちゃってもいいですか?
逆に「これはプログラム終了前に必ず破棄しないと逝けない!」ってものはありますか?

3つ目はモーニング娘の吉澤ひとみが好きで好きでたまりません。
現在の彼女は強いて言うなら矢口似です。
前は矢口ファンだったので彼女の評価は比較的良かったのですが最近は吉澤にメロメロなため彼女がウザくなってきました。
彼女と別れて吉澤(本人)と付き合う最も最適な方法はどのようなものでしょうか?
ぜひ教えてください。
0289デフォルトの名無しさんNGNG
そもそもマウスカーソルは0.1ピクセル単位では動かない。っつーかネタ?
0290RIP_MAPIRONGNG
>>288
DirectInputを使って移動量を内部で累積したものを利用すれば可能。
マウスの挙動を自前で用意する事になるので、他のウインドウと共存
させるときは注意。

メモリの破棄は普通最後まで面倒見るべき。とくに他人様のオブジェクト
を構築するときは、内部でどんなリソースが確保されているか分からん。
0291無能な姦理人@Shiri-QNGNG
□□□□■□□□□□■□□□□□□□□□□□□□□□□□□□□□
□□□■■□□□□□■□□□□□□□■■■■■■■■■■■■□□
□□■■□□□□□■■■■■■□□□□□□□□□□□□□■■□□
□■■□□■□□□■□□□□■□□□□□□□□□□□□■■□□□
□□■□■■□□■■■□□■■□□□□□□□□□□□■■□□□□
□□□■■□□■■□■■■■□□□□□□□□□□□■■□□□□□
□□■■□□□□□□□■■□□□□□□□□□□□■■□□□□□□
□□■□□□■□□□■■■■□□□□□□□□□□■□□□□□□□
□■■■■■■□□■■□□■■□□□□□□□□□■□□□□□□□
□□□□■□□□■■□□□□■■□□□□□□□□■□□□□□□□
□□■□■□■□□□□■■□□□□□□□□□□□■□□□□□□□
□□■□■□■□□□□□■■□□□□□□□□□□■□□□□□□□
□■■□■□■□□□□□□□□□□□□□□□□□■□□□□□□□
□■□□■□□□□■■■□□□□□□□□□□□□■□□□□□□□
□□□□■□□□□□□■■■□□□□□□□□□□■□□□□□□□
□□□□■□□□□□□□□■■□□□□□□■■■■□□□□□□□





続きはコチラです
http://www.geocities.com/entry_k/main/main01.html
0292デフォルトの名無しさんNGNG
>>290
そういうことなんか?
>>288が知りたかったのは「マウスの移動量」でいいんか?
「マウスカーソルの座標」と「マウスの移動量」は全然違うもんじゃないのか?
0293デフォルトの名無しさんNGNG

288です。
ネタではありません。

1つ目はペイントソフトでA点からB点にマウスが移動した場合の軌跡をできるだけ正確に取りたいんです。
例えば (10,10) から (20,20) まで移動した場合のマウスの軌跡
(11.1,10.8)-(12.2,11.6)-(13.5,13.1)-(14.2,14.0) ... って具合に10分の1ぐらいの精度でマウスの微妙な動きを取得したいんです。

2つ目は自力で破棄するように心がけます。

3つ目に関しては忘れてください。
昨夜彼女とXXXして彼女の良さを再認識しました。ハァハァハァ
吉澤のことは忘れます・・・
っていうか昨日のFUNで「裸にエプロンの石川」に萌えてしまいました。
青春って素晴らしいですね。
0294デフォルトの名無しさんNGNG
>>293
ん〜と…
その用途だと、充分に短い観測周期を取らないといけないと思うんだけど。
1ms単位で>>290の言ってたようにDirectInputで移動量を監視して積算。
当然誤差が出るから、最終的にはカーソル座標で丸めないといかんと思うが。

ちなみに、1ms周期を作るにはマルチメディアタイマー使うしかないかも。
0295デフォルトの名無しさんNGNG
THICKが10msのOSで1msってどうやって測るのでせうか?
0296デフォルトの名無しさんNGNG
QueryPerformanceConter
0297デフォルトの名無しさんNGNG
>>294
それ以前にマウスは1ms単位では情報を送ってこないよ
0298デフォルトの名無しさんNGNG
VC++ でインストールプログラムを作りたいのですが、
ショートカットファイルの作成方法(API)をご存知の方
教えてください。
0299アッガイNGNG
応援お願いしますっ!!
http://www.sh.rim.or.jp/~pumpkin/choice/
0300デフォルトの名無しさんNGNG
>>293
検索すれば5分でみつかる
0301300NGNG
間違えた。
300は >>298 あてのメッセージ
0302298NGNG
すまん、見つかった
0303デフォルトの名無しさんNGNG
VC6SP5+w2kの環境で質問があるのですが、リストビューに
アイテムを挿入すると、アイコンの背景が白くなってしまうのですが
何か回避方法は無いのでしょうか?
0304286=287NGNG
誰か返事くれよ。クスン。(涙
0305ポカリストNGNG
CxxxViewの中にSplitterWndってどうやればもてるの?
おしぇ〜て
0306デフォルトの名無しさんNGNG
>>305
なぜフレームを使わない?
0307デフォルトの名無しさんNGNG
っつーか、Scribbleからやり直せ。
0308デフォルトの名無しさんNGNG
エクセルをオートメーションで操作しています。
エクセルの起動やセルの参照、書き込み、ファイルの保存等一通りできたんですけど、
マクロの実行ができません。
誰か分かる方います?
0309デフォルトの名無しさんNGNG
>>308
ごめん。俺分かんないや。何みて勉強したの?おれも興味あるんで。
0310デフォルトの名無しさんNGNG
ExecuteExel4Macroって違うかな?
0311308NGNG
>>309 VC++超初心者ってHPで質問掲示板があって、過去ログ(投稿)の
検索ができるんだけど、excelで検索してみ。
0312308NGNG
>>310 ナイスタイミング。今からやってみるよ。サンキュ。
0313デフォルトの名無しさんNGNG
>311=312
なにをやっている。何をw
0314308NGNG
>>313 どういう意味だゴルァ!!!(悪意はないよ)
0315デフォルトの名無しさんNGNG
VC6のエディタでキーワードの強調表示が出来るそうですが
オプションやカスタマイズに設定するところが見当たりあせん。
何処にあるんでしょうか?
あと、キーワードの定義ファイルって、どこかからかダウンロード
できますか?
0316デフォルトの名無しさんNGNG
>ExecuteExel4Macroって違うかな?

違います。

Application.Run

で実行できます。
0317308NGNG
>>316 "Run"関数じゃダメだったよ。ほんで"_Run2"ってウサン臭い関数があって
これで逝けた。アンダーバーで何を表してんだよ。(w
"Run"と"_Run2"の仕様は全く一緒。関数内部を見てみると、DispatchID以外
全く一緒。うーん。もちょっと調べてみるわ。
ちなみに"ExecuteExel4Macro"は、まだVBAが出る前のExcel4.0のマクロとの
互換を保つための関数のようだな。この頃俺は多分123やってたんでよく分からん
のだが。とにかく旧命令をサポートしてるってことみたいだね。

まっ、とにかく逝けたのでよしとするわ。"Run"と"_Run2"の動作や用途の違い
が分かる人は教えてくれ。分かったら俺もアプするわ。
0318デフォルトの名無しさんNGNG
>>315
ほりゃ。
http://www7.cds.ne.jp/~hayakawa/pt-06002.html
0319デフォルトの名無しさんNGNG
"Afx"ってどういう意味でしょうか。なんかの略?
0320デフォルトの名無しさんNGNG
>>319
あふろエックスだよ。覚えときなさい。
0321デフォルトの名無しさんNGNG
>>320 嘘つくなって。アナルファックエクステンションって
拡張仕様のことみたいだね。検索してみ。いっぱいヒットするよ。
0322デフォルトの名無しさんNGNG
>>321
一件もヒットしねぇぞグァラ・・・
0323デフォルトの名無しさんNGNG
CSVを読み書きするとき特に気をつけることはありますか?
・文字列内にカンマがあるときは全体を"でくくる。
・さらに文字列内に"があるときは、"を""にする。

でいいでしょうか?
0324デフォルトの名無しさんNGNG
>>323
CSVって、別に規格があるわけじゃないし。
323さんの扱うCSVがそうだったら、それでいいってしかいいようがない。
0325323NGNG
>>324
回答ありがとうございます。
できるだけ他のアプリケーションでも読み書きできる
ような形式にしたいんです。

かといって、いろいろなオプションをつけるのは
面倒なんで避けたいんです。

その場合、上記の方法が最善でしょうか?
0326デフォルトの名無しさんNGNG
>>319 Afx = Application Frameworks
0327デフォルトの名無しさんNGNG
XMLつかへ >>325
0328びんNGNG
VCを使う = C++を使う = MFCを使え
ってことなんですか?
0329一休みNGNG
>>326 xは?
0330デフォルトの名無しさんNGNG
>>329
ks
0331デフォルトの名無しさんNGNG
テンプレートクラスのインスタンスを

テンプレートクラス名1<テンプレートクラス名2<型名>> インスタンス名;

のように生成することは可能でしょうか?
0332デフォルトの名無しさんNGNG
>>331
できるよ。
0333331NGNG
>>332
レスどうもです。
以下のように簡略化したソースでコンパイルを試みたのですが、
error C2146: 構文エラー : ',' が、識別子 'arrayPoint' の前に必要です。
のようなエラーが出てしまいます。

template<class T>
class Point
{
T m_x, m_y;
};

template<class T>
class Array
{
T m_array[10];
};

void main()
{
Point<float> point;
Array<float> array;
Array<Point<float>> arrayPoint; // この行でエラーが出てしまう
}
0334331NGNG
コンパイラはVisualC++6.0 Pro + SP5 です。
0335デフォルトの名無しさんNGNG
>>333
>Array<Point<float>*> arrayPoint; // この行でエラーが出てしまう

↑*のとことに、スペース入れてください。
そうしないとコンパイラが演算子の>>と区別がつかないらしいです。
0336331NGNG
>>335
レスどうもです。
なるほど、右シフトと認識されてしまうのですね。
ありがとうございました!
0337デフォルトの名無しさんNGNG
マルチスレッドプログラムについて質問があります。

スレッドを使った場合共有リソースアクセス時に同期を取らなければなりませんが
実際どのような現象が発生するのでしょうか?

仮にWin98で共通の変数 INT nHoge; を別のスレッドから使用する場合

nHoge = 10;
のような処理を別のスレッドから実行した場合

WinNT系 + 2CPUの環境だと、完全に同時にこのような処理が行われると思うのですが
実際こういう状況になった場合、値が壊れるのでしょうか?
それとも同時アクセスによってシステムクラッシュしてしまうのでしょうか?

また
nHoge = 10;と言う処理と return nHoge; や if(nHoge)等の同時実行
(つまり書き込み中に別のスレッドから読み込む)
したばあい、読み込みの値が壊れるだけですむのでしょうか?
それとも同時実行でシステムクラッシュするのでしょうか?

上記のような処理で仮にシステムクラッシュするとしてもう一つ質問があります。
1CPUやWin98等の環境の場合上記のような事をしても、時分割で実行されるため
完全な同時アクセスにはならないと推測します。
つまりアセンブラで1命令程度の処理ならば、値が予定外になるぐらいですむと推測するのですが、
実際はどのような現象が現れるのでしょうか?

その他同期関係で注意する事があれば合わせてご教授していただけると大変助かります。
よろしくお願いします。
0338337NGNG
すいません。

上記の 6行目
>仮にWin98で共通の変数 INT nHoge; を別のスレッドから使用する場合

は書き込みミスです。無視してください。
0339デフォルトの名無しさんNGNG
・同時書き込みでデータの消失
・双方待ち状態になりデッドロック、プログラムハング
値が壊れるだけで済む、って言ってるがおもっきり重大な問題だと思うが
シングルCPUに関してはその通り
0340デフォルトの名無しさんNGNG
>>337
変数の同時アクセスでシステムクラッシュはしないよ。
どれかのスレッドが直前に書きこんだ値を読むだけ。
0341デフォルトの名無しさんNGNG
>>340
デュアルだとバス衝突したりしないの?
0342デフォルトの名無しさんNGNG
age
0343デフォルトの名無しさんNGNG
>>341

そいつはもう、マルチスレッドのソフトウェアが
どうとかいうレイヤじゃないだろう。
0344デフォルトの名無しさんNGNG
>>341
バスアービトレーションというキーワードでアーキテクチャ
の本でも探して勉強しなおせ。
0345デフォルトの名無しさんNGNG
>>341
ファイルだったらそうだが、メモリの読み書きじゃ論理エラーで終る。
0346sageNGNG
VC++のデバッガーって配列をポインタとして扱った場合に最初の要素しか見えないんだけど、なんとかならんの?
0347デフォルトの名無しさんNGNG
>>346
ならん
0348神に喧嘩を売る男NGNG
ウィルスで俺の携帯壊してくれ〜(こおせないよね(笑))
0349346NGNG
>>347
簡潔なレスどうも。では、なんとかなる良いデバッガはない?
0350デフォルトの名無しさんNGNG
http://homepage2.nifty.com/katuya/index.html
0351デフォルトの名無しさんNGNG
>>348
「こおせ」ません(ワラワラ
0352デフォルトの名無しさんNGNG
スピンボタンって、ボタンアップのメッセージってないよね。
皆どうしてる。
例えば、スピンボタンと連動させるエディットボックスの数値は動かしたい
んだけど、メイン処理はボタンアップでって場合。
0353デフォルトの名無しさんNGNG
>>352
WM_NOTIFY
0354352NGNG
>>353 もちっと詳しく。
0355デフォルトの名無しさんNGNG
>>354
PreTransrateMessage で自分でメッセージ調べれば?
0356デフォルトの名無しさんNGNG
>>352-355
SPY++という便利なものがあるだろうに。
0357デフォルトの名無しさんNGNG
>>354
ていうかMSDNで「スピンボタン」て引いてみろ
0358デフォルトの名無しさんNGNG

スタティックライブラリでのリソースの扱い方について教えてください。
スタティックライブラリ内にリソースファイルを作りました。
スタティックライブラリからリソース内のダイアログを生成しようとすると失敗します。
アプリケーション本体のリソース内のダイアログはスタティックライブラリ内から生成できます。
どうもリンクの時点でスタティックライブラリ内のリソースが正常にリンクされていないようですが
これってどうすればいいですか?
リンクの際に何か特殊なオプションを設定するのでしょうか?
環境はVC++6.0でSDKでプログラムしています。
教えてください。
0359デフォルトの名無しさんNGNG
>>358
確か MS-Linker には、複数のコンパイル済みリソースを「リンク」する能力は
無かったと思います。

ライブラリが必要とするリソースを *.rc で提供して、
アプリケーションの *.rc からインクルードしてもらう必要があります。

たとえば MFC をスタティックリンクするアプリケーションを
ウィザードで作成しても、やはりそうなっていると思います。
0360初NGNG
質問なのですが、みなさんはMFCつかってますか?
MFCつかえるようになったら、全部MFCでつくってますか?
0361デフォルトの名無しさんNGNG
使ってるよ
SDKに疲れたらMFCに手を出せばいい思う
全部MFCで作るっていうのは無謀
APIの全機能がつかえるわけではないし
CFindFileのような,ぁやιぃ(使えない)クラスがごろごろあるからね
0362デフォルトの名無しさんNGNG
>>360
今、SDKだけですか。そりゃ凄いや。
MFC主体だけど361さんが書いているように全部MFCというのは
無理があると思う。APIを直接呼び出していることも多い。
0363初NGNG
??
MFCとAPI直が
まざってるということですか?
明確に、このアプリは全部MFC!とかわける必要はなし?
0364デフォルトの名無しさんNGNG
>>363
MFCだって内部で結局APIを呼んでいる。
MFCにはいくつか致命的に使えないクラスがあって、
それを使うくらいならAPI直叩きの方がマシというだけのこと。

結局、MFCの大部分はWinAPIのラッパーでしかないので。
0365デフォルトの名無しさんNGNG
"GetFirstViewPosition"は常に最初に作った VIEW が帰って来るのでしょうか。
0366 NGNG
>>365

こういう質問は自分で確認できると思うのだが?
0367デフォルトの名無しさんNGNG
>>366
全く持って同意。
使ってみて、動きが変だとか、思い通りに動かないとかならまだわかるが、
俺らはMSDNじゃねぇっつーの。
0368デフォルトの名無しさんNGNG
>>367
> 俺らはMSDNじゃねぇっつーの。
ワラタ!
0369デフォルトの名無しさんNGNG
もう出てたらごめん。
Visual Studio とかの分割ウィンドウってどうやってるの?
ただの CSplitterWnd とは違うよね。
同じようにやろうと思ったら大変なのかな?
0370デフォルトの名無しさんNGNG
>>369
これとかどう?
http://nt.sakura.ne.jp/~miwaki/progtips/window/dockingwindow.shtml
0371369NGNG
>>370
うぉー ありがとう!
けっこう大変そうですが調べてみます。
「MFCインターナル」買ってみようっと。
0372デフォルトの名無しさんNGNG
age
0373MSDNNGNG
>>365
CDocument::GetFirstViewPosition
virtual POSITION GetFirstViewPosition( ) const;

戻り値

GetNextView メンバ関数での列挙に使う POSITION 値を返します。

解説

ドキュメントに関連付けられたビューのリスト内の最初のビューの位置を取得します。

例

//ビューのリストの最初のビューを取得します。

POSITION pos = GetFirstViewPosition();
CView* pFirstView = GetNextView( pos );
// この例では CDocument::GetFirstViewPosition
// と GetNextView を使って各ビューを再描画します。
void CMyDoc::OnRepaintAllViews()
{
 POSITION pos = GetFirstViewPosition();
 while (pos != NULL)
 {
  CView* pView = GetNextView(pos);
  pView->UpdateWindow();
 }
}

// 同じ結果を得る簡単な方法は、UpdateAllViews(NULL) を
// 呼び出すことです。
0374365NGNG
いや。そんなに寄ってたかって言われても・・・。
まぁ。精進しますです。はい。
0375デフォルトの名無しさんNGNG
ON_COMMAND_RANGEをクラスウィザードで追加できないのですが
バグでしょうか?
0376デフォルトの名無しさんNGNG
GetNextViewって登録した順番にViewが返ってくるの?
0377デフォルトの名無しさんNGNG
>>376
VC持ってますか?
持ってれば実験すればいい。
持ってないならどうだっていい。
0378デフォルトの名無しさんNGNG
age
0379デフォルトの名無しさんNGNG
VC++で、
関連づけされたファイルを起動する(という言い方も変だけど)事はできるのでしょうか

たとえばxxx.lzhをダブルクリックすると、関連づけされた解凍ソフトが立ち上がって
勝手に解凍までしてくれる状態になっている時、

プログラム中から、同じような事をしたいのです
(解凍ソフトのほうを呼び出すのではなく、あくまで xxx.lzhファイルを実行する
というふうにしたいのです・・・)
0380デフォルトの名無しさんNGNG
>>379
コマンド発行で"start xxx.lzh"ってするってはどう?
0381デフォルトの名無しさんNGNG
>379
377が参考になるぞ。
0382381NGNG
>379
おれの勘違いだった。
普通にopenではだめだな。
陳謝。
0383デフォルトの名無しさんNGNG
>>379
ShellExecute
0384デフォルトの名無しさんNGNG
>>379
レジストリ読んでコマンド実行
だめ?
0385379NGNG
ありがとうございました
勉強不足で、CreateProcessしか 知らなかったのです・・・
ShellExecuteで解決ですね!
0386NOMADNGNG
VC6スタンダード使っています。
ツリービューを使って(別の方法があるならそれでもいい)エクスプローラーの左側のようなのをつけたいのですが
どうすればよいのでしょう?
Webなどで調べてみるとダイアログを立ち上げる方法はけっこう載ってるのに表示させておくというのは
見つけられなかったんです。
ディレクトリ構造を毎回調べていくという方法なら一応今の知識でもできるのですが、
もっといい(楽な)方法があれば教えて欲しいのです。
ヒントや参考図書でもうれしいです。よろしくお願いしますm(_ _)m
0387デフォルトの名無しさんNGNG
指定されたファイルをエクスプローラで(というかフォルダで)開いて
選択された状態にする方法はないでしょうか?

ちょうどショートカットのプロパティで「リンク先を探す」ボタンを
押したときの処理みたいに。

お願いします。
0388デフォルトの名無しさんNGNG
>>386
とりあえずどうぞ
http://www.codeproject.com/shell/seashell.asp
0389デフォルトの名無しさんNGNG
>>387
ShellFolderView オブジェクトを作ってあれこれ。
0390NOMADNGNG
>>388
情報どうもです。ソース見て研究してみます。
しかし・・・これの実装は大変そうですね(^^;
0391デフォルトの名無しさんNGNG
リソースえでぉたで作ったダイアログのスピンの最大値変える方法どうやってやんのよ
0392デフォルトの名無しさんNGNG
>>391
ClassWizardでエディットコントロールに値として変数を割り当てると最大値と最小値が設定できる。
0393デフォルトの名無しさんNGNG
前から疑問だったんですが
みなさんは窓作るだけのプログラムを
何も見ないで一から書けますか?
やはり職業プログラマの人は
それくらい当然のごとく覚えてるんでしょうか?
0394デフォルトの名無しさんNGNG
書けません
それが出来るのはゲームプログラマと秀まる夫くらいです
0395デフォルトの名無しさんNGNG
>>393
わたしも無理です
Hello Worldだけでも意味がわからないソースがあるっス(w
0396デフォルトの名無しさんNGNG
>>393
できるよ。
新しいプロジェクトを作るときに「標準的なHelloWorld」選べば一発(w
VC6限定だけどね。
0397デフォルトの名無しさんNGNG
>>396
だね。

そもそも、書き溜めたソースと参考資料の検索速度で「仕事」してるようなもんだし。
趣味のプログラムの方がよっぽど手間かかる(笑
0398デフォルトの名無しさんNGNG
>>393
396、397の言うとおり
先代のコードをいかに利用するかってのもスキルの一つ。
0399デフォルトの名無しさんNGNG
あげ?
0400デフォルトの名無しさんNGNG
400おぱーい
0401 NGNG
リストビューコントロールとヘッダーコントロールの違いが
いまいちわからないのですが、どう違うんでしょう?
0402デフォルトの名無しさんNGNG
>>401
ハァ?
0403デフォルトの名無しさんNGNG
Listってのは表。
HeaderControlってのは、Listの見出し。
ListViewは、Listの頭にHeaderControlがくっついてるもの。
0404デフォルトの名無しさんNGNG
>393
覚えてるよ。VC++6.0のウイザード使わないで何回も最初から書いてたから。今思うとただの馬鹿
0405デフォルトの名無しさんNGNG
class StrngVectorList : public string,public vector,public list
{

}
0406デフォルトの名無しさんNGNG
>>393
それって普通じゃないの?
MFCって使ってるひといるの?
0407デフォルトの名無しさんNGNG
>>406
むしろ使ってないの?
自分(会社)専用ライブラリとかないとき
0408デフォルトの名無しさんNGNG
APIだけで書いてるよ、ついでにIDEも使って無い。
だけど別に作るの遅くないよ?
0409デフォルトの名無しさんNGNG
>>408
おぉ、同志よ!
WIN32 API の上に何重にも積み重ねられた
得体の知れないウンコの塊を使うよりも、
最小限の機能を極小サイズで書きたいよ。

小物を作るときは、msvcrt なんかも使わない。
0410デフォルトの名無しさんNGNG
>>409
そもそも、Win32 API 自体がコテコテにデコレーションされてるじゃな
い。MSVCRT.DLL 使わずとも KERN32.DLL, USER32.DLL, GDI32.DLL
使ってる時点で、どうせ大差ないよ。
0411デフォルトの名無しさんNGNG
>>408
それだとウィンドウプロシージャが 4000 行ぐらいになったり、
IDisplatch 派生クラスの実装にえらく手間取ったりしない?
0412デフォルトの名無しさんNGNG
>>409
おれは、サイズなんかより、見やすさ(理解速度)優先。
0413デフォルトの名無しさんNGNG
>>408
俺、MFC使ってアンタの半分の期間で同じ作業できるよ。
0414デフォルトの名無しさんNGNG
>>406
API直叩きで書くってのと「何も見ないで」書くってのにはかなり大きな隔たりが…。
俺CreateWindowの引数なんてMSDN見ないと書けないぞ。
0415デフォルトの名無しさんNGNG
>>414
俺は見ながらでも間違える自信あるね。
つか、あんな量の引数要求されてもなぁ・・・
0416409NGNG
>>410
そうは思わんけどなぁ...。

>>412
勿論、時と場合にもよるな。
漏れだって年がら年中「サイズ命」ってわけじゃない。
0417デフォルトの名無しさんNGNG
STLなんだけど。
あるコンテナを関数の引数として渡したいんだけど、関数はテンプレート関数
にしなきゃだめなのでしょうか?
0418デフォルトの名無しさんNGNG
今C++勉強してる者ですが、最近C#なるものが出てきましたよね。
これってC++今からやるよりはC#の方がいいのでしょうか?
いまいちC#ってのがわからないのですが、C#はC++の上位版
なのですか?CとC++の関係のように。今後C++に取って代わる
のでしょうか。
0419名無しさんNGNG
それは誰にもわからない
0420デフォルトの名無しさんNGNG
>>418
C#はむしろVBの代わり。
0421デフォルトの名無しさんNGNG
まったくそのとおり。C++に載り切れなかったVB厨が使うもの。
0422デフォルトの名無しさんNGNG
てっきりJavaに走ったのをネイティブコードちらつかせて
引き戻しているのかと思ったよ。
0423シドNGNG
OpenGL・VC++に関して
参考になる書籍を教えてください。
いろいろ探したんだけどいいのがなくて。
お願いします。
0424デフォルトの名無しさんNGNG
Windowsプログラミング
0425シドNGNG
OpenGL・VC++に関して
参考になる書籍を教えてください。
いろいろ探したんだけどいいのがなくて。
お願いします。
0426シドNGNG
OpenGL・VC++に関して
参考になる書籍を教えてください。
いろいろ探したんだけどいいのがなくて。
お願いします。
0427名無しさんNGNG
アマゾンでさがせば
いっぱいでてくんじゃない?
0428デフォルトの名無しさんNGNG
いまさらOPENGLですか?
0429デフォルトの名無しさんNGNG
たしかにいまさらなんだけど、
今一番OpenGLしやすい環境ってWindowsかもね。
0430デフォルトの名無しさんNGNG
あのVC++の6を使って勉強しようと思いインストールしましたが
もう、これかなり古いですか?
勉強用にはどんなものなのでしょうか?
マジレスたのみます。
0431デフォルトの名無しさんNGNG
>>430
少しは頭使いなよ。MS の Web サイトに行けば、その程度の情報はす
ぐ入手できるでしょ?
0432デフォルトの名無しさんNGNG
430ですが、まだ初心者で
VC++みてるだけで頭がくらくらして
熱がでて寝込みそうなくらいなんです。
MSのWEBサイトもみただけでぶったおれそう。
0433デフォルトの名無しさんNGNG
とにかくVC6のサービスパック落として来い
0434デフォルトの名無しさんNGNG
>>432
まぁ、初心者ならわかるが・・・

別に古くはないよ。(一応売ってる中では最新版だから)
ただ、そろそろ新しいのが出る。
0435デフォルトの名無しさんNGNG
ダイアログボックスでエジットボックスに初期の文字列を設定します。
それをプロシージャの中でやるとうまくいくんですが、
ごちゃごちゃしてきたので新しい関数にまとめて呼ぶようにしたら
文字列が設定されなくなりました。
なんででしょうか?
0436デフォルトの名無しさんNGNG
>>435
状況が良く分かりません。具体的にウィンドウプロシージャでどのメッ
セージを受け取ったときに、どういう処理をしているのか書いて下さい。
0437デフォルトの名無しさんNGNG
430です。
甘えてしまいました。すみません。
なんとなく今のバージョンでも
よさそうな感じですね。
失礼しました。
0438435NGNG
部分的に抜き出すと、
case WM_INITDIALOG:
initdialog();
return 0;
...
void initdialog(){
SetDlgItemText(hWnd, IDC_EDIT1,"123");
return;
}
こんな感じです。
これだとエジットボックスに文字列が表示されないのですけど、
SetDlgItemTextをプロシージャの方にコピペするとうまくいきます。
0439デフォルトの名無しさんNGNG
hWndはグローバル変数か?
0440 NGNG
そういやVSの次バージョンっていつ頃発売なんだろ・・・。
もうかなり長いこと6.0のような気が。
0441435NGNG
>>439
Yes.
0442デフォルトの名無しさんNGNG
昨日だよ。早く買いに行こうね。
0443デフォルトの名無しさんNGNG
>435
それだと別に関数にしなくてもいいだろ。むしろしたほうが汚い。応用性無いクソ関数だし。
0444デフォルトの名無しさんNGNG
MFCを使っていると、F1が勝手にヘルプ起動になってしまいますが、
これを避けて、自前の処理を呼び出す事は出来るのでしょうか?
ダイヤログベースの窓で作っているのですが、
そもそもファンクションは、今の私では、
PreTranslateMessageの、WM_KEYDOWNメッセージでしか取れません。(T_T)
F1に至っては、ヘルプを探す窓が表示されるだけで、
PreTranslateMessageにも何も来ない感じです。
MFCさえ使わなければ・・・という感じなのですが、
非MFC化する時間が無いこともあって焦ってます(^^;
0445デフォルトの名無しさんNGNG
マイクロソフト・フライドチキンはビルゲイツ独自の製法にのっとって丁寧に作った美味しいフライドチキンです。
0446デフォルトの名無しさん NGNG
VisualC++ 6.0がインストールできません。
どうすればいいでしょう?
0447デフォルトの名無しさんNGNG
>>446
あきらめなさい。
0448デフォルトの名無しさんNGNG
VC++は2枚目のCDに大半のデータが入っています。ですので割れで1枚目のCDだけ手に入れてもインストールできません。残念でしたお馬鹿さん。
0449デフォルトの名無しさんNGNG
IRQ割り込みをVCアプリから使うことは出来るのでしょうか?
0450デフォルトの名無しさんNGNG
WinInetのFTPを非同期で使うプログラムを作成してるんですが。
FtpGetFile要求後の中断がうまくできません。
FtpハンドルをInternetCloseハンドルで削除すると
WinInet内部で落ちてしまいます。
なにか情報などを知っている方いませんか。
0451デフォルトの名無しさんNGNG
>>450
WinSock使え
0452デフォルトの名無しさんNGNG
>>451
やっぱそれしかないですかねー。
WinInetのFtpは特に不安定でイヤになりますよほんと・・・・。
0453デフォルトの名無しさんNGNG
受け取った2つのLIBファイルをEXEに組み込んでビルドしたら
「〜は他で使用されてます」みたいな競合(?)エラーが沢山出たん
ですけど。。。
これはLIBの作成者が悪い?それとも私が回避できる問題なのでしょうか?
0454デフォルトの名無しさんNGNG
無視してかまへん
0455デフォルトの名無しさんNGNG
>>444
Acceleraterリソース見たか?
0456デフォルトの名無しさんNGNG
VC6使ってますけど、コンパイル時に、他のdll(mfcのdllじゃないやつ)を.exeの内部に組み込んでしまって、.exeだけにしたいのですが、例えばdllの名前がtest.dllだとしたら、どういう風にコンパイルすればいいんでしょうか。よろしくお願いします。
0457デフォルトの名無しさんNGNG
あの、DLLの意味分かってる?
0458デフォルトの名無しさんNGNG
>>456
たしかに全部1ファイルにして、DynamicにLoadしたい場合がある。
納品物件とか、一応モジュール化したけど、リリースで使うのが
決まってる様なやつなど。静的にリコンパイルなんてしたくないしね。
そのまま実行できるアーカイバってのがあったと思う。
(伸長したDLLを読みに行ってくれるかは疑問だけど)
0459デフォルトの名無しさんNGNG
なんかdllをlibにするツールなかったっけ?
0460sageNGNG
>>459
dllのインポートライブラリを作るツールじゃないの?それ
0461459NGNG
>>460
スマソ、そうみたい。DirectX関係のやつね。
0462デフォルトの名無しさんNGNG
原理的には可能なのかな?
詳しい人いない?
0463PeFileWrapperNGNG
>>462
条件が揃えば不可能ではないと思う。
条件と言うのは、元の .exe と .dll を選ぶということ。
ただしその条件を満せる可能性は、
両者をあらかじめ故意にそのように作りでもしない限り、
ほとんどゼロといえる。


たとえば、両者がともにダイアログリソースを持っていたとする。
リソースには文字列(名前)か序数のどちらかを割り付ける。

もし .exe と .dll でおなじ名前か序数のダイアログリソースが
ひとつでもあったら、
両者を互いに干渉することなくくっつけて
ひとつのバイナリにすることは不可能。
ダイアログに限らず、他のタイプのリソースでも同様。

…これはあくまでひとつの例だけどね。
0464デフォルトの名無しさんNGNG
リソースに突っ込んで実行時に書き出しLoadLibrary
0465デフォルトの名無しさんNGNG
>>464
それだとみかけ上ひとつのDLLにみえないこともないけど、
結局リソース内のデータを複数のDLLとしてその場でファイル生成して、
そのDLLごとにLoadLibraryってことですよね?

結局リソースのセクションとしてロードされているわけだから、
そのままセクションの属性を変えて、フィックスアップして
一発でやりたいですね。セクションの属性を変えるのは
簡単そうだけど、コードとデータのセクションのフィックスアップは
めんどうだなあ。なんかスマートな方法ってないもんでしょうか。
0466463NGNG
>>465
Fixup はかなり面倒だけど、難しいわけじゃないから頑張ればできる。


Fixup の手を抜くなら、ベースアドレスを指定して、
.reloc セクションをぶった切ればいい。(あらかじめ Fixup しておく)


ただし TLS が使えないことは自明。
あと、モジュールハンドルをもたないから、
それを直接・間接に要求する API は全滅。
あと、スレッドの Attach と Detach で
DLL の初期化ルーチンを呼ぶことができない…とか。

Fixup の処理と同様にして IAT を埋める必要があるから、
そのときにハックしてシミュレートすれば、
モジュールハンドルを要求する API はなんとかなるけど、
かなり大変なコードになると思う。


で、普通ならこのあたり(API のシミュレート関連)を DLL に
しておきたいと思うところだが、それをやってしまうと、
この場合、意味がなくなっちゃう。 (藁


いろいろ制限が厳しいけど、
不可能というわけではない。

ただし、そこまで時間とお金をかけてまでして、
ひとつのバイナリにすべてを押し込む価値(意味、必要)があるのかどうか、
最後はこいつを天秤にかけることになるだろうな。

漏れは、意味がないと思うけどな。
どのみち、DLL のバージョンの違いで動かない…なんてことは、
Windoze を使う以上、不可避だからね。
0467デフォルトの名無しさんNGNG
>465
そんなにセクションとフィックスアップを多様されるとセックスアップと読んでしまうじゃないか。
0468デフォルトの名無しさんNGNG
COMについて教えてください。

pObj->QueryInterface(IID_IDataObject, (PPVOID)&pIDataT);
このようなコードがよくありますが、

IID_IDataObject を取得しようとした場合 pObj-> が必要になりますが
この pObj の部分はどのように調べたら良いのでしょうか?
CoCreateInstance(CLSID_***
っていうので取得するようですが、この CLSID_*** の部分に何を指定するか
どう調べたらいいんですか?

「IID_IDataObject を取得するには CoCreateInstance で CLSID_*** を指定して、それから QueryInterface しろ」
ってどこかに書かれているのしょうか?

現在やりたいのはドラッグ&ドロップでのファイル名の交換です。
VCのサンプルを見て勉強中なんですがCOMで挫折しています。
全然分からないのは DoDragDrop の引数の IID_IDataObject にデータを格納するようですが(多分)
どうやって格納するんですか?
どこかのサイトに分かりやすいサンプルがあるようでしたら教えてください。
0469デフォルトの名無しさんNGNG
データを渡す側は、

class FileNameData : public IDataObject
{
  // GetData とか QueryGetData, EnumFormatEtc
  // GetDataHere, GetCanonicalFormatEtc, SetData, DAdvise,
  // DUnadvise, EnumDAdvise, QueryInterface, AddRef, Release
  // を(ちゃんと渡したいファイル名を返すように)自分で実装。
}

こんなのを作って new FileNameData かなんかでオブジェクトを作る。
0470デフォルトの名無しさんNGNG
CListViewで質問です。

class CMyListView : public CListView
{
protected:
  CMyListView();
  DECLARE_DYNCREATE(CMyListView)

public:
  CListCtrl &m_List;
...
};

みたいにして、OnInitialUpdate()辺りで、
m_List = GetListCtrl();
というようにしたいのですが、コンストラクタで何とかしろゴルァーみたいなエラーが出てしまいます。
うまく回避して実現する方法がありましたら教えてください。よろしくお願いします。
0471デフォルトの名無しさんNGNG
>>470
メンバにしなくてもローカル変数にそのつど受ければいいんじゃ…。
どうしてもメンバにしたけりゃ

public:
  CListCtrl* m_pList;

としといて
m_pList = &GetListCtrl();
と取る。
0472デフォルトの名無しさん01/08/27 09:49ID:s7D152vQ
ワーカースレッドを AfxBeginThread にて作っております。
このとき、構造体を渡したいのですが、void受けなので、メンバデータ
が飛んでしまいます。どうしよ。
0473デフォルトの名無しさん01/08/27 11:24ID:5m6UTQbg
>>472
受け取ったらキャストしろ
047447201/08/27 11:35ID:s7D152vQ
void受けは関係なかった。スマソ。
キャストしてもうまくいかん。
通常の関数受け渡しではキャストすればうまく逝くんだが、スレッド関数では
だめなんだ。
ちなみに構造体のアドレスはきちんと渡せてる。でもメンバがグチャグチャ。
047547201/08/27 11:51ID:s7D152vQ
呼び出し元で構造体をポインタ宣言して、メモリ確保してポインタを渡してやれば
うまくゆく。

呼び出し元で構造体を宣言して、ポインタ(&)を渡してやればうまく逝かない。
どうして???
0476デフォルトの名無しさん01/08/27 12:00ID:U/MfduGw
>>472
>呼び出し元で構造体を宣言して、ポインタ(&)を渡してやればうまく逝かない。
>どうして???
スコープ外だから。
047747201/08/27 12:03ID:s7D152vQ
>>476
別スレッドだから、スコープ外になるってことか?
サンクス。
0478デフォルトの名無しさん01/08/27 13:42ID:QY1C3w3s
>>477
違う。
そのスレッドが動作中に、ローカルで宣言したスタック領域が解放されるから。

スタック領域にメモリ確保
↓
スレッド生成、確保したポインタ渡す
↓
return(スタック領域解放)

この時点で、別スレッドで処理しているメモリが解放される。
デバッガでブレークしかけて追ってみそ。
0479デフォルトの名無しさん01/08/27 14:30ID:.CyrU1AM
>>477
開放されるというか、ローカル変数用の領域(スタック)は使いまわし
されるから、非同期で動いてる別のスレッドに渡しちゃいけない

mallocしたくない場合は同期オブジェクト使って、作ったスレッド
が自分のローカル領域にコピーするまで待つようにすれば大丈夫
048047201/08/27 14:42ID:s7D152vQ
>>478

おおっ!なるほど!
ということは、スタティックな領域に置くか、スレッドを呼び出す関数を記述
しているメンバ関数を持つクラスのメンバにするなどとせねばならないですね。
ホントにありがとっ!
048147201/08/27 14:45ID:s7D152vQ
>>479

おおっ!そういうやり方もありますか。勉強してみます。サンクス!
0482デフォルトの名無しさん01/08/27 15:58ID:s7D152vQ
test
0483デフォルトの名無しさん01/08/27 17:52ID:wWk80Tes
昔作ったプログラムを作り直しているのですが、ソースリストが長すぎるために
分割してみようと考えたのですが、今まで全て1本のソースでプログラムを作ってきたので
分割の仕方がよく分かりません。
ただ分割しただけでは、外部参照が未解決です・・・等のエラーが沢山出て
ビルドもできません。
ソースリストを分割する際には、どのような事に気をつけたら良いんでしょうか?
0484デフォルトの名無しさん01/08/27 18:17ID:CbLq.TAQ
>>483
宣言と定義
0485 01/08/27 18:57ID:vJfY8N1k
>>483
それってなんかC(C++)の基礎を理解してないってことに
起因してないかい?
0486デフォルトの名無しさん01/08/27 19:00ID:wkdl9yNY
>>483
>分割してみようと考えたのですが、今まで全て1本のソースでプログラムを作ってきたので
>分割の仕方がよく分かりません。
ネタだよね?ね?
048747201/08/27 19:22ID:s7D152vQ
SetPriorityClass関数を使いたいのですが、自分自身のプロセスのハンドルを
取得するにはどうすればいいのでしょうか。
0488デフォルトの名無しさん01/08/27 19:24ID:6V5bAAt6
>>487

::GetCurrentProcess()

だったと思う。
0489デフォルトの名無しさん01/08/27 20:21ID:7YRrwn2.
stlみたいなヘッダは、StdAfx.hでincludeするべきでしょうか?
0490デフォルトの名無しさん01/08/27 20:32ID:xzJAo6XI
すみません、MFCが使いづらいのでMFCをマップしようと思うのですが、わかりません。
0491デフォルトの名無しさん01/08/27 20:53ID:IiQ03hCY
VBから呼び出せるようにVC++でCOMを作りたいのですが、
最低限度、実装が必要となるインターフェイスはどれでしょうか?
よろしくお願いします。
0492sage01/08/27 21:30ID:ABizV.k6
AddRef
Release
QueryInterface

MSDNヨメ
0493デフォルトの名無しさん01/08/27 22:16ID:IiQ03hCY
>>492
それインターフェイスじゃないじゃん。
あんたホントに知ってる人?
知らないなら書かなくてもいいんだよ。
049448301/08/27 22:19ID:wWk80Tes
>>484
宣言と定義ですか?とりあえず、#defineなどはヘッダにまとめて
インクルードしてるのですが、他に何か注意する所はありますか?

>>485
そうかもしれません・・・。

>>486
いえ、ネタではありません。
あ、ヘッダとリソースファイルなどはもちろん別ファイルでしたよ。
メインプログラムっていうか、本体が1つのソースファイルだけで
書いていたので、非常に長いのです。
これでは、デバッグもしずらくて・・・。
049549301/08/27 22:23ID:IiQ03hCY
>>492
ごめん、頭冷やしてMSDN読み直す。
最近Windows用アプリ作り始めたバッカな素人な俺が悪い。
すまなかった。
0496デフォルトの名無しさん01/08/27 22:51ID:8Xs.NW3U
>>494
とりあえず「関数の宣言と定義」を手持ちの
入門書かなんかで調べなされ。話はそれからだ。
0497 ◆arcElGGo 01/08/27 22:52ID:/MRZ8T2M
>>491
必須のインタフェースは作るものによってまったく違うんじゃねーか?
ほんとにほんとに必須なのはIUnknownだが、
これだけあったところでどうにもならんぞ。
0498デフォルトの名無しさん01/08/27 23:19ID:sw7RmyPw
>>483
もしかしてメイン関数がやたら長いプログラム?
それとも自分でいくつか関数作ったけど、ソースが一本なの?
意味あるかは別として例えばmain関数を1つのソースファイル
に書いて、mainから呼び出される自作サブルーチンを別のファイル
に書き、mainのファイルにそれらの関数のプロトタイプを記述する
ってのはどうよ。プロトタイプはまた別にヘッダファイルにした
ほうがいいかもしれんけど。ん?でもここはVC++のスレだよな。
クラスとか作ってるのかな?そんなふうには思えないが・・・。
0499デフォルトの名無しさん01/08/27 23:22ID:NUyHCMlc
#include<xxxx>
class a{

};
class b{

};
class c{

};
class d{

};

int main(){
・
・
・
・
return 0;
}
0500てんさいぷろぐらむぁ(偽) ◆8Fck5JHo 01/08/28 00:47ID:zr9xTnZw
>>491

COMとして最低限必須なのは IUnknown
VBとかスクリプトの事を考えれば OLEAutomationの為にIDispatch が必要。
必然的にタイプライブラリも必要になります。

とりあえずIDLでIDispatch派生のインターフェイスを作って、MIDLでコンパイル。
出来たインターフェイスを使って実装&タイプライブラリをリンク。

IDispatch::Invokeの実装には、タイプライブラリを使えば比較的手抜きで実装可能。
LoadTypeLibだのLoadRegTypelibあたりを調べてください。

ここではaleaut32.dllに全てを任せる幸せな方法を想定しています。
VB向けならVARIANTで定義されている型で事足りると思うので。

後の説明は長くなるので省略。MSDNライブラリを参照してください。
とりあえず上記の流れがもっとも幸せな流れです。

OLEコントロール等を作るのならば、それなりに大変な事になると覚悟してください。

つーか
ATL使えばほとんど解決な気もするけど。
050148901/08/28 04:30ID:YifVuKWg
>>489
レスが無いのですが、
場合によるから答えにくい質問ということでしょうか?
0502デフォルトの名無しさん01/08/28 07:44ID:EbweAhfU
>>501
例えば、STL使ってるクラスを他で使いまわす予定がある場合なんかは、
そのクラスのヘッダでincludeするべきだろうし、
stdafx.hでincludeしてるからといって、他の各ヘッダでincludeしてはいけないものでもないし、
臨機応変に使い分ければ?
そんな苦悩するほどの問題じゃないと思うが。
0503デフォルトの名無しさん01/08/28 08:23ID:c61aoHXs
ポートアクセスは、inp,outpでいけるんでしょうか、それとも何かそれ用の
ドライバが必要なんでしょうか?
050449301/08/28 09:17ID:pLk7FMTU
InsideCOM+なんかを読むと他には、

IProvideClassInfo
ISupportErrorInfo
IConnectionPointとIConnectionPointContainer
IExternalConnection

これらがVB製のCOMに標準実装されてるとか。
とくにこの中で特に欲しかったのがコネクションポイントかな。
まぁ、少し勉強が必要だわ。
VBだとオブジェクトの集約ができないから、
VC++で頑張ってるわけなんだけど、めんどくさいなぁ。
ATLってそんなに物事単純になるのかな?

みなさんいろいろとありがとね。
0505デフォルトの名無しさん01/08/28 11:34ID:HEWceQCw
>>503
OSによる。
0506デフォルトの名無しさん01/08/28 11:57ID:EbweAhfU
>>503
しかもポートにもよる。
DOSは全部OK。
9x系とNT系だと使えるポートが違ったと思った。というかNT系は多分ほとんど不可。
API使った方が幸せだと思うよ。
特殊ハードならDOSでやるかドライバ書くか・・・
050750301/08/28 14:03ID:c61aoHXs
>>506 APIでそんな関数あったっけ?
0508デフォルトの名無しさん01/08/28 14:56ID:HEWceQCw
>>507
ポート(と、そのドライバ)による。
CreateFile/WriteFile/ReadFileでできる物もあるし、DeviceIoControlでできる物もある。
むろんAPIで操作できない物もある(その方が多い)
0509てんさいぷろぐらむぁ(偽) ◆8Fck5JHo 01/08/28 20:22ID:zr9xTnZw
>>504

>>ATLってそんなに物事単純になるのかな?

仮にインプロセスサーバを作るとして簡単に流れを説明すると(最近触ってないからチョット違うかも)

1:ウイザードでATLCOMなんたらプロジェクトを選ぶ。(DllRegisterServerやIClassFactoryが出来上がる。)
2:クラスビューを右くりっく、ATLオブジェクトを追加するを選ぶ。
3:適当に名前を付ける _
& IConnectionPointをサポートするにチェックをつける _
& ISupportErrorInfoをサポートするにチェックをつける
4:クラスビューを右クリックでメソッドの追加やら、プロパティの追加を選択するとIDLとか全部勝手に書き換えてくれる。
5:気合を入れて実装部を作成する。

MSDNライブラリにATLウイザードを使ってOLEコントロールみたいのを作る
チュートリアルがあったような気がします。
とりあえずそれの通りに一個作ってみると速いかもデス。
051048901/08/29 00:36ID:8/lkv8vA
>502
ありがとうです。たしかに、プログラムを書く上で本質的な問題ではありませんね。
051150401/08/29 09:42ID:bW4UpvLc
>>509
http://www.microsoft.com/JAPAN/developer/library/vcmfc/_atl_atl_tutorial.htm
この辺を見てやってみることにするよ。
ありがとう。
051250401/08/29 16:04ID:bW4UpvLc
>>509
ATLの使い方はなんとなく分かりました。
っていうかVSすごすぎです!
でも逆にそれ無しじゃなんだか厳しいですね。
あれを自分で理解してやっていくのは
慣れが必要かも。
できれば開発環境に依存したくないのがホンネ。
1〜4はそんな感じでやれそうです。

で、5なんですが・・・はっきり言って鬱ですw
無味乾燥なヘルプ読むより本を読むほうが早そうなので、
http://www.amazon.co.jp/exec/obidos/ASIN/4756136001/ref=pd_sim_b_dp_1_1/249-4193949-1373904
これからこの本を買いに逝ってきます。
051350401/08/29 18:11ID:bW4UpvLc
ところでみんなCharles Petzold の本は持ってるの?
なんかamazonとか見てると教科書みたいに書いてあるんだけど。
かなり高いんでちょっと迷ってます。
0514デフォルトの名無しさん01/08/30 14:47ID:zBaTa85.
皆様、大変お世話になっています。
大変厨房な質問と自覚してますが、質問させてください。
VC++6.0を使用しています。
ヘッダーファイル(*.h)をコンパイルしようとすると
「ファイル'c:\フルパス\hoge.h'の拡張子に関連した
コンパイルツールが無いためコンパイルできません。」
とのエラーがでてしまい、コンパイルできません。
拡張子の関連付けの問題だと思うのですが、
どれに関連づければいいのかわかりません。
よろしくお願いします。
0515デフォルトの名無しさん01/08/30 14:59ID:HQVigopA
>>514

ヘッダファイルのコンパイル?プリコンパイルヘッダを作るの?
それともなんか勘違いしていませんか?コンパイルするのはソース
プログラム(普通は*.cまたは*.cpp)ですよ。
0516デフォルトの名無しさん01/08/30 15:11ID:zBaTa85.
>>515 レスありがとうございます。ご指摘どうり、無理なことを
やろうとしていたようです。恥ずかしい。
ありがとうございました。
0517デフォルトの名無しさん01/08/30 16:14ID:2v8EBV2o
>>516
ヘッダーファイルとソースファイルの関係があいまいならここでもよく読むよろし
http://www.kab-studio.com/Programing/Codian/Cpp/02.html
0518デフォルトの名無しさん01/08/30 16:21ID:c4aCQnY.
>>517 レスありがとうございます。これから読んでみます。
いまプリプロセッサではまりまくってます(T_T)
気分転換に読んでみます。ありがとうございました。
0519デフォルトの名無しさん01/08/31 01:14ID:KmOcVo8.
>>518
プリプロセッサを理解したての初心者が陥りやすい症状:
なんでもかんでもやたらマクロにしたがる

定数とか、定数の引数を伴う関数呼び出しくらいならいいが、
if、whileなど制御ステートメントを伴うものや++、--演算子を
伴うものは文法を完全に理解するまで手を付けないのが吉。
0520デフォルトの名無しさん01/08/31 02:14ID:cJM93gm2
>>519 レスありがとうございます。
グローバル変数をヘッダーファイルにまとめて定義しといて
プリプロセッサでファイルによってextern宣言させようとしてたので
すが、そこではこけてなくて、以前にに宣言しといたグローバス変数の
定義が残ってそこでエラーはいてたようです。死にました(T_T)
プリプロセッサってどこでバグってのかわからないので
怖いなーと思いました。
0521デフォルトの名無しさん01/08/31 04:50ID:fCsVygVQ
エディットコントロールのEM_ERRSPACEが飛んできてくれません。
このメッセージはエディットコントロールに書ききれなくなった
ときに飛んでくると思うのですが。
testlimitをセットしててもダメです。
なぜでしょうか?
0522デフォルトの名無しさん01/08/31 05:12ID:seI0gCvk
>>521
>EN_ERRSPACE通知メッセージは、 エディット コントロールが
>特定の要求を満たすための十分なメモリを割り当てることが
>できないときに送られます。エディット コントロールの
>親ウィンドウは、 WM_COMMANDメッセージを通じて
>この通知メッセージを受け取ります。

 書ききれなくなったとは意味が違います。
0523sage01/08/31 07:40ID:Rxk6Y1v6
>>520
-Eオプション試しとけ

ついでに uniqもな
0524デフォルトの名無しさん01/08/31 08:12ID:Dwxf2z86
>>523 レスありがとうございます。
なるほど。それだと、重複をチェックできるわけですね。
知ってるのとしらないので、すごい違いますよね。とほほ。
0525デフォルトの名無しさん01/08/31 22:39ID:Rxk6Y1v6
グローバスage
0526デフォルトの名無しさん01/09/01 13:25ID:wmoI/a0A
ただ今COMクライアントを作成中・・・

タイプライブラリをClassWizardで読み込んでCreateDispatchから
COMサーバにアクセスする方法は分かってきたが、COMサーバ側で
発生したイベントを取得する(イベントシンク?)の方法が分からない・・
VBでの実装は簡単に出来るようだが、VC++でも簡単な方法があるのだろうか・・
0527デフォルトの名無しさん01/09/01 15:33ID:7gUlR5aU
STLでリストとデキューの違いがわかりません。
どっちもおんなじ事できるし、どう使い分けるのがいいんでしょうか?
0528デフォルトの名無しさん01/09/01 16:30ID:D.FkLllo
>>527
list は中間要素へのアクセスに O(n)、中間要素の削除・挿入は O(1)
deque は中間要素へのアクセスに O(1), 中間要素の削除・挿入は O(n)

deque は両端からアクセスできる配列だと思えば良い。途中の要素に
添え字アクセスする機会が多いなら deque、辿るのは先頭・末尾から
順番だが、途中で要素の挿入・削除が頻繁に発生するなら list。
0529デフォルトの名無しさん01/09/01 17:06ID:ERYSF/rQ
COMなんて使い道あるんか。だいたい、そんなもん使ってる自体
糞だと思うが・・・。
0530デフォルトの名無しさん01/09/01 17:42ID:6wEGDcFE
COMってつぎはぎだらけのテクノロジてな感じがする。
それに依存してる.NETも同じような感じなのかな?
053152801/09/01 23:51ID:ZEJtND0w
勉強になりました、ありがとうございます。
今までは両方同じように使っておりました、
0532名無しさん01/09/02 01:15ID:PC5taIpU
画面をキャプチャしてJPEG保存したいのですが

CreateDC("DISPLAY",NULL,NULL,NULL);
でゲットしてからどうしたらよいのかわからなくなってきました。
教えてけれ
0533デフォルトの名無しさん01/09/02 05:34ID:hju7CXGw
>>532
jpegの保存の仕方だけ。
http://www.ijg.org/
こっからjpeg6bのライブラリ落としてきて、一部ソース書き換えれば使える。
0534名無しさん01/09/03 02:16ID:DrsF/y7o
>>533
Thanks
でもなんかおとせないです、
0535デフォルトの名無しさん01/09/03 23:32ID:qVrrFAFM
a
0536デフォルトの名無しさん01/09/04 14:07ID:6/sNHYbo
あるボタンをクリックしたら、
インターネットエクスプローラを起動したいのですけどどうすればいいの?
0537デフォルトの名無しさん01/09/04 17:06ID:hjiI/cLc
WIN32 APPLICATIONの空のプロジェクトから
簡単なプログラムを作ってみたのですが、
そのビルドしたファイルをエクスプローラ等で表示したときに、
ファイル名のところに出るアイコンを変更するには
どうすればいいのでしょうか?

アイコンは「挿入」「リソース」「Icon」から
作成したのですが、そこまでです。
0538デフォルトの名無しさん01/09/04 17:08ID:y/VspVw.
>>529-530
.net 以前に、すでに今の Windows が COM の塊なんだけど。
0539初心者01/09/04 20:43ID:oh8PDgKk
ビットマップを表示するアプリケーションを作成しているのですが、
スクロールバーがうまく機能してくれません。
具体的にはスクロールバーは正常に表示されているのですが、表示クライアント
領域がディスプレイサイズの一定割合に達しないと、OnHScroll(),OnVScroll()
に処理が来ないような感じです。
WN_HSCROLL,WN_VSCROLLメッセージ発行に条件とかあるのでしょうか?
0540デフォルトの名無しさん01/09/04 20:53ID:dMvjTacY
Delにインターフェイスってあったのか。
言語ガイドみてはじめてしった。
入門用の参考書には一言もふれてないのに・・・
0541デフォルトの名無しさん01/09/04 22:41ID:3J1vv5e.
.NETではCOMはナリを潜めているような感じですが。
当然インオペのための仕組みは用意されていますけれども。
相談でないのでsage
0542シドNGNG
OpenGLでauxで絵を描いた場合、
その絵の印刷はできないのですか?
どこのサイトにものってませんよね。
0543デフォルトの名無しさんNGNG
ピクチャボックスなんだけど、コントロールのプロパティでフレーム設定の
場合はきちんと図形が描画できるんだけど、四角形設定にすると何も図形が
表示されん。これはどういうことでしょう。
0544がくせいくんNGNG
Visual Studio 6.0 エンタープライズエディションに
SP5を当てたのですが、VisualC++のバージョン情報を見ても6.0のままです。
一方、VisualBASICはSP5になっていました。Windows2000 SR2環境なのですが、
VC++が反映されていないというのはおかしいですよね。
どなたか何かご存知の方、助言PLEASE!!
0545デフォルトの名無しさんNGNG
助言できないけど、普通にマイクロソフトに聞いてみたら? >>544
0546デフォルトの名無しさんNGNG
>>544
VC++はSPあててもバージョン表記変わらんよ。
0547がくせいくんNGNG
>545
FAQなどを読んではいるのですが・・

>544
そうだったんですか! てっきり反映されていないと思っていました。

助言、ありがとうございます。
0548デフォルトの名無しさんNGNG
>>547
バカ?
0549音速の名無しさん NGNG
みなさん、はじめまして
CD-ROMのセットを検出したいのですが、監視用のスレッドを作って常に回すしか
ないのでしょうか?
0550デフォルトの名無しさんNGNG
>>547
ンだよ、ネタかよ。馬鹿臭。
0551がくせいくんNGNG
いえ、ネタではありません。本当にわからないのです。
もし(失礼ですが)544さんの助言が間違っているのでしたら、
是非ほかの方のアドバイスをいただきたいと思っています。
よろしくお願いします。
0552がくせいくんNGNG
すみません。546さんの間違いでした
何度もごめんなさい・・
0553デフォルトの名無しさんNGNG
>>551
ああ、ネタじゃないならいいや。突っかかってゴメソ。
0554デフォルトの名無しさんNGNG


1 3 5 7 □ 10 □
上の数列(?)はある規則によって並んでいます。
□の中に当てはまる数字を答えなさい。
また、その規則も答えなさい。
0555超初心者NGNG
一つのワークスペース(プロジェクト)に、cとcppが数ファイルずつ混在しています
aaa.cの中からbbb.cppの関数を呼ぶのに、プロトタイプ宣言しているのですが
(両方にincludeされてるxxx.hで宣言している)
LNK2001 リンクエラーになってしまいます

cからcppの関数は呼べないんですか?
それとも別な原因があるのかな
0556デフォルトの名無しさんNGNG
>>555
CとC++では関数の名前付け規則が異なるからです。
C++のソースでは、

extern "C" {
#include "xxx.h"

void func()
{
…
}
}

としてみてください。
0557555NGNG
>>556
ありがとうございました

とりあえず言われたままに やってみたら、
問題そのもの(リンクエラー)は解決してしまいました

extern "C"とか、名前付け規則の意味とか わからないので、
これから調べてみます
ありがとうございました
0558!555NGNG
>>556
そんな方法があったのか・・・
俺、今までcppに拡張子直すか、
xxx.cppというダミーファイル作って、その中でinclude"xxx.c"とかやってたよ・・・
ウツダシノウ…
0559デフォルトの名無しさんNGNG
C++をVC++で勉強しなければならない羽目になりました。
んで、本のサンプルソースを打つと、

try {
(メモリ割当する部分)
} catch (xalloc) {
cout << "メモリー割り当てできません\n";
}

となっている部分で、xallocが見当たらなくてコンパイル
エラーになるんですが、これってどーすればいいんですか。
0560デフォルトの名無しさんNGNG
   ?????????????
  ?                         ?
 ?                           ?
?                              ?
???????(゚Д゚)???????
*                             *
*                             *
*                             *
*                             *
???????????????????????????????????????
0561デフォルトの名無しさんNGNG
>>559
MSDNは調べたかい?
VC++でなんかするなら、MSDNで調べれば大体解る。
0562556NGNG
>>559
えーと、確かxallocってドラフト時の仕様じゃなかったでしたっけ。
bad_allocに変えてみたらどうですか?
0563デフォルトの名無しさんNGNG
ワーカースレッドを作り、その処理終了時にメッセージ投げて、
メインスレッドのイベントとして受け取りたいんだけど出来る?
0564デフォルトの名無しさんNGNG
>563
メッセージって、Windowsのメッセージループの事?
メインになるスレッド側でメッセージループ作って
ワーカスレッドでPostMessageすれば?
あとはEventObject使うとか
0565sageNGNG
>>563
アイドル中に、ワーカのスレッドハンドルに対してWaitForすりゃええんでないの?
終わるまで待つだけならイベントオブジェクトをよけいに作る必要ないよ
0566デフォルトの名無しさんNGNG
とっても初歩的な質問です。
include <stdlib.h>
はどこに宣言すればよいですか?
atoi関数を使いたいです。

mfc-dialog base
0567デフォルトの名無しさんNGNG
>>566
とりあえずstdlib.hで検索して、適当なソース見てみな
0568たまNGNG
LINK : fatal error LNK1104: ファイル "nafxcwd.lib" を開けません。

というエラーが出ます。
nafxcwd.libがどうやらパソコン内に入っていないようです。
Microsoft VisualC++6.0 StandardEdition
を使っているのですが、これにはnafxcwd.libが
入っていないみたいなんです。
StandardEditionだから入っていないのでしょうか?

どこかでnafxcwd.libをダウンロードできる場所を
知ってる方いましたら教えてください。
よろしくお願いします。
0569デフォルトの名無しさんNGNG
>>568
http://www.google.com/search?q=nafxcwd.lib&hl=ja&lr=lang_ja
0570デフォルトの名無しさんNGNG
Cのコンパイラはどこで手に入るのですか?
フリーのもあるんでしょうか?
0571デフォルトの名無しさんNGNG
>>570
そのキーワード全部入れてgoogleで検索。
0572デフォルトの名無しさんNGNG
>>570
スレ違い。
googleで検索しろ。
0573デフォルトの名無しさんNGNG
いろんなコンパイラがあってよくわかりません。
ちなみにOSはMeです。
0574デフォルトの名無しさんNGNG
よくわからんのじゃ、しょうがないな。
なんだかわからんが、あきらめろ>573
0575デフォルトの名無しさんNGNG
いろんなコンパイラがあってよくわ

(藁
0576563NGNG
>564
PostMessageでいけました。
>565
メインスレッドはダイアログで、コントロールへのイベントは受け取りたいんだ。
メインスレッドでWaitForすれば、対象スレッドが終了するまでロックされると
思うんだが。
0577デフォルトの名無しさんNGNG
>>575
何がおかしい?
0578563NGNG
>565
アイドル時にだけ見にいくか。そんなことできるの?
優先順位低の監視スレッドを作ればできるだろうけど。
0579デフォルトの名無しさんNGNG
すんません、ちょいと教えてください。
レジストリのバイナリデータのアクセス方法がわからないのですが・・・
GetProfileInt ・・・ DWORD
GetProfileString ・・・ 文字列
Get系の関数でバイナリデータ用って無いですよね。
元々iniファイルに無いからGetProfile系に無いのはあたりまえで
別なAPIとかで提供されるのでしょうか?
0580デフォルトの名無しさんNGNG
>>579
おぃおぃ、マジかよ。少しは調べる努力をしたのか?
Reg* な API をつかえ。
0581デフォルトの名無しさんNGNG
>>580
ありがとうございます、たすかりました
DevStudioのヘルプに「レジストリ」で検索したのですが・・・
たどり着けなかったです・・・探し方が悪いとも思いますが
0582デフォルトの名無しさんNGNG
int型からCString型するにはどうすればいいんだー!
型キャスト変換自由自在にしたいぜよ!
お願いいたしまする。
0583デフォルトの名無しさんNGNG
int i = 123;
CString s;
s.Format( "%d", i );

つーか、
> 型キャスト変換自由自在にしたい
ならC/C++以外の言語にしろ。
0584coelacanthNGNG
あの、1.25という実数を4/5というふうに変換するにはどうすればいいでしょうか?
0585デフォルトの名無しさんNGNG
>>583
ありがとうございまする!

ウゥでもVC買ってしまったのでする。
でもチビチビがんばりたいのでする。スンマセン
0586デフォルトの名無しさんNGNG
>>584
お前の使っている算数の教科書には4 / 5 = 1.25となるような演算子が定義されてるのか?
0587デフォルトの名無しさんNGNG
スタティックテキストに送るメッセージのXX_YYYYYのXXは何でしょう。
0588デフォルトの名無しさんNGNG
>>584
1.25 は 4/5 ではなく 5/4 だが、何か?
0589デフォルトの名無しさんNGNG
>>587
たとえば、何?
0590デフォルトの名無しさんNGNG
>589
背景の色を変えるとか画像を設定するとかなんですけど。
0591デフォルトの名無しさんNGNG
>>584
double x=1.25;
if (x == 1.25) printf("4/5");
else
0592デフォルトの名無しさんNGNG
>>584
double x=1.25;
if (x == 1.25) printf("4/5");
else      printf("%f", x);
0593中学で習ったろ?NGNG
>>584
1.25 なら 125/100 として約分しろ
1.125 なら 1125/1000
1.11125 なら 111125/100000 だ

約分方法がわからないなら「ユークリッドの互除法」と「最大公約数」で検索しろ

おまけ循環小数
0.1234
  ・  ・
のときは
1234/9999 としろ
あたまに余計なのがついてたら循環部分と分けれ

#循環しないのは無理数だから無理
0594てんさいぷろぐらむぁ(偽) ◆8Fck5JHo NGNG
>>587

STM_YYYYY

2文字とは限りません。
0595デフォルトの名無しさんNGNG
>584
void a(double c)
char d,e;
for(x=1;x<10000000000;x++){
for(y=1;y<10000000000;y++)}
if(x/y==c){
strcpy(d,itoa(x))
strcpy(e,itoa(y))
}
break;
}
}

}
0596てんさいぷろぐらむぁ(偽) ◆8Fck5JHo NGNG
>>585

いきなりMFCを使わないで
素のC、もしくは素のC++から勉強を始める事をオススメします。
GUI作りたいのは分かりますが、結局後で泣きを見るので。

ボタンをクリック
 ↓
アボーン
なんで????
0597デフォルトの名無しさんNGNG
>587
わかりました。
どうもありがとうございました。
0598デフォルトの名無しさんNGNG
お店にて、VC++にはstandardとprofessional
っていうバージョンがあることに今更ながら気づく(苦笑)
これって何が違うんじゃ?
0599デフォルトの名無しさんNGNG
>598
ハァ?誰よお前。お前の文脈じゃ誰だかわからねえだろうが。一体何者が何をしに店に行ったのかちゃんと書けボケが。
0600デフォルトの名無しさんNGNG
VB厨房がoffice2000を買いに行ったんです
ごめんなさい
0601sageNGNG
>>576
タイムアウト0にしとけよ..
0602570NGNG
とりあえずBorlandC++を手に入れました。
VisualC++なんて高すぎて個人で使ってる人なんているんですか?
0603デフォルトの名無しさんNGNG
きみよりも金持ちな人は沢山いるよ>602
0604デフォルトの名無しさんNGNG
VC++のWin32アプリウイザードで、標準的なHElloWorld!アプリケーションを選択したときに生成されるコードで、悪い点はありますか?
0605デフォルトの名無しさんNGNG
>>602
VC++Pro、アカデミックパックで1万強なんだが…高い?
0606デフォルトの名無しさんNGNG
>>604
君の頭
0607デフォルトの名無しさんNGNG
>>606
禿げしく同意!
0608604NGNG
>606
はぁ?俺はMIT卒なんだが。ここのPGの程度を確認してやろうと思っただけなんだがね。
0609デフォルトの名無しさんNGNG
>>605
それを使って値段以上の価値あるプログラム組めばいいんだYO
0610デフォルトの名無しさんNGNG
>608
だったら模範解答見せろ
0611みんな!NGNG
>>604 が面白いよ!
暇つぶしにどうぞ!
0612614NGNG
おっと用事ができた
帰ってきたら見てやるから、書いとけよ。
0613570NGNG
JavaやHTML等はできるので次は本格的にC、C++と思って
コンパイラ探してたんですが。。。1万でもちょっと・・・
0614デフォルトの名無しさんNGNG
MIT出なら、LISP schemeスレに参加してくれ
0615デフォルトの名無しさんNGNG
>>614
相手にすんなよ(w
0616デフォルトの名無しさんNGNG
正直、VC++に開発時間をカウントする機能をつけてほしい。開発につまづいて振り返ったとき、その積み重ねた時間が俺を奮い立たせるような気がする。
どう?いい案だと思わない?
0617デフォルトの名無しさんNGNG
正直、本職のプログラマーのホームページが少ない気がする。2チャンネラーのプログラマーなら本出す人とかにも文句言うだけあって、ちゃんとした役に立つページ作れるんだろうな。
0618デフォルトの名無しさんNGNG
本職のプログラマはページを作って啓蒙するなんて言う無駄なことには労力を費やしません。
0619デフォルトの名無しさんNGNG
>>616
無駄にした時間を、現実として突きつけられることになるので、いらない。
0620デフォルトの名無しさん NGNG

typedef struct
{
LONG A;
LONG B;
LONG C;
ABC* before_item;
ABC* next_item;
} ABC;


こういう構造体を作るにはどうしたらいいですか?
コンパイルするとエラーになります。
前のアイテムと次のアイテムへのリンクを構造体に持たせたいんです。

typedef struct
{
LONG A;
LONG B;
LONG C;
LPVOID before_item;
LPVOID next_item;
} ABC;

一応これでできますが、これだとキャストしないと逝けないので面倒です。
教えてチョンマゲ!
0621デフォルトの名無しさんNGNG
>>620

typedef struct _ABC ABC;

struct _ABC {
LONG A;
LONG B;
LONG C;
ABC* before_item;
ABC* next_item;
} ;
0622デフォルトの名無しさんNGNG
VC++のフォントの大きさはどのぐらいでやるのが丁度いいですか?僕はデフォルトです。
0623デフォルトの名無しさんNGNG
>>618
無駄なこと...とは思わないけど、時間がないよね。
0624デフォルトの名無しさんNGNG
自分で書いた図形を仮想DCに転送して、OnPaintで
再描画するときって、CBitmap作らないとだめだっけ?
0625デフォルトの名無しさんNGNG
>>622
1600x1200以上の画面で9point
0626デフォルトの名無しさんNGNG
同じマシン、環境でも、

intのサイズが変わってしまう事ってあるのでしょうか?
0627デフォルトの名無しさんNGNG
通常はありえない
0628デフォルトの名無しさんNGNG
すみません。
string s,x;
char w[]="1", r[]="ITEM1";
s=w;
x=r;
s=s+x;
というstringオブジェクトがあった場合、
SendMessage(hWnd,LB_INSERTSTRING,0,(LPARAM)(LPCSTR))
で、LPARAMにsの内容を渡したいのですが、どうすればいいのでしょう。
0629デフォルトの名無しさんNGNG
>>628
s.c_str()
0630できました。NGNG
>629
ありがとうございました。
0631626NGNG
>>627
基本的に、ないと考えて良いのでしょうかね

今、複数のマシンで winsocketで簡単な通信するソフト作ってて、
通信のbuffそのものは、BYTEの配列にしてて、

ただ、それを(ポインタで)展開するデータの中には、
int型とかも含まれてて、マシンとかによってサイズがかわって
おかしくなっちゃう事もあるのかな と、
これもDWORDとかにしたほうが良いのかな と思いまして

実は、今テストしてたら おかしくなっちゃって、
それが原因かと思って ここに質問したのです
(実は、原因は全然違う 超くだらない ミスでした
65536バイトのバッファを確保しようとして、
なにを狂ったか、
BYTE aaa[ sizeof(WORD) ];
とかやっちゃって 2バイトしか定義されなくて(ワラ、
へんなところアクセスして暴走)
0632デフォルトの名無しさんNGNG
>>631
コンパイラが変わるとか、コンパイルオプションを変えるとかすれば変わるよ。
0633デフォルトの名無しさんNGNG
>>631
それは根本的に貴方の書いたソースの問題かと
0634デフォルトの名無しさんNGNG
631ってもしかして馬鹿?
0635デフォルトの名無しさんNGNG
もしかしなくてもバカ
0636631NGNG
もちろんバカだぜ!!!!!!!!
0637デフォルトの名無しさんNGNG
ネタだったのか、ジサクジエンだったのか、もうどっちでもいいや。
0638デフォルトの名無しさんNGNG
MCIの練習で CD プレーヤー 作ってます。

で、質問なんですが CD の再生をすることは出来たんですが、1トラック目から順繰りにしか再生できません。
それもこれも、コマンドパラメータの dwFrom と dwTo に設定する値が解らないからです。
API バイブル 3を見ると、「現在の時間フォーマットでの開始・終了位置が格納されている」と書かれているのですが、
どうすれば TMSF 形式から、DWORD に変換すればいいのかが解りません。

解るひと教えてー
0639デフォルトの名無しさんNGNG
あげわすれたぞっと。
0640デフォルトの名無しさんNGNG
>>638
MCI_MAKE_TMSFマクロ使うアルよ。
0641デフォルトの名無しさんNGNG
できたっ!さんくすこ〜☆ミ
0642デフォルトの名無しさんNGNG
VisualC++6.0スタンダードを使っているのですが

#include <sys/socket.h>

とかやったら「ヘッダーファイルが見つからない」とか出ました。
実装されてないんでしょうか?
0643デフォルトの名無しさんNGNG
実際にsys/にsockt.hがあるか調べろ>642
0644デフォルトの名無しさんNGNG
なかったらcygwin入れれ
0645デフォルトの名無しさんNGNG
>>642
ばかめ。
include/は調べたか?
0646sageNGNG
sys/の下はそもそも環境依存ヘッダだらけだ。
なくても文句言うな
0647デフォルトの名無しさんNGNG
あるフォントのある文字の横幅を取得するためにはどうすればいいんでしょうか。
0648sageNGNG
GetTextExtent
0649デフォルトの名無しさんNGNG
>>644
cygwin入れてますが?VC++で使うって事なんで。
それともVC++でCygwinのヘッダをインクルードできるんですか?

>>645
聞きたいのは「VC++スタンダードエディション」に実装されてるか否かだ

>>646
ネットワークプログラミングしようとしたらこれだし
0650デフォルトの名無しさんNGNG
死んでいいよ>>649
0651デフォルトの名無しさんNGNG
>>649

MSDNで調べる癖ぐらいつけろ。

VCはsys/socket..hじゃないよ。winsock使えれ。
0652デフォルトの名無しさんNGNG
ネタ決定
0653デフォルトの名無しさんNGNG
>>650
あんたも最初は分からんかっただろ?

>>651
MSDNでの調べ方分からないです。
WinsockInit()関数やらはヘッダファイル無しで使えるのですか?
0654653NGNG
winsock2.hでした。。。鬱だ氏脳

ftp://ftp.microsoft.com/bussys/winsock/winsock2/WSAPI22.DOC
英語分からん。工房だし。
0655デフォルトの名無しさんNGNG
WindowsでどのぐらいのGUIアプリケーションを開発できるようになればプロとしてやっていけますか?
0656デフォルトの名無しさんNGNG
>>654
>winsock2.hでした。。。鬱だ氏脳
だからさっさと死ねよ!
0657デフォルトの名無しさんNGNG
>>656
酷い奴だな。。。
0658お胸おっぱい (!=650)NGNG
>>653
ちったぁ自分で調べれ。
君の VC6 がワレモノでなければ、ヘルプくらい付いてるだろ。
0659デフォルトの名無しさんNGNG
友達がVisualStudioを焼き焼きしてくれるそうです(^^
そうすると、VBを学ぶべきかC++を学ぶべきか・・・
0660デフォルトの名無しさんNGNG
>>654
高校生でも、ある程度は読めるだろ・・・
つか、
649の
>cygwin入れてますが?VC++で使うって事なんで。
>それともVC++でCygwinのヘッダをインクルードできるんですか?
ここが謎・・・
普通 gcc 使ってたらそんなこと考えんだろ・・・

>>658
ワレモノでしょ。
じゃなきゃ普通こんな質問しない。
MSDNで"ネットワーク プログラミング"ででてくるし。
0661デフォルトの名無しさんNGNG
単なる割れ厨の戯言
放置で逝きましょう
0662つーか、NGNG
さっさと死ね!
0663デフォルトの名無しさんNGNG
割れ厨は氏ね!
0664sageNGNG
>>654
読むだけなら厨房の英語で十分だ。
MSDNを引くことを覚えろ。
0665デフォルトの名無しさんNGNG
Warezじゃありません。学割で10000円ぐらいで買いました。

>>660
> 普通 gcc 使ってたらそんなこと考えんだろ・・・

MASMとかVC++で使えるんでそっちはどうなのかなと。


厨房の英語に"represent"とか出てくるわけないでしょう・・・
やり始めの人の気持ちも考えられん稚拙な人ばかりで誠に残念です。
0666デフォルトの名無しさんNGNG
>>664
MSDN引きましたがMFC関連ばっかりです。MFC厨にはなりたくないんで。
0667デフォルトの名無しさんNGNG
モロ、無修正画像サイト発見!

http://www.sex-jp.net/dh/01/
http://www.sex-jp.net/dh/02/
http://www.sex-jp.net/dh/03/
http://www.sex-jp.net/dh/04/
0668sageNGNG
情報技術系の用語は、わからんでも仕方ない。
が、単語の意味くらい辞書で引けるだろ?

MFC以外の情報も、山のようにあるから、あきらめずに引き続けろ。
それでもわからなければまた聞きに来い
0669666NGNG
>>668
御提言ありがとうございました。
0670デフォルトの名無しさんNGNG
口ばっかり達者な奴ってロクな大人にならんぞ
0671デフォルトの名無しさんNGNG
そうだそうだ!
>>672
お前も何か言ってやれ!
0672デフォルトの名無しさんNGNG
             |/
     , ─  ̄ ̄ ─- _ ̄ ̄
   /          ヽ
  / / ̄ヽ/ ̄ ヽ   l
  /  |  O |  O |    |
  |   |   人   ノ    |
  |  >-─´-`─-<    |
 / ̄  , -─- 、__ ` ̄ヽ |
 ゝ ̄ ̄______  ̄  ノ  |
   ̄ ̄        ̄ ̄   l
ノ |              | \
 ̄ヽ              | ̄
  |              |
   |             |
   l             |
  ⊂__________⊃
0673デフォルトの名無しさんNGNG
オバQかよっ!ヽ(`Д´)プソプソ
0674デフォルトの名無しさんNGNG
WindowsでどのぐらいのGUIアプリケーションを開発できるようになればプロとしてやっていけますか?
0675デフォルトの名無しさんNGNG
「どのぐらい」が何を指すのか不明。
規模か数か期間かその他か?
0676デフォルトの名無しさんNGNG
アプリケーションのレベルです
0677デフォルトの名無しさんNGNG
>>674
そうですねぇ、、、GUI周りのクラスライブラリをフルスクラッチ、
それから、Oracle程度のRDBや最低Officeにある程度のアプリケーションを
すべて一人で作れるスキルが泣ければ、日本ですらお金はもらえないでしょう。
0678デフォルトの名無しさんNGNG
リーマンプログラマなら誰でもなれるよ
0679デフォルトの名無しさんNGNG
>677
フルスクラッチって何ですか?
0680デフォルトの名無しさんNGNG
クラッチを踏み込んだ状態
0681デフォルトの名無しさんNGNG
>>676
「アプリケーションのレベル」が何を指すのか不明。
低水準<ファームウェア<ドライバ<ミドルウェア<ソフトウェア<高水準
という話?
0682デフォルトの名無しさんNGNG
低レベル<テキストエディタ<OFFICE<高レベル
0683デフォルトの名無しさんNGNG
>>674
まず、エクスプローラを勉強することを薦める。
「エクスプローラ・ライク」を作れる技術がなけりゃあ、
まず、話にならんかも。

また、それと同じくらい重要なのが、なんていうか、
センスとか、ポリシーってやつかな。

いくら技術が高くても、ポリシーのない奴が作った GUI は糞だからね。
0684デフォルトの名無しさんNGNG
>>682
なんでテキストエディタが低レベルでOFFICEが高レベルなのか不明。
0685デフォルトの名無しさんNGNG
>684
手軽にすぐ作れて、GUIまわりであまり複雑に考えなくていいから、そういう表現をしましたが。
0686デフォルトの名無しさんNGNG
どうしたらテキストエディタが手軽なの?
もしかしてコントロール貼っておしまい?
0687デフォルトの名無しさんNGNG
テキストエディタっつってもピンキリだしなぁ。
メモ帳みたいのまでテキストエディタとか言われたらなぁ…
0688デフォルトの名無しさんNGNG
>>685
少なくともテキストエディタは「手軽にすぐ作れてGUIまわりで複雑に考えなくていい」アプリケーションではないぞ。
0689デフォルトの名無しさんNGNG
>686
テキストエディタと言っても、メモ帳のことです。
秀丸などではありません。誤解を招きました?
0690現役工房NGNG
>>665
おいおいおい、representぐらい工房の教科書でも出てくるぞ??
学割で買ったってことにしてるオサーンですか??
0691666NGNG
>>690
「厨房の英語に」と言ってるだろ。ちゃんと文章読んでくれ。
0692666NGNG
> 学割で買ったってことにしてるオサーンですか??

お前がオサーンだ
氏ね
0693デフォルトの名無しさんNGNG
690は死んでいいよ(笑)
0694デフォルトの名無しさんNGNG
>690
脳ある鷹は爪を隠す
0695デフォルトの名無しさんNGNG
>>654では工房て書いてあるじゃん
ま、んなこたどうでも(・∀・)イイ!! のでさげ。
0696デフォルトの名無しさんNGNG
アカデミックパックって1K円もしたっけ?
0697デフォルトの名無しさんNGNG
>>691=>>692=>>693=>>694
0698デフォルトの名無しさんNGNG
>>689
テキストエディタを軽視する奴はプログラマになれないから安心しろ。
0699デフォルトの名無しさんNGNG
煽りはよそでやってくれ>>690

666はヴァカだけど(w
0700デフォルトの名無しさんNGNG
>>698
禿道
世の中に軽視されるべきプログラムは無い。
例えそれがHELLO!WORLDレベルであっても。
0701デフォルトの名無しさんNGNG
>>696
アカデミック、プロフェッショナルで13kぐらいだね
ラーニングは7k位だっけ?忘れた
0702デフォルトの名無しさんNGNG
>698
>700
果たしてそうですか。あなた達はよくVBで作られたアプリを馬鹿にする一員ではないですか?違うなら勘違いをお許しください。
0703デフォルトの名無しさんNGNG
>>702
(゚Д゚)ハァ?
この話題のどこにVBが関係すんだ?
プログラマならテキストエディタのインターフェース次第で開発効率が変わってくるって話題だろ?
0704(゚Д゚ )ァ? NGNG
>703
>世の中に軽視されるべきプログラムは無い。
「プログラム」はVB製も含んでますよね。
0705デフォルトの名無しさんNGNG
>>700 は見当違い。
>>702 はスレ違い。
>>703 煽りはよそでやってくれ。

こんなんで良いですか?
0706デフォルトの名無しさんNGNG
>>704

VBアプリの大半は”プログラム”じゃないから。

切って張るだけの工作品だよ。

そーゆーのが馬鹿にされるんだって。
0707666NGNG
皆さんおはようございます。

>>695
高1だし。つうか「厨房の英語でも分かる」とほざいた>>664に対しての
反論だから「中学の教科書には載ってない」的な答えになったわけだぞ?
物を言うなら読解力つけてからにしようね(笑)

>>696
>>701
VC++のスタンダードはアカデミパックで10000円(=10k)ぐらいだと言ってるんですが。
少なくとも最寄のソフマップではそうでした。
ちなみにプロフェッショナルは24000円。とても買えん。

ラーニングエディションってそりゃVBですよ。
VC++はスタンダード、プロフェッショナル、エンタープライズの3種だけだし。

>>699
まぁまぁ、マターリと逝きましょうよ。

690はバカだけど(笑)

>>706
効率性を求める目的以外でVBやってる奴は逝ってよし。
やっぱアセンブラでしょ。gdbもMASMもNASMもタダで手に入るし。
面倒臭いからやろうとしないってのは一番おかしい。
0708デフォルトの名無しさんNGNG
>>707
是非このテキストを保存しておいて20過ぎてからもう一度読み返して
見ることを勧める。昔書いた日記並の恥ずかしさを味わえること請け合いだ。

…つかネタか煽りであることを祈るよ、本当に
0709デフォルトの名無しさんNGNG
おいおい、嘘はいかんよ。
VC++STD AC 8k
VC++PRO AC 13k
VSENT AC 40k

確か、こんなモン。
0710デフォルトの名無しさんNGNG
でもさ、さすがにいまどきアセンブラはねーだろ。
工房がシッタカしてるんじゃないよ、まったく、もう。

自分でOS書いたりするんじゃなきゃ、インラインで十分。
それすらも高級言語で作るのが普通になりつつあるからな。
0711自他共認超優秀プログラマー(35歳)NGNG
インラインって、インランって読んでしまいますよね(笑
0712デフォルトの名無しさんNGNG
すいません、ウインドウプロシージャの最初の行で宣言したchar* aを、

int i;
i=SendMessage(hWndText,WM_GETTEXTLENGTH,0,0);//hWndTextはテキストボックスのハンドル
a=new char[i];
SendMessage(hWndText,WM_GETTEXT,strlen((const char *)a),(LPARAM)(LPCSTR)a);
とやったあとに。
delete[] a;
とやったらバグるんですが。なぜでしょう。デバッグしたら、落ちたときにはちゃんとaに文字列が設定されていました。
0713666NGNG
>>708
論理的には貴殿が癌に冒されて自分勝手になってるだけという惨憺たる事実と
身障+知障+神経症の発言はイグノアするのがベーシカリーなスタンスであり
我'zに対する嫌悪ありで発見の際は権力の犬を召喚しまくっている次第です。

以上。分かりましたか?

>>709
嘘じゃないです。そもそも価格なんかで嘘つく必要無いと言うか。

VC++STD AC 10k
VC++PRO AC 24k
VSENT AC 40k

これぐらいで売ってたんですが。もしかしてソフマップは詐欺企業なんですか?
だとしたら許せませんね。10000円で売りやがってたし。
0714デフォルトの名無しさんNGNG
VC++STD AC 8k
VC++PRO AC 16k
0715デフォルトの名無しさんNGNG
>713
正解
http://www.kakaku.com/sku/price/030000.htm
0716666NGNG
>>710
あんたが興味無ければやらんでいい。
それだけだと思うが?

> インライン
コンパイラが吐くアセンブリコードに絶対性を見出せない限りは必要性あり。
趣味でやるならコンパイラなんて関知せんが仕事なら分かるような気はする。
0717708NGNG
>>713
すまん、前半さっぱり分からない(w

ただ本当に1万で買ったならちょっと酷いとは思うよ
>>709の言うとおり、ラオックスでプロフェッショナルアカデミック13k
ヤマダ電気でもで14k位だからね

>>715
それは高いと思う
0718710NGNG
>>713
不正解だって
24kはVS Pro ACだよ。

>>716
仕事でやるならコンパイラのはくコードくらいは把握してるもんだが、
だからといって全部アセンブラで書くなんてことはせんぞ。
大体、絶対性ってなんだよ?
コンパイラ様のほうが、人間よりマトモなコードはくことが多いぞ。

> やっぱアセンブラでしょ。
それに、なにが「やっぱ」なわけ?

それから、俺はアセンブラは不要とはいってないぞ。
適材適所で使うべきものだ。
お前の発言からはアセンブラ至上主義としか取れなかったからな。
0719666NGNG
ソフマップが詐欺なのはもう分かったので
一般的な価格は皆さんの言う通りだと分かりました、はいはい


>>718
コンパイラ<<<<<<<<<<<<<人間
だよ。

あ、でも近年のは質上がって人間<<<<<<<<<<<<<コンパイラかもしれん

「やっぱ」ってのはアセンブラの方が趣味として楽しめるからな。
CPUへの機械語命令と一つ一つ対応してるし。

> それから、俺はアセンブラは不要とはいってないぞ。
悪かったな
0720予想屋NGNG
666・・・メガネヲタク風もやし工房
710・・・肉体派インテリプログラマー
0721デフォルトの名無しさんNGNG
さ、VC++相談室に戻りましょう。
脱線しすぎ。
0722デフォルトの名無しさんNGNG
>>666
被害妄想の自分かわいそうな厨房さんですか??
なんでも煽り扱いしてんじゃねぇよ。
だから孤立するんだって。
0723710NGNG
>>721
スマソ
0724696NGNG
あ、1K円じゃ1000円じゃん(;´Д`)
ガコウ逝って来ます・・・
0725デフォルトの名無しさんNGNG
すいません、ウインドウプロシージャの最初の行で宣言したchar* aを、

int i;
i=SendMessage(hWndText,WM_GETTEXTLENGTH,0,0);//hWndTextはテキストボックスのハンドル
a=new char[i];
SendMessage(hWndText,WM_GETTEXT,strlen((const char *)a),(LPARAM)(LPCSTR)a);
とやったあとに。
delete[] a;
とやったらバグるんですが。なぜでしょう。デバッグしたら、落ちたときにはちゃんとaに文字列が設定されていました。
0726725NGNG
バグるというのは強制終了するという意味です。
0727708NGNG
>>726
なぜ2度も書く(w
strlenの使い方をもう一度見直そう

漏れもそろそろ逝くか
0728デフォルトの名無しさんNGNG
>>725
SendMessage(hWndText,WM_GETTEXT,strlen((const char *)a),(LPARAM)(LPCSTR)a);
↓
SendMessage(hWndText,WM_GETTEXT,i,(LPARAM)(LPCSTR)a);

寝るか。
0729デフォルトの名無しさんNGNG
>727、728
できました!どうもありがとうございます。
0730666NGNG
>>720
「mailto:くだらねー:-)」とかいいつつinfantな発言だね。笑
眼鏡かけてないし。エセESPやってないで仕事しなさい。

>>722
別に何でも煽り扱いしてないが。
「被害妄想」とか屁理屈捏ねる前に勉強すれば?
0731デフォルトの名無しさんNGNG
                         ∧∧
         ゴルァ!            ヽ(゚ω゚=) ぃょぅ
    (  Λ_Λ               (   )
  (⊂ ´⌒つ゚д゚)つ)             ∪∪
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄


                        Σ ∧∧
         ゴルァゴルァゴルァ!      ヽ(゚ω゚=) ぃょ...!
         (  Λ_Λ            (   )
      (((⊂ ´⌒つ゚д゚)つ)          ∪∪
 ̄ ̄ ̄ ̄ ̄ ̄ ̄∪ノ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄

                           ∧∧
         ゴルァゴルァゴルァゴルァゴルァ! (゚ω゚=;) コワぃょぅ
             (  Λ_Λ       (   )
          ((((⊂ ´⌒つ゚д゚)つ)      ∪∪
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄∪ノ ̄ ̄ ̄ ̄ ̄ ̄ ̄

                           ∧∧
         ゴルァゴルァゴルァゴルァゴルァ!(xωx=) いたぃょぅ
                  (  Λ_Λ   (   )
               ((((⊂ ´⌒つ゚д゚)つ)*∪∪
0732720NGNG
>666
くだらねーは俺の行為についての感想だが何か?
0733デフォルトの名無しさんNGNG
>>666
つーかさ、MFC厨以前に、教えて厨じゃどうにもなんだろ。
頭悪い発言連発してるし。
邪魔だから失せろ。
0734デフォルトの名無しさんNGNG
MFCはSDKを理解してから初めて使えるものだ。
0735デフォルトの名無しさんNGNG
初心者です。
確かCreateWindow()でWM_CREATEメッセージが出るとかいうのを
見たことあるんですが、ShowWindow()ではメッセージ発生しないん
でしょうか。作成直後でなくて可視状態になってから実行したい
処理があるのですが・・・・
レスお願いしま〜〜
0736デフォルトの名無しさんNGNG
WM_PAINT
0737デフォルトの名無しさんNGNG
MFCの質問ですが、ウインドウのシステムメニューからのコマンド(最小化、最大化、クローズ)をキャッチするにはどうしたらいいのでしょうか。そもそも、これらのコマンドは、どんな経路で走っているのですか?
 よろしくおねがいします。
0738デフォルトの名無しさんNGNG
>737
>737
WM_SYSCOMMANDとかWM_CLOSEとかWM_SIZE
それをDefWindowProc()に渡したり渡さなかったりで処理が変わる。
つーかメッセージ監視用のソフトぐらいもってた方がいいぞ。
0739デフォルトの名無しさんNGNG
>>737
ていうか何故spy++を使わない?
0740sageNGNG
>>739
知らないだけだと思われ
0741666NGNG
>>732
上祐史浩(宗教団体アレフ)か。感服するよ

http://www.aleph.to/
http://www.joyu.to/

これがナルシシズムの骨頂という奴だ、存分にマスかいててくれ

>>733
頭悪い発言?コンパイラ<人間ってやつ?
実際、そういう時代もあったんだが。
ソフトの値段については「俺が見た限り」で正直に言っただけだがね。
0742デフォルトの名無しさんNGNG
>>741
君と同じ国にいると思うと(以下略)
0743デフォルトの名無しさんNGNG
>>741
( ゚Д゚)ハァ?ナルシズムかそれ??
君の質問は終わったんだからとっとと帰ってくれ。
0744デフォルトの名無しさんNGNG
test.cppでコンパイル時はエラーが出ないのですが実行すると
”test が原因で test.exe にエラーが発生しました。testは終了します。”
というメッセージが出てきます。
何が原因か全く分からないのですが、どのような可能性があるでしょうか?
0745デフォルトの名無しさんNGNG
           ____________
          ||                ||
          || アホは無視。        ||
          ||          。   ΛΛ
          ||          \ (゚Д゚ ) みなさんいいですね
          ||________⊂ ι|
  ∧ ∧    ∧ ∧    ∧ ∧     |  |
  (  ∧ ∧ (   ∧ ∧ (  ∧ ∧    UU~
〜(_(  ∧ ∧ __(  ∧ ∧__(    ∧ ∧
  〜(_(  ∧ ∧_(  ∧ ∧_ (   ∧ ∧
    〜(_(   ,,)〜(_(   ,,)〜(_(   ,,) は〜い
      〜(___ノ  〜(___ノ   〜(___ノ
0746デフォルトの名無しさんNGNG
>>744
test.cppって何?
まずソース晒せ。話はそれからだ。
0747744NGNG
ソースを晒すのは短くないので難しいです。
test.cppについてはメッセージ中にファイル名が出てくるのを
説明するのに出しただけです。
0748お胸おっぱいNGNG
>>744
プログラムが間違っている可能性がある。OK?
0749666NGNG
>>742->>743
池田先生の弟子として恥ずかしくない言動を心掛けよう(笑

http://www.sokagakkai.or.jp/

池田大作「ウーマン、イトマン、キンマンコ!」

>>744
>>746の言う通りソース晒さんと話し始まらん
境界間違えてAccessViolationなんてヘマは流石に無いよな?
0750デフォルトの名無しさんNGNG
>739
正直感動した!そのためにSPY++があったのか!!
0751デフォルトの名無しさんNGNG
#include <stdin>
0752デフォルトの名無しさんNGNG
winsockを使おうと思って
#include <windows.h>
#include <winsock2.h>

と書いたのですが、エラーが大量に発生します。
winsock2を先に書けば良いのですが、windows.hが最初と言う
頭があるので納得いきません。
どうするのが正しいですか?
0753sageNGNG
winsock2を先に書け
0754まずはNGNG
#include <windows.h>
#include <winsock2.h>
int main(){ return 0; }
この3行だけのソースをコンパイルしてみろ。
0755デフォルトの名無しさんNGNG
>>754
ダメです。
再定義されているというメッセージが大量に。
windows.hのなかでwinsock2.hが既にincludeされているようなのですが。
includeされるという保証があるのでしょうか?

ちなみに、SDKは2000/08版を使ってます
0756デフォルトの名無しさんNGNG
手持ちのwindows.hではこうなってる
#if(_WIN32_WINNT >= 0x0400)
#include <winsock2.h>
#include <mswsock.h>
#else
#include <winsock.h>
#endif /* _WIN32_WINNT >= 0x0400 */

だからwinsock*は改めてincludeする必要なし
0757_NGNG
ファイルのフルパスからファイル名を抽出するためには
どうしたらよろしいでしょうか?
そういうAPIがあるんでしょうか?

素人です。どなたか教えてください。
0758デフォルトの名無しさんNGNG
>>757
最後の/または\まで舐めて、それ以降を抽出する。
パス名/\が含まれるかどうかとか、
SJISの場合\の漢字判定もする必要がある。
APIがあればそれ使った方が良いかもしれんけど、知らない。
0759_NGNG
>>758
うっ・・・、
GetAt()なんかで舐めるんですか・・・?
書き方がよく分からないです・・・。
0760エロ画像NGNG
http://www.himawari.sakura.ne.jp/%7Eloveseat/Adu/index0.html
0761デフォルトの名無しさんNGNG
>>757
GetFullPathName()
0762デフォルトの名無しさんNGNG
大抵の処理系にはutilityぽい関数であると思うけどな
split,path,extとかで探してみ
0763デフォルトの名無しさんNGNG
あ、VCスレだった、最近VC使ってないからわからん
0764デフォルトの名無しさんNGNG
>>759
http://win32lab.com/tips/tips6.html
0765デフォルトの名無しさんNGNG
>>759
CString::ReverseFindで一発だろ。
0766デフォルトの名無しさんNGNG
>>757
IEのバージョンによっては存在しないけど、PathFindFileName。

あるいは FindFirstFile して WIN32_FIND_DATA::cFileName を見る。
0767 NGNG
つーか、自分の頭でやってることをコードに落とせばいいだけだろ。
効率の善し悪しは別として。
それが出来なかったらプログラムやめた方がいいぞ。
0768デフォルトの名無しさんNGNG
>>757
TCHAR系の変数や関数を使って書くのが吉。
上記内容なら、_splitpath()(あるいは_tsplitpath())がおすすめ。
0769デフォルトの名無しさんNGNG
つうかMFCって標準的にそういうライブラリないのか?
0770質問ですNGNG
ダイアログベースで作成したプログラムはリターンキーで強制終了してしまいますが、
これをやめるにはどうするのでしょうか?
0771デフォルトの名無しさんNGNG
>>770
MFCでなら、OnOK() をオーバーライドして、CDialog::OnOK()を呼ばないようにしてやる。
0772デフォルトの名無しさんNGNG
>>770
その終了は正規の終了シーケンスに則った「行儀の良い終了(Graceful Shutdown)」のはずですが。
もし本当に強制終了されるならOSが壊れているのかもしれません。
0773771NGNG
スマソ、おもいっきし外してますな、俺。
確かに、エラーが出て「強制終了」されるなら、どっかメモリ壊したりしてる可能性がある。
0774デフォルトの名無しさんNGNG
エクスプローラーみたいにディレクトリ構造を表示するダイアログを作りたいのですがどうすればいいのでしょう?
0775デフォルトの名無しさんNGNG
>774
CTreeView
0776デフォルトの名無しさんNGNG
CPropertySheetを使っています。

コンストラクタで以下のように書くと、
AddPage( &m_PPageHoge ) ;
AddPage( &m_・・・・
自動的にプロパティーシートの左上隅からプロパティー
ページが追加されていきますよね?

場所を指定してプロパティーページを追加する
方法はありますでしょうか?
上の方に空白を設けてそこにCEdig::Createして
エディットボックスを作りたいのですが。

ご存知の方いらっしゃいましたら
よろしくご教授ください。
0777デフォルトの名無しさんNGNG
>>768
普通stringクラス+アルゴリズム使うだろ。
厨房決定。(ワラ
0778デフォルトの名無しさんNGNG
>>777
どうでもいいが std::string じゃなくて std::basic_string<TCHAR> じゃないのか?
マクロ _UNICODE を定義したときにハマるぞ。


あと上でも書いてるが GetFullPathName() の第一引数にフルパス名を渡せば、
ファイル名だけ抜き出してくることができる。szFullPath にフルパス名が入って
いると仮定して

TCHAR szPath[MAX_PATH];
LPTSTR *pszFilePart;
::GetFullPathName(szFullPath, MAX_PATH, szPath, &pszFilePart);

これで pszFilePart がファイル名の先頭を指すようになる。szFullPath の内容が
szPath にコピーされるのでやや効率が悪いが、

- 他の Win32 API と同じく、セパレータとして '\\', '/' 両方を受け付ける
- UNC を理解する (//machine/dir/ を食わせると pszFilePart は NULL になる)

など、他の Win32 API と齟齬をきたさぬ仕様が便利。
0779デフォルトの名無しさんNGNG
CPropertySheetを使っています。

コンストラクタで以下のように書くと、
AddPage( &m_PPageHoge ) ;
AddPage( &m_・・・・
自動的にプロパティーシートの左上隅からプロパティー
ページが追加されていきますよね?

場所を指定してプロパティーページを追加する
方法はありますでしょうか?
上の方に空白を設けてそこにCEdig::Createして
エディットボックスを作りたいのですが。

ご存知の方いらっしゃいましたら
よろしくご教授ください。
0780菊丸NGNG
VCでエクセルをCSVファイルに落とさずにデータを扱いたいのですが
、その様な事はできるのでしょうか?
よろしくお願いします。
0781デフォルトの名無しさんNGNG
>>780
COM
0782菊丸NGNG
>>781
すみません。
いま一つ意味がわかりません。

どういうことでしょうか?
0783デフォルトの名無しさんNGNG
>>782
COM 知らないの? 情報は豊富にあるはずだから、書籍なり google なりで調べてください。
たとえば Excel97 だと、こんな感じのコードで操作できる。

#define WIN32_LEAN_AND_MEAN
#include <windows.h>
#include <objbase.h>
#include <tchar.h>

#import "C:\PROGRAM FILES\COMMON FILES\MICROSOFT SHARED\VBA\MSO97RT.DLL" \
  no_namespace rename("DocumentProperties", "DocumentPropertiesXL")
#import "C:\PROGRAM FILES\COMMON FILES\MICROSOFT SHARED\VBA\VBEEXT1.OLB" \
  no_namespace
#import "C:\PROGRAM FILES\MICROSOFT OFFICE\OFFICE\EXCEL8.OLB" \
  rename("DialogBox", "DialogBoxXL") \
  rename("RGB", "RBGXL") \
  rename("DocumentProperties", "DocumentPropertiesXL") \
  no_dual_interfaces

int APIENTRY
_tWinMain(HINSTANCE hInstance, HINSTANCE, LPTSTR, int nCmdShow)
{
  ::CoInitialize(NULL);
  Excel::_ApplicationPtr spExcel;
  Excel::WorkbooksPtr spWorkbooks;

  spExcel.CreateInstance("Excel.Application");
  spExcel->PutVisible(TRUE);

  _bstr_t bstrFile("D:\\tmp\\test.xls");
  spWorkbooks = spExcel->GetWorkbooks();
  spWorkbooks->Open(bstrFile);

  ::Sleep(5000);    // Wait

  spExcel->Quit();
  ::CoUninitialize();
  return (0);
}
0784菊丸NGNG
>>783
なるほど。

即レス、
マジでありがとうございました。
0785デフォルトの名無しさんNGNG
>>770 ありがとうございます。オーバーロードのことですか?
>>771 その終了シーケンスをやめたいのです。
0786デフォルトの名無しさんNGNG
VCチュートリアルが終わった程度の初心者です。
InternetExplorerの右上にある「e」のマークのような画像を
ウインドの右上に表示するにはどうすればよいのでしょう。
それともVCでは作れないのでしょうか。
ヒントだけでもお願いします。
0787デフォルトの名無しさんNGNG
エディットコントロールビューを読み込み専用にすると灰色
になっちゃいました。
読み込み専用(書き込み不可)のエディットコントロールを
白くする方法ってあるのでしょうか?
よろしくお願いします。
0788デフォルトの名無しさんNGNG
OS別に気を付けなくちゃ行けない事の情報とか、
どこかにないでしょうか

NT4でVC++5.0で作ってるんですが、
そのソフトをWin98で動作させると
落ちまくったりして、
調べているところなのです
0789デフォルトの名無しさんNGNG
>>788
MSDN
0790デフォルトの名無しさんNGNG
>>785
ん?つまり、OKボタンはそのまま残して、リターンだけ無効にしたいってこと?
PreTranslateMessage()をオーバーライドして、
BOOL CMyDialog::PreTranslateMessage(MSG* pMsg)
{
  // TODO: この位置に固有の処理を追加するか、または基本クラスを呼び出してください
  if( pMsg->message == WM_KEYDOWN && pMsg->wParam == 0xd )
    return true;
  return CDialog::PreTranslateMessage(pMsg);
}
とかしておけば?
0791デフォルトの名無しさんNGNG
>>787
背景色変えてやれば? > CWnd::OnCtlColor()
0792デフォルトの名無しさんNGNG
>>786
OnPaint() | WM_PAINT で ビットマップかアイコンを描画。
CBitmap | ::LoadBitmap() でMSDN。
0793786NGNG
>>792
ありがとうございます。
でも、それだと、ツールバーの下に描画されるのでは?
ツールバーの横(とかメニューの横)にかっこよく絵を
置きたいのです。
なんとかなりませんでしょうか?
0794デフォルトの名無しさんNGNG
>>793
CDialogBar
0795デフォルトの名無しさんNGNG
getopt互換関数ってないですか?
0796デフォルトの名無しさんNGNG
>>788
IEのバージョン(w
0797sageNGNG
>>795
素直にgetoptもってきて使え。
0798デフォルトの名無しさんNGNG
描画について質問。

拡大した画像を表示したいんだけど、
SetViewportExtなどを使って拡大するのと、
ストレッチブリットで拡大して描画するのと
どっちが速いですか?(もちろん処理速度)

どっちも拡大してからの座標変換がややこしい。。。
0799デフォルトの名無しさんNGNG
>>798
自分で実験しろ。
0800デフォルトの名無しさんNGNG
コンソールアプリ実行したらDOS窓の一番上に
”定義ファイルが開けません”
って出るけどこれ何?
0801デフォルトの名無しさんNGNG
スレッドを、 スレッドの外から強制終了させる方法はありませんか?
0802デフォルトの名無しさんNGNG
>>801
強制でいいなら TerminateThread() 。
0803801NGNG
>>802
thanks!
0804分割ウィンドウで質問NGNG
┏━━━━┳━━━━┓
┃      ┃      ┃
┃      ┃      ┃
┣━━━━┫      ┃
┃      ┃      ┃
┃      ┣━━━━┫
┃      ┃      ┃
┃      ┃      ┃
┗━━━━┻━━━━┛
このように分割されたウィンドウはどうすれば上手く
出来るのでしょうか?

SplitterWndをOnCreateClientでネストして使用し
・まず左右に分割
・次に左を上下に分割
・最後に右を上下に分割
とやってみたのですが、左の領域の幅が
何故かゼロ(分割線が左端に寄ってしまう)に
なってしまい、悩んでいます。

左右のどちらか一方が分割されないような三分割は
検索すると結構見つかるのですが、この形態の四分割は
参考例が見つからないので、識者の知恵をお借りしたい次第です・・。
0805sageNGNG
>>803
わかってるならいいけど、最後の手段だぞ、それ。
0806デフォルトの名無しさんNGNG
>>805
というより、設計が間違ってます(w
0807デフォルトの名無しさんNGNG
>>799
いいから答えろや。ゴルァ。
知らんかったら書くな。ゴルァ。
0808デフォルトの名無しさんNGNG
>>807
そんなもんほぼ環境依存なんだから自分で実験して好きな方使え。
0809デフォルトの名無しさんNGNG
>>808
本人が放置希望みたいだから以後その方向で行きませう。
0810デフォルトの名無しさんNGNG
リソースがDLL化されているプロジェクトに
リソースを追加するにはどうすれば良いでしょうか?
0811デフォルトの名無しさんNGNG
CFileFindでサブディレクトリを含めた検索はどうすればいいんでしょうか?
0812デフォルトの名無しさんNGNG
>>811
再帰的に検索する。
検索結果がディレクトリだった場合は、検索関数自身をコールすれば良い。
0813811NGNG
>812
あう、用意されてないんですか。わかりました。ありがとうございます。
0814デフォルトの名無しさんNGNG
>>810
ハァ?

1. そのリソース DLL にリソースを追加する。
2. リソース DLL は使わず自分にそのリソースを追加する。
0815デフォルトの名無しさんNGNG
ofstreamでファイルを出力するときに
フォルダが存在しない場合にエラーにならないで
勝手に作成してくれるのってないですか?
0816sageNGNG
>>815
ない
MakeSureDirectoryPathExistsを調べとけ
0817デフォルトの名無しさんNGNG
>>816
いぇっさー
0818デフォルトの名無しさんNGNG
>>814
1.DLLしか提供されていなくても、リソースって追加できます?
やり方教えてください
2.リソースだけでなく、プログラム本体の下層レイヤーなども含まれているので
 ちょっと無理です
0819sageNGNG
>>818
リソースDLLをもらったんだが、それにリソースを追加したい。
でも、ソースはない。

という話しか?
何がやりたいのかはっきりしろ
0820818NGNG
DLLではなく、ただの拡張子.libのライブラリーファイルです
0821デフォルトの名無しさんNGNG
VCのプロジェクトがあって、リソースやプログラムのコアとなる部分がライブラリー化され
そのライブラリーに対するAPIが用意されていて、それでプログラムしていくようになっています。
このプロジェクトに、リソースを追加するやり方を教えてもらいたいのですがお願いします。
0822sageNGNG
>>821

まず国語を勉強し直せ。

DLLとインポートライブラリの関係はわかっているか?
リソースDLLがどんな目的で作られるかわかっているか?

そのプロジェクトにリソースを追加するだけなら、
プロジェクトを開いてctrl+R
もしくは
プロジェクトへのファイルの追加で、自分の書いたリソーススクリプトファイルか
リソースファイルを追加しろ。
0823デフォルトの名無しさんNGNG
>>820
じゃあDLL関係ねぇじゃねぇか!!
状況説明くらいまともにしてくれ。
・何がしたいのか
・どういう状況か
これくらいは具体的に書け。

あと、ネタならネタってメール欄に書いとけ。
0824ToriNGNG
MFCを使わないSDIのプログラミングはそれほど難しくなく、また、さまざまな
プログラムが組めると思います。
MFCを使わない時のデメリットはなにでしょうか?
マジレす希望
0825デフォルトの名無しさんNGNG
>>824
MFCを使った場合のメリットなら。
ClassWizardを使って、メッセージハンドラを手間無く追加できる。
別のプロジェクトからクラスまるごと使いまわし、がしやすい。
特殊なView(ListView, HtmlView等)を使う場合、初期段階でインプリメントまで自動でやってくれる。

つまり、ハンドラ書くのが手間じゃない人や、特殊なView使わないなら、
それほどデメリットにならないのでは?
0826デフォルトの名無しさんNGNG
たびたびすいません。CFileFindはディレクトリの中にディレクトリが1個だけある時それを見つけられないようですけど、
回避方法はありますか?
0827デフォルトの名無しさんNGNG
↑
ごめんなさい。解決しました。
しかし何つう糞関数なんだCFindNextFile()…
0828 NGNG
>>827
それはFindFirst/NextFile()に則った挙動だと思うけど。

まあ、CFileFindが糞だということは同意。
毎回WIN32_FIND_DATAをnewしてるし、GetFilePath() はバグってるし。
0829デフォルトの名無しさんNGNG
>>828
え、GetFilePath()がバグってるって?
どういうのか教えてください。
0830デフォルトの名無しさんNGNG
NTのサービスとして動作するプログラム作ってるんだけど、
プログラム内でUNCパス指定されたファイル読みたいんだけど、
UNCパス指定が\\Servername\Foldername\Filename
だと読めないんですが、ローカルファイルだと読めます。
UNCの指定が変ですか?
0831デフォルトの名無しさんNGNG
>>830
誰の権限で接続しにいってる?
0832 NGNG
>>831
権限は指定してないのでsystemユーザーかな、で繋ぐ相手はWin98で
特にフォルダにパスワードとか切ってないんだけど
0833デフォルトの名無しさんNGNG
こんにちは。
MFCを利用してドキュメントビューアーキテクチャを実装した上で、
MainFrameのOnCreate内にて独自のウィンドウを表示したいと思い、
以下のようなプログラムを組みました。

LPCTSTR wndclass;
CRect rect(32,32,256,256);
m_NewWnd = new CNewWnd;

wndclass = AfxRegisterWndClass(CS_HREDRAW | CS_VREDRAW, 0,0,0);
m_NewWnd->Create( wndclass, "NewWnd",
WS_CHILD | WS_OVERLAPPEDWINDOW | WS_HSCROLL |WS_VSCROLL| WS_VISIBLE ,
rect, this, NULL,NULL);
m_NewWnd->ShowWindow(SW_SHOW);

# CNewWndはCWndの派生(中身なし)
# m_NewWndは*CNewWnd型としてヘッダで定義済み

ところがこれだと、表示されるまではいいのですが、
クリックしてもバーが灰色(フォーカスが移っていない状態)のままで
ドラッグも拡大縮小もできません。
また、rectをrectDefaultに変えると灰色のままですが、拡大縮小はできるようになりました。
しかしこのときでも最小化するとそのまま反応がなくなってしまいます。
一体どうやれば普通のウィンドとして表示されるのでしょうか。
お知恵をお貸しください。
0834 NGNG
CreateViewやってないからでは?
0835Ruby!NGNG

>C++
>いろいろと有名なオブジェクト指向言語であるC++と
>Rubyを比較すると:

>* C++なぞ問題外.^^;;;

http://www.ruby-lang.org/ja/compar.html

Rubyを知ってもらうためにもこの文をコピペしてください。
0836833NGNG
>>834
CWndからの派生なので
CFrameのメンバであるCreateViewは使えないのです・・・。
実は以前にVCを使った時にも同じようなことで悩んだ覚えがあります。
しかしその時のソースは残ってないし。
うーん、覚えてない自分に腹が立つ。
0837833NGNG
ここで書いていると昔の記憶が蘇り、なんとか解決しました。
Windowハンドルを自分で作ってアタッチしてやれば、
普通のウィンドウのように振舞ってもらえました。

HWND wnd;
wnd = CreateWindow(palletwndclass, "PalletWnd", WS_OVERLAPPEDWINDOW|WS_VISIBLE,
0,0,256,256,this->m_hWnd,NULL,NULL,NULL);
m_PalletWnd = new CPalletWnd;
m_PalletWnd->Attach(wnd);
m_PalletWnd->ShowWindow(SW_SHOW);

しかし、以前のプログラムは何が原因であったのかは謎のままです。
このプログラムも逃げのプログラミングという感じで対処療法すぎて少ししっくりきません・・・。
問題の原因のわかる方がいらっしゃいましたらぜひご教授ください。
0838デフォルトの名無しさんNGNG
>>828
\を含む2バイト文字+\で\が消える。
C:\予定表\9月→C:\予定表9月
0839デフォルトの名無しさんNGNG
↑>>828→>>829
0840828NGNG
あれ、いま確かめたらFindNextFileで毎回newしてなかった。鬱出し脳。
0841デフォルトの名無しさんNGNG
Visual C++ 7.0ってまだ出る気配ありませんか?
まだ先の話ですかね・・・。
0842デフォルトの名無しさんNGNG
>>841
VS.NET
0843841____NGNG
>>842
ネタだったのに・・・
0844デフォルトの名無しさんNGNG
                
  Ruby     は      クソです!    ゴミ      箱     逝きです!
  ∧_∧   ∧_∧    ∧_∧   ∧_∧     ∧_∧    ∧_∧
 ( ・∀・)  ( ・∀・)   ( ・∀・)  (  ・∀)    (∀・  )   (・∀・ )
⊂ ⊂  )  ( U  つ  ⊂__へ つ  ( ○  つ   ⊂ ○ )   ⊂ ∩  つ
 < < <    ) ) )     (_)|   \\ \   / //   / /\ \
 (_(_)  (__)_)    彡(__)   (_(__)  (_(_)   (__)  (__)

この発言をコピペしていただければ幸いです。
0845デフォルトの名無しさんNGNG
DLLから呼び出しもとの機能を使用するにはどうすればいいのでしょうか。
今までは呼び出し元で機能のクラスをnewして、そのポインタをDLLの関数に引き渡していて、
DLLの関数からは渡されたクラスのポインタを元にメソッドを呼び出していました。
呼び出し元とDLLを両方ともVCかBorlandC++でコンパイルすれば正常に動くのですが、
片方をVC、片方をBoralndC++でコンパイルすると実行時に異常終了してしまいます。

newしたポインタを渡すという考え自体がだめなのでしょうか
0846デフォルトの名無しさんNGNG
VCとBCCでは仮想関数系の実装方法が違いますからその方法ではダメです >>845

a->get なら Aget(a) のような 関数を作ってラップしてから呼ぶのか安全確実です
0847sageNGNG
>>832
ファイルアクセス前に、Netbiosの正しい接続手続きは踏んでる?

サービスとして起動しているプログラムは、通常、
外のサーバの資源はどこにも接続していないはずだよ。
0848sageNGNG
>>845
がんがん機能を切り出してCOMにでもしときなさい。
0849845NGNG
>846
Thank you!

>848
いや、COMはよく判らないか…
0850ToriNGNG
VisualC++6でアクセス2000のデータベースを扱うアプリを考えています。
もっとも詳しく紹介したサイト教えて下さい
0851デフォルトの名無しさんNGNG
>>850
MSDN Library を ADO で検索。
0852デフォルトの名無しさんNGNG
ClassViewが突然使えなくなってしまいました
コードに問題があるとは思えません
(単純なもので試しました)
DirectX SDKをインストールしてからおかしくなったような気がします
VC++初心者なので、設定等がおかしいのかもしれません
わかる人がいましたら、教えてください
0853デフォルトの名無しさんNGNG
>>852
コードに問題なけりゃ、お前の頭に問題が有る。
初心者のクセに自分のコードにそれだけ自信をもてるとは、
たいしたものだ、。
0854デフォルトの名無しさんNGNG
>>853
こんにちはザワールドだけなコードだったりしてな(w
0855デフォルトの名無しさんNGNG
>>852

*.ncb消せ。
0856デフォルトの名無しさんNGNG
>>855
直りました
ありがとうございます
0857ウイルスよこせ!NGNG
お前ら俺にウイルスを送ってみろ。
いくらでも対処してやるよ。
どんどんよこせ。
それともウイルス作れるここにはいないかな?
バカばっかりっぽいもんね。
[email protected]
0858デフォルトの名無しさんNGNG
ビデオキャプチャで用いられる
capXXX()
っていう関数のことを解説してある、良いサイトはないでしょうか?
0859デフォルトの名無しさんNGNG
>>857
>それともウイルス作れるここにはいないかな?
日本語ヘンだよ?
頭も相当ヘンそうだけど。
0860デフォルトの名無しさんNGNG
GlobalReAllocってどういう時に使えばいいのでしょうか?
0861デフォルトの名無しさんNGNG
グローバルにリアロークしたい時
0862デフォルトの名無しさんNGNG
よくわかりません>861
0863デフォルトの名無しさんNGNG
>>862
ネタだって。

ともかく VC++ についてきた MSDN Library をインストールして、GlobalReAlloc()
の項を読むのが正解。それで分からなかったら、また質問してくれ。
0864デフォルトの名無しさんNGNG
>863 は親切な人
コテハンで質問に答えてくれると嬉しいっス
0865デフォルトの名無しさんNGNG
>>864
嬉しいか、嬉しくないかなんて知ったところではない。
暇な時に、答えられそうな質問に、答えられる人が答えてるだけだし。
0866863NGNG
>>864
別にコテハンで書いてもいいが、何でコテハンで書いて欲しいんだ?
0867デフォルトの名無しさんNGNG
「わーい専属サポート員ができた〜」
ってことなんじゃねえの?
0868デフォルトの名無しさんNGNG
じゃあ、回答する人は名前欄「MSDN」とかにしておくとか?(藁
0869デフォルトの名無しさんNGNG
bool型って見たことないんですけど何に使うんですか?BOOLと何が違うんでしょうか?
0870デフォルトの名無しさんNGNG
>>869
・・・
お前とは仕事したくない・・・
0871デフォルトの名無しさんNGNG
>>869
VC++のまえに C++の本を
読んでください
読んでください
読んでください
読んでください
読んでください
読んでください
0872MSDNNGNG
>>869
ともかく VC++ についてきた MSDN Library をインストールして、bool
の項を読むのが正解。それで分からなかったら、また質問してくれ。
0873デフォルトの名無しさんNGNG
>>863
どういうメリットがあって、どういうデメリットあるのかが良くわからないのです
とりあえず、メリット、デメリットよりも
どういう時に使うと効率が良くなるのか教えてください
その逆で、どういう時に使ってはいけないのかでも
理解可能なのですが
0874デフォルトの名無しさんNGNG
>>873
C の標準関数に realloc() がありますが、この用途は理解してますか?
それとも、グローバルメモリオブジェクトの用途が分からんということかな。
0875デフォルトの名無しさんNGNG
>>873
自分にとって必要ない関数を無理に使うことはないと思われ
0876デフォルトの名無しさんNGNG
すいません
realloc知りませんでした
今から調べてみます
グローバルメモリっていうのが
そもそも何だかよくわかりません
0877デフォルトの名無しさんNGNG
>>876
> グローバルメモリっていうのが
Win16 時代の名残だから、忘れてて良いよ。

ただし、クリップボード使うときだけ一瞬思い出すこと。
0878デフォルトの名無しさんNGNG
>>869
小文字で書いてあるのはCの予約語で、
大文字で書いてあるのはVC++の定義。
Windows.h、Windowsx.hを参照のこと。
0879デフォルトの名無しさんNGNG
>ただし、クリップボード使うときだけ一瞬思い出す
他のプロセスのメモリーにアクセスするための
って感じでしょうか?
0880デフォルトの名無しさんNGNG
>879
ちがう。
0881デフォルトの名無しさんNGNG
>>879
グローバルメモリが必要な時は、普通そう書いてあるから、気にすんな。
0882_BoolNGNG
>>878
bool は C++ の予約語…。
0883デフォルトの名無しさんNGNG
結局のところGlobalReAllocの
有効な使い方は誰にもわからないということで
いいんでしょうか?
0884MSDNNGNG
>>883
いや、分かってるけど。

realloc() の使いどころが分かれば、

 malloc() したメモリ空間を realloc() で拡大/縮小できるのと同様
 GlobalAlloc() したグローバルメモリオブジェクトを GlobalReAlloc() で拡大/縮小できる
 (サイズ以外の属性もいじれるけど)

で十分な説明だと思う。で realloc() の使いどころが分からないのなら、それは VC++ の
スレッドではなく C 言語の(しかも初心者向けの)スレッドで質問したほうがいい。
0885デフォルトの名無しさんNGNG
>malloc() したメモリ空間を realloc() で拡大/縮小できるのと同様
>lobalAlloc() したグローバルメモリオブジェクトを GlobalReAlloc() で拡大/縮小できる
こんなのは本を読めば、誰でもわかることでは?
重要なのは、使いどころだと思われ
さらに、誰もrealloc()については聞いてないだろ
まあ、俺もどこで使うべきかっていうのはよくわからないんだが
884が知ったかじゃないなら、
globalreallocとreallocの違いを説明するべし
ついでにreallocのリスクも説明するべし
0886MSDNNGNG
>>885
前にも書いたけど、グローバルメモリオブジェクトは Win16 時代の名残だから忘れて
良いんだって。

知ったか呼ばわりされるのもアレだから、一応書いておくが。

その昔、まだ Windows が 3.x だった時代。Win16 API はアプリケーションに二種類の
ヒープを提供していた。

1 ローカルヒープ
 連続して確保できるアドレスは16bit(64KB)
 プロセスローカル
 アクセス/メモリ管理は高速

2 グローバルヒープ
 連続して確保できるアドレスは16bitに制限されない
 すべてのプロセスで共有
 アクセス/メモリ管理は低速

またメモリが少なかった当時の事情に配慮して、OS が適時 compaction 処理を行える
ようになっていた。だから当時は大きなメモリブロックを一括して使いたい場合には

1 GlobalAlloc() で確保
2 メモリにアクセスする直前に確保した領域をロック/終わったらアンロック
3 グローバルヒープは、必要に応じて GlobalReAlloc() で拡大縮小

していたわけだ。

Win32 になったときに 386 のメモリ管理機構が導入され

1 各プロセスのメモリ空間が分離
2 メモリ空間が32bit化され、セグメントの壁がなくなった

ために、グローバルヒープとローカルヒープを区別しておく必要がなくなった。また仮想
記憶システムが一新されて、スワップさえとっておけば compaction 処理を行わなくても
実メモリを有効に利用できるようになった。そこで GlobalAlloc(), LocalAlloc() は過去の
機能を残したまま統合、compaction 処理をしないヒープ割り当て関数の HeapAlloc()
を導入し(こちらのほうが余計な処理をしないため、性能が良い)、これを使うことを推奨
して今に至る。

グローバルメモリオブジェクトを使う機会だけど、Win32 だと実質的には

- Win16 時代のソースコードをメンテナンスする場合
- クリップボード
- DDE 関連

ぐらい。最近はDDEもはやらないから、実質的にはクリップボードにアクセスするときぐ
らいで、クリップボードコピー時には GlobalAlloc() して即 SetClipboardDate() するだけ
だし、クリップボードからデータを取得するときには一時的なハンドルが返されるだけ
だから GlobalReAlloc() を使う機会はほとんどない。

…で分かった? realloc() について説明するのはパスパス。C の初心者スレで聞いて
くれよ。
0887デフォルトの名無しさんNGNG
>>886
ああ、可哀想に・・・そんな説明せんでも、厨房はほっとけばよかったのに。
本気でその程度のことがわかってないなら、このスレじゃなくて、本でも読んで勉強しろって感じだよなぁ。
0888デフォルトの名無しさんNGNG
マジ質問。
Win32となった今は
GlobalAlloc()もLocalAlloc()もHeapAlloc()も
全部同じ機能だと思ってたんですが、何か違いはあるんですか?
0889sageNGNG
GlobalとLocalは同じだと推測できるが HeapAllocは明らかに違うだろ
0890デフォルトの名無しさんNGNG
eMbedded Visual C++ 3.0 で STL 使いたいんですが何か方法はないでしょうか?
0891デフォルトの名無しさんNGNG
>>890
SGIのでもダウンロードしてきて突っ込んだらコンパイル通らん?
0892MSDNNGNG
>>888
ともかく VC++ についてきた MSDN Library をインストールして、

- GlobalAlloc(), LocalAlloc()
- HeapAlloc()
- VirtualAlloc()
- VirtualAllocEx()

の項を読むのが正解。それで分からなかったら、また質問してくれ。
0893デフォルトの名無しさんNGNG
>>887
まったく。883と885は1インシデント消費しとけよ。
0894888NGNG
Heap系関数の説明にこう書いてあったよ。
There is no difference between memory allocated from a private heap and that allocated by using the standard allocation functions (GlobalAlloc, LocalAlloc, malloc, and so on).
0895デフォルトの名無しさんNGNG
最初はMSDNなんてISDNと変わらん
とか思ってたけど意味を知ったらMSDNが
欲しいです。コンパイラは手に入るけどヘルプ
の方が手に入らないのは詐欺だ!だれか一回見た
MSDNオンラインヘルプは自分の物に出来る
ヘルプビューア(軽いやつ)作ってくれ!ちょいやばめかもしんないけど
0896sageNGNG
>>894
そりゃ、ヒープ内での扱いは同じだわさ。
異なるヒープを使うってことに以外に違いはないよ。
0897MSDNNGNG
>>895
MSDN Library Subscription を買いましょう。
http://www.msj.co.jp/msdn/admission/default.htm

Yahoo Auction で MSDN Library の Subscription 権利 (一年分) が10,000円
弱で出てることがありますから、それを手に入れるのが安上がりかと。

たまに MSDN Subscription の購読権ではなく CD-ROM / DVD-ROM をバラ
して売っている人がいますが、あれはライセンス上問題がある可能性が高いの
で気をつけてください。
0898デフォルトの名無しさんNGNG
GlobalAllocってオプションで動作が違うんだよ。
デフラグみたいな動作(Purge)をするために間接ポインタを
返す場合。HeapAllocは保護機構とかもっと低水準の機能の
ためのオプションがある。
0899デフォルトの名無しさんNGNG
>GMEM_MOVEABLE 移動可能メモリを割り当てます。
>このフラグはGMEM_FIXEDフラグと組み合わせることは
>できません。戻り値はメモリ オブジェクトのハンドル
>になります。このハンドルは、 呼び出しプロセスに対
>してプライベートな32ビット値です。ハンドルをポイ
>ンタに変換するには、 GlobalLock関数を使用してください。

現代では移動可能メモリって使うべきでない。なんでかというと、
仮想メモリ上(場合によってはディスク上に存在)で移動されても
困るから。
0900デフォルトの名無しさんNGNG
>889
移動可能メモリ=仮想メモリなのでは?

移動不可のメモリ=実メモリ上にあり、スワップされないもの。
0901デフォルトの名無しさんNGNG
ちがう。それはHeapAllocでコミットされてるかどうか
の話。PurgeっていうのはマックOS7とかDOSで64kとか
32Kのセグメント内でデフラグする行為で、移動可能な
ブロックがデフラグの対象になるわけ。
0902デフォルトの名無しさんNGNG
そういえば最新のMSDNってユーザ登録すればCDかなんかで貰えるの?
貰える場合VC++6proでも大丈夫?VStudioとかじゃないと駄目かな
0903901NGNG
漏れはVisualStudioだが、
うーん、内容は出版社の紙の本の方を評価する。
富士ソフトの「WindowsNTプログラミング」が
良かったなあ。
MSDNはWindowsDNAとか独自の世界を暴走していて
電波入りすぎ。無理して買ってもつまらない。
0904902NGNG
>>903
むぅ、そうなんすか。お奨めでない、と。
書籍の方も探してみます。例によって高くなければ良いのですが(w

MSDNに余計なのあり過ぎってのはまったく同意です。
個人的に英語版PlatformSDKの全訳さえあれば他に何もいらないので、
その辺を、新MSDNに期待したかったのですが…。
0905 NGNG
MSDNなんて、MSの大本営発表なんだからVC付属+ダウンロードで十分だろ。個人では。
不足があればwebで見たらいいし。
ところで、いまVC買っても付属のMSDNは98年位の古いまま?
0906デフォルトの名無しさんNGNG
サービスパック当てるとMSDNも変更かかるはず。
0907869NGNG
>>872
boolはintに変換できるし、BOOLはintのtypedefだから当然融通できますよね。
trueもTRUEも1だしfalseもFALSEも0だし…違いといえばBOOLにはintを代入できることくらいですか?
でもそんなことあんまりしませんよね(するとしたらごめんなさい)。
何のためにBOOLがあるのか本当にわからないです…バカでごめんなさい。
0908デフォルトの名無しさんNGNG
>>907
C/過去との互換のため
0909MSDNNGNG
>>907
Visual C++ 4.2 では、標準 C++ ヘッダー ファイルの typedef によって bool と int が等価とされていました。
Visual C++ 5.0 以降では、bool は 1 バイトの組み込み型としてインプリメントされています。
0910869NGNG
なるほど、互換性を良くしたいときにはBOOL、最適化したいときはboolを使えばいいんですね。
済みません、どうもありがとうございました。
0911デフォルトの名無しさんNGNG
>>907
BOOL は、bool がまだ無かったころの名残です。
0912デフォルトの名無しさんNGNG
>>906
でも、最近の API はドキュメントがない。

そこだけオンライン版の MSDN サイト使うって手もあるが、オンライン版の MSDN は VC++ に統合
できないし検索のインターフェースが良くないから、1万円程度なら買ってしまっても、元取れると思
うぞ。

ダウンロードできる Platform SDK のドキュメント、あれが邦訳されてれば文句ないんだが。
0913デフォルトの名無しさんNGNG
>>910
なんかそれ、ちょっと違うと思うんだ。

コンパイラが「真」と「偽」を知ってるかどうか、と、
ソースの可読性のためにあると思うぞ。
BOOL 型の変数に 2 を代入してもコンパイラは何も言わない(言えない)けど、
bool 型の変数にそんなことすると、文句を言われるぞ。

>>911
ってゆーか、MS-C がまだ C++ ではなかった & ANSI 準拠が優先だったからでは?
0914913NGNG
ちなみに、話は脱線しちゃうけど、
たとえば Visual C++ 6.0 って、コンパイラのバージョンは "12.0" だってこと、
意外と知ってる人は少ないんじゃない? (→ MS-C/C++ Compiler Version 12.0)

MS-C は Lattice-C のライセンスを受けてリリースした 3.0 が最初で、
そのころはまだ「C Compiler」だった。Windows の開発が始まったのはその頃。
確か bool ってのは C++ で追加された型だったと思う。
だから bool じゃなく、BOOL。

MS-C が C++ になったのは、確か 6.0 からだったと思う。
商品名が「Visual C++」になったのは MS-C 8.0 から。
それ以後、MS-C 9.0 = Visual C++ 2.0、MS-C 10.0 = Visual C++ 4.0、
MS-C 11.0 = Visual C++ 5.0 ときて、今は MS-C 12.0 = Visual C++ 6.0
0915デフォルトの名無しさんNGNG
C++になったのはVer7からだよ
0916914NGNG
>>915
あっ、(あの邪悪な) C7 からか。 スマソ
0917デフォルトの名無しさんNGNG
>>914

Winアプリを作れるようになったのもVer7からだったっけ。
0918デフォルトの名無しさんNGNG
vc++でプログラムを作ったんですが
人に渡す時は**.exeだけ渡せばいいのでしょうか?
ちなみにStandardEditionです・・・関係ない?
0919デフォルトの名無しさんNGNG
状況に依る>918
0920デフォルトの名無しさんNGNG
>917
一番初期はMS-C6とSDKだった
>918
相手のOSによる、Win95だとruntimeが古いのしか入ってないと思われる
0921918NGNG
私も相手も2000を使っている場合は
exeだけでよろしいのでしょうか?
0922デフォルトの名無しさんNGNG
>>921
作ったプログラムが他にファイルを必要としないのなら
実行ファイルだけでok
0923美紀NGNG
はじめまして美紀です。
『印刷プログラムを作れ!』ってセクハラ部長に命令されたの。
美紀初めてだから良く分からないの。
PrintDlg で取得したDCに印刷イメージを書き込めばいいみたいだから
作業用の DIBSection 作ってそこに画像やグラフや文字を書き込んでから
プリンタのDCに StretchBlt で書き込もうと思うの。
これでいい?
作業用の DIBSection のサイズってどれくらいがいい?
あんまりサイズが小さいと印刷の解像度が低くなりそうでイヤ!
普通の文字は直接プリンタのDCに書き込んだ方がよさそうだけど
DCのサイズに合わせてフォントサイズを調整する方法が分からないの(泣)
印刷バージンの美紀に優しく教えて。
0924デフォルトの名無しさんNGNG
>>923
GetMapMode、SetMapMode、GetWindowExtなど
0925デフォルトの名無しさんNGNG
VCで文法的に許される範囲内で
virtual, static, 長いメソッドなどを全てヘッダに書いた場合、
スピードが遅くなったり、サイズが極端に大きくなることはあるのでしょうか?
# 例えば大きなメソッドが全てインライン展開されてしまったり、staticメソッドが全てのobjファイルに置かれてしまったりなど。

Java, C#と同じようなスタイルで書いて問題ないかということです。
0926デフォルトの名無しさんNGNG
VC++6.0でDCOMを入れてないWIN95で動くプログラムはどうやったらできますか?
0927デフォルトの名無しさんNGNG
>>926
SDKのみで書け
0928926NGNG
ありがスマソ
0929デフォルトの名無しさんNGNG
>>925
コンパイラは賢いので安心してください
0930デフォルトの名無しさんNGNG
16bitOSの頃のDOS用コードunion REGS, inregs, outregs, memset 等を32bit
OSのVC++6.0で使用するのはどうすればよいのですか?
0931デフォルトの名無しさんNGNG
>>930
それを使って何をするかによる。
使うだけならできる。
0932930NGNG
どうしても「error unexpected "union""REGS"」ってでるんですが、、、
0933デフォルトの名無しさんNGNG
>932
それは使う使わない以前の問題だゴルァ!
構造体定義すればぁ?

で、次にリンカが「int21が無い」とか言い出すに2048カノッサ。
0934デフォルトの名無しさんNGNG
int何の機能を持つAPIに置き換え
0935デフォルトの名無しさんNGNG
>>925
929氏の言うとおり。
ただしある程度コード規模が大きくなると、コード修正後の再コンパイル時間は
どんどん増えます。超小規模コード以外では、開発に支障をきたすことになるでしょう。
0936超初心者NGNG
超くだらない質問なのかもしれないけど、調べてもよくわかりません
ウィンドウプロシージャって、
同時に何個も起動されたりするものなのですか?
(イベント処理が終わらないうちに、次のイベントがきたりしたら)
0937超初心者 936NGNG
すいません、
あと、OSの中でのイベントの流れとか、
タスク処理みたいなのがどのように行われているか、とか、
について、 参考になる良いホームページとか本とか
ありませんか?
0938デフォルトの名無しさんNGNG
DialogBoxでダイアログbox作る時、
いきなり隠す(foreground ?)には、どうしたら良いですか
0939デフォルトの名無しさんNGNG
DialogBoxじゃなくてCreateDialogを呼んでShowWindowで隠す。
0940デフォルトの名無しさんNGNG
WM_INITDIALOGでShowWindowを呼ぶ。
0941デフォルトの名無しさんNGNG
なるほど 助かりました
まだShowWindowも知らない初心者です
0942941NGNG
と思ったら、
WM_INITDIALOGでShowWindowでは だめでした・・・
CreateDialogを使うのではなく、
DialogBox使用で隠す方法はないのかな
0943デフォルトの名無しさんNGNG
>>937

Win95だろうがNTだろうが2000だろうが
根底にある技術を知りたいなら、とりあえずこれヨンどけ。

NT版しか読んだことないが、たぶん、win2K版も
書いてあることは同じだ。
0944デフォルトの名無しさんNGNG
>>942
意味がわからん。
何がしたいのかはっきり書け。
0945デフォルトの名無しさんNGNG
ATLフルコントロールのActiveXを作成しているんだけど、
プロパティを作成して
HTMLで<OBJECT ------ >
<PARAM NAME="PATH" VALUE="teteete">
</OBJECT>
の記述してもput_のプロパティが呼ばれないのよ
なぜ?だれか教えて
0946デフォルトの名無しさんNGNG
>>943
(・∀・)カキワスレ?
0947デフォルトの名無しさんNGNG
かなり書きわすれ

ISBN 4822280802
0948942NGNG
>944
今作ってるソフトは、ダイアログboxのみのソフトで、
winmainから
DialogBox
でダイアログboxを呼び出して、
ダイアログが閉じたら、そのままアプリ終了してます

それで、今はこのソフトを起動すると一番手前にダイアログboxが出現するのですが、
そうじゃなくて、他のウィンドウ(ソフト)の影にかくしたいのです
0949デフォルトの名無しさんNGNG
>>947
リンク張っとくか。

「Windows2000 Server完全技術解説」
横山 哲也 (著), 天野 司 (著), 金井 昌宏 (著), 木村 尚義 (著), 芝山 賢 (著)
日経BP社 ISBN4822280802

http://www.amazon.co.jp/exec/obidos/ASIN/4822280802/
0950デフォルトの名無しさんNGNG
>>948

だったらCreateDialog使ってメッセージループ回せ。

ってーかモーダルとモードレスの違いぐらい把握してなさい。
0951948NGNG
>>950
じゃあ、やっぱりDialogBox使用では無理なんですね

>>モーダルとモードレスの違いぐらい
独立して処理が動くか、処理が終わるまで戻ってこないかでしたっけ?
とりあえず、入門書でも買いに逝ってきます
いろいろありがとうございました
0952デフォルトの名無しさんNGNG
>>951
可視をoffにしてもだめ?
0953デフォルトの名無しさんNGNG
WindowsXPで、
VirtualAllocを使って1Gのメモリを確保しようとしたら
失敗しました。NULLが入ってきます。
Windows2000,WindowsNT,Windows98とかでは
大丈夫です。なんででしょう?
0954デフォルトの名無しさんNGNG
XPってデフォルトでスワップオフとかそんなんじゃなかったっけ?
0955デフォルトの名無しさんNGNG
スワップオンするAPIを発行すればいいってことでしょうか?
でも、640MB程度ならちゃんと確保できるんです。
0956951NGNG
>>952
すいません、だめなんです
0957デフォルトの名無しさんNGNG
>>956
やったことあるよ!
座標(0,10000)あたりに移動させて見えなくしたよ!
でもspyで見つけられて恥ずかしかったので
モードレスダイアログの勉強して書き換えたよ!
0958デフォルトの名無しさんNGNG
初歩的な質問お願いします。
HeapReAlloc でメモリの再確保を行った場合
再確保前と後でメモリアドレスが変わっても内容は保持されるのでしょうか?

Mem = HeapReAlloc(GetProcessHeap() , 0 , Mem , 1024*10);

Memのアドレスが呼び出し前と変わっても元々Memにあったデータは新しいMemにコピーされますか?
アドレスが変わる場合もとのアドレスのメモリ領域の開放はHeapReAllocが責任持ってやってくれるんですか?
0959デフォルトの名無しさんNGNG
>>958
アドレスが変わったからといって、メモリ上の物理的な位置が変わっていない場合もある。
もちろん変わっている場合もある。
0960デフォルトの名無しさんNGNG
GetShortPathNameで短くしたファイル名を長くするにはどうしたら良いですか?
FindFirstFileで取得できるのはファイル名の最後の部分(?)だけでフォルダの部分はダメです。
GetFileTitleの逆でフルパスからパスの部分を取得する関数って何ですか?
FindFirstFileで返ってくる"."や".."フォルダって何ですか?
それを使って再帰的にFindFirstFileを呼ぶとおかしくなります。
0961デフォルトの名無しさんNGNG
>>960
・Win98/2000以降ならGetLongPathNameみたいなAPIがある。
それ以前ならFindFirstFileを何回も呼んで、
フォルダ名から順番にLFNに直していくしかない。

・_splitpath なり PathRemoveFileSpec なりで適当に。

・"."=そのディレクトリ自身。".."=親ディレクトリ。
そりゃ再帰させたら無限ループだ。
0962ToriNGNG
>851
Access2000 のmdbをDAOを使って操作できないのでしょうか?
0963チビNGNG
もうすぐ1000なので、新スレ作りました。
http://piza2.2ch.net/test/read.cgi/tech/1002165477/l50
0964デフォルトの名無しさんNGNG
Sleepから戻ってこなくなる時って、どんな原因が
考えられますか。
0965デフォルトの名無しさんNGNG
朝まで2ch見てたとき
0966デフォルトの名無しさんNGNG
>>964
酒飲んで風呂に入っているときにSleepしたとき。
0967964NGNG
なるほど
気をつけます
0968デフォルトの名無しさんNGNG
薬大量に服用したとき。
0969デフォルトの名無しさんNGNG
デッドロック。
0970デフォルトの名無しさんNGNG
デッドロックを体感するにはどうしたらいいですか
0971デフォルトの名無しさんNGNG
>>970

1.家を出ます。

2.ドアを施錠します。

3.鍵をドアポストの中に入れます。

4.入れなくて途方に暮れます。

これで完成です。

ただし、この場合は唯一解決手段があり、庭から回り込む or 隣室から回り込むで
デッドロックが解除されます。
0972デフォルトの名無しさんNGNG
扉を破壊せよ
0973デフォルトの名無しさんNGNG
SDKでActiveXプログラミングはできますか?
また、MFCで組んだほうがやりやすいのでしょうか?
0974デフォルトの名無しさんNGNG
ATL
0975デフォルトの名無しさんNGNG
>>971
鍵をドアポストに入れちゃうアホはほっときませんか?
0976デフォルトの名無しさんNGNG
976
0977デフォルトの名無しさんNGNG
977
0978デフォルトの名無しさんNGNG
978
0979デフォルトの名無しさんNGNG
979
0980デフォルトの名無しさんNGNG
980
0981デフォルトの名無しさんNGNG
981
0982デフォルトの名無しさんNGNG
982
0983デフォルトの名無しさんNGNG
983
0984デフォルトの名無しさんNGNG
984
0985デフォルトの名無しさんNGNG
985
0986デフォルトの名無しさんNGNG
986
0987デフォルトの名無しさんNGNG
987
0988デフォルトの名無しさんNGNG
988
0989デフォルトの名無しさんNGNG
989
0990デフォルトの名無しさんNGNG
990
0991デフォルトの名無しさんNGNG
991
0992デフォルトの名無しさんNGNG
992
0993デフォルトの名無しさんNGNG
993
0994デフォルトの名無しさんNGNG
994
0995デフォルトの名無しさんNGNG
995
0996デフォルトの名無しさんNGNG
996
0997デフォルトの名無しさんNGNG
997
0998デフォルトの名無しさんNGNG
998
0999デフォルトの名無しさんNGNG
999
1000デフォルトの名無しさんNGNG
1000
10011001Over 1000Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。