■過去ログ置き場に戻る■ 1- 前250 次250 最新50


[memo] "9999999999_00.html#R20" という感じで、URLの最後に "#RレスNo" を追加すると幸せになれます。

Win32API質問箱 Build42
751 名前:デフォルトの名無しさん :2006/05/10(水) 20:38:55
自分はCで関数ゴチャゴチャ作ってたときにそれが出てきた。

>(NN*)ってキャストすれば無理やりには出来るんだけど

この手もあるのか。
2重ポインタで2次元配列を動的に作る時に
どの段階から作るかは難しいなあ

752 名前:デフォルトの名無しさん :2006/05/10(水) 21:03:44
>>748
前者です。
ちなみに、NetUserGetLocalGroupsってあるけど、これって
所属しているすべてのグループを取得するんだよね?
あくまで「今」実行したユーザがAdministratorとして実行したか
Userで実行したかを知りたいんだけど。

753 名前:デフォルトの名無しさん :2006/05/10(水) 21:16:45
>>752
ttp://faqs.org.ru/progr/windows/win32api.htm
の最初のQA。
2番目の look_at_token_method() が752の要求仕様をみたしてると思う。

754 名前:デフォルトの名無しさん :2006/05/10(水) 21:35:56
>>750
typedef NN[10] ArrayNN;とすれば
ArrayNN* s;
s = new ArrayNN[10];
これをtypedefを使わずに書くと>>749になる。


755 名前:747 :2006/05/10(水) 22:04:11
>>754
配列までtypedefってできるんだ・・・。
すげーわかりやすいです。どうも。全ての謎が解けました(?)

よく考えたらAPI関係無いじゃんってことでスレ違いですね。注意します。


みなさんくすこ

756 名前:デフォルトの名無しさん :2006/05/10(水) 22:09:24
>>753
thx!
明日会社で試してみます。

757 名前:デフォルトの名無しさん :2006/05/11(木) 00:14:07
あるレジストリの値に変化がおきたらコールバックしてくれる。
なんて、そんな仕組みあるもんでしょうか?タイマーで見張るしかないですか?

758 名前:デフォルトの名無しさん :2006/05/11(木) 00:37:47
これってトリビアになりませんか。

759 名前:デフォルトの名無しさん :2006/05/11(木) 01:25:24
よろしくお願いします。

760 名前:デフォルトの名無しさん :2006/05/11(木) 04:00:34
何らかを描画するときって全部WM_PAINTの中でやったほうがいい?
それともWM_PAINTをWindowsから送られるものとほぼ割りきって、要所要所で描画したほうがいい?
それともそれとももしかしてアプリケーションの性質による?

どうか教えて

761 名前:デフォルトの名無しさん :2006/05/11(木) 05:35:37
要所要所でWM_PAINTという考えはないのか

762 名前:デフォルトの名無しさん :2006/05/11(木) 06:13:35
>757
RegNotifyChangeKeyValue

763 名前:デフォルトの名無しさん :2006/05/11(木) 06:15:00
c言語でタスクトレイにアイコンを表示したいんですが、


//////////////ソースファイル
NOTIFYICONDATA ic;
HICON hic;

---省略----

hic=LoadIcon(GhInst, "IDA_A");

ic.cbSize=sizeof(NOTIFYICONDATA);
ic.hWnd=HND;
ic.uID=2;
ic.uFlags=NIF_MESSAGE|NIF_ICON|NIF_TIP;
ic.uCallbackMessage=5000;
ic.hIcon=LoadIcon(GhInst, "IDA_A");
strcpy(ic.szTip, "こんにちわ");

Shell_NotifyIcon(NIM_ADD ,&ic);


/////////リソーススクリプト
IDI_AICONDISCARDABLE"Icon1.ico"


↑なぜかアイコンは表示されず、トレイには空白が出現します。
カーソルあてるとツールチップは表示されるんですが、、、

どこが悪いのか教えてくださいませ


764 名前:763 :2006/05/11(木) 06:17:14
↑リソースのところ、スペースがぬけてますが気にしないでください

765 名前:デフォルトの名無しさん :2006/05/11(木) 06:31:50
リソースの名前が間違ってるんじゃないのか?

766 名前:763 :2006/05/11(木) 06:44:51
>>765
間違ってました(笑
それで、修正したんですが、それでもなぜか空白になってました。
アイコンハンドルをウィンドウクラスに設定したら、タスクバーには正常にアイコンが表示されるんですがね、、


767 名前:763 :2006/05/11(木) 08:13:38
すいません、、、

どうやら、リソースの名前が間違っていたのと、インスタンスハンドルをグローバル変数に代入する所で hInst=GhInst と逆に引数に代入していたようです(笑
プログラミング以前に注意力が足りないようです、、、

考えてくれた方、ありがとうございました。

768 名前:デフォルトの名無しさん :2006/05/11(木) 13:27:20
>>760
画面の内容は常にメモリビットマップに持っておく。

RPGでキャラが動いた時とか、すぐ描画したい時、
WM_PAINT以外(WM_KEYDONWとか)で、
まず、そのメモリビットマップに更新部分を描画し、
その後、それをウィンドウに描画する。

WM_PAINTが来た時は、
メモリビットマップをBeginPaintで描画する。

769 名前:デフォルトの名無しさん :2006/05/11(木) 14:05:10
いやゲームとか画像編集(表示)ソフトならそーだろうけどさ。

770 名前:760 :2006/05/11(木) 15:14:52
>>761
適当なリージョンを指定して描画ってか。
あー、そっか。盲目になってた。
そう言う方法もあるのか。

>>768
とりあえずhdcFlipとかhbmpFlipとかいう感じで似たようなことはやってるが、
WM_PAINT以外でメモリBMPに描画することは考えて無かったよ・・・。

>>769
残念ながらゲームでした。ゲ板行った方が良かったんかな。


どうやら教えてもらった方法で解決しそうです。
それにゲーム作る知識も広がった気がするし。

みんなありがとう!

771 名前:デフォルトの名無しさん :2006/05/11(木) 21:53:07
猫でもわかるプログラミング、
「Windows SDK編 第1部 第85章 MDIでメモ帳もどきを作る その2」
ttp://www.kumei.ne.jp/c_lang/sdk/sdk_85.htm
のところを勉強していました。

そしたら、WM_CREATEのところにある、
CreateWindowの最後の引数(LPVOID lpParam)が
「(LPSTR)&ccs」となっていました。
ここのところが、なぜLPSTRにキャストしているのかわかりません。
普通に考えたらLPVOIDにキャストするような気がするのですが・・・

わかる方がおられたら教えてください。
お願いします。

772 名前:デフォルトの名無しさん :2006/05/11(木) 21:58:44
たぶん意味はない。

773 名前:デフォルトの名無しさん :2006/05/11(木) 21:59:43
サイトの管理人に聞けばいいんじゃないかな

774 名前:771 :2006/05/11(木) 22:06:33
MDIのプログラムを作ろうとして、
コピペでソースを作っていたのですが、
ここは気にせず「(LPVOID)&ccs」にしても問題ないということですよね?
見た目では特に不具合なさそうに見えるので

775 名前:デフォルトの名無しさん :2006/05/11(木) 22:12:03
(LPVOID)にキャストする必要も無いな

776 名前:774 :2006/05/11(木) 22:29:23
>>775
わざわざ「(LPSTR)&ccs」としているので、
キャストするならどっちかっていうと「(LPVOID)&ccs」ではないのかと思ったのですが、
void型にキャストするのは時間の無駄ですよね。

777 名前:デフォルトの名無しさん :2006/05/11(木) 22:33:46
はっきり言ってどうでもいい

778 名前:776 :2006/05/11(木) 22:35:06
訂正
誤)void型にキャストするのは時間の無駄ですよね。
正)LPVOID型にキャストするのもやっぱし時間の無駄ですよね。

