tab幅 – プログラミング – Home

通知
すべてクリア

[解決済] tab幅


起動戦士
 起動戦士
(@起動戦士)
ゲスト
結合: 17年前
投稿: 3
Topic starter  

ダイアログにエデットを配置し,数値を入力してもらうと, その数値のTab間隔になる。
ダイアログが閉じられるまで設定したTab間隔を維持する(word,メモ帳,その他で活用で
きる)プログラムを作りたいですが。

Tab幅を変える関数を教えてください。よろしくお願いします。


引用未解決
トピックタグ
Blue
 Blue
(@Blue)
ゲスト
結合: 20年前
投稿: 1467
 

>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


返信引用
起動戦士
 起動戦士
(@起動戦士)
ゲスト
結合: 17年前
投稿: 3
Topic starter  

回答ありがとうございます!
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);
}


返信引用
Blue
 Blue
(@Blue)
ゲスト
結合: 20年前
投稿: 1467
 

> HWND a;
staticにしないとCreateWindowしたウィンドウハンドルを保持できないのでは?


返信引用
起動戦士
 起動戦士
(@起動戦士)
ゲスト
結合: 17年前
投稿: 3
Topic starter  

早速回答ありがとうございます!
添削していただきありがとうございます。
いろいろ教えていただきどうもありがとうございます!


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました