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


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

Win32API質問箱 Build21
501 名前:デフォルトの名無しさん :04/08/05 19:59
>>499-500
ありがとう。
いけそうです。

502 名前:デフォルトの名無しさん :04/08/05 20:00
>>498抜けてました、ありがとう

503 名前:デフォルトの名無しさん :04/08/05 21:00
DLLとexeの間で、任意のデータを共有する手法はあるでしょうか。
DLL呼び出しは呼び出し元と呼び出し先でプロセスが違うため、
ポインタの引渡しなどがうまくいきません。
引数、シェアードメモリ、ファイルマッピング…みんなダメっぽいです。

流石に、ポインタ型の変数を持っているクラスを共有する手段が無いというのは考えにくいんだけどなぁ…。

504 名前:デフォルトの名無しさん :04/08/05 21:03
ファイルマッピングは使えるよ

505 名前:デフォルトの名無しさん :04/08/05 21:03
>DLL呼び出しは呼び出し元と呼び出し先でプロセスが違うため、
ソンナバカナ

506 名前:デフォルトの名無しさん :04/08/05 21:03
>>503
?????
何も考えずにできない?

507 名前:デフォルトの名無しさん :04/08/05 21:11
C++のクラスならexeとdllで共有できない可能性はあるな。コンパイラの問題で。

508 名前:デフォルトの名無しさん :04/08/05 21:29
>>503
どうせどこか間違えているだけだろ。

Win32APIもただのDLLの関数を呼び出しているだけ。
つまりWin32APIのポインタを引数に取る関数がうまく動くんだから、
自分で作ったDLLの関数も引数でポインタを受け取っても動かないはずがない。

509 名前:デフォルトの名無しさん :04/08/05 21:45
子ウィンドウをドラッグすると親ウィンドウも一緒にドラッグする
ようにはどうすればいいのでしょうか?


510 名前:デフォルトの名無しさん :04/08/05 21:55
MoveWindow

511 名前:238 :04/08/06 01:03
>>503のはたぶん、システムフック用のDLLなんじゃないかな。
プロセス空間が違うので、当然ポインタの値も別のものだよ。

OS選ばずに済むなら、共有メモリでも使ってみてはどうかな。

512 名前:デフォルトの名無しさん :04/08/06 01:03
238はミスです、スマソ

513 名前:503 :04/08/06 13:04
再実験してみました。

DLL側の関数を呼び出す際にポインタを渡しても、
ファイルマッピングを行っても、
値かポインタかに関わらず、データの引継ぎができたようです。
しかし、static変数については値でもポインタでも0クリアされてしまいました。

…えーと、static変数は無理なのかな?
ちなみに、実験環境はXP Home上の.NET2003。

>>DLL呼び出しは呼び出し元と呼び出し先でプロセスが違うため、
>ソンナバカナ
あれ?違いましたっけ。情報元を失念したので探しに行ってきます。

514 名前:503 :04/08/06 13:06
あー、ちょっと誤解を招きそうなので修正。

class CTest
{
public:
int LocalValue;
int *LocalPointer;
static int StaticValue;
static int *StaticPointer;
};

こいつのポインタを渡したり、CreateFileMappingとMapViewOfFileで共有させたりしたってことです。

515 名前:デフォルトの名無しさん :04/08/06 13:26
>>514
クラスのインスタンスにはstaticは含まれていないから。
#include <iostream>

class A{
public:
int LocalValue;
int *LocalPointer;
static int StaticValue;
static int *StaticPointer;
};
class B{
public:
int LocalValue;
int *LocalPointer;
};

int main() {
std::cout << "sizeof(A)=" << sizeof(A) << std::endl;
std::cout << "sizeof(B)=" << sizeof(B) << std::endl;
return 0;
}


516 名前:デフォルトの名無しさん :04/08/06 13:35
dll 側で _declspec (dllexport) int CTest::StaticValue とか、
exe 側で_declspec (dllimport) int CTest::StaticValue とか、
これ正確な表記かどうかわかんないけど、こういうことちゃんとやってる?

あと、
>あれ?違いましたっけ。情報元を失念したので探しに行ってきます。
そんなの探してもムダだから、その時間を使って Microsoft が丁寧親切に書いてくれてる
公式ドキュメントをちゃんと読んだ方が良いと思う。

517 名前:503 :04/08/06 13:35
日本語読み違えてた。DLLは同じプロセスだった…

>>515
りかいしますた。

えーと、staticな変数も共有する方法ってあるんでしょうか?
必死にぐーぐる先生と相談中。見つからないなぁ。

518 名前:デフォルトの名無しさん :04/08/06 14:23
>>517
方法もなにも、ふつうは何も考えずにできるってば。

本体側とDLL側で具体的にどういうコードを書いたのか示さないと、ア
ドバイスはできないと思うぞ。


519 名前:デフォルトの名無しさん :04/08/06 14:40
例えば mozilla の文字列クラス nsString や nsCString は
 class __declspec(dllexport) nsString : public nsAString {
  . . .
 };
 class __declspec(dllexport) nsCString : public nsACString {
  . . .
 };
みたいに宣言されてる。これで、EXE<->DLL 間でクラスのインスタンスを
やりとりできるみたい。

