トップページ⇒tech
964コメント310KB

VisualC++相談室 5

レス数が950を超えています。1000を超えると書き込みができなくなります。
0001いさましいチビNGNG
VisualC++関連の話題を扱うスレッドです。

旧スレッド
http://pc.2ch.net/test/read.cgi/tech/1002165477/l50
0002デフォルトの名無しさんNGNG
2げっと
0003デフォルトの名無しさんNGNG
早速質問。
Aが CreateProcessでアプリBを起動し、Bにメッセージを送信しました。
と、ここまでは良いのですが、そのBが、メッセージを処理し終えるまで、
Aを待機させるには、どうしたら良いのでしょう??
0004デフォルトの名無しさんNGNG
パイプとかイベントとかをWaitFor〜で待つってのは駄目かい?
0005デフォルトの名無しさんNGNG
SendMessage で送れば、処理が終わるまで待たされる
0006デフォルトの名無しさんNGNG
メッセージを処理したことを伝えるイベントオブジェクトを使え。
0007デフォルトの名無しさんNGNG
>4
そ、そのやり方が分からない。何を待てば良いのですか?

>5
SendMessageすると OS(95)ごとハングします。
ReplyMessageとかしないと駄目なんですかねぇ
メッセージを受け取る側にも何か処理がいるとか?

WM_DROPFILESを、テストのためにメモ帳に投げているんですが、
ドロップされたファイルを表示したところで固まってしまう。
PostMessageして、ちょっと間を置いて、ドロップオブジェクトの
メモリを解放すると、うまくいきます。
0008デフォルトの名無しさんNGNG
CreateEvent
↓
CreateProcess
↓          → 子プロセス開始
↓              ↓
↓             メッセージループ
SendMessage       ↓
↓          →
↓              処理
WaitForMultipleObjects
                ↓
復帰        ←   SetEvent
↓


Wait〜復帰までの間UIが固まって困るとかいう場合は
タイマーをセットしてWM_TIMERでWaitしろ。
待ち時間はゼロでな。
0009デフォルトの名無しさんNGNG
Waitするときはイベントだけではなくて
子プロセスのプロセスハンドルも同時に待機しとけよ。

念のため。
0010 NGNG
漏れのIDおしい
00114NGNG
もしかしてこういう事をきいているんじゃないだろうな。
wait.c
#include <windows.h>
main()
{
HANDLE hEvent = CreateEvent(NULL, FALSE,FALSE,"test");
PulseEvent( hEvent );
CloseHandle( hEvent);
}

pulse.c
#include <windows.h>
int main()
{
HANDLE hEvent = CreateEvent(NULL, FALSE,FALSE,"test");
WaitForSingleObject( hEvent, INFINITE );
CloseHandle( hEvent);
}
0012デフォルトの名無しさんNGNG
WaitするまえにPulseしちゃうと、受け取られないままイベントが消えるんで、
そこんとこよろしく。

WAIT_ABANDONEDが変える可能性もあるんでWaitの戻り値チェックもよろしく。
0013デフォルトの名無しさんNGNG
ポーリングするなら、ロックファイルみたいなの作る、って手もあるな
0014デフォルトの名無しさんNGNG
>11
おー、なんか道が見えてきた。Thanksっす。
0015デフォルトの名無しさんNGNG
なんでSendMessageだとハングするのでしょう?

WM_DROPFILEは別プロセスには送れないと思うのです。
0016デフォルトの名無しさんNGNG
ふつーのポインタを別プロセスに持っていってはいけません。
0017デフォルトの名無しさんNGNG
>16がSendMessageがハングした原因ですか?

...
PostMessageでも駄目だと思うのです。
0018ののNGNG
質問です
API使って、独自のGUI作りたいんですけど
いいサイトありませんでしょうか?
APIとかの説明とかじゃなくて、
ノウハウというか、効率のいいやり方というか、
こつというか。
0019デフォルトの名無しさんNGNG
>>18
王道はない。
0020ののNGNG
>>19
そうですか、
作るGUIのタイプにもよるのでしょうしね、

ごり押しで、組むしかないのかな。
0021デフォルトの名無しさんNGNG
ビルド完了やエラーがあったときにVCのIDEから出る音がうざいので、
コントロールパネルのサウンド設定で全部”なし”にしました。
しかし、今度はビープ音が鳴りやがります。何とかこいつを
止める方法はないでしょうか?
0022デフォルトの名無しさんNGNG
>>21
ケース開いて、スピーカに繋がっているコードをちぎる。
0023デフォルトの名無しさんNGNG
>>22 そういうのはなしで・・・

短い無音のwavに設定したらイイんだけど、なんだか泥臭いなあ
0024デフォルトの名無しさんNGNG
>>21
スピーカーの音量を最小にする。
0025デフォルトの名無しさんNGNG
>>21
無音のwavに設定する。
0026デフォルトの名無しさんNGNG
とりあえず、WM_DROPFILES って何を送るのかわかってないだろ・・・
ファイル名文字列へのポインタじゃないぞ。
HDROP だぞ。ちゃんと HDROP 送ってるか?
0027デフォルトの名無しさんNGNG
あと HDROP って解放しちゃだめです。勝手に解放してくれます。
0028初心者NGNG
非常に初歩的なことですいません。

MFCをやっているのですが、ハンドルというものがでてきて、とりあえずはじめでてきたときに、「IDみたいにとらえて・・・」のような記述があったのでそのようにとらえていたんですが
「メンバ変数にハンドルをもつクラスが・・・・」のような記述を別で見ました。なんのことだか意味がわからなくなってしまいました。。

どういうことなんでしょうか?? 
0029デフォルトの名無しさんNGNG
そのまま「ハンドル」を「ID」に置換して
「メンバ変数にIDを持つクラス」じゃダメなんでしょうか
0030初心者NGNG
>>29
えっと・・・それって・・とあるクラスに「ハンドル」というものを受ける用のメンバ変数が定義されているんですってことでしょうか???
0031デフォルトの名無しさんNGNG
>>28
それ、単に

class CWnd
{
  HWND m_hWnd;
public:
  void Create()
  {}
  ....
};

みたく、メンバ変数にハンドルを持ってるクラスのことなんじゃないの?
0032初心者NGNG
>>31
えっと、、>>30とはちがうのですか?よくわかりません
0033デフォルトの名無しさんNGNG
>>32
あんたは日本語で喋れ。

「でしょうか???」

と適当な文章を疑問形で振らずに、何がわかって何がわからないのか明記しろ。
0034初心者NGNG
CBitmap bp,*pb;
CDC MDC;
・・
・・
pb=MDC.SelectObject(&bp);

前の状態(オブジェクト??)を保持する為にこうかくって書いてありましたが、このpbてなんですか?ハンドルとは別物ですか?
(意味不明な質問ですいません)
0035デフォルトの名無しさんNGNG
>>32
すいません、、、。
えっと>>31を、具体的に「***」のメンバ変数に「****」を持っているのようにいってもらえないでしょうか?
0036初心者NGNG
>>35
「初心者」です。
さらに>>32ではなく>>33でした。すいません、、
0037デフォルトの名無しさんNGNG
>>28
IDを何だと思っているのだ?
0038デフォルトの名無しさんNGNG
質問です。
MFCを使わずにタスクトレイに常駐するアプリを作ってるんですが、
トレイ上のアイコンにカーソルを乗せた時にでてくるポップアップの文字列を
値によって変化させたい時はどうしたらいいでしょうか?
0039初心者NGNG
>>37
固有の識別子のようなとらえかたをしましたが・・・・
0040初心者NGNG
今、色々ネットで調べているんですが、
「オブジェクトへのポインタ=ハンドル」
のような記述を見つけました。どういう意味なのでしょう?具体的説明がほしいです。
0041デフォルトの名無しさんNGNG
>>40
http://yougo.ascii24.com/gh/15/001551.html
http://yougo.ascii24.com/gh/66/006631.html

広義には、実体を指し示す、何らかのIDやポインタなど。
0042デフォルトの名無しさんNGNG
>>41
ありがとうございます。読ませていただきました。

でも

「オブジェクトを生成するとハンドルが返される」ということですが
オブジェクトが生成される瞬間とは具体的にどのようなときなのでしょうか?
例えばこれだとどうでしょう?(BMP表示)
↓
CBitmap bp,*pb;
CDC MDC;
bp.LoadBitmap(name);
MDC.CreateCompatibleDC(pDC);
pb=MDC.SelectObject(&bp);
pDC->BitBlt(0,0,100,100,&MDC,0,0,SRCCOPY);
MDC.SelectObject(pb);
bp.DeleteObject();
0043デフォルトの名無しさんNGNG
>オブジェクトが生成される瞬間とは具体的にどのようなときなのでしょうか?

1 CBitmap bp,*pb; ←オブジェクト(インスタンス)の生成
2 CDC MDC; ←オブジェクト(インスタンス)の生成
3 bp.LoadBitmap(name); ←リソースからビットマップを読み込んで、そのハンドルを持つ
4 MDC.CreateCompatibleDC(pDC); ←デバイスコンテキストのハンドルを作ってそのハンドルを持つ
5 pb=MDC.SelectObject(&bp);
6 pDC->BitBlt(0,0,100,100,&MDC,0,0,SRCCOPY);
7 MDC.SelectObject(pb);
8 bp.DeleteObject

「オブジェクトが生成」というのが、C++のオブジェクトなのか
Windowsのリソースなのかわからないけど、こういう処理をしてる

1 bpはオブジェクト(インスタンス)の生成
2 CDCはオブジェクト(インスタンス)の生成
3 リソースからビットマップを読み込んで(生成して)、そのハンドルbp内部に持つ
4 デバイスコンテキストのハンドルを作ってそのハンドルをMDC内部に持つ
004443NGNG
すまん>>43は書き方が変だね。
00453NGNG
>>26,27

FORMATETC form = { CF_HDROP, NULL, DVASPECT_CONTENT, -1, TYMED_HGLOBAL };
STGMEDIUM medium;
pデータオブジェクト->GetData(&form , &medium );

で、別なところで
 PostMessage(hWnd, WM_DROPFILES, (WPARAM)(m_medium.hGlobal), 0);

送り先側でドロップ処理が終わったら、
 ReleaseStgMedium( &m_medium );

なんですが、問題ありありですか?
受け側の DragFinishで解放するメモリと、ReleaseStgMediumで解放する
メモリってどういう関係?
0046デフォルトの名無しさんNGNG
なんか、DragFinish でグローバルメモリが解放されるらしい?ので、
複製を作って送ればいいんじゃないでしょーか
0047初心者NGNG
>>44
「ハンドルを内部に持つ」という話がイマイチわかりません。ハンドルはオブジェクトの内部に持ったりするんですか??
0048デフォルトの名無しさんNGNG
>>47
だから、ハンドルをIDみたいに捉えればいいんだろう?
単なる整理番号みたいなものと思えばいい。
ビットマップだのウィンドウだのを新しく作るたびに、整理番号が割り当てられる。
後でこの番号が必要になるから、メンバ変数に代入して憶えておくってだけの話。
0049デフォルトの名無しさんNGNG
あー。47が何が分かってないかがわかった。
キミはこう考えて矛盾にはまった気がしてるんだろう。

ハンドル = オブジェクトへのポインタ or オブジェクトを指すID番号
オブジェクトのメンバとしてハンドルを持つ
→ 自分へのポインタを自分で持つ???

そうじゃない。そうじゃないんだ。
でも上手く説明できる自信がないんで、誰かお願い。
0050デフォルトの名無しさんNGNG
印刷プログラムでプリンタのDCに描画する場合マッピングモードなどはどう設定すればいいのでしょうか?
MM_TEXTはデバイスにより異なるらしいので印刷のときには不適切ですよね?
例えばA4の紙に1行あたり30文字で印刷するにはどうしたらいいですか?
教えてください。

それと CreateFont の第1引数で正の値と負の値をセットした場合どう違うんですか?
MSDNの説明は良くわかりません。
0051デフォルトの名無しさんNGNG
>>50
> それと CreateFont の第1引数で正の値と負の値をセットした場合どう違うんですか?

確か、負数だと「文字の高さ」で指定したことになって、
正数だと「文字を囲むcellの高さ(アクセント記号の分の余白とかも含む高さ)」で
指定したことになる。逆だったかもしれない。

