📄 igrid.c
字号:
SelectObject (hdcMem, hBitmap);
SetMapMode (hdcMem, GetMapMode (hdc));
GetObject(hBitmap, sizeof(BITMAP), (LPSTR)&bm);
ptSize.x = bm.bmWidth;
ptSize.y = bm.bmHeight;
DPtoLP(hdc, &ptSize, 1);
ptOrg.x = 0;
ptOrg.y = 0;
DPtoLP(hdcMem, &ptOrg, 1);
BitBlt(hdc, xStart, yStart, ptSize.x, ptSize.y,
hdcMem, ptOrg.x, ptOrg.y, SRCCOPY);
DeleteDC(hdcMem);
}
BOOL FAR PASCAL _export RectDlgProc(HWND hDlg, UINT message, UINT wParam,
LONG lParam)
{
static double tepsilon = 1.0, tsigma = 0.0, tmu = 1.0, tsigma_mu = 0.0;
static double txloc = (DEFAULTPAPERLEFT + DEFAULTPAPERRIGHT) / 2.0;
static double tyloc = (DEFAULTPAPERTOP + DEFAULTPAPERBOTTOM) / 2.0;
static double tlength1 = (DEFAULTPAPERRIGHT - DEFAULTPAPERLEFT)/25.0;
static double tlength2 = (DEFAULTPAPERTOP - DEFAULTPAPERBOTTOM) / 25.0;
static int tdiv1 = 4, tdiv2 = 4;
static double torientatn = 0.0;
HWND hep, hsigma, hmu, hmu_sigma, hxloc, hyloc, hlength1, hlength2,
hdiv1, hdiv2, horientatn;
HDC hdc;
PAINTSTRUCT ps;
dPOINT gcenter;
block *tmpblk;
COUNT totalcount, nscount;
HMENU hMenu ;
switch(message)
{
case WM_INITDIALOG:
if(rectblockselected == NULL){
sprintf(sepsilon, "%lg", tepsilon);
sprintf(ssigma, "%lg", tsigma);
sprintf(smu, "%lg", tmu);
sprintf(ssigma_mu,"%lg", tsigma_mu);
sprintf(sxloc, "%lg", txloc);
sprintf(syloc, "%lg", tyloc);
sprintf(slength1, "%lg", tlength1);
sprintf(slength2, "%lg", tlength2);
sprintf(sdiv1, "%d", tdiv1);
sprintf(sdiv2, "%d", tdiv2);
sprintf(sorientatn, "%lg", torientatn);
hep = GetDlgItem(hDlg, EPSILON);
SetWindowText(hep, sepsilon);
hsigma = GetDlgItem(hDlg, SIGMA);
SetWindowText(hsigma, ssigma);
hmu = GetDlgItem(hDlg, MU);
SetWindowText(hmu, smu);
hmu_sigma = GetDlgItem(hDlg, SIGMA_MU);
SetWindowText(hmu_sigma, ssigma_mu);
hyloc = GetDlgItem(hDlg, YLOC);
SetWindowText(hyloc, syloc);
hxloc = GetDlgItem(hDlg, XLOC);
SetWindowText(hxloc, sxloc);
hlength1 = GetDlgItem(hDlg, WIDTH);
SetWindowText(hlength1, slength1);
hlength2 = GetDlgItem(hDlg, HEIGHT);
SetWindowText(hlength2, slength2);
hdiv1 = GetDlgItem(hDlg, COLUMN);
SetWindowText(hdiv1, sdiv1);
hdiv2 = GetDlgItem(hDlg, ROW);
SetWindowText(hdiv2, sdiv2);
horientatn = GetDlgItem(hDlg, ORIENTATN);
SetWindowText(horientatn, sorientatn);
}
else{
tepsilon = rectblockselected->epsilon;
sprintf(sepsilon, "%lg", tepsilon);
tsigma = rectblockselected->sigma;
sprintf(ssigma, "%lg", tsigma);
tmu = rectblockselected->mu;
sprintf(smu, "%lg", tmu);
tsigma_mu = rectblockselected->sigma_mu;
sprintf(ssigma_mu, "%lg", tsigma_mu);
txloc = rectblockselected->xloc;
sprintf(sxloc, "%lg", txloc);
tyloc = rectblockselected->yloc;
sprintf(syloc, "%lg", tyloc);
tlength1 = rectblockselected->length1;
sprintf(slength1, "%lg", tlength1);
tlength2 = rectblockselected->length2;
sprintf(slength2, "%lg", tlength2);
tdiv1 = rectblockselected->div1;
sprintf(sdiv1, "%d", tdiv1);
tdiv2 = rectblockselected->div2;
sprintf(sdiv2, "%d", tdiv2);
torientatn = rectblockselected->angle;
sprintf(sorientatn, "%lg", torientatn);
hep = GetDlgItem(hDlg, EPSILON);
SetWindowText(hep, sepsilon);
hsigma = GetDlgItem(hDlg, SIGMA);
SetWindowText(hsigma, ssigma);
hmu = GetDlgItem(hDlg, MU);
SetWindowText(hmu, smu);
hmu_sigma = GetDlgItem(hDlg, SIGMA_MU);
SetWindowText(hmu_sigma, ssigma_mu);
hyloc = GetDlgItem(hDlg, YLOC);
SetWindowText(hyloc, syloc);
hxloc = GetDlgItem(hDlg, XLOC);
SetWindowText(hxloc, sxloc);
hlength1 = GetDlgItem(hDlg, WIDTH);
SetWindowText(hlength1, slength1);
hlength2 = GetDlgItem(hDlg, HEIGHT);
SetWindowText(hlength2, slength2);
hdiv1 = GetDlgItem(hDlg, COLUMN);
SetWindowText(hdiv1, sdiv1);
hdiv2 = GetDlgItem(hDlg, ROW);
SetWindowText(hdiv2, sdiv2);
horientatn = GetDlgItem(hDlg, ORIENTATN);
SetWindowText(horientatn, sorientatn);
}
return TRUE;
case WM_COMMAND:
switch(wParam)
{
case EPSILON:
switch(HIWORD(lParam)){
case EN_KILLFOCUS:
tepsilon = atof((const char *)sepsilon);
if(tepsilon <= 1.0){
SetDlgItemText(hDlg, EPSILON, "1.0");
tepsilon = 1.0;
}
break;
default:
GetDlgItemText(hDlg, EPSILON, sepsilon, 12);
break;
}
return TRUE;
case SIGMA:
switch(HIWORD(lParam)){
case EN_KILLFOCUS:
tsigma = atof((const char *)ssigma);
if(tsigma < 0){
SetDlgItemText(hDlg, SIGMA, "0.0");
tsigma = 0.0;
}
break;
default:
GetDlgItemText(hDlg, SIGMA, ssigma, 12);
break;
}
return TRUE;
case MU:
switch(HIWORD(lParam)){
case EN_KILLFOCUS:
tmu = atof((const char *)smu);
if(tmu < 1.0){
SetDlgItemText(hDlg, MU, "1.0");
tmu = 1.0;
}
break;
default:
GetDlgItemText(hDlg, MU, smu, 12);
break;
}
return TRUE;
case SIGMA_MU:
switch(HIWORD(lParam)){
case EN_KILLFOCUS:
tsigma_mu = atof((const char *)ssigma_mu);
if(tsigma_mu < 0.0 ){
SetDlgItemText(hDlg, SIGMA_MU, "0.0");
tsigma_mu = 0.0;
}
break;
default:
GetDlgItemText(hDlg, SIGMA_MU, ssigma_mu, 12);
break;
}
return TRUE;
case XLOC:
switch(HIWORD(lParam)){
case EN_KILLFOCUS:
txloc = atof((const char *)sxloc);
if(txloc < papersize.left){
sprintf(sxloc, "%lg", papersize.left);
SetDlgItemText(hDlg, XLOC, sxloc);
txloc = papersize.left;
}
if(txloc > papersize.right){
sprintf(sxloc, "%lg", papersize.right);
SetDlgItemText(hDlg, XLOC, sxloc);
txloc = papersize.right;
}
break;
default:
GetDlgItemText(hDlg, XLOC, sxloc, 12);
break;
}
case YLOC:
switch(HIWORD(lParam)){
case EN_KILLFOCUS:
tyloc = atof((const char *)syloc);
if(tyloc < papersize.bottom){
sprintf(syloc, "%lg", papersize.bottom);
SetDlgItemText(hDlg, YLOC, syloc);
tyloc = papersize.bottom;
}
if(tyloc > papersize.top){
sprintf(syloc, "%lg", papersize.top);
SetDlgItemText(hDlg, YLOC, syloc);
tyloc = papersize.top;
}
break;
default:
GetDlgItemText(hDlg, YLOC, syloc, 12);
break;
}
return TRUE;
case WIDTH:
switch(HIWORD(lParam)){
case EN_KILLFOCUS:
tlength1 = atof((const char *)slength1);
if(tlength1 < 0.0 ){
sprintf(slength1, "%lg", paperwidth/50.0);
SetDlgItemText(hDlg, WIDTH, slength1);
tlength1 = paperwidth/50.0;
}
break;
default:
GetDlgItemText(hDlg, WIDTH, slength1, 12);
break;
}
return TRUE;
case HEIGHT:
switch(HIWORD(lParam)){
case EN_KILLFOCUS:
tlength2 = atof((const char *)slength2);
if(tlength2 < 0.0 ){
sprintf(slength2, "%lg", paperheight/50.0);
SetDlgItemText(hDlg, HEIGHT, slength2);
tlength2 = paperheight/50.0;
}
break;
default:
GetDlgItemText(hDlg, HEIGHT, slength2, 12);
break;
}
return TRUE;
case COLUMN:
switch(HIWORD(lParam)){
case EN_KILLFOCUS:
tdiv1 = atoi((const char *)sdiv1);
if(tdiv1 <= 0 ){
SetDlgItemText(hDlg, COLUMN, "1");
tdiv1 = 1;
}
break;
default:
GetDlgItemText(hDlg, COLUMN, sdiv1, 12);
break;
}
return TRUE;
case ROW:
switch(HIWORD(lParam)){
case EN_KILLFOCUS:
tdiv2 = atoi((const char *)sdiv2);
if(tdiv2 <= 0 ){
SetDlgItemText(hDlg, ROW, "2");
tdiv2 = 2;
}
break;
default:
GetDlgItemText(hDlg, ROW, sdiv2, 12);
break;
}
return TRUE;
case ORIENTATN:
switch(HIWORD(lParam)){
case EN_KILLFOCUS:
torientatn = atof((const char *)sorientatn);
if((torientatn < -360.0) || (torientatn > 360.0)){
SetDlgItemText(hDlg, ORIENTATN, "0.0");
torientatn = 0.0;
}
break;
default:
GetDlgItemText(hDlg, ORIENTATN, sorientatn, 12);
break;
}
return TRUE;
case BYMOUSE:
EndDialog(hDlg, 0);
if(rectblockselected != NULL){
rectblockselected->disconnect();
if(selected.remove(rectblockselected) == NO)
unselected.remove(rectblockselected);
InvalidateRect(hwndPaper, NULL, TRUE);
rectblockselected = NULL;
}
tmpblk = new rectblk(tepsilon, tsigma, tmu, tsigma_mu,
txloc, tyloc, tlength1, tlength2, tdiv1, tdiv2, torientatn);
addon.insert(tmpblk);
addon.center(&gcenter);
adder.setcenter(gcenter);
usermode->releasetoolbar();
internalmode = mouse = &adder;
return TRUE;
case BYCOORD:
EndDialog(hDlg, 0);
if(rectblockselected != NULL){
rectblockselected->disconnect();
if(selected.remove(rectblockselected) == NO)
unselected.remove(rectblockselected);
InvalidateRect(hwndPaper, NULL, TRUE);
rectblockselected = NULL;
}
tmpblk = new rectblk(tepsilon, tsigma, tmu, tsigma_mu,
txloc, tyloc, tlength1, tlength2, tdiv1, tdiv2, torientatn);
addon.insert(tmpblk);
adjustallowablesnap();
addon.clearconnectmask();
unselected.clearconnectmask();
selected.clearconnectmask();
totalcount = addon.connect(unselected);
nscount = addon.connect(selected);
totalcount.node += nscount.node;
totalcount.side += nscount.side;
addon.transfer(unselected);
hdc = GetDC(hwndPaper);
setdrawingcoord(hdc);
ReleaseDC(hwndPaper, hdc);
InvalidateRect(hwndPaper, NULL, TRUE);
sprintf(connectmessage, "Connection: node:%d side:%d .",
totalcount.node, totalcount.side);
SetWindowText(hwndMessage3, connectmessage);
hMenu = GetMenu (hwndMain) ;
EnableMenuItem (hMenu, IDM_GENERATE, MF_ENABLED);
DrawMenuBar(hwndMain);
return TRUE;
case DLGCANCEL:
EndDialog(hDlg, 0);
rectblockselected = NULL;
return TRUE;
}
break;
}
return FALSE;
}
BOOL FAR PASCAL _export QuadDlgProc(HWND hDlg, UINT message, UINT wParam,
LONG lParam)
{
static double tepsilon = 1.0, tsigma = 0.0, tmu = 1.0, tsigma_mu = 0.0;
static double txloc = (DEFAULTPAPERLEFT + DEFAULTPAPERRIGHT) / 2.0;
static double tyloc = (DEFAULTPAPERTOP + DEFAULTPAPERBOTTOM) / 2.0;
static double tcornerx1 = (DEFAULTPAPERRIGHT - DEFAULTPAPERLEFT) / 25.0, tcornery1 = 0.0;
static double tcornerx2 = (DEFAULTPAPERRIGHT - DEFAULTPAPERLEFT) * 3.0 / 100.0;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -