C/C++でのWindowsPrograming議論スレ(質問お断り)
■ このスレッドは過去ログ倉庫に格納されています
00011
NGNGAPI の不可解な仕様・動作・規則・不具合の報告や議論、
回避方法等を語りあいましょう。
MFC ATL WTL 等は、それ専用スレがあるので、そちらでお願いします。
あと、APIに関する質問は「Win32API 質問箱」へどうぞ。
関連スレ
http://pc2.2ch.net/test/read.cgi/tech/1047819779/ Win32API 質問箱 Build10
http://pc2.2ch.net/test/read.cgi/tech/1047949606/ ■ VisualC++(MFC限定)相談室 MFC7.dll■
http://pc2.2ch.net/test/read.cgi/tech/1029029882/ ATL 相談室
過去スレ
http://pc2.2ch.net/test/read.cgi/tech/1018239290/ Windows Programing for C/C++(Not MFC)
00021
NGNGスレ立てられなかったので、可能な限り短くしてみました。
0003デフォルトの名無しさん
NGNG「C++でWindowsProgrammingをする意義があるのかどうか」
と言うことについて議論しましょう。
0004デフォルトの名無しさん
NGNGVisualC++で用意されている以外のコントロールを
使いたい場合や標準的な動きでは無い挙動等を
実現したい場合なんかは、C/C++でプログラムするのが
一番、最適だと思うんだけど…
それとも、CかC++かって事?
0005デフォルトの名無しさん
NGNG0006デフォルトの名無しさん
NGNG何を訳の分からんことを。
0007デフォルトの名無しさん
NGNG荒らし?
曖昧な質問しておいて「何を訳の分からんことを。」とは??
何がC++でWindowsProgrammingをする意義があって
何がC++でWindowsProgrammingをする意義が無いのか
自分で答えてから質問したら?
0008デフォルトの名無しさん
NGNG使わないとメッセージループさえ小汚い書き方しかできないし。
0010デフォルトの名無しさん
NGNGいいテーマだと思うのだが、いきなり高レベル過ぎるかもしれない。
まあ正確には 「非コモンコントロールを使いたい場合」 だ。
例えば、デスクトップやリストビュー(大きいアイコンモード?)のような物を自作したいのだが、どうやって作ろうかな。
これが巧く出来れば、将棋やチェスなどのコマを動かすゲームに応用できる。
他にも、ユーザが自分の好きな場所にボタンを配置してカスタマイズできるアプリにも。
上記のコントロールは議論されなくても良いから(俺が勝手に考える、で良い)、
何か新しいコントロールの案を出してみて。
0012デフォルトの名無しさん
NGNGPhotshopやFlash等の市販アプリも秀丸やBeckyInternetMail等のシェアウェアも
MFCを使ってないんだけど…。
結局、MFCもWTLも型にはまったアプリは作成しやすいかもしれんが
一旦、型を外れると使わないで書いた方が効率が良いという罠。
0014デフォルトの名無しさん
NGNG漏れはボタンとラジオボタンとチェックボックスは、自分で自作した。
マウス移動と押・離が判別できてビットマップが描画できれば
そんなに苦労する物でも無いと思うし…。画面のプロパティの
デザインの配色・サイズ等に全て合わせるのは、ちょっと面倒くさいが、
最大のメリットは「システムリソースを消費しない」って事かな。
スタッティックやグループボックスは直接書いてる。
ボタンが2画面にわたって、1000個以上あるってやつを組んだ事
あるんだけど、その時に作成した。
でも、今でも使ってる。結構、便利だよ応用効くし。
0015デフォルトの名無しさん
NGNG0016デフォルトの名無しさん
NGNG>>14
俺も自分でボタンコントロールを作った。↓こんな感じで
HANDLE CTL_CreateButton(HWND hWnd,LPSTR cText,
UINT uX,UINT uY,UINT uWidth,UINT uHeight,WORD wMsg);
内容はマウスメッセージをフックして、あとはhWnd上に指定された
座標で押されたらhWndに対してWM_COMMANDをLOWORDに
wMsgを入れてsendMessageするって、だけなんだけど。
開放はBOOL CTL_DestroyButton( HANDLE hButton );で開放。
PhotoShopとかも、自前コントロールを使ってるみたいだね。
現在の弱点(課題?)は、WindowsXPのスキンにどう対応したら
良いのか…という事かな。
0017デフォルトの名無しさん
NGNG>>2「可能な限り短く」するためにmを削ったんだろ
0018デフォルトの名無しさん
NGNGお前らスゲーよ。
> 最大のメリットは「システムリソースを消費しない」って事かな。
これ良く分からん。コモンも自前も同じようにリソースを消費すると思った。
> 内容はマウスメッセージをフックして、あとはhWnd上に指定された
プロシージャーに色々書き加える、でなくフック?
子ウィンドウをちょいちょいと工夫するだけで出来ると思ってた。
実際には大変なのだな。
まあ、俺がフックは面倒だと思っているからなのだが。
まさか "BUTTON" をフックしただけで「自分で」とは言わないだろうけれど。
0019デフォルトの名無しさん
NGNG余計な機能削ったり、必要な機能付け加えたりするパターンが多いっす。
0020デフォルトの名無しさん
NGNG0021デフォルトの名無しさん
NGNG俺もそう。海外のサイトはplanet source codeやcpde projectとか優れすぎたコード
いろいろあるよね。日本でサンプルコード載せたHPやってる個人ページは
ほとんど海外のパクリであまり勉強にもならんし。
0022デフォルトの名無しさん
NGNGはい、それはない。
MFCはともかく、WTLはコンドーム並みに薄い皮でラップしただけ。
operator HWND()をはじめとして、基本的に生APIと互換が取れてる物ばかり。
美味しいところだけ頂けるのに、なんで効率が落ちる?
0023デフォルトの名無しさん
NGNGスレ違い
0024デフォルトの名無しさん
NGNG海外のサイトは、あまり見てないなぁ。
全部、自分で考えた物なんで、結構、恥ずかしい事してるかも。
でも、ボタンを押した状態でマウスボタンを離さず移動した時の
挙動とか、その状態で戻ってきて離したりとか…。考えると
深いよね。あ、あと、TABオーダーとかもあるか。
002516
NGNG>これ良く分からん。コモンも自前も同じようにリソースを消費すると思った。
今、テストしたら、ボタンを12000個作ったあたりで、リソースが
無くなりました。こうなると、他のアプリもコントロールが作れなく
なります。テストしたのはWin2000だけど、Win9x系だと、もっと
シビア。1000個位で作れなくなるんじゃないのかなぁ。
単純に計算しても1つメモリ100byte食ってるとしても2万個作ったと
しても2M。メモリが足らなくなる訳が無い。
システムリソースは限られたシステムのスペースなので
なるべく使わないのが吉かなーと思う次第です。
> 子ウィンドウをちょいちょいと工夫するだけで出来ると思ってた。
いや、子ウィンドウを工夫するのでは無くhWnd上に直接描画します。
当然、hWndのプロシージャーに色々書き加える事でボタンを作成
できますが、汎用性を高める為に、なるべく隠ぺい化する事を
考慮してフック等を使ってます。こうする事で、いままでのボタンを作る
時にCreateWindow("BUTTON",〜ってやっていたのを
CTL_CreateButton(〜に置き換えるだけで、自前ボタンに
なるという事がメリットです。
0026デフォルトの名無しさん
NGNG1必死だな。
どうせ重複スレなんだから、どんな使い方しようが自由だろ
0027デフォルトの名無しさん
NGNG放置の方向で(y/Y)?
002814
NGNGDrawFrameControlというAPIがあるんだけど、
これ使えばボタン描画が楽々だ〜…とか思ったけど
フォーカス持ったボタンとか駄目なんだよね。
結局、フォーカス持ったボタンの描画を考えると
他のも全て描画するのも労力が変わらないんだよね。
MSは、なんでこんなAPI作ったんだろう。
誰か使ってる人いる?<DrawFrameControl
002914
NGNGあ、DrawFocusRectがあるけど、これもまた使えないんだよね。
使ってみるとわかるけど、本物(?)のボタンコントロールと
微妙に挙動が違うんだよね。うまく言えないけど、本物のボタン
コントロールとビットマップを並べて比べてみるとわかる。
…でも、そこまで同じにする事ないのかな。
0030デフォルトの名無しさん
NGNGFOX
0031デフォルトの名無しさん
NGNG0032デフォルトの名無しさん
NGNG0034デフォルトの名無しさん
NGNGMFCが糞だったWin3.1時代にツールバーもどきを作ったのを思い出した。
あの頃はプログレスメーター作るのも面倒かったよなぁ。
0035デフォルトの名無しさん
NGNG教えて君で申し訳無いんだけど、その「海外」の「自前のコントロール」の
ソースがある所を教えて欲しいんだけど。
codeguru, planet source code, cpde projectで検索したんだけど
目的の「自前のコントロール」の場所がよくわからなかった。
0036デフォルトの名無しさん
NGNG0037デフォルトの名無しさん
NGNGつーかAPI全般がC用なのでC++に向かないのが難点。
GTKに対するGTK--のように、
WindowsにもWin32APIに対するWin32API++が必要だ。
0038デフォルトの名無しさん
NGNG0039デフォルトの名無しさん
NGNGそのためのWTL
でもこのスレで持ち出すとスレ違いと言われる罠
0040デフォルトの名無しさん
NGNGstd::stringで受け渡しができるようになったらなあ…
0041デフォルトの名無しさん
NGNG使ってるけど(C/C++じゃなくてVBで)、
Windows標準に合わせ易いっていうメリットはどうよ?
色とかハイコントラストとか。
0042デフォルトの名無しさん
NGNG自動的に対応してくれるの?
0043デフォルトの名無しさん
NGNG0044デフォルトの名無しさん
NGNG自分で配置するんだろうなー。
ダイアログリソースなんて軟弱ですか?
リソース(*.rcのことね)ってIDが実行ファイル毎だから
困るけど、MoveWindowで揃えるのもかったるいしー。
0045デフォルトの名無しさん
NGNGWTL
0046デフォルトの名無しさん
NGNGCreateWindowEx
BeginPaint
SetWindowLong
SetScrollInfo
CreateCaret
これら関数を常用するようなら、
そこの貴方もコントロール自作してみてはどう?
0047デフォルトの名無しさん
NGNGよく読め。CreateWindowEx使ってるうちはまだ軟弱
(リソースの節約にならない)
SwingやGeckoやIEみたいにすべて自前描画。これ。
0048デフォルトの名無しさん
NGNGCreateCaret って事は自前のエディットボックスもやったのか?
さすがにそれは面倒だからやらんかったなぁ...
表形式の物作る場合は入力用のコントロールを動かせば済むから...
0049あぼーん
NGNG0050デフォルトの名無しさん
NGNGあのCSSでボーダーやフォント・背景色が自在に変えられるのは便利。
フォーム関連と、改行等だけに絞れば結構小さく作れないかな・・・。
プログラム側の使用に限定すれば文法エラー処理なんかも適当でいいし。
XML名前空間とか実装が面倒そうなのは無視して。
0051デフォルトの名無しさん
NGNGIEみたいに自分が設計したOS上で自前コントロールって
やっぱり変な会社だ。使えないって事を自分で言ってる
ようなもんだ。
やはり、自前描画、自前コントロール。作った所も認めてる(w
0052デフォルトの名無しさん
NGNG剥げ同。
HTMLだと無駄が多いから、
構造体の配列とかで実装してほしい。
>>51
HTML/CSSの仕様書読んだ事ある?
あの仕様というか推奨動作に合うように作るには、
独自でないと無理だと思われ。
また、MSとしても下位互換性の問題があるから、
下手に変更加えたり出来ないんでは?
VS.netでわざわざウェブフォームなんて作ったのもそれが根源でしょ。
0054デフォルトの名無しさん
NGNGウィンドウ作らないのはHTMLの部分。
言いたいことはわかるけど揚げ足取りに近いよ
0055デフォルトの名無しさん
NGNG0056デフォルトの名無しさん
NGNGどうせならMFCや.NETで同じものを提供しほしい。
005752
NGNGSpy++で調べたことある?
たしかにサイズ変更枠の部分はBaseBarというオリジナルクラスだが、
その中はレバーコントロールを使っていて、
「履歴」という文字列、バツ印、や
「表示(W)」等のメニューは、ツールバーコントロールを使っている。
また、履歴のリストはツリービューコントロール使ってる。
ので、ほとんど独自ではないぞ。
それと、HTML表示するのにウィンドウ作ってたら、
フォームとボタンを大量にあるページの描画は極端に遅くなるし、
ひょっとしたら、それを悪用してブラクラを作れるかもしれない。
ieが5.5から複数フレームから成るページをも、
1つのウィンドウで表示できるようにしたのはその為では?
005852
NGNGOfficeは特別な存在で、
Mso9.dllとかがコモンコントロールの代わりのように使われてる。
でもこれは、時期ウィンドウズに搭載される(であろう)UIを、
その前に、そして以前のウィンドウズにおいても、
エンドユーザに提供するためでは、と思っている。
まあ、ある意味実験台かもな。
0059デフォルトの名無しさん
NGNG0060デフォルトの名無しさん
NGNGMona Foundation Class って名前で。
略称が MFC になってしまうのが駄目なら、
Giko Foudation Class でもいいけど。
作る気は無い? ああ、それでは帰ります。
スレッドを汚して申し訳ありません。
0061デフォルトの名無しさん
NGNG名称は置いとくとして、
適当に作るとMFC相当以下のライブラリができる、
つまりは車輪の再開発になってしまうのでは?
006360
NGNG個人的には WTL のような物が好みなのですが、
サクッと軽く作る、程度の物ではないですよね。
MFCも。
スレ汚しの自分に構ってくれてありがとう。
もう帰ります。
0064デフォルトの名無しさん
NGNGWTLの拡張とか修正とかならアリかもしらんが。
それよりはフリーなコントロールのほうが興味あるな。
006561
NGNG剥げ同。
はっきり言ってウィンドウクラスを目的にあわせて一々作るのは、
労力と見返りがちっともペイしない。特にフリーウェアだともう(中略
それ以外の処理は、目的に合わせて字目で暮らす作ったほうが早いし、
便利だし、実行速度も速い場合がほとんどなんだけどねぇ・・・
006661
NGNG0067デフォルトの名無しさん
NGNGaキーに謝れ。
0068デフォルトの名無しさん
NGNGa キーがサボったんかも知れんぞ。(藁
0069デフォルトの名無しさん
NGNGワラタ
0070!61
NGNG0071デフォルトの名無しさん
NGNGtemplate<typename T>
inline T* memcpy_s( T* dst, const T* src, size_t elem_cnt )
{ returns std::memcpy( dst, src, sizeof(T)*elem_cnt ); }
かならずそっちを使うようこころがける、とかしか無いんでない?
007271
NGNG0073デフォルトの名無しさん
NGNGでもその関数(゚∀゚)イイ!
007461
NGNGところで、独自コントロール作るなら、
フレームは外せないよな。
で昔、階層構造が可能なフレームコントロールを作ったんだが、
誰か要る?
0075山崎渉
NGNG0076デフォルトの名無しさん
NGNG0077デフォルトの名無しさん
NGNG0078デフォルトの名無しさん
NGNGProjectBuilder使えよ
ProjectBuilderの方が絶対に使いやすいし、GUIやエディタのフォントも綺麗
VisualStudio買う金で、Macを買えば無料でVisualStudioを超える最高の開発環境が付いてくるぞ。
今時Winで開発してる奴は浪費家かバカのどちらかだね!
0079デフォルトの名無しさん
NGNG( ´_ゝ`)
0080デフォルトの名無しさん
NGNG0081デフォルトの名無しさん
NGNG独自ライブラリを使ってたり等、
コモンコントロールと挙動・使い方が異なるクラスはいただけない。
ところで、哀れな>>78が居るスレはここですか?
0082デフォルトの名無しさん
NGNGただのコピペみたい。
0083デフォルトの名無しさん
NGNG0084デフォルトの名無しさん
NGNGProjectBuilder使えよ
ProjectBuilderの方が絶対に使いやすいし、GUIやエディタのフォントも綺麗
VisualStudio買う金で、Macを買えば無料でVisualStudioを超える最高の開発環境が付いてくるぞ。
今時Winで開発してる奴は浪費家かバカのどちらかだね!
0085デフォルトの名無しさん
NGNG( ´_ゝ`)
0086デフォルトの名無しさん
NGNG>>84はコピペ
0087デフォルトの名無しさん
NGNG>>85はコピペ
0088デフォルトの名無しさん
NGNG>>1-1000はコピペ
0089山崎渉
NGNG( ^^ )< ぬるぽ(^^)
0090デフォルトの名無しさん
NGNG[*] テキスト(&A)
な形式ですけど、ラベル文字列 + エディット/コンボボックスだと普通
テキスト(&A) [入力文字列|▼]
と、説明文を前に置きますよね?つまり前後が逆。
混在するダイアログを作る時、テキストを揃えたいと思ったら、皆さんどんな揃え方をします?
0091デフォルトの名無しさん
NGNG0092_
NGNGhttp://web2001.kakiko.com/koma/hankaku/hankaku07.html
http://www.web2001.kakiko.com/koma/hankaku/hankaku08.html
http://web2001.kakiko.com/koma/hankaku/hankaku10.html
http://www.web2001.kakiko.com/koma/hankaku/hankaku09.html
http://web2001.kakiko.com/koma/hankaku/hankaku06.html
http://www.web2001.kakiko.com/koma/hankaku/hankaku05.html
http://web2001.kakiko.com/koma/hankaku/hankaku01.html
http://www.web2001.kakiko.com/koma/hankaku/hankaku02.html
http://web2001.kakiko.com/koma/hankaku/hankaku03.html
http://www.web2001.kakiko.com/koma/hankaku/hankaku04.html
0093デフォルトの名無しさん
NGNG>テキストを揃えたいと思ったら、
思わない。
0094デフォルトの名無しさん
NGNGWTL専用スレってどこ?
0095デフォルトの名無しさん
NGNG無い。ATLスレでやってる。
0096デフォルトの名無しさん
NGNG0097デフォルトの名無しさん
NGNG0098デフォルトの名無しさん
NGNGガッ
0099デフォルトの名無しさん
NGNGえっち窓のほうがやる気でるよ
0100デフォルトの名無しさん
NGNG ̄ ̄ ̄ ̄ ̄ ̄∨ ̄ ̄ ̄ ̄ ̄ ̄
. ∩ ∩
〜| ∪ | (´´
ヘノ ノ (´⌒(´
((つ ノ⊃≡≡≡(´⌒;;;≡≡≡
 ̄ ̄ ̄(´⌒(´⌒;;
ズザーーーーーッ
0101デフォルトの名無しさん
NGNGかわいい…。
でも、チンコ立ってるようにも見えるね。
■ このスレッドは過去ログ倉庫に格納されています