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

Windows Programing for C/C++(Not MFC)

レス数が1000を超えています。これ以上書き込みはできません。
00011NGNG
似たようなスレで「WIN32API 質問箱」がありますが
Windowsプログラムを作るにあたって、API以外の疑問や質問を
ぶつける為に作りました。

自分もMSの摩訶不思議な規則や仕様(バグ)等に悩まされてます。
質問や疑問以外にも、プログラミングしていて気付いた事や発見等も
書き込んでくれると有難いです。

あ、自分の開発環境はVisualC++でMFCを使ってないので
C/C++でMFC無しの方向でお願いします。
00021NGNG
さて、自分でスレ立てておいて、昔から疑問に思ってる事があります。
それは、最初に渡されるHINSTANCEの扱いです。
Windowsプログラム等を見ると、迷わずグローバル変数を使ってますよね。
最近までは、グローバル変数を定義して、渡された瞬間に値を代入してましたが
最近は、GetWindowLongを使ってウィンドウハンドルから求めてグローバル変数を
使わない方向にしています。皆さんは、どうされてますか?
0003デフォルトの名無しさんNGNG
2げとずざ。
MFCなしでC++って人いるの?
0004デフォルトの名無しさんNGNG
2ゲトー
00051NGNG
>>2

>Windowsプログラム等を
Windowsプログラムのサンプル等を
00061NGNG
>>3
自分はMFC無しでC++でプログラムしてます。
やはり、CよりC++の方が慣れてくると色々と
便利ですし…(その分…いや倍位、短所もあるけど)

どちらかというと、不満無くMFCを使ってる人の方が不思議です。
0007デフォルトの名無しさんNGNG
>>2
漏れはグローバル変数に入れてしまってるが、確かにグローバル変数は使わない方向で逝きたい…。
が、ウィンドウハンドルから取得って、そのウィンドウハンドルは、何処から取得するの?
0008デフォルトの名無しさんNGNG
>>6
誰も不満無くMFCを使ってる奴なんかいねーよ。
みんな、不満言いながらMFC使ってんだよ。
0009デフォルトの名無しさんNGNG
GetInstance()
00103(まぼろしの2)NGNG
>>8 わらた。はげど。
0011デフォルトの名無しさんNGNG
>>10
禿同。
MFCだけでなく、Windows自体が…(以下略)
0012デフォルトの名無しさんNGNG
>>2
オレの記憶違いでなければ、Win32以降のWinMainに渡されるHINSTANCの値は
ともに無意味だっと思うが。だからオレは固定にしている。
0013デフォルトの名無しさんNGNG
>12
今まで無事でよかったね。
0014デフォルトの名無しさんNGNG
>>8に激しく同意。
0015デフォルトの名無しさんNGNG
>>13 ん゛HINSTANCの値が何を示しているのかわかかって使用してい
るつもりだがなにか問題があるか? 具体例を示してくれ。
0016デフォルトの名無しさんNGNG
理解してんならいんじゃないの
0017デフォルトの名無しさんNGNG
俺も早く>>8みたいなかっこいいレス付けれるようになりたいよ
00181NGNG
>>12
>>13
>>15

なんとなく、わかってたんだけど、実験してみて初めて知った。

