7 const static LPCTSTR NLITE_MAINWINDOW = TEXT("nlite");
9 const static SIZE lowestFrameSize = {300,300};
20 class CNliteMainFrame : public CFrameWindowImpl<CNliteMainFrame>,
21 public CUpdateUI<CNliteMainFrame>,public CMessageFilter, public CIdleHandler
28 IDC_COMBO_REBAR = 301,
33 class CSubLiveNoComboBox:public CWindowImpl<CEdit>{
38 CNliteMainFrame &self;
39 CComAutoCriticalSection cs;
40 BOOL untilConnectingFlag;
43 CSubLiveNoComboBox(CNliteMainFrame &in_self):self(in_self),untilConnectingFlag(FALSE){}
46 BEGIN_MSG_MAP_EX(CSubLiveNoComboBox)
47 MSG_WM_KEYDOWN(OnKeyDown)
50 void OnKeyDown(TCHAR wParam, UINT upLParam,UINT loLParam){
51 if(wParam == VK_RETURN){
55 if(untilConnectingFlag == FALSE){
56 untilConnectingFlag = TRUE;
57 std::vector<TCHAR> buffer(this->GetWindowTextLengthW() + 1);
58 ::GetWindowTextW(this->m_hWnd,&buffer[0],buffer.size());
59 self.ConnectNicoLive(&buffer[0]);
69 VOID AgreeInputLvNo(){
71 untilConnectingFlag = FALSE;
82 CCommentView &commentView;
83 CSubLiveNoComboBox &lvnocombo;
86 CLiveUserData(CCommentView& cv,CSubLiveNoComboBox &combo):commentView(cv),lvnocombo(combo){}
90 commentView.OnConnect();
94 VOID OnChatReceveStart(StreamStatus &streamStatus){
96 commentView.SetStreamStatus(streamStatus);
99 VOID OnChatReceve(NicoLiveChat_P chat,UINT_PTR count){
101 commentView.OnChatReceve(chat,count);
105 VOID OnChatReceveSettle(UINT_PTR commentCount,UINT_PTR commentCountSum){
107 commentView.OnChatReceveSettle(commentCount,commentCountSum);
108 lvnocombo.AgreeInputLvNo();
117 typedef CFrameWindowImpl<CNliteMainFrame> baseWindow;
119 //
\83E
\83B
\83\93\83h
\83E
\83N
\83\89\83X
\96¼
\81A
\8b¤
\92Ê
\83\8a\83\
\81[
\83XID
\81A
\83X
\83^
\83C
\83\8b\81A
\94w
\8ci
\90F
\82ð
\93o
\98^
120 DECLARE_FRAME_WND_CLASS(NLITE_MAINWINDOW, IDC_NLITE)
123 CCommentView commentView;
126 CStatusBarCtrl statusBar;
127 CLiveUserData userData;
128 CSubLiveNoComboBox subLiveNoComboBox;
129 CCommentWriteWindow commentWriteWindow;
133 CComboBoxEx lvNoCombo;
134 INT_PTR statusBarHeight;
135 INT_PTR toolBarHeight;
136 CNicoVideoAuth nicoVideoAuth;
137 Property nliteProperty;
138 CNicoLiveStream nicoLiveStream;
141 //
\83\81\83b
\83Z
\81[
\83W
\83t
\83B
\83\8b\83^
\8f\88\97\9d
142 virtual BOOL PreTranslateMessage(MSG* pMsg){
143 //
\8aî
\92ê
\83N
\83\89\83X
\82ÌPreTranslateMessage
\82ð
\8cÄ
\82Ñ
\8fo
\82·
144 return CFrameWindowImpl<CNliteMainFrame>::PreTranslateMessage(pMsg);
147 //
\83A
\83C
\83h
\83\8b\8f\88\97\9d
148 virtual BOOL OnIdle(){
156 :userData(commentView,subLiveNoComboBox),
157 subLiveNoComboBox(*this),
158 commentWriteWindow(nicoLiveStream)
163 lf.lfCharSet = SHIFTJIS_CHARSET;
164 hTabFont = CreateFontIndirect(&lf);
169 DeleteObject(hTabFont);
173 BEGIN_UPDATE_UI_MAP(CNliteMainFrame)
174 //
\83G
\83\93\83g
\83\8a\82È
\82µ
177 //
\83\81\83b
\83Z
\81[
\83W
\83}
\83b
\83v
178 BEGIN_MSG_MAP_EX(CNliteMainFrame)
179 MSG_WM_CREATE(OnCreate)
180 MSG_WM_DESTROY(OnDestroy)
181 MESSAGE_HANDLER(WM_SIZE,OnSize)
182 MSG_WM_SIZING(OnSizing)
183 MESSAGE_HANDLER_EX(WM_ERASEBKGND,OnErasekgnd)
184 COMMAND_ID_HANDLER_EX(IDM_EXIT, OnMenuExit)
185 COMMAND_ID_HANDLER_EX(IDM_ABOUT,OnMenuAbount)
186 COMMAND_ID_HANDLER_EX(IDM_COOKIE,OnCookie)
187 NOTIFY_HANDLER(ATL_IDW_TOOLBAR,RBN_HEIGHTCHANGE,OnRbnHeightChange)
188 // CFrameWindowImpl
\83N
\83\89\83X
\82Ö
\83`
\83F
\81[
\83\93
189 CHAIN_MSG_MAP(CFrameWindowImpl<CNliteMainFrame>)
194 //
\83`
\83\89\83c
\83L
\82ð
\82È
\82
\82·
195 LRESULT OnErasekgnd(UINT uMsg,WPARAM wParam,LPARAM lParam){
201 //
\83c
\81[
\83\8b\83o
\81[
\8d\82\82³
\95Ï
\8dX
202 LRESULT OnRbnHeightChange(INT_PTR wParam,LPNMHDR lParam,BOOL &bHandled){
205 ::GetClientRect(m_hWndToolBar,&toolbarRect);
206 toolBarHeight = toolbarRect.bottom - toolbarRect.top;
209 GetClientRect(&client);
211 ChangeSize( _WTYPES_NS::CSize(client.right - client.left,client.bottom - client.top));
220 ///
\83T
\83C
\83Y
\95Ï
\8dX
\92\86\8f\88\97\9d
222 VOID OnSizing(UINT wParam,LPRECT lParam){
224 if(lParam->right - lParam->left < lowestFrameSize.cx){
225 lParam->right = lParam->left + lowestFrameSize.cx;
228 if(lParam->bottom - lParam->top < lowestFrameSize.cy){
230 lParam->bottom = lParam->top + lowestFrameSize.cy;
235 //
\83T
\83C
\83Y
\95Ï
\8dX
\8cã
236 LRESULT OnSize(UINT uMsg,WPARAM wParam,LPARAM lParam,BOOL& bHandled){
240 clientSize.cx = LOWORD(lParam);
241 clientSize.cy = HIWORD(lParam);
242 ChangeSize(clientSize);
251 VOID ChangeSize(const SIZE& client);
254 LRESULT OnCreate(LPCREATESTRUCT lpcs);
256 VOID ConnectNicoLive(LPCTSTR liveNo){
258 nicoLiveStream.DisConnect();
259 commentView.OnConnect();
260 nicoLiveStream.Connect(nicoVideoAuth,liveNo,LiveCallBack,&userData);
264 VOID Initialize(LPCTSTR localAppDataPath){
266 nliteProperty.ReadIniFile();
268 commentView.SetProperty(nliteProperty.cvp);
270 if(nliteProperty.gp.browserType == BT_NOSETTING){
271 nliteProperty.CookieSetting();
272 while(nliteProperty.gp.browserType == BT_NOSETTING){
273 ::MessageBox(NULL,TEXT("
\83u
\83\89\83E
\83U
\83^
\83C
\83v
\82ð
\8ew
\92è
\82µ
\82Ä
\82
\82¾
\82³
\82¢
\81B
\82±
\82ê
\88È
\8aO
\82Ì
\83u
\83\89\83E
\83U
\82Í
\8c»
\8dÝ
\8eg
\97p
\82·
\82é
\82±
\82Æ
\82Í
\82Å
\82«
\82Ü
\82¹
\82ñ"),TEXT("
\83u
\83\89\83E
\83U
\83^
\83C
\83v
\8ew
\92è
\83G
\83\89\81["),MB_OK);
274 nliteProperty.CookieSetting();
278 nicoVideoAuth.SetBrowserType(nliteProperty.gp.browserType);
284 nliteProperty.cvp = commentView.GetProperty();
285 nliteProperty.WriteIniFile();
289 nicoLiveStream.DisConnect();
290 commentView.DestroyWindow();
298 nicoLiveStream.DisConnect();
302 //
\83\81\83j
\83\85\81[
\82©
\82ç
\83t
\83@
\83C
\83\8b\82ð
\8fI
\97¹
\82ð
\91I
\91ð
303 void OnMenuExit(UINT uNotifyCode, int nID, HWND hWndCtl){
304 PostMessage(WM_CLOSE);
307 //
\83\81\83j
\83\85\81[
\82Ì
\83A
\83v
\83\8a\83P
\81[
\83V
\83\87\83\93\83o
\81[
\83W
\83\87\83\93\8fî
\95ñ
\95\
\8e¦
308 void OnMenuAbount(UINT uNotifyCode,int nID,HWND hWndCtl){
314 //
\83N
\83b
\83L
\81[
\82Ì
\90Ý
\92è
315 void OnCookie(UINT uNotifyCode,int nID,HWND hWndCtl){
316 nliteProperty.CookieSetting();
318 while(nliteProperty.gp.browserType == BT_NOSETTING){
319 ::MessageBox(NULL,TEXT("
\83u
\83\89\83E
\83U
\83^
\83C
\83v
\82ð
\8ew
\92è
\82µ
\82Ä
\82
\82¾
\82³
\82¢
\81B
\82±
\82ê
\88È
\8aO
\82Ì
\83u
\83\89\83E
\83U
\82Í
\8c»
\8dÝ
\8eg
\97p
\82·
\82é
\82±
\82Æ
\82Í
\82Å
\82«
\82Ü
\82¹
\82ñ"),TEXT("
\83u
\83\89\83E
\83U
\83^
\83C
\83v
\8ew
\92è
\83G
\83\89\81["),MB_OK);
320 nliteProperty.CookieSetting();
324 nicoVideoAuth.SetBrowserType(nliteProperty.gp.browserType);
327 static NLIB_RESULT LiveCallBack(NICOLIVE_EVENT eventType,NicoLiveStream_P pNicoLiveStream,LPVOID option,NICOLIVE_PARAM param1,NICOLIVE_PARAM param2);