779 名前:778 :2006/05/11(木) 22:36:56
>>777
すみません、わざわざ・・・
ですのでとりあえず「&ccs」にしときます。
ありがとうございました。

780 名前:760 :2006/05/11(木) 23:42:34
型キャストは使い方を誤ると危険です、「出来る限り」使わないようにしましょう。

781 名前:デフォルトの名無しさん :2006/05/11(木) 23:46:38
JavaではそうだったけどCってキャスト無しじゃどうにもならんよね
サンプルもキャストまみれじゃん

782 名前:デフォルトの名無しさん :2006/05/11(木) 23:48:13
>>781
>出来る限り

783 名前:デフォルトの名無しさん :2006/05/11(木) 23:48:46
まぁWin32APIを使ってるとどうしてもね
Javaもgenerics導入まではダウンキャストしまくってたけど

784 名前:デフォルトの名無しさん :2006/05/11(木) 23:50:20
なぜ>>780>>760として登場した事のほうが気になる

785 名前:デフォルトの名無しさん :2006/05/11(木) 23:58:38
引数無し関数をいちいち void で宣言してる香具師いる?

ちなみに俺はVOID派

786 名前:デフォルトの名無しさん :2006/05/12(金) 00:01:20
はつみみです

787 名前:757 :2006/05/12(金) 00:19:36
>>762
ありがとうございました!
やっぱあったんだ…。

788 名前:デフォルトの名無しさん :2006/05/12(金) 00:54:28
VC6でmanifestを使ってXP風のUIを作ってて困っているのがタブコントロール
XP風だと上下方向に微妙にグラデーションが掛かってて、単にタブに子ダイアログを
被せると、背景色を似せても完全に溶け込んでくれない
何か定石見たいなものってある?
単にタブのグラデーションと同じ背景色のダイアログが作れれば問題ないんだが
グラデーションのかかったダイアログをわざわざ用意しなきゃいけないの?
つーか、ダイアログの背景にグラデーションを掛けるやり方なんて知らないし・・・・

789 名前:在宅バイトマニュアル :2006/05/12(金) 01:25:01
【情報暴露】

※1時間以内に1万円以上儲からなければ即返金!
(1万円というのはあくまで最低ライン)

★話題の在宅バイトマニュアル★
( 在宅ワーク人気NO.1 )

【参考】

在宅バイトマニュアル ←とネットで検索♪


790 名前:デフォルトの名無しさん :2006/05/12(金) 02:43:58
・・・1時間以内に1万円以上儲からなければ即返金って、
1時間で1万円分の仕事が出来なかったら、給料没収ってことじゃんw

791 名前:デフォルトの名無しさん :2006/05/12(金) 02:45:34
>(1万円というのはあくまで最低ライン)
ってのがポイントなのな。

792 名前:デフォルトの名無しさん :2006/05/12(金) 08:33:17
つーか、要は「バイトマニュアル」の販売が目的なんだろ。

793 名前:デフォルトの名無しさん :2006/05/12(金) 11:22:15
すみません、ちょっとAPIとか関係ない質問かもしれませんが
データマトリックス方式の二次元バーコードを作るソースはどこで手にはいりますか?
または、どこで聞けばいいでしょうか?


794 名前:デフォルトの名無しさん :2006/05/12(金) 11:51:16
>>793
ttp://www.google.co.jp/

795 名前:デフォルトの名無しさん :2006/05/12(金) 11:51:45 ?#
>>793
http://www.nikko-pb.co.jp/technoplus/ba/vendor_ba01.html

796 名前:デフォルトの名無しさん :2006/05/12(金) 16:03:32
LoadImageでLR_CREATEDIBSECTIONを指定した場合に出来るオブジェクトのbppはなにで決まるんでしょうか?
32bppに固定したいんですができますか?

797 名前:デフォルトの名無しさん :2006/05/12(金) 20:44:51
>>796
それをDCに乗せる時に考えれば?

798 名前:デフォルトの名無しさん :2006/05/12(金) 22:20:41
VC++でプログラムしている学生です。
マインスイーパの画面を色を読み取って、
それをプログラムの中で行列にしたいのですが、
どういったコマンドを使えば良いのでしょうか?
・画面の読み取り方
・画像から行列データの変換の仕方など
教えてください。


799 名前:デフォルトの名無しさん :2006/05/12(金) 22:43:07
誰とは言わんがトップページを ttp にしてる超馬鹿がいるな・・・
今時直リンがどうのと言うアナクロニズムを超越したシュールな笑いを提供してくれるのはいいが
それは他でやってくれ

800 名前:デフォルトの名無しさん :2006/05/12(金) 23:19:26
かなり初歩的な事だと思うのですが質問さしてくださ
例えば,ウィンドウクラス登録で下の関数を使うとして

ATOM 関数名(HINSTANCE hInst)のhInst には WinMainのhCurInstを入れ

ATOM 関数名(HINSTANCE hInst){
    WNDCLASSEX wc;
    wc.cbSize = (UINT)sizeof(WNDCLASSEX);
        ・
        ・
    wc.hInstance = hInst;
        ・
        ・
    return (RegisterClassEx(&wc));
}
で、RegisterClassEx()の戻り値がATOMなので
分かるのですが、他にも自作関数でATOMを使う
場合があるのでしょうか
ヘッダを見ると
typedef unsigned short WORD;
typedef WORD ATOM;
となってますが、利点というか、この時にATOM型を使う
という区別は、返す値の型に依存することになるのでしょうか
あと、ATOM型で変数を宣言するなんて事はあるんでしょうか
HICON型やHCURSOR型や(HBRUSH型などは
なんとなく理解できてるつもりですが、ATOM型に関しては
わからないけど使ってるという状態で
どなたか説明して頂けないでしょうか。
お願いします。

    

801 名前:デフォルトの名無しさん :2006/05/13(土) 00:08:45
Shell_NotifyIconについてなんですが
http://yokohama.cool.ne.jp/chokuto/urawaza/api/Shell_NotifyIcon.html
第1引数の dwMessage で、NIM_SETFOCUS の解説のところ。
>タスクバー通知エリアにフォーカスを返します。タスクバーアイコンは、
>ユーザーインターフェース操作が完了したときにこのメッセージを送るべきです。
>例えば、タスクバーアイコンにショートカットメニューを表示して、ユーザーが
>ESC キーを押してキャンセルしたときに、このメッセージを送信してフォーカスを
>タスクバー通知エリアに返すべきです。
このあたりがどうもよくわかりません。どんなタイミングでこれを発行すべきなのか・・・?


802 名前:デフォルトの名無しさん :2006/05/13(土) 01:02:12
>>800
ATOMはどちらかというとローカルアトム・グローバルアトムでお世話になる。
RegisterClass(Ex)などが返すクラスアトムとは混用できないので注意。

803 名前:デフォルトの名無しさん :2006/05/13(土) 06:34:53
そういう事じゃなくて・・・

アセンブラでプログラミングした場合に、
1. システムが何か使えるパラメータを積んでくれているのかどうか
2. ExitProcessでなくretした場合にret 4とかret 8とかでなくretでいいのかどうか
という事です。

ちなみにレスが遅いのはアク禁で代行してもらってるからです。なのですぐにレス書けないですがよろしくお願いします。

804 名前:デフォルトの名無しさん :2006/05/13(土) 08:53:58
入門書で勉強する
サンプルプログラムを参考にする
それでわからなかったら検索する
それでもわからなかったら掲示板で質問する

805 名前:デフォルトの名無しさん :2006/05/13(土) 10:46:34
>>803
AdvancedWindowsに書いてあるが、
Windowsはエントリポイントを引数なしで呼んでいる。
だから、何も積まれていないしretで良い。

806 名前:デフォルトの名無しさん :2006/05/13(土) 15:15:18
>>799
いちいち気にするオマエの方がどうかと思うが・・
気になるなら専ブラ使うなり、フィルタ掛けるなりしろよ。
それよりも関係ないことでageるな。

807 名前:デフォルトの名無しさん :2006/05/13(土) 15:30:06
>>806
ageかどうかこそ関係あるまい
直リンと同レベルの都市伝説かっこわりー

808 名前:デフォルトの名無しさん :2006/05/13(土) 15:36:50
わからないなら無理しなくていいぞ
「よくわからないが名前欄に"sage"て書いて置こう」
と覚えておこう!

809 名前:デフォルトの名無しさん :2006/05/13(土) 16:35:36
いやきっと、sage不要教条主義なんだよ。

810 名前:デフォルトの名無しさん :2006/05/13(土) 19:16:06
unixみたいにrootでパスワードなしに任意のユーザにsuしたいのですが
該当するAPIはありませんか?

811 名前:デフォルトの名無しさん :2006/05/13(土) 20:01:48
Administratorから「パスワード無しでパスのついてある任意のユーザにsu」なら不可能。

812 名前:デフォルトの名無しさん :2006/05/13(土) 20:06:22
無理すか。不便だ。

813 名前:デフォルトの名無しさん :2006/05/13(土) 20:10:56
つーか、Windowsそれ自体だって、たとえば、
サービスをLocalSystem以外の権限で動かすには、
ユーザ名とパスワードの入力が要る。
(サービスのログオン設定)

814 名前:デフォルトの名無しさん :2006/05/13(土) 20:13:13
LV.1 クラッカーが経験値稼ぎ中か・・・初々しくていいねw

815 名前:・∀・)っ-○◎● ◆toBASh.... :2006/05/13(土) 20:13:45
>>506
60キーの英語キーボードです。

