ダイアログにエデットを配置し,数値を入力してもらうと, その数値のTab間隔になる。
ダイアログが閉じられるまで設定したTab間隔を維持する(word,メモ帳,その他で活用で
きる)プログラムを作りたいですが。
Tab幅を変える関数を教えてください。よろしくお願いします。
>Tab幅を変える関数を教えてください。
EM_SETTABSTOPSをSendMessageすると変わります。
MFCならCEdit::SetTabStops
※ということで、必ず開発環境は記述してください。
OS,Visual Studioのバージョン,プロジェクトの種類等。
[MSDN]CEdit::SetTabStops
http://msdn2.microsoft.com/ja-jp/library/8ebb2696(vs.80).aspx
[MSDN](英語)EM_SETTABSTOPS
http://msdn2.microsoft.com/en-us/library/ms672104.aspx
回答ありがとうございます!
URLまで教えていただきましてありがとうございます。
よく考えたら先のプログラムは難しそうなので、(他プログラムのハンドル取得等)
自アプリだけのTab設定にしてみたんですがうまくいきません。
作成したんですがTab幅に変更がない見たいんですが
どこが間違ってるかよろしければ教えてください。
LRESULT CALLBACK WndProc(HWND hwnd , UINT msg , WPARAM wp , LPARAM lp) {
HWND a;
INT tab=14, tab1=8;
switch (msg) {
case WM_DESTROY:
SendMessage( a, EM_SETTABSTOPS, 1, (LPARAM)&tab1);
PostQuitMessage(0);
return 0;
case WM_CREATE:
a=CreateWindow(
TEXT(EDIT) , NULL ,
WS_CHILD |WS_VISIBLE|WS_HSCROLL | WS_VSCROLL |
ES_AUTOHSCROLL|ES_AUTOVSCROLL|
ES_LEFT|ES_MULTILINE ,
0 , 0 , 400 , 200 , hwnd , (HMENU)1 ,
((LPCREATESTRUCT)(lp))->hInstance , NULL
);
return 0;
case WM_COMMAND:
if( LOWORD(wp)==1 && HIWORD(wp)== EN_SETFOCUS){
SendMessage( a, EM_SETTABSTOPS, 1, (LPARAM)&tab);
return TRUE;
}
return 0;
}
return DefWindowProc(hwnd , msg , wp , lp);
}
> HWND a;
staticにしないとCreateWindowしたウィンドウハンドルを保持できないのでは?
早速回答ありがとうございます!
添削していただきありがとうございます。
いろいろ教えていただきどうもありがとうございます!