refactoring
This commit is contained in:
parent
9331176838
commit
ed688c55b7
12
client.cpp
12
client.cpp
@ -39,15 +39,21 @@ int main(int argc, char *argv[])
|
|||||||
{
|
{
|
||||||
unsigned char cmd = 0;
|
unsigned char cmd = 0;
|
||||||
int ret = recv(serverSocket, (char*)&cmd, 1, 0);
|
int ret = recv(serverSocket, (char*)&cmd, 1, 0);
|
||||||
if (0 == ret) done = true;
|
if (0 == ret)
|
||||||
|
{
|
||||||
|
done = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
switch (cmd)
|
switch (cmd)
|
||||||
{
|
{
|
||||||
case 1:
|
case 1:
|
||||||
printf("yes, master!\n");
|
printf("yes, master!\n");
|
||||||
unsigned char cmd = 0x1;
|
{
|
||||||
send(serverSocket, (char*)&cmd, 1, 0);
|
unsigned char cmd = 0x1;
|
||||||
|
send(serverSocket, (char*)&cmd, 1, 0);
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
|
|||||||
@ -1,4 +1,5 @@
|
|||||||
#include "network.h"
|
#include "network.h"
|
||||||
|
#include <stdio.h>
|
||||||
|
|
||||||
bool initNetwork()
|
bool initNetwork()
|
||||||
{
|
{
|
||||||
@ -20,11 +21,14 @@ SOCKET clientConnect(SOCKET serverSocket)
|
|||||||
{
|
{
|
||||||
SOCKET clientSocket = accept(serverSocket, NULL, NULL);
|
SOCKET clientSocket = accept(serverSocket, NULL, NULL);
|
||||||
if (INVALID_SOCKET == clientSocket) return INVALID_SOCKET;
|
if (INVALID_SOCKET == clientSocket) return INVALID_SOCKET;
|
||||||
|
printf("%x\n", clientSocket);
|
||||||
|
|
||||||
const char *expectedGreeting = clientGreeting;
|
const char *expectedGreeting = clientGreeting;
|
||||||
char recievedGreeting[128];
|
char recievedGreeting[128];
|
||||||
|
|
||||||
recv(clientSocket, recievedGreeting, int(strlen(expectedGreeting)), 0);
|
while(recv(clientSocket, recievedGreeting, int(strlen(expectedGreeting)), 0) < 0) Sleep(1);
|
||||||
|
|
||||||
|
fprintf(stderr, "got: \"%s\"\n", recievedGreeting);
|
||||||
if (strncmp(expectedGreeting, recievedGreeting, strlen(expectedGreeting)) != 0)
|
if (strncmp(expectedGreeting, recievedGreeting, strlen(expectedGreeting)) != 0)
|
||||||
{
|
{
|
||||||
closesocket(clientSocket);
|
closesocket(clientSocket);
|
||||||
|
|||||||
@ -7,13 +7,14 @@
|
|||||||
#define ID_FILE 40001
|
#define ID_FILE 40001
|
||||||
#define ID_FILE_EXIT 40002
|
#define ID_FILE_EXIT 40002
|
||||||
#define ID_EDIT 40003
|
#define ID_EDIT 40003
|
||||||
|
#define ID_EDIT_SETROWS 40007
|
||||||
|
|
||||||
// Next default values for new objects
|
// Next default values for new objects
|
||||||
//
|
//
|
||||||
#ifdef APSTUDIO_INVOKED
|
#ifdef APSTUDIO_INVOKED
|
||||||
#ifndef APSTUDIO_READONLY_SYMBOLS
|
#ifndef APSTUDIO_READONLY_SYMBOLS
|
||||||
#define _APS_NEXT_RESOURCE_VALUE 103
|
#define _APS_NEXT_RESOURCE_VALUE 103
|
||||||
#define _APS_NEXT_COMMAND_VALUE 40004
|
#define _APS_NEXT_COMMAND_VALUE 40008
|
||||||
#define _APS_NEXT_CONTROL_VALUE 1001
|
#define _APS_NEXT_CONTROL_VALUE 1001
|
||||||
#define _APS_NEXT_SYMED_VALUE 101
|
#define _APS_NEXT_SYMED_VALUE 101
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
18
syncdata.h
18
syncdata.h
@ -39,34 +39,34 @@ public:
|
|||||||
return lower->second.value + delta * d;
|
return lower->second.value + delta * d;
|
||||||
};
|
};
|
||||||
|
|
||||||
bool isKeyFrame(int row) const
|
bool isKeyFrame(size_t row) const
|
||||||
{
|
{
|
||||||
return keyFrames.find(row) != keyFrames.end();
|
return keyFrames.find(row) != keyFrames.end();
|
||||||
}
|
}
|
||||||
|
|
||||||
const KeyFrame *getKeyFrame(int row) const
|
const KeyFrame *getKeyFrame(size_t row) const
|
||||||
{
|
{
|
||||||
KeyFrameContainer::const_iterator iter = keyFrames.find(row);
|
KeyFrameContainer::const_iterator iter = keyFrames.find(row);
|
||||||
if (iter == keyFrames.end()) return NULL;
|
if (iter == keyFrames.end()) return NULL;
|
||||||
return &iter->second;
|
return &iter->second;
|
||||||
}
|
}
|
||||||
|
|
||||||
void deleteKeyFrame(int row)
|
void deleteKeyFrame(size_t row)
|
||||||
{
|
{
|
||||||
keyFrames.erase(row);
|
keyFrames.erase(row);
|
||||||
}
|
}
|
||||||
|
|
||||||
void setKeyFrame(int row, const KeyFrame &keyFrame)
|
void setKeyFrame(size_t row, const KeyFrame &keyFrame)
|
||||||
{
|
{
|
||||||
keyFrames[row] = keyFrame;
|
keyFrames[row] = keyFrame;
|
||||||
}
|
}
|
||||||
|
|
||||||
void setKeyFrame(int row, const float value)
|
void setKeyFrame(size_t row, const float value)
|
||||||
{
|
{
|
||||||
keyFrames[row] = KeyFrame(value);
|
keyFrames[row] = KeyFrame(value);
|
||||||
}
|
}
|
||||||
|
|
||||||
int getFrameCount()
|
size_t getFrameCount() const
|
||||||
{
|
{
|
||||||
KeyFrameContainer::const_iterator iter = keyFrames.end();
|
KeyFrameContainer::const_iterator iter = keyFrames.end();
|
||||||
iter--;
|
iter--;
|
||||||
@ -74,7 +74,7 @@ public:
|
|||||||
}
|
}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
typedef std::map<int, struct KeyFrame> KeyFrameContainer;
|
typedef std::map<size_t, struct KeyFrame> KeyFrameContainer;
|
||||||
KeyFrameContainer keyFrames;
|
KeyFrameContainer keyFrames;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@ -2,6 +2,7 @@
|
|||||||
|
|
||||||
#include "syncdata.h"
|
#include "syncdata.h"
|
||||||
#include <stack>
|
#include <stack>
|
||||||
|
#include <list>
|
||||||
|
|
||||||
class SyncEditData : public SyncData
|
class SyncEditData : public SyncData
|
||||||
{
|
{
|
||||||
@ -19,17 +20,17 @@ public:
|
|||||||
class EditCommand : public Command
|
class EditCommand : public Command
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
EditCommand(int track, int row, bool existing, float value) : track(track), row(row), newValExisting(existing), newVal(value) {}
|
EditCommand(size_t track, size_t row, bool existing, float value) : track(track), row(row), newValExisting(existing), newVal(value) {}
|
||||||
~EditCommand() {}
|
~EditCommand() {}
|
||||||
|
|
||||||
virtual void exec(SyncEditData *data)
|
virtual void exec(SyncEditData *data)
|
||||||
{
|
{
|
||||||
SyncTrack &track = data->getTrack(this->track);
|
SyncTrack &track = data->getTrack(this->track);
|
||||||
|
|
||||||
// store old state
|
// store old state
|
||||||
oldValExisting = track.isKeyFrame(row);
|
oldValExisting = track.isKeyFrame(row);
|
||||||
if (oldValExisting) oldVal = track.getKeyFrame(row)->value;
|
if (oldValExisting) oldVal = track.getKeyFrame(row)->value;
|
||||||
|
|
||||||
// update
|
// update
|
||||||
if (!newValExisting) track.deleteKeyFrame(row);
|
if (!newValExisting) track.deleteKeyFrame(row);
|
||||||
else track.setKeyFrame(row, newVal);
|
else track.setKeyFrame(row, newVal);
|
||||||
@ -38,37 +39,71 @@ public:
|
|||||||
virtual void undo(SyncEditData *data)
|
virtual void undo(SyncEditData *data)
|
||||||
{
|
{
|
||||||
SyncTrack &track = data->getTrack(this->track);
|
SyncTrack &track = data->getTrack(this->track);
|
||||||
|
|
||||||
// un-update
|
// un-update
|
||||||
if (!oldValExisting) track.deleteKeyFrame(row);
|
if (!oldValExisting) track.deleteKeyFrame(row);
|
||||||
else track.setKeyFrame(row, oldVal);
|
else track.setKeyFrame(row, oldVal);
|
||||||
}
|
}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
int track, row;
|
size_t track, row;
|
||||||
float newVal, oldVal;
|
float newVal, oldVal;
|
||||||
bool newValExisting, oldValExisting;
|
bool newValExisting, oldValExisting;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
class MultiCommand : public Command
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
~MultiCommand()
|
||||||
|
{
|
||||||
|
std::list<Command*>::iterator it;
|
||||||
|
for (it = commands.begin(); it != commands.end(); ++it)
|
||||||
|
{
|
||||||
|
delete *it;
|
||||||
|
}
|
||||||
|
commands.clear();
|
||||||
|
}
|
||||||
|
|
||||||
|
void addEditCommand(Command *cmd)
|
||||||
|
{
|
||||||
|
commands.push_back(cmd);
|
||||||
|
}
|
||||||
|
|
||||||
|
virtual void exec(SyncEditData *data)
|
||||||
|
{
|
||||||
|
std::list<Command*>::iterator it;
|
||||||
|
for (it = commands.begin(); it != commands.end(); ++it) (*it)->exec(data);
|
||||||
|
}
|
||||||
|
|
||||||
|
virtual void undo(SyncEditData *data)
|
||||||
|
{
|
||||||
|
std::list<Command*>::iterator it;
|
||||||
|
for (it = commands.begin(); it != commands.end(); ++it) (*it)->undo(data);
|
||||||
|
}
|
||||||
|
|
||||||
|
private:
|
||||||
|
std::list<Command*> commands;
|
||||||
|
};
|
||||||
|
|
||||||
void exec(Command *cmd)
|
void exec(Command *cmd)
|
||||||
{
|
{
|
||||||
undoStack.push(cmd);
|
undoStack.push(cmd);
|
||||||
cmd->exec(this);
|
cmd->exec(this);
|
||||||
clearRedoStack();
|
clearRedoStack();
|
||||||
}
|
}
|
||||||
|
|
||||||
bool undo()
|
bool undo()
|
||||||
{
|
{
|
||||||
if (undoStack.size() == 0) return false;
|
if (undoStack.size() == 0) return false;
|
||||||
|
|
||||||
Command *cmd = undoStack.top();
|
Command *cmd = undoStack.top();
|
||||||
undoStack.pop();
|
undoStack.pop();
|
||||||
|
|
||||||
redoStack.push(cmd);
|
redoStack.push(cmd);
|
||||||
cmd->undo(this);
|
cmd->undo(this);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool redo()
|
bool redo()
|
||||||
{
|
{
|
||||||
if (redoStack.size() == 0) return false;
|
if (redoStack.size() == 0) return false;
|
||||||
@ -80,7 +115,7 @@ public:
|
|||||||
cmd->exec(this);
|
cmd->exec(this);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
void clearRedoStack()
|
void clearRedoStack()
|
||||||
{
|
{
|
||||||
while (!redoStack.empty())
|
while (!redoStack.empty())
|
||||||
@ -90,7 +125,7 @@ public:
|
|||||||
delete cmd;
|
delete cmd;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
||||||
std::stack<Command*> undoStack;
|
std::stack<Command*> undoStack;
|
||||||
|
|||||||
@ -13,6 +13,8 @@ TrackView *trackView;
|
|||||||
HWND trackViewWin;
|
HWND trackViewWin;
|
||||||
HWND statusBarWin;
|
HWND statusBarWin;
|
||||||
|
|
||||||
|
#include "network.h"
|
||||||
|
|
||||||
static LRESULT CALLBACK mainWindowProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
|
static LRESULT CALLBACK mainWindowProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
|
||||||
{
|
{
|
||||||
switch(msg)
|
switch(msg)
|
||||||
@ -36,8 +38,8 @@ static LRESULT CALLBACK mainWindowProc(HWND hwnd, UINT msg, WPARAM wParam, LPARA
|
|||||||
|
|
||||||
int statwidths[] = { 100, -1 };
|
int statwidths[] = { 100, -1 };
|
||||||
SendMessage(statusBarWin, SB_SETPARTS, sizeof(statwidths) / sizeof(int), (LPARAM)statwidths);
|
SendMessage(statusBarWin, SB_SETPARTS, sizeof(statwidths) / sizeof(int), (LPARAM)statwidths);
|
||||||
SendMessage(statusBarWin, SB_SETTEXT, 0, (LPARAM)"Hi there :)");
|
SendMessage(statusBarWin, SB_SETTEXT, 0, (LPARAM)_T("Hi there :)"));
|
||||||
SendMessage(statusBarWin, SB_SETTEXT, 1, (LPARAM)"Hi there :)");
|
SendMessage(statusBarWin, SB_SETTEXT, 1, (LPARAM)_T("Hi there :)"));
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@ -63,6 +65,7 @@ static LRESULT CALLBACK mainWindowProc(HWND hwnd, UINT msg, WPARAM wParam, LPARA
|
|||||||
switch (LOWORD(wParam))
|
switch (LOWORD(wParam))
|
||||||
{
|
{
|
||||||
case ID_FILE_SAVE: /* meh.*/ break;
|
case ID_FILE_SAVE: /* meh.*/ break;
|
||||||
|
case ID_FILE_EXIT: PostQuitMessage(0); break;
|
||||||
case ID_EDIT_UNDO: SendMessage(trackViewWin, WM_UNDO, 0, 0); break;
|
case ID_EDIT_UNDO: SendMessage(trackViewWin, WM_UNDO, 0, 0); break;
|
||||||
case ID_EDIT_REDO: SendMessage(trackViewWin, WM_REDO, 0, 0); break;
|
case ID_EDIT_REDO: SendMessage(trackViewWin, WM_REDO, 0, 0); break;
|
||||||
case ID_EDIT_COPY: SendMessage(trackViewWin, WM_COPY, 0, 0); break;
|
case ID_EDIT_COPY: SendMessage(trackViewWin, WM_COPY, 0, 0); break;
|
||||||
@ -72,6 +75,40 @@ static LRESULT CALLBACK mainWindowProc(HWND hwnd, UINT msg, WPARAM wParam, LPARA
|
|||||||
printf("cmd %d %d\n", wParam, lParam);
|
printf("cmd %d %d\n", wParam, lParam);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case WM_USER+1:
|
||||||
|
{
|
||||||
|
if (WSAGETSELECTERROR(lParam))
|
||||||
|
{
|
||||||
|
printf("ERR!\n");
|
||||||
|
// error occurred
|
||||||
|
WSACleanup ();
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
printf("tjo %x %x\n", lParam, wParam);
|
||||||
|
SOCKET serverSocket = (SOCKET)wParam;
|
||||||
|
switch (WSAGETSELECTEVENT(lParam))
|
||||||
|
{
|
||||||
|
case FD_ACCEPT:
|
||||||
|
printf("accept\n");
|
||||||
|
{
|
||||||
|
SOCKET clientSocket = clientConnect(serverSocket);
|
||||||
|
if (INVALID_SOCKET != clientSocket)
|
||||||
|
{
|
||||||
|
unsigned char cmd = 0x1;
|
||||||
|
send(clientSocket, (char*)&cmd, 1, 0);
|
||||||
|
closesocket(clientSocket);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
puts("accept failed!");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
return DefWindowProc(hwnd, msg, wParam, lParam);
|
return DefWindowProc(hwnd, msg, wParam, lParam);
|
||||||
@ -99,8 +136,6 @@ static ATOM registerMainWindowClass(HINSTANCE hInstance)
|
|||||||
return RegisterClassEx(&wc);
|
return RegisterClassEx(&wc);
|
||||||
}
|
}
|
||||||
|
|
||||||
#include "network.h"
|
|
||||||
|
|
||||||
int _tmain(int argc, _TCHAR* argv[])
|
int _tmain(int argc, _TCHAR* argv[])
|
||||||
{
|
{
|
||||||
HWND hwnd;
|
HWND hwnd;
|
||||||
@ -201,11 +236,15 @@ int _tmain(int argc, _TCHAR* argv[])
|
|||||||
|
|
||||||
#if 1
|
#if 1
|
||||||
|
|
||||||
|
printf("server socket %x\n", serverSocket);
|
||||||
|
// WSAAsyncSelect(serverSocket, hwnd, WM_USER+1, FD_ACCEPT);
|
||||||
|
|
||||||
bool done = false;
|
bool done = false;
|
||||||
SOCKET clientSocket = INVALID_SOCKET;
|
SOCKET clientSocket = INVALID_SOCKET;
|
||||||
MSG msg;
|
MSG msg;
|
||||||
while (!done)
|
while (!done)
|
||||||
{
|
{
|
||||||
|
#if 1
|
||||||
if (INVALID_SOCKET == clientSocket)
|
if (INVALID_SOCKET == clientSocket)
|
||||||
{
|
{
|
||||||
fd_set fds;
|
fd_set fds;
|
||||||
@ -256,7 +295,7 @@ int _tmain(int argc, _TCHAR* argv[])
|
|||||||
closesocket(clientSocket);
|
closesocket(clientSocket);
|
||||||
clientSocket = INVALID_SOCKET; */
|
clientSocket = INVALID_SOCKET; */
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
while (PeekMessage(&msg, NULL, 0, 0, PM_REMOVE))
|
while (PeekMessage(&msg, NULL, 0, 0, PM_REMOVE))
|
||||||
{
|
{
|
||||||
if (!TranslateAccelerator(hwnd, accel, &msg))
|
if (!TranslateAccelerator(hwnd, accel, &msg))
|
||||||
@ -266,6 +305,7 @@ int _tmain(int argc, _TCHAR* argv[])
|
|||||||
if (WM_QUIT == msg.message) done = true;
|
if (WM_QUIT == msg.message) done = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Sleep(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
closesocket(serverSocket);
|
closesocket(serverSocket);
|
||||||
|
|||||||
@ -85,6 +85,8 @@ BEGIN
|
|||||||
MENUITEM "&Copy\tCtrl+C", ID_EDIT_COPY
|
MENUITEM "&Copy\tCtrl+C", ID_EDIT_COPY
|
||||||
MENUITEM "Cu&t\tCtrl+X", ID_EDIT_CUT
|
MENUITEM "Cu&t\tCtrl+X", ID_EDIT_CUT
|
||||||
MENUITEM "&Paste\tCtrl+V", ID_EDIT_PASTE
|
MENUITEM "&Paste\tCtrl+V", ID_EDIT_PASTE
|
||||||
|
MENUITEM SEPARATOR
|
||||||
|
MENUITEM "Set Rows", ID_EDIT_SETROWS
|
||||||
END
|
END
|
||||||
END
|
END
|
||||||
|
|
||||||
|
|||||||
@ -11,7 +11,6 @@ static const int fontHeight = 16;
|
|||||||
static const int fontWidth = 6;
|
static const int fontWidth = 6;
|
||||||
|
|
||||||
static const int trackWidth = fontWidth * 16;
|
static const int trackWidth = fontWidth * 16;
|
||||||
static const int rows = 0x80;
|
|
||||||
static DWORD darken(DWORD col, float amt)
|
static DWORD darken(DWORD col, float amt)
|
||||||
{
|
{
|
||||||
return RGB(GetRValue(col) * amt, GetGValue(col) * amt, GetBValue(col) * amt);
|
return RGB(GetRValue(col) * amt, GetGValue(col) * amt, GetBValue(col) * amt);
|
||||||
@ -26,11 +25,12 @@ TrackView::TrackView()
|
|||||||
|
|
||||||
editRow = 0;
|
editRow = 0;
|
||||||
editTrack = 0;
|
editTrack = 0;
|
||||||
|
rows = 0x80;
|
||||||
|
|
||||||
selectStartTrack = selectStopTrack = 0;
|
selectStartTrack = selectStopTrack = 0;
|
||||||
selectStartRow = selectStopRow = 0;
|
selectStartRow = selectStopRow = 0;
|
||||||
selectActive = false;
|
selectActive = false;
|
||||||
|
|
||||||
this->hwnd = NULL;
|
this->hwnd = NULL;
|
||||||
|
|
||||||
bgBaseBrush = GetSysColorBrush(COLOR_WINDOW); // CreateSolidBrush(RGB(0xff, 0xff, 0xff));
|
bgBaseBrush = GetSysColorBrush(COLOR_WINDOW); // CreateSolidBrush(RGB(0xff, 0xff, 0xff));
|
||||||
@ -175,14 +175,14 @@ void TrackView::paintTracks(HDC hdc, RECT rcTracks)
|
|||||||
leftMargin.right = leftMarginWidth;
|
leftMargin.right = leftMarginWidth;
|
||||||
leftMargin.top = getScreenY(row);
|
leftMargin.top = getScreenY(row);
|
||||||
leftMargin.bottom = leftMargin.top + fontHeight;
|
leftMargin.bottom = leftMargin.top + fontHeight;
|
||||||
|
|
||||||
if (!RectVisible(hdc, &leftMargin)) continue;
|
if (!RectVisible(hdc, &leftMargin)) continue;
|
||||||
|
|
||||||
HBRUSH fillBrush;
|
HBRUSH fillBrush;
|
||||||
if (row == editRow) fillBrush = editBrush;
|
if (row == editRow) fillBrush = editBrush;
|
||||||
else fillBrush = GetSysColorBrush(COLOR_3DFACE);
|
else fillBrush = GetSysColorBrush(COLOR_3DFACE);
|
||||||
FillRect(hdc, &leftMargin, fillBrush);
|
FillRect(hdc, &leftMargin, fillBrush);
|
||||||
|
|
||||||
DrawEdge(hdc, &leftMargin, BDR_RAISEDINNER | BDR_RAISEDOUTER, BF_RIGHT | BF_BOTTOM | BF_TOP);
|
DrawEdge(hdc, &leftMargin, BDR_RAISEDINNER | BDR_RAISEDOUTER, BF_RIGHT | BF_BOTTOM | BF_TOP);
|
||||||
// Rectangle( hdc, leftMargin.left, leftMargin.top, leftMargin.right, leftMargin.bottom + 1);
|
// Rectangle( hdc, leftMargin.left, leftMargin.top, leftMargin.right, leftMargin.bottom + 1);
|
||||||
if ((row % 16) == 0) SetTextColor(hdc, RGB(0, 0, 0));
|
if ((row % 16) == 0) SetTextColor(hdc, RGB(0, 0, 0));
|
||||||
|
|||||||
@ -124,6 +124,8 @@ private:
|
|||||||
int windowWidth, windowHeight;
|
int windowWidth, windowHeight;
|
||||||
int windowRows, windowTracks;
|
int windowRows, windowTracks;
|
||||||
|
|
||||||
|
int rows;
|
||||||
|
|
||||||
SyncEditData *syncData;
|
SyncEditData *syncData;
|
||||||
|
|
||||||
std::basic_string<TCHAR> editString;
|
std::basic_string<TCHAR> editString;
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user