BOOL CALLBACK EnumWindowsProc(HWND hWnd,LPARAM lParam){
 TCHAR szWindowText[200], szBuff[300];
 GetWindowText(hWnd,szWindowText,200);
 if(szWindowText[0]==0) return TRUE;
 sprintf(szBuff, "%s - %08x",szWindowText,GetWindowLong(hWnd,GWL_HINSTANCE));
 SendMessage((HWND)lParam,LB_ADDSTRING,0,(long)szBuff);
 return TRUE;
}
LRESULT CALLBACK TestWindowProc(HWND hWnd,UINT uMsg,WPARAM wParam,LPARAM lParam){
 static HWND hList;
 switch(uMsg){
  case WM_CREATE:
   hList = CreateWindow(TEXT("LISTBOX"),NULL,WS_CHILD|WS_VISIBLE|LBS_STANDARD,0,0,0,0,hWnd,NULL,(HINSTANCE)GetWindowLong(hWnd,GWL_HINSTANCE),NULL);
   EnumWindows(EnumWindowsProc , (LPARAM)hList);
   return 0;
0019デフォルトの名無しさんNGNG
おもいっきり WIN32API とかぶってるじゃないか
0020デフォルトの名無しさんNGNG
かぶってますね。続きは WIN32API でどうぞ。

http://pc.2ch.net/test/read.cgi/tech/1017072275
00211NGNG
>>8
>>10
>>11
>>14
>>17
皆さん、Windowsプログラムは仕事でしてるんでしょうか?
自分の場合は仕事でする場合は1人か、複数人でも幸運にも
MFCを使わない場合が多いのです。
あとは、趣味でプログラムをする時ですが、
この時はもちろん、MFC無しです。

仕様とかで「MFCを使う事」とかになってるんでしょうか?
それとも、もともとMFCを使って組んであって、それを引き継いだとか??
0022デフォルトの名無しさんNGNG
>>1 よ、スレタイトルと趣旨が異なっているぞ。

「C/C++で Windows programming をサポートするフレームワーク/ライブラリって知りませんか?
 有名なやつはいいです」

という質問なら理解できる。あるかどうか知らんけど。GTKがあるか。

> Windowsプログラムを作るにあたって、API以外の疑問や質問を
> ぶつける為に作りました。
> 自分もMSの摩訶不思議な規則や仕様(バグ)等に悩まされてます。

摩訶不思議な挙動はAPIの実装あるいは仕様が引き起こすものだ。
にもかかわらずAPI以外という限定は理解できん。

それから >>2 は明らかに WIN32API 逝きだ。

>>21
MFC使いに苛められたのか?
002312NGNG
12=14=15 なんだが。
>>21
わしは、仕事の関係でMFCを使用している。既存のコードがMFCなんでね。
その改修をやると仕方なしにMFCを使用せざるえない。

個人では、自作のライブラリーを利用している。

>>22
>摩訶不思議な挙動はAPIの実装あるいは仕様が引き起こすものだ。
>もかかわらずAPI以外という限定は理解できん
一部同意、確かにほとんどは、APIの実行結果に互換性がなく発生することが
多いな。
 ただ、ヘッダーファイルの構造体の定義の一部変更でおかしくなることもあるね。
わしが最近はまったのは、フリーの3Dライブラリーをわしのライブラリーで
使用としたらリンクが出来なかったことがあった。
リンクできないのは、3Dライブラリーで「#define STRICT」が定義していな
かったせいなのだが、最新のwindows.hでは「STRICT」を使用していない可
能性も考えられる。
そういうことを1は知りたいのではないか?と勝手に憶測するがね。

 













0024デフォルトの名無しさんNGNG
(余分な改行が説得力の無さを示してるようで…)
00251NGNG
>>22
そうですね。スレの趣旨とズレた方向に話を持っていってしまったみたいですね。
スレ立てた本人が、スレの趣旨と違う事を書いてたら駄目ですね…。申し訳ない。

ここのスレの趣旨はAPI以外のWindowsProgramに関する事、全てです。
言語はC/C++で非MFCという事で。別にMFC使いに苛められたい訳では無いです。
…が、書き方がソレっぽくなっちゃいましたね。

今、直ぐに「コレ」といった例が思いつかないのですが、プログラムを
していると、APIの純粋な疑問よりも、バージョンの違いから来る
動作の違いや、定義の違い等がありますよね?

あと、サンプル等ではAPIの動きを説明する為に、それに特化した不自然な
プログラムが載っている事が多々あります。しかし、Windowsプログラムには
独特のクセ等が多く、それを自然なプログラムだと自分で思っていて、後で
それが不自然なプログラムだった事に気付いたりする事は多いのではないでしょうか?

そういう疑問を質問して答える場が無いなー。と思ってスレ立ててみました。
>>2では、「HINSTANCEをどういう風に扱っていますか?」という疑問で
「HINSTANCEをどう取得すれば良いか?」という結果重視の質問ではありません。
その辺が「WIN32 APIスレ」と違う所だと自分で思っているのですが…。
0026デフォルトの名無しさんNGNG
>>1
MFC使ってるけど、GetWindowLong()使ってるYO!
それ以前にHWND hWnd = GetSafeHwnd();ってやって、Win32APIで処理してる。
単なるラッパならラッパ関数呼ばなくなった分だけ早くなんねーかな? とか思ってんだけど、実際はあまり変わんねー。
でもやる(藁
002712NGNG
>>24
ああ確かに、逝って来るわ。
0028デフォルトの名無しさんNGNG
>>22

>摩訶不思議な挙動はAPIの実装あるいは仕様が引き起こすものだ。
>にもかかわらずAPI以外という限定は理解できん。

漏れが思うに「WIN32API質問箱」の方も定義がいまいちだと思うYO!
例えば、ウィンドウの最大化ボタンとクローズボックスを非表示にして
最小化ボタンだけ表示させたい時に、質問するのは「WIN32API質問箱」か?
質問しても、「WM_NCPAINTを捕まえて自前で処理しろ!」と言われるのが
オチだろう。確かに、そうだけど実際それを実行するのは難しいし
質問者は、むしろ、「どう自前で処理をすれば良いのか?」という疑問に
進む事は当然だろう。しかし、それを質問すると「質問厨」とか言われて
おしまいだろう。

もしかしたら、他の意外な方法(効率とかは抜きで)があるかもしれないし
そういうAPIやメッセージを駆使して実現する事は、APIの質問からズレて
いるような気がする。

ここは、そういう趣旨のスレなのでは?…と勝手に漏れは推測する。
…というか、願う。漏れも、この手の疑問はいっぱいあるから。
0029デフォルトの名無しさんNGNG
>>22の言う
「C/C++で Windows programming を(略)」なスレなら(・∀・)イイ!。

マイナーな奴でこんなのはどう?

SOL++
http://home.att.ne.jp/green/atlan/sol2000/library.html

Motifにバイアスがかかってる感じのクラスライブラリ。

もう手に入らないけど、ソフトバンクから出てた
「Windows 95 SUPER CLASS LIBRARY」って本に
ついてたやつの最新版みたい。
0030デフォルトの名無しさんNGNG
>>1に質問だが
GetModuleHandle(NULL);でいけない理由は?
たとえば、ウインドウを持たないdllのインスタンスハンドルを得るにはどうしてる?
00311NGNG
>>30
特にGetModuleHandleでは、いけない理由はありません。

…というか、今までグローバル変数を定義して、
渡された瞬間に値を代入してました。Windowsのサンプルプログラムでは
ほとんどが、この方法になってると思います。(Windows APIバイブル等)

しかし、そうじゃなくてGetWindowLongを使った方がグローバル変数なんか
定義しなくても良いんじゃないのか?と、最近思った訳です。

GetModuleHandleですか…。それは気付きませんでした。
確かに、こっちの方がスマートかもしれませんね。
もしかして、GetModuleHandleでHINSTANCEを取得している方って多いんでしょうか?
それとも常識??自分が今まで気付かなかっただけ???
0032デフォルトの名無しさんNGNG
とりあえず、>>1のコテハンはやめてくれ。
0033デフォルトの名無しさんNGNG
http://www.asahi-net.or.jp/~cv8t-hdk/fox/fox-doc.ja/fox.ja.html
http://www.fox-toolkit.org/
こういうのは?
0034デフォルトの名無しさんNGNG
俺は逆にグローバル変数(って実際にはクラスでラップしたメンバー
だったりするが)を見直してる。

昔はグローバル変数等で管理している状態?と実際の状態がバグで
食い違ったり、APIで取れる情報を変数に抑えておくと、同じ情報を
二重に持っているみたいで嫌だったんで、APIで取得できる情報は
変数に押さえるのを極力やめていた...

が、しかし、パフォーマンスがでないんよ。結構頻繁に使用する
情報だったりすると、ちょっとした連想配列使った情報検索
なんかよりAPI呼び出しの方が高価みたい。

が、HINSTANCEは頻繁庭使わんか。
0035デフォルトの名無しさんNGNG
>>34
普通は頻繁に使う/ループ内で使う値は自動変数に一時的に保存するだろ。
0036デフォルトの名無しさんNGNG
HINSTANCEのやうなプログラムそのものが持つてゐる性質は、
グローバル變數になつて問題は無い、と思つてをります。

問題となる使ひ方は、処理の簡略化のため、データのやり取りに使ふ、
というやうな場合ではないですか?
003734NGNG
>>35
大体においてローカルで済ませられるならそのほうがいいでしょ。

でもwindowsのGUIはメッセージループに戻る必要があるでしょ。
でね、それをウィンドウ矩形毎回取得したり、GetWindowLong使ったり、
IsWindowVisible使ったり...つまりはそういうAPI叩きは遅いって事。

実際には独自HashMapでHWNDと関連づけたデータ構造から状態取得
したほうがえらく速かったという。

MFCとか使ってるならCWnd派生クラスのメンバ変数でも良いが、
MFCはメッセージループからしてとろいからなー。
0038デフォルトの名無しさんNGNG
>>37
まぁ、悪いとは言わないけどね。
外部アプリから勝手にウインドウスタイル変更されたりした場合に、
内部の状態と食い違いが生じてくるでしょ。
003934NGNG
>>38
そうなのよねー、そこらへんが悩みどころ。
性能とのトレードオフっちゅー事でしょーか。
かといって昔の俺の様に、何でもかんでもグローバル
データや情報の二重管理は良くないって思っている人結構
いないですか?

実際にはバグ以外では有り得ないって事は言えないですが、
子ウィンドウが外部アプリで勝手にクローズされたり等
対話アプリとして作っている以上きりがないので
(そんな事コーディングで毎回チェックしてられねーっ
ちゅうねん)俺は使用頻度が高い情報はオフラインキャッシュ
とゆーか、プログラムのメモリに置くのもOKだと思う。

#DBのファイルを稼動中に書き換えて、DBのメモリ内のキャッシュ
とファイル内の情報が食い違うようなものだと思うが。

MSのアプリや市販ソフトも自作アプリからスタイル変更したり
SW_HIDE等しても無視されちゃってるしね-。
#逆に不正操作(チート)防止の為にわざとやってるとしか思えない
様な挙動をしたりして。
00401NGNG
>>32
了解です。スレの趣旨がわかった方が少数でもいるみたいなので、
>>1は、ここで消えます。(何か自分に対する質問があれば別ですが)
次回からの自分の書き込みは「デフォルトの名無しさん」という事で…。
0041デフォルトの名無しさんNGNG
普段からあらゆる状況を想定して、ウインドウが閉じられても自動リカバリしたり、
スタイルもきっちり規定のものに戻すコードを書いているんだが、くどいのかな、やっぱり。
0042デフォルトの名無しさんNGNG
ウィンドウの属性が実行中に強引に変えられたり
するものは考えなくて良いと思うのだが、
最近、思ったのは「ウィンドウの境界の幅」。
結構、かなりのアプリが対応してない。
今まではデフォルトの幅が1だったけど、
XPのデフォルトの幅が5位(詳細忘れた)になってるので
気付いて慌てて直したアプリも多い筈…。
0043デフォルトの名無しさんNGNG
> ウィンドウの属性が実行中に強引に変えられたり
> するものは考えなくて良いと思うのだが、

考えろよ… 対した作業量じゃないだろ。
いくつかのメッセージに反応すればいいだけだし。
0044デフォルトの名無しさんNGNG
>>34-39
俺は、グローバル変数は極力使わない。
なんでもAPI等を使って取得するようにしてる。
確かにパフォーマンスは悪い。

どうしても遅さが気になる時はその部分だけ一時的に
グローバル変数を使用している。
後々、PCのパフォーマンスが上がり、その遅さが
気にならない程度になってきた時にバージョンUPの時等に
APIの取得に切り替える。

そういう切り替えが楽にできるような書き方をしている。
0045デフォルトの名無しさんNGNG
>>43
いくつかのメッセージと言われてもcase by caseだからなぁ…。
当然、システム標準で変えられるような属性(画面のプロパティ等で)は
対応しないとマズイと思うのだが、それ以外は無視している。
昔、自分の作ったアプリで、子ウィンドウにWM_DESTROYを投げると
落ちるというバグが報告されたが、無視した。
そんなの、システム標準のツールじゃできない事だし。

>>43の言う「いくつかのメッセージ」というのは例えばどんなんだ?
004643NGNG
>>45

> 昔、自分の作ったアプリで、子ウィンドウにWM_DESTROYを投げると
> 落ちるというバグが報告されたが、無視した。
すげーなぁ。そんなこと言ってくる奴がいるのか…
そりゃ無視だろ。

いや俺が言ってるのも、システム標準で変えられるような属性(画面のプロパティ等)
って奴だよ。 >>42の話の中でWindowの幅とか出てたから。
004741NGNG
>>45
43じゃないが。
システムでいろ設定を変えたりするとWM_SYSCOLORCHANGEが投げられてくるが、
3D ColorChanger 3000とかを使って色を変えると、
投げられるのはWM_NCPAINTとWM_PAINTだけだったり、

どんなときに変更されるか予測がつかないから、はっきり言って全部に対応するのは面倒だね。
俺の場合は、
WM_PAINT/WM_NCPAINT/WM_NCACTIVATE/WM_NCHITTEST/WM_SIZE/WM_MOVE/WM_STYLECHANGING
でシステムの設定やスタイルをチェックして、さらにタイマーを使って5秒ごとに監視してる。
0048デフォルトの名無しさんNGNG
>47
随分手が込んでるな。デスクトップマスコット系アプリ?
0049デフォルトの名無しさんNGNG
>>47
仕事だったら「WM_SYSCOLORCHANGEを投げてこないアプリが悪い」と言って
無視するなぁ。それに対応する為に色々な事やって、パフォーマンスの低下や
新たなバグを生む原因にしたくないし…。

そもそも>>47は、グローバル変数にシステム情報等を格納している方向なのか?
それなら、その位の対応も納得なのだが…。
タイマーは、ちょっと手が込んでる気がするが…(^^;
0050デフォルトの名無しさんNGNG
>>46
42=45だが、システムで変えられる情報の中でもウィンドウの境界の幅は
今まで、誰も気付かなかったような項目だから…って話だったんだけど
説明がわかりにくくてスマソ。
005143NGNG
>>50
そうだったか。要は同じような事を言ってたんだな。失礼しますた。
0052デフォルトの名無しさんNGNG
>>50じゃないが、確かにウィンドウの境界の幅は今まで1とかだったから
GetClientRectとGetWindowRectの幅と高さの差(高さは結構あるか…)は
そんなに違いが無くて、ウィンドウのサイズ制限するプログラムとかで
GetWindowRectとか、WM_SIZEメッセージで返ってくるLPARAMの
値を使って制限してると問題が出るね。(後者の方は結構多いと思う)
0053デフォルトの名無しさんNGNG
一般的には、ウィンドウサイズの固定はWM_GETMINMAXINFOでやらない?
それに幅は、GetSystemMetricsで取得すればよいと思うが違うのか。
0054デフォルトの名無しさんNGNG
>>53
まさに>>50,52の言っていた例のレスだな。
つまり、WM_GETMINMAXINFOメッセージで処理するという事は
LPMINMAXINFO構造体でウィンドウサイズを制御するという事だよね?
その時にptMinTrackSizeに最小値を入れろ…と。
しかし、それではいかんのだよ。わかるかな?>>53よ。
>>50,52の言っている事を良く考えてみよう。
GetSystemMetricsで幅を取得するのも同じだ。
0055デフォルトの名無しさんNGNG
このスレとAPIスレ統合して、Windows Programming 相談室にしねーか?
どっちも閑古鳥が鳴いてるし
0056デフォルトの名無しさんNGNG
GetSystemMetricsはokじゃね?
0057デフォルトの名無しさんNGNG
GetSystemMetricsでウィンドウの幅とかを取得しまくるのもOKだと思うが
素直にGetWindowRectとGetClientRectのサイズの差を求めて、最小サイズに
したい値に、その差とクライアントウィンドウのサイズを足したものにするのが
一番良いと思う。GetSystemMetricsでウィンドウの幅とかを取得しまくると
メニューなんかが2行になった時等に対応するのが辛いよ。
0058デフォルトの名無しさんNGNG
>>55
別に2つあっても良いんじゃない?
0059デフォルトの名無しさんNGNG
>55,58
ここが、part2かAPIスレがbuild3になったら、統合しよう。
いつになる事やら…。
0060戸尾理縋りNGNG
外側の幅に合わしてサイズ計算してたら、
中身が
「小っちぇーよ!(三村調)」
枠幅変更をわざわざ考慮してたものはXP以前にゃ
あまりないだろうということだろう
006150NGNG
>>60
そういう事。
0062デフォルトの名無しさんNGNG
>>57
クライアントサイズとウインドウサイズの差というのは落とし穴があるよ。
たとえば、WS_EX_CLIENTEDGEスタイルを持った子ウインドウを
幅高さともに0で作ると、GetClientRect/GetWindowRectが同じサイズ{0, 0}を返すので、
差が求められない。
実際にこれでハマったことあるし。
#論理レイアウトマネージャにウインドウのサイズの管理を任せたりするときにこれにハマった

じゃぁ、最低いくつで作ればいいのかという話になるが、
それこそボーダーの太さに事実上上限が設定されていないので、
どのサイズで作っても保証が無くなる

それこそ、縦横ともにサイズにずれが生じるまでループするしかない。
もっともほぼ無いと言ってもいいようなレアケースだけどね。
0063デフォルトの名無しさんNGNG
ってか、この枠の太さって、Win3.0/3.1位の頃から開発してた人は、
きっちりGetSystemMetricsで取ってくるんじゃないか?
0064デフォルトの名無しさんNGNG
自分はWin3.1から開発してましたが、>>50のように
GetClientRectとGetWindowRectで求めてましたが…。
0065デフォルトの名無しさんNGNG
SIZEのcx,cyのcって何よ?(マヂで
0066デフォルトの名無しさんNGNG
coordinate
0067デフォルトの名無しさんNGNG
サンクス
0068デフォルトの名無しさんNGNG
システムトレイをいじくるソフトあるよね。
トレイのアイコン取得する方法教えてください。
0069デフォルトの名無しさんNGNG
みんなはAPIとCRTとどっちが好み?
0070デフォルトの名無しさんNGNG
好みって何だよ
APIとC-runtimeは包括範囲が違うだろ
0071デフォルトの名無しさんNGNG
結局ここはMFC or API以外のWindows Programingスレになったの?

こんなの見つけたからage
http://www.fltk.org
かなりマルチプラットフォーム化されてるしGUIビルダもある
Qtはでか過ぎてイヤンという人にお勧めできるんじゃなかろうか
ちなみにC++
0072デフォルトの名無しさんNGNG
本来はWindowsプログラムをする上でのドキュメント化されていないノウハウを語りたかったんじゃないの?
007369NGNG
>>70
いやー、結構重複してる部分あるじゃない。
 CreateFile ≒ open
 CreateProcess ≒ execXX
   …
ぼくはAPI派なんだけど、害虫さんはCRT派でね、
ちなみにGUIアプリでWin以外への移植は無しなの。

どっちが多数派かなーって思って。
0074デフォルトの名無しさんNGNG
どうしても実行ファイルのサイズを小さくしたい場合、
細かくアクセスコントロールを行う場合など、
特殊な状況じゃなければ標準ライブラリを利用する。

APIを使うと引数の数が平気で10個あったり、
いちいち構造体使ったり面倒だから。

0075デフォルトの名無しさんNGNG
誰かに渡したりするのはCRTの方が良いと思うが
それ以外はAPIを使ってるなー。長年Windowsプログラムをしてると
ある程度のパターンができてくるから、APIの引数とかも気にならないし…。
ところで、HINSTANCEの話がでてきて思ったんだけど、グローバル変数を
使ってる場合は、他にはどんなグローバル変数を使ってる?

漏れは…ウィンドウクラス名とかかなぁ…。
0076デフォルトの名無しさんNGNG
グローバル・・・
システムの情報は格納しないな。
アプリケーションの設定を専用クラスでグローバルに置くくらいかな。
文字関係は全部リソースに置いておくし。
0077デフォルトの名無しさんNGNG
素朴な疑問。
なんでウインドウクラス名ってグローバル変数なの?
どの本見てもそうなってるけど。
まだ本格的にWin32やってないから、これがグローバルである意味が
よくわかんない。
知ってる人いたら教えて。
0078デフォルトの名無しさんNGNG
その方がお気楽だから。
まぁ、defineでもいいんだけどね。
0079デフォルトの名無しさんNGNG
>>77
別にローカル変数でもいいよ?
つーかそれよりRegisterClass呼んでるのに
なんでUnregisterClassは呼ばないのか疑問。
別に
0080デフォルトの名無しさんNGNG
>別に
余分だった。
0081デフォルトの名無しさんNGNG
mallocしたのをfreeしないでexitだな
0082デフォルトの名無しさんNGNG
なんでMFC以外のWindows ProgramingでVCLが
一度も出てこないんだ、ゴラァと言ってみるテスト
0083デフォルトの名無しさんNGNG
>>79
必要ないから。
プロセス終了時に解放されることが保証されている
0084デフォルトの名無しさんNGNG
最近むかついてしょうがないんですけど、
LoadImageやCreateWindowはウィンドウズヘッダ内でマクロとして定義されてるんですよね。
だからメンバ関数にLoadImageなんて名前付けるとLoadImageAに変わってしまったり、
CreateWindowなんかコンパイルエラーになってしまいます。
何でインライン関数使わないんだよぉ!
何のための名前空間、何のためのクラスだと思ってんだ。
0085デフォルトの名無しさんNGNG
Ruby >>>>>>>>>>>>>>C++
0086デフォルトの名無しさんNGNG
>>84
元々C互換APIだから。
C++でもっとも顕著なのは、STLのstd::min/maxかな。

それから、LoadImageなんてセンスのない名前付けるな
0087旧MS-CユーザNGNG
LoadImageの方がinline、namespaceより古いから。
名前空間なんかつい最近できたばかりじゃないか。
0088デフォルトの名無しさんNGNG
気持ちはわかるが、>>84は自己中なやつなのだろうな。
0089デフォルトの名無しさんNGNG
age
0090ショシンsNGNG
ウィンドウ内に自分でボタンのようなものを作りたいと思い
メッセージプロシージャ関数内の
case WM_LBUTTONDOWN:
の下で現在のマウス位置を取得して
そのあと条件式で自分が指定した矩形領域内でボタンが押されたならば
という形でボタン機能を実現したいと思っているのですが
マウス位置を取得する関数がよくわかりません。
それともlParamかwParamを使えば同じことができるのでしょうか
0091デフォルトの名無しさんNGNG
WM_LBUTTONDOWNメッセージを調べてみる
GetCursorPosを調べてみる
0092ショシンsNGNG
アドバイスありがとうございます
最初
case WM_LBUTTONDOWN:
LPPOINT MSpoint;
long msx,msy;
GetCursorPos(MSpoint);
msx=MSpoint->x;
msy=MSpoint->y;
とやったらGetCursorPosの時点でエラーが出てシャットダウンしてしまいました。
その後いろいろと調べたところ
int x,y;
x=LOWORD(lParam);
y=HIWORD(lParam);
とやったらうまくいきました。
とりあえず解決できたのですがなんか複雑な気分です。
0093デフォルトの名無しさんNGNG
なめてんのか?
0094ショシンsNGNG
いや、なめてないですよ。
DirectXの勉強を始めたばかりのものでしていまだ使えこなせずにいます。やっぱひとつWINDOWSAPIの説明がいろいろと書いてある本を
買ったほうがいいのですかね。
0095デフォルトの名無しさんNGNG
マジレスするとNE
>LPPOINT MSpoint;
>GetCursorPos(MSpoint);
は
POINT MSpoint;
GetCursorPos(&MSpoint);
じゃないとだめだYO

それと、GetCursorPosはそのときのカーソルの位置を
かえすけど、lParamはボタンの押された位置がかえるYO
若干ちがくなることがあるので気をつけてね。
あとクライアント座標とかスクリーン座標とかにも気をつけてね。

>WINDOWSAPIの説明がいろいろと書いてある本を
>買ったほうがいいのですかね。
あとDEEPなCの本もNE
0096デフォルトの名無しさんNGNG
>あとDEEPなCの本もNE

いつから、ポインタの基礎・FAQが、DEEPなCの本の扱いに
なったのでしょうか。私は、日本のソフトウエア業界の
逝く末を心配したくなりました。
0097デフォルトの名無しさんNGNG
でたよC厨、
くだらないことで話し広げようとしないでくれる?
C厨が集まっちゃうとスレが死ぬから。

どうせ広げるなら、
「GetMessagePosとかもあるYO。とか」
「これを使えば、コントロールからの通知とかでもちゃんとした
座標が取れる?」とか技術的なコトにしてクンナイ?
0098tNGNG
win32sdkで
まず、メモリ上に描写を行って、そのあと1度に画面に表示させる。
方法を教えて、
0099t=98NGNG
>>DirectX は除く
0100デフォルトの名無しさんNGNG
>>97
GetMessagePosなら、lParamの方がよっぽどいい。
0101デフォルトの名無しさんNGNG
>>99
んじゃ、GDIでやれ。

RECT ClientRect;
::GetClientRect(&ClientRect);
HDC WindowDC = ::GetDC(hwnd);
HDC MemDC = ::CreateCompatibleDC(hdc);
HBITMAP BackBuffer = ::CreateCompatibleBitmap(WindowDC, ClientRect.right, ClientRect.bottom);
HBITMAP OriginalBmp = static_cast<HBITMAP>(::SelectObject(MemDC, BackBuffer));

::DeleteObject(::SelectObject(MemDC, OriginalBmp));
::DeleteDC(MemDC);
::ReleaseDC(WindowDC);
0102tNGNG
>>101
それ、面倒なのでもっと簡単な方法教えてください
0103t==98NGNG
>>101
thanks
0104デフォルトの名無しさんNGNG
CreateDIBSection、とかもあるけど?
0105デフォルトの名無しさんNGNG
age
0106デフォルトの名無しさんNGNG
age
0107デフォルトの名無しさんNGNG
>>102

一番簡単なのはDIB。メモリ上に任意の形式(32bppが扱いやすい)で
フレームバッファを作成して、あとはBITMAPINFO構造体とともにGDI
(SetDIBitsToDevice/StretchDIBits)に渡せば描画できる。
0108デフォルトの名無しさんNGNG
現在Windows向けの言語を作っているのですが、
構造体のアラインメントの規則に関する情報ってどこかにないですか?
0109デフォルトの名無しさんNGNG
>>108
Intel のサイトに行って、プロセッサのデータシート見るべし。
0110デフォルトの名無しさんNGNG
>>109
アラインメントじゃなくてパディングって言うのかな?
構造体の中に入る詰め物の情報が知りたいのです。
全部、pack1を期待してもいいのかな、と思いまして。
0111デフォルトの名無しさんNGNG
>>109
その程度の知識で、言語を作る...。何でアライメントするか知ってるか ?
0112デフォルトの名無しさんNGNG
>>111
誤爆?
SSEとかで16byte alignを要求する命令があるてのは知ってますが。
どうしてとかそんなことはあんまり気にしたこと無かったです。

で、今回のはアラインメントとは違ったみたいだけど、
>>110に書いたような構造体の詰め物について知りたいんです。
構造体を引数に取るAPIがどんな並びを期待しているのか。
MSDNを眺めてみたけど、メモリ配置についての情報が、
関数呼び出しの引数などのスタックについてしか見つけられなかったので、
規則がどこかに書いてないのかな、と。

ユーザーdllでは(VCを使った方法しか知りませんが)
#pragma pack(1)
とかでパディングを0にしている物とか、デフォルトのまま利用している物とか、
いろいろあるので、少なくともWindowsのAPIについてはドキュメント化されてないのかな
って思ったわけです。
0113デフォルトの名無しさんNGNG
>>112
ならはじめからそう書いてくれ。言語を作ろうとする奴が、アライメントの
必要性も知らないのはちょっと痛いぞ。まあ、スクリプト言語ぐらいなら
いいのかも知れんがな。

普通、構造体を引数にとる API は、パディングが入らないように構造体を
宣言している。
0114デフォルトの名無しさんNGNG
>>113
ありがとうございます。
PlatformSDKのヘッダを機械翻訳するしかないのかなって思ってたのですが、
いろいろ問題がありそうだったので。

言語と言っても、cへのトランスレータなので、
PCのアーキテクチャについてはあんまり詳しくなくてもいいとか勝手に思ってるんです。
0115デフォルトの名無しさんNGNG
>>114
Win32 API 使おうと思うなら、それ(C のパーサー)は用意した方が良いと
思うぞ。
0116デフォルトの名無しさんNGNG
>>84

古い話題ですが。


API関数
ナニをアレする();

クラスのメンバ関数
class ナニ {
アレする();
};

ぶつかりようがない。ふつうは。
0117デフォルトの名無しさんNGNG
引数も異なるからなかなかぶつからないね。

windows.hがnamespace全然考えてないのは別問題だが、
歴史的経緯というやつでほがもげ
0118デフォルトの名無しさんNGNG
age
0119デフォルトの名無しさんNGNG
>>116 は、ちゃんとまともなこと言ってるのに、>>117 の知ったか厨房が
台無しにしてるな。
0120デフォルトの名無しさんNGNG
>>1116
漏れ、興奮してきたYO!!!
0121デフォルトの名無しさんNGNG
あげ
0122デフォルトの名無しさんNGNG
1116のレスに期待age
0123デフォルトの名無しさんNGNG
>>116
十分ぶつかるよ。
Abstruct FactoryなんかじゃCreateWindowは当たり前に使うし。
0124デフォルトの名無しさんNGNG
VC++ 使って CPU 使用率を取得してみようと↓のページの DispTime() を
コピペして main() から呼び出してみたんだが:

http://tokyo.cool.ne.jp/masapico/api_sample_pdh03_c.html

int main(void){
 DispTime();
  return;
}

今度はプログラムが終了しなくなってしまった。ブレークかけてみたら
exit(int) ⇒ dosexit(int,int,int) ⇒ KERNEL32 の中で止まってるみたい。
何か終了処理とか必要なのかな。それとも何かコンパイルオプションが必要?

環境は WinXP Pro, VC++ 6.0 で Win32 Console Application プロジェクトを
新規に作っています。原因分かる人居られますか?
0125デフォルトの名無しさんNGNG
int main()なのに値を返してないから?(ちょっと自信ない)
0126116NGNG

>>119
別に117はおかしくないんじゃない?
元の話にはあってないと思うけど。

>>123

いや。俺はそうゆうので困ったことないってだけで、
ぶつかるってんなら文句ゆうつもりはないんだけど...

staitc Window* Window::Create();

なんて書き方じゃ出来ない事をおやりになってるんでしょうねえ。
0127デフォルトの名無しさんNGNG
static WindowFactory::CreateWindow()
なんでないの?(藁
0128デフォルトの名無しさんNGNG
C++使ってるならグローバル関数は1つも使う必要がない。
よって::LoadImageでオケ。
0129デフォルトの名無しさんNGNG
>>124
Win2000ですが、全然問題なしですた。
0130デフォルトの名無しさんNGNG
俺がやったときは

struct IEditor
{
 virtual IWindow* CreateWindow() = 0;
 virtual IDocument* CreateDocument() = 0;
 // 以下略
};

でぶつかったよ。
0131デフォルトの名無しさんNGNG
>>128
mainもでつか?
0132デフォルトの名無しさんNGNG
>>128
sprintf() とか sqrt() とかも使わないのですか?
0133デフォルトの名無しさんNGNG
LoadImageみたいなのはグローバル関数って言わないの?
(LoadImageがマクロなことはおいといて)
0134124NGNG
>>125
すまん、たった 4 行だったので油断して鬱氏間違えた。

return EXIT_SUCCESS;

>>129
どうもありがとう。やっぱり XP なのかな。
0135デフォルトの名無しさんNGNG
>>131-132
文脈からわかれ。
自分で作る必要がないということだ。
よって少なくとも、自作ライブラリと衝突する可能性はない。
0136デフォルトの名無しさんNGNG
俺は自作クラスのメソッド名は動詞部分を小文字にしてる。
まあAPIとぶつかることはないだろうし。
loadImage
createWindow
0137デフォルトの名無しさんNGNG
それはちょっtJavaっぽくてダサイかも
0138デフォルトの名無しさんNGNG
その命名法キモイ
0139デフォルトの名無しさんNGNG
らくだキモイ
0140デフォルトの名無しさんNGNG
>>136
おれもおれも(゚∀゚)
ハッタリッシュ大好きなので(笑

あそこ、もう更新ないのかなぁ…。
0141デフォルトの名無しさんNGNG
>>124
「おー、そんな物もあるんだー」と気になって
自分も試してみたが、
リンカがエラーを吐いてくれた。
#include <pdh.h>はしたんだけど
他にも何か必要なの?

えらーとは
test.obj : error LNK2001: 外部シンボル "_PdhCloseQuery@4" は未解決です
とかいう奴が5個ほどです。
0142デフォルトの名無しさんNGNG
age
0143デフォルトの名無しさんNGNG
pdh.lib

なんでライブラリを知らない奴がこんなに多いんだ?
あっちこっちのスレで似たような質問があるが
0144デフォルトの名無しさんNGNG
win32 apiスレに行けば済む話だと思うんだが、なんでこんなところで
やってるんだろうね。
0145141NGNG
>>143
すんまそん。それは自分がドキュソだからだと思います。

ちなみに、色々と検索しているときにこんな物見付けました。
>>124さんには役立つでしょうか?
http://support.microsoft.com/default.aspx?scid=http%3a%2f%2fwww.microsoft.com%2fJAPAN%2fsupport%2fkb%2farticles%2fjp312%2f1%2f13.ASP
0146124NGNG
>>145
サンクス。環境的に多分それが当たり。
Win2k でやってみたけど、今度は終了時の kernel32 で Access Violation だと… (鬱
0147デフォルトの名無しさんNGNG
windows2kのコマンドプロンプトで cl.exeを使ってCのコンパイルをしています。
main()でエラーとか正常終了の戻り値を1とか0とか設定してますが
このmain()に戻った値を確認するためにはどうしたらよいでしょうか?
0148デフォルトの名無しさんNGNG
>>147
C:\hoge> echo %ERRORLEVEL%
0149デフォルトの名無しさんNGNG
>148
うまく行きました。
どうもありがとうございました。
0150デフォルトの名無しさんNGNG
WTLって使ってるやつおる?
どっかにいい解説ない?

あれはソースが読めないやつは使うなということなのか...
0151デフォルトの名無しさんNGNG
つかったYO.
でも僕のパソンコんてね、すごく遅いからね、
コンパイルンにイパイ時間がかかて、モウ使わないもアン
っておもったYO!
0152 ◆namco08. NGNG
>>150
俺は WTL 使ってるけど。

> あれはソースが読めないやつは使うなということなのか...
そんな気がする。

CWindow, CWindowImpl とかは ATL の範疇なので、書籍「ATL インターナル」
とか MSDN Library に解説がある。あとは WTL のウィザードにソースを吐かせ
て、それを読みつつお勉強、でした。
0153デフォルトの名無しさんNGNG
if (!GetMessage(&msg, NULL, 0, 0))
 return msg.wParam;

if(msg.message == WM_QUIT)
 break;

どう違うんですか?
0154デフォルトの名無しさんNGNG
>>153
GetMessageするか、何もしないでMSG構造体を覗くか
0155デフォルトの名無しさんNGNG
>>153
どうでも良いが GetMessage() はエラー時に -1 を返すので

 !GetMessage()

だと無限ループにハマる可能性があるぞ。
0156デフォルトの名無しさんNGNG
Windowsプログラムするときのプログラムの仕組みを教えてください。
メッセージがきて、それに対応するメンバ関数が呼ばれて、メンバ関数で動作を決めて、
みたいなWindowsプログラムのロジックを教えてください。
よろしくお願いいたします。
0157デフォルトの名無しさんNGNG
使用しているWindowsのバージョンを返すWin32APIなんてありますかね?
こういうのって普通どうやって調べるんですか?レジストリ?
0158デフォルトの名無しさんNGNG
GetVersionInfoExダッケ
0159デフォルトの名無しさんNGNG
_windver
GetVersionEx()
0160157NGNG
うおっ即レスありがとうございます!!
0161デフォルトの名無しさんNGNG
>>156
とりあえず Petzold 本を熟読。
0162デフォルトの名無しさんNGNG
>>156
メンバ関数って言葉が出る当たり、少々誤解してるな。

コントロールはwindowだ。 CreateWindow( )で作ることが出来る。
作ったコントロールは SendMessage( ) 等で操作することが出来る。例えば
SendMessage(editbox_hwnd, WM_UNDO, 0, 0); // edit_box を Undo させる
という感じで。

メッセージは親Windowに届く。届いたメッセージを、if / switch で
分岐させて、処理を行う。例えば
LRESULT CALLBACK WindowFunc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
    switch(message){
        case WM_COMMAND:
            switch(LOWORD(wParam)){
                case BUTTON1:
                    // BUTTON1を押したときの処理
                    break;
                case BUTTON2:
                // 以下略

MFC等は、この CreateWindow, SendMessage, 巨大に成るswitch を
ラップしたものだ。
メンバ関数がどうとか言うのは、ラップした後のものについての考えで、
基本的にはもっとフラットな実装だぞ。
0163デフォルトの名無しさんNGNG
このスレにいる人たちは、MFCなんて馬鹿らしくて使いませんか?
0164デフォルトの名無しさんNGNG
>>163
便利だとは思うがプログラミングスタイルを固定されるのが好きくない。
OWLの方が良いね。その点では。
0165163NGNG
>>164
早速ありがとうございます。
しかし、スタイルが固定されるとはどういうことですか?
M$の方言に悩まされるとかでしょうか?
0166デフォルトの名無しさんNGNG
>>165
ドキュメントビューアーキテクチャとか。
最近は外せるけど。
後、初期化のタイミングが複数あってくはぁ・・・。
0167デフォルト名無しさんNGNG
ここに書いてもいいのかよくわからないのですが、
いろいろやっていたらコマンドプロンプトの表示がすこし変になってしまいました。
\が/と表示されてたりアルファベットもどき(a等の上に変な印)が表示され、
日本語が表示できなくなったりしました・・・
戻すことはできますか?
0168デフォルト名無しさんNGNG
いろいろやっていたらコマンドプロンプトの表示がすこし変になってしまいました。
\が/と表示されてたりアルファベットもどき(a等の上に変な印)が表示され、
日本語が表示できなくなりました・・・
戻すことはできますか?
0169163NGNG
>ドキュメントビューアーキテクチャとか。
OWLなら関係ないようですが、MFCならこれは確かにそうですね。
初期化はInitInstance()とかですか。
まだまだ私は修行が足りません。
0170デフォルトの名無しさんNGNG
>>167-168
おもいっきり板違いだが、他の板やスレを汚されても困るので、答えてやろう。
jp[enter]
これで直る
0171デフォルトの名無しさんNGNG
>>163
MFCは、CStringを要求するので嫌い。
stlと親和性の高いライブラリがあれば使うかも。
0172デフォルト名無しさんNGNG
>>170
現在のコードページ:932
と出て一時は直るのですが、
一度プロンプト閉じてもう一度起動すると
元に戻ってます。永続的にはできないのでしょうか?
スレ違いすみません。
0173デフォルトの名無しさんNGNG
class StdString : public CString, public std::string {};
これ使え
0174デフォルトの名無しさんNGNG
>>172
コマンドプロンプトのプロパティを開いて、
オプションタブの現在のコードページで932を選択。
0175デフォルト名無しさんNGNG
>>174
ありがとうございます。直りました。
本当に感謝します。
0176デフォルトの名無しさんNGNG
ユーザーのドラッグによるWindowサイズの変更をなくしたいのですが、どのようにすればよろしいのでしょうか。
よろしくお願いします。
0177デフォルトの名無しさんNGNG
hit
0178デフォルトの名無しさんNGNG
>>176
そういうwindowを作るか、サイズが変更されたらすぐさま戻す。

自由な形のwindowってどうすればいいんでしょうか?
たとえば文字の形とか。
0179デフォルトの名無しさんNGNG
SetWindowRgn
0180デフォルトの名無しさんNGNG
>>178
リージョン切ってSetWindowRgn()
0181因幡NGNG
>>179,178
どうもですわ。
0182デフォルトの名無しさんNGNG
VC++では標準C++ライブラリは日本語で見れないのですか?
英語読むしかないですか?
0183182NGNG
VC++.netです。
0184デフォルトの名無しさんNGNG
>>182
恐らくC++言語で見られると思います。
0185デフォルトの名無しさんNGNG
>>182
VC++を使って標準C+;+を見ることはできません。
0186デフォルトの名無しさんNGNG
MSDNの2002/4には
Standard C++ Library Reference
というリンクがあるのですが、そこの先が英語なのです。
日本語で書いてあるページはないのですか?
探してないからないのか...
0187デフォルトの名無しさんNGNG
>>186
−・
や

VC++では標準C++ライブラリは日本語で見れないのですか?
英語読むしかないですか?

      | |
      | |

MSDNの2002/4には
Standard C++ Library Reference
というリンクがあるのですが、そこの先が英語なのです。
日本語で書いてあるページはないのですか?
探してないからないのか...
0188デフォルトの名無しさんNGNG
>>187
なんでやすか
0189デフォルトの名無しさんNGNG
>>178
> そういうwindowを作るか、サイズが変更されたらすぐさま戻す。
WM_MINMAXINFO 捕まえて、ウィンドウサイズを上書きするのがスマート
だと思う。これだと描画されないし。
0190デフォルトの名無しさんNGNG
WS_DLGFRAMEとかで作る方がスマートだろ。
制限じゃなくてサイズ変更不可なんだから。
0191KKNGNG
Visual C++ 6.0(SDK) / Windows98SE でプログラム作ってます。
みなさん、メモリリークとかの対策はどのようにやってますか?

Purify と BoundsChecker 以外のメモリリークを検出できるツールを
紹介してください。プロセス&スレッドの表示ツールならフリーであるん
ですが、メモリリークまで検出できません。
0192デフォルトの名無しさんNGNG
>>191
_CrtSetDbgFlag()
0193デフォルトの名無しさんNGNG
なんでPurifyやBCじゃダメなの?
漏れはBCを激推奨するが。
0194デフォルトの名無しさんNGNG
>>193
もってないからでわ
0195KKNGNG
>>192
ソフトウェアを使うのではなく、プログラムに関数を組み込んで
調べるのですね。どうもありがとうございます。

>>193-194
2〜3万円台の買い求めやすいシェアがあるのかと思いまして。
WWWで一応調べたんですが、適当なのがありませんでした。

今はBCの体験版をDLして使っていますが、個人で購入するとなると
やっぱり高くつきます。Purify:120,000円 BC:80,000円
会社とか研究室で買うならともかく。
0196デフォルトの名無しさんNGNG
しかし、BCもPurifyも高いな。
これらを長く使っていると、自然とリークするコードをあまり書かなくなってくるので、
出番も少なくなってくる。
まぁ、万が一のために持っておくのは良いことだが。
VS.NETとかBCB/DelのProを買うなら、バージョンを一つ飛ばしてでもBCを買っておくと良いと思うが、
そもそも.NETへの転換期なので有効活用できるかどうかは微妙かも。
0197KKNGNG
>>196
貴重な意見ありがとうございます。

> これらを長く使っていると、自然とリークするコードを
> あまり書かなくなってくるので出番も少なくなってくる。

ただ、最初のうちはどの箇所に問題があるのか見当もつきません。
慣れれば自ずとなくなるありきたりなミスがほとんどだと思うのですが。

作成したプログラムをBCの体験版でチェックしてみたところ、HBRUSHに関連する
コードに問題があり、リソースリークを起こしていました。
これもWWWを調べたらすぐに見つかりました。

> そもそも.NETへの転換期なので

VC++に固執しないで、色んな開発環境を試してみるのもいいですね。
0198デフォルトの名無しさんNGNG
TCP/IP通信をするプログラムを書きたいんですけど、いい解説ページを知りませんか?
書籍紹介、言語違い、OS違い、あるいはMFCなページは簡単に見つかるんですが。
0199>198NGNG
WinSock2.0の書籍はだめなんですか?
VC++スレの紹介書籍では?
0200デフォルトの名無しさんNGNG
ただで済まそうとせずに、本買えや。
0201デフォルトの名無しさんNGNG
>>199
それはそうなんですけど、貧乏臭くとりあえず聞いてみました。

まあ、Webにまとまった資料が無いようなら、とりあえず気合で情報集めて
気合でエラーメッセージ読んで、それでもダメなら書籍を買います。
0202デフォルトの名無しさんNGNG
WinSock2.0の書籍買ってきたけど、あれってかなり前のものなんですよね。
WinSockはあれくらいしか見ないから、あれは本当に定番なんだと思う。
EmuTermの作者が書いたのだから損はないと思うけど?
0203198NGNG
全会一致で買え、ですね。どうもありがとうございます。
下手に(V)C++の知識とネットワークの知識があると、その中間を埋める書籍の金が惜しくなって。

何とかなるさ、とサンプルを読みつつWinSock2でデタラメにプログラムを
組み始めたのはいいが、DirectPlayの存在に気づく。
どんなものか殆ど知らないけど、元プログラムがDirect3D使っているので
使ってもいいかなと思ったり……。徐々にスレ違い。
(ボヤキsage。でも何かアドバイスあったらありがたく頂きます)
0204デフォルトの名無しさんNGNG
>>203
この人、デムパだね。
0205デフォルトの名無しさんNGNG
>>204 暇そうだね
0206デフォルトの名無しさんNGNG
つーか、何でSocketの本なんて買うんだ?
普通のsocketの使い方+初期化&終了(WSAStartup/WSACleanup)だけっしょ?
0207デフォルトの名無しさんNGNG
>>206
WinSockは、ブロッキングとかいうややこしぃ問題があるから
普通にはいかないと思うが。
0208デフォルトの名無しさんNGNG
保守には安芸が一番
0209デフォルトの名無しさんNGNG

質問です。

MFC, WTL の CString と、 std::basic_string<TCHAR>
は、どちらのほうが使い勝手がいいですか?
0210デフォルトの名無しさんNGNG
basic_string。
STLのアルゴリズムと組み合わせ安い
0211デフォルトの名無しさんNGNG
>> 210

ありがとう。
0212デフォルトの名無しさんNGNG
質問します。
PatBlt関数の値の限界ってどうなっているのですか?
値が大きすぎると塗りつぶしが出来なくなってしまいます。
何か解決方法はありませんか?
0213デフォルトの名無しさんNGNG
何の値でござりまするか?
とりあえず95系ではGDIの座標系に16ビットだかの制限があったと記憶しておりまする。
0214デフォルトの名無しさんNGNG
±32767超えて LineToとかやると、クネクネな線が描画されたりして、
なかなか楽しいことになる。
(この辺の振る舞いって VGAドライバによるのかな?)
0215212NGNG
即レス感謝。
PatBltのxとyの座標の値です。
値を大きくすると塗りつぶしてくれなくなってしまいました。
0216すみませんNGNG
VC++のC++作成したDLLをVC++のCで作成したコンソールアプリ
からコールしているのですが、プログラムが不正ななんとかで
アベンドしてしまいます。

DLL側のエクスポートした関数は、
int MyDLLfunc(FILE *fp)
{
fprintf(fp, "Call MyDLLfunc()\n");
}
というプログラムになっています。
メインでオープンしたファイルのファイルポインタを
DLLへ渡してDLL側でそのファイルに対して入出力を
行うことは出来ないのでしょうか?
それとも、Cで作ったメインプログラムと、C++で作ったDLL
との間では何らかの制限があるのでしょうか?

どなたか、教えてください。
0217自己レスNGNG
なんか駄目みたいですね。
Windowsというか、MSの開発環境の制限っぽいです。
あきらめます。
0218デフォルトの名無しさんNGNG
アベンドってなに?
アボートの友達?
0219デフォルトの名無しさんNGNG
WINAPIとでも書いとけ
0220デフォルトの名無しさんNGNG
>> 218
アベンドって使わない?
アブノーマルエンドの略。
>>219
意味がわかりません。
それをすると回避できるんですか?
それとも、なんかのジョークでしょうか?
0221デフォルトの名無しさんNGNG
>>220
WINAPI int MyDLLfunc(FILE *fp)
って意味じゃないの?
0222221NGNG
int WINAPI MyDLLfuncか。
0223やってみましたNGNG
が、結果は同じく、アプリケーションエラーで
落ちちゃいました。
書き方がまずいんでしょうか?
DLL側
extern "C" MYDLL_API int WINAPI MyDLLfunc(FILE *fpp)
{
fprintf(fpp,"MyDLLfunc start\n");
  return 0;
}
メイン側
#include <stdio.h>
#include <windows.h>
__declspec(dllimport) int WINAPI MyDLLfunc(FILE *fpp);
int main(int argc, char *arrgv[])
{
FILE *fp;
int nrc;
fp = fopen("c:\\tmp\\test.txt","w+");
fprintf(fp,"main start\n");
nrc = MyDLLfunc(fp);
fclose(fp);
}
こんな感じなんですけど。
とあるページには、(ttp://homepage2.nifty.com/DSS/VCPP/DLL/dllfilefp.htm)
駄目って書いてあったので、あきらめようかと思っていました。

Windowsって、それぞれの開発ツールが独自に実装してんの? > 標準入出力関数
まぁ、POSIXが定義してる機能なんかをWindowsで使うなってことなのかなぁ。
0224デフォルトの名無しさんNGNG
DLL、Exe共に-MDで解決したりしないカナ?
0225デフォルトの名無しさんNGNG
つうか、なんでファイルポインタを渡すの?
ファイル名渡して、DLL側で開けばいいじゃん
0226ツ¬ツ?ツ?ツ?ツ?ツ?ツ?NGNG
>> 225
私もそう思います。
でも、オリジナル(UNIX版)のソースがそうなちゃってるんです。
メインでエラーログ用のファイルを開けて、いろんなサブルーチンに
そのファイルポインタを渡してそこにエラー情報を吐くと。

それを、いまPCにコンバートしてるわけで。

0227デフォルトの名無しさんNGNG
いわいるWindowsプログラムの雛形ってありますよね?
(はじめて目にした時なにもしないアプリなのに、その長さに驚いたアレ)
それは、暗記していつでも書けるようにしたほうがいいんですかね?
それとも、ファイルに保存しといてコピペで流用するのが当たり前ですか?

プロの意見が聞ければなおいいです。
0228デフォルトの名無しさんNGNG
>>227
コピペかWizard系のジェネレータがあれば十分。
暗記だけで書かなくちゃいけない場面で、大したもの作れるはずもないし。
そんなもんに血道上げるくらいならもっと他にやることあるだろう。
まあ、理屈がわかってればそのうちなんも見ずに書ける・・・かもしんない。
0229227NGNG
>>228
アドバイスどもm(_ _)m
0230デフォルトの名無しさんNGNG
>>223
デバッガで見てみれば?
0231デフォルトの名無しさんNGNG
>>223
他のプロセスに値を渡すのはいいけど、アドレスを渡したら、渡されるのは
オフセット値だけであって、セレクタ値は渡されないから、正しくアクセス
できないんじゃない?
0232DLLネタで、NGNG
DLLネタで、ちょっと気になったことが有りましてお願いしまーす。

このまえDLLの本体を作成するためC言語(VC++)でプログラム作ってました。
DLLファイルのなかで、下記のようなことしたらエラーになってしまったんです。exit()関数で問題発生^^;

int hoge()
{
  //この付近に処理書いて
  exit(0);
}
結局こいつでエラーになるので return つかったけど
DLL本体のプログラムに使える exit()関数のような関数ってないんですか?

DLL作成の初心者なもんですんません。
0233デフォルトの名無しさんNGNG
>>231
DLL とプロセスって概念が違うぞ。ついでに言っとくと、Win32 だとどうせ
メモリモデルはフラットでやってるからセレクタ値ってあんまり関係ないぞ。
プロセス間のメモリ空間の制御はセグメントじゃなくてページングでやってる
からな。
0234デフォルトの名無しさんNGNG
>>220
> アベンドって使わない?
汎用機系だと常套句だが、それ以外では聞かん。
0235デフォルトの名無しさんNGNG
>232
構造化例外でも投げたら?
0236デフォルトの名無しさんNGNG
APIスレが見つからないのでここで。

モーダルダイアログでDestroyWindow使っても問題な動くんだけど、
問題ないかな?

また、WM_DESTROY処理時にEndDialog使ったらおかしいかな?

今作ってるWinプロシージャがモーダルなのかモードレスなのか
いつも気にしながら組むのが馬鹿らしいんで、どんな時でも
DestroyWindow使い、戻り値返したい時だけWM_DESTROY処理時に
EndDialog使おうかと思ったんだけど。

間違ってたら叩いて。
0237デフォルトの名無しさんNGNG
(´-`).。oO(ナンデ
 exit_dialog()
 { if( modal ) EndDialog();
  else DestroyWindow();}
 みたいな仕掛けを作らないんだろう
)
0238デフォルトの名無しさんNGNG
if( modal )

modalかどうかって、どうやって判定するのでしょう?
0239デフォルトの名無しさんNGNG
ゴメソ

>modalかどうかって、どうやって判定するのでしょう?

modalってどうやって取得するのでしょう?

create時にフラグ立てる? 糞だろし。
0240デフォルトの名無しさんNGNG
微妙に考え方がおかしいな。

> いつも気にしながら組むのが馬鹿らしいんで、どんな時でも
> DestroyWindow使い、戻り値返したい時だけWM_DESTROY処理時に
> EndDialog使おうかと思ったんだけど。

PostQuitMessageはどうしよう。
0241デフォルトの名無しさんNGNG
モーダルの時はDestroyするの普通じゃん
0242デフォルトの名無しさんNGNG
>>241
EndDialogはいつ使うのだ?
0243デフォルトの名無しさんNGNG
>>236
WM_DESTROYの中でEndDialogって、そんなムチャな。
動いてるから問題ないって、プログラマの言うことじゃないよう……

そんなにモーダルとモードレスで分けるのがイヤだったら、
MFCみたいに全部モードレスの世界にしてしまえばいいナリよ。
見た目モーダルっぽくても実体はモードレス。これ。
0244デフォルトの名無しさんNGNG
>>243
しかし、Windows 2000やXPのモーダルダイアログを
開いている最中にオーナーウィンドウをクリックすると
ダイアログが点滅するというサービスが受けられなく
なるという諸刃の剣。
0245236NGNG
>>243
プログラマの言うことじゃないけど、実際動いてるんだもの・・・・。

全部モードレスですか、にゃる。

でも、if ( modal ) が出来ればよさげ。

本当に出来るんでしょうか?
0246デフォルトの名無しさんNGNG
どっかグローバルにでもフラグ置いておけ
0247デフォルトの名無しさんNGNG
Create時にフラグたてるのは何でダメなん?
0248デフォルトの名無しさんNGNG
ATL の CDialogImpl 継承して、メンバ変数を新たにつける。
で、Create で作成されたか、 DoModal で作成されたかチェックしておけばいいかと。
0249248NGNG
>>248
ATL の CDialogImpl ならそんなことする必要なかった。
鬱だ。

0250248NGNG
連続カキコすまぬ。
ATL実装の例

class CMyDialog : public CDialogImpl<CMyDialog>
{
public:
 enum{ IDD=IDD_DIALOG1 }; // ダイアログリソースのID

BEGIN_MSG_MAP( CMyDialog )
  COMMAND_RANGE_HANDLER( ID_OK, ID_CLOSE, OnCloseCmd )
 END_MSG_MAP()

private:
 OnCloseCmd( WORD, WORD wID, HWND, BOOL& )
 {
  if( m_bModal )
   return EndDialog( wID );
  else
   return DestroyWindow();
 }
};

使うとき
CMyDialog myDlg;
myDlg.Create( hWnd );  // モードレス
myDlg.DoModal(); // モーダル
0251デフォルトの名無しさんNGNG
なんでWindowsプログラミングはこんなに覚えることが多いんでつか?
0252236NGNG
みんなありがとう。

GetWindowLongとかで情報取得出来るのかなあと思ってたのでした。

基本的に自前でグローバルなフラグをセットね。了解。

250氏、エレガントです。
0253デフォルトの名無しさんNGNG
WindowsNT/2000/XPでHKEY_CURRENT_USER\Environment に
直接キーを追加して増やした環境変数を、一度ログオフしなくても
有効にすることってできますか?

システム→詳細→環境変数で追加した場合は、ログインしなおさなくても
有効になっているようなので、できそうなのですが・・
0254デフォルトの名無しさんNGNG
ウインドウメッセージをブロードキャストするハンドルがあったと思うのですが、
どういう物でしたっけ?
0255デフォルトの名無しさんNGNG
>>251
参考文献を売ってゲイツが設ける為。
0256デフォルトの名無しさんNGNG
>>255
Microsoft Press の書籍はともかく、他社の書籍だと MS には金入らんぞ。

っつーか、べつに Win32 プログラミングが複雑ってわけでもなかろう。ウィンドウ
システム絡みだと覚えることは増える (X Window System や MacOS だって
参考文献積んだら結構な厚さだ)。
0257デフォルトの名無しさんNGNG
>>256
XやMacOSは情報があまり無いから良いけど、
Winは本によって言ってることが違ったりで読者が惑わされる
0258デフォルトの名無しさんNGNG
>>257
黙って Petzold 読んどけ
0259デフォルトの名無しさんNGNG
>>253-254
WM_SETTINGCHANGEを投げる
具体的なパラメータはWM_SETTINGCHANGEの説明に書いてある
でもWin2kSP2では聞かなくなっているという噂
0260デフォルトの名無しさんNGNG
いまさらながら>>1の英語力の素晴らしさがわかるスレタイだ..
www.engrish.com に投稿したくなって来た
0261デフォルトの名無しさんNGNG
いまさらながら>>260の厨房さがわかるレスだ....
さらしageたくなって来た
0262デフォルトの名無しさんNGNG
問題1:ダイアログを動的に生成したい。
ダイアログテンプレートのエレガントな使用方法を示せ。【10点】
0263デフォルトの名無しさんNGNG
>>262
おまえむかつくから教えない。
0264デフォルトの名無しさんNGNG
>>263
教えないんじゃなくてワカランのだろ(w
小学生か。
0265デフォルトの名無しさんNGNG
>>264
sageでしかも「(w」かあ。なんかいっぱいいっぱいだね。
0266デフォルトの名無しさんNGNG
まずはエレガントの定義から.
0267デフォルトの名無しさんNGNG
C++を使うようになってもうすぐ1年
今日はじめて構造体のメンバにも関数を入れられることを知りますた
0268デフォルトの名無しさんNGNG
programming
0269デフォルトの名無しさんNGNG
>>260=268
かなりの粘着君だな。
0270デフォルトの名無しさんNGNG
ちなみに m が一つでも間違ってない。

http://www.m-w.com/cgi-bin/dictionary?book=Dictionary&va=programing
http://www.dictionary.com/cgi-bin/dict.pl?db=*&term=programing+
0271デフォルトの名無しさんNGNG
知ったかぶりで恥をさらした260=268がいるスレはここですか?
0272デフォルトの名無しさんNGNG
「C/C++(Not MFC) for Windows Programming」
か
「Windows Programming by C/C++(Not MFC)」
なんでないの?
0273デフォルトの名無しさんNGNG
Windows Programing with C/C++(Not MFC)
0274デフォルトの名無しさんNGNG
マトモな話題に戻ってほしいage
0275デフォルトの名無しさんNGNG
メモリ確保の時に一度に128Mまでしか確保出来ないんですけど
もしかしてこれって積んでるメモリ量に依存?

あと、合計2Gぐらいまでしか確保出来ないんだけど、これはWin98だから?
0276デフォルトの名無しさんNGNG
> メモリ確保の時に一度に128Mまでしか確保出来ないんですけど
それはわからんが、

> あと、合計2Gぐらいまでしか確保出来ないんだけど、これはWin98だから?
これはそう。確かWin9xのアドレス空間ははカーネル2GBユーザ2GBだと思った。
0277デフォルトの名無しさんNGNG
>>275
API は何を使ってる? 確かデフォルトのヒープは 128MB ぐらいしかないが、
HeapCreate() でヒープを作っておけば 1.n GB まで行けるとか聞いた覚えが。
0278デフォルトの名無しさんNGNG
>>277
デフォルトのヒープは勝手に伸びるからそれは違う。
HeapAlloc自体の制限。
0279デフォルトの名無しさんNGNG
MFCを使わずAPIを直に呼び出す方法のほうが自由度は高いのでしょうか?
これから勉強しようと思っているのですが仕事で使うわけではないので
生産性は一切気にせずに自由度の高い方を勉強したいのですが
0280デフォルトの名無しさんNGNG
>>279
両方使え。
0281デフォルトの名無しさんNGNG
>>279
MFCにできないことはない
0282mother fucker condemnedNGNG
出刃椅子銅鑼射場
0283デフォルトの名無しさんNGNG
正直、Winプログラマなら常識のことなんだろうけど… やっちまいました。
開発環境がWin2kで、Unicode専用でプログラム組んで半分くらい完成したので、
知り合いにテストしてもらったところWin9x系が全滅。。
Unicodeが使えないなんて知らなかった(汗 ←駄目グラマ
CreateWindowExWすら動かないなんて。。 首つるしかないぽ。。
0284デフォルトの名無しさんNGNG
TextOutWとかはUNICODE使えるんで、
手直ししなさい
0285デフォルトの名無しさんNGNG
Unicode Layer For Win9Xとかつかえば?
0286デフォルトの名無しさんNGNG
MessageBoxWは動くから
MSLU入れろやゴルァというメッセージを出して終了するとか

Microsoft Layer for Unicode
http://www.microsoft.com/globaldev/articles/mslu_announce.asp
0287デフォルトの名無しさんNGNG
>>286
その前に、プログラム起動時に DLL のシンボル解決に失敗してダイアログが
出てしまいそうな予感。
0288283NGNG
うひょー。そんなものがあったとは。。
最初unicows.libがどこにも見つからなくて戸惑いましたが、
最新SDKにunicows.libが入っててリンクしたらWin98でも動きました。
微妙に見た目が違うけど、動いたから十分満足です〜
>>284-287さんありがとうございました!
0289デフォルトの名無しさんNGNG
>>287
Unicode APIは(というかNT 3.5までにあったものは全部)9xでも
ERROR_CALL_NOT_IMPLEMENTEDを返すだけのスタブがあるから
大丈夫
0290デフォルトの名無しさんNGNG
メニュー項目を動的に追加する時、どの範囲で ID を割り振れば安全なんでしょう。
リソースエディタはコントロールに 1001 以上、メニュー項目に 40001 以上
の ID を割り当てるようですが、安全な範囲って 0 〜 1000 だけなんでしょか?
メッセージの WM_USER や WM_APP のような標準的なルールってないものでしょうか?
0291デフォルトの名無しさんNGNG
SDKでフレームを実現するにはどうすれば良いのでしょう?
因みにフレームとはウインドウを仕切るフレームのバーの事を指しています。
0292デフォルトの名無しさんNGNG
あるWindows用のネットワークゲームのGPSの様な
物を作ろうと思っているのですが、
HPなどのアドレスは事前に分かっているとして、(例えばLvは0065e43c)
どのようにすれば他アプリケーションの値を取得できるのでしょうか?
0293デフォルトの名無しさんNGNG
ReadProcessMemory
0294デフォルトの名無しさんNGNG
GetProcessByNameを使用して配列に収めたのですが、
そこからどうやって特定のプロセスに絞り込むのでしょうか?

例えばメモ帳がいくつか開いていて、そのうちに一つだけ
という場合はどのようにすればよろしいですか
0295デフォルトの名無しさんNGNG
>>294
> そこからどうやって特定のプロセスに絞り込むのでしょうか?
絞り込むというからには何らかの基準があると思うが、それは何?
0296デフォルトの名無しさんNGNG
InterlockedExchangeAdd で1ずつ足すほうが InterlockedIncrement よりも早い(w2k athlon)んですが
みなさんの所もそうですか?
0297デフォルトの名無しさんNGNG
C++でMFC使わなかったらどうなのよ
しぬんじゃねーの?
0298デフォルトの名無しさんNGNG
>>297
自分でライブラリ久米
0299名無し@沢村NGNG
皆様方、ボタンなのですが、ボタンは子ウインドウなのでマウスでクリックしたとき、そのウインドウのハンドルを取得したいのですが、どうすればできますか?
いろいろなボタンをクリックしたときに、そのボタンに応じたハンドルを取得できますか?
0300デフォルトの名無しさんNGNG
win32 apiスレに池
0301デフォルトの名無しさんNGNG
>>297
俺は ATL/WTL が好きだ。
0302デフォルトの名無しさんNGNG
age
0303デフォルトの名無しさんNGNG
マウスイベント発生時のマウスカーソルの位置を取得したいのですが、
WM_LBUTTONDOWNなどで得られる座標(LOWORD(lParam),HIWORD(lParam))は
ウィンドウ左上からの相対座標で型はWORD(符号なし16ビット整数)ですよね。
マウスポインタがウィンドウよりも左(あるいは上)に行った場合
得られる座標がとんでもない値(USHRT_MAX??)になるのですが
何か解決する流儀みたいなものはあるのでしょうか?
0304デフォルトの名無しさんNGNG
ちゃんとGET_X_LPARAM, GET_Y_LPARAM使ってる?
型はWORDと違うよ。
0305303NGNG
そんな便利な関数があったんですか・・・。恩にきります。
0306303NGNG
調べてみたら"GET_?_LPARAM"って16ビット符号なし整数を
16ビット符号付き整数にキャストした上で
32ビット符号付き整数にキャストするただのマクロなんですね・・・。
0307デフォルトの名無しさんNGNG
リッチエディットにEM_EXSETSEL飛ばしたら勝手にスクロールするぞ?
↓の説明と完全逆じゃねぇ?(参照先MFCのでスマソ)
http://www.microsoft.com/japan/developer/library/vcmfc/_mfc_cricheditctrl.3a3a.setsel.htm
0308デフォルトの名無しさんNGNG
Windows
0309デフォルトの名無しさんNGNG
揚げてみる
0310デフォルトの名無しさんNGNG
Windows イイ!!!
0311名無し@沢村NGNG
皆々様方〜私はいまmidiシーケンサーをつくっているのですが、もうすぐ完成しそうなんで、それが終わったら今度はInternet Explorerのプラグインをつくりたいと思いついたのですよ。
例えばタグで<BGSOUND SRC="aa.mld" LOOP="-1" >と指定したらホームページから携帯の着メロディが流れてくるようにしたいんですよ。でもプラグインなんてつくったことないし、Internet Explorerのプラグインをつるにはどうすればいいか教えてください。
あ、その前にwindouw板の普通のmldプレイヤーをつくるほうが簡単そうだから、先につくろうっと…。
0312デフォルトの名無しさんNGNG
311 マルチうぜぇ
0313デフォルトの名無しさんNGNG
同じウィンドウを複数回 CreateWindow() すると、ウィンドウプロシージャで
static 変数やらグローバル変数やらがほぼ使えなくなりますが、うまく回避する
方法はありますか?
メモリを動的に確保して GetWindowLong(GWL_USERDATA) に放り込むしかない
ですか?
0314デフォルトの名無しさんNGNG
>>313
それしかないでつ。
ただ、データの個数が少ないのなら、メモリ確保せずに
ウィンドウデータに直接放り込む方法もある。
WNDCLASSのcbWndExtraに 4*N の値を指定しておけば、
GetWindowLongで 0 〜 4*(N-1) までを好きに使えるようになるよ。
0315313NGNG
レスあんがとです。
格納したいのはそれなりの長さのテキストとその他なので、cbWndExtra は諦めます。
0316デフォルトの名無しさんNGNG
不可視のウィンドウを作って、WM_SETTEXT を無視、WM_GETTEXT で任意の
文字列を返す、という事をやりたいのですが、どうもうまく行きません。

ウィンドウプロシージャでこれらのメッセージを捕まえようとしても、外部プロセス
からの SendMessage() では普通にテキスト設定/取得されてしまいます。
(ウィンドウプロシージャにメッセージが届いていないようです)
一方、プロセス内部からの SendMessage() では、きちんとウィンドウプロシージャ
にメッセージが届き、期待通りの動作をします。

何がいけないのでしょうか。

LRESULT CALLBACK StringGiverWindowProc(HWND hWnd, UINT Message, WPARAM wParam, LPARAM lParam)
{
 static LPCSTR GivingText = NULL;
 switch(Message)
 {
  case WM_CREATE:
   GivingText = (LPCSTR)((CREATESTRUCT *)lParam)->lpCreateParams);
   break;
  case WM_GETTEXT:
    if(lParam && GivingText)
     return (LRESULT)strncpy((LPSTR)lParam, GivingText, (size_t)wParam);
   break;
  case WM_SETTEXT:
   break;
  default:
   return(DefWindowProc(hWnd, Message, wParam, lParam));
 }
 return 0;
}
0317デフォルトの名無しさんNGNG
先日Win32API質問スレでも質問させていただいたのですが
回答が得られなかったので、こちらで質問させていただきます。
少しお聞きしたいのですが、
WindowsXPproでユーザーアカウントの画像を
ランダムに変更するプログラムを作りたいんですよ。
それでレジストリ書き換えて
(HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Hints\(ユーザー名)\PictureSource)
C:\Documents and Settings\All Users\Application Data\Microsoft\User Account Pictures\ユーザー名.bmp
のフォルダに画像を生成させるとこまではできたのですが、
そのあと表示を更新させる方法がわかりません。
手動でなら、
コンパネ→タスクバーのプロパティ→スタートメニューのカスタマイズ
を開いて全てOKでとじれば更新されるのですが・・・。
どなたかご存じの方がいらっしゃれば宜しくお願いします。
0318デフォルトの名無しさんNGNG
教えてください。

ファイル名と他アプリケーションのウィンドウハンドルがわかっているときに、
その他アプリケーションにファイルをドロップしたことにするような
メッセージを送りたいんだけど、可能でしょうか。どうやればいいんでしょうか。
0319デフォルトの名無しさんNGNG
>>318
メッセージを送ればいいだけだが、いったい何を聞きたいのかわからん
注意点はプロセスメモリーの排他制御で文字列ポインタの扱いに気を付けるくらい
0320デフォルトの名無しさんNGNG
>>319
WM_DROPFILES を送りたいって話だろ。
方法は漏れも知りたい。
0321デフォルトの名無しさんNGNG
>>318
http://www7.big.or.jp/~hina/zidney/programing/wm/wm_dropfiles/
0322318NGNG
APIスレに書くべきだったかもしれません。すみませんでした。

>>319
書き方が悪くてすみませんでした。
ドロップを受けるときはメッセージとして受けるので、
ドロップさせるときもそのメッセージを送ればいいんだろうと思ったんですが、
その先どうしたらいいのかわからなくて。

>>320
そうなんです。ありがとうございました。
318を書いた後
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/shellcc/platform/Shell/reference/messages/wm_dropfiles.asp
まではたどり着いたんですが、結局HDROPの正体がわからなくて。

>>321
これです。ありがとうございます。
目的もここの方と一緒です。早速試してみます。
0323320NGNG
>321
おお。
でも、将来 HDROP の実装が変わったりしてたらイヤだな・・・。
OS バージョンのチェックでも入れればいいのか。
0324316NGNG
API スレに移動しまつ
0325デフォルトの名無しさんNGNG
初歩的なことかと思いますが質問させてください

VC++6.0を使ってプログラムを作成しているのですが、
最近は自前の関数群が色々なアプリに使いまわせるようになって良い気分です。

ですが使っていない関数までコンパイルしてしまっている(ひとつのcppファイルに色々な関数が書いてあるので)のが
気になります。
これはVC++が自動判断して除外してくれているものなのでしょうか。
0326デフォルトの名無しさんNGNG
>>325
.obj 単位でリンクされるみたい。
だから、関数単位に分割コンパイルして、.lib を作るといいんじゃない?
0327デフォルトの名無しさんNGNG
>>325
関数単位のリンクが出来る。
ビルドオプション見てみ。

あと使い回すならライブラリにしとけ。
0328325NGNG
すばやいお返事ありがとうございます
libですか。静的リンクとかいう奴ですね
あれなら使わない関数はリンクされずに済むのですか?
そうならすごい便利だと思います
0329デフォルトの名無しさんNGNG
>>326が知ったかするから>>328が勘違いしてるし
0330327NGNG
>>328
ライブラリにするかどうかとは関係ない。
使い回すならライブラリにしておくと便利なだけ。

オプション設定しておかないとobj(cpp)単位でリンクされる。
libはobjまとめてるだけだから。

0331デフォルトの名無しさんNGNG
>>330
>関数単位に分割コンパイルして、.lib を作るといいんじゃない
>関数単位に分割コンパイルして
>関数単位に分割

OK?
0332デフォルトの名無しさんNGNG
>>326 = 331
オプションでできるのに関数単位に分割して・・ってことが知ったかってことでは?
0333bloomNGNG

http://www.agemasukudasai.com/bloom/
0334デフォルトの名無しさんNGNG
関数単位でリンクってさ、static変数とかの依存関係も考慮してくれるか?
0335デフォルトの名無しさんNGNG
それは関数内で static 宣言した変数がその関数と一緒に削除されてしまわないかってことか?
リンクするときに参照されてないシンボルを検索するんだから、変数が参照されていれば削除はされないだろ。
大体、コンパイルされた段階でその関数と変数は別のところにある。
0336名無し@沢村NGNG
皆々様方〜、私はいま複数のトラックを鳴らすところで大変苦労してるんですが、なんとか同時に複数のトラックを鳴らすとこまではできたのですよ。
でもあともう一歩なんです…!
もう一歩というのは、トラック2つでもシングルトラックを鳴らすのに比べて、速度が半分に落ちるし、鳴り方もぎこちないんです…。
これがそのコードですが、あとどこを直せばいい…?
教えてくだされ〜♪

for(i=0;i<=i_Sum_Track[i_longest_Track];i+=2)
{_Time= timeGetTime();
for(l=0;l<16;l++)
{t[l]=0;
for(j_i=0;j_i<Onpu_Index[i_longest_Track];j_i++)
{k[l]=j[l]*8;
if(CodeCount[l]!=0)
{if(i==t[l])
{midiOutShortMsg(hMidiOut, 0xC0+l+ ((i_gattuki[l]) * 0x100));
midiOutShortMsg(hMidiOut, 0x0000B0+l+ ((7) * 0x100)+((possrider[l]) * 0x10000));
midiOutShortMsg(hMidiOut, 0x0000B0+l+ ((8) * 0x100)+((possrider_b[l]) * 0x10000));
midiOutShortMsg(hMidiOut, 0x0000B0+l+ ((10) * 0x100)+((possrider_s[l]) * 0x10000));
midiOutShortMsg(hMidiOut, (DataCode[l][k[l]]) + (DataCode[l][k[l]+1] * 0x100)+(DataCode[l][k[l]+2] * 0x10000)); // Note On
}
t[l]+=DataCode[l][k[l]+3];
if(i==t[l])
{while (Play_Tempo(DataCode[l][k[l]+3])>=timeGetTime()-_Time);
midiOutShortMsg(hMidiOut,(DataCode[l][k[l]+4])+ (DataCode[l][k[l]+5] * 0x100)+(DataCode[l][k[l]+6] * 0x10000)); // Note Off
j[l]++;
}}}}}
0337デフォルトの名無しさんNGNG
別のスレに書いたのですが無視されてしまったのでこちらで質問させていただきます。
SetROP2関数で描画モードを変更するのはペンにたいして有効なのでしょうか?
ブラシはかんけいないのでしょうか?
0338デフォルトの名無しさんNGNG
>>336
こんなの見ようと思う香具師はいるのか?(w
0339デフォルトの名無しさんNGNG
>>338
ソースの前に日本語の部分からして読む気になれない。
そもそもマルチだしな。
0340デフォルトの名無しさんNGNG
今テキストエディタクラス作ってるんだけど、描画処理が重くて重くて。
EDITクラスはGetDCして書き換えてみるみたいだけど、
皆さんはメモリDCに描画したのをBitBltしてんの?

でも、見えてない(スクロールアウトされた)領域や、
行右側のスペースまで持っとくのは無駄が多すぎると思うし・・・
行毎にCreateComatibileBitmapして、
SelectObject(hMemDC,hCompBMP)してもそれほどコスト掛からない?
それとも、描画する場所や方法を最適化してる?
0341デフォルトの名無しさんNGNG
描画が重いなんて信じられない
まさか文字入力があったりするたびに全領域書き直してる?
0342デフォルトの名無しさんNGNG
C + Win32APIを使ってプログラムをしていますが、
Exeを実行したときのパスってどうやって取得したらよいですか?
MFCを使っていたときはAfxGetApp()->m_pszHelpFilePathを使って
ちょこちょこいじって取得していたのですが…。
0343342NGNG
GetCurrentDirectory()っていうのがあった…。
スマソ。
0344デフォルトの名無しさんNGNG
ブブー
0345342NGNG
>>344
> ブブー
それは俺に言ってるの?
いや、確かにコンソールから実行したらおかしくなるし、
完璧じゃないんだけど…。

他にいい方法あるの?
0346デフォルトの名無しさんNGNG
>>345
Advanced Windowsに詳しく書いてあります
0347デフォルトの名無しさんNGNG
げっともぢゅーるふぁいるねーむ
0348342NGNG
>>346
> Advanced Windowsに詳しく書いてあります

本は持ってないんだけど、
2.2.6 プロセスのカレントドライブ、ディレクトリ
・プロセスのカレントディレクトリ
この部分に情報があるってことか?

取得って結構めんどくさいの?
ちょろっとサマリだけでも教えてくれると楽なんだが…。
0349342NGNG
>>347
> げっともぢゅーるふぁいるねーむ

お、ちょっと試してみる。
0350342NGNG
>>347
できました。ありがとうございます。
0351デフォルトの名無しさんNGNG
>>340がやっていることの予想
case WM_PAINT:
hdc=BeginPaint(・・・);
while(*lpText){
・・・
TextOut(hdc,・・・);
・・・
}
Endpaint(・・・);
break;

(;´Д`)重い重い・・・
0352デフォルトの名無しさんNGNG
char szr[512];
char *cp;
cp = strchr(szr, '\n');
このプログラムの szr を CString で表すには
どう工夫すべきでしょうか?
0353デフォルトの名無しさんNGNG
エディットボックスとかリストとかで選択するとその部分が
反転しますが。その反転部分の色を変更する方法を教えて
ください。
0354デフォルトの名無しさんNGNG
CString szr = ...;
int pos = szr.Find('\n');
0355340NGNG
>>342
現在のプロセス(.exeモジュール)のパス?
だったらGetModuleFileNameで取得。

モジュールがあるディレクトリを取得するなら、
GetModuleFileName
GetFullPathName
_splitpath(path,drive,dir,NULL,NULL)
_makepath(dir,drive,dir,NULL,NULL)
で良いはず。
0356340NGNG
>>353
アイテムはGetSysColor(COLOR_HIGHLIGHT)、
文字はGetSysColor(COLOR_HIGHLIGHT)で取得できる。
ってこのぐらい自分で調べてね。はーと
0357340NGNG
おっと文字の方はCOLOR_HIGHLIGHTTEXTね。

>>351
まあ今の所はそうですが、
幾らなんでも100行もないのに10秒オーバーなんて・・・

>>341

いやそれが、色分けサポート予定なんで、
行毎にテキストバッファと、
VisualInfo* vi
int pos
int len
な構造体のリストを格納して、1文字ずつ描画処理してる。
もちろん、該当番号がきた時にSelectObjectなり、SetTextColorしてる。

重い原因として考えられるのは、1文字ずつ描画する為に、
文字の左が消えないように、SetBkModeでTRANSPARENTして、
文字描画にFillRectしてることぐらいかな。
0358デフォルトの名無しさんNGNG
>>354
char *cp;
はそのまま使いたいのです。
これが問題点。
0359デフォルトの名無しさんNGNG
タイトル変な文章だな
0360デフォルトの名無しさんNGNG
>>358
そういう事はすべきではない。
0361デフォルトの名無しさんNGNG
>>357
色分けしていると言っても、描画にかかる負荷は大した物ではない。
というか、10秒なんて何かが間違っているとしか言えないな

エディタで重いのは、
プロポーショナルならフォントから文字幅を取得するところと、
編集による文字列のコピーが多発する所。
あとは、ブロックコメントの範囲解析とかそんなところだけ

>重い原因として考えられるのは、1文字ずつ描画する為に、

同じ修飾情報を利用するときは、
1文字ずつでなくまとめて描画するのが普通では?

>文字の左が消えないように、SetBkModeでTRANSPARENTして、

意味不明だけど、1文字ずつの描画で位置あわせをしていると言うこと?
それならば、ExtTextOutで位置あわせをするべき

>文字描画にFillRectしてることぐらいかな。

背景の間違いか?
だとするとExtTextOutで一発。

それから、俺の場合は画面の描画にはメモリDCを使わずに
直接ウインドウDCに書き込むようにしている

>>356
取得と設定勘違いしてないか?
0362デフォルトの名無しさんNGNG
>>358
CString str = ...;
int pos = str.Find('\n');
char szr[512];
strncpy(szr, str, 511);
szr[511] = '\0';
char* cp = szr + pos;

または

CString str = ...;
char* cp = str + str.Find('\n');

後者の場合、cpはstrを変更するまでの間有効
0363340NGNG
>>361
FillRectは背景色のためです。可変幅の文字を出力すると、
GetTextExtentPoint32で取得したのより左に背景色が塗られるので、
左の文字やそのアンダーラインの右側が背景色で潰されてしまうんです。
TextOutExtを使えば解決できます?
0364340NGNG
>>361
> >>356
> 取得と設定勘違いしてないか?
ほんとだ、"変更する方法"になってる・・・欝死。

なら、SetSysColorsで変更できるけど、
この関数は現在のウィンドウズセッション中だけ有効(保存されない)ので、
直接wininiなりレジストリなりを書き換えるしか無かったと思う。
ちなみに、Windows 2000/XP(NT4も?)なら、
HKEY_CURRENT_USER\Control Panel\Colors
にある。

ところでひょっとして、自前ウィンドウ内のコントロールでの話?
だったらオーナードローにして描くしかないんじゃ・・・
0365デフォルトの名無しさんNGNG
コントロールの色変更はWM_CTLCOLOR*のハンドリングの方が一般的じゃないか?
0366340NGNG
>>365
でもそれじゃ選択された項目の色は変更できないでしょ?
0367デフォルトの名無しさんNGNG
>>362
char* cp = str + str.Find('\n');
'+' のオーバーロード関数があいまいです。
0368デフォルトの名無しさんNGNG
>>367
だから、そういう事をするな。

>>362
そういう事を教えるな。
0369デフォルトの名無しさんNGNG
>>367
operator LPSTRが定義されてるんで、キャストでも汁
0370デフォルトの名無しさんNGNG
LPCTSTRだと思漏れ
ってかここnotMFCじゃないの?
普通のWin32APIの質問もあるようだし・・・
0371デフォルトの名無しさんNGNG
ATLかも知れぬ
0372353NGNG
>>356
>>361
レス&フォローさんくす。
なんか全ウインドウに関わる変更みたいなんで、FOCUS
で切り替える(元に戻す)ようにやってみるよ。
動的に色の変更すると重そうだけどそのときは別の方法を
考えるかな。
0373340NGNG
失礼。どうやらシステムの問題だったみたい。
今起動してみたらちゃんと1秒前後で全行描画できる。
でもどの道描画重かったので、大変参考になりました。
とりあえず、ExtTextOut使う&出来るだけ連続して描画してみる。
0374デフォルトの名無しさんNGNG
VBAプログラムをC++にコーディングしてるんだけど
さっぱりわからないところハケーン

CreateObjectを使ってObject型変数にOracleのオブジェクト突っ込んでたんだけど
C++にするのってどうすればいいの?
自前で調べてもVBのしか出なくてさっぱりわからんですYO!

CreateObjectのライブラリやヘッダ(があれば)教えて下さいな


実はスレ違いなら正スレ教えて下され。
0375デフォルトの名無しさんNGNG
実はも何も、C/C++ と書いてあるのが目に入らないか?
VB スレに逝け。
0376375NGNG
ごめん、違かったね。
でも、よくわからんが OLE の話じゃないか?
0377デフォルトの名無しさんNGNG
CoCreateInstanceダロ
0378デフォルトの名無しさんNGNG
正直言ってC++だと開発効率悪いからVBで作れ。
0379374NGNG
>>377
サンクスです!こっから先は気合でのりきる予定でがんがります
0380名無し@沢村NGNG
皆々様方〜、ツールバーだが、ツールバーにビットマップを標示すると、
色が表示されずにグレーになったり、使ってるうちにだんだんイロがあせてきたりすることがあるんだが、
これはどうやったら直せるのですか?
ちなみに画面のプロパティの詳細は256色です。
皆々様方〜、教えてくださらんか〜!
皆々様方〜♪
0381デフォルトの名無しさんNGNG
>>380
モニタを買い換えろ。
0382デフォルトの名無しさんNGNG
また沢村かよ・・・
0383デフォルトの名無しさんNGNG
>>380 256色が関係あるって自分で分かっているんだろ。
0384デフォルトの名無しさんNGNG
ベクターからとあるサンプルプログラムセットをダウンロードしてきて勉強中なんだけど、
エラーが出るプログラムがありますた。

>> //システムメニューの「サイズ変更」を削除
>> DeleteMenu (GetSystemMenu(hwnd, false), SC_SIZE, MF_BYCOMMAND);
の部分が、

>>エラー E2451 Sample10.c 165: 未定義のシンボル false(関数 WindowsProc )
と、コンパイル通りません。コンパイラはbcc5.5使っていまつ。
0385名無し@沢村NGNG
皆々様方〜、いろいろありあとうございました、皆々様方〜!
私はここでコールバックタイマーを使用しろとか、複数トラックのデータをマージしてひとつのデータにまとめろとか、いろいろなアドバイスをいただきました。
でもはっきりいってそんな面倒なことはしたくなかったんです…。
はっきりいって手抜きに近い楽なやりかたで複数トラックをちゃんと演奏する方法を見つけたかったんです。
でもついにその方法が見つかったんです!!
その完璧なルーチンをここに乗せますから、皆様方も楽にmidiシーケンサーをつくるときの参考にしてください、皆々様方〜!

for(i=0;i<=i_Sum_Track[i_longest_Track];i++)
{for(l=0;l<16;l++)
{t[l]=0;
if(CodeCount[l]!=0)
{for(jj[l]=0;jj[l]<Onpu_Index[l];jj[l]++)
{kk[l]=jj[l]*8;
if(i==t[l] )
{
_Multi_Time[l]= timeGetTime();
midiOutShortMsg(hMidiOut, 0xC0+l+ ((i_gattuki[l]) * 0x100));
midiOutShortMsg(hMidiOut, 0x0000B0+l+ ((7) * 0x100)+((possrider[l]) * 0x10000));
midiOutShortMsg(hMidiOut, 0x0000B0+l+ ((8) * 0x100)+((possrider_b[l]) * 0x10000));
midiOutShortMsg(hMidiOut, 0x0000B0+l+ ((10) * 0x100)+((possrider_s[l]) * 0x10000));
midiOutShortMsg(hMidiOut, (DataCode[l][kk[l]]) + (DataCode[l][kk[l]+1] * 0x100)+(DataCode[l][kk[l]+2] * 0x10000)); // Note On}
t[l]+=DataCode[l][kk[l]+3];
if(i==t[l] ) { while (Play_Tempo(DataCode[l][kk[l]+3])>=timeGetTime()-_Multi_Time[l]);
midiOutShortMsg(hMidiOut,(DataCode[l][kk[l]+4])+ (DataCode[l][kk[l]+5] * 0x100)+(DataCode[l][kk[l]+6] * 0x10000)); // Note Off } }} }}
0386デフォルトの名無しさんNGNG
>>384
false→FALSE
0387デフォルトの名無しさんNGNG
>>384
#define FALSE 0
だからC++でコンパイルすれば通るかもな(藁
0388デフォルトの名無しさんNGNG
>>386
途方に暮れていたので、本当に助かりました。
ありがとうございました。
0389デフォルトの名無しさんNGNG
>387
ありがとうございます。cppなら通りました。
0390387NGNG
>>389
FALSEに直しとけよ。
っていうか、悪い事言わないから、
http://www.microsoft.com/japan/developer/library/default.asp?URL=/japan/developer/library/jpuipf/_win32_deletemenu.htm
見とけ。
0391デフォルトの名無しさんNGNG
つかなんでエラー表示で、

・・・未定義のシンボル false(・・

と出ているのに、falseで検索かけてみようとか思わないんだ?
それが不思議。
0392デフォルトの名無しさんNGNG
>>391
はじめてCに触れてコンパイルしてみたけれど、falseのところでエラーがでる。
んで、"false"で検索かけてみたらページがヒットしすぎてマズー

っていうところなんじゃないのかな?
がんばれ>>389
0393デフォルトの名無しさんNGNG
>>390
なぜ DeleteMenu ?
0394390NGNG
本当だ。GetSystemMenuじゃなきゃ意味不明だな。
0395デフォルトの名無しさんNGNG
DLL のことを 「スタットレス」 と呼ぶ人がいるんですがいかがなものでしょうか?
0396デフォルトの名無しさんNGNG
>>395
どうしてそんな呼び名になったんだ?
0397デフォルトの名無しさんNGNG
どうも、「スタティック」 との対比らしいんですけど・・・
0398デフォルトの名無しさんNGNG
英語が不自由な池沼だろ。生暖かい目で放置してやれ
0399デフォルトの名無しさんNGNG
滑りにくいタイヤのことを 「スタットレス」 と呼ぶ人がいるんですがいかがなものでしょうか?
0400デフォルトの名無しさんNGNG
>>399
どうしてそんな呼び名になったんだ?
0401デフォルトの名無しさんNGNG
どうも、「スタティック」 との対比らしいんですけど・・・
0402外部シンボルNGNG
スミマセン、質問なんですが。
Windowsでclass内のメンバ関数にHWNDやHINSTANCEを渡すと、
そこで外部シンボルエラーが出てしまいます。
試したOSは98SEです。
そして、同じVC6++の入っている2000マシンでソースを何も弄らずにコンパイルすると、
今度は何事も無く通りました。
出来あがったOBJファイルのみを98環境に持って来てリンクのみさせた場合も同じく動きました。
以上のことから察するには、98環境では何らかの処置をしないと正しいOBJファイルが作れないのでは?と思いました。
2000マシンが会社のマシンということで、何とか自宅の98マシンでコンパイル&リンクを通したいのですが、
暫くHELP等を見て悶々と考えていたのですが、未だ解決せず。
何か解決策がありましたらご教授下さい。
0403デフォルトの名無しさんNGNG
単に2つのマシンでlibとかincludeとかSDKとかが違うだけだろ。
OSは関係ねーって。
どんなエラーが出るのか具体的に書けよ。
0404402NGNG
申し訳ありません。
このようなエラーが出ました。
リンク中...
main.obj : error LNK2001: 外部シンボル ""public: bool __thiscall InitDevice::InitD(struct HWND__ *)" (?InitD@InitDevice@@QAE_NPAUHWND__@@@Z)" は未解決です
Debug/My.exe : fatal error LNK1120: 外部参照 1 が未解決です。
link.exe の実行エラー

2つのマシンはOS以外はほぼ同じ環境です。
lib等は二つを並べて確認したわけではないので、それは早速明日確認してみます。
ありがとうございました。
0405402NGNG
自己補足ですが、
クラスを解いてただの関数化した場合はちゃんとリンクまで通りました。
なので、libとか、その辺の張り忘れではないと思います。
クラス化して、メンバ関数にHWNDを渡したときのみ、上記のエラーが出ます。
(その他のint等の場合は出ない)
0406デフォルトの名無しさんNGNG
リビルドしてみるとか?
0407402NGNG
はい、リビルドもしてみました。
手動でDebug内のファイルを全部消してもやってみましたが、
やはり同じエラーで終了してしまいました。
クラス→普通の関数に直すとどうやってもリンクも通ります。
ただ、ソースの管理上クラス化してあったほうがありがたいです。
どうしても原因が解らなかった場合は、仕方ないので関数のまま使おうとは思っています。
0408デフォルトの名無しさんNGNG
InitDの宣言と定義を晒してみてはどうだろう
0409402NGNG
縦に多少伸びてしまいますが…。

//ClsInitDevice.h内
#include <windows.h>
…
class InitDevice{
…
public:
 bool InitD(HWND hWnd);
};

//ClsInitDevice.cpp内
bool InitDevice::InitD(HWND hWnd)
{
…
return true;
}

//main内
#include "ClsInitDevice.h"
…
InitDeviceID,*pID;
pID= &ID;
…
if(!(pID->InitD(hWnd))) return 0;

…の部分は特に問題ないと思うので省かせていただきました。
他のメンバ関数は正常に呼び出せれるので、そこも省きました。
以上が問題が起きているるメンバ関数に関する部分です。
0410402NGNG
訂正
InitDevice ID, *pID;
は離れています。
TABのままコピーしたらくっついてしまった…。
0411デフォルトの名無しさんNGNG
質問です

RS232Cを使ってデータ転送をしたいのですがC言語でどのように書き込めば良いか分かりません
javaやVBだとライブラリ関数があるようなんですけど,Cだとないっぽいです.
ちなみにDOSで動かそうと思っております.

知ってる人お願いします…
0412デフォルトの名無しさんNGNG
実はclsinitdevice.cppがリンクされてないとか、そんな話ではないだろうし、、
0413デフォルトの名無しさんNGNG
>>402
プロジェクトの設定で
ClsInitDevice.cpp
の「このファイルをビルドしない」にチェックいれてないか?
0414402NGNG
あ、コピーし忘れていました。
//ClsInitDevice.cpp内
#include "ClsInitDevice.h"

他のクラス(そっちはHWNDとか全然渡さない)も全く同じ記述方法で作成しているのですが、
問題なく動いています。
一度、InitD(void)として、別の関数でHWNDだけ新しく作ったメンバに渡してやろうとしたら、
今度はそっちがエラーを出すようになり、結局元に戻しました。
ちなみにHWNDを渡さず、メンバ内で使用している所をコメント化するとリンクまで行きます。
そんなわけでHWND付近が怪しいと睨んでいるのですが…。
0415デフォルトの名無しさんNGNG
Windows2000買うって方法は駄目なの?
0416402NGNG
>このファイルをビルドしない
いえ、そんなことはありませんでした。
チェックは入っていません。
0417402NGNG
>Windows2000
以前に購入済みなのですが、
インストールの際にどうしてもCD読みこみエラーが出てしまい、断念しました。
特にCDが汚れているわけでもなく(メディア・ドライブ同様)10数回試しましたが結局うまく行きませんでした。
98は普通にインストール出来るので、引き続き98を使用しています。
試しに友人から借りたXPもインストールしてみたのですが、やはりCD読みこみエラーが出てしまいました。
そんなわけで、今も本棚の片隅で眠りつづけています>2000
出来れば2000を使いたいんですけどね…。
0418デフォルトの名無しさんNGNG
おいおい、正規に購入したのなら返品して交換してもらえよ・・・。
0419デフォルトの名無しさんNGNG
>>416
別のクラスを定義して
HWNDを使うメンバを追加しても同じエラーが出る?
0420デフォルトの名無しさんNGNG
InitDeviceID,*pID;
0421デフォルトの名無しさんNGNG
420に期待 (・∀・)ニヤニヤ
0422402NGNG
>交換
はい、製品のプレスミスなら交換してもらおうと思い、
検証を取るために会社の現在使用していないPCに試しにインストールしてみたところ、
正常にインストールできました。
また、会社の備品のWin2000をお借りして自宅PCにインストールしてみたところ、
やはりCD読みこみエラーが出てしまいました。
しかし、98のCDを始めとする他のCDで読み取り不可になったことはありません。
98がインストールできなければ、ドライブ不良となるのですが、
そんな状況で何が原因なのか検討がつかず、結局交換もしていないというわけです。
0423402NGNG
>419さん
はい。
エラーの出る場所が変わるだけです。
HWNDを渡す部分にエラーが出てきます。
ちなみに、試しにHINSTANCEも渡してみたところ、同様のエラーが出ました。

>420さん、421さん
スミマセン、InitDeviceID,*pIDはコピーミスです。
InitDevice ID, *pID
の空白部分にTABを使用しているのですが、
そのままコピーして貼り付け、書き込みをしたら何故かくっついてしまいました。
なのでここでは関係ないですが、pID= &ID;もそれぞれ離れています。
折角のご指摘、申し訳ございません。
0424デフォルトの名無しさんNGNG
if(!(*pID->InitD(hWnd))) return 0;
0425デフォルトの名無しさんNGNG
>>423
早急に結論付けるつもりは無いけど、
WinDef.hで定義されてる型は全てアウトかなぁ。
0426402NGNG
>424さん
C:\data\c\win\2002120501\main.cpp(192) : error C2100: 間接指定演算子 (*) の使い方が不正です。
と出てしまいました。
0427デフォルトの名無しさんNGNG
片方だけSTRICT / NO_STRCITTがDefineされてるとかないよね?
0428デフォルトの名無しさんNGNG
WINAPI WinMainにする。
0429402NGNG
>425さん
そ、そんな。
期待し過ぎかもしれませんが、Cにそんなところでこけて欲しくないです。

>427さん
はい、そう言った物は共通のヘッダに書きこんで、それぞれ読ませていますので。
0430402NGNG
>428さん
やってみました。
が、結果は同じでした。
0431デフォルトの名無しさんNGNG
PASCAL WinMainにする。
0432デフォルトの名無しさんNGNG
プリプロセッサを全部展開して、HWNDがどうなっているのかたしかめてみたら?
0433402NGNG
>431さん
元に戻しました。
が、結果は変わりませんでした。

どんどん弄りだすとHWNDがあちこちで必要になると思うのですが、
class内に飛び込ませるようなことは普通はないのでしょうか?
自分の作り方が例外的なのかなぁ…。
0434デフォルトの名無しさんNGNG
hWndはどこで定義されてるんだ?
0435デフォルトの名無しさんNGNG
windef.h
0436402NGNG
>432さん
今のところ「これだー!」ってのが見つかりません…。

>434さん
hWndは、CreateWindowの返値です。
組んでいる途中で確認したのですが、正常に返しています。
0437デフォルトの名無しさんNGNG
>>436
HWND hWnd; はグローバル変数にしてる?
0438402NGNG
>435さん
それをincludeしろって事ですよね?
main.h、ClsInitDevice.h共に試してみましたが、結果は同じでした。
試すたびにリビルドしているので、実はobjが更新されていなかったなんてオチは無いと思います。
0439デフォルトの名無しさんNGNG
HWNDをintにして、使用前後にcastしてみる、つーのは通るのかい?
0440デフォルトの名無しさんNGNG
>>402
ここまできたらソース全部どっかにうpした方が
速いと思われ
0441402NGNG
>437さん
以前はグローバルでしたが、現状ではローカルです。
引数で持ち歩いています
0442402NGNG
>439さん!!!
通りました!!
正常動作しています!!
何故!!?

>440さん
その手間が省けそうです。
0443デフォルトの名無しさんNGNG
>>441
それってちゃんと変数の範囲以内にあるの?
0444439NGNG
えと、じゃあ、HWNDをHWND__にして、
どういうエラーがでるか報告してください。
0445402NGNG
>443さん
あります。
持ち歩くのは面倒くさいですが、その辺の抜かりはありません。

>439さん
HWND_ hWndってことですか?

2002120501\main.cpp(187) : error C2065: 'HWND_' : 定義されていない識別子です。
2002120501\main.cpp(187) : error C2146: 構文エラー : ';' が、識別子 'hWnd' の前に必要です。
2002120501\main.cpp(187) : error C2065: 'hWnd' : 定義されていない識別子です。
2002120501\main.cpp(191) : error C2440: '=' : 'struct HWND__ *' から 'int' に変換することはできません。(新しい動作 ; ヘルプを参照)
この変換には reinterpret_cast, C スタイル キャストまたは関数スタイルのキャストが必要です。
cl.exe の実行エラー

このようにでました。
0446デフォルトの名無しさんNGNG
_ではなく、__( under*2 )です
0447402NGNG
>446さん
すみません。
以下のようになりました。

2002120501\main.cpp(191) : error C2679: 二項演算子 '=' : 型 'struct HWND__ *' の右オペランドを扱う演算子は定義されていません。(または変換できません)(新しい動作; ヘルプを参照)
2002120501\main.cpp(192) : error C2440: 'type cast' : 'struct HWND__' から 'int' に変換することはできません。(新しい動作 ; ヘルプを参照)
この変換を実行可能なユーザー定義変換演算子がないか、または演算子を呼び出せません。

191行目がCreateWindowsからの返値を受け取るところ。
192行目がInitDを読み出すところです。
0448439じゃないけどNGNG
あかん呆けてた。

409のソースに対して、
全ての "HWND" を "HWND__ *"で置換してみてください
0449439NGNG
あれ?名前が変だ、、、
0450デフォルトの名無しさんNGNG
>>402
あのさー、関係あるのかないのかわかんないけど、
windef.hで
DECLARE_HANDLE  (HWND);
って宣言されてるマクロ「DECLARE_HANDLE」ってWinnt.hで宣言されてるじゃん。
Win9xだとどうなってる?
0451デフォルトの名無しさんNGNG
Abstract:

This module defines the 32-Bit Windows types and constants that are
defined by NT, but exposed through the Win32 API.
0452402NGNG
>439さん
あれ?
また同じエラーが…。
焦ってんのかな…。

>450さん
WINNT.H(208): #define DECLARE_HANDLE(name) struct name##__ { int unused; }; typedef struct name##__ *name
WINNT.H(211): #define DECLARE_HANDLE(name) typedef HANDLE name
と検索したら出てきました。
0453402NGNG
>439さん、及び皆さん
色々ご教授下さいましてありがとうございました。
お蔭様でclassを使用しつつ、目指すべき動作が出来そうです。
何故動いたのか、どうして動かなかったのかはまた個人的に検証してみたいと思います。

0454名無し@沢村NGNG
皆々様方〜、教えてくださらんか〜♪
それはmidiファイルの読み込みだが、自分で保存したmidiファイルは難なく読み込めるわけよ。
だが、他のmidiシーケンサーで作ったmidiファイルは、ちゃんと読み込めるものと、読み込んで鳴らすとチンドン屋みたいな音になってしまうものとが出てくるわけよ。
ま、ほとんどのmidiファイルはチンドン屋みたいになってしまって、ちゃんと読み込めるものはほんの少しだわな…。
皆々様方〜、私はこの原因を分析した結果原因らしきものを突き止めたわけよ。
それはノートノンやオフのステータスバイトってあるだろ?90や80よ。
それを省略して本来90407F7Fみたいにするところを407F7Fと省略するだろ?
で続けて書くと90407F7F407F7Fになるわな…。
それでデルタタイムというのもあるだろ?
デルタタイムは1バイトから4バイトまでの可変長になっていて、1バイトだったら、例えば90407F7Fになるが、もし4バイト
だったら、例えば90407F7F407F7Fになるだろ?
そうすると90407F7Fに続く407F7Fがステータスバイトが省略されてのノートオンのメッセージなのか、デルタタイムなのか区別がつかんわけよ。
どちらも7F以下で同じだしな…。
皆々様方〜、90407F7Fに続く407F7Fがステータスバイトが省略されてのノートオンのメッセージなのか、デルタタイムなのか区別する方法を教えてくださらんか〜皆々様方〜♪
ぜひお願いします♪
私はいま最後の壁にぶち当たっているのですよ!!!
0455デフォルトの名無しさんNGNG
>>454
死ねよ糞マルチポスト野郎
0456デフォルトの名無しさんNGNG
つーか、「沢村」 は定型の荒らしコピペだから、みんな以降無視してくれよ。
0457帳票NGNG
Winで帳票印刷プログラムを作っています。
しかし、印刷する情報量によっては一つの帳票が2ページ以上のサイズに
なることもあります。
連続帳票に印刷するような単純な形態であれば、単にキリのいいところで
改頁かますだけなので別に悩むこともないのですが、集計表や円グラフ等を
同時に印刷(つまり、グラフィカルで見栄えがいいものを)するので、
見栄えが良いように改頁する工夫が必要です。

また、印刷する帳票の種類が多くあり、帳票毎に改頁位置を調整する手間
をかけるのは時間が無駄・もったいない気がします。

そこで皆さんに質問ですが、汎用的な帳票印刷処理を作るのになにか良い
プログラミングテクニックは無いでしょうか?
実コードを示さずとも考え方で結構です。よろしくお願いします。

ちなみに、自身で調べてみましたがどうやら難しい部類のようで、
解説サイトは見つけられず、開発ツール等はいくつか見つかりました。

ツール(ライブラリ)類に頼る方が早いでしょうが、スキルアップのために
も理解したいと思います。
0458デフォルトの名無しさんNGNG
TeXに倣うのも手。
たしか、綺麗さを評価関数にして、動的計画法で
ページの切れ目とか、文字幅とかを調整してた
0459デフォルトの名無しさんNGNG
そもそも帳票のレイアウトを、Word みたいにページを意識したものにするとか。
0460デフォルトの名無しさんNGNG
おいらも純粋にC/C++を勉強したくて、VC++でMFCを利用せずに勉強しています。
そこで。。。
あるプログラムを組んだんですよ、計算させるプログラムを。
そこで計算時間が気になってきて、測定したくなったんです。
ところがclockとか何とか関数はあるんですが使い方が全然わかりまへん。
おせーてくださいまし。
0461デフォルトの名無しさんNGNG
>>460
計算開始前に clock() の返す値を保存しといて、
それを計算終了後に clock() の返す値から引いて
CLOCKS_PER_SEC で割れば秒単位で時間が出る。
0462デフォルトの名無しさんNGNG
Windows なら GetTickCount() 使いなさいよ。
timeGetTime() ならより正確に。
0463デフォルトの名無しさんNGNG
よくプログラミングエディタで文字の強調表示ってやってるけど、どうやればいいの?
RichEditに少し手を出してるけど、部分編集のやり方が分からない。
0464デフォルトの名無しさんNGNG
>>463
フォントをBOLDに変更するか、
数ドットずらして二重に描画すればいい。
あ、RichEditは知らない。
0465デフォルトの名無しさんNGNG
>>463
API なら CreateFont() の引数 fnWeight に FW_BOLD とか指定するけど
RichEditは使ったことないからしらん
CreateFontIndirect() でもいいけどな、て書いて思ったけど
文字の強調表示って選択での反転表示じゃないよな、モウネルケド
0466465NGNG
あ、ケコーン
モーネル
0467デフォルトの名無しさんNGNG
Wordpadのソースみれ。
0468デフォルトの名無しさんNGNG
RichEditならLockWindowUpdateで描画ロックして
範囲選択→フォント変更(boldとか)→範囲選択解除
LockWindowUpdateしないと選択範囲が見えちゃうYO-
0469デフォルトの名無しさんNGNG
DLLからDLLを呼び出すコードを書いているのですが、
呼び出される側のDLL、単独で呼び出すと問題なく
呼び出せるのですが、呼び出す側のDLLから呼ぼうとすると
エントリーポイントが見つからないといってきます。

dependency walkerでのぞいてみると、呼びだされる側の
DLLをみた範囲では普通にエントリポイントが見えるのですが
呼び出した側のほうを開くと、呼び出しDLLは、大丈夫ですが
依存関係にある呼び出される側のDLLのエントリポイントが
見えなくなっています。

リンクは、libファイルを使った静的リンク。

いろいろと調べてみましたがよくわからないのでなにか
とっかかりになりそうなことがありましたらコメントいただきたいと
思います。
0470帳票NGNG
レスありがとうございます。

>>458
TeX、初めて調べて知りましたが、難しいですね。
まあ、概念は何となく分かりました。
>たしか、綺麗さを評価関数にして、動的計画法で
>ページの切れ目とか、文字幅とかを調整してた
なんとか実践出来るように考えてみます。

>>459
>そもそも帳票のレイアウトを、Word みたいにページを意識したものにするとか。
一応、そのつもりでいます。問題は、キレイに印刷出来るようかつ、
帳票の種類に依存しない汎用的なロジックを如何に組むかということですね。
0471デフォルトの名無しさんNGNG
extern "C"
0472463NGNG
>468
選択範囲の取得って、どうやればいいんですか?
>467
ワードパッドのソースって、何処にあるんですか?

0473デフォルトの名無しさんNGNG
>>472
googleで検索もせずに何を言うか
0474デフォルトの名無しさんNGNG
>>469
471 のと、あと WINAPI
0475デフォルトの名無しさんNGNG
>>469
LoadLibrary() + GetProcAddress() + GetLastError() + FormatMessage() も試してみれ。
0476デフォルトの名無しさんNGNG
ちょっとスレ違いかもしれないけども。

ソフトシンセを作ろうと思ってるんですけども、肝心のシンセ部分は出切るんですが、
MIDIドライバにして、Windows自体から汎用的に(言い方がおかしい)使えるようにしたいんです。
つまり、RolandのVSCやYAMAHAのS-YXGやWinGrooveみたいな感じですね。

で、DDKを使おうと思ってるんですが、まず98DDKしかありません。最新版は落とせないし。
MSDN見てサンプルに「FMSYNTH」やら「DDKSYNTH」やらあるんですが、
言われたフォルダにはそれがないです。多分98DDKだからでしょうが。
MIDIドライバのサンプルなんか無いでしょうか?
Googleでの検索では見つかりませんでした。
0477デフォルトの名無しさんNGNG
んー、そういう話は回答つかないかもネー。
0478名無し@沢村NGNG
皆々様方〜、教えてくださらんか〜!!
それは画面のちらつきについてだが、私は最初WM_PAINTメッセージの中でペイントしてInvalidateRectで再描画するという方式だったのよ。
でもこれだとどうしても画面がちらついてしまうので、WEBで検索してダブルバッファ方式を採用したのよ。
この検索したページのダブルバッファ方式というのは裏画面にCreateCompatibleBitmapでビットマップをつくっておいて、
描画はすべて裏画面におこない再描画するときは裏画面のビットマップを表画面に転送するというものなのよ。
これでとりあえずは全然ちらつかなくなったのよ。
でもこれだと多分モニターかグラフィックボードの性能が悪いためだと思うけど、10秒くらい放っとくと突然画面にちゃんと色が出なくなってしまうのよ。
でも他のソフトなんかモニターやグラフィックボードの性能は悪くても画面はちらつかないし、何時間やっても画面の色が出なくなることはないので、もっとうまいちらつき防止策をやっているはずなのよ。
まあ、WM_PAINTメッセージの中でペイントしてInvalidateRectで再描画しても10秒とまではいかないが、5分ほどで画面の色が出なくなってはいたわな…。
おそらくBITBLTを多用したためだという節が臭いわな…。
皆々様方〜、性能がボロっちいモニターやグラフィックカードでも他のソフトみたいに画面の色が出なくなったりしないいい方法を教えてくださらんか〜、皆々様方〜、お願いします〜♪
0479デフォルトの名無しさんNGNG
>>478
まあ、多分お前のプログラムのバグだろう。
冷静になって、きちんとデバッグすれば良いと思う。
0480デフォルトの名無しさんNGNG
>>479
マルチにマジレスごくろうさん
0481デフォルトの名無しさんNGNG
>>480
ハイハイ、発言できてよかったね。
0482名無し@沢村NGNG
皆々様方〜、再描画における突然色が出なくなる問題だが、原因を突き止めたぞ、皆々様方〜♪
皆々様方〜、その原因というのはブラシとペンを多用しすぎていたためじゃ〜!
試しにブラシとペンをうんと減らしてみたら突然色が出なくなることはなくなった…。
ただ、あまり減らしすぎたんで、今度は画面のみてくれがしょぼくなってしまった…。
なんとかしょぼさを最低限に食い止めるためには、どうしてもあとひとつペンヲ増やす必要があるのだが、増やして大丈夫だろうか?
また突然色が出なくなったりしないだろうか?
皆々様方〜、ブラシとペンはいつくまでつくっても画面がおかしくならないか、教えてくだされ〜、皆々様方〜♪
0483デフォルトの名無しさんNGNG
>>482
取りあえず、何個使ったらおかしくなって、何個まで減らせば良くなったのかを書いてくれ。
0484デフォルトの名無しさんNGNG
>>482
マルチポストやめろ
0485デフォルトの名無しさんNGNG
>>482
マジでウザい
0486名無し@沢村NGNG
皆々様方〜、ダメだ。ブラシ2、ペン3ではあまりみてくれがしょぼかったんで、
ブラシ2、ペン4に増やしてみたところ、長持ちはするが、やはり5分くらい再描画を繰り返すと、
突然画面に色が出なくなってしまうのよ。
どうもブラシ2、ペン3というのが、画面の色が出なくならないリミットらしいが、これだとあまりにしょぼすぎて完成作品がイヤになるわけよ。
どうしてもブラシ2、ペン4に増やしたいんだがなあ…。何かいい方法ない?
ところでリソースメータって何?フリーでありますか?それはどこからダウンロードできるのですか?
0487デフォルトの名無しさんNGNG
>>486
インクカートリッジ交換してみろ
0488デフォルトの名無しさんNGNG
>>486
ちらつきの問題なのかい?
0489名無し@沢村NGNG
皆々様方〜、原因はペンとブラシの数にもあるが、それ以上にBITBLTを多用することにあるんじゃないかなという気がしてきたよ。
というのもリソースメータがアクセサリーの中に入っていたのを偶然発見しさっそく起動させて監視してみたところ、システムリソースとGDIリソースというのが見る見る少なくなっていくのがわかったからよ。
というのも私はファイルのデータの数だけforループさせてその分だけBITBLTで描画しているため何千回、何万回とBITBLTを使って広大な領域に描画していることになるわけよ。
何か常識で考えても何千回、何万回とBITBLTを使ったら画面がおかしくなりそうな気がしてきたわけだが、何千回、何万回もBITBLTを使って広大な領域に描画したら画面がおかしくなりますか?
教えてくだされ〜、皆々様方〜♪
0490デフォルトの名無しさんNGNG
>>489
何だ?広大な領域って?
0491デフォルトの名無しさんNGNG
>>486,489
http://pc3.2ch.net/test/read.cgi/tech/1036654893/l50
こっちに統一してくれ
0492デフォルトの名無しさんNGNG
Releaseしてないだろ。
0493デフォルトの名無しさんNGNG
>492 漏れもそう思う
0494デフォルトの名無しさんNGNG
DCオブジェクト経由ではなくメモリーDCに直接描いた後転送した方が
リソースの問題もなければ速度も速い
0495デフォルトの名無しさんNGNG
間違いなく492
0496デフォルトの名無しさんNGNG
上記リンク先にReleaseはやってるような事が書いてある・・・
0497デフォルトの名無しさんNGNG
Releaseしてるつもりなだけだろ。
おい沢村!
現象が再現する最短コードアップしろ!
お兄さん達が可愛がってやるぜ。
0498デフォルトの名無しさんNGNG
ReleaseしてもDCの関連づけを外してなければ解放されないのは分かっているのだろうか?
0499デフォルトの名無しさんNGNG
何も分かっていない方に30,000ペリカ
0500名無し@沢村NGNG
>>497
まずWinmain関数のメッセージループの前のところに、次ぎの関数を入れてる。
void Init_Draw()
{
HDC hDC;
hDC=GetDC(hWnd);
hMemDC=CreateCompatibleDC(hDC);
hBIT=CreateCompatibleBitmap(hDC,800,600);
SelectObject(hMemDC,hBIT);
PatBlt(hMemDC,0,0,800,600,PATCOPY);
ReleaseDC(hWnd,hDC);
}
0501名無し@沢村NGNG
そしてウインドウプロシージャのWM_PAINTメッセージの中に次ぎの関数を入れてる。
void Init_Draw2(HWND hwnd)
{
CreateRect();//Rectの作成

hDC2=BeginPaint(hwnd,&paintstruct);
//ペンとブラシを作成
CreatePen_Brush();
FillRect(hMemDC,&zen_rect,hBrush2);
//テキストの色を指定
SetTextColor(hMemDC,RGB(20,20,20));
//テキストの背景色を指定
SetBkColor(hMemDC,RGB(190,190,190)) ;
SelectObject(hMemDC,hFont);
for(onkaipos=0;onkaipos<28;onkaipos++)
{
TextOut(hMemDC,onkaipos*21+20,515, onkais[onkaipos].name,strlen(onkais[onkaipos].name));
}
ct_Textout(hMemDC);
//リージョン外にビットマップを描画
hMemDC2=CreateCompatibleDC(hMemDC);
SelectObject(hMemDC2,hBMP);


(中略)

//ペンとブラシを削除
DeletePen_Brush();
DeleteDC(hMemDC2);
EndPaint(hwnd,&paintstruct);
}
0502名無し@沢村NGNG
そして最後にウインドウプロシージャのWM_DESTROYメッセージの中で裏画面のhMemDCを初めいろいろ削除してる。

DeleteDC(hMemDC);

DeleteObject(hBMP);
DeleteObject(hBMP2);
DeleteObject(hBIT);
0503名無し@沢村NGNG
…とまあこんな感じだが、これだけじゃ開放されないの?
「ReleaseしてもDCの関連づけを外してなければ解放されない」というのは何?
それは初耳です。それはどうするのですか?
0504デフォルトの名無しさんNGNG
マルチすんなボケ
どっちかに統一しろ
0505デフォルトの名無しさんNGNG
こいつの相手してる限りいつまでもマルチを繰り返す。
どっかで相手してもらえると思ってるからマルチしてる。
0506デフォルトの名無しさんNGNG
>>503
プログラマー向きの性格じゃないから
ソース全部削除して自分探しの旅にでも出てこい
0507デフォルトの名無しさんNGNG
>>503
マルチポストうざい
首吊って氏ね とまでは言わないからもう来んな
0508デフォルトの名無しさんNGNG
やっぱり関連付け戻してないし
開放されるわけが無い
0509デフォルトの名無しさんNGNG
30,000ペリカくれ
0510デフォルトの名無しさんNGNG
SelectObject関数は、 指定されたデバイス コンテキスト (DC) 内にオブジェクトを選択します。
新しいオブジェクトは、 同じ種類の以前のオブジェクトと置き換わります。

アプリケーションは、 新しいオブジェクトを使って描画を終了したら、 必ずそのオブジェクトを
元のデフォルトのオブジェクトに置き換えなければなりません。

坊や、分かるかい?
0511デフォルトの名無しさんNGNG
400デュカーティくれ
0512デフォルトの名無しさんNGNG
他のスレでも質問に答えてもらってる癖に
それを直そうともしない。
何のために質問しているのか。
0513デフォルトの名無しさんNGNG
>>503-508
頼むから沢村を相手にしないでくれ。
0514名無し@沢村NGNG
時に、(Not MFC)のヌヒ等よ、ActiveXをつくるときはどうしてる?
俺は普段は(Not MFC)だが、ActiveXをつくるときだけは(MFC)してるよ。
VC++の場合、(Not MFC)でActiveXをつくろうと思ったら、内部構造を完全に把握していなければならず、死ぬほど難しいぞ!!
0515デフォルトの名無しさんNGNG
( ´,_ゝ`)プッ
0516デフォルトの名無しさんNGNG
( ´,_ゝ`)プッ
0517デフォルトの名無しさんNGNG
放置
0518名無し@沢村NGNG
あと、ActiveXをつくるにはMFCじゃなくてATLがいいって聞いたんだけど、
俺って本当に馬鹿だからATLをさっぱり理解できないんだよね。
0519名無し@沢村NGNG
>>518
俺の名を語るな!!
0520名無し@沢村NGNG
( ´,_ゝ`)プッ
0521名無し@沢村NGNG
俺のことは放置してくだされ〜、皆々様方〜♪
0522名無し@沢村NGNG
ライトウェーブや3DStudioMaxのフォーマットなんてダサくて使えないよ。
せめてバーチャファイターのチェンリーなみのがサクサク動かないと…!
PCの3Dはダサいから今のところ手を出していない…。
0523デフォルトの名無しさんNGNG
FormatMessageについておしえてください。 
普通はNetMsg.dllを読み込んで処理すると思うのですが、
独自のメッセージを追加したときにでうまく処理できると聞いたのですが
具体的にどうすればいいのでしょうか?
0524デフォルトの名無しさんNGNG
>>523
メッセージリソースだか文字列リソースだかを追加する
0525デフォルトの名無しさんNGNG
ブルドッグソース
0526デフォルトの名無しさんNGNG
>>523

普通は、FORMAT_MESSAGE_FROM_SYSTEMでメッセージ入力元にはNULLを指定。
文字列リソース使うかメッセージファイルからDLLつくって、
source = LoadLibraryEx((LPCTSTR)source, NULL, LOAD_LIBRARY_AS_DATAFILE);
とでもやって、
FORMAT_MESSAGE_FROM_HMODULE
を使う。
0527デフォルトの名無しさんNGNG
>>474

> 471 のと、あと WINAPI

なぜにWINAPI?
0528デフォルトの名無しさんNGNG
>>453

> 色々ご教授下さいましてありがとうございました。
> お蔭様でclassを使用しつつ、目指すべき動作が出来そうです。
> 何故動いたのか、どうして動かなかったのかはまた個人的に検証してみたいと思います。

きわめて亀レスだが、
間違いなくSTRICTのdefineされる/されないによる違いだぞ。
昔はSTRICT未定義がデフォだったんだが、最近はNO_STRICTしないとSTRICTがデフォに
なってるからな。

dumpbin /symbols hoge.obj
とかしてみろ、呼び出し元/先で食い違ってるはずだ。
0529デフォルトの名無しさんNGNG
STRICT って何ですか?
0530名無し@沢村NGNG
ヌヒ等よ、ときにアセンブル言語は知っているか?
VCでプログラムを組むにしてもアセンブル言語を知らないとまずいぞ。
というのはVC付属のデバッガを起動するとアセンブル言語一覧の問題の個所にやじるしが出てくるからだ。
これが何を意味するかわからないとバグを直せないだろ?
だからVC使いにとってもアセンブル言語は必須というわけよ。
0531名無し@沢村NGNG
皆々様方教えてくだされ〜、いまwindows用の逆Cコンパイラをつくっているのですよ。
で、ベタでひとつのCソースファイルに展開するとこまでは成功したのですが、これだと読みにくすぎるので、せめてインクルードしているwindows.hなどは#include"windows.h"で済ませるようにしたいのですが、どうしたらいい?
また.hファイルと.cppファイルを切り分けて、それぞれ別のファイルとして展開するにはどうしたらいいですか?
0532デフォルトの名無しさんNGNG
> アセンブル言語

プ


沢村を叩くのは OK だが相手するのは禁止。
0533デフォルトの名無しさんNGNG
VCでマネージ拡張を使っているとデバッグ時に表示されるのはCLI
Intel系のアセンブラの知識がまるで役に立たんよ
0534デフォルトの名無しさんNGNG
タブコントロールの
タブ部分のテキストのフォントが知りたいんですが、
なんか方法ありますでしょうか?

あるいは、そもそも変更できないので
取得せずに決めうちでいいって言うことならそれでもいいんですが
0535デフォルトの名無しさんNGNG
>>534
GETFONTでとれないですか?
0536デフォルトの名無しさんNGNG
WM_SETFONT、WM_GETFONTは試してみた?
0537デフォルトの名無しさんNGNG
教えて下さい。
fxt(ttp://www.jjj.de/fxt/)というGNUライセンスのライブラリをダウソしたのですが、
拡張子がccなんですが、なんなんでしょう。
C++でもないし。
0538デフォルトの名無しさんNGNG
.Cとか.ccってのはC++だと思われ…つーかソースを見るともろC++・・・・
0539C++厨NGNG
GNU系でよく見ましたね<.cc
0540デフォルトの名無しさんNGNG
.C .cc .cxx .cpp は C++
0541537NGNG
なるほどC++ですか。どうも有難うございました。
でも、クラスメソッドでなく、関数ばかりですね。
不思議だ。昔のC++はそういうものだったのかなぁ。
0542IP記録実験NGNG
IP記録実験
http://qb.2ch.net/test/read.cgi/accuse/1042013605/

1 名前:ひろゆき ◆3SHRUNYAXA @どうやら管理人 ★ 投稿日:03/01/08 17:13 ID:???
そんなわけで、qbサーバでIPの記録実験をはじめましたー。

27 名前:心得をよく読みましょう 投稿日:03/01/08 17:20 ID:yL/kYdMc
SETTING.TXT管轄でないということは全鯖導入を視野に、か?

38 名前:ひろゆき ◆3SHRUNYAXA 投稿日:03/01/08 17:22 ID:rLfxQ17l
>>27
鋭いです。

73 名前:ひろゆき ◆3SHRUNYAXA 投稿日:03/01/08 17:27 ID:rLfxQ17l
>ところで、IPが抜かれて何か今までと変わることってあるのでしょうか?
・今までより、サーバが重くなる。
・裁判所や警察からの照会があった場合にはIPを提出することがある。
0543デフォルトの名無しさんNGNG
char* func(void);

というふうにする方がいいと思うのだが
0544デフォルトの名無しさんNGNG
>>543
誤爆ですか?
0545デフォルトの名無しさんNGNG
いいえ
0546デフォルトの名無しさんNGNG
いいえ誤爆です
0547デフォルトの名無しさんNGNG
ほぅ。
0548デフォルトの名無しさんNGNG
なんと
0549デフォルトの名無しさんNGNG
一定期間でログは消しますです。
0550デフォルトの名無しさんNGNG
>>247
それはED
0551デフォルトの名無しさんNGNG
>>310
笑
0552デフォルトの名無しさんNGNG
>>1はほんもの?
0553IP記録実験NGNG
IP記録実験
http://qb.2ch.net/test/read.cgi/accuse/1042013605/

1 名前:ひろゆき ◆3SHRUNYAXA @どうやら管理人 ★ 投稿日:03/01/08 17:13 ID:???
そんなわけで、qbサーバでIPの記録実験をはじめましたー。

27 名前:心得をよく読みましょう 投稿日:03/01/08 17:20 ID:yL/kYdMc
SETTING.TXT管轄でないということは全鯖導入を視野に、か?

38 名前:ひろゆき ◆3SHRUNYAXA 投稿日:03/01/08 17:22 ID:rLfxQ17l
>>27
鋭いです。

73 名前:ひろゆき ◆3SHRUNYAXA 投稿日:03/01/08 17:27 ID:rLfxQ17l
>ところで、IPが抜かれて何か今までと変わることってあるのでしょうか?
・今までより、サーバが重くなる。
・裁判所や警察からの照会があった場合にはIPを提出することがある。
0554デフォルトの名無しさんNGNG
にせゆき逝っちゃった。
0555デフォルトの名無しさんNGNG
福島もキタ━━━━━━(゚∀゚)━━━━━━ !!!!
0556デフォルトの名無しさんNGNG
正直、重くならなけりゃ強制ふしあなされてもいいし
0557デフォルトの名無しさんNGNG
俺は 自宅---イスラエル---インド---中国---北欧---カナダ---エジプト---自宅---2ちゃん

と20もの多弾プロ串を経由しているので追跡は不可能です。




0558デフォルトの名無しさんNGNG
======2==C==H======================================================

         2ちゃんねるのお勧めな話題と
     ネットでの面白い出来事を配送したいと思ってます。。。

===============================読者数: 138720人 発行日:2003/1/9

年末年始ボケがそろそろ収まり始めた今日このごろのひろゆきです。

そんなわけで、年末に予告したIP記録ですが実験を開始しています。

「2ちゃんねる20030107」
こんな感じで各掲示板の最下部に日付が入ってるんですが、
20030107以降になってるところはログ記録実験中ですー。

んじゃ!

────────────────────────Age2ch─
■この書き込みは、Age2chを使って配信されています。
────────────────────────────
Keep your thread alive !
http://pc3.2ch.net/test/read.cgi/software/1041952901/l50
────────────────────────────
0559デフォルトの名無しさんNGNG
挙手による多数決は最大の愚行!!
匿名性が失われ自分に反対する者が誰かは
わかるのに小数派には反論さえ許されない
最悪のシステム!!

もしも常に特定の人物と
意見が対立し 常に片方だけが意思を
抹殺されたら…

それが続けば必ず集団は決裂する!!
0560デフォルトの名無しさんNGNG
【ネットボランティア】余ったCPUを・・・
 cell computingとは、ブロードバンドに接続された家庭内や
企業内のPCの余剰CPUパワーを統合し、
仮想的なスーパーコンピュータとしての利用を実現する
技術を用いたSI、ネットワークサービスです。
 バイオ、物理計算、設計、金融工学、CGレンダリングなどの
分野のお客様へ、安価に仮想スーパーコンピュータパワーを
提供することを目的としております。
 なお、将来的には収益にあわせてCPUパワーを提供してくださる
参加者へポイントシステムやデジタルコンテンツによる
利益還元を考えております。
http://www2.cellcomputing.jp/

2ちゃんねるのチーム作ってみました。
http://members.cellcomputing.jp/services/teams/team.htm?id=ABBE425B-CE11-4DA4-8591-C68DF67DA41A
0561デフォルトの名無しさんNGNG
>通知書,本件訴状,請求の趣旨訂正申立書等により,
>本件1ないし3のスレッドにおいて原告らの名誉を毀損する
>本件各名誉毀損発言が書き込まれたことを知っていたのであり,
>これにより原告らの名誉権が侵害されていることを認識し,
>又は,認識し得たのであるから

この最初の通知書っていうのが内容証明かと思ったんですが、、、
0562デフォルトの名無しさんNGNG
スレ違いだが、イニシャルって姓と名どっちが前になるの?
俺は両方とも同じだからわかんない
0563デフォルトの名無しさんNGNG
>>169-170>>172>>185>>187-188>>190-191>>193>>204-207
>>228-230>>246-247
>>255>>261-262>>264-265>>271>>274-275
>>295-296>>306-307>>309>>318-321>>323>>328-329>>331
>>333-335>>339>>342>>344-345
0564デフォルトの名無しさんNGNG
ひろゆきまだー?
0565デフォルトの名無しさんNGNG
2ちゃんねるがアクセスログ記録を始めましたが、あなたの考えは? - Yahoo!投票(左下から投票できます)。
http://dailynews.yahoo.co.jp/fc/computer/2channel/

0566デフォルトの名無しさんNGNG
どきっちさんです
0567デフォルトの名無しさんNGNG
マッドアングラーってなんだったっけ?
0568デフォルトの名無しさんNGNG
ベルバラの登場人物
0569デフォルトの名無しさんNGNG
JOJOかもしれない
0570デフォルトの名無しさんNGNG
記念すべき瞬間ですね。私は将来的には2chにとってプラスになると思ってます。
0571デフォルトの名無しさんNGNG
「こういうカキコをすると逮捕されちゃいますよん」って注意書きを
トップに貼ってたらイイと思う。
0572デフォルトの名無しさんNGNG
ハイテク捜査課に通報しますた。
0573デフォルトの名無しさんNGNG
そんなまわりくどい傍証より見ればいいわけなんだけどね(^_^;)
0574デフォルトの名無しさんNGNG
======2==C==H======================================================

         2ちゃんねるのお勧めな話題と
     ネットでの面白い出来事を配送したいと思ってます。。。

===============================読者数: 139038人 発行日:2003/1/10

なにやら、連日メルマガだしてるひろゆきです。

そんなわけで、ログ記録実験ですが、いちいちサーバ指定するのが面倒なので、
全部のサーバに入れてみました。

重くなって落ちたりしてもご愛嬌ってことで。。。

んじゃ!

────────────────────────Age2ch─
■この書き込みは、Age2chを使って配信されています。
────────────────────────────
Keep your thread alive !
http://pc3.2ch.net/test/read.cgi/software/1041952901/l50
────────────────────────────
0575デフォルトの名無しさんNGNG
set NULLnul>l &>gt>gthosting-x.comnull>>gtgtgt get oldres-num get few make IP >renew.
0576デフォルトの名無しさんNGNG
つまり敬語ばかり使うようにしたらいいわけですね?どんな悪人に対しても。(w
0577デフォルトの名無しさんNGNG
タイトル変な文章だな
0578デフォルトの名無しさんNGNG
確かに小一時間はオカシカッタ
0579デフォルトの名無しさんNGNG
IPアドレス記録は今後継続していきましょう。
もっと踏み込んだ手段をとればなおいいが。
0580名無し@沢村NGNG
めめじおーーーん!!
おいヌヒ等よ、大変だぞ!!
俺はふと思って2ちゃんねるのあっちこちの板を見て回ったのよ。
格闘技板とかアナウンサー板とかプログラマー板とかをな。
そうしたらな、どこのスレ開いても最近ひろゆきの話題が出てる板はプログラム技術板だけだったぞ!!
ヌヒ等よ、ここは2ちゃんねるいっちゃん恥ずかしい板だぞ!!
0581デフォルトの名無しさんNGNG
外部プロセスのコモンコントロール(コンボボックスとか)にくるメッセージを
閲覧したり、ウインドプロシージャをフックしたりということは可能なのでしょうか?

0582デフォルトの名無しさんNGNG
どこまでの発言がやばいのか教えて欲しいな
当て字を使えばOK?セクハラだったら施苦腹とか
0583デフォルトの名無しさんNGNG
今度はプロ野球板もダメ
0584デフォルトの名無しさんNGNG
普通ってのがわからないんだよ!
0585デフォルトの名無しさんNGNG
>>581
"システムフック" or "グローバルフック"で検索
0586デフォルトの名無しさんNGNG
>>585
どうもありがとうございます。

またまた質問で申し訳ないです。
MSDNオンラインでGetComboBoxInfo()なるAPIを見つけたんですが
Winuser.hをincludeしろと書いてあるのにそうしてもシンボルを認識してくれません
インテリセンスはちゃんと見つけてくれるのに。。
#ifディレクティブとかで定義部をはじかれてるのでしょうか?

どなたかご存知ですか?
0587デフォルトの名無しさんNGNG
単に、WINVERとかWIN32_IEとか、そのあたりの
定義の問題じゃないか。
0588デフォルトの名無しさんNGNG
>>586
#endif /* NOWINABLE */
#endif /* WINVER >= 0x0500 */
弾いてそうなのはこの2つ
0589デフォルトの名無しさんNGNG
>>587-588
ありがとうございました
単にWINVERが0x0500未満だったようです
m(_ _)m
0590デフォルトの名無しさんNGNG

大好きだったけど〜、IP取るなんて〜♪

 
0591デフォルトの名無しさんNGNG
 ペン字講座
0592デフォルトの名無しさんNGNG
http://www.microsoft.com/japan/developer/library/vccore/_crt_path_field_limits.htm
ここを見ると、
_MAX_PATH は 絶対パスの最大長
と書いてあるのですが、
単位はバイトで良いのでしょうか?
0593デフォルトの名無しさんNGNG
>>592
パス名をintに入れたりするか?
char FileName[_MAX_PATH];
0594デフォルトの名無しさんNGNG
>>593
unsigned shortに入れることはあったりするだろう。
0595デフォルトの名無しさんNGNG
>>594
それをどう使う?
0596デフォルトの名無しさんNGNG
>>595
UNICODE 系の API に渡すんだろ。
0597デフォルトの名無しさんNGNG
>>596  天才! 理解できた。
0598デフォルトの名無しさんNGNG
自作自演でした
0599デフォルトの名無しさんNGNG
 |  |ノハヽ
 |  |。‘从 <新スレおめでとうございまーす♪
 |_と )
 |桃| ノ
 | ̄|  
0600デフォルトの名無しさんNGNG
1乙
4nd
0601デフォルトの名無しさんNGNG
 4nd
フォンドボー?
0602デフォルトの名無しさんNGNG
>>592-597
ちょっと興味があるから聞くんだけど、
UNICODEで_MAX_PATHにおさまるパス名をMBCSに変換したら
_MAX_PATHを越えたっていう場合、やっぱりそれを...A系関数に
渡しちゃいけないんだよね?
0603デフォルトの名無しさんNGNG
_MAX_PATHは文字数だ。
CHAR a[_MAX_PATH];
も
WCHAR b[_MAX_PATH];
も文字数が_MAX_PATH。それだけ。
0604デフォルトの名無しさんNGNG
>>603
それ以前に _MAX_PATH の値は、あまり信用しない方が。確か 256 程度に
定義されてたと思うけど、NTFS とかネットワークパス (//server/share_name/xxx)
使うと、あっさり越えられるでしょ。
0605名無し@沢村NGNG
ヌヒ等よ、今日はヌヒ等にちょっとしたソースをプレゼントしよう。
それはたくさんあるラジオボタンから値を取得したときチェックを切り替えるときのソースだ。
ただしラジオボタンのハンドルは配列にしておかなくちゃいかん。また取得する値は配列のインデックスと同じにしなくちゃいかんがな…。便利だぞ、ヌヒ等よ♪

void CheckRadio(int max,int atai)//ラジオボタンのチェックを切り替える
{
int i;
for(i=0;i<max;i++)
{
if(i==atai)SendMessage(hRadio[i],BM_SETCHECK,1,0);
else SendMessage(hRadio[i],BM_SETCHECK,0,0);
}
}
0606名無し@沢村NGNG
>>605
ヌヒよ、そのコードはコンパイルエラーが発生するぞ。
0607デフォルトの名無しさんNGNG
正直今回、WindowsでC++を使って
プログラムしてみた。

Borland C++Compilerでただで
プログラム可能なので、正直
気軽に使えた。便利。

でも肝心の使い方がイマイチ「?」
なので、小林健一郎という人の書いた
C++の本を買うことにした。

初心者向けなので、「こんなに簡単で
いいの?」ってくらいスムーズに
プログラムが書けるようになった。

しかしまだまだ難しい作業だとか、覚える
必要のある作業はたくさんある。

最終目標はGUIアプリを作ることだ。
そこで人に相談したところ、GUIアプリを
作るなら、Visual C++で作った方がぜったい
楽だと聞いた。

そうなのか。。。
ところで、プログラマになろうと思ったら、
「絶対」Visual C++なしでC++が書けなきゃ
だめなの??


0608デフォルトの名無しさんNGNG
GUIアプリなんてBorland C++Compilerに
ちょっとした雛型をコピぺすりゃ簡単に出来る。
0609607NGNG
>608
そうなんですか。。。
初心者なので今いちわからない
こととか多かった。調べようにも
語句とかが「?」って感じで。。
ありがとうございました。
0610デフォルトの名無しさんNGNG
>>609
まあ、猫でもわかる・・とか見てみることだな
0611デフォルトの名無しさんNGNG
モードレス ダイアログをCreateDialog で制作すると最初に
何故かIDOKが2回送られて困っています。原因は何処ら辺でしょうか?
0612デフォルトの名無しさんNGNG
そうか・・・。
0613デフォルトの名無しさんNGNG
>619
釣りのつもりだろうけど・・

>ボランティアだから無責任でイイ?
ボランティア=無責任に見えるんだな、<619さんは。

回答を求めてもループになるという罠
0614デフォルトの名無しさんNGNG
やっとhtml化だ、過去ログが読める
がんばってください
0615デフォルトの名無しさんNGNG
>>607
VC++よりかはBorland C++ Builderの方が簡単だと思います。
0616デフォルトの名無しさんNGNG
3次元空間の各座標点にある特定の値(色とか密度とか)を持たせたくて,
3次元配列を使っています.
unsigned char A[100][100][100]; くらいまでは問題ないのですが,
配列の数がそれを越えると,メモリ不足からか,宣言をしただけでエラーが出て,
プログラムが異常終了してしまいます。
OSは,Windows98,コンパイラは,Borland C++Compiler,
積んでいるメモリは256MBです。
皆さんは,幾つくらいまで配列を使えますか?
0617デフォルトの名無しさんNGNG
その配列を初期化するのに計算でやってるなら配列確保する意味なくねぇ?
手入力だったらそのエネルギーをほかの事に使うべし
0618デフォルトの名無しさんNGNG
>>616
自動変数にしてないか?

0619山崎渉NGNG
(^^)
0620デフォルトの名無しさんNGNG
民事訴訟法改正になって憲法問題とかよっぽど重要な争点がないかぎり
最高裁への上告は認められなくなったから、これで事実上判決確定だよ。
逆転も何もないって。
勢いで上告なんかしても一発で上告却下(門前払い)だよ。

二審も一審を支持。これに対して上告しようにも、
刑事訴訟と同様、自由に上告できるってもんでもないのです。
民事訴訟法312条 (上告の理由) 1項
「上告は、判決に憲法の解釈の誤りがあること
その他憲法の違反があることを理由とするときに、することができる。」
http://www.m-net.ne.jp/~doba/goto/hon.htm

ようするに上告しても今の制度では100%無駄。
これで完全終了ってことか。
0621名無し@沢村NGNG
>>616
ヌヒよ、宣言をしただけでエラーが出るのはあたりまえだよ、ヌヒよ。
宣言をするということはメモリをあらかじめ確保するということだからね。
またヌヒよ、プログラムで扱うメモリはセグメントという単位にわけられるんだよ。
だからメモリが256MBあっても関係なくて、メモリを確保するときはそのセグメントをまたがないようにしなければいけないんだよ。
俺もくわしいことはわからないが、たいがいセグメントは16で割りきれる単位になっているはずだよ。
だからunsigned char A[100][100][100]; という宣言の仕方はいけない。
unsigned char A[128][128][128]; というようにすればセグメントをまたがないから、どんなに巨大なメモリを確保しても大丈夫のはずだよ。
ヌヒよ、頑張れ!!
0622デフォルトの名無しさんNGNG
> セグメント

(・∀・)カエレ!
0623デフォルトの名無しさんNGNG
>ヌヒよ

こいつはなぜ人を下僕呼ばわりするのですか?
0624デフォルトの名無しさんNGNG
> unsigned char A[128][128][128]; というようにすればセグメントをまたがないから

胡散臭い。
0625デフォルトの名無しさんNGNG
何故 unsigned char A[100][100][100]; がセグメントをまたぎ、
unsigned char A[128][128][128]; がまたがないのか説明してもらおうか。
0626616NGNG
>>618
してました。
問題解決,ありがとうございました。
0627山崎渉NGNG
(^^)
0628デフォルトの名無しさんNGNG
Win32アプリの開発にセグメントちう概念無いだろヴァカ沢村
0629デフォルトの名無しさんNGNG
すげえ久しぶりにセグメントという言葉を聞きました。
0630デフォルトの名無しさんNGNG
で、スタックについて何も言わないヤツらもイタイな。

で、>605もかなりイタイな。

で、誰も的確な突っ込みを入れないのは、放置が徹底されてるからか。

で、なるほど。
0631デフォルトの名無しさんNGNG
ヒュージメモリモデルですが何か?
0632デフォルトの名無しさんNGNG
沢村という名前に対してレスをする奴は沢村と同様例外なく放置。
0633デフォルトの名無しさんNGNG
2003年モデルですが何か?
0634キック沢村NGNG
>>632
あんだとゴルァ!
0635デフォルトの名無しさんNGNG
>>632
放置もいいが、沢村が懲りてくれないと害の方が多いのではないか?
0636デフォルトの名無しさんNGNG
>>630
スタックについては >>618 が言っているのも同然だろ
0637デフォルトの名無しさんNGNG
バカは絶対に懲りない。バカだから。
0638デフォルトの名無しさんNGNG
>>636
それは>616が理解しているかどうかによるだろ。
理解していなければ言っていないのと同然。
ま、どっちでも良いが。
0639デフォルトの名無しさんNGNG
どうでもいい話題だとスレッドが賑わうのな
0640デフォルトの名無しさんNGNG
try{
  沢村
}
catch(沢村){
  TRACE("逝ってよし");
}
0641デフォルトの名無しさんNGNG
>>639
つーかよ、沢村に限らず、電波ってるカキコは叩くべきだろうがよ。
おとなしい掲示板が好きなら他所いけや。
0642デフォルトの名無しさんNGNG
>641
典型的な釣られ厨だな(w
0643デフォルトの名無しさんNGNG
>642
クソスレも叩かず容認する訳だ・・・
0644デフォルトの名無しさんNGNG
言っとくが沢村はこれまでに他のスレでも十分叩かれ尽くしてるから
今更叩いてもウザイだけなんだが。
0645639NGNG
>>642
漏れは正直な感想を書いただけで、釣ったつもりは全然無いのだが・・・
0646デフォルトの名無しさんNGNG
>>645
何でもすぐ釣りだと思い込む人ってけっこういます。
厨に「釣れた!」とか後出しジャンケンされるだけのことが
そんなにこわいんですかねえ。謎です。
0647デフォルトの名無しさんNGNG
でもバス釣りより DQN 釣りのが楽しいよな
0648デフォルトの名無しさんNGNG
クリスマスツリー
0649デフォルトの名無しさんNGNG
なんで釣る釣られるの話になんの?
叩くか放置するかの話だろ?
こんな状況こそ沢村の思うつぼ。
叩くヤツは叩かせとけ。放置したきゃ、放置しとけ。そんだけの話。
0650デフォルトの名無しさんNGNG
>645
マジレスすると「釣り厨」じゃなく「釣られ厨」なんだから

「電波ってるカキコは叩」いて回る奴は簡単に釣られるねって話だろ
0651デフォルトの名無しさんNGNG
というわけで、電波は解禁となりました(祝)
0652デフォルトの名無しさんNGNG
というわけで、ぬるぽは解禁となりました(祝)
0653山崎渉NGNG
(^^)
0654デフォルトの名無しさんNGNG
解決しました。ありがとうございました。
0655デフォルトの名無しさんNGNG
そんな便利な関数があったんですか・・・。恩にきります。
0656デフォルトの名無しさんNGNG
「恩にきります」って何すか?
0657デフォルトの名無しさんNGNG
Windowsに設定されている、DNSサーバアドレスを取得したいのですが、
どうすればよいのでしょうか?
やはりWinsockを使用するのでしょうか?
0658デフォルトの名無しさんNGNG
>656
そんな使い方は日常「ちゃはんじ」
0659デフォルトの名無しさんNGNG
>>657
レジストリのどこかにあると思われ
0660デフォルトの名無しさんNGNG
そういや昨日、ニュー速にちゃはんじ神が降臨したなぁ
0661 NGNG
ちゃはんじ程度で神か。おめでてーな
0662デフォルトの名無しさんNGNG
>>661
4日越しのレスありがとう
0663デフォルトの名無しさんNGNG
このスレもう用無しかな


つーわけで
Windows ProgrammingはMFC使いましょう
0664デフォルトの名無しさんNGNG
ずっと前から用なしだろう。Win32APIスレと全然変わんねーもん。
0665デフォルトの名無しさんNGNG
> Win32APIスレ

名前が悪い。
Windows でのプログラミングではなく、API そのものを扱っているように見える。
0666デフォルトの名無しさんNGNG
ちょっと前にスレタイが気に入らないってだけの理由でCスレが乱立したな・・・
0667デフォルトの名無しさんNGNG
しかも現在、2 つに分かれててどっちも機能してるしな。
0668デフォルトの名無しさんNGNG
Cスレの流れは異常な速さだからスレが増えても書き込む奴はいるだろうが
ここは明らかに機能してなさげ。
0669デフォルトの名無しさんNGNG
ぬるぽスレはどうよ?
0670デフォルトの名無しさんNGNG
なんとなくage
0671デフォルトの名無しさんNGNG
これうちだと
┌
みたいに表示されるんだけどみんなの環境ではどうなのかな?
TextOutならまともにでるんだけどな。

case WM_PAINT:
{
PAINTSTRUCT ps;
HDC hdc;
LOGFONT lf;
HFONT hfont;
hdc = BeginPaint(hwnd, &ps);
ZeroMemory(&lf, sizeof(lf));
lf.lfHeight = 20;
lf.lfWidth = 0;
lf.lfEscapement = 2700;
lf.lfOrientation = 2700;
lf.lfCharSet = DEFAULT_CHARSET;
strcpy(lf.lfFaceName, "MS ゴシック");
hfont = CreateFontIndirect(&lf);
SelectObject(hdc, hfont);
SetTextColor(hdc, RGB(0xFF, 0xFF, 0xFF));
SetBkColor(hdc, RGB(0,0,0));
TabbedTextOut(hdc, 100, 100, "くろいろ", 8, 0, NULL, 0);
EndPaint(hwnd, &ps);
DeleteObject(hfont);
}
break;
0672デフォルトの名無しさんNGNG
続きはここでいいのか?
結局誰も次スレを立てなかったようだが
Win32API 質問箱 Build8
http://pc2.2ch.net/test/read.cgi/tech/1040964626/
0673デフォルトの名無しさんNGNG
Webカメラで撮影した動画を、WindowsMessengerのように
リアルタイムで他のパソコンで表示したいのですが、
どうすれば実現できるか教えていただけないでしょうか。

いちおう実験で、DirectShowを利用して、Webカメラの
動画を送信元のパソコンに表示させたり、保存させる
ところまではいけたのですが・・・・そこから先がいろんな
ページをみてもわからなくて・・
よろしくお願いしまつ。
0674デフォルトの名無しさんNGNG
>>673
Winsock 使って転送すれ。プロトコルは自分で適当に作れ。
または送信元を HTTP サーバーにして、表示する方では Web ブラウザ使え。
0675デフォルトの名無しさんNGNG
>>672
> 1 には
> Windowsプログラムを作るにあたって、API以外の疑問や質問を
とあるので↓の方が近いかと。
http://pc2.2ch.net/test/read.cgi/tech/1044267746/
0676デフォルトの名無しさんNGNG
>>672, >>675
立ってるぞ
http://pc2.2ch.net/test/read.cgi/tech/1044929160/
0677671NGNG
>>671だれかやってみたひとひますか
0678デフォルトの名無しさんNGNG
>>677
興味ないからやらないよ
0679デフォルトの名無しさんNGNG
Win2k/XP で CPU 使用率や使用メモリ等を取るのってどうやるんでしょうか?
なんか検索したらレジストリから取る方法を見つけたけど 2k/XP だと 100% としか
返ってこない。
0680デフォルトの名無しさんNGNG
タスクマネージャでも100%しか出なかったりしないか?
0681デフォルトの名無しさんNGNG
どうせidleを使うアプリでも入っているんだろうなと思いつつ

XP SP1以降は
GetSystemTimes
Win2k〜XPは(NT4でも未公開ながら使えるという噂)
NtQuerySystemInformation(SystemProcessorPerformanceInformation
Win9xは
WINTOP.VXD(もしあれば)
それ以外はレジストリ
HKEY_DYN_DATA - PerfStats\StartStat - KERNEL\CPUUsage
0682デフォルトの名無しさんNGNG
>>681
NtQuerySystemInformation でぐぐったら↓のページ見つけて解決しました。
隠し API とは…
http://kobatac.hp.infoseek.co.jp/tips/GetCpuUsageOnNT1_h.html

>>680
98 で動いてたレジストリ使う関数は、NT/2k/XP では Win 起動後
時間がたつにつれ 100% しか返さないように動くらしいです。
0683デフォルトの名無しさんNGNG
隠しAPIだったんだけど例の和解で公開された。
http://msdn.microsoft.com/library/en-us/sysinfo/base/ntquerysysteminformation.asp
0684デフォルトの名無しさんNGNG
Shift + 記号キー入力は、Ctrlと組み合わせると
WM_CHARで認識できず、WM_KEYDOWNでは、
キーボードレイアウトに依存してしまいます。

Ctrl + Shift + 記号キー入力を、キーボードレイアウトに
依存せずに簡単に識別する方法はないでしょうか?
0685デフォルトの名無しさんNGNG
>>683
そうなんですか。手元の VC6 や MSDN にはその Winternl.h ファイルすら
入ってないようですが今の C++.NET にはあるのかな。

どうもありがとうございます。
0686デフォルトの名無しさんNGNG
CreateThreadでスレッド作った後、CloseHandleして
スレッドを動かしたまま、ExitProccessするのってありですか?
プロセスが無くなるからメモリリークとかしないですよね。
それとも、作ったスレッド内でかプロセスの終了シグナルとかフックする方法とかあるんですか?
0687デフォルトの名無しさんNGNG
>>685
最新のPSDK落として来い
0688デフォルトの名無しさんNGNG
>>684
捕まえた後、MapVirtualKeyExで返還するというのは?
0689デフォルトの名無しさんNGNG
>>686
特に問題ない
プロセス終了時にOSが全てのリソースを解放してくれる
0690デフォルトの名無しさんNGNG
>>689
嘘をついちゃいけないねぇ
Windows(NT系も含む)では、mallocで割り当てたメモリはプロセス終了後もリークしつづける。
HeapAllocで割り当てたメモリは、プロセス時に解放される。
0691デフォルトの名無しさんNGNG
>>690
嘘をついちゃいけないね。少なくとも2000以降は確実に開放してくれるはず。
NTの初期は知らんが
0692デフォルトの名無しさんNGNG
>>691
ソースは?
0693デフォルトの名無しさんNGNG
>>692
InsideWindows2000を読め
0694デフォルトの名無しさんNGNG
>>690
実際にリークするコードを書いてみろ、絶対に無理だから
DOSの頃ならMCBのチェインをぶっ壊せば
意図的にリークさせられたがWindowsでは無理
0695デフォルトの名無しさんNGNG
ようはプロセス終了時にいちいちメモリとかハンドルとか気にするなってこった.
0696デフォルトの名無しさんNGNG
>>686
ExitProcess()やTerminateProcess()を呼ぶと
使ってる環境のクリーンアップが出来なくなるから
Exit&Terminatは、どうしようもない場合以外
呼ぶなって、何処かで読んだ記憶が…
で、メモリリークは、それぞれの環境で正常に終了させれば
普通は発生しないとも、何処かで読んだ記憶が…
0697デフォルトの名無しさんNGNG
>>696
http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/jpdllpro/html/_win32_exitprocess.asp
には、ExitProcessを使わないとプロセスにアタッチしている DLL へプロセスの終了を通知しないって書いてあるから
TerminateProcess、exit、_exitなどは使わないほうが良いのでは?

0698デフォルトの名無しさんNGNG
>>697
全てのスレッドが終了すればプロセスは正常に終了するのだから
明示的にExitProcess()は呼ぶなって書いてありました
呼んでは、いけない理由の分かりやすかった例では

C++でExitProcess()を呼ぶとスレッドで使用したコンストラクタに
対応したデストラクタが呼ばれずに終了するから

だったと思います
これが、実際に何処で影響するかは理解出来なかったのですが(特殊な同期とか?)
それを読んで以来、念の為ExitProcess()は使わないようにしてます
0699デフォルトの名無しさんNGNG
>>698
>これが、実際に何処で影響するかは理解出来なかったのですが(特殊な同期とか?)
アプリ側で書き込みをバッファリングしている場合フラッシュされない等々


0700デフォルトの名無しさんNGNG
fox使ってる人いる?
0701デフォルトの名無しさんNGNG
>>697
exit, _exitは内部でExitProcessを呼ぶ。
むしろCランタイムのクリーンアップ(stdoutのフラッシュとか)
が行われない可能性があるからExitProcessを直接呼ぶべきではない。
TerminateProcessが最後の手段なのはそのとおり。
0702仕様書無しさんNGNG
何だここは?
malloc() や exit() 等の C 標準関数が、Win32API を使う以外の方法で実装
されているなんて妄想を持っている香具師が居るのか?
0703デフォルトの名無しさんNGNG
>>690 ワラタ
0704デフォルトの名無しさんNGNG
はいはい、ごちゃごちゃいってないでexitの前には必ずfreeしましょうね。
マナーですよ?これは。
0705デフォルトの名無しさんNGNG
>>704
akita
0706デフォルトの名無しさんNGNG
はいはい、brkでプロセスサイズも元に戻しましょうね。
マナーですよ?これわ。
0707デフォルトの名無しさんNGNG
malloc&freeはfj逝ってくれ
0708デフォルトの名無しさんNGNG
>>698
ということはWinMainのメインスレッドもExitスレッドで終わらせるべきなのか
知らんかった(.鬱
0709708NGNG
ExitThreadね
0710デフォルトの名無しさんNGNG
>>708
PostQuitMessage()でメッセージループ終わらせてWinMainから抜けるのが正道。
0711708NGNG
>>710
もちろんメッセージループ抜けてからの話だよ
0712デフォルトの名無しさんNGNG
少し前まで無料でDDKが無料でダウソできたと思うのですが、
今はもう無理ぽ?
0713デフォルトの名無しさんNGNG
もう無理ぽ.
でも注文すれば送料だけで送ってくれるよ
0714デフォルトの名無しさんNGNG
>>712
以前DL出来たDDKのページはもう消されてるな。
でも、ググったりすれば何とか手に入るぞ。

という訳でガン(・∀・)ガレ!!
0715712NGNG
ありが�d
ググっても見つからなかったので大人しくCD注文しまつ
0716デフォルトの名無しさんNGNG
DDKというのはDDTやKDDとは違うものなのですか?
0717デフォルトの名無しさんNGNG
アセンブラスレでよく出てくるけどな<DDKの場所
0718デフォルトの名無しさんNGNG
DDDとは懐かしい
0719デフォルトの名無しさんNGNG
Doki Doki Dynamo?
0720デフォルトの名無しさんNGNG
>>708
ネタだよな・・・
0721デフォルトの名無しさんNGNG
>>720
ネタじゃないよ
0722デフォルトの名無しさんNGNG
ウインドウの枠の幅を1に
(線だけの枠に)指定して
ウインドウを作成することは
できますか?
0723デフォルトの名無しさんNGNG
他のバックグラウンドにあるようなアプリに、ctrlやalt付きのキーボードイベントを送るには
どうすれば良いのでしょうか。例えばAlt+Mなどを送りたいのですが…。

単一のキーボードイベントは送れています。
Altだけkeybd_eventなどを使ってみたのですが、どうも上手く行かなくて…。
0724デフォルトの名無しさんNGNG
>722
WS_POPUP なら出来るような気もする。とりあえず試せ
0725デフォルトの名無しさんNGNG
LIBC無しで試してみようと思って
#pragma comment(linker, "/nodefaultlib")定義して
WinMainCRTStartup書いて
コンパイラオプションから/GXと/GZはずして
newとdelete書いて
とりあえず、うまく行くようになったと思ったら
try-catchを使おうとするとリンクで
error LNK2001: 外部シンボル "___CxxFrameHandler" は未解決です
error LNK2001: 外部シンボル "__except_list" は未解決です
と、怒られます.
これって、例外ハンドラも自分で実装しろって事?
でも実装の仕方がサパーリです.
DQNな俺にはここまでが限界.
誰か、わかる人いる?
0726デフォルトの名無しさんNGNG
VCなら、ライブラリのソースがあるんとちがうけ?
0727デフォルトの名無しさんNGNG
>>725
MSDNにMSJのバックナンバーがあるからMatt Pietrekの記事を探せ
どうでもいいが奴が発見したWM_TIMERで他プロセスの
任意のアドレスでコールバックを起こせる技はとうとう
セキュリティ脆弱性に認定されてしまったな
0728デフォルトの名無しさんNGNG
MSDNmagazine日本語版もwebで記事を読めるようにすればいいのになぁ
0729デフォルトの名無しさんNGNG
Matt Pietrekマンセー
0730722NGNG
>724
> WS_POPUP なら出来るような気もする。とりあえず試せ
どうもタイトルばーがないウインドウならできるようでした…

が、タイトルバーがあるウインドウ(普通のウインドウ)では
できないようでした…

そういうものなのかな
0731デフォルトの名無しさんNGNG
SS_NOTIFYスタイルのSTATICコントロールを使ってSTN_CLICKEDを捕まえているのですが、
他のコントロールの**N_CLICKEDと違って、マウスのボタンを押下したタイミングでメッセージが送られてくるようです。
できればBUTTONコントロールと同じようにマウスのボタンを放したタイミングでメッセージを送って欲しいのですが、
そのように都合の良いメッセージ等はあるのでしょうか。よろしくお願いします。
I.E.でHTMLを表示してURLをクリックした時の動作を真似たいだけなんですが……
0732デフォルトの名無しさんNGNG
>>731
サブクラス化してWM_LBUTTONUPで処理
0733デフォルトの名無しさんNGNG
というか、ボタンコントロールを使えばいい
0734デフォルトの名無しさんNGNG
>>733
禿しく的はずれ
0735デフォルトの名無しさんNGNG
>>731
右クリックでメニュー出すのが目的なら、
サブクラス化してWM_CONTEXTMENUで処理するのが良いと思う。
0736デフォルトの名無しさんNGNG
>>730
そういう仕様です。WM_NCPAINTを使えば・・・
0737デフォルトの名無しさんNGNG
>>734
なんでだ?
0738デフォルトの名無しさんNGNG
> 732, 733, 735
ありがとうございます。
最終的にはサブクラス化をすることにしました。
おかげさまでボタン押下時にフォーカスがあることを示す矩形の描画や
マウスオーバーでリンクをハイライトさせる機能なども実装できました。
なにか難しそうなので敬遠していたサブクラス化でしたが
こんなに簡単なことならサッサとサブクラス化に踏み切るべきでした。
本当にありがとうございました。
0739デフォルトの名無しさんNGNG
GDI+ で、Win32API の SetROP2 (だったかな)に相当する処理があれば
教えてください。
0740デフォルトの名無しさんNGNG
定期age
0741デフォルトの名無しさんNGNG
DWORDのHighワードとLowワードを入れ替えるマクロってありますか?
あったらおしえてください
0742 NGNG
定義してしまえ
#definle MAKEREVERSEWORD(a) MAKEWORD(LOWORD(a),HIWORD(a))
0743デフォルトの名無しさんNGNG
↑
お、間違えた。

直すのもメンドクサイので、自分で作ってみましょう。

とにかく、デフォルトではないってことです
0744デフォルトの名無しさんNGNG
Windows98を使っていて、アクセサリソフトみたいな
ものを作ろうと思っているのですが…

_MyGetFreeSystemResources32@4は、0が返ってくる
ことや、100が返ってくることはありますか?
GDIリソースとUSERリソースの両方の場合で。

返ってくる範囲が[1,99]に限られているような
気がします。

あと、GlobalMemoryStatus関数で得られる
MEMORYSTATUS構造体のdwTotalPhysメンバは
Windows98の実行中で変化することは
ありますか?

物理メモリの容量は一定のような気がします
0745デフォルトの名無しさんNGNG
Windows 98では変わらないと思う。
ただ、2000とかで休止状態で終了してメモリ抜き差しすると変わるかも・・・
0746デフォルトの名無しさんNGNG
休止状態の最中にメモリ抜き差しなんかしていいの?
0747デフォルトの名無しさんNGNG
>>746
法的には問題なさそう
0748デフォルトの名無しさんNGNG
物理的にも問題無いな
0749デフォルトの名無しさんNGNG
休止中に2台のUSBHDDを差し替えると楽しいことになるそうだ
だれか試してくれ
0750デフォルトの名無しさんNGNG
つーか、休止なんかしないで、ちゃんとシャットダウンしろよ。
0751デフォルトの名無しさんNGNG
GetASyncKeyState()みたいな感じで、
メッセージを介さずに現在のマウス位置を取得できる関数はありませんか?
0752デフォルトの名無しさんNGNG
すんません、GetCursorPos()ってのがありました。
0753744NGNG
_MyGetFreeSystemResources32@4
のほうはどうなんでしょうか
0754名無し@沢村NGNG
皆々様方〜、ちょっと教えて下さらんか〜、皆々様方〜?
それはボタンだが、ふつーのボタンではかっこわるいのでオーナードローボタンにしたんだが、
どうもファイルを読み込んでいろいろ処理すると不正な処理というかページ違反が出てエラーになるのよ。
それがその処理をふつーのボタンを使ってするとどうもそのエラーは出んようなのよ?
だが、ふつーのボタンだとかっこ悪いだろ?
そこでAPIをいろいろ調べてみるとオーナードローではなくふつーのボタンにもビットマップを使えるようになっているらしいのよ?
だがこれは猫でもを読んでも出てないしやりかたわからんのよ?
皆々様方〜オーナードローではなくふつーのボタンでビットマップ使う方法ご存知ないだろうか?
皆々様方〜教えてはくださらんか?皆々様方〜♪
まあこれはボタンでごまかすよりファイル処理の方法を見直すべきだろうが…。
それがさっぱり見当つかんからとりあえずボタンでごまかそうと思うのよ。
皆々様方〜教えてはくださらんか?皆々様方〜♪
0755名無し@沢村NGNG
bff64e82 cmp word ptr [ecx],6890

皆々様方〜、これ↑はデバッグしたときのその矢印のついた場所だが、これは何かな?
皆々様方〜、やっぱりふつーのボタンにしてもその処理をしてる最中は不正な処理は出ないが、最後にウインドウを閉じるとき不正な処理が出ることがわかったよ。
やはりファイル処理の方法で悪いところを見付けないとダメみたい…。
皆々様方〜教えてはくださらんか?皆々様方〜♪
0756デフォルトの名無しさんNGNG
休止なんかしないで注視しておけよ。
0757どなたか教えていただけませんか。NGNG
ミューテックスについての質問ですが、1つのプロセスより起動される
2つのスレッドにおいて、スレッド1のCreateMutexで取得したハンドルと、
スレッド2で取得したハンドル(スレッド1のCloseHandleを行う前の状態)とでは
違うハンドルが取得されました。
1つのプロセスよりスレッドを複数起動して排他制御を行う場合は
このような使い方をしてはいけないのでしょうか。
どなたか教えてください。
0758デフォルトの名無しさんNGNG
WindowsXPの32bitアイコンはどうやって作るのですか?
新しいICO形式の解説はどこにあるんでしょうか?
0759デフォルトの名無しさんNGNG
LANでUDPで通信を行うプログラムを作っているのですが
相手が低速のPCだと同期ズレがおこってるみたいなので
送信時に受信バッファーをクリアしたいのですが、
そういうAPIがあったら教えて下さい。
0760デフォルトの名無しさんNGNG
>>757
ハンドルの値は違って当たり前だ
MSDNのハンドルとオブジェクトの概要を穴が開くまで読め
0761デフォルトの名無しさんNGNG
>>749
復帰後に再認識されるだけの話じゃなかったけ?
0762デフォルトの名無しさんNGNG
>>758
ビットマップが32ビットになってるだけじゃないか?
0763デフォルトの名無しさんNGNG
.rdataセクション.textセクションを.dataセクションに結合して
プログラムサイズを小さくする方法がありますが、
あれって特定の環境で起動しなくなったり起動速度や動作速度が
低下したりする副作用は無いんでしょうか?
教えて下さい。
0764デフォルトの名無しさんNGNG
ウィンドウプロシージャ―の関数で
CALLBACKってつけますよね
これは予約語?型名?記憶クラス???
一体なんですか
0765デフォルトの名無しさんNGNG
ケツの穴に入れろという意味
0766デフォルトの名無しさんNGNG
>>757
プロセスからミューテック巣を生成すればいいじゃん。
そしたらいくつスレッドを作ってもみーてくすはひとつだ。
0767デフォルトの名無しさんNGNG



    ハハハ                             イキデキネーヨ
   ∧_∧   / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ハライテ-       ゲラゲラ
.  ( ^∀^ ) < あほか          ∧_∧       〃´⌒ヽ       モウ カンベン
.  ( つ ⊂ )  \_______   (^∀^ ,,)、     ( _ ;)        シテクダサイ >>766
   .)  ) )   ○   ∧_∧      ,, へ,, へ⊂),    _(∨ ∨ )_     ∧_∧ ○,
  (__)_) ⊂ ´⌒つ ^∀^)つ    (_(__)_丿      し ̄ ̄し     ⊂(^∀^ ⊂ ⌒ヽつ
          タッテ ラレネーヨ
           ワハハハ


0768デフォルトの名無しさんNGNG
>>757
もしかして、ハンドルが変われば別のミューテックスオブジェクトを挿すとか
思ってる?
0769デフォルトの名無しさんNGNG
>>764
WinDef.h
#define CALLBACK __stdcall
0770デフォルトの名無しさんNGNG
LOGFONTのlfHeightに入れる値の
キャラクタ高とセル高の違いを教えてください
0771デフォルトの名無しさんNGNG
ノートの罫線の間隔と文字の大きさの違い
0772デフォルトの名無しさんNGNG
ユーザが勝手に窓の大きさを変えられないようにするには、
CreateWindowにどういうオプションをつけてやればいいんですか?
0773デフォルトの名無しさんNGNG
>>772
WS_THICKFRAMEをはずせ。
最大化もしたくなかったらWS_MAXIMIZEBOXもはずせ。
ていうかMSDN嫁。
0774デフォルトの名無しさんNGNG
CreateWindowで親の外に移動させれるような
子ウインドウは作れますか?
0775デフォルトの名無しさんNGNG
子ウィンドウは親ウィンドウの外に移動できない仕様です。
所有されたウィンドウならWS_CHILDを外してhwndParentを
指定すれば作れます。
0776デフォルトの名無しさんNGNG
WM_KEYDOWNの0-15bitのリピート回数の所なのですが、
常に1が入っていて機能してないように見えるんですが、、、
どうなっているのでしょうか?
0777デフォルトの名無しさんNGNG
モードレスダイアログを二重起動しないようにするためにはどうしたらいいですか?
0778デフォルトの名無しさんNGNG
>>777
それくらい自分で考えろや
0779デフォルトの名無しさんNGNG
>>777
if(!(二重起動になるか ?)){
 起動する。
}

二重起動を検出する仕組みは自分で考えろ。
0780デフォルトの名無しさんNGNG
Singleton
0781デフォルトの名無しさんNGNG
ダイアログをクラス化して>>780にするのが>>779よりスマートな方法
0782デフォルトの名無しさんNGNG
singletonは実装内部で>>779をやるから、
本質的には全く変わりない罠
0783777NGNG
>>779-782
サンクスです。
ダイアログは既にクラスになってるので、singletonでやります。
Singletonはいいですね。目から鱗が落ちました。
0784デフォルトの名無しさんNGNG
質問お願いします。ダイアログベースのアプリを、WTLのウィザードで作った場合、
イベント追加の際は、ダイアログのヘッダファイルにごりごりコードを書くことになりますよね。

ですがヘッダに書くのが嫌だとか、あるいはsatic関数を使いたいとかで、
実装部分はcppの方に書きたいことが良くあります。

しかし、WTLが吐き出した、WinMainのあるcpp以外に、
ダイアログの実装部分を書くと、どうやっても何かしらエラーが出てしまって…。
これを回避できている方はいらっしゃいますでしょうか?

たぶんレスは、いただけないだろうなと思いつつ(笑
0785デフォルトの名無しさんNGNG
>>784
ウィザードのgenerate .cpp Files ONにして、普通にcppに実装書いてるけど。
0786デフォルトの名無しさんNGNG
>>785
むはー感動。この板でWTLの質問が通ったのは初めてです!
ちょ、ちょっとお待ち下さい、generate .cpp…むーどこだ…。
ちくしょう、折角のチャンスにオレってやつぁ…。ちょっと探してきます。

というか環境書いて無かった。当方VC6でwtl70です。
.NETだけとかじゃありませんように(;゚人゚)
0787784=786NGNG
あうー、やはり.NETだけみたいですね…。
ttp://homepage1.nifty.com/Roy_/Program/StartWTL.htm

逆にいえばVC6じゃ難しいのかな…。
それが分かっただけでも良かったです。ありがとうございました。

しっかしダイアログひとつのアプリなんて殆どないだろうに…。
もちっとこう使いやすくしてくれれば良かったのになぁ…グチグチ
0788デフォルトの名無しさんNGNG
>>787
VC6にもあるって
0789デフォルトの名無しさんNGNG
>>788
ややや、本当なら冗談抜きで凄い嬉しいのですが(゚∀゚)

ただ、うちのWizardだと…ええと、ちょうどいい絵があるサイトが
ttp://hp.vector.co.jp/authors/VA016589/wtl/appwiz/appwiz.html

ここはたぶんWTL3.0のものですが、うちのWTL7.0でも
この2つ以上のWizardダイアログは、表示されないんです。

長々すいません。できればもう少し詳細など、教えていただけないでしょうか。
0790デフォルトの名無しさんNGNG
>>789
ウィザードだけWTL3のままだったとかいうオチじゃないの?
0791デフォルトの名無しさんNGNG
>>789
めくらって呼んでいいですか?
http://sakots.pekori.jp/imgboard/imgs/img20030310011058.png
0792デフォルトの名無しさんNGNG
さ ら し あ げ
0793デフォルトの名無しさんNGNG
>>790
ご指摘感謝。
しかし…いやぁ、さすがにそれはないです。

>>791
何を言われようが、これは本当にありがたいです。

むー、しかし、何故うちのではこれが出ないんだ…。
最新のWindows SDKを入れなければなのかな…。
0794デフォルトの名無しさんNGNG
俺は、MyAppクラスみたいなもんを作って、ほとんどそこで実装してるが・・・
実際ウィンドウ関連の実装はほとんどないし。
0795デフォルトの名無しさんNGNG
WTL70\AppWiz60\setup.jsを実行し直せ
0796デフォルトの名無しさんNGNG
そもそもVC6は、テンプレート使ってるクラスはヘッダファイルに実装を書かないといけない
バグがあるって聞いたが・・・
0797793NGNG
あふぅ、だみだぁ(´ω`)
空いてるPCにVCつっこんで(規約違反ですが)
SP5まで当て、ついでに>795氏の命を受けスクリプト連打しても出ません…。
まさに目の前ににんじん吊られた馬状態_| ̄|○

>>794
確かにコモンコントロール周りさえ使えれば十分ですよね。諦めるかぁ(´Д`)
>>796
あ…言われてみれば!

とにかく今日は良いこと知れて幸せでした。
レス下さった皆さんに感謝、ありがとうございました。
0798デフォルトの名無しさんNGNG
二つ以上表示されないって言ってたが・・・・
二つ表示される一つ目で設定するんだぞ?
0799デフォルトの名無しさんNGNG
もしかして正規のインストール手順を践まなかったせいでVC6でも表示されているのだろうか?
0800デフォルトの名無しさんNGNG
今VC6入ってないんで確かめられないが、他の人は表示されてるん?
0801デフォルトの名無しさんNGNG
可能性1
過去のAtlApp60.awxがReadOnlyである
可能性2
793が盲
0802デフォルトの名無しさんNGNG
WTLで盛り上がってるようなので便乗ですが、
WTLのクラスにprivate変数を定義しても、
そのクラスの外から直接読み書きできてしまうのは仕様ですか?

ちなみにうちのVC6はGenerate .cpp Filesあります。
0803デフォルトの名無しさんNGNG
んなこたぁない
0804793NGNG
床についてピンと来たのですが、
もしかしたらオレが、全てのコンポーネントをインストールしなかったせいかも…。
元々から何せMFCすら入れてないので…明日試してみます。

>>798 >>801
いやいや、粗忽者の私ですが、さすがにその辺は大丈夫です。

>>799 >>800
それならそれで、やり方気になりますよね。
0805デフォルトの名無しさんNGNG
WTLにてフレームウィンドウをスプリッタで左右に分割し
それぞれにリストビューを貼り付けているのですが、
この左右のリストビューそれぞれの上部にステータスバーを貼り付けるには
どうすれば良いのでしょうか。
リストビューのメンバにCStatusBarを加えてリストビューのOnCreateで
ParentWindowとしてスプリッタのm_hWndPaneを指定してCreateしてみても
表示されずうまくいきません。
0806デフォルトの名無しさんNGNG
すいませんあげ忘れました。
0807デフォルトの名無しさんNGNG
スプリッタの子として、子フレームを作り、
そこにステータスバーとリストビューを乗っける
0808デフォルトの名無しさんNGNG
>>807
できました。ありがとうございました。
Viewアーキテクチャって簡単そうに見えてなんか複雑なんですね。
今までBCB使ってたのでいまいち分かりません。
0809808NGNG
出来たと思ったのですが、
下部に作成する事は出来たのですが、
ステータスバー属性にCCS_TOPを追加して上部に作成しようとすると
リストビューのカラムの名前を表示する部分と重なってしまいます。
上部に追加するのは無理でしょうか…

CreateSimpleStatusBar("", WS_CHILD | WS_VISIBLE | WS_CLIPCHILDREN |
 WS_CLIPSIBLINGS | CCS_TOP);
0810デフォルトの名無しさんNGNG
CreateSimple〜じゃなくて、
CToolBarCtrlをインプリメントして、
ChildFrame.m_hWndToolBar = Toolbar;
とすると出来ると思う
0811デフォルトの名無しさんNGNG
あー、
ChildFrame.m_hWndToolBar = StatusBar;
ね、スマソ。
0812808NGNG
>>810-811
今度こそ出来ました。ありがとうございました。
0813デフォルトの名無しさんNGNG
すみません、こちらでDEV-C++を使っている方はいらっしゃいますか?
使っている方がいらっしゃれば訊きたいことがあるのですが。
0814デフォルトの名無しさんNGNG
ChildFrame.m_hWndToolBar = StatusBar;って・・・
凄いコードだな・・・
いいのかそんなんで・・・
0815デフォルトの名無しさんNGNG
WTLのフレームはツールバーが上、ステータスバーが下と決め打ちしてるから、それしかない。
独自のフレームクラスを定義するしかないな。
0816デフォルトの名無しさんNGNG
VC++6.0でリソースに256色のツールバーを追加することは出来ないのでしょうか?
0817デフォルトの名無しさんNGNG
グループボックス(ラジオボタンが組になったもの)をCreateWindowExで
作成するには、なんという引数の命令を使えばよいのでしょうか?
0818デフォルトの名無しさんNGNG
>>817
貴方はbuttonのradioボックスの事を言ってるの?
それともstaticのグループ(枠)の事を言ってるの?
どちらにしてもネタとしか思えんが・・・

button styles:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/shellcc/platform/commctls/buttons/buttonreference/buttonstyles.asp

static control styles:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/shellcc/platform/commctls/staticcontrols/staticcontrolreference/staticcontrolstyles.asp

window styles:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winui/winui/windowsuserinterface/windowing/windows/windowreference/WindowStyles.asp
0819デフォルトの名無しさんNGNG
>>817
基礎から勉強しましょう。
最初からやりたいことをやろうとガっついても、結局何もできません。
ていうか、どう考えてもネタだよな…。
0820デフォルトの名無しさんNGNG
>>819               ぬるぽのせいでコレが気になって気になって・・・
基礎から勉強しましょう。     ↓
最初からやりたいことをやろうとガっついても、結局何もできません。
ていうか、どう考えてもネタだよな…。
0821デフォルトの名無しさんNGNG
プログレスバーに進捗状況(文字・数字)を表示したいんですけど、
そういうAPIってあるんでしょうか?
0822デフォルトの名無しさんNGNG
TextOut
0823デフォルトの名無しさんNGNG
MSVCRTD.lib(MSVCRTD.dll) : error LNK2005: _malloc はすでに LIBCD.lib(dbgheap.obj) で定義されています
MSVCRTD.lib(MSVCRTD.dll) : error LNK2005: _fclose はすでに LIBCD.lib(fclose.obj) で定義されています
MSVCRTD.lib(MSVCRTD.dll) : error LNK2005: _fopen はすでに LIBCD.lib(fopen.obj) で定義されています
MSVCRTD.lib(MSVCRTD.dll) : error LNK2005: _free はすでに LIBCD.lib(dbgheap.obj) で定義されています
LINK : warning LNK4098: defaultlib "MSVCRTD" は他のライブラリの使用と競合しています; /NODEFAULTLIB:library を使用してください
LINK : warning LNK4098: defaultlib "LIBC" は他のライブラリの使用と競合しています; /NODEFAULTLIB:library を使用してください
Debug/AD.exe : fatal error LNK1169: 1 つ以上の複数回定義されているシンボルが見つかりました

こんなのがでました。
ライブラリとそのヘッダをインクルードしているのですが、
そちらの関数を呼び出すと、このエラーがでるようです。
どうすれば解決するでしょうか?
0824デフォルトの名無しさんNGNG
>>823
再定義しなければいい。
0825デフォルトの名無しさんNGNG
隣家が対処方法教えてくれてるジャンジャン。
0826824NGNG
いや、/NODEFAULTLIB:library ←これだな。
0827823NGNG
ん〜。どうすればいいのでしょうか?
0828824NGNG
>>827
ご丁寧に教えてくれているじゃないか。
0829デフォルトの名無しさんNGNG
使用してくださいと言っているのに・・・
0830823NGNG
/NODEFAULTLIB:library ってどこにあるのでしょうか?
0831デフォルトの名無しさんNGNG
>>830
どこって・・・オプションにそれを加えるんだよ・・・
0832名無し@沢村NGNG
ランタイムライブラリの指定をいろいろ変更してみる
MFCの使用オプションをいろいろ変更してみる
0833デブおた山崎渉 NGNG
  ∧_∧
  ( ´;^;ё;^;)<これからも僕を殺して下さいね( ´;^;ё;^;)。
=〔~∪ ̄ ̄〕
= ◎――◎                     デブおた山崎渉

0834823NGNG
いろんなとこのオプションに加えたのですが、解決しません…。
0835デフォルトの名無しさんNGNG
ああ、もうしょうがないなーもう
一回だけだよ?いいね?
cl ... /link /NODEFAULTLIB:LIBCD.LIB
0836デフォルトの名無しさんNGNG
>>823
ライブラリのコンパイルオプションに/Zl
0837デフォルトの名無しさんNGNG
>>823
VC++6だったら
プロジェクト(D)→設定(S)...→リンクタブ
の"デフォルトライブラリを全て無視"にチェックを入れる
0838デフォルトの名無しさんNGNG
質問お願いします。
VC++6にて、Debugモードでは問題なく動いているソースが
Releaseになるとダメになってしまいます。
こういう場合はどういう問題があることが多いのでしょうか。

一応警告レベルは最高にし、直せる所は全て潰しました。、
最適化も一通り変えてみたところ、「実行速度」の時だけかろうじて動き、
後のものは(最適化なしも含めて)全く動かない始末です・・・。
0839デフォルトの名無しさんNGNG
初期化されていない変数。
0840838NGNG
>>839
レスありがとうございます。
キーワードのおかげで、いくつか有用なサイトを見つけることが出来ました。感謝です。
0841823NGNG
>837
(涙
無視にすると、とってもエラーが増えます…。
どうすればいいのでしょう?
ぱにっくです。
0842デフォルトの名無しさんNGNG
だから、燐火が答えを教えてくれてるだろーが
詳しくはヘルプにk
0843823NGNG
Debug フォルダを消してコンパイルすると何となく解決しました。
ありがとうございます。
これを設定ではなくソースファイルに書くことはできますか?
#pragma みたいな。
0844デフォルトの名無しさんNGNG
だからh
0845823NGNG
h なにすか?
0846デフォルトの名無しさんNGNG
>>838
同じような経験あるのだが、結論をいうとプログラムにバグがある。
浮動小数点の精度のあたり調べてみたら?
0847デフォルトの名無しさんNGNG
デストラクタのチルダとは、~←これでしょうか
0848デフォルトの名無しさんNGNG
>>847
これでしょうよ。
0849デフォルトの名無しさんNGNG
>>823
ヘルプの #pragma 見れ
0850デフォルトの名無しさんNGNG
MFCのCFileというクラスで
fileOut.Open(trgtname + strConFilePath,
CFile::modeCreate | CFile::modeWrite | CFile::shareExclusive,
NULL);
fileOut.Write(buf, sizeRead);
fileOut.Flush();
fileOut.Close();
というソースがあるのですが、sizeReadはバッファの長さとして、(本当はwhileがあるのですが)
れを、open, wrhite, close で書き換えたいのですが、
if((fp = open(fname, _O_BINARY)) == NULL){
return false;
}
write(fp, buf, sizeRead);
close(fp);
とまでは、かけたのですが何かうまくいきません。
どう書くべきですか?
教えてください。
0851デフォルトの名無しさんNGNG
#pragma comment( linker, "/NODEFAULTLIB:msvcrtd.lib" )
#pragma comment( linker, "/NODEFAULTLIB:libc.lib" )
0852デフォルトの名無しさんNGNG
見比べれ

Windows Programing for C/C++(Not MFC)
http://pc2.2ch.net/test/read.cgi/tech/1018239290/

■ VisualC++(MFC限定)相談室 MFC7.dll■
http://pc2.2ch.net/test/read.cgi/tech/1047949606/
0853デフォルトの名無しさんNGNG
初心者なんですが、
コンストラクタでこういう初期化していいんですか?

CFoo::CFoo() {
  ::ZeroMemory(this, sizeof(CFoo));
}
0854デフォルトの名無しさんNGNG
>>850
ネタですか?
>open(fname, _O_BINARY)
これで書き込みできたら困ります。
0855デフォルトの名無しさんNGNG
>>853
で、実際にやってみた
エラーとか出ないなら大丈夫では?
しかし私はそういう風にやったことないな

初期化は
CFoo::CFoo()
: xxx(1)
, yyy("abc")
{ ... }
みたいにしてるから
0856デフォルトの名無しさんNGNG
×で、実際にやってみた
○で、実際にやってみた?
0857デフォルトの名無しさんNGNG
実際にやってみた人
http://pc2.2ch.net/test/read.cgi/tech/1046742687/199-209
0858デフォルトの名無しさんNGNG
パケットモニタを作りたいんですけど
Winsockじゃ出来ないみたいなんですが...。
どうすればよいかヒントください。
0859デフォルトの名無しさんNGNG
>>858
Winsockで、できますちゃんとグーぐるしましょう
キーワードは”RAW”
0860853NGNG
>>855
>>857

ご教授ありがとうございます。
クラスの将来性を考えると、
>>855さんの方法が確実だと思います。
0861デフォルトの名無しさんNGNG
winpcap
0862850NGNG
比べたのですがよくわからないです。
教えてもらえませんか?
0863デフォルトの名無しさんNGNG
Not MFC
0864850NGNG
はい。openの方は(使いたいのは)Not MFCです。
0865デフォルトの名無しさんNGNG
>>859
ありがとさ〜ん。調べてみます。
0866デフォルトの名無しさんNGNG
Win9xでflockのような同期処理を行う方法ってありませんか?
ようするに、既に共有ロックされている状態で排他ロックをすると、排他ロック
とそれに続く共有ロックがブロックされ、共有ロックが解除された時点で排他
ロックのブロックが解除されるような動作です。
NT系だとLockFileExがまさにそのような動作をしてくれますが、9x系で実現する
にはどうしたらよいのでしょうか?

ロックの対象はファイルでなくても構いません。
(イベントとセマフォの組み合わせで出来る??)
0867デフォルトの名無しさんNGNG
単純にやるんだったらディレクトリ作成・削除の排他制御でも使えば?
0868デフォルトの名無しさんNGNG
>>866
そのファイルをロックすることが重要でないのならミューテックスを使った方がいいよ。
0869デフォルトの名無しさんNGNG
UNIXのロックもロックを無視して開くことはできるから
そういう意味ではMutexのほうがより忠実なシミュレートになりそう
0870866NGNG
Mutexも考えていますが、確実に同期が取れる手順ってあります?
共有ロックはMutexを取得するとして、排他ロックをどうするか…
Eventを使おうと思ったけれども、ResetEventとWaitForSingleObject
を同時に行うことが出来ないので、タイミングによっては問題が発生
しますし。
Semaphoreを使えばWaitとResetが同時に出来ますが、Waitだけを行って
カウンタを減らさずにWaitができないから、共有ロック側をブロック
することが出来ません。
0871デフォルトの名無しさんNGNG
>>870
InitializeCriticalSectionはどう?

詳しくは
http://www.kumei.ne.jp/c_lang/
87章あたりから参考になるかもぽ
0872866NGNG
クリティカルセクションはプロセス間での同期には使えないので…
0873デフォルトの名無しさんNGNG
お聞きしてもよろしいでしょうか?
SDKでプログラミングをしていて、実行ファイル自身のパスを取得するにはどうすればよいでしょうか?
0874デフォルトの名無しさんNGNG
>>873
GetModuleFileName
0875デフォルトの名無しさんNGNG
>>870
共有ロックは普通のファイルロック、排他ロックはミューテックスというのはどうだ?
0876デフォルトの名無しさんNGNG
>>873
GetModuleFileNameEx
0877デフォルトの名無しさんNGNG
>>870
つーか複数プロセスが同時にアクセスするようなモデル?
面倒だからファイルのリネーミングを使っちまえば?
ファイルがリネームできないときは誰かがロックを取ってるってやつで。
もしくはファイル名でハッシュ値を出して、そのハッシュ値でロックディレクトリを作成。
作成に失敗したらロック獲得失敗。
まあどれも古典的な方法だけど、Mutexとかを使わないんだったらこれぐらいしかないんじゃない?

いってしまえば、別にきちんと規約を決めればMutexでも排他ロックはできるけど。
0878デフォルトの名無しさんNGNG
/************************************************/
/** 練習プログラム **/
/************************************************/

/* このプログラムは、1以外の文字に対して、全て「はずれ」
/* と表示するプログラムです。
#include<stdio.h>
int main()
{
char keroman[723] ; /*入力文字を保存するための変数*/
printf("1,2,3から、好きな数字を入力してEnterを押してください\n") ;
printf("1\n 2\n 3\n") ;
gets(keroman) ;
if(keroman[0]=="1"){
printf("%sは正解\n",keroman) ;
}
else{
printf("はずれ!\n") ;
}
}

コンパイルができません。
11行目で「warning: illegal pointer combination(==)」という
バグがでてしまいます。。
大変申し訳ありませんが、
10分考えても解決できないので誰か教えていただけないでしょうか?
0879デフォルトの名無しさんNGNG
>>878
5行目のコメントの終了位置を間違えてました。
「/* と表示するプログラムです。」ではなくて
「 と表示するプログラムです。*/」でした。

ごめんなさい。
0880デフォルトの名無しさんNGNG
>>878
if(keroman[0]=="1")が
char型とcharのポインタ型の比較だからじゃないの?
'1'でやれば?
0881デフォルトの名無しさんNGNG
なんでまたこのスレで聞いたんだろう・・・
0882デフォルトの名無しさんNGNG
>>878
っていうか3時間ぐらい考えろ。馬鹿。
0883デフォルトの名無しさんNGNG
>>882
分かった。3時間ぐらい考えます。
すぐ聞くなんて、バカだなぁ。俺。あははは。
0884デフォルトの名無しさんNGNG
>>880
ありがとうございます。
おかげでちゃんと動きました。
0885デフォルトの名無しさんNGNG
>>884
これはしごく基本的な内容だから
きちんと参考書読みましょう

たしか初心者向けのCかC++スレあるから
今後はそちらで聞くのを薦める
0886870NGNG
>>877
Win9x環境下でのflockの完全な実装がとりあえずの目標です。
そのためのロックメカニズムを考えているところです。
Mutex等は使わないわけではなくて、どんな状況でも確実に動作するものを
考えていて、なおかつパフォーマンスも重視しています。

結論から言うと、ミューテックスとイベントとセマフォを使って完璧と思わ
れるロック機構はできました。(まだ動作テストはしていませんが)
しかし、共有ロックと排他ロックでアンロックの手順が変わってしまうので
flockの実装が少し面倒です。
0887デフォルトの名無しさんNGNG
SignalObjectAndWait…はWin9xだと使えないのか
0888デフォルトの名無しさんNGNG
LockFileExはよくて、LockFileはダメなの?
0889870NGNG
パフォーマンスを気にしなければSleepとLockFileの組み合わせでもいいけど。
0890デフォルトの名無しさんNGNG
質問です。

ShellExecuteExとWaitForSingleObjectで、起動した別プロセスの監視を行おうとしています。
起動するファイルを"C:\test.html"などとした場合は正常に動作するのですが、
"http://XXX.com/test.html"などネットワーク上のファイルにした場合
IEが起動した直後に処理が返ってきて上手くいきません。

理由と、解決策があれば教えてください。
ちなみに、WaitForSingleObjectの返り値は WAIT_FAILED で
GetLastErrorとFormatMessageの結果は「この操作を正しく終了しました」でした。
参考)
ttp://yokohama.cool.ne.jp/chokuto/urawaza/api/ShellExecuteEx.html
ttp://yokohama.cool.ne.jp/chokuto/urawaza/api/WaitForSingleObject.html
0891デフォルトの名無しさんNGNG
>>890
想像で答えるが、たぶんShellExecuteEx等にURLを渡すと、cmd.exeか何かが
実行されてそこからIEが起動されるんだと思う。
IEを起動した時点でcmd.exeは終了してしまうから、そこでWaitForSingleObject
から帰ってくるのではないかと。
0892890NGNG
なるほど。今日帰ったら確認してみます。

(どう確認しよう…
そしてその場合、プロセスハンドルを取る方法って
プロセスの名前から調べる位しかなかったような…)
0893デフォルトの名無しさんNGNG
ShellExecuteEx等はプロセスを起動するとは限らない
DDEですでに起動しているプロセスにに文字列をを
渡すだけの場合もある。
0894デフォルトの名無しさんNGNG
何か、そういう処理をやってそうなのって explorer.exe っぽい
0895デフォルトの名無しさんNGNG
お聞きしたいのですが、
ウィンドウハンドルから、すでにウィンドウが破棄されているかどうかを調べたいのですが、
どのようにしたら良いでしょうか?
API 等があるのでしょうか?
0896デフォルトの名無しさんNGNG
MFC使わないでダイアログベースのプログラムを書く簡単な方法ってどこかにないですか?
お願いします。
0897デフォルトの名無しさんNGNG
BCB使う
0898デフォルトの名無しさんNGNG
>>895
http://www.microsoft.com/JAPAN/developer/library/jpuipf/_win32_iswindow.htm
0899デフォルトの名無しさんNGNG
>>896  ダイアログベース DialogBoxで、ぐぐれ
0900デフォルトの名無しさんNGNG
>896
猫プロ
0901デフォルトの名無しさんNGNG
>>899
おそらく>>896はそれが !簡単 な方法だと思ってるんじゃないかな
0902896NGNG
>>898
どうもありがとうございます。
0903デフォルトの名無しさんNGNG
ありがとうと言われたのは 898 だけ
0904デフォルトの名無しさんNGNG
>>903
いや、902は905の間違いだと思われ
0905デフォルトの名無しさんNGNG
>>1乙でし!!
0906デフォルトの名無しさんNGNG
誤爆?
0907896 -> 895NGNG
902 の 896 は 895 の間違いでした。
混乱させてすんまそ。
0908デフォルトの名無しさんNGNG
>>895
IsWindowかな。
0909デフォルトの名無しさんNGNG
質問です。
ドライバなどの更新で使用中のファイルを置き換えることがあると思いますが
あれはどのように実現しているのでしょうか?
Windowsに「再起動時にこのファイルを置き換えといて」バッチみたいな機能
があるのでしょうか。
それとも元ファイルを使用中のままRenameし、新ファイルを元の名前で新たに
作成して、次に読むときに入れ替わるのでしょうか。しかし、この方法だと
Renameした古いファイルを誰かが消す必要がありそうです。
それともドライバやサービスは実行中でもファイルを置き換えられるの
でしょうか。
0910909NGNG
あと、逆に使用中のファイルのRenameをさせない方法はありますか?
>>877を参考にすると、実行中に自分自身をロックすればいいのですかね。
0911890NGNG
どもです。
結局、CreateProcessとWaitForSingleObjectで監視することにしました。
この場合、実行するプログラムの場所を指定する必要があるので
レジストリに新しく値を作ることになりましたが…
0912デフォルトの名無しさんNGNG
>909
> Windowsに「再起動時にこのファイルを置き換えといて」バッチみたいな機能
> があるのでしょうか。
NT系だとMoveFileExがあるな

> それとも元ファイルを使用中のままRenameし、新ファイルを元の名前で新たに
使用中のファイルってリネーム出来たっけ?
0913デフォルトの名無しさんNGNG
EXE とか DLL ってメモリマップトファイル使ってて、実行中は常にロックされてる
んじゃなかったか?
0914デフォルトの名無しさんNGNG
>>911
関連付け情報からパス引っ張ってくれば?
>>912
> 使用中のファイルってリネーム出来たっけ?
NT系だとできるっぽい。
0915デフォルトの名無しさんNGNG
最近よくある画面右下にせりあがってくる通知ウィンドウって
どうやって作るんですか? IEの機能かな
0916デフォルトの名無しさんNGNG
>>915
ツールチップ?
0917915NGNG
>>916
いえ、デスクトップの右下に、下から伸び上がるように出てくるウィンドウです。
名前が分からなくて検索とかで調べられないんです。
たとえば、
MSN MessengerのHotmail到着通知
Norton AntiVirusのDATファイル更新完了通知
McAfee Personal Firewallの攻撃検知通知
のときのウィンドウのことなんです。
0918デフォルトの名無しさんNGNG
>>917
だからツールチップ。
0919デフォルトの名無しさんNGNG
>915

http://codeguru.earthweb.com/statusbar/StatusBarMsgWnd.html
http://codeguru.earthweb.com/statusbar/trayballoon.html
http://codeguru.earthweb.com/dialog/TaskbarNotifier.html
0920915NGNG
レスありがとうございます。

>>916,918
ああああ、すみません。
ツールチップときいて他のものだと決め付けてしまっていました。

>>919
ソース付でスキンも使用可能とは!
さっそく使わせていただきます。
0921デフォルトの名無しさんNGNG
ウィンドウ幅が狭くなってメニューが2段になると AdjustWindowRectEx() が破綻します。
メニューが(時として)2段になってしまうような場合に、クライアントのサイズから
ウィンドウのサイズを計算するにはどうすればよいのでしょうか。
0922デフォルトの名無しさんNGNG
WM_NCCALCSIZEを送って合わなかったら調整してます
0923デフォルトの名無しさんNGNG
>>921
要求クライアントサイズに合わない分、ウインドウサイズを調整しる。
足りないなら増やせば良いし、多ければ減らせば良い。
GetClientSizeとGetWindowSizeとSetWindowPos使えば簡単に
出来るよん。
0924デフォルトの名無しさんNGNG
>>922-923
早速のレスありがとうございます。 おかげで多段メニューにも対応できました。
そりゃそうだ、実際にウィンドウを作成してみれば誤差が計算できるんですよね。
何もかも作成前に準備しようとしていたので考えもつきませんでした。
嗚呼、悔しい恥ずかしい。

それにしても AdjustWindowRectEx() が存在する意味っていったい……
0925デフォルトの名無しさんNGNG
GetWindowRgn()で得たリージョン(のハンドル)は
閉じる(CloseHandle)必要がありますか?
0926925NGNG
あと、GetWindowRgn()の第2引数って
どうしてHRGNへのポインタではないのでしょう?

GetWindowRgn(hwnd, &hrgn)ではなくて、
GetWindowRgn(hwnd, hrgn)とすることで
リージョン(のハンドル)が得られるのでしょうか?
0927デフォルトの名無しさんNGNG
>>925
GetWindowRgnはリージョン自体を得るわけではなくリージョンの内容のコピーを取得する

次からは自分で検索ぐらいはしような
http://www.microsoft.com/JAPAN/developer/library/jpgdipf/_win32_getwindowrgn.htm
0928sageNGNG
Win32API の 〜W(UNICODE用関数) と 〜A(マルチバイト用関数)
を統一的に扱いたくて作ったセレクタ

template< typename CharType > struct function_selector;
template<> struct function_selector< char >
{
 template< typename FuncA, typename FuncW >
 static inline FuncA select( FuncA fn, FuncW ){ return fn; }
};
template<> struct function_selector< wchar_t >
{
 template< typename FuncA, typename FuncW >
 static inline FuncW select( FuncA, FuncW fn ) { return fn; }
};

使うときは、

template< typename CharType >
inline void alert( const CharType* msg, const CharType* cap )
{
 function_selector<CharType>::select( MessageBoxA, MessageBoxW )
 ( GetActiveWindow(), msg, cap, MB_OK|MB_ICONWARNING );
}
とやると。Generic programming のお供にどう?
0929デフォルトの名無しさんNGNG
_TCHARを使わない宗教的理由でもあるのか?
0930デフォルトの名無しさんNGNG
オーバーロードでもよさそうだな
0931925NGNG
>>927
ありがとうございました

あと、次からそうします…
0932デフォルトの名無しさんNGNG
>>929
たとえば、自作ライブラリで、ワイド文字メインだけど、
charしかサポートしていないライブラリを併用したいときとか。
双方をサポートするようにしないといけない関数がたくさんあって、
いちいちオーバーロードするのが面倒なときとか。

try{ ... }
catch( wchar_error& e ){ alert( e.what(), L"WideError!" ); }
catch( tchar_error& e ){ alert( e.what(), _T("TchError!") ); }
catch( std::exception& e ){ alert( e.what(), typeid(e).name() ); }

例としてはよくないけど…
0933デフォルトの名無しさんNGNG
alert定義するのも、オーバーロードさせるのも手間はかわらんと思うが。
0934デフォルトの名無しさんNGNG
age
0935デフォルトの名無しさんNGNG
FOXToolKitとか
FltkとかのGUIライブラリの話題って
最近めっきり減ったな
0936デフォルトの名無しさんNGNG
http://www1.kcn.ne.jp/~houou/one.swf
0937テンプレNGNG
Windows programming by C/C++ without MFC Part2

Windowsプログラムを作るにあたって、
API以外の疑問や質問をぶつける為に作りました。

自分もMSの摩訶不思議な規則や仕様(バグ)等に悩まされてます。
質問や疑問以外にも、プログラミングしていて気付いた事や発見等も
書き込んでくれると有難いです。

関連スレ
http://pc2.2ch.net/test/read.cgi/tech/1047819779/ Win32API 質問箱 Build10
過去スレ
http://pc2.2ch.net/test/read.cgi/tech/1018239290/ Windows Programing for C/C++(Not MFC)
0938デフォルトの名無しさんNGNG
グラフィックソフトで、タブレットの筆圧を感知するにはどうしたら良いのでしょうか?
0939デフォルトの名無しさんNGNG
スクリーンセーバー作ってるんですが、
IMFのウィンドウが最前表示でじゃまです。
どうすれば後ろに隠せますか?
0940デフォルトの名無しさんNGNG
国際通貨基金?
0941939NGNG
>940
間違えました。
IMEです。
0942デフォルトの名無しさんNGNG
そのIMEは、どのプロセスに張り付いてるIME?
0943939NGNG
うっ。まだ初心者なんでわかりません。
プロセスってなに? そこは勉強しときます。

そしたらそのプロセスの場所がわかれば
隠すことも可能なのですか?
0944デフォルトの名無しさんNGNG
>>938
ttp://www.pointing.com/
で、Wintab の SDK (WTKIT126.zip) を落としてきて、それを使え。
使い方とかは、Wintab でググれば、なにかしらの情報は手に入る
0945デフォルトの名無しさんNGNG
誰かウィルスダウンロードしてるとこの画像みたいな画面みたいなヤツくれ
文字が流れてくやつ。
もちろん嘘っぱちの
0946デフォルトの名無しさんNGNG
>>945
あのダイアログを出したいのか、あのアニメgifファイルがほしいのか、どっちだ!?
0947デフォルトの名無しさんNGNG
Drectxを使ってフルスクリーンモードで描写しながら
DialogWindowを表示したいのですが
いい方法しりませんか?
1000になる前になんとかならないでしょうか?
0948デフォルトの名無しさんNGNG
眠くて間違えました。
DirectX
Dialog box
でした。


0949デフォルトの名無しさんNGNG
>>947
DX8以外ならできる。
DX9ならSetDialogBoxModeを使う。
0950デフォルトの名無しさんNGNG
>>947はマルチ

Win32API 質問箱 Build10
http://pc2.2ch.net/test/read.cgi/tech/1047819779/l50
0951947NGNG
あ、りがとうございます。
Directx5使ってました。
SDK新しいのいれます。
散々さわいどいてすみません。
明日までにまとまらないと
チームリーダーに殺されるので、
0952デフォルトの名無しさんNGNG
DirectX5でも出来る。
でも、マルチだから教えない。
0953デフォルトの名無しさんNGNG
しかも態度がでかい(マルチ先参照)
殺されりゃいいのに
0954デフォルトの名無しさんNGNG
C++相談室にもマルチポストしてたのか。
探せばもっと出てくる?
0955デフォルトの名無しさんNGNG
今頃チームリーダーに殺されてるかな?
0956デフォルトの名無しさんNGNG
クリップボードに書き込んだり消したりするプログラムを作成しようとしています。
しかし、MSDNライブラリを見てもMFCやVBしか検索できませんでした。

Win32SDKで作成できる関数などは用意されているのでしょうか?
もしありましたら名前を教えてください。
あとは自分でやります。よろしくおねがいします。
0957デフォルトの名無しさんNGNG
>956
BOOL EmptyClipboard(VOID);
など
0958デフォルトの名無しさんNGNG
>>957
ビンゴ!ありがとうございました。

それにしてもMSDNの検索は使いにくい・・・
VBはもういらないんですけどね・・・
0959デフォルトの名無しさんNGNG
>>952
俺の記憶ではできない気がするのだが、、
0960デフォルトの名無しさんNGNG
>>959
実際に試したことはないが可能だったと思う
Dialog表示中はフリッピングできないようだが
0961デフォルトの名無しさんNGNG
>>560
あぁそれでならできるか。
0962デフォルトの名無しさんNGNG
やっぱAPIスレと違いが不明確だなあ。
0963 NGNG

ここの正しいタイトルは C/C++ for Windows Programming ではないのか?

とりあえず統合するしかないだろう。

Win32API 質問箱 Build10
http://pc2.2ch.net/test/read.cgi/tech/1047819779/
0964デフォルトの名無しさんNGNG
>>963
そうだね。>>1-2見れば単発質問重複スレだと言っても過言じゃない。
0965デフォルトの名無しさんNGNG
WTLについても>>963でやんの?
0966デフォルトの名無しさんNGNG
>>965
ATLスレでやってる
0967デフォルトの名無しさんNGNG
962=963=964=966
このスレに恨みでもあんの?
sage進行なのによくチェックしてるよね(w
0968デフォルトの名無しさんNGNG
>>962-968
自作自演だろ?
0969デフォルトの名無しさんNGNG
>>967
似たスレチェックするのめんどうだから統合して欲しいわけだが。
0970デフォルトの名無しさんNGNG
もうすぐ1000だし別によくない?
0971デフォルトの名無しさんNGNG
ねーねー千取り合戦とかしないの?
0972デフォルトの名無しさんNGNG
ム板の合戦は990から
0973>>972 マジ!NGNG
     \∧_ヘ     / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
 ,,、,、,,, / \〇ノゝ∩ < ネェー、1000取り合戦してくださ〜い         ,,、,、,,,
     /三√ToT) /   \____________  ,,、,、,,,
     /三/| ゚U゚|\      ,,、,、,,,                       ,,、,、,,,
,,、,、,,, U (:::::::::::)  ,,、,、,,, タリー          タリー
      //三/|三|\         (\_/)        めんどくせー   タリー
      ∪  ∪           (  ´Д)    タリー    勝手にやれよ
 ,,、,、,,,       ,,、,、,,,     /   つ(\_/)   (\_/)ノ⌒ヽ、
      ,,、,、,,,          (_(__つ⊂(´Д`⊂⌒`つ(´Д` )_人__)
09741NGNG
ええっと、このスレ立てた1です。
英語が間違ってたとか単発質問スレだとか重複スレだとか
言われてますが、自分の言いたかった事がうまく伝わら
なかったようで、申し訳ないです。

>>40で言っているように1のコテハンはそこで止めているので
単発の質問では無かったのですが(その後にも色々、質問&
解答してるし)

やっぱり、不要ですかね。このスレ。単純にみんなWindows
Programでウィンドウ管理やビットマップ・サウンド処理等
どういう感じで扱ってるのかノウハウを共有しようと思ったの
ですが、失敗でしたかね。

APIの質問とかでは無く、「使いこなし方」みたいなのを語ろう
としていたのですが…。最近ではHBITMAP構造体は、Windows
のDDB管理だけじゃなくて、自前のオリジナルBitmap構造体
としても使えるなー。とか・・・まぁ、どうでも良い事ですけど(^^;

まぁ、そんな感じで、そろそろ1000が近づいてきましたね。
長々と付き合ってもらって、ありがとうでした。
0975デフォルトの名無しさんNGNG
>>974
でも>>956-957みたいな質疑応答が平然とされてるからねえ
事実として使い分けができてないと思うわけよ
応用的な話題でもAPIスレでやっていいと思うし
0976デフォルトの名無しさんNGNG
>>974
漏れは、結構このスレ気に入ってたんだけどね。
WIN32API質問箱の方は、なんか親切じゃないってゆうか・・・
言葉のあげあし取りみたいなのが嫌だったんだけど

もしかしたら、このスレを否定してる人って、WIN32APIスレの
人達なのかもね。

別に、まったり進行でWIN32APIとかぶらない程度にPart2に
行っても良いと思うんだけどなぁ。
0977デフォルトの名無しさんNGNG
>>976
そらかぶらないならけっこう。完全に別スレとしてチェックする。
でも今のところかぶった話題満載で同じスレをまたがってチェックしてる感覚。

つーかスレの雰囲気が嫌だからって理由で別スレ立てるのは反対。

Windowsプログラミングについてのノウハウ・使いこなし方等を共有するのはいいけど、
言語やフレームワークに依存する以上、各スレでやった方が参加者も多いし
言語・技術を元にした具体的な話ができるので、結果的にはその方が共有財産に
なると思うのだけど。
0978デフォルトの名無しさんNGNG
>>977
>言語やフレームワークに依存する以上、各スレでやった方が参加者も多いし

このスレ
言語=C/C++
フレームワーク=WindowsでC/C++扱えるフレームワーク(MFCは除く)
議題=C/C++でのWindowsProgramに関するノウハウ

WIN32API
言語=C/C++/VB/Delphi等WIN32APIが扱える言語
フレームワーク=WIN32APIが扱えるフレームワーク
議題=Win32APIについての質問

だから、別スレにするんじゃないの?
そもそも、>>1でそういう定義してるのに、それを無視して書き込むやつらを
例にして、「…だから、このスレいらない」は違うのでは?
0979デフォルトの名無しさんNGNG
>>978
>各スレでやった方が参加者も多いし〜
MFCスレを除くWindows系C/C++スレで十分だろという話
0980デフォルトの名無しさんNGNG
>978
とりあえず、このスレの1~900あたりまでで、
「APIスレで扱うのに不適当で、このスレでよかった」
ってレスをいくらか挙げてもらえんか。
0981デフォルトの名無しさんNGNG
今の議論とは直接関係ないのだが、俺は、Win32APIスレはAPIの質問というよりは
(たしかに〜なAPIありませんか?という質問もあるが)、APIを使ったWindowsプログラミング
に関するスレという認識だ。
>>1自身が書いた>>2なんかはAPIを使ったWindowsプログラミングの話そのまんまだと思うんだがどうか。

そもそも言語・開発環境スレは、もちろん言語・開発環境自体についての質問もあるが
それらの言語・開発環境を使ったプログラミングに関する話題も扱っている。

このスレにはC++でCOMなレスもあるが、それならCOMスレがあるし、WTLならATLスレがあるし、
VC以外のC/C++ならC++Builderスレもその他コンパイラスレもあるし、
MFC以外のクラスライブラリならそれ用のスレもあるし。
0982デフォルトの名無しさんNGNG
ここのスレタイも紛らわしいよな。
いっそ「Windowsプログラミング雑談スレ」とかだったらわかりやすかった。
まぁ雑談はマ板逝けってことになるんだが。
0983デフォルトの名無しさんNGNG

>1がノウハウ共有の為にスレッドを立てたのであれば、
疑問・質問はスレ違いとなるべきであった。
しかし>1は疑問・質問のスレッドであると明言している。
これは明らかに>1の不備であり、
推測するに、>1は自分が質問したい事があったが、単発質問スレではないように装っただけ。

質問・疑問を受け入れる事をやめ、適宜誘導をしてこなければならなかったのだ。
そしてノウハウを提供したり、議論したりするためのスレッドへ変化せねばならなかったはずだ。
さらに、その場合は>1が率先して話題を提供する事が望ましい。

我々このスレッドの多くの住人達は、スレ違いの質問に親切に答えた。
だがしかし、それらの行為は否定された。
>1の不備とはいえ、質問・疑問を受け入れるスレッドであるにもかかわらず。
はたして>978はこのスレッドの為に一体何をしてきたの言うのだろうか。

さて、このスレッドに次スレが立つとすれば、
  ・ MFC ATL WTL などを使わずに C/C++ で Windows アプリケーションを作るためのノウハウとその議論
  ・ Windows API の不可解な仕様・動作・規則・不具合の報告とその議論
  ・ C/C++ による Windows Programming のパターン、イディオム等
などといった題材を持ち出すしかない。
なお、スレタイは Windows Programing for C/C++(Not MFC) では恥ずかしすぎるので変えた方が良い。
0984983NGNG
つまり、噛み砕いて言えば、
質問スレと議論スレに分けろと言う事だ。
0985デフォルトの名無しさんNGNG
別にAPI質問箱で「俺はこうしてるけどみんなはどう?」と問い掛けてもいいと思うんだがなぁ。
質問箱だからって質問しか受け付けないわけじゃなかろうに。
0986デフォルトの名無しさんNGNG
>>1-983
ココ、初めて見たけど、他のスレと「かぶってる」・「かぶってない」は
人それぞれで意見が違うみたいだね。
ある人は「XXXについて語り合おうや」と言えば、ある人は「それは
ZZZスレでどうぞ」みたいな…。
でも、当然ほとんどの人は、ム板のスレ一覧は見てる訳だから、
なんらかしらの理由で、他のスレじゃ趣旨が違うと思ったんだろう。
とりあえず、そういう人が少しでもいる以上、このようなスレがある事は
意義があるのでは?

とりあえず、「このスレいらない派」は消えてもらって、「次スレの
趣旨と方向性」について語らんか?「いる」「いらない」は、それこそ
無意味な話題だと思うので。
0987983NGNG
向こうをどのように利用しても良いけどこっちは質問を受けない

これで
0988デフォルトの名無しさんNGNG
次スレ立てるなら初心者が間違って来ないようなタイトルにしてくれな。
ここみたいにスレ違いなレスで埋まってるのに
「1000レス埋まったのでこのスレはやっぱり需要があった!」
みたいな勘違いしちゃうから。
0989983NGNG
趣旨と方向性が定まってないなら「いらない」にたどり着く事は自明。

さて、俺の書き込みを呼んだかどうかが怪しいところだ。
0990デフォルトの名無しさんNGNG
「標準C++だけでWindowsプログラミングするためのノウハウ」
「Windowsプログラミングに関する議論スレ(質問お断り)」
0991デフォルトの名無しさんNGNG
>>986みたいなのが必要かどうか良く考えずに糞スレ立てちゃうんだろうな
0992983NGNG
下段の括弧書抜きに一票。
0993デフォルトの名無しさんNGNG
>>978で言っているように
「C/C++でのWindowsProgramに関するノウハウ」で良いんじゃない?

テンプレ-----------------------------------------------------------------

C/C++でのWindowsProgramに関するノウハウ

Windowsプログラムを作るにあたってのノウハウや
API の不可解な仕様・動作・規則・不具合の報告や議論、
回避方法等を語りあいましょう。

MFC ATL WTL 等は、それ専用スレがあるので、そちらでお願いします。
あと、APIに関する質問は「Win32API 質問箱」へどうぞ。

関連スレ
http://pc2.2ch.net/test/read.cgi/tech/1047819779/ Win32API 質問箱 Build10
過去スレ
http://pc2.2ch.net/test/read.cgi/tech/1018239290/ Windows Programing for C/C++(Not MFC)



0994デフォルトの名無しさんNGNG
>>993
そのスレタイは危ない。API質問が来る予感。
正直、スレを立てるときは>>1は読まれないと思ったほうがいい。
0995デフォルトの名無しさんNGNG
スレタイ「Windowsプログラミングに関する議論スレ(質問お断り)」
で>>993のテンプレでどうだ。
0996テンプレNGNG
C/C++でのWindowsプログラミングに関する議論スレ(質問お断り)

Windowsプログラムを作るにあたってのノウハウや
API の不可解な仕様・動作・規則・不具合の報告や議論、
回避方法等を語りあいましょう。

MFC ATL WTL 等は、それ専用スレがあるので、そちらでお願いします。
あと、APIに関する質問は「Win32API 質問箱」へどうぞ。

関連スレ
http://pc2.2ch.net/test/read.cgi/tech/1047819779/ Win32API 質問箱 Build10
過去スレ
http://pc2.2ch.net/test/read.cgi/tech/1018239290/ Windows Programing for C/C++(Not MFC)

------------------------------
とりあえず、VBとかDelphiは、それ用があるし、このスレもC/C++だったから
「C/C++」を付けてみた。(Ruby厨対策(w)
0997デフォルトの名無しさんNGNG
>>996
それで良いんじゃない?1000取った奴がスレ立ててね。
0998デフォルトの名無しさんNGNG
んー、VCなので「標準C++」と書けないところが歯がゆい。
0999デフォルトの名無しさんNGNG
合戦が始まらないところにこのスレのマイナー感がにじみ出てるな…
10001NGNG
じゃあ、スレ立てます。
10011001Over 1000Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。