印刷はやったことないので俺はわからん。スマソ。
0052初心者NGNG
>>48
なんとなくわかってきましたが、少しわからないのが、そのメンバ変数っていうのは一体どれなんでしょうか・・・もすこし具体的に教えてもらえないでしょうか。
>>49
はまってます・・・・・・
0053デフォルトの名無しさんNGNG
MFCのソース嫁!
と言うかソース読まないと使えないのがMFCの出来の悪いところ
もっとうまく抽象化されたライブラリ使ったほうがええよ
0054デフォルトの名無しさんNGNG
プロセスの優先順位なんですが、
BELOW_NORMAL_PRIORITY_CLASSとABOVE_NORMAL_PRIORITY_CLASS
はWin2000から使えるようになったとの事なのですが
(http://www.microsoft.com/japan/developer/library/jpwinpf/_win32_createprocess.htm)
実際これを使おうとすると、そんなのないよ(未定義エラー)となります。
どうしたら使えるようになるのでしょうか?
環境は、Win2000 + VC++6.0(SP4)です。
0055デフォルトの名無しさんNGNG
VS6のSPは今5まで出てるが
0056デフォルトの名無しさんNGNG
>>55
5以上です(5が出ているのは確実に知っています)
SPっすか?
0057デフォルトの名無しさんNGNG
>>54
PlatformSDK入れれ。
0058デフォルトの名無しさんNGNG
今作っているプログラムでNKFを呼び出しているのですが、

StGet.obj : error LNK2001: 外部シンボル ""void __stdcall NkfConvert(char *,char const *)" (?NkfConvert@@YGXPADPBD@Z)" は未解決です
StGet.obj : error LNK2001: 外部シンボル ""int __stdcall SetNkfOption(char const *)" (?SetNkfOption@@YGHPBD@Z)" は未解決です
Debug/kabuget.exe : fatal error LNK1120: 外部参照 2 が未解決です。

と言われてしまいます。
VC++6 / win2000で同じフォルダにnkf32関係のものをすべて入れました。
プロジェクトの設定―リンクですべての構成に対して
wsock32.lib nkf32.lib winmm.lib を追加しました。

どうすればいいのでしょうか。
0059aaaNGNG
すみません。

KabuGet.obj : error LNK2001: 外部シンボル ""void __stdcall NkfConvert(char *,char const *)" (?NkfConvert@@YGXPADPBD@Z)" は未解決です
KabuGet.obj : error LNK2001: 外部シンボル ""int __stdcall SetNkfOption(char const *)" (?SetNkfOption@@YGHPBD@Z)" は未解決です
Debug/kabuget.exe : fatal error LNK1120: 外部参照 2 が未解決です。

の間違いでした。
0060aaaNGNG
エラーメッセージを書き間違えただけで
疑問は解決してないです、すみません。
0061デフォルトの名無しさんNGNG
ライブラリはCでコンパイルされてるのにC++の関数として
呼び出してるんじゃないか?
extern "C"で解決しそうな気もするが。
0062aaaNGNG
>>61さん、解決しました。
ありがとうございます。
nkf.hを書き換えたら、解決しました。
自分で書いたソースばかり見ていたのでわかりませんでした。
0063デフォルトの名無しさんNGNG
初歩的な質問ですいません。
ビルダーからVCへ移植しているのですが、ビルダーでの(TstringList)
と同じ機能の関数はVCで言うと何になるんでしょうか?
ちなみにMFCは使わない方向です。すいません、お願いいたします。
0064デフォルトの名無しさんNGNG
std::list< std::string > あたりではないかな?
0065デフォルトの名無しさんNGNG
VC++で作成したアプリケーションの起動時パラメータ、DOSアプリで言う『main(int arc char** argv)の
』
の取得の方法を教えてください
0066デフォルトの名無しさんNGNG
>>65です。
自己解決しました。
__argc、__argv マクロを使えばよいのですね・・・
0067デフォルトの名無しさんNGNG
GetProfileString(__TEXT("windows") , __TEXT("device") , __TEXT("") , szTemp , sizeof(szTemp));

のように __TEXT を使うとどうなるんですか?
UNICODE 関連だと思いますが・・・
WindowsNT で GetProfileString で取得した文字列は UNICODE なんですか?
現在デフォルトのプリンタを取得するプログラムを作っているんですが
Windows系の場合はレジストリから取得しNT系の場合はWIN.INIから読み込みらしいのですが
(MSDNの SDK\GRAPHICS\ICM20\ICMVIEW を参考にしています。)
もっと簡単に行う方法はありませんか?
0068デフォルトの名無しさんNGNG
_T マクロの方がタイプ量が少ないね。

汎用テキストマッピングをつかうなら、いっそのこと
テキストはリソースで管理してみたら?
0069デフォルトの名無しさんNGNG
>>67
普段、ワイドキャラクタを使わないんで、よく分からないんだけど、
バッファの長さをAPIに渡すのに
sizeof(szTemp)
でいいの?
ワイドキャラだったら、文字数の二倍の値になるような気がするんだけど。
0070 NGNG
あるURLを開きたいのですが、たとえば、
ShellExecute (m_hWnd,"open","http://???",NULL,NULL,SW_SHOW);
とすれば開けますがURLがばれてしまいます。(IEが表示されてしまうため)

で、最後のSW_SHOWをSH_HIDEにすれば表示されないのでOKなんですが
そうするとメモリにIEが残ったままになってしまって都合悪いです。
どうすればいいでしょう?
0071デフォルトの名無しさんNGNG
>70
スパイウェアですか?
0072デフォルトの名無しさんNGNG
WinNTで動作するサービスを作成したいと思ってます。
Googleでサーチしても全然、関連するサイトが見つかりません。

なにか参考になるURLや書籍を教えていただけないでしょうか?
0073デフォルトの名無しさんNGNG
>>72

ASPと入れれば検索できるかも・・・
007473NGNG
Application Service ProviderじゃなくてActive Server Pagesの方ね。
0075 NGNG
スパイウェアがどういうものなのかしりません。
最悪、ASPで作ります。トホホ。
0076デフォルトの名無しさんNGNG
>>75

使用状況を密かに作成者に送るソフトのことじゃないの?
0077デフォルトの名無しさんNGNG
>>69
それなら
sizeof(szTemp / sizeof(TCHAR))
もしくは
sizeof(szTemp / sizeof(szTemp[0]))
か
sizeof(szTemp / sizeof(*szTemp))

すきなのにすれば?
0078初心者NGNG
誰か>>47を具体的に話して・・・・
007972NGNG
すみません、検索してみたのですがおっしゃってる意味がわかんないです。。
ログオンしなくても動く、UNIXのデーモンみたいなやつを作りたいのですが・・・。
0080デフォルトの名無しさんNGNG
>>77
カッコのくくり方が間違ってる。
0081デフォルトの名無しさんNGNG
>78
では混乱させるお話をば・・・
ハンドルとはロッカーの鍵のようなものです。
ロッカーはWindows&174;サービスです。
ロッカーの鍵を開けると(Createなにやら関数)、
鍵をWindows&174;からもらいます。
そしてオブジェクトは鍵を内部に持つのです。
そして何かをしたいときにはこの鍵を
つかって、Windows&174;に働きかけるのです。
0082&174;NGNG
鬱だ
0083デフォルトの名無しさんNGNG
®
こうかな?
0084デフォルトの名無しさんNGNG
>>78
ウインドウとか、いろいろOSが管理してるリソースが
あるんだけど、生で扱うのとプログラミングが煩雑に
なるから、C++の機能(クラスやライブラリ)でラップして
簡単にプログラムを組めるようにしてるの。

初心者のうちは、ライブラリの下で、どういう操作が
おこなわれているかピンと来ないだろうけど、慣れてくると
「ここでCWndクラスを構築しても、中身は空。
Createをコールして、OSの管理するウインドウハンドルが
確保される」
というかんじで、内部の動きが見えるようになる。
0085>78NGNG
例えば MFC。ウィンドウオブジェクトの CWndはメンバにウィンドウハンドル m_hWndを
持っている。Windowsのウィンドウは HWND というハンドル(=ID)を使って操作されるので、
そのIDを記憶しておく必要がある。そのIDに相当するのが、HWND型の m_hWnd。

何かの関数で、引数で CWndへのポインタ pWnd を受け取って、
何かの関数でその HWNDを渡す必要が有ったら、
void function1(CWnd* pWnd)
{
function2(pWnd->m_hWnd);
...
みたいに使う。
0086デフォルトの名無しさんNGNG
GUIを作るにはMFCを使うのが一般的なのでしょうか?
0087デフォルトの名無しさんNGNG
>>86

Win32API
0088デフォルトの名無しさんNGNG
>>86
一般的だと思いますよ。
一部には、絶対使わないという人もいますが、
VCで作られて、公開されているソフトは、MFCを使ってる
ものが多いようですね。
0089デフォルトの名無しさんNGNG
>>86

アイコンがMFCのデフォールトアイコンだったアプリがあったぞ(マジ
0090デフォルトの名無しさんNGNG
実際MFC無しで1からやると、最小のMFCアプリと同じラインに
達するまで色んな小道具を付けるのは物凄い作業量のような
気がするのですが... それとも自前のスケルトンやフレーム
ワークでも持ってるのかな>普通のWin32APIオンリーな方
0091デフォルトの名無しさんNGNG
C言語の技術だけでVC++でWindowsプログラミングってできる?
MFCってクラスじゃない。そんなの分からないのよ。
0092デフォルトの名無しさんNGNG
Delphi&BCBならWinのサービスプログラム作るテンプレあるよ
0093デフォルトの名無しさんNGNG
MFCのランタイムって普通スタティックリンクするの?
バージョンによって互換性があるとかないとか。
プロの方々、おせーて。
0094デフォルトの名無しさんNGNG
>>93

ううん。
Windows98以降はOSについているみたいだし。
0095デフォルトの名無しさんNGNG
>>91
当然、出来る。一度やってみるよろし。
0096デフォルトの名無しさんNGNG
>>95

ありがとう。

まずは必要なヘッダーと使える関数を調べないとだな・・・・
0097デフォルトの名無しさんNGNG
>>72
ていうかVC++のATLウィザード使えばサービスできるよ
0098デフォルトの名無しさんNGNG
>>96
ヘッダは当分 windows.h だけでおっけー。
ここへどうぞ。Windows SDK 編、第1部から。
ttp://www.kumei.ne.jp/c_lang/
0099デフォルトの名無しさんNGNG
質問。
二次元配列で要素を,a[1024][512]、とすると
エラーになっちゃうんですけど、どうにかなりませんか?
最低でも512*512の配列が必要なんすけど。
0100デフォルトの名無しさんNGNG
>>99
グローバル変数か静的変数(static)にしませう。
0101デフォルトの名無しさんNGNG
>>99
関数から出してグローバル領域で宣言してみれば?
0102≒99NGNG
>100,101
なんでそうすると良いのでしょーか?
0103デフォルトの名無しさんNGNG
今更だけど、ISAPIフィルタ作りたい。
良い資料/WEB等、無い???
作りたいのは、認証システム。
doc, xlsファイルとかだと、直にURLたたかれたら、ユーザチェック
できないでしょ?普通。
あ、win統合認証とかは使えない。
ユーザIDとパスワードたちは、DBに入ってるし。。。

MSのUSサイトいっても、イマイチ情報が古いし。
0104>>102NGNG
ローカル変数はスタックという狭いメモリ領域にとられるから。
0105デフォルトの名無しさんNGNG
>>102
スタックが足りないから。
デフォルトの設定ではスタックが1MBしかないので、
1MBを超えるローカル変数は作れません。
0106初心者NGNG
>>81
その「内部に持つ」というのの形がイマイチ・・

>>84
上に同じく「何処に確保されるのでしょう?

>>85
???
function2(pWnd->m_hWnd);
は、戻り値みたいな考えなんですか??では・・・>>42のような場合はどうなんでしょうか・・・・・

内部に持つっていうのは
「m_hWndにハンドルを持つ」ということなのかな???
0107デフォルトの名無しさんNGNG
>>106
いくらここで聞いても、これ以上は分からないと思われ。
入門書でもみて、経験を積むのが近道。
0108デフォルトの名無しさんNGNG
まず、ビットマップやらウィンドウやらの実体は、
Windows が内部で管理してます。

アプリケーションプログラマが、ビットマップやらウィンドウやらを
操作するには、それぞれのオブジェクトを表すハンドルを使います。

MFCのクラス CBitmap は、ビットマップの管理をするわけですが、
Windows が内部で管理してるビットマップを直接触ることは、
当然出来ません。ビットマップを触るには、ハンドルを使います。

CBitmap クラスは、ビットマップの操作をするために、
そのハンドルを保持しています。

・・・わかり?
0109初心者NGNG
>>108
その部分はなんとなーくはわかるんですが・・・
わからないのは、例えば
CBitmap bp,*pb;
CDC MDC;
bp.LoadBitmap(name);
MDC.CreateCompatibleDC(pDC);
pb=MDC.SelectObject(&bp);
↑ここで、SelectObjectは前に持っていたオブジェクトへのハンドルを渡すみたいですが、それが、Cbitmap *pbとイコールでつなげてる点がよくわかりません。
pbは、ハンドルなの?????

pDC->BitBlt(0,0,100,100,&MDC,0,0,SRCCOPY);
MDC.SelectObject(pb);
bp.DeleteObject();
0110デフォルトの名無しさんNGNG
81を書いたんですが、更にややこしく書くと、
あなた(=プログラマー)は、使用人(=オブジェクト、例えばMDC)に
ロッカー(=Windowsサービス例えばデバイスコンテキスト)に荷物を
預けて来いと命令できます。(=例えばMDC.CreateCompatibleDC(pDC))
すると使用人(=MDC)は、ロッカーを操作して(=もろもろのWinAPI)、
鍵(=ハンドル)を手に入れます。
すると今度はあなた(=プログラマー)は、荷物をロッカーから出せという命令
(=例えばMDC.SelectObject(&bp))が使えるわけです。使用人(=MDC)が
鍵(=ハンドル)をもっていますから。
0111デフォルトの名無しさんNGNG
>>109
> SelectObjectは前に持っていたオブジェクトへのハンドルを渡すみたい
それが勘違い。MSDN か MFC のソース読みましょう。
0112デフォルトの名無しさんNGNG
CDC.SelectObjectが返すのはハンドルじゃないよ
0113デフォルトの名無しさんNGNG
>>109
それは、MFCの汚い面の現れだな・・・
Windows API をラップしてるだけだから。
Windows API を学ぶべし。

#このあたりは OWL や VCL の方が綺麗で好きだ
0114デフォルトの名無しさんNGNG
>>113
MFC がきれいじゃないのは同意だが、今回の問題は全然関係ないぞ。単に

CBitmap* CBitmap::SelectObject(CBitmap*)

と宣言されてるだけの話。

#あまりズレた返答は Borland 厨の烙印を押されかねんので、気をつけてくれ。
0115デフォルトの名無しさんNGNG
::SelectObjectとCDC::SelectObjectの違いが分かってないのか?

MDC.SelectObject(&bp)が返すのは
MDCが管理するデバイスコンテキストに直前まで選択されていた
同種のGDIオブジェクト、つまりビットマップを管理するCGdiObjectのアドレス。

CGdiObjectクラスは、Win32 GDIオブジェクト(ビットマップ)への
ハンドルをメンバ変数として所有していて、
ハンドルを使ったAPI呼び出しを、クラスのメンバ関数をとおして
利用できるように設計されてるわけだ。

CBitmap *pbに CGdiObject *のポインタを代入しているけど
このとき、CBitmap*はCGdiObjectから派生したクラスへのポインタなので
自動的に、ポインタの型が変換されて正しく代入される。
0116デフォルトの名無しさんNGNG
OWLはヘタレクラスだらけ。
0117デフォルトの名無しさんNGNG
>>100>>101
thanks!出来ました。
ついでにVC++初心者(cは多少判る)にお勧めの参考書あったら
教えたってください。
付属のはわかりづらい
0118デフォルトの名無しさんNGNG
とりあえず、付録で付いてくるScribbleチュートリアルをやろう。
最初のステップだけでもいいよ。
0119113NGNG
うゅ。ごめんなさい。言動には気を付ける。

CDC::SelectObject のソース追ってみて、動作を理解した。
SelectObject ひとつで、これだけ大変なことやってたんだ。。。
0120デフォルトの名無しさんNGNG
なんか素質有りそうだから、
MFCの前にSDKプログラミングをやってみれ。

深いとこまでやらなくても、
MFCを理解する助けにはなる。
0121114NGNG
>>119
俺もボケたこと書いてるね。>>115 が正しいです。
0122初心者NGNG
>>120
すごい質問ですが、SDKってMFCと何が違ってなんなんですか?
0123初心者NGNG
あ、それと、
大きなBMPの一部分だけを読み込む方法ってありますか?
CBitmap bp,*pb;
CDC MDC;
bp.LoadBitmap(name);
MDC.CreateCompatibleDC(pDC);
pb=MDC.SelectObject(&bp);
pDC->BitBlt(0,0,100,100,&MDC,0,0,SRCCOPY);
MDC.SelectObject(pb);
bp.DeleteObject();
のような風に、BilBltで表示範囲を指定しても、元のBMPは全体が読まれているわけですよね?
これだと、たとえば640*480の画面にスクロールして動いていく画像を出したいと思って、
640*3000くらいの画像を作って(x,y)から(x+640,480)まで描画させるなどとしても、やっぱり元の大きな画像を読み込んでからになるんですよね?
やってみたら、ものすごい動きが遅かったんで・・・
どうすればいいのかな
0124デフォルトの名無しさんNGNG
>>122
MFC を使わず、Win32 API だけを使ってプログラミングすることを指して、SDK
プログラミングと呼ぶ(人もいる)。

>>123
毎回ビットマップを読み込んでるわけじゃなくて、一度だけ読み込んで、それを複数回
BitBlt() してるんですよね? それだと、遅いのはファイルの読み込みではなく BitBlt()
自体じゃないかな。

DirectX を使って構わないのなら、DirectDraw, あるいは Direct3D を使って、ビデオ
メモリ上に画像を置いてしまうのが最速かと。
0125デフォルトの名無しさんNGNG
>>124

>>122に対する返答に対して
ってことは、SDKというのはMFCのような特別なクラスみたいなものは存在しないのですか?まったく巣のままAPIを使うだけなんですか?
「(人もいる)」って?
0126初心者NGNG
>>124

>>123に対する返答に対して
すいません・・・・・・・毎回ビットマップ読み込んでました。
0127デフォルトの名無しさんNGNG
>>72
http://hata.cc/docs/Win32/1-2-3.html
http://kokoto.pos.to/Service.htm
ATLの奴は俺も良く分からん
0128デフォルトの名無しさんNGNG
>>125
そうそう。自分で WndProc を書いて、WinMain で

1 RegisterClass して
2 CreateWindow して
3 GetMessage(), TranslateAccelerator(), TranlateMessage(), DispatchMessage()
 からなるメッセ―ループをぐるぐる回す

というプログラムを書く。

「人もいる」と書いたのは SDK プログラミングと言う用語が、それほどいい名前だと
思ってないし、一般的でもない気がしたから。あまり気にせんで下さい。
0129デフォルトの名無しさんNGNG
生APIプログラミングって呼ぶのはどうかな?
あまり流行りそうには見えないが、意図してる事は分かりやすいかと。
0130初心者NGNG
>>126について
毎回ロードしないようにしようとしたんですがうまくいきません。
CBitmap bp,*pb;
CDC MDC;
bp.LoadBitmap(name);
MDC.CreateCompatibleDC(pDC);
pb=MDC.SelectObject(&bp);
pDC->BitBlt(0,0,100,100,&MDC,0,0,SRCCOPY);
MDC.SelectObject(pb);

の、bp.LoadBitmap(name); の部分だけを一回実行するだけにしたんでは駄目なようですが、どうすればいいのでしょう?
MDC2に元画像を一度だけおいて、そこからMDCに転送して、色々描画してから実際に画面に出力するようふうにしてみたらできるかと思ってやってみましたが、これも何か違う部分でうまくいきませんでした。
0131デフォルトの名無しさんNGNG
>>130
関連する部分のコードを抜粋して出してみ。

> bp.LoadBitmap(name); の部分だけを一回実行するだけにしたんでは駄目なようですが、
少なくとも >>130 のコードではそれが分からんよね。どうやって「一回だけ」実行する
ようにしたのか、それが分かる程度に編集してね。
0132初心者NGNG
>>131
えっと、CBlockView::OnDraw(CDC* pDC)のなかに、上記のようなコードを書いて、bp.LoadBitmap(name); はif文で一回だけ実行するようにしました。
アニメーションさせる(画像を移動させていく)のでタイマーを使って常に一定間隔で再描画するようにしています。InvalidateRectで。
0133デフォルトの名無しさんNGNG
>>132
コード抜粋しなよ。口で説明するより、実物を見たほうが早い。
0134初心者NGNG
>>133

BOOL first=TRUE;
void CBlockView::OnDraw(CDC* pDC)
{
CBlockDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
// TODO: この場所にネイティブ データ用の描画コードを追加します。
CDC MDC;
      MDC.CreateCompatibleDC(pDC);
      CBitmap bp, *pobp;
if (first){bp.LoadBitmap(bmpback);first=FALSE;}
      pobp=MDC.SelectObject(&bp);
pDC->BitBlt(0, 0, 800, 600, &MDC, 0, 0, SRCCOPY);
MDC.SelectObject(pobp);
}
のような形です。これが繰り返されます。(本当はこの後表示位置を変数で置いて色々したい)
0135初心者NGNG
>>134
ああ、なんか空白部分が変になってしまった、、、
0136デフォルトの名無しさんNGNG
>>134
ああ、それだとダメです。

CBitmap bp, *pobp;
CDC MDC;

はいずれも OnDraw() メソッドのローカル変数として定義されていますから、
OnDraw() から抜けた瞬間に無効になります(次に OnDraw が呼ばれたとき
には、前回の値は残ってません)。

#これは VC++ に限らず C/C++ の基本中の基本なので、少し C++ の基本的な
#書籍を読んだほうが良いです。

ビットマップを描画しておく CDC 変数をメンバ変数にして、

1. OnCreate() あたりでビットマップの読み出しと描画を行っておく
2. OnDraw では、そのメンバ変数を使って BitBlt する

のが良いかと。あと MFC スレが別にあるので、MFC に関してはそちらで聞いた
方が詳しい人がつかまると思います。
0137初心者NGNG
>>136
ありがとうございます、、、、、
ちょとやってみます
0138デフォルトの名無しさんNGNG
SDKだけでやる場合に、マウスでカット&ペーストとか
自分で実装するの考えると頭痛くなるんだけど慣れてる
人はそうでもないのか?
0139デフォルトの名無しさんNGNG
OLE絡みとCOMは、慣れても頭が痛い。
0140初心者NGNG
>>136
ありがとうございます、解決しました。無事動くようになった様です。
0141初心者NGNG
GetPixelを使って色の取得をしてみたんですが、これを一連の動作を絡めて関数化しました。ところが
CDC MDC
////
////
////
iro(MDC,mona.x,mona.y,mona.xx,mona.yy,128,0,0);
MDCをGetPixelで使うのでCDC MDCを第一引数に取ったんですが、こうすると

1 番目の引数を 'class CDC' から 'class CDC' に変換できません。

と言われてしまいます。何故でしょう?
0142乗換初心者NGNG
このスレの頭のほうの関連なんですが、
VBでいうところの、DoEvents()
BCBでいうところのApplication->ProcessMessages();
(待ちループの間、他のアプリケーションに制御を渡す)
っていうのはVCではなんと書けばいいんすか?
0143デフォルトの名無しさんNGNG
>>141
関数 iro の宣言を見せてみ
0144デフォルトの名無しさんNGNG
>>143
MDCが登場する部分と周辺
int iro(CDC MDC,int x,int y,int xx,int yy,int red,int green,int blue)
{
struct color{
int r;
int g;
int b;
}ref;
COLORREF CRefBuf;
CRefBuf= GetPixel(MDC,x,y);
ref.r = GetRValue(CRefBuf);//R
ref.g = GetGValue(CRefBuf);//G
ref.b = GetBValue(CRefBuf);//B
***
***様々
***



}
0145初心者NGNG
>>144
初心者。また、名前を入れ忘れた。スマソ
0146デフォルトの名無しさんNGNG
COLORREF GetPixel(
HDC hdc, // デバイスコンテキストのハンドル
int nXPos, // ピクセルの x 座標
int nYPos // ピクセルの y 座標
);

だよ。
0147デフォルトの名無しさんNGNG
>>144
MFCは詳しくないけど、
CDC にはコピーコンストラクタがないんじゃないかね。

CDC& にしてみそ。
0148初心者NGNG
>>146
え!?何がおかしいんですか?上のやつ、普通に関数じゃなくて直接(OnDrawなんですけど)書き込んだら正常に実行でたんですけど・・・。引数で渡そうとするとおかしく・・・
0149デフォルトの名無しさんNGNG
>>142
>>128の3
0150デフォルトの名無しさんNGNG
>>144
これも

CRefBuf= GetPixel(MDC,x,y);
↓
CRefBuf= MDC.GetPixel(x,y);
0151初心者NGNG
>>147
あ、はい。
0152初心者NGNG
>>147
できちゃいました。ありがとうございます、、、
0153初心者NGNG
まだよくわかっていないところがあるようなので少し勉強してきます、、、
0154デフォルトの名無しさんNGNG
VC++6の
ダイアログベースでBMPを読み込んでウィンドウに表示はできたのですがその読み込んだbmpを
unsigned char image[3][i][j]の配列に入れたいのですが、どのような式が必要でしょうか?
bmpがはいってる変数はm_bmpBitmapで変数のタイプはCBitmapです
0155デフォルトの名無しさんNGNG
このスレ立てた
いさましいチビって誰?
0156デフォルトの名無しさんNGNG
>>154
unsigned char の配列って、256色限定ですか?
読み込んだBMPがたまたまフルカラーだったらどうします?
0157デフォルトの名無しさんNGNG
すいません256色で考えてください.実際にはモノクロでunsigned char image[i][j]
で配列に入れることを考えてます.モノクロで無いとそれを加工する式が思いつかないので。
初心者なもので状況説明がうまくできなく申し訳ありません.
0158デフォルトの名無しさんNGNG
ものすごく限られた用途で使用しようと考えているプログラムです.
0159デフォルトの名無しさんNGNG
>>154
ニュースで取り込むと、インデントも崩れないよ。

CBitmap bm;
if( bm.LoadBitmap(IDB_BITMAP1) == 0 ) {
// エラー処理
}

BITMAP bm_info;
if( bm.GetObject( sizeof bm_info, &bm_info ) == 0 ) {
// エラー処理
}

CDC dc;
if( dc.CreateCompatibleDC(NULL) == 0 ) {
// エラー処理
}
CBitmap *old_bm = dc.SelectObject( &bm );
if( old_bm == NULL ) {
// エラー処理
}

TRACE("%d %d\n", bm_info.bmWidth, bm_info.bmHeight);

unsigned char image[3][256][256];
for( int y = 0; y < bm_info.bmHeight; y++ ) {
for( int x = 0; x < bm_info.bmWidth; x++ ) {
COLORREF col = dc.GetPixel( x, y );
image[0][x][y] = GetRValue(col);
image[1][x][y] = GetGValue(col);
image[2][x][y] = GetBValue(col);
TRACE("%02x %02x %02x\n", image[0][x][y],image[1][x][y],image[1][x][y]);
}
}

dc.SelectObject(old_bm);
0160159NGNG
勘違いしてた。ニュースでもインデントがつぶれてたね。
0161乗換初心者NGNG
>>149
って処理ループを書かなきゃならんのすか?
vbやbcbみたく、1行で済ませて楽する方法はないのでしょか?
0162デフォルトの名無しさんNGNG
AfxGetApp()->PumpMessage();
0163デフォルトの名無しさんNGNG
フォルダ選択ダイアログで、長いフォルダを指定すると、SHGetPathFromIDList 関数が失敗してフォルダを取得できません。
実際に第2引数のバッファには文字列が設定されているのですが、途中で切れた文字列になっています。
終端文字列(NULL)も付いていないようです。
ヘルプやいろんなサイトを検索してみましたがどうしても分かりません。
だれかご存知の方、ご教示お願い致します。
ソースは下記です。
BOOL SelectFolderDialog(const HWND& m_hWnd, const CString& strTitle, const CString& strDefaultFolder, CString& strSelectFolder)
{
BOOL nFuncRet=TRUE;
BROWSEINFO bi;
TCHAR szDir[1024];
LPITEMIDLIST pidl;
LPMALLOC pMalloc;

TCHAR szDefaultFolder[_MAX_PATH];
strcpy(szDefaultFolder,strDefaultFolder);

if (SUCCEEDED(SHGetMalloc(&pMalloc))){
ZeroMemory(&bi,sizeof(bi));
bi.hwndOwner = m_hWnd;
bi.pidlRoot = 0;
bi.lpszTitle = strTitle;
bi.ulFlags = BIF_RETURNONLYFSDIRS;
bi.lParam=(LPARAM)szDefaultFolder;
          bi.lpfn = BrowseCallbackProc;
pidl = SHBrowseForFolder(&bi);

if (pidl){
if (SHGetPathFromIDList(pidl,szDir))
strSelectFolder=szDir;
pMalloc->Free(pidl);
pMalloc->Release();
}
else
nFuncRet=FALSE;
}
return nFuncRet;
}
// SelectFolderDialog()の再帰関数
int CALLBACK
BrowseCallbackProc(HWND hwnd,UINT uMsg,LPARAM lp, LPARAM pData)
{
switch (uMsg)
{
case BFFM_INITIALIZED:
if(pData!=NULL)
SendMessage(hwnd, BFFM_SETSELECTION, TRUE, (LPARAM)pData);
default:
break;
}
return 0;
}
0164デフォルトの名無しさんNGNG
>>163
IShellFolder の GetDisplayNameOf は?
0165デフォルトの名無しさんNGNG
>159
すいません、ニュースって何ですか?
0166デフォルトの名無しさんNGNG
>>165
SONYのワークステーション。
0167デフォルトの名無しさんNGNG
>>165
news://toc.dyndns.org/2ch.pc.tech
0168 ◆toc/CX1g NGNG
>>160
> 勘違いしてた。ニュースでもインデントがつぶれてたね。

あ、すんません、つぶれなくしましょうか?

今はブラウザと見え方をなるべく合わせようとして
連続するスペースをひとつのスペースで置き換えてます。
0169デフォルトの名無しさんNGNG
>167
ありがと
>168
おねがいします。
えっと、あと159のプログラムを貼り付けると配列に取り込めるんですか?
(たとえば、ボタンを作ってそれにメッセージハンドラのコード追加のところにかく)
それと、このプログラムはリソースに登録しといたBmpをよみこんでますよね?
リソースに登録していないファイルから読み込んだbmpにもそのままでつかえるのでしょうか?
0170奈々CさんNGNG
どなたかすみませんが、IEをプラグイン的に拡張するActiveXのサンプルコード
があったら、ポインタで結構ですから教えていただけないでしょうか。

やりたいことは、HTMLからURLを渡されたらサーバからデータを引っ張り、処理
結果をIEの画面の一部(あるいは全部)に描画するものです。

ネスケのplug-inなら理解できるのですが、IEでActiveXとなると難しいですの
で。

よろしくお願いします。
0171奈々CさんNGNG
わがままですみません。サンプルのソースコードはVC++を希望です。
VBは扱えませんので・・・。
0172デフォルトの名無しさんNGNG
またVC++で開発中にソースが逝きました。こんどはプロジェクト名のcppファイルが焼失しました。
でもオブジェクトは生きてる。
オブジェクト指向やっててよかった
0173デフォルトの名無しさんNGNG
>>171
ATLのチュートリアル(多角形を表示するもの)を見れ
0174デフォルトの名無しさんNGNG
n
0175デフォルトの名無しさんNGNG
>>170

ポインタで結構?
じゃあ、
char *activex;
これでいいね。
0176デフォルトの名無しさんNGNG
どうしよう。まったく面白くない。
0177デフォルトの名無しさんNGNG
>>176 せめてこのぐらい書いてやれや。
CComPtr<IWebBrowser2> pWebBrowser;
0178170NGNG
>>173
ありがとうございます。

で、冗談のセンスがない人はプログラムのセンスも無いと思いますが、どうです
か? >>175
0179デフォルトの名無しさんNGNG
RS232Cのデータ取り込むのにReadFileを使ってます。
abcdefgというデータでテストすると
ある程度時間たつと受信データが乱れます
順番が変わったり、受信しなかったりすることあります
Sleepで待ち時間を設定すると正確に受信できる時間が
伸びますが、結局は受信データが乱れます。
何が原因なのでしょうか?
ハード的に限界があるのでしょうか?
0180デフォルトの名無しさんNGNG
デバッグだと問題ないのにリリースで動かすとAccess Violationで止まっちまうぞゴルァ!!
助けてプリーズ。
0181デフォルトの名無しさんNGNG
Windowsだったら、
try {} catch (...) { MessageBox(NULL, "死んだごめん。", NULL, MB_OK | MB_APPLMODAL); exit(1); }
で囲んでおけば?
0182デフォルトの名無しさんNGNG
>>180
とりあえず、コンパイラのメッセージの未初期化なんとかってやつ、
全部調べ直せ。
0183デフォルトの名無しさんNGNG
今、再帰でちょっとした計算をしているのですが、
Windowsでスタックを食いつぶした場合って、どうなってしまうのでしょうか?

試しにちょっと無茶をさせてみた所、計算終了後、5分くらいは何の変化も
なかったんですが。その後、エラーメッセージもなく突然PCが落ちました。
スタック食いつぶしが原因かどうかもよく分かりません。
0184デフォルトの名無しさんNGNG
>>183
NT系のWindowsで同じこと試してみな。
0185デフォルトの名無しさんNGNG
>>184
環境は一応Windows2000なんです(T-T)
なにか俺、見逃してるっぽいですね…
0186デフォルトの名無しさんNGNG
初めてVC++6.0Proを買ってきてインストールしました。
SPを探してみたところ、MSのHPにSP5があったのですが、
Wideband-FullとFullがあります。
何が違うのでしょうか?どちらがお勧めですか?
0187デフォルトの名無しさんNGNG
>>186
初心者なのなら、そのままにしといてもいいんじゃ?
0188デフォルトの名無しさんNGNG
ReleaseとDebugで明らかに動作が違うのだけれど、
こういうのはどうしたら良いんでしょうか?
ウェブを検索したらそれで困っている人がいくらか引っかかった・・・。
0189デフォルトの名無しさんNGNG
>>188
>>182読め
0190デフォルトの名無しさんNGNG
ん〜 lightwaveで作ったキャラをC言語で動かすことってできるの?
なんとなく気になった!
0191デフォルトの名無しさんNGNG
>>179
フロー制御していないに一票

>190
理屈上できないはずが無い
0192デフォルトの名無しさんNGNG
すいません,以前も質問したのですがVCで
BMP画像を配列に格納する方法がわからないのですが,
モノクロ画像をunsigned char image[x][y]に格納するにはどのようにコードを書けばいいのでしょうか?
ボタンをつくり関数を追加してそこにメッセージハンドラを記述する形でコードを書く形です.
又,その逆に配列にしたものをBMPに戻すにはどのようにすればよろしいのでしょうか?
0193デフォルトの名無しさんNGNG
BMPは二種類あるけどどっち?
0194デフォルトの名無しさんNGNG
コマンドライン引数について。
 >test.exe "c:\windows\" 123
とやると、

期待する解釈:
 argv[1]→ c:\windows\
 argv[2]→ 123
実際:
 argv[1]→ c:\windows\" 123
となってしまう。こういう場合って、自分でパーサ作らないと駄目?
0195194NGNG
>194 間違い。

期待する解釈:
 argv[1]→ c:\windows\
 argv[2]→ 123
実際:
 argv[1]→ c:\windows" 123
0196>>194NGNG
>test "c:\windows\\" 123
とやれば良いに1票
0197デフォルトの名無しさんNGNG
同時にファイルの複数開きたいと考えています。
WinAPIのGetOpenFileName()を用いて複数ファイル名を
取得するにはどのようにすればいいですか?
0198194NGNG
>>196
そりゃ、そうだが。そういう入力があったときの話し。
0199196NGNG
>>194 そういう入力をユーザがする場合は、
ユーザは argv[1] = c:\windows" 123 を期待しているのだから
それで問題なかろう。そういう仕様なんだから。

194のプログラムだけが仕様を改善(?)しても、
他のプログラムと一貫性がなければ、ユーザにとっては改悪やん。
0200超初心者(*゚ з゚; ポNGNG
参考書に書いてあったのですが、この条件式の意味が判りません!

(c=(j>0)?buf[--j]:getc(fp))!=EOF)


ちなみに
int j;
char buf[100];
FILE *fp です。
特に「?」とか「:」とか判りません。
よろしくお願いします!
0201194NGNG
>199
はぁ、そういう見方もできるわけだね。世の中広いわ。

でも、普通は
>copy "c:\windows\" d:
みたいに使うでしょう。実際、これで動くわけだから。
0202デフォルトの名無しさんNGNG
>>200

C(C++?)にもそういう構文があるんだ・・・
Perlならおなじみだけど。
0203デフォルトの名無しさんNGNG
>>200
マジレス。

その本は捨てた方がいい。
0204デフォルトの名無しさんNGNG
>>201
>でも、普通は
>>copy "c:\windows\" d:
>みたいに使うでしょう。実際、これで動くわけだから。

copyはそれでは動かんよ。やってみろ。
0205デフォルトの名無しさんNGNG
>>201
はcopy使ったこと無いヴァカ。
0206デフォルトの名無しさんNGNG
>>200

if(j>0){
  j = j-1;
  c = buf[j];
}else{
  c = getc(fp);
}
if (c!=EOF) ...
0207超初心者(*゚ з゚; ポ NGNG
>>206
 ありがとうございます!そんな意味だったんすか!
 むずかしい。。。でも判りました!

>>203
 Cのリファレンス的本はこれしかモッテないんす。。。
 捨てられません(^^;
0208デフォルトの名無しさんNGNG
>193
すいませんBMP2種類あるってBMPの種類ですか?
読み込み方ですか?種類ならよくわからないんですが、読み込み方はリソースにもとからBMPを割り当てたやり方です。
どうか、よろしくおねがいします。

>以前も質問したのですがVCで
>BMP画像を配列に格納する方法がわからないのですが,
>モノクロ画像をunsigned char image[x][y]に格納するにはどのようにコードを書けばいいのでしょうか?
>ボタンをつくり関数を追加してそこにメッセージハンドラを記述する形でコードを書く形です.
>又,その逆に配列にしたものをBMPに戻すにはどのようにすればよろしいのでしょうか?
0209デフォルトの名無しさんNGNG
CraeteDIBBitmap
0210デフォルトの名無しさんNGNG
>>208

 BITMAPFILEHEADERやDIBをキーワードにサーチエンジンで調べてみよう。
BMP内にモノクロビットマップがカラーテーブルで格納されているなら、
その値を持ってくるだけ。フルカラーRGBならBMPに記録されているピクセ
ル列のRGBの一つをそのまま読み込めばよい(ただし4バイト境界に注意)。
BMP内に記録されているピクセル列の位置は、BITMAPFILEHEADERを参照。
0211211NGNG
マウスのドラッグで長方形を描くにはどうすればいいのでしょうか?
Windowsのデスクトップとかで出来るやつです。
onMouseDownとMoveの間に四角をかくと途中の線も書いてしまって汚い。
 
0212デフォルトの名無しさんNGNG
>>211
途中の線消せよ。
0213デフォルトの名無しさんNGNG
>>209 間違い過ぎです。
0214211NGNG
>>212
どうやって消す?厨房ですまんがけし方だけ
具体的に教えて〜〜。
0215デフォルトの名無しさんNGNG
質問です。VC++6.0です。
人からもらったプロジェクトなんですが、これを開いてコンパイルするとincludeファイルが見つけられないエラーが続出です。
これをくれた人は自分の環境ではちゃんとコンパイルできていると思うのですが、何故かうまくいきません。
具体的には、ユーザー定義のヘッダで、ファイル自体はあるし、プロジェクトにも追加されてます。
仕方がないので#include "aaa.h"を#include "aaa\aaa.h"の様に打ち変えてコンパイルしてます。
これでコンパイルは出来るのですが、いまいちスマートではないですよね?
こういうケースはみなさんどのように対処してますか?
0216デフォルトの名無しさんNGNG
プロジェクト>設定>C/C++>プリプロセッサ。
0217Kusakabe YokaichiNGNG
>>215
まだプログラマとは言えないレベルですね。
0218デフォルトの名無しさんNGNG
>>214 ヒントはXORです。
同じ図形を2回XORで描画すると元に戻ることを利用すると楽ちん。
0219デフォルトの名無しさん NGNG
Internet Transfer Controlの使い方教えてください
0220デフォルトの名無しさんNGNG
どこをどう勘違いすればここで使い方が教えてもらえると思ったのか教えてください。
0221デフォルトの名無しさんNGNG
コマンドプロンプトでビルドできるようにするための
メイクファイルって自動で吐き出せないんでしょうか?
0222デフォルトの名無しさんNGNG
>>221
[プロジェクト]->[メイクファイルのエクスポート]
0223211NGNG
できたー! 完徹してしまった。
>>218ありがとう!
onMouseMoveに以下を書いた。
if(m_bLButtonDown )//ドラッグされたら・・・
{
//描画準備
CDC *pDC = GetDC();
//Rectを定義し、FocusRectを描く
CRect Rect;
Rect.SetRect(m_dx,m_dy,point.x,point.y);
Rect.NormalizeRect();
pDC->DrawFocusRect(Rect);
//前に描いたやつを消す
Rect.SetRect(m_dx,m_dy,m_x,m_y);
Rect.NormalizeRect();
pDC->DrawFocusRect(Rect);
//消すポイントをとっておく
m_x = point.x;
m_y = point.y;
ReleaseDC(pDC);
}
0224デフォルトの名無しさんNGNG
>>204,205
NT4では動くぞ。
0225デフォルトの名無しさんNGNG
EnumThreadWindowsで、外部アプリケーション(ダイアログベース)の
メインウィンドウ hMainWnd を得たい。が、トップレベルウィンドウとして
複数列挙される。そこから hMainWndを区別する方法として、どんなものが考えられます?

キャプションで判断すると今一つ確実でないし、クラス名(#32770)で判断すると、
オーナーNULLのメッセージボックスと区別がつかない。GetParentでも区別できない。

なんか、FAQっぽいけど、ご教授願います。
0226デフォルトの名無しさんNGNG
owner NULLがダサすぎるのでそのアプリは捨てる。
0227デフォルトの名無しさんNGNG
iniファイルをexeと同じディレクトリに保存したいのだが
VC作成中はReleaseの下にexeがあり、ユーザーの環境では直接置かれる。
どうやるのが正しい一貫性のあるやり方でせう?
今はGetCurrentDirectory()を使っているが
ルートディレクトリにインストールされたりするとC:\
と最初に\がついてうまく動かない場合あり。
0228デフォルトの名無しさんNGNG
>>227
CString strAppDir; // アプリケーションが起動されたディレクトリ
TCHAR szFull[_MAX_PATH];
TCHAR szDrive[_MAX_DRIVE];
TCHAR szDir[_MAX_DIR];
::GetModuleFileName(NULL, szFull, sizeof(szFull) / sizeof(TCHAR));
_splitpath(szFull, szDrive, szDir, NULL, NULL);
strAppDir.Format(_T("%s%s"), szDrive, szDir);

CString strINIfile;
strINIfile = strAppDir + _T("hogehoge.ini");
0229デフォルトの名無しさんNGNG
Release/Debugそれぞれに
Release/Debug用のiniファイルをおいとけ。

\は自分でなんとか処理すれ。
0230デフォルトの名無しさんNGNG
>>228
Thanks
ドライブとディレクトリを分割するのか・・・。結構面倒ですね。
しかしこれだとiniファイルをReleaseの下に作ってしまわないでせうか?
開発時はReleaseの下には作りたくない・・・のだがそれはワガママ?
0231デフォルトの名無しさんNGNG
_splitpathってUNCも正しく処理できたっけ?
0232デフォルトの名無しさんNGNG
>>229
それぞれ置くのは混乱するのでパス。
\は漢字コードの2バイト目とかもあり、スマートな処理が面倒そうなのです。
0233デフォルトの名無しさんNGNG
なんでReleaseの下に作りたくないの?
0234デフォルトの名無しさんNGNG
開発時にはReleaseを起動しない。これで良し。
0235デフォルトの名無しさんNGNG
>>232
_mbsleadとか_tcsleadの使い方を覚えなさい。
0236デフォルトの名無しさんNGNG
>>235
それって検索しても見つからないぞ。自作の関数か?
0237デフォルトの名無しさんNGNG
ごめん is 付け忘れた。

MSDNで探してくんろ
0238デフォルトの名無しさんNGNG
でかいビットマップファイルをメモリに読みこみたいんですが、
CreateFileで開いてからサイズ調べてGlobalAllocしてそこに全部一気にReadFileするのと、
ファイルマッピング使ってマップするのと
どっちが(効率とか速さとか考えると)良いのでしょうか?
0239デフォルトの名無しさんNGNG
ふぁいるまっぴんぐ
0240デフォルトの名無しさんNGNG
ファイルの大きさやその後の処理によりけりだと思います。
ただ読んで表示するだけなら、ファイルマッピングに一票
0241デフォルトの名無しさんNGNG
>>227 に、なぜVCのプロジェクト設定で
デバッグ時のカレントディレクトリを弄らないのか
小一時間問いつめるYO
0242デフォルトの名無しさんNGNG
>>241
デバッグ用のexeを置くディレクトリをソースと同じところにしろ、と言ってる?
0243デフォルトの名無しさんNGNG
デバッグタブの中をよーくみてみろ。
0244デフォルトの名無しさんNGNG
作業用のディレクトリを\Debugにしろ、と?
カレントディレクトリの問題じゃないのだが。
0245デフォルトの名無しさんNGNG
なんかこう、灯台元ヒグラシってやつ?
0246デフォルトの名無しさんNGNG
なんでReleaseの下に作りたくないのか回答がないな。
いちいちDebugとかReleaseとか面倒だから同じディレクトリにして、
ファイル名変えたら?Debug版はhogehoge-d.exeみたいにd付けるとか。
0247デフォルトの名無しさんNGNG
もしかしたらカレントディレクトリって、常にexeのある場所と一緒だと思ってるかわいそうな人なのかも。

いたわってあげよう!
0248デフォルトの名無しさんNGNG
>>247
>iniファイルをexeと同じディレクトリに保存したい
と言って
>GetCurrentDirectory()を使っている
そうなので、案外そうかも。
0249デフォルトの名無しさんNGNG
>>246
iniファイルを2つ作りたくないから。
ディレクトリを同じにすれば確かに解決するがあまりスマートな方法ではないと思うが。
>>247,248
質問読んでそれぐらいの認識もできない?
レベルの低い奴からはその程度の回答しか得られんな。
0250デフォルトの名無しさんNGNG
BeepMessage使ってビープ音を出してます
繰り返し再生したいのですがうまくいきません
どうしたらいいのでしょうか?
Wave再生APIとかを使わないとうまくいかないのでしょうか?
OSはWin98です
0251247NGNG
どうしようもない間抜けっぽいので教えてやる。

カレントディレクトリのiniファイルを見に行け。
デバッグ時もリリース時も作業用のディレクトリを
ソースと同じディレクトリ(かテスト環境用のディレクトリ)に
しておけ。

iniファイルは一つで済む。

VBのApp.Pathみたいのを期待しているようだが、
「実行モジュールと同じディレクトリのiniファイル」を見に行くのは
VB厨のやり方だ。
0252デフォルトの名無しさんNGNG
>>249
> 質問読んでそれぐらいの認識もできない?
煽るな。

俺には書き方が悪いようにしか見えん。何をやりたくて、何を避けたいのかのトレードオフが
分からんぞ。

1 exe と ini ファイルを「常に同じ」ディレクトリに置きたい
2 ini ファイルを複数用意するのは嫌だ

ってのが前提条件なら、そりゃ exe を同一ディレクトリに置くしかないだろ。状況によっては
1 を譲歩して良いが 2 は譲歩できん、ということなら、「状況」と「譲歩」について、詰めて書
け。それはキミにしか判断できないことだ。

#書いてないけど、exe のフルパスを取得する方法はわかってるよね?
0253デフォルトの名無しさんNGNG
>>251
現在の状況はそうなっている。

>>252
確かに書き方が悪かったのは認める。

1 ユーザーの環境では常にiniファイルをexeと同じディレクトリに置きたい。だが
2 開発中の環境ではソースが置いてあるディレクトリにiniを置いて
 ReleaseとDebugのexeで共通に読み込みたい。

exeの置いてあるディレクトリに置くのは>>228で教えてもらった
GetModuleFileName()を使えばできる。が、これでは 2 が解決しない。

カレントディレクトリに置くようにすれば同時に解決するが
"C:\" とかのルートディレクトリレクトにインストールされると
通常、"C:\Program Files\foo" とかにインストールされた場合と
異なり、最後に "\" がつくので特殊な処理がいる。
ルートだけ処理を加えればいいが、日本語のディレクトリや
ネットワークにインストールされた場合、矛盾しない処理方法が分からない。
0254デフォルトの名無しさんNGNG
かれんとならディレクトリ名の処理は必要なかろうに...
0255デフォルトの名無しさんNGNG
>>254
ディレクトリ名つけずにファイル名だけで open すれば飯竹だよね。謎だ。

>>253
> 開発中の環境
これとユーザの環境の区別を、どうつける? 俺が考えつくのは、

1. インストール時にインストーラで特定の値をレジストリに書き込む
2. その値が書いてあればユーザ環境、なければ開発環境と見なす

とか、

1. 開発環境にはカレントディレクトリに特定のファイルを置いておく
2. そのファイルが存在すれば開発環境、しなければユーザ環境

ってところだが、いずれにせよマーフィーの法則により

1. 開発環境では問題が出ない
2. ユーザに渡した主観、ユーザ環境でのみ使うコードにバグが見つかる

ことが保証されているから、やめたほうが良いと思う。
0256デフォルトの名無しさんNGNG
ユーザーが途中でファイルを開いて読み行くとカレントは変わってしまうので
プログラムの起動時のカレントを記憶している。
0257デフォルトの名無しさんNGNG
かれんとを元の位置に戻せよ。
おもしろいな、お前のプログラム
0258デフォルトの名無しさんNGNG
>>257
なるほど・・・。
ファイル処理の後に全部戻せばいいのか。
だがそれだと、深い所に保存したファイルに何度もユーザーが触る時に不便だろう。

ただ、Win2000あたりからアプリが前回の最後のディレクトリを覚える仕様に
変わった?のでよく分からんのだけど。
余談だがVC++ではプロジェクトを切り替えてもディレクトリが前回のプロジェクトのまま、
とかなって不便なのだが。
0259デフォルトの名無しさんNGNG
いや、やっぱりフルパスでのディレクトリの処理をする必要がある。
ファイルのオープン中にも画面の書き換えが発生すると
所定の位置のデータベースを読みに行く仕様なので。
0260デフォルトの名無しさんNGNG
つかなんで開発中にReleaseとDebugのiniを同じにすんの?
開発中はDebugだけでテストすりゃいいんじゃ?
0261デフォルトの名無しさんNGNG
>>260
速度が違いで発生するバグとかに対処するため普段はReleaseで動かしてる。
Debugは問題が発生した時の追跡のみに使用。
0262デフォルトの名無しさんNGNG
放置しても(・∀・)イイ?
0263デフォルトの名無しさんNGNG
確かに我ながらうざいな。消えるわ、荒らして悪かったな。
0264デフォルトの名無しさんNGNG
とりあえずbuild_path()とかなんとか関数つくっとけ。
で、カレントディレクトリはころころ変えるな。
0265デフォルトの名無しさんNGNG
>>263
初めていいこと言った
0266デフォルトの名無しさんNGNG
☆WinXPに新しく追加されたAPI☆
0267デフォルトの名無しさんNGNG
↓のプログラムはウインドウを表示するプログラムなおですが、どこが悪いのかわりません
どこが悪いのでしょうか?

#include <windows.h>

LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam);

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd)
{
HWND hWnd;
MSG message;
WNDCLASSEX wc;

wc.hInstance = hInstance;
wc.lpszClassName = "DDraw";
wc.lpfnWndProc = WndProc;
wc.cbSize = sizeof(WNDCLASS);
wc.style = 0;
wc.cbClsExtra = 0;
wc.cbWndExtra = 0;
wc.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);
wc.hCursor = LoadCursor(NULL, IDC_ARROW);
wc.hIcon = LoadIcon(NULL, IDI_WINLOGO);
wc.lpszMenuName = NULL;

if(!RegisterClassEx(&wc))
return 0;

hWnd = CreateWindow(
"DDraw",
"DirectDraw",
WS_OVERLAPPEDWINDOW,
300,
200,
200,
200,
HWND_DESKTOP,
NULL,
hInstance,
NULL);


ShowWindow(hWnd, nShowCmd);
UpdateWindow(hWnd);

while(GetMessage(&message, NULL, 0, 0)){
TranslateMessage(&message);
DispatchMessage(&message);
}
return message.wParam;
}
0268デフォルトの名無しさんNGNG
続き

LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
switch(message){
case WM_DESTROY:
PostQuitMessage(0);
break;
default:
return DefWindowProc(hWnd, message, wParam, lParam);
}
return 0;
}
0269デフォルトの名無しさんNGNG
>267
エラーを報告白やヴォケ
俺の予想としてはHWND_DESKTOPって何打?ってかんじ。ペアレントがなぜペアレントを持つのかってかんじ。
0270デフォルトの名無しさんNGNG
っていうか、プリプロセッサ使えば一発な気が・・・
win32_debugとかwin32_nodebugとかあるし
自分で作って設定してもいいし・・・
0271デフォルトの名無しさんNGNG
>>267
RegisterClassEx() に失敗してるやん。return 0 で終わらせずに MessageBox()
でエラーメッセージぐらい表示しとけよ。

WNDCLASSEX 使うなら wc.cbSize のサイズが間違ってる。
0272デフォルトの名無しさんNGNG
int PASCAL WinMain(hInstance,hPrevInstance,lpszCmdLine,cmdShow)
ってなってるんですけど
PASCALってなんですか?
0273デフォルトの名無しさんNGNG
win*.hを検索して見ろ
0274Kusakabe YouichiNGNG
In article >>272, デフォルトの名無しさん/272 wrote:

> int PASCAL WinMain(hInstance,hPrevInstance,lpszCmdLine,cmdShow)
> ってなってるんですけど
> PASCALってなんですか?

マニュアルに書いてありますよ。(ちゃんと買ったものなら)
0275デフォルトの名無しさんNGNG
マニュアル読んでも意味が分からない、に一票
0276てんさいぷろぐらむぁ(偽) ◆8Fck5JHo NGNG
>>267

1:WNDCLASSEXのcbSizeが間違ってる。
sizeof(WNDCLASS)は間違い。
sizeof(WNDCLASSEX) か sizeof(wc)に変更

2:hIconSmが設定されていない。
WNDCLASSにはないけどWNDCLASSEXにはhIconSmがある。
現在のやり方では構造体の初期化をしているわけではないので、大変イケナイ値が入っている。

>>269
HWND_DESKTOPはNULLで定義されていたような。
デスクトップを親にもつウインドウ(トップレベルウインドウ)のような抽象化をする為に
HWND_DESKTOPがあるものだと思っているのですが・・・
0277269NGNG
>276
初耳。ありがとう。
0278デフォルトの名無しさんNGNG
>>272
MSDN Library 引きましょう。

今は PASCAL は obsolete だから WINAPI を使うのが推奨されてるけど。
0279267NGNG
いろいろなレスありがとうございました。
なんとか解決できました。
0280デフォルトの名無しさんNGNG
っていうか、iniファイルを複数作りたくないなら、win.iniかレジストリ使うのが
普通だと思うが。もし箱売りのソフトならレジストリ使わないとWindowsロゴ取得で
ひっかからないか?
ReleaseとDebugを同じディレクトリにするのがスマートじゃないとか言ってるけど、
その根拠も示されてないし。なんか、ただのわがままにしか見えない。
そもそもGetModuleFileNameを知らなかったり、パス解析で悩むようなレベルだから
仕方ないのかもしれないが。あと質問してるくせに偉そうだし。レベル低いくせに。

_splitpathを面倒とか言ってたけど、このスレに書くために押したキーの回数よりも
ソースに_splitpathを追加する方がよっぽど少ないと思うが。

マルチ言語化とか考えてるなら、パス解析はAPIのパス関数を利用するのが一番安全。
ただしWin98以降限定になってしまうが。
調子に乗ってマルチ言語化してると台湾あたりから中国語でお礼とかバグ報告が来る
危険も伴なう諸刃の(以下略)。っていうか読めないっつーの。しかも中国人の書い
た下手な英語は中国語よりもわけ分からん。
0281デフォルトの名無しさんNGNG
知らない間に韓国語版が出てたりしてアゼーン
0282デフォルトの名無しさんNGNG
>>280
まぁまぁ。死体に鞭打ちうつなって。
0283デフォルトの名無しさんNGNG
すいません、間違えてその4に書いてしまったのでもう一回書いちゃいます。

シリアル通信で、DCB構造体のfAbortOnErrorをTRUEにしても
エラーのときに処理を中断しないんです(FALSEと変わらない)。
Win2000だと設定通り動くんだけどWin98でやったらこうなってしまいます。

同じような人いませんか?どっちでもいいんだけどなんか気持ち悪いです。
0284デフォルトの名無しさんNGNG
VC++6.0で質問です。

指定したファイルをZIPファイルに圧縮するプログラムを作りたいんですけど
zip32.dll、Unzip.dllをロードするのはわかるけど、肝心の関数がどういうもの
か?
GetProcAddress()で何を呼び出せばいいかわからない。

サンプルがあれば誰か教えてください。
0285デフォルトの名無しさんNGNG
>>284
ライブラリやヘッダ付いてなかった?
0286デフォルトの名無しさんNGNG
今見てきたら、開発用は別に配ってるのね。
それ落とすべし。
0287デフォルトの名無しさんNGNG
>>285

libファイルはありますがhファイルが無し。(それで困ってる)
DLLだけでもLoadlibrary()を使えばOKと思いますから。
0288デフォルトの名無しさんNGNG
>>287
ん?ちゃんと付いてたぞ。
0289デフォルトの名無しさんNGNG
ちょっと質問
for (int i = 0; i < 5; ++i);
for (int i = 0; i < 5; ++i);
これがコンパイルできないんですけど普通ですか?
0290デフォルトの名無しさんNGNG
#define for if (0) ; else for

FAQだ
0291デフォルトの名無しさんNGNG
>>289
i の2重定義ですな。 フツーフツー。
0292デフォルトの名無しさんNGNG
現在VC6って、サービスパックいくつまで出てるんでしょう?
今3があたっていますが、これって古いですか?
0293デフォルトの名無しさんNGNG
SP6
0294デフォルトの名無しさんNGNG
サービスパックって、いつまででるの?
0295デフォルトの名無しさんNGNG
誰も知りません
0296284NGNG
>>288

どこのWebか教えてください。
0297デフォルトの名無しさんNGNG
MFCで CHtmlView を使っているんですが
例外処理 (初回) は ***.exe (KERNEL32.DLL) にあります: 0xC0000005: Access Violation。
というメッセージがいっぱい出ます。
これってこういうものなんですか?
特別なことはしてないつもりですが CHtmlView が例外出しまくりです。

それと表示しているHTMLのリンクをクリックするとブラウザが起動してしまいます。
CHtmlView 内に表示したいんですがどうしたらいいですか?
0298デフォルトの名無しさんNGNG
べつにいいんでないの?
0299デフォルトの名無しさんNGNG
CString型からchar型に変換するにはどうすればいいですか?
0300デフォルトの名無しさんNGNG
一文字目だけでいいな
CString str = "aaaa";
char c = str[0];
0301299NGNG
>>300
どもありがとうございました
0302デフォルトの名無しさんNGNG
>>299
CString str = "AAAA";
char *s = (LPTSTR)(LPCSTR)str;
0303デフォルトの名無しさんNGNG
汎用キャラクタマッピングをよく知らない人はキャストにLPTSTRは使っちゃいけません。
0304syosinsyaNGNG
Midi再生をしようと思って、
MCI_OPEN_PARMS open;
MCI_PLAY_PARMS play;
open.lpstrDeviceType = "Sequencer";
open.lpstrElementName = name;
mciSendCommand(0, MCI_OPEN,MCI_OPEN_TYPE | MCI_OPEN_ELEMENT, ( DWORD )&open );
mciSendCommand(open.wDeviceID,MCI_PLAY,MCI_NOTIFY,( DWORD )&play );
のようにして再生できたのですが、連続再生がうまくいきません。
色々調べてみたところ、メッセージが送られたら、MCI_SEEKで戻す、というようにすればいいとのことでしたが、
その、MCI_SEEKで戻す、というのの具体的方法がわかりません。

上記のようなソースを元に関数化したいと思っているのですが、毎回呼び出される事に、はじめから再生するようにするにはどうすればいいのでしょう?
0305( _ 。。) _ バタ。NGNG
>>303
#define LPTSTR unsigned short*
って安直な考えはしちゃいけなかったのか…(汗)

>>304
MM_MCINOTIFY のメッセージをトラップして
mciSendCommand(open,MCI_SEEK,MCI_SEEK_TO_START,(DWORD)&prm);
で先頭に戻してもっかいPlayを叩き込んで終りです。

あ。念の為にSEEK前にStop噛ました方が良いかな?
0306305(ミス修正)NGNG
mciSendCommand(open,MCI_SEEK,MCI_SEEK_TO_START,(DWORD)&play);
かな? 304さんの定義を使うとこうですな。                ~~~~~~
0307デフォルトの名無しさんNGNG
GetBuffer()
0308デフォルトの名無しさんNGNG
マウスエミュレーターみたいなのを作りたいのですが
(キーボードのスペースを押すとクリックになるみたいなやつ)
全然方針が立ちません。
情報持っている方がいらしたら、是非教えてください。
0309デフォルトの名無しさんNGNG
mouse_event
0310デフォルトの名無しさんNGNG
他のウインドウに対してマウスイベントを送る事なんて
できるんですか?
0311デフォルトの名無しさんNGNG
余裕
0312デフォルトの名無しさんNGNG
くそめしまえだぜ
0313デフォルトの名無しさんNGNG
Windows NT/2000:この関数は、SendInput 関数にとって代わられました。SendInput 関数を使ってください
となっていますが、98ではSendInput使っても動かないんですよね?
0314デフォルトの名無しさんNGNG
SendInputのInput構造体の説明もなかったし・・・
0315デフォルトの名無しさんNGNG
Windows2000 のOSの勉強したいのだが、
C++で実装して説明している書籍教えて
0316デフォルトの名無しさんNGNG
何いってのかわからんけどSDK読め
0317( _ 。。) _ バタ。NGNG
>>313
MSDN読むべし、SendInputの項目、最後の方に
Windows NT/2000:Windows NT 4.0 SP3 以降
Windows:Windows 98
ヘッダー:winuser.h 内で宣言
インポートライブラリ:user32.lib を使用

<< http://www.microsoft.com/JAPAN/developer/library/jpuipf/_win32_sendinput.htm >>

>>314
INPUT as;
as.hi.uMsg;
as.hi.wParamH;
as.hi.wParamL;
as.ki.dwExtraInfo;
as.ki.dwFlags;
as.ki.time;
as.ki.wScan;
as.ki.wVk;
as.mi.dwExtraInfo;
as.mi.dwFlags;
as.mi.dx;
as.mi.dy;
as.mi.mouseData;
as.mi.time;
as.type

とりあえず、全部列挙してみたが…割り込ませるイベントの内容を記述するらしいな。
#KeyIvent / MouseIvent / じゃあ、hiって何のイベントだろ…(汗
0318デフォルトの名無しさんNGNG
>>315
お前はホントにWindows2000の"OSの勉強"がしたいのかと問いたい。
問い詰めたい。小一時間、問い詰めたい。
0319デフォルトの名無しさんNGNG
>>315
「Windows2000 アーキテクチャ徹底解説」

Windows2000 の実装まはやってないけど。
0320デフォルトの名無しさんNGNG
ボーランドのCPPとマイクロソフトのCPPってどっちがよいの?
0321デフォルトの名無しさんNGNG
>>320
CPPって、プリプロセッサの話?
ANSI準拠してれば、どっちがどうとかってあんまり関係ないような気が。
処理系依存部分の優劣が問いたいのだろうか。
0322デフォルトの名無しさんNGNG
いやいや、マイクロソフトにはヴィジュアルC++。ボーランドにはC++builderが
あるじゃないですか?買うならどっちかなって。
基本的にどちらが優れているか知りたいです。
0323デフォルトの名無しさんNGNG
>>322
判断基準が示されていないので、判断しようがありません。

「金閣寺と東京都庁があるじゃないですか? 観光するならどっちかって?」
知るかよ。
0324デフォルトの名無しさんNGNG
>基本的にどちらが優れているか知りたいです。
Rubyに決まっているだろっ!
0325デフォルトの名無しさんNGNG
>>324
C言語を#execしろYO!
#最近、セキュリティーの関係上 ダメなサーバー多いけどさ
0326デフォルトの名無しさんNGNG
つまらない質問で恐縮ですが、実行ファイルのアイコンに
何らかのファイルがドラッグ&ドロップされたとき、
それを無視して別のファイルを開きたい場合に
どうしていいか判りません。つまり以下のようにすると、

#include <windows.h>
#include <cstdio>

int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
               LPSTR lpCmdLine, int nCmdShow)
{
 MessageBox(0,lpCmdLine,"コマンドライン引数",MB_OK);

 if(FILE *fp=fopen("./hoge.txt","r")) {
   fclose(fp);
   MessageBox(0,"ファイルの読み込みに成功しました.","OK",MB_OK);
 } else {
   MessageBox(0,"ファイルの読み込みに失敗しました.","ERROR",MB_OK);
 }
 return 0;
}

単体で起動すれば普通にhoge.txtを開いてくれるのですが、
何らかのファイルがドラッグ&ドロップされた場合、
つまりコマンドライン引数が存在する場合はhoge.txtを開いてくれません。
どなたか知恵を下さい。
0327デフォルトの名無しさんNGNG
>>326
てきとーにSetCurrentDirectoryしろ。
0328326NGNG
>>327
ありがとう。
とりあえずSetCurrentDirectoryで検索してみます。
0329デフォルトの名無しさんNGNG
>>326
アプリケーションが起動されたときのカレントディレクトリ=.exeのある
ディレクトリだと勘違いしてない?
0330326NGNG
>>329
さっきそうではないということと、
GetModuleFileName()なるものの存在を知りました。
てきとーにSetCurrentDirectoryを試み中です。
0331326NGNG
うまくいきません。
下のようにしてカレントディレクトリのセットは出来たのですが、
相変わらず何らかのファイルをドラッグ&ドロップして起動すると
hoge.txtが開いてくれません。更なる知恵を・・・。

 char mpath[1024]; // 実行ファイルのパス名を入れるバッファ
 GetModuleFileName(0,mpath,1024); // 実行ファイル名混みのパス名を取得
 // パス名の後ろからサーチして最初の\まで(つまり実行ファイル名)を削除
 int i = strlen(mp)-1; while (mp[i]!='\\') --i; mp[i] = '\0';
 SetCurrentDirectory(mpath);

 if(FILE *fp=fopen("./hoge.txt","r")) {
   fclose(fp);
   MessageBox(0,"ファイルの読み込みに成功しました.","OK",MB_OK);
 } else {
   MessageBox(0,"ファイルの読み込みに失敗しました.","ERROR",MB_OK);
 }
0332デフォルトの名無しさんNGNG
hoge.txtをフルパスで指定するのがベスト。
_splitpath()でGetModuleFileName()の結果を分解して、_makepath()で結合
しなおすのが良いかと。
0333326NGNG
>>332
どうもです。

char c_mp[1024];             // 実行ファイル名混みのパス名を入れるバッファ
GetModuleFileName(0,c_mp,1024);   // 実行ファイル名混みのパス名を取得
string mpath = c_mp;           // とりあえずstringに。
s.erase(mpath.rfind('\\'));        // おしりから\を探してそれ以降(つまり実行ファイル名)を削除
string readfile = mpath+"/hoge.txt"; // うぉんちゅう。

で出来ました。ありがと〜。
とりあえずファイルをドラッグした場合はカレントディレクトリが変わるということと、
ファイル操作には絶対パスが必要なときがあるということを勉強しました。m_ _m
0334デフォルトの名無しさんNGNG
おしりから\を消すのは問題あるよ。「表」とかは2バイト目が\だよ。
0335味噌醤油醸造株式会社NGNG
>>334
1.自分自身の.EXEファイルの名前には漢字を使わない。
2.漢字のファイル名にrenameされたときはあきらめる
ということでいかがでしょうか.
0336デフォルトの名無しさんNGNG
>>335
そんな運任せなんて……
0337326NGNG
>>334
そうかぁ。でもそれを考え出すととても面倒そうなので
いずれまた考えることにします。
# VisualC++の相談というかWindows上でのCの相談でした。
# すみませんです。
0338デフォルトの名無しさんNGNG
>>337
おいおい。このぐらいで手を抜くなよ...

1 あたまから \ を探していって(ただし _ismblead() を使ってマルチバイト文字の一バイト目なら飛ばす)、
 一番最後の \ を見つける。
2 UNICODE 化してしまう。string ではなく wstring を使えば、悩まなくて良い。

とか、いくらでも手はあるぞ。
0339326NGNG
>>338
wstringの使い方がまだよく判っていないのと
_ismblead()がcygwinで見つけられなかったので
_splitpathを使ってみました。表表.exeみたいな実行ファイルでも
うまくいってるみたいです。

char c_mp;
char c_drive[3], c_dir[256], c_file[256], c_ext[256];
_splitpath(c_mp, c_drive, c_dir, c_file, c_ext);
string mpath = c_drive;          // とりあえずstringに。
mpath += c_dir;              // ディレクトリ名を付けて
string readfile = mpath+"/hoge.txt"; // 出来上がり
0340デフォルトの名無しさんNGNG
メニューに使われているフォントと同じフォントを使用したい場合どうしたらいいですか?
GetStockObject(SYSTEM_FONT) で取得したフォントはどういうわけかサイズがあいません。
かなり大きめのフォントが返ってきます。
教えてちょんまげ!
0341デフォルトの名無しさんNGNG
>>292
SP5が正解。
0342味噌醤油醸造株式会社NGNG
>>340
メニューのフォントって、MS UIゴシックじゃなかった?
(自信無し)
0343デフォルトの名無しさんNGNG
>>340
Getパラメーターイんふぉ(なんとか)って関数で取得できた気がするが。
MSDN参照
0344デフォルトの名無しさんNGNG
質問。基本的なことで申し訳ないんだが、
CMyViewクラスのメンバ変数とか外部変数を
他のクラスで呼び出したり、値を代入するには
どうすればいいのでしょうか?
 逆は出来るんだけど・・・
0345pppNGNG
ええとVC6について質問ですがモノクロのBMPを配列に格納する方法ですが、
C言語の本に


/*--- BitmapToRgb --- 画像変換(Bitmap画像からRGB画像へ)----------------------
hBitmap: 入力Bitmap画像
pr: 出力R画像
pg: 出力G画像
pb: 出力B画像
-----------------------------------------------------------------------------*/
void BitmapToRgb(HBITMAP hBitmap, unsigned char pr[120][160],
unsigned char pg[120][160], unsigned char pb[120][160])
{
HANDLE hDB;
unsigned char *pdr, *pdg, *pdb, *ps, *ps0;
LONG i;

pdr = (unsigned char *)pr; pdg = (unsigned char *)pg;
pdb = (unsigned char *)pb;
hDB=GlobalAlloc(GMEM_MOVEABLE, (DWORD)160*120*4);
ps = ps0 = GlobalLock(hDB);
GlobalLock(hBitmap);

if (bitspixel == 16) { /* 16ビット/画素のフレームメモリ */
GetBitmapBits(hBitmap, (DWORD)160*120*2, ps0);
for (i = 0; i < (DWORD)160*120; i++) {
/* GGGBBBBB RRRRRGGG G成分が6ビット */
*pdb++ = (*ps << 3) & 0xf8;
*pdg = (*ps++ >> 3) & 0x1c;
*pdg++ = *pdg | ((*ps << 5) & 0xe0);
*pdr++ = *ps++ & 0xf8;
/* GGGBBBBB *RRRRRGG G成分が5ビット
*pdb++ = (*ps << 3) & 0xf8;
*pdg = (*ps++ >> 2) & 0x38;
*pdg++ = *pdg | ((*ps << 6) & 0xc0);
*pdr++ = (*ps++ << 1) & 0xf8;
*/
}
}
else if (bitspixel == 24) { /* 24ビット/画素のフレームメモリ */
GetBitmapBits(hBitmap, (DWORD)160*120*3, ps0);
for (i = 0; i < (DWORD)160*120; i++) {
*pdb++ = *ps++; *pdg++ = *ps++; *pdr++ = *ps++;
}
}
else if (bitspixel == 32) { /* 32ビット/画素のフレームメモリ */
GetBitmapBits(hBitmap, (DWORD)160*120*4, ps0);
for (i = 0; i < (DWORD)160*120; i++) {
*pdb++ = *ps++; *pdg++ = *ps++; *pdr++ = *ps++; *ps++;
}
}
GlobalUnlock(hBitmap);
GlobalUnlock(hDB);
GlobalFree(hDB);
}
0346pppNGNG
上のように乗っていたのですが、
これをボタンに割り当ててメッセージハンドらのコードに加えると
ローカル変数の定義がおかしいと出るのですがどのように変更すればいいのでしょうか?
0347デフォルトの名無しさんNGNG
>>344
まずC++の勉強から始めれ
0348デフォルトの名無しさんNGNG
>>343
NONCLIENTMETRICS ncm;

ZeroMemory(&ncm, sizeof(NONCLIENTMETRICS));
ncm.cbSize = sizeof(NONCLIENTMETRICS);
SystemParametersInfo(SPI_GETNONCLIENTMETRICS, 0, &ncm, 0);

で ncm.lfMenuFont を見ればわかると思う。
0349デフォルトの名無しさんNGNG
リソースタブのdialogの項目をクリックしてダイアログボックスを
作成したのですが、誤ってコントロールパレットを消してしまい
新しくボタンを追加したりできないので、再び表示させる方法
を教えてください。
0350デフォルトの名無しさんNGNG
ツールバーの空いてるところで右クリック。
「コントロール」という項目を選択する。
0351349NGNG
>>350
ありがとうございます。
おかげで表示できるようになりました。

メニューの所全部調べてもパレット表示の項目がなかったんで
困っていましたが、右クリックツールバーを表示させればよかったわけなんですね。
でも最初違うウインドウを開いていたので、コントロールパレットが表示されませんでした。
このへんがちょっと混乱させられました。

まだVC++使い始めで付属の入門の本見ながらやってたんですが、
これで再開できます。
0352pppNGNG
レスがつきませんね、聞き方が悪かったのでしょうか?
お分かりになる方、どうかご教授願います。
0353デフォルトの名無しさんNGNG
>>352 引数に配列の大きさなんか書いてよかったんか?
0354デフォルトの名無しさんNGNG
>>353
それは問題ないと思う。
0355デフォルトの名無しさんNGNG
>>352
ボタンに割り当てた部分のコードとか、どのローカル変数の定義が
どうおかしいと言われたのかを書いた方がいいかと。
0356pppNGNG
BitmapToRgbのローカル変数の定義がおかしいといわれました。
コードは下記のようになっています。ONCL2がボタンのBnClickedの変数です。
void CVcpictView::OnCl2()
{
// TODO: この位置にコントロール通知ハンドラ用のコードを追加してください
*--- BitmapToRgb --- 画像変換(Bitmap画像からRGB画像へ)----------------------
hBitmap: 入力Bitmap画像
pr: 出力R画像
pg: 出力G画像
pb: 出力B画像
-----------------------------------------------------------------------------*/
void BitmapToRgb(HBITMAP hBitmap, unsigned char pr[120][160],
unsigned char pg[120][160], unsigned char pb[120][160])
{
0357Kusakabe YouichiNGNG
どうやら、あなたはCの初歩からやり直す必要があるようですね :)
本物の書いた本でも読んでみてはいかがでしょう?
0358Kusakabe YouichiNGNG
In article >>357, Kusakabe Youichi/sage/357 wrote:

> どうやら、あなたはCの初歩からやり直す必要があるようですね :)
> 本物の書いた本でも読んでみてはいかがでしょう?

本物とは?
0359pppNGNG
レスを下さった方、どうもありがとうございます。
根本的に間違っているのでしょうか?
できたら、その個所の指摘をいただけたらうれしいのですが、
0360デフォルトの名無しさんNGNG
わたしはからかわれていることに気がつきました。
0361デフォルトの名無しさんNGNG
関数の定義、宣言と呼び出しを、きちんと理解しろやゴルァ
0362bou NGNG
OnDraw内なんですけど画像表示の際LoadBitmapはかならずしていないといけないのでしょうか?
LoadBitmapというのは、メモリに特定の画像を転送するようなものだと認識していますが、これをしないと、”キャンパス”自体が作られないように見えます。
このキャンパスに対して別のところから描画してみてもまったく表示されません。なので、LoadBitmapで100*100ほどの白紙を読ませて実験してみたところ、
別のところから描画したものは100*100だけ描画されました。

LoadBitmapというのはキャンパス(受け皿)のようなものも作るのですか?
だとしたら、一旦MDC(CDC)に描画してからpDC.BitBltするような場合は一度希望の大きさの白紙を読ませないといけないのでしょうか????
0363デフォルトの名無しさんNGNG
VC++ SP4 で、以下のコードをコンパイルすると、「error C2668: 'foo' :
オーバーロード関数の呼び出しを解決することができません」とかぬかしやがる
んですが、これってフツーですか。

namespace FOO {
void foo( int ch );
void foo( const char *s );
}

using namespace FOO;
using FOO::foo;

int main()
{
foo( "abc" );

return 0;
}
0364デフォルトの名無しさんNGNG
>>363 のソースがフツーじゃないざんす。

using namespace FOO;
using FOO::foo;

この2行のどちらかをコメントアウトしてみよ〜
0365デフォルトの名無しさんNGNG
>>364
あと文法上は問題ないが、ポインタと int を引数に取る関数の多重定義はやめたほうが
身のためと思われ。
0366363NGNG
>>364
うーむ、やはり両方の using 宣言を混在させることはできませんか。
これは、C++ の規格上ダメなんでしょうか。それとも VC++ 独自の
問題?

>>365
らじゃ。引数として 0 を与えたときの曖昧性のことですね。
0367デフォルトの名無しさんNGNG
質問というか素朴な疑問なのですが、
関数パラメータのデフォルト値に変数が使えない理由を知りたいです。

例えばブール変数をメンバに持ったクラスでトグル用のメンバ関数を定義するとき、
気持ち的には以下のようにしたいのです。

class my_bool {
public:
 bool elem;
 bool toggle(const bool& b!=elem) { // (*1)
  // 引数が指定されればelemを引数の値にセット
  // 引数が指定されなければelemを反転した値にセット
  elem = b;
  return elem;
 }
};

もちろんこれは(*1)のところでエラーがでます。
これが可能ならば上のような操作を簡潔に書けてハッピーなのですが、
デフォルト値に変数が使われると何かまずいことがあるのでしょうか?
0368367NGNG
誤植です。正しくは(どうせ間違ってますが)
bool toggle(const bool& b=!elem) { // (*1)
でした。!=が=!
0369中学2年生NGNG
>>367
最近C++を勉強し始めたばかりなので間違っていたらすみません。
引数が省略されたときの値がコンパイル時に決まっていないとコンパイラが困るからじゃないですか?。

>  // 引数が指定されればelemを引数の値にセット
>  // 引数が指定されなければelemを反転した値にセット

混乱しそうな仕様ですね。
0370七誌NGNG
>>367
マルチポストすんなよ。馬鹿。
0371367NGNG
あれ?

369辺りに
『VisualC++の質問じゃなかったですね。すみません。C++相談室に炒ってきます。』
とポストしたはずだったんですが・・・。
0372367NGNG
>>369
ブール値をスイッチするtoggle()という関数のデフォルトの動作として
値を切り替える。もし値が明示的に指定されたならばその値に切り替える、
というのは感覚的には自然な気がするのですが・・・。

> 引数が省略されたときの値がコンパイル時に決まっていないと
> コンパイラが困るからじゃないですか?。

そういうもんなんでしょうか。
とりあえず今のところそういうもんだということで納得しておきます。
失礼こきましたです。
0373デフォルトの名無しさんNGNG
>372

頭悪すぎ。専用にSet関数作れ。
あとパラメータ渡したときとそうでないときの動作を変えたかったら
別々のtoggle関数作れ。
0374デフォルトの名無しさんNGNG
>>372
感覚的に不自然
0375デフォルトの名無しさんNGNG
>>372
1つの関数に複数の機能もたせるのヤメレ
0376いっぱいいっぱいNGNG
私は、VC1.0を使っています。
コンパイルしようとすると、
自動データセグメント+ヒープの大きさが64キロを越えています。
とのエラーが出ます。
どこがまずいのでしょうか?
困っています。どうかご教授ください。
0377デフォルトの名無しさんNGNG
>>376
メモリモデル設定するオプションがあるはずだから、
さがして、ラージモデルとか、でかそうな名前のメモリ
モデルに変更してください。
0378デフォルトの名無しさんNGNG
>>367
変数うんぬんの前に!=で代入はやめれ。
0379デフォルトの名無しさんNGNG
>>378
というか、代入になってないし
コレが仮に動いたとして…
どうやって「引数が指定されているかどうか」を判断できるんだ?って問題だし
いやいや、まてまて…それ以前にconstに代入するつもりか?

まあ、>>371 を見る限り、C++相談所に行ったよーなので この話は終りかな。
#C++ソウダンジョ…コイツノメンドウハタノンダゾ。
0380いっぱいいっぱいNGNG
メモリモデルはどのようにして変更すればいいのでしょうか?
ご教授お願いします。
0381デフォルトの名無しさんNGNG
>>380
1.0なんて、手元にないからわからないよ。
メニューにオプションって項目ない?
0382いっぱいいっぱいNGNG
>>381
一応オプションという項目はあるのですが、その中にそれらしい
ものがないので。プロジェクト、デバッグ、ディレクトリ、エディタ、
ワークスペース、ツール、カラーという項目が入っています。
このうちのどれかにあるんでしょうか?
よろしくお願いします。
0383デフォルトの名無しさんNGNG
>>382
ヘルプで、メモリモデルって検索できない?
1.0使ってたのは、何年も前だから、まったく覚えてないよ。
0384いっぱいいっぱいNGNG
HELPで検索してみたんですが、<メモリ>ですらヒットしないんです。
どうにがんばってみます。ご教授ありがとうございました。
0385デフォルトの名無しさんNGNG
3年ほどCをやっていて最近C++をやり始めたんですが例外処理ってなんですか?
普通に関数の返り値でエラーかどうか判別すればいいんじゃないですか?
例外をスローするメリットが分かりません。
それどころか例外を捕まえて例外を破棄(?)しないとメモリがリークするらしいのでウザイと思います。
それ以外(特にMFC)は便利だと思います。
例外をスローする関数なんて自分は絶対作りません。
以上です!
0386デフォルトの名無しさんNGNG
>>384
そのころは統合環境つかってなかったから
わからないけどコンパイラのオプション指定の
辺りにないかな?後、リンカもべっこで指定
するんじゃないかな?
以上手元に無いので6.0から推測しました。

コマンドラインなら
cl -ms a.c
とか
cl -ml a.c
って指定するんだけどなぁ。
0387Kusakabe YouichiNGNG
In article >>385, デフォルトの名無しさん/sage/385 wrote:
> 普通に関数の返り値でエラーかどうか判別すればいいんじゃないですか?

「かえりち」と読むのですか?
0388デフォルトの名無しさんNGNG
>>384
メニュー「オプション」−「プロジェクト」でダイアログが出て
「コンパイラ」ボタンで、左側の「カテゴリ」にメモリモデルがある。
0389デフォルトの名無しさんNGNG
>>385
ファイル操作なんかで使わない?
0390デフォルトの名無しさんNGNG
>>385のコーディング

try {
 hoge1();
}
catch(...) {
 エラー処理
}
try {
 hoge2();
}
catch(...) {
 エラー処理
}
try {
 hoge3();
}
catch(...) {
 エラー処理
}
0391役職名無しさんNGNG
>>390
 ワラタ
0392デフォルトの名無しさんNGNG
Windows2000でIOポートを制御するにはどうしたらいいのでしょうか?
0393いっぱいいっぱいNGNG
>>386さん
どうもありがとうございます。
いろいろ試してみます。

>>388さん
アドバイスありがとうございます。
ですが、私はVer1.0を使用しています。
教えてくださった通りにやってみましたが、
ダイアログの中に、「コンパイラ」が見当たりません。
0394デフォルトの名無しさんNGNG
すみません。質問です。
VisualC++のSocketAPIではIPv6ってサポートしてるのでしょうか?
0395デフォルトの名無しさんNGNG
>>392
DDKでドライバを書く
0396デフォルトの名無しさんNGNG
>>394
http://msdn.microsoft.com/downloads/sdks/platform/tpipv6.asp
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winsock/portguid_2pde.asp
0397質問NGNG
Win32 static libraryでプロジェクトを作った場合、MFCのクラスを使えるくせにクラスウィザードが使えないのにはどういう意味があるの?
0398394NGNG
ギャー!英語だーー!!
・・・。
>>396
ありがとうございます。
・・がんばって読みます。
0399デフォルトの名無しさんNGNG
APIが対応していないOSでAPIを使うプログラムを作った場合どうなりますか?
例えば GetLongPathName は Win95 に対応していませんが
Win95 で GetLongPathName を使った場合どうなりますか?

1.起動しない
2.APIのところでアプリが落ちる。
3.APIが失敗するだけ
4.その他

いずれにしろ正常に動かないわけですから Win95 では使えないとユーザーに警告する必要はあると思うのですが・・・
ユーザーのOSが分からない場合(オンラインソフトの場合)一般的にどのOSを対象にプログラムを作るべきですか?
Win95 に対応していないAPIは結構あるように見えますが Win95 ユーザーは切り捨てていいですか?
Win95 を使ってるユーザーなんて未だにいるもんですか?
0400デフォルトの名無しさんNGNG
>>399
>ユーザーのOSが分からない場合(オンラインソフトの場合)一般的にどのOSを対象にプログラムを作るべきですか?

OSバージョンチェックの方法は、検索したら出てくると思うよ。
0401デフォルトの名無しさんNGNG
>>399

うちのWebサーバーのログを見てると、95の人はほとんどいないみたい。
企業内で使われてるPCは95が割と残ってるという話もあるけど、
ネットからソフトを落とそうなんて人は、95は使ってないんじゃないの?
0402I'm Win95.NGNG
>399
試してみた。
 「欠落エクスポート KERNEL32.DLLGetLongPathNameA にリンクされています」
 「システムに装着してあるデバイスは、動作していません」
うーん、合掌。
俺は、LFNに変換する時は、APIの FindFirstFileを使っている。

APIの OSごとの挙動を報告するスレみたいなの、誰か作らん?
0403デフォルトの名無しさんNGNG
MSDN見ればええやん
0404デフォルトの名無しさんNGNG
>403
いや、それが分からないもんだよ。
最近出くわした所では、例えば VirtualUnLockは、

 Windows 95/98/Me: Included in Windows 98 and later.

となっているが、
95でも「欠落エクスポート〜」のエラーにならず、起動できてしまう。
何で Windows 98 and later なんて書くんだ yo!
そもそも、9x系はこの APIは何もしないんだから、何で Unsupported に
しないんだ yo! VirtualLockは Unsupported と書いてあるのに。

まぁ、このあたりの挙動は、システム DLLのバージョンによるところが大きいのかもね。
0405デフォルトの名無しさんNGNG
しょうもない質問で申し訳ないんですが、教えていただけませんか
Win2000+ADSLの環境でIPアドレスを取得したいのですが、
LAN内のIPアドレスが返ってきてしまい、WAN側?(インターネット側)の
IPアドレスを取得することが出来ません
ご存じの方取得方法をご教授ください よろしくお願いします
0406デフォルトの名無しさんNGNG
ADSLのルータがNATかましているなら外側のIPを自力では
取得できんはず。NATやめるか、外側にリフレクタを置い
てIPを知らせてもらえば?
0407405NGNG
>>406
げふ... そうなんですか
その辺調べてみます ありがとう
0408デフォルトの名無しさんNGNG
ルータによってはAPI公開してて、それ使ってIP取得できる場合もある。
汎用性もクソもないけど。
0409405NGNG
>>408
そうなんですか 流石に汎用性が無いのは困りますね
Win2000標準のipconfig.exeを使えばちゃんと表示されるんですけど
どうやってIP引っ張ってきてるんでしょうね...
0410デフォルトの名無しさんNGNG
プロセスのセキュリティ関係について、分かりやすく解説したサイト
とか、無いですかね?

セキュリティ記述子だの、ACLだの、トークンがどうのだの...
訳が分からない。
0411しいたけNGNG
win32aplicationでエディットボックスを使ってキーボードから入力された文字を
画面に文字を表示させたいのですがエディットボックスを作るプログラムがわかり
ません。msdnコレクションを見たりもしてるんですが、何が何だかさっぱりわかり
ません(T_T)わかる人がいたら教えてくださ〜い。
0412デフォルトの名無しさんNGNG
VC6付属のfstreamの挙動でわからないところがあるので、教えてください。
まず、ソースは以下です(test.cpp, test.exe とします)。

#include <iostream>
#include <fstream>
using namespace std;

int main(int c, char **v) {
 istream *in = new ifstream(v[1]);

 int ch;
 int count = 0;
 for(ch = in->get(); !in->eof(); ch = in->get()) {
  count++;
  if (count == 50) {
   cerr << in->tellg() << endl;
   count = 0;
  }
 cout << (char)ch;
 }
 return 0;
}

また、以下の内容のファイルを作って
*** 改行コードを LF にして ***
保存しておきます(in.txtとします)。
aaaaaaaaaa
bbbbbbbbbb
cccccccccc
dddddddddd
eeeeeeeeee
ffffffffff
hhhhhhhhhh
iiiiiiiiii
jjjjjjjjjj
kkkkkkkkkk
0413412続きNGNG

で、
$ test.exe in.txt 1>sout.txt 2>serr.txt
とすると、sout.txtは、
aaaaaaaaaa
bbbbbbbbbb
cccccccccc
dddddddddd
eeeeeeeeeeeeeeee
ffffffffff
gggggggggg
hhhhhhhhhh
iiiiiiiiiiii
jjjjjjjjjj
となっていました。
予定では in.txt と sout.txt の内容は同じになるはずだったのです。

in->tellg()の行をコメントアウトすれば、期待通りの動作をします。また、
in.txtの改行コードを CRLF にしても期待通りの動作です。
デバッガでみたところ、tellg()によってなぜかファイルポインタが少し前のところに
戻っているようです。

また、VC付属のものの代わりにSTLPortを使ったところ、tellg()の有無に
関わらず期待通りの動作をします。

これは使い方が悪いのでしょうか?それともVC付属のライブラリのバグ
ですか?
0414デフォルトの名無しさんNGNG
ダイアログバーにリストボックスを埋め込もうとしているのですが、リストボックスのメンバ変数の取り方がわかりません。
ダイアログバーではDoDataExchangeは呼ばれないんですよね?
どうすればいいのでしょうか?
0415デフォルトの名無しさんNGNG
厨房の質問です。
GUIなど使っていないプログラムで、ReleaseとDebugでコンパイルした
場合に挙動が違うんですが、同じプログラム書いていて挙動が違くなる
原因って一般的にはどんなことがあるんでしょうか。。。
宜しくお願いします。
0416デフォルトの名無しさんNGNG
>>415
GUI なアプリでも同じこと。

たとえばメモリを初期化せずに使っているとか、
解放したあと、まだそのメモリを参照してしまっている…とか、
まぁ、いろいろあるよな。
0417415NGNG
>>416
デバッグ版だと初期化すべきところでしてなくても、
勝手に初期化してくれる(配列を零で初期化してくれるとか)ということが
あるということですか?
0418デフォルトの名無しさんNGNG
>>415
初期化してない変数を使った。
ReleaseとDebugでごみの値は違うことが多い。
0419デフォルトの名無しさんNGNG
>>417
初期化しない変数は、何が入ってるかわからない。
DebugとReleaseで入っている値が違うということ。
0420415NGNG
>>418 >>419
なるほど。デバッグ版で動いているのはたまたまってことですね。
白み潰しに見てみます。ありがとございましたー。
0421デフォルトの名無しさんNGNG
ワラタ
どうでもいいがモノスゴイ被り様だな。
0422デフォルトの名無しさんNGNG
#ifdef _DEBUG
for(i=0 ; i<num ; i++)
{
 if(item[i] == 0)
 {
  MessageBox(hwnd , "バグってるぞ!" , "オラオラオラ!!" , MB_OK);
 }
}
#endif

といった具合にプリプロセッサでデバッグモードのときだけエラーを表示させているんですが
#ifdef _DEBUG の部分を "_" を書き忘れて #ifdef DEBUG とかやっててリリースモードで実行中に
メッセージボックスがでてビビリまくりな時があります。
#ifdef _DEBUG の記述を間違えてもコンパイラはエラーを出さないため
逆に恥ずかしいバグを発生してしまうことがあります。
#ifdef _DEBUG を間違わずに書く方法ってないですか?
デバッグモードの時だけコードが有効になって記述ミスした場合コンパイルでエラーか警告が出るようなやり方希望です。
0423デフォルトの名無しさんNGNG
>>422 VC++なら、TRACEマクロ使えば良いでそ
0424 NGNG
人の作ったプログラムを改造しているのですが
スタティックテキストのくぼみが、スクリーンセーバー解除後に
消えてしまいます。他のWINDOWで一度遮ってやると復活します。
FillSolidRect等を使って背景を描画しているみたいなのですが、
何が考えられるでしょうか。
0425デフォルトの名無しさんNGNG
>422

usertype.datに_DEBUGなどのキーワードをを登録しておくという方法はなかなか有効だったりする。

ただしやりすぎるとdatが1万行を軽く越えるけど。
0426デフォルトの名無しさんNGNG
>>422
const bool DEBUG = TRUE;
//...
if(DEBUG)
{
 HOGE();
}
みたいなのをプログラミング作法では推奨してたな。
0427デフォルトの名無しさんNGNG
これってreleaseでfalse時には、きれいさっぱり無くなってくれるの?
0428デフォルトの名無しさんNGNG
>>427
VC++6では、最適化で削ってくれる。
他のコンパイラでも、このくらいやってくれると思う。
0429デフォルトの名無しさんNGNG
#ifdef _DEBUG
じゃなくって
#if _DEBUG
にでもすれば?
0430デフォルトの名無しさんNGNG
当方初心者です。
EDITViewを基本クラスにして、メニューバーから
選択してFromViewを開く方法がわかりません。

プロジェクト追加しないといけないのですか?
0431デフォルトの名無しさんNGNG
>>430
??FromViewってなんだ?何かの派生クラスか?
0432デフォルトの名無しさんNGNG
>431
CFormViewでしょう。
0433431NGNG
>>430
ダイアログボックスじゃ駄目なのか?
0434430NGNG
あ、ごめんなさい。CFormViewですね。
まだ先頭にCをつける癖すらついていません。

あれからいろいろやってみて、ダイアログボックス
なら開いた。という状態に持ってこれたのですが、
ダイアログボックスのID_EDITに入力された内容を
ボタンを押して、親ウィンドウに反映されるには
どのようにしたらよろしいのですか?

一部表現が変ですけど、ご容赦ください。
0435万年カレンダーNGNG
年と月を入力するとカレンダーが出てくる予定です
y:年、m:月、d:出力する日付、n:マスの番号、l:最後の日
#include<stdio.h>
void main()
{
int y,m,d=1,w,n=1,l;
printf("年=");
scanf("%d",&y);
printf("月=");
scanf("%d",&m);
printf("[ %d年%d月 ]\n",y,m);
printf(" 日 月 火 水 木 金 土\n");
printf("---------------------\n");
if(m==1 || m==2){
y--;
m=m+12;
}
w=(y+y/4-y/100+y/400+(13*m+8)/5+d)%7;
if(m==1 || m==3 || m==5 || m==7 || m==8 || m==10 || m==12){
l=31;
}
else if(m==4 || m==6 || m==9 || m==11){
l=30;
}
else{
if(y%4==0 && y%100!=0){
l=29;
}
else if(y%400==0){
l=29;
}
else{
l=28;
}
}
for(w;w>0;w--){
printf(" ");
n++;
}
for(d;d<l+1;d++){
printf("%3d",d);
if(n%7==0){
printf("\n");
}
n++;
}
printf("\n");
}

閏年の判定がおかしい
else-ifもうまくいかない
0436デフォルトの名無しさんNGNG
いや〜_allocaって便利ですね。
スタックからメモリを確保するのでメモリが断片化することなく嬉ピーです。
関数内で可変長のメモリが必要なときに重宝しております。
0437デフォルトの名無しさんNGNG
>>434
ID_EDITってのはエディットボックスのIDか?
そうなら、そのIDとCEditあたりを対応させて、入力された内容を拾えばよろしい。
0438デフォルトの名無しさんNGNG
if (y % 4) {
 l = 28;
} else if ((y % 100) != 0 || (y % 400) == 0) {
 l = 29;
} else {
 l = 28
}
0439Kusakabe YouichiNGNG
In article >>438, デフォルトの名無しさん/438 wrote:

> if (y % 4) {
>  l = 28;
> } else if ((y % 100) != 0 || (y % 400) == 0) {
>  l = 29;
> } else {
>  l = 28
> }

28と29の2種類しかないのだから、2つに場合わけするか
もしくは4つにわけるかのほうが素直な書き方ですよね。
0440万年カレンダーNGNG
判定部分のyをy+1に書き換えたらちゃんと動いたYO!

>>438
ifの条件式って0と1以外でもいいの?
0441デフォルトの名無しさんNGNG
>>440
0と比較できればなんでもおげ
0442万年カレンダーNGNG
if(m==1 || m==2){
y--;    ←これが原因だったみたい
m=m+12;
}
何度も修正してると
どんどんリソースが減っていくのはなぜ?

>>441
なる
0443デフォルトの名無しさんNGNG
m==1じゃなくてm==13ね
0444デフォルトの名無しさんNGNG
こういうことにならないように、その月の1日の曜日を求める関数とかを作るわけだ。
0445デフォルトの名無しさんNGNG
こんいちは。
Cで書かれたプログラムをC++のプログラムから呼ぼうとしていますが
できません。Cのソースは10年前くらいのもので、VCを使って
コンパイルしてオブジェクトファイルを作りました。それを呼ぶ
メインがあるファイルを*.cにするとエラーなしで、*.cppにすると
LNK2001の未解決なんたらが出てリンクができません。拡張子が
違うだけで中身はまったく一緒です。どうしたら
いいでしょう?
0446デフォルトの名無しさんNGNG
>>445
C++のリンケージについて勉強する。
0447デフォルトの名無しさんNGNG
extern "C"
だっけ?
0448デフォルトの名無しさんNGNG
それ書きました。Cのヘッダファイルに。>>447
でもだめでした。。C++のメインの方では
何かすることありますか?
0449デフォルトの名無しさんNGNG
ん〜でも今テストしててCで書かれた関数はコメントアウトして
あるんですが・・ヘッダに定義されてる変数を使おうとしただけで
だめなんです。おかしくないですか?
0450デフォルトの名無しさんNGNG
あっできた
0451デフォルトの名無しさんNGNG
をろ?
なにが悪かった?
0452412NGNG
>>412の件ですが、ソースをみたところ、テキストモードで開くことを
想定しているのはCRLFなファイルだけみたいでした。ftell()が場所を
計算するときに、LFがあると、それは問答無用でCRLFからLFに変換
されたものだとみなされて、2バイト分として扱われていました。

STLPortと挙動が違うのは、VCのほうではpubseekoff()がtellg()のなかで
つかわれていたためでした。

では逝ってきます。
0453デフォルトの名無しさんNGNG
C++のメインの方でCのヘッダをインクルードしているところを
extern "C"{}で囲ってみました。
最初はCのヘッダファイルのほうで定義を同じもので囲ってました。
0454 NGNG
       HANDLE hWave=NULL;
hWave=LoadResource(AfxGetResourceHandle(),
FindResource(AfxGetResourceHandle(),
MAKEINTRESOURCE(name),"WAVE"));
LPSTR lpData=(LPSTR) LockResource(hWave);
sndPlaySound(lpData,SND_MEMORY|SND_ASYNC);
UnlockResource(hWave);
FreeResource(hWave);

SND_ASYNC;
SND_LOOP;

のようにしてWAVEファイルを今まで再生していました。これは、リソースに読み込んで(WAVEファイルを)使っていたんですが、
外部のWAVEファイルを、ファイル名を指定する形で用いることはできるのですか?
0455デフォルトの名無しさんNGNG
>>454
PlaySound()
0456デフォルトの名無しさんNGNG
XPに対応してますか?VisualC++6.0
0457( _ 。。) _ バタ。 ◆lUd9keO2 NGNG
>>456
なんとか。 というか、 NT5.2 (だっけ) だから 2000 ベースで考えていいかと。
0458デフォルトの名無しさんNGNG
>>457
ありがとう。ちなみに7.0はいつ?
0459デフォルトの名無しさんNGNG
>>457
Windows 2000 == Windows NT 5.0
Windows xp == Windows NT 5.1
98 と 98SE 程度の違いだ。

>>458
英語版はもうそろそろらしい。
日本語版は一月か二月遅れるだろ。

でも、7.0 から C# がメインになりそうな感じだし、
VC++7.0 ってあんまり意味ないかも。
0460デフォルトの名無しさんNGNG
VC++/C# Ver7.0 そのつぎは、やっぱ C# Ver1.0 ?
0461( _ 。。) _ バタ。 ◆lUd9keO2 NGNG
>>459
あ。 5.1だったか、 フォローサンクス。

>>459
この手の開発系アプリケーションって…
ちゃんとしたヴァージョンアップが5〜6あたりまで続いた後は…

1:無駄な贅肉がついていく(80%)
2:ほとんど変化が無い(30%)
3:まだまだ頑張っている(10%)

のうちのどれかになるよな……。 こぽこぽ。
0462デフォルトの名無しさんNGNG
人はそれを安定期と呼ぶ。
正直言ってVC++は5.0で実用上全く問題ないレベルなんで、そんなに頑張って
更新しなくてもいいかと。いまだに5.0の人多いし。
0463デフォルトの名無しさんNGNG
IDEの強化とコンパイラのtemplate対応強化を希望したいところなんだけど。
0464デフォルトの名無しさんNGNG
ISO標準C++を完全に満たしてから安定期に入ってくれぃ
0465デフォルトの名無しさんNGNG
>>462
> 正直言ってVC++は5.0で実用上全く問題ないレベル
ARM の頃のテクニックしか使わないと問題ないんだが template 使うと辛いこと多いんだよな。個人的
に困ってることを列挙。

1 partial specialization が使い物にならない。
 template <typename T, bool Threaded> Allocator {};
 template <typename T, true> Allocator {};
 template <typename T, false> Allocator {};
 とか書きたいことが、しばしば。

 あと引数の数を可変にした template メソッドを書く方法もあるんだが、これも parial specialization
 が使えないと実装できん。

2 foo<int>(), foo<float>() を呼び分けられない。

3 template<int N> struct X { int n[N]; }; が「要素数 0 の配列を定義している」と怒られて、コンパイル
 が通らないケースがある(もちろん N に 1 以上の数を渡してる)。どうもテンプレート化するタイミング
 に依存するみたいで、通ることもある。とりあえず n[N + 1] にしておけば回避できる。

4 void 型の関数で return (void型関数) とやると、コンパイルエラーになる。このため std::mem_fun_t()
 が void 型のメソッドでは使いものにならない。
0466 NGNG
virtual long __stdcall IOleWindow::GetWindow(struct HWND__ * *)" (?GetWindow@IOleWindow@@UAGJPAPAUHWND__@@@Z)" は未解決です
Debug/VCapture.dll : fatal error LNK1120: 外部参照 1 が未解決です。

ってどのライブラリにリンクすりゃいいかなんてどこで調べるんだい?
0467デフォルトの名無しさんNGNG
msdn
0468デフォルトの名無しさんNGNG
なんで、IOleWindowの参照を、COMではなくてリンカが解決しようとするんだろう‥‥?
0469デフォルトの名無しさんNGNG
#undef _PURE
とか
0470デフォルトの名無しさんNGNG
ダイアログベースで作成して、これにリソースエディタでメニューをつけました。
これを実行してみたらメニューのところだけへこんでるのですが
他のところと高さを合わせるようにできませんか?
0471デフォルトの名無しさんNGNG
えくすきゅうすみぃ、ソースで読み込みたいライブラリ指定する方法が思い出せず、探しても見つかりません。たすけてくだされ
0472デフォルトの名無しさんNGNG
#pragma comment(lib,"hoge.lib")
0473471NGNG
ありがとうございますだ。
0474デフォルトの名無しさんNGNG
gogoをコンパイルしようとすると、
c:\windows\system32\cmd.exe の実行エラー
って怒られるんですけど、何でシステムファイルの実行エラー?
OSはWin XP使ってます。
0475あNGNG
ある構造体の中の様々な変数などに、外部のファイルから読み込んで初期値を与える、というようなことをしたいのですが、
どのようにするのが最も簡単でしょうか?
0476 NGNG
SetTimer(NULL,MYID,wait,My_TIMER_PROC);
でさ、コールバック関数(static)内でthisポインタ使いたいんだけど、
パラメータでthis渡せないよね。
どうしたらいいっすかね?
0477デフォルトの名無しさんNGNG
>>475
fread(buf,sizeof(構造体),1,fp);
>>476
staticメソッドにthisはねえよ。パラメータで渡しとけ。
0478デフォルトの名無しさんNGNG
>>477
だから、TimerProcにパラメータ渡す方法がねぇってんだろが。
ウィンドウに属さないタイマーの場合、Timerprocが属してるclassを
singleton化してstaticメンバにthis保存するぐらいしか思いつかん。
0479デフォルトの名無しさんNGNG
つーかコールバックするならマルチメディアタイマ使えば?
0480デフォルトの名無しさんNGNG
>>478
nIDEvent(SetTimerの2番目の引数)で渡せるっぽい。
SetTimer(NULL,(UINT)this,1000,(TIMERPROC)TimerProc);
とかみたく。
0481デフォルトの名無しさんNGNG
MFCを使って、中が透明な円を書きたいのですが。
どうしても塗りつぶされてしまいます。どうしたらいでしょうか?
0482デフォルトの名無しさんNGNG
>>481
SetBkMode(TRANSPARENT)とかでできんか?
知らんが。
0483デフォルトの名無しさんNGNG
黒く塗れ!!
0484デフォルトの名無しさんNGNG
>481
SelectObject(GetStockObject(HOLLOW_BRUSH))
0485デフォルトの名無しさんNGNG
>>481
MFCなら CDC::SelectStockObject(NULL_BRUSH) を呼んでから円を描け
0486デフォルトの名無しさんNGNG
>>482 >>484 >>485
ありがとうございました。
0487教えて君NGNG
CViewベースで作成して、メニュー欄からダイアログを
開いて、そのダイアログのエディット欄に入力された情報を
OKボタンが押されたときに、View側に反映させたいのですけど、
CXXXDoc.cppに
CXXXDlg dlg;
if(dlg.Create()==IDOK){
m_CurLett=dlg.m_text;
}
と入力した後、
CXXXDoc.hに
// アトリビュート
public:
CString m_CurLett;
と入力してm_CurLettに値を入れるところまで行ったんですけど、
この値をView側に表示させる方法が分かりません。
お願いします。この後どうすれば良いのか教えてください。
0488デフォルトの名無しさんNGNG
InvalidateRectして、WM_PAINTのハンドラでTextOutしてください。
0489デフォルトの名無しさんNGNG
質問です。
アクティブなIEが見ているURLを得る方法って有りますか?
0490デフォルトの名無しさんNGNG
>>489
やったことないけど Browser Helper Objects 書けば出来そう。MSDN Library に解説があります。
0491デフォルトの名無しさんNGNG
Google Toolbarみたいな独自のツールバーを作るにはどうしたらええんかのう
0492デフォルトの名無しさんNGNG
>>491
最近 ATL ML で紹介されてた。
http://www.cheztabor.com/toolband/
0493デフォルトの名無しさんNGNG
MFCとSDK、どちらでプログラム書いている人が多いですか?

最初は入門って事でMFC使ってましたが、ゲームのプログラムとかを
作っていると、MFCでは重くて使い物にならないことが分かってきました。
配布するときも、ライブラリ依存になってしまうし......
最近では、SDKばっかりです。皆さんはどうでしょうか?
0494デフォルトの名無しさんNGNG
>>493
SDKってWin32APIのことでいいのか?
VCは趣味でゲーム作るくらいだから俺はAPIオンリー。
MFCもそのうちやろうかと思ってはいるが、あまりいい話聞かないし、
普通のアプリ作る予定もないから今のところ永久に保留中。
0495デフォルトの名無しさんNGNG
>>493
>配布するときも、ライブラリ依存になってしまうし......

「ライブラリ」ってどれのことだろう。
0496デフォルトの名無しさんNGNG
入門ならSDKじゃないの?
俺と順番が逆だ。
0497デフォルトの名無しさんNGNG
WinInetを使用してFTPクライアントを作っています。
パーミッションの取得・変更ってどうやるんですか?
ソケットレベルで自分で書かないと無理ですか?
0498デフォルトの名無しさんNGNG
VB経験者なら、MFCの方が理解しやすいかも・・・
0499デフォルトの名無しさんNGNG
>>493
個人で書いてるプログラムには ATL/WTL 使ってます。

ATL/WTL はMFC よりも機能的に劣る部分もありますが「API の薄いラッパクラス」という感じで、
ゲームなどを作る場合には向いてると思います。テンプレートライブラリだから DLL の類も不要
ですし。

(唯一の問題は解説が少ないことか。規模が小さいライブラリだからソース読めば良いんだけど)
0500デフォルトの名無しさんNGNG
指定したディレクトリの全ファイル名を取得する方法を教えてください。
SearchPathを使ってやりましたがうまくいきません。
よろしくお願いします
0501デフォルトの名無しさんNGNG
本日VisualC++6.0を買った!けどなにからすればいいのかさっぱり
分からん!ということなので知ってる人教えてください。
てかVisualStudio6.0ってなんすか?初心者の俺にはC++のソフトに
なぜそのようなもののセットアップガイドがついているのか不思議
でならんかった。
0502デフォルトの名無しさんNGNG
>>501
何をしたいのかさっぱりわからん。
0503デフォルトの名無しさんNGNG
とりあえずインストールしたい!
0504デフォルトの名無しさんNGNG
>>503
そんなもんここで聞くなよ。
字を読みながらボタンをクリックしろ。
0505デフォルトの名無しさんNGNG
じゃあVisualStudio6.0がなんなのか教えてくらはい。
0506デフォルトの名無しさんNGNG
>>505
「じゃあ」ってなんだよ。
くそがき氏ね。
0507デフォルトの名無しさんNGNG
>>505
「分散企業システム対応 Windows & Web 高性能システム構築 統合型開発スイート」だそうです。
http://www.microsoft.com/japan/developer/vstudio/

…とマジレスしてみるテスト
0508デフォルトの名無しさんNGNG
>>507
マジレス感謝
0509デフォルトの名無しさんNGNG
自分の書いてるソフトで専用のウインドウズメッセージ(?)
(SendMessageとかで送れるやつ)を定義したいのですが、
その際気をつけなければならないことってあるでしょうか?
ダブらなければOKかなとも思ったんですがちょっと怖くて。
アドバイスお願いします〜〜m(_ _)m
0510デフォルトの名無しさんNGNG
>509
しらべたよ
0 through WM_USER – 1 Messages reserved for use by the system.
WM_USER through 0x7FFF Integer messages for use by private window classes.
WM_APP through 0xBFFF Messages available for use by applications.
0xC000 through 0xFFFF String messages for use by applications.
Greater than 0xFFFF Reserved by the system for future use.
0511デフォルトの名無しさん NGNG
アカデミックパックの買い方を教えて呉れ。
0512デフォルトの名無しさんNGNG
>>511
学生手帳とお金と製品を持ってレジへ逝く
0513509NGNG
>>510
おおぉ〜〜!助かります!!
φ(.. )メモシテオコウ
0514デフォルトの名無しさんNGNG
>>509
心配ならRegisterWindowMessageを使おう。
文字列を与えると、勝手に空いてる番号を返してくれるよ。
ただし、Cではcaseに変数使えないから、通常のswitch-caseを使ったメッセージ
処理が使えなくなるのが痛いが。
0515509NGNG
>>514
ありがとうございます、MSDNで見てみました〜。
ちょうどC++で記述してるんで使えるようですね。
ふと疑問に思ったのですが、こういう関数があるってことは
異なるアプリケーション間では、たとえ同じ値で定義しても
オリジナルのWindowメッセージを送ることはできないって
ことなのかな・・・・初心者なのでうまくイメージできないけど。
0516デフォルトの名無しさんNGNG
超超初心者です。
うざいかもしれませんけどお願いします。

visual C をしりたいと思い、教則本を本屋で見たところ、
「こうしたい時はここをこう書き換えて、、、」
とか、「『visual C』というソフト自体の使い方」など
「こうする時は有無を言わさずこうしましょう!」
みたいなことを中心に書かれていて、
いまいちC言語とのつながりがよくわかりません。

C言語も平行して勉強していこうかと思ってたんですが、
もしかして本に書かれている通りにやっていけばいいのだったら
C言語の知識はさほど必要ないのかなぁなんて思ったりしてしまいます。

実際、visual C を勉強する上でC言語は必須なのでしょうか?

厨房的な外れなこと聞いてるのかもしれません。すいません。
0517デフォルトの名無しさんNGNG
「こうしたい時はここをこう書き換えて、、、」 程度で作れる以上のものが
作りたくなったら、C言語の勉強したくなるよ、たぶん。
0518デフォルトの名無しさんNGNG
>>517
つまり入り口ぐらいはC言語の知識はさほど必要ではないけど
それ以上進む気があるのなら
C言語をしっかりやっといたほうがいいということでしょうか?

自分としては、それなりにvisual Cを学んでおきたいのですが、
それならC言語はみっちりやっといたほうが良いですか?
0519デフォルトの名無しさんNGNG
>>518
Visual C++を学ぶならC言語はただの通過点。
壁のレベルとしては路傍の石ころみたいなもん。
0520517NGNG
乱暴に言うと、なにも作りたいものが無いなら、勉強する必要ないでしょ、って事です。
0521デフォルトの名無しさんNGNG
>>519
出来てて当然の物ということですか。
数学する前に九九を覚えとくのが当たり前みたいな?

やっぱり初めからちゃんと勉強しないといけないんですね。
わかりました。怠けずにやろうとおもいます。
ありがとうございました。
0522デフォルトの名無しさんNGNG
>>520
今は特に作りたいという物はないんですが
プログラムに少し興味がわいているので、
知識として知っておきたいと思ったんです。

で、やるんだったらさわりぐらいは使えるようになりたいなぁと思いまして。
0523デフォルトの名無しさんNGNG
とにかくありがとうございました。
0524デフォルトの名無しさんNGNG
VCって7.0がでることはない?
.NETでいっちゃうの?
0525デフォルトの名無しさんNGNG
だれか516に言語とコンパイラについて説明してやれって。
VisualC++とC言語は別の言語だと思ってるのではないかと、小1時間問い詰めて
やれって。

>>515
>異なるアプリケーション間では、たとえ同じ値で定義しても
>オリジナルのWindowメッセージを送ることはできないって
>ことなのかな・・・・初心者なのでうまくイメージできないけど。

普通はそれでも構わないけど、それだと同じ値を他のソフトが使っている可能性
があるんで。あまり独自のメッセージを他のアプリケーションに送りつける人は
そういないと思うが、IntelliMouseなんかは最初はそうやってホイールの処理
をしてたよ。もし、勝手に使っている値がそういうのと重複しちゃうと、誤動作
するので注意。

俺はもちろん、そんなAPI使った事ない(笑
0526デフォルトの名無しさんNGNG
>>525
っつーか、visual Cなんてプロダクト聞いたことないし。
0527デフォルトの名無しさんNGNG
特定の条件の時に、チェックボックスを無効にしたいんですけど、
どのように指示してやればよいのか分かりません。

イメージとしては、テキストだと
「SendDlgItemMessage(hdwnd, ID_TEXT, EM_SETREADONLY, TRUE, 0 );」
と設定すると、グレーになって(当然ながら)入力不可になります。
チェックボックスを上記のようなイメージで使用不可にする方法を
教えてください。
0528デフォルトの名無しさんNGNG
API : EnableWindow(GetDlgItem(hWnd,IDC_CHECK1),FALSE);
MFC : GetDlgItem(IDC_CHECK1)->EnableWindow(FALSE);
で、いけると思うが。
0529デフォルトの名無しさんNGNG
>>527
EnableWindow(GetDlgItem(hdwnd, IDD_CHECKBOX), FALSE)
とか。
0530529NGNG
かぶった。スマソ
0531デフォルトの名無しさんNGNG
>>528、529

ありがとうございます。
できました。
0532476NGNG
>>479
ありがと、できたよ。
となると、SetTimerの存在意義って何だろ。
初心者用の関数ですか?

>>480
できなーーい。
マルチメディアタイマで解決したからいいけど、
ほんとにそれでもできるの?
0533デフォルトの名無しさんNGNG
学生証を偽造してのアカデミックパックの買い方を教えて呉れ。
0534デフォルトの名無しさんNGNG
>>533
偽造学生証とお金と製品を持ってレジへ逝く
0535デフォルトの名無しさんNGNG
で、そのままレジの前を通り過ぎる。
0536480NGNG
>>532
俺もちょっとはまったんだが、SetTimerの場合、
自分でメッセージループ回さないとコールバックは呼ばれないよ。
SetTimerはあくまでもメッセージを定期的に送ってくれるようにする
ためのAPIだから。
ウィンドウ無くてもGetMessageとかにNULL渡せば来る。
0537デフォルトの名無しさんNGNG
>>533
お前は学生の知り合いもおらんのか?
0538デフォルトの名無しさんNGNG
ヤフオクで買えば
0539Disca ◆NAfP6znE NGNG
暖炉でスマソ
ハンガリアン記法によれば、ポインタの場合、
p or lp
としているが、どちらが正しいのでしょうか?
LPCTSTR *lpszXXXName;
CWnd *pParentWnd
私が思うに、lpの場合は、文字列で、
p の場合は、その他のポインタって思ったのですが…。
M$のソースみても、あてまはらない事例とかあるし…
お願いします。
0540デフォルトの名無しさんNGNG
lp使ってるのは化石。
0541デフォルトの名無しさんNGNG
far と near を区別する必要のあった時代の区別やね
0542Disca ◆NAfP6znE NGNG
533>
たしか、アカデミックは幼稚園からでも買えるらしい。
私は、2Ch総合スクールに通っていると、モナー証
を見せれば、ネタがわかる店員だったら売ってくれると…
そこらへん、ずさん。

OEMソフトも、メモリだけ購入しても買えるらしい…。
某パソショップでバイトしていた頃に教えてもらった^^;
0543デフォルトの名無しさんNGNG
学生時代に買ったアカデミックパックって
学生じゃなくなっても使っていいの?
0544デフォルトの名無しさんNGNG
VC++で
1.画面の明るさ・コントラスト・ガンマ値等を変更する
2.他のソフトウェアによる明るさ・コントラスト・ガンマ値等の変更を許可しない
プログラムを作ってみようと思っていますが、どの辺から手をつければいいのでしょうか?
DirectDraw、Direct3D、ビデオオーバーレイあたりを勉強すればよいのでしょうか?

本屋で何冊か読んできたのですが、ガンマ値等の記述が無かったので質問します。
適当な参考書に心当たりがありましたら、ぜひ教えて下さい。

ちなみに、VC++のレベルはウィンドウを一つ二つ作れるぐらいです。
それから、マルチスレッドを用いてポップアップをたくさん出せます。
0545デフォルトの名無しさんNGNG
まず、デバイスドライバっつーものを知ってください。
0546デフォルトの名無しさんNGNG
::CreateFile(.., OPEN_EXISTING, ..) で既存のファイルを開いたとき、
ファイルポインタは常にファイルの先頭、ですよね?
そうでないことってあるんですか?
0547デフォルトの名無しさんNGNG
>546
レギュラファイルだったらそーだと思う。
多分。
0548デフォルトの名無しさんNGNG
VC++でDNSのMXレコード取得する方法教えて。
0549デフォルトの名無しさんNGNG
>>548
Windows 2000 以降でよければ DnsQuery()
0550デフォルトの名無しさんNGNG
数値解析でプログラムを高速化したいのですが
VCでMMXまたはSSIを利用するにはどうすればよいのでしょうか?
0551デフォルトの名無しさんNGNG
void fooMMX()
{
 __asm {
  emms;
  pxor mm0.mm0;
  emms;
 }
}
とか?
0552 NGNG
VS6のSP5(FULL)を当てているはずなんですが、VC起動時に何も
でません。これで正常なんでしょうか。
VBの場合は起動時にsp5と表示されます。
0553_NGNG
STL使うと識別子が切り捨てられたとか言うwarning C4786がたくさんでて困ってます。
これを表示させないで無視するコンパイラ指令みたいのがあったような気がしたのですが分かりません。
教えてください。
0554デフォルトの名無しさんNGNG
#pragma warning(disable:4786) //識別子が '255' 文字に切り捨てられました、を無視する

ただいSTLについてはココも参照
http://support.microsoft.com/default.aspx?scid=kb;EN-US;q167355
0555554NGNG
>>554 は、>>553 へのレスです。あと s/ただい/ただし/
0556デフォルトの名無しさんNGNG
>>552
正常
0557デフォルトの名無しさんNGNG
>>554
その URL、IE6 で見ると何も表示されないんだけど、何が書いてあるの?

もしかして「特定の条件で #pragma warning(disable : 4786) しても C4786 が報告されてしまう」バグに
対する hot fix が出てるのかな。
0558デフォルトの名無しさんNGNG
質問です。
htmlのソースから、リンクされているアドレスを抜きたいのですが、
どのような方法でやれば、より簡単に出来るのですか?
よろしくお願いします。
0559デフォルトの名無しさんNGNG
>>558 Perl でやったほうが早いと思われ。
0560544NGNG
NS4.78でも、IE6でもフツーに見えるけどな
>BUG: C4786 Warning Is Not Disabled with #pragma Warning (Q167355)
>STATUS
>Microsoft has confirmed this to be a bug in the Microsoft products listed at the beginning of this article.
>Last Modifed May 7 2001 2:54PM
と書いてあるだけ。hot fix も何にもねーよ
0561557NGNG
>>560
今試してみたら読めました。なんだったんだ?
0562560NGNG
さー、MSのサーバが重かったんじゃないかい。
ちなみに 560 で 544 と名乗ったがあれ、554 の間違いな。
0563553NGNG
>>554
こんな早くお答えしてもらってるとは思いませんでした。
ありがとうございました。表示されなくなりました。
お礼が遅くなってすいません。
0564_NGNG
自分のVCは複雑なテンプレート関係が(メンバ関数のテンプレートとか)
処理できるようになってないけど、サービスパックをいれるとできるようになるのかな?
0565デフォルトの名無しさんNGNG
>>564 VC6はSP入れたってテンプレート処理の能力は増さねーよ。
次の VC7.NETまでオアズケだよん。
0566_NGNG
>>565
やっぱり駄目なのか。ありがとう。
STLやテンプレートを深く勉強しようと思ったけどやめようか。
0567デフォルトの名無しさんNGNG
逆にサービスパック如きで予想できない言語の扱いの変更が行われるのはコードへの影響が
無視できなくなる可能性があって危険だな
0568あたー!!!!         NGNG
今日秋葉でVC++5エンタープライズ版
が7000円で売ってました。
違法コピーじゃなくて中古みたいだったけど。
買っても大丈夫かなぁ。
0569a.outNGNG
ネットワーク上のプリンタを監視する方法として、MIBを使うという手がありますが、
実際アプリはどのように記述すればいいのでしょうか?
snmpを使ったプリンタ監視について御教授願います。
0570565NGNG
>>566 STLを深く勉強するなら、VC6+STLPortでやっとけ
それから Modern C++ Design を読むとテンプレートの
奥義を極めることができるそうだぞ

>>567 SPで言語の振舞いが変るのは勘弁だが、VC6の
言語サポートにも追いついていないSTL周りは
SPできっちり更新して!と思うナリ
0571548NGNG
>>549
あとがと

Win9x系,NTでVC++でDNSのMXレコード取得する方法ってないの?
0572デフォルトの名無しさんNGNG
なんだかんだ言って、VC++より良いコンパイラは存在しなかったり。
gccはコンストラクタ周りにバグあるし、IC++はデストラクタ周りにバグあるし、
CWやLSI-Cは論外だし。
動作がおかしいんじゃなくて、最初からそういう仕様になっているVC++が一番
癖が少ないと思う。その仕様が中途半端なんだけどさ。
0573デフォルトの名無しさんNGNG
>>572
用途による。

PS2 のソフト組むのに VC は使えんし。
0574デフォルトの名無しさんNGNG
揚げ足取られて可哀相な572に補足すると「Win32環境なら」ってことだろ。
俺もVC++使ってるのが一番幸せだと思う。
0575VC++超超初心者NGNG
どうしてVC++で

int main(){
printf("test");
return 0;
}

のようなものを実行するとDosプロンプトが出てきてそこに表示されるのでしょうか?
いまいちどういうことなのかわかりません
0576デフォルトの名無しさんNGNG
>>574
ただし標準でついてくる STL は捨てた方が良い。SP5 を当てても、まだ致命的なバグが残ってる。
0577デフォルトの名無しさんNGNG
>571
RFC読んで、dns鯖にUDP投げろ。
0578( _ 。。) _ バタ。 ◆lUd9keO2 NGNG
>>575
ネタ…だよな? ネタだって言ってくれっ!
0579名無しの2番NGNG
VisualBASICとVisualC++の違いってなんですか?
ちなみに現在VisualBASICの方を学んでます。VC++は初心者向けの本が見つかりませんでした。
0580デフォルトの名無しさんNGNG
糞と(;´Д`)ハァハァ。
0581デフォルトの名無しさんNGNG
>579
いっしょ
0582デフォルトの名無しさんNGNG
API&c++でプログラムを組みたいと思うのですが(非MFC)、フリーで内容の公開されているライブラリー
か、それの解説をしているページって無いでしょうか...

MFCを使うと汚いプログラムでも自分に妥協してしまうので...(爆)
0583デフォルトの名無しさんNGNG
WTLとか?
0584デフォルトの名無しさんNGNG
>>579
日本とアメリカの違いってなんですか?
くらい漠然とした質問だ。
答えようが無いぞ。
0585VC++超超初心者NGNG
>>578
ほんとにはじめたばかりで何もわからないです。
本とか見てもそういうことには触れていませんでした
0586デフォルトの名無しさんNGNG
なぜ、と言われてもなー。Windowsの機能を使った方が、
ライブラリの実装が簡単だったからじゃないのか?
別に、Winのコンソールではないウインドウを出す
実装があっても良いし。
0587デフォルトの名無しさんNGNG
>>585
じゃあ、お前的には575のプログラムがどういう風に動くと思ってたんだ?
Windowsのウィンドウが表示されてそこに"test"と表示されるとでも思ったのか?
0588Disca ◆NAfP6znE NGNG
VC= 医師国家試験並らしい…
VB= 英検2.5級位
って思ったら良いと思われ。(誰かが言っていた。
(言ったその当時は、VCのHowToが無かった時代かな…)
0589デフォルトの名無しさんNGNG
>>575には激しくワラタ。
たぶん、>>587の言ってることができると思ったんだろうけど、
>>575はどんな本を読んでるの?
0590デフォルトの名無しさん NGNG
何でそんな必死に突っ込みたがるんだろう  (^_^;
0591589NGNG
>>590
>>575を混乱させる本がかなり気になります。
0592VC++超超初心者NGNG
>>587
何もわからない初心者なのでなんとも言えませんが、さすがにWindowsのウィンドウが出てくるとは思いません。
でもなんでDos窓が出現するのですか?
>>591
特にその本は何も触れていません。ただ、実行すると、DOS窓がでてきて文字が表示されるっていう事実だけが書いてあったぽい

ていうか、ネタのつもりでないんで誰かマジレスしてほしいです
0593589NGNG
>>592
つーことは、実行すればDOS窓が出てくるってことは理解してるんだよね。

DOS窓が出現するのはexeファイルを実行してるからじゃないの?
0594デフォルトの名無しさんNGNG
>>593
その exe に

 このプログラムは console subsystem を使う

と書いてあるからだと思うが。VC6 だとリンカのオプション /SYBSYSTEM で指定できる。
0595デフォルトの名無しさんNGNG
すごい簡単なことを聞きます。

ボタンを使用不可にするにはどうすればいいんですか?
ボタンにメンバ変数を割り当てたのですが、どのコマンドで
使用不可になるかわかりません
0596新年おめでたレスNGNG
EnableWindow(FALSE)
0597デフォルトの名無しさんNGNG
お年玉でVCを買いました。
始めに何を作ったらいいですか?
ドラクエが作りたいです。
0598デフォルトの名無しさんNGNG
ネタの臭いが
プンプンするぜェェェェェェェ!
0599デフォルトの名無しさんNGNG
>>595 MSDN のドキュメントもちゃんとインストールしておきなさい。
0600デフォルトの名無しさんNGNG
>>595
もう回答出てるけど。

とりあえず、ボタンだろうがエディットボックスだろうが、基本的に
どれもウィンドウである(ウィンドウハンドルhWndを持ってる)という
のを理解する事。

理解したらMFCのクラス図を眺めてみて、なぜCButtonはCWndの派生
クラスになっているのか、CWndとは一体何のクラスなのか、という
のを調べてみるといいだろう。
0601o?NGNG
演算子の定義ってなんすか?

”特定の計算(比較)結果を返すもの”

ってのは正しいでしょうか?
0602平林雅英著 ANSI C言語辞典よりNGNG
演算
既知のもののゆるされた組み合わせに作用し、新しいものを生成する定義された動作。
既知のものがオペランドであり、動作を指定するのが演算子である。
0603VCCNGNG
>>597
とりあえずファイル、新規作成、コンソールアプリ、
またファイル、新規作成、C/C++ソースファイルを作り、

#include <stdio.h>

int main()
{
printf("hello");
return 0;
}

を入力F7でコンパイルして、F5で実行これでDOS窓でhelloと表示される、いきなりMFCのスケルトンを使った
アプリも良いけど最初が肝心、if、forとかの基本的な制御文を覚えとかないと後でやるのは大変
0604ウィルス職人NGNG
ウィルスを作りたいのですが、どうしたら良いでしょうか?
0605デフォルトの名無しさんNGNG
>>604
これ買え
http://www.amazon.co.jp/exec/obidos/ASIN/4887186215/qid=1009896028/sr=1-4/ref=sr_1_2_4/250-0104051-2828200
0606572NGNG
別にWin32環境に限定したつもりはないんだが。
環境を限定せずに考えて、俺が一番マシなのはVC++だと思うって話。
それを573が厨っぽいレス付けるからおかしな流れになる。
0607ウィルス職人NGNG
>>605 一応、Delphiで作りましたが…
ほしいですか?アゲマス。
0608ウィルス職人NGNG
Report608 :=
" >>606
だいたいの奴は、自分が持っている言語に自信をもっていることが
君のレスのおがげで良く分かったよ。";
0609566NGNG
>>570
どうもありがとうございます。
STLPortをいれてみようと思います。やっぱりVC付属のSTLはなんか少し変ですね。
普通にコンテナ・イテレーター使う分にはいいんですけどね。
Modern C++ Design もテンプレート勉強しようと思ってたので衝動買いしてたんだけど、
まだほとんど読んでません。
ATLに使われていて感心したテクニックがこの本のポリシークラスは関係あるみたいだけど、
VCだとこの本で解説されてる技法のすべては実践できなさそうで少し残念ですが。
はやくVC7.NETがでないかな。でも高そうだけど。
0610デフォルトの名無しさんNGNG
>>606
反論を食らうのは、自分の狭い世界でしか通用しない常識を一般化するから。
0611Kusakabe YouichiNGNG
In article >>601, o?/601 wrote:

> 演算子の定義ってなんすか?
> ”特定の計算(比較)結果を返すもの”
> ってのは正しいでしょうか?

引用符の向きが違いますね。
0612デフォルトの名無しさんNGNG
STLPortってDLLないと動かん?
0613nana NGNG
ウイルス下さい!お願いします!
0614デフォルトの名無しさんNGNG
>>612
static linkすれば?
0615デフォルトの名無しさんNGNG
>>612
#define _STLP_STATIC

で static link できる。あと SGI iostream ライブラリを使わなければ、そもそもライブラリは不要です。
ヘッダだけで OK。

#define _STLP_NO_OWN_IOSTREAMS

stlport/stl/_site_config.h にオプションが列挙されているから、一度目を通しておくと良いですよ。
0616デフォルトの名無しさんNGNG
おお、ありがとございます。
0617初心者NGNG
pDC->TextOutとprintfの違いを教えてください。
クイックCぐらいしかやったことない僕には何が
なんだか分かりません。マジレス希望です。
0618デフォルトの名無しさんNGNG
クイックCってなんだ?
0619anal fuckNGNG
617
クラスか関数かの違いでは?
クラスとは、構造体を拡張したものです。
0620初心者NGNG
>>619
ありがとうございました!
>>618
正確にはQuickC2.0のことです。
0621デフォルトの名無しさんNGNG
なんというか、まず>>620には、ビットマップつーものから教えなくちゃいかんのかに?
0622初心者NGNG
>>621
ビットマップってなんですか〜?(w
0623デフォルトの名無しさんNGNG
デバイスコンテキストじゃないの
0624初心者NGNG
デバコンってなあに?
むじゅかしいなあ。。。
0625 ◆ZVA2oc3Y NGNG
WinsockではなくWinInetでHTMLソースを持ってくるものを書いてます。

VC4.0なので、WinInet.dllからGetProcAddress()でInternetOpenUrl()
をインポートし、使っているのですが‥‥

InternetOpenUrl()を呼んだところで強制的にブレークがかかって
HEAP[Test.exe]: Heap block at 00158DF8 modified at 001591C6
                 past requested size of 3c6
というメッセージが出てしまいます。

どうやって解決すればよいのか教えてください‥‥
MSのページを見るとメモリリークらしいのです。
0626前すれ924NGNG
ごめん、古いほうに書いちゃったよ。


924 : :02/01/04 22:42
FAQっぽいけど、、、
system("***.exe a.tex b.tex");
みたいなのをDOS窓を出さずにできる方法はないの?

教えて!
0627 NGNG
CreateProcess
ShellExecute
_exec***
_spawnl***
0628デフォルトの名無しさんNGNG
>>626
system 関数について、もちっと、勉強せぃ。

GUI アプリなら CreateProcess か ShellExecute を使って、直接、起動しろ。
CUI アプリなら、キッパリと諦めろ。
0629VisualC++に乗り換えた腐れ厨房NGNG
このたび、遂にVisualC++6.0を買いました。
「反MS原理主義」を掲げる職場の先輩に付き従って、TurboC++ for Windows で
今まで戦ってきましたが、製造元にも見放されたコンパイラに限界を感じ、遂に
投降しました。
現在、プログラムの変換作業中なのです。
が、TurboC++で使えていた関数がVC6.0では使えなくてエラーと格闘しております。

VCでは次の関数はないのでしょうか?
strncmpi()
jstradev()

またヘッダファイルも無い物があるようです
jstring.h
mem.h

ヘルプファイルを探しても、なかなか見つかりません。ご存知の方いらっしゃいましたら
ご教示ください。
0630 ◆woDeLPHI NGNG
>>627
windows2000ならコンソール窓が必要無ければ
CreateProcessでCREATE_NO_WINDOW
0631 ◆woDeLPHI NGNG
>>629
_strnicmp _mbsninc が似てたように思うけど 確認して

C++Builderを経由すれば多少苦労が減りそうに思うんだけどなあ
0632デフォルトの名無しさんNGNG
>>629
strncmpi()はだいたい察しがつくが、jstradev()って何する関数?
0633デフォルトの名無しさんNGNG
てんで初心者なんですが、一つご教授を。
ダイアログに31個のボタンを配置して、押すと「今日は○○日です」とか。
どーすんでしょう?
無策にマウスでオブジェクトをぽちぽち31個置いて、関数も31個作りますか?

それともIDだけ31個作って、ループで回して31個CButton::Createして、OnCommandで仕分けますか?

どちらも面倒・・・と言うか保守性最悪。ボタンが2000個だったらどうしろと。

と言う訳で、何かいい方法ありませんでしょうか?
0634デフォルトの名無しさんNGNG
>>633
クリッカブルマップ
0635デフォルトの名無しさんNGNG
返事早っっっっっっっ
早速検索・・・。
0636デフォルトの名無しさんNGNG
(・_・、)<全然わからなかったらしい
0637デフォルトの名無しさんNGNG
>>636
俺には>>634は少々投げやりな意見に聞こえたけどな。
それを読んで飛び出していく方もどうかと思った。
0638 ◆woDeLPHI NGNG
>633 スマートじゃないかもしれないけど ボタンが並んだ絵を描いておいて
 ホントのボタンは1個だけ、マウスの移動につれてそのボタンを動かすというのはどう?
 VBでは良く使った方法だけど
0639デフォルトの名無しさんNGNG
>>637
そこはそれ、当方初心者ですのでご勘弁を(;´Д`)。

>>638
かなり妖しい方法ですね。考えも付きませんでした。と言うかあり得ないw
でもそれって普通のDOSプログラムとコーディング変わらないんじゃ…。
クリックの割り込みがOnButtonになるだけで(^_^;)。
0640デフォルトの名無しさんNGNG
つうか、ボタンが全部違うなら31個作るしかないだろ。
それで、「今日は○○日です」って処理だけなら関数は1個で済むだろ。
それだけだ。
0641 ◆woDeLPHI NGNG
ボタンらしい動きをさせるのがメンドクサイ時に使う方法であって

クリックして大幅に画面が変わるなら、それこそボタンの絵だけ描いて
クリックされた座標から判定すればいいだけだからさ
0642デフォルトの名無しさんNGNG
Delphiじゃ複数のオブジェクトのイベントを同じメソッドで処理できた。

procedure OnMouseDown(Object Sender)
begin
end;

Senderにそのイベントを発行したオブジェクトが入る。
VCにはないのかな?
0643デフォルトの名無しさんNGNG
イベントハンドラの共有なら
VCでもできたよーな?
0644デフォルトの名無しさんNGNG
>>634 = >>641 同じ考え
>>640 = >>642 同じ考え

どっちか選べ。
0645デフォルトの名無しさんNGNG
>>641
最後の手段として検討させて頂きます。
いや、その手法ですとね。今回は確かに乗り切れるでしょうけど、
将来の為にも、正攻法で考えてみたく。

>>642
有るかもしれない。けど、いくら調べてもわからない(死
button[n] = CButton::Create(); の引数で、別途リソースIDを指定しなきゃなんなくて。
このIDを自動生成出来ればいいんですけど、仕様上無理そうな。
OnButtonで感知出来るのはこのリソースIDだけみたいで、ユニークじゃないと。
実体のアドレスをくれ、アドレスを・・・・・・。

未だ地道に検索中・・・。意地でも手作業でボタンは置きたくないんで。
実際150個弱だから、置いて置けない事は無いけど。
0646 ◆woDeLPHI NGNG
>642 イベントという考え方は VB/Delphiの特異なものかも

>645
確かにボタンを150個並べても CDialogのメッセージ処理メンバで処理させるから
それはいいと思うんだけど?

でもリソースが少し勿体ないかもしれないよ。 win95とかだと
リソースメータ一挙にふりきらない?
0647デフォルトの名無しさんNGNG
>>645
昔話をしよう。
物理学者のファインマンさんの部下はある日を境にぷっつり仕事を上げてこなくなった。
不思議に思ったファインマンさんは部下の部屋に行くと彼は必死になってアークタンジェントを求めるプログラムを書いていた。

「アークタンジャントの表なら物理の教科書に載ってるから貸そうか?」
『いや、どうしてもPCでやりたい。』

その部下はクビになりました。

以前に150個のボタンってインターフェース的に問題がないか?
0648デフォルトの名無しさんNGNG
>>645
それってリソースエディタでボタン150個置いて、関数も150作るって意味で?(^_^;)
そうじゃなくて、Createで作成した150個のボタン全てが同一の関数を起動、
>>642 みたいな仕分け方(典型的には内部で if (buttonId == 0) とか)が出来れば
一番スマートじゃないかと・・・。で、これをどうするのかと(死

しかしシステムリソースは盲点(と言うかまだそこまで考えが・・・)。今2000で組んでますから。
一山越えたら95で動作チェックしないと逝けませんね。
事と次第によっては将来的には>>638かも・・・(汗
0649デフォルトの名無しさんNGNG
>>647
いや、150と言う値はともかく。
5個でも10個でも私は同じ方向で考えてるでしょうし。性格が粘着質なんで(ぉ
0650デフォルトの名無しさんNGNG
うざ。
0651デフォルトの名無しさんNGNG
>>633
等質なもの(ボタンなど)を格子状に並べるなら、
TableとかGridとか名づけられているコンポーネントを使うのが正攻法
一ヶ月分のカレンダーなどが典型的な例題になっている。
0652デフォルトの名無しさんNGNG
ON_CONTROL_RANGE じゃダメなん?<ボタン150個
0653デフォルトの名無しさんNGNG
せめてコンボボックスなんかで選択できるようにしたほうがいいと思うけどなぁ
0654デフォルトの名無しさんNGNG
>>651
新しい案をどうもです。つか新境地。これはこれで調べてみます(;´Д`)。
いやだから、MFC初心者なんですってw。

>>652
私レベルでは良く解りませんが、かすったかもしれません(笑)。恐らく一歩前進しました。
いやはや、聞いてみるもんですね。
ユニークなIDを持つボタンを複数作成出来れば、それでOKなんじゃないでしょうか。
私は現在、CreateでのそのユニークなIDの付け方が解らず(死)。
そこに的を絞って調査続行してみます(;´Д`)。

>>653
いやそれが。仕様上グラフィカルでないと成立しないと言うか。
囲碁プログラムで、置く位置をX,Yのコンボボックスで指定、なんて誰もプレイしたくないと言うか。
そんなノリのブツなんですよこれが(^_^;)。囲碁でもゲームでもないですが。
0655デフォルトの名無しさんNGNG
>>654
>囲碁プログラムで、置く位置をX,Yのコンボボックスで指

それならクリッカブルマップつかえよ。何を考えてたんだか。
0656デフォルトの名無しさんNGNG
>>655
それはそれで考慮中(・_・、)。
0657デフォルトの名無しさんNGNG
マジ、ウゼエ。答えでてるだろ。
もう上げんな。
0658デフォルトの名無しさんNGNG
まず何をするプログラムなのかを言ったほうが良いんでは?
そうすればUIに関するアドバイスからもらえると思うけど。
カレンダーならコンボボックスでもいいし、
囲碁ゲームならコントロールじゃなくて「絵」でもいいけど、
どちらでもないんでしょ?
開発者としてボタンが数百個置かれたプログラムを作るのはめんどうだけど、
ユーザとしてもそんなプログラムはあまり使いたくないなぁ。
0659デフォルトの名無しさんNGNG
ボタンのIDについての答えはまだ出てない様な(藁
0660デフォルトの名無しさんNGNG
お馬鹿ちゃんのせいで荒れてきたな・・・。
0661デフォルトの名無しさんNGNG
>>659
どっかのヘッダに書けば?
0662デフォルトの名無しさんNGNG
>>661
150個カキまくりますか。まあ考えるよりその方が早いかもしれん・・・・・・。
0663デフォルトの名無しさんNGNG
>>662
それは手動でもプログラム使ってでも好きなように。
0664デフォルトの名無しさんNGNG
ホントに日付ならCDateTimeCtrl で何の不満があるの?
0665デフォルトの名無しさんNGNG
>>663
まあその方向で逝ってみますか。
MFCも何年かいじってれば正解も見えてくるだろうといふ事で。
お知恵をくださった皆様方、ありがとうございました。<とかいいつつまた覗きますが
特にTableに関しては近々本格的にチャレンジしてみたく思います。

>>664
いや日付じゃないです。カレンダーはモノの例えでして。

>>658
余りにダサいんで勘弁してください(涙

>>660
MFCでのソレの実装方法が全然見えてこなかったりして。因みにVC++5.0。
お暇でしたらお馬鹿ちゃんに愛の手を。
0666デフォルトの名無しさんNGNG
>>665
ダサいとかの問題じゃないんだよ。
中途半端な情報しか与えないで教えてくれと言われるほうが迷惑。
0667sageNGNG
>>666
別にユーザーインタフェィスをどうしようかって質問じゃないんだから。
ボタン150個をどうするのかって話でしょ。
結論:力技
0668デフォルトの名無しさんNGNG
sage間違った。
この方がダセぇ。
0669デフォルトの名無しさんNGNG
>ボタン150個をどうするのかって
だからこのUIが問題なんじゃないのかって話しだろ
0670デフォルトの名無しさんNGNG
質問者はその様な事は一言も。
終始一貫、複数のボタンをどう実装するのか?って話ですよ。
アドヴァイスとして、テーブルやクリッカブルマップの話も出てきましたが、
質問者の期待した答えではないでしょうし。
それに対して迷惑は言い過ぎでしょう。
もうちょっとマターリ逝きましょう。
0671デフォルトの名無しさんNGNG
>>670
おい、笑わせんな。
テーブルだってクリッカブルマップだってそれなりの解決法なのに
それを実装できないって理由で他の方法求めてるほうがおかしいだろ。
よく読んでみろ。クリッカブルマップだって、「わからん」の一言で済ませてるんだぞ?
本来なら、>>634のレスで終わってる内容だろうが。
0672デフォルトの名無しさんNGNG
ここは質問スレですから。
わからないと言う人にはそれとなく教えてあげる方向で。
0673デフォルトの名無しさんNGNG
半端に作業を進めちゃってるから、
いまさらほかの方法に変えたくないんじゃない?
惰性は敵だ。
0674デフォルトの名無しさんNGNG
>>673
大丈夫。まだリソースエディタでぽちぽちやってる段階ですし、コーディング
そのものは0に近いです。つか敵はMFCだけです。ぷ〜の内容はマジ簡単(藁
0675デフォルトの名無しさんNGNG
>>670
なにをするプログラムなのかわかれば
>>634
>>641
>>653
>>664
などのどれかで解決だろ。
でもどれもいまいちみたいなこと言うから、じゃあおまえの作ってるのは
どんなのなのかと。いまいちな解決法レスで埋める前にとりあえず
どんなのが好みなのか言えと。
0676デフォルトの名無しさんNGNG
>>675
んじゃ全部ボタンで(懲りろ
なんか似たような事も書きましたけどね。このプログラムをどう仕上げるのかが問題じゃなくて、
複数個のコントロールから一つの関数を呼び出した時に、どう仕分けるかが疑問なのでありまして。
他のUI使えば仕分けなくていいよ、なるほどこれも確かに貴重なご意見ですが、
やはり質問者である私の期待する答えにはなってないと言う。
いやでも、みなさん親切に教えてくださいましたし。将来の課題でいいです、これは(笑)。
多分一般人は、余りやろうと考えないで、普通に5個10個関数を作るのでしょう。私がズレてました。

ま、それはそれとして。

さっきから検索かけまくったんですが、やはりVC++でのクリッカブルマップの実装方法が
全く見えてこないんで。どうでしょう675さん?
後学の為に、ちょっと実装法のヒントになるHP、ご存じでないですかね?|・)
0677デフォルトの名無しさんNGNG
enum忘れてた(照
0678デフォルトの名無しさんNGNG
MFCなんか使うからだ。
SDKならコントロールのハンドル→リストを線形検索で十分じゃい。
って俺がヘタレなだけか、
0679デフォルトの名無しさんNGNG
誰か、ショートカットのプロパティダイアログで「リンク先を探す」を押したときの
動作を実現する方法、知らない? API無いっぽいし...
0680デフォルトの名無しさんNGNG
もしや、
クリッカブルマップを使え発言 == MFCを捨てろ発言?
豪快すぎて言葉が有りません・・・・・・。
0681デフォルトの名無しさん NGNG
>>676
何でそんな卑しい文体なの?
顔文字使わなきゃ文章書けないとか
0682デフォルトの名無しさんNGNG
絵を描けってことだろ?
0683デフォルトの名無しさんNGNG
>>682
あ、図解してくれると最高ですが(違
0684デフォルトの名無しさんNGNG
ナチュラルプチ陽ちゃんだな
0685デフォルトの名無しさんNGNG
>>680
クリッカブルマップとMFCを捨てるにどのような関係が?
豪快すぎて言葉が有りません・・・・・・。
0686デフォルトの名無しさんNGNG
RUBYにしろよ>>C厨のあfふぉ
RUBY!!!!!!!!!>>>>>>>MFC
0687デフォルトの名無しさんNGNG
そうですかやはり豪快でしたか・・・私もそう思いました。
取りあえずこれも将来の課題といふことで。
力技で地道に進行中。
0688デフォルトの名無しさんNGNG
>>676
>複数個のコントロールから一つの関数を呼び出した時に、どう仕分けるかが疑問なのでありまして。

ID見て普通に仕分ける以外に無いと思うが、
なにか、ほかにあるんだろうか。
0689デフォルトの名無しさんNGNG
つうか、肯定的な意見は全部質問者の自作自演だな、これは。
0690デフォルトの名無しさんNGNG
>>682
ちがうよ!<MAP>タグを使えってことだよ!
0691仕様書無しさん NGNG
>>650 何故その段階で気付いた? あんた何者だ  笑
0692デフォルトの名無しさんNGNG
sageてないのはほぼ質問者ですが、何か?(藁
と言うかレスりすぎてコーディング進まねェし。バカ。
0693デフォルトの名無しさんNGNG
>>688
そこが彼の文章のわかりにくいところなんだよ。
彼が言いたいのは
「たくさんボタン置くのがめんどくせーから、いっぺんに
どばぁーっとボタンを置く方法知らねぇ?」
ってことなんだよ。
0694デフォルトの名無しさんNGNG
(゚Д゚)ポカーン
0695デフォルトの名無しさんNGNG
>>692
>と言うかレスりすぎてコーディング進まねェし。
まずやってからレスすれ。
だからこういう展開になる。
0696デフォルトの名無しさんNGNG
>>689
漏れもそう思った。張り付いてスレ見てるみたいだしな。
>>682->>683のタイミングとか。
しかも、クリッカブルマップが分かってないくせに>>687の豪快とは、これいかに。
>>680が自作自演だって事は明白だな。
MFCがどうのこうの言ってる時点で、クリッカブルマップが理解できとらんし。
0697650NGNG
>>691
何者って言われても。うざいと思ったからうざいと書いたとしか言えない。
ちなみに>>634で速攻クリッカブルマップとレス付けたのも俺だよ。
俺の他にも色々と意見を出してくれてる人がいるのに、分からないだのなんだの
言ってるからうざいと思ったまで。
0698デフォルトの名無しさんNGNG
>>693
それいいかも。

>>695
いやーなんか次々出てくるんで。次々やっては捨て。ああバカ。でも頑張る。

>>696
自作自演なんて話じゃないです。敢えて一人だけsageてないので丸わかりです。
つか解る様にしてます。心外な(藁
張り付いてると言うか、レスってリロード完了すると増えてんだもん。
と言うか自分でコーディングするのか?クリッカブルマップ。
まだ理解出来てないかも。
0699デフォルトの名無しさんNGNG
for(int i=1; i<3; i++){
  CRect rect(100*i, 100, 200*i, 150);
  CButton *b = new CButton();
  b->Create("button", WS_CHILD|WS_VISIBLE, rect, this, 5000+i);
}
じゃダメかね。座標はテキトー。
0700デフォルトの名無しさんNGNG
>>699
逝けました、と言うかID以外は私もその手法だったのですが、
ID勝手に付けちゃって良かったんですかー。<ここら辺知らない辺りがモロ初心者
予約しとかないで大丈夫なのか?と言う疑問は残りますが、
そこら辺の処理は又別問題として、以後調査してみます。

>>652 さんの情報と組み合わせる事で、期待通りに動作致しました。やっとこさ。
併せて御礼申し上げます。

以上、しばらくはこのスレに来なくて済む事を祈って(笑)。どうもありがとうございました。
0701699NGNG
そのまんまだとメモリリークするからそのへんちゃんとdeleteすれよ
0702デフォルトの名無しさんNGNG
それではみなさん、ここでもう一度最初の>>633の質問を見てみよう。

> ダイアログに31個のボタンを配置して、押すと「今日は○○日です」とか。
> どーすんでしょう?

たいていは「カレンダー作るんだろうなー」と思うよな。

> それともIDだけ31個作って、ループで回して31個CButton::Createして、OnCommandで仕分けますか?

こう言ってるんだからIDの作り方もループの回し方もcreateの仕方も
OnCommandの仕分け方もわかってるんだろうなーと思うよな。
で、これが嫌だから他の方法尋ねてるんだと思うよな。
そら>>634も即答するよな。

で結論が最初の方法(Create)ってどういうことやねん。
0703デフォルトの名無しさんNGNG
というわけでこの話題、めでたく終了。
0704デフォルトの名無しさん NGNG
>>702
すまんが吹き出してしまった。
笑わせてくれた礼を言うからそうカリカリすんな
0705デフォルトの名無しさんNGNG
上の方で書いたんですが、落ち着いたところで(w 再度質問。

誰か、ショートカットのプロパティダイアログで「リンク先を探す」を押したときの
動作を実現する方法、知りませんかねぇ?
そういう APIというか、シェル関係のインターフェイスあります?
0706デフォルトの名無しさんNGNG
>>705
IShellLink::Resolve()
詳細はMSDN Libraryで。
0707705NGNG
>706
>IShellLink::Resolve()
リンクターゲットはおっしゃるとおり、IShellLink::Resolve()で取得できます。
そうではなくて、「リンク先を探す」を押すと、新しいエクスプローラ窓が開いて、
リンク先オブジェクトが選択されますよね。これをやりたいんですが。
0708705NGNG
IShellBrowser::BrowseObject というのを発見しましたが...
つ、使い方が分からない(鬱
0709デフォルトの名無しさんNGNG
>>702
引用の通り、ダイアログにン10個のボタンを配置、これは譲れない線なので
まあ許して(笑)。
つまり私の言う所の「IDの作り方」は、DevStdioで普通にン10個予約するか、
或いは#defineをン10個並べて予約するかの問題で、
その辺が初心者。何分一昨日初インストした所なんで(苦笑

その後は快調、快調。
0710デフォルトの名無しさんNGNG
あれ?
0711706NGNG
>>707
それなら、
"explorer /n,/select,リンク先オブジェクトのパス"
をShellExecuteなりなんなりで起動すればよい気が。
0712705NGNG
>711
感動した。
ShellExecuteレベルでできそうな気はしていたが、
explorer.exe にオプションスイッチがあったとは...
0713デフォルトの名無しさんNGNG
技術系掲示板・MLで嫌われるような典型的な厨房がいるな
0714714NGNG
二次元配列の大きさを動的に操作したいんだけど、
vectorって二次元にできます?
0715デフォルトの名無しさんNGNG
できる。
0716714NGNG
std::vector<int>(std::vector<int>Dim);
見たいな感じだとコンパイルエラーになるんですが(VC++)
ヒントだけども教えてください。
0717デフォルトの名無しさんNGNG
>>716
std::vector< std::vector<int> > Dim
0718714NGNG
>>717
助かった。ありがとう。
具体的な使い方がよくわからんが、とりあえず宣言はできた。
0719デフォルトの名無しさんNGNG
VC++プロにはスタンダード版のような入門書とかついてくるの?
また、スタンダード版はプロ版にバージョンアップ可?
0720デフォルトの名無しさんNGNG
ここにも出た。>>719
0721デフォルトの名無しさんNGNG
>>719
本屋壱って買え
0722デフォルトの名無しさんNGNG
POPサーバーに接続してメッセージを取り出してくるプログラムを
VC++で作りたいのですが、参考になるHPや書籍があったら紹介して
もらえませんでしょうか
0723デフォルトの名無しさんNGNG
RFC嫁、UNIX系POP Clientのソース嫁。googleに訊け。
0724デフォルトの名無しさんNGNG
IHTMLDocument2を使って今見ているURLを取り、それを加工してリダイレクトしようとしています。
とりあえず今見ているURLをもう一度開くコードを書いているのですが、
assert(m_pBrowser);のとこや、m_pBrowser->get_Document(&pDisp);でIEが落ちます。
なにか根本的に間違っているような気がするのですが、八方塞がりなのでご教授きぼんです。

IWebBrowser2* m_pBrowser;
assert(m_pBrowser);
IDispatch* pDisp;
m_pBrowser->get_Document(&pDisp);
IHTMLDocument2* pHTMLDoc;
pDisp->QueryInterface(IID_IHTMLDocument2, (void**)&pHTMLDoc);
BSTR pURI;
pHTMLDoc->get_URL(&pURI);

_variant_t varURL = _bstr_t(pURI);
_variant_t varEmpty;
if (m_pBand)
m_pBand->m_pWebBrowser->Navigate2(&varURL, &varEmpty, &varEmpty, &varEmpty, &varEmpty);
0725初心者?NGNG
すいません。教えてください。
m_pBrowser の中身って何なのでしょうか?
0726デフォルトの名無しさんNGNG
ATL/WTL スレって無いのかな?
ここでいいのかな?
0727726NGNG
VC+MFCで質問してよろしいでしょうか。
読取専用のeditboxをIRCのようなチャットクライアントのウインドウにしたいのですが、

myED = (CEdit *)GetDlgItem(IDC_EDIT);
myED->GetWindowText(ss);
msg = ss + buf + "\r\n";
myED->SetWindowText(msg);

このようにして書き込んでいくと、
最初はいいのですが1画面の範囲を超えてスクロールが必要なときに
何か発言があるとスクロールが一番上に戻ってしまいます。
最初からスクロールが下にあるようにしたいのですが・・・
0728724NGNG
>>725
はい、初心者です(「IEコンポーネントを使い倒すスレ」に書けば良かったかも)。
IWebBrowser2* m_pBrowser = NULL;
です。

昨晩ちょっと格闘してみたのですが、ごく単純に

IHTMLDocument2* pHTMLDoc = NULL;
BSTR pURI;
pHTMLDoc->get_URL(&pURI);

_variant_t varURL = _bstr_t(pURI);
_variant_t varEmpty;
if (m_pBand)
m_pBand->m_pWebBrowser->Navigate2(&varURL, &varEmpty, &varEmpty, &varEmpty, &varEmpty);

とやってもダメなんですねえ。
0729デフォルトの名無しさんNGNG
>>728
NULLだったらアサーションで引っかかるのは当然と思われ

「今見ているURL」がほしいなら、Browser Helper Objectsを使いましょう。
MSDN Libraryに、そのものズバリっぽい解説&サンプルがあります。
http://www.microsoft.com/japan/developer/library/jptech/MSDNNews/top.htm
0730デフォルトの名無しさんNGNG
モードレスダイアログを使った場合、データの受け渡しは
ウィンドウ間通信じゃないといけないと聞いたけど、
どこかお勧めのサイトありますか?
0731デフォルトの名無しさんNGNG
JPEG・PNGの保存ってどうしてますか?
OleLoadPictureでJPEGは読めるんですけど保存やPNGはどうしてますか?
有名なライブラリをリンクしてやってるんですけどプログラムサイズが大きくなって
ネットで配布するのに不便ですし何となく嫌です。
MS製でOSやIEなんかについてるActiveXとかないですか?
0732725NGNG
>>728
もっと基本的なことから勉強しましょう。
貴方のやっていることは
  NULL->get_URL(&pURI);
と同じことです。

>>729 禿同
0733デフォルトの名無しさんNGNG
クライアント/サーバシステムでクライアント側のアプリが起動中にサーバ側からプッシュ
したデータをリアルタイムで取得するプログラムを作成しようとしています。
そこで、質問があるのですが、以下の条件下でサーバとクライアントの通信方法、サーバ側
での使用言語等、アドバイスをお願いします。
(既出な話題でしたら、過去ログのだいたいの位置を教えてください)
  クライアントは Windows(95、NT4以降) で言語は VC++6。
  サーバは Solaris で言語は未定。
  データはサーバから送られてくる(クライアントから取得するのではない)。
0734デフォルトの名無しさんNGNG
>>733
言ってることが変だぞ

>クラインアントから取得するのではない
ふーん、では
>データをリアルタイムで取得するプログラム
はどこで動くの?クライアントじゃないのか?
それを普通はクライアントから取得するというのだが。
0735デフォルトの名無しさんNGNG
>734
ごめんなさい。
サーバへの通信開始はクライアントから行うが、その後、サーバ側でデータに変更が
あった場合、リアルタイムにデータをサーバからクライアントに送信したいというこ
とです。
0736デフォルトの名無しさんNGNG
>>735
それはネットラジオみたいな持続的なストリーミングデータかな。
ではなくて、サーバから間欠的にデータ更新がかかるのか?
後者なら普通のソケット通信で良いと思うがどうよ?
あと、クライアントの数は何桁かな?
その辺りをはっきりさせて、ネットワークプログラミング相談スレへ書け
ここではスレ違い
0737デフォルトの名無しさんNGNG
>736
ありがとうございます。
サーバから間欠的にデータ更新で、クライアント数は1万を想定しています。
うーん。ソケットですか。では、その方向で頑張ってみます。
0738デフォルトの名無しさんNGNG
サーバは受動的
0739デフォルトの名無しさんNGNG
>>737 クライアント1万?それ同時接続で?
1台のサーバで1万接続をさばくのは無理な気がするけどな〜
マルチキャストならいけるかなぁ。
スレ違いだね。すまん。移動するべし。
0740デフォルトの名無しさんNGNG
質問です。
CSVの形で書かれたファイルを読み込んで二次元配列に格納するのは
どうやればいいでしょうか。
0741デフォルトの名無しさんNGNG
>>740

コンマからコンマまでをコピー。
0742デフォルトの名無しさんNGNG
XPでVCのデバッガを使うと固まってしまうのですが、どうすればいいでしょうか?
0743デフォルトの名無しさんNGNG
i=j=0;
while(EOF!=c=fgetc(fp)){
switch(c){
case
s[i][j]='\0'
i++,j=0;
break;

default:
s[i][j++]=c;
break;
}
}
文字列の二次元配列?
整数の?
0744デフォルトの名無しさんNGNG
>>742
Meを入れる。
XPはダサい。
0745デフォルトの名無しさんNGNG
寧ろXPのままVCをやめる
0746デフォルトの名無しさんNGNG
>>742
Xpはもうちょっと待ちましょう。
でもMeはもっとださいぞ。

2000をいれなさい。
0747デフォルトの名無しさんNGNG
>>744
XP上での動作チェックをしたいので、XPでデバッガを動かしたいのですが。
0748デフォルトの名無しさんNGNG
>>742
IME をタスクバーに入れると良い、と ML で聞いた気がする。あとアンチウィルス系のソフトを入れてあったら
外してみれば。

(俺は開発マシンはまだ 2000 なんで、自分では試してない)
0749デフォルトの名無しさんNGNG
WinMainCRTStartup() のソースが落ちている所を
ご存知でしたら教えていただけませんでしょうか。
インスタンスハンドルは GetModuleHandle(NULL) で
取得できるのですが、コマンドラインへのポインタの
取得などができないので・・。
0750デフォルトの名無しさんNGNG
昨日、MSのSTLがあんまりアレなので、SGIのSTL使ってみたんです、
で、STLはスコープから抜けると自動で確保したメモリ領域破棄するとおもうのですが、
よくみたら、メモリリーク検出してるんです。
なんか、宣言しただけでメモリリークしてるし、もうみてらんない。。
そんな俺の最新環境は、SGIのSTLは最新版(昨日ダウンロード)
で、listを宣言してVC++のDebugで実行したときののメモリリーク検出、これ最低。
VC++ってのはVC++6.0SP3。
そんな俺はCListでも使ってなさいってこった。
0751デフォルトの名無しさんNGNG
>>750
何故STLportを使わないのか問いたい。問いつめたい。VC++がANSI C++に完全準拠するその日まで問いつめたい。
0752デフォルトの名無しさんNGNG
>>749
ほい。
file:///C:/Program Files/Microsoft Visual Studio/VC98/CRT/SRC/CRT0.C
0753デフォルトの名無しさんNGNG
>>750
node allocator 使ってるから。気になるようなら STLport 使って

#define _STLP_USE_MALLOC

しとけ。(ただし性能がかなり落ちるから、リリースビルドでは node allocator 使ったほうが良いぞ)。
0754750NGNG
俺はメモリリークっていいたいだけちゃうんかと(いや違うんですが)

>>751
明日はSTL.port逝ってみるよ。
VC++がANSI C++に完全準拠するまで問い詰めるのは勘弁してください
もしからしたら永遠と問い詰められることに・・(ぉ
0755750NGNG
>>753
なるほど、スキーリ、しました。

そんな俺は修行がたらないようなので出直せってこった。
STL age
0756デフォルトの名無しさんNGNG
>>755
まあSTLportでstd::auto_ptrつかう時は忘れずに#define OBSOLATE 1しとけってこった。
0757749NGNG
>>752
>ほい。
>file:///C:/Program Files/Microsoft Visual Studio/VC98/CRT/SRC/CRT0.C

ありがとうございます。
でも見つからなかったです・・。
もしかして Enterprise Edition にしかついてないとか。
0758デフォルトの名無しさんNGNG
googleやinfoseekのようなツールバーを作りたいです
どうやって作るのか調べてもわからなかったのですが
何か参考になる資料などないでしょうか
0759デフォルトの名無しさんNGNG
>>757
インストールの時に選択しとかないとライブラリのソースは入らんぞ。
ちなみにコマンドラインへのポインタは GetCommandLine() だ。
0760757==749NGNG
>>759
Malloc.c とか New.cpp、Xtree とかはあるんですが、
CRT0.C がないのもライブラリのソースをインストール
しなかったせいなのでしょうか…。
一応 MSDN Library Disk1 の Sample フォルダをガーっと
検索してみましたが、見つかりませんでした
GetCommandLine() ですね。ありがとうございました。助かりました。
将来的には WinMainCRTStartup() を自分で実装してみたいです。
0761デフォルトの名無しさんNGNG
file:///C:/Program Files/Microsoft Visual Studio/VC98/ATL/INCLUDE/ATLIMPL.CPP
ほい。
0762デフォルトの名無しさんNGNG
>>758
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/shellcc/platform/shell/bands.asp
0763760==757==749NGNG
>>761
あ・・ありがとうございます!
見つかりました。非常に参考になりました。感謝します。
"WinMainCRTStartup" などの文字列で HD を検索
してみなかった自分が迂闊でした。

しつこいですが(^^; 別の質問でございます。
ATLIMPL.CPP の WinMainCRTStartup() の最後で
::ExitProcess((UINT)nRet);
として終了していますが、これは意味があるのでしょうか。
入れたほうが良いと小耳にはさみましたが。
・・まぁ入れときます。
0764デフォルトの名無しさんNGNG
ExitProcess入れないと、いつまでもプロセスが終わらなかったような。
0765デフォルトの名無しさんNGNG
>>756
もしかしてコンテナに auto_ptr 突っ込もうとしてないか?
0766デフォルトの名無しさんNGNG
>>765
OBSOLATE定義しないとどういうときにコンパイル通らなかったのか覚えていないんだけど、コンテナにauto_ptr突っ込むことはあるな。何か問題あるのかな?
0767デフォルトの名無しさんNGNG
>>766
コンテナに auto_ptr 突っ込むのはまずい。規格書に書いてあるんだが STL のコンテナに格納する要素は

 CopyConstructive
 コピーコンストラクタで作ったインスタンスと、コピー元のインスタンスが等しい

 Assignable
 代入演算子で代入されたインスタンスと、代入したインスタンスが等しい

という二つの条件が要請されてるんだが T が auto_ptr だと

 T u;
 T t = u;

を実行すると u はポインタの所有権を放棄してしまうので t != u となるので NG。実際、値がコピーできる
ことを前提として書かれたソートアルゴリズムなんかもあって、それを適用するとコンテナの中身が破壊
されるそうだ。

俺も、最近 Effective STL, Exceptional C++ 読んで始めて知ったんだけど。
0768758NGNG
>>762
ありがとうございました.
ちゃんと探したとおもってたんですけど,全然見逃してました
あとは自分でがんばってみます
0769デフォルトの名無しさんNGNG
766>>767
俺、επιστημηのSTL本でSTLはじめたんすよ。
で、それの中で参照ベースコンテナの例としてauto_ptrをコンテナに突っ込む
例が掲載されてるんすよ。
よーし、パパvectorにpush_back(auto_ptr<Animal>(new Dog("ポチ"))するぞーとか言ってんすよ。
もうね、アホかと。本を書くなら規格書読めと。VCMLで偉そうな事言う前にやることあるだろうが、と。
0770デフォルトの名無しさんNGNG
>>769 auto_ptr は標準化で機能が二転三転した経緯があるんで、
ISO C++の、どの時点のドラフトをベースにしているかによるな。
ま、正誤記事ぐらい書いとけよ>えぴすテメ〜ゴルァ
0771デフォルトの名無しさんNGNG
>>770
正直、彼の本はチェックが甘いと思う。「オブジェクト指向的日常」でも文章の誤記は多いし、コードでも

 「そもそもコンパイル通らん」
 「非ローカル static オブジェクトの初期化順序に依存するので、動作を保証できない」

なんてのがあった(もう本は捨てちゃったから正確なところは忘れたけど、シリアライズで出てきたオブ
ジェクト辞書に関して)。

別に STL の書籍は彼のものだけってわけじゃないし、さっさと捨てて別の本に乗り換えたほうが良いか
もね。
0772769NGNG
>>771
「Generic Programming STLによる汎用プログラミング」っちゅー本を最近は使っている。
間違っても一冊目に買うような本じゃないが、リファレンスとして良い本。
STLを学ぶための一冊目としては何が良いのか、未だによくわからない。

・いろんな使い方が載っている読み物的性格の強い本=?
・リファレンス本=Generic Programming STLによる汎用プログラミング
0773デフォルトの名無しさん NGNG
IMEで変換時の背景色やテキスト色を変更する方法
を教えてください。
0774デフォルトの名無しさんNGNG
本当に知識ゼロの状態なのですが手元には「Visual Studio 6.0」があります。
これからVisualC++を勉強していこうと思うのですが
本当にゼロから解説してくれるサイトや本はありますでしょうか?
よろしくお願いします。
0775デフォルトの名無しさんNGNG
こんの割れ野郎がああああああああああ!!!
0776774NGNG
スミマセン、叔父から譲ってもらった物です(汗
割れではありません。
それに、本気でプログラムを勉強しようと考え相談しました。
今までプログラムに触れる機会がなかったもので何もわかりません。
0777デフォルトの名無しさんNGNG
Visual Studio 6.0を使っている者です。
Visual C++をつかってコーディングしているときに
[.]や[->]を入力すると自動でメンバを表示してくれる機能がありますが、
これが表示されなくなる事があります。
原因がよくわかりません。Visual Studioのバグでしょうか?
それともコーディングのまちがいか何かでしょうか。
思い当たる事があったら教えてください。お願いします。
0778デフォルトの名無しさんNGNG
「猫でもわかるプログラミング」
0779デフォルトの名無しさんNGNG
まったくおんなじ状況で
インテリセンスが動いたり動かなかったり?
0780777NGNG
>779
全く同じ状況ではないです。
コーディングを進めていくと動いたり動かなかったりします。
コンパイルは通るのですが。
どこか気づきにくいコーディングの間違いでもあるかもしれません。
0781デフォルトの名無しさんNGNG
>>777
とりあえずワークスペースのフォルダにある*.ncb消せば直ると思うけど。
あれ、わりとよく壊れるらしい。
0782777NGNG
>781
やってみましたところ、できるようになったみたいです。
ありがとうございます。
0783774NGNG
>>778
レスありがとうございます。
それはサイトの名前でしょうか?
0784デフォルトの名無しさんNGNG
>783
yahooで検索してみ
0785デフォルトの名無しさんNGNG
visual cはじめたばかりなのですが何か勉強のなるサイトおしえてください
0786デフォルトの名無しさんNGNG
>>785
参考図書スレにいくつかあがってるから、そっちをあたりましょう。

サイトといってるが、書籍につぎ込む金を惜しむようだと先が暗いぞ。
0787デフォルトの名無しさんNGNG
ほんと、
勉強しようとすると書籍代が
めちゃくちゃかかるよなあ・・・
0788デフォルトの名無しさんNGNG
プログラムはあまり詳しくないのですが
3ケタの数字をランダムに0.3秒間隔で10回表示させる
プログラムはどう記述したらよいでしょうか?
わかりやすく言うと次々と現れる3ケタの数字を記憶するゲームを
作りたいと思っています。
最後に答えを表示できれば完璧なのですが。
わかる方いらっしゃいましたら、ご教授よろしくお願いします。
0789デフォルトの名無しさんNGNG
>788
マルチやめれ!
言語書いてないし。
0790( _ 。。) _ バタ。 ◆lUd9keO2 NGNG
>>785
書籍で何がしたいのか調べた上で、サイト検索かけるよろし。
全体的な事を完璧にフォローしてるサイトは小難しくなってたり
どこか落ちてたりするんで、的を絞ってサイトを見つけるが良い。
0791デフォルトの名無しさんNGNG
LineToを使い,線グラフの描画ソフト作ってます
a,bという2種類のデータの線グラフを描きたいのですが,
一つのグラフならLineTo(hdc,time,a[time])でできます。
ところが,二つのデータを同時に描画するときは
どのようにしたらよいのですか?

また,この描画はメモリデバイスコンテキストを使ってますが
描画されるのはその時点での点としか表示されません
その点以前の点が描画されないのですが
その前の点も表示したいときはどうしたらよいでしょうか?
0792デフォルトの名無しさんNGNG

「マイドキュメント」フォルダはどうやって取得したらいいですか?
SHGetSpecialFolderLocation で取得できそうな気もしたんですがどうやら
無理っぱいです。

0793デフォルトの名無しさんNGNG
>>791
MoveTo()も使えばいいじゃん
0794793NGNG
Win32APIなら、MoveToEx()
0795デフォルトの名無しさんNGNG
>>792
CSIDL_PERSONAL指定して取得できなかった?
0796デフォルトの名無しさんNGNG
>>795
デスクトップ統合してない環境だと駄目だったはず。
HKCU\\Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Shell Folders
から取るべし。
0797デフォルトの名無しさんNGNG
>>796
へー、そんなとこにあったんだ。感謝。
でもあれだよね、それってあらかじめそのフォルダが存在しないと
取得できないんだよね?例えば初期のWin95だと存在しない
スペシャルフォルダがいくつかあるけど、そういうのは
SHGetFolderみたいなAPIで作って取得しないといけないよね?
0798デフォルトの名無しさんNGNG
>>797 「マイドキュメント」は初期Win95に存在しないが、
Word/Excel入れると存在するのでなんとも言えないね。
HKCU にエントリがなければ無いものとして扱えば良いんじゃないの?

俺のアプリは、HKCUにマイドキュメントの登録キー("Personal")が
無い場合はアプリインストール先フォルダで代替するようにしている。
勝手にスペシャルフォルダ作成するのは迷惑だしな。
0799デフォルトの名無しさんNGNG
>>798
> Word/Excel入れると存在するのでなんとも言えないね。
OfficeやIE入れるとDLLのバージョンが変わって新しい
スペシャルフォルダをサポートするようになるからね。

勝手にフォルダを作成するって言っても、MSが配布してるshfolder.dll
みたいなDLLを一緒に配布してIEが勝手に作るのと同じことしてるわけ
だからそんなに迷惑でもないと思うんだけどな。
0800デフォルトの名無しさんNGNG
ダイアログボックスにあるエディットボックスの拡張スタイルを動的に変更できますか?
左揃えを右揃えに変更したいのです。
一応SetWindowLongを使ってみたのですが、画面上は何も変わらない・・・

style=GetWindowLong(GetDlgItem(IDC_EDIT1)->m_hWnd,GWL_EXSTYLE);
style=style & ~WS_EX_LEFT;
SetWindowLong(GetDlgItem(IDC_EDIT1)->m_hWnd,GWL_EXSTYLE,style | WS_EX_RIGHT);

こんなコードなんですけど。
0801デフォルトの名無しさんNGNG
>>800
DestroyしてCreatしなおす、ってのじゃだめ?
0802800NGNG
>801
ごめん。前提書いてなかったから、ちょっと無理かも・・・

何したいかっつ〜と、
エディットボックスって貧弱なんで、いろんな機能付けたものを
ActiveXコントロールにしようかと思ったのね。

最初はプロジェクトウィザードでEDITを基本にして作成。
プロパティシートで、アライメント選択させてそれを反映させたかったんだけど、うまくいかなかった。

PreCreateWindowで変更するのはOKだったんだけど、それってしょっぱなだけだし・・・
DestroyしてCreatしなおすってのも普通ならありだけど、
上記の方法で作成したから、無理っぽいし。

基本に帰って、単純にダイアログにあるエディットボックスに変更かけて見たけど、無理だったと

俺、基本的なとこで間違ってるかな・・・
自前のエディットボックスって他の方法で作れる?
0803デフォルトの名無しさんNGNG
>800
WS_EX_RIGHT ってのは右揃えじゃなくて、文字の並びを右から左に
するやつ(アラビア語サポート)じゃない?
右揃えにするんだったら通常スタイルの ES_RIGHT だよ。
ただし、複数行エディットでないと効果がなかったはず。
0804デフォルトの名無しさんNGNG
シリアルポートの受信プログラム作っています
コンソールで10バイトのデータを受信し,
結果をファイルに出力してます
ReadFile使用して受信するようにしています

ここでシステムモニタでプロセッサ使用率を観察すると
プログラム前は40%ぐらい
プログラム起動後80%前後
受信しているときは10%以下
プログラム終了後80%
という結果になります
プログラムを終了した後もプロセッサ使用率が
高いままになっているのはどうしてなのでしょうか?

OSはWin98,VS6を使用しています
0805800NGNG
>803
そうなのか?

まぁ、とにかく動的にアライメントは変えられないのかな?
リソースエディタ上で変更すれば出きるのに・・・

つか、MaskEditBoxが悪いんじゃ〜!!
2001年01月17日って入ってるところで(Maskは>9999\年 99\月 99\日)
頭の2を消したら、
0010年11月7_日 になるんじゃ〜気持ちわるっ!!

素直に
_001年01月17日 になりゃ良いのに・・・
0806デフォルトの名無しさんNGNG
>>804
プログラム前40%ってことはノートでないかい?
BIOSの設定とかで省電力モードになってるとシステムモニタは
0%にならんよ。
0807デフォルトの名無しさんNGNG
UnZip32.dllのUnZipExtract()を使って正規表現文字を含むファイルが抽出できません。
0x800Dが戻ってきます。
具体的には ファイル名に "[" "]" を含むファイルを抽出したいと思っています。

UnZipFindNext()で取得したINDIVIDUALINFOのszFileNameにはちゃんと収まっているので
これを""でくくってUnZipExtract()に渡しても同じ症状でした。

ちなみに正規表現文字を含まないファイル名を""でくくると上記の0x800Dエラーになりました。
うまい方法がありましたら、ご教授お願いします。

スレ違いだったら申し訳ありません。
よろしくお願いします。
0808デフォルトの名無しさんNGNG
>>807
与えるファイル名の正規表現に "\" を付けて(゚д゚)ウマー 。
0809807NGNG
>>808
できました!
””でくくるとだめなようですね。ありがとうございました。
0810デフォルトの名無しさんNGNG
他のウインドウに、例えばCtrl+Aみたいなのを送りたいんですが、

SendMessage(Wnd,WM_KEYDOWN,WPARAM(VK_CONTROL),0);
SendMessage(Wnd,WM_KEYDOWN,WPARAM('A'),0);
SendMessage(Wnd,WM_KEYUP,WPARAM('A'),0);
SendMessage(Wnd,WM_KEYUP,WPARAM(VK_CONTROL),0);

とかやってみたんですが、うまくいきません。
WM_SYSKEYDOWNとかいうやらもいじくってみたけどなんか駄目そうです。
何を使えばいいのでしょうか?
0811デフォルトの名無しさんNGNG
>>810
フォーカスセットして
VOID keybd_event(bVirtualKey, bScanCode, dwFlags, dwExtraInfo)
でどうよ?
0812810NGNG
thx、ためしてみまっす!
0813810NGNG
できました、CEでも動きました、この恩は忘れません。
0814デフォルトの名無しさんNGNG
現在の表示画面をクリップボードに取り込んで、それを
Wordにペーストで貼り付けています。

すると、背景の白にぶつぶつが入ってしまうのです。
これをアクセサリーの「ペイント」にいったんコピーして
「ペイント」でもう一度コピーしてから貼り付けると
白はきれいに表示されます(というか何も表示されない)

どこがまずいのでしょうか?パレットの設定とかが必要なのでしょうか?
// クリップボードにコピー
hDC = GetDC(hWnd);
hDC_mem = CreateCompatibleDC(hDC);
GetClientRect(hWnd,&rc);
hBitmap = CreateCompatibleBitmap(hDC, rc.right, rc.bottom);
if (hBitmap) {
SelectObject(hDC_mem, hBitmap);
StretchBlt(hDC_mem, 0, 0, rc.right, rc.bottom, hDC, 0, 0, rc.right, rc.bottom, SRCCOPY);
OpenClipboard(hWnd);
EmptyClipboard();
SetClipboardData(CF_BITMAP, hBitmap);
CloseClipboard();
} else {
MessageBeep(0);
}
DeleteDC(hDC_mem);
ReleaseDC(hWnd, hDC);
0815デフォルトの名無しさんNGNG
割り込んですいません
SetTimer()のvoid CALLBACK EXPORT Timer Proc(HWND hWnd,
UINT nMsg,UINT nIDEvent,DWORD dwTime)の設定の仕方を教えて
ください。
0816デフォルトの名無しさんNGNG
関数つくって、そのポインタを引数として渡せばいいんだろ。
メソッドにしてコンパイルエラーになる、という話か?
0817デフォルトの名無しさんNGNG
>>816さんどうもありがとうがとうございます。
ただ単純にわからなかっただけです。
0818 ◆277YSPPE NGNG
C++ってなんて読みますか?
”しーぷらすぷらす””しーぷらぷら””しーぴーぴー”etc...
あとprintfは?
”ぷりんとえふ”ぷりんとふ”とか。
0819デフォルトの名無しさんNGNG
>818
お前の書きこみはスレを腐らす
0820デフォルトの名無しさんNGNG
>>818
しーぱやぱや
0821デフォルトの名無しさんNGNG
しーぷらぷら、ぷりんとえふだよ。
0822デフォルトの名無しさんNGNG
>>820
こんどからその呼び方を採用するよ
0823 NGNG
DIBからJPEGに落とすフリーのライブラリとかないかぇ?
0824デフォルトの名無しさんNGNG
せぷりゅぷりゅ
です。
0825 823 NGNG
Intelのやつちゅかいましたぁ。ばぶぅ。
徹夜の甲斐があって、ちゃんと動かせました。
ImageMagickはなんかしらないけど、
bmpからjpgに変換するときメモリリークしてたんだが、
原因知ってる?


0826デフォルトの名無しさんNGNG
winsockでデータをsendしたいんですが、これのの引数は
*charなんですよね、文字列じゃなくて構造体とかを
渡したい場合はどうなるんでしょう?ためしに(char*)で
キャストしてみたけどだめでした。
0827デフォルトの名無しさんNGNG
構造体をchar*にキャストって
あんた・・・
0828デフォルトの名無しさんNGNG
どうなってほしくて、
何がどうだめだったんだ?
0829デフォルトの名無しさんNGNG
sendの引数で構造体がわたってほしくて、
(char*)でキャストできなかったんだろ
0830デフォルトの名無しさんNGNG
そうです>829
解法お願いします。
>827
そんなにやばい考えですか?(^^;
0831デフォルトの名無しさんNGNG
ローカルホスト相手とか、同一アーキテクチャの同一の
コンパイラからできた鯖とクライアントなら、渡るんじゃないの?
まぁ、たしかに、設計は逝ってよしだがな。
0832デフォルトの名無しさんNGNG
普通はみんな素直に文字列を渡してるってことですか。
0833デフォルトの名無しさんNGNG
>>830
ダメだったっていうのは、全くデータが送られなかったのか、
上手くデコードできなかったのか、どっち?
0834デフォルトの名無しさんNGNG
>>833
コンパイルできなかったです。
0835デフォルトの名無しさんNGNG
まさか、
typedef struct data { double a, b, c };
data datum={5.0,1.0,2.0};
send( (char*)datum, sizeof( data ) );
とかやったんじゃないだろうな。だったら、処置無しだぞ。
0836デフォルトの名無しさんNGNG
そんな感じでやりましたが。
処置なしってどういうことですか?
0837デフォルトの名無しさんNGNG
send( (char*)datum, sizeof( data ) );
send( (char*)&datum, sizeof( data ) );
のちがいが判らない香具師デスカ?
0838デフォルトの名無しさんNGNG
キャストについては
どういうことかわかってる?
0839デフォルトの名無しさんNGNG
send( (char*)(&datum), sizeof( data ) );
0840デフォルトの名無しさんNGNG
下のほうを使えばいいんですね。
やってみます
0841デフォルトの名無しさんNGNG
>>840
 何故そうすればいいか理解しないでそういうプログラム書くのは
やめれ。問題が起こったときに対処できない。
0842デフォルトの名無しさんNGNG
いや、つーか、構造体をそのままソケットで送るなよ。
0843デフォルトの名無しさんNGNG
じゃあやっぱり文字列に直して送れっつーことですか。
0844デフォルトの名無しさんNGNG
少し本でも読んで
そのへんを勉強しなおせば
答えはおのずと
0845元VB厨房NGNG
クラス内で使う関数で、
CList型、もしくはCStringList型を返すようなのを作ろうとしているのですが、
なかなかうまく行きません。
CList型だと、シンタックスエラーだとでてしまい、CStringList型だと
演算子"="がオーバーロードされていないため失敗します。
うまい方法はないでしょうか。
それともコレクションを値で返そうとしている漏れは逝ってよしでしょうか。
0846デフォルトの名無しさんNGNG
STLで返すとか。
0847デフォルトの名無しさんNGNG
VC++6で以下のクラスがコンパイルできません(g++ではOKでした)。
エラーメッセージは、定義されていない基本クラス
(Base<Elem1*>とBase<Elem2*>)が宣言されているとのことです。
コンパイラオプションなんかで対応できるのでしょうか?

---
template<typename T>
class MyClass {
 template<typename E>
 class Base;
 class Derived1;
 class Derived2;

 class Elem1 { Derived2* mElem2; };
 class Elem2 { Derived1* mElem1; };

 template<typename E>
 class Base {};
 class Derived1 : public Base<Elem1*> {};
 class Derived2 : public Base<Elem2*> {};
};
0848847NGNG
ごめん。
よく判らないけれど先頭の template<typename E> class Base;
を消したら通った。ふご。
0849デフォルトの名無しさんNGNG
失礼します・・・・

BYTE *a;
中身 a[0]=1
a[1]=2
|
a[9]=10
の内容を
BYTE *b;
にそっくりコピーするにはどうしたら良いのでしょうか?
よろしくお願いしますm(__)m
0850デフォルトの名無しさんNGNG
>>845
参照使え
0851デフォルトの名無しさんNGNG
mallocして、memcpy。
個人的には、std::vector<BYTE>とかにすることを
おすすめするが。
0852デフォルトの名無しさんNGNG
俺はmemmoveだあ
0853849NGNG
>>851
>>852

ありがとうございますm(__)m
なんか便利関数があるのかと思い全く思いつきませんでした。
かなり助かりました。ふぅ。
0854デフォルトの名無しさんNGNG
>>852
この場合、memmoveにする意味がないだろ
0855デフォルトの名無しさんNGNG
>>854

それはなぜ??
0856デフォルトの名無しさんNGNG
>>855
aとbが重なってない(だろう)から
0857デフォルトの名無しさんNGNG
mallocするなら、srcとdstが かぶるわけない、ってことでしょ。
0858デフォルトの名無しさんNGNG
>>855
mallocで新しく確保した領域が、元々あった a の指す先と重なってることはあるまい。
0859デフォルトの名無しさんNGNG
領域が重ならなければmemcpyでよし、mallocするなら領域は重ならない。
0860858NGNG
あー、かぶりまくり。。。。
0861デフォルトの名無しさんNGNG
要するに、基本ですってことね(w
0862デフォルトの名無しさんNGNG
>>856-859がジサクジエーンだったらワラウが…
0863デフォルトの名無しさんNGNG
memcpyはないものと思え
0864デフォルトの名無しさんNGNG
ためになるのう・・・
0865 NGNG
スレ違いかもしれないけど、MSDNをインストールしようとするとダイアルアップが
起動するのは何故? 思わずキャンセルしちゃったけど。まさか自動でMSにメール
とか送信したりするの?
0866デフォルトの名無しさんNGNG
↑気味はワレズでも使っているのかね
そうビクビクしなくてもいいじゃないか(ヒヒヒ
0867 NGNG
ライセンス使用書とかはあるけど、秋葉で安く買った怪しい奴。
なんとかなくキャンセルしただけだから、別に問題がないなら
インストールしてしまうけど。
0868デフォルトの名無しさんNGNG
>>867
いくらで買ったの?
VisualC++5.0エンタープライズ版が
秋葉で7000円位で売っていたのを
昔見たことがある。
0869デフォルトの名無しさんNGNG
マルチスレッド初心者なのですが、よければ教えてください。
CreateThread()を使ってマルチスレッド化するとき、
注意しなければならないことといえば
ファイルやメモリの「同時書き換え」だけでしょうか?
ファイルの読み込みとか変数の同時参照(?)とかは
大丈夫なのでしょうか?
(デバイスコンテキスト関連に注意するというのはどこかで聞いたような・・
厨な質問ですみません、よければアドバイスお願いします
0870デフォルトの名無しさんNGNG
>>869
いちいち注意点を具体的に挙げてればきりがないと思うな。

要するに、TLS と auto 変数以外の「何か」を使うときは必ず、
「もしかして他のスレッドが…?」と、まず心配してみることが肝要かと。

あと、MSDN は必ず調べるべし。
DLL を使う(or 作る)なら、リンクするライブラリにも注意。
…挙げてたら本当にきりがない。
0871デフォルトの名無しさんNGNG
スレッドは超便利だが、デバッグがややこしくなると言う諸刃の剣。
だがあえて初心者にお勧めしたい。いいトレーニングになるので。
0872 NGNG
ああ、きのうダイエーで購入しVC++のバージョンが古かったんだよ。
VC++のバージョンは6.0なんだけどね、付属しているSPが3なんだよ。いやまじで、
そんで、あれだよ、MSNDの無料クーポン券の有効期限が200101231に切れてるの。
さすがダイエー、むかし、DVDプレイヤーかったとき、
どっかの親バカが自作した自己満足のお子様ビデオが入ってたときには、バッタやから
仕入れたんだな。と仕事の関係がアレだからすぐに気づいたから、返品交換してもらったけど、
今回はレシート捨てちまったし、現金でかったから、クレジットの明細がないんだよ。鬱だ。死にたい。
ダイエーは癌だ。速く倒産しろ!!ファック!!
0873デフォルトの名無しさんNGNG
にまんじゅうねん12月31日?
などと、今日一日を振り返り、反省してみる。
0874869NGNG
>>870
あ、なるほど、注意すべき部分ってMSDNに結構書いてあるんですね
DLLもよく調べてみます。
どうもありがとうございます〜。
0875 NGNG
aああああ鬱だ20011231だ。他にも誤字が脱字があああああああ
鬱だ死にたい。
        
0876デフォルトの名無しさんNGNG
>>872
> 付属しているSPが3なんだよ
SP は最新版が MS の Web サイトから落とせる。心配するな。

MSDN Library の件はご愁傷さまだが、とりあえず MS に掛け合ってみなよ。
0877___NGNG
猫でもわかるhttp://www.kumei.ne.jp/c_lang/mfc/mfc_01.htm
でMFCの勉強をしようと思って
第一回のソースをそのまま打ち込んでみたのですが、
#include "afxwin.h"

class CMyWindow : public CFrameWnd
{
public:
CMyWindow();
};

CMyWindow::CMyWindow()
{
Create(NULL,"猫でもわかる",WS_OVERLAPPEDWINDOW);
}

class CMyApp : public CWinApp
{
public:
virtual BOOL InitInstance();
};

BOOL CMyApp::InitInstance()
{
m_pMainWnd = new CMyWindow();
m_pMainWnd->ShowWindow(m_nCmdShow);
m_pMainWnd->UpdateWindow();
return TRUE;
}
CMyApp myApp;

コンパイルはできるが実行時にリンカが
nafxcwd.lib(thrdcore.obj) : error LNK2001: 外部シンボル "__endthreadex" は未解決です
nafxcwd.lib(thrdcore.obj) : error LNK2001: 外部シンボル "__beginthreadex" は未解決です
Debug/SDKTOMFC.exe : fatal error LNK1120: 外部参照 2 が未解決です。

この3つのエラーを出してしまいます。
VCのバージョンのせい(使っているのはVC6)
かもと思っているのですが、解決策ありましたら教えてください。
0878デフォルトの名無しさんNGNG
>>877
激しくスレ違いと思うが、何か?
0879デフォルトの名無しさんNGNG
>>878
誘導

■ VisualC++(MFC限定)相談室 2■
http://pc.2ch.net/test/read.cgi/tech/1008031675/
0880やーNGNG
SCribbleチュートリアルってどこにあんねん・・・・
MSDNの中にあるやつなんか・・?これなんか?
これはチュートリアルのチュートリアルにもみえんねんけど、
これがチュートリアルなんか・・?
0881デフォルトの名無しさんNGNG
いつのまにMFCをはじめていたんだ
0882デフォルトの名無しさんNGNG
質問があります。
ファイルのバイト数をブロック毎に格納して行きたいのですがファイルによって可変なので
CDWordArrayでAddしていってるんですけど多分、領域が足りずにエラーが発生します。
SetSizeの効果もいまいちなのでどうしたら良いのかと思ってます・・・。
ベストな手段が有ったらご教授お願いします。
0883デフォルトの名無しさんNGNG
>>882
エラーってどんなエラー?
0884デフォルトの名無しさんNGNG
>882
質問の意味がよくわからんのだけど
要は4バイト毎にシークすればいいのではないのかね?
ちがうの?
0885デフォルトの名無しさんNGNG
STL.portをVC++で使おうと思い

4.5.1をダウンロードして、展開 (場所は...\Microsoft Visual Studio\VC98\Include\STLport-4.5.1\)
VC++のオプションのディレクトリ設定のところで一番上に
C:\PROGRAM FILES\MICROSOFT VISUAL STUDIO\VC98\INCLUDE\STLPORT-4.5.1\STLPORT
を追加

iostreamは元のを使うってことで
...\STLport-4.5\stlport\stl_usr_config.hの最初のほうにある 
# define _STLP_NO_OWN_IOSTREAMS 1 から#を削除し、コメントでなくす とか

stlport/stl/_site_config.h の上の方に
#define _STLP_NO_OWN_IOSTREAMS とか
やってみたりしたのですが、コンパイル時に

:\program files\microsoft visual studio\vc98\include\stlport-4.5.1\stlport\new(50) : fatal erro
r C1083: インクルード ファイルがオープンできません。'../include/new(THIS_FILE, 50)': No such file or dire
ctory

となってしまいます。../include/newが無いとか言われてるので vc99\include\stlport\
に置いてみたりもしましたが、同様の結果でした。
また、iostreamをコンパイルしてインストールし上記の#defineをしない場合でも同様でした。
そんなこんなで、徹夜状態の私を救ってください。お願いします。
0886885NGNG
../include/newが無い
↓
../include/newのエラーの行は
# include _STLP_NATIVE_CPP_RUNTIME_HEADER(new)
でnewが無い
0887デフォルトの名無しさんNGNG
README.VC++.html見れば解決するかと。
0888888NGNG
VC++でdoubleより範囲の広い数を扱える方法はありませんか?
有効桁数は同じでもいいのですが…
0889デフォルトの名無しさんNGNG
広い数?
0890デフォルトの名無しさんNGNG
CString型のメンバ変数からchar型の代入はキシュツですが、
CString型のメンバ変数からchar型の配列の代入はどうすればいいのでしょうか。
0891デフォルトの名無しさんNGNG
>>890
_tcscpy または lstrcpy
0892デフォルトの名無しさんNGNG
>>890
こんなかんじでもいける気がする。
LPTSTR str=new char[10];
CString cstr("hogege");
str=(char*)LPCTSTR(cstr);
0893日下部圭子 ◆ib749tYo NGNG
In article >>892, デフォルト名無しさん/892 wrote:
> こんなかんじでもいける気がする。

だめですね。

----------------------------------
||//
(@_@) Kusakabe Keiko
----------------------------------
0894デフォルトの名無しさんNGNG
>>893
何が?
0895 NGNG
CString::GetBuffer で取り出さないとだめ・・・だったと思う。
0896デフォルトの名無しさんNGNG
>>892
ネタ?
0897デフォルトの名無しさんNGNG
フォートランってどうよ?
0898た。NGNG
こんなんでどうよ?
CString strTime;
CTime t = CTime::GetCurrentTime();
strTime=t.Format("%H:%M:%S");
LPTSTR p1 = strTime.GetBuffer( 255 );

0899デフォルトの名無しさんNGNG
エクスプローラのwindowを閉じるには
どうすればいいんでしょうか?
WM_CLOSEを送ってもビープ音が鳴るだけなんですが。
0900デフォルトの名無しさんNGNG
>>898
GetBuffer()は、リリースしないといけないからめんどくさい。
0901デフォルトの名無しさんNGNG
変更しないならリリースしなくていいんじゃないの?
0902 NGNG
>>900
ほかに方法あるのだろうか?
0903デフォルトの名無しさんNGNG
>>901
リリースは省略できないよ。
0904デフォルトの名無しさんNGNG
>>902
なるだけCStringやconst char*系を使うようする。

一部にchar*系を要求するAPIがあるけど、そういうときは
char*のバッファにコピーして使う。
0905デフォルトの名無しさんNGNG
>>892
> LPTSTR str=new char[10];

このメモリはいつdeleteするのだろう。

0906デフォルトの名無しさんNGNG
代入のみが目的なら、>>892も有りだとおもわれ。
0907た。NGNG
>>900
そんなこといったら、
cは関数終了に
}
で閉じなきゃ成んないからめんどくさい。
ってのと同じレベルかと。
GetBufferしたら勝手にこびとさんがReleaseBufferしてくれるように
手を鍛えると良いかと。

#でもMFC周りは色々手続きが煩雑でめんどくせーよな。
#Penなんかも切替えてもSelectObjectで元に戻すの
#忘れたりけっこうするし。
0908デフォルトの名無しさんNGNG
>>905
リークしてますね。
0909た。NGNG
>>908

そう言うときはいつもお世話になってるBoundsChecker。
結構うそ吐き出すけど。
MFCのなかでリークしてるなんてどないするんぢゃ。
0910デフォルトの名無しさんNGNG
>>904
その場合は LPCSTR にキャストして直渡しでいいのでわ?
0911デフォルトの名無しさんNGNG
>>910
LPCSTRだとchar*にわたせない気が。
0912デフォルトの名無しさんNGNG
char*を要求するのって、リストビューのLVITEMとかでしょ。
読み書きで同じ構造体使うやつ。
そう言うのはモレも強引にキャストしちゃうけど。。
0913デフォルトの名無しさんNGNG
>>911
だからバッファにコピーするっていってるじゃん。
0914デフォルトの名無しさんNGNG
>>912
同感。MSNDに
「CString はメモリを節約するために、同じ値を持つ 2 つの文字列が
同じバッファ領域を共有できるようにします。
しかし、MFCを使用しないでバッファ領域の内容を直接変更すると、
両方の文字列が変更されてしまいます。」
とあるが、GetBuffer()はこれ対策なんでは・・などと思うわけで。
char*キャストして渡す分にはイイとおもう。
0915デフォルトの名無しさんNGNG
GetBuffer()をしてリリースしないとか、
char*に強引にキャストするとか、ヤバい奴がけっこういるな。
0916デフォルトの名無しさんNGNG
>>914
GetBufferをすると、
インスタンス内のポインタが同じバッファを指していると、
コピーされるみたいですね。
0917デフォルトの名無しさんNGNG
とりあえず、CString::operator LPCTSTR() と、CString::GetBuffer() を見る。
0918デフォルトの名無しさんNGNG
↑あ、ソースのことね。m_pchData は LPTSTR型だね。
0919デフォルトの名無しさんNGNG
>910は LPTSTR と言いたかったんだろ。
そんなキャストするよりはコピーして渡した方がいいというのには同意。
0920デフォルトの名無しさんNGNG
リストビューを詳細表示したときにヘッダーをダブルクリックすると
カラムの幅を自動調節してくれますが、
これをコードから行うにはどうしたら良いですか?
0921デフォルトの名無しさんNGNG
ふつー、
CString cstr = "hogehoge";
char *str = _strdup( (LPCSTR)cstr );
...
free(str);
0922デフォルトの名無しさんNGNG
>920
LVM_SETCOLUMNWIDTH で LVSCW_AUTOSIZE。
0923デフォルトの名無しさんNGNG
>>922
できました!どうもありがとうございます。
0924デフォルトの名無しさんNGNG
質問です。CFileDialogでファイルを選択するときに、前回の設定
(詳細、一覧、大きなダイアログ)などを記憶させる方法を教えてください。
詳細の場合はソートの方法も復旧させたいのですが、方法がわかりません。
0925デフォルトの名無しさんNGNG
>924
シリアライズしる!
0926演算(比較)速度NGNG
boolと BOOLって、やっぱ BOOLの方が速い?
0927デフォルトの名無しさんNGNG
なんでBOOLのほうがはやいの?
0928デフォルトの名無しさんNGNG
x86のワード長の関係?
0929926NGNG
っていうか、実際試してみりゃいいんじゃん。
 BOOL a;
 for(int i=0; i<100000000; ++i)  a = TRUE;
と
 bool a;
 for(int i=0; i<100000000; ++i)  a = true;
を比較したら、boolの方が、平均で 150msぐらい速かった(゜ε ゜ なんと。
0930デフォルトの名無しさんNGNG
基本的になんでもプログラムって大概小文字のほうが速い。
0931926NGNG
 BOOL a = TRUE;
 int b;
 for(int i=0; i<100000000; ++i) if(a) b=1;
とやったら、今度は BOOLの方が平均 200msは速かった。
代入は bool、比較は BOOLの方が速い?
0932デフォルトの名無しさんNGNG
>>931
そんなん代入はBOOLの方が3バイト分(VC++6とかでは)でかいんだからあたりまえやん
比較は>>928の言うとおり。
0933デフォルトの名無しさんNGNG
>>929,931
volatile無くてダイジョブか?

boolって!0な値を代入するとぜんぶ1に変換されるんだな・・・
今まで知らんかった・・・
0934デフォルトの名無しさんNGNG
>volatile無くてダイジョブか?
デバッグビルドだったので、ダイジョブ(だよね?)
0935いさましいチビNGNG
新スレ作りました。
http://pc.2ch.net/test/read.cgi/tech/1011615035/l50
0936デフォルトの名無しさんNGNG
このスレを使い倒そうぜ!!
0937デフォルトの名無しさんNGNG
eMbedded VC何ですが、ブレークポイントを置いても実行時に
one or more breakpoint cannot be set.みたいなエラーが出て、
白ブレークポイントにされてしまいます。
クリーンとかしてみたけど改善しません。
なにが原因なんでしょか?
0938937NGNG
ガーン、ブレークポイントを置きたかったクラスをまだ使ってなかった ;(
間抜けでした。
0939924NGNG
>925
返答どうもです。CFileDialogにはSerialize()が実装していないので、
出来ないみたいなんですが・・。
0940 NGNG
>>876
MSにTELしたら、20011231に期限が切れたクーポン券が同封されたパッケージを
購入した人は一月中に登録すればOK。だと。
0941デフォルトの名無しさんNGNG
CMenuExtension::QueryContextMenu なんですけど、
return で返す値が今一つよく分かりません。

#define ID_MENU0 0
#define ID_MENU1 1
#define ID_MENU2 2

STDMETHODIMP CShellExtension::QueryContextMenu(HMENU hMenu, UINT indexMenu, UINT idCmdFirst, UINT idCmdLast, UINT uFlags)
{
 ...
 InsertMenu(hMenu, 0, MF_STRING | MF_BYPOSITION, idCmdFirst + ID_MENU0, "mめにゅ0");
 InsertMenu(hMenu, 0, MF_STRING | MF_BYPOSITION, idCmdFirst + ID_MENU1, "mめにゅ1");
 InsertMenu(hMenu, 0, MF_STRING | MF_BYPOSITION, idCmdFirst + ID_MENU2, "mめにゅ2");

とした場合、

 return MAKE_HRESULT(SEVERITY_SUCCESS, 0, USHORT(ID_MENU2 - ID_MENU0 + 1));

で良いの? どうも自信がなくて。
0942941NGNG
↑ あ、IContextMenu::QueryContextMenu です。
0943885NGNG
>>885 >>886
http://www.stlport.com/dcforum/DCForumID6/603.html
こんな投稿があったので試してみましたが、やはり同じです
_STLP_NATIVE_INCLUDE_PATH に設定してみても同じでした
同様の症状がでて、解決した方、救ってください。
0944デフォルトの名無しさんNGNG
質問させて頂きます。COLORREF型のRGBマクロの値を判定するにはどうすれば
よいのでしょうか。私が参考にしている本には、

COLORREF color;

if(GetBValue(color) == 0 && GetBValue(color) == 0
  && GetBValue(color) == 0)

となっていて、白と黒は判定できるのですが、それ以外は反応無しなのです。
どうすればよいでしょうか?
0945さくらNGNG
あのー、ちょっといいですか?あー・・・、でも無視されそう・・・でも質問します!
ダイアログに貼り付けたリストボックスで、アイテムが選択されたときに送られるメッセージは何ですか?spy++で調べてもたくさんですぎてわかりませんでした。
あと、選択されているアイテムが変わったときに送られてくるメッセージも教えてくださ〜い(>А<)
0946デフォルトの名無しさんNGNG
LBN_SELCHANGE。
0947さくらNGNG
>946
あっ、やったぁできましたぁ!ありがとうございます〜☆(^Э^)ヾチュッ
0948デフォルトの名無しさんNGNG
つぎからきちんとMSDNで探そうな。あ、それと、マトモな情報は
やっぱし英語のヤツしかなかったりするから。
0949デフォルトの名無しさんNGNG
>>948
ム板マ板にいるプログラマ全員でかかれば、MSDNライブラリの
英文を全部和訳出来そうな気がする、と言ってみるテスト。

そんなことが出来る暇なプログラマはDQNばっかりだよ、
と返ってきそうな採点結果。
0950デフォルトの名無しさんNGNG
>>949
そんなことが出来る暇なプログラマはDQNばっかりだよ
ローボコン100点
0951号泣マンNGNG
ListViewコントロールのサブアイテムの編集方法ってあるのでしょうか?

自力で検索しましたが、
http://codeguru.earthweb.com/listview/edit_subitems2.shtml
みたいな英語のページしかないのでめげています。
私はMFCを使わない(使えない)ので、ちょっとショックです。

WindowsSDKのソースがあるとうれしいのですが。。。

宜しくお願いいたします。
0952デフォルトの名無しさんNGNG
> 私はMFCを使わない(使えない)ので、ちょっとショックです。
猫に訊くとか、ATL/WTLのソース読むとか、MFCのソース読むとか、
方法は幾らでもあるだろうに。
0953デフォルトの名無しさんNGNG
このスレをageた時点でもう……逝っていい
0954デフォルトの名無しさんNGNG
それよりもなぜコテハンにする必要があるのだろうか。
0955デフォルトの名無しさんNGNG
「クソスレ・クソレス、コテハンの法則」
があるから、それに従ったんだろう。
どーでもいい事をコテハンで書き込む連中には激しく萎え。
0956号泣マンNGNG
本当はおまえらわからないんだろ!(藁)

あ〜あ期待した折れが馬鹿だったよ。

じゃーなー
0957デフォルトの名無しさんNGNG
>>956
一万円で、サンプルを書いてあげるよ。
0958デフォルトの名無しさんNGNG
>>956
質問は新スレでしろよ。
それに煽るな。

サンプルがMSDNの中にある。
InitListViewImageLists でクエリーかけてみろ。listview.cが見つかる。

ただ、個人的にはListViewのサブ項目の編集は使いにくいので
別の方法を模索するのを勧めるけどな。
0959デフォルトの名無しさんNGNG
>>958
間違ってこっちに質問が来ないように、埋め立てカキコを
しちゃあかんのだろうか?

と、聞いているフリをして埋め立てをちょっと行ってみる。
0960太郎NGNG
すいません。
VCを勉強しているのですが。
よく分かりません。
単なる、ダイアログベースで作成して、
プロパティーページを出そうとしているのですが、
デバックで一度動いて、二度目で落ちてしまいます。
クラスは、CPropertyPageとCPropertySheetを使っています。

使用しているのは、VALUESTAR VL700R/5のマシン、
OS WINDOWS MEです。

ひとつ分かっているのは、一度、ツールバーのプロパティーを
動かしたら、デバックで死ぬことは、ありません。
VC6、サービスパック5をインストールしています。

よろしくお願いします。
0961デフォルトの名無しさんNGNG
>>959
埋まると dat 落ちしてしばらく参照できなくなる。

>>960
次スレに移ってください
VisualC++相談室 6
http://pc.2ch.net/test/read.cgi/tech/1011615035/
0962次郎NGNG
Visual C++ 6.0にバグがあると思うのですがみなさんはどう思います?


??=include <stdio.h>
??=if 1
main()??<printf("Hello??/n");??>
??=endif

がコンパイルできないんです。


??=include <stdio.h>
??=if 1
main()??<printf("Hello??/n");??>
#endif

だとコンパイルできるですけれど・・・・・
みなさんはどう思います?
ちなみに??ばっかりですけれど文字化けではありません。
0963デフォルトの名無しさん NGNG
秀丸のメニュー右には行桁が表示されていますが
同じようなことをするにはどうすればいいでしょうか。
0964( _ 。。) _ バタ。 ◆lUd9keO2 NGNG
>>963
現在のテキストカーソル位置の取得なら
MAGURO ONLINE にサンプルコードがあったと思ったが…?

(実際、中身見たことないで 確認してくれ >>963 よ )
レス数が950を超えています。1000を超えると書き込みができなくなります。