816 名前:デフォルトの名無しさん :2006/05/13(土) 20:20:25
>>506
さあね、捨て値で叩き売りしてたやつ・・・ ぱっと見、109かな? それだけ
スペースが左に寄りすぎてなくて電源キーがあればとりあえず何でもいい
@が2のところにあるのでも特に違和感はないし

817 名前:デフォルトの名無しさん :2006/05/13(土) 21:00:17
>>506
英語キーボードのiBook。
Macは英語配列の方がキーバインド上使いやすい。

818 名前:デフォルトの名無しさん :2006/05/13(土) 21:47:46
すれ違い

819 名前:796 :2006/05/13(土) 23:56:51
>>797
CreateBitmapなどで32bppのを作って、いったんLoadImageしたのを入れればどうかってこと?
LoadImageで読み込んだ時点で16bppや24bppだとデータの劣化があるわけで
そのあとでいくら32bppに変換しても元のデータと違うのでまずいのですよ。
それなのでLoadImageの時点で確実に32bppで読めるようにできないのか聞きました。

820 名前:796 :2006/05/13(土) 23:58:30
×16bppや24bppだと
○16bppだと

821 名前:デフォルトの名無しさん :2006/05/14(日) 00:05:44
>>819
心配しなくてもソース側 BITMAPFILE の BPP で読まれます。

822 名前:デフォルトの名無しさん :2006/05/14(日) 01:56:44
MAKEPOINTSがあってMAKEPOINTがないことに疑問を持ち
とりあえず作ってみようと思いますた。
とりあえずマクロで、
#define MAKEPOINT(lParam) ((POINT){((lParam & 65535),(lParam >> 16)}))
としました。
しかし・・・
式の構文エラーと出ます。
INT型などの場合は#define aa(i) ((INT)i)などは出来ます。
構造体でこういったことをするにはどうしたらいいのでしょうか?

823 名前:デフォルトの名無しさん :2006/05/14(日) 02:09:05
>>822
マクロではそれは難しいです。やめた方が良いでしょう。
C++ なら inline 関数でほぼ同じことができるので、そちらを使いましょう。

824 名前:デフォルトの名無しさん :2006/05/14(日) 02:13:31
>>822
コンパイラがC99対応の必要あり。

http://seclan.dll.jp/c99d/c99d07.htm#dt19991101


825 名前:デフォルトの名無しさん :2006/05/14(日) 02:20:55
>>823
えっ?
そんなに難しい」のですか?
これのために色々考えてたのですが・・・
それではアドレスが指す場所に直で計算した数値を無理やり突っ込むのはどうでしょうか?
そういうのは無理でしょうか?(そういや環境によって構造体サイズが違うのか・・・)

826 名前:デフォルトの名無しさん :2006/05/14(日) 02:26:20
>>824
inline関数のことでしょうか?
それにしても、Cで使えるようになっっていたのですね
gccしかないものだと・・・

827 名前:デフォルトの名無しさん :2006/05/14(日) 02:29:26
建前、Win32API は C でいいことになってるけど、
現実問題としてやっぱ C++ でないときついことが多いな

828 名前:デフォルトの名無しさん :2006/05/14(日) 02:40:55
>>827
そうですね、そろそろ私もC++もするべきかなって思ってます。
やっぱしStringがないのが一番堪える!

829 名前:デフォルトの名無しさん :2006/05/14(日) 03:39:22
CString は MFC でも今や忌み子だけどな

830 名前:デフォルトの名無しさん :2006/05/14(日) 06:22:14
このスレは週末も連休も関係無くスレが伸びているな。
関心関心。

831 名前:デフォルトの名無しさん :2006/05/14(日) 12:23:31
FindWindowで得られたウィンドウハンドルを使って、そのプロセスのハンドルを取得
することってできますか?

832 名前:デフォルトの名無しさん :2006/05/14(日) 12:40:14
>>831
GetWindowThreadProcessIDとOpenProcessを組み合わせればいいと思う。

833 名前:831 :2006/05/14(日) 12:49:49
>>832 おお!ありがとうございました!

834 名前:デフォルトの名無しさん :2006/05/14(日) 15:47:00
>>831-833
Vista だと UIPI 関係で失敗する場合があるんじゃなかったっけ?
自分よりも相手の権限のほうが上位だった場合に。

835 名前:デフォルトの名無しさん :2006/05/14(日) 19:05:46
突然、Vistaの話に飛んだね。

836 名前:デフォルトの名無しさん :2006/05/14(日) 20:04:59
WinXP SP2のIEで、ダウンロードが自動的に始まるページへ移動すると

"セキュリティ保護のため・・・"

と表示され、自動的にダウンロードが行われないようになっていますが、
IWebBrowserを使用したIEコンポーネントで同じような機能を実装するには
どうすれば良いのでしょうか?

よろしくお願いします。

837 名前:デフォルトの名無しさん :2006/05/14(日) 20:48:20
>>836
IEコンポーネントを使い倒すスレ Ver.2
http://pc8.2ch.net/test/read.cgi/tech/1145189322/

838 名前:デフォルトの名無しさん :2006/05/14(日) 21:44:08
>>835
すまんね。Vista で動かすつもりがないんならいいんだけどさ・・・

839 名前:デフォルトの名無しさん :2006/05/14(日) 23:04:25
>>834
エラー処理をきちんと組んで突然落ちたりしなければ、大抵それで十分だと思う。

840 名前:デフォルトの名無しさん :2006/05/15(月) 03:13:09
98とVistaは何が違うんですか

841 名前:デフォルトの名無しさん :2006/05/15(月) 07:49:25
>>834
その手の話はここに詳しいけど。

ttp://blogs.msdn.com/nickkramer/archive/2006/04/15/576758.aspx

