文字框建立方法

2021-08-29 18:44:23 字數 2815 閱讀 6663

第一次寫部落格,盡量以後寫的好一點!

#include

static int createposx, createposy;//插入符的位置

static int ncaretoffsety;//y的位置

static tchar *pcharmath;//字元緩衝區

static textmetric tm;//字型的資訊,比如字型的高和寬

static int ncharwide, ncharhigh;//字元的寬度和高度

static int ntvwide, ntvhigh;//視窗的寬度和高度

static int ncharline, ncharrow;//每行每列字元的數目

#define buffer(x,y) *(pcharmath+y*ncharline+x)//二維陣列的某一位置

static lresult callback drawproc(hwnd, uint, wparam, lparam);//訊息處理函式宣告

static hwnd drawedit(hwnd hwnd, int x, int y, int wide, int high, int id)

hwnd = createwindow(text("文字框"), null, ws_child | ws_visible, x, y, wide, high, hwnd, null, hinst, null);

return hwnd;

}static void drawchar(hdc hdc, int x, int y, tchar *str, int num)

static lresult callback drawproc(hwnd hwnd, uint msg, wparam wparam, lparam lparam)

pcharmath = (tchar*)malloc(ncharline*ncharrow);

if (pcharmath)}}

setcaretpos(0, ncaretoffsety);

return 0;

case wm_lbuttondown:

setfocus(hwnd);

break;

case wm_keydown:

switch (wparam)

buffer(ncharline - 1, createposy) = ' ';

hidecaret(hwnd);

hdc = getdc(hwnd);

drawchar(hdc, createposx*ncharwide, createposy*ncharhigh, &buffer(createposx, createposy), ncharline - createposx / ncharwide);

releasedc(hwnd, hdc);

showcaret(hwnd);

break;

}setcaretpos(createposx*ncharwide, createposy*ncharhigh + ncaretoffsety);

return 0;

case wm_showwindow:

setfocus(hwnd);

break;

case wm_setfocus:

createcaret(hwnd, null, 2, ncharhigh);

setcaretpos(createposx*ncharwide, createposy*ncharline + ncaretoffsety);

showcaret(hwnd);

break;

case wm_killfocus:

case wm_destroy:

hidecaret(hwnd);//隱藏插入符

destroycaret();//傳送關閉訊息

break;

case wm_char:

switch (wparam)

break;

case 0x09:

do while (createposx % 4 != 0);

break;

case 0x0d:

createposx = 0;

if (++createposy == ncharrow)

break;

case 0x1b:

case 0x0a:

messagebeep((uint)-1);

break;

default:

buffer(createposx, createposy) = (tchar)wparam;

hidecaret(hwnd);

hdc = getdc(hwnd);

drawchar(hdc, createposx*ncharwide, createposy*ncharhigh, &buffer(createposx, createposy), -1);

releasedc(hwnd, hdc);

showcaret(hwnd);

if (++createposx == ncharline)

}break;

}setcaretpos(createposx*ncharwide, createposy*ncharhigh + ncaretoffsety);

return 0;

case wm_paint:

endpaint(hwnd, &ps);

}return 0;

default:

break;

}return defwindowproc(hwnd, msg, wparam, lparam);

}

建立文字框背景

1.1利用bitblt建立位圖背景 只會按位圖原始尺寸進行載入 bool cle 11 3view onerasebkgnd cdc pdc 1.2利用strtchblt建立位圖背景 bool cle 11 3view onerasebkgnd cdc pdc todo 在此新增訊息處理程式 和 或...

文字框日曆

建立頭部 document.write 734 8 建立星期條目 document.write for i 0 i 7 i document.write week i document.write 建立日期條目 document.write for i 0 i 6 i document.write ...

文字框排版

文字框排版 我們之前學看文件的排版設定技巧,那麼還有乙個是文字框的排版設定,除了前面介紹到的段落排版以外,我們經常用到的還有文字框的排版,文字框排版在現實當中實踐應用包括了年會主持詞製作手卡的一些工作場景,那麼我們接下來就製作一下,首先在乙個空白文件中我們插入乙個文字框。插入文字框之後,清楚當中的預...