Win32API 質問箱 Build6
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
NGNGやさしいお兄さんたちが答えてくれるかも。
でも、最低限Web検索ぐらいはしてね。
過去スレ
Win32API 質問箱 Build5
http://pc3.2ch.net/test/read.cgi/tech/1028580373/
Win32API 質問箱 Build4
http://pc3.2ch.net/test/read.cgi/tech/1023361418/
Win32API 質問箱 Build3
http://pc.2ch.net/tech/kako/1006/10067/1006783012.html
Win32API【2】
http://pc.2ch.net/tech/kako/1006/10067/1006783012.html
Win32API 質問箱
http://pc.2ch.net/tech/kako/991/991576947.html
参考
MSDN Online
http://www.microsoft.com/japan/msdn/default.asp
猫でもわかるプログラミング
ttp://www.kumei.ne.jp/c_lang/index.html
0002デフォルトの名無しさん
NGNG0003デフォルトの名無しさん
NGNG是非お願いします。
http://210.153.114.238/cgi-bin/upbbs2/imgboard.cgi
ここにUPして頂けますか?
0004デフォルトの名無しさん
NGNG猫でも〜にもあったが、あれじゃいかんの?
0005デフォルトの名無しさん
NGNGそれが出来ないから困ってるんですよ
たとえばMSゴシック11ptだと全角の幅=半角*2にならないので、
GetTextExtentPoint32等を含む通常のAPIでは描画結果がずれるのです。
なので、手動で補正もしくはExtTextOutで強制的に幅を指定しないといけないのですが、
自前で調整するには文字が半角か全角かを判別しなければなりません。
で、SJISだけなら問題なかったのですが、UNICODE(UCS2)だと、
すべての文字が2byteで表されるわけで、困っちゃったな、ということです。
プロポーショナルだと楽なんですが、そういうわけにも行かないので。
0006前スレ959
NGNGおなじ12ptでもフォントによってTEXTMETRICのtm.tmHeightは異なるので
上限があるのかなと思ったのですが…
高さの上限は決められていないのでしょうか。
わかる方お願いします。
0007デフォルトの名無しさん
NGNGhttp://210.153.114.238/img-box/img20020921043840.zip
うぷした。
パスワードはsplitterね。
ウインドウクラスにControlを継承させてからSetControlする。
それから、HandleMessageに適切なメッセージを渡せば使えるはず。
0008デフォルトの名無しさん
NGNGUnicode文字をANSIに変換してバイト数を得るのはまずいのか?
でもあんただったらそのくらい分かりそうから、ボツなんだろうな。
0009デフォルトの名無しさん
NGNGあの方法で、3つや4つに分割できますか?
0010デフォルトの名無しさん
NGNGどうもありがとうございます
早速DLさせてもらいます
0011デフォルトの名無しさん
NGNGフォント作成時にサイズを-xとかにしたら?
0012デフォルトの名無しさん
NGNGUNICODE化の目的は似非I18nなので、
UNICODE->ANSI(SJIS)にマッピング出来ない文字もあるわけでして…
0013デフォルトの名無しさん
NGNG漏れのアプリだとボタンを話すまで再描画されないのだが
他のアプリは バーが動くとすぐ描画されてる気がする
なんか指定しないといかんの?
0014デフォルトの名無しさん
NGNG固定ピッチなら、明らかに半角であると分かっている文字の幅より
広ければ全角とみなして構わないのではないか?
0016デフォルトの名無しさん
NGNGどうすればいいでしょうか。
ListView_SetTextColorとかだと全体が色変わっちゃうし。
0017デフォルトの名無しさん
NGNGなんかしょぼ〜んだけど、以外とそれが正解クサイかも
全角半角の整合が取れなくても、それぞれ半角同士全角同士は整合取れてるはずだから。
サンクス!
0018デフォルトの名無しさん
NGNGUnicodeの半角全角の表。これ使ってみる?
http://www.unicode.org/Public/UNIDATA/EastAsianWidth.txt
説明はこれ。
http://www.unicode.org/unicode/reports/tr11/
0019デフォルトの名無しさん
NGNGどうもです。
しかし、これを見ると文字幅は一意に決定することが出来ないようですね。
emacsのように独自の多言語コードに変換するのがスッキリしているみたいです。
FIXED PITCHという文化とWin(覗くXP)のフォントが憎くなってきました。
0020デフォルトの名無しさん
NGNGLOGFONTの説明を見れ。フォントマッパは指定されたサイズを越えない
最大のフォントを探すとある。だから、12ptと指定したなら最大のサイズは
12ptなんじゃないの? 論理単位で。
0021ねこま
NGNGhttp://www.microsoft.com/japan/developer/library/jpwinpf/_win32_createfile.htm
1.ハードディスク x を開くには、lpFileName パラメータで \\.\PHYSICALDRIVEx と指定します
2.フロッピーディスク x や、ハードディスクのパーティション x を開くには、lpFileName パラメータで \\.\x: と指定します
と書かれています.
1.の,「ハードディスク x を開く」
2.の,「ハードディスクのパーティション x を開く」
という違いがわからないのですが,このあたり明るい方教えてください.
ここ読めとかでもいいです.
やってみると,うちでは
\\.\PHYSICALDRIVEx はハードディスクのすべてで失敗し,フロッピードライブである A と B で成功する
\\.\X: ハードディスクのすべてで成功する
となりました.
0022デフォルトの名無しさん
NGNG2.はその中の各パーティション
どうして失敗するのかは知らん
0023デフォルトの名無しさん
NGNG\\.\PHYSICALDRIVE0 なら一台目のハードディスクという意味では
0024デフォルトの名無しさん
NGNG>>970
Unicodeか・・・ちなみにギリシア文字(アルファとかベータとか)は全角だと思いますか?半角だと思いますか?
0025デフォルトの名無しさん
NGNG2. の方は日本語訳が間違ってるよ。英語版の方では...
When opening a volume or floppy drive, x, the lpFileName
string should be of the form \\.\x:.
となっていて、パーティションと言う言葉は出てこない。
参照: ttp://msdn.microsoft.com/library/en-us/fileio/base/createfile.asp
ただ日本語訳のほうもその後を読めば、\\.\X はドライブ指定であること
は、普通わかるはず。
失敗する時は、エラーコードぐらい示したら ?
どうせ、Windows 9x でやってるか、Windows NT の一般ユーザー権限で
やっていると言うオチだろうが...。
0026デフォルトの名無しさん
NGNG0027ねこま
NGNGDISK_GEOMETRY の内容を表示すると,確かにそうですね!なるほど
同じハンドルしか返ってこないし
>>23さん
MSDN より
>\\.\PHYSICALDRIVE2
>ユーザーのコンピュータの 3 番目の物理ドライブのハンドルを取得します。
なのでその通りでした.勘違いしてました.
どうもありがとうございます.
0028デフォルトの名無しさん
NGNGWindows95 APIバイブル1,2
0029デフォルトの名無しさん
NGNGと書いているのですから,読めばそんなオチではない事
は、普通わかるはずでは?
0030デフォルトの名無しさん
NGNG> 読めばそんなオチではない事は、普通わかるはずでは?
これは、Windows9x の方か ? 権限の方か ?
確かに Windows9x は、\\.\x もダメみたいだな。ちょっと勘違いしてた
よ。
でも、そんなことぐちゃぐちゃ言ってる暇あったら...
> 失敗する時は、エラーコードぐらい示したら ?
の方をやってみたらどうよ。
0031デフォルトの名無しさん
NGNGみたいにするにはどうすればいいんでしょうか?
Tcalenderのようなメニューバーはなくて画面表示のみ、
それで、画面をクリックしながら動かせば移動が可能、とやりたいのです。
0032デフォルトの名無しさん
NGNG003331
NGNGタイトルバーのことです。
タイトルバーもメニューもない、内容だけのWindowを作って、
なおかつそれをドラッグで移動させたいのです。
0034デフォルトの名無しさん
NGNGcase WM_NCHITTEST: return HTCAPTION;
0035デフォルトの名無しさん
NGNGFAQだな
003634
NGNG003937
NGNG0041デフォルトの名無しさん
NGNGそのxをどうやって求めるかを知りたいのですが・・・
0042デフォルトの名無しさん
NGNGxは自分が作りたいフォントのサイズなのだが。
0043デフォルトの名無しさん
NGNGいやあの、あるサイズのフォントを作りたいのでは無くて、高さを知りたいんです。
例えば12ptの任意のフォントで描画された文字列を矩形で囲むとしたら
その矩形の高さをどう求めたらよいのかということです。
矩形の高さはポイントによって固定したく、
12pt→RECT rc12;
13pt→RECT rc13;
:
:
と対応させて矩形を表します。
rc12内へ12ptサイズのフォントを表示させれば、どんなフォントでも上下が
はみ出さずに表示できるようにするには、rc12の高さをどう設定すればよいのでしょうか。
0044デフォルトの名無しさん
NGNGねぇねぇ、もしかしてポイントサイズからドットサイズへ変換する式がわからないとか言う話?
0045デフォルトの名無しさん
NGNG0 指定された値をデバイス単位に変換し、それを利用可能な各フォントのセルの高さと比較します。
<0 指定された値をデバイス単位に変換し、その絶対値を利用可能な各フォントの文字の高さと比較します。
これ、思いっきり謎なんだけど、誰か解説出来る人いますか。
昔、本で高さには負数を入れろと書いてあったのを覚えているんだけど、
絶対値で比較されるなら差がないと思うんだけど、どうだんでしょ。
0046デフォルトの名無しさん
NGNGちなみに、MSDNの例では負数を入れてますね。
旧スレが上がっているのでage
0047デフォルトの名無しさん
NGNG正だったらフォントの (* セル *) の高さ。
負だったらフォントの (* 文字 *) の高さ。
文字の高さ (em height としても知られている) とは、文字セルの高さ
から内部レディング (アクセント記号などのためのスペース) の高さを
引いたものです。
0048デフォルトの名無しさん
NGNGレスどうもです。
文字の大きさを基準にスペースを決定したい場合は負数で、
スペースを基準に文字を収めようとする場合には正の数ということですね。
0049デフォルトの名無しさん
NGNGちょっと違う、 Á, Ö みたいにアクセント/ウムラウト等の文字の上につ
く記号のためのスペースを含むかどうか。(もちろん、文字としては含まな
い、セルとしては含まれる。)
ttp://amalfi.dis.unina.it/~carlosan/F3+BD/chap2/default.htm
の真中辺の Fig. 2-3 を参照のこと。
0050デフォルトの名無しさん
NGNGえっと、混乱してきました。
文字の高さ = otmMacAscent + otmMacDescent
セルの高さ = otmMacAscent + otmMacDescent + otmMacLineGap = tmHeight + tmExternalLeading
ですよね?
# 記号のスペースがtmInternalLeadingって事ですよね。
tmHeightにはtmInternalLeadingが含まれますが、
tmHeightを基準にするか(セル)、tmHeight - tmInternalLeading(文字)を基準にするかと言うことでしょうか?
そうだとすると、US ASCIIとかSJISの文字を表示するときはスペースの利用効率で負数を使って、
ウムラウト文字を含むような西欧文字を表示するときには正の数を使う、ってことですか。
0051デフォルトの名無しさん
NGNG読み捨てて下さい
0052デフォルトの名無しさん
NGNG君がッ
LOGFONTのヘルプを見るまでッ
僕はッ
LOGFONTのヘルプを見ろと言うのをやめないッ!!
0053デフォルトの名無しさん
NGNG> セルの高さ = otmMacAscent + otmMacDescent + otmMacLineGap
> = tmHeight + tmExternalLeading
これは、違う。
セルの高さ = 文字の高さ + tmInternalLeading
= otmMacAscent + otmMacDescent + tmInternalLeading
詳細は、
ttp://www.topposystem.co.jp/DL/Win32API/font/Font09.htm
の下のほうの図を参照のこと。
0054デフォルトの名無しさん
NGNG馬鹿におつきあい頂きありがとうございました。
それぞれの値が意味する物はわかりましたが、使い分けがさっぱりだったりします。
0055デフォルトの名無しさん
NGNG矩形の高さは
MulDiv(m_nFontSize, pDC->GetDeviceCaps(LOGPIXELSY), 72)
で計算したのですがArial Blackなどの一部のフォントだと下が切れてしまうんです。
フォントは
lf.lfHeight = -MulDiv(m_nFontSize, pDC->GetDeviceCaps(LOGPIXELSY), 72);
で高さを指定しています。
lf.lfHeightに入れる値を正数にすれば矩形内には収まりますが、
それだとワードパッドで表示した同じポイントのフォントより明らかに小さく描画されてしまいます。
というわけでこの方法ではうまくいかないものだと思い、ここで質問させていただきました。
0056デフォルトの名無しさん
NGNGここで聞いて解決するような問題なのか?
0057デフォルトの名無しさん
NGNG0058デフォルトの名無しさん
NGNG0059デフォルトの名無しさん
NGNGワードパッド(に限らずIEや他のペイントソフトなど)と同じポイントを指定してるので
できれば同じ大きさで描画されて欲しいです。
0060デフォルトの名無しさん
NGNGシステム色ではなく、赤とか青とかいろいろな色で作りたいのです。
ご存知の方、教えてください。
よろしくお願いします。
0061デフォルトの名無しさん
NGNGリファレンスみたいなのが載ってる本はないでしょうか?
MSDNはその部分日本語化されてないし、
ネットで探しても、ごく一部分だけの解説とかしか
見つからないのです。
0062デフォルトの名無しさん
NGNGあと具体的にどのコントロールのことを知りたいのか書けば
知ってる奴が教えてくれると思う。
0063デフォルトの名無しさん
NGNGで、切れてもいいのか?
お前が何をやりたいのかさっぱりわからんのだが。
006461
NGNGという時なら、それで事足ります。
でも、たまに暇な時に何となく説明を読んでたら
「おお、このコントロールにはこんな機能があったのか!」
みたいな便利機能発見して嬉しくなることができないなぁと。
0065デフォルトの名無しさん
NGNGMFCのドキュメント。
SDKとの対応がだいたい想像付く。その逆も。
0067デフォルトの名無しさん
NGNGなんとなく読むだけの暇があるんなら最初から英語版に目を通せや・・
0068デフォルトの名無しさん
NGNGうまく出来ました!
とても参考になりました。
ありがとう。
0069デフォルトの名無しさん
NGNG切れないように。矩形内に収まるように。と書いてあるが。
0070デフォルトの名無しさん
NGNGWM_CHARを取ろうと思っても親にSendMessageしてもらわないとできません。
標準のエディットコントロールでは、そんなことせずにできるんですが、
どうやったらいいのでしょうか。
RegistClassあたりでそういうのがあるんでしょうか。
0071デフォルトの名無しさん
NGNGサブクラス化すればいいだけじゃないの?
007270
NGNGサブクラス化とは何でしょうか?
0074デフォルトの名無しさん
NGNG0075デフォルトの名無しさん
NGNGダイアログに置いてあるなら WM_GETDLGCODE をヘルプで見てみるとよいよ
自作のウィンドウクラスの中に置いてあるなら何もしないでも来るはず
007670
NGNG0077デフォルトの名無しさん
NGNGWM_GETDLGCODEあたりの問題ですか?
007877
NGNG0079デフォルトの名無しさん
NGNGそしたらワードパッドと大きさが違ってくるんだろ。
ようするに要求が矛盾してるんだよ。
奴がやりたいことを整理して出直してくるまで放置だな。
0080デフォルトの名無しさん
NGNGやりたいこと。
・固定高の矩形内におさめる
・表示はワードパッドやIEで表示したものと同じ大きさで
これだけです。
この条件で「(矩形の高さの)上限は求められますか?」ということと、
「可能ならその方法を教えてください」というのが元の質問の意味です。
0081デフォルトの名無しさん
NGNG固定高の高さによって表示が切れるのは当然だと思うが
0082デフォルトの名無しさん
NGNG何をぐだぐだ言っとんねん。
0083デフォルトの名無しさん
NGNGその部分のソースを出せば解決するんじゃないのか?
0084デフォルトの名無しさん
NGNGこういうツールバーってどうやって作るの?
どこかに資料ありませんかぁ?
0085デフォルトの名無しさん
NGNG発行すればできるんでないか。まあ、表示文字列に対して
GetTextExtを発行した方が速いけどナ
0086デフォルトの名無しさん
NGNG0087デフォルトの名無しさん
NGNGC言語でプログラムを書いたんですが、バックグラウンドで
動かす(MS-DOSプロンプトウインドウを出さないで動かす)には、どんなAPI
を使えばよいのでしょうか?
ご教授いただきたいですが^^
0088デフォルトの名無しさん
NGNG0089デフォルトの名無しさん
NGNGカーニングがあるからすべての2文字の組み合わせで
やらなければいけない≒事実上不可能
0090デフォルトの名無しさん
NGNGRECONVERTSTRING 構造体を「どーにか使う」というところまで辿りついたのですが、
まったく使用例が見つからず、肝心の「どう使うのか」が分からず行き詰まってしまいました。
どなたか、お助けいただけますでしょうか。
0091デフォルトの名無しさん
NGNG標準出力(coutとか)に文字列とか吐き出すと
どう処理されるんですか?
0092デフォルトの名無しさん
NGNGSetCommMask( ,0)で
別スレッドでの受信待ちのWaitCommEventをキャンセルしているのですが、
処理が戻るまでに数秒〜数十秒かかってしまいます。
なにか、心当たりある方いらっしゃいますでしょうか?
0093素人ですが。
NGNG過去にVBA(Access97)で組んだGetSaveFileNameの記述なんですが、Windows 2000になってから
動かなくなりました。
OPENFILENAME構造体が拡張されてサイズが変わったらしいこと、拡張された部分まではわかったんですが、
構造体の拡張部分をVBでどのように宣言したらいいのかわかりません。
つーのも、pvReservedがvoid*らしいのですが、VBにはどうやら該当するデータ型が見当たらないのです。
(試しにVariantで宣言したらダメでした。)
うまく動かないのは、ここの宣言が間違っているからと睨んでいます。
TypeからEnd Typeまでの記述はどうすればいいのでしょうか??
0094デフォルトの名無しさん
NGNG標準出力に相当するハンドルが標準では存在しないため、
未オープンファイルへ書いた場合と同様にEBADFとなる。
0095デフォルトの名無しさん
NGNGlStructSizeの値が76に設定されていれば、古い定義のままで動くはずだ。
どうしても新しいのが使いたければLongで宣言しておけ。
0096デフォルトの名無しさん
NGNGttp://www.codeproject.com/useritems/toolband.asp
0097デフォルトの名無しさん
NGNG了解しました
ありがとー
0098デフォルトの名無しさん
NGNGカーニングは高さを変化さすのか?初耳だが。
0099デフォルトの名無しさん
NGNGその別スレッドの処理がものすごいことになってるのでは?
0100デフォルトの名無しさん
NGNGJava側で
ObjectOutputStream oout = new ObjectOutputStream(socket.getOutputStream());
PrintWriter out = new PrintWriter(new OutputStreamWriter(oout, "SJIS"));
out.println("hogehoge");
out.flush();
と送って来て、それを recv しているんですが、
文字化けしてしまいます。
unicode変換とかが必要なんでしょうか?
0101デフォルトの名無しさん
NGNGhttp://pc3.2ch.net/test/read.cgi/tech/1016065855/893
■ このスレッドは過去ログ倉庫に格納されています