より権限の高いHWNDから読むことは出来るが、変更は出来ないとか。
(たとえばGetXXX()はできるが、SetXXX()はできない、などと考えていいのかな。)
というかSendInput()を多用しているプログラムが問題になりそう。
まあ、下位互換性を考慮して、抜け道を用意するんだろうけど。
少なくともユーザが権限を指定できるはず。


>>839
下位互換性の問題から、セキュリティ上の問題で失敗しても、エラーが戻ってくることはない。


842 名前:デフォルトの名無しさん :2006/05/15(月) 10:53:32
IPアドレスを指定してNetBIOS名を取得するようなWin32APIって、ご存じないですか?
どなたかご教授願います。
よろしくお願いします。

843 名前:デフォルトの名無しさん :2006/05/15(月) 11:32:59
>>842
WinSock系でgethostbyaddr関数。


844 名前:デフォルトの名無しさん :2006/05/15(月) 15:38:41
モデム着信を検出し、そのまま、PPP 接続させたいのです。
AT コマンドの ATA でオンフックさせればよいのかなと思うのですが…。
RasDial の電話番号指定を "A" だけにすればよろしいのでしょうか?
ご存知の方、ご教授お願いいたします。




845 名前:デフォルトの名無しさん :2006/05/15(月) 15:48:43
【質問内容】
NICとNICに設定しているDNSサーバの関係付けを知るためのAPIって有りませんか?

【やりたいこと】
NICの設定をする「インターネットプロトコル(TCP/IP)のプロパティ」みたいな
ダイアログボックスを作りたい。

【ひっかかっている点】
NICとNICに設定しているIPアドレスetcの関係付けはGetAdaptersInfo()で
知ることができるのは理解しています。
DNSサーバを知る手段にGetNetworkParams()が有ることも理解しています。
しかしこの2つのAPIだけでは、NICが複数枚あった場合にどのNICと
どのDNSとが関係しているのかが不明なので、ここでの質問に及んだというわけです。

よろしくおながいします。

846 名前:デフォルトの名無しさん :2006/05/15(月) 18:27:13
二次元バーコードでデータマトリックス方式のソースを公開してるURLを教えてください


847 名前:デフォルトの名無しさん :2006/05/15(月) 18:34:21
WIN32APIと関係ない。

848 名前:デフォルトの名無しさん :2006/05/15(月) 18:58:58
>845
なんでNICとDNSが関連付くんだ?単にWindowsの標準設定ダイアログが
そうなってるだけだろ?

849 名前:845 :2006/05/15(月) 20:20:50
>>848
そういえば、そうですね(^^;)。設定のダイアログと同じようなものを作ろうとしてたので
NICとDNSの設定が対になっていると思い込んでました。
確かにFreeBSDなんかNICとIPアドレスの設定は/etc/rc.confにして
DNSの設定は/etc/resolv.confにするもんなぁ…

ありがとうございました。

850 名前:デフォルトの名無しさん :2006/05/15(月) 20:38:06
>>849
わんわんわん、わん
(それでも納得いかないなら)

わんわわんわん、わんわわんわんわん わんわんわん
(WMIのWin32_NetworkAdapter,Win32_NetworkAdapterConfigurationで情報を取得するってのがある)

わんわん

851 名前:デフォルトの名無しさん :2006/05/15(月) 21:21:28
流行ってそうだから
俺もわん。

852 名前:デフォルトの名無しさん :2006/05/15(月) 21:22:26
デフォルトゲートウェイはNICごとですよね?

853 名前:デフォルトの名無しさん :2006/05/15(月) 21:30:24
わんわわん

854 名前:デフォルトの名無しさん :2006/05/15(月) 22:08:29
うわあん

855 名前:デフォルトの名無しさん :2006/05/15(月) 22:54:07
デフォルトゲートウエイもその定義からして、
PCに1つあれば十分

856 名前:デフォルトの名無しさん :2006/05/15(月) 22:58:53
>>841
> (たとえばGetXXX()はできるが、SetXXX()はできない、などと考えていいのかな。)
ああ、なるほど。じゃあ、FindWindow くらいなら問題ないのかな。
…と思ったらそのブログには要注意 API として挙げられてるなあ。
わけわからん。

> まあ、下位互換性を考慮して、抜け道を用意するんだろうけど。
> 少なくともユーザが権限を指定できるはず。
XP のときのように個々のアプリごとに互換性ダイアログが用意されている。
問題が起きたらこれを使って権限を上げとけ、ということらしい。

857 名前:デフォルトの名無しさん :2006/05/15(月) 23:04:30
>>850-854
    ∧__∧
   / -  - \
   |  ▼   |
  /|=(_人_)= | < 日本語でおk
 / ヽ、____ノ
`Jr  ___ ノ
 ∪⌒∪   ∪


858 名前:デフォルトの名無しさん :2006/05/15(月) 23:29:17
NT4.0でSE_TCB_NAME特権をゲットする方法誰か知りませんか?
LogonUser()を使いたいんでう。

859 名前:デフォルトの名無しさん :2006/05/15(月) 23:37:33
流行ってそうだから
俺もでう。

860 名前:デフォルトの名無しさん :2006/05/15(月) 23:59:27
GetCurrentProcessId() ってDWORDを返すようですが、
実際に使われるプロセスIDの範囲って決まってたりするんでしょうか?

861 名前:デフォルトの名無しさん :2006/05/16(火) 00:18:54
いかなる仮定も置くべきではないことは確かだな。

862 名前:デフォルトの名無しさん :2006/05/16(火) 05:19:57
>>860
無限ループでプロセス作ってみたら?

863 名前:デフォルトの名無しさん :2006/05/16(火) 09:23:33
すいませんくずたれな質問さして下さい
スクリーンセーバーを猫の本みながら作ってたんですがリンカでエラー
がでてしまいます。
どうすれば良いのでしょうか。教えて下さい。
#include <windows.h>
#include <scrnsave.h>
#include "resource.h"
#pragma comment(lib, "scrnsave.lib")
#pragma comment(lib, "comctl32.lib")
#define ID_TIME 100

LRESULT WINAPI ScreenSaverProcW(HWND hWnd, UINT msg,WPARAM wParam, LPARAM lParam)
{
        ・
        ・
        ・
return DefScreenSaverProc(hWnd, msg, wParam, lParam);
}

BOOL WINAPI ScreenSaverConfigureDialog(HWND hDlg, UINT msg, WPARAM wParam, LPARAM lParam)
{
return TRUE;
}
BOOL WINAPI RegisterDialogClasses(HANDLE hInst)
{
return TRUE;
}
のようなソースで
scrnsave.lib(scrnsave.obj) : error LNK2019: 未解決の外部シンボル _ScreenSaverProc@16 が関数
_RealScreenSaverProc@16 で参照されました
となります。
何が足りないのかわからないです。すいませんが、教えて下さい

864 名前:デフォルトの名無しさん :2006/05/16(火) 09:39:35
>>863
よくわからんけどなんでScreenSaverProcWってWついてんの?

865 名前:デフォルトの名無しさん :2006/05/16(火) 09:43:11
>>864
実はそれが正解かもわん

866 名前:デフォルトの名無しさん :2006/05/16(火) 09:43:15

あなたのソースをコピペして実行してみた結果です。


ss.cpp
リンク中...
scrnsave.lib(scrnsave.obj) : error LNK2001: 外部シンボル "_ScreenSaverProc@16" は未解決です
Release/ss.exe : fatal error LNK1120: 外部参照 1 が未解決です。
link.exe の実行エラー

ss.exe - エラー 2、警告 0



867 名前:デフォルトの名無しさん :2006/05/16(火) 10:49:04
>>864
scrnsave.h 見た。
実体は UNICODE で分岐してるね ScreenSaverProc/ScreenSaverProcW

# コード記述時は UNICODE に関わらず ScreenSaverProc を要求しているようだけど

868 名前:デフォルトの名無しさん :2006/05/16(火) 11:14:53
RealScreenSaverProc()はどこにある?


869 名前:デフォルトの名無しさん :2006/05/16(火) 11:19:57
#define UNICODE

//#pragma comment(lib, "scrnsave.lib")
#pragma comment(lib, "scrnsavw.lib")

通った

870 名前:デフォルトの名無しさん :2006/05/16(火) 11:21:17
#define UNICODE



#include <windows.h>
#include <scrnsave.h>

より前に必要

/D でも可?

871 名前:デフォルトの名無しさん :2006/05/16(火) 11:27:09
#define UNICODE

#include <windows.h>
#include <scrnsave.h>
#include "resource.h"

#pragma comment(lib, "scrnsavw.lib")
#pragma comment(lib, "comctl32.lib")

#define ID_TIME 100

LRESULT WINAPI ScreenSaverProcW(HWND hWnd, UINT msg,WPARAM wParam, LPARAM lParam)
{
        ・
        ・
        ・
return DefScreenSaverProc(hWnd, msg, wParam, lParam);
}

BOOL WINAPI ScreenSaverConfigureDialog(HWND hDlg, UINT msg, WPARAM wParam, LPARAM lParam)
{
return TRUE;
}
BOOL WINAPI RegisterDialogClasses(HANDLE hInst)
{
return TRUE;
}

これでFA?

872 名前:863 :2006/05/16(火) 12:12:48
VS2005std
でUNICODEでビルドしてるので
>>869さんの
#pragma comment(lib, "scrnsavw.lib") ←
#pragma comment(lib, "comctl32.lib")
でいけました
ありがとうございました
他にもwになってるのがおおいのかな

873 名前:デフォルトの名無しさん :2006/05/16(火) 12:14:55
あっ、そうそう、ワイド文字を使いたい場合は
#define UNICODE
#define _UNICODE
と2つ書くのでおk?

874 名前:デフォルトの名無しさん :2006/05/16(火) 12:21:34
>>872

>VS2005std
>でUNICODEでビルドしてるので

それを最初に書かんかいゴルア

875 名前:デフォルトの名無しさん :2006/05/16(火) 12:24:02
>>873
そです

876 名前:デフォルトの名無しさん :2006/05/16(火) 14:53:59
少し質問させてください。
キーボードフックしてあるアプリケーションに別のアプリケーションから、
PostMessageでWM_KEYDOWN/UPを投げてもフックプロージャが呼ばれません。
これをどうにかする良い知恵ありませんか?


877 名前:デフォルトの名無しさん :2006/05/16(火) 14:59:00
↑ X:プロージャ O:プロシージャ

878 名前:デフォルトの名無しさん :2006/05/16(火) 16:21:01
そんな突っ込みはいりまsんしんでください

879 名前:デフォルトの名無しさん :2006/05/16(火) 16:26:41
↑ X:いりまsん O:いりません

880 名前:デフォルトの名無しさん :2006/05/16(火) 16:47:53
他のプロセスのウィンドウにキーメッセージを送りたいんですけど、いろいろ試しても成功しません。
どなたかご教授ください。

↓のようなc言語ソースなんですが、どこが悪いんでしょうか?

WINHND=FindWindow(NULL,"メモ張");
PostMessageA(WINHND,WM_RBUTTONDOWN ,0,0x012C012C);
PostMessageA(WINHND,WM_RBUTTONUP,0,0x012C012C);

正常ならメモ張の300x300の所に右クリメニューが出るはずなんですが・・

881 名前:デフォルトの名無しさん :2006/05/16(火) 16:56:19
Windowsについてくる、メモ帳にメッセージ送ろうとしてるわけではないよね?

882 名前:デフォルトの名無しさん :2006/05/16(火) 17:00:40
>>881
>Windowsについてくる、メモ帳にメッセージ送ろうとしてるわけではないよね?

そうです。無理なんですか?
無理だとしたら、メモ張だから(windowsについて来るアプリだから)という事ですかね?

883 名前:880 :2006/05/16(火) 17:10:02
>>882も私です。

そもそも、同じプロセス内でしかメッセージって送れないんでしょうか?

884 名前:デフォルトの名無しさん :2006/05/16(火) 17:16:05
んなことはない。
880のコードではメモ帳の親ウィンドウにメッセージを送っているが、
エディタ部分(おそらく標準のエディットコントロール)の方に送ってやらないとダメなんじゃないか。

885 名前:デフォルトの名無しさん :2006/05/16(火) 17:19:54
あとさぁ
×メモ張
○メモ帳

886 名前:デフォルトの名無しさん :2006/05/16(火) 17:27:26
HWND hNotepad, hEdit;

hNotepad = FindWindow("Notepad", NULL);
hEdit = FindWindowEx(hNotepad, NULL, "Edit", NULL);
PostMessageA(hEdit, WM_RBUTTONDOWN ,0, 0x012C012C);
PostMessageA(hEdit, WM_RBUTTONUP, 0, 0x012C012C);

887 名前:デフォルトの名無しさん :2006/05/16(火) 17:28:11
>>884
SPY++ でみた。
エディタ部分は標準のEDITコントロールだーね(サブクラス化されてるかはワカランけど)

888 名前:デフォルトの名無しさん :2006/05/16(火) 17:45:35
例のソースに入ってた

889 名前:880 :2006/05/16(火) 18:15:18
できました!ありがとうございます。
なるほど。表示されてるウィンドウに送ればいいってもんじゃないんですね。


890 名前:デフォルトの名無しさん :2006/05/16(火) 21:56:50
サブクラス化について質問があります。
typedef struct 構造体
{
WNDPROC fnSubProc;//親のプロシージャ
・・・
}構造体;
と前もってこの構造体を作っていました。

サブクラス化したときの戻り値である親ウィンドウのアドレスを
構造体 *a;
a = (構造体*)malloc(sizeof(構造体));
SetWindowLong(hWnd,GWL_USERDATA,a);
a->fnSubProc = (WNDPROC)SetWindowLong(hWnd,GWL_WNDPROC,(LONG)SubProc);
といったふうにこの構造体内に入れました。

そして領域の開放は、SubProc内のWM_DESTROYにて、
構造体 *b;
b = (MYDATA *)GetWindowLong(hWnd,GWL_USERDATA);
free(b);
return 0;
と開放処理を入れました。

これでとりあえずは動いていました・・・、終了処理以外。
エラーの原因は、WM_DESTROYした後にもSubProcが来ていて、
既に消した構造体を参照しようとしているからだと思うのですが
WM_DESTROY以降に来るメッセージがわかりません。
それにこの方法自体してはいけないのかもわかりません。
長くなりましたが、どなたか教えてもらえないでしょうか。

891 名前:デフォルトの名無しさん :2006/05/16(火) 22:01:46
>>890
最後に来るメッセージは WM_NCDESTROY 。
ドキュメントのどっかに載ってます。

あと将来のことも考えて、
LongPtr とか GetWindowLongPtr の使用も考えてください。

892 名前:デフォルトの名無しさん :2006/05/16(火) 22:30:08
>>891
はやい書き込み、ありがとうございます。
WM_DESTROYをWM_NCDESTROYに変えたらエラーが出ませんでした。
ほんとうにありがとうございました。


893 名前:デフォルトの名無しさん :2006/05/16(火) 23:01:20
質問です。
LPCWSTRでも使えるWriteFileみたいな関数はないでしょうか?

894 名前:デフォルトの名無しさん :2006/05/16(火) 23:05:00
WriteFileで使えるだろ。

895 名前:デフォルトの名無しさん :2006/05/17(水) 01:35:20
一瞬WriteFileW()が浮かんでしまった漏れがいる…orz

896 名前:デフォルトの名無しさん :2006/05/17(水) 02:24:49
Writeした結果がどうなって欲しいのかわかんないと、どうにも。

897 名前:デフォルトの名無しさん :2006/05/17(水) 03:17:39
猫でものプログラムをUNICODEバージョンに変えようと思いました。
http://www.kumei.ne.jp/c_lang/sdk/sdk_00.htm←このプログラム
ですので、
そのプログラムの先頭に
#define UNICODE
#define _UNICODE
をつけ、
「char szClassNme[] = "ウィンドウクラス・ネーム";」などを
「LPCTSTR szClassNme = TEXT("ウィンドウクラス・ネーム");」
に変更して実行しました。
ですが結果なのですが
if (!RegisterClass(&myProg)) return FALSE;
のところで処理を抜けているみたいです(MessageBoxで確認)。
なにがだめ駄目だったのかわかりません。
どなたか教えてもらえないでしょうか?

898 名前:デフォルトの名無しさん :2006/05/17(水) 03:42:34
>>897
GetLastErrorは?

899 名前:デフォルトの名無しさん :2006/05/17(水) 05:51:34
普通に動くサンプルを元にした方がいい。
動かないものを動くようにするのは初心者には無理

900 名前:デフォルトの名無しさん :2006/05/17(水) 12:06:47
VisualSutdioのウィーザードでアプリを作ると素っ気ないアプリが出来てしまうんですけど、
できれば、Picasa2みたいなイカス外観とか、スキンのような仕組みを取り入れないんですけど、
フレームワークのような物があるんでしょうか?
何か情報ありましたら教えてください、よろしくお願いします。


901 名前:デフォルトの名無しさん :2006/05/17(水) 12:27:47
>>892
後始末なら サブクラス化前の WNDPROC を書き戻した方が良くないかい?

902 名前:897 :2006/05/17(水) 14:17:53
>>898
UNICODEにしたらメッセージボックスの文字列がおかしくなっていました。
ですのでわかりませんでした。
>>899
UNICODEでなかったら動きました。

903 名前:デフォルトの名無しさん :2006/05/17(水) 14:33:55
>>897
プログラムの先頭って、具体的にどこ?
ヘッダファイルの宣言より上だよね?

904 名前:デフォルトの名無しさん :2006/05/17(水) 14:37:52
>>902
OS が Windows 98 とか ME なんじゃないでしょうか。

905 名前:デフォルトの名無しさん :2006/05/17(水) 14:38:42
>>903
ヘッダファイルより下だと、ANSIに切り替わるだけじゃない?

906 名前:デフォルトの名無しさん :2006/05/17(水) 14:40:44
>>905
ANSIコードにしときならが、pragma で WIDE側 lib 連結してたら ワケワカ状態になる可能性が

907 名前:903 :2006/05/17(水) 14:41:08
>>905
そりゃそーだw

漏れが悪かった

908 名前:デフォルトの名無しさん :2006/05/17(水) 14:48:26
>>906
WinAPIはdefineで切り替えてるから問題なくね?


909 名前:デフォルトの名無しさん :2006/05/17(水) 14:52:41
>>908
あ API は シンボル名 違うから、衝突なんておきないか。
# 元質問のリンカエラーがそうだったし

910 名前:デフォルトの名無しさん :2006/05/17(水) 14:55:58
>>902
どういう環境で書いてるのかシランが、
デバッガの使い方を覚えるか、デバッガを使える環境に移行することを勧める

911 名前:デフォルトの名無しさん :2006/05/17(水) 15:01:08
喪前らこんな20行程度のコードも机上デバグできないのかよ・・・ビクリしますた。
帰ってきたエラーコードは 0x00000078 、原因は 897 が WIndows98/ME/95を
使っているから。以上でオシマイ。

912 名前:897 :2006/05/17(水) 15:02:28
>>903
ヘッダファイルの宣言より上です。
>>904
もしかして98系だと無理なのですか?
今、諸都合により98系です。

913 名前:デフォルトの名無しさん :2006/05/17(水) 15:05:52
>>911
すまねぇ SDK見りゃ一発だわな
RegisterClass
 Unicode: Implemented as Unicode and ANSI versions on Windows NT/2000.

914 名前:897 :2006/05/17(水) 15:16:20
>>904,911,913
すんません、自分がばかでした。
XPばかりだったので忘れてたみたいです。
つきあってくれてありがとうございました。

915 名前:デフォルトの名無しさん :2006/05/17(水) 16:49:12
>>914
Microsoft Layer for Unicodeを使えば9xでも一応Unicode版APIが使える。

916 名前:デフォルトの名無しさん :2006/05/17(水) 20:23:36
ツールバー(BTNS_CHECKのボタンがあるもの)にて
ツールバーのチェック状態を得るにはどうしたらいいのでしょうか?

917 名前:デフォルトの名無しさん :2006/05/17(水) 20:37:00
TB_GETSTATE

918 名前:デフォルトの名無しさん :2006/05/17(水) 20:44:58
ウニコードとか意味不明だぜ

919 名前:デフォルトの名無しさん :2006/05/17(水) 22:05:26
釣りだろ

920 名前:デフォルトの名無しさん :2006/05/18(木) 01:18:24
ウニコードも知らんのか

921 名前:デフォルトの名無しさん :2006/05/18(木) 01:19:21
僕の肛門もウニコードに置き換えられそうです。

922 名前:872 :2006/05/18(木) 02:38:32
>>874さん
すんません

>>897さん
猫でもの本を買った俺からの意見
「なんでこんなにグローバルで変数宣言してんだ」
「なんで、こんなに変数を初期化せずに使ってるんだ」
「この変数は関数内だからグローバルじゃなくてstaticで関数内で宣言すれば良いじゃねぇか」
「なんで、こんなにAPIについて説明が中途半端なんだ」
「おいおい、このAPIについての説明はこれだけ?」
「初心者の俺みたいな奴に、EnableMenuItem()を初めて説明するときに
フラグをMF_BYCOMMANDで指定させるか?」
「リソースの名前を""で囲めば楽ですよ、ってMAKEINTERESOURCE()使った方がもっと楽じゃねーかよ」
「なんで、毎回ウィンドウクラスの登録とCreateWindowするとこだけは律儀に
書いてんだよ、で、前の章では使ってない関数とかをなんで太字にしたりしなかったり」
「この変数どこで宣言してんだよ・・・・あ、またグローバルで宣言してるよ」
「あれ、本通り打ち込んだのに動かない、あれこの関数宣言してるのに使ってない
・・・って、急に別ページにのこりの関数書くなよ」
「ライブラリを#pragma command(lib, "〜")する仕方の説明なしかよ(この板で
教えてもらったよ)」
「別に拡張子で判断されないのは分かるけど、せめて.cppはやめようよ」
「なんだか、この本のプログラムの書き方を身につけて良いのだろうか・・・・」
と、いう過程によりくずたれな俺がリファレンス本を買いプログラムの書き方について
考えさせられ、自発的に向上をうながしてくれる良い本だよ。
一度買ってみると良い。だんだんいらついてくるきてやる気薄れてくるから。

ただ、俺は一応全部UNICODE変えて書いてて
世の流れもそうなっていくらしいからそうしてるけど、ANSIの方が良いのかな
くずたれの俺にはわからない。


923 名前:デフォルトの名無しさん :2006/05/18(木) 02:42:05
>>922
NTカーネルの内部は、すべてUTF-16になっている。
いまのANSI版のAPIは、すべてWide版のラッパに過ぎない。
当然、ANSI版のAPIを使うと、文字コード変換のオーバーヘッドが生じる。


MSもUNICODEに移行したがっているけど、過去との互換性の問題で、なかなかうまくいかない。
今までに書かれ、今もなお動いているコードが多すぎるから。

やっと、VCから、デフォルトの文字コードがUNICODEになったけどね。
本格的に移行するには、あと5年から10年はかかるのかな。

924 名前:デフォルトの名無しさん :2006/05/18(木) 05:52:16
>>922
「猫でも〜」はWebで全部見られるから本買う気が起きない


925 名前:デフォルトの名無しさん :2006/05/18(木) 06:16:53
webのやつがそのまま本になったわけじゃないだろうけど
書いた本人は同じだからな

926 名前:デフォルトの名無しさん :2006/05/18(木) 07:54:59
猫でもにはいろいろ(今となっては)不満もあるが、10年前にはあれほどには
まとまったものはなかった。オレには有り難かった。昔はメールで聞くと教えて
くれた。あれを最新版にするため見直すってのは、マ大変だな。

世話になって感謝の気があるならたまにアクセスしてアクセス回数を増やして
礼の代わりにしたがいい。いずれは陳腐化して消えるだろうが、出来るだけ
残ってほしいと思う。

927 名前:デフォルトの名無しさん :2006/05/18(木) 07:56:43
感謝する気があるのなら、寧ろ早く消えてもらって次の誰かの登場を期待すべくアクセスしない方が医院で内科医。

928 名前:デフォルトの名無しさん :2006/05/18(木) 08:20:31
猫だけで勉強するのは絶対不可能
初心者の場合は特にそう
ただサンプルがいっぱいあるから使える。

929 名前:900ですが、 :2006/05/18(木) 12:16:36
ここじゃレス付きそうもないですかね?
何方かスレ紹介してくれませんでしょうか?


930 名前:デフォルトの名無しさん :2006/05/18(木) 14:12:22
猫はAPIのサンプルだろ。

931 名前:デフォルトの名無しさん :2006/05/18(木) 14:36:17
>>929
codeprojectから
ttp://www.codeproject.com/wtl/SkinX.asp
ttp://www.codeproject.com/dialog/skindlg.asp

あとは、MediaPlayerみたいにリージョンで切り抜くとか

932 名前:デフォルトの名無しさん :2006/05/18(木) 16:17:53
最近は Region で切り抜くよりも
SetLayeredWindowAttributes で
ゴニョゴニョする方がクール

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnwui/html/layerwin.asp


933 名前:デフォルトの名無しさん :2006/05/18(木) 16:29:19
子ウィンドウの数を調べるにはGetWindowでループさせるくらいしかないですか?

934 名前:デフォルトの名無しさん :2006/05/18(木) 16:33:35
せめて EnumChildWindows 使えよ

935 名前:デフォルトの名無しさん :2006/05/18(木) 17:21:00
VisualStudioなどのForm作成画面について質問です。
あのForm作成画面で作成されるボタンとかはCreateWindowで作ったボタンに、
フォーカスが移動したとき、
そのボタンの上にサイズ変更の枠の形をしたWindowを重ねるという処理して実現させているのでしょうか?

936 名前:デフォルトの名無しさん :2006/05/18(木) 17:24:52
違います

937 名前:デフォルトの名無しさん :2006/05/18(木) 17:31:08
それでは、ボタンっぽい自作ウィンドウですか?

938 名前:デフォルトの名無しさん :2006/05/18(木) 18:07:02
違います

939 名前:デフォルトの名無しさん :2006/05/18(木) 18:09:33
SPY とかで見たら?

940 名前:デフォルトの名無しさん :2006/05/18(木) 18:17:48
SPY?
それはなんなのでしょうか?

作り方わかんない・・・

941 名前:デフォルトの名無しさん :2006/05/18(木) 18:28:19
わかんないなら作らなくていいですよ?

942 名前:デフォルトの名無しさん :2006/05/18(木) 18:34:06
>>939
コントロールじゃないんだからspy++で見ても意味無いだろ

>>935
DrawFrameControl()とか使って自前で描画してください

943 名前:デフォルトの名無しさん :2006/05/18(木) 18:56:23
いちおうspy++で見たら
VC6のはそのまんま実物だな
あとは知らん

944 名前:デフォルトの名無しさん :2006/05/18(木) 19:24:26
>>942
そんなのがあったんだ・・・
この関数の内容を見たら
ボタン、タイトルバー、メニュー、スクロ−ルバー
しか出来ないみたいですが
EDITやSTATICは自分で書くしかないのですか?

945 名前:デフォルトの名無しさん :2006/05/19(金) 00:59:00
わかんないなら作らなくていいですよ?

946 名前:デフォルトの名無しさん :2006/05/19(金) 02:39:05
DrawTextで文字を表示させようと思ったのですが
背景が白くなってしまいます。
背景を白く塗らなくするにはどうしたらいいのでしょうか?

947 名前:946 :2006/05/19(金) 02:48:01
事故解決しました。
SetBkMode(hdc,TRANSPARENT);

948 名前:デフォルトの名無しさん :2006/05/19(金) 07:03:56
がんがれ

949 名前:デフォルトの名無しさん :2006/05/19(金) 07:55:18
>>950 踏んだ人 次スレよろしく

950 名前:デフォルトの名無しさん :2006/05/19(金) 11:32:55
>>949
次スレ立てたわん

951 名前:デフォルトの名無しさん :2006/05/19(金) 11:48:17
http://pc8.2ch.net/test/read.cgi/tech/1148005509/



952 名前:デフォルトの名無しさん :2006/05/19(金) 14:25:47
DrawFrameControlなのですが
ラジオボタンやチェックボックスは、
ボタンの位置やサイズ、テキストの位置は自分で計算するしかないのでしょうか?


953 名前:デフォルトの名無しさん :2006/05/19(金) 14:29:10
>>952
DrawFrameControl は現状殆ど使い物にならないからやめた方がいいよ。
本物のコントロールを配置して、手前をWS_EX_TRANSPARENTなウィンドウで
覆っておくのがお勧め(何か上書きしたいならそのウィンドウで)。

954 名前:デフォルトの名無しさん :2006/05/19(金) 14:42:22
>>953
やっぱしそうですか・・・。
「ボタンだけならどうにかなるけどチェックボックスとかはどうするのこれ?」って
結構迷いました・・・
というわけど教えてもらった方法を考えてみたいと思います


955 名前:デフォルトの名無しさん :2006/05/19(金) 14:44:57
だれだ DrawFrameControl を薦めた香具師は

956 名前:デフォルトの名無しさん :2006/05/19(金) 14:46:27
>やっぱしそうですか・・・。
最初から自分で作ればいいんじゃないか

957 名前:デフォルトの名無しさん :2006/05/19(金) 14:51:03
>>956
まぁ、そうでしょうけど作るのがしんどいだろうし(自分のレベルじゃ)
できたとしても違うものが出来そうなので・・・

958 名前:デフォルトの名無しさん :2006/05/19(金) 19:46:43
埋めようぜ

959 名前:埋めようぜ :2006/05/19(金) 20:04:50
乙女座の聖闘士は、
自分の写真と某アニメのロリキャラとの合成プリントシャツ着たキモオタデブ

960 名前:デフォルトの名無しさん :2006/05/19(金) 21:12:37
なんでもいいので埋めてください。

961 名前:デフォルトの名無しさん :2006/05/19(金) 21:18:56
SuspendThread

962 名前:デフォルトの名無しさん :2006/05/19(金) 21:25:06
ExitThread

963 名前:デフォルトの名無しさん :2006/05/19(金) 21:25:59
とりあえず>>960を埋めました
         、、、、
       _彡_, ,_ヾ
     /∩|;`"皿`"|) =3
    くヘ | ̄ヽL| |」 ]つ ┐
       |j、__| |_| ┰'’
       |__|_| _||_    (○)
       |__)_) | ∪ |     |/)
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
          ⊂⌒~⊃。Д。)⊃