要するに __declspec(dllexport) で方向性は間違ってないはずだっていう
ヒントだけだ ('A`)ノ 漏れもあんま詳しくないんでね。ゴメソ

520 名前:デフォルトの名無しさん :04/08/06 14:41
Win32APIの話じゃ無いけどな。

521 名前:519 :04/08/06 14:41
ごめん。無視して。ぜんぜん意味のない話だったね。
暑いから大変だ。

522 名前:503 :04/08/06 14:42
てすと1

dll側
class CTest{public:    int LocalValue;    int *LocalPointer;    static int StaticValue;    static int *StaticPointer; };
int CTest::StaticValue = 0;
int* CTest::StaticPointer = NULL;
#define EXPORT extern "C" __declspec(dllexport)
EXPORT int TestFunction1(class CTest *test){    return 0;    }


exe側
dll側と同じCTestの定義

typedef int (*LPDLLFUNC1)(class CTest*);
int main(){    HINSTANCE hDll;    LPDLLFUNC1 lpDllFunc1;
   hDll = LoadLibrary("dll.dll");
   lpDllFunc1 = (LPDLLFUNC1)GetProcAddress(hDll, "TestFunction1");

   class CTest test;
   test.LocalValue= 100;    test.StaticValue= 200;
   test.LocalPointer= new int;    *(test.LocalPointer)= 1000;
   test.StaticPointer= new int;    *(test.StaticPointer)= 2000;

   int ret = lpDllFunc1(&test);

   delete test.LocalPointer;    delete test.StaticPointer;
   FreeLibrary(hDll);    return 0;
}

dll側でクラスがどうみえるか、ステップ実行で確認。
結果として、LocalValueとLocalPointerはそれぞれ100や1000が見えたが、StaticValueとStaticPointerは0が埋められていた。

523 名前:デフォルトの名無しさん :04/08/06 14:45
あたりまえだ

524 名前:503 :04/08/06 14:46
てすと2

dll側
EXPORT int TestFunction2(){
 HANDLE hMapFile;  class CTest *test;

 hMapFile = CreateFileMapping((HANDLE)0xFFFFFFFF, 0, PAGE_READWRITE | SEC_COMMIT, 0, sizeof(CTest), "test");
 test = (CTest*)MapViewOfFile(hMapFile, FILE_ALL_ACCESS, 0, 0, 0);
 if(test==NULL)printf("test = NULL\n");

 UnmapViewOfFile(test);  CloseHandle(hMapFile);
return 0;
}


exe側:dllのロード/アンロードなどは省略
 HANDLE hMapFile;  class CTest *test;

 hMapFile = CreateFileMapping((HANDLE)0xFFFFFFFF, 0, PAGE_READWRITE | SEC_COMMIT, 0, sizeof(CTest), "test");
 test = (CTest*)MapViewOfFile(hMapFile, FILE_ALL_ACCESS, 0, 0, 0);
 if(test==NULL)printf("test = NULL\n");

 test->LocalValue= 100;  test->StaticValue= 200;
 test->LocalPointer= new int;  *(test->LocalPointer)= 1000;
 test->StaticPointer= new int;  *(test->StaticPointer)= 2000;

 int ret = lpDllFunc2();

こっちも同じ結果。

525 名前:503 :04/08/06 14:47
と、いうわけで、何が悪いのかさっぱりさっぱり。
色々と根本的な間違いをしている気がするんですが、脳みそパニックなのでアドバイスください…_| ̄|○

526 名前:デフォルトの名無しさん :04/08/06 14:48
DLLがわとEXE側で両方でマップ作ってない?

527 名前:503 :04/08/06 14:54
>>526
ファイルマッピングオブジェクトの新規作成に成功した場合は、新しいファイルマッピングオブジェクトのハンドルが返ります。指定したファイルマッピングオブジェクトが既に存在していた場合は、既存のファイルマッピングオブジェクトのハンドルが返ります。

なので、問題ないかと。

528 名前:デフォルトの名無しさん :04/08/06 14:57
だーかーらー、static変数は単にスコープが限定されたグローバル変数なの!
お前の書いたやつじゃexeとdllがそれぞれ自分のやつを自分でいじくってるだけで
相手には何も伝わっていないのー

529 名前:デフォルトの名無しさん :04/08/06 14:57
マイクロソフトが悪い

530 名前:デフォルトの名無しさん :04/08/06 14:59
ファイルマッピングは使う必要ない

531 名前:503 :04/08/06 15:00
>>528
>相手には何も伝わっていない
すいませんが、相手に伝える方法について教えていただけませんか。
キーワードだけでも良いので。

532 名前:デフォルトの名無しさん :04/08/06 15:03
>>522
クラスや変数は__declspec(dllexport)書かないとDLLからインポートされないよ。

533 名前:528 :04/08/06 15:09
>>531
>>516は?

534 名前:デフォルトの名無しさん :04/08/06 15:13
ぶっちゃけ、DLLとの通信に(具体)クラスを使うな!と言いたい。

535 名前:503 :04/08/06 15:17
メンバ変数に__declspec (dllimport) つけると怒られてしまいます。
dllexportなら怒られないけど…どっかに実例落ちてませんか(ぉ

536 名前:デフォルトの名無しさん :04/08/06 15:35
いいかげん氏ねよ、能無し。

537 名前:デフォルトの名無しさん :04/08/06 15:36
>>535
メンバ変数じゃなくて>>519みたいにclass __declspec(dllimport) CTestってクラスに書くんだよ。

538 名前:デフォルトの名無しさん :04/08/06 15:42
>>535
(VC++ 使ってる仮定して)Visial Studio のドキュメントはインストールしてないの?

こうやるんだよ。

test.h
EXPORT class CTest{
 public:
   int LocalValue;
   int *LocalPointer;
   static int StaticValue;
   static int *StaticPointer;
};

dll.cpp:
#define EXPORT __declspec(dllexport)
#include "test.h"
EXPORT int CTest::StaticValue; //ココ EXPORT いるのかいらんのか知らんけど。
EXPORT int *CTest::StaticPointer; //ココ EXPORT いるのかいらんのか知らんけど。
extern "C" EXPORT int TestFunc() {...};
...

exe.cpp
#define EXPORT __declspec(dllimport)
#inlcude "test.h"
...


539 名前:デフォルトの名無しさん :04/08/06 15:47
DLL側の変数の名前をEXE側はどうやってわかるんですか?

540 名前:デフォルトの名無しさん :04/08/06 15:53
>>539
DLLにはシンボル名が埋め込まれています。

541 名前:503 :04/08/06 15:53
一応、ちゃんとMSDNみながらやっているんですが…

class __declspec(dllexport) CTest{...};
はともかく、
class __declspec(dllimport) CTest{...};
の方は、static変数の宣言でこけてしまいます。
スタティックデータメンバの定義は許されないとか言われます。

#exe側にインスタンスがあるのに、exe側でクラス定義にimportって書くのは違和感があるなぁ。

542 名前:デフォルトの名無しさん :04/08/06 15:53
>>539
超能力で。

Win32 とどう関係があるのか正直漏れにはわからん。
なんだかこのスレが悲惨なことになりそうだからスルーしまつ。

543 名前:デフォルトの名無しさん :04/08/06 16:09
そもそも何でAPI形式でやる必要があるのか不明。
COM DLLではダメなのだろうか?

544 名前:デフォルトの名無しさん :04/08/06 16:23
API形式ってオレ用語?

545 名前:デフォルトの名無しさん :04/08/06 16:29
COMはレジストリー使うだろ?

546 名前:デフォルトの名無しさん :04/08/06 16:52
>>545
直接ハンドルすればレジストリ使わないよ。

547 名前:デフォルトの名無しさん :04/08/06 19:31
SHCreateStreamOnFileについてなんですけど
このAPIで取得したIStreamインターフェースのCloneを呼ぶとE_NOTIMPLが返ってきます。
自分で実装するしかないのでしょうか?
VC6.0SP6 Win2k
shlwapi.dll Ver 6.0.2800.1552


548 名前:デフォルトの名無しさん :04/08/06 19:32
そうですよ

549 名前:547 :04/08/06 20:07
面倒くさいですね。
MSはなんで実装しなかったんでしょうね。

550 名前:デフォルトの名無しさん :04/08/06 20:07
MSの中の人も面倒くさかったんだろう

551 名前:デフォルトの名無しさん :04/08/06 20:21
ほとんどなんも実装されずに終わったDirectDrawよりマシ

552 名前:デフォルトの名無しさん :04/08/06 20:45
>>546
具体的に。

553 名前:デフォルトの名無しさん :04/08/06 20:54
IHogeInterface *CreateHogeInterface();
をExportするんだろ。

554 名前:デフォルトの名無しさん :04/08/06 20:57
普通はDllGetClassObjectじゃないの?

555 名前:デフォルトの名無しさん :04/08/07 01:53
こんばんわ、Win32のコモンコントロール(TreeView)で
キーボード入力を検出したいのですがうまくいきません。
お知恵をお貸しください。

TreeViewでアイテムにフォーカスがある状態で
Deleteキーを押すと、オーナーウィンドウの
WM_NOTIFYにNM_KEYDOWNが通知されるようにしたいのですが
意図したように動作しませんでした。

改行多いって出るので分割しますね

556 名前:デフォルトの名無しさん :04/08/07 01:54
プログラム部分は

case WM_NOTIFY:
{
NMKEY *pKeyInfo = (NMKEY *) lParam;

if ( (treeview_id == wParam) && (pKeyInfo->hdr.hwndFrom == treeview_handle) ) {
if ( pKeyInfo->hdr.code == NM_KEYDOWN ) {
if ( pKeyInfo->nVKey == VK_DELETE ) {
TreeView_DeleteItem(treeview_handle, item_handle);
}
}
}
}
break;

という感じです。

TreeView内でdeleteキーを押すと無反応です。
pKeyInfo->hdr.code で NM_KEYDOWN すら通知されません。
NM_KEYDOWNが通知されるのはマウス操作(VK_LBUTTON, VK_RBUTTON)のみでした。
どうすれば他のキーも通知されるようになるのでしょうか?

別件ですが
オーナーウィンドウが、子ウィンドウが終了したことを検知するためにはどうしたらよいでしょうか?
子ウィンドウ終了>オーナーウィンドウになんらかのウィンドウメッセージ通知
を想定しているのですが、これは可能でしょうか?


557 名前:デフォルトの名無しさん :04/08/07 01:54
あれ?なんかスペースがなくなっちゃいましたね・・・

558 名前:デフォルトの名無しさん :04/08/07 02:02
>>557
&nbsp;
つけろ

559 名前:デフォルトの名無しさん :04/08/07 02:04
>>556
どうしてもだめならキーフック使え

560 名前:デフォルトの名無しさん :04/08/07 04:11
>>555
TreeView の編集部分は TreeView 自身とは別のウィンドウです。
従って、編集中のキー押下は TreeView 自身では取れません。
(WM_COMMAND の EN_CHANGE なら取れるかも)
このウィンドウは最初からあるわけでなく、編集を行うと作成されます。
TreeView_GetEditControl で編集部分のハンドルが取得できますので、
Window Procedure を差し替えてサブクラス化すれば、その中で
WM_KEYDOWN など何でも取れます。
トラブルを避けるため編集が終わったら元に戻すことをおすすめします。

オーナーが親であれば、WM_PARENTNOTIFY で WM_DESTROY が送られます。
ただし、その子の ExStyle に WS_EX_NOPARENTNOTIFY が入っていると
送られてきません。

561 名前:560 :04/08/07 06:10
>>555
すみません。後で見てみたら質問を読み違えてたみたいです。
編集中じゃなくて、普通の状態でのキー押下ですよね。
それなら親ウィンドウに送られる WM_NOTIFY の TVN_KEYDOWN に
応答するだけで OK です。

>>560 は全然違うことを書いてるので無視してください。

562 名前:503 :04/08/07 11:17
いまだにわかっていない503です。

とりあえず>>538のようにやってみたんですが、
exe側でクラス内のstatic変数まわりでこけてしまいます。
クラス宣言の外でstatic変数を宣言しないと外部参照が未解決って言われるし、
宣言するとdllリンクが一貫していないとか、dllimportスタティックメンバの定義は許されないとか言われます。
>>516のような宣言をしても一緒でした。
どうすれば解決できるのでしょうか?

MSDNライブラリ見ても、classのstatic変数を共有する方法なんてみつからないよう。

563 名前:デフォルトの名無しさん :04/08/07 11:27
もうstatic変数にこだわるな

564 名前:デフォルトの名無しさん :04/08/07 12:10
503は、staticの意味を知らない香具師。
それに対して、答えてるのはDLLでstaticを
使った事無い香具師。

…これじゃ、いつまで経っても解決しない。

565 名前:デフォルトの名無しさん :04/08/07 12:23
だから、COM流にインターフェースだけ公開しろよ。

566 名前:503 :04/08/07 12:37
うーん、私は確かにstaticの意味がわかっていないかもしれません。
ただ単に、クラス変数が作れるってだけで使っていますから。
今回のケースで必要なstaticに関する理解は、どこで得られるでしょうか。
良い教材(?)があれば教えていただけませんか。

それとは別に、DLLでstatic変数を使ったことのある/使っている方はいませんか。
簡単なサンプルとかを見せていただけると、大変ありがたいのですが。

567 名前:デフォルトの名無しさん :04/08/07 12:56
1って表示されたぞ
-----------------exe--------------------
#include <stdio.h>
class CTest{
__declspec(dllimport) static int sta;
};
int main() {
printf("%d\n", CTest::sta);
return 0;
}
-----------------dll--------------------
#include <windows.h>
class CTest{
__declspec(dllexport) static int sta;
};
__declspec(dllexport) int CTest::sta;
BOOL WINAPI DllMain(HANDLE hModule, DWORD dwReason, LPVOID lpReserved)
{
switch(dwReason) {
case DLL_PROCESS_ATTACH:
CTest::sta = 1;
break;
case DLL_PROCESS_DETACH:
break;
default:
break;
}
return TRUE;
}


568 名前:デフォルトの名無しさん :04/08/07 13:01
メンバ変数パブリックにするなんて汚ねえコードだな

569 名前:567 :04/08/07 13:04
publicを消しちまった

570 名前:デフォルトの名無しさん :04/08/07 13:11
>>566
基本的にstaticはモジュールごとのローカル変数と考えるべきで、
モジュールをまたいで使うことは少なくとも俺はない。


571 名前:567 :04/08/07 13:17
dll5行目は
int CTest::sta;
だけでよかった

572 名前:デフォルトの名無しさん :04/08/07 13:18
>>570
あなた違うものについて言ってるよね?

573 名前:デフォルトの名無しさん :04/08/07 13:19
そんなことはないか

574 名前:503 :04/08/07 13:38
>>567
exeの方が、

exe error LNK2001: 外部シンボル ""__declspec(dllimport) public: static int CTest::sta" (__imp_?sta@CTest@@2HA)" は未解決です。

って出てビルドできないんですが…。
ちなみに、テスト環境は.NET2003。

575 名前:デフォルトの名無しさん :04/08/07 13:41
「リンクの冒険」オチでしたか…

576 名前:デフォルトの名無しさん :04/08/07 13:56
dll.libをexeにリンクしているよなぁ〜?

577 名前:デフォルトの名無しさん :04/08/07 13:59
そういうオチですか。

578 名前:503 :04/08/07 14:15
アプリケーションの設計上、明示的リンクでいきたいんですが…。

579 名前:デフォルトの名無しさん :04/08/07 14:28
CWebBrowserクラスのNavigateで、自前のウィンドウに埋め込みウェブを表示させているのですが
そこのユーザーエージェントを制御したいのですがどうすればよいでしょうか?

Navigateに与える引数を工夫すれば実現できそうなのですが・・・
どなたか教えてください


580 名前:デフォルトの名無しさん :04/08/07 14:33
>>578
loadlibrary 使え

581 名前:デフォルトの名無しさん :04/08/07 14:36
>>578
ttp://black.sakura.ne.jp/~third/system/winapi/win149.html


582 名前:デフォルトの名無しさん :04/08/07 14:37
http://www.microsoft.com/ntserver/nts/downloads/management/uptime/default.asp

583 名前:デフォルトの名無しさん :04/08/07 14:38
>>579
その質問最近どっかのスレで見たぞ


584 名前:デフォルトの名無しさん :04/08/07 14:58
>>578
クラス・変数は__declspec(dllimport)とLIBでリンクする以外無理、ってMSDNのどっかに書いてあったような……。

585 名前:デフォルトの名無しさん :04/08/07 15:00
>>578
こんなとんまなクラスではダイナミックロードなど無理だボケ

586 名前:デフォルトの名無しさん :04/08/07 16:39
32ビットウインドーズコンソールアプリで画面に点を打ったりするみたいな
WIN32APIのHDCと同じようなことをやるにはどうやればいいですか?

587 名前:デフォルトの名無しさん :04/08/07 16:49
 

588 名前:デフォルトの名無しさん :04/08/07 20:07
 

589 名前:デフォルトの名無しさん :04/08/07 20:37
>>586
コンソールアプリでも hWnd や hDC は取得可能だが?


590 名前:デフォルトの名無しさん :04/08/07 20:38
そろそろ、>503 はスルーの方向でいいんじゃないか。
せっかく、レスしていても無意味だろ。

591 名前:デフォルトの名無しさん :04/08/07 20:38
>>589
素直に知らないと言えよw
あるいは書き込むな

592 名前:デフォルトの名無しさん :04/08/07 20:54
夏だね

593 名前:589 :04/08/07 21:01
>>591
これで出来たが?

#include<windows.h>

#include<stdio.h>

intmain(void)
{
HWNDhWnd = (HWND)0x00000000L; // 君が書き込みたいウィンドウ(クライアント領域)のハンドル
HDChDC = GetDC(hWnd);
RECTr = {0, 0, 100, 100};
HBRUSHhbr = (HBRUSH)GetStockObject(WHITE_BRUSH);

FillRect(hDC, &r, hbr);
InvalidateRect(hWnd, NULL, TRUE);

ReleaseDC(hWnd, hDC);

return0;
}


594 名前:デフォルトの名無しさん :04/08/07 21:03
>>586
int10hのこと言ってるのかな?

595 名前:デフォルトの名無しさん :04/08/07 21:05
>>593
だから書き込むなって

596 名前:589 :04/08/07 21:06
夏だから・・・
スマソ orz


597 名前:デフォルトの名無しさん :04/08/07 21:14
>>586
ウィンドウハンドルが欲しいという意味なら、
GetConsoleWindow() で取得できるので、あとはご自由に。
文字をつかって画面に点を打つという意味なら、
SetConsoleCursorPosition() かな。

598 名前:デフォルトの名無しさん :04/08/07 21:14
>>593
あのままじゃ動かないな


599 名前:デフォルトの名無しさん :04/08/07 21:56
>>590
素直に、自分にはわからないって言えよ

漏れはわかりませんが何か…orz

600 名前:586 :04/08/07 23:15
そうじゃなくてドスプロンプトの画面のウインドーに
点を打ちたいのです
点は色の付いた点です

601 名前:デフォルトの名無しさん :04/08/07 23:25
> ウィンドウハンドルが欲しいという意味なら、
> GetConsoleWindow() で取得できるので、あとはご自由に。
で理解できないのか?

602 名前:586 :04/08/07 23:29
HDCでやったら普通のウインドーに点を打つのと変わらないのでウインドープロシジャーを
使わないようなやり方をしたいです

603 名前:デフォルトの名無しさん :04/08/07 23:36
>>586
これで理解できないのなら、基礎からやりなおせ。

HWND hwndConsole = GetConsoleWindow();
HDC hDC = GetDC(hwndConsole);
RECT rc; GetClientRect(hwndConsole, &rc)
OnDraw(hDC, rc);
ReleaseDC(hwndConsole, hDC);

604 名前:586 :04/08/07 23:38
ドスプロンプトに一番高速に書き込む方法はHDCしかないのならそれで諦めますが
他に方法があったら教えてください

605 名前:デフォルトの名無しさん :04/08/07 23:39
HDCと同じ事をやりたいというから
HDCそのものを与えてやると
今度は、HDCじゃダメという

どうしろと。

606 名前:デフォルトの名無しさん :04/08/07 23:40
キチガイとアホは相手にしないのが一番。

607 名前:デフォルトの名無しさん :04/08/07 23:40
>>604
ウインドウを好きなところに移動した後、画面に油性マジックで描画。
ウインドウを移動させると、内容がずれるから注意。

608 名前:デフォルトの名無しさん :04/08/07 23:46
GetConsoleWindow() で取得したウィンドウに対して、
Direct3D, DirectDraw, OpenGL などで描画すると高速だよ。

(呆れるのを通り越して、逆に楽しくなってきた)

609 名前:デフォルトの名無しさん :04/08/07 23:49
いったん他のウインドウの裏に回ってしまうと描画が
元に戻ってしまうんですが

610 名前:586 :04/08/07 23:51
DirectXを使うとドスプロンプトでやる理由が全画面表示したいだけなので
意味ないですよね
直接打つ方法ありませんか?

611 名前:デフォルトの名無しさん :04/08/07 23:51
SetRegion() と SetLayeredEX() あたりを組み合わせると良いかも。

612 名前:デフォルトの名無しさん :04/08/07 23:52
>>619
DirectX ってそのためにあるんじゃないの?

613 名前:デフォルトの名無しさん :04/08/07 23:52
>>610
直接ってなんだよ

614 名前:デフォルトの名無しさん :04/08/07 23:53
>>610 です orz

615 名前:デフォルトの名無しさん :04/08/07 23:54
割り込まれた orz

616 名前:デフォルトの名無しさん :04/08/07 23:54
>>610
そうなると、もうWin32の範囲では できない。
16bit DOS で使われたような方法をとらないとダメ。

617 名前:デフォルトの名無しさん :04/08/07 23:56
全画面表示ふつうのウィンドウでもできるじゃん

618 名前:デフォルトの名無しさん :04/08/07 23:57
>>614-615
なんか悪い事をしている気分になってきた

619 名前:586 :04/08/08 00:00
メッセージループがあるので普通のウインドーは出来ても使いたくないです
いまから自分で考える事にします
ありがとうございました

620 名前:586 :04/08/08 00:01
>>617
もしよろしければそのやり方教えてください

621 名前:デフォルトの名無しさん :04/08/08 00:05
妙な質問するやつ→「ウインドー」


622 名前:デフォルトの名無しさん :04/08/08 00:05
CreateWindowで然るべきサイズとスタイルを指定する

623 名前:デフォルトの名無しさん :04/08/08 00:06
> いまから自分で考える事にします
> いまから自分で考える事にします
> いまから自分で考える事にします
> いまから自分で考える事にします
> いまから自分で考える事にします

624 名前:デフォルトの名無しさん :04/08/08 00:06
>>619
GDIとメッセージループとウインドウにどんな関係があるんだよ

>>620
ChangeDisplaySetting
IDirectDraw*::SetDisplayMode

625 名前:デフォルトの名無しさん :04/08/08 00:07
画面のサイズいっぱいで
キャプションもウインドウ枠も無いウインドウを作る

626 名前:586 :04/08/08 00:07
>>622
解像度変えられますか?

>>624
それdirectX使ってませんか?

627 名前:デフォルトの名無しさん :04/08/08 00:08
>>610
直接打つ方法は>>607に書いてある。

628 名前:デフォルトの名無しさん :04/08/08 00:09
DirectX使わずに解像度変更するとウィンドウサイズが無茶苦茶になる。やるな。

629 名前:デフォルトの名無しさん :04/08/08 00:09
解像度の変更の仕方くらい、見つけることが出来ないのかよ

630 名前:586 :04/08/08 00:10
もういいです、さようなら

631 名前:デフォルトの名無しさん :04/08/08 00:11
こんな程度のことが、自分の力で見つけられないようでは
見込み無いな


632 名前:デフォルトの名無しさん :04/08/08 00:11
では次の議題に移ろうか。

633 名前:デフォルトの名無しさん :04/08/08 00:12
ドスプロンプトに点を打つ方法を教えてください。
方法は、自分ではまだ考えてません。

634 名前:デフォルトの名無しさん :04/08/08 00:12
Eclipseスレが激しく荒れてる件について私見を述べよ

635 名前:デフォルトの名無しさん :04/08/08 00:16
夏だから

636 名前:デフォルトの名無しさん :04/08/08 00:18
なんだか荒れ気味だな
とりあえず579の質問に答えてやったらどうよ?
消化していこうぜ!


637 名前:デフォルトの名無しさん :04/08/08 00:18
それは逃げだ

638 名前:デフォルトの名無しさん :04/08/08 00:29
>>586はメッセージループが理解できないってことなの?

639 名前:デフォルトの名無しさん :04/08/08 00:33
コンソールアプリでもウィンドウ作ってメッセージループつくれば普通に使えるんだけどな。

640 名前:デフォルトの名無しさん :04/08/08 00:41
>>639
そんなことはみんな知っている

641 名前:デフォルトの名無しさん :04/08/08 00:44
>>636
おまえ本人だろ。そしてMFCスレでも同じこと言ってるだろ。

642 名前:デフォルトの名無しさん :04/08/08 00:47
無名のファイルって作る事できないんですか?
いちいちテンポラリファイルの名前を生成するのが
なんかスマートで無い気がするのですが。

643 名前:デフォルトの名無しさん :04/08/08 00:48
ファイルじゃなくてデータベースに格納すればいいんじゃなかろうか

644 名前:586[ :04/08/08 01:26
メッセージループはクラス化できないので使いたくないのです

645 名前:デフォルトの名無しさん :04/08/08 01:27
>>644
出来るだろ?

646 名前:デフォルトの名無しさん :04/08/08 01:37
ドアホが入れ代わり立ち代わり沸いて出るスレはここです。

647 名前:586 :04/08/08 01:58
スレッド一つに一つのクラスを持たせたいので
メッセージループを作るとクラスがいっぱい作らないといけなくなるからです

648 名前:デフォルトの名無しさん :04/08/08 02:14
スレッドひとつにひとつのクラスなら、
コンソールウインドウをホストにする限り
クラスひとつでいいはずなんだけど。

649 名前:デフォルトの名無しさん :04/08/08 02:28
間違いなく根本の設計から大勘違いして馬鹿なことやってるな。

650 名前:デフォルトの名無しさん :04/08/08 05:12
釣りでなければ、そうだね。

651 名前:デフォルトの名無しさん :04/08/08 06:58
プロセスが死んでいるタスクバーの右がわのアイコンを
消す方法はないでしょうか?

マウスを重ねると消えるのですが、どうプログラムして
いいのかわかりません。

652 名前:デフォルトの名無しさん :04/08/08 07:31
タスクトレイのハンドルを指定してInvalidateRectとか

653 名前:デフォルトの名無しさん :04/08/08 07:32
>651
マウスを重ねる。

654 名前:デフォルトの名無しさん :04/08/08 07:57
タスクトレイのハンドルってどうやって取得出来ますか?

655 名前:デフォルトの名無しさん :04/08/08 08:07
>>642
GetTempFileNameで我慢しろ。

656 名前:Win32SDK勉強中 ◆Win32BkCJ. :04/08/08 08:23
>>654
HWND hwndTaskBar = ::FindWindow("Shell_TrayWnd", NULL);
HWND hwndTray = ::FindWindowEx(hwndTaskBar, NULL, "TrayNotifyWnd", NULL);
これでhwndTrayにタスクトレイのウィンドウハンドルが取れる。

657 名前:デフォルトの名無しさん :04/08/08 08:52
>>656
ありがとう
そのウィンドウ名の定数でOSのバージョン制約とか受けませんか?

658 名前:デフォルトの名無しさん :04/08/08 09:08
まさか消したいアイコンって自分の登録したアイコンじゃないよね

659 名前:Win32SDK勉強中 ◆Win32BkCJ. :04/08/08 09:12
>>657
参考URL:
ttp://www.geocities.jp/g_e_k_o_g_e_k_o/column/column.html

660 名前:デフォルトの名無しさん :04/08/08 09:42
>>659
おかげさまで参考になりました。ついでにもうひとつ貼っておきます。
ttp://homepage1.nifty.com/kazubon/progdoc/tclock/taskbarhistory.html


661 名前:デフォルトの名無しさん :04/08/08 10:01
ドスプロンプトに点を打ちたいのですが
MDMAは新宿のどこで買えますか?

662 名前:デフォルトの名無しさん :04/08/08 10:27
>>661
OADG と VRAM でぐぐれ

663 名前:デフォルトの名無しさん :04/08/08 14:06
すみません質問したいんですが、CPUの稼働率?ってどうやって得ればいいんですか?
Win98だとレジストリから得られるみたいなんですがXPだとどうやればいいんでしょうか?
VisualC++歴半年のヘタレなんですが出来ますかね?

664 名前:デフォルトの名無しさん :04/08/08 14:21
シェル(エクスプローラ)での「コピー」や「貼り付け」をAPIを使って実行しようとすると、
どのあたりの関数を使えばよいのでしょうか。

665 名前:デフォルトの名無しさん :04/08/08 14:44
>>663
PdhOpenQuery
PdhMakeCounterPath
PdhAddCounter
PdhCollectQueryData
PdhCloseQuery

666 名前:デフォルトの名無しさん :04/08/08 15:14
>>665
なんだか色々使いますね。。。
とりあえず教えてもらった関数名を頼りにググってみます。

667 名前:デフォルトの名無しさん :04/08/08 16:11
プログラムを日本語版のwindowsでのみ動かしたいのですが
日本語版とそれ以外を判別する方法をご教授下さい。

668 名前:デフォルトの名無しさん :04/08/08 16:57
デバイスコンテキストの座標はX軸とY軸はどこから始まりますか?

669 名前:デフォルトの名無しさん :04/08/08 17:46
原点から。

670 名前:デフォルトの名無しさん :04/08/08 18:06
リストビューのアブアイテムにテキストを設定する際に

LV_ITEM lvitem;
lvitem.mask = LVIF_TEXT | LVIF_PARAM;

というように LVIF_PARAM が設定されていると、
テキストが設定されないのは仕様ですか?

671 名前:671 :04/08/08 18:07
アブアイテムて。サブアイテムの間違いです。

672 名前:デフォルトの名無しさん :04/08/08 19:00
設定されると思うが?

673 名前:670 :04/08/08 19:08
>>672
おやそうですか…。うむむ、なぜだらう。
表示されないんですよね。LVIF_PARAM を外すと表示されます。
どこかでおかしいことやってるのかな。

674 名前:デフォルトの名無しさん :04/08/08 19:17
メニューとかステータスバーのGUIの部品が占有する領域は
ウィンドウのクライアント領域から除外されるじゃないですか、
それってどんな機構で実現してるんでしょう?
クライアント領域から alloc するというか、なんかそんな隠しメッセージでも
やり取りしてるんでしょうかね…。

675 名前:デフォルトの名無しさん :04/08/08 19:26
>>674
そんなことはない。

676 名前:デフォルトの名無しさん :04/08/08 19:29
>>674
子ウィンドウを上から重ねて描画しているんじゃないですかね。
メニューの場合も高さに合わせてクライアント領域を
ScrollWindow()か何かでずらしてるだけのような気がする。
でもそれだけだとチラつくはずなんで、どこかで
クリッピング領域を管理してるんでしょう。

677 名前:676 :04/08/08 19:34
ScrollWindowは無いな。単に再描画されるだけか。

678 名前:デフォルトの名無しさん :04/08/08 21:23
>>674
WM_NCCALCSIZE

679 名前:デフォルトの名無しさん :04/08/09 05:11
VCで、フォルダーの一括削除を行いたいのですが、
ファイルやサブフォルダがあるので、
RemoveDirectory()だと、うまくいかないみたいです。

VBだとDeleteFolder()が使えるようですが、
これをCから使うにはどうしたらいいのでしょうか?





680 名前:デフォルトの名無しさん :04/08/09 05:45
SHFileOperationかな

681 名前:デフォルトの名無しさん :04/08/09 05:45
>>679
SHFileOperation

682 名前:679 :04/08/09 08:18
>>680 >>681 thanks

main()
{
SHFILEOPSTRUCTpFileOp;
intrc;

memset( &pFileOp, '\0', sizeof( pFileOp));

pFileOp.wFunc = 3;/* 削除 */
pFileOp.pFrom = "d:\\test\test\*.*";
rc = SHFileOperationA( &pFileOp );
printf( "rc = %d\n", rc );

}

一応 rc = 0 で返ってくるけど、何故か消えていない・・・

683 名前:デフォルトの名無しさん :04/08/09 08:37
pFromはdouble null-terminatedじゃないとダメだぞ。
pFileOp.pFrom = "d:\\test\\test\\*.*\0";

684 名前:デフォルトの名無しさん :04/08/09 08:43
>>682
>pFileOp.pFrom = "d:\\test\test\*.*";

それ以前にC言語がダメダメ。

685 名前:682 :04/08/09 08:46
>>683
すんまへんでつた。お蔭様で出来ました。
ありがとうございました。

686 名前:デフォルトの名無しさん :04/08/09 08:50
"d:\\test\\test\\*.*"

687 名前:デフォルトの名無しさん :04/08/09 08:53
0x5C

688 名前:デフォルトの名無しさん :04/08/09 11:52
ビットマップの24bpp->16bpp変換コードを書いてます。んでCreateDIBSectionで
わからん部分があるんで教えて下さい。

内部でCreateDIBSectionで16bppのBITMAPを作成し、元画像(24bpp)をそこにBitBlt
する事で16bpp画像を作ってるんですが、BI_RGB(555)はいいとしてBI_BITFIELDS(565)の
時のDIBの格納形式が判りません…

ファイルに書き出す時にBITMAPFILEHEADER、BITMAPINFOHEADER、マスク情報(DWORD * 3)を
書いた後でCreateDIBSectionで取得したポインタから画像データを書き出してるのですが、
書き出した画像を見ると右に6ドットずれます。
しかも画像の左下から6ドットにマスク情報から起こしたような3色の点が書きこまれます。
(マスク情報のDWORD * 3ヶ?)
16bpp(BITFIELDS)の時、DIBSectionのデータはBI_RGBの時と格納形式が違うのでしょうか?

689 名前:デフォルトの名無しさん :04/08/09 12:10
>>688
BITMAPFILEHEADERのbfOffBitsあたりが間違ってるだけじゃないの?

690 名前:デフォルトの名無しさん :04/08/09 12:48
ハードディスクを自動でフォーマットするやり方教えてください

691 名前:デフォルトの名無しさん :04/08/09 12:56
>>690が作ったソフトは使いたくないな。


692 名前:690 :04/08/09 13:16
WinGroove2開発中でうs

693 名前:デフォルトの名無しさん :04/08/09 13:36
DrawTextで文字を描画すると、文字の部分だけが白く縁取りさせてしまいます。
文字の部分以外は後ろに描画したものが透けるようにしたいのですがどうしたらよいでしょう?

694 名前:デフォルトの名無しさん :04/08/09 13:45
SetBkModeかな

695 名前:デフォルトの名無しさん :04/08/09 13:54
>>694
Thx

696 名前:688 :04/08/09 16:01
>>689
ずばりその通りですた
つか、今までbmpファイル作るときそこは全部0のままにしてたよ…orz
ちゃんと値を設定したら直りました
マリガトン

697 名前:デフォルトの名無しさん :04/08/09 16:56
スケルトンプログラムのShowWindow()とUpdateWindow()をコメント化して
メッセージループに入っても、WM_PAINTはきっちりプロシージャに届いてるようですが
どこがWM_PAINTを飛ばしてるんでしょうか

698 名前:デフォルトの名無しさん :04/08/09 17:04
ウインドウの無効領域を見てDispatchMessage()が送出してる。

699 名前:デフォルトの名無しさん :04/08/09 17:32
RegDeleteKeyをMSDNで見たらこう書いてありました。

>Windows 95: 指定されたレジストリキーとそのサブキーを、すべて削除します。
>Windows NT: 指定されたレジストリキーを削除します。サブキーを持つキーを
> 削除することはできません。

googleったらここの Build4が引っ掛かってこう書いてありました。
http://pc3.2ch.net/tech/kako/1023/10233/1023361418.html
>13 名前: デフォルトの名無しさん 投稿日: 02/06/07 17:11
>>10
>> 今調べてみたんですけど、双方の違いがよくわかりませんでした。
>
>NTでもサブキーがあっても削除できるじゃん

2000とXP向けにあるレジストリを一括削除したいのですけど、何か方法ありますか?

700 名前:デフォルトの名無しさん :04/08/09 17:42
>>699
ある。たぶん再帰で書くのが簡単。

701 名前:デフォルトの名無しさん :04/08/09 18:02
SHReg〜系になんかあったような気がする。

702 名前:デフォルトの名無しさん :04/08/09 18:08
>>701
ない。と思う。

703 名前:699 :04/08/09 18:12
>>700
再帰ですね、分かりました(マンドクセ)

>>701
SHDeleteKeyですね(チガイガ、ワカラン、オシエテケロ)

>>702
あたしゃ、どーすりゃイイんですかい?


704 名前:デフォルトの名無しさん :04/08/09 18:13
>>702が嘘。

705 名前:デフォルトの名無しさん :04/08/09 18:17
SHDeleteKey
Deletes a subkey and all its descendants.(以下全部消す)
こっちは9x系かNT系か関係ない。

706 名前:デフォルトの名無しさん :04/08/09 18:23
>>698
ありがとです

707 名前:699 :04/08/09 18:30
>>705
マジでっか!? 試してみヤス。
ありがとうございやした。

708 名前:デフォルトの名無しさん :04/08/09 18:53
質問です。
GetDCでウィンドウのDCを取得・・・というのは必ずループ毎でしなければならないのでしょうか?
たとえばstaticを使用して一回目だけDCを取得するとかはダメなのでしょうか?

講座とかのサンプルソースを見てるとほとんど全ての物がループ毎にDCを取得しているので疑問に思いました。
教えてください。


709 名前:デフォルトの名無しさん :04/08/09 18:53
HDCの座標を左下を0にする方法教えてください

710 名前:デフォルトの名無しさん :04/08/09 18:55
>>708
スターティック使えばいいよ

711 名前:デフォルトの名無しさん :04/08/09 18:55
>>708
CS_OWNDC

712 名前:708 :04/08/09 18:59
ありがとうございました。

713 名前:デフォルトの名無しさん :04/08/09 19:24
Subnet Maskを知る方法はありますか?

714 名前:デフォルトの名無しさん :04/08/09 19:27
>>709
SetMapMode
http://www.kumei.ne.jp/c_lang/sdk/sdk_55.htm

715 名前:デフォルトの名無しさん :04/08/09 19:41
>>714
本当にあるとは思ってもいませんでした
ありがとうございます

716 名前:デフォルトの名無しさん :04/08/09 21:50
プログラムからマウスやキーボードの操作を制御するにはどうすれば
よいでしょうか?
マクロツールのようなものを作りたいのですが、何から調べてよいか
検討がつきません。
どなたかご教授おねがいします。

環境はC++、WIN32APIです。

717 名前:デフォルトの名無しさん :04/08/09 21:57
>>716
>環境はC++
>環境はC++
>環境はC++

718 名前:デフォルトの名無しさん :04/08/09 22:27
プログラムを使ってマウスを動かしたり、キーボードを打鍵したりすることは出来ません。


719 名前:デフォルトの名無しさん :04/08/09 22:28
>>716
その前にWSHについて調べてみたら?

720 名前:デフォルトの名無しさん :04/08/09 22:32
>>716
mouse_event
keybd_event

721 名前:デフォルトの名無しさん :04/08/09 22:36
>>708
デバイスコンテキストの意味がわかってないね。

722 名前:デフォルトの名無しさん :04/08/09 22:56
WindowsXPのエクスプローラでは
「表示」→「縮小版」を選ぶと画像のサムネイルが表示されますよね。
# 他のファイル形式もサムネイルされますが

このサムネイルをプログラムから最新の情報に更新する方法を教えてください。
現在、画像ファイルを編集するプログラムを作っているのですが、
画像ファイルを更新しても、その画像のサムネイル画像が更新されないのです。

マウスで右クリックすれば「縮小版を最新の情報に更新」を選択すればよいのは
判りましたが、プログラムから更新したいのです。

723 名前:デフォルトの名無しさん :04/08/09 23:10
>>708
GetDC したら、不必要になった時点ですぐに ReleaseDC を呼ぶのが普通。
リソースがもったいない。
それに CS_OWNDC でも非クライアントを描画する必要があるでしょ。

>>716
むやみにキーボードやマウス操作を起こすよりも、操作対象のウィンドウの
種類によって、最適なメッセージを送った方がいいと思う。
ボタンを押すなら WM_COMMAND で BN_CLICKED を親ウィンドウに送るとか。

724 名前:デフォルトの名無しさん :04/08/09 23:43
タイトルバー(CAPTION)をクリックして、離した瞬間を捕らえることって可能でしょうか?
WM_NCLBOTTUNUPで捕らえれそうに思えたんですが、クリックしてからボタンを離すまで
の間隔が1秒程度を超えると、WM_NCLBOTTUNUPが送られてこないみたいなんです。
もうちょっとクリック時間が長くなるとSIZEMOVEメッセージが流れてくるので離した瞬間が
わかるんですが、1秒〜3秒未満でマウスを移動させずにボタンを離されると、SIZEMOVEも
送られないのでお手上げです。

725 名前:デフォルトの名無しさん :04/08/10 00:54
>>722
外してるかもしれないがSHChangeNotifyとか?

726 名前:デフォルトの名無しさん :04/08/10 01:09
>>722
一番簡単なのは、Thumbs.db を削除しちゃうこと。

727 名前:デフォルトの名無しさん :04/08/10 07:40
ウィンドウを、画面へ描画しているのは何のAPIなんでしょうか?
ShowWindow()かと思ってたんですが、WinMain()にそれがなくてもウィンドウは描画されますから
CreateWindow()がオブジェクトの生成から描画までやってるんですかね?

728 名前:デフォルトの名無しさん :04/08/10 09:01
自分で確かめろ

729 名前:デフォルトの名無しさん :04/08/10 10:27
>>708
HDCはループごとに取得するのが決まりのようだと本かサイトかに
書いてあったが……。
途中でHDCが変わらんとも限らんし。

730 名前:デフォルトの名無しさん :04/08/10 10:35
BiginPaintがWM_PAINT時にしか使えないからその影響でGetDC派も毎回取得するようになったんだろう。

731 名前:デフォルトの名無しさん :04/08/10 10:39
>>727
> ウィンドウを、画面へ描画しているのは何のAPIなんでしょうか?

WM_NCPAINTのときのDefWindowProc。
WM_PAINT,WM_NCPAINTはシステムが描画の必要があると判断したときに発行する。
ShowWindow()は状態を変更するだけ。

732 名前:デフォルトの名無しさん :04/08/10 10:54
>>713 もお願いでつ。

733 名前:デフォルトの名無しさん :04/08/10 10:55
>>731
ありがとです。
メッセージループの有無で
ウィンドウが描画されたりされなかったりしたので
デフォルトのプロシージャが何かやってるんだという結論に達してましたが
確信もてますた。
>ShowWindow()は状態の変更するだけ
参考になりました。

734 名前:デフォルトの名無しさん :04/08/10 11:07
>>732
GetAdaptersInfoだ

735 名前:デフォルトの名無しさん :04/08/10 11:12
>>732
GetIpAddrTable()

736 名前:デフォルトの名無しさん :04/08/10 11:42
>>734-735
サンクス。ぐぐったら
ttp://homepage2.nifty.com/spw/tips/GetIpTable.html
が出ますた。

737 名前:デフォルトの名無しさん :04/08/10 16:00
タスクバーのウィンドウプロシージャーを取得しようと思ったのですが、
うまくいきません。

hTaskbar = FindWindow("Shell_TrayWnd", NULL);
TaskbarProc = (WNDPROC)GetWindowLong(hTaskbar , GWL_WNDPROC);

FindWindowでハンドルは取得できているのですが、プロシージャーの取得で
失敗してしまいます。どうしたらいいのでしょうか。

738 名前:デフォルトの名無しさん :04/08/10 16:33
>>737
Shell のプロセス内で実行してますか?

739 名前:737 :04/08/10 16:49
>>738
CoCreateInstanceを使ってやるんでしょうか・・・。
はじめて聞いてよくわからないので勉強してきます。

740 名前:デフォルトの名無しさん :04/08/10 17:21
180度回転した文字を表示するにはどうすればよろしいのでしょうか?
「小」という字だったら 「ヽ|ノ」みたいな感じで。
ちなみに、普通の文字の出力方法なら分かります。

741 名前:デフォルトの名無しさん :04/08/10 17:32
LOGFONT構造体の説明をよーく読む。

742 名前:デフォルトの名無しさん :04/08/10 17:33
>>740
nEscapement かな?

743 名前:デフォルトの名無しさん :04/08/10 17:34
CreateFontのnOrientation

744 名前:デフォルトの名無しさん :04/08/10 17:39
!分かりました。ありがとうございました。

745 名前:デフォルトの名無しさん :04/08/10 17:49
!分かりました。ありがとうございました。
 == わかりません。くそやろう。

いや、暑くてさ…

746 名前:デフォルトの名無しさん :04/08/10 18:50
RegOpenKeyExでキーを開くとき、キー名で
::RegOpenKeyEx(HKEY_CLASSES_ROOT, "\\\\\\\\AudioCD", 0, KEY_ALL_ACCESS, &key);
のように前後にたくさん '\\' を指定すると開けるときと
「パラメータが間違っています(0x57)」が帰ってくるときの二通りがあります。
規則も良く分からないのですが、この辺の事情知っている人いませんか?

VC6SP5+PPack,Win2kSP4

747 名前:744 :04/08/10 19:56
>>745
そんなつもりじゃなかったんですけど・・・。
!(分かりました。ありがとうございました。== わかりません。くそやろう。)
です。

748 名前:デフォルトの名無しさん :04/08/10 20:16
>>747
!(false)

749 名前:デフォルトの名無しさん :04/08/10 20:17
>>747
すまんすまん、ジョークジョーク
いや、暑くてさ

750 名前:一星 ◆Cppn/.YI3. :04/08/10 20:31
ダブルバッファリングをやってみたんだが、
なぜか2ピクセルほどずれ、空白が出来てしまう。
そこに点か何かを描画しようとしたが、送信範囲にはいっていないのか、
何も描画されない。
WM_PAINTが送られてきた時のBitBltの引数をいじってみたりしたが、
うまくいかない。
考えられる理由はある?
この説明だけではわからないというのなら、テストコード載せるけど。


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