• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:次のようにEditを作成し)

Editコントロールの表示位置を取得する方法

このQ&Aのポイント
  • Editコントロールの表示位置を取得する方法について教えてください。
  • 具体的には、SetWindowTextで大容量の文字列を送った後、エディット画面の表示位置を取得したいです。
  • どのようなメッセージを送れば、表示画面の位置を取得できるのでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • taka_tetsu
  • ベストアンサー率65% (1020/1553)
回答No.1

EM_GETFIRSTVISIBLELINE

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • CreateWindowについて

    hE=CreateWindow("EDIT",NULL,WS_CHILD|WS_VISIBLE|ES_MULTILINE|ES_AUTOVSCROLL|WS_VSCROLL|ES_READONLY,0,0,100,100,hW,(HMENU)ID_EDIT,hI,NULL); のようにES_READONLYを入れるとエジットコントロールの背面が灰色になってしまうのですがES_READONLYを入れる前のように背面を白いままにしたいのですが何か方法はありませんか。

  • テキストエディタならばCreateWindow

    を使って hEdit = CreateWindow("EDIT",NULL,WS_CHILD| WS_VISIBLE|ES_WANTRETURN|ES_MULTILINE| ES_AUTOVSCROLL|WS_VSCROLL|ES_AUTOHSCROLL| WS_HSCROLL, 0,0,rc.right,rc.bottom,hWnd,(HMENU)ID_EDIT, hInst,NULL); として char Str[1048576]にテキストをおさめ SetWindowText(hEdit,Str); とすればスクロール関数も使う必要なくカレットもでて文字を簡単に編集できるのですが テキストビューワならば文字を変更する必要が無くカレットもでると困るのでこれが使えません また↓や↑で1行スクロールしないといけません (エディタの場合はカレットが上下端にきたときにスクロールだからちょっと違う) DrawTextだとスクロール関数を使わないといけないような気がするし・・・ 見るだけのテキストビューワを作るのに適した方法やC言語SDK関数を教えてください

  • 1つのウィンドウに2つのエディット

    case WM_CREATE:  GetClientRect(hWnd, &rc);  EditL = CreateWindow(  TEXT("EDIT") , NULL ,  WS_CHILD | WS_VISIBLE | WS_HSCROLL | WS_VSCROLL |  ES_AUTOHSCROLL | ES_AUTOVSCROLL |  ES_LEFT | ES_MULTILINE ,  0 , 0 , rc.right / 2 , rc.bottom , hWnd , (HMENU)1 ,  ((LPCREATESTRUCT)(lParam))->hInstance , NULL);  EditR = CreateWindow(  TEXT("EDIT") , NULL ,  WS_CHILD | WS_VISIBLE | WS_HSCROLL | WS_VSCROLL |  ES_AUTOHSCROLL | ES_AUTOVSCROLL |  ES_LEFT | ES_MULTILINE ,  rc.left / 2 , 0 , rc.right , rc.bottom , hWnd , (HMENU)2 ,  ((LPCREATESTRUCT)(lParam))->hInstance , NULL);  return FALSE; とすると、1つのエディットしか表示されません。 また、 case WM_SIZE:  GetClientRect(edit, &rc); MoveWindow(edit, rc.left, rc.top, rc.right, rc.bottom, TRUE); として、ウィンドウサイズが変更された時に どちらのエディットもクライアント領域にあわせたつもりなのですが、 サイズ変更で左側のエディットがスクロールバーの幅の分だけ 縮小されてしまいます。 どこをどのように直したらよろしいのでしょうか? 宜しくお願いします。 #Win98 & VC++6.0 & SDK で作成しています。

  • VS2008でEDIT今トーロールがつくれない

    VCを学習中です。 書籍の内容をVS2008(VC)で、EDITコントロールを実装使用しますができなくて 困っています。 内容は、 1 VS2008の機能でスケルトンを作成  (メニュー画面とaboutが表示されるものです。MFCとATLは使用していません。) 2 WM_CREATEをWndProcに作成し、CreateWindowを記述 3 実行するとEditコントロールの中にEditコントロールができて、Editコントロールとしては 機能しません。 どなたか、この謎と解決策を教えてください。 ソースの一部分を掲載します。 LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) { int wmId, wmEvent; PAINTSTRUCT ps; HDC hdc; static HWND hwndEdit; switch (message) { case WM_CREATE: hwndEdit = CreateWindow(TEXT("edit"),L"abcdefghijkl", WS_CHILD|WS_VISIBLE|WS_HSCROLL|WS_VSCROLL |WS_BORDER|ES_LEFT|ES_MULTILINE |ES_AUTOHSCROLL|ES_AUTOVSCROLL, 100,100,500,500, hWnd, (HMENU)ID_EDIT, ((LPCREATESTRUCT)lParam)->hInstance,NULL); return 0; case WM_SETFOCUS:

  • EDIT 作成時のちらつき防止について

    Enterキーを押下された時に画面にEDITBOXを表示し、 再度Enterキーを押下されたらEDITBOXを消す。 という処理を行っているのですが、表示する時も消す時も画面のちらつきが発生します。 このちらつきを防ぐにはどうしたらいいでしょうか? Enterキーが押されたときに、毎回、CreateWindowし、SetWindowLongでWNDPROCを設定しています。 mainWndProc関数の一部 mHwEnter = CreateWindow("EDIT", "ここに入力", WS_CHILD | WS_VISIBLE | WS_BORDER, 173, 380, 12 * 16, 16, mHwMain, NULL, hInst, NULL); mainWndProc = (WNDPROC)GetWindowLong(mHwEnter, GWL_WNDPROC); SetWindowLong(mHwEnter, GWL_WNDPROC, (LONG)WndProcEnter); 再度Enterキーが押されたとき ウインドウを破棄しています。 WndProcEnter関数の一部 SetWindowLong (mHwEnter, GWL_WNDPROC, (LONG)mainWndProc); DestroyWindow (mHwEnter); mHwEnter = NULL; EDITの表示、消去の仕方はWebで調べたのですが、間違っていたらご指摘お願いします。 また、メイン(親)画面は20FPSくらいで描画し続けています。MFCやDirectXは使用していません。 ちらつき防止のわかる方がいたら回答お願いします。

  • ボタンの文字の大きさを変更したい

    CreateWindow によるボタンを作成してみたのですが、 ボタンラベルとして貼る以下の "明朝" という文字の大きさを 変えるにはどうすればいいのでしょうか。 hButtonWnd1 = CreateWindow("BUTTON", "明朝",               S_CHILD | WS_VISIBLE | BS_PUSHBUTTON,               20, 20, 100, 30,               hWnd,               (HMENU)ID_MI,               hInst,               NULL);

  • ListBoxコントロール

    hLB1=CreateWindow ("LISTBOX","",WS_CHILD|WS_VISIBLE|LBS_STANDARD, 0,0,300,150,hwnd,(HMENU)1,cs->hInstance,NULL); hLB2=CreateWindow ("LISTBOX","",WS_CHILD|WS_VISIBLE|LBS_STANDARD, 0,160,300,150,hwnd,(HMENU)2,cs->hInstance,NULL); という風に2つのListBoxコントロールを作っているサンプルを見たのですが (HMENU)1と(HMENU)2のところをともにNULLにしたら問題なのでしょうか。

  • Win32APIでのエディットボックスの文字化け

    Win32APIでウィンドウズプログラムを組んでいます。 以下のコードで、エディットボックスへの文字列表示が文字化けします。 <エディットボックスの作成> hWndEdit = CreateWindowEx( WS_EX_CLIENTEDGE, _T("EDIT"), NULL, ES_LEFT | ES_AUTOHSCROLL | ES_MULTILINE | ES_READONLY | ES_AUTOHSCROLL | WS_TABSTOP | WS_VISIBLE | WS_CHILD, (int)(WINDOW_W * 0.01), 30, (int)(WINDOW_W * 0.8), (clientRect.bottom-clientRect.top) - 35, hWndMain, (HMENU)IDC_EDITLOG, hInstance, NULL ); <フォントの設定> HFONT hFont = (HFONT)GetStockObject(DEFAULT_GUI_FONT); SendMessage( hWndEdit, WM_SETFONT, (WPARAM)hFont, TRUE ); <出力文字列の設定> std::ostringstream stream; stream << "************ Start TEST ************\n"; std::string strOut = stream.str(); <出力> SetWindowText( hWndEdit, (LPCTSTR)(strOut.c_str()) ); デバッガでの、strOutは、文字化けせずに表示されます。(strOut[0] が、'*'となっている) どこか確認したらよい場所をアドバイスいただけますか?

  • Tabでのフォーカス(win32)

    edit = CreateWindow( TEXT("EDIT") , NULL , WS_CHILD | WS_VISIBLE | WS_TABSTOP | ES_NUMBER | ES_LEFT , 0 , 0 , 35 , 18 , hWnd , (HMENU)1 , ((LPCREATESTRUCT)(lParam))->hInstance , NULL ); でエディットコントロールを作成しました。 フォーカスがエディットコントロールにある時、TABキーで フォーカスをなくしたいのですが、どうしたらよいでしょうか? デバッガーで追ってみると、WM_KEYDOWNがウィンドウに送られていませんでした。

  • 水平スクロールができない。

    hLB=CreateWindow ("LISTBOX",NULL,WS_CHILD|WS_VISIBLE|WS_VSCROLL|WS_HSCROLL|LBS_MULTIPLESEL,0,0,400,400,hW,NULL,hI,NULL); SendMessage(hLB,LB_SETHORIZONTALEXTENT,256,0); i=(int)SendMessage(hLB,LB_GETHORIZONTALEXTENT ,0,0); TextOut(hD,300,0,s,strlen(itoa(i,s,10))); (ただしchar s[99];と宣言されている) として200文字の文字列を200個リストボックスに格納すると 垂直スクロールバーはできるのですが水平スクロールバーができず水平方向にオーバーフローした文字を見るためのスクロールもできません。 しかしTextOutの結果は256になります。 どうすれば水平スクロールバーを出すことができ水平スクロールできるようになるのでしょうか。

このQ&Aのポイント
  • 私は24歳社会人で、彼と3年半お付き合いしています。昨日、妊娠が発覚しました。彼の収入はそれほど多くはなく、お互い実家暮らしで、もうすぐ同棲しようと話していました。しかし、彼に中絶するよう言われてしまい、戸惑っています。
  • 彼は父親になる実感が湧かないと言っており、私はどうすべきか決断できません。一緒に頑張って育てるつもりだと思っていたのに、彼の返答に嫌な感情が湧いてしまいます。
  • 赤ちゃんを授かった喜びと同時に、未来への不安も感じています。彼との関係や将来を考えると、どうしていいのか分かりません。私の気持ちを伝えたいけれど、彼の言葉からの精神的なダメージで、どうすべきなのか困惑しています。
回答を見る

専門家に質問してみよう