964 名前:デフォルトの名無しさん :2006/05/19(金) 21:26:02
FreeLibraryAndExitThread

965 名前:デフォルトの名無しさん :2006/05/19(金) 21:28:47
CreateWindowは存在しない!

966 名前:デフォルトの名無しさん :2006/05/19(金) 21:39:52
_onexit( exit_func );

...

int exit_func()
{

967 名前:デフォルトの名無しさん :2006/05/19(金) 21:56:57
BUTTONウィンドウの背景色を
灰色じゃない色(例えば、赤)に変えるにはどうしたらいいのでしょうか?

968 名前:デフォルトの名無しさん :2006/05/19(金) 22:11:04
2つのPOINT構造体からRECT構造体を返す関数はないでしょうか?

969 名前:デフォルトの名無しさん :2006/05/19(金) 22:36:01
>>968
それくらい自分で作れ。
そういえばMFC/ATLのCRectにはPOINTとSIZEを受け取るコンストラクタがあった気がする。

970 名前:デフォルトの名無しさん :2006/05/19(金) 22:41:46
>>969
そういう関数が最初からあるんだったら
そちらを使ったほうがいいかなと思ったのでとりあえず・・・
ないのでしたら自作します。

971 名前:デフォルトの名無しさん :2006/05/19(金) 22:48:58
RaiseException(
  0
  , dwExceptionFlags //復帰不可能
  , 0, NULL ) ;

972 名前:971 :2006/05/19(金) 22:51:48
__except(EXCEPTION_EXECUTE_HANDLER) { /*typo*/ }
//素で間違えたOrz

973 名前:デフォルトの名無しさん :2006/05/20(土) 02:06:49
いいこと思いついた
お前らこのスレを埋めろ

974 名前:デフォルトの名無しさん :2006/05/20(土) 02:10:07
よっし、お前が埋めろ

975 名前:デフォルトの名無しさん :2006/05/20(土) 10:32:03
>>968-970
単純にコピーでいいとは限らない訳だがみんなはどうしてる?


976 名前:デフォルトの名無しさん :2006/05/20(土) 10:46:30
namespace foo {

class RECT
{
  ::RECT rect ;
public :
  RECT(::POINT left_top, ::POINT right_bottom)
  {
    rect.left = left_top.x ;    rect.top = left_top.y ;
    rect.right = right_bottom.x ;    rect.bottom = right_bottom.y ;
  }

  operator ::RECT() { return rect ; }
} ;

} //namespace foo

うーん、激しく車輪の再発明な気がしないでもない。

977 名前:デフォルトの名無しさん :2006/05/20(土) 11:27:35
RECT のポインタを渡して中身を書き換えたときに
元の POINT の中身も換わって欲しかったりすることない?

978 名前:デフォルトの名無しさん :2006/05/20(土) 11:35:08
よくわからないが、CRectをコピれば終わらないか?

979 名前:デフォルトの名無しさん :2006/05/20(土) 11:46:41
ソースみたけどやっぱりコピってるんだね

980 名前:デフォルトの名無しさん :2006/05/20(土) 11:48:43
SetRect


981 名前:976 :2006/05/20(土) 13:13:28
>>979
いや、そのヘッダは読んでいないけど、誰が書いても同じものになると思う。


982 名前:デフォルトの名無しさん :2006/05/20(土) 13:18:18
コピってるっていう意味は元のPOINTの
インスタンスにデータをコピーしてるってことです


983 名前:デフォルトの名無しさん :2006/05/20(土) 13:18:54
ごめん文章がおかしくなった

コピってるっていう意味は元のPOINTのデータを
RECTのインスタンスにコピーしてるってことです

984 名前:デフォルトの名無しさん :2006/05/20(土) 13:20:50
afxwin1.inl というインライン定義記述用ソースファイルの中に

// CRect
_AFXWIN_INLINE CRect::CRect()
{ /* random filled */ }
_AFXWIN_INLINE CRect::CRect(int l, int t, int r, int b)
{ left = l; top = t; right = r; bottom = b; }
_AFXWIN_INLINE CRect::CRect(const RECT& srcRect)
{ ::CopyRect(this, &srcRect); }
・・・

こういうのが延々と続いていました


985 名前:976 :2006/05/20(土) 13:48:09
>>982
ここで、POINT構造体のラッパも用意してみる。
処理は全部、全部クラス内に記述する。

RECT rect = foo::RECT(foo:POINT(0, 0), foo::POINT(640, 480)) ;

賢いコンパイラなら、インライン展開したほうが得であると考えて、
インライン展開->さらに最適化->普通のRECT構造体に値を設定した場合と、なんら変わらない処理に。


というかコピーとかいうのは、どういう意味で使っているのだろう。

986 名前:976 :2006/05/20(土) 13:49:37
あ、POINT構造体とか言っている時点で、そもそも上の例は間違っているか。
普通のRECTなら、

RECT rect = {0, 0, 640, 480} ;

でいいか。

987 名前:デフォルトの名無しさん :2006/05/20(土) 16:40:03
MFC使おうよ

988 名前:デフォルトの名無しさん :2006/05/20(土) 16:53:20
>>985
わかりにくくてすみません

POINT p1 = { 5, 7 };
POINT p2 = { 13, 31 };

RECT r = hoge(p1, p2);

ここまではみなさんの考えてることと同じなのですが、

r.lefttop.x = 3;

としたときに、もとの

p1.x も 3 になってほしいのです


989 名前:デフォルトの名無しさん :2006/05/20(土) 16:59:22
struct HOGE

990 名前:デフォルトの名無しさん :2006/05/20(土) 17:01:18
間違えたorz


struct HOGE
{
  POINT lefttop ;
  POINT rightbottom ;
} ;


こんな感じかな。
こんなあほみたいなテクニックを使う、
わかりにくいコードなんて、読みたくないが。

991 名前:デフォルトの名無しさん :2006/05/20(土) 17:11:11
それじゃだめでしょ

992 名前:デフォルトの名無しさん :2006/05/20(土) 17:15:56
>>991
オーケー>>988を読み直した。
コンストラクタでp1,p2の参照を取って、メンバに保持しておき、
RECTフェイクなクラスが変更されたら、参照も変更する。

ますます読みたくないコードだ。

993 名前:デフォルトの名無しさん :2006/05/20(土) 17:26:10
>>978 とか >>980 とか >>987 を無視するあたりどう見ても(ry

994 名前:デフォルトの名無しさん :2006/05/20(土) 17:27:46
埋めようよ

995 名前:デフォルトの名無しさん :2006/05/20(土) 17:28:25
埋めてしまえ

996 名前:デフォルトの名無しさん :2006/05/20(土) 17:30:05


997 名前:デフォルトの名無しさん :2006/05/20(土) 17:30:27
もったいないスレの使い方を・・・

998 名前:デフォルトの名無しさん :2006/05/20(土) 17:31:26
いいじゃんいままでそうやって埋めてきたんだし

999 名前:デフォルトの名無しさん :2006/05/20(土) 17:31:45
1000だったらVistaで新API UninstallWindowsVista導入

1000 名前:デフォルトの名無しさん :2006/05/20(土) 17:32:27
1000


■過去ログ置き場に戻る■ 1- 前250 次250 最新50
DAT2HTML 0.